IMFMediaTimeRange
COM公式ドキュメント
時間範囲のリストを表します。各範囲は開始時刻と終了時刻によって定義されます。
解説(Remarks)
IMFMediaTimeRange インターフェイスは、HTML5 の TimeRanges インターフェイスに相当します。
いくつかの IMFMediaEngine メソッドは IMFMediaTimeRange ポインターを返します。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
オブジェクトに含まれる時間範囲の数を取得します。
戻り値
時間範囲の数を返します。
解説(Remarks)
このメソッドは、HTML5 の TimeRanges.length 属性に相当します。
指定した時間範囲の開始時刻を取得します。
| index | DWORD | in | 照会する時間範囲の 0 から始まるインデックス。時間範囲の数を取得するには、IMFMediaTimeRange::GetLength を呼び出します。 |
| pStart | DOUBLE* | out | 開始時刻を秒単位で受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の TimeRanges.start メソッドに相当します。
指定した時間範囲の終了時刻を取得します。
| index | DWORD | in | 照会する時間範囲の 0 から始まるインデックス。時間範囲の数を取得するには、IMFMediaTimeRange::GetLength を呼び出します。 |
| pEnd | DOUBLE* | out | 終了時刻を秒単位で受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、HTML5 の TimeRanges.end メソッドに相当します。
指定した時刻がいずれかの時間範囲内に含まれるかどうかを照会します。
| time | DOUBLE | in | 時刻を秒単位で指定します。 |
戻り値
このオブジェクトに含まれるいずれかの時間範囲が time パラメーターの値を含む場合は TRUE を返します。それ以外の場合は FALSE を返します。
解説(Remarks)
このメソッドは、リスト内のいずれかの時間範囲について次の条件が成り立つ場合に TRUE を返します。
start time time end
時間範囲のリストに新しい範囲を追加します。
| startTime | DOUBLE | in | 開始時刻を秒単位で指定します。 |
| endTime | DOUBLE | in | 終了時刻を秒単位で指定します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
新しい範囲がリスト内に既に存在する範囲と交差する場合、2 つの範囲は結合されます。それ以外の場合、新しい範囲がリストに追加されます。
時間範囲のリストをクリアします。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFMediaTimeRange "{DB71A2FC-078A-414E-9DF9-8C2531B0AA6C}" #usecom global IMFMediaTimeRange IID_IMFMediaTimeRange "{}" #comfunc global IMFMediaTimeRange_GetLength 3 #comfunc global IMFMediaTimeRange_GetStart 4 int,var #comfunc global IMFMediaTimeRange_GetEnd 5 int,var #comfunc global IMFMediaTimeRange_ContainsTime 6 double #comfunc global IMFMediaTimeRange_AddRange 7 double,double #comfunc global IMFMediaTimeRange_Clear 8 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IMFMediaTimeRange "{DB71A2FC-078A-414E-9DF9-8C2531B0AA6C}" #usecom global IMFMediaTimeRange IID_IMFMediaTimeRange "{}" #comfunc global IMFMediaTimeRange_GetLength 3 #comfunc global IMFMediaTimeRange_GetStart 4 int,sptr #comfunc global IMFMediaTimeRange_GetEnd 5 int,sptr #comfunc global IMFMediaTimeRange_ContainsTime 6 double #comfunc global IMFMediaTimeRange_AddRange 7 double,double #comfunc global IMFMediaTimeRange_Clear 8 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。