summaryrefslogtreecommitdiffstats
path: root/command.c
diff options
context:
space:
mode:
Diffstat (limited to 'command.c')
-rw-r--r--command.c141
1 files changed, 56 insertions, 85 deletions
diff --git a/command.c b/command.c
index c1519d001d..4408a584a6 100644
--- a/command.c
+++ b/command.c
@@ -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) {