[theora] Theora over RTP - update

Gisle Sælensminde gisle at snirklasjon.no
Tue Feb 9 09:06:51 PST 2010


I have now studied the source of Ekiga to see how that wraps the Theora
payload in RTP, and how packets are encoded and decoded there, since it
seems to do aproximatly the same as I try to do. I did the following
observations:

- The Theora/RTP draft specifies that the theora header packet and
theora tables should be merged into one RTP packet, but there were no
explanation about how that combined RTP packet should be decoded. The
reason that is possible, is that the Theora header packet has a fixed
size of 42 bytes, so to find the tables, you just use an offset of 42
into the header packet. That is not explained anywhere in the draft.

- The Theora/RTP draft define additional headers after the RTP headers,
but before the Theora payload. This included an id (24bits),
fragment_type, and number of Theora packets in the RTP packet. In Ekiga
this is always 0xdedede.  Since they always use the same parameter set,
this is probably OK.

- Why is the comments header called "legacy comments" in the draft?

- The fields of the ogg_packet structure (like width, height, etc) must
be manually filled by the RTP decoder, before sending it into the theora
decoder.

I think this should be sufficient for me to be able to implementing
theora support. Thank you all for pointing me in the right direction.
Other than that, the draft specifies clearly how packets should be
formated. Some places maybe even in too much detail (No need to explain
the RTP header fields, they can be found in the RTP standard).

-Gisle




More information about the theora mailing list