mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-28 20:53:54 +02:00
add error concealment
Originally committed as revision 13397 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
6477a940f6
commit
ecfe94b294
@ -1154,8 +1154,8 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, int *data_size,
|
||||
if(err) {
|
||||
switch(err) {
|
||||
case AC3_PARSE_ERROR_SYNC:
|
||||
av_log(avctx, AV_LOG_ERROR, "frame sync error\n");
|
||||
break;
|
||||
av_log(avctx, AV_LOG_ERROR, "frame sync error : cannot use error concealment\n");
|
||||
return -1;
|
||||
case AC3_PARSE_ERROR_BSID:
|
||||
av_log(avctx, AV_LOG_ERROR, "invalid bitstream id\n");
|
||||
break;
|
||||
@ -1172,7 +1172,6 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, int *data_size,
|
||||
av_log(avctx, AV_LOG_ERROR, "invalid header\n");
|
||||
break;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* check that reported frame size fits in input buffer */
|
||||
@ -1185,11 +1184,12 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, int *data_size,
|
||||
if(avctx->error_resilience >= FF_ER_CAREFUL) {
|
||||
if(av_crc(av_crc_get_table(AV_CRC_16_ANSI), 0, &buf[2], s->frame_size-2)) {
|
||||
av_log(avctx, AV_LOG_ERROR, "frame CRC mismatch\n");
|
||||
return -1;
|
||||
err = 1;
|
||||
}
|
||||
/* TODO: error concealment */
|
||||
}
|
||||
|
||||
/* if frame is ok, set audio parameters */
|
||||
if (!err) {
|
||||
avctx->sample_rate = s->sample_rate;
|
||||
avctx->bit_rate = s->bit_rate;
|
||||
|
||||
@ -1207,13 +1207,12 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, int *data_size,
|
||||
s->fbw_channels == s->out_channels)) {
|
||||
set_downmix_coeffs(s);
|
||||
}
|
||||
}
|
||||
|
||||
/* parse the audio blocks */
|
||||
for (blk = 0; blk < NB_BLOCKS; blk++) {
|
||||
if (ac3_parse_audio_block(s, blk)) {
|
||||
if (!err && ac3_parse_audio_block(s, blk)) {
|
||||
av_log(avctx, AV_LOG_ERROR, "error parsing the audio block\n");
|
||||
*data_size = 0;
|
||||
return s->frame_size;
|
||||
}
|
||||
for (i = 0; i < 256; i++)
|
||||
for (ch = 0; ch < s->out_channels; ch++)
|
||||
|
Loading…
Reference in New Issue
Block a user