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

Side by Side Diff: media/audio/win/audio_low_latency_input_win.cc

Issue 9655018: Make AudioParameters a class instead of a struct (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix copyright years Created 8 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 "media/audio/win/audio_low_latency_input_win.h" 5 #include "media/audio/win/audio_low_latency_input_win.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "media/audio/audio_util.h" 10 #include "media/audio/audio_util.h"
(...skipping 14 matching lines...) Expand all
25 endpoint_buffer_size_frames_(0), 25 endpoint_buffer_size_frames_(0),
26 device_id_(device_id), 26 device_id_(device_id),
27 sink_(NULL) { 27 sink_(NULL) {
28 DCHECK(manager_); 28 DCHECK(manager_);
29 29
30 // Load the Avrt DLL if not already loaded. Required to support MMCSS. 30 // Load the Avrt DLL if not already loaded. Required to support MMCSS.
31 bool avrt_init = avrt::Initialize(); 31 bool avrt_init = avrt::Initialize();
32 DCHECK(avrt_init) << "Failed to load the Avrt.dll"; 32 DCHECK(avrt_init) << "Failed to load the Avrt.dll";
33 33
34 // Set up the desired capture format specified by the client. 34 // Set up the desired capture format specified by the client.
35 format_.nSamplesPerSec = params.sample_rate; 35 format_.nSamplesPerSec = params.sample_rate();
36 format_.wFormatTag = WAVE_FORMAT_PCM; 36 format_.wFormatTag = WAVE_FORMAT_PCM;
37 format_.wBitsPerSample = params.bits_per_sample; 37 format_.wBitsPerSample = params.bits_per_sample();
38 format_.nChannels = params.channels; 38 format_.nChannels = params.channels();
39 format_.nBlockAlign = (format_.wBitsPerSample / 8) * format_.nChannels; 39 format_.nBlockAlign = (format_.wBitsPerSample / 8) * format_.nChannels;
40 format_.nAvgBytesPerSec = format_.nSamplesPerSec * format_.nBlockAlign; 40 format_.nAvgBytesPerSec = format_.nSamplesPerSec * format_.nBlockAlign;
41 format_.cbSize = 0; 41 format_.cbSize = 0;
42 42
43 // Size in bytes of each audio frame. 43 // Size in bytes of each audio frame.
44 frame_size_ = format_.nBlockAlign; 44 frame_size_ = format_.nBlockAlign;
45 // Store size of audio packets which we expect to get from the audio 45 // Store size of audio packets which we expect to get from the audio
46 // endpoint device in each capture event. 46 // endpoint device in each capture event.
47 packet_size_frames_ = params.GetPacketSize() / format_.nBlockAlign; 47 packet_size_frames_ = params.GetBytesPerBuffer() / format_.nBlockAlign;
48 packet_size_bytes_ = params.GetPacketSize(); 48 packet_size_bytes_ = params.GetBytesPerBuffer();
49 DVLOG(1) << "Number of bytes per audio frame : " << frame_size_; 49 DVLOG(1) << "Number of bytes per audio frame : " << frame_size_;
50 DVLOG(1) << "Number of audio frames per packet: " << packet_size_frames_; 50 DVLOG(1) << "Number of audio frames per packet: " << packet_size_frames_;
51 51
52 // All events are auto-reset events and non-signaled initially. 52 // All events are auto-reset events and non-signaled initially.
53 53
54 // Create the event which the audio engine will signal each time 54 // Create the event which the audio engine will signal each time
55 // a buffer becomes ready to be processed by the client. 55 // a buffer becomes ready to be processed by the client.
56 audio_samples_ready_event_.Set(CreateEvent(NULL, FALSE, FALSE, NULL)); 56 audio_samples_ready_event_.Set(CreateEvent(NULL, FALSE, FALSE, NULL));
57 DCHECK(audio_samples_ready_event_.IsValid()); 57 DCHECK(audio_samples_ready_event_.IsValid());
58 58
59 // Create the event which will be set in Stop() when capturing shall stop. 59 // Create the event which will be set in Stop() when capturing shall stop.
60 stop_capture_event_.Set(CreateEvent(NULL, FALSE, FALSE, NULL)); 60 stop_capture_event_.Set(CreateEvent(NULL, FALSE, FALSE, NULL));
61 DCHECK(stop_capture_event_.IsValid()); 61 DCHECK(stop_capture_event_.IsValid());
62 62
63 ms_to_frame_count_ = static_cast<double>(params.sample_rate) / 1000.0; 63 ms_to_frame_count_ = static_cast<double>(params.sample_rate()) / 1000.0;
64 64
65 LARGE_INTEGER performance_frequency; 65 LARGE_INTEGER performance_frequency;
66 if (QueryPerformanceFrequency(&performance_frequency)) { 66 if (QueryPerformanceFrequency(&performance_frequency)) {
67 perf_count_to_100ns_units_ = 67 perf_count_to_100ns_units_ =
68 (10000000.0 / static_cast<double>(performance_frequency.QuadPart)); 68 (10000000.0 / static_cast<double>(performance_frequency.QuadPart));
69 } else { 69 } else {
70 LOG(ERROR) << "High-resolution performance counters are not supported."; 70 LOG(ERROR) << "High-resolution performance counters are not supported.";
71 perf_count_to_100ns_units_ = 0.0; 71 perf_count_to_100ns_units_ = 0.0;
72 } 72 }
73 } 73 }
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 214
215 // Retrieve the current volume level. The value is in the range 0.0 to 1.0. 215 // Retrieve the current volume level. The value is in the range 0.0 to 1.0.
216 float level = 0.0f; 216 float level = 0.0f;
217 HRESULT hr = simple_audio_volume_->GetMasterVolume(&level); 217 HRESULT hr = simple_audio_volume_->GetMasterVolume(&level);
218 DLOG_IF(WARNING, FAILED(hr)) << "Failed to get input master volume."; 218 DLOG_IF(WARNING, FAILED(hr)) << "Failed to get input master volume.";
219 219
220 return static_cast<double>(level); 220 return static_cast<double>(level);
221 } 221 }
222 222
223 // static 223 // static
224 double WASAPIAudioInputStream::HardwareSampleRate( 224 int WASAPIAudioInputStream::HardwareSampleRate(
225 const std::string& device_id) { 225 const std::string& device_id) {
226 base::win::ScopedCoMem<WAVEFORMATEX> audio_engine_mix_format; 226 base::win::ScopedCoMem<WAVEFORMATEX> audio_engine_mix_format;
227 HRESULT hr = GetMixFormat(device_id, &audio_engine_mix_format); 227 HRESULT hr = GetMixFormat(device_id, &audio_engine_mix_format);
228 if (FAILED(hr)) 228 if (FAILED(hr))
229 return 0.0; 229 return 0;
230 230
231 return static_cast<double>(audio_engine_mix_format->nSamplesPerSec); 231 return static_cast<int>(audio_engine_mix_format->nSamplesPerSec);
232 } 232 }
233 233
234 // static 234 // static
235 uint32 WASAPIAudioInputStream::HardwareChannelCount( 235 uint32 WASAPIAudioInputStream::HardwareChannelCount(
236 const std::string& device_id) { 236 const std::string& device_id) {
237 base::win::ScopedCoMem<WAVEFORMATEX> audio_engine_mix_format; 237 base::win::ScopedCoMem<WAVEFORMATEX> audio_engine_mix_format;
238 HRESULT hr = GetMixFormat(device_id, &audio_engine_mix_format); 238 HRESULT hr = GetMixFormat(device_id, &audio_engine_mix_format);
239 if (FAILED(hr)) 239 if (FAILED(hr))
240 return 0; 240 return 0;
241 241
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 audio_capture_client_.ReceiveVoid()); 618 audio_capture_client_.ReceiveVoid());
619 if (FAILED(hr)) 619 if (FAILED(hr))
620 return hr; 620 return hr;
621 621
622 // Obtain a reference to the ISimpleAudioVolume interface which enables 622 // Obtain a reference to the ISimpleAudioVolume interface which enables
623 // us to control the master volume level of an audio session. 623 // us to control the master volume level of an audio session.
624 hr = audio_client_->GetService(__uuidof(ISimpleAudioVolume), 624 hr = audio_client_->GetService(__uuidof(ISimpleAudioVolume),
625 simple_audio_volume_.ReceiveVoid()); 625 simple_audio_volume_.ReceiveVoid());
626 return hr; 626 return hr;
627 } 627 }
OLDNEW
« no previous file with comments | « media/audio/win/audio_low_latency_input_win.h ('k') | media/audio/win/audio_low_latency_output_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698