diff options
Diffstat (limited to 'command.c')
-rw-r--r-- | command.c | 141 |
1 files changed, 56 insertions, 85 deletions
@@ -297,14 +297,14 @@ static int mp_property_playback_speed(m_option_t *prop, int action, return M_PROPERTY_ERROR; M_PROPERTY_CLAMP(prop, *(float *) arg); opts->playback_speed = *(float *) arg; - build_afilter_chain(mpctx, mpctx->sh_audio, &ao_data); + reinit_audio_chain(mpctx); return M_PROPERTY_OK; case M_PROPERTY_STEP_UP: case M_PROPERTY_STEP_DOWN: opts->playback_speed += (arg ? *(float *) arg : 0.1) * (action == M_PROPERTY_STEP_DOWN ? -1 : 1); M_PROPERTY_CLAMP(prop, opts->playback_speed); - build_afilter_chain(mpctx, mpctx->sh_audio, &ao_data); + reinit_audio_chain(mpctx); return M_PROPERTY_OK; } return m_property_float_range(prop, action, arg, &opts->playback_speed); @@ -324,10 +324,8 @@ static int mp_property_filename(m_option_t *prop, int action, void *arg, char *f; if (!mpctx->filename) return M_PROPERTY_UNAVAILABLE; - if (((f = strrchr(mpctx->filename, '/')) - || (f = strrchr(mpctx->filename, '\\'))) && f[1]) - f++; - else + f = (char *)mp_basename(mpctx->filename); + if (!*f) f = mpctx->filename; return m_property_string_ro(prop, action, arg, f); } @@ -1551,10 +1549,7 @@ static int mp_property_sub(m_option_t *prop, int action, void *arg, sub_name = ass_track->name; #endif if (sub_name) { - char *tmp, *tmp2; - tmp = sub_name; - if ((tmp2 = strrchr(tmp, '/'))) - tmp = tmp2 + 1; + const char *tmp = mp_basename(sub_name); snprintf(*(char **) arg, 63, "(%d) %s%s", mpctx->set_of_sub_pos + 1, @@ -2502,8 +2497,8 @@ static int show_property_osd(MPContext *mpctx, const char *pname) * * Toggle commands take 0 or 1 parameters. With no parameter * or a value less than the property minimum it just steps the - * property to its next value. Otherwise it sets it to the given - * value. + * property to its next or previous value respectively. + * Otherwise it sets it to the given value. * *@{ */ @@ -2590,6 +2585,8 @@ static int set_property_command(MPContext *mpctx, mp_cmd_t *cmd) // set to value if (cmd->nargs > 0 && cmd->args[0].v.i >= prop->min) r = mp_property_do(pname, M_PROPERTY_SET, &cmd->args[0].v.i, mpctx); + else if (cmd->nargs > 0) + r = mp_property_do(pname, M_PROPERTY_STEP_DOWN, NULL, mpctx); else r = mp_property_do(pname, M_PROPERTY_STEP_UP, NULL, mpctx); } else if (cmd->args[1].v.i) //set @@ -2850,7 +2847,7 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd) case MP_CMD_SPEED_INCR:{ float v = cmd->args[0].v.f; opts->playback_speed += v; - build_afilter_chain(mpctx, sh_audio, &ao_data); + reinit_audio_chain(mpctx); set_osd_tmsg(OSD_MSG_SPEED, 1, osd_duration, "Speed: x %6.2f", opts->playback_speed); } break; @@ -2858,7 +2855,7 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd) case MP_CMD_SPEED_MULT:{ float v = cmd->args[0].v.f; opts->playback_speed *= v; - build_afilter_chain(mpctx, sh_audio, &ao_data); + reinit_audio_chain(mpctx); set_osd_tmsg(OSD_MSG_SPEED, 1, osd_duration, "Speed: x %6.2f", opts->playback_speed); } break; @@ -2866,7 +2863,7 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd) case MP_CMD_SPEED_SET:{ float v = cmd->args[0].v.f; opts->playback_speed = v; - build_afilter_chain(mpctx, sh_audio, &ao_data); + reinit_audio_chain(mpctx); set_osd_tmsg(OSD_MSG_SPEED, 1, osd_duration, "Speed: x %6.2f", opts->playback_speed); } break; @@ -3310,126 +3307,100 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd) break; case MP_CMD_GET_FILENAME:{ - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_FILENAME='%s'\n", - get_metadata(mpctx, META_NAME)); + char *inf = get_metadata(mpctx, META_NAME); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_FILENAME='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_VIDEO_CODEC:{ - char *inf = get_metadata(mpctx, META_VIDEO_CODEC); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_CODEC='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_VIDEO_CODEC); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_CODEC='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_VIDEO_BITRATE:{ - char *inf = get_metadata(mpctx, META_VIDEO_BITRATE); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_BITRATE='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_VIDEO_BITRATE); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_BITRATE='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_VIDEO_RESOLUTION:{ - char *inf = get_metadata(mpctx, META_VIDEO_RESOLUTION); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, - "ANS_VIDEO_RESOLUTION='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_VIDEO_RESOLUTION); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_RESOLUTION='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_AUDIO_CODEC:{ - char *inf = get_metadata(mpctx, META_AUDIO_CODEC); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_CODEC='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_AUDIO_CODEC); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_CODEC='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_AUDIO_BITRATE:{ - char *inf = get_metadata(mpctx, META_AUDIO_BITRATE); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_BITRATE='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_AUDIO_BITRATE); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_BITRATE='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_AUDIO_SAMPLES:{ - char *inf = get_metadata(mpctx, META_AUDIO_SAMPLES); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_SAMPLES='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_AUDIO_SAMPLES); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_SAMPLES='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_TITLE:{ - char *inf = get_metadata(mpctx, META_INFO_TITLE); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_TITLE='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_TITLE); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_TITLE='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_ARTIST:{ - char *inf = get_metadata(mpctx, META_INFO_ARTIST); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_ARTIST='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_ARTIST); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_ARTIST='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_ALBUM:{ - char *inf = get_metadata(mpctx, META_INFO_ALBUM); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_ALBUM='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_ALBUM); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_ALBUM='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_YEAR:{ - char *inf = get_metadata(mpctx, META_INFO_YEAR); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_YEAR='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_YEAR); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_YEAR='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_COMMENT:{ - char *inf = get_metadata(mpctx, META_INFO_COMMENT); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_COMMENT='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_COMMENT); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_COMMENT='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_TRACK:{ - char *inf = get_metadata(mpctx, META_INFO_TRACK); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_TRACK='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_TRACK); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_TRACK='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_GENRE:{ - char *inf = get_metadata(mpctx, META_INFO_GENRE); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_GENRE='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_GENRE); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_GENRE='%s'\n", inf); + talloc_free(inf); } break; @@ -3542,7 +3513,7 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd) else af_add(mpctx->mixer.afilter, af_command); } - build_afilter_chain(mpctx, sh_audio, &ao_data); + reinit_audio_chain(mpctx); free(af_args); } break; @@ -3551,7 +3522,7 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd) break; af_uninit(mpctx->mixer.afilter); af_init(mpctx->mixer.afilter); - build_afilter_chain(mpctx, sh_audio, &ao_data); + reinit_audio_chain(mpctx); break; case MP_CMD_AF_CMDLINE: if (sh_audio) { |