| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/audio_io.h" | 5 #include "media/audio/audio_io.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 #include <objbase.h> // This has to be before initguid.h | 8 #include <objbase.h> // This has to be before initguid.h |
| 9 #include <initguid.h> | 9 #include <initguid.h> |
| 10 #include <mmsystem.h> | 10 #include <mmsystem.h> |
| 11 #include <setupapi.h> | 11 #include <setupapi.h> |
| (...skipping 18 matching lines...) Expand all Loading... |
| 30 #pragma comment(lib, "setupapi.lib") | 30 #pragma comment(lib, "setupapi.lib") |
| 31 | 31 |
| 32 // The following are defined in various DDK headers, and we (re)define them | 32 // The following are defined in various DDK headers, and we (re)define them |
| 33 // here to avoid adding the DDK as a chrome dependency. | 33 // here to avoid adding the DDK as a chrome dependency. |
| 34 #define DRV_QUERYDEVICEINTERFACE 0x80c | 34 #define DRV_QUERYDEVICEINTERFACE 0x80c |
| 35 #define DRVM_MAPPER_PREFERRED_GET 0x2015 | 35 #define DRVM_MAPPER_PREFERRED_GET 0x2015 |
| 36 #define DRV_QUERYDEVICEINTERFACESIZE 0x80d | 36 #define DRV_QUERYDEVICEINTERFACESIZE 0x80d |
| 37 DEFINE_GUID(AM_KSCATEGORY_AUDIO, 0x6994ad04, 0x93ef, 0x11d0, | 37 DEFINE_GUID(AM_KSCATEGORY_AUDIO, 0x6994ad04, 0x93ef, 0x11d0, |
| 38 0xa3, 0xcc, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96); | 38 0xa3, 0xcc, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96); |
| 39 | 39 |
| 40 namespace { | |
| 41 | |
| 42 // Maximum number of output streams that can be open simultaneously. | 40 // Maximum number of output streams that can be open simultaneously. |
| 43 const size_t kMaxOutputStreams = 50; | 41 static const size_t kMaxOutputStreams = 50; |
| 44 | 42 |
| 45 // Up to 8 channels can be passed to the driver. | 43 // Up to 8 channels can be passed to the driver. |
| 46 // This should work, given the right drivers, but graceful error handling is | 44 // This should work, given the right drivers, but graceful error handling is |
| 47 // needed. | 45 // needed. |
| 48 const int kWinMaxChannels = 8; | 46 static const int kWinMaxChannels = 8; |
| 49 | 47 |
| 50 const int kWinMaxInputChannels = 2; | 48 static const int kWinMaxInputChannels = 2; |
| 51 // We use 3 buffers for recording audio so that if a recording callback takes | 49 // We use 3 buffers for recording audio so that if a recording callback takes |
| 52 // some time to return we won't lose audio. More buffers while recording are | 50 // some time to return we won't lose audio. More buffers while recording are |
| 53 // ok because they don't introduce any delay in recording, unlike in playback | 51 // ok because they don't introduce any delay in recording, unlike in playback |
| 54 // where you first need to fill in that number of buffers before starting to | 52 // where you first need to fill in that number of buffers before starting to |
| 55 // play. | 53 // play. |
| 56 const int kNumInputBuffers = 3; | 54 static const int kNumInputBuffers = 3; |
| 57 | 55 |
| 58 int GetVersionPartAsInt(DWORDLONG num) { | 56 static int GetVersionPartAsInt(DWORDLONG num) { |
| 59 return static_cast<int>(num & 0xffff); | 57 return static_cast<int>(num & 0xffff); |
| 60 } | 58 } |
| 61 | 59 |
| 62 // Returns a string containing the given device's description and installed | 60 // Returns a string containing the given device's description and installed |
| 63 // driver version. | 61 // driver version. |
| 64 string16 GetDeviceAndDriverInfo(HDEVINFO device_info, | 62 static string16 GetDeviceAndDriverInfo(HDEVINFO device_info, |
| 65 SP_DEVINFO_DATA* device_data) { | 63 SP_DEVINFO_DATA* device_data) { |
| 66 // Save the old install params setting and set a flag for the | 64 // Save the old install params setting and set a flag for the |
| 67 // SetupDiBuildDriverInfoList below to return only the installed drivers. | 65 // SetupDiBuildDriverInfoList below to return only the installed drivers. |
| 68 SP_DEVINSTALL_PARAMS old_device_install_params; | 66 SP_DEVINSTALL_PARAMS old_device_install_params; |
| 69 old_device_install_params.cbSize = sizeof(old_device_install_params); | 67 old_device_install_params.cbSize = sizeof(old_device_install_params); |
| 70 SetupDiGetDeviceInstallParams(device_info, device_data, | 68 SetupDiGetDeviceInstallParams(device_info, device_data, |
| 71 &old_device_install_params); | 69 &old_device_install_params); |
| 72 SP_DEVINSTALL_PARAMS device_install_params = old_device_install_params; | 70 SP_DEVINSTALL_PARAMS device_install_params = old_device_install_params; |
| 73 device_install_params.FlagsEx |= DI_FLAGSEX_INSTALLEDDRIVER; | 71 device_install_params.FlagsEx |= DI_FLAGSEX_INSTALLEDDRIVER; |
| 74 SetupDiSetDeviceInstallParams(device_info, device_data, | 72 SetupDiSetDeviceInstallParams(device_info, device_data, |
| 75 &device_install_params); | 73 &device_install_params); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 90 } | 88 } |
| 91 SetupDiDestroyDriverInfoList(device_info, device_data, SPDIT_COMPATDRIVER); | 89 SetupDiDestroyDriverInfoList(device_info, device_data, SPDIT_COMPATDRIVER); |
| 92 } | 90 } |
| 93 | 91 |
| 94 SetupDiSetDeviceInstallParams(device_info, device_data, | 92 SetupDiSetDeviceInstallParams(device_info, device_data, |
| 95 &old_device_install_params); | 93 &old_device_install_params); |
| 96 | 94 |
| 97 return device_and_driver_info; | 95 return device_and_driver_info; |
| 98 } | 96 } |
| 99 | 97 |
| 100 } // namespace | |
| 101 | |
| 102 AudioManagerWin::AudioManagerWin() | 98 AudioManagerWin::AudioManagerWin() |
| 103 : num_output_streams_(0) { | 99 : num_output_streams_(0) { |
| 104 } | 100 } |
| 105 | 101 |
| 106 AudioManagerWin::~AudioManagerWin() { | 102 AudioManagerWin::~AudioManagerWin() { |
| 107 } | 103 } |
| 108 | 104 |
| 109 bool AudioManagerWin::HasAudioOutputDevices() { | 105 bool AudioManagerWin::HasAudioOutputDevices() { |
| 110 return (::waveOutGetNumDevs() != 0); | 106 return (::waveOutGetNumDevs() != 0); |
| 111 } | 107 } |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 path = path.Append(program); | 250 path = path.Append(program); |
| 255 CommandLine command_line(path); | 251 CommandLine command_line(path); |
| 256 command_line.AppendArg(argument); | 252 command_line.AppendArg(argument); |
| 257 base::LaunchApp(command_line, false, false, NULL); | 253 base::LaunchApp(command_line, false, false, NULL); |
| 258 } | 254 } |
| 259 | 255 |
| 260 // static | 256 // static |
| 261 AudioManager* AudioManager::CreateAudioManager() { | 257 AudioManager* AudioManager::CreateAudioManager() { |
| 262 return new AudioManagerWin(); | 258 return new AudioManagerWin(); |
| 263 } | 259 } |
| OLD | NEW |