ビデオのインターレースを解除するには
[このページに関連付けられている機能である Windows Media Format 11 SDK は、従来の機能です。 ソース リーダーとシンク ライターに置き換わりました。 ソース リーダーとシンク ライターは、Windows 10とWindows 11用に最適化されています。 Microsoft では、可能であれば、新しいコードで Windows Media Format 11 SDK ではなくソース リーダーとシンク ライターを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
ビデオ キャプチャ カードなどの一部のビデオ ソースでは、インターレースディスプレイ用のビデオ データが配信されます。 インターレースされたビデオの各フレームは、2 つのフィールドで構成されます。 上部のフィールドには、ビデオの最初の行とその後の 1 行おきに表示されます。 下部のフィールドには、ビデオの 2 行目とその後の 1 行おきに表示されます。 そのため、1 つのフィールドには偶数行がすべて含まれており、もう 1 つのフィールドには奇数行がすべて含まれます。 フレームを構成するフィールドは、表示時間が若干異なるため、インターリーブ時に静的イメージが形成されません。
コンピューター モニターにビデオを表示する場合は、ビデオの各フレームを 1 つの画像として表示する必要があります (ビデオを一度に 1 フレーム全体を表示するこの方法は 、プログレッシブ ビデオと呼ばれます)。インターレースされたビデオを段階的に表示すると、2 つのフィールド間の時間差のため、フレームが正しく表示されないことがあります。 Windows Media Video コーデックと Windows Media Video Advanced Profile コーデックはどちらも、インターレースされたコンテンツをプログレッシブ フレームに変換する前処理機能をサポートしています。
コーデックデインターレース入力ビデオを表示するには、 IWMWriterAdvanced2::SetInputSetting メソッドを 呼び出します。 使用する設定はg_wszDeinterlaceMode。 インターレース解除モードを次のいずれかの値に設定します。
値 | 説明 |
---|---|
WM_DM_NOTINTERLACED | 入力はプログレッシブです。 この設定を使用して、インターレース解除モードを別の値に設定した場合に、インターレース解除を停止します。 |
WM_DM_DEINTERLACE_NORMAL | このモードを選択すると、インターレース フレームの偶数フィールドと奇数フィールドがブレンドされます (モーション補正メカニズムを使用)。利点:
|
WM_DM_DEINTERLACE_HALFSIZE | 出力解像度が入力解像度の半分以下の場合は、このモードを選択します。 たとえば、入力ビデオの解像度が 640 x 480 ピクセルで、出力ビデオの解像度が 320 x 240 ピクセルの場合は、このモードを使用します。利点:
|
WM_DM_DEINTERLACE_HALFSIZEDOUBLERATE | 出力解像度が入力解像度の半分以下で、出力 フレーム レート が 2 倍の場合は、このモードを選択します。 たとえば、入力ビデオ解像度が 30 インターレース フレーム/秒で 640 x 480 ピクセルで、出力ビデオ解像度が 60 フレーム/秒で 320 x 240 ピクセルである場合に、このモードを使用します。利点:
|
WM_DM_DEINTERLACE_INVERSETELECINE | このモードを選択すると、テレシンされた 30 フレーム/秒のビデオが元のフィルムの 24 フレーム/秒に変換されます。利点:
|
WM_DM_DEINTERLACE_VERTICALHALFSIZEDOUBLERATE | このモードは、垂直出力解像度が入力垂直解像度の 1/2 以下で、出力 フレーム レート が 2 倍の場合に選択します。 たとえば、入力垂直ビデオ解像度は 30 インターレース フレーム/秒で 640 x 480 ピクセル、出力垂直ビデオ解像度は 60 フレーム/秒で 320 x 240 ピクセルです。利点:
|
混合コンテンツの場合は、新しい型のサンプルを渡す前に、必要に応じてデインターレース モードを設定します。 たとえば、プログレッシブ入力でエンコードを開始するには、インターレース解除モードを設定する必要はありません。 一部のサンプルで通常のインターレース解除が必要な場合は、インターレース解除モードをWM_DM_DEINTERLACE_NORMALに設定する必要があります。 その後、追加のプログレッシブ サンプルを処理するには、インターレース解除モードをWM_DM_NOTINTERLACEDに設定する必要があります。
逆テレシネ設定
逆テレシネの詳細については、「逆テレシ ネを使用するには」を参照してください。
インターレース解除モードを WM_DM_DEINTERLACE_INVERSETELECINE に設定した場合は、 IWMWriterAdvanced2::SetInputSetting を呼び出して、最初の入力フレームのテレシネ パターンを指定できます。 使用する設定はg_wszInitialPatternForInverseTelecine。 初期パターンを次のいずれかの値に設定します。
値 | 説明 |
---|---|
WM_DM_IT_DISABLE_COHERENT_MODE | 入力メディアがテレシネ プロセスを通過したが、フレームが予測可能なパターンでなくなったことを指定します。 これは通常、テレシネ処理後にメディアが編集されたことを示します。 この設定を使用すると、コーデックは独自に元のフレームの再構築を試みます。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_TOP | AA フレームの上部フィールドが最初のサンプルであることを指定します。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_TOP | BB フレームの上部フィールドが最初のサンプルであることを指定します。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_TOP | BC フレームの先頭フィールドが最初のサンプルであることを指定します。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_TOP | CD フレームの先頭フィールドが最初のサンプルであることを指定します。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_TOP | DD フレームの先頭フィールドが最初のサンプルであることを指定します。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_BOTTOM | AA フレームの下部フィールドが最初のサンプルであることを指定します。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_BOTTOM | BB フレームの下部フィールドが最初のサンプルであることを指定します。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_BOTTOM | BC フレームの下部フィールドが最初のサンプルであることを指定します。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_BOTTOM | CD フレームの下部フィールドが最初のサンプルであることを指定します。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_BOTTOM | DD フレームの下部フィールドが最初のサンプルであることを指定します。 |