mirror of https://github.com/mpv-player/mpv
player/command: add deinterlace-active property
This commit is contained in:
parent
8dbbc2ad82
commit
003fb15cbb
|
@ -2174,6 +2174,11 @@ Property list
|
|||
``af-metadata/<filter-label>``
|
||||
Equivalent to ``vf-metadata/<filter-label>``, but for audio filters.
|
||||
|
||||
``deinterlace-active``
|
||||
Returns ``yes``/true if mpv's deinterlacing filter is active. Note that it
|
||||
will not detect any manually inserted deinterlacing filters done via
|
||||
``--vf``.
|
||||
|
||||
``idle-active``
|
||||
Returns ``yes``/true if no file is loaded, but the player is staying around
|
||||
because of the ``--idle`` option.
|
||||
|
|
|
@ -168,6 +168,12 @@ static const struct mp_filter_info deint_filter = {
|
|||
.destroy = deint_destroy,
|
||||
};
|
||||
|
||||
bool mp_deint_active(struct mp_filter *f)
|
||||
{
|
||||
struct deint_priv *p = f->priv;
|
||||
return p->deinterlace_active;
|
||||
}
|
||||
|
||||
struct mp_filter *mp_deint_create(struct mp_filter *parent)
|
||||
{
|
||||
struct mp_filter *f = mp_filter_create(parent, &deint_filter);
|
||||
|
|
|
@ -11,3 +11,5 @@ struct mp_filter *mp_autorotate_create(struct mp_filter *parent);
|
|||
|
||||
// Insert a filter that inserts scaletempo2 depending on speed settings.
|
||||
struct mp_filter *mp_autoaspeed_create(struct mp_filter *parent);
|
||||
|
||||
bool mp_deint_active(struct mp_filter *parent);
|
||||
|
|
|
@ -518,6 +518,17 @@ double mp_output_get_measured_total_delay(struct mp_output_chain *c)
|
|||
return delay;
|
||||
}
|
||||
|
||||
bool mp_output_chain_deinterlace_active(struct mp_output_chain *c)
|
||||
{
|
||||
struct chain *p = c->f->priv;
|
||||
for (int n = 0; n < p->num_all_filters; n++) {
|
||||
struct mp_user_filter *u = p->all_filters[n];
|
||||
if (strcmp(u->name, "userdeint") == 0)
|
||||
return mp_deint_active(u->f);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool mp_output_chain_update_filters(struct mp_output_chain *c,
|
||||
struct m_obj_settings *list)
|
||||
{
|
||||
|
|
|
@ -85,3 +85,6 @@ void mp_output_chain_set_audio_speed(struct mp_output_chain *p,
|
|||
// due to the change.
|
||||
// Makes sense for audio only.
|
||||
double mp_output_get_measured_total_delay(struct mp_output_chain *p);
|
||||
|
||||
// Check if deinterlace user filter is inserted
|
||||
bool mp_output_chain_deinterlace_active(struct mp_output_chain *p);
|
||||
|
|
|
@ -1357,6 +1357,18 @@ static int mp_property_core_idle(void *ctx, struct m_property *prop,
|
|||
return m_property_bool_ro(action, arg, !mpctx->playback_active);
|
||||
}
|
||||
|
||||
static int mp_property_deinterlace(void *ctx, struct m_property *prop,
|
||||
int action, void *arg)
|
||||
{
|
||||
MPContext *mpctx = ctx;
|
||||
struct vo_chain *vo_c = mpctx->vo_chain;
|
||||
if (!vo_c)
|
||||
return M_PROPERTY_UNAVAILABLE;
|
||||
|
||||
bool deinterlace_active = mp_output_chain_deinterlace_active(vo_c->filter);
|
||||
return m_property_bool_ro(action, arg, deinterlace_active);
|
||||
}
|
||||
|
||||
static int mp_property_idle(void *ctx, struct m_property *prop,
|
||||
int action, void *arg)
|
||||
{
|
||||
|
@ -3882,6 +3894,7 @@ static const struct m_property mp_properties_base[] = {
|
|||
{"clock", mp_property_clock},
|
||||
{"seekable", mp_property_seekable},
|
||||
{"partially-seekable", mp_property_partially_seekable},
|
||||
{"deinterlace-active", mp_property_deinterlace},
|
||||
{"idle-active", mp_property_idle},
|
||||
{"window-id", mp_property_window_id},
|
||||
|
||||
|
@ -4056,7 +4069,8 @@ static const char *const *const mp_event_property_change[] = {
|
|||
"secondary-sub-text", "audio-bitrate", "video-bitrate", "sub-bitrate",
|
||||
"decoder-frame-drop-count", "frame-drop-count", "video-frame-info",
|
||||
"vf-metadata", "af-metadata", "sub-start", "sub-end", "secondary-sub-start",
|
||||
"secondary-sub-end", "video-out-params", "video-dec-params", "video-params"),
|
||||
"secondary-sub-end", "video-out-params", "video-dec-params", "video-params",
|
||||
"deinterlace-active"),
|
||||
E(MP_EVENT_DURATION_UPDATE, "duration"),
|
||||
E(MPV_EVENT_VIDEO_RECONFIG, "video-out-params", "video-params",
|
||||
"video-format", "video-codec", "video-bitrate", "dwidth", "dheight",
|
||||
|
|
Loading…
Reference in New Issue