RTP Payload Format For AV1 が公開された

詳細は資料を見てもらうとして、ざっと眺めたので WebRTC SFU 開発者的な視点から感想などを。

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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| 0x100 | 0x0 | extensions length |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| 0x1(ID) | hdr_length | |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ |
| |
| AV1 descriptor (hdr_length #octets) |
| |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | Other rtp header extensions...|
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| AV1 aggr hdr | |
+-+-+-+-+-+-+-+-+ |
| |
| Bytes 2..N of AV1 payload |
| |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| : OPTIONAL RTP padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

ぱっと見ればわかるが、 AV1 はなんと、 AV1 Descriptor を RTP 拡張に含めてくれるようにしている。これは本当に素晴らしい対応だと思う。

VP8 や VP9 、H.264 では Payload の先頭部分をパースする必要があり、めんどくさいなと感じていたが、この仕組であればとても楽になる。

WebRTC SFU はこの Payload を書き換えて送ることは殆ど無いということもあり、AV1 では受け取ったデータをそのまま送りつければ良くなりそうだ。

AV1 向けの RTP Extension 対応して、あとは SDP 周りを整備してあげればすぐにでも AV1 が利用できそうという印象。

RTP 拡張には One-Byte と Two-Byte があり、今まではそれらが共存できなかったのですが、最近の RFC で共存できるかどうかを SDP 側の定義で解決するというのがリリースされました。

a=extmap-allow-mixed

SDP を定義し双方が対応していれば、One-Byte と Two-Byte を混在させてよくなります。今、WebRTC では One-Byte が主流です。

ただ、最近 One-Byte と Two-Byte 両方定義された RTP 拡張が出てきました。この AV1 は Two-Byte なため、AV1 を利用するには両方利用できる RTP 拡張の実装が必要になります。

新しい RFC のため古い実装は対応していないかもしれませんので、注意してください。

ここからは素人なので、間違っていたら指摘がほしい。AV1 は SVC を利用しないという選択も取れるが、 SVC の要素が仕様に組み込まれているようで、 WebRTC SFU では SVC を使わないようにしないと Vidyo 社のパテントにそのままぶつかってしまうので、気をつけてほしい。

自社では SVC の利用は一切行わないことで、パテントには抵触しないようにしている。ただオープンソースを使っている企業などは「無意識にパテント違反」をする可能性があり、大変そうだ。

Written by

Erlang/OTP / 時雨堂 / WebRTC / E2EE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store