CBaseControlVideo.GetStaticImage 메서드
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
파생 클래스가 재정의하는 순수 가상 메서드입니다.
구문
virtual HRESULT GetStaticImage(
long *pBufferSize,
long *pDIBImage
) = 0;
매개 변수
-
pBufferSize
-
출력 버퍼의 크기에 대한 포인터입니다.
-
pDIBImage
-
출력 버퍼에 대한 포인터입니다.
반환 값
HRESULT 값을 반환합니다.
설명
IBasicVideo 인터페이스를 통해 애플리케이션은 메모리 버퍼에 현재 이미지의 복사본을 제공하도록 요청할 수 있습니다(일부 렌더러가 이를 지원하지 않는 경우 E_NOTIMPL 반환할 수 있습니다). 파생 클래스는 이미지를 검색하는 방법을 결정합니다. 애플리케이션이 CBaseControlVideo::GetStaticImage를 호출할 때 파생 클래스가 이를 구현하기 위해 재정의해야 하는 이 순수 가상 메서드를 호출합니다. CBaseControlVideo::GetCurrentImage 멤버 함수에서도 호출됩니다.
클래스는 이미지를 포함하는 샘플을 제공할 수 있는 도우미 멤버 함수 인 CBaseControlVideo::CopyImage를 제공하며, 멤버 함수는 해당 섹션의 관련 섹션(현재 원본 사각형 기반)을 애플리케이션에서 제공하는 출력 버퍼에 복사합니다.
다음 예제에서는 파생 클래스에서 이 멤버 함수의 구현을 보여 줍니다. 이 예제에서 m_pRenderer CBaseVideoRenderer에서 파생된 클래스의 개체를 보유합니다.
// Return a copy of the current image in the video renderer
HRESULT CVideoText::GetStaticImage(long *pBufferSize,long *pDIBImage)
{
// Get any sample the renderer may be holding.
IMediaSample *pMediaSample = m_pRenderer->GetCurrentSample();
if (pMediaSample == NULL) {
return E_UNEXPECTED;
}
// Call the base class helper method to do the work.
HRESULT hr = CopyImage(pMediaSample, // Buffer containing image
&m_pRenderer->m_mtIn, // Type representing bitmap
pBufferSize, // Size of buffer for DIB
(BYTE*) pDIBImage); // Data buffer for output
pMediaSample->Release();
return hr;
}
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|
라이브러리 |
|