diff -NpuBr -Xexclude.txt main/DOCS/tech/slave.txt sherpya/DOCS/tech/slave.txt --- main/DOCS/tech/slave.txt 2010-07-29 14:54:02.515625000 +0200 +++ sherpya/DOCS/tech/slave.txt 2010-07-29 20:23:52.656250000 +0200 @@ -486,6 +486,11 @@ run Run as shell command. In OSD menu console mode stdout and stdin are through the video output driver. +af_eq_set_bands + Set bands gain in audio equalizer. Se details in manual (-af equalizer). + Example: + af_eq_set_bands 11:11:10:5:0:-12:0:5:12:12 + Available properties: diff -NpuBr -Xexclude.txt main/command.c sherpya/command.c --- main/command.c 2010-07-29 20:23:19.062500000 +0200 +++ sherpya/command.c 2010-07-29 20:23:52.671875000 +0200 @@ -3086,6 +3086,15 @@ int run_command(MPContext *mpctx, mp_cmd set_rectangle(sh_video, cmd->args[0].v.i, cmd->args[1].v.i); break; + case MP_CMD_AF_EQ_SET:{ + af_instance_t* m1=af_get(sh_audio->afilter, "equalizer"); + if (m1) + m1->control( m1, AF_CONTROL_COMMAND_LINE, cmd->args[0].v.s); + else + mp_msg(MSGT_CPLAYER, MSGL_INFO, "failed (forgot -af equalizer=0:0 ?)\n"); + } + break; + case MP_CMD_GET_TIME_LENGTH:{ mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_LENGTH=%.2lf\n", demuxer_get_time_length(mpctx->demuxer)); diff -NpuBr -Xexclude.txt main/input/input.c sherpya/input/input.c --- main/input/input.c 2010-06-24 22:18:05.156250000 +0200 +++ sherpya/input/input.c 2010-07-29 20:23:52.687500000 +0200 @@ -175,6 +175,7 @@ static const mp_cmd_t mp_cmds[] = { { MP_CMD_VF_CHANGE_RECTANGLE, "change_rectangle", 2, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}}}}, { MP_CMD_TV_TELETEXT_ADD_DEC, "teletext_add_dec", 1, { {MP_CMD_ARG_STRING,{0}}, {-1,{0}} } }, { MP_CMD_TV_TELETEXT_GO_LINK, "teletext_go_link", 1, { {MP_CMD_ARG_INT,{0}}, {-1,{0}} } }, + { MP_CMD_AF_EQ_SET, "af_eq_set_bands", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}}}}, //turbos #ifdef CONFIG_DVDNAV { MP_CMD_DVDNAV, "dvdnav", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } }, diff -NpuBr -Xexclude.txt main/input/input.h sherpya/input/input.h --- main/input/input.h 2010-06-24 22:18:05.171875000 +0200 +++ sherpya/input/input.h 2010-07-29 20:23:52.687500000 +0200 @@ -132,6 +132,7 @@ typedef enum { MP_CMD_ASS_USE_MARGINS, MP_CMD_SWITCH_TITLE, MP_CMD_STOP, + MP_CMD_AF_EQ_SET, /// DVDNAV commands MP_CMD_DVDNAV_UP = 1000, diff -NpuBr -Xexclude.txt main/libaf/af_equalizer.c sherpya/libaf/af_equalizer.c --- main/libaf/af_equalizer.c 2010-02-21 04:21:43.046875000 +0100 +++ sherpya/libaf/af_equalizer.c 2010-07-29 20:23:52.687500000 +0200 @@ -140,6 +140,7 @@ static int control(struct af_instance_s* case AF_CONTROL_COMMAND_LINE:{ float g[10]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; int i,j; + float gain_factor2=0.0; sscanf((char*)arg,"%f:%f:%f:%f:%f:%f:%f:%f:%f:%f", &g[0], &g[1], &g[2], &g[3], &g[4], &g[5], &g[6], &g[7], &g[8] ,&g[9]); for(i=0;i input.c + //see code: AF_CONTROL_REINIT in this file + for(j=0;jg[0][j]) gain_factor2=s->g[0][j]; + gain_factor2=log10(gain_factor2 + 1.0) * 20.0; + if(gain_factor2 > 0.0) gain_factor2=0.1+(gain_factor2/12.0); + else gain_factor2=1; + s->gain_factor=gain_factor2; + return AF_OK; } case AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET:{