Proposal RTP for VP8

Skip to first unread message

Frank Galligan

May 24, 2010, 3:54:12 PM5/24/10
to WebM Discussion, Justin Uberti
There have been a few posts about RTP and VP8. I just wanted to get something up here quick so everyone can discuss what should go into the spec.

3. RTP Payload format for VP8
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|V=2|P|X|  CC   |M|     PT      |       sequence number         | RTP
|                           timestamp                           | Header
|           synchronization source (SSRC) identifier            |
|            contributing source (CSRC) identifiers             |
|                             ....                              |
|                                                               | RTP
|      VP8 stream (byte aligned)                                | Pay-
|                                                               | load

     Figure 1 - An RTP packet for VP8 stream

3.1 Use of RTP header fields.
Payload Type (PT): The assignment of an RTP payload type for this
new packet format is outside the scope of this document, and will
not be specified here. It is expected that the RTP profile for a
particular class of applications will assign a payload type for this
encoding, if that is not done then a payload type in the dynamic range
SHALL be chosen by means of an out of band signaling protocol (e.g.,
H.245,SIP, etc).
Extension (X) bit: Defined by the RTP profile used.
Sequence Number: Incremented by one for each RTP data packet sent,
starting, for security reasons, with a random initial value.

Marker (M) bit: The marker bit is set to one to indicate the last
RTP packet (or only RTP packet) of a VP8 frame.

Timestamp: The timestamp indicates the sampling instance of the
media sample whose data begins within this RTP packet. A constant
offset, which is random, is added for security reasons.
- There is at most one media sample or partial media sample per RTP packet.
- Media samples may be split across multiple RTP packets.
- The resolution of the timestamp is set to its default value of
90kHz,unless specified by an out-of-band means (I.E. SDP parameter).

3.2 Format of VP8 payload descriptors.

0 1 2 3 4 5 6 7 8
|           |K|S|

- K = Key frame bit. This bit is set to one to indicate that this
RTP packet contains the beginning of a key-frame.

- S = Start frame bit. This bit is set to one to indicate that this
RTP packet contains the beginning of any frame.

3.3 Lost VP8 RTP packets
If a lost packet is detected in the RTP stream, the transport layer 
MUST throw out the current partial VP8 frame (if there is one) and 
all subsequent RTP packets until a VP8 payload descriptor with the 
key-frame bit is set.

As you can see this was intentionally kept very simple so we can start from a relatively clean slate. I also think as defined above will not work well for low bandwidth and trying to send the optimal packet size. 


Luca Barbato

May 27, 2010, 12:56:57 PM5/27/10
to WebM Discussion

I wonder if feeding the partial packet wouldn't produce a nicer result
concealment, probably 3.3 could be relaxed to a SHOULD or a MAY.

Probably altref/goldenframe could be and interesting topic for
advanced usage, not sure if would be interesting expose them to the
rtp layer.



Jun 3, 2010, 9:55:49 PM6/3/10
to WebM Discussion
Dear All:

where could I found the whole rtp payload propose for vp8 bitstream?
thank you very much.

Best Regards,


Jul 6, 2010, 10:11:17 AM7/6/10
to WebM Discussion
On May 24, 8:54 pm, Frank Galligan <> wrote:
> 3.2 Format of VP8 payload descriptors.
> 0
> 0 1 2 3 4 5 6 7 8
> +-+-+-+-+-+-+-+-+
> | |K|S|
> +-+-+-+-+-+-+-+-+

Where is this meant to go? Figure 1 doesn't show where this should go.

What's the current status on this - is there a full proposal yet?
Reply all
Reply to author
0 new messages