mirror of https://git.ffmpeg.org/ffmpeg.git
avformat/au: do not use invalid block_align for small bits per sample
Fixes #5481.
This commit is contained in:
parent
3e461f9d4c
commit
8a8cce078c
|
@ -140,7 +140,7 @@ static int au_read_header(AVFormatContext *s)
|
|||
unsigned int tag;
|
||||
AVIOContext *pb = s->pb;
|
||||
unsigned int id, channels, rate;
|
||||
int bps;
|
||||
int bps, ba = 0;
|
||||
enum AVCodecID codec;
|
||||
AVStream *st;
|
||||
|
||||
|
@ -178,6 +178,7 @@ static int au_read_header(AVFormatContext *s)
|
|||
} else {
|
||||
const uint8_t bpcss[] = {4, 0, 3, 5};
|
||||
av_assert0(id >= 23 && id < 23 + 4);
|
||||
ba = bpcss[id - 23];
|
||||
bps = bpcss[id - 23];
|
||||
}
|
||||
} else if (!bps) {
|
||||
|
@ -205,7 +206,7 @@ static int au_read_header(AVFormatContext *s)
|
|||
st->codecpar->sample_rate = rate;
|
||||
st->codecpar->bits_per_coded_sample = bps;
|
||||
st->codecpar->bit_rate = channels * rate * bps;
|
||||
st->codecpar->block_align = FFMAX(bps * st->codecpar->channels / 8, 1);
|
||||
st->codecpar->block_align = ba ? ba : FFMAX(bps * st->codecpar->channels / 8, 1);
|
||||
if (data_size != AU_UNKNOWN_SIZE)
|
||||
st->duration = (((int64_t)data_size)<<3) / (st->codecpar->channels * (int64_t)bps);
|
||||
|
||||
|
|
Loading…
Reference in New Issue