diff options
Diffstat (limited to 'input')
-rw-r--r-- | input/input.c | 103 | ||||
-rw-r--r-- | input/input.h | 36 |
2 files changed, 63 insertions, 76 deletions
diff --git a/input/input.c b/input/input.c index 38e89d4577..a2bc7d838a 100644 --- a/input/input.c +++ b/input/input.c @@ -101,46 +101,21 @@ static const mp_cmd_t mp_cmds[] = { #endif { MP_CMD_SEEK, "seek", { ARG_FLOAT, OARG_INT(0), OARG_INT(0) } }, { MP_CMD_EDL_MARK, "edl_mark", }, - { MP_CMD_AUDIO_DELAY, "audio_delay", { ARG_FLOAT, OARG_INT(0) } }, { MP_CMD_SPEED_INCR, "speed_incr", { ARG_FLOAT } }, { MP_CMD_SPEED_MULT, "speed_mult", { ARG_FLOAT } }, { MP_CMD_SPEED_SET, "speed_set", { ARG_FLOAT } }, { MP_CMD_QUIT, "quit", { OARG_INT(0) } }, { MP_CMD_STOP, "stop", }, - { MP_CMD_PAUSE, "pause", }, { MP_CMD_FRAME_STEP, "frame_step", }, { MP_CMD_PLAYLIST_NEXT, "playlist_next", { OARG_INT(0) } }, { MP_CMD_PLAYLIST_PREV, "playlist_prev", { OARG_INT(0) } }, - { MP_CMD_LOOP, "loop", { ARG_INT, OARG_INT(0) } }, - { MP_CMD_SUB_DELAY, "sub_delay", { ARG_FLOAT, OARG_INT(0) } }, { MP_CMD_SUB_STEP, "sub_step", { ARG_INT, OARG_INT(0) } }, { MP_CMD_OSD, "osd", { OARG_INT(-1) } }, { MP_CMD_OSD_SHOW_TEXT, "osd_show_text", { ARG_STRING, OARG_INT(-1), OARG_INT(0) } }, { MP_CMD_OSD_SHOW_PROPERTY_TEXT, "osd_show_property_text", { ARG_STRING, OARG_INT(-1), OARG_INT(0) } }, { MP_CMD_OSD_SHOW_PROGRESSION, "osd_show_progression", }, - { MP_CMD_VOLUME, "volume", { ARG_FLOAT, OARG_INT(0) } }, - { MP_CMD_BALANCE, "balance", { ARG_FLOAT, OARG_INT(0) } }, { MP_CMD_MIXER_USEMASTER, "use_master", }, - { MP_CMD_MUTE, "mute", { OARG_INT(-1) } }, - { MP_CMD_CONTRAST, "contrast", { ARG_INT, OARG_INT(0) } }, - { MP_CMD_GAMMA, "gamma", { ARG_INT, OARG_INT(0) } }, - { MP_CMD_BRIGHTNESS, "brightness", { ARG_INT, OARG_INT(0) } }, - { MP_CMD_HUE, "hue", { ARG_INT, OARG_INT(0) } }, - { MP_CMD_SATURATION, "saturation", { ARG_INT, OARG_INT(0) } }, - { MP_CMD_FRAMEDROPPING, "frame_drop", { OARG_INT(-1) } }, - { MP_CMD_SUB_POS, "sub_pos", { ARG_INT, OARG_INT(0) } }, - { MP_CMD_SUB_ALIGNMENT, "sub_alignment", { OARG_INT(-1) } }, - { MP_CMD_SUB_VISIBILITY, "sub_visibility", { OARG_INT(-1) } }, { MP_CMD_SUB_LOAD, "sub_load", { ARG_STRING } }, - { MP_CMD_SUB_SELECT, "vobsub_lang", { OARG_INT(-2) } }, // for compatibility - { MP_CMD_SUB_SELECT, "sub_select", { OARG_INT(-2) } }, - { MP_CMD_SUB_SCALE, "sub_scale", { ARG_FLOAT, OARG_INT(0) } }, -#ifdef CONFIG_ASS - { MP_CMD_ASS_USE_MARGINS, "ass_use_margins", { OARG_INT(-1) } }, -#endif - { MP_CMD_SWITCH_AUDIO, "switch_audio", { OARG_INT(-1) } }, - { MP_CMD_SWITCH_ANGLE, "switch_angle", { OARG_INT(-1) } }, - { MP_CMD_SWITCH_TITLE, "switch_title", { OARG_INT(-1) } }, #ifdef CONFIG_TV { MP_CMD_TV_START_SCAN, "tv_start_scan", }, { MP_CMD_TV_STEP_CHANNEL, "tv_step_channel", { ARG_INT } }, @@ -151,23 +126,12 @@ static const mp_cmd_t mp_cmds[] = { { MP_CMD_TV_SET_FREQ, "tv_set_freq", { ARG_FLOAT } }, { MP_CMD_TV_STEP_FREQ, "tv_step_freq", { ARG_FLOAT } }, { MP_CMD_TV_SET_NORM, "tv_set_norm", { ARG_STRING } }, - { MP_CMD_TV_SET_BRIGHTNESS, "tv_set_brightness", { ARG_INT, OARG_INT(1) } }, - { MP_CMD_TV_SET_CONTRAST, "tv_set_contrast", { ARG_INT, OARG_INT(1) } }, - { MP_CMD_TV_SET_HUE, "tv_set_hue", { ARG_INT, OARG_INT(1) } }, - { MP_CMD_TV_SET_SATURATION, "tv_set_saturation", { ARG_INT, OARG_INT(1) } }, #endif - { MP_CMD_SUB_FORCED_ONLY, "forced_subs_only", { OARG_INT(-1) } }, #ifdef CONFIG_DVBIN { MP_CMD_DVB_SET_CHANNEL, "dvb_set_channel", { ARG_INT, ARG_INT } }, #endif { MP_CMD_SWITCH_RATIO, "switch_ratio", { OARG_FLOAT(0) } }, - { MP_CMD_VO_FULLSCREEN, "vo_fullscreen", { OARG_INT(-1) } }, - { MP_CMD_VO_ONTOP, "vo_ontop", { OARG_INT(-1) } }, - { MP_CMD_VO_ROOTWIN, "vo_rootwin", { OARG_INT(-1) } }, - { MP_CMD_VO_BORDER, "vo_border", { OARG_INT(-1) } }, { MP_CMD_SCREENSHOT, "screenshot", { OARG_INT(0), OARG_INT(0) } }, - { MP_CMD_PANSCAN, "panscan", { ARG_FLOAT, OARG_INT(0) } }, - { MP_CMD_SWITCH_VSYNC, "switch_vsync", { OARG_INT(0) } }, { MP_CMD_LOADFILE, "loadfile", { ARG_STRING, OARG_INT(0) } }, { MP_CMD_LOADLIST, "loadlist", { ARG_STRING, OARG_INT(0) } }, { MP_CMD_PLAYLIST_CLEAR, "playlist_clear", }, @@ -180,7 +144,6 @@ static const mp_cmd_t mp_cmds[] = { { MP_CMD_STEP_PROPERTY, "step_property", { ARG_STRING, OARG_FLOAT(0), OARG_INT(0) } }, { MP_CMD_STEP_PROPERTY_OSD, "step_property_osd", { ARG_STRING, OARG_FLOAT(0), OARG_INT(0) } }, - { MP_CMD_SEEK_CHAPTER, "seek_chapter", { ARG_INT, OARG_INT(0) } }, { MP_CMD_SET_MOUSE_POS, "set_mouse_pos", { ARG_INT, ARG_INT } }, { MP_CMD_AF_SWITCH, "af_switch", { ARG_STRING } }, @@ -197,6 +160,50 @@ static const mp_cmd_t mp_cmds[] = { {0} }; +// Map legacy commands to proper commands +struct legacy_cmd { + const char *old, *new; +}; +#define LEGACY_STEP(old) {old, "step_property_osd " old} +static const struct legacy_cmd legacy_cmds[] = { + LEGACY_STEP("loop"), + {"seek_chapter", "step_property_osd chapter"}, + {"switch_angle", "step_property_osd angle"}, + LEGACY_STEP("pause"), + LEGACY_STEP("volume"), + LEGACY_STEP("mute"), + LEGACY_STEP("audio_delay"), + LEGACY_STEP("switch_audio"), + LEGACY_STEP("balance"), + {"vo_fullscreen", "step_property fullscreen"}, + LEGACY_STEP("panscan"), + {"vo_ontop", "step_property_osd ontop"}, + {"vo_rootwin", "step_property_osd rootwin"}, + {"vo_border", "step_property_osd border"}, + {"frame_drop", "step_property_osd framedropping"}, + LEGACY_STEP("gamma"), + LEGACY_STEP("brightness"), + LEGACY_STEP("contrast"), + LEGACY_STEP("saturation"), + LEGACY_STEP("hue"), + {"switch_vsync", "step_property_osd vsync"}, + {"sub_select", "step_property_osd sub"}, + LEGACY_STEP("sub_pos"), + LEGACY_STEP("sub_delay"), + LEGACY_STEP("sub_visibility"), + {"forced_subs_only", "step_property_osd sub_forced_only"}, + LEGACY_STEP("sub_scale"), + LEGACY_STEP("ass_use_margins"), + {"tv_set_brightness", "tv_brightness"}, + {"tv_set_hue", "tv_hue"}, + {"tv_set_saturation", "tv_saturation"}, + {"tv_set_contrast", "tv_contrast"}, + {"pt_step 1", "playlist_next"}, + {"pt_step -1", "playlist_prev"}, + {0} +}; + + /// The names of the keys as used in input.conf /// If you add some new keys, you also need to add them here @@ -685,6 +692,8 @@ mp_cmd_t *mp_input_parse_cmd(char *str) int pausing = 0; char *ptr; const mp_cmd_t *cmd_def; + mp_cmd_t *cmd = NULL; + void *tmp = NULL; // Ignore heading spaces. while (str[0] == ' ' || str[0] == '\t') @@ -704,6 +713,18 @@ mp_cmd_t *mp_input_parse_cmd(char *str) str = &str[19]; } + for (const struct legacy_cmd *entry = legacy_cmds; entry->old; entry++) { + size_t old_len = strlen(entry->old); + if (strncasecmp(entry->old, str, old_len) == 0) { + mp_tmsg(MSGT_INPUT, MSGL_WARN, "Warning: command '%s' is " + "deprecated, replaced with '%s'. Fix your input.conf!\n", + entry->old, entry->new); + str = talloc_asprintf(NULL, "%s%s", entry->new, str + old_len); + tmp = str; + break; + } + } + ptr = str + strcspn(str, "\t "); if (*ptr != 0) l = ptr - str; @@ -711,7 +732,7 @@ mp_cmd_t *mp_input_parse_cmd(char *str) l = strlen(str); if (l == 0) - return NULL; + goto error; for (i = 0; mp_cmds[i].name != NULL; i++) { if (strncasecmp(mp_cmds[i].name, str, l) == 0) @@ -719,11 +740,11 @@ mp_cmd_t *mp_input_parse_cmd(char *str) } if (mp_cmds[i].name == NULL) - return NULL; + goto error; cmd_def = &mp_cmds[i]; - mp_cmd_t *cmd = talloc_ptrtype(NULL, cmd); + cmd = talloc_ptrtype(NULL, cmd); *cmd = (mp_cmd_t){ .id = cmd_def->id, .name = talloc_strdup(cmd, cmd_def->name), @@ -815,10 +836,12 @@ mp_cmd_t *mp_input_parse_cmd(char *str) if (i < MP_CMD_MAX_ARGS) cmd->args[i].type = 0; + talloc_free(tmp); return cmd; error: mp_cmd_free(cmd); + talloc_free(tmp); return NULL; } diff --git a/input/input.h b/input/input.h index 8672728598..719fdf840a 100644 --- a/input/input.h +++ b/input/input.h @@ -24,68 +24,38 @@ // All command IDs enum mp_command_type { MP_CMD_SEEK, - MP_CMD_AUDIO_DELAY, MP_CMD_QUIT, - MP_CMD_PAUSE, - MP_CMD_GRAB_FRAMES, // deprecated: was a no-op command for years MP_CMD_PLAYLIST_NEXT, MP_CMD_PLAYLIST_PREV, - MP_CMD_SUB_DELAY, MP_CMD_OSD, - MP_CMD_VOLUME, MP_CMD_MIXER_USEMASTER, - MP_CMD_CONTRAST, - MP_CMD_BRIGHTNESS, - MP_CMD_HUE, - MP_CMD_SATURATION, - MP_CMD_FRAMEDROPPING, MP_CMD_TV_STEP_CHANNEL, MP_CMD_TV_STEP_NORM, MP_CMD_TV_STEP_CHANNEL_LIST, - MP_CMD_VO_FULLSCREEN, - MP_CMD_SUB_POS, MP_CMD_SCREENSHOT, - MP_CMD_PANSCAN, - MP_CMD_MUTE, MP_CMD_LOADFILE, MP_CMD_LOADLIST, MP_CMD_PLAYLIST_CLEAR, - MP_CMD_GAMMA, - MP_CMD_SUB_VISIBILITY, - MP_CMD_VOBSUB_LANG, // deprecated: combined with SUB_SELECT MP_CMD_SUB_STEP, MP_CMD_TV_SET_CHANNEL, MP_CMD_EDL_MARK, - MP_CMD_SUB_ALIGNMENT, MP_CMD_TV_LAST_CHANNEL, MP_CMD_OSD_SHOW_TEXT, MP_CMD_TV_SET_FREQ, MP_CMD_TV_SET_NORM, - MP_CMD_TV_SET_BRIGHTNESS, - MP_CMD_TV_SET_CONTRAST, - MP_CMD_TV_SET_HUE, - MP_CMD_TV_SET_SATURATION, - MP_CMD_SUB_FORCED_ONLY, - MP_CMD_VO_ONTOP, - MP_CMD_SUB_SELECT, - MP_CMD_VO_ROOTWIN, - MP_CMD_SWITCH_VSYNC, MP_CMD_SWITCH_RATIO, MP_CMD_FRAME_STEP, MP_CMD_SPEED_INCR, MP_CMD_SPEED_MULT, MP_CMD_SPEED_SET, MP_CMD_RUN, - MP_CMD_SWITCH_AUDIO, MP_CMD_SUB_LOAD, MP_CMD_KEYDOWN_EVENTS, - MP_CMD_VO_BORDER, MP_CMD_SET_PROPERTY, MP_CMD_SET_PROPERTY_OSD, MP_CMD_GET_PROPERTY, MP_CMD_OSD_SHOW_PROPERTY_TEXT, MP_CMD_OSD_SHOW_PROGRESSION, - MP_CMD_SEEK_CHAPTER, MP_CMD_RADIO_STEP_CHANNEL, MP_CMD_RADIO_SET_CHANNEL, MP_CMD_RADIO_SET_FREQ, @@ -94,13 +64,7 @@ enum mp_command_type { MP_CMD_STEP_PROPERTY_OSD, MP_CMD_RADIO_STEP_FREQ, MP_CMD_TV_STEP_FREQ, - MP_CMD_LOOP, - MP_CMD_BALANCE, - MP_CMD_SUB_SCALE, MP_CMD_TV_START_SCAN, - MP_CMD_SWITCH_ANGLE, - MP_CMD_ASS_USE_MARGINS, - MP_CMD_SWITCH_TITLE, MP_CMD_STOP, /// DVB commands |