📄 null_video_renderer.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 + -