summaryrefslogtreecommitdiff
path: root/chromium/media/base/audio_bus.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/base/audio_bus.cc')
-rw-r--r--chromium/media/base/audio_bus.cc29
1 files changed, 16 insertions, 13 deletions
diff --git a/chromium/media/base/audio_bus.cc b/chromium/media/base/audio_bus.cc
index 76ee5c24218..3115558f367 100644
--- a/chromium/media/base/audio_bus.cc
+++ b/chromium/media/base/audio_bus.cc
@@ -64,8 +64,7 @@ void AudioBus::CheckOverflow(int start_frame, int frames, int total_frames) {
}
AudioBus::AudioBus(int channels, int frames)
- : frames_(frames),
- can_set_channel_data_(false) {
+ : frames_(frames), is_wrapper_(false) {
ValidateConfig(channels, frames_);
int aligned_frames = 0;
@@ -78,8 +77,7 @@ AudioBus::AudioBus(int channels, int frames)
}
AudioBus::AudioBus(int channels, int frames, float* data)
- : frames_(frames),
- can_set_channel_data_(false) {
+ : frames_(frames), is_wrapper_(false) {
// Since |data| may have come from an external source, ensure it's valid.
CHECK(data);
ValidateConfig(channels, frames_);
@@ -91,9 +89,7 @@ AudioBus::AudioBus(int channels, int frames, float* data)
}
AudioBus::AudioBus(int frames, const std::vector<float*>& channel_data)
- : channel_data_(channel_data),
- frames_(frames),
- can_set_channel_data_(false) {
+ : channel_data_(channel_data), frames_(frames), is_wrapper_(false) {
ValidateConfig(
base::checked_cast<int>(channel_data_.size()), frames_);
@@ -103,15 +99,16 @@ AudioBus::AudioBus(int frames, const std::vector<float*>& channel_data)
}
AudioBus::AudioBus(int channels)
- : channel_data_(channels),
- frames_(0),
- can_set_channel_data_(true) {
+ : channel_data_(channels), frames_(0), is_wrapper_(true) {
CHECK_GT(channels, 0);
for (size_t i = 0; i < channel_data_.size(); ++i)
channel_data_[i] = NULL;
}
-AudioBus::~AudioBus() = default;
+AudioBus::~AudioBus() {
+ if (wrapped_data_deleter_cb_)
+ std::move(wrapped_data_deleter_cb_).Run();
+}
std::unique_ptr<AudioBus> AudioBus::Create(int channels, int frames) {
return base::WrapUnique(new AudioBus(channels, frames));
@@ -171,7 +168,7 @@ std::unique_ptr<const AudioBus> AudioBus::WrapReadOnlyMemory(
}
void AudioBus::SetChannelData(int channel, float* data) {
- CHECK(can_set_channel_data_);
+ CHECK(is_wrapper_);
CHECK(data);
CHECK_GE(channel, 0);
CHECK_LT(static_cast<size_t>(channel), channel_data_.size());
@@ -180,11 +177,17 @@ void AudioBus::SetChannelData(int channel, float* data) {
}
void AudioBus::set_frames(int frames) {
- CHECK(can_set_channel_data_);
+ CHECK(is_wrapper_);
ValidateConfig(static_cast<int>(channel_data_.size()), frames);
frames_ = frames;
}
+void AudioBus::SetWrappedDataDeleter(base::OnceClosure deleter) {
+ CHECK(is_wrapper_);
+ DCHECK(!wrapped_data_deleter_cb_);
+ wrapped_data_deleter_cb_ = std::move(deleter);
+}
+
size_t AudioBus::GetBitstreamDataSize() const {
DCHECK(is_bitstream_format_);
return bitstream_data_size_;