[MPlayer-cvslog] r29480 - trunk/libmpcodecs/ve_x264.c
reimar
subversion at mplayerhq.hu
Fri Aug 7 11:07:02 CEST 2009
Author: reimar
Date: Fri Aug 7 11:07:02 2009
New Revision: 29480
Log:
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.
Modified:
trunk/libmpcodecs/ve_x264.c
Modified: trunk/libmpcodecs/ve_x264.c
==============================================================================
--- trunk/libmpcodecs/ve_x264.c Thu Aug 6 22:04:19 2009 (r29479)
+++ trunk/libmpcodecs/ve_x264.c Fri Aug 7 11:07:02 2009 (r29480)
@@ -218,9 +218,11 @@ static int config(struct vf_instance_s*
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:
More information about the MPlayer-cvslog
mailing list