diff libdiracdec.c @ 8422:e623323d409f libavcodec

Fix incorrectly constructed Dirac parse units that caused A/V sync loss. Fixes issue 694. patch by Anuradha Suraparaju, anuradha rd.bbc.co uk
author diego
date Mon, 22 Dec 2008 00:01:39 +0000
parents e943e1409077
children e9d9d946f213
line wrap: on
line diff
--- a/libdiracdec.c	Sun Dec 21 23:56:55 2008 +0000
+++ b/libdiracdec.c	Mon Dec 22 00:01:39 2008 +0000
@@ -88,10 +88,12 @@
 
     *data_size = 0;
 
-    if (buf_size>0)
+    if (buf_size>0) {
         /* set data to decode into buffer */
         dirac_buffer (p_dirac_params->p_decoder, buf, buf+buf_size);
-
+        if ((buf[4] &0x08) == 0x08 && (buf[4] & 0x03))
+            avccontext->has_b_frames = 1;
+    }
     while (1) {
          /* parse data and process result */
         DecoderState state = dirac_parse (p_dirac_params->p_decoder);