summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAbdullah Alansari <ahimta@gmail.com>2019-12-21 16:25:47 +0300
committerwm4 <1387750+wm4@users.noreply.github.com>2019-12-22 02:32:50 +0100
commite6bdd94cb2941b1c296d099672afc4e5d2ee0143 (patch)
treea2d9b181ecbae33c5780c87094eb5450159db81b
parent71ddb22b39ec3cce1c39b7f53975e51e94d257d4 (diff)
downloadmpv-e6bdd94cb2941b1c296d099672afc4e5d2ee0143.tar.bz2
mpv-e6bdd94cb2941b1c296d099672afc4e5d2ee0143.tar.xz
command: fix confusing displayed aspect-ratio
For example, when a user switches the aspect-ratio display `16:9` instead of `1.778` and `Original` instead of `-1.000`.
-rw-r--r--player/command.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/player/command.c b/player/command.c
index 8b41631b4b..86715c8896 100644
--- a/player/command.c
+++ b/player/command.c
@@ -2583,6 +2583,38 @@ skip_warn: ;
return M_PROPERTY_NOT_IMPLEMENTED;
}
+static bool floats_equal(float x, float y) {
+ float TOLERANCE = 0.001;
+ float difference = fabsf(x - y);
+ return difference <= TOLERANCE;
+}
+
+static int mp_property_video_aspect_override(void *ctx, struct m_property *prop,
+ int action, void *arg)
+{
+ MPContext *mpctx = ctx;
+ if (action == M_PROPERTY_PRINT) {
+ float aspect_ratio;
+ mp_property_generic_option(mpctx, prop, M_PROPERTY_GET, &aspect_ratio);
+
+ if (floats_equal(aspect_ratio, 2.35F / 1.0F))
+ *(char **)arg = talloc_asprintf(NULL, "2.35:1");
+ else if (floats_equal(aspect_ratio, 16.0F / 9.0F))
+ *(char **)arg = talloc_asprintf(NULL, "16:9");
+ else if (floats_equal(aspect_ratio, 16.0F / 10.0F))
+ *(char **)arg = talloc_asprintf(NULL, "16:10");
+ else if (floats_equal(aspect_ratio, 4.0F / 3.0F))
+ *(char **)arg = talloc_asprintf(NULL, "4:3");
+ else if (floats_equal(aspect_ratio, -1.0F))
+ *(char **)arg = talloc_asprintf(NULL, "Original");
+ else
+ *(char **)arg = talloc_asprintf(NULL, "%.3f", aspect_ratio);
+
+ return M_PROPERTY_OK;
+ }
+ return mp_property_generic_option(mpctx, prop, action, arg);
+}
+
/// Subtitle delay (RW)
static int mp_property_sub_delay(void *ctx, struct m_property *prop,
int action, void *arg)
@@ -3364,6 +3396,7 @@ static const struct m_property mp_properties_base[] = {
{"container-fps", mp_property_fps},
{"estimated-vf-fps", mp_property_vf_fps},
{"video-aspect", mp_property_aspect},
+ {"video-aspect-override", mp_property_video_aspect_override},
{"vid", property_switch_track, .priv = (void *)(const int[]){0, STREAM_VIDEO}},
{"hwdec-current", mp_property_hwdec_current},
{"hwdec-interop", mp_property_hwdec_interop},