다음을 통해 공유


IAudioClient3::InitializeSharedAudioStream 메서드(audioclient.h)

지정된 주기를 사용하여 공유 스트림을 초기화합니다.

구문

HRESULT InitializeSharedAudioStream(
  [in]           DWORD              StreamFlags,
  [in]           UINT32             PeriodInFrames,
  [in]           const WAVEFORMATEX *pFormat,
  [in, optional] LPCGUID            AudioSessionGuid
);

매개 변수

[in] StreamFlags

형식:DWORD

스트림 만들기를 제어하는 플래그입니다. 클라이언트는 이 매개 변수를 0으로 설정하거나 지원되는 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가 반환되고, 실패할 경우 가능한 반환 코드에는 다음 표에 표시된 값이 포함되지만 이에 국한되지는 않습니다.

반환 코드 설명
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 매개 변수에 반환된 값의 정수 배수여야 합니다. PeriodInFramespMinPeriodInFrames 에서 반환된 값보다 크거나 같아야 하며 pMaxPeriodInFrames 값보다 작거나 같아야 합니다.

예를 들어 44100kHz 형식의 경우 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