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

Side by Side Diff: media/audio/mac/audio_manager_mac.cc

Issue 4661001: Simplified AudioOutputStream interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 10 years, 1 month 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
« no previous file with comments | « media/audio/mac/audio_manager_mac.h ('k') | media/audio/mac/audio_output_mac.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 <CoreAudio/AudioHardware.h> 5 #include <CoreAudio/AudioHardware.h>
6 6
7 #include "media/audio/fake_audio_input_stream.h" 7 #include "media/audio/fake_audio_input_stream.h"
8 #include "media/audio/fake_audio_output_stream.h" 8 #include "media/audio/fake_audio_output_stream.h"
9 #include "media/audio/mac/audio_input_mac.h" 9 #include "media/audio/mac/audio_input_mac.h"
10 #include "media/audio/mac/audio_manager_mac.h" 10 #include "media/audio/mac/audio_manager_mac.h"
11 #include "media/audio/mac/audio_output_mac.h" 11 #include "media/audio/mac/audio_output_mac.h"
12 #include "media/base/limits.h" 12 #include "media/base/limits.h"
13 13
14 namespace { 14 namespace {
15 const int kMaxInputChannels = 2; 15 const int kMaxInputChannels = 2;
16 const int kMaxSamplesPerPacket = media::Limits::kMaxSampleRate;
17 16
18 bool HasAudioHardware(AudioObjectPropertySelector selector) { 17 bool HasAudioHardware(AudioObjectPropertySelector selector) {
19 AudioDeviceID output_device_id = kAudioObjectUnknown; 18 AudioDeviceID output_device_id = kAudioObjectUnknown;
20 const AudioObjectPropertyAddress property_address = { 19 const AudioObjectPropertyAddress property_address = {
21 selector, 20 selector,
22 kAudioObjectPropertyScopeGlobal, // mScope 21 kAudioObjectPropertyScopeGlobal, // mScope
23 kAudioObjectPropertyElementMaster // mElement 22 kAudioObjectPropertyElementMaster // mElement
24 }; 23 };
25 size_t output_device_id_size = sizeof(output_device_id); 24 size_t output_device_id_size = sizeof(output_device_id);
26 OSStatus err = AudioObjectGetPropertyData(kAudioObjectSystemObject, 25 OSStatus err = AudioObjectGetPropertyData(kAudioObjectSystemObject,
(...skipping 11 matching lines...) Expand all
38 return HasAudioHardware(kAudioHardwarePropertyDefaultOutputDevice); 37 return HasAudioHardware(kAudioHardwarePropertyDefaultOutputDevice);
39 } 38 }
40 39
41 bool AudioManagerMac::HasAudioInputDevices() { 40 bool AudioManagerMac::HasAudioInputDevices() {
42 return HasAudioHardware(kAudioHardwarePropertyDefaultInputDevice); 41 return HasAudioHardware(kAudioHardwarePropertyDefaultInputDevice);
43 } 42 }
44 43
45 AudioOutputStream* AudioManagerMac::MakeAudioOutputStream( 44 AudioOutputStream* AudioManagerMac::MakeAudioOutputStream(
46 AudioParameters params) { 45 AudioParameters params) {
47 if (params.format == AudioParameters::AUDIO_MOCK) 46 if (params.format == AudioParameters::AUDIO_MOCK)
48 return FakeAudioOutputStream::MakeFakeStream(); 47 return FakeAudioOutputStream::MakeFakeStream(params);
49 else if (params.format != AudioParameters::AUDIO_PCM_LINEAR) 48 else if (params.format != AudioParameters::AUDIO_PCM_LINEAR)
50 return NULL; 49 return NULL;
51 return new PCMQueueOutAudioOutputStream(this, params); 50 return new PCMQueueOutAudioOutputStream(this, params);
52 } 51 }
53 52
54 AudioInputStream* AudioManagerMac::MakeAudioInputStream( 53 AudioInputStream* AudioManagerMac::MakeAudioInputStream(
55 AudioParameters params, int samples_per_packet) { 54 AudioParameters params) {
56 if (!params.IsValid() || (params.channels > kMaxInputChannels) || 55 if (!params.IsValid() || (params.channels > kMaxInputChannels))
57 (samples_per_packet > kMaxSamplesPerPacket) || (samples_per_packet < 0))
58 return NULL; 56 return NULL;
59 57
60 if (params.format == AudioParameters::AUDIO_MOCK) { 58 if (params.format == AudioParameters::AUDIO_MOCK) {
61 return FakeAudioInputStream::MakeFakeStream(params, samples_per_packet); 59 return FakeAudioInputStream::MakeFakeStream(params);
62 } else if (params.format == AudioParameters::AUDIO_PCM_LINEAR) { 60 } else if (params.format == AudioParameters::AUDIO_PCM_LINEAR) {
63 return new PCMQueueInAudioInputStream(this, params, samples_per_packet); 61 return new PCMQueueInAudioInputStream(this, params);
64 } 62 }
65 return NULL; 63 return NULL;
66 } 64 }
67 65
68 void AudioManagerMac::MuteAll() { 66 void AudioManagerMac::MuteAll() {
69 // TODO(cpu): implement. 67 // TODO(cpu): implement.
70 } 68 }
71 69
72 void AudioManagerMac::UnMuteAll() { 70 void AudioManagerMac::UnMuteAll() {
73 // TODO(cpu): implement. 71 // TODO(cpu): implement.
74 } 72 }
75 73
76 // Called by the stream when it has been released by calling Close(). 74 // Called by the stream when it has been released by calling Close().
77 void AudioManagerMac::ReleaseOutputStream( 75 void AudioManagerMac::ReleaseOutputStream(
78 PCMQueueOutAudioOutputStream* stream) { 76 PCMQueueOutAudioOutputStream* stream) {
79 delete stream; 77 delete stream;
80 } 78 }
81 79
82 // Called by the stream when it has been released by calling Close(). 80 // Called by the stream when it has been released by calling Close().
83 void AudioManagerMac::ReleaseInputStream(PCMQueueInAudioInputStream* stream) { 81 void AudioManagerMac::ReleaseInputStream(PCMQueueInAudioInputStream* stream) {
84 delete stream; 82 delete stream;
85 } 83 }
86 84
87 // static 85 // static
88 AudioManager* AudioManager::CreateAudioManager() { 86 AudioManager* AudioManager::CreateAudioManager() {
89 return new AudioManagerMac(); 87 return new AudioManagerMac();
90 } 88 }
OLDNEW
« no previous file with comments | « media/audio/mac/audio_manager_mac.h ('k') | media/audio/mac/audio_output_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698