IMFASFProfile
COM公式ドキュメント
Advanced Systems Format (ASF) プロファイルを管理します。
メソッド 16
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
プロファイル内のストリーム数を取得します。
| pcStreams | DWORD* | out | プロファイル内のストリーム数を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
ストリームインデックスを指定してプロファイルからストリームを取得します。また、ストリームインデックスに対応するストリーム番号を取得することもできます。
| dwStreamIndex | DWORD | in | 取得するストリームのインデックス。ストリームインデックスは 0 から始まる連続した値です。プロファイルに含まれるストリーム数は、IMFASFProfile::GetStreamCount メソッドを呼び出して取得できます。 |
| pwStreamNumber | WORD* | out | 要求したストリームのストリーム番号を受け取ります。ストリーム番号は 1 から始まり、必ずしも連続しているとは限りません。ストリーム番号が不要な場合は、このパラメーターを NULL に設定できます。 |
| ppIStream | IMFASFStreamConfig** | out | ASF ストリーム構成オブジェクトの IMFASFStreamConfig インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。ストリーム構成にアクセスせずにストリーム番号のみを取得したい場合は、このパラメーターを NULL にできます。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドはストリーム構成オブジェクトのコピーを作成しません。取得されるポインターは、プロファイルオブジェクト内のオブジェクトを指します。このポインターを使用してストリーム構成オブジェクトに変更を加えてはなりません。そのような操作はプロファイルオブジェクトに予期しない影響を与える可能性があるためです。
プロファイル内のストリーム構成オブジェクトの構成を変更するには、まず IMFASFStreamConfig::Clone を呼び出してストリーム構成オブジェクトを複製する必要があります。オブジェクトの複製に必要な変更を加えた後、IMFASFProfile::SetStream メソッドを呼び出して更新後のオブジェクトを追加します。
プロファイル内のストリームに対応する Advanced Systems Format (ASF) ストリーム構成オブジェクトを取得します。このメソッドは、ストリームインデックスではなくストリーム番号でストリームを参照します。
| wStreamNumber | WORD | in | インターフェイスポインターを取得するストリームのストリーム番号。 |
| ppIStream | IMFASFStreamConfig** | out | ASF ストリーム構成オブジェクトの IMFASFStreamConfig インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドはストリーム構成オブジェクトのコピーを作成しません。取得されるポインターは、プロファイルオブジェクト内のオブジェクトを指します。このポインターを使用してストリーム構成オブジェクトに変更を加えてはなりません。そのような操作はプロファイルオブジェクトに予期しない影響を与える可能性があるためです。
プロファイル内のストリーム構成オブジェクトの構成を変更するには、まず IMFASFStreamConfig::Clone を呼び出してストリーム構成オブジェクトを複製する必要があります。オブジェクトの複製に必要な変更を加えた後、IMFASFProfile::SetStream メソッドを呼び出して更新後のオブジェクトを追加します。
プロファイルにストリームを追加するか、既存のストリームを再構成します。
| pIStream | IMFASFStreamConfig* | in | 構成済みの ASF ストリーム構成オブジェクトの IMFASFStreamConfig インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
ASF ストリーム構成オブジェクト内のストリーム番号がすでにプロファイルに含まれている場合、新しいオブジェクトの情報が古いものを置き換えます。プロファイルにそのストリーム番号のストリームが含まれていない場合、ASF ストリーム構成オブジェクトは新しいストリームとして追加されます。
Advanced Systems Format (ASF) プロファイルオブジェクトからストリームを削除します。
| wStreamNumber | WORD | in | 削除するストリームのストリーム番号。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
ストリームが削除されると、ASF プロファイルオブジェクトはインデックス値が 0 から始まる連続した値になるようにストリームインデックスを再割り当てします。以前に保存したストリームインデックス番号は、ストリームの削除後は無効になります。
Advanced Systems Format (ASF) ストリーム構成オブジェクトを作成します。
| pIMediaType | IMFMediaType* | in | 構成済みのメディアタイプの IMFMediaType インターフェイスへのポインター。 |
| ppIStream | IMFASFStreamConfig** | out | 新しい ASF ストリーム構成オブジェクトの IMFASFStreamConfig インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ppIStream が NULL です。 | |
| メモリ不足のため、ストリーム構成オブジェクトを作成できませんでした。 |
解説(Remarks)
このメソッドで作成された ASF ストリーム構成オブジェクトはプロファイルに含まれません。ストリームを含めるには、まずストリーム構成を設定してから IMFASFProfile::SetStream を呼び出す必要があります。
プロファイルに関連付けられている Advanced Systems Format (ASF) 相互排他オブジェクトの数を取得します。
| pcMutexs | DWORD* | out | 相互排他オブジェクトの数を受け取ります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
複数の方法で相互に排他的なストリームには、複数の相互排他オブジェクトが必要になる場合があります。詳細については、IMFASFMutualExclusion::AddRecord を参照してください。
プロファイルから Advanced Systems Format (ASF) 相互排他オブジェクトを取得します。
| dwMutexIndex | DWORD | in | プロファイル内の相互排他オブジェクトのインデックス。 |
| ppIMutex | IMFASFMutualExclusion** | out | ASF 相互排他オブジェクトの IMFASFMutualExclusion インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは相互排他オブジェクトのコピーを作成しません。返されるポインターは、プロファイルオブジェクトに含まれる相互排他オブジェクトを参照します。このポインターを使用して相互排他オブジェクトに変更を加えてはなりません。そのような操作はプロファイルオブジェクトに予期しない影響を与える可能性があるためです。
プロファイル内の相互排他オブジェクトの構成を変更するには、まず IMFASFMutualExclusion::Clone を呼び出して相互排他オブジェクトを複製する必要があります。オブジェクトの複製に必要な変更を加え、IMFASFProfile::RemoveMutualExclusion メソッドを呼び出して古い相互排他オブジェクトをプロファイルから削除し、その後 IMFASFProfile::AddMutualExclusion メソッドを呼び出して更新後のオブジェクトを追加します。
構成済みの Advanced Systems Format (ASF) 相互排他オブジェクトをプロファイルに追加します。
| pIMutex | IMFASFMutualExclusion* | in | 構成済みの ASF 相互排他オブジェクトの IMFASFMutualExclusion インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
相互排他オブジェクトは、IMFASFProfile::CreateMutualExclusion メソッドを呼び出して作成できます。
プロファイルから Advanced Systems Format (ASF) 相互排他オブジェクトを削除します。
| dwMutexIndex | DWORD | in | プロファイルから削除する相互排他オブジェクトのインデックス。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
相互排他オブジェクトがプロファイルから削除されると、ASF プロファイルオブジェクトは相互排他インデックスが 0 から始まる連続した値になるように再割り当てします。以前に保存したインデックスは、このメソッドの呼び出し後は無効になります。
新しい Advanced Systems Format (ASF) 相互排他オブジェクトを作成します。相互排他オブジェクトは、AddMutualExclusion メソッドを呼び出してプロファイルに追加できます。
| ppIMutex | IMFASFMutualExclusion** | out | 新しいオブジェクトの IMFASFMutualExclusion インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものがありますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドで作成された ASF 相互排他オブジェクトはプロファイルに関連付けられていません。この関連付けを行うには、オブジェクトの構成後に IMFASFProfile::AddMutualExclusion を呼び出します。
IMFASFProfile::GetStreamPrioritization メソッド
| ppIStreamPrioritization | IMFASFStreamPrioritization** | out | 予約されています。 |
戻り値
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IMFASFProfile::AddStreamPrioritization メソッド
| pIStreamPrioritization | IMFASFStreamPrioritization* | in | 予約されています。 |
戻り値
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IMFASFProfile::RemoveStreamPrioritization メソッド
戻り値
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
IMFASFProfile::CreateStreamPrioritization メソッド
| ppIStreamPrioritization | IMFASFStreamPrioritization** | out | 予約されています。 |
戻り値
E_NOTIMPL を返します。
Advanced Systems Format プロファイルオブジェクトのコピーを作成します。
| ppIProfile | IMFASFProfile** | out | 新しいオブジェクトの IMFASFProfile インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
複製されたオブジェクトは、元のオブジェクトから完全に独立しています。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFASFProfile "{D267BF6A-028B-4E0D-903D-43F0EF82D0D4}" #usecom global IMFASFProfile IID_IMFASFProfile "{}" #comfunc global IMFASFProfile_GetStreamCount 33 var #comfunc global IMFASFProfile_GetStream 34 int,var,sptr #comfunc global IMFASFProfile_GetStreamByNumber 35 int,sptr #comfunc global IMFASFProfile_SetStream 36 sptr #comfunc global IMFASFProfile_RemoveStream 37 int #comfunc global IMFASFProfile_CreateStream 38 sptr,sptr #comfunc global IMFASFProfile_GetMutualExclusionCount 39 var #comfunc global IMFASFProfile_GetMutualExclusion 40 int,sptr #comfunc global IMFASFProfile_AddMutualExclusion 41 sptr #comfunc global IMFASFProfile_RemoveMutualExclusion 42 int #comfunc global IMFASFProfile_CreateMutualExclusion 43 sptr #comfunc global IMFASFProfile_GetStreamPrioritization 44 sptr #comfunc global IMFASFProfile_AddStreamPrioritization 45 sptr #comfunc global IMFASFProfile_RemoveStreamPrioritization 46 #comfunc global IMFASFProfile_CreateStreamPrioritization 47 sptr #comfunc global IMFASFProfile_Clone 48 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMFASFProfile "{D267BF6A-028B-4E0D-903D-43F0EF82D0D4}" #usecom global IMFASFProfile IID_IMFASFProfile "{}" #comfunc global IMFASFProfile_GetStreamCount 33 sptr #comfunc global IMFASFProfile_GetStream 34 int,sptr,sptr #comfunc global IMFASFProfile_GetStreamByNumber 35 int,sptr #comfunc global IMFASFProfile_SetStream 36 sptr #comfunc global IMFASFProfile_RemoveStream 37 int #comfunc global IMFASFProfile_CreateStream 38 sptr,sptr #comfunc global IMFASFProfile_GetMutualExclusionCount 39 sptr #comfunc global IMFASFProfile_GetMutualExclusion 40 int,sptr #comfunc global IMFASFProfile_AddMutualExclusion 41 sptr #comfunc global IMFASFProfile_RemoveMutualExclusion 42 int #comfunc global IMFASFProfile_CreateMutualExclusion 43 sptr #comfunc global IMFASFProfile_GetStreamPrioritization 44 sptr #comfunc global IMFASFProfile_AddStreamPrioritization 45 sptr #comfunc global IMFASFProfile_RemoveStreamPrioritization 46 #comfunc global IMFASFProfile_CreateStreamPrioritization 47 sptr #comfunc global IMFASFProfile_Clone 48 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。