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