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::GetSharedModeEnginePeriodpFundamentalPeriodInFrames パラメーターで返される値の整数倍数である必要があります。 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 を返します。 エラーが発生した場合、次の表に示す値が、可能なリターン コードに含まれますが、これらに限定されません。

リターン コード 説明
AUDCLNT_E_ALREADY_INITIALIZED
IAudioClient オブジェクトは既に初期化されています。
AUDCLNT_E_WRONG_ENDPOINT_TYPE
AUDCLNT_STREAMFLAGS_LOOPBACK フラグが設定されていますが、エンドポイント デバイスはキャプチャ デバイスであり、レンダリング デバイスではありません。
AUDCLNT_E_CPUUSAGE_EXCEEDED
プロセス パスの期間が最大 CPU 使用率を超えたことを示します。 オーディオ エンジンは、プロセス パス期間が最大 CPU 使用率を超える回数を維持することで、CPU 使用率を追跡します。 CPU 使用率の最大値は、エンジンの周期性の割合として計算されます。 パーセンテージ値は、システムの CPU スロットル値 (10% と 90% の範囲内) です。 この値が見つからない場合は、既定値の 40% を使用して最大 CPU 使用率が計算されます。
AUDCLNT_E_DEVICE_INVALIDATED
オーディオ エンドポイント デバイスが取り外されているか、オーディオ ハードウェアまたは関連するハードウェア リソースが再構成、無効、削除、またはその他の方法で使用できなくなります。
AUDCLNT_E_DEVICE_IN_USE
エンドポイント デバイスは既に使用されています。 デバイスが排他モードで使用されているか、デバイスが共有モードで使用されており、呼び出し元が排他モードでデバイスを使用するように求められます。
AUDCLNT_E_ENGINE_FORMAT_LOCKED
IAudioClient2::SetClientProperties を呼び出すときにAUDCLNT_STREAMOPTIONS_MATCH_FORMAT指定されたクライアントが、オーディオ エンジンの形式が別のクライアントによってロックされています。 この場合、一致形式オプションを指定せずに IAudioClient2::SetClientProperties を呼び出し、オーディオ エンジンの現在の形式を使用できます。
AUDCLNT_E_ENGINE_PERIODICITY_LOCKED
IAudioClient2::SetClientProperties を呼び出すときにAUDCLNT_STREAMOPTIONS_MATCH_FORMAT指定されたクライアントですが、オーディオ エンジンの周期性は別のクライアントによってロックされています。 この場合、一致形式オプションを指定せずに IAudioClient2::SetClientProperties を呼び出し、オーディオ エンジンの現在の周期性を使用できます。
AUDCLNT_E_ENDPOINT_CREATE_FAILED
メソッドは、レンダーまたはキャプチャ デバイスのオーディオ エンドポイントを作成できませんでした。 これは、オーディオ エンドポイント デバイスが取り外されているか、オーディオ ハードウェアまたは関連するハードウェア リソースが再構成、無効、削除、またはその他の方法で使用できなくなった場合に発生する可能性があります。
AUDCLNT_E_INVALID_DEVICE_PERIOD
PeriodInFrames で指定された要求されたデバイス期間が、オーディオ エンジンの基本的な周期性の整数倍ではないこと、エンジンの最小期間よりも短い、またはエンジンの最大期間よりも長くなることを示します。 IAudioClient3::GetSharedModeEnginePeriod を呼び出して、エンジンのサポートされている周期性の値を取得します。
AUDCLNT_E_UNSUPPORTED_FORMAT
オーディオ エンジン (共有モード) またはオーディオ エンドポイント デバイス (排他モード) は、指定された形式をサポートしていません。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows オーディオ サービスが実行されていません。
E_POINTER
パラメーター pFormatNULL です
E_INVALIDARG
パラメーター pFormat は無効な書式の説明を指します。または、AUDCLNT_STREAMFLAGS_LOOPBACK フラグが設定されているが 、ShareMode がAUDCLNT_SHAREMODE_SHAREDと等しくない。または、AUDCLNT_STREAMFLAGS_CROSSPROCESS フラグが設定されているが 、ShareMode がAUDCLNT_SHAREMODE_EXCLUSIVEと等しい。

SetClientProperties の以前の呼び出しが、オーディオ/レンダリング ストリームの無効なカテゴリで行われました。

E_OUTOFMEMORY
メモリが不足しています。

注釈

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

こちらもご覧ください

IAudioClient

IAudioClient2

IAudioClient3