IMFASFStreamSelector
COM公式ドキュメント
ASF ヘッダー内の相互排他情報に基づいて、Advanced Systems Format (ASF) ファイル内のストリームを選択します。
メソッド 14
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Advanced Systems Format (ASF) コンテンツに含まれるストリームの数を取得します。
| pcStreams | DWORD* | out | コンテンツ内のストリーム数を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
Advanced Systems Format (ASF) コンテンツの出力数を取得します。
| pcOutputs | DWORD* | out | 出力数を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
出力とは、解析される ASF データセクション内のストリームです。
出力に関連付けられているストリームの数を取得します。
| dwOutputNum | DWORD | in | ストリーム数を取得する対象の出力番号。 |
| pcStreams | DWORD* | out | 出力に関連付けられているストリーム数を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 出力番号が無効です。 |
解説(Remarks)
出力とは、解析される ASF データセクション内のストリームです。相互排他が使用されている場合、相互に排他的なストリームは同じ出力を共有します。
出力に関連付けられているすべてのストリームのストリーム番号を取得します。
| dwOutputNum | DWORD | in | ストリーム番号を取得する対象の出力番号。 |
| rgwStreamNumbers | WORD* | out | 出力に関連付けられているストリーム番号を受け取る配列のアドレス。配列は呼び出し側が割り当てます。配列サイズは、IMFASFStreamSelector::GetOutputStreamCount メソッドが返す値以上でなければなりません。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 出力番号が無効です。 |
解説(Remarks)
出力とは、解析される ASF データセクション内のストリームです。相互排他が使用されている場合、相互に排他的なストリームは同じ出力を共有します。
ストリームに関連付けられている出力番号を取得します。
| wStreamNum | WORD | in | 出力番号を取得する対象のストリーム番号。 |
| pdwOutput | DWORD* | out | 出力番号を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ストリーム番号が無効です。 |
解説(Remarks)
出力とは、解析される ASF データセクション内のストリームです。
ストリームに設定されている手動出力オーバーライド選択を取得します。
| dwOutputNum | DWORD | in | 出力オーバーライド選択を取得する対象のストリーム番号。 |
| pSelection | ASF_SELECTION_STATUS* | out | 出力オーバーライド選択を受け取ります。この値は ASF_SELECTION_STATUS 列挙型のメンバーです。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
他の選択条件をオーバーライドして、出力の選択状態を設定します。
| dwOutputNum | DWORD | in | 選択を設定する対象の出力番号。 |
| Selection | ASF_SELECTION_STATUS | in | 出力に対する選択レベルを指定する ASF_SELECTION_STATUS 列挙型のメンバー。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
出力に関連付けられている相互排他オブジェクトの数を取得します。
| dwOutputNum | DWORD | in | 相互排他関係の数を取得する対象の出力番号。 |
| pcMutexes | DWORD* | out | 相互排他の数を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
出力の相互排他オブジェクトを取得します。
| dwOutputNum | DWORD | in | 相互排他オブジェクトを取得する対象の出力番号。 |
| dwMutexNum | DWORD | in | 相互排他番号。これは出力に関連付けられた相互排他関係のインデックスです。0 から、IMFASFStreamSelector::GetOutputMutexCount を呼び出して取得した相互排他オブジェクトの数より 1 小さい値までの範囲の数値を設定します。 |
| ppMutex | IUnknown** | out | 相互排他オブジェクトの IUnknown インターフェイスへのポインターを受け取ります。呼び出し側はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
出力とは、解析される ASF データセクション内のストリームです。
出力に関連付けられた相互排他オブジェクトに使用する相互排他レコードを選択します。
| dwOutputNum | DWORD | in | ストリームを設定する対象の出力番号。 |
| dwMutexNum | DWORD | in | 選択対象の相互排他のインデックス。 |
| wSelectedRecord | WORD | in | 選択する、指定された相互排他のレコード。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
出力とは、解析される Advanced Systems Format (ASF) データセクション内のストリームです。相互排他が使用されている場合、相互に排他的なストリームは同じ出力を共有します。
ASF ファイルには、言語ベースとビットレートベースの両方の相互排他を持つファイルのように、複数の相互排他関係を含めることができます。ある出力が複数の相互排他関係に関与している場合は、それぞれからレコードを 1 つずつ選択する必要があります。
コンテンツに存在する帯域幅ステップの数を取得します。このメソッドはマルチビットレート (MBR) コンテンツに使用されます。
| pcStepCount | DWORD* | out | 帯域幅ステップの数を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
帯域幅ステップは、マルチビットレート (MBR) コンテンツで使用される帯域幅レベルです。MBR コンテンツをストリーミングする場合、ネットワーク状況に合った帯域幅ステップを選択することで、再生中の中断を回避できます。
帯域幅ステップに適用されるストリーム番号を取得します。このメソッドはマルチビットレート (MBR) コンテンツに使用されます。
| dwStepNum | DWORD | in | 情報を取得する対象の帯域幅ステップ番号。この値は、0 から、IMFASFStreamSelector::GetBandwidthStepCount が返す帯域幅ステップの数より 1 小さい値までの範囲の数値に設定します。 |
| pdwBitrate | DWORD* | out | 帯域幅ステップに関連付けられたビットレートを受け取ります。 |
| rgwStreamNumbers | WORD* | out | ストリーム番号を受け取る配列のアドレス。配列は呼び出し側が割り当てます。配列サイズは、IMFASFStreamSelector::GetStreamCount メソッドが返す値以上でなければなりません。 |
| rgSelections | ASF_SELECTION_STATUS* | out | 各ストリームの選択状態を ASF_SELECTION_STATUS 値として受け取る配列のアドレス。この配列のメンバーは、インデックスによって rgwStreamNumbers 配列のメンバーに対応します。配列は呼び出し側が割り当てます。配列サイズは、IMFASFStreamSelector::GetStreamCount メソッドが返す値以上でなければなりません。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
帯域幅ステップは、MBR コンテンツで使用される帯域幅レベルです。MBR コンテンツをストリーミングする場合、ネットワーク状況に合った帯域幅ステップを選択することで、再生中の中断を回避できます。
指定したビットレートに適した帯域幅ステップのインデックスを取得します。このメソッドはマルチビットレート (MBR) コンテンツに使用されます。
| dwBitrate | DWORD | in | 帯域幅ステップを検索する対象のビットレート。 |
| pdwStepNum | DWORD* | out | ステップ番号を受け取ります。この番号を使用して、IMFASFStreamSelector::GetBandwidthStep を呼び出すことで、そのステップに関する情報を取得できます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
ストリーミングによるマルチビットレート (MBR) のシナリオでは、ネットワーク接続の現在のデータレートを指定してこのメソッドを呼び出し、使用すべき正しいステップを判断します。また、ストリーミング中にこのメソッドを定期的に呼び出して、常に最適なステップが使用されるようにすることもできます。
ストリームセレクターのオプションを設定します。
| dwStreamSelectorFlags | DWORD | in | 使用するオプションを指定するビット単位の MFASF_STREAMSELECTOR_FLAGS 列挙型。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
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 指定が可能。#define global IID_IMFASFStreamSelector "{D01BAD4A-4FA0-4A60-9349-C27E62DA9D41}" #usecom global IMFASFStreamSelector IID_IMFASFStreamSelector "{}" #comfunc global IMFASFStreamSelector_GetStreamCount 3 sptr #comfunc global IMFASFStreamSelector_GetOutputCount 4 sptr #comfunc global IMFASFStreamSelector_GetOutputStreamCount 5 int,sptr #comfunc global IMFASFStreamSelector_GetOutputStreamNumbers 6 int,sptr #comfunc global IMFASFStreamSelector_GetOutputFromStream 7 int,sptr #comfunc global IMFASFStreamSelector_GetOutputOverride 8 int,sptr #comfunc global IMFASFStreamSelector_SetOutputOverride 9 int,int #comfunc global IMFASFStreamSelector_GetOutputMutexCount 10 int,sptr #comfunc global IMFASFStreamSelector_GetOutputMutex 11 int,int,sptr #comfunc global IMFASFStreamSelector_SetOutputMutexSelection 12 int,int,int #comfunc global IMFASFStreamSelector_GetBandwidthStepCount 13 sptr #comfunc global IMFASFStreamSelector_GetBandwidthStep 14 int,sptr,sptr,sptr #comfunc global IMFASFStreamSelector_BitrateToStepNumber 15 int,sptr #comfunc global IMFASFStreamSelector_SetStreamSelectorFlags 16 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。