comparison 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
comparison
equal deleted inserted replaced
8421:9ea0742666b9 8422:e623323d409f
86 int pict_size; 86 int pict_size;
87 unsigned char *buffer[3]; 87 unsigned char *buffer[3];
88 88
89 *data_size = 0; 89 *data_size = 0;
90 90
91 if (buf_size>0) 91 if (buf_size>0) {
92 /* set data to decode into buffer */ 92 /* set data to decode into buffer */
93 dirac_buffer (p_dirac_params->p_decoder, buf, buf+buf_size); 93 dirac_buffer (p_dirac_params->p_decoder, buf, buf+buf_size);
94 94 if ((buf[4] &0x08) == 0x08 && (buf[4] & 0x03))
95 avccontext->has_b_frames = 1;
96 }
95 while (1) { 97 while (1) {
96 /* parse data and process result */ 98 /* parse data and process result */
97 DecoderState state = dirac_parse (p_dirac_params->p_decoder); 99 DecoderState state = dirac_parse (p_dirac_params->p_decoder);
98 switch (state) 100 switch (state)
99 { 101 {