changeset 29663:18b540567d56

Use x264_encoder_delayed_frames instead of the current hack to flush delayed frames in VFCTRL_FLUSH_FRAMES.
author reimar
date Wed, 23 Sep 2009 12:26:44 +0000
parents fb0202969d92
children be200f7c305c
files libmpcodecs/ve_x264.c
diffstat 1 files changed, 2 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/ve_x264.c	Wed Sep 23 12:01:04 2009 +0000
+++ b/libmpcodecs/ve_x264.c	Wed Sep 23 12:26:44 2009 +0000
@@ -196,12 +196,10 @@
 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:
-            while(encode_frame(vf, NULL) == 0 && --count);
-                while(encode_frame(vf, NULL) > 0);
+            while (x264_encoder_delayed_frames(mod->x264) > 0)
+                encode_frame(vf, NULL);
             return CONTROL_TRUE;
         default:
             return CONTROL_UNKNOWN;