summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-12-30 10:38:29 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-12-30 10:38:29 +0000
commit5904de25e3b78b78ca6ea81e18d436377d426a43 (patch)
treee92a77283bd16bddefe69c1a480a581c26262ef5 /libmpcodecs
parent3a6137fbcb33c8bbef92235949c18c1be03f534d (diff)
downloadmpv-5904de25e3b78b78ca6ea81e18d436377d426a43.tar.bz2
mpv-5904de25e3b78b78ca6ea81e18d436377d426a43.tar.xz
Avoid flickering OSD with -vf yadif=1
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28209 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r--libmpcodecs/vf.c8
-rw-r--r--libmpcodecs/vf.h1
-rw-r--r--libmpcodecs/vf_yadif.c2
3 files changed, 10 insertions, 1 deletions
diff --git a/libmpcodecs/vf.c b/libmpcodecs/vf.c
index 37ada3c59e..d04d7f0ecc 100644
--- a/libmpcodecs/vf.c
+++ b/libmpcodecs/vf.c
@@ -655,6 +655,14 @@ int vf_next_control(struct vf_instance_s* vf, int request, void* data){
return vf->next->control(vf->next,request,data);
}
+void vf_extra_flip(struct vf_instance_s* vf) {
+ vf_next_control(vf, VFCTRL_DRAW_OSD, NULL);
+#ifdef CONFIG_ASS
+ vf_next_control(vf, VFCTRL_DRAW_EOSD, NULL);
+#endif
+ vf_next_control(vf, VFCTRL_FLIP_PAGE, NULL);
+}
+
int vf_next_query_format(struct vf_instance_s* vf, unsigned int fmt){
int flags=vf->next->query_format(vf->next,fmt);
if(flags) flags|=vf->default_caps;
diff --git a/libmpcodecs/vf.h b/libmpcodecs/vf.h
index 27a48eadf2..a2617ff164 100644
--- a/libmpcodecs/vf.h
+++ b/libmpcodecs/vf.h
@@ -112,6 +112,7 @@ int vf_next_config(struct vf_instance_s* vf,
int width, int height, int d_width, int d_height,
unsigned int flags, unsigned int outfmt);
int vf_next_control(struct vf_instance_s* vf, int request, void* data);
+void vf_extra_flip(struct vf_instance_s* vf);
int vf_next_query_format(struct vf_instance_s* vf, unsigned int fmt);
int vf_next_put_image(struct vf_instance_s* vf,mp_image_t *mpi, double pts);
void vf_next_draw_slice (struct vf_instance_s* vf, unsigned char** src, int* stride, int w,int h, int x, int y);
diff --git a/libmpcodecs/vf_yadif.c b/libmpcodecs/vf_yadif.c
index 971ad988e2..a8328d3f2a 100644
--- a/libmpcodecs/vf_yadif.c
+++ b/libmpcodecs/vf_yadif.c
@@ -440,7 +440,7 @@ static int continue_buffered_image(struct vf_instance_s *vf)
if (correct_pts)
break;
if(i<(vf->priv->mode&1))
- vf_next_control(vf, VFCTRL_FLIP_PAGE, NULL);
+ vf_extra_flip(vf);
}
vf->priv->buffered_i = 1;
return ret;