次の方法で共有


ASF スプリッター オブジェクトの作成

ASF スプリッタ ー オブジェクトは、Advanced Systems Format (ASF) ファイルの ASF データ オブジェクトを解析する WMContainer レイヤー オブジェクトです。 ASF スプリッター オブジェクトの新しいインスタンスを作成するには、 MFCreateASFSplitter 関数を 呼び出します。 この関数は、空のスプリッター オブジェクトを表す IMFASFSplitter インターフェイスへのポインターを返します。

スプリッターの解析を開始する前に、アプリケーションは ASF ヘッダー オブジェクトからの情報を使用してスプリッターを初期化する必要があります。 スプリッターを初期化するには、 IMFASFSplitter::Initialize メソッドを呼び出します。 このメソッドは、解析する ASF ファイルのヘッダー情報を含む ASF ContentInfo オブジェクト へのポインターを受け取ります。 メディア ファイルの特性がアプリケーションに認識されるように、アプリケーションは、スプリッターに渡す前に ContentInfo オブジェクトを初期化する必要があります。 スプリッターの Initialize メソッドは、ストリーム番号などの ContentInfo オブジェクトからストリーム情報を抽出するため、スプリッターはデータ パケットを解析できます。

次のコード例は、スプリッターを作成し、既存の ContentInfo オブジェクトで初期化する方法を示しています。

// Create and initialize the ASF splitter.

HRESULT CreateASFSplitter (IMFASFContentInfo* pContentInfo, 
    IMFASFSplitter** ppSplitter)
{
    IMFASFSplitter *pSplitter = NULL;

    // Create the splitter object.
    HRESULT hr = MFCreateASFSplitter(&pSplitter);

    // Initialize the splitter to work with specific ASF data.
    if (SUCCEEDED(hr))
    {
        hr = pSplitter->Initialize(pContentInfo);
    }
    if (SUCCEEDED(hr))
    {
        // Return the object to the caller.
        *ppSplitter = pSplitter;
        (*ppSplitter)->AddRef();
    }
    SafeRelease(&pSplitter);
    return hr;
}

注意

この例では、 SafeRelease 関数を使用してインターフェイス ポインターを解放します。

 

ASF スプリッター