diff options
author | wm4 <wm4@nowhere> | 2016-05-25 23:40:47 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2016-05-25 23:51:24 +0200 |
commit | 5c9f164caf88d8049477727450845cbab2ffead2 (patch) | |
tree | c925a21cdfb8503fa763f27ce9e0209ba287f2c7 /video/filter/refqueue.h | |
parent | fc18e1df6224229d5e95bb9d1855f88690e655b3 (diff) | |
download | mpv-5c9f164caf88d8049477727450845cbab2ffead2.tar.bz2 mpv-5c9f164caf88d8049477727450845cbab2ffead2.tar.xz |
vf_vavpp: make refqueue logic field-based
Abstracts the annoying framerate-doubling behavior.
Same deal as with refqueue introduction: the code size blows up, but at
least it can be reused for other filters.
Diffstat (limited to 'video/filter/refqueue.h')
-rw-r--r-- | video/filter/refqueue.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/video/filter/refqueue.h b/video/filter/refqueue.h index 69b3987a8f..52ecc10953 100644 --- a/video/filter/refqueue.h +++ b/video/filter/refqueue.h @@ -16,7 +16,18 @@ void mp_refqueue_add_input(struct mp_refqueue *q, struct mp_image *img); bool mp_refqueue_need_input(struct mp_refqueue *q); bool mp_refqueue_has_output(struct mp_refqueue *q); void mp_refqueue_next(struct mp_refqueue *q); +void mp_refqueue_next_field(struct mp_refqueue *q); struct mp_image *mp_refqueue_get(struct mp_refqueue *q, int pos); -double mp_refqueue_get_field_pts(struct mp_refqueue *q, int field); + +enum { + MP_MODE_OUTPUT_FIELDS = (1 << 0), // output fields separately + MP_MODE_INTERLACED_ONLY = (1 << 1), // only deinterlace marked frames +}; + +void mp_refqueue_set_mode(struct mp_refqueue *q, int flags); +bool mp_refqueue_should_deint(struct mp_refqueue *q); +bool mp_refqueue_is_interlaced(struct mp_refqueue *q); +bool mp_refqueue_is_top_field(struct mp_refqueue *q); +bool mp_refqueue_top_field_first(struct mp_refqueue *q); #endif |