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

IMFPresentationDescriptor

COM
IID03cb2711-24d7-4db6-a17f-f3a7a479a536継承元IMFAttributes自前メソッド開始 vtbl33

公式ドキュメント

プレゼンテーションの詳細を記述します。プレゼンテーションとは、共通のプレゼンテーション時刻を共有する一連の関連メディアストリームの集合です。

解説(Remarks)

プレゼンテーション記述子は、メディアソースおよび一部のメディアシンクを構成するために使用されます。メディアソースからプレゼンテーション記述子を取得するには、IMFMediaSource::CreatePresentationDescriptor を呼び出します。新しいプレゼンテーション記述子を作成するには、MFCreatePresentationDescriptor を呼び出します。

このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで利用できます。

メソッド 5

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

vtbl 33 HRESULT GetStreamDescriptorCount(DWORD* pdwDescriptorCount)

プレゼンテーション内のストリーム記述子の数を取得します。各ストリーム記述子には、メディアソース内の 1 つのストリームに関する情報が含まれます。ストリーム記述子を取得するには、IMFPresentationDescriptor::GetStreamDescriptorByIndex メソッドを呼び出します。

pdwDescriptorCountDWORD*outストリーム記述子の数を受け取ります。

戻り値

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

解説(Remarks)

このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで利用できます。

vtbl 34 HRESULT GetStreamDescriptorByIndex(DWORD dwIndex, BOOL* pfSelected, IMFStreamDescriptor** ppDescriptor)

プレゼンテーション内のストリームに対応するストリーム記述子を取得します。ストリーム記述子には、そのストリームに関する情報が含まれます。

dwIndexDWORDinストリームのゼロベースのインデックス。プレゼンテーション内のストリーム数を調べるには、IMFPresentationDescriptor::GetStreamDescriptorCount メソッドを呼び出します。
pfSelectedBOOL*outブール値を受け取ります。ストリームが現在選択されている場合は TRUE、現在選択解除されている場合は FALSE になります。ストリームが選択されている場合、IMFMediaSource::Start が呼び出されると、メディアソースはそのストリームのデータを生成します。メディアソースは、選択解除されたストリームのデータは生成しません。ストリームを選択するには IMFPresentationDescriptor::SelectStream を呼び出します。ストリームを選択解除するには IMFPresentationDescriptor::DeselectStream を呼び出します。
ppDescriptorIMFStreamDescriptor**outストリーム記述子の IMFStreamDescriptor インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

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

解説(Remarks)

このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで利用できます。

vtbl 35 HRESULT SelectStream(DWORD dwDescriptorIndex)

プレゼンテーション内のストリームを選択します。

dwDescriptorIndexDWORDin選択するストリーム番号(ゼロベース)。プレゼンテーション内のストリーム数を調べるには、IMFPresentationDescriptor::GetStreamDescriptorCount を呼び出します。

戻り値

このメソッドは HRESULT を返します。可能な値には次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
dwDescriptorIndex が範囲外です。

解説(Remarks)

ストリームが選択されている場合、メディアソースはそのストリームのデータを生成します。メディアソースは、選択解除されたストリームのデータは生成しません。ストリームを選択解除するには、IMFPresentationDescriptor::DeselectStream を呼び出します。

ストリームが選択されているかどうかを照会するには、IMFPresentationDescriptor::GetStreamDescriptorByIndex を呼び出します。

このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで利用できます。

vtbl 36 HRESULT DeselectStream(DWORD dwDescriptorIndex)

プレゼンテーション内のストリームを選択解除します。

dwDescriptorIndexDWORDin選択解除するストリーム番号(ゼロベース)。プレゼンテーション内のストリーム数を調べるには、IMFPresentationDescriptor::GetStreamDescriptorCount メソッドを呼び出します。

戻り値

このメソッドは HRESULT を返します。可能な値には次の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
dwDescriptorIndex が範囲外です。

解説(Remarks)

ストリームが選択解除されると、そのストリームのデータは生成されません。ストリームを再び選択するには、IMFPresentationDescriptor::SelectStream を呼び出します。

ストリームが選択されているかどうかを照会するには、IMFPresentationDescriptor::GetStreamDescriptorByIndex を呼び出します。

このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで利用できます。

vtbl 37 HRESULT Clone(IMFPresentationDescriptor** ppPresentationDescriptor)

このプレゼンテーション記述子のコピーを作成します。

ppPresentationDescriptorIMFPresentationDescriptor**out新しいプレゼンテーション記述子の IMFPresentationDescriptor インターフェイスへのポインターを受け取ります。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

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

解説(Remarks)

このメソッドは、プレゼンテーション記述子の浅いコピー(シャローコピー)を行います。ストリーム記述子は複製されません。そのため、プレゼンテーション記述子またはそのストリーム記述子を変更する際には注意してください。

元のプレゼンテーション記述子がメディアソースから取得したものである場合、ソースが停止しているときを除いてプレゼンテーション記述子を変更しないでください。プレゼンテーション記述子を使用してメディアシンクを構成する場合は、シンクを構成した後にプレゼンテーション記述子を変更しないでください。

このインターフェイスは、Windows Media Format 11 SDK 再頒布可能コンポーネントがインストールされている場合、次のプラットフォームで利用できます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFPresentationDescriptor "{03CB2711-24D7-4DB6-A17F-F3A7A479A536}"
#usecom global IMFPresentationDescriptor IID_IMFPresentationDescriptor "{}"
#comfunc global IMFPresentationDescriptor_GetStreamDescriptorCount    33 var
#comfunc global IMFPresentationDescriptor_GetStreamDescriptorByIndex  34 int,var,sptr
#comfunc global IMFPresentationDescriptor_SelectStream                35 int
#comfunc global IMFPresentationDescriptor_DeselectStream              36 int
#comfunc global IMFPresentationDescriptor_Clone                       37 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。