123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- #import <AVFoundation/AVFoundation.h>
- #import <Foundation/Foundation.h>
- #import "RTCMacros.h"
- NS_ASSUME_NONNULL_BEGIN
- extern NSString *const kRTCAudioSessionErrorDomain;
- extern NSInteger const kRTCAudioSessionErrorLockRequired;
- extern NSInteger const kRTCAudioSessionErrorConfiguration;
- @class RTC_OBJC_TYPE(RTCAudioSession);
- @class RTC_OBJC_TYPE(RTCAudioSessionConfiguration);
- RTC_OBJC_EXPORT
- @protocol RTC_OBJC_TYPE
- (RTCAudioSessionDelegate)<NSObject>
- @optional
- - (void)audioSessionDidBeginInterruption:(RTC_OBJC_TYPE(RTCAudioSession) *)session;
- - (void)audioSessionDidEndInterruption:(RTC_OBJC_TYPE(RTCAudioSession) *)session
- shouldResumeSession:(BOOL)shouldResumeSession;
- - (void)audioSessionDidChangeRoute:(RTC_OBJC_TYPE(RTCAudioSession) *)session
- reason:(AVAudioSessionRouteChangeReason)reason
- previousRoute:(AVAudioSessionRouteDescription *)previousRoute;
- - (void)audioSessionMediaServerTerminated:(RTC_OBJC_TYPE(RTCAudioSession) *)session;
- - (void)audioSessionMediaServerReset:(RTC_OBJC_TYPE(RTCAudioSession) *)session;
- - (void)audioSession:(RTC_OBJC_TYPE(RTCAudioSession) *)session
- didChangeCanPlayOrRecord:(BOOL)canPlayOrRecord;
- - (void)audioSessionDidStartPlayOrRecord:(RTC_OBJC_TYPE(RTCAudioSession) *)session;
- - (void)audioSessionDidStopPlayOrRecord:(RTC_OBJC_TYPE(RTCAudioSession) *)session;
- - (void)audioSession:(RTC_OBJC_TYPE(RTCAudioSession) *)audioSession
- didChangeOutputVolume:(float)outputVolume;
- - (void)audioSession:(RTC_OBJC_TYPE(RTCAudioSession) *)audioSession
- didDetectPlayoutGlitch:(int64_t)totalNumberOfGlitches;
- - (void)audioSession:(RTC_OBJC_TYPE(RTCAudioSession) *)audioSession willSetActive:(BOOL)active;
- - (void)audioSession:(RTC_OBJC_TYPE(RTCAudioSession) *)audioSession didSetActive:(BOOL)active;
- - (void)audioSession:(RTC_OBJC_TYPE(RTCAudioSession) *)audioSession
- failedToSetActive:(BOOL)active
- error:(NSError *)error;
- @end
- RTC_OBJC_EXPORT
- @protocol RTC_OBJC_TYPE
- (RTCAudioSessionActivationDelegate)<NSObject>
-
- - (void)audioSessionDidActivate : (AVAudioSession *)session;
- - (void)audioSessionDidDeactivate:(AVAudioSession *)session;
- @end
- RTC_OBJC_EXPORT
- @interface RTC_OBJC_TYPE (RTCAudioSession) : NSObject <RTC_OBJC_TYPE(RTCAudioSessionActivationDelegate)>
- @property(nonatomic, readonly) AVAudioSession *session;
- @property(nonatomic, readonly) BOOL isActive;
- @property(nonatomic, readonly) BOOL isLocked;
- @property(nonatomic, assign) BOOL useManualAudio;
- @property(nonatomic, assign) BOOL isAudioEnabled;
- @property(readonly) NSString *category;
- @property(readonly) AVAudioSessionCategoryOptions categoryOptions;
- @property(readonly) NSString *mode;
- @property(readonly) BOOL secondaryAudioShouldBeSilencedHint;
- @property(readonly) AVAudioSessionRouteDescription *currentRoute;
- @property(readonly) NSInteger maximumInputNumberOfChannels;
- @property(readonly) NSInteger maximumOutputNumberOfChannels;
- @property(readonly) float inputGain;
- @property(readonly) BOOL inputGainSettable;
- @property(readonly) BOOL inputAvailable;
- @property(readonly, nullable) NSArray<AVAudioSessionDataSourceDescription *> *inputDataSources;
- @property(readonly, nullable) AVAudioSessionDataSourceDescription *inputDataSource;
- @property(readonly, nullable) NSArray<AVAudioSessionDataSourceDescription *> *outputDataSources;
- @property(readonly, nullable) AVAudioSessionDataSourceDescription *outputDataSource;
- @property(readonly) double sampleRate;
- @property(readonly) double preferredSampleRate;
- @property(readonly) NSInteger inputNumberOfChannels;
- @property(readonly) NSInteger outputNumberOfChannels;
- @property(readonly) float outputVolume;
- @property(readonly) NSTimeInterval inputLatency;
- @property(readonly) NSTimeInterval outputLatency;
- @property(readonly) NSTimeInterval IOBufferDuration;
- @property(readonly) NSTimeInterval preferredIOBufferDuration;
- @property(nonatomic) BOOL ignoresPreferredAttributeConfigurationErrors;
- + (instancetype)sharedInstance;
- - (instancetype)init NS_UNAVAILABLE;
- - (void)addDelegate:(id<RTC_OBJC_TYPE(RTCAudioSessionDelegate)>)delegate;
- - (void)removeDelegate:(id<RTC_OBJC_TYPE(RTCAudioSessionDelegate)>)delegate;
- - (void)lockForConfiguration;
- - (void)unlockForConfiguration;
- - (BOOL)setActive:(BOOL)active error:(NSError **)outError;
- - (BOOL)setCategory:(NSString *)category
- withOptions:(AVAudioSessionCategoryOptions)options
- error:(NSError **)outError;
- - (BOOL)setMode:(NSString *)mode error:(NSError **)outError;
- - (BOOL)setInputGain:(float)gain error:(NSError **)outError;
- - (BOOL)setPreferredSampleRate:(double)sampleRate error:(NSError **)outError;
- - (BOOL)setPreferredIOBufferDuration:(NSTimeInterval)duration error:(NSError **)outError;
- - (BOOL)setPreferredInputNumberOfChannels:(NSInteger)count error:(NSError **)outError;
- - (BOOL)setPreferredOutputNumberOfChannels:(NSInteger)count error:(NSError **)outError;
- - (BOOL)overrideOutputAudioPort:(AVAudioSessionPortOverride)portOverride error:(NSError **)outError;
- - (BOOL)setPreferredInput:(AVAudioSessionPortDescription *)inPort error:(NSError **)outError;
- - (BOOL)setInputDataSource:(AVAudioSessionDataSourceDescription *)dataSource
- error:(NSError **)outError;
- - (BOOL)setOutputDataSource:(AVAudioSessionDataSourceDescription *)dataSource
- error:(NSError **)outError;
- @end
- @interface RTC_OBJC_TYPE (RTCAudioSession)
- (Configuration)
-
- - (BOOL)setConfiguration : (RTC_OBJC_TYPE(RTCAudioSessionConfiguration) *)configuration error
- : (NSError **)outError;
- - (BOOL)setConfiguration:(RTC_OBJC_TYPE(RTCAudioSessionConfiguration) *)configuration
- active:(BOOL)active
- error:(NSError **)outError;
- @end
- NS_ASSUME_NONNULL_END
|