mirror of
https://github.com/mpv-player/mpv
synced 2024-12-19 05:15:12 +00:00
Add slave commands for loading and unloading audio filters at runtime.
Patch by Jehan Hysseo, hysseo zemarmot net git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31030 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
e3ed371d51
commit
40ac0d3109
3
AUTHORS
3
AUTHORS
@ -385,6 +385,9 @@ Hůrka, Tomáš <tom@hukatronic.cz>
|
||||
* Darwin DVD support (mpdvdkit2)
|
||||
* various fixes
|
||||
|
||||
Hysseo, Jehan <hysseo@zemarmot.net>
|
||||
* af_add, af_switch, af_del, af_clr commands.
|
||||
|
||||
Isani, Sidik <lksi@cfht.hawaii.edu>
|
||||
* get_delay() smoothing code (-autosync)
|
||||
* RTC initialization fixes
|
||||
|
@ -45,6 +45,17 @@ Various tips and tricks (please help expand it!):
|
||||
|
||||
Available commands ('mplayer -input cmdlist' will print a list):
|
||||
|
||||
af_add <filter_arguments_list> (comma separated list of audio filters with parameters)
|
||||
(experimental) Load the given list of audio filters.
|
||||
|
||||
af_clr
|
||||
(experimental) Unload all loaded audio filters.
|
||||
|
||||
af_del <filter_name_list> (comma separated list of audio filter's names)
|
||||
(experimental) Unload the first occurrence of the filters, if loaded.
|
||||
|
||||
af_switch <filter_arguments_list> (comma separated list of audio filters with parameters)
|
||||
(experimental) Remove all the audio filters and replace them with the given list.
|
||||
|
||||
alt_src_step <value> (ASX playlist only)
|
||||
When more than one source is available it selects the next/previous one.
|
||||
|
37
command.c
37
command.c
@ -3242,6 +3242,43 @@ int run_command(MPContext * mpctx, mp_cmd_t * cmd)
|
||||
|
||||
#endif
|
||||
|
||||
case MP_CMD_AF_SWITCH:
|
||||
if (sh_audio)
|
||||
{
|
||||
af_uninit(mpctx->mixer.afilter);
|
||||
af_init(mpctx->mixer.afilter);
|
||||
}
|
||||
case MP_CMD_AF_ADD:
|
||||
case MP_CMD_AF_DEL:
|
||||
if (!sh_audio)
|
||||
break;
|
||||
{
|
||||
char* af_args = strdup(cmd->args[0].v.s);
|
||||
char* af_commands = af_args;
|
||||
char* af_command;
|
||||
af_instance_t* af;
|
||||
while ((af_command = strsep(&af_commands, ",")) != NULL)
|
||||
{
|
||||
if (cmd->id == MP_CMD_AF_DEL)
|
||||
{
|
||||
af = af_get(mpctx->mixer.afilter, af_command);
|
||||
if (af != NULL)
|
||||
af_remove(mpctx->mixer.afilter, af);
|
||||
}
|
||||
else
|
||||
af_add(mpctx->mixer.afilter, af_command);
|
||||
}
|
||||
build_afilter_chain(sh_audio, &ao_data);
|
||||
free(af_args);
|
||||
}
|
||||
break;
|
||||
case MP_CMD_AF_CLR:
|
||||
if (!sh_audio)
|
||||
break;
|
||||
af_uninit(mpctx->mixer.afilter);
|
||||
af_init(mpctx->mixer.afilter);
|
||||
build_afilter_chain(sh_audio, &ao_data);
|
||||
break;
|
||||
default:
|
||||
#ifdef CONFIG_GUI
|
||||
if ((use_gui) && (cmd->id > MP_CMD_GUI_EVENTS))
|
||||
|
@ -209,6 +209,11 @@ static const mp_cmd_t mp_cmds[] = {
|
||||
{ MP_CMD_SEEK_CHAPTER, "seek_chapter", 1, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },
|
||||
{ MP_CMD_SET_MOUSE_POS, "set_mouse_pos", 2, { {MP_CMD_ARG_INT,{0}}, {MP_CMD_ARG_INT,{0}}, {-1,{0}} } },
|
||||
|
||||
{ MP_CMD_AF_SWITCH, "af_switch", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } },
|
||||
{ MP_CMD_AF_ADD, "af_add", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } },
|
||||
{ MP_CMD_AF_DEL, "af_del", 1, { {MP_CMD_ARG_STRING, {0}}, {-1,{0}} } },
|
||||
{ MP_CMD_AF_CLR, "af_clr", 0, { {-1,{0}} } },
|
||||
|
||||
{ 0, NULL, 0, {} }
|
||||
};
|
||||
|
||||
|
@ -162,6 +162,13 @@ typedef enum {
|
||||
MP_CMD_CHELP = 7000,
|
||||
MP_CMD_CEXIT,
|
||||
MP_CMD_CHIDE,
|
||||
|
||||
/// Audio Filter commands
|
||||
MP_CMD_AF_SWITCH,
|
||||
MP_CMD_AF_ADD,
|
||||
MP_CMD_AF_DEL,
|
||||
MP_CMD_AF_CLR,
|
||||
|
||||
} mp_command_type;
|
||||
|
||||
// The arg types
|
||||
|
Loading…
Reference in New Issue
Block a user