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

Unified Diff: content/browser/renderer_host/media/audio_input_sync_writer.cc

Issue 1293503002: Check buffer index in shared memory for input audio. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Now the Win compile error should really be fixed. Created 5 years, 4 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: content/browser/renderer_host/media/audio_input_sync_writer.cc
diff --git a/content/browser/renderer_host/media/audio_input_sync_writer.cc b/content/browser/renderer_host/media/audio_input_sync_writer.cc
index 987fd23205485749acca5d804659400ee7f107e3..600881af9a93799011f993ebaae27a766a2414c0 100644
--- a/content/browser/renderer_host/media/audio_input_sync_writer.cc
+++ b/content/browser/renderer_host/media/audio_input_sync_writer.cc
@@ -20,7 +20,8 @@ AudioInputSyncWriter::AudioInputSyncWriter(base::SharedMemory* shared_memory,
shared_memory_segment_count_(shared_memory_segment_count),
current_segment_id_(0),
creation_time_(base::Time::Now()),
- audio_bus_memory_size_(AudioBus::CalculateMemorySize(params)) {
+ audio_bus_memory_size_(AudioBus::CalculateMemorySize(params)),
+ next_buffer_id_(0) {
DCHECK_GT(shared_memory_segment_count, 0);
DCHECK_EQ(shared_memory->requested_size() % shared_memory_segment_count, 0u);
shared_memory_segment_size_ =
@@ -33,6 +34,8 @@ AudioInputSyncWriter::AudioInputSyncWriter(base::SharedMemory* shared_memory,
// Create vector of audio buses by wrapping existing blocks of memory.
uint8* ptr = static_cast<uint8*>(shared_memory_->memory());
for (int i = 0; i < shared_memory_segment_count; ++i) {
+ CHECK((reinterpret_cast<uintptr_t>(ptr) &
+ (media::AudioBus::kChannelAlignment - 1)) == 0U);
media::AudioInputBuffer* buffer =
reinterpret_cast<media::AudioInputBuffer*>(ptr);
scoped_ptr<media::AudioBus> audio_bus =
@@ -44,14 +47,10 @@ AudioInputSyncWriter::AudioInputSyncWriter(base::SharedMemory* shared_memory,
AudioInputSyncWriter::~AudioInputSyncWriter() {}
-// TODO(henrika): Combine into one method (including Write).
-void AudioInputSyncWriter::UpdateRecordedBytes(uint32 bytes) {
- socket_->Send(&bytes, sizeof(bytes));
-}
-
void AudioInputSyncWriter::Write(const media::AudioBus* data,
double volume,
- bool key_pressed) {
+ bool key_pressed,
+ uint32 hardware_delay_bytes) {
#if !defined(OS_ANDROID)
static const base::TimeDelta kLogDelayThreadhold =
base::TimeDelta::FromMilliseconds(500);
@@ -86,12 +85,16 @@ void AudioInputSyncWriter::Write(const media::AudioBus* data,
buffer->params.volume = volume;
buffer->params.size = audio_bus_memory_size_;
buffer->params.key_pressed = key_pressed;
+ buffer->params.hardware_delay_bytes = hardware_delay_bytes;
+ buffer->params.id = next_buffer_id_++;
// Copy data from the native audio layer into shared memory using pre-
// allocated audio buses.
media::AudioBus* audio_bus = audio_buses_[current_segment_id_];
data->CopyTo(audio_bus);
+ socket_->Send(&current_segment_id_, sizeof(current_segment_id_));
+
if (++current_segment_id_ >= shared_memory_segment_count_)
current_segment_id_ = 0;
}

Powered by Google App Engine
This is Rietveld 408576698