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

ISampleGrabber::GetCurrentBuffer

GetCurrentBuffer 메서드는, 최신 샘플에 관련된 버퍼의 복사를 얻어온다.

구문

HRESULT GetCurrentBuffer(
  long *pBufferSize,
  long *pBuffer
);

파라미터

pBufferSize

[in, out] 버퍼의 사이즈의 포인터. pBuffer 가 NULL 의 경우, 이 인수는 필요한 버퍼 사이즈를 받는다. pBuffer 가 NULL 가 아닌 경우, 이 인수에는 버퍼의 사이즈를 설정한다. 출력으로는, 이 인수는 버퍼에 복사 되는 데이터의 사이즈를 받는다. 이 사이즈는, 버퍼의 사이즈보다 작은 경우가 있다.

pBuffer

[out] 샘플의 복사를 받는 버퍼의 포인터. 또는 NULL.

반환값

다음의 몇개의 값을 돌려준다.

반환 코드 설명
E_INVALIDARG 샘플은 버퍼링되지 않다.
E_OUTOFMEMORY 지정된 버퍼의 크기가 불충분.
E_POINTER NULL 포인터 인수.
S_OK 성공.
VFW_E_NOT_CONNECTED 필터가 접속되지 않다.
VFW_E_WRONG_STATE 필터가 아직 샘플을 받지 않았다. 샘플을 출력하려면 , 그래프를 실행하는지 포즈 한다.

주의

버퍼링을 액티브하게 하려면 , 값 TRUE 로 ISampleGrabber::SetBufferSamples 를 호출한다.

이 메서드는 2 회 호출한다. 최초의 호출에서는,pBuffer 를 NULL 로 설정한다. 버퍼의 사이즈는,pBufferSize 에 의해 반환된다. 다음에, 버퍼를 할당해, 다시 메서드를 호출한다. 2 번째의 호출에서는, 버퍼의 사이즈를 pBufferSize 로 건네주어, 버퍼의 주소를 pBuffer 로 건네준다. 지정한 버퍼의 크기가 충분하지 않으면, 이 메서드는 E_OUTOFMEMORY 를 돌려준다.

필터는,프리롤 샘플 , 또는 AM_SAMPLE2_PROPERTIES 구조체의 dwStreamId 멤버가 AM_STREAM_MEDIA 가 아닌 샘플은 버퍼링 하지 않는다.

참조

↑TOP