IAudioClient3::InitializeSharedAudioStream メソッド (audioclient.h)
指定した周期性で共有ストリームを初期化します。
構文
HRESULT InitializeSharedAudioStream(
[in] DWORD StreamFlags,
[in] UINT32 PeriodInFrames,
[in] const WAVEFORMATEX *pFormat,
[in, optional] LPCGUID AudioSessionGuid
);
パラメーター
[in] StreamFlags
型: DWORD
ストリームの作成を制御するためのフラグ。 クライアントは、このパラメーターを 0 に設定するか、サポートされている 1 つ以上の AUDCLNT_STREAMFLAGS_XXX定数またはAUDCLNT_SESSIONFLAGS_XXX定数 のビットごとの OR に設定する必要があります。 このメソッドを使用する場合、このパラメーターでサポートされる AUDCLNT_STREAMFLAGS_XXX定数 は次のとおりです。
- AUDCLNT_STREAMFLAGS_EVENTCALLBACK
[in] PeriodInFrames
種類: UINT32
クライアントによって要求される周期性。 この値は、iAudioClient3::GetSharedModeEnginePeriod に pFundamentalPeriodInFrames パラメーターで返される値の整数倍数である必要があります。 PeriodInFrames は、 pMinPeriodInFrames で返される値以上で、 pMaxPeriodInFrames で返される値以下である必要もあります。
[in] pFormat
種類: const WAVEFORMATEX*
書式記述子へのポインター。 このパラメーターは、 WAVEFORMATEX 型または WAVEFORMATEXTENSIBLE 型の有効なフォーマット記述子を指している必要があります。 詳細については、「 IAudioClient::Initialize」の「解説」セクションを参照してください。
[in, optional] AudioSessionGuid
種類: LPCGUID
セッション GUID へのポインター。 このパラメーターは、ストリームが属するオーディオ セッションを識別する GUID 値を指します。 GUID が以前に開かれたセッションを識別する場合、 メソッドはそのセッションにストリームを追加します。 GUID で既存のセッションが識別されない場合、 メソッドは新しいセッションを開き、そのセッションにストリームを追加します。 ストリームは、その有効期間中、同じセッションのメンバーのままです。 このパラメーターを NULL に設定することは、GUID_NULL値へのポインターを渡すことと同じです。
戻り値
種類: HRESULT
メソッドが成功した場合は、S_OK を返します。 エラーが発生した場合、次の表に示す値が、可能なリターン コードに含まれますが、これらに限定されません。
リターン コード | 説明 |
---|---|
|
IAudioClient オブジェクトは既に初期化されています。 |
|
AUDCLNT_STREAMFLAGS_LOOPBACK フラグが設定されていますが、エンドポイント デバイスはキャプチャ デバイスであり、レンダリング デバイスではありません。 |
|
プロセス パスの期間が最大 CPU 使用率を超えたことを示します。 オーディオ エンジンは、プロセス パス期間が最大 CPU 使用率を超える回数を維持することで、CPU 使用率を追跡します。 CPU 使用率の最大値は、エンジンの周期性の割合として計算されます。 パーセンテージ値は、システムの CPU スロットル値 (10% と 90% の範囲内) です。 この値が見つからない場合は、既定値の 40% を使用して最大 CPU 使用率が計算されます。 |
|
オーディオ エンドポイント デバイスが取り外されているか、オーディオ ハードウェアまたは関連するハードウェア リソースが再構成、無効、削除、またはその他の方法で使用できなくなります。 |
|
エンドポイント デバイスは既に使用されています。 デバイスが排他モードで使用されているか、デバイスが共有モードで使用されており、呼び出し元が排他モードでデバイスを使用するように求められます。 |
|
IAudioClient2::SetClientProperties を呼び出すときにAUDCLNT_STREAMOPTIONS_MATCH_FORMAT指定されたクライアントが、オーディオ エンジンの形式が別のクライアントによってロックされています。 この場合、一致形式オプションを指定せずに IAudioClient2::SetClientProperties を呼び出し、オーディオ エンジンの現在の形式を使用できます。 |
|
IAudioClient2::SetClientProperties を呼び出すときにAUDCLNT_STREAMOPTIONS_MATCH_FORMAT指定されたクライアントですが、オーディオ エンジンの周期性は別のクライアントによってロックされています。 この場合、一致形式オプションを指定せずに IAudioClient2::SetClientProperties を呼び出し、オーディオ エンジンの現在の周期性を使用できます。 |
|
メソッドは、レンダーまたはキャプチャ デバイスのオーディオ エンドポイントを作成できませんでした。 これは、オーディオ エンドポイント デバイスが取り外されているか、オーディオ ハードウェアまたは関連するハードウェア リソースが再構成、無効、削除、またはその他の方法で使用できなくなった場合に発生する可能性があります。 |
|
PeriodInFrames で指定された要求されたデバイス期間が、オーディオ エンジンの基本的な周期性の整数倍ではないこと、エンジンの最小期間よりも短い、またはエンジンの最大期間よりも長くなることを示します。 IAudioClient3::GetSharedModeEnginePeriod を呼び出して、エンジンのサポートされている周期性の値を取得します。 |
|
オーディオ エンジン (共有モード) またはオーディオ エンドポイント デバイス (排他モード) は、指定された形式をサポートしていません。 |
|
Windows オーディオ サービスが実行されていません。 |
|
パラメーター pFormat が NULL です。 |
|
パラメーター pFormat は無効な書式の説明を指します。または、AUDCLNT_STREAMFLAGS_LOOPBACK フラグが設定されているが 、ShareMode がAUDCLNT_SHAREMODE_SHAREDと等しくない。または、AUDCLNT_STREAMFLAGS_CROSSPROCESS フラグが設定されているが 、ShareMode がAUDCLNT_SHAREMODE_EXCLUSIVEと等しい。
SetClientProperties の以前の呼び出しが、オーディオ/レンダリング ストリームの無効なカテゴリで行われました。 |
|
メモリが不足しています。 |
注釈
IAudioClient::Initialize とは異なり、このメソッドではバッファー サイズを指定できません。 バッファー サイズは、 PeriodInFrames パラメーターで要求された周期性に基づいて計算されます。 オーディオ サンプルがバッファー内とバッファーの間でタイムリーに転送されるようにするのは、クライアント アプリの責任です。
オーディオ クライアントは、IAudioClient3::GetSharedModeEnginePeriod を呼び出して、PeriodInFrames パラメーターに許可される値をチェックする必要があります。 PeriodInFrames の値は、pFundamentalPeriodInFrames パラメーターで返される値の整数倍数である必要があります。 PeriodInFrames は、 pMinPeriodInFrames で返される値以上で、 pMaxPeriodInFrames の値以下である必要もあります。
たとえば、44100 kHz 形式の 場合、GetSharedModeEnginePeriod は次を返します。
pDefaultPeriodInFrames = 448 フレーム (約 10.16 ミリ秒)
pFundamentalPeriodInFrames = 4 フレーム (約 0.09 ミリ秒)
pMinPeriodInFrames = 48 フレーム (約 1.09 ミリ秒)
pMaxPeriodInFrames = 448 フレーム (既定値と同じ)
InitializeSharedAudioStream に対する PeriodInFrames パラメーターに使用できる値には、48 と 448 が含まれます。 また、96 や 128 なども含まれます。
4 (最小値より小さい) または 98 (基本の倍数ではない) または 1000 (許容最大値より大きい) は含まれません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2016 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | audioclient.h |