summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-09-30 22:25:34 +0200
committerwm4 <wm4@nowhere>2013-10-05 22:46:55 +0200
commitfd49edccf811de0d6c61f30d8b2b524f8df93b36 (patch)
tree274ec3cd18cb62abacf77f7249636bf8c2bf43ad
parent1be863afdbe9017aa227234e8525b209fb818224 (diff)
downloadmpv-fd49edccf811de0d6c61f30d8b2b524f8df93b36.tar.bz2
mpv-fd49edccf811de0d6c61f30d8b2b524f8df93b36.tar.xz
command: add properties for retrieving OSD dimensions
-rw-r--r--DOCS/man/en/input.rst3
-rw-r--r--mpvcore/command.c23
-rw-r--r--sub/sub.c3
-rw-r--r--sub/sub.h2
4 files changed, 31 insertions, 0 deletions
diff --git a/DOCS/man/en/input.rst b/DOCS/man/en/input.rst
index 558bb39fbf..a0014c51bd 100644
--- a/DOCS/man/en/input.rst
+++ b/DOCS/man/en/input.rst
@@ -463,6 +463,9 @@ Name W Comment
``dwidth`` video width (after filters and aspect scaling)
``dheight`` video height
``aspect`` x video aspect
+``osd-width`` last known OSD width (can be 0)
+``osd-height`` last known OSD height (can be 0)
+``osd-par`` last known OSD display pixel aspect (can be 0)
``vid`` x current video track (similar to ``--vid``)
``video`` x alias for ``vid``
``video-align-x`` x see ``--video-align-x``
diff --git a/mpvcore/command.c b/mpvcore/command.c
index 3dc813673b..e1c7e6e79e 100644
--- a/mpvcore/command.c
+++ b/mpvcore/command.c
@@ -1458,6 +1458,25 @@ static int mp_property_dheight(m_option_t *prop, int action, void *arg,
return property_vo_wh(prop, action, arg, mpctx, false);
}
+static int mp_property_osd_w(m_option_t *prop, int action, void *arg,
+ MPContext *mpctx)
+{
+ return m_property_int_ro(prop, action, arg, mpctx->osd->last_vo_res.w);
+}
+
+static int mp_property_osd_h(m_option_t *prop, int action, void *arg,
+ MPContext *mpctx)
+{
+ return m_property_int_ro(prop, action, arg, mpctx->osd->last_vo_res.w);
+}
+
+static int mp_property_osd_par(m_option_t *prop, int action, void *arg,
+ MPContext *mpctx)
+{
+ return m_property_double_ro(prop, action, arg,
+ mpctx->osd->last_vo_res.display_par);
+}
+
/// Video fps (RO)
static int mp_property_fps(m_option_t *prop, int action, void *arg,
MPContext *mpctx)
@@ -1880,6 +1899,10 @@ static const m_option_t mp_properties[] = {
{ "program", mp_property_program, CONF_TYPE_INT,
CONF_RANGE, -1, 65535, NULL },
+ { "osd-width", mp_property_osd_w, CONF_TYPE_INT },
+ { "osd-height", mp_property_osd_h, CONF_TYPE_INT },
+ { "osd-par", mp_property_osd_par, CONF_TYPE_DOUBLE },
+
// Subs
M_OPTION_PROPERTY_CUSTOM("sid", mp_property_sub),
M_OPTION_PROPERTY_CUSTOM("sub-delay", mp_property_sub_delay),
diff --git a/sub/sub.c b/sub/sub.c
index 1beb9e8138..cc4a76c065 100644
--- a/sub/sub.c
+++ b/sub/sub.c
@@ -222,6 +222,9 @@ void osd_draw(struct osd_state *osd, struct mp_osd_res res,
if (draw_flags & OSD_DRAW_SUB_FILTER)
draw_flags |= OSD_DRAW_SUB_ONLY;
+ if (!(draw_flags & OSD_DRAW_SUB_ONLY))
+ osd->last_vo_res = res;
+
for (int n = 0; n < MAX_OSD_PARTS; n++) {
struct osd_object *obj = osd->objs[n];
diff --git a/sub/sub.h b/sub/sub.h
index 35527f266b..1118fec5c1 100644
--- a/sub/sub.h
+++ b/sub/sub.h
@@ -128,6 +128,8 @@ struct osd_state {
bool render_subs_in_filter;
bool render_bitmap_subs;
+ struct mp_osd_res last_vo_res;
+
bool want_redraw;
// OSDTYPE_OSD