Mercurial > libavcodec.hg
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);