カクタスソフトウェア
カクタスソフトウェア
サウンド MIDI マルチメディア アプリケーション

支援インターフェース

フィルタグラフを運用するには多くの関連機能が必要となるため、以下に示すような支援インターフェースが用意されています。

インターフェース 機能
IMediaSeeking メディアファイルの再生位置に関するサービスを行う。
IMediaControl フィルタグラフの実行・停止のサービスを行う。
IMediaEventEx グラフ内で生じるイベントの処理を行う。
IMediaFilter クロックの設定を行う。
IVideoWindow ビデオウィンドウのプロパティを設定する。
IBasicVideo ビデオイメージに関する領域を操作する。
IBasicAudio オーディオ信号のボリュームやバランスをコントロールする。
IMediaFilterというインターフェースがあり、再生の開始・停止などのコマンドを支援します。このインターフェースは直接フィルターをコントロールするローレベルAPIで、アプリケーションからは使うべきではありません。グラフの安定した運用のためグラフマネージャーを経由したIMediaControlインターフェースを使ってください。

支援インターフェースを取得するにはIGraphBuilder::QueryInterface()関数を用います。以下にコード例を示します。

    IMediaSeeking       *m_pMS;
    IMediaControl       *m_pMC;
    IMediaEventEx       *m_pME;
    IMediaFilter        *m_pMF;
    IVideoWindow        *m_pVW;
    IBasicVideo         *m_pBV;
    IBasicAudio         *m_pBA;

    result = m_pGB->QueryInterface(IID_IMediaControl, (void **)&m_pMC);
    if (FAILED(result))         throw result;

    result = m_pGB->QueryInterface(IID_IMediaSeeking, (void **)&m_pMS);
    if (FAILED(result))         throw result;

    result = m_pGB->QueryInterface(IID_IMediaEventEx, (void **)&m_pME);
    if (FAILED(result))         throw result;

    result = m_pGB->QueryInterface(IID_IMediaFilter, (void **)&m_pMF);
    if (FAILED(result))     throw result;

    result = m_pGB->QueryInterface(IID_IVideoWindow, (void **)&m_pVW);
    if (FAILED(result))         m_bVideoInterface = FALSE;

    result = m_pGB->QueryInterface(IID_IBasicVideo, (void **)&m_pBV);
    if (FAILED(result))         m_bVideoInterface = FALSE;

    result = m_pGB->QueryInterface(IID_IBasicAudio, (void **)&m_pBA);
    if (FAILED(result))         m_bAudioInterface = FALSE;

ここで取得したインターフェースはプログラムの終わりでリリースしなければなりません。

    SAFE_RELEASE(m_pMF);
    SAFE_RELEASE(m_pME);
    SAFE_RELEASE(m_pMC);
    SAFE_RELEASE(m_pMS);
    SAFE_RELEASE(m_pVW);
    SAFE_RELEASE(m_pBV);
    SAFE_RELEASE(m_pBA);
取得するのは必要なインターフェースだけでよく、すべてを実装する必要はありません。

ドキュメントの先頭へ

カクタスソフトウェア 技術協力 資料室 資料室の広場 SourceForge.jp お問い合わせ