Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(389)

Unified Diff: trunk/src/media/audio/audio_input_device.cc

Issue 335343004: Revert 277794 "Modifies AudioInputCallback::OnData and use media..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: trunk/src/media/audio/audio_input_device.cc
===================================================================
--- trunk/src/media/audio/audio_input_device.cc (revision 277811)
+++ trunk/src/media/audio/audio_input_device.cc (working copy)
@@ -6,7 +6,6 @@
#include "base/basictypes.h"
#include "base/bind.h"
-#include "base/memory/scoped_vector.h"
#include "base/threading/thread_restrictions.h"
#include "base/time/time.h"
#include "media/audio/audio_manager_base.h"
@@ -40,9 +39,8 @@
private:
int current_segment_id_;
- ScopedVector<media::AudioBus> audio_buses_;
CaptureCallback* capture_callback_;
-
+ scoped_ptr<AudioBus> audio_bus_;
DISALLOW_COPY_AND_ASSIGN(AudioThreadCallback);
};
@@ -275,6 +273,7 @@
total_segments),
current_segment_id_(0),
capture_callback_(capture_callback) {
+ audio_bus_ = AudioBus::Create(audio_parameters_);
}
AudioInputDevice::AudioThreadCallback::~AudioThreadCallback() {
@@ -282,17 +281,6 @@
void AudioInputDevice::AudioThreadCallback::MapSharedMemory() {
shared_memory_.Map(memory_length_);
-
- // Create vector of audio buses by wrapping existing blocks of memory.
- uint8* ptr = static_cast<uint8*>(shared_memory_.memory());
- for (int i = 0; i < total_segments_; ++i) {
- media::AudioInputBuffer* buffer =
- reinterpret_cast<media::AudioInputBuffer*>(ptr);
- scoped_ptr<media::AudioBus> audio_bus =
- media::AudioBus::WrapMemory(audio_parameters_, buffer->audio);
- audio_buses_.push_back(audio_bus.release());
- ptr += segment_length_;
- }
}
void AudioInputDevice::AudioThreadCallback::Process(int pending_data) {
@@ -309,17 +297,21 @@
double volume = buffer->params.volume;
bool key_pressed = buffer->params.key_pressed;
- // Use pre-allocated audio bus wrapping existing block of shared memory.
- media::AudioBus* audio_bus = audio_buses_[current_segment_id_];
-
- // Deliver captured data to the client in floating point format
- // and update the audio-delay measurement.
int audio_delay_milliseconds = pending_data / bytes_per_ms_;
- capture_callback_->Capture(
- audio_bus, audio_delay_milliseconds, volume, key_pressed);
+ int16* memory = reinterpret_cast<int16*>(&buffer->audio[0]);
+ const int bytes_per_sample = sizeof(memory[0]);
if (++current_segment_id_ >= total_segments_)
current_segment_id_ = 0;
+
+ // Deinterleave each channel and convert to 32-bit floating-point
+ // with nominal range -1.0 -> +1.0.
+ audio_bus_->FromInterleaved(memory, audio_bus_->frames(), bytes_per_sample);
+
+ // Deliver captured data to the client in floating point format
+ // and update the audio-delay measurement.
+ capture_callback_->Capture(
+ audio_bus_.get(), audio_delay_milliseconds, volume, key_pressed);
}
} // namespace media
« no previous file with comments | « trunk/src/media/audio/audio_input_controller_unittest.cc ('k') | trunk/src/media/audio/audio_input_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698