RE: Issue 163: WebRTC 1.0: Unhandled RTP streams

Here are some proposed changes to Section 8 in order to sync with Martin's pull request: 

8. The RTCRtpListener Object

The RTCRtpListener listens to RTP packets received from the RTCDtlsTransport, determining whether an incoming RTP stream is configured to be processed by an existing RTCRtpReceiver object. If no match is found, the unhandledrtp event is fired. This can be due to packets having an unknown SSRC, payload type or any other error that makes it impossible to attribute an RTP packet to a specific RTCRtpReceiver object. The event is not fired once for each arriving packet; multiple discarded packets for the same SSRC should result in a single event.

Note that application handling of the unhandledrtp event may not be sufficient to enable the unhandled RTP stream to be rendered. The amount of buffering to be provided for unhandled RTP streams is not mandated by this specification and is recommended to be strictly limited to protect against denial of service attacks. Therefore an application attempting to create additional RTCRtpReceiver objects to handle the incoming RTP stream may find that portions of the incoming RTP stream were lost due to insufficient buffers, and therefore could not be rendered.

8.1 Overview

An RTCRtpListener instance is associated to an RTCDtlsTransport.

8.2 Operation

An RTCRtpListener instance is constructed from an RTCDtlsTransport object.

8.3 Matching rules

To determine whether an RTP stream is configured to be processed by an existing RTCRtpReceiver object, the RTCRtpListener attempts to match the values of an incoming RTP packet's Payload Type and SSRC fields as well as the value of the muxId (if present in the MID RTP header extension) against the RTCRtpReceiver.RTCRtpParameters.RTCRtpCodecParameters.payLoadType, RTCRtpReceiver.RTCRtpParameters.RTCRtpEncodingParameters.ssrc, and RTCRtpReceiver.RTCRtpParameters.muxId attributes of configured RTCRtpReceiver objects.

TODO: provide details of matching behavior, along with examples.

8.4 Interface Definition

[Constructor(RTCDtlsTransport transport)]
interface RTCRtpListener {
    readonly    attribute RTCDtlsTransport transport;
                attribute EventHandler?    onunhandledrtp;
};

8.4.1 Attributes

onunhandledrtp of type EventHandler, , nullable
The event handler which handles the RTCRtpUnhandledRtpEvent, which is fired when the RTCRtpListener detects an RTP stream that is not configured to be processed by an existing RTCRtpReceiver object.

transport of type RTCDtlsTransport, readonly
The RTP RTCDtlsTransport instance.

8.5 RTCRtpUnhandledEvent

The unhandledrtp event of the RTCRtpListener object uses the RTCRtpUnhandledEvent interface.

Firing an RTCRtpUnhandledEvent event named e means that an event with the name e, which does not bubble (except where otherwise stated) and is not cancelable (except where otherwise stated), and which uses the RTCRtpUnhandledEvent interface must be created and dispatched at the given target.

dictionary RTCRtpUnhandledEventInit : EventInit {
    unsigned long ssrc;
    payloadtype   payloadType;
    DOMString     mid;
};

[Constructor(DOMString type, RTCRtpUnhandledEventInit eventInitDict)]
interface RTCRtpUnhandledEvent : Event {
    readonly    attribute unsigned long ssrc;
    readonly    attribute payloadtype   payloadType;
    readonly    attribute DOMString     mid;
};

8.5.1 Attributes

mid of type DOMString, readonly
The value of the MID RTP header extension [BUNDLE] in the RTP stream triggering the unhandledrtp event.

payloadType of type payloadtype, readonly
The Payload Type value in the RTP stream triggering the unhandledrtp event.

ssrc of type unsigned long, readonly
The SSRC in the RTP stream triggering the unhandledrtp event.

8.5.2 Dictionary RTCRtpUnhandledEventInit Members

mid of type DOMString
If present, the value of the MID RTP header extension [BUNDLE] in the RTP stream triggering the unhandledrtp event.

payloadType of type payloadtype
The Payload Type value in the RTP stream triggering the unhandledrtp event.

ssrc of type unsigned long
The SSRC in the RTP stream triggering the unhandledrtp event.

________________________________________
From: Bernard Aboba
Sent: Monday, December 01, 2014 10:01 AM
To: public-ortc@w3.org
Subject: Issue 163: WebRTC 1.0: Unhandled RTP streams

The WebRTC 1.0 API now has a pull request relating to unhandled RTP media streams:
https://github.com/w3c/webrtc-pc/pull/29

This involves definition of an RTCMediaDiscardedEvent.


 1932 +
 1933 +        <dl class="idl" data-merge="RTCMediaDiscardedEventInit"
 1934 +            title="interface RTCMediaDiscardedEvent : Event">
 1935 +          <dt>Constructor(DOMString type, RTCMediaDiscardedEventInit
 1936 +          eventInitDict)</dt>
 1937 +
 1938 +          <dt>readonly attribute unsigned long ssrc</dt>
 1939 +          <dd>The Synchronization source (SSRC) number of the packet.</dd>
 1940 +
 1941 +          <dt>readonly attribute unsigned byte payloadType</dt>
 1942 +          <dd>The RTP payload type of the packet.</dd>
 1943 +
 1944 +          <dt>readonly attribute DOMString? mid</dt>
 1945 +          <dd>The value of any mid header extension on the discarded media
 1946 +          packet, if that header is present.</dd>

Received on Tuesday, 2 December 2014 06:02:59 UTC