Microsoft DirectX 8.0 |
Microsoft® DirectShow® 編集サービス (DES) のソース オブジェクトの操作とプロパティの設定を行うメソッドを提供する。ソース オブジェクトは、メディア ソースからの 1 つのメディア ストリームを表す。
メディア開始タイムとメディア終了タイムを設定することにより、ソース ファイル内のデータの部分を使用できる。この 2 つの値は、ソース オブジェクトの始まりと終わりを、元のメディア ソース相対で指定する。メディア タイムは、タイムライン上のオブジェクトの開始および終了タイムとは異なる場合があり、速度を変えた再生が可能である (オーディオ ソースの場合、ピッチ シフトが生じる)。
詳細については、「タイムラインの構築」および「ソースの操作」を参照すること。
要件
Qedit.h が必要である。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IAMTimelineSrc メソッド 説明 GetMediaTimes メディア開始タイムと終了タイムを取得する。 GetMediaTimes2 GetMediaTimes と同じ機能だが、REFTIME 値をパラメータにとる。 ModifyStopTime タイムライン相対の終了タイムを設定する。 ModifyStopTime2 ModifyStopTime と同じ機能だが、REFTIME 値をパラメータにとる。 FixMediaTimes 指定されたタイム値を、出力フレーム レートによって定義される最も近いフレーム境界に丸める。 FixMediaTimes2 FixMediaTimes と同じ機能だが、REFTIME 値をパラメータにとる。 SetMediaTimes メディア終了タイムと開始タイムを設定する。 SetMediaTimes2 SetMediaTimes と同じ機能だが、REFTIME 値をパラメータにとる。 SetMediaLength ソース ファイルの時間幅を指定する。 SetMediaLength2 SetMediaLength と同じ機能だが、REFTIME 値をパラメータにとる。 GetMediaLength このソース オブジェクトのメディア長を取得する。 GetMediaLength2 GetMediaLength と同じ機能だが、REFTIME 値をパラメータにとる。 GetMediaName このソース オブジェクトが表すソース ファイルの名前を取得する。 SetMediaName このソース オブジェクトが表すソース ファイルの名前を指定する。 SpliceWithNext このソース オブジェクトを別のソース オブジェクトに結合する。 GetStreamNumber ソース オブジェクトの現在のストリーム番号を取得する。 SetStreamNumber このソース オブジェクトに関連付けられているソース ファイルから読み込むストリームを指定する。 IsNormalRate クリップが通常の再生レートで再生されるかどうかを示す。 GetDefaultFPS ソース オブジェクトのデフォルト フレーム レートを取得する。 SetDefaultFPS ソース オブジェクトのデフォルト フレーム レートを設定する。 GetStretchMode ビデオ ソースの伸縮モードを取得する。 SetStretchMode ビデオ ソースの伸縮モードを設定する。
指定されたタイム値を、出力フレーム レートによって定義される最も近いフレーム境界に丸める。通常、アプリケーションでこのメソッドを呼び出す必要はない。
構文
HRESULT FixMediaTimes( REFERENCE_TIME *pStart, REFERENCE_TIME *pStop );
パラメータ
- pStart
- 開始タイム (100 ナノ秒単位) を保持する変数へのポインタ。呼び出しが成功した場合、この変数は丸められた時間に設定される。
- pStop
- 終了タイム (100 ナノ秒単位) を保持する変数へのポインタ。呼び出しが成功した場合、この変数は丸められた時間に設定される。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
注意
このメソッドは IAMTimelineObj::FixTimes メソッドに似ているが、メディア時間とタイムライン時間の元の比率を保持する。最も近いフレーム境界に時間を丸めることにより、この比が変化することがある。
指定されたタイム値を、出力フレーム レートによって定義される最も近いフレーム境界に丸める。このメソッドは FixMediaTimes と同じ機能だが、REFTIME 値をパラメータにとる。
構文
HRESULT FixMediaTimes2( REFTIME *pStart, REFTIME *pStop );
パラメータ
- pStart
- 開始タイム (秒単位) を保持する変数へのポインタ。呼び出しが成功した場合、この変数は丸められた時間に設定される。
- pStop
- 終了タイム (秒単位) を保持する変数へのポインタ。呼び出しが成功した場合、この変数は丸められた時間に設定される。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
ソース オブジェクトのデフォルト フレーム レートを取得する。レンダリング エンジンが元のソースからフレーム レートを特定できない場合、この値が使用される。
構文
HRESULT GetDefaultFPS( double *pFPS );
パラメータ
- pFPS
- デフォルトのフレーム レート (毎秒のフレーム数) を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
注意
ファイル フォーマットでフレーム レートが指定されている場合、デフォルト フレーム レートは必要ない。これは、オーディオおよびビデオ フォーマットの場合に当てはまる。
ソースがビットマップまたは JPEG イメージの場合、レンダリング エンジンはそれをデバイスに依存しないビットマップ (DIB) シーケンスの最初のイメージとして使用し、そのフレーム レートはデフォルト フレーム レートに等しくなる。DIB シーケンスではなく、このスタティック イメージをレンダリングするには、デフォルト フレーム レートを 0 に設定する。
ソースが GIF の場合は、フレーム レートを設定してはならない。アニメーション GIF の場合、GIF ファイルが各イメージ間の遅延を指定する。
このソース オブジェクトのメディア長を取得する。
構文
HRESULT GetMediaLength( REFERENCE_TIME *pLength );
パラメータ
- pLength
- メディア長 (100 ナノ秒単位) を受け取る変数へのポインタ。
戻り値
次のいずれかの HRESULT 値を返す。
S_OK 成功。 E_NOTDETERMINED このオブジェクトにメディア時間は設定されていない。 E_POINTER NULL ポインタ引数。
参照
このソース オブジェクトのメディア長を取得する。このメソッドは GetMediaLength と同じ機能だが、REFTIME 値をパラメータにとる。
構文
HRESULT GetMediaLength2( REFTIME *pLength );
パラメータ
- pLength
- メディア長 (秒単位) を受け取る変数へのポインタ。
戻り値
次のいずれかの HRESULT 値を返す。
S_OK 成功。 E_NOTDETERMINED このオブジェクトにメディア時間は設定されていない。 E_POINTER NULL ポインタ引数。
このソース オブジェクトが表すソース ファイルの名前を取得する。
構文
HRESULT GetMediaName( BSTR *pVal );
パラメータ
- pVal
- [out, retval] ファイルの名前を受け取る文字列へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_OUTOFMEMORY またはエラーの発生を示すその他の HRESULT 値を返す。
注意
このメソッドは、文字列に必要なメモリを割り当てる。アプリケーションは SysFreeString を呼び出して、メモリを解放しなければならない。
メディア開始タイムと終了タイムを取得する。
構文
HRESULT GetMediaTimes( REFERENCE_TIME *pStart, REFERENCE_TIME *pStop );
パラメータ
- pStart
- メディア開始タイム (100 ナノ秒単位) を受け取る変数へのポインタ。
- pStop
- メディア終了タイム (100 ナノ秒単位) を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
注意
メディア時間は、元のメディア ファイル相対である。詳細については、「DirectShow 編集サービスにおける時間」を参照すること。
メディア開始タイムと終了タイムを取得する。このメソッドは GetMediaTimes と同じ機能だが、REFTIME 値をパラメータにとる。
構文
HRESULT GetMediaTimes2( REFTIME *pStart, REFTIME *pStop );
パラメータ
- pStart
- メディア開始タイム (秒単位) を受け取る変数へのポインタ。
- pStop
- メディア終了タイム (秒単位) を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
ソース オブジェクトの現在のストリーム番号を取得する。
構文
HRESULT GetStreamNumber( long *pVal );
パラメータ
- pVal
- ストリーム番号を受け取る変数へのポインタ。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
伸縮モードを取得する。伸縮モードは、ビデオ ソースのサイズが出力ディメンジョンと一致しないときに、どのようにレンダリングされるかを指定する。
構文
HRESULT GetStretchMode( int *pnStretchMode );
パラメータ
- pnStretchMode
- 現在の伸縮 モードを示すフラグを受け取る変数へのポインタ。可能な値は次のとおりである。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
クリップが通常の再生レートで再生されるかどうか、つまり元のファイルの再生レートかどうかを示す。
構文
HRESULT IsNormalRate( BOOL *pVal );
パラメータ
- pVal
- クリップのレンダリング方法を示すブール値を受け取る変数へのポインタ。値が TRUE の場合、クリップは通常の再生レートで再生される。そうでない場合、通常とは異なる速度で再生される。
戻り値
成功した場合は、S_OK を返す。それ以外の場合は、E_POINTER を返す。
注意
クリップの再生レートは、タイムライン相対のメディア開始タイムとメディア終了タイムによって決まる。
再生レート = (メディア終了タイム - メディア開始タイム) / (タイムライン終了タイム - タイムライン開始タイム)この比が 1 に等しい場合、クリップは作成時の速度で再生される。そうでない場合、通常とは異なる速度で再生される。詳細については、「DirectShow 編集サービスにおける時間」を参照すること。
タイムライン相対の終了タイムを設定する。
構文
HRESULT ModifyStopTime( REFERENCE_TIME Stop );
パラメータ
- Stop
- 新しい終了タイム (100 ナノ秒単位)。
戻り値
S_OK を返す。指定された時間が有効でない場合は E_INVALIDARG を返す。
注意
このメソッドは、元の開始タイムと新しい終了タイムを指定して IAMTimelineObj::SetStartStop を呼び出すのと同等である。
終了タイムを設定する。このメソッドは ModifyStopTime と同じ機能だが、REFTIME 値をパラメータにとる。
構文
HRESULT ModifyStopTime2( REFTIME Stop );
パラメータ
- Stop
- 新しい終了タイム (秒単位)。
戻り値
成功した場合、S_OK を返す。指定された時間が有効でない場合は、E_INVALIDARG を返す。
ソース オブジェクトのデフォルト フレーム レートを設定する。
構文
HRESULT SetDefaultFPS( double FPS );
パラメータ
- FPS
- デフォルトのフレーム レート (毎秒のフレーム数)。
戻り値
成功した場合、S_OK を返す。指定されたフレーム レートがゼロより小さい場合は、E_INVALIDARG を返す。
注意
レンダリング エンジンが元のソース ファイルからフレーム レートを特定できない場合、この値が使用される。
このメソッドは、定義済みのフレーム レートを持たないソース ファイルに対してのみ呼び出す。ビットマップおよび JPEG ファイルの場合、デフォルト フレーム レートはゼロであり、それによりソースはスティル イメージとしてレンダリングされる。イメージを DIB シーケンスの最初のフレームとして使用するには、フレーム レートをゼロより大きな値に設定する。詳細については、「ソースの操作」を参照すること。
ソース ファイルの時間幅を指定する。
構文
HRESULT SetMediaLength( REFERENCE_TIME Length );
パラメータ
- Length
- メディア長 (100 ナノ秒単位)。
戻り値
S_OK を返す。
注意
メディア終了タイムを設定する前にメディア長を設定することにより、潜在的なレンダリング エラーを回避できる。メディア終了タイムを設定するときに、DES はそれをメディア長と付き合わせてチェックする。
このメソッドは Length パラメータを検証しないが、その値はソース ファイルの実際の時間幅と等しくなければならない。ソース ファイルの時間幅は、IMediaDet::get_StreamLength を呼び出すことにより取得する。
ソース ファイルの時間幅を指定する。このメソッドは SetMediaLength と同じ機能だが、REFTIME 値をパラメータにとる。
構文
HRESULT SetMediaLength2( REFTIME Length );
パラメータ
- Length
- メディア長 (秒単位)。
戻り値
S_OK を返す。
このソース オブジェクトが表すソース ファイルの名前を指定する。
構文
HRESULT SetMediaName( BSTR newVal );
パラメータ
- newVal
- メディア ファイルの名前を指定する文字列。
戻り値
S_OK を返す。
メディア終了タイムと開始タイムを設定する。
構文
HRESULT SetMediaTimes( REFERENCE_TIME Start, REFERENCE_TIME Stop );
パラメータ
- Start
- メディア開始タイム (100 ナノ秒単位)。
- Stop
- メディア終了タイム (100 ナノ秒単位)。
戻り値
S_OK を返す。
注意
メディア タイムは、元のメディア ファイル相対のメディア終了タイムとメディア開始タイムである。ビデオまたはオーディオ ソースをタイムラインに追加するときには、必ずメディア タイムを設定する。そうしないと、レンダリングで問題が発生することがある。終了タイムは、開始タイムより大きくなければならない。
ビデオ ソースからスティル フレームを使用するには、開始タイムから小数点以下の値 (たとえば 100 ナノ秒) だけ大きい終了タイムを設定する。開始タイムと終了タイムを同じ値に設定すると、レンダリング エラーが発生する。
タイムラインの時間幅がメディアの時間幅と一致しない場合、それに合わせてソースが伸縮する。これにより、クリップの再生は、作成時とは異なるレートで行われることになる (オーディオ ソースでは、ピッチ シフトが生じる)。詳細については、「DirectShow 編集サービスにおける時間」を参照すること。
ソース ファイルの時間幅は、SetMediaLength メソッドを呼び出すことにより指定できる。メディア終了タイムが時間幅を超える場合、DES は終了タイムを繰り上げる。
メディア終了タイムと開始タイムを設定する。このメソッドは SetMediaTimes と同じ機能だが、REFTIME 値をパラメータにとる。
構文
HRESULT SetMediaTimes2( REFTIME Start, REFTIME Stop );
パラメータ
- Start
- メディア開始タイム (秒単位)。
- Stop
- メディア終了タイム (秒単位)。
戻り値
S_OK を返す。
このソース オブジェクトに関連付けられているソース ファイルから読み込むストリームを指定する。
構文
HRESULT SetStreamNumber( long Val );
パラメータ
- Val
- ストリーム番号。親グループの、一致するメディア タイプのストリームのセットから得られる。
戻り値
成功した場合、S_OK を返す。Val がゼロより小さい場合は、E_INVALIDARG を返す。
注意
Val パラメータは、親グループのメディア タイプに一致するストリームのセットにおけるストリーム番号を指定する。これは、ソース ファイルのストリームのセット全体における番号ではない。たとえば、ファイルにビデオ ストリームが 2 つとオーディオ ストリームが 2 つある場合、Val に 0 を指定すると最初のビデオ ストリームが選択される。呼び出し元に、有効なストリーム番号を指定する責任がある。
ストリーム番号のデフォルトはゼロである。
伸縮モードを設定する。伸縮モードは、ビデオ ソースのサイズが出力ディメンジョンと一致しないときに、どのようにレンダリングされるかを指定する。
構文
HRESULT SetStretchMode( int nStretchMode );
パラメータ
- nStretchMode
- 現在の伸縮モードを示すフラグ。可能な値は次のとおりである。
戻り値
S_OK を返す。
ソース オブジェクトを別のソース オブジェクトに結合する。
構文
HRESULT SpliceWithNext( IAMTimelineObj *pNext );
パラメータ
- pNext
- 現在のソースを結合するソース オブジェクトの IAMTimelineObj インターフェイスへのポインタ。
戻り値
HRESULT 値を返す。可能な戻り値は次のとおりである。
S_OK 成功。 E_INVALIDARG 無効な引数。 E_NOINTERFACE pNext パラメータによって指定されたオブジェクトはソース オブジェクトではない。 E_POINTER NULL ポインタ引数。
注意
現在の実装では、このメソッドは pNext 上のエフェクトは破棄する。
このメソッドを正しく動作させるには、pNext は現在のソース オブジェクトのフレームに一致していなければならない。
- これは、同じソース ファイルを共有していなければならない。
- メディア開始タイムが、現在のソースのメディア終了タイムと等しくなければならない。
- 再生レートが同一でなければならない。再生レートは、メディア時間幅をタイムライン時間幅で割った値である。