次の方法で共有


シーク機能の問い合わせ

Microsoft® DirectShow® は、IMediaSeeking インターフェイスによるシークをサポートしている。このインターフェイスを公開するのはフィルタ グラフ マネージャであるが、シーク機能を実装するのは常にグラフのフィルタである。

データによってはシークできないものがある。たとえば、カメラからのライブ ビデオ ストリームをシークすることはできない。ストリームがシーク可能である場合、サポートされるシークの種類はさまざまである。次のシークが含まれる。

  • ストリーム内の任意の位置をシークする。
  • ストリームの時間幅を取得する。
  • ストリーム内の現在位置を取得する。
  • 逆方向に再生する。

IMediaSeeking インターフェイスは、対応可能なシーク機能を表す AM_SEEKING_SEEKING_CAPABILITIES フラグを定義する。ストリームの機能を取得するには、IMediaSeeking::GetCapabilities メソッドを呼び出す。このメソッドにより、ビット単位のフラグの論理和が返される。アプリケーションは & (ビット単位の AND) 演算子を使って、フラグを検査できる。たとえば、次のコードはグラフが任意の位置をシークできるかどうかをチェックする。

DWORD dwCap = 0;
HRESULT hr = pSeek->GetCapabilities(&dwCap);
if (AM_SEEKING_CanSeekAbsolute & dwCap)
{
    // グラフは絶対位置にシークできる。
}