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

Side by Side Diff: content/browser/renderer_host/media/audio_input_sync_writer.cc

Issue 12379071: Use multiple shared memory buffers cyclically for audio capture. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: code review Created 7 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/media/audio_input_sync_writer.h" 5 #include "content/browser/renderer_host/media/audio_input_sync_writer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/process_util.h" 9 #include "base/process_util.h"
10 #include "base/shared_memory.h" 10 #include "base/shared_memory.h"
11 11
12 namespace content { 12 namespace content {
13 13
14 AudioInputSyncWriter::AudioInputSyncWriter(base::SharedMemory* shared_memory) 14 AudioInputSyncWriter::AudioInputSyncWriter(
15 : shared_memory_(shared_memory) { 15 base::SharedMemory* shared_memory,
16 int shared_memory_segment_count)
17 : shared_memory_(shared_memory),
18 shared_memory_segment_count_(shared_memory_segment_count),
19 current_segment_id_(0) {
20 DCHECK_GT(shared_memory_segment_count, 0);
21 DCHECK_EQ(shared_memory->created_size() % shared_memory_segment_count, 0u);
22 shared_memory_segment_size_ =
23 shared_memory->created_size() / shared_memory_segment_count;
16 } 24 }
17 25
18 AudioInputSyncWriter::~AudioInputSyncWriter() {} 26 AudioInputSyncWriter::~AudioInputSyncWriter() {}
19 27
20 // TODO(henrika): Combine into one method (including Write). 28 // TODO(henrika): Combine into one method (including Write).
21 void AudioInputSyncWriter::UpdateRecordedBytes(uint32 bytes) { 29 void AudioInputSyncWriter::UpdateRecordedBytes(uint32 bytes) {
22 socket_->Send(&bytes, sizeof(bytes)); 30 socket_->Send(&bytes, sizeof(bytes));
23 } 31 }
24 32
25 uint32 AudioInputSyncWriter::Write(const void* data, uint32 size, 33 uint32 AudioInputSyncWriter::Write(
26 double volume) { 34 const void* data, uint32 size, double volume) {
35 uint8* ptr = static_cast<uint8*>(shared_memory_->memory());
36 ptr += current_segment_id_ * shared_memory_segment_size_;
27 media::AudioInputBuffer* buffer = 37 media::AudioInputBuffer* buffer =
28 reinterpret_cast<media::AudioInputBuffer*>(shared_memory_->memory()); 38 reinterpret_cast<media::AudioInputBuffer*>(ptr);
29 buffer->params.volume = volume; 39 buffer->params.volume = volume;
30 buffer->params.size = size; 40 buffer->params.size = size;
31 memcpy(buffer->audio, data, size); 41 memcpy(buffer->audio, data, size);
32 42
43 if (++current_segment_id_ >= shared_memory_segment_count_)
44 current_segment_id_ = 0;
45
33 return size; 46 return size;
34 } 47 }
35 48
36 void AudioInputSyncWriter::Close() { 49 void AudioInputSyncWriter::Close() {
37 socket_->Close(); 50 socket_->Close();
38 } 51 }
39 52
40 bool AudioInputSyncWriter::Init() { 53 bool AudioInputSyncWriter::Init() {
41 socket_.reset(new base::CancelableSyncSocket()); 54 socket_.reset(new base::CancelableSyncSocket());
42 foreign_socket_.reset(new base::CancelableSyncSocket()); 55 foreign_socket_.reset(new base::CancelableSyncSocket());
(...skipping 18 matching lines...) Expand all
61 base::ProcessHandle process_handle, 74 base::ProcessHandle process_handle,
62 base::FileDescriptor* foreign_handle) { 75 base::FileDescriptor* foreign_handle) {
63 foreign_handle->fd = foreign_socket_->handle(); 76 foreign_handle->fd = foreign_socket_->handle();
64 foreign_handle->auto_close = false; 77 foreign_handle->auto_close = false;
65 return (foreign_handle->fd != -1); 78 return (foreign_handle->fd != -1);
66 } 79 }
67 80
68 #endif 81 #endif
69 82
70 } // namespace content 83 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/media/audio_input_sync_writer.h ('k') | content/common/media/audio_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698