イントラ予測の部分を改善するために、しばらくの間 HM リファレンス ソフトウェアに取り組んできました。ここで、新しいイントラ予測アルゴリズムがコードに追加され、エンコーダーに私のアルゴリズムと HM の既定のアルゴリズムのどちらかを選択させます (RDCost
もちろんによると)。
私が今必要としているのは、エンコーダーがレート歪みループで決定するのと同じアルゴリズムをデコーダーが実行できるように、各 PU のフラグを通知することです。
コードを壊すことなく、この 1 ビット フラグをストリームに適切に追加するにはどうすればよいかを知りたいです。
フラグの統計を追跡するために CABAC コンテキスト モデルを使用すると仮定すると、他に何をすればよいでしょうか。
- ファイルのような新しいコンテキスト モデルを追加し
ContextModel3DBuffer m_cCUIntraAlgorithmSCModel
ますTEncSbac.h
。 - HMが他のコンテキストモデルをどのように初期化するかを見て、モデルを(エンコーダー側とデコーダー側の両方で)適切に初期化します。
- 関数
m_pcBinIf->encodeBin(myFlag, cCUIntraAlgorithmSCModel)
を呼び出し、m_pcTDecBinIfdecodeBin(myFlag, cCUIntraAlgorithmSCModel)
エンコーダー側とデコーダー側でそれぞれ呼び出します。
私はこれらの 3 つの手順を実行しますが、どうやら何かが壊れているようです。
PS: 同等確率のシグナリング (つまり、CABAC コンテキストを使用しないもの) でさえ有用です。この旗を平和的に送りたいだけです!
前もって感謝します。