avformat/ac3dec: Use avpriv_ac3_parse_header2()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
eadc21cfe7
commit
0c9dd939cd
@ -28,7 +28,7 @@ static int ac3_eac3_probe(AVProbeData *p, enum AVCodecID expected_codec_id)
|
|||||||
{
|
{
|
||||||
int max_frames, first_frames = 0, frames;
|
int max_frames, first_frames = 0, frames;
|
||||||
const uint8_t *buf, *buf2, *end;
|
const uint8_t *buf, *buf2, *end;
|
||||||
AC3HeaderInfo hdr;
|
AC3HeaderInfo *phdr = NULL;
|
||||||
GetBitContext gbc;
|
GetBitContext gbc;
|
||||||
enum AVCodecID codec_id = AV_CODEC_ID_AC3;
|
enum AVCodecID codec_id = AV_CODEC_ID_AC3;
|
||||||
|
|
||||||
@ -55,27 +55,28 @@ static int ac3_eac3_probe(AVProbeData *p, enum AVCodecID expected_codec_id)
|
|||||||
init_get_bits(&gbc, buf3, 54);
|
init_get_bits(&gbc, buf3, 54);
|
||||||
}else
|
}else
|
||||||
init_get_bits(&gbc, buf2, 54);
|
init_get_bits(&gbc, buf2, 54);
|
||||||
if(avpriv_ac3_parse_header(&gbc, &hdr) < 0)
|
if(avpriv_ac3_parse_header2(&gbc, &phdr) < 0)
|
||||||
break;
|
break;
|
||||||
if(buf2 + hdr.frame_size > end)
|
if(buf2 + phdr->frame_size > end)
|
||||||
break;
|
break;
|
||||||
if (buf[0] == 0x77 && buf[1] == 0x0B) {
|
if (buf[0] == 0x77 && buf[1] == 0x0B) {
|
||||||
av_assert0(hdr.frame_size <= sizeof(buf3));
|
av_assert0(phdr->frame_size <= sizeof(buf3));
|
||||||
for(i=8; i<hdr.frame_size; i+=2) {
|
for(i=8; i<phdr->frame_size; i+=2) {
|
||||||
buf3[i ] = buf[i+1];
|
buf3[i ] = buf[i+1];
|
||||||
buf3[i+1] = buf[i ];
|
buf3[i+1] = buf[i ];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(av_crc(av_crc_get_table(AV_CRC_16_ANSI), 0, gbc.buffer + 2, hdr.frame_size - 2))
|
if(av_crc(av_crc_get_table(AV_CRC_16_ANSI), 0, gbc.buffer + 2, phdr->frame_size - 2))
|
||||||
break;
|
break;
|
||||||
if (hdr.bitstream_id > 10)
|
if (phdr->bitstream_id > 10)
|
||||||
codec_id = AV_CODEC_ID_EAC3;
|
codec_id = AV_CODEC_ID_EAC3;
|
||||||
buf2 += hdr.frame_size;
|
buf2 += phdr->frame_size;
|
||||||
}
|
}
|
||||||
max_frames = FFMAX(max_frames, frames);
|
max_frames = FFMAX(max_frames, frames);
|
||||||
if(buf == p->buf)
|
if(buf == p->buf)
|
||||||
first_frames = frames;
|
first_frames = frames;
|
||||||
}
|
}
|
||||||
|
av_freep(&phdr);
|
||||||
if(codec_id != expected_codec_id) return 0;
|
if(codec_id != expected_codec_id) return 0;
|
||||||
// keep this in sync with mp3 probe, both need to avoid
|
// keep this in sync with mp3 probe, both need to avoid
|
||||||
// issues with MPEG-files!
|
// issues with MPEG-files!
|
||||||
|
Loading…
x
Reference in New Issue
Block a user