IAudioClient::GetMixFormat メソッド (audioclient.h)

GetMixFormat メソッドは、オーディオ エンジンが共有モード ストリームの内部処理に使用するストリーム形式を取得します。

構文

HRESULT GetMixFormat(
  [out] WAVEFORMATEX **ppDeviceFormat
);

パラメーター

[out] ppDeviceFormat

メソッドがミックス形式のアドレスを書き込むポインター変数へのポインター。 このパラメーターは、ポインター変数への有効な NULL 以外のポインターである必要があります。 メソッドは 、WAVEFORMATEX (または WAVEFORMATEXTENSIBLE) 構造体のアドレスをこの変数に書き込みます。 メソッドは、構造体にストレージを割り当てます。 呼び出し元は、 CoTaskMemFree 関数を呼び出すことによって、不要になったストレージを解放する役割を担います。 GetMixFormat 呼び出しが失敗した場合、*ppDeviceFormatNULL になりますWAVEFORMATEXWAVEFORMATEXTENSIBLEおよび CoTaskMemFree の詳細については、Windows SDK のドキュメントを参照してください。

戻り値

メソッドが成功した場合は、S_OK を返します。 エラーが発生した場合、次の表に示す値が、可能なリターン コードに含まれますが、これらに限定されません。

リターン コード 説明
AUDCLNT_E_DEVICE_INVALIDATED
オーディオ エンドポイント デバイスが取り外されているか、オーディオ ハードウェアまたは関連するハードウェア リソースが再構成、無効、削除、またはその他の方法で使用できなくなります。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows オーディオ サービスが実行されていません。
E_POINTER
パラメーター ppDeviceFormatNULL です
E_OUTOFMEMORY
メモリが不足しています。

注釈

クライアントは、 IAudioClient::Initialize メソッドを呼び出す前に、このメソッドを呼び出すことができます。 オーディオ エンドポイント デバイスの共有モード ストリームを作成する場合、 Initialize メソッドは常に、同じデバイス上の GetMixFormat 呼び出しから取得したストリーム形式を受け入れます。

ミックス形式は、オーディオ エンジンが共有モード ストリームのデジタル処理に内部的に使用する形式です。 この形式は、必ずしもオーディオ エンドポイント デバイスがサポートする形式ではありません。 したがって、呼び出し元は 、GetMixFormat を呼び出して取得した形式の排他モード ストリームの作成に成功しない可能性があります。

たとえば、デジタル オーディオ処理を容易にするために、オーディオ エンジンでは、サンプルを浮動小数点値として表すミックス形式を使用できます。 デバイスが整数の PCM サンプルのみをサポートしている場合、エンジンは、デバイスとエンジンの間の接続時に、サンプルを整数の PCM 値に変換します。 ただし、リサンプリングを回避するために、エンジンでは、デバイスがサポートするサンプル レートのミックス形式を使用する場合があります。

Initialize メソッドが特定の形式の共有モードストリームまたは排他モード ストリームを作成できるかどうかを判断するには、IAudioClient::IsFormatSupported メソッドを呼び出します。

WAVEFORMATEX 構造体自体では、スピーカー位置へのチャネルのマッピングを指定できません。 さらに、 WAVEFORMATEX はオーディオ サンプルごとにコンテナーのサイズを指定しますが、サンプル内の有効桁数のビット数を指定することはできません (たとえば、24 ビット コンテナーでは 20 ビットの有効桁数)。 ただし、 WAVEFORMATEXTENSIBLE 構造体では、スピーカーへのチャネルのマッピングと各サンプルの精度のビット数の両方を指定できます。 このため、GetMixFormat メソッドは、スタンドアロンの WAVEFORMATEX 構造体ではなく、WAVEFORMATEXTENSIBLE 構造体の形式の書式記述子を取得します。 ppDeviceFormat パラメーターを使用して、このメソッドは、この WAVEFORMATEXTENSIBLE 構造体の開始時に埋め込まれた WAVEFORMATEX 構造体へのポインターを出力します。 WAVEFORMATEXWAVEFORMATEXTENSIBLE の詳細については、Windows DDK のドキュメントを参照してください。

GetMixFormat メソッドの詳細については、「デバイス形式」を参照してください。 GetMixFormat を呼び出すコード例については、次のトピックを参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー audioclient.h

こちらもご覧ください

IAudioClient インターフェイス

IAudioClient::Initialize

IAudioClient::IsFormatSupported