summaryrefslogtreecommitdiff
path: root/chromium/media/filters/audio_file_reader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/filters/audio_file_reader.cc')
-rw-r--r--chromium/media/filters/audio_file_reader.cc22
1 files changed, 19 insertions, 3 deletions
diff --git a/chromium/media/filters/audio_file_reader.cc b/chromium/media/filters/audio_file_reader.cc
index cb81d920def..df95bac9730 100644
--- a/chromium/media/filters/audio_file_reader.cc
+++ b/chromium/media/filters/audio_file_reader.cc
@@ -276,9 +276,25 @@ bool AudioFileReader::OnNewFrame(
sizeof(float) * frames_read);
}
} else {
- audio_bus->FromInterleaved(
- frame->data[0], frames_read,
- av_get_bytes_per_sample(codec_context_->sample_fmt));
+ int bytes_per_sample = av_get_bytes_per_sample(codec_context_->sample_fmt);
+ switch (bytes_per_sample) {
+ case 1:
+ audio_bus->FromInterleaved<UnsignedInt8SampleTypeTraits>(
+ reinterpret_cast<const uint8_t*>(frame->data[0]), frames_read);
+ break;
+ case 2:
+ audio_bus->FromInterleaved<SignedInt16SampleTypeTraits>(
+ reinterpret_cast<const int16_t*>(frame->data[0]), frames_read);
+ break;
+ case 4:
+ audio_bus->FromInterleaved<SignedInt32SampleTypeTraits>(
+ reinterpret_cast<const int32_t*>(frame->data[0]), frames_read);
+ break;
+ default:
+ NOTREACHED() << "Unsupported bytes per sample encountered: "
+ << bytes_per_sample;
+ audio_bus->ZeroFrames(frames_read);
+ }
}
(*total_frames) += frames_read;