diff options
author | Aurelien Jacobs <aurel@gnuage.org> | 2008-09-01 15:31:14 +0000 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2008-09-01 15:31:14 +0000 |
commit | 75198e7a6d478b43f1c685c08e7494e1a773da73 (patch) | |
tree | 153dea0d9219940d5a2763660307ac28ed122ed4 /libavformat/raw.c | |
parent | 4d951ef86d86418e667c36fe5a375f50a74ad410 (diff) | |
download | ffmpeg-75198e7a6d478b43f1c685c08e7494e1a773da73.tar.gz |
simplify ac3_probe() and eac3_probe(). patch by Aurelien Jacobs.
Originally committed as revision 15145 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/raw.c')
-rw-r--r-- | libavformat/raw.c | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/libavformat/raw.c b/libavformat/raw.c index b5a52583ab..9e3d8d2c65 100644 --- a/libavformat/raw.c +++ b/libavformat/raw.c @@ -488,18 +488,18 @@ static int dirac_probe(AVProbeData *p) #endif #if (ENABLE_AC3_DEMUXER || ENABLE_EAC3_DEMUXER) -static int ac3_eac3_probe(AVProbeData *p, int *codec_id) +static int ac3_eac3_probe(AVProbeData *p, enum CodecID expected_codec_id) { int max_frames, first_frames = 0, frames; uint8_t *buf, *buf2, *end; AC3HeaderInfo hdr; GetBitContext gbc; + enum CodecID codec_id = CODEC_ID_AC3; max_frames = 0; buf = p->buf; end = buf + p->buf_size; - *codec_id = CODEC_ID_AC3; for(; buf < end; buf++) { buf2 = buf; @@ -511,13 +511,14 @@ static int ac3_eac3_probe(AVProbeData *p, int *codec_id) av_crc(av_crc_get_table(AV_CRC_16_ANSI), 0, buf2 + 2, hdr.frame_size - 2)) break; if (hdr.bitstream_id > 10) - *codec_id = CODEC_ID_EAC3; + codec_id = CODEC_ID_EAC3; buf2 += hdr.frame_size; } max_frames = FFMAX(max_frames, frames); if(buf == p->buf) first_frames = frames; } + if(codec_id != expected_codec_id) return 0; if (first_frames>=3) return AVPROBE_SCORE_MAX * 3 / 4; else if(max_frames>=3) return AVPROBE_SCORE_MAX / 2; else if(max_frames>=1) return 1; @@ -528,22 +529,14 @@ static int ac3_eac3_probe(AVProbeData *p, int *codec_id) #ifdef CONFIG_AC3_DEMUXER static int ac3_probe(AVProbeData *p) { - int codec_id = CODEC_ID_NONE; - int score = ac3_eac3_probe(p, &codec_id); - if(codec_id == CODEC_ID_AC3) - return score; - return 0; + return ac3_eac3_probe(p, CODEC_ID_AC3); } #endif #ifdef CONFIG_EAC3_DEMUXER static int eac3_probe(AVProbeData *p) { - int codec_id = CODEC_ID_NONE; - int score = ac3_eac3_probe(p, &codec_id); - if(codec_id == CODEC_ID_EAC3) - return score; - return 0; + return ac3_eac3_probe(p, CODEC_ID_EAC3); } #endif |