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

📄 videorendereroverlay.cpp

📁 ZPAV (H265) PC(X86) demo ZPAV (H265) 是 音视频 压缩解压 协议
💻 CPP
字号:

/*
///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//   Copyright (C) 2006-2008  Beijing,  pengzhen (pengzhenxp@yahoo.com.cn)   //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////
*/

//#include "stdafx.h"


#include "VideoRendererOverlay.h"
#include "VideoRendererOverlay1.h"
#include "VideoRendererOverlay1.cpp"
#include "VideoRendererOverlay2.cpp"
#include "VideoRendererOverlay3.cpp"


MediaVideoRendererOverlay :: MediaVideoRendererOverlay()
{ 
	m_pdd=NULL;
	m_pddsPrimary=NULL;
	m_pddsOverlay=NULL;
	m_pddClipper=NULL;
	//DrawEmpty() ; 
};


MediaVideoRendererOverlay :: ~MediaVideoRendererOverlay()
{
	DrawFree( ) ; 
}

void MediaVideoRendererOverlay :: DrawEmpty()
{ 
	
	m_pdd=NULL;
	m_pddsPrimary=NULL;
	m_pddsOverlay=NULL;
	m_pddClipper=NULL;
	
	memset( &m_ovfx , 0x00, sizeof(m_ovfx) );
	
	m_dwUpdateFlags=FALSE; 
	
	memset( &m_rsRect , 0x00, sizeof(m_rsRect) );
	memset( &m_rdRect , 0x00, sizeof(m_rdRect) );
	
	memset( &m_rsRect_op , 0x00, sizeof(m_rsRect_op) );
	memset( &m_rdRect_op , 0x00, sizeof(m_rdRect_op) );
	
	
    m_rdWid  =1 ;
    m_rdHei  =1 ;
	
	m_hWnd   =NULL;
    m_width  =0 ;
    m_pitch  =0 ;
    m_height =0 ;
	
	m_pSurfacePhyAddress = NULL;
	m_pSurfaceAddress = NULL ;
	
    m_iCurCardOverlayNo=0 ;
    m_iCurCardOverlayNo_Bak=0 ;
    m_iCurCardFullFlag=FALSE ;
	
	//m_bIsOverlayFlag =FALSE ;
	//m_bIsOverlayRGBFlag =FALSE ;
	
	//memset( m_rsRect_bak , 0x00, sizeof(m_rsRect_bak) );
#ifdef __INSERT_FONT__
	//memset( m_pFontPos , 0x00, sizeof(m_pFontPos) );
	//memset( m_pFontView , 0x00, sizeof(m_pFontView) );
#endif //__INSERT_FONT__
	
	
}


void MediaVideoRendererOverlay::DrawFree( ) 
{

	//if( m_pSurfaceAddress )
	//ZeroMemory( m_pSurfaceAddress, m_pitch*m_height );

	if(lpdd) 
	{
		lpdd->RestoreAllSurfaces();
		lpdd->RestoreDisplayMode();
		lpdd->SetCooperativeLevel(NULL, DDSCL_NORMAL);
	}
	
	if(lpddsOverlay) 
	{
		lpddsOverlay->Restore();	
	}
	
	if(lpddsPrimary) 
	{
		lpddsPrimary->Restore();
	}
	
	DestroyDraws() ;

}


BOOL MediaVideoRendererOverlay::DrawInit(int width, int height) 
{	
	
	//DrawFree( ) ; 
	DrawEmpty() ;

	m_ovfx.dwSize     = sizeof(DDOVERLAYFX);
	m_dwUpdateFlags = DDOVER_SHOW | DDOVER_DDFX | DDOVER_KEYDESTOVERRIDE ;

	m_bIsOverlayFlag =  FALSE ; 

	m_width  = width;
	m_pitch  = width*2;
	m_height = height;

	m_rsRect.left   = 0; 
	m_rsRect.top    = 0; 
	m_rsRect.right  = m_width;
	m_rsRect.bottom = m_height; 
	
	m_rdRect_op = m_rdRect = m_rsRect_op = m_rsRect; 

	/*
	* create primary 
	*/	
	if(! CreatePdd( ) )
	{
		DestroyDraws() ; return FALSE; 
	}

	/*
	* create primary 
	*/	
	if(! CreatePrimary( ) )
	{
		DestroyDraws() ; return FALSE; 
	}

	/*
	* get  RGB format 
	*/
    if(m_iColorFormat==-1) GetRGBFormat()  ;

	/*
	* create  Overlay
	*/
	if(! CreateOverlay( width, height ) )
	{
		DestroyDraws() ; return FALSE; 
	}

	/*
	* Create a Clipper to avoid 
	* the overlay staying on top
	*/
#define CreateMyClipper() m_pdd->CreateClipper(0, &lpddClipper, NULL)
	
	if(FAILED( CreateMyClipper() )) 
	{ 
		DestroyDraws() ; return FALSE; 
	}


	if( !m_bIsOverlayRGBFlag ) m_bIsOverlayFlag =  TRUE ; 

	return TRUE ;
	
}





⌨️ 快捷键说明

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