History

avformat/au: do not use invalid block_align for small bits per sample

Fixes #5481.

Paul B Mahol committed 7 years ago

Commit 8a8cce01 parent 3e461f91 file · +3 −2Browse files

Unified · Split

libavformat/au.c+3−2
@@ -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

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t