Microsoft DirectX 8.0

IAMTimelineSrc インターフェイス

Microsoft® DirectShow® 編集サービス (DES) のソース オブジェクトの操作とプロパティの設定を行うメソッドを提供する。ソース オブジェクトは、メディア ソースからの 1 つのメディア ストリームを表す。

メディア開始タイムとメディア終了タイムを設定することにより、ソース ファイル内のデータの部分を使用できる。この 2 つの値は、ソース オブジェクトの始まりと終わりを、元のメディア ソース相対で指定する。メディア タイムは、タイムライン上のオブジェクトの開始および終了タイムとは異なる場合があり、速度を変えた再生が可能である (オーディオ ソースの場合、ピッチ シフトが生じる)。

詳細については、「タイムラインの構築」および「ソースの操作」を参照すること。

要件

Qedit.h が必要である。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterfaceサポートされているインターフェイスへのポインタを取得する。
AddRef参照カウントをインクリメントする。
Release参照カウントをデクリメントする。
IAMTimelineSrc メソッド説明
GetMediaTimesメディア開始タイムと終了タイムを取得する。
GetMediaTimes2GetMediaTimes と同じ機能だが、REFTIME 値をパラメータにとる。
ModifyStopTimeタイムライン相対の終了タイムを設定する。
ModifyStopTime2ModifyStopTime と同じ機能だが、REFTIME 値をパラメータにとる。
FixMediaTimes指定されたタイム値を、出力フレーム レートによって定義される最も近いフレーム境界に丸める。
FixMediaTimes2FixMediaTimes と同じ機能だが、REFTIME 値をパラメータにとる。
SetMediaTimesメディア終了タイムと開始タイムを設定する。
SetMediaTimes2SetMediaTimes と同じ機能だが、REFTIME 値をパラメータにとる。
SetMediaLengthソース ファイルの時間幅を指定する。
SetMediaLength2SetMediaLength と同じ機能だが、REFTIME 値をパラメータにとる。
GetMediaLengthこのソース オブジェクトのメディア長を取得する。
GetMediaLength2GetMediaLength と同じ機能だが、REFTIME 値をパラメータにとる。
GetMediaNameこのソース オブジェクトが表すソース ファイルの名前を取得する。
SetMediaNameこのソース オブジェクトが表すソース ファイルの名前を指定する。
SpliceWithNextこのソース オブジェクトを別のソース オブジェクトに結合する。
GetStreamNumberソース オブジェクトの現在のストリーム番号を取得する。
SetStreamNumberこのソース オブジェクトに関連付けられているソース ファイルから読み込むストリームを指定する。
IsNormalRateクリップが通常の再生レートで再生されるかどうかを示す。
GetDefaultFPSソース オブジェクトのデフォルト フレーム レートを取得する。
SetDefaultFPSソース オブジェクトのデフォルト フレーム レートを設定する。
GetStretchModeビデオ ソースの伸縮モードを取得する。
SetStretchModeビデオ ソースの伸縮モードを設定する。

IAMTimelineSrc::FixMediaTimes

IAMTimelineSrc インターフェイス

指定されたタイム値を、出力フレーム レートによって定義される最も近いフレーム境界に丸める。通常、アプリケーションでこのメソッドを呼び出す必要はない。

構文

HRESULT FixMediaTimes(
    REFERENCE_TIME *pStart,
    REFERENCE_TIME *pStop
);

パラメータ

pStart
開始タイム (100 ナノ秒単位) を保持する変数へのポインタ。呼び出しが成功した場合、この変数は丸められた時間に設定される。
pStop
終了タイム (100 ナノ秒単位) を保持する変数へのポインタ。呼び出しが成功した場合、この変数は丸められた時間に設定される。

戻り値

成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。

注意

このメソッドは IAMTimelineObj::FixTimes メソッドに似ているが、メディア時間とタイムライン時間の元の比率を保持する。最も近いフレーム境界に時間を丸めることにより、この比が変化することがある。

IAMTimelineSrc::FixMediaTimes2

IAMTimelineSrc インターフェイス

指定されたタイム値を、出力フレーム レートによって定義される最も近いフレーム境界に丸める。このメソッドは FixMediaTimes と同じ機能だが、REFTIME 値をパラメータにとる。

構文

HRESULT FixMediaTimes2(
    REFTIME *pStart,
    REFTIME *pStop
);

パラメータ

pStart
開始タイム (秒単位) を保持する変数へのポインタ。呼び出しが成功した場合、この変数は丸められた時間に設定される。
pStop
終了タイム (秒単位) を保持する変数へのポインタ。呼び出しが成功した場合、この変数は丸められた時間に設定される。

戻り値

成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。

IAMTimelineSrc::GetDefaultFPS

IAMTimelineSrc インターフェイス

ソース オブジェクトのデフォルト フレーム レートを取得する。レンダリング エンジンが元のソースからフレーム レートを特定できない場合、この値が使用される。

構文

HRESULT GetDefaultFPS(
    double *pFPS
);

パラメータ

pFPS
デフォルトのフレーム レート (毎秒のフレーム数) を受け取る変数へのポインタ。

戻り値

成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。

注意

ファイル フォーマットでフレーム レートが指定されている場合、デフォルト フレーム レートは必要ない。これは、オーディオおよびビデオ フォーマットの場合に当てはまる。

ソースがビットマップまたは JPEG イメージの場合、レンダリング エンジンはそれをデバイスに依存しないビットマップ (DIB) シーケンスの最初のイメージとして使用し、そのフレーム レートはデフォルト フレーム レートに等しくなる。DIB シーケンスではなく、このスタティック イメージをレンダリングするには、デフォルト フレーム レートを 0 に設定する。

ソースが GIF の場合は、フレーム レートを設定してはならない。アニメーション GIF の場合、GIF ファイルが各イメージ間の遅延を指定する。

IAMTimelineSrc::GetMediaLength

IAMTimelineSrc インターフェイス

このソース オブジェクトのメディア長を取得する。

構文

HRESULT GetMediaLength(
    REFERENCE_TIME *pLength
);

パラメータ

pLength
メディア長 (100 ナノ秒単位) を受け取る変数へのポインタ。

戻り値

次のいずれかの HRESULT 値を返す。

S_OK成功。
E_NOTDETERMINEDこのオブジェクトにメディア時間は設定されていない。
E_POINTERNULL ポインタ引数。

参照

SetMediaLength

IAMTimelineSrc::GetMediaLength2

IAMTimelineSrc インターフェイス

このソース オブジェクトのメディア長を取得する。このメソッドは GetMediaLength と同じ機能だが、REFTIME 値をパラメータにとる。

構文

HRESULT GetMediaLength2(
    REFTIME *pLength
);

パラメータ

pLength
メディア長 (秒単位) を受け取る変数へのポインタ。

戻り値

次のいずれかの HRESULT 値を返す。

S_OK成功。
E_NOTDETERMINEDこのオブジェクトにメディア時間は設定されていない。
E_POINTERNULL ポインタ引数。

IAMTimelineSrc::GetMediaName

IAMTimelineSrc インターフェイス

このソース オブジェクトが表すソース ファイルの名前を取得する。

構文

HRESULT GetMediaName(
    BSTR *pVal
);

パラメータ

pVal
[out, retval] ファイルの名前を受け取る文字列へのポインタ。

戻り値

成功した場合は、S_OK を返す。それ以外の場合は、E_OUTOFMEMORY またはエラーの発生を示すその他の HRESULT 値を返す。

注意

このメソッドは、文字列に必要なメモリを割り当てる。アプリケーションは SysFreeString を呼び出して、メモリを解放しなければならない。

IAMTimelineSrc::GetMediaTimes

IAMTimelineSrc インターフェイス

メディア開始タイムと終了タイムを取得する。

構文

HRESULT GetMediaTimes(
    REFERENCE_TIME *pStart,
    REFERENCE_TIME *pStop
);

パラメータ

pStart
メディア開始タイム (100 ナノ秒単位) を受け取る変数へのポインタ。
pStop
メディア終了タイム (100 ナノ秒単位) を受け取る変数へのポインタ。

戻り値

成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。

注意

メディア時間は、元のメディア ファイル相対である。詳細については、「DirectShow 編集サービスにおける時間」を参照すること。

IAMTimelineSrc::GetMediaTimes2

IAMTimelineSrc インターフェイス

メディア開始タイムと終了タイムを取得する。このメソッドは GetMediaTimes と同じ機能だが、REFTIME 値をパラメータにとる。

構文

HRESULT GetMediaTimes2(
    REFTIME *pStart,
    REFTIME *pStop
);

パラメータ

pStart
メディア開始タイム (秒単位) を受け取る変数へのポインタ。
pStop
メディア終了タイム (秒単位) を受け取る変数へのポインタ。

戻り値

成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。

IAMTimelineSrc::GetStreamNumber

IAMTimelineSrc インターフェイス

ソース オブジェクトの現在のストリーム番号を取得する。

構文

HRESULT GetStreamNumber(
    long *pVal
);

パラメータ

pVal
ストリーム番号を受け取る変数へのポインタ。

戻り値

成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。

IAMTimelineSrc::GetStretchMode

IAMTimelineSrc インターフェイス

伸縮モードを取得する。伸縮モードは、ビデオ ソースのサイズが出力ディメンジョンと一致しないときに、どのようにレンダリングされるかを指定する。

構文

HRESULT GetStretchMode(
    int *pnStretchMode
);

パラメータ

pnStretchMode
現在の伸縮 モードを示すフラグを受け取る変数へのポインタ。可能な値は次のとおりである。

戻り値

成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。

IAMTimelineSrc::IsNormalRate

IAMTimelineSrc インターフェイス

クリップが通常の再生レートで再生されるかどうか、つまり元のファイルの再生レートかどうかを示す。

構文

HRESULT IsNormalRate(
    BOOL *pVal
);

パラメータ

pVal
クリップのレンダリング方法を示すブール値を受け取る変数へのポインタ。値が TRUE の場合、クリップは通常の再生レートで再生される。そうでない場合、通常とは異なる速度で再生される。

戻り値

成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。

注意

クリップの再生レートは、タイムライン相対のメディア開始タイムとメディア終了タイムによって決まる。

再生レート = (メディア終了タイム - メディア開始タイム) / (タイムライン終了タイム - タイムライン開始タイム)

この比が 1 に等しい場合、クリップは作成時の速度で再生される。そうでない場合、通常とは異なる速度で再生される。詳細については、「DirectShow 編集サービスにおける時間」を参照すること。

IAMTimelineSrc::ModifyStopTime

IAMTimelineSrc インターフェイス

タイムライン相対の終了タイムを設定する。

構文

HRESULT ModifyStopTime(
    REFERENCE_TIME Stop
);

パラメータ

Stop
新しい終了タイム (100 ナノ秒単位)。

戻り値

S_OK を返す。指定された時間が有効でない場合は E_INVALIDARG を返す。

注意

このメソッドは、元の開始タイムと新しい終了タイムを指定して IAMTimelineObj::SetStartStop を呼び出すのと同等である。

IAMTimelineSrc::ModifyStopTime2

IAMTimelineSrc インターフェイス

終了タイムを設定する。このメソッドは ModifyStopTime と同じ機能だが、REFTIME 値をパラメータにとる。

構文

HRESULT ModifyStopTime2(
    REFTIME Stop
);

パラメータ

Stop
新しい終了タイム (秒単位)。

戻り値

成功した場合、S_OK を返す。指定された時間が有効でない場合は、E_INVALIDARG を返す。

IAMTimelineSrc::SetDefaultFPS

IAMTimelineSrc インターフェイス

ソース オブジェクトのデフォルト フレーム レートを設定する。

構文

HRESULT SetDefaultFPS(
    double FPS
);

パラメータ

FPS
デフォルトのフレーム レート (毎秒のフレーム数)。

戻り値

成功した場合、S_OK を返す。指定されたフレーム レートがゼロより小さい場合は、E_INVALIDARG を返す。

注意

レンダリング エンジンが元のソース ファイルからフレーム レートを特定できない場合、この値が使用される。

このメソッドは、定義済みのフレーム レートを持たないソース ファイルに対してのみ呼び出す。ビットマップおよび JPEG ファイルの場合、デフォルト フレーム レートはゼロであり、それによりソースはスティル イメージとしてレンダリングされる。イメージを DIB シーケンスの最初のフレームとして使用するには、フレーム レートをゼロより大きな値に設定する。詳細については、「ソースの操作」を参照すること。

IAMTimelineSrc::SetMediaLength

IAMTimelineSrc インターフェイス

ソース ファイルの時間幅を指定する。

構文

HRESULT SetMediaLength(
    REFERENCE_TIME Length
);

パラメータ

Length
メディア長 (100 ナノ秒単位)。

戻り値

S_OK を返す。

注意

メディア終了タイムを設定する前にメディア長を設定することにより、潜在的なレンダリング エラーを回避できる。メディア終了タイムを設定するときに、DES はそれをメディア長と付き合わせてチェックする。

このメソッドは Length パラメータを検証しないが、その値はソース ファイルの実際の時間幅と等しくなければならない。ソース ファイルの時間幅は、IMediaDet::get_StreamLength を呼び出すことにより取得する。

IAMTimelineSrc::SetMediaLength2

IAMTimelineSrc インターフェイス

ソース ファイルの時間幅を指定する。このメソッドは SetMediaLength と同じ機能だが、REFTIME 値をパラメータにとる。

構文

HRESULT SetMediaLength2(
    REFTIME Length
);

パラメータ

Length
メディア長 (秒単位)。

戻り値

S_OK を返す。

IAMTimelineSrc::SetMediaName

IAMTimelineSrc インターフェイス

このソース オブジェクトが表すソース ファイルの名前を指定する。

構文

HRESULT SetMediaName(
    BSTR newVal
);

パラメータ

newVal
メディア ファイルの名前を指定する文字列。

戻り値

S_OK を返す。

IAMTimelineSrc::SetMediaTimes

IAMTimelineSrc インターフェイス

メディア終了タイムと開始タイムを設定する。

構文

HRESULT SetMediaTimes(
    REFERENCE_TIME Start,
    REFERENCE_TIME Stop
);

パラメータ

Start
メディア開始タイム (100 ナノ秒単位)。
Stop
メディア終了タイム (100 ナノ秒単位)。

戻り値

S_OK を返す。

注意

メディア タイムは、元のメディア ファイル相対のメディア終了タイムとメディア開始タイムである。ビデオまたはオーディオ ソースをタイムラインに追加するときには、必ずメディア タイムを設定する。そうしないと、レンダリングで問題が発生することがある。終了タイムは、開始タイムより大きくなければならない。

ビデオ ソースからスティル フレームを使用するには、開始タイムから小数点以下の値 (たとえば 100 ナノ秒) だけ大きい終了タイムを設定する。開始タイムと終了タイムを同じ値に設定すると、レンダリング エラーが発生する。

タイムラインの時間幅がメディアの時間幅と一致しない場合、それに合わせてソースが伸縮する。これにより、クリップの再生は、作成時とは異なるレートで行われることになる (オーディオ ソースでは、ピッチ シフトが生じる)。詳細については、「DirectShow 編集サービスにおける時間」を参照すること。

ソース ファイルの時間幅は、SetMediaLength メソッドを呼び出すことにより指定できる。メディア終了タイムが時間幅を超える場合、DES は終了タイムを繰り上げる。

IAMTimelineSrc::SetMediaTimes2

IAMTimelineSrc インターフェイス

メディア終了タイムと開始タイムを設定する。このメソッドは SetMediaTimes と同じ機能だが、REFTIME 値をパラメータにとる。

構文

HRESULT SetMediaTimes2(
    REFTIME Start,
    REFTIME Stop
);

パラメータ

Start
メディア開始タイム (秒単位)。
Stop
メディア終了タイム (秒単位)。

戻り値

S_OK を返す。

IAMTimelineSrc::SetStreamNumber

IAMTimelineSrc インターフェイス

このソース オブジェクトに関連付けられているソース ファイルから読み込むストリームを指定する。

構文

HRESULT SetStreamNumber(
    long Val
);

パラメータ

Val
ストリーム番号。親グループの、一致するメディア タイプのストリームのセットから得られる。

戻り値

成功した場合、S_OK を返す。Val がゼロより小さい場合は、E_INVALIDARG を返す。

注意

Val パラメータは、親グループのメディア タイプに一致するストリームのセットにおけるストリーム番号を指定する。これは、ソース ファイルのストリームのセット全体における番号ではない。たとえば、ファイルにビデオ ストリームが 2 つとオーディオ ストリームが 2 つある場合、Val0 を指定すると最初のビデオ ストリームが選択される。呼び出し元に、有効なストリーム番号を指定する責任がある。

ストリーム番号のデフォルトはゼロである。

IAMTimelineSrc::SetStretchMode

IAMTimelineSrc インターフェイス

伸縮モードを設定する。伸縮モードは、ビデオ ソースのサイズが出力ディメンジョンと一致しないときに、どのようにレンダリングされるかを指定する。

構文

HRESULT SetStretchMode(
    int nStretchMode
);

パラメータ

nStretchMode
現在の伸縮モードを示すフラグ。可能な値は次のとおりである。

戻り値

S_OK を返す。

IAMTimelineSrc::SpliceWithNext

IAMTimelineSrc インターフェイス

ソース オブジェクトを別のソース オブジェクトに結合する。

構文

HRESULT SpliceWithNext(
    IAMTimelineObj *pNext
);

パラメータ

pNext
現在のソースを結合するソース オブジェクトの IAMTimelineObj インターフェイスへのポインタ。

戻り値

HRESULT 値を返す。可能な戻り値は次のとおりである。

S_OK成功。
E_INVALIDARG無効な引数。
E_NOINTERFACEpNext パラメータによって指定されたオブジェクトはソース オブジェクトではない。
E_POINTERNULL ポインタ引数。

注意

現在の実装では、このメソッドは pNext 上のエフェクトは破棄する。

このメソッドを正しく動作させるには、pNext は現在のソース オブジェクトのフレームに一致していなければならない。