CBaseControlVideo.GetStaticImage 方法

[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 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 類別