summaryrefslogtreecommitdiffstats
path: root/video/filter
diff options
context:
space:
mode:
authorFilip Milivojevic <zekica@gmail.com>2015-03-08 19:58:58 +0100
committerwm4 <wm4@nowhere>2015-03-08 21:44:18 +0100
commit5c3a6ca96e8bb5275149e5763f27c6aaed35113d (patch)
tree3cc83ffe9f90073a4444e2e3a2c4acbe7c91fde6 /video/filter
parent4d0aa016377bc997bb7c04bff8eb38701403c182 (diff)
downloadmpv-5c3a6ca96e8bb5275149e5763f27c6aaed35113d.tar.bz2
mpv-5c3a6ca96e8bb5275149e5763f27c6aaed35113d.tar.xz
vf_vavpp: fix deinterlacing
Add filter parameters to VAAPI deinterlacing filter to actually process bottom fields instead of deinterlacing top field twice. Signed-off-by: wm4 <wm4@nowhere>
Diffstat (limited to 'video/filter')
-rw-r--r--video/filter/vf_vavpp.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/video/filter/vf_vavpp.c b/video/filter/vf_vavpp.c
index 54648e124c..be7f7f4dad 100644
--- a/video/filter/vf_vavpp.c
+++ b/video/filter/vf_vavpp.c
@@ -163,6 +163,14 @@ static struct mp_image *render(struct vf_instance *vf, struct mp_image *in,
status = vaMapBuffer(p->display, buffer, (void**)&param);
if (!check_error(vf, status, "vaMapBuffer()"))
break;
+
+ VAProcFilterParameterBufferDeinterlacing *filter_params;
+ status = vaMapBuffer(p->display, *(p->pipe.filters), (void**)&filter_params);
+ if (!check_error(vf, status, "vaMapBuffer()"))
+ break;
+ filter_params->flags = flags & VA_TOP_FIELD ? 0 : VA_DEINTERLACING_BOTTOM_FIELD;
+ vaUnmapBuffer(p->display, *(p->pipe.filters));
+
param->surface = in_id;
param->surface_region = NULL;
param->output_region = NULL;