On Wed, Nov 04, 2015 at 02:18:17PM +0100, Paul B Mahol wrote: > Signed-off-by: Paul B Mahol <one...@gmail.com> [...] > diff --git a/libavformat/riffdec.c b/libavformat/riffdec.c > index 26779e1..5022312 100644 > --- a/libavformat/riffdec.c > +++ b/libavformat/riffdec.c > @@ -99,10 +99,12 @@ int ff_get_wav_header(AVFormatContext *s, AVIOContext *pb, > codec->codec_type = AVMEDIA_TYPE_AUDIO; > if (!big_endian) { > id = avio_rl16(pb); > - codec->channels = avio_rl16(pb); > - codec->sample_rate = avio_rl32(pb); > - bitrate = avio_rl32(pb) * 8LL; > - codec->block_align = avio_rl16(pb); > + if (id != 0x0165) { > + codec->channels = avio_rl16(pb); > + codec->sample_rate = avio_rl32(pb); > + bitrate = avio_rl32(pb) * 8LL; > + codec->block_align = avio_rl16(pb); > + } > } else { > id = avio_rb16(pb); > codec->channels = avio_rb16(pb); > @@ -126,7 +128,7 @@ int ff_get_wav_header(AVFormatContext *s, AVIOContext *pb, > codec->codec_id = ff_wav_codec_get_id(id, > codec->bits_per_coded_sample); > } > - if (size >= 18) { /* We're obviously dealing with WAVEFORMATEX */ > + if (size >= 18 && id != 0x0165) { /* We're obviously dealing with > WAVEFORMATEX */ > int cbSize = avio_rl16(pb); /* cbSize */ > if (big_endian) { > avpriv_report_missing_feature(codec, "WAVEFORMATEX support for > RIFX files\n"); > @@ -149,6 +151,19 @@ int ff_get_wav_header(AVFormatContext *s, AVIOContext > *pb, > /* It is possible for the chunk to contain garbage at the end */ > if (size > 0) > avio_skip(pb, size); > + } else if (id == 0x0165 && size >= 32) { > + int nb_streams, i; > + > + size -= 4; > + av_freep(&codec->extradata); > + if (ff_get_extradata(codec, pb, size) < 0) > + return AVERROR(ENOMEM); > + nb_streams = AV_RL16(codec->extradata + 4); > + codec->sample_rate = AV_RL32(codec->extradata + 12); > + codec->channels = 0; > + bitrate = 0; > + for (i = 0; i < nb_streams; i++) > + codec->channels += codec->extradata[8 + i * 20 + 17]; > } >
> if (bitrate > INT_MAX) { coverity belives that bitrate can be uninitialized here [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB In a rich man's house there is no place to spit but his face. -- Diogenes of Sinope
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel