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

Side by Side Diff: trunk/src/media/audio/fake_audio_input_stream.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 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 "media/audio/fake_audio_input_stream.h" 5 #include "media/audio/fake_audio_input_stream.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/lazy_instance.h" 8 #include "base/lazy_instance.h"
9 #include "media/audio/audio_manager_base.h" 9 #include "media/audio/audio_manager_base.h"
10 #include "media/base/audio_bus.h"
11 10
12 using base::TimeTicks; 11 using base::TimeTicks;
13 using base::TimeDelta; 12 using base::TimeDelta;
14 13
15 namespace media { 14 namespace media {
16 15
17 namespace { 16 namespace {
18 17
19 // These values are based on experiments for local-to-local 18 // These values are based on experiments for local-to-local
20 // PeerConnection to demonstrate audio/video synchronization. 19 // PeerConnection to demonstrate audio/video synchronization.
(...skipping 21 matching lines...) Expand all
42 AudioManagerBase* manager, 41 AudioManagerBase* manager,
43 const AudioParameters& params) { 42 const AudioParameters& params) {
44 return new FakeAudioInputStream(manager, params); 43 return new FakeAudioInputStream(manager, params);
45 } 44 }
46 45
47 FakeAudioInputStream::FakeAudioInputStream(AudioManagerBase* manager, 46 FakeAudioInputStream::FakeAudioInputStream(AudioManagerBase* manager,
48 const AudioParameters& params) 47 const AudioParameters& params)
49 : audio_manager_(manager), 48 : audio_manager_(manager),
50 callback_(NULL), 49 callback_(NULL),
51 buffer_size_((params.channels() * params.bits_per_sample() * 50 buffer_size_((params.channels() * params.bits_per_sample() *
52 params.frames_per_buffer()) / 51 params.frames_per_buffer()) / 8),
53 8),
54 params_(params), 52 params_(params),
55 thread_("FakeAudioRecordingThread"), 53 thread_("FakeAudioRecordingThread"),
56 callback_interval_(base::TimeDelta::FromMilliseconds( 54 callback_interval_(base::TimeDelta::FromMilliseconds(
57 (params.frames_per_buffer() * 1000) / params.sample_rate())), 55 (params.frames_per_buffer() * 1000) / params.sample_rate())),
58 beep_duration_in_buffers_(kBeepDurationMilliseconds * 56 beep_duration_in_buffers_(
59 params.sample_rate() / 57 kBeepDurationMilliseconds * params.sample_rate() /
60 params.frames_per_buffer() / 58 params.frames_per_buffer() / 1000),
61 1000),
62 beep_generated_in_buffers_(0), 59 beep_generated_in_buffers_(0),
63 beep_period_in_frames_(params.sample_rate() / kBeepFrequency), 60 beep_period_in_frames_(params.sample_rate() / kBeepFrequency),
64 frames_elapsed_(0), 61 frames_elapsed_(0) {
65 audio_bus_(AudioBus::Create(params)) {
66 } 62 }
67 63
68 FakeAudioInputStream::~FakeAudioInputStream() {} 64 FakeAudioInputStream::~FakeAudioInputStream() {}
69 65
70 bool FakeAudioInputStream::Open() { 66 bool FakeAudioInputStream::Open() {
71 buffer_.reset(new uint8[buffer_size_]); 67 buffer_.reset(new uint8[buffer_size_]);
72 memset(buffer_.get(), 0, buffer_size_); 68 memset(buffer_.get(), 0, buffer_size_);
73 audio_bus_->Zero();
74 return true; 69 return true;
75 } 70 }
76 71
77 void FakeAudioInputStream::Start(AudioInputCallback* callback) { 72 void FakeAudioInputStream::Start(AudioInputCallback* callback) {
78 DCHECK(!thread_.IsRunning()); 73 DCHECK(!thread_.IsRunning());
79 DCHECK(!callback_); 74 DCHECK(!callback_);
80 callback_ = callback; 75 callback_ = callback;
81 last_callback_time_ = TimeTicks::Now(); 76 last_callback_time_ = TimeTicks::Now();
82 thread_.Start(); 77 thread_.Start();
83 thread_.message_loop()->PostDelayedTask( 78 thread_.message_loop()->PostDelayedTask(
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 memset(buffer_.get() + position, 128, high_bytes); 134 memset(buffer_.get() + position, 128, high_bytes);
140 // Then leave low values in the buffer with |high_bytes|. 135 // Then leave low values in the buffer with |high_bytes|.
141 position += high_bytes * 2; 136 position += high_bytes * 2;
142 } 137 }
143 138
144 ++beep_generated_in_buffers_; 139 ++beep_generated_in_buffers_;
145 if (beep_generated_in_buffers_ >= beep_duration_in_buffers_) 140 if (beep_generated_in_buffers_ >= beep_duration_in_buffers_)
146 beep_generated_in_buffers_ = 0; 141 beep_generated_in_buffers_ = 0;
147 } 142 }
148 143
149 audio_bus_->FromInterleaved( 144 callback_->OnData(this, buffer_.get(), buffer_size_, buffer_size_, 1.0);
150 buffer_.get(), audio_bus_->frames(), params_.bits_per_sample() / 8);
151 callback_->OnData(this, audio_bus_.get(), buffer_size_, 1.0);
152 frames_elapsed_ += params_.frames_per_buffer(); 145 frames_elapsed_ += params_.frames_per_buffer();
153 146
154 thread_.message_loop()->PostDelayedTask( 147 thread_.message_loop()->PostDelayedTask(
155 FROM_HERE, 148 FROM_HERE,
156 base::Bind(&FakeAudioInputStream::DoCallback, base::Unretained(this)), 149 base::Bind(&FakeAudioInputStream::DoCallback, base::Unretained(this)),
157 next_callback_time); 150 next_callback_time);
158 } 151 }
159 152
160 void FakeAudioInputStream::Stop() { 153 void FakeAudioInputStream::Stop() {
161 thread_.Stop(); 154 thread_.Stop();
(...skipping 23 matching lines...) Expand all
185 178
186 // static 179 // static
187 void FakeAudioInputStream::BeepOnce() { 180 void FakeAudioInputStream::BeepOnce() {
188 BeepContext* beep_context = g_beep_context.Pointer(); 181 BeepContext* beep_context = g_beep_context.Pointer();
189 base::AutoLock auto_lock(beep_context->beep_lock); 182 base::AutoLock auto_lock(beep_context->beep_lock);
190 beep_context->beep_once = true; 183 beep_context->beep_once = true;
191 beep_context->automatic = false; 184 beep_context->automatic = false;
192 } 185 }
193 186
194 } // namespace media 187 } // namespace media
OLDNEW
« no previous file with comments | « trunk/src/media/audio/fake_audio_input_stream.h ('k') | trunk/src/media/audio/mac/audio_input_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698