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