IMemAllocator::GetBuffer 메서드(strmif.h)

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

GetBuffer 메서드는 빈 버퍼가 포함된 미디어 샘플을 검색합니다.

구문

HRESULT GetBuffer(
  [out] IMediaSample   **ppBuffer,
  [in]  REFERENCE_TIME *pStartTime,
  [in]  REFERENCE_TIME *pEndTime,
  [in]  DWORD          dwFlags
);

매개 변수

[out] ppBuffer

버퍼의 IMediaSample 인터페이스에 대한 포인터를 받습니다. 호출자는 인터페이스를 해제해야 합니다.

[in] pStartTime

샘플의 시작 시간 또는 NULL에 대한 포인터입니다.

[in] pEndTime

샘플의 종료 시간 또는 NULL에 대한 포인터입니다.

[in] dwFlags

다음 플래그 중 0개 이상의 비트 조합:

플래그 설명
AM_GBF_NOTASYNCPOINT 이 샘플은 동기화 지점이 아닙니다. 이 샘플에서는 동적 형식 변경이 허용되지 않습니다. 오버레이 믹서 또는 VMR에서 호출되는 경우 이 플래그는 반환된 버퍼에 전달된 마지막 이미지와 동일한 이미지가 포함됨을 의미합니다.
AM_GBF_PREVFRAMESKIPPED 이 샘플은 불연속성 이후 첫 번째 샘플입니다. (비디오 렌더러만 이 플래그를 사용합니다.)
AM_GBF_NOWAIT 버퍼를 사용할 수 있게 될 때까지 기다리지 마세요.
AM_GBF_NODDSURFACELOCK 비디오 혼합 렌더러 필터 7과 함께 잠금 해제된 DirectDraw 표면을 요청하는 데 사용됩니다. 자세한 내용은 Direct3D 렌더링 대상 작업을 참조하세요.

반환 값

HRESULT 값을 반환합니다. 가능한 값에는 다음 표에 표시된 값이 포함됩니다.

반환 코드 설명
S_OK
성공.
VFW_E_NOT_COMMITTED
할당자는 커밋 해제됩니다.
VFW_E_TIMEOUT
초과.

설명

기본적으로 이 메서드는 무료 샘플을 사용할 수 있거나 할당자가 커밋 해제될 때까지 차단됩니다. 호출자가 AM_GBF_NOWAIT 플래그를 지정하고 샘플을 사용할 수 없는 경우 할당자는 반환 값이 VFW_E_TIMEOUT 즉시 반환할 수 있습니다. 그러나 할당자는 이 플래그를 지원할 필요가 없습니다.

ppBuffer에서 반환된 샘플에는 유효한 버퍼 포인터가 있습니다. 호출자는 타임스탬프, 미디어 시간 또는 동기화 지점 속성과 같은 샘플의 다른 속성을 설정해야 합니다. (자세한 내용은 IMediaSample을 참조하세요.)

pStartTimepEndTime 매개 변수는 샘플에 적용되지 않습니다. 할당자는 이러한 값을 사용하여 검색하는 버퍼를 결정할 수 있습니다. 예를 들어 Video Renderer 필터는 이러한 값을 사용하여 DirectDraw 표면 간 전환을 동기화합니다. 샘플에서 타임스탬프를 설정하려면 IMediaSample::SetTime 메서드를 호출합니다.

이 메서드를 호출하기 전에 IMemAllocator::Commit 메서드를 호출해야 합니다. IMemAllocator::D ecommit 메서드가 호출된 후 이 메서드가 실패합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 strmif.h(Dshow.h 포함)
라이브러리 Strmiids.lib

추가 정보

오류 및 성공 코드

IMemAllocator 인터페이스