From a04ec2484b24957cafbb65a49540a40d21857a66 Mon Sep 17 00:00:00 2001 From: reimar Date: Fri, 7 Aug 2009 09:07:02 +0000 Subject: Add a giant hack to the x264 encoder module to ensure all delayed frames are written on FLUSH_FRAMES, this is necessary since using multiple threads adds an additional delay beyond the B-frame delay. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29480 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/ve_x264.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'libmpcodecs') diff --git a/libmpcodecs/ve_x264.c b/libmpcodecs/ve_x264.c index 56bb5868df..8a4a1147f3 100644 --- a/libmpcodecs/ve_x264.c +++ b/libmpcodecs/ve_x264.c @@ -218,9 +218,11 @@ static int config(struct vf_instance_s* vf, int width, int height, int d_width, static int control(struct vf_instance_s* vf, int request, void *data) { h264_module_t *mod=(h264_module_t*)vf->priv; + int count = 256; // giant HACK, x264_encoder_encode may incorrectly return 0 + // when threads > 1 and delayed frames pending switch(request){ case VFCTRL_FLUSH_FRAMES: - if(param.i_bframe) + while(encode_frame(vf, NULL) == 0 && --count); while(encode_frame(vf, NULL) > 0); return CONTROL_TRUE; default: -- cgit v1.2.3