WebRTC M104 Release Notes

V
6 min readJul 7, 2022

--

WebRTC リリースノートが帰ってきたので雑に解説していきます。

WebRTC M104 Release Notes
https://groups.google.com/g/discuss-webrtc/c/PZxgk-aUFhw/m/5CkxzxUMAgAJ

M102 や M103 も含まれているとのことですので、その辺りはご了承くださいませ。

Plan B が Chrome から削除された

最近 WebRTC やっていた人からすると、何それ?という話かもしれません。凄く簡単にいうと WebRTC で利用されている SDP というプロトコルの書き方です。

Plan B というのはマルチストリーム利用時にコーデックがストリーム事に変更できなく全員同じストリームを使う必要がありました。それを解決した Unified Plan というのに置き換わっていくというのがあったのですが、Plan B に依存した製品も多く、かなり時間をかけて切り替わっていき、ついに Chrome から Plan B というのが無くなりました。

WebRTC スタックや SFU 開発者以外は気にしなくて良いです。

Region Capture が入った

凄く簡単に言うとクロップした部分だけをキャプチャーしてストリームとして扱える仕組み。

シンプルユースケース
https://github.com/w3c/mediacapture-region/#sample-use-case

ビデオ会議アプリケーションと生産性向上アプリケーションの2つの主要部分からなるコンボアプリケーションを1つのタブに共存させることを考えます。ビデオ会議は、getDisplayMediaやgetViewportMediaなどの既存/今後のAPIを使用して、タブ全体をキャプチャすると仮定します。ここで、生産性向上ソリューションの特定のセクション以外のすべてを切り取る必要があります。ビデオ会議のコンテンツ、スピーカーのメモ、生産性スイート内の他のプライベートまたは無関係なコンテンツを切り取る必要があり、切り取ったビデオをリモートで送信する必要があります。さらに、2つのコラボレーション・アプリケーションは、互いにクロスオリジンである可能性が高いことを考慮に入れてください。メッセージの投稿は可能ですが、通信はすべて非同期であり、両者間の情報伝達は控えめにした方が簡単でパフォーマンスも高くなります。そのため、フレーム全体のポストを含むソリューションや、レイアウトの変更(スクロール、ズーム、ウィンドウサイズの変更など)に反応するのが遅すぎるソリューションは除外されます。

Chrome Status はこれ
https://chromestatus.com/feature/5712447794053120

W3C はこれ
https://w3c.github.io/mediacapture-region/

コードサンプルを見ればイメージしやすい。つまり produceCropTarget で取得した cropTarget で DOM の一部をメディアストリームトラックとして扱える仕組みです。

/////////////////////////////////
// Code in the capture-target: //
/////////////////////////////////

const mainContentArea = navigator.getElementById('mainContentArea');
const cropTarget = await CropTarget.fromElement(mainContentArea);
sendCropTarget(cropTarget);
function sendCropTarget(cropTarget) {
// Can send the crop-target to another document in this tab
// using postMessage() or using any other means.
// Possibly there is no other document, and this is just consumed locally.
}

usrsctp が Chrome から削除された

WebRTC の DataChannel では SCTP というプロトコルがユーザーランドで利用されています。これは DTLS 上に SCTP を載せるためです。

ユーザーランドの SCTP 実装は usrsctp を利用するのが王道だったのですが、度重なるセキュリティ問題や性能改善などがしづらいということで、Google が 1 から C++ で開発したのが dcSCTP で、それが去年 usrsctp に切り替わりました。

そして最終的に usrsctp を削除し dcSCTP 一本になりました。dcSCTP はコミットログを見ているとかなり性能改善を積極的にやっているようで、DataChannel の性能改善に貢献しているようです。

RTCPeerConnection の mediaConstraints 引数が廃止

この引数はそもそも非標準だったので、削除されます。影響範囲も少ないとのこと。

10 bit H264 420 と 422 デコード対応

GStreamer から送られてきた映像がデコードされないという不満に対応する内容。

コミットログはこれ
https://webrtc.googlesource.com/src/+/8545ebae285089c8c442a13226f8aa11e0b8aeca

イシューはこれ
https://bugs.chromium.org/p/webrtc/issues/detail?id=13826

AV1 のデコードに dav1d を利用できるようになった

VideoLAN が開発している AV1 デコーダー dav1d を WebRTC での AV1 でも利用できるようになりました。将来的には libaom ではなく dav1d を利用するようになるとのこと。まずはフィールドトライアルで。

イシューはこれ
1330308 — Dav1d in WebRTC rollout — chromium https://bugs.chromium.org/p/chromium/issues/detail?id=1330308

リリースノートが復活したのはめでたいです。普段からコミットログは見ていますが、まとめてもらえるのはありがたいですね。

--

--

V
V

No responses yet