IMFASFStreamConfig
COM公式ドキュメント
ASF ファイル内のストリームの設定を構成します。
メソッド 10
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ストリームのメジャー メディア タイプを取得します。
| pguidStreamType | GUID* | out | ストリームのメジャー メディア タイプを受け取ります。指定可能な値の一覧については、Major Media Types を参照してください。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
ストリームのストリーム番号を取得します。
戻り値
このメソッドはストリーム番号を返します。
ストリームにストリーム番号を割り当てます。
| wStreamNum | WORD | in | ストリームに割り当てる番号。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
ストリーム番号は 1 から始まり、連続している必要はありません。
ストリームのメディア タイプを取得します。
| ppIMediaType | IMFMediaType** | out | ストリームに関連付けられたメディア タイプ オブジェクトの IMFMediaType インターフェイスへのポインターを受け取ります。呼び出し元はインターフェイスを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
不要なコピーを減らすため、このメソッドはオブジェクトが内部に保持しているメディア タイプへのポインターを返します。返されたメディア タイプは変更しないでください。変更した場合の結果は未定義です。
Advanced Systems Format (ASF) ストリーム構成オブジェクトのメディア タイプを設定します。
| pIMediaType | IMFMediaType* | in | 構成済みのメディア タイプ オブジェクトの IMFMediaType インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドはメディア タイプの検証を一部実行します。ただし、メディア タイプの設定に成功しても、そのストリームをプロファイルに追加する際にエラーが発生する場合があります。
ストリームに構成されているペイロード拡張の数を取得します。
| pcPayloadExtensions | WORD* | out | ペイロード拡張の数を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
既存のペイロード拡張に関する情報を取得します。
| wPayloadExtensionNumber | WORD | in | ペイロード拡張のインデックス。有効なインデックスは 0 から、IMFASFStreamConfig::GetPayloadExtensionCount を呼び出して取得した拡張の数より 1 少ない値までの範囲です。 |
| pguidExtensionSystemID | GUID* | out | ペイロード拡張を識別する GUID を受け取ります。定義済みのペイロード拡張の一覧については、ASF Payload Extension GUIDs を参照してください。アプリケーションはカスタムのペイロード拡張を定義することもできます。 |
| pcbExtensionDataSize | WORD* | out | 拡張のために各サンプルに追加されるバイト数を受け取ります。 |
| pbExtensionSystemInfo | BYTE* | inout | この拡張システムに関する情報を受け取るバッファーへのポインター。この情報はすべてのサンプルで同一であり、(各サンプルではなく)コンテンツ ヘッダーに格納されます。このパラメーターには NULL を指定できます。必要なバッファーのサイズを調べるには、このパラメーターに NULL を設定します。サイズは pcbExtensionSystemInfo で返されます。 |
| pcbExtensionSystemInfo | DWORD* | inout | 入力時には、pbExtensionSystemInfo が指すバッファーのサイズを指定します。出力時には、pbExtensionSystemInfo バッファーに必要なサイズをバイト単位で受け取ります。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
| 引数が無効です。 | |
| pbExtensionSystemInfo で指定されたバッファーが小さすぎます。 | |
| wPayloadExtensionNumber パラメーターが範囲外です。 |
ストリームにペイロード拡張を構成します。
| guidExtensionSystemID | GUID | in | ペイロード拡張を識別する GUID へのポインター。定義済みのペイロード拡張の一覧については、ASF Payload Extension GUIDs を参照してください。アプリケーションはカスタムのペイロード拡張を定義することもできます。 |
| cbExtensionDataSize | WORD | in | 拡張のために各サンプルに追加されるバイト数。 |
| pbExtensionSystemInfo | BYTE* | in | この拡張システムに関する情報を格納するバッファーへのポインター。この情報はすべてのサンプルで同一であり、(各サンプルとともにではなく)コンテンツ ヘッダーに格納されます。cbExtensionSystemInfo が 0 の場合、このパラメーターには NULL を指定できます。 |
| cbExtensionSystemInfo | DWORD | in | この拡張システムを記述するデータの量(バイト単位)。この値が 0 の場合、pbExtensionSystemInfo には NULL を指定できます。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
ストリームに構成されているすべてのペイロード拡張を削除します。
戻り値
このメソッドは HRESULT を返します。指定可能な値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
なし。
Advanced Systems Format (ASF) ストリーム構成オブジェクトのコピーを作成します。
| ppIStreamConfig | IMFASFStreamConfig** | out | 新しいオブジェクトの IMFASFStreamConfig インターフェイスへのポインターを受け取ります。呼び出し元はインターフェイスを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。指定可能な値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
複製されたオブジェクトは元のオブジェクトから完全に独立しています。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFASFStreamConfig "{9E8AE8D2-DBBD-4200-9ACA-06E6DF484913}" #usecom global IMFASFStreamConfig IID_IMFASFStreamConfig "{}" #comfunc global IMFASFStreamConfig_GetStreamType 33 var #comfunc global IMFASFStreamConfig_GetStreamNumber 34 #comfunc global IMFASFStreamConfig_SetStreamNumber 35 int #comfunc global IMFASFStreamConfig_GetMediaType 36 sptr #comfunc global IMFASFStreamConfig_SetMediaType 37 sptr #comfunc global IMFASFStreamConfig_GetPayloadExtensionCount 38 var #comfunc global IMFASFStreamConfig_GetPayloadExtension 39 int,var,var,var,var #comfunc global IMFASFStreamConfig_AddPayloadExtension 40 int,int,var,int #comfunc global IMFASFStreamConfig_RemoveAllPayloadExtensions 41 #comfunc global IMFASFStreamConfig_Clone 42 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFASFStreamConfig "{9E8AE8D2-DBBD-4200-9ACA-06E6DF484913}" #usecom global IMFASFStreamConfig IID_IMFASFStreamConfig "{}" #comfunc global IMFASFStreamConfig_GetStreamType 33 sptr #comfunc global IMFASFStreamConfig_GetStreamNumber 34 #comfunc global IMFASFStreamConfig_SetStreamNumber 35 int #comfunc global IMFASFStreamConfig_GetMediaType 36 sptr #comfunc global IMFASFStreamConfig_SetMediaType 37 sptr #comfunc global IMFASFStreamConfig_GetPayloadExtensionCount 38 sptr #comfunc global IMFASFStreamConfig_GetPayloadExtension 39 int,sptr,sptr,sptr,sptr #comfunc global IMFASFStreamConfig_AddPayloadExtension 40 int,int,sptr,int #comfunc global IMFASFStreamConfig_RemoveAllPayloadExtensions 41 #comfunc global IMFASFStreamConfig_Clone 42 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。