summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--audio/filter/af_scaletempo.c4
-rw-r--r--core/command.c8
-rw-r--r--core/input/input.c17
-rw-r--r--core/mplayer.c2
-rw-r--r--core/options.c2
-rw-r--r--core/options.h2
6 files changed, 18 insertions, 17 deletions
diff --git a/audio/filter/af_scaletempo.c b/audio/filter/af_scaletempo.c
index b12954f1af..d409ed85cf 100644
--- a/audio/filter/af_scaletempo.c
+++ b/audio/filter/af_scaletempo.c
@@ -444,11 +444,11 @@ static int control(struct af_instance* af, int cmd, void* arg)
if (s->speed_pitch) {
break;
}
- s->speed = *(float*)arg;
+ s->speed = *(double *)arg;
s->scale = s->speed * s->scale_nominal;
} else {
if (s->speed_pitch) {
- s->speed = 1 / *(float*)arg;
+ s->speed = 1 / *(double *)arg;
s->scale = s->speed * s->scale_nominal;
break;
}
diff --git a/core/command.c b/core/command.c
index e50121fede..a2d4d2ee56 100644
--- a/core/command.c
+++ b/core/command.c
@@ -127,7 +127,7 @@ static int mp_property_playback_speed(m_option_t *prop, int action,
double orig_speed = opts->playback_speed;
switch (action) {
case M_PROPERTY_SET: {
- opts->playback_speed = *(float *) arg;
+ opts->playback_speed = *(double *) arg;
// Adjust time until next frame flip for nosound mode
mpctx->time_frame *= orig_speed / opts->playback_speed;
if (mpctx->sh_audio)
@@ -2186,8 +2186,8 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd)
.inc = 1,
.wrap = cmd->id == MP_CMD_CYCLE,
};
- if (cmd->args[1].v.f)
- s.inc = cmd->args[1].v.f;
+ if (cmd->args[1].v.d)
+ s.inc = cmd->args[1].v.d;
int r = mp_property_do(cmd->args[0].v.s, M_PROPERTY_SWITCH, &s, mpctx);
if (r == M_PROPERTY_OK || r == M_PROPERTY_UNAVAILABLE) {
show_property_osd(mpctx, cmd->args[0].v.s, cmd->on_osd);
@@ -2221,7 +2221,7 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd)
}
case MP_CMD_SPEED_MULT: {
- float v = cmd->args[0].v.f;
+ double v = cmd->args[0].v.d;
v *= mpctx->opts->playback_speed;
mp_property_do("speed", M_PROPERTY_SET, &v, mpctx);
show_property_osd(mpctx, "speed", cmd->on_osd);
diff --git a/core/input/input.c b/core/input/input.c
index 855e09887b..ae1358a76d 100644
--- a/core/input/input.c
+++ b/core/input/input.c
@@ -92,13 +92,14 @@ struct key_name {
#define ARG_INT { .type = {"", NULL, &m_option_type_int} }
#define ARG_FLOAT { .type = {"", NULL, &m_option_type_float} }
+#define ARG_DOUBLE { .type = {"", NULL, &m_option_type_double} }
#define ARG_STRING { .type = {"", NULL, &m_option_type_string} }
#define ARG_CHOICE(c) { .type = {"", NULL, &m_option_type_choice, \
M_CHOICES(c)} }
#define ARG_TIME { .type = {"", NULL, &m_option_type_time} }
-#define OARG_FLOAT(def) { .type = {"", NULL, &m_option_type_float}, \
- .optional = true, .v.f = def }
+#define OARG_DOUBLE(def) { .type = {"", NULL, &m_option_type_double}, \
+ .optional = true, .v.d = def }
#define OARG_INT(def) { .type = {"", NULL, &m_option_type_int}, \
.optional = true, .v.i = def }
#define OARG_CHOICE(def, c) { .type = {"", NULL, &m_option_type_choice, \
@@ -129,7 +130,7 @@ static const mp_cmd_t mp_cmds[] = {
{"exact", 1}, {"1", 1},
{"keyframes", -1}, {"-1", -1})),
}},
- { MP_CMD_SPEED_MULT, "speed_mult", { ARG_FLOAT } },
+ { MP_CMD_SPEED_MULT, "speed_mult", { ARG_DOUBLE } },
{ MP_CMD_QUIT, "quit", { OARG_INT(0) } },
{ MP_CMD_QUIT_WATCH_LATER, "quit_watch_later", },
{ MP_CMD_STOP, "stop", },
@@ -195,12 +196,12 @@ static const mp_cmd_t mp_cmds[] = {
{ MP_CMD_KEYDOWN_EVENTS, "key_down_event", { ARG_INT } },
{ MP_CMD_SET, "set", { ARG_STRING, ARG_STRING } },
{ MP_CMD_GET_PROPERTY, "get_property", { ARG_STRING } },
- { MP_CMD_ADD, "add", { ARG_STRING, OARG_FLOAT(0) } },
+ { MP_CMD_ADD, "add", { ARG_STRING, OARG_DOUBLE(0) } },
{ MP_CMD_CYCLE, "cycle", {
ARG_STRING,
{ .type = {"", NULL, &m_option_type_cycle_dir},
.optional = true,
- .v.f = 1 },
+ .v.d = 1 },
}},
{ MP_CMD_ENABLE_INPUT_SECTION, "enable_section", {
@@ -776,15 +777,15 @@ void mp_input_rm_key_fd(struct input_ctx *ictx, int fd)
static int parse_cycle_dir(const struct m_option *opt, struct bstr name,
struct bstr param, void *dst)
{
- float val;
+ double val;
if (bstrcmp0(param, "up") == 0) {
val = +1;
} else if (bstrcmp0(param, "down") == 0) {
val = -1;
} else {
- return m_option_type_float.parse(opt, name, param, dst);
+ return m_option_type_double.parse(opt, name, param, dst);
}
- *(float *)dst = val;
+ *(double *)dst = val;
return 1;
}
diff --git a/core/mplayer.c b/core/mplayer.c
index 31b1e88efa..d3872442ee 100644
--- a/core/mplayer.c
+++ b/core/mplayer.c
@@ -1576,7 +1576,7 @@ static int build_afilter_chain(struct MPContext *mpctx)
new_srate = 8000;
if (new_srate > 192000)
new_srate = 192000;
- opts->playback_speed = (float)new_srate / sh_audio->samplerate;
+ opts->playback_speed = (double)new_srate / sh_audio->samplerate;
}
}
return init_audio_filters(sh_audio, new_srate,
diff --git a/core/options.c b/core/options.c
index e2a7589708..0409288b9e 100644
--- a/core/options.c
+++ b/core/options.c
@@ -448,7 +448,7 @@ const m_option_t mp_opts[] = {
OPT_INTRANGE("srate", force_srate, 0, 1000, 8*48000),
OPT_CHMAP("channels", audio_output_channels, CONF_MIN, .min = 1),
OPT_AUDIOFORMAT("format", audio_output_format, 0),
- OPT_FLOATRANGE("speed", playback_speed, 0, 0.01, 100.0),
+ OPT_DOUBLE("speed", playback_speed, M_OPT_RANGE, .min = 0.01, .max = 100.0),
// set a-v distance
OPT_FLOATRANGE("audio-delay", audio_delay, 0, -100.0, 100.0),
diff --git a/core/options.h b/core/options.h
index 9a8deb9e4d..c83ab7a73a 100644
--- a/core/options.h
+++ b/core/options.h
@@ -159,7 +159,7 @@ typedef struct MPOpts {
int audio_output_format;
int force_srate;
int dtshd;
- float playback_speed;
+ double playback_speed;
struct m_obj_settings *vf_settings;
struct m_obj_settings *af_settings;
float movie_aspect;