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

📄 mtwreg_video_render.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 "mtwreg_video_render.h"#if defined(UMC_ENABLE_MTWGX_VIDEO_RENDER)#include "vm_debug.h"#include "umc_video_data.h"#include "windows.h"namespace UMC{MTWREGVideoRender::MTWREGVideoRender():    m_pvVideoMemPtr(NULL),    m_uiScreenWidth(640),    m_uiScreenHeight(480),    m_uiPitch(640 * 2){} // MTWREGVideoRender::MTWREGVideoRender():MTWREGVideoRender::~MTWREGVideoRender(){    Close();} // MTWREGVideoRender::~MTWREGVideoRender()// Terminate the renderStatus MTWREGVideoRender::Close(){    Status umcRes = MobileVideoRender::Close();    m_pvVideoMemPtr = NULL;    return umcRes;} // Status MTWREGVideoRender::Close()// Initialize the render, return false if failed, call Close anywayStatus MTWREGVideoRender::Init(MediaReceiverParams* pInit){    Status umcRes = UMC_OK;    VideoRenderParams *pParams = DynamicCast<VideoRenderParams>(pInit);    if (NULL == pParams)        umcRes = UMC_NULL_PTR;    if (UMC_OK == umcRes)        umcRes = MobileVideoRender::Init(pInit);    HKEY hKey = 0;    if (UMC_OK == umcRes &&        ERROR_SUCCESS != RegOpenKeyEx(HKEY_LOCAL_MACHINE,                                      VM_STRING("LCDDriver"),                                      0,                                      KEY_QUERY_VALUE,                                      &hKey))    {        umcRes = UMC_OPERATION_FAILED;    }    DWORD dwBufSize = sizeof(m_pvVideoMemPtr);    if (UMC_OK == umcRes &&        ERROR_SUCCESS != RegQueryValueEx(hKey,                                         VM_STRING("BaseFrameAddr"),                                         NULL,                                         NULL,                                         (LPBYTE)&m_pvVideoMemPtr,                                         &dwBufSize))    {        umcRes = UMC_OPERATION_FAILED;    }    if (0 != hKey)        RegCloseKey(hKey);    if (UMC_OK != umcRes)        Close();    return umcRes;} // Status MTWREGVideoRender::Init(MediaReceiverParams* pInit)Status MTWREGVideoRender::LockInputBuffer(MediaData* pInData){    Status umcRes = UMC_OK;    VideoData *pVideoData = DynamicCast<VideoData>(pInData);    if (NULL == pVideoData)        umcRes = UMC_NULL_PTR;    if (UMC_OK == umcRes && NULL == m_pvVideoMemPtr)        umcRes = UMC_NOT_INITIALIZED;    if (UMC_OK == umcRes)    {        while (VM_TIMEOUT == m_ReadySema.Wait(1000))        {            if(m_bStopFlag || m_dfFrameTime == -1.0)            {                umcRes = UMC_END_OF_STREAM;                break;            }        }    }    if (UMC_OK == umcRes)    {        pVideoData->SetDest(m_pvVideoMemPtr);        pVideoData->SetPitch(m_uiPitch);    }    else    {        pVideoData->SetDest(NULL);        pVideoData->SetPitch(0);    }    return umcRes;} // Status MTWREGVideoRender::LockInputBuffer(MediaData* pInData)Status MTWREGVideoRender::UnLockInputBuffer(MediaData *pInData, Status StreamStatus){    Status umcRes = UMC_OK;    VideoData* pVideoData = DynamicCast<VideoData, MediaData>(pInData);    if (NULL == pVideoData)        umcRes = UMC_NULL_PTR;    if (UMC_OK == umcRes)    {        double dfEndTime;        pVideoData->GetTime(m_dfFrameTime, dfEndTime);        umcRes = m_DoneSema.Signal();    }    if (UMC_END_OF_STREAM == StreamStatus)        Stop();    return umcRes;} // Status MTWREGVideoRender::UnLockInputBuffer(MediaData *pInData, Status StreamStatus)} // namespace UMC#endif // defined(UMC_ENABLE_MTWGX_VIDEO_RENDER)

⌨️ 快捷键说明

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