IVMRSurfaceAllocator::AllocateSurface 메서드(strmif.h)
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
메서드는 AllocateSurface
DirectDraw 표면을 할당합니다.
구문
HRESULT AllocateSurface(
[in] DWORD_PTR dwUserID,
[in] VMRALLOCATIONINFO *lpAllocInfo,
[in] DWORD *lpdwActualBuffers,
[out] LPDIRECTDRAWSURFACE7 *lplpSurface
);
매개 변수
[in] dwUserID
할당자-발표자의 한 instance 여러 VMR 인스턴스와 함께 사용되는 시나리오에서 사용할 VMR의 이 instance 고유하게 식별하는 애플리케이션 정의 DWORD_PTR 쿠키입니다.
[in] lpAllocInfo
VMRALLOCATIONINFO 구조를 지정합니다. 설명 부분을 참조하세요.
[in] lpdwActualBuffers
[out] 입력에서 이 매개 변수는 원하는 버퍼 수를 요청하는 데 사용됩니다. 출력 시 생성된 실제 버퍼 수를 받습니다.
[out] lplpSurface
Direct3D 표면을 수신하는 포인터의 주소입니다.
반환 값
메서드가 성공하면 S_OK가 반환되고, 그렇지 않으면 오류 코드가 반환됩니다.
반환 코드 | 설명 |
---|---|
|
포인터 중 하나가 잘못되었습니다. |
|
dwFlags에서 AMAP_3D_TARGET AMAP_FORCE_SYSMEM 또는 AMAP_ALLOW_SYSMEM 결합되었습니다. |
|
lpAllocInfo-lpHdr>로 지정된 BITMAPINFOHEADER 구조체의 하나 이상의 멤버가 잘못되었습니다. |
설명
AllocateSurface를 명시적으로 호출하기 전에 클라이언트 애플리케이션은 IVMRSurfaceAllocator::FreeSurface를 호출하여 DirectDraw 디코딩 표면 전면 버퍼가 NULL인지 확인해야 합니다. 애플리케이션이 AllocateSurface를 호출할 때 NULL이 아닌 경우 quartz.dll 디버그 버전으로 인해 어설션이 발생합니다.
사용자 지정 할당자-발표자에서 이 메서드를 구현하는 경우 lpAllocInfo-lpHdr-biBitCount>> 값을 검사해야 합니다. biBitCount가 0이면 현재 디스플레이의 픽셀 깊이로 설정해야 합니다. BiBitCount가 0으로 유지되면 표면 할당이 실패하고 새(기본값) VMR이 만들어집니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | SP1이 설치된 Windows XP[데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | strmif.h(Dshow.h 포함) |
라이브러리 | Strmiids.lib |