CBaseAllocator.GetBuffer 메서드

이 메서드는 GetBuffer 버퍼가 포함된 미디어 샘플을 검색합니다. 이 메서드는 IMemAllocator::GetBuffer 메서드를 구현합니다.

구문

HRESULT GetBuffer(
   IMediaSample   **ppBuffer,
   REFERENCE_TIME *pStartTime,
   REFERENCE_TIME *pEndTime,
   DWORD          dwFlags
);

매개 변수

ppBuffer

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

pStartTime

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

pEndTime

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

dwFlags

0개 이상의 플래그의 비트 조합입니다. 기본 클래스는 다음 플래그를 지원합니다.

의미
AM_GBF_NOWAIT
버퍼를 사용할 수 있게 될 때까지 기다리지 마세요.

반환 값

다음 HRESULT 값 중 하나를 반환합니다.

반환 코드 설명
S_OK
성공했습니다.
VFW_E_NOT_COMMITTED
할당자가 커밋되지 않았습니다.
VFW_E_TIMEOUT
초과.

설명

호출자가 dwFlags에서 AM_GBF_NOWAIT 플래그를 지정하지 않는 한 이 메서드는 다음 샘플을 사용할 수 있을 때까지 차단합니다.

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

기본 클래스에서 pStartTimepEndTime 매개 변수는 무시됩니다. 파생 클래스는 이러한 값을 사용할 수 있습니다. 예를 들어 Video Renderer 필터의 할당자는 이러한 값을 사용하여 DirectDraw 표면 간의 전환을 동기화합니다.

메서드가 샘플을 대기해야 하는 경우 대기 중인 개체 수(CBaseAllocator::m_lCount) 및 세마포(CBaseAllocator::m_hSem)에서 WaitForSingleObject 함수를 호출합니다. 샘플을 사용할 수 있게 되면 할당 자에서 CBaseAllocator::ReleaseBuffer 메서드를 호출하여 마포 수를 m_lCount 증가(대기 스레드 해제)하고 m_lCount 다시 0으로 설정합니다.

요구 사항

요구 사항
헤더
Amfilter.h(스트림.h 포함)
라이브러리
Strmbase.lib(소매 빌드);
Strmbasd.lib(디버그 빌드)

추가 정보

CBaseAllocator 클래스