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

IMFASFProfile

COM
IIDd267bf6a-028b-4e0d-903d-43f0ef82d0d4継承元IMFAttributes自前メソッド開始 vtbl33

公式ドキュメント

Advanced Systems Format (ASF) プロファイルを管理します。

メソッド 16

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

vtbl 33 HRESULT GetStreamCount(DWORD* pcStreams)

プロファイル内のストリーム数を取得します。

pcStreamsDWORD*outプロファイル内のストリーム数を受け取ります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
vtbl 34 HRESULT GetStream(DWORD dwStreamIndex, WORD* pwStreamNumber, IMFASFStreamConfig** ppIStream)

ストリームインデックスを指定してプロファイルからストリームを取得します。また、ストリームインデックスに対応するストリーム番号を取得することもできます。

dwStreamIndexDWORDin取得するストリームのインデックス。ストリームインデックスは 0 から始まる連続した値です。プロファイルに含まれるストリーム数は、IMFASFProfile::GetStreamCount メソッドを呼び出して取得できます。
pwStreamNumberWORD*out要求したストリームのストリーム番号を受け取ります。ストリーム番号は 1 から始まり、必ずしも連続しているとは限りません。ストリーム番号が不要な場合は、このパラメーターを NULL に設定できます。
ppIStreamIMFASFStreamConfig**outASF ストリーム構成オブジェクトの IMFASFStreamConfig インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。ストリーム構成にアクセスせずにストリーム番号のみを取得したい場合は、このパラメーターを NULL にできます。

戻り値

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

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

解説(Remarks)

このメソッドはストリーム構成オブジェクトのコピーを作成しません。取得されるポインターは、プロファイルオブジェクト内のオブジェクトを指します。このポインターを使用してストリーム構成オブジェクトに変更を加えてはなりません。そのような操作はプロファイルオブジェクトに予期しない影響を与える可能性があるためです。

プロファイル内のストリーム構成オブジェクトの構成を変更するには、まず IMFASFStreamConfig::Clone を呼び出してストリーム構成オブジェクトを複製する必要があります。オブジェクトの複製に必要な変更を加えた後、IMFASFProfile::SetStream メソッドを呼び出して更新後のオブジェクトを追加します。

vtbl 35 HRESULT GetStreamByNumber(WORD wStreamNumber, IMFASFStreamConfig** ppIStream)

プロファイル内のストリームに対応する Advanced Systems Format (ASF) ストリーム構成オブジェクトを取得します。このメソッドは、ストリームインデックスではなくストリーム番号でストリームを参照します。

wStreamNumberWORDinインターフェイスポインターを取得するストリームのストリーム番号。
ppIStreamIMFASFStreamConfig**outASF ストリーム構成オブジェクトの IMFASFStreamConfig インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

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

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

解説(Remarks)

このメソッドはストリーム構成オブジェクトのコピーを作成しません。取得されるポインターは、プロファイルオブジェクト内のオブジェクトを指します。このポインターを使用してストリーム構成オブジェクトに変更を加えてはなりません。そのような操作はプロファイルオブジェクトに予期しない影響を与える可能性があるためです。

プロファイル内のストリーム構成オブジェクトの構成を変更するには、まず IMFASFStreamConfig::Clone を呼び出してストリーム構成オブジェクトを複製する必要があります。オブジェクトの複製に必要な変更を加えた後、IMFASFProfile::SetStream メソッドを呼び出して更新後のオブジェクトを追加します。

vtbl 36 HRESULT SetStream(IMFASFStreamConfig* pIStream)

プロファイルにストリームを追加するか、既存のストリームを再構成します。

pIStreamIMFASFStreamConfig*in構成済みの ASF ストリーム構成オブジェクトの IMFASFStreamConfig インターフェイスへのポインター。

戻り値

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

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

解説(Remarks)

ASF ストリーム構成オブジェクト内のストリーム番号がすでにプロファイルに含まれている場合、新しいオブジェクトの情報が古いものを置き換えます。プロファイルにそのストリーム番号のストリームが含まれていない場合、ASF ストリーム構成オブジェクトは新しいストリームとして追加されます。

vtbl 37 HRESULT RemoveStream(WORD wStreamNumber)

Advanced Systems Format (ASF) プロファイルオブジェクトからストリームを削除します。

wStreamNumberWORDin削除するストリームのストリーム番号。

戻り値

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

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

解説(Remarks)

ストリームが削除されると、ASF プロファイルオブジェクトはインデックス値が 0 から始まる連続した値になるようにストリームインデックスを再割り当てします。以前に保存したストリームインデックス番号は、ストリームの削除後は無効になります。

vtbl 38 HRESULT CreateStream(IMFMediaType* pIMediaType, IMFASFStreamConfig** ppIStream)

Advanced Systems Format (ASF) ストリーム構成オブジェクトを作成します。

pIMediaTypeIMFMediaType*in構成済みのメディアタイプの IMFMediaType インターフェイスへのポインター。
ppIStreamIMFASFStreamConfig**out新しい ASF ストリーム構成オブジェクトの IMFASFStreamConfig インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
ppIStreamNULL です。
E_OUTOFMEMORY
メモリ不足のため、ストリーム構成オブジェクトを作成できませんでした。

解説(Remarks)

このメソッドで作成された ASF ストリーム構成オブジェクトはプロファイルに含まれません。ストリームを含めるには、まずストリーム構成を設定してから IMFASFProfile::SetStream を呼び出す必要があります。

vtbl 39 HRESULT GetMutualExclusionCount(DWORD* pcMutexs)

プロファイルに関連付けられている Advanced Systems Format (ASF) 相互排他オブジェクトの数を取得します。

pcMutexsDWORD*out相互排他オブジェクトの数を受け取ります。

戻り値

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

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

解説(Remarks)

複数の方法で相互に排他的なストリームには、複数の相互排他オブジェクトが必要になる場合があります。詳細については、IMFASFMutualExclusion::AddRecord を参照してください。

vtbl 40 HRESULT GetMutualExclusion(DWORD dwMutexIndex, IMFASFMutualExclusion** ppIMutex)

プロファイルから Advanced Systems Format (ASF) 相互排他オブジェクトを取得します。

dwMutexIndexDWORDinプロファイル内の相互排他オブジェクトのインデックス。
ppIMutexIMFASFMutualExclusion**outASF 相互排他オブジェクトの IMFASFMutualExclusion インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

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

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

解説(Remarks)

このメソッドは相互排他オブジェクトのコピーを作成しません。返されるポインターは、プロファイルオブジェクトに含まれる相互排他オブジェクトを参照します。このポインターを使用して相互排他オブジェクトに変更を加えてはなりません。そのような操作はプロファイルオブジェクトに予期しない影響を与える可能性があるためです。

プロファイル内の相互排他オブジェクトの構成を変更するには、まず IMFASFMutualExclusion::Clone を呼び出して相互排他オブジェクトを複製する必要があります。オブジェクトの複製に必要な変更を加え、IMFASFProfile::RemoveMutualExclusion メソッドを呼び出して古い相互排他オブジェクトをプロファイルから削除し、その後 IMFASFProfile::AddMutualExclusion メソッドを呼び出して更新後のオブジェクトを追加します。

vtbl 41 HRESULT AddMutualExclusion(IMFASFMutualExclusion* pIMutex)

構成済みの Advanced Systems Format (ASF) 相互排他オブジェクトをプロファイルに追加します。

pIMutexIMFASFMutualExclusion*in構成済みの ASF 相互排他オブジェクトの IMFASFMutualExclusion インターフェイスへのポインター。

戻り値

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

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

解説(Remarks)

相互排他オブジェクトは、IMFASFProfile::CreateMutualExclusion メソッドを呼び出して作成できます。

vtbl 42 HRESULT RemoveMutualExclusion(DWORD dwMutexIndex)

プロファイルから Advanced Systems Format (ASF) 相互排他オブジェクトを削除します。

dwMutexIndexDWORDinプロファイルから削除する相互排他オブジェクトのインデックス。

戻り値

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

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

解説(Remarks)

相互排他オブジェクトがプロファイルから削除されると、ASF プロファイルオブジェクトは相互排他インデックスが 0 から始まる連続した値になるように再割り当てします。以前に保存したインデックスは、このメソッドの呼び出し後は無効になります。

vtbl 43 HRESULT CreateMutualExclusion(IMFASFMutualExclusion** ppIMutex)

新しい Advanced Systems Format (ASF) 相互排他オブジェクトを作成します。相互排他オブジェクトは、AddMutualExclusion メソッドを呼び出してプロファイルに追加できます。

ppIMutexIMFASFMutualExclusion**out新しいオブジェクトの IMFASFMutualExclusion インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

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

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

解説(Remarks)

このメソッドで作成された ASF 相互排他オブジェクトはプロファイルに関連付けられていません。この関連付けを行うには、オブジェクトの構成後に IMFASFProfile::AddMutualExclusion を呼び出します。

vtbl 44 HRESULT GetStreamPrioritization(IMFASFStreamPrioritization** ppIStreamPrioritization)

IMFASFProfile::GetStreamPrioritization メソッド

ppIStreamPrioritizationIMFASFStreamPrioritization**out予約されています。

戻り値

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 45 HRESULT AddStreamPrioritization(IMFASFStreamPrioritization* pIStreamPrioritization)

IMFASFProfile::AddStreamPrioritization メソッド

pIStreamPrioritizationIMFASFStreamPrioritization*in予約されています。

戻り値

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 46 HRESULT RemoveStreamPrioritization()

IMFASFProfile::RemoveStreamPrioritization メソッド

戻り値

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 47 HRESULT CreateStreamPrioritization(IMFASFStreamPrioritization** ppIStreamPrioritization)

IMFASFProfile::CreateStreamPrioritization メソッド

ppIStreamPrioritizationIMFASFStreamPrioritization**out予約されています。

戻り値

E_NOTIMPL を返します。

vtbl 48 HRESULT Clone(IMFASFProfile** ppIProfile)

Advanced Systems Format プロファイルオブジェクトのコピーを作成します。

ppIProfileIMFASFProfile**out新しいオブジェクトの IMFASFProfile インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

複製されたオブジェクトは、元のオブジェクトから完全に独立しています。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 指定が可能。