ホーム › Media.WindowsMediaFormat › IWMMutualExclusion
IWMMutualExclusion
COM公式ドキュメント
IWMMutualExclusion インターフェイスは、一度に 1 つだけ再生できるストリームのグループを表します。IWMMutualExclusion は、相互排他オブジェクトの基本インターフェイスです。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 6 HRESULT GetType(GUID* pguidType)
GetType メソッドは、必要な相互排他の種類を示す GUID を取得します。
| pguidType | GUID* | out | 相互排他の種類を指定する GUID へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pguidType パラメーターが NULL です。 |
解説(Remarks)
次の定数は、この SDK でサポートされている GUID を表します。
| 相互排他の種類の識別子 | 説明 |
|---|---|
| CLSID_WMMUTEX_Bitrate | 相互排他ストリームがビットレートのみで異なります。再生時には、利用可能な帯域幅を最も効果的に使用するストリームが選択されます。マルチビットレートファイルには、この種類の相互排他を使用する必要があります。 |
| CLSID_WMMUTEX_Language | 相互排他ストリームは、言語のみが異なる同一のコンテンツです。この種類の相互排他の一般的な用途は、サウンドトラックを複数の言語に吹き替えることです。 |
| CLSID_WMMUTEX_Presentation | 相互排他ストリームは、表示形式が異なる同一のビデオです。表示形式は通常、ビデオフレームのアスペクト比によって定義されます。 |
| CLSID_WMMUTEX_Unknown | 相互排他ストリームはカスタム型です。この種類の相互排他には、さまざまな型のストリームを含めることができます。 |
注意 マルチビットレートオーディオファイルを作成した場合、Windows Media Services 4.1 からそのファイルをストリーミングする際に問題が発生することがあります。問題を回避するには、ファイルを書き込む前に IWMWriterFileSink3::SetAutoIndexing を呼び出して自動インデックス作成を無効にしてください。
vtbl 7 HRESULT SetType(GUID* guidType)
SetType メソッドは、必要な相互排他の種類を示す GUID を指定します。
| guidType | GUID* | in | 相互排他の種類を指定する GUID。値の一覧については、IWMMutualExclusion::GetType を参照してください。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 無効な型です。 |
解説(Remarks)
マルチビットレートオーディオファイルを作成した場合、Windows Media Services 4.1 からそのファイルをストリーミングする際に問題が発生することがあります。問題を回避するには、ファイルを書き込む前に IWMWriterFileSink3::SetAutoIndexing を呼び出して自動インデックス作成を無効にしてください。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IWMMutualExclusion "{96406BDE-2B2B-11D3-B36B-00C04F6108FF}" #usecom global IWMMutualExclusion IID_IWMMutualExclusion "{}" #comfunc global IWMMutualExclusion_GetType 6 var #comfunc global IWMMutualExclusion_SetType 7 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWMMutualExclusion "{96406BDE-2B2B-11D3-B36B-00C04F6108FF}" #usecom global IWMMutualExclusion IID_IWMMutualExclusion "{}" #comfunc global IWMMutualExclusion_GetType 6 sptr #comfunc global IWMMutualExclusion_SetType 7 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。