cn.tee3.avd_SDK-Objectc  2.1.0
RTCAudioSession.h
浏览该文件的文档.
1 /*
2  * Copyright 2016 The WebRTC Project Authors. All rights reserved.
3  *
4  * Use of this source code is governed by a BSD-style license
5  * that can be found in the LICENSE file in the root of the source
6  * tree. An additional intellectual property rights grant can be found
7  * in the file PATENTS. All contributing project authors may
8  * be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #import <AVFoundation/AVFoundation.h>
12 #import <Foundation/Foundation.h>
13 
14 NS_ASSUME_NONNULL_BEGIN
15 
16 extern NSString * const kRTCAudioSessionErrorDomain;
17 extern NSInteger const kRTCAudioSessionErrorLockRequired;
18 
19 @class RTCAudioSession;
20 
21 // Surfaces AVAudioSession events. WebRTC will listen directly for notifications
22 // from AVAudioSession and handle them before calling these delegate methods,
23 // at which point applications can perform additional processing if required.
24 @protocol RTCAudioSessionDelegate <NSObject>
25 
27 - (void)rtcaudioSessionDidBeginInterruption:(RTCAudioSession *)session;
28 
30 - (void)rtcaudioSessionDidEndInterruption:(RTCAudioSession *)session
31  shouldResumeSession:(BOOL)shouldResumeSession;
32 
34 - (void)rtcaudioSessionDidChangeRoute:(RTCAudioSession *)session
35  reason:(AVAudioSessionRouteChangeReason)reason
36  previousRoute:(AVAudioSessionRouteDescription *)previousRoute;
37 
39 - (void)rtcaudioSessionMediaServicesWereLost:(RTCAudioSession *)session;
40 
42 - (void)rtcaudioSessionMediaServicesWereReset:(RTCAudioSession *)session;
43 
44 // TODO(tkchin): Maybe handle SilenceSecondaryAudioHintNotification.
45 
46 @end
47 
56 @interface RTCAudioSession : NSObject
57 
62 @property(nonatomic, readonly) AVAudioSession *session;
63 
67 @property(nonatomic, readonly) BOOL isActive;
69 @property(nonatomic, readonly) BOOL isLocked;
70 
71 // Proxy properties.
72 @property(readonly) NSString *category;
73 @property(readonly) AVAudioSessionCategoryOptions categoryOptions;
74 @property(readonly) NSString *mode;
75 @property(readonly) BOOL secondaryAudioShouldBeSilencedHint;
76 @property(readonly) AVAudioSessionRouteDescription *currentRoute;
77 @property(readonly) NSInteger maximumInputNumberOfChannels;
78 @property(readonly) NSInteger maximumOutputNumberOfChannels;
79 @property(readonly) float inputGain;
80 @property(readonly) BOOL inputGainSettable;
81 @property(readonly) BOOL inputAvailable;
82 @property(readonly, nullable) NSArray* inputDataSources;
84 @property(readonly, nullable)
85  AVAudioSessionDataSourceDescription *inputDataSource;
86 @property(readonly, nullable) NSArray* outputDataSources;
88 @property(readonly, nullable)
89  AVAudioSessionDataSourceDescription *outputDataSource;
90 @property(readonly) double sampleRate;
91 @property(readonly) NSInteger inputNumberOfChannels;
92 @property(readonly) NSInteger outputNumberOfChannels;
93 @property(readonly) float outputVolume;
94 @property(readonly) NSTimeInterval inputLatency;
95 @property(readonly) NSTimeInterval outputLatency;
96 @property(readonly) NSTimeInterval IOBufferDuration;
97 
99 + (instancetype)sharedInstance;
100 
105 - (void)addDelegate:(id<RTCAudioSessionDelegate>)delegate;
107 - (void)removeDelegate:(id<RTCAudioSessionDelegate>)delegate;
108 
112 - (void)lockForConfiguration;
114 - (void)unlockForConfiguration;
115 
123 - (BOOL)setActive:(BOOL)active
124  error:(NSError **)outError;
125 - (BOOL)setActive:(BOOL)active
126  withOptions:(AVAudioSessionSetActiveOptions)options
127  error:(NSError **)outError;
128 
129 // The following methods are proxies for the associated methods on
130 // AVAudioSession. |lockForConfiguration| must be called before using them
131 // otherwise they will fail with kRTCAudioSessionErrorLockRequired.
132 
133 - (BOOL)setCategory:(NSString *)category
134  withOptions:(AVAudioSessionCategoryOptions)options
135  error:(NSError **)outError;
136 - (BOOL)setMode:(NSString *)mode error:(NSError **)outError;
137 - (BOOL)setInputGain:(float)gain error:(NSError **)outError;
138 - (BOOL)setPreferredSampleRate:(double)sampleRate error:(NSError **)outError;
139 - (BOOL)setPreferredIOBufferDuration:(NSTimeInterval)duration
140  error:(NSError **)outError;
141 - (BOOL)setPreferredInputNumberOfChannels:(NSInteger)count
142  error:(NSError **)outError;
143 - (BOOL)setPreferredOutputNumberOfChannels:(NSInteger)count
144  error:(NSError **)outError;
145 - (BOOL)overrideOutputAudioPort:(AVAudioSessionPortOverride)portOverride
146  error:(NSError **)outError;
147 - (BOOL)setPreferredInput:(AVAudioSessionPortDescription *)inPort
148  error:(NSError **)outError;
149 - (BOOL)setInputDataSource:(AVAudioSessionDataSourceDescription *)dataSource
150  error:(NSError **)outError;
151 - (BOOL)setOutputDataSource:(AVAudioSessionDataSourceDescription *)dataSource
152  error:(NSError **)outError;
153 
154 @end
155 
156 NS_ASSUME_NONNULL_END
float inputGain
Definition: RTCAudioSession.h:79
double sampleRate
Definition: RTCAudioSession.h:90
NS_ASSUME_NONNULL_BEGIN NSString *const kRTCAudioSessionErrorDomain
NSArray * inputDataSources
Definition: RTCAudioSession.h:82
BOOL inputGainSettable
Definition: RTCAudioSession.h:80
NSInteger maximumInputNumberOfChannels
Definition: RTCAudioSession.h:77
NSInteger const kRTCAudioSessionErrorLockRequired
NSInteger maximumOutputNumberOfChannels
Definition: RTCAudioSession.h:78
NSString * mode
Definition: RTCAudioSession.h:74
AVAudioSessionDataSourceDescription * inputDataSource
NSArray<AVAudioSessionDataSourceDescription *> * inputDataSources;
Definition: RTCAudioSession.h:85
float outputVolume
Definition: RTCAudioSession.h:93
AVAudioSessionDataSourceDescription * outputDataSource
NSArray<AVAudioSessionDataSourceDescription *> * outputDataSources;
Definition: RTCAudioSession.h:89
NSInteger inputNumberOfChannels
Definition: RTCAudioSession.h:91
instancetype sharedInstance()
Default constructor.
void lockForConfiguration()
Request exclusive access to the audio session for configuration.
NSString * category
Definition: RTCAudioSession.h:72
void unlockForConfiguration()
Relinquishes exclusive access to the audio session.
BOOL secondaryAudioShouldBeSilencedHint
Definition: RTCAudioSession.h:75
NSInteger outputNumberOfChannels
Definition: RTCAudioSession.h:92
AVAudioSessionCategoryOptions categoryOptions
Definition: RTCAudioSession.h:73
NSTimeInterval outputLatency
Definition: RTCAudioSession.h:95
NSArray * outputDataSources
Definition: RTCAudioSession.h:86
NSTimeInterval inputLatency
Definition: RTCAudioSession.h:94
BOOL isActive
Our best guess at whether the session is active based on results of calls to AVAudioSession.
Definition: RTCAudioSession.h:67
AVAudioSessionRouteDescription * currentRoute
Definition: RTCAudioSession.h:76
BOOL inputAvailable
Definition: RTCAudioSession.h:81
Proxy class for AVAudioSession that adds a locking mechanism similar to AVCaptureDevice.
Definition: RTCAudioSession.h:56
NSTimeInterval IOBufferDuration
Definition: RTCAudioSession.h:96
BOOL isLocked
Whether RTCAudioSession is currently locked for configuration.
Definition: RTCAudioSession.h:69