Commit b15925d8 authored by Dale Curtis's avatar Dale Curtis Committed by Commit Bot

[ffmpeg_audio_decoder] Bail out on unknown sample format.

Crashes suggest that we're sometimes passing out an AudioBuffer which
has an unknown sample format. This shouldn't be allowed.

BUG=1032338
TEST=none, can't reproduce.
R=tguilbert

Change-Id: I2562e8c60a9666e91a2003c5272d600474720ae9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1988891
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Thomas Guilbert <tguilbert@chromium.org>
Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: default avatarThomas Guilbert <tguilbert@chromium.org>
Cr-Commit-Position: refs/heads/master@{#728766}
parent a510b801
......@@ -82,6 +82,8 @@ AudioBuffer::AudioBuffer(SampleFormat sample_format,
if (!create_buffer)
return;
CHECK_NE(sample_format, kUnknownSampleFormat);
int data_size_per_channel = frame_count * bytes_per_channel;
if (IsPlanar(sample_format)) {
DCHECK(!IsBitstreamFormat()) << sample_format_;
......
......@@ -369,6 +369,11 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
AVSampleFormat format = static_cast<AVSampleFormat>(frame->format);
SampleFormat sample_format =
AVSampleFormatToSampleFormat(format, s->codec_id);
if (sample_format == kUnknownSampleFormat) {
DLOG(ERROR) << "Unknown sample format: " << format;
return AVERROR(EINVAL);
}
int channels = DetermineChannels(frame);
if (channels <= 0 || channels >= limits::kMaxChannels) {
DLOG(ERROR) << "Requested number of channels (" << channels
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment