Fixes #5481.
Unified · Split
| @@ -140,7 +140,7 @@ static int au_read_header(AVFormatContext *s) · 139 unmodified lines | ||
| 140 | 140 | unsigned int tag; |
| 141 | 141 | AVIOContext *pb = s->pb; |
| 142 | 142 | unsigned int id, channels, rate; |
| 143 | − int bps; | |
| 143 | + int bps, ba = 0; | |
| 144 | 144 | enum AVCodecID codec; |
| 145 | 145 | AVStream *st; |
| 146 | 146 | |
| @@ -178,6 +178,7 @@ static int au_read_header(AVFormatContext *s) · 31 unmodified lines | ||
| 178 | 178 | } else { |
| 179 | 179 | const uint8_t bpcss[] = {4, 0, 3, 5}; |
| 180 | 180 | av_assert0(id >= 23 && id < 23 + 4); |
| 181 | + ba = bpcss[id - 23]; | |
| 181 | 182 | bps = bpcss[id - 23]; |
| 182 | 183 | } |
| 183 | 184 | } else if (!bps) { |
| @@ -205,7 +206,7 @@ static int au_read_header(AVFormatContext *s) · 21 unmodified lines | ||
| 205 | 206 | st->codecpar->sample_rate = rate; |
| 206 | 207 | st->codecpar->bits_per_coded_sample = bps; |
| 207 | 208 | st->codecpar->bit_rate = channels * rate * bps; |
| 208 | − st->codecpar->block_align = FFMAX(bps * st->codecpar->channels / 8, 1); | |
| 209 | + st->codecpar->block_align = ba ? ba : FFMAX(bps * st->codecpar->channels / 8, 1); | |
| 209 | 210 | if (data_size != AU_UNKNOWN_SIZE) |
| 210 | 211 | st->duration = (((int64_t)data_size)<<3) / (st->codecpar->channels * (int64_t)bps); |
| 211 | 212 | |