プラットフォーム: iMX8 (Hantro VPU)、GStreamer 1.18、Wayland
ソース: iMX6 RTSPサーバーがUSBカメラ(Sonix 0c45:6366)からH.264をストリーミング配信
説明:
HD (1280x720) で H.264 RTSP ストリームを受信し、vpudec / imxvpudec_h264 でデコードすると、IDR フレームごとに周期的な視覚的なグリッチ (黒いフラッシュ) が発生します。
受信パイプライン(iMX8):
gst-launch-1.0rtspsrc location=rtsp://
!rtph264depay \
!h264parse \
!imxvpudec_h264 \
!imxg2dvideotransform \
!waylandsink sync=false
観察結果:
グリッチは各IDRフレームで正確に発生する。これは、カメラベンダーツール(sonixapp --xuset-gop)を使用してGOPサイズを増やすことで確認された。
GOP=14(デフォルト)の場合:15fpsで約1秒ごとにグリッチが発生する
GOP=150の場合:約10秒ごとにグリッチが発生する
GOP=4095の場合:約4.5分ごとにグリッチが発生する
同じパイプラインとカメラを使用した場合、フルHD(1920x1080)で不具合は発生しません。Sonixファームウェアは1080pでより大きなデフォルトGOPを使用します。
ソフトウェアデコーダーavdec_h264に不具合なし → 問題はimxvpudec_h264のDPBフラッシュ動作に特有のものです
根本原因仮説:
imxvpudec_h264は、H.264規格の要件に従って、各IDRフレームで内部のデコード画像バッファ(DPB)をフラッシュします。このフラッシュ処理により、Waylandディスプレイ上に黒い画面またはフリーズした画面が表示されます。ソフトウェアデコーダーは、目に見えるアーティファクトなしに、このフラッシュ処理をよりスムーズに行います。
質問:
imxvpudec_h264 / vpudec には、目に見える不具合なしに IDR フラッシュを処理するためのプロパティまたは設定はありますか?
IDR周波数を制御できないRTSPライブストリームに対する既知の回避策はありますか?
同じデコーダーを使用しているのに、720pと1080pで動作が異なるのはなぜですか?
GStreamerバージョン: 1.18.4