diff --git a/CHANGES.md b/CHANGES.md index 030ec8e6..cf6ae5fe 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,7 +11,12 @@ ## develop -## 2024.7.0 (2024-07-29) +- [ADD] Intel VPL で AV1 エンコーダを動くようにする + - @tnoho + +## 2024.7.0 + +**リリース日**: 2024-07-29 - [CHANGE] `--sora-dir`, `--sora-args` を `--local-sora-cpp-sdk-dir` と `--local-sora-cpp-sdk-args` に変更する - @melpon @@ -29,11 +34,13 @@ - @melpon - [UPDATE] Boost を 1.85.0 にあげる - @enm10k -- [UPDATE] SDL2 を 2.30.3 にあげる +- [UPDATE] SDL2 を 2.30.5 にあげる - @enm10k +- [UPDATE] CMake を 3.29.6 にあげる + - @voluntas - [UPDATE] CLI11 を 2.4.2 にあげる - @enm10k -- [UPDATE] libwebrtc を m126.6478.1.1 にあげる +- [UPDATE] libwebrtc を m127.6533.1.1 にあげる - Android の test アプリがリンクできなくなったため、リンカーを Android NDK のものから libwebrtc のものに変更 - リンカーのバージョンの違いによる互換性の問題でエラーが発生していた - @melpon @enm10k @torikizi @@ -54,21 +61,27 @@ - [ADD] WebSocket での接続時に User-Agent ヘッダーを追加する - @melpon -## 2024.6.1 (2024-04-16) +## 2024.6.1 + +**リリース日**: 2024-04-16 - [CHANGE] テストモジュールについて `SoraSignalingConfig` の `sora_client` に値を設定しないようにする - @enm10k - [FIX] VPL デコーダで遅延が起きたりセグフォすることがあるのを修正 - @melpon -## 2024.6.0 (2024-04-01) +## 2024.6.0 + +**リリース日**: 2024-04-01 - [CHANGE] `VplVideoDecoderImpl` の `ImplementationName` を `oneVPL` から `libvpl` に変更する - @enm10k - [FIX] `VplVideoEncoderImpl` の `implementation_name` の値が誤っていたため `libvpl` に修正する - @enm10k -## 2024.5.0 (2024-03-29) +## 2024.5.0 + +**リリース日**: 2024-03-29 - [CHANGE] 別リポジトリに分かれていた Sora C++ SDK のサンプル集を examples/ 以下のディレクトリに統合する - @melpon @@ -86,7 +99,9 @@ - [FIX] HWA 利用の判定を `#if defined(USE_*_ENCODER)` という使い方で統一するように修正 - @melpon -## 2024.4.0 (2024-03-13) +## 2024.4.0 + +**リリース日**: 2024-03-13 - [ADD] test/hello.cpp に video, audio フラグを追加 - @melpon @@ -569,12 +584,16 @@ - [FIX] Jetson の AV1 HWA のデコーダがうまく動いてなかったのを修正 - @melpon -## 2022.6.0 (2022-06-30) +## 2022.6.0 + +**リリース日**: 2022-06-30 - [ADD] Jetson の AV1 HWA に対応 - @melpon -## 2022.5.0 (2022-06-22) +## 2022.5.0 + +**リリース日**: 2022-06-22 - [ADD] bundle_id を追加 - @melpon diff --git a/README.md b/README.md index c2272579..5bb104b4 100644 --- a/README.md +++ b/README.md @@ -20,19 +20,16 @@ Please read before u ## 特徴 - 各プラットフォームで利用可能な HWA への対応 - - NVIDIA Video Codec SDK (NVENC / NVDEC) + - [Intel VPL](https://github.com/intel/libvpl) + - VP9 / AV1 / H.264 / H.265 + - [NVIDIA Video Codec SDK](https://developer.nvidia.com/video-codec-sdk) - VP9 / H.264 / H.265 - - NVIDIA Jetson Video HWA + - [NVIDIA JetPack SDK](https://developer.nvidia.com/embedded/jetpack) (JetPack 6) - VP9 / AV1 / H.264 / H.265 - - Apple macOS / iOS Video Toolbox + - [Apple Video Toolbox](https://developer.apple.com/documentation/videotoolbox) - H.264 / H.265 - Google Android HWA - VP8 / VP9 / H.264 / H.265 - - [Intel VPL](https://github.com/intel/libvpl) (Intel Media SDK の後継) - - H.264 / H.265 / AV1 - - AV1 は デコードのみ - - H.265 は Windows と Ubuntu 22.04 のみ - - Media SDK での動作は未検証です ## ライブラリのバイナリ提供について @@ -54,7 +51,7 @@ _hololens2 は無視してください_ - Windows 10.1809 x86_64 以降 - macOS 13.5 arm64 以降 -- Ubuntu 22.04 ARMv8 Jetson (JetPack 6.0.0 以降) +- Ubuntu 22.04 ARMv8 Jetson (JetPack 6.0 以降) - Jetson AGX Orin - Jetson Orin NX - 動作未検証です @@ -62,7 +59,6 @@ _hololens2 は無視してください_ - 動作未検証です - Ubuntu 22.04 x86_64 - Ubuntu 24.04 x86_64 - - 動作未検証です - Android 7 arm64 以降 - iOS 13 arm64 以降 diff --git a/DEVELOPMENT.md b/doc/development.md similarity index 100% rename from DEVELOPMENT.md rename to doc/development.md diff --git a/doc/faq.md b/doc/faq.md index 82e0dad0..ff143f37 100644 --- a/doc/faq.md +++ b/doc/faq.md @@ -17,7 +17,7 @@ GitHub Actions でビルドを行い確認していますので、まずは GitH GitHub Actions のビルドが失敗していたり、 ビルド済みバイナリがうまく動作しない場合は Discord へご連絡ください。 -## NVIDIA Jetson Orin (Ubuntu 20.04 arm64) でビルドできません +## NVIDIA Jetson Orin (Ubuntu 22.04 arm64) でビルドできません Ubuntu 20.04 x86_64 でクロスコンパイルしたバイナリを利用するようにしてください。 diff --git a/doc/known_issues.md b/doc/known_issues.md index 285fe8d7..154670c1 100644 --- a/doc/known_issues.md +++ b/doc/known_issues.md @@ -1,14 +1,3 @@ # 既知の問題 -## Intel VPL で H.264 の映像をデコードすると正常に動作しない - -Intel VPL で H.264 の映像をデコードすると、以下の事象が発生することを確認しています。 - -- 受信した映像が止まる - -調査の結果、IntelVPL に問題がある可能性が高く、現在問題報告を行なって対応をしております。 -https://community.intel.com/t5/Media-Intel-Video-Processing/Issue-with-Decoding-H-264-Video-Encoded-in-macOS-Safari/m-p/1587647 - -こちらの問題が解消すると改善する見込みです。 - -Intel VPL を利用して映像をデコードする場合は、 H.264 を避けて他のコーデックを利用してください。 \ No newline at end of file +現在は既知の問題は存在しません。 diff --git a/doc/vpl.md b/doc/vpl.md index 09676686..e59a31ae 100644 --- a/doc/vpl.md +++ b/doc/vpl.md @@ -30,14 +30,13 @@ Intel Media SDK は既に開発が終了しており、後継の Intel VPL ラ ### Windows -Intel VPL を利用するためには Intel のディスプレイドライバーがインストールされている必要があります。 -Windows では環境によってドライバーの有無が異なるため、以下のいずれかの手順でインストールされているドライバーを確認してください。 +Windows 11 では Intel の公式サイトからドライバーをインストールすることで VPL を利用することができます。 -- デバイスマネージャー > ディスプレイアダプター > インストールされているドライバーを確認 -- Win + R キーを押下 > `ファイル名を指定して実行` のダイアログが開くので `dxdiag` と入力して `OK` ボタンを押下 > DirectX 診断ツールが起動するので、 `ディスプレイ` のタブからインストールされているドライバーを確認 - -Intel のドライバーが確認できない場合は、以下のページから適切なドライバーをインストールしてください。 - +- Intel の公式サイトからドライバーをダウンロードします。 + - Intel ドライバーおよびソフトウェアのダウンロード + - +- インストーラーに従ってインストールを行います。 +- インストール後に再起動を行います。 ### Ubuntu 22.04 diff --git a/examples/messaging_recvonly_sample/README.md b/examples/messaging_recvonly_sample/README.md index 5a8ae897..47c69464 100644 --- a/examples/messaging_recvonly_sample/README.md +++ b/examples/messaging_recvonly_sample/README.md @@ -37,7 +37,7 @@ cd sora-cpp-sdk/examples 以下のツールを準備してください。 -- [Visual Studio 2019](https://visualstudio.microsoft.com/ja/downloads/) +- [Visual Studio 2022](https://visualstudio.microsoft.com/ja/downloads/) - C++ をビルドするためのコンポーネントを入れてください。 - Python 3.10.5 @@ -60,7 +60,7 @@ cd sora-cpp-sdk/examples 以下のツールを準備してください。 -- Python 3.9.13 +- Python 3.12.4 ##### ビルド diff --git a/examples/sdl_sample/README.md b/examples/sdl_sample/README.md index 5cf140f1..5ff7ed8e 100644 --- a/examples/sdl_sample/README.md +++ b/examples/sdl_sample/README.md @@ -37,7 +37,7 @@ cd sora-cpp-sdk/examples 以下のツールを準備してください。 -- [Visual Studio 2019](https://visualstudio.microsoft.com/ja/downloads/) +- [Visual Studio 2022](https://visualstudio.microsoft.com/ja/downloads/) - C++ をビルドするためのコンポーネントを入れてください。 - Python 3.10.5 @@ -60,7 +60,7 @@ cd sora-cpp-sdk/examples 以下のツールを準備してください。 -- Python 3.9.13 +- Python 3.12.4 ##### ビルド diff --git a/examples/sumomo/README.md b/examples/sumomo/README.md index 8b28aacb..db26bde0 100644 --- a/examples/sumomo/README.md +++ b/examples/sumomo/README.md @@ -37,7 +37,7 @@ cd sora-cpp-sdk/examples 以下のツールを準備してください。 -- [Visual Studio 2019](https://visualstudio.microsoft.com/ja/downloads/) +- [Visual Studio 2022](https://visualstudio.microsoft.com/ja/downloads/) - C++ をビルドするためのコンポーネントを入れてください。 - Python 3.10.5 @@ -60,7 +60,7 @@ cd sora-cpp-sdk/examples 以下のツールを準備してください。 -- Python 3.9.13 +- Python 3.12.4 ##### ビルド @@ -157,7 +157,7 @@ Windows 以外の場合 - `--role` : [role](https://sora-doc.shiguredo.jp/SIGNALING#6d21b9) (必須) - sendrecv / sendonly / recvonly のいずれかを指定 -#### Momo Sample 実行に関するオプション +#### Sumomo 実行に関するオプション - `--log-level` : 実行時にターミナルに出力するログのレベル - `verbose->0,info->1,warning->2,error->3,none->4` の値が指定可能です @@ -167,6 +167,10 @@ Windows 以外の場合 - `--hw-mjpeg-decoder` : HW MJPEG デコーダーの利用 (true/false) - 未指定の場合は false が設定されます - NVIDIA Jetson のみで利用できます +- `--use-hardware-encoder` : ハードウェアエンコーダーの利用 (true/false) +- `--openh264` : openh264 ライブラリのパスをフルパスで指定します + - デコードには対応していません + #### Sora に関するオプション @@ -186,6 +190,8 @@ Windows 以外の場合 - `--video-bit-rate` : [ビデオビットレート指定](https://sora-doc.shiguredo.jp/SIGNALING#5667cf) - 0 - 30000 の値が指定可能です - 0 は未指定と見なされます +- `--video-h264-params` : [ビデオの H.264 設定指定](https://sora-doc.shiguredo.jp/SIGNALING#ffc4cb) +- `--video-h265-params` : [ビデオの H.265 設定指定](https://sora-doc.shiguredo.jp/SIGNALING#bfe45b) - `--audio-bit-rate` : [オーディオビットレート指定](https://sora-doc.shiguredo.jp/SIGNALING#414142) - 0 - 510 の値が指定可能です - 0 は未指定と見なされます diff --git a/src/hwenc_vpl/vpl_video_encoder.cpp b/src/hwenc_vpl/vpl_video_encoder.cpp index 8b6b79b7..03325e6b 100644 --- a/src/hwenc_vpl/vpl_video_encoder.cpp +++ b/src/hwenc_vpl/vpl_video_encoder.cpp @@ -525,8 +525,8 @@ int32_t VplVideoEncoderImpl::Encode( encoded_image_.capture_time_ms_ = frame.render_time_ms(); encoded_image_.rotation_ = frame.rotation(); encoded_image_.SetColorSpace(frame.color_space()); - if (bitstream_.FrameType == MFX_FRAMETYPE_I || - bitstream_.FrameType == MFX_FRAMETYPE_IDR) { + if (bitstream_.FrameType & MFX_FRAMETYPE_I || + bitstream_.FrameType & MFX_FRAMETYPE_IDR) { encoded_image_._frameType = webrtc::VideoFrameType::kVideoFrameKey; } else { encoded_image_._frameType = webrtc::VideoFrameType::kVideoFrameDelta; @@ -676,13 +676,6 @@ bool VplVideoEncoder::IsSupported(std::shared_ptr session, return false; } - // FIXME(miosakuma): Intel Core Ultra 7 では IsSupported(AV1) == true となるが、 - // 実際に使ってみると映像が送信されないため、一時的に AV1 だったら未サポートとして返す。 - // (VPL の問題なのか使い方の問題なのかは不明) - if (codec == webrtc::kVideoCodecAV1) { - return false; - } - auto encoder = VplVideoEncoderImpl::CreateEncoder( session, ToMfxCodec(codec), 1920, 1080, 30, 10, 20, false); bool result = encoder != nullptr;