ビデオデコーダーとビデオレンダーフィルターの間に挿入されるDirectShowビデオ変換フィルターを作成しました。入力画像の周りにフォトフレームが追加されます。そのため、出力画像のサイズと縦横比は入力画像とは異なります。
残念ながら、ビデオ レンダリングでは元の縦横比が維持されるため、フォト フレームを含む画像が引き伸ばされて表示されることがわかりました。GraphEdit で、「縦横比を維持する」という名前のチェック ボックスがあるビデオ レンダー フィルターを見つけました。チェックを外すとアウト画像は引き伸ばされません。それが私が欲しいものです。しかし、私のコードでそれを行う方法がわかりません。インターフェイス IVideoWindow にクエリを実行しましたが、アスペクト比を設定できないことがわかりました。そこで、ここで助けを求めます。
ありがとう。
ありがとう、ジェレマイア・モリル。はい、IVMRAspectRatioControl7/9 が必要です。しかし、インターフェイスを取得するには、最初にフィルター Video Mixing Renderer Filter 7/9 を取得する必要があるようです。「Video Mixing Renderer Filter 9」ではなく、「Video Renderer」フィルタで縦横比を設定したい。
フォーマットを動的に変更する必要はありません。私のフィルターグラフは
Source -> Demux -> Decoder -> MyFilter -> VideoRenderer
Decoder 出力の解像度に関係なく、MyFilter の出力解像度は常にデスクトップ画面と同じです。インテリジェンス接続を使用すると、説明した問題が発生することがわかりました。しかし、MyFilter を VideoRenderer に手動で接続すると、ビデオの解像度は正しく、つまり画面と同じになります。