summaryrefslogtreecommitdiffstats
path: root/filters
diff options
context:
space:
mode:
authorDudemanguy <random342@airmail.cc>2024-01-21 21:37:49 -0600
committerDudemanguy <random342@airmail.cc>2024-02-07 14:50:09 +0000
commit003fb15cbb21d86186ab3fb5448ff8c908e1e0dd (patch)
tree4922ee5f0b838ffc3d75293fc3712b7098827afa /filters
parent8dbbc2ad82d6ebfa986db4726e2e5006b7cb0a9d (diff)
downloadmpv-003fb15cbb21d86186ab3fb5448ff8c908e1e0dd.tar.bz2
mpv-003fb15cbb21d86186ab3fb5448ff8c908e1e0dd.tar.xz
player/command: add deinterlace-active property
Diffstat (limited to 'filters')
-rw-r--r--filters/f_auto_filters.c6
-rw-r--r--filters/f_auto_filters.h2
-rw-r--r--filters/f_output_chain.c11
-rw-r--r--filters/f_output_chain.h3
4 files changed, 22 insertions, 0 deletions
diff --git a/filters/f_auto_filters.c b/filters/f_auto_filters.c
index fca8894b1a..f6d068ada6 100644
--- a/filters/f_auto_filters.c
+++ b/filters/f_auto_filters.c
@@ -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);
diff --git a/filters/f_auto_filters.h b/filters/f_auto_filters.h
index f315084158..f926f6e449 100644
--- a/filters/f_auto_filters.h
+++ b/filters/f_auto_filters.h
@@ -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);
diff --git a/filters/f_output_chain.c b/filters/f_output_chain.c
index 2d4dcba417..ccb4d53af9 100644
--- a/filters/f_output_chain.c
+++ b/filters/f_output_chain.c
@@ -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)
{
diff --git a/filters/f_output_chain.h b/filters/f_output_chain.h
index f06769cdd9..f313f9a65f 100644
--- a/filters/f_output_chain.h
+++ b/filters/f_output_chain.h
@@ -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);