-
Notifications
You must be signed in to change notification settings - Fork 174
AMD AMF ハードウェアエンコーダ/デコーダのサポートを追加 #380
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
H.264/H.265/AV1 の AMD AMF ハードウェアエンコーダを利用可能にする実装を追加。 主な変更点: - CMake オプション USE_AMF_ENCODER で有効化可能 - Windows では DirectX 11、Linux では Vulkan を利用 - Windows および Ubuntu (22.04/24.04) x86_64 でサポート - buildbase.py と run.py に AMF SDK インストール処理を追加 - --disable-amf オプションで無効化可能 実装内容: - src/hwenc_amf/ に AMD AMF エンコーダ/デコーダ実装を追加 - MomoVideoEncoderFactory/MomoVideoDecoderFactory に AMD AMF 統合 - RTCManager での AMF コンテキスト初期化処理を追加 - VideoCodecInfo::Type::AMD を追加
AMD AMF サポート追加の詳細情報を CHANGES.md に追記: - 対応プラットフォームの明記 (Windows/Ubuntu x86_64) - ビルドオプションとCMakeオプションの説明 - AMF SDK バージョン情報 (v1.4.35) - VideoCodecInfo への AMD タイプ追加について言及
C++ SDK の実装に合わせて、AMF SDK のソースファイルを直接コンパイルする方式に変更。 これにより Ubuntu での Vulkan パッケージ依存を削除し、ビルドエラーを解消。 変更内容: - AMF SDK のソースファイル (AMFFactory.cpp 等) を直接コンパイル対象に追加 - インクルードパスを ${AMF_ROOT_DIR}/amf に統一 - Linux での不要な Vulkan pkg-config チェックとリンクを削除
独自の AMFFactoryHelper クラス定義を削除し、AMF SDK の AMFFactoryHelper 型を直接使用するように変更。 これにより型の不一致によるコンパイルエラーを解消。
Sora C++ SDK の実装に合わせて、プラットフォーム固有のスレッド実装ファイルを追加: - Windows: ThreadWindows.cpp - Linux: ThreadLinux.cpp また、GitHub Actions の Ubuntu ビルドに libxfixes-dev パッケージを追加
@@ -171,7 +171,7 @@ jobs: | |||
# Intel Media SDK のために libva-dev, libdrm-dev を入れる | |||
DEBIAN_FRONTEND=noninteractive sudo apt-get -y install libva-dev libdrm-dev | |||
# スクリーンキャプチャあたりのためのパッケージを入れる | |||
DEBIAN_FRONTEND=noninteractive sudo apt-get -y install libxrandr-dev libxdamage-dev libxcomposite-dev libxtst-dev | |||
DEBIAN_FRONTEND=noninteractive sudo apt-get -y install libxrandr-dev libxdamage-dev libxfixes-dev libxcomposite-dev libxtst-dev |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
なぜ libxfixes-dev が必要のなったのかわかっていない。
- Momo 独自の AMF 実装 (src/hwenc_amf/) を削除 - Sora C++ SDK の AMF 実装を src/sora-cpp-sdk/ 以下に配置 - CMakeLists.txt のソースパスを更新 - namespace を momo:: から sora:: に変更 - include パスを Sora C++ SDK のものに変更
- amf_video_codec.cpp/h は Sora C++ SDK の VideoCodecCapability 機能用 - Momo では VPL でも同様のファイルを使っていないため AMF でも不要 - CMakeLists.txt から amf_video_codec.cpp を削除
- エンコーダだけでなくデコーダもサポートしていることを明記 - Sora C++ SDK の AMF 実装を取り込んだことを追記
!opus レビューして |
Claude finished @voluntas's task —— View job レビューを行いました。 タスクリスト
レビュー結果🔴 重大な問題1. AMD AMF デコーダーの統合が未完了
🟡 中程度の問題1. エラーハンドリングの不一致
2. メモリタイプの選択
3. 未使用コードのコメントアウト
🟢 良い点1. 適切な抽象化
2. プラットフォーム対応
3. コーデック対応
📝 改善提案1. デバッグログの削除
2. マジックナンバーの定数化
3. エラーメッセージの統一
4. リソース管理
✅ 確認事項
総評AMD AMF エンコーダーの実装は概ね良好だが、デコーダーの統合が未完了である点が最も重要な問題。この問題を解決しない限り、機能が不完全な状態でリリースされることになる。 |
- test/test_sora_mode_amd_amf.py を修正 - VP9 エンコードテストを除外(VP9 はデコードのみサポート) - encoderImplementation/decoderImplementation を "AMF" に修正 - VP9 デコード専用テスト test_vp9_decode_only を追加 - e2e-test.yml と e2e-test-only.yml に AMD AMF のジョブを追加 - セルフホステッドランナーで AMD AMF テストを実行するよう設定
H.264/H.265/AV1 の AMD AMF ハードウェアエンコーダを利用可能にする実装を追加。
主な変更点:
実装内容: