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

IWMWriterAdvanced3

COM
IID2cd6492d-7c37-4e76-9d3b-59261183a22e継承元IWMWriterAdvanced2自前メソッド開始 vtbl16

公式ドキュメント

IWMWriterAdvanced3 インターフェイスは、ライターオブジェクトに追加機能を提供します。IWMWriterAdvanced3 はライターオブジェクトのすべてのインスタンスに存在します。このインターフェイスへのポインターを取得するには、ライターオブジェクトに対して QueryInterface を呼び出します。

メソッド 2

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

vtbl 16 HRESULT GetStatisticsEx(WORD wStreamNum, WM_WRITER_STATISTICS_EX* pStats)

GetStatisticsEx メソッドは、ライターの拡張統計情報を取得します。

wStreamNumWORDin統計情報を取得したいストリーム番号を格納する WORD です。0 を渡すと、ファイル全体の拡張統計情報を取得できます。ストリーム番号は 1 から 63 の範囲です。
pStatsWM_WRITER_STATISTICS_EX*out統計情報を受け取る WM_WRITER_STATISTICS_EX 構造体へのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドが成功しました。
NS_E_INVALID_REQUEST
ライターが構成状態にあり、その間はこのメソッドを呼び出せません。

解説(Remarks)

GetStatisticsExIWMWriterAdvanced::GetStatistics の改良版ではありません。GetStatistics で取得される統計情報は GetStatisticsEx では取得されません。利用可能なすべての統計情報を取得したい場合は、両方のメソッドを呼び出す必要があります。

vtbl 17 HRESULT SetNonBlocking()

SetNonBlocking メソッドは、サンプルの書き込み中に呼び出し元スレッドがブロックされないようにライターを構成します。

戻り値

このメソッドは常に S_OK を返します。

解説(Remarks)

このメソッドは、時間的制約の厳しいスレッドに対してのみ使用してください。SetNonBlocking を呼び出した後は、ライターにキューイングされるデータ量を制御するのは呼び出し元アプリケーションの責任となります。ライターが処理しきれないほど多くのデータをキューイングしたり、コンピューターのリソースを過剰に消費したりする可能性があります。極端な場合には、その結果としてエンコードセッションが予期せず停止することがあります。

このメソッドは、ライブソースから書き込む場合には効果がありません。ライブエンコードの状況では、ライターが呼び出し元のスレッドをブロックしないのが通常の動作です。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IWMWriterAdvanced3 "{2CD6492D-7C37-4E76-9D3B-59261183A22E}"
#usecom global IWMWriterAdvanced3 IID_IWMWriterAdvanced3 "{}"
#comfunc global IWMWriterAdvanced3_GetStatisticsEx  16 int,var
#comfunc global IWMWriterAdvanced3_SetNonBlocking   17
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。