WM ASF ライタ フィルタ
WM ASF ライタは、Windows Media™ Format SDK に備えられたライタ オブジェクトのラッパー フィルタである。このフィルタは、可変数の入力ストリームを受け入れて ASF (Advanced Systems Format) ファイルを作成する。このフィルタは、すべての圧縮と多重化を取り扱うが、圧縮メカニズムはバイパスする場合がある。デジタル ビデオ (DV) キャプチャ、オーディオ再圧縮、ネットワーク ストリーミングの AVI (Audio-Video Interleaved) ファイルや MPEG マルチメディア ファイルの変換など、さまざまな状況で WM ASF ライタを使える。Microsoft DirectShow で Microsoft® Windows Media™ Audio ファイルおよび Windows Media Video ファイルを作成するには、このフィルタを使うのが唯一の方法である。
詳細については、「DirectShow での ASF ファイルの作成」を参照すること。
フィルタ インターフェイス | IAMFilterMiscFlags、IBaseFilter、IConfigAsfWriter、IFileSinkFilter2、IMediaSeeking、IPersistStream、IServiceProvider、ISpecifyPropertyPages |
入力ピン メディア タイプ | ASF プロファイルに依存する。一般に、非圧縮オーディオおよびビデオ タイプ。ただしこのフィルタは、ASF プロファイルに適合する圧縮タイプは受け入れる。 |
入力ピン インターフェイス | IPin、IMemInputPin、IAMStreamConfig |
出力ピン メディア タイプ | 該当なし。 |
出力ピン インターフェイス | 該当なし。 |
フィルタ CLSID | CLSID_WMAsfWriter |
プロパティ ページ CLSID | CLSID_AsfWriterProperties |
実行モジュール | Qasf.dll |
メリット | MERIT_DO_NOT_USE |
フィルタ カテゴリ | 指定なし。 |
注意
このフィルタには、Windows Media Format Software Development Kit (SDK) およびその必須条件を必要とする。
このフィルタの入力ピンの数は、ASF ストリームのプロファイルまたはプロファイル識別子に応じて異なる。
入力ピンは、IAMStreamConfig インターフェイスの 1 つのメソッド IAMStreamConfig::GetFormat をサポートする。他のすべてのメソッドは E_NOTIMPL を返す。ピンの宛先圧縮フォーマットを問い合わせるには、GetFormat メソッドを呼び出す。これは、現在の ASF プロファイルで定義される。プロファイルを設定するには、IConfigAsfWriter インターフェイスを使う。
フィルタの IServiceProvider インターフェイスによって、アプリケーションは、IWMWriterAdvanced2 インターフェイスを取得できる。これは、Windows Media Format SDK で定義されている。このインターフェイスは、フィルタ グラフにフィルタが追加された後にのみ取得できる。IWMWriterAdvanced2 インターフェイスは、ビデオの非インターレース化を制御するため、入力が DV ビデオのようなインターレース ソースの場合に便利である。非インターレース化を制御するには、GetInputSetting および SetInputSetting メソッドを使う。クライアントがこのインターフェイス上で他のメソッドを使うことは推奨しない。以下に、このインターフェイスの問い合わせの例を示す。
// m_pGraph が有効な IGraphBuilder インターフェイス ポインタであり、
// pAsfWriter が WM ASF Writer フィルタの IBaseFilter インターフェイスへの
// ポインタであると仮定する。
IServiceProvider *pProvider = NULL;
IWMWriterAdvanced2 *pWMWA2 = NULL;
hr = m_pGraph->AddFilter(pAsfWriter, L"WM ASF Writer");
...
hr = pAsfWriter->QueryInterface(IID_IServiceProvider, (void**)&pProvider)
if (SUCCEEDED(hr))
{
hr = pProvider->QueryService(IID_IWMWriterAdvanced2,
IID_IWMWriterAdvanced2, (void**)&pWMWA2);
pProvider->Release();
}