Compartilhar via


CBaseControlVideo::GetStaticImage (Compact 2013)

3/26/2014

A pure virtual method that derived classes override.

Syntax

virtual HRESULT GetStaticImage(
  long* pBufferSize,
  long* pDIBImage
) PURE;

Parameters

  • pBufferSize
    Size of the output buffer.
  • pDIBImage
    Pointer to output buffer.

Return Value

Returns an HRESULT value.

Remarks

Through the IBasicVideo Interface interface, an application can request that it be given a copy of the current image in a memory buffer (some renderers can return E_NOTIMPL to this if they do not support it).

The derived class determines how to retrieve the image. When the application calls CBaseControlVideo::GetStaticImage, it calls this pure virtual method that the derived class should override to implement it. This is also called by the CBaseControlVideo::GetCurrentImage member function.

The class provides a helper member function, CBaseControlVideo::CopyImage, that can be given a sample that contains an image, and the member function will copy the relevant section of it (based on the current source rectangle) into the output buffer supplied by the application.

DirectShow applications and DirectShow filters have different include file and link library requirements.

The following example from the video renderer sample, SampVid, demonstrates an implementation of this member function in a derived class. In this example, m_pRenderer holds an object of a class derived from CBaseVideoRenderer Class.

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

Requirements

Header

dshow.h,
Streams.h

Library

ole32.lib,
Ole32auth.lib,
Strmbase.lib,
Strmiids.lib,
uuid.lib

See Also

Reference

CBaseControlVideo Class