Namespace SIPSorcery.Net
Classes
ChecklistEntry
A check list entry represents an ICE candidate pair (local candidate + remote candidate) that is being checked for connectivity. If the overall ICE session does succeed it will be due to one of these checklist entries successfully completing the ICE checks.
CRC32C
DtlsSrtpClient
DtlsSrtpServer
DtlsSrtpTransport
DtlsUtils
H264Depacketiser
Based in https://github.com/BogdanovKirill/RtspClientSharp/blob/master/RtspClientSharp/MediaParsers/H264VideoPayloadParser.cs Distributed under MIT License
@author raf.csoares@kyubinteractive.com
H264Packetiser
HepChunk
HepPacket
This class can produce a serialised Homer Encapsulation Protocol (HEP) packet. The implementation has only been done to accommodate packet types required by this library (at the time of writing the sole type is SIP).
IceServer
If ICE servers (STUN or TURN) are being used with the session this class is used to track the connection state for each server that gets used.
IPAddressHelper
MediaStreamStatusType
MediaStreamTrack
Mjpeg
Mjpeg.Tags
Ntp64Timestamp
RawPacket
ReceptionReport
Maintains the reception statistics for a received RTP stream.
ReceptionReportSample
Represents a point in time sample for a reception report.
RTCAnswerOptions
Options for creating an SDP answer.
RTCCertificate
Represents a certificate used to authenticate WebRTC communications.
RTCCertificate2
Represents a certificate used to authenticate WebRTC communications.
RTCConfiguration
Defines the parameters to configure how a new RTCPeerConnection is created.
RTCDataChannel
A WebRTC data channel is generic transport service that allows peers to exchange generic data in a peer to peer manner.
RTCDataChannelInit
RTCDtlsFingerprint
Represents a fingerprint of a certificate used to authenticate WebRTC communications.
RTCIceCandidate
RTCIceCandidateInit
Represents an ICE candidate and associated properties that link it to the SDP.
RTCIceServer
Used to specify properties for a STUN or TURN server that can be used by an ICE agent.
RTCOfferOptions
RTCPBye
RTCP Goodbye packet as defined in RFC3550. The BYE packet indicates that one or more sources are no longer active.
RTCPCompoundPacket
Represents an RTCP compound packet consisting of 1 or more RTCP packets combined together in a single buffer. According to RFC3550 RTCP transmissions should always have at least 2 RTCP packets (a sender/receiver report and an SDES report). This implementation does not enforce that constraint for received reports but does for sends.
RTCPeerConnection
Represents a WebRTC RTCPeerConnection.
RTCPeerSctpAssociation
RTCPFeedback
RTCPHeader
RTCP Header as defined in RFC3550.
RTCPReceiverReport
RTCPReportTypes
RTCPSDesReport
RTCP Source Description (SDES) report as defined in RFC3550. Only the mandatory CNAME item is supported.
RTCPSenderReport
An RTCP sender report is for use by active RTP senders.
RTCPSession
Represents an RTCP session intended to be used in conjunction with an RTP session. This class needs to get notified of all RTP sends and receives and will take care of RTCP reporting.
RTCSctpTransport
Represents an SCTP transport that uses a DTLS transport.
RTCSessionDescription
RTCSessionDescriptionInit
Initialiser for the RTCSessionDescription instance.
RTPChannel
A communications channel for transmitting and receiving Real-time Protocol (RTP) and Real-time Control Protocol (RTCP) packets. This class performs the socket management functions.
RTPEvent
RTPHeader
RtpIceChannel
An RTP ICE Channel carries out connectivity checks with a remote peer in an attempt to determine the best destination end point to communicate with the remote party.
RtpIceChannel.IceTcpReceiver
RTPPacket
RTPSession
The RTPSession class is the primary point for interacting with the Real-Time Protocol. It manages all the resources required for setting up and then sending and receiving RTP packets. This class IS designed to be inherited by child classes and for child classes to add audio and video processing logic.
RtpSessionConfig
RtpVideoFramer
RtpVP8Header
Representation of the VP8 RTP header as specified in RFC7741 https://tools.ietf.org/html/rfc7741.
RTSPConstants
RTSPEntityHeaders
RTSPHeader
RTSPHeaders
RTSPMessage
RTSPMethods
RTSPRequest
RFC2326 6.1: Request-Line = Method SP Request-URI SP RTSP-Version CRLF
RTSPResponse
RFC2326 7.1: Status-Line = RTSP-Version SP Status-Code SP Reason-Phrase CRLF
RTSPResponseStatusCodes
RTSPTransportHeader
Represents the Transport header used in RTSP requests and responses.
RTSPURL
RFC2326 3.2:
rtsp_URL = ( "rtsp:" | "rtspu:" )
"//" host [ ":" port ] [ abs_path ]
host = <A legal Internet host domain name of IP address (in dotted decimal form), as defined by Section 2.1 of RFC 1123 cite{rfc1123}>
port = *DIGIT
abs_path is defined in RFC2616 (HTTP 1.1) 3.2.1 which refers to RFC2396 (URI Generic Syntax)
abs_path = "/" path_segments
path_segments = segment *( "/" segment )
segment = *pchar *( ";" param )
param = *pchar
pchar = unreserved | escaped | ":" | "@" | "&" | "=" | "+" | "$" | ","
SctpAbortChunk
The ABORT chunk is sent to the peer of an association to close the association.The ABORT chunk may contain Cause Parameters to inform the receiver about the reason of the abort.DATA chunks MUST NOT be bundled with ABORT.Control chunks (except for INIT, INIT ACK, and SHUTDOWN COMPLETE) MAY be bundled with an ABORT, but they MUST be placed before the ABORT in the SCTP packet or they will be ignored by the receiver.
SctpAssociation
An SCTP association represents an established connection between two SCTP endpoints. This class also represents the Transmission Control Block (TCB) referred to in RFC4960.
SctpChunk
SctpDataChunk
SctpDataReceiver
Processes incoming data chunks and handles fragmentation and congestion control. This class does NOT handle in order delivery. Different streams on the same association can have different ordering requirements so it's left up to each stream handler to deal with full frames as they see fit.
SctpDataSender
SctpErrorChunk
An endpoint sends this chunk to its peer endpoint to notify it of certain error conditions. It contains one or more error causes. An Operation Error is not considered fatal in and of itself, but may be used with an ABORT chunk to report a fatal condition.
SctpInitChunk
This class is used to represent both an INIT and INIT ACK chunk. The only structural difference between them is the INIT ACK requires the Cookie variable parameter to be set. The INIT chunk is used to initiate an SCTP association between two endpoints. The INIT ACK chunk is used to respond to an incoming INIT chunk from a remote peer.
SctpPacket
An SCTP packet is composed of a common header and chunks. A chunk contains either control information or user data.
SctpPadding
SctpSackChunk
This chunk is sent to the peer endpoint to acknowledge received DATA chunks and to inform the peer endpoint of gaps in the received sub-sequences of DATA chunks as represented by their Transmission Sequence Numbers (TSN).
SctpShutdownChunk
An endpoint in an association MUST use this chunk to initiate a graceful close of the association with its peer.
SctpTlvChunkParameter
Represents the a variable length parameter field for use within a Chunk. All chunk parameters use the same underlying Type-Length-Value (TLV) format but then specialise how the fields are used.
SctpTransport
Contains the common methods that an SCTP transport layer needs to implement. As well as being able to be carried directly in IP packets, SCTP packets can also be wrapped in higher level protocols.
SctpUdpTransport
Represents an SCTP transport that encapsulates SCTP packet in UDP.
SDP
SDPConnectionInformation
SDPMediaAnnouncement
SDPMediaTypes
SDPMessageMediaFormat
SDPSecurityDescription
(SDP) Security Descriptions for Media Streams implementation as basically defined in RFC 4568.
Example 1: Parse crypto attribute
string crypto = "a=crypto:1 AES_256_CM_HMAC_SHA1_80 inline:GTuZoqOsesiK4wfyL7Rsq6uHHwhqVGA+aVuAUnsmWktYacZyJu6/6tUQeUti0Q==";
SDPSecurityDescription localcrypto = SDPSecurityDescription.Parse(crypto);
Example 2: Parse crypto attribute
SDPMediaAnnouncement mediaAudio = new SDPMediaAnnouncement();
//[...]set some SDPMediaAnnouncement properties
SDPSecurityDescription localcrypto = SDPSecurityDescription.CreateNew();
localcrypto.KeyParams.Clear();
localcrypto.KeyParams.Add(SDPSecurityDescription.KeyParameter.CreateNew(SDPSecurityDescription.CryptoSuites.AES_CM_128_HMAC_SHA1_32));
mediaAudio.SecurityDescriptions.Add(localcrypto);
mediaAudio.ToString();
string crypto = "a=crypto:1 AES_256_CM_HMAC_SHA1_80 inline:GTuZoqOsesiK4wfyL7Rsq6uHHwhqVGA+aVuAUnsmWktYacZyJu6/6tUQeUti0Q==";
SDPSecurityDescription desc = SDPSecurityDescription.Parse(crypto);
SDPSecurityDescription.KeyParameter
SDPSecurityDescription.SessionParameter
SDPSsrcAttribute
An attribute used to defined additional properties about a media source and the relationship between them. As specified in RFC5576, https://tools.ietf.org/html/rfc5576.
SecureContext
SrtcpCryptoContext
SrtcpTransformer
SRTCPTransformer implements PacketTransformer. It encapsulate the encryption / decryption logic for SRTCP packets
@author Bing SU (nova.su @gmail.com) @author Werner Dittmann (Werner.Dittmann@t-online.de)
SrtpCipherCTR
SrtpCipherF8
SrtpCipherF8.F8Context
SrtpCryptoContext
SrtpHandler
SrtpPolicy
SrtpPolicy holds the SRTP encryption / authentication policy of a SRTP session.
@author Bing SU (nova.su @gmail.com)
SrtpTransformEngine
SrtpTransformer
STUNAddressAttribute
STUNAddressAttributeBase
STUNAttribute
STUNAttributeConstants
STUNAttributeTypes
STUNChangeRequestAttribute
STUNClient
Methods to resolve the public IP address and port information of the client.
STUNConnectionIdAttribute
STUNConstants
STUNDns
STUNErrorCodeAttribute
STUNHeader
STUNListener
STUNMessage
STUNMessageTypes
STUNServer
STUNUri
STUNXORAddressAttribute
This attribute is the same as the mapped address attribute except the address details are XOR'ed with the STUN magic cookie. THe reason for this is to stop NAT application layer gateways from doing string replacements of private IP addresses and ports.
TimestampPair
UdpReceiver
A basic UDP socket manager. The RTP channel may need both an RTP and Control socket. This class encapsulates the common logic for UDP socket management.
Utility
WebRTCRestSignalingPeer
This class is not a required component for using WebRTC. It is a convenience class provided to perform the signalling via a HTTP REST server.
WebRTCWebSocketClient
This class is NOT a required component for using WebRTC. It is a convenience class provided to assist when using a corresponding WebRTC peer running a web socket server (which is the case for most of the demo applications that go with this library).
WebRTCWebSocketPeer
This class is NOT a required component for using WebRTC. It is a convenience class provided to assist when using a web socket server for the WebRTC signalling.
Structs
DataChannelOpenMessage
Represents a Data Channel Establishment Protocol (DECP) OPEN message. This message is initially sent using the data channel on the stream used for user messages.
H264Packetiser.H264Nal
SctpCauseOnlyError
This structure captures all SCTP errors that don't have an additional parameter.
SctpDataFrame
SctpErrorInvalidStreamIdentifier
Invalid Stream Identifier: Indicates endpoint received a DATA chunk sent to a nonexistent stream.
SctpErrorMissingMandatoryParameter
Indicates that one or more mandatory Type-Length-Value (TLV) format parameters are missing in a received INIT or INIT ACK.
SctpErrorNoUserData
This error cause is returned to the originator of a DATA chunk if a received DATA chunk has no user data.
SctpErrorProtocolViolation
This error cause MAY be included in ABORT chunks that are sent because an SCTP endpoint detects a protocol violation of the peer that is not covered by any of the more specific error causes
SctpErrorRestartAssociationWithNewAddress
An INIT was received on an existing association.But the INIT added addresses to the association that were previously NOT part of the association. The new addresses are listed in the error code.This ERROR is normally sent as part of an ABORT refusing the INIT.
SctpErrorStaleCookieError
Indicates the receipt of a valid State Cookie that has expired.
SctpErrorUnrecognizedChunkType
Indicates that the sender is out of resource. This is usually sent in combination with or within an ABORT.
SctpErrorUnrecognizedParameters
This error cause is returned to the originator of the INIT ACK chunk if the receiver does not recognize one or more optional variable parameters in the INIT ACK chunk.
SctpErrorUnresolvableAddress
Indicates that the sender is not able to resolve the specified address parameter (e.g., type of address is not supported by the sender). This is usually sent in combination with or within an ABORT.
SctpErrorUserInitiatedAbort
This error cause MAY be included in ABORT chunks that are sent because of an upper-layer request.
SctpHeader
SctpStatus
Represents the current status of an SCTP association.
SctpTransportCookie
The opaque cookie structure that will be sent in response to an SCTP INIT packet.
SctpTsnGapBlock
SDPApplicationMediaFormat
SDPAudioVideoMediaFormat
Represents a single media format within a media announcement. Often the whole media format can be represented and described by a single character, e.g. "0" without additional info represents standard "PCMU", "8" represents "PCMA" etc. For other media types that have variable parameters additional attributes can be provided.
SrtpParameters
Interfaces
IDtlsSrtpPeer
IPacketTransformer
IRTCIceCandidate
IRTCPeerConnection
IRTCRtpReceiver
The RTCRtpReceiver interface allows an application to inspect the receipt of a MediaStreamTrack.
IRTCRtpSender
The RTCRtpSender interface allows an application to control how a given MediaStreamTrack is encoded and transmitted to a remote peer. When setParameters is called on an RTCRtpSender object, the encoding is changed appropriately.
ISctpErrorCause
ITransformEngine
Enums
AlertLevelsEnum
AlertTypesEnum
CaptureProtocolTypeEnum
ChecklistEntryState
List of state conditions for a check list entry as the connectivity checks are carried out.
ChunkTypeEnum
DataChannelMessageTypes
DataChannelPayloadProtocols
The assignments for SCTP payload protocol IDs used with WebRTC data channels.
DataChannelTypes
FeedbackProtocol
IceImplementationEnum
The ICE set up roles that a peer can be in. The role determines how the DTLS handshake is performed, i.e. which peer is the client and which is the server.
IceRolesEnum
The ICE set up roles that a peer can be in. The role determines how the DTLS handshake is performed, i.e. which peer is the client and which is the server.
MediaStreamStatusEnum
The types of status that a media stream can have. Note that the stream status can be defined with an attribute at session level or at media element level. If no attribute is defined then the default is "sendrecv". Note that this status applies to RTP streams only. If there is an RTCP stream associated with the RTP it should carry on as normal. See https://tools.ietf.org/html/rfc4566#section-6
PSFBFeedbackTypesEnum
The different types of Feedback Message Types. (RFC4585) https://tools.ietf.org/html/rfc4585#page-35
RTCBundlePolicy
Affects which media tracks are negotiated if the remote end point is not bundle aware.
RTCDataChannelState
RTCIceCandidateType
The RTCIceCandidateType represents the type of the ICE candidate.
RTCIceComponent
RTCIceConnectionState
The states an ICE session transitions through.
RTCIceCredentialType
The types of credentials for an ICE server.
RTCIceGatheringState
The gathering states an ICE session transitions through.
RTCIceProtocol
The transport protocol types for an ICE candidate.
RTCIceTcpCandidateType
The RTCIceTcpCandidateType represents the type of the ICE TCP candidate.
RTCIceTransportPolicy
Determines which ICE candidates can be used for a peer connection.
RTCPeerConnectionState
The states a peer connection transitions through. The difference between the IceConnectionState and the PeerConnectionState is somewhat subtle:
- IceConnectionState: applies to the connection checks amongst ICE candidates and is set as completed as soon as a local and remote candidate have set their nominated candidate,
- PeerConnectionState: takes into account the IceConnectionState but also includes the DTLS handshake and actions at the application layer such as a request to close the peer connection.
RTCPFeedbackTypesEnum
The different types of Feedback Message Types. (RFC4585) https://tools.ietf.org/html/rfc4585#page-35
RTCPReportTypesEnum
The different types of RTCP packets as defined in RFC3550.
RTCRtcpMuxPolicy
The RTCP multiplex options for ICE candidates. This option is currently redundant since the single option means RTCP multiplexing MUST be available or the SDP negotiation will fail.
RTCSctpTransportState
RTCSdpType
RTCSignalingState
Signalling states for a WebRTC peer connection.
RTPChannelSocketsEnum
RtpSecureMediaOptionEnum
RTSPHeaderError
RTSPHeaderParserError
RTSPMessageTypesEnum
RTSPMethodsEnum
RTSPRequestParserError
RTSPResponseParserError
RTSPResponseStatusCodesEnum
SctpAssociationState
SctpChunkType
The values of the Chunk Types.
SctpErrorCauseCode
SctpInitChunkParameterType
The optional or variable length Type-Length-Value (TLV) parameters that can be used with INIT and INIT ACK chunks.
SctpUnrecognisedChunkActions
The actions required for unrecognised chunks. The byte value corresponds to the highest order two bits of the chunk type value.
SctpUnrecognisedParameterActions
The actions required for unrecognised parameters. The byte value corresponds to the highest order two bits of the parameter type value.
SDPMediaTypesEnum
SDPSecurityDescription.CryptoSuites
SDPSecurityDescription.SessionParameter.FecTypes
SDPSecurityDescription.SessionParameter.SrtpSessionParams
SetDescriptionResultEnum
STUNAttributeTypesEnum
STUNClassTypesEnum
The class is interpreted from the message type. It does not get explicitly set in the STUN header.
STUNMessageTypesEnum
STUNProtocolsEnum
A list of the transport layer protocols that are supported by STUNand TURN (the network layers supported are IPv4 mad IPv6).