DirectShow DirectShow 레퍼런스 인터페이스 IMemAllocator GetBuffer   [목차열람] [주소복사] [슬롯비우기]
IMemAllocator::GetBuffer
 
Microsoft DirectX 9.0

IMemAllocator::GetBuffer

GetBuffer 메서드는 빈 버퍼를 가지는 미디어 샘플을 얻어온다.

구문

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

파라미터

ppBuffer

[out] 버퍼의 IMediaSample 인터페이스의 포인터를 받는 변수의 주소.

pStartTime

[in] 샘플의 시작 타임의 포인터. 혹은 NULL.

pEndTime

[in] 샘플의 종료 타임의 포인터. 혹은 NULL.

dwFlags

[in] 다음의 플래그의 제로 혹은 그 이상의 비트마다 편성.

플래그 설명
AM_GBF_NOTASYNCPOINT: 이 샘플은 동기 포인트는 아니다. 이 샘플에는 동적인 포맷 변경은 허가되지 않는다. 오버레이 믹서 또는 VMR 로 불려 가는 경우, 이 플래그는, 돌려받는 버퍼에는 직전에 송신된 이미지와 같은 이미지가 저장 되고 있는 것을 의미하고 있다.
AM_GBF_PREVFRAMESKIPPED 이 샘플은 불연속의 직후이다. 비디오 렌더러만이 이 플래그를 사용한다.
AM_GBF_NOWAIT 버퍼가 유효하게 되는 것을 기다려서는 안된다.
AM_GBF_NODDSURFACELOCK Video Mixing Renderer 필터 7 (Microsoft® Windows® XP 마셔)으로 사용해, 잠금 해제되고 있는 DirectDraw 표면을 요구한다. 더 자세한 정보는, 「Direct3D 렌더링 타겟의 조작」을 참조할것.

반환값

HRESULT 값을 돌려준다. 가능한 값은 다음의 일람대로이다.

설명
S_OK 성공.
VFW_E_NOT_COMMITTED 할당자는 데코밋트이다.
VFW_E_TIMEOUT 타임 아웃.

주의

디폴트에서는, 이 메서드는 프리 샘플을 이용할 수 있을 때까지, 혹은 할당자가 데코밋트가 될 때까지 동작을 정지한다. 호출원이 AM_GBF_NOWAIT 플래그를 지정해, 샘플을 이용할 수 없는 경우, 할당자는 VFW_E_TIMEOUT 값을 되돌리자 마자 돌아간다. 그러나, 할당자에 의한 이 플래그의 지원은 필수는 아니다.

ppBuffer 로 돌려받는 샘플은 이용 가능한 버퍼 포인터를 갖는다. 호출원래는, 타임 스탬프, 미디어 타임, 또는 동기 포인트 프로퍼티와 같은, 샘플의 다른 프로퍼티를 설정할 책임을 갖는다. 더 자세한 정보는, 「IMediaSample 」를 참조할것.

pStartTime 인수와 pEndTime 인수는 샘플에 적용되지 않는다. 할당자는 이러한 값을 사용해 어느 버퍼를 취득했는지를 확인하는 경우가 있다. 예를 들어,비디오 렌더러 필터는 이러한 값을 사용해 Microsoft® DirectDraw® 표면간의 변환의 동기를 잡는다. 샘플의 타임 스탬프를 설정하려면 IMediaSample::SetTime 메서드를 호출하는 것.

이 메서드를 호출하기 전에 IMemAllocator::Commit 메서드를 호출해야 한다. IMemAllocator::Decommit 메서드가 불려 간 다음에는, 이 호출은 실패한다. 메서드가 성공하면IMediaSample 인터페이스에 미처리의 참조 카운트가 남는다. 다 사용했으면 , 인터페이스를 반드시 릴리즈 하는 것.

참조

↑TOP