⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 null_video_renderer.cpp

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 CPP
字号:
/*////                  INTEL CORPORATION PROPRIETARY INFORMATION//     This software is supplied under the terms of a license agreement or//     nondisclosure agreement with Intel Corporation and may not be copied//     or disclosed except in accordance with the terms of that agreement.//       Copyright(c) 2003-2005 Intel Corporation. All Rights Reserved.//*/#include "vm_debug.h"#include "null_video_renderer.h"namespace UMC{NULLVideoRender::NULLVideoRender(void){    m_pb = NULL;    m_nPitch = 0;} // NULLVideoRender::NULLVideoRender(void)NULLVideoRender::~NULLVideoRender(void){    Close();} // NULLVideoRender::~NULLVideoRender(void)Status NULLVideoRender::SetFullScreen(ModuleContext& /*rContext*/, bool /*full*/){    return UMC_OK;} // Status NULLVideoRender::SetFullScreen(ModuleContext& rContext, bool full)enum{    ALIGN                       = 128};Status NULLVideoRender::Init(MediaReceiverParams* pInit){    Status umcRes = UMC_OK;    VideoRenderParams* pParams = DynamicCast<VideoRenderParams>(pInit);    size_t nPitch, nImageSize;    vm_var32 l;    Close();    // Create buffers    switch (pParams->color_format)    {    case RGB32:        nPitch = align_value<size_t> (pParams->info.width * 4, ALIGN);        nImageSize = nPitch * pParams->info.height;        break;    case RGB24:        nPitch = align_value<size_t> (pParams->info.width * 3, ALIGN);        nImageSize = nPitch * pParams->info.height;        break;    case RGB565:    case RGB555:    case RGB444:    case YUY2:    case UYVY:        nPitch = align_value<size_t> (pParams->info.width * 2, ALIGN);        nImageSize = nPitch * pParams->info.height;        break;    case YV12:    case NV12:        nPitch = align_value<size_t> (pParams->info.width, ALIGN);        nImageSize = (nPitch * pParams->info.height * 3) / 2;        break;    default:        return UMC_BAD_FORMAT;    };    m_pb = new vm_byte[nImageSize * MIN_FRAME_BUFFERS + ALIGN];    if (NULL == m_pb)        return UMC_FAILED_TO_ALLOCATE_BUFFER;    m_Buffers[0].surface = align_pointer<void *> (m_pb, ALIGN);    for (l = 1;l < MIN_FRAME_BUFFERS;l += 1)        m_Buffers[l].surface = ((vm_byte *) m_Buffers[l - 1].surface) + nImageSize;    m_iBuffersNum = MIN_FRAME_BUFFERS;    m_nPitch = nPitch;    if (UMC_OK == umcRes)        umcRes = BaseVideoRender::Init(pInit);    return umcRes;} // Status NULLVideoRender::Init(VideoRenderParams &rInit)Status NULLVideoRender::Close(void){    BaseVideoRender::Close();    if (m_pb)        delete m_pb;    m_pb = NULL;    m_nPitch = 0;    return UMC_OK;} // Status NULLVideoRender::Close(void)int NULLVideoRender::LockSurface(unsigned char** vidmem){    // check error(s)    if (NULL == vidmem)        return 0;    // we have free video memory    if (m_iWriteIndex < 0)        return 0;    *vidmem = ((vm_byte *) m_Buffers[m_iWriteIndex].surface);    return ((int) m_nPitch);} // int NULLVideoRender::LockSurface( unsigned char** vidmem)int NULLVideoRender::UnlockSurface( unsigned char**){    return UMC_OK;} // int NULLVideoRender::UnlockSurface( unsigned char**)Status NULLVideoRender::RenderFrame(void){    m_hFreeBufSema.Signal();    return UMC_OK;} // Status NULLVideoRender::RenderFrame(void)} // Namespace UMC

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -