Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › IMFSourceBuffer

IMFSourceBuffer

COM
IIDe2cd3a4b-af25-4d3d-9110-da0e6f8ee877継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IMFMediaSourceExtension のメディアデータを格納するバッファを表します。

解説(Remarks)

IMFSourceBufferIMFMediaSourceExtension と組み合わせて使用します。

メソッド 12

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 BOOL GetUpdating()

Append、AppendByteStream、または Remove が処理中かどうかを示す値を取得します。

戻り値

AppendAppendByteStream、または Remove が処理中の場合は true。それ以外の場合は false

vtbl 4 HRESULT GetBuffered(IMFMediaTimeRange** ppBuffered)

バッファリングされている時間範囲を取得します。

ppBufferedIMFMediaTimeRange**outバッファリングされている時間範囲。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 5 DOUBLE GetTimeStampOffset()

IMFSourceBuffer に追加されるメディアセグメントのタイムスタンプオフセットを取得します。

戻り値

タイムスタンプオフセット。

vtbl 6 HRESULT SetTimeStampOffset(DOUBLE offset)

IMFSourceBuffer に追加されるメディアセグメントのタイムスタンプオフセットを設定します。

offsetDOUBLEin追加メディアのタイムスタンプに加算するオフセット。秒単位。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 7 DOUBLE GetAppendWindowStart()

追加ウィンドウの開始位置のタイムスタンプを取得します。

戻り値

追加ウィンドウの開始位置のタイムスタンプ。

vtbl 8 HRESULT SetAppendWindowStart(DOUBLE time)

追加ウィンドウの開始位置のタイムスタンプを設定します。

timeDOUBLEin追加ウィンドウの開始位置のタイムスタンプ。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 9 DOUBLE GetAppendWindowEnd()

追加ウィンドウの終了位置のタイムスタンプを取得します。

戻り値

追加ウィンドウの終了位置のタイムスタンプ。

vtbl 10 HRESULT SetAppendWindowEnd(DOUBLE time)

追加ウィンドウの終了位置のタイムスタンプを設定します。

timeDOUBLEin追加ウィンドウの終了時刻。これより後のサンプルは破棄される。秒単位。

戻り値

追加ウィンドウの終了位置のタイムスタンプ。

vtbl 11 HRESULT Append(BYTE* pData, DWORD len)

指定したメディアセグメントを IMFSourceBuffer に追加します。

pDataBYTE*in追加するメディアデータ。
lenDWORDinpData に格納されているメディアデータの長さ。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 12 HRESULT AppendByteStream(IMFByteStream* pStream, ULONGLONG* pMaxLen)

指定したバイトストリームのメディアセグメントを IMFSourceBuffer に追加します。

pStreamIMFByteStream*inメディアセグメントのデータ。
pMaxLenULONGLONG*inoptionalメディアセグメントデータの最大長。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 13 HRESULT Abort()

現在のメディアセグメントの処理を中止します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 14 HRESULT Remove(DOUBLE start, DOUBLE end)

指定した時間範囲で定義されるメディアセグメントを IMFSourceBuffer から削除します。

startDOUBLEin時間範囲の開始位置。
endDOUBLEin時間範囲の終了位置。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IMFSourceBuffer "{E2CD3A4B-AF25-4D3D-9110-DA0E6F8EE877}"
#usecom global IMFSourceBuffer IID_IMFSourceBuffer "{}"
#comfunc global IMFSourceBuffer_GetUpdating           3
#comfunc global IMFSourceBuffer_GetBuffered           4 sptr
#comfunc global IMFSourceBuffer_GetTimeStampOffset    5
#comfunc global IMFSourceBuffer_SetTimeStampOffset    6 double
#comfunc global IMFSourceBuffer_GetAppendWindowStart  7
#comfunc global IMFSourceBuffer_SetAppendWindowStart  8 double
#comfunc global IMFSourceBuffer_GetAppendWindowEnd    9
#comfunc global IMFSourceBuffer_SetAppendWindowEnd    10 double
#comfunc global IMFSourceBuffer_Append                11 var,int
#comfunc global IMFSourceBuffer_AppendByteStream      12 sptr,var
#comfunc global IMFSourceBuffer_Abort                 13
#comfunc global IMFSourceBuffer_Remove                14 double,double
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。