Share via


acmStreamOpen 함수(msacm.h)

acmStreamOpen 함수는 ACM 변환 스트림을 엽니다. 변환 스트림은 지정된 오디오 형식의 데이터를 다른 오디오 형식으로 변환하는 데 사용됩니다.

구문

MMRESULT ACMAPI acmStreamOpen(
  LPHACMSTREAM   phas,
  HACMDRIVER     had,
  LPWAVEFORMATEX pwfxSrc,
  LPWAVEFORMATEX pwfxDst,
  LPWAVEFILTER   pwfltr,
  DWORD_PTR      dwCallback,
  DWORD_PTR      dwInstance,
  DWORD          fdwOpen
);

매개 변수

phas

변환을 수행하는 데 사용할 수 있는 새 스트림 핸들을 수신하는 핸들에 대한 포인터입니다. 이 핸들은 다른 ACM 스트림 변환 함수에 대한 호출에서 스트림을 식별하는 데 사용됩니다. ACM_STREAMOPENF_QUERY 플래그를 지정하면 이 매개 변수는 NULL이어야 합니다.

had

ACM 드라이버에 대한 핸들입니다. 이 핸들을 지정하면 변환 스트림에 사용할 특정 드라이버를 식별합니다. 이 매개 변수가 NULL이면 일치하는 항목이 발견될 때까지 적합한 모든 ACM 드라이버가 쿼리됩니다.

pwfxSrc

변환에 필요한 원본 형식을 식별하는 WAVEFORMATEX 구조체에 대한 포인터입니다.

pwfxDst

변환에 필요한 대상 형식을 식별하는 WAVEFORMATEX 구조체에 대한 포인터입니다.

pwfltr

변환 스트림에서 수행할 원하는 필터링 작업을 식별하는 WAVEFILTER 구조체에 대한 포인터입니다. 필터링 작업이 필요한 경우 이 매개 변수는 NULL일 수 있습니다. 필터를 지정하면 원본(pwfxSrc) 및 대상(pwfxDst) 형식이 동일해야 합니다.

dwCallback

콜백 함수, 창 핸들 또는 이벤트 핸들에 대한 포인터입니다. 변환 스트림이 ACM_STREAMOPENF_ASYNC 플래그를 사용하여 열리는 경우에만 콜백 함수가 호출됩니다. 변환 스트림이 열리거나 닫혀 있고 각 버퍼가 변환된 후 콜백 함수에 알림이 표시됩니다. 변환 스트림이 ACM_STREAMOPENF_ASYNC 플래그 없이 열리면 이 매개 변수를 0으로 설정해야 합니다.

dwInstance

dwCallback 매개 변수로 지정된 콜백 함수에 전달된 사용자 instance 데이터입니다. 이 매개 변수는 창 및 이벤트 콜백과 함께 사용되지 않습니다. 변환 스트림이 ACM_STREAMOPENF_ASYNC 플래그 없이 열리면 이 매개 변수를 0으로 설정해야 합니다.

fdwOpen

변환 스트림을 열기 위한 플래그입니다. 다음 값이 정의됩니다.

[ACMSTREAMHEADER] (./ns-msacm-acmstreamheader.md) ACMSTREAMHEADER_STATUSF_DONE 플래그의 구조체입니다.
의미
ACM_STREAMOPENF_ASYNC
ACM_STREAMOPENF_NONREALTIME ACM은 데이터를 변환할 때 시간 제약 조건을 고려하지 않습니다. 기본적으로 드라이버는 실시간으로 데이터를 변환하려고 시도합니다. 일부 형식의 경우 이 플래그를 지정하면 오디오 품질 또는 기타 특성이 향상될 수 있습니다.
ACM_STREAMOPENF_QUERY ACM은 지정된 변환을 지원하는지 여부를 확인하기 위해 쿼리됩니다. 변환 스트림이 열리지 않고 phas 매개 변수에 핸들이 반환되지 않습니다.
CALLBACK_EVENT dwCallback 매개 변수는 이벤트의 핸들입니다.
CALLBACK_FUNCTION dwCallback 매개 변수는 콜백 프로시저 주소입니다. 함수 프로토타입은 acmStreamConvertCallback 프로토타입을 따라야 합니다.
CALLBACK_WINDOW dwCallback 매개 변수는 창 핸들입니다.

반환 값

성공하면 0을 반환하고, 그렇지 않으면 오류를 반환합니다. 가능한 오류 값은 다음과 같습니다.

반환 코드 설명
ACMERR_NOTPOSSIBLE
요청된 작업을 수행할 수 없습니다.
MMSYSERR_INVALFLAG
하나 이상의 플래그가 잘못되었습니다.
MMSYSERR_INVALHANDLE
지정한 핸들이 잘못되었습니다.
MMSYSERR_INVALPARAM
하나 이상의 매개 변수가 잘못되었습니다.
MMSYSERR_NOMEM
시스템에서 리소스를 할당할 수 없습니다.

설명

ACM 드라이버가 실시간 변환을 수행할 수 없고 fdwOpen 매개 변수에 대해 ACM_STREAMOPENF_NONREALTIME 플래그가 지정되지 않은 경우 열기 작업은 ACMERR_NOTPOSSIBLE 오류 코드를 반환하지 못합니다. 애플리케이션은 ACM_STREAMOPENF_QUERY 플래그를 사용하여 실시간 변환이 입력에 지원되는지 확인할 수 있습니다.

애플리케이션이 창을 사용하여 콜백 정보를 수신하는 경우 MM_ACM_OPEN, MM_ACM_CLOSE 및 MM_ACM_DONE 메시지가 창 프로시저 함수로 전송되어 변환 스트림의 진행률을 나타냅니다. 이 경우 ACMSTREAMHEADER 구조체는 MM_ACM_DONE MM_ACM_OPEN 및 MM_ACM_CLOSE 사용되지 않습니다.

애플리케이션이 함수를 사용하여 콜백 정보를 수신하는 경우 MM_ACM_OPEN, MM_ACM_CLOSE 및 MM_ACM_DONE 메시지가 함수로 전송되어 파형 오디오 출력의 진행률을 나타냅니다. 콜백 함수는 DLL(동적 연결 라이브러리)에 있어야 합니다.

애플리케이션이 콜백 알림에 이벤트를 사용하는 경우 변환 스트림의 진행률을 나타내기 위해 이벤트가 신호를 보냅니다. 스트림이 열릴 때, 각 버퍼가 변환된 후, 스트림이 닫힌 경우 이벤트가 신호를 보냅니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 msacm.h
라이브러리 Msacm32.lib
DLL Msacm32.dll

참고 항목

오디오 압축 함수

오디오 압축 관리자