Microsoft DirectX 8.0 |
ここでは、Microsoft® DirectShow® 編集サービス (DES) でアルファ ブレンディングを実行する方法について説明する。
アルファは、ピクセルまたはイメージの透明度を示す。32 ビット非圧縮 RGB ビデオでは、アルファ チャンネル (A) および 3 つのカラー コンポーネント (RGB) から成る、4 つのコンポーネントによって各ピクセルが定義される。アルファ値がゼロのピクセルは完全に透明であり、アルファ値が 255 のピクセルは不透明である。ピクセルは、これらの値の間のさまざまな透明度を持つ。
DirectShow では、32 ビット RGB ビデオ用に次の 2 つのメディア タイプが定義される。
DES でアルファ ブレンディングを使うには、最初にグループの非圧縮メディア タイプを MEDIASUBTYPE_ARGB32 に設定する。C++ では、IAMTimelineGroup::SetMediaType メソッドを呼び出す。XTL フォーマットでは、GROUP 要素の BITDEPTH 属性を 32 に設定しても、アルファ ブレンディングを使用できる。詳細については、「XML リファレンス」を参照すること。
次に、アルファ チャンネルが含まれたビデオ データが必要である。そのためには、次のようないくつかのオプションがある。
ビデオ ソースにアルファがない場合は、アルファ データを作成するエフェクトを使用できる。アルファ セッター エフェクトを使うと、イメージ全体のアルファ チャンネルを定数値に設定できる。時間と共にアルファが変化するようにするには、IPropertySetter インターフェイスを使用する。グループの非圧縮メディア タイプが MEDIASUBTYPE_ARGB32 である限り、元のソースは 32 ビットである必要はない。また、アルファ データを作成する、ユーザー独自の Microsoft® DirectX® 変換エフェクトを作成することもできる。
注 : アルファ データが既にビデオ ソースに含まれている場合は、アルファ セッター エフェクトを使って、指定する割合で各ピクセルのアルファ値を変更できる。詳細については、「アルファ セッター」を参照すること。
最後に、アルファ ブレンディングを実行するエフェクトまたはトランジションにビデオを渡す。コンポジタ トランジションおよび SMPTE ワイプ トランジションは、どちらもアルファ ブレンディングを実行する。キー トランジションは、アルファ値によってキーイングできる。サードパーティーの DirectX 変換オブジェクトにも、アルファ ブレンディングをサポートするものがある。
次のサンプル XTL プロジェクトでは、アルファ ブレンディングを実行している。
<TIMELINE> <GROUP TYPE="video" BITDEPTH="32" WIDTH="320" HEIGHT="240"> <TRACK> <CLIP START="0" STOP="6" src="c:\example.avi" /> </TRACK> <TRACK> <CLIP START="0" STOP="6" src="c:\example2.avi"> <!-- アルファ セッター エフェクト --> <EFFECT CLSID="{506D89AE-909A-44f7-9444-ABD575896E35}" START="0" STOP="6"> <PARAM NAME="alpha" VALUE="255"> <LINEAR TIME="6" VALUE="0" /> </PARAM> </EFFECT> </CLIP> <!-- アルファ キーイングを使ったキー トランジション --> <TRANSITION CLSID="{C5B19592-145E-11d3-9F04-006008039E37}" START="0" STOP="6"> <PARAM NAME="KeyType" VALUE="3" /> </TRANSITION> </TRACK>