X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fdsfdec.c;h=f16b397df2cd5d7fed353cc53840b751f1061963;hb=423a6a0993814e44fa8f34af23f5e9242cd0658a;hp=beb2fbf5aa9ed1bd476c59d86ca804a04050a0d9;hpb=c1828450686ce240f344924b5b5bcaa84ebdcd9f;p=ffmpeg diff --git a/libavformat/dsfdec.c b/libavformat/dsfdec.c index beb2fbf5aa9..f16b397df2c 100644 --- a/libavformat/dsfdec.c +++ b/libavformat/dsfdec.c @@ -107,6 +107,9 @@ static int dsf_read_header(AVFormatContext *s) st->codecpar->channels = avio_rl32(pb); st->codecpar->sample_rate = avio_rl32(pb) / 8; + if (st->codecpar->channels <= 0) + return AVERROR_INVALIDDATA; + switch(avio_rl32(pb)) { case 1: st->codecpar->codec_id = AV_CODEC_ID_DSD_LSBF_PLANAR; break; case 8: st->codecpar->codec_id = AV_CODEC_ID_DSD_MSBF_PLANAR; break; @@ -122,6 +125,7 @@ static int dsf_read_header(AVFormatContext *s) return AVERROR_INVALIDDATA; } st->codecpar->block_align *= st->codecpar->channels; + st->codecpar->bit_rate = st->codecpar->channels * st->codecpar->sample_rate * 8LL; avio_skip(pb, 4); /* data chunk */