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

IMFASFStreamSelector

COM
IIDd01bad4a-4fa0-4a60-9349-c27e62da9d41継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ASF ヘッダー内の相互排他情報に基づいて、Advanced Systems Format (ASF) ファイル内のストリームを選択します。

メソッド 14

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

vtbl 3 HRESULT GetStreamCount(DWORD* pcStreams)

Advanced Systems Format (ASF) コンテンツに含まれるストリームの数を取得します。

pcStreamsDWORD*outコンテンツ内のストリーム数を受け取ります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
vtbl 4 HRESULT GetOutputCount(DWORD* pcOutputs)

Advanced Systems Format (ASF) コンテンツの出力数を取得します。

pcOutputsDWORD*out出力数を受け取ります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。

解説(Remarks)

出力とは、解析される ASF データセクション内のストリームです。

vtbl 5 HRESULT GetOutputStreamCount(DWORD dwOutputNum, DWORD* pcStreams)

出力に関連付けられているストリームの数を取得します。

dwOutputNumDWORDinストリーム数を取得する対象の出力番号。
pcStreamsDWORD*out出力に関連付けられているストリーム数を受け取ります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
MF_E_INVALIDREQUEST
出力番号が無効です。

解説(Remarks)

出力とは、解析される ASF データセクション内のストリームです。相互排他が使用されている場合、相互に排他的なストリームは同じ出力を共有します。

vtbl 6 HRESULT GetOutputStreamNumbers(DWORD dwOutputNum, WORD* rgwStreamNumbers)

出力に関連付けられているすべてのストリームのストリーム番号を取得します。

dwOutputNumDWORDinストリーム番号を取得する対象の出力番号。
rgwStreamNumbersWORD*out出力に関連付けられているストリーム番号を受け取る配列のアドレス。配列は呼び出し側が割り当てます。配列サイズは、IMFASFStreamSelector::GetOutputStreamCount メソッドが返す値以上でなければなりません。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
MF_E_INVALIDREQUEST
出力番号が無効です。

解説(Remarks)

出力とは、解析される ASF データセクション内のストリームです。相互排他が使用されている場合、相互に排他的なストリームは同じ出力を共有します。

vtbl 7 HRESULT GetOutputFromStream(WORD wStreamNum, DWORD* pdwOutput)

ストリームに関連付けられている出力番号を取得します。

wStreamNumWORDin出力番号を取得する対象のストリーム番号。
pdwOutputDWORD*out出力番号を受け取ります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
MF_E_INVALIDREQUEST
ストリーム番号が無効です。

解説(Remarks)

出力とは、解析される ASF データセクション内のストリームです。

vtbl 8 HRESULT GetOutputOverride(DWORD dwOutputNum, ASF_SELECTION_STATUS* pSelection)

ストリームに設定されている手動出力オーバーライド選択を取得します。

dwOutputNumDWORDin出力オーバーライド選択を取得する対象のストリーム番号。
pSelectionASF_SELECTION_STATUS*out出力オーバーライド選択を受け取ります。この値は ASF_SELECTION_STATUS 列挙型のメンバーです。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
vtbl 9 HRESULT SetOutputOverride(DWORD dwOutputNum, ASF_SELECTION_STATUS Selection)

他の選択条件をオーバーライドして、出力の選択状態を設定します。

dwOutputNumDWORDin選択を設定する対象の出力番号。
SelectionASF_SELECTION_STATUSin出力に対する選択レベルを指定する ASF_SELECTION_STATUS 列挙型のメンバー。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
vtbl 10 HRESULT GetOutputMutexCount(DWORD dwOutputNum, DWORD* pcMutexes)

出力に関連付けられている相互排他オブジェクトの数を取得します。

dwOutputNumDWORDin相互排他関係の数を取得する対象の出力番号。
pcMutexesDWORD*out相互排他の数を受け取ります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
vtbl 11 HRESULT GetOutputMutex(DWORD dwOutputNum, DWORD dwMutexNum, IUnknown** ppMutex)

出力の相互排他オブジェクトを取得します。

dwOutputNumDWORDin相互排他オブジェクトを取得する対象の出力番号。
dwMutexNumDWORDin相互排他番号。これは出力に関連付けられた相互排他関係のインデックスです。0 から、IMFASFStreamSelector::GetOutputMutexCount を呼び出して取得した相互排他オブジェクトの数より 1 小さい値までの範囲の数値を設定します。
ppMutexIUnknown**out相互排他オブジェクトの IUnknown インターフェイスへのポインターを受け取ります。呼び出し側はこのインターフェイスを解放する必要があります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。

解説(Remarks)

出力とは、解析される ASF データセクション内のストリームです。

vtbl 12 HRESULT SetOutputMutexSelection(DWORD dwOutputNum, DWORD dwMutexNum, WORD wSelectedRecord)

出力に関連付けられた相互排他オブジェクトに使用する相互排他レコードを選択します。

dwOutputNumDWORDinストリームを設定する対象の出力番号。
dwMutexNumDWORDin選択対象の相互排他のインデックス。
wSelectedRecordWORDin選択する、指定された相互排他のレコード。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。

解説(Remarks)

出力とは、解析される Advanced Systems Format (ASF) データセクション内のストリームです。相互排他が使用されている場合、相互に排他的なストリームは同じ出力を共有します。

ASF ファイルには、言語ベースとビットレートベースの両方の相互排他を持つファイルのように、複数の相互排他関係を含めることができます。ある出力が複数の相互排他関係に関与している場合は、それぞれからレコードを 1 つずつ選択する必要があります。

vtbl 13 HRESULT GetBandwidthStepCount(DWORD* pcStepCount)

コンテンツに存在する帯域幅ステップの数を取得します。このメソッドはマルチビットレート (MBR) コンテンツに使用されます。

pcStepCountDWORD*out帯域幅ステップの数を受け取ります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。

解説(Remarks)

帯域幅ステップは、マルチビットレート (MBR) コンテンツで使用される帯域幅レベルです。MBR コンテンツをストリーミングする場合、ネットワーク状況に合った帯域幅ステップを選択することで、再生中の中断を回避できます。

vtbl 14 HRESULT GetBandwidthStep(DWORD dwStepNum, DWORD* pdwBitrate, WORD* rgwStreamNumbers, ASF_SELECTION_STATUS* rgSelections)

帯域幅ステップに適用されるストリーム番号を取得します。このメソッドはマルチビットレート (MBR) コンテンツに使用されます。

dwStepNumDWORDin情報を取得する対象の帯域幅ステップ番号。この値は、0 から、IMFASFStreamSelector::GetBandwidthStepCount が返す帯域幅ステップの数より 1 小さい値までの範囲の数値に設定します。
pdwBitrateDWORD*out帯域幅ステップに関連付けられたビットレートを受け取ります。
rgwStreamNumbersWORD*outストリーム番号を受け取る配列のアドレス。配列は呼び出し側が割り当てます。配列サイズは、IMFASFStreamSelector::GetStreamCount メソッドが返す値以上でなければなりません。
rgSelectionsASF_SELECTION_STATUS*out各ストリームの選択状態を ASF_SELECTION_STATUS 値として受け取る配列のアドレス。この配列のメンバーは、インデックスによって rgwStreamNumbers 配列のメンバーに対応します。配列は呼び出し側が割り当てます。配列サイズは、IMFASFStreamSelector::GetStreamCount メソッドが返す値以上でなければなりません。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。

解説(Remarks)

帯域幅ステップは、MBR コンテンツで使用される帯域幅レベルです。MBR コンテンツをストリーミングする場合、ネットワーク状況に合った帯域幅ステップを選択することで、再生中の中断を回避できます。

vtbl 15 HRESULT BitrateToStepNumber(DWORD dwBitrate, DWORD* pdwStepNum)

指定したビットレートに適した帯域幅ステップのインデックスを取得します。このメソッドはマルチビットレート (MBR) コンテンツに使用されます。

dwBitrateDWORDin帯域幅ステップを検索する対象のビットレート。
pdwStepNumDWORD*outステップ番号を受け取ります。この番号を使用して、IMFASFStreamSelector::GetBandwidthStep を呼び出すことで、そのステップに関する情報を取得できます。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。

解説(Remarks)

ストリーミングによるマルチビットレート (MBR) のシナリオでは、ネットワーク接続の現在のデータレートを指定してこのメソッドを呼び出し、使用すべき正しいステップを判断します。また、ストリーミング中にこのメソッドを定期的に呼び出して、常に最適なステップが使用されるようにすることもできます。

vtbl 16 HRESULT SetStreamSelectorFlags(DWORD dwStreamSelectorFlags)

ストリームセレクターのオプションを設定します。

dwStreamSelectorFlagsDWORDin使用するオプションを指定するビット単位の MFASF_STREAMSELECTOR_FLAGS 列挙型。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFASFStreamSelector "{D01BAD4A-4FA0-4A60-9349-C27E62DA9D41}"
#usecom global IMFASFStreamSelector IID_IMFASFStreamSelector "{}"
#comfunc global IMFASFStreamSelector_GetStreamCount           3 var
#comfunc global IMFASFStreamSelector_GetOutputCount           4 var
#comfunc global IMFASFStreamSelector_GetOutputStreamCount     5 int,var
#comfunc global IMFASFStreamSelector_GetOutputStreamNumbers   6 int,var
#comfunc global IMFASFStreamSelector_GetOutputFromStream      7 int,var
#comfunc global IMFASFStreamSelector_GetOutputOverride        8 int,var
#comfunc global IMFASFStreamSelector_SetOutputOverride        9 int,int
#comfunc global IMFASFStreamSelector_GetOutputMutexCount      10 int,var
#comfunc global IMFASFStreamSelector_GetOutputMutex           11 int,int,sptr
#comfunc global IMFASFStreamSelector_SetOutputMutexSelection  12 int,int,int
#comfunc global IMFASFStreamSelector_GetBandwidthStepCount    13 var
#comfunc global IMFASFStreamSelector_GetBandwidthStep         14 int,var,var,var
#comfunc global IMFASFStreamSelector_BitrateToStepNumber      15 int,var
#comfunc global IMFASFStreamSelector_SetStreamSelectorFlags   16 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。