다음을 통해 공유


ISampleGrabber::GetCurrentBuffer 메서드

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

참고

[더 이상 사용되지 않습니다. 이 API는 향후 Windows 릴리스에서 제거될 수 있습니다.]

 

GetCurrentBuffer 메서드는 최신 샘플과 연결된 버퍼의 복사본을 검색합니다.

구문

HRESULT GetCurrentBuffer(
  [in, out] long *pBufferSize,
  [out]     long *pBuffer
);

매개 변수

pBufferSize [in, out]

버퍼 크기에 대한 포인터입니다. pBufferNULL인 경우 이 매개 변수는 필요한 버퍼 크기(바이트)를 받습니다. pBufferNULL이 아닌 경우 이 매개 변수를 버퍼 크기(바이트)와 동일하게 설정합니다. 출력 시 매개 변수는 버퍼에 복사된 바이트 수를 받습니다. 이 값은 버퍼 크기보다 작을 수 있습니다.

pBuffer [out]

pBufferSize 또는 NULL 크기의 바이트 배열에 대한 포인터입니다. 이 매개 변수가 NULL이 아니면 현재 버퍼가 배열에 복사됩니다. 이 매개 변수가 NULL이면 pBufferSize 매개 변수는 필요한 버퍼 크기를 받습니다.

반환 값

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

반환 코드 설명
E_INVALIDARG
샘플이 버퍼링되지 않습니다. ISampleGrabber::SetBufferSamples를 호출합니다.
E_OUTOFMEMORY
지정된 버퍼가 충분히 크지 않습니다.
E_POINTER
NULL 포인터 인수입니다.
S_OK
성공.
VFW_E_NOT_CONNECTED
필터가 연결되어 있지 않습니다.
VFW_E_WRONG_STATE
필터가 아직 샘플을 받지 못했습니다. 샘플을 제공하려면 그래프를 실행하거나 일시 중지합니다.

 

설명

버퍼링을 활성화하려면 값이 TRUEISampleGrabber::SetBufferSamples를 호출합니다.

이 메서드를 두 번 호출합니다. 첫 번째 호출에서 pBufferNULL로 설정합니다. 버퍼의 크기는 pBufferSize로 반환됩니다. 그런 다음 배열을 할당하고 메서드를 다시 호출합니다. 두 번째 호출에서 pBufferSize에서 배열의 크기를 전달하고 pBuffer에서 배열의 주소를 전달합니다. 배열이 충분히 크지 않으면 메서드는 E_OUTOFMEMORY 반환합니다.

pBuffer 매개 변수는 포인터로 형식화되지만 버퍼의 내용은 데이터 형식에 따라 달라집니다. ISampleGrabber::GetConnectedMediaType을 호출하여 형식의 미디어 형식을 가져옵니다.

필터 그래프가 실행되는 동안에는 이 메서드를 호출하지 마세요. 필터 그래프가 실행되는 동안 샘플 그래버 필터는 새 샘플을 받을 때마다 버퍼의 내용을 덮어씁니다. 이 방법을 사용하는 가장 좋은 방법은 첫 번째 샘플을 받은 후 그래프를 중지하는 "원샷 모드"를 사용하는 것입니다. 원샷 모드를 설정하려면 ISampleGrabber::SetOneShot을 호출합니다.

필터는 사전 등록 샘플을 버퍼링하지 않거나 AM_SAMPLE2_PROPERTIES 구조체의 dwStreamId 멤버가 AM_STREAM_MEDIA 이외의 항목인 샘플을 버퍼링하지 않습니다.

참고

헤더 파일 Qedit.h는 버전 7 이후의 Direct3D 헤더와 호환되지 않습니다.

 

참고

Qedit.h를 가져오려면 Windows Vista용 Microsoft Windows SDK 업데이트를 다운로드하고 3.0을 .NET Framework. Qedit.h는 Windows 7 및 .NET Framework 3.5 서비스 팩 1용 Microsoft Windows SDK 사용할 수 없습니다.

 

요구 사항

요구 사항
헤더
Qedit.h
라이브러리
Strmiids.lib

추가 정보

샘플 그래버 사용

ISampleGrabber 인터페이스