[[SDP]] includes a few helper functions for parsing sdp string.

Constructors

  • Construts a new [[SDP]] object

    Parameters

    • sdp: string

    Returns SDP

Properties

sdp: string
rfc7587HighestBitrate: number = 510000
rfc7587LowestBitrate: number = 6000

Methods

  • Returns Map<string, number>

  • Return RTP header extension ID if the extension exists in SDP. Return -1 otherwise

    Parameters

    • url: string

    Returns number

  • Returns the total number of unique Rtp header extensions.

    Parameters

    • srcLines: string[]

    Returns number

  • Checks whether the SDP has candidates for any m-line

    Returns boolean

  • Checks whether the SDP has candidates for all m-lines

    Returns boolean

  • Return if extension ID exists in the SDP

    Parameters

    • targetId: number

    Returns boolean

  • Checks if SDP has a video section.

    Returns boolean

  • Returns the VideoCodecCapability which corresponds to the first payload type in the m-line (e.g. m=video 9 UDP/+++ <highest priority payload type> <payload type> <payload type> ...), parsing the rest of the SDP for relevant information to construct it.

    Returns undefined if there is no video send section or no codecs in the send section

    This function is currently unused/deprecated and will be removed in a future PR.

    Returns VideoCodecCapability

  • Splits SDP string into lines

    Returns string[]

  • Returns all VideoCodecCapability that can be found in the camera section, in order of priority as defined in m-line (e.g. m=video 9 UDP/+++ <highest priority payload type> <payload type> <payload type> ...), parsing the rest of the SDP for relevant information to construct it.

    Returns an empty list if there is no video send section or no codecs in the send section

    Returns VideoCodecCapability[]

  • Extracts the ssrc for the sendrecv video media section in SDP

    Returns string

  • Returns whether the sendrecv video sections if exist have two different SSRCs in SDPs

    Parameters

    Returns boolean

  • Inserts a parameter to the SDP local offer setting the desired average audio bitrate

    Parameters

    • maxAverageBitrate: number

    Returns SDP

  • Dependency descriptors can be used by the backend to designate spatial or temporal layers on a single encoding. Along with the video layers allocation exension this will result in the ability for remote attendees to subscribe to individual layers below the top.

    Parameters

    • previousSdp: SDP

    Returns SDP

  • If the send transceiver is in a state where the layers allocation extension is not matching up with the dependency descriptor extension, or we simply don't want to allow for the seperation of spatial or temporal layers, we can remove the dependency descriptor from the SDP.

    Note: Care should be taken when calling this function since withDependencyDescriptorRtpHeaderExtension if called again will require an accurate ID value. Thus it is recommended to only call withoutDependencyDescriptorRtpHeaderExtension after setting the local description.

    Returns SDP

  • Removes server reflexive candidate from SDP

    Returns SDP

  • Modifies the active camera section to include a specified starting bitrate for video sending by adding a 'x-google-start-bitrate' fmtp line paramter for each non-RTX/FEC payload type associated with video.

    Note that this updates all video sections regardless of direction, as https://www.rfc-editor.org/rfc/rfc8843#name-payload-type-pt-value-reuse states that "...all codecs associated with the payload type number MUST share an identical codec configuration. This means that the codecs MUST share the same media type, encoding name, clock rate, and any parameter that can affect the codec configuration and packetization."

    WebRTC maintainers may eventual enforce this (https://issues.webrtc.org/issues/42224689), though it just logs an error for now.

    If no active video sections are found in the SDP, returns the original SDP object.

    Parameters

    • bitrateKbps: number

    Returns SDP

  • Munges Unified-Plan SDP from different browsers to conform to one format TODO: will remove this soon.

    Returns SDP

  • To avoid resubscribing to preemptively turn off simulcast streams or to switch layers negotiate with the back end to determine whether to use layers allocation header extension this will not add the packet overhead unless negotiated to avoid waste

    Parameters

    • previousSdp: SDP

    Returns SDP

  • Based off the provided preferences, this function will reorder the payload types listed in the m=video line.

    This will be applied to the a=sendrecv section so it can be applied on either local or remote SDPs. It can be used to 'polyfill' RTCRtpSender.setCodecPreferences' on the offer, but it can also be used on remote SDPs to force the codec actually being send, since the send codec is currently dependent on the remote answer (i.e. setCodecPreferences` doesn't actually have any impact unless the remote side respects the order of codecs which is not true of the Chime SDK media backends).

    Parameters

    Returns SDP

  • Returns the candidate type assocaited with the sdpline.

    Parameters

    • sdpLine: string

    Returns string

  • Extract the SSRCs from the group line.

    a=ssrc-group: ...

    Parameters

    • figGroupLine: string

    Returns string

  • Here we loop through each line in the SDP and construct an array containing the fmtp attribute for all the audio m lines that use the opus codec. If it doesn't use opus codec we add null to the array which tells updateOpusFmtpAttributes that no update is needed for that particular fmtp attribute line

    Parameters

    • sdpLines: string[]

    Returns string[]

  • Return RTP header extension ID if the extension exists in section. Return -1 otherwise

    Parameters

    • section: string
    • url: string

    Returns number

  • Checks if the candidate is a valid RTP candidate

    Parameters

    • candidate: string

    Returns boolean

  • Constructs a new SDP with the given set of SDP lines.

    Parameters

    • lines: string[]

    Returns SDP

  • Extracts the lines from the sdp blob that matches the given prefix.

    Parameters

    • blob: string
    • prefix: string

    Returns string[]

  • Format the sdp string into separate lines.

    Parameters

    • blob: string

    Returns string[]

  • split the different sdp sections

    Parameters

    • sdp: string

    Returns string[]

  • Update the fmtp lines in each audio m section that correspond to the opus codec with the parameters specifief in additionalParams

    Parameters

    • srcLines: string[]
    • fmtpAttributes: string[]
    • additionalParams: string[]

    Returns string[]