다음을 통해 공유


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;
}

요구 사항

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

추가 정보

CBaseControlVideo 클래스