Class VirtualRtpSource
Represents a virtual RTP source that accepts raw RTP packets and produces decoded media samples.
public class VirtualRtpSource : INetworkSource, IMediaSource, IReferenceable, IDisposable, INetworkEndPoint, INetworkStat
- Inheritance
-
VirtualRtpSource
- Implements
- Inherited Members
Constructors
VirtualRtpSource()
Initializes a new instance of the VirtualRtpSource class.
public VirtualRtpSource()
Properties
Accept
Whether source is accepted or not
public bool Accept { get; set; }
Property Value
Capabilities
Gets the list of source capabilities
public List<SourceCapability> Capabilities { get; }
Property Value
CurrentStat
Gets current network statistics
public NetworkStat CurrentStat { get; }
Property Value
EndPoint
Connected end point info
public IPProtoEndPoint EndPoint { get; }
Property Value
IgnoreSequenceNo
Gets or sets whether sequence number continuity should be ignored. Default value if false, i.e. sequence number continuity checkup is enabled. Use with care (!) because disabled continuity checkup can produce corrupted frames.
public bool IgnoreSequenceNo { get; set; }
Property Value
IsDisposed
Can be used to check whether object is already disposed and can't be used anymore
public bool IsDisposed { get; }
Property Value
IsNetworkSource
Whether it's a network or local source.
public bool IsNetworkSource { get; }
Property Value
Parameters
Gets or sets source parameters
public SourceParameters Parameters { get; set; }
Property Value
PublishingPath
Publishing point name extracted from the source URI or by any other means (depends on the protocol)
public string PublishingPath { get; set; }
Property Value
ReceivedUri
Source URI when present (depends on the protocol)
public string ReceivedUri { get; set; }
Property Value
RefCount
Gets current reference count of the object
public int RefCount { get; }
Property Value
SocketError
Socket error got on disconnection
public ExtendedSocketError SocketError { get; }
Property Value
State
Current source state
public MediaState State { get; }
Property Value
StreamCount
Total stream count of the source
public int StreamCount { get; }
Property Value
UniqueId
Unique source id
public Guid UniqueId { get; set; }
Property Value
Uri
URI to be opened. Meaningless for current class
public string Uri { get; set; }
Property Value
Methods
AddRef()
Add reference
public void AddRef()
AddStream(MediaType)
Add media type of media stream. At least one media stream shall be added. Normally one video and/or one audio stream should be added. Multiple video or multiple audio streams are possible but it depends on the sink whether they all be present in the output. Metadata must have PayloadType entry with RTP payload type of the stream.
public void AddStream(MediaType mediaType)
Parameters
mediaTypeMediaTypeType of media stream to add
AddStreams(string)
Adds media streams from an SDP description string.
public void AddStreams(string sdp)
Parameters
sdpstringThe SDP string describing the media streams.
Dispose()
Releases all resources used by the VirtualRtpSource class.
public void Dispose()
GetMediaType(int)
Gets media type of the stream
public MediaType GetMediaType(int streamIndex)
Parameters
streamIndexintStream index to get media type for
Returns
- MediaType
Media type of requested stream
OnError(string)
Generate source error with provided error description
public void OnError(string errorDescription)
Parameters
errorDescriptionstringError description
Open()
Meaningless for current class because it's supposed that object is created if source media for this class is ready
public void Open()
PushRtpPacket(byte[], int, int, bool)
Push new RTP packet. Packet must be a complete raw RTP packet, including RTP headers, received from a socket or by any other means.
public void PushRtpPacket(byte[] rtpPacket, int offset, int length, bool discontinuity = false)
Parameters
rtpPacketbyte[]RTP packet data
offsetintBuffer offset to read data from
lengthintData length
discontinuityboolWhether it's a discontinuity
PushRtpPacket(int, int, uint, uint, bool, byte[], int, int, bool)
Push new RTP packet with already parsed header
public void PushRtpPacket(int payloadType, int sequenceNo, uint timestamp, uint ssrc, bool marker, byte[] payload, int payloadOffset, int payloadLength, bool discontinuity = false)
Parameters
payloadTypeintPayload type
sequenceNointSequence number
timestampuintTimestamp
ssrcuintSSRS
markerboolMarker bit
payloadbyte[]Payload data without header
payloadOffsetintPayload data offset
payloadLengthintPayload data length
discontinuityboolWhether it's a discontinuity
PushRtpPacket(VersatileBuffer)
Push new RTP packet. VersatileBuffer must contain a complete raw RTP packet, including RTP headers, received from a socket or by any other means.
public void PushRtpPacket(VersatileBuffer rtpPacket)
Parameters
rtpPacketVersatileBufferVersatileBuffer with RTP packet
Release()
Release reference. If reference count becomes 0 then Dispose() method is called. Calling object must not use current object after this call.
public void Release()
SetDesiredOutputType(int, MediaType)
Sets desired output media type of the specified stream. Desired media type could be an incomplete media type specifying only necessary parameters. Source should implement decoding or encoding internally to provide requested output type. It is not guaranteed though that an actual output type will match a desired type exactly. GetMediaType function should be used to obtain actual output media type.
public Task SetDesiredOutputType(int streamIndex, MediaType desiredType)
Parameters
streamIndexintStream index to set desired output media type for
desiredTypeMediaTypeDesired media type
Returns
Start()
Start the source
public void Start()
Stop()
Stop the source
public void Stop()
Events
Error
Occurs when an error is encountered during streaming.
public event EventHandler<ErrorEventArgs> Error
Event Type
NewSample
Occurs when a new media sample is ready.
public event EventHandler<NewSampleEventArgs> NewSample
Event Type
NewStream
Occurs when a new stream has been created.
public event EventHandler<NewStreamEventArgs> NewStream
Event Type
StateChanged
Occurs when the source state changes.
public event EventHandler<MediaState> StateChanged