diff options
author | wm4 <wm4@nowhere> | 2013-09-30 22:25:34 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-10-05 22:46:55 +0200 |
commit | fd49edccf811de0d6c61f30d8b2b524f8df93b36 (patch) | |
tree | 274ec3cd18cb62abacf77f7249636bf8c2bf43ad | |
parent | 1be863afdbe9017aa227234e8525b209fb818224 (diff) | |
download | mpv-fd49edccf811de0d6c61f30d8b2b524f8df93b36.tar.bz2 mpv-fd49edccf811de0d6c61f30d8b2b524f8df93b36.tar.xz |
command: add properties for retrieving OSD dimensions
-rw-r--r-- | DOCS/man/en/input.rst | 3 | ||||
-rw-r--r-- | mpvcore/command.c | 23 | ||||
-rw-r--r-- | sub/sub.c | 3 | ||||
-rw-r--r-- | sub/sub.h | 2 |
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), @@ -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]; @@ -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 |