Audio sink that writes decoded audio to the centralized AudioSessionManager mixer. More...
Instance Methods | |
| (NSString *) | - label |
| Gets the label/name of this audio sink implementation. More... | |
| (bool) | - useVoiceProcessingIO |
| Legacy property - always returns YES (VPIO always used via AudioSessionManager). More... | |
| (void) | - setUseVoiceProcessingIO: |
| Legacy setter - has no effect (VPIO configuration managed by AudioSessionManager). More... | |
| (NSString *) | - audioSessionId |
| Returns the unique identifier used to register this sink with AudioSessionManager. More... | |
Instance Methods inherited from FMLiveSwitchAudioSink | |
| (FMLiveSwitchAudioConfig *) | - config |
| Gets the input configuration. More... | |
| (FMLiveSwitchIAudioOutputCollection *) | - createOutputCollectionWithInput: |
| Creates an output collection. More... | |
| (double) | - gain |
| Gets a value indicating the gain (input amplification) of this sink. More... | |
| (instancetype) | - init |
| Initializes a new instance of the FMLiveSwitchAudioSink class. More... | |
| (instancetype) | - initWithInputFormat: |
| Initializes a new instance of the FMLiveSwitchAudioSink class. More... | |
| (bool) | - processFrame: |
| Processes a frame. More... | |
| (void) | - setGain: |
| Sets a value indicating the gain (input amplification) of this sink. More... | |
Instance Methods inherited from FMLiveSwitchMediaSink | |
| (void) | - addInput: |
| Adds an input. More... | |
| (void) | - addInputs: |
| Adds some inputs. More... | |
| (void) | - addOnDisabledChange: |
| Adds a handler that is raised when the Disabled property changes state. More... | |
| (void) | - addOnPausedChange: |
| Adds a handler that is raised when the Paused property changes state. More... | |
| (void) | - addOnProcessControlFrameResponses: |
| Adds a handler that is raised when control frame responses are processed. More... | |
| (NSMutableArray *) | - addOnProcessControlFrameResponsesWithBlock |
| Adds a handler that is raised when control frame responses are processed. More... | |
| (void) | - addOnProcessControlFrameResponsesWithBlock: |
| Adds a handler that is raised when control frame responses are processed. More... | |
| (void) | - addOnProcessedControlFrameResponses: |
| Adds a handler that is raised when control frame responses have been processed. More... | |
| (NSMutableArray *) | - addOnProcessedControlFrameResponsesWithBlock |
| Adds a handler that is raised when control frame responses have been processed. More... | |
| (void) | - addOnProcessedControlFrameResponsesWithBlock: |
| Adds a handler that is raised when control frame responses have been processed. More... | |
| (void) | - addOnProcessedFrame: |
| Adds a handler that is raised when a frame has been processed. More... | |
| (TFrame) | - addOnProcessedFrameWithBlock |
| Adds a handler that is raised when a frame has been processed. More... | |
| (void) | - addOnProcessedFrameWithBlock: |
| Adds a handler that is raised when a frame has been processed. More... | |
| (void) | - addOnProcessFrame: |
| Adds a handler that is raised when a frame is being processed. More... | |
| (void) | - addOnProcessFrameException: |
| Adds a handler that is raised when an exception is thrown while processing a frame. More... | |
| (TFrame, NSException *) | - addOnProcessFrameExceptionWithBlock |
| Adds a handler that is raised when an exception is thrown while processing a frame. More... | |
| (void) | - addOnProcessFrameExceptionWithBlock: |
| Adds a handler that is raised when an exception is thrown while processing a frame. More... | |
| (TFrame) | - addOnProcessFrameWithBlock |
| Adds a handler that is raised when a frame is being processed. More... | |
| (void) | - addOnProcessFrameWithBlock: |
| Adds a handler that is raised when a frame is being processed. More... | |
| (void) | - addOnProcessFrameWithCaller: |
| Adds a handler that is raised when a frame is being processed. More... | |
| (id, TFrame) | - addOnProcessFrameWithCallerWithBlock |
| Adds a handler that is raised when a frame is being processed. More... | |
| (void) | - addOnProcessFrameWithCallerWithBlock: |
| Adds a handler that is raised when a frame is being processed. More... | |
| (void) | - addOnRaiseControlFrames: |
| Adds a handler that is raised when control frames are raised. More... | |
| (NSMutableArray *) | - addOnRaiseControlFramesWithBlock |
| Adds a handler that is raised when control frames are raised. More... | |
| (void) | - addOnRaiseControlFramesWithBlock: |
| Adds a handler that is raised when control frames are raised. More... | |
| (void) | - addOnRaisedControlFrames: |
| Adds a handler that is raised when control frames have been raised. More... | |
| (NSMutableArray *) | - addOnRaisedControlFramesWithBlock |
| Adds a handler that is raised when control frames have been raised. More... | |
| (void) | - addOnRaisedControlFramesWithBlock: |
| Adds a handler that is raised when control frames have been raised. More... | |
| (void) | - addOnStateChange: |
| Adds a handler that is raised when the state changes. More... | |
| (TSink) | - addOnStateChangeWithBlock |
| Adds a handler that is raised when the state changes. More... | |
| (void) | - addOnStateChangeWithBlock: |
| Adds a handler that is raised when the state changes. More... | |
| (bool) | - allowDiagnosticTimer |
| Gets whether this media sink is allowed to be timed. More... | |
| (bool) | - allowInputRateTimer |
| Gets whether this media pipe input rate is allowed to be timed. More... | |
| (FMLiveSwitchFuture< id > *) | - changeOutput: |
| Changes the current output. More... | |
| (NSString *) | - content |
| Gets the content descriptor. More... | |
| (TIOutputCollection) | - createOutputCollectionWithInput: |
| Creates an output collection. More... | |
| (bool) | - deactivated |
| Gets a value indicating whether this sink is deactivated. More... | |
| (NSString *) | - description |
| Returns a string that represents this instance. More... | |
| (bool) | - destroy |
| Destroys this instance. More... | |
| (bool) | - disabled |
| Gets a value indicating whether this sink is disabled. More... | |
| (void) | - doDestroy |
| Destroys this instance. More... | |
| (void) | - doPostProcessFrame:inputBuffer: |
| Post-processes a frame. More... | |
| (void) | - doPreProcessFrame:inputBuffer: |
| Pre-processes a frame. More... | |
| (void) | - doProcessControlFrameResponses: |
| Processes control frame responses. More... | |
| (void) | - doProcessFrame:inputBuffer: |
| Processes a frame. More... | |
| (FMLiveSwitchError *) | - doProcessSdpMediaDescription:isOffer:isLocalDescription: |
| Processes a remote SDP media description. More... | |
| (void) | - doProcessSinkStatsFromInputWithSinkStats: |
| Processes sink stats from an input. More... | |
| (void) | - doProcessTrackStatsFromInputWithTrackStats: |
| Processes track stats from an input. More... | |
| (int) | - getCcmSequenceNumber |
| Gets the CCM sequence number. More... | |
| (FMLiveSwitchFuture< NSMutableArray * > *) | - getOutputs |
| Gets the available outputs. More... | |
| (long long) | - getPipelineSystemDelayWithOutputFormat: |
| Gets the total pipeline system delay in ticks for a given output format. More... | |
| (bool) | - hasInput: |
| Determines whether this pipe has the specified input. More... | |
| (void) | - incrementCcmSequenceNumber |
| Increments the CCM sequence number. More... | |
| (instancetype) | - initWithInputFormat: |
| Initializes a new instance of the FMLiveSwitchMediaSink`8 class. More... | |
| (TIOutput) | - input |
| Gets the input. More... | |
| (void) | - inputAddedWithInput: |
| Called when an input is added. More... | |
| (bool) | - inputDeactivated |
| Gets whether input is deactivated. More... | |
| (TFormat) | - inputFormat |
| Gets the input format. More... | |
| (bool) | - inputMuted |
| Gets whether input is muted. More... | |
| (void) | - inputRemovedWithInput: |
| Called when an input is removed. More... | |
| (NSString *) | - inputRtpStreamId |
| Gets the input RTP stream identifier. More... | |
| (NSMutableArray *) | - inputs |
| Gets the inputs. More... | |
| (long long) | - inputSynchronizationSource |
| Gets the input synchronization source. More... | |
| (bool) | - isMixer |
| Gets whether this sink processes media from different sources. More... | |
| (int) | - maxInputBitrate |
| Gets the maximum allowed input bitrate, in kbps. More... | |
| (FMLiveSwitchEncodingInfo *) | - maxInputEncoding |
| Gets the maximum allowed input encoding. More... | |
| (int) | - minInputBitrate |
| Gets the minimum allowed input bitrate, in kbps. More... | |
| (FMLiveSwitchEncodingInfo *) | - minInputEncoding |
| Gets the minimum allowed input encoding. More... | |
| (bool) | - muted |
| Gets whether input is muted. More... | |
| (FMLiveSwitchSinkOutput *) | - output |
| Gets the current output. More... | |
| (bool) | - overConstrained |
| Gets whether this sink is over-constrained. More... | |
| (bool) | - overConstrainedBitrate |
| Gets whether the sink bitrate is over-constrained. More... | |
| (bool) | - overConstrainedInput |
| Gets whether the input is over-contrained. More... | |
| (bool) | - overConstrainedInputBitrate |
| Gets whether the minimum allowed input bitrate exceeds the maximum allowed input bitrate. More... | |
| (bool) | - paused |
| Gets a value indicating whether this sink is paused. More... | |
| (bool) | - persistent |
| Gets a value indicating whether this instance is persistent. More... | |
| (NSString *) | - pipelineJson |
| Gets the pipeline JSON with this as the central point. More... | |
| (NSString *) | - pipelineJsonFromInput |
| Gets the pipeline JSON from an input. More... | |
| (void) | - processControlFrameResponse: |
| Processes a control frame response. More... | |
| (void) | - processControlFrameResponses: |
| Processes control frame responses. More... | |
| (bool) | - processFrame: |
| Processes a frame. More... | |
| (FMLiveSwitchProcessFramePolicy) | - processFramePolicy |
| Gets the ProcessFramePolicy for this media input. More... | |
| (FMLiveSwitchError *) | - processSdpMediaDescriptionFromInputWithMediaDescription:isOffer:isLocalDescription: |
| Processes a remote SDP media description from an output. More... | |
| (void) | - processSinkStatsFromInputWithSinkStats: |
| Processes sink stats from an input. More... | |
| (void) | - processTrackStatsFromInputWithTrackStats: |
| Processes track stats from an input. More... | |
| (void) | - raiseControlFrame: |
| Raises a control frame. More... | |
| (void) | - raiseControlFrame:inputs: |
| Raises a control frame. More... | |
| (void) | - raiseControlFrames: |
| Raises control frames. More... | |
| (void) | - raiseControlFrames:inputs: |
| Raises control frames. More... | |
| (void) | - raiseDisabledChange |
| Raises the OnDisabledChange event. More... | |
| (bool) | - removeInput: |
| Removes an input. More... | |
| (void) | - removeInputs |
| Removes all inputs. More... | |
| (void) | - removeInputs: |
| Removes some inputs. More... | |
| (void) | - removeOnDisabledChange: |
| Removes a handler that is raised when the Disabled property changes state. More... | |
| (void) | - removeOnPausedChange: |
| Removes a handler that is raised when the Paused property changes state. More... | |
| (void) | - removeOnProcessControlFrameResponses: |
| Removes a handler that is raised when control frame responses are processed. More... | |
| (void) | - removeOnProcessedControlFrameResponses: |
| Removes a handler that is raised when control frame responses have been processed. More... | |
| (void) | - removeOnProcessedFrame: |
| Removes a handler that is raised when a frame has been processed. More... | |
| (void) | - removeOnProcessFrame: |
| Removes a handler that is raised when a frame is being processed. More... | |
| (void) | - removeOnProcessFrameException: |
| Removes a handler that is raised when an exception is thrown while processing a frame. More... | |
| (void) | - removeOnProcessFrameWithCaller: |
| Removes a handler that is raised when a frame is being processed. More... | |
| (void) | - removeOnRaiseControlFrames: |
| Removes a handler that is raised when control frames are raised. More... | |
| (void) | - removeOnRaisedControlFrames: |
| Removes a handler that is raised when control frames have been raised. More... | |
| (void) | - removeOnStateChange: |
| Removes a handler that is raised when the state changes. More... | |
| (void) | - setDeactivated: |
| Sets a value indicating whether this sink is deactivated. More... | |
| (void) | - setDisabled: |
| Sets a value indicating whether this sink is disabled. More... | |
| (void) | - setInput: |
| Sets the input. More... | |
| (void) | - setInputDeactivated: |
| Sets whether input is deactivated. More... | |
| (void) | - setInputMuted: |
| Sets whether input is muted. More... | |
| (void) | - setInputRtpStreamId: |
| Sets the input RTP stream identifier. More... | |
| (void) | - setInputs: |
| Sets the inputs. More... | |
| (void) | - setInputSynchronizationSource: |
| Sets the input synchronization source. More... | |
| (void) | - setMaxInputBitrate: |
| Sets the maximum allowed input bitrate, in kbps. More... | |
| (void) | - setMaxInputEncoding: |
| Sets the maximum allowed input encoding. More... | |
| (void) | - setMinInputBitrate: |
| Sets the minimum allowed input bitrate, in kbps. More... | |
| (void) | - setMinInputEncoding: |
| Sets the minimum allowed input encoding. More... | |
| (void) | - setMuted: |
| Sets whether input is muted. More... | |
| (void) | - setOutput: |
| Sets the current output. More... | |
| (void) | - setPersistent: |
| Sets a value indicating whether this instance is persistent. More... | |
| (void) | - setProcessFramePolicy: |
| Sets the ProcessFramePolicy for this media input. More... | |
| (void) | - setSystemDelay: |
| Sets the system delay in ticks. More... | |
| (FMLiveSwitchMediaSinkState) | - state |
| Gets the state. More... | |
| (long long) | - systemDelay |
| Gets the system delay in ticks. More... | |
| (bool) | - trySetInputFormatWithFrame: |
| Sets the input format, if not set, using the frame's last buffer format. More... | |
| (bool) | - updateDisabled |
| Updates the disabled property. More... | |
Instance Methods inherited from <FMLiveSwitchIAudioOutput> | |
| (void) | - setVolume: |
| Sets a value indicating the volume (output resistance) of this source. More... | |
| (double) | - volume |
| Gets a value indicating the volume (output resistance) of this source. More... | |
Instance Methods inherited from <FMLiveSwitchIMediaOutput> | |
| (void) | - addOnDisabledChange: |
| Adds a handler that is raised when the Disabled property changes state. More... | |
| (void) | - addOnDisabledChangeWithCaller: |
| Adds a handler that is raised when the Disabled property changes state. More... | |
| (id) | - addOnDisabledChangeWithCallerWithBlock |
| Adds a handler that is raised when the Disabled property changes state. More... | |
| (void) | - addOnDisabledChangeWithCallerWithBlock: |
| Adds a handler that is raised when the Disabled property changes state. More... | |
| (void) | - addOnPausedChange: |
| Adds a handler that is raised when the Paused property changes state. More... | |
| (void) | - addOnProcessControlFrames: |
| Adds a handler that is raised when control frames are processed. More... | |
| (NSMutableArray *) | - addOnProcessControlFramesWithBlock |
| Adds a handler that is raised when control frames are processed. More... | |
| (void) | - addOnProcessControlFramesWithBlock: |
| Adds a handler that is raised when control frames are processed. More... | |
| (void) | - addOnRaiseControlFrameResponses: |
| Adds a handler that is raised when a control frame response is raised. More... | |
| (NSMutableArray *) | - addOnRaiseControlFrameResponsesWithBlock |
| Adds a handler that is raised when a control frame response is raised. More... | |
| (void) | - addOnRaiseControlFrameResponsesWithBlock: |
| Adds a handler that is raised when a control frame response is raised. More... | |
| (void) | - addOnRaiseFrame: |
| Adds a handler that is raised when a frame is raised. More... | |
| (FMLiveSwitchMediaFrame *) | - addOnRaiseFrameWithBlock |
| Adds a handler that is raised when a frame is raised. More... | |
| (void) | - addOnRaiseFrameWithBlock: |
| Adds a handler that is raised when a frame is raised. More... | |
| (NSString *) | - content |
| Gets the content descriptor. More... | |
| (int) | - getCcmSequenceNumber |
| Gets the CCM sequence number. More... | |
| (long long) | - getPipelineSystemDelayWithOutputFormat: |
| Gets the total pipeline system delay in ticks for a given media format. More... | |
| (void) | - incrementCcmSequenceNumber |
| Increments the CCM sequence number. More... | |
| (int) | - maxOutputBitrate |
| Gets the maximum allowed output bitrate, in kbps. More... | |
| (FMLiveSwitchEncodingInfo *) | - maxOutputEncoding |
| Gets the maximum allowed output encoding. More... | |
| (int) | - minOutputBitrate |
| Gets the minimum allowed output bitrate, in kbps. More... | |
| (FMLiveSwitchEncodingInfo *) | - minOutputEncoding |
| Gets the minimum allowed output encoding. More... | |
| (bool) | - outputDeactivated |
| Gets whether output is deactivated. More... | |
| (bool) | - outputMuted |
| Gets whether output is muted. More... | |
| (NSString *) | - outputRtpStreamId |
| Gets the output RTP stream identifier. More... | |
| (bool) | - outputSynchronizable |
| Gets whether output is synchronizable. More... | |
| (long long) | - outputSynchronizationSource |
| Gets the output synchronization source. More... | |
| (void) | - processControlFrames: |
| Processes control frames. More... | |
| (FMLiveSwitchError *) | - processSdpMediaDescriptionFromOutputWithMediaDescription:isOffer:isLocalDescription: |
| Processes a local SDP media description from an output. More... | |
| (void) | - processSourceStatsFromOutputWithSourceStats: |
| Processes source stats from an output. More... | |
| (void) | - processTrackStatsFromOutputWithTrackStats: |
| Processes track stats from an output. More... | |
| (void) | - removeOnDisabledChange: |
| Removes a handler that is raised when the Disabled property changes state. More... | |
| (void) | - removeOnDisabledChangeWithCaller: |
| Removes a handler that is raised when the Disabled property changes state. More... | |
| (void) | - removeOnPausedChange: |
| Removes a handler that is raised when the Paused property changes state. More... | |
| (void) | - removeOnProcessControlFrames: |
| Removes a handler that is raised when control frames are processed. More... | |
| (void) | - removeOnRaiseControlFrameResponses: |
| Removes a handler that is raised when a control frame response is raised. More... | |
| (void) | - removeOnRaiseFrame: |
| Removes a handler that is raised when a frame is raised. More... | |
| (long long) | - systemDelay |
| Gets the system delay in ticks. More... | |
| (int) | - targetOutputBitrate |
| Gets the target output bitrate, in kbps. More... | |
| (FMLiveSwitchEncodingInfo *) | - targetOutputEncoding |
| Gets the target output encoding. More... | |
Instance Methods inherited from <FMLiveSwitchIOutput> | |
| (void) | - addOutput: |
| Adds an output. More... | |
| (void) | - addOutputs: |
| Adds some outputs. More... | |
| (NSObject< FMLiveSwitchIInput > *) | - output |
| Gets the output. More... | |
| (FMLiveSwitchMediaFormat *) | - outputFormat |
| Gets the output format. More... | |
| (NSMutableArray *) | - outputs |
| Gets the outputs. More... | |
| (NSString *) | - pipelineJsonFromOutput |
| Gets the pipeline JSON from an output. More... | |
| (bool) | - removeOutput: |
| Removes an output. More... | |
| (void) | - removeOutputs |
| Removes all outputs. More... | |
| (void) | - removeOutputs: |
| Removes some outputs. More... | |
Instance Methods inherited from <FMLiveSwitchIElement> | |
| (NSString *) | - externalId |
| Gets the external identifier. More... | |
| (NSString *) | - id |
| Gets the identifier. More... | |
| (NSString *) | - pipelineJson |
| Gets the pipeline JSON with this as the central point. More... | |
| (void) | - setExternalId: |
| Sets the external identifier. More... | |
Instance Methods inherited from <FMLiveSwitchIMediaElement> | |
| (bool) | - deactivated |
| Gets a value indicating whether this instance is deactivated. More... | |
| (bool) | - destroy |
| Destroys this instance. More... | |
| (bool) | - disabled |
| Gets a value indicating whether this instance is disabled. More... | |
| (bool) | - muted |
| Gets a value indicating whether this instance is muted. More... | |
| (bool) | - paused |
| Gets a value indicating whether this instance is paused. More... | |
| (bool) | - persistent |
| Gets a value indicating whether this instance is persistent. More... | |
| (void) | - setDeactivated: |
| Sets a value indicating whether this instance is deactivated. More... | |
| (void) | - setMuted: |
| Sets a value indicating whether this instance is muted. More... | |
Class Methods | |
| (instancetype) | + audioUnitSinkWithConfig: |
| Creates an audio sink with the specified audio configuration. More... | |
| (instancetype) | + audioUnitSinkWithInput: |
| Creates an audio sink with a single input. More... | |
| (instancetype) | + audioUnitSinkWithInputs: |
| Creates an audio sink with multiple inputs. More... | |
Class Methods inherited from FMLiveSwitchAudioSink | |
| (FMLiveSwitchAudioSink *) | + audioSink |
| Initializes a new instance of the FMLiveSwitchAudioSink class. More... | |
| (FMLiveSwitchAudioSink *) | + audioSinkWithInputFormat: |
| Initializes a new instance of the FMLiveSwitchAudioSink class. More... | |
Class Methods inherited from FMLiveSwitchMediaSink | |
| (FMLiveSwitchMediaSink *) | + mediaSink |
| Initializes a new instance of the FMLiveSwitchMediaSink`8 class. More... | |
| (FMLiveSwitchMediaSink *) | + mediaSinkWithInputFormat: |
| Initializes a new instance of the FMLiveSwitchMediaSink`8 class. More... | |
Additional Inherited Members | |
Protected Attributes inherited from FMLiveSwitchMediaSink | |
| __pad0__: FMLiveSwitchMediaSinkBase<FMLiveSwitchIMediaInput | |
| FMLiveSwitchIInput | |
| FMLiveSwitchIMediaElement | |
Audio sink that writes decoded audio to the centralized AudioSessionManager mixer.
@discussion This sink receives decoded audio frames from IceLink and writes them to the AudioSessionManager's mixing buffer. The AudioSessionManager combines audio from all active sinks and plays the mixed output through its shared VPIO AudioUnit.
Key Architectural Points:
Lifecycle:
Audio Flow:
Multiple Sinks:
Thread Safety:
Comparison to Traditional Approach:
OLD (Per-Sink AudioUnit):
NEW (Centralized Mixer):
Usage:
| - (NSString *) audioSessionId |
Returns the unique identifier used to register this sink with AudioSessionManager.
sinkMediaId.@discussion Used by the telemetry layer to correlate this sink with its remote RTP SSRC (see FMLiveSwitchCocoaServerConnectionTelemetry).
| + (instancetype) audioUnitSinkWithConfig: | (FMLiveSwitchAudioConfig *) | config |
Creates an audio sink with the specified audio configuration.
| config | The audio configuration (sample rate, channel count, etc.). |
@discussion This creates a sink configured for the given audio format. The sink will register with AudioSessionManager when initialized.
Typical configurations:
The configuration should match the audio being received from IceLink.
Example:
| + (instancetype) audioUnitSinkWithInput: | (NSObject<FMLiveSwitchIAudioOutput> *) | input |
Creates an audio sink with a single input.
| input | The audio output to connect as input (typically from decoder). |
@discussion This convenience method creates a sink and connects an input in one step. The configuration is derived from the input's audio format.
Example:
| + (instancetype) audioUnitSinkWithInputs: | (NSMutableArray *) | inputs |
Creates an audio sink with multiple inputs.
| inputs | Array of audio outputs to connect as inputs. |
@discussion This creates a sink with multiple audio inputs that will be mixed together. All inputs must have the same audio format (sample rate, channels, etc.).
Example:
| - (NSString *) label |
Gets the label/name of this audio sink implementation.
@discussion The label varies by platform:
This is primarily used for logging and debugging.
Implements FMLiveSwitchMediaSink.
| - (void) setUseVoiceProcessingIO: | (bool) | useVoiceProcessingIO |
Legacy setter - has no effect (VPIO configuration managed by AudioSessionManager).
| useVoiceProcessingIO | Ignored parameter. |
@discussion This setter is maintained for API compatibility but has no effect. To configure VPIO vs RemoteIO, use:
| - (bool) useVoiceProcessingIO |
Legacy property - always returns YES (VPIO always used via AudioSessionManager).
@discussion This property is maintained for API compatibility but has no effect. The sink always uses the shared VPIO from AudioSessionManager. To configure VPIO vs RemoteIO, use AudioSessionManager.useVoiceProcessingIO instead.