webdino / gecko-embedded

Main (meta) repository for Project GEM (Gecko Embedded)
https://gecko-embedded.org
22 stars 2 forks source link

RZ/G WebRTC での H.264 / GPU Acceleration 対応 #82

Open dynamis opened 5 years ago

dynamis commented 5 years ago

現状 RZ/G1,2 で WebRTC は動作するが getUserMedia() だけならともかくビデオ通話をする場合などは動画の encode/decode が GPU 処理されないと重たい問題がある

解決できるかどうかはともかく、issue としての記録です

dynamis commented 5 years ago

通常 Firefox の WebRTC での H.264 サポートについては OpenH264 が使われているし、VPx の方がデフォルトになっているため SDP などで H.264 していしなければ OpenH264 も使われない:

https://wiki.mozilla.org/QA/WebRTC/OpenH264 https://gist.github.com/voluntas/a85b626f3a2702866711

また、OpenH264 は Cisco の H264 コーデックをダウンロードして使うというかたちのもので、RZ 環境などで動作するか、動作するとしても採用できるかというと疑問。OpenMAX でビデオデコードしているのと同様に WebRTC 対応をする必要があるのではないかという話。

dynamis commented 5 years ago

RZ/G2 では depends on #58

dynamis commented 5 years ago

note: 簡単にコーデック指定して WebRTC 通話をするサンプル (SkyWay 利用) https://yusuke84.github.io/skyway-stats-sample/

WebRTC で H.264 対応していないと困るのは相手側が H.264 限定という環境か、H.264 ハードウェア処理で消費電力や CPU 使用率を削減したいケース。一般的な範囲では H.264 限定としている iOS Safari 12.0 と通信したい場合で。iOS 12.2 (2019/3 リリース) の Safari 12.1 では VP8 をサポートしたため、H.264 が必須となるケースは限定的となりつつある。

Firefox に ffmpeg は含まれているし media.ffmpeg.enabled という設定もあるが、Gecko 60,68 時点で config の影響がどうなっているか含めて ffmpeg を使えるのかどうかは要調査。RZ/G で H.264 on WebRTC したい場合にどう実装すべきかなどは未調査。 https://dxr.mozilla.org/mozilla-central/source/dom/media/platforms/ffmpeg

なお、画質的には Safari の H.264 リアルタイムエンコード WebRTC は明らかに動きに弱く VP8 よりも画質が悪いと評価されている様子。VP8,9 のソフトエンコードは重たが軽さ優先の場合は VP8 を使う。VP9 は VP8 の半分程度のビットレート、H.265 と同等以上の圧縮率実現を目的としたコーデックだが VP8 に対して 20% 程高いため。

RZ/G2E 実機では VP8,9 を使って通話するくらいなら動作するが流石に 60fps などはでない (解像度依存大、双方向でなく片方向とかならより軽い)。RZ/G2M での処理は未評価。