Skip to content

Commit 8276cd6

Browse files
committed
Intel VPL の VP9 エンコーダーでキーフレーム要求が機能しない問題を修正
VP9 では MFX_FRAMETYPE_I のみを設定するように修正。 MFX_FRAMETYPE_REF や MFX_FRAMETYPE_IDR を同時に設定すると vpl-gpu-rt の CheckAndFixCtrl で MFX_FRAMETYPE_P に変更されてしまうため。
1 parent 77be93f commit 8276cd6

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

CHANGES.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@
3232
- `examples/sumomo``--cpu-adaptation` オプションで指定可能
3333
- 未指定の場合は従来通り macOS のサイマルキャスト時のみ自動的に無効化される
3434
- @voluntas
35+
- [FIX] Intel VPL の VP9 エンコーダーでキーフレーム要求が機能しない問題を修正
36+
- VP9 では `MFX_FRAMETYPE_I` のみを設定するように修正
37+
- `MFX_FRAMETYPE_REF``MFX_FRAMETYPE_IDR` を同時に設定すると vpl-gpu-rt の CheckAndFixCtrl で `MFX_FRAMETYPE_P` に変更されてしまうため
38+
- @voluntas
3539

3640
### misc
3741

src/hwenc_vpl/vpl_video_encoder.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,14 @@ int32_t VplVideoEncoderImpl::Encode(
472472
mfxEncodeCtrl ctrl;
473473
memset(&ctrl, 0, sizeof(ctrl));
474474
if (send_key_frame) {
475-
ctrl.FrameType = MFX_FRAMETYPE_I | MFX_FRAMETYPE_IDR | MFX_FRAMETYPE_REF;
475+
// VP9 では MFX_FRAMETYPE_I のみを設定する
476+
// MFX_FRAMETYPE_REF や MFX_FRAMETYPE_IDR を同時に設定すると
477+
// vpl-gpu-rt の CheckAndFixCtrl で MFX_FRAMETYPE_P に変更されてしまう
478+
if (codec_ == MFX_CODEC_VP9) {
479+
ctrl.FrameType = MFX_FRAMETYPE_I;
480+
} else {
481+
ctrl.FrameType = MFX_FRAMETYPE_I | MFX_FRAMETYPE_IDR | MFX_FRAMETYPE_REF;
482+
}
476483
} else {
477484
ctrl.FrameType = MFX_FRAMETYPE_UNKNOWN;
478485
}

0 commit comments

Comments
 (0)