| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/renderer/media/speech_recognition_audio_sink.h" | 5 #include "content/renderer/media/speech_recognition_audio_sink.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "content/renderer/media/media_stream_audio_source.h" | 9 #include "content/renderer/media/media_stream_audio_source.h" |
| 10 #include "content/renderer/media/mock_media_constraint_factory.h" | 10 #include "content/renderer/media/mock_media_constraint_factory.h" |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 shared_memory_.reset(new base::SharedMemory()); | 122 shared_memory_.reset(new base::SharedMemory()); |
| 123 ASSERT_TRUE(shared_memory_->CreateAndMapAnonymous(kSharedMemorySize)); | 123 ASSERT_TRUE(shared_memory_->CreateAndMapAnonymous(kSharedMemorySize)); |
| 124 memset(shared_memory_->memory(), 0, kSharedMemorySize); | 124 memset(shared_memory_->memory(), 0, kSharedMemorySize); |
| 125 ASSERT_TRUE(shared_memory_->ShareToProcess(base::GetCurrentProcessHandle(), | 125 ASSERT_TRUE(shared_memory_->ShareToProcess(base::GetCurrentProcessHandle(), |
| 126 foreign_memory_handle)); | 126 foreign_memory_handle)); |
| 127 | 127 |
| 128 // Wrap the shared memory for the audio bus. | 128 // Wrap the shared memory for the audio bus. |
| 129 media::AudioInputBuffer* buffer = | 129 media::AudioInputBuffer* buffer = |
| 130 static_cast<media::AudioInputBuffer*>(shared_memory_->memory()); | 130 static_cast<media::AudioInputBuffer*>(shared_memory_->memory()); |
| 131 audio_track_bus_ = media::AudioBus::WrapMemory(sink_params, buffer->audio); | 131 audio_track_bus_ = media::AudioBus::WrapMemory(sink_params, buffer->audio); |
| 132 audio_track_bus_->Zero(); |
| 132 | 133 |
| 133 // Reference to the counter used to synchronize. | 134 // Reference to the counter used to synchronize. |
| 134 buffer_index_ = &(buffer->params.size); | 135 buffer_index_ = &(buffer->params.size); |
| 135 *buffer_index_ = 0U; | 136 *buffer_index_ = 0U; |
| 136 | 137 |
| 137 // Create a shared buffer for the |MockSyncSocket|s. | 138 // Create a shared buffer for the |MockSyncSocket|s. |
| 138 shared_buffer_.reset(new MockSyncSocket::SharedBuffer()); | 139 shared_buffer_.reset(new MockSyncSocket::SharedBuffer()); |
| 139 | 140 |
| 140 // Local socket will receive signals from the producer. | 141 // Local socket will receive signals from the producer. |
| 141 local_socket_.reset(new MockSyncSocket(shared_buffer_.get())); | 142 local_socket_.reset(new MockSyncSocket(shared_buffer_.get())); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 kInputChannels, | 215 kInputChannels, |
| 215 input_sample_rate, | 216 input_sample_rate, |
| 216 kInputBitsPerSample, | 217 kInputBitsPerSample, |
| 217 input_frames_per_buffer); | 218 input_frames_per_buffer); |
| 218 sink_params_.Reset(kOutputFormat, | 219 sink_params_.Reset(kOutputFormat, |
| 219 kOutputChannelLayout, | 220 kOutputChannelLayout, |
| 220 kOutputChannels, | 221 kOutputChannels, |
| 221 output_sample_rate, | 222 output_sample_rate, |
| 222 kOutputBitsPerSample, | 223 kOutputBitsPerSample, |
| 223 output_frames_per_buffer); | 224 output_frames_per_buffer); |
| 224 source_data_.reset(new int16[input_frames_per_buffer * kInputChannels]); | 225 source_data_.reset(new int16[input_frames_per_buffer * kInputChannels]{}); |
| 225 | 226 |
| 226 // Prepare the track and audio source. | 227 // Prepare the track and audio source. |
| 227 blink::WebMediaStreamTrack blink_track; | 228 blink::WebMediaStreamTrack blink_track; |
| 228 PrepareBlinkTrackOfType(MEDIA_DEVICE_AUDIO_CAPTURE, &blink_track); | 229 PrepareBlinkTrackOfType(MEDIA_DEVICE_AUDIO_CAPTURE, &blink_track); |
| 229 | 230 |
| 230 // Get the native track from the blink track and initialize. | 231 // Get the native track from the blink track and initialize. |
| 231 native_track_ = | 232 native_track_ = |
| 232 static_cast<WebRtcLocalAudioTrack*>(blink_track.extraData()); | 233 static_cast<WebRtcLocalAudioTrack*>(blink_track.extraData()); |
| 233 native_track_->OnSetFormat(source_params_); | 234 native_track_->OnSetFormat(source_params_); |
| 234 | 235 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 } | 312 } |
| 312 | 313 |
| 313 // Helper method to capture and assert consumption at different sample rates | 314 // Helper method to capture and assert consumption at different sample rates |
| 314 // and audio buffer sizes. | 315 // and audio buffer sizes. |
| 315 inline void AssertConsumptionForAudioParameters( | 316 inline void AssertConsumptionForAudioParameters( |
| 316 const int input_sample_rate, | 317 const int input_sample_rate, |
| 317 const int input_frames_per_buffer, | 318 const int input_frames_per_buffer, |
| 318 const int output_sample_rate, | 319 const int output_sample_rate, |
| 319 const int output_frames_per_buffer, | 320 const int output_frames_per_buffer, |
| 320 const uint32 consumptions) { | 321 const uint32 consumptions) { |
| 321 const uint32 kBuffersPerNotification = | 322 const uint32 kBuffersPerNotification = Initialize(input_sample_rate, |
| 322 Initialize(input_sample_rate, input_frames_per_buffer, | 323 input_frames_per_buffer, |
| 323 output_sample_rate, output_frames_per_buffer); | 324 output_sample_rate, |
| 325 output_frames_per_buffer); |
| 324 AssertConsumedBuffers(0U); | 326 AssertConsumedBuffers(0U); |
| 325 | 327 |
| 326 for (uint32 i = 1U; i <= consumptions; ++i) { | 328 for (uint32 i = 1U; i <= consumptions; ++i) { |
| 327 CaptureAudio(kBuffersPerNotification); | 329 CaptureAudio(kBuffersPerNotification); |
| 328 ASSERT_EQ(i, recognizer_->buffer_index()) | 330 ASSERT_EQ(i, recognizer_->buffer_index()) |
| 329 << "Tested at rates: " | 331 << "Tested at rates: " |
| 330 << "In(" << input_sample_rate << ", " << input_frames_per_buffer | 332 << "In(" << input_sample_rate << ", " << input_frames_per_buffer |
| 331 << ") " | 333 << ") " |
| 332 << "Out(" << output_sample_rate << ", " << output_frames_per_buffer | 334 << "Out(" << output_sample_rate << ", " << output_frames_per_buffer |
| 333 << ")"; | 335 << ")"; |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 477 const uint32 kBuffersPerNotification = Initialize(44100, 441, 16000, 1600); | 479 const uint32 kBuffersPerNotification = Initialize(44100, 441, 16000, 1600); |
| 478 AssertConsumedBuffers(0U); | 480 AssertConsumedBuffers(0U); |
| 479 CaptureAudioAndAssertConsumedBuffers(kBuffersPerNotification, 1U); | 481 CaptureAudioAndAssertConsumedBuffers(kBuffersPerNotification, 1U); |
| 480 EXPECT_CALL(*this, StoppedCallback()).Times(1); | 482 EXPECT_CALL(*this, StoppedCallback()).Times(1); |
| 481 | 483 |
| 482 native_track()->Stop(); | 484 native_track()->Stop(); |
| 483 CaptureAudioAndAssertConsumedBuffers(kBuffersPerNotification, 1U); | 485 CaptureAudioAndAssertConsumedBuffers(kBuffersPerNotification, 1U); |
| 484 } | 486 } |
| 485 | 487 |
| 486 } // namespace content | 488 } // namespace content |
| OLD | NEW |