DirectShow 編集サービスを使った Windows Media の使い方

ここでは、DirectShow 編集サービス (DES) アプリケーションでの Windows Media ベースのコンテンツの使い方について説明する。以下に示すように、主に 2 とおりのシナリオがある。

  • ソース クリップ。DES プロジェクトには、Windows Media ファイルからのオーディオ クリップおよびビデオ クリップを含めることができる。
  • ターゲット フォーマット。Windows Media は、ビデオ編集プロジェクトの最終出力として理想的なフォーマットである。

Windows Media ファイルを操作するためには、アプリケーションはソフトウェア証明書 (キーとも呼ばれる) を提供しなければならない。提供するには、キー プロバイダ オブジェクトを実装する。キー プロバイダは、IServiceProvider インターフェイスを公開する COM オブジェクトである。キー プロバイダの実装方法については、「Windows Media Format SDK のロック解除」を参照すること。

Windows Media ファイルと共に DES を使うには、以下の DES オブジェクトにソフトウェア キーが必要である。

  • プレビューまたはファイルの書き込み用のレンダリング エンジン。
  • ASF ファイルからビデオ フレームまたはメディア タイプを取得するための MediaDet オブジェクト。

重要 :  スマート レンダリング エンジンは、Windows Media ファイルの読み取りや書き込みに使ってはならない。常に基本レンダリング エンジン (CLSID_RenderEngine) を使うこと。

オブジェクトにソフトウェア キーを与えるには、そのオブジェクトに、IObjectWithSite インターフェイスについて問い合わせ、キー プロバイダへのポインタを指定して IObjectWithSite::SetSite を呼び出す。たとえば、以下のコードでは、レンダリング エンジンにソフトウェア キーを与える。

// アプリケーション定義関数を使ってキー プロバイダを作成する。
IServiceProvider *pKey;
hr = MyCreateKeyProviderFunction(&pKey);  

// IObjectWithSite についてレンダリング エンジンに問い合わせる。
IObjectWithSite *pOWS;
hr = pRenderEngine->QueryInterface(__uuidof(IObjectWithSite), 
    reinterpret_cast<void**>(&pOWS));
if (SUCCEEDED(hr))
{
    // キー プロバイダを与える。
    hr = pOWS->SetSite(pKey);
    pOWS->Release();
}
pKey->Release();

DES プロジェクトで Windows Media ソース クリップを使うには、キー プロバイダへのポインタを指定して、レンダリング エンジンの IObjectWithSite::SetSite を呼び出すだけである。

Windows Media ファイルを書き込む方法については、「DES における Windows Media ファイルの書き込み」を参照すること。