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