Class MediaSink<TIOutput, TIOutputCollection, TIInput, TSink, TFrame, TBuffer, TBufferCollection, TFormat>
A media sink.
Inheritance
Implements
Inherited Members
Namespace: FM.LiveSwitch
Assembly: FM.LiveSwitch.dll
Syntax
public abstract class MediaSink<TIOutput, TIOutputCollection, TIInput, TSink, TFrame, TBuffer, TBufferCollection, TFormat> : MediaSinkBase, IMediaInput<TIOutput, TIInput, TFrame, TBuffer, TBufferCollection, TFormat>, IInput<TIOutput, TIInput, TFrame, TBuffer, TBufferCollection, TFormat>, IMediaElement, IElement where TIOutput : class, IMediaOutput<TIOutput, TIInput, TFrame, TBuffer, TBufferCollection, TFormat> where TIOutputCollection : IMediaOutputCollection<TIOutput, TIInput, TFrame, TBuffer, TBufferCollection, TFormat, TIOutputCollection> where TIInput : class, IMediaInput<TIOutput, TIInput, TFrame, TBuffer, TBufferCollection, TFormat> where TSink : MediaSink<TIOutput, TIOutputCollection, TIInput, TSink, TFrame, TBuffer, TBufferCollection, TFormat>, TIInput where TFrame : MediaFrame<TBuffer, TBufferCollection, TFormat, TFrame> where TBuffer : MediaBuffer<TFormat, TBuffer> where TBufferCollection : MediaBufferCollection<TBuffer, TBufferCollection, TFormat> where TFormat : MediaFormat<TFormat>
Type Parameters
| Name | Description |
|---|---|
| TIOutput | The type of the output interface. |
| TIOutputCollection | The type of the output interface collection. |
| TIInput | The type of the input interface. |
| TSink | The type of the sink. |
| TFrame | The type of the frame. |
| TBuffer | The type of the buffer. |
| TBufferCollection | The type of the buffer collection. |
| TFormat | The type of the format. |
Constructors
MediaSink()
Initializes a new instance of the MediaSink<TIOutput, TIOutputCollection, TIInput, TSink, TFrame, TBuffer, TBufferCollection, TFormat> class.
Declaration
public MediaSink()
MediaSink(TFormat)
Initializes a new instance of the MediaSink<TIOutput, TIOutputCollection, TIInput, TSink, TFrame, TBuffer, TBufferCollection, TFormat> class.
Declaration
public MediaSink(TFormat inputFormat)
Parameters
| Type | Name | Description |
|---|---|---|
| TFormat | inputFormat | The input format. |
Properties
AllowDiagnosticTimer
Gets whether this media sink is allowed to be timed.
Declaration
protected virtual bool AllowDiagnosticTimer { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
AllowInputRateTimer
Gets whether this media pipe input rate is allowed to be timed.
Declaration
protected virtual bool AllowInputRateTimer { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
Content
Gets the content descriptor.
Declaration
public virtual string Content { get; }
Property Value
| Type | Description |
|---|---|
| System.String |
Deactivated
Gets or sets a value indicating whether this sink is deactivated. Deactivating a sink disables it until it is activated again. A deactivated sink will not process any frames. Alias for InputDeactivated.
Declaration
public bool Deactivated { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
Disabled
Gets or sets a value indicating whether this sink is disabled. A sink is automatically disabled if it is deactivated. A disabled sink will not accept frames raised by its inputs. Setting the value of MediaSink.Disabled is deprecated. Set MediaSink.Deactivated instead.
Declaration
public virtual bool Disabled { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
Input
Gets or sets the input.
Declaration
public TIOutput Input { get; set; }
Property Value
| Type | Description |
|---|---|
| TIOutput |
InputDeactivated
Gets or sets whether input is deactivated.
Declaration
public bool InputDeactivated { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
InputFormat
Gets the input format.
Declaration
public TFormat InputFormat { get; }
Property Value
| Type | Description |
|---|---|
| TFormat |
InputMuted
Gets or sets whether input is muted.
Declaration
public bool InputMuted { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
InputRtpStreamId
Gets or sets the input RTP stream identifier. If the input RTP stream identifier is null (unset), then getting this property returns the first valid output RTP stream identifier from the array of Inputs, or null if they are all unset.
Declaration
public string InputRtpStreamId { get; set; }
Property Value
| Type | Description |
|---|---|
| System.String |
Inputs
Gets or sets the inputs.
Declaration
public TIOutput[] Inputs { get; set; }
Property Value
| Type | Description |
|---|---|
| TIOutput[] |
InputSynchronizationSource
Gets or sets the input synchronization source. If the input synchronization source is -1 (unset), then getting this property returns the first valid output synchronization source from the array of Inputs, or -1 if they are all unset.
Declaration
public long InputSynchronizationSource { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Int64 |
IsMixer
Gets whether this sink processes media from different sources.
Declaration
protected virtual bool IsMixer { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
Label
Gets a label that identifies this class.
Declaration
public abstract string Label { get; }
Property Value
| Type | Description |
|---|---|
| System.String |
MaxInputBitrate
Gets or sets the maximum allowed input bitrate, in kbps. A value of -1 indicates unset (no maximum). Returns -1 by default.
Declaration
public virtual int MaxInputBitrate { get; protected set; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
MaxInputEncoding
Gets or sets the maximum allowed input encoding.
Declaration
public virtual EncodingInfo MaxInputEncoding { get; protected set; }
Property Value
| Type | Description |
|---|---|
| EncodingInfo |
MinInputBitrate
Gets or sets the minimum allowed input bitrate, in kbps. A value of -1 indicates unset (no minimum). Returns -1 by default.
Declaration
public virtual int MinInputBitrate { get; protected set; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
MinInputEncoding
Gets or sets the minimum allowed input encoding.
Declaration
public virtual EncodingInfo MinInputEncoding { get; protected set; }
Property Value
| Type | Description |
|---|---|
| EncodingInfo |
Muted
Gets or sets whether input is muted. Alias for InputMuted.
Declaration
public bool Muted { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
Output
Gets or sets the current output.
Declaration
public virtual SinkOutput Output { get; set; }
Property Value
| Type | Description |
|---|---|
| SinkOutput |
OverConstrained
Gets whether this sink is over-constrained. A sink is over-constrained if it's input is over-constrained.
Declaration
public virtual bool OverConstrained { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
OverConstrainedBitrate
Gets whether the sink bitrate is over-constrained. A sink bitrate is over-constrained if the input bitrate is over-constrained.
Declaration
public virtual bool OverConstrainedBitrate { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
OverConstrainedInput
Gets whether the input is over-contrained. An input is over-constrained if it's input bitrate is over-contrained.
Declaration
public virtual bool OverConstrainedInput { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
OverConstrainedInputBitrate
Gets whether the minimum allowed input bitrate exceeds the maximum allowed input bitrate.
Declaration
public bool OverConstrainedInputBitrate { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
Paused
Gets a value indicating whether this sink is paused.
Declaration
public bool Paused { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
Persistent
Gets or sets a value indicating whether this instance is persistent.
If true, this instance will not be destroyed unless
Destroy() is called explicitly on this instance.
It will survive destruction of any parent elements that are
being destroyed.
Declaration
public bool Persistent { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
PipelineJson
Gets the pipeline JSON with this as the central point.
Declaration
public string PipelineJson { get; }
Property Value
| Type | Description |
|---|---|
| System.String |
PipelineJsonFromInput
Gets the pipeline JSON from an input.
Declaration
public string PipelineJsonFromInput { get; }
Property Value
| Type | Description |
|---|---|
| System.String |
ProcessFramePolicy
Gets or sets the ProcessFramePolicy for this media input.
Declaration
public ProcessFramePolicy ProcessFramePolicy { get; set; }
Property Value
| Type | Description |
|---|---|
| ProcessFramePolicy |
State
Gets the state.
Declaration
public MediaSinkState State { get; }
Property Value
| Type | Description |
|---|---|
| MediaSinkState |
SystemDelay
Gets or sets the system delay in ticks.
Declaration
public long SystemDelay { get; protected set; }
Property Value
| Type | Description |
|---|---|
| System.Int64 |
Methods
AddInput(TIOutput)
Adds an input.
Declaration
public void AddInput(TIOutput input)
Parameters
| Type | Name | Description |
|---|---|---|
| TIOutput | input | The input. |
AddInputs(TIOutput[])
Adds some inputs.
Declaration
public void AddInputs(TIOutput[] inputs)
Parameters
| Type | Name | Description |
|---|---|---|
| TIOutput[] | inputs | The inputs. |
ChangeOutput(SinkOutput)
Changes the current output.
Declaration
public virtual Future<object> ChangeOutput(SinkOutput output)
Parameters
| Type | Name | Description |
|---|---|---|
| SinkOutput | output | The output. |
Returns
| Type | Description |
|---|---|
| Future<System.Object> |
CreateOutputCollection(TIInput)
Creates an output collection.
Declaration
protected abstract TIOutputCollection CreateOutputCollection(TIInput input)
Parameters
| Type | Name | Description |
|---|---|---|
| TIInput | input | The input. |
Returns
| Type | Description |
|---|---|
| TIOutputCollection |
Destroy()
Destroys this instance.
Declaration
public bool Destroy()
Returns
| Type | Description |
|---|---|
| System.Boolean |
DoDestroy()
Destroys this instance.
Declaration
protected abstract void DoDestroy()
DoPostProcessFrame(TFrame, TBuffer)
Post-processes a frame.
Declaration
protected virtual void DoPostProcessFrame(TFrame frame, TBuffer inputBuffer)
Parameters
| Type | Name | Description |
|---|---|---|
| TFrame | frame | The frame. |
| TBuffer | inputBuffer | The input buffer. |
DoPreProcessFrame(TFrame, TBuffer)
Pre-processes a frame.
Declaration
protected virtual void DoPreProcessFrame(TFrame frame, TBuffer inputBuffer)
Parameters
| Type | Name | Description |
|---|---|---|
| TFrame | frame | The frame. |
| TBuffer | inputBuffer | The input buffer. |
DoProcessControlFrameResponses(MediaControlFrame[])
Processes control frame responses.
Declaration
protected virtual void DoProcessControlFrameResponses(MediaControlFrame[] controlFrameResponses)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaControlFrame[] | controlFrameResponses | The control frame responses. |
DoProcessFrame(TFrame, TBuffer)
Processes a frame.
Declaration
protected abstract void DoProcessFrame(TFrame frame, TBuffer inputBuffer)
Parameters
| Type | Name | Description |
|---|---|---|
| TFrame | frame | The frame. |
| TBuffer | inputBuffer | The input buffer. |
DoProcessSdpMediaDescription(MediaDescription, Boolean, Boolean)
Processes a remote SDP media description.
Declaration
protected virtual Error DoProcessSdpMediaDescription(MediaDescription mediaDescription, bool isOffer, bool isLocalDescription)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaDescription | mediaDescription | The media description. |
| System.Boolean | isOffer | if set to |
| System.Boolean | isLocalDescription | if set to |
Returns
| Type | Description |
|---|---|
| Error |
DoProcessSinkStatsFromInput(MediaSinkStats)
Processes sink stats from an input.
Declaration
protected virtual void DoProcessSinkStatsFromInput(MediaSinkStats sinkStats)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaSinkStats | sinkStats | The stats. |
DoProcessTrackStatsFromInput(MediaTrackStats)
Processes track stats from an input.
Declaration
protected virtual void DoProcessTrackStatsFromInput(MediaTrackStats trackStats)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaTrackStats | trackStats | The track stats. |
GetCcmSequenceNumber()
Gets the CCM sequence number.
Declaration
public int GetCcmSequenceNumber()
Returns
| Type | Description |
|---|---|
| System.Int32 |
GetOutputs()
Gets the available outputs.
Declaration
public virtual Future<SinkOutput[]> GetOutputs()
Returns
| Type | Description |
|---|---|
| Future<SinkOutput[]> |
GetPipelineSystemDelay(TFormat)
Gets the total pipeline system delay in ticks for a given output format.
Declaration
public long GetPipelineSystemDelay(TFormat outputFormat)
Parameters
| Type | Name | Description |
|---|---|---|
| TFormat | outputFormat | The output format. |
Returns
| Type | Description |
|---|---|
| System.Int64 | The total pipeline system delay in ticks. |
HasInput(TIOutput)
Determines whether this pipe has the specified input.
Declaration
public bool HasInput(TIOutput input)
Parameters
| Type | Name | Description |
|---|---|---|
| TIOutput | input | The input. |
Returns
| Type | Description |
|---|---|
| System.Boolean |
IncrementCcmSequenceNumber()
Increments the CCM sequence number.
Declaration
public void IncrementCcmSequenceNumber()
InputAdded(TIOutput)
Called when an input is added.
Declaration
protected virtual void InputAdded(TIOutput input)
Parameters
| Type | Name | Description |
|---|---|---|
| TIOutput | input | The input. |
InputRemoved(TIOutput)
Called when an input is removed.
Declaration
protected virtual void InputRemoved(TIOutput input)
Parameters
| Type | Name | Description |
|---|---|---|
| TIOutput | input | The input. |
ProcessControlFrameResponse(MediaControlFrame)
Processes a control frame response.
Declaration
public void ProcessControlFrameResponse(MediaControlFrame controlFrameResponse)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaControlFrame | controlFrameResponse | The control frame response. |
ProcessControlFrameResponses(MediaControlFrame[])
Processes control frame responses.
Declaration
public void ProcessControlFrameResponses(MediaControlFrame[] controlFrameResponses)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaControlFrame[] | controlFrameResponses | The control frame responses. |
ProcessFrame(TFrame)
Processes a frame.
Declaration
public virtual bool ProcessFrame(TFrame frame)
Parameters
| Type | Name | Description |
|---|---|---|
| TFrame | frame | The frame. |
Returns
| Type | Description |
|---|---|
| System.Boolean |
ProcessSdpMediaDescriptionFromInput(MediaDescription, Boolean, Boolean)
Processes a remote SDP media description from an output.
Declaration
public Error ProcessSdpMediaDescriptionFromInput(MediaDescription mediaDescription, bool isOffer, bool isLocalDescription)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaDescription | mediaDescription | The media description. |
| System.Boolean | isOffer | if set to |
| System.Boolean | isLocalDescription | if set to |
Returns
| Type | Description |
|---|---|
| Error |
ProcessSinkStatsFromInput(MediaSinkStats)
Processes sink stats from an input.
Declaration
public void ProcessSinkStatsFromInput(MediaSinkStats sinkStats)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaSinkStats | sinkStats | The sink stats. |
ProcessTrackStatsFromInput(MediaTrackStats)
Processes track stats from an input.
Declaration
public void ProcessTrackStatsFromInput(MediaTrackStats trackStats)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaTrackStats | trackStats | The track stats. |
RaiseControlFrame(MediaControlFrame)
Raises a control frame.
Declaration
protected void RaiseControlFrame(MediaControlFrame controlFrame)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaControlFrame | controlFrame | The control frame. |
RaiseControlFrame(MediaControlFrame, TIOutput[])
Raises a control frame.
Declaration
protected void RaiseControlFrame(MediaControlFrame controlFrame, TIOutput[] inputs)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaControlFrame | controlFrame | The control frame. |
| TIOutput[] | inputs | The inputs. |
RaiseControlFrames(MediaControlFrame[])
Raises control frames.
Declaration
protected void RaiseControlFrames(MediaControlFrame[] controlFrames)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaControlFrame[] | controlFrames | The control frames. |
RaiseControlFrames(MediaControlFrame[], TIOutput[])
Raises control frames.
Declaration
protected void RaiseControlFrames(MediaControlFrame[] controlFrames, TIOutput[] inputs)
Parameters
| Type | Name | Description |
|---|---|---|
| MediaControlFrame[] | controlFrames | The control frames. |
| TIOutput[] | inputs | The inputs. |
RaiseDisabledChange()
Raises the OnDisabledChange event.
Declaration
protected void RaiseDisabledChange()
RemoveInput(TIOutput)
Removes an input.
Declaration
public bool RemoveInput(TIOutput input)
Parameters
| Type | Name | Description |
|---|---|---|
| TIOutput | input | The input. |
Returns
| Type | Description |
|---|---|
| System.Boolean |
RemoveInputs()
Removes all inputs.
Declaration
public void RemoveInputs()
RemoveInputs(TIOutput[])
Removes some inputs.
Declaration
public void RemoveInputs(TIOutput[] inputs)
Parameters
| Type | Name | Description |
|---|---|---|
| TIOutput[] | inputs | The inputs. |
ToString()
Returns a string that represents this instance.
Declaration
public override string ToString()
Returns
| Type | Description |
|---|---|
| System.String |
Overrides
TrySetInputFormat(TFrame)
Sets the input format, if not set, using the frame's last buffer format.
Declaration
protected bool TrySetInputFormat(TFrame frame)
Parameters
| Type | Name | Description |
|---|---|---|
| TFrame | frame | The frame. |
Returns
| Type | Description |
|---|---|
| System.Boolean |
|
UpdateDisabled()
Updates the disabled property.
Declaration
protected bool UpdateDisabled()
Returns
| Type | Description |
|---|---|
| System.Boolean |
Events
OnDisabledChange
Raised when the Disabled property changes state.
Declaration
public event Action0 OnDisabledChange
Event Type
| Type | Description |
|---|---|
| Action0 |
OnPausedChange
Raised when the Paused property changes state.
Declaration
public event Action0 OnPausedChange
Event Type
| Type | Description |
|---|---|
| Action0 |
OnProcessControlFrameResponses
Raised when control frame responses are processed.
Declaration
public event Action1<MediaControlFrame[]> OnProcessControlFrameResponses
Event Type
| Type | Description |
|---|---|
| Action1<MediaControlFrame[]> |
OnProcessedControlFrameResponses
Raised when control frame responses have been processed.
Declaration
public event Action1<MediaControlFrame[]> OnProcessedControlFrameResponses
Event Type
| Type | Description |
|---|---|
| Action1<MediaControlFrame[]> |
OnProcessedFrame
Raised when a frame has been processed.
Declaration
public event Action1<TFrame> OnProcessedFrame
Event Type
| Type | Description |
|---|---|
| Action1<TFrame> |
OnProcessFrame
Raised when a frame is being processed.
Declaration
public event Action1<TFrame> OnProcessFrame
Event Type
| Type | Description |
|---|---|
| Action1<TFrame> |
OnProcessFrameException
Raised when an exception is thrown while processing a frame.
Declaration
public event Action2<TFrame, Exception> OnProcessFrameException
Event Type
| Type | Description |
|---|---|
| Action2<TFrame, System.Exception> |
OnProcessFrameWithCaller
Raised when a frame is being processed.
Declaration
public event Action2<object, TFrame> OnProcessFrameWithCaller
Event Type
| Type | Description |
|---|---|
| Action2<System.Object, TFrame> |
OnRaiseControlFrames
Raised when control frames are raised.
Declaration
public event Action1<MediaControlFrame[]> OnRaiseControlFrames
Event Type
| Type | Description |
|---|---|
| Action1<MediaControlFrame[]> |
OnRaisedControlFrames
Raised when control frames have been raised.
Declaration
public event Action1<MediaControlFrame[]> OnRaisedControlFrames
Event Type
| Type | Description |
|---|---|
| Action1<MediaControlFrame[]> |
OnStateChange
Raised when the state changes.
Declaration
public event Action1<TSink> OnStateChange
Event Type
| Type | Description |
|---|---|
| Action1<TSink> |