diff --git a/alsactl/alsactl_lexer.l b/alsactl/alsactl_lexer.l index 4b8b2d1..3f0c226 100644 --- a/alsactl/alsactl_lexer.l +++ b/alsactl/alsactl_lexer.l @@ -85,6 +85,7 @@ space return L_SPACE; depth return L_DEPTH; delay return L_DELAY; feedback return L_FEEDBACK; +depth_rear return L_DEPTH_REAR; bass return L_BASS; treble return L_TREBLE; diff --git a/alsactl/alsactl_parser.y b/alsactl/alsactl_parser.y index 7018ea1..923a0c3 100644 --- a/alsactl/alsactl_parser.y +++ b/alsactl/alsactl_parser.y @@ -123,6 +123,7 @@ static unsigned short Xswitchiec958ocs1[16]; %token L_IEC958OCS L_3D L_RESET L_USER L_VALID L_DATA L_PROTECT L_PRE2 %token L_FSUNLOCK L_TYPE L_GSTATUS L_ENABLE L_DISABLE %token L_SW L_MONO_SW L_WIDE L_VOLUME L_CENTER L_SPACE L_DEPTH L_DELAY +%token L_DEPTH_REAR %token L_FEEDBACK L_BASS L_TREBLE @@ -249,6 +250,7 @@ m_3d_effect1_0 : L_SW '=' boolean { mixer_3d_effect1_value(SND_MIXER_EFF1_SW, $3 | L_DEPTH '=' integer { mixer_3d_effect1_value(SND_MIXER_EFF1_DEPTH, $3); } | L_DELAY '=' integer { mixer_3d_effect1_value(SND_MIXER_EFF1_DELAY, $3); } | L_FEEDBACK '=' integer { mixer_3d_effect1_value(SND_MIXER_EFF1_FEEDBACK, $3); } + | L_DEPTH_REAR '=' integer { mixer_3d_effect1_value(SND_MIXER_EFF1_DEPTH_REAR, $3); } | error { yyerror("an unknown keyword in the 3D Effect1 element level"); } ; diff --git a/alsactl/merge.c b/alsactl/merge.c index 1ff6248..ee6a49f 100644 --- a/alsactl/merge.c +++ b/alsactl/merge.c @@ -287,6 +287,7 @@ static int merge_one_element(struct mixer_element *celement, struct mixer_elemen celement->element.data.teffect1.depth = uelement->element.data.teffect1.depth; celement->element.data.teffect1.delay = uelement->element.data.teffect1.delay; celement->element.data.teffect1.feedback = uelement->element.data.teffect1.feedback; + celement->element.data.teffect1.depth_rear = uelement->element.data.teffect1.depth_rear; break; case SND_MIXER_ETYPE_PRE_EFFECT1: if (celement->element.data.peffect1.pparameters) diff --git a/alsactl/setup.c b/alsactl/setup.c index e55c30f..d7e5e80 100644 --- a/alsactl/setup.c +++ b/alsactl/setup.c @@ -837,6 +837,8 @@ static void soundcard_setup_write_mixer_element(FILE * out, struct mixer_element fprintf(out, " ; Delay : Min %i Max %i\n", info->data.teffect1.min_delay, info->data.teffect1.max_delay); if (info->data.teffect1.effect & SND_MIXER_EFF1_FEEDBACK) fprintf(out, " ; Feedback : Min %i Max %i\n", info->data.teffect1.min_feedback, info->data.teffect1.max_feedback); + if (info->data.teffect1.effect & SND_MIXER_EFF1_DEPTH_REAR) + fprintf(out, " ; Depth rear : Min %i Max %i\n", info->data.teffect1.min_depth_rear, info->data.teffect1.max_depth_rear); fprintf(out, " element(\"%s\",%i,%i,_3D_Effect1(", mixer_element_name(&element->eid), element->eid.index, element->eid.type); idx = 0; if (element->data.teffect1.effect & SND_MIXER_EFF1_SW) @@ -857,6 +859,8 @@ static void soundcard_setup_write_mixer_element(FILE * out, struct mixer_element fprintf(out, "%sdelay=%i", idx++ > 0 ? "," : "", element->data.teffect1.delay); if (element->data.teffect1.effect & SND_MIXER_EFF1_FEEDBACK) fprintf(out, "%sfeedback=%i", idx++ > 0 ? "," : "", element->data.teffect1.feedback); + if (element->data.teffect1.depth_rear & SND_MIXER_EFF1_DEPTH_REAR) + fprintf(out, "%sdepth_rear=%i", idx++ > 0 ? "," : "", element->data.teffect1.depth_rear); fprintf(out, "))\n"); break; default: