亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? videorendererrgb.cpp

?? < VC++視頻音頻開發(fā)>> 這本書的源碼
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/**************************************************************************************
 *                                                                                    *
 *                                                                                    *
 **************************************************************************************/

#include "VideoRendererRGB.h"

/*
 * 包括直接顯示
 *
 */

#include <ddraw.h>

/*
 * RGB視頻補(bǔ)償類
 */


MediaVideoRendererRGB::MediaVideoRendererRGB()
{
	this->subtitler    = NULL;

	this->lpdd         = NULL;
	this->lpddClipper  = NULL;
	this->lpddsPrimary = NULL;
	this->lpddsBack    = NULL;

	this->bpp          = 0;
	this->videoMode    = VIDEO_MODE_NONE;
}

MediaVideoRendererRGB::~MediaVideoRendererRGB()
{

}

/*
 * 媒體項(xiàng)方法
 */

media_type_t  MediaVideoRendererRGB::GetType()
{
	return MEDIA_TYPE_VIDEO_RENDERER;
}

char         *MediaVideoRendererRGB::GetName()
{
	return "Standard RGB Video Renderer";
}

MP_RESULT MediaVideoRendererRGB::Connect(MediaItem *item)
{
	/*
	 * 只接受字幕
	 *
	 */

	if(item && item->GetType() == MEDIA_TYPE_SUBTITLER) {

		/*
		 * 接受字幕源
		 */

		this->subtitler = (MediaItemSubtitler *) item;

		return MP_RESULT_OK;
	}

	return MP_RESULT_ERROR;
}

MP_RESULT MediaVideoRendererRGB::ReleaseConnections()
{
	if(this->subtitler)
		this->subtitler = NULL;

	return MP_RESULT_OK;
}


DWORD         MediaVideoRendererRGB::GetCaps()
{
	return 0;
}

MP_RESULT     MediaVideoRendererRGB::Configure(HINSTANCE hInstance, HWND hwnd)
{
	return MP_RESULT_ERROR;
}

/*
 * 視頻補(bǔ)償方法
 */

MP_RESULT MediaVideoRendererRGB::Init(HWND hwnd, unsigned int width, unsigned int height)
{
	HRESULT        ddrval;
	DDSURFACEDESC2 ddsd;

	if(hwnd && width > 0 && height > 0) {

		/*
		 * 產(chǎn)生主要的直接顯示對(duì)象
		 */

		ddrval = DirectDrawCreateEx(NULL, (void **) &this->lpdd, IID_IDirectDraw7, NULL);

		if(FAILED(ddrval)) {
	
			return MP_RESULT_ERROR;
		}

		ddrval = lpdd->SetCooperativeLevel(hwnd, DDSCL_NORMAL);

		if(FAILED(ddrval)) {

			this->lpdd->Release();
			this->lpdd = NULL;
			
			return MP_RESULT_ERROR;
		}
	
		/*
		 * 產(chǎn)生主界面Create the primary surface
		 */

		memset( &ddsd, 0, sizeof(ddsd) );
	    ddsd.dwSize     = sizeof( ddsd );

	    ddsd.dwFlags           = DDSD_CAPS;
		ddsd.ddsCaps.dwCaps    = DDSCAPS_PRIMARYSURFACE | DDSCAPS_VIDEOMEMORY;

	    ddrval = this->lpdd->CreateSurface(&ddsd, &this->lpddsPrimary, NULL);

		if(FAILED(ddrval)) {

			this->lpdd->Release();
			this->lpdd = NULL;

			return MP_RESULT_ERROR;
		}

		/*
		 * 設(shè)置剪輯
		 */

		ddrval = this->lpdd->CreateClipper(0, &this->lpddClipper, NULL);

		if(FAILED(ddrval)) {

			this->lpddsPrimary->Release();
			this->lpddsPrimary = NULL;
			
			this->lpdd->Release();
			this->lpdd = NULL;

			return MP_RESULT_ERROR;
		}

	    ddrval = this->lpddClipper->SetHWnd(0, hwnd);

	    if(FAILED(ddrval)) {

			this->lpddsPrimary->Release();
			this->lpddsPrimary = NULL;
			
			this->lpdd->Release();
			this->lpdd = NULL;

			return MP_RESULT_ERROR;
		}

		ddrval = this->lpddsPrimary->SetClipper(this->lpddClipper);

		if(ddrval != DD_OK) {

			this->lpddsPrimary->Release();
			this->lpddsPrimary = NULL;
			
			this->lpdd->Release();
			this->lpdd = NULL;

			return MP_RESULT_ERROR;
		}
	
		/*
		 * 最后產(chǎn)生背景Finally Create Back Surface
		 */
	
		ZeroMemory(&ddsd, sizeof(ddsd));
    	ddsd.dwSize     = sizeof(ddsd);
			
		ddsd.dwFlags        = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
		ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
		
		ddsd.dwWidth  = width;
		ddsd.dwHeight = height;

		if(this->lpdd->CreateSurface(&ddsd, &this->lpddsBack, NULL) != DD_OK) {
			this->lpddsPrimary->Release();
			this->lpddsPrimary = NULL;
			
			this->lpdd->Release();
			this->lpdd = NULL;

			return MP_RESULT_ERROR;
			
		}

		this->width  = width;
		this->height = height;

		this->hwndPlayback = hwnd;

		/*
		 * 獲取視頻模式
		 */

		ZeroMemory(&ddsd, sizeof(DDSURFACEDESC2));
		ddsd.dwSize     = sizeof(DDSURFACEDESC2);
		
		ddrval = this->lpddsBack->Lock(NULL, &ddsd, DDLOCK_SURFACEMEMORYPTR | DDLOCK_WRITEONLY | DDLOCK_WAIT, NULL);

		if(FAILED(ddrval)) {

			return MP_RESULT_ERROR;
		}

		this->lpddsBack->Unlock(NULL);

		switch(ddsd.ddpfPixelFormat.dwRGBBitCount) {

		case 8:
			return MP_RESULT_ERROR;
			break;

		case 16:
			this->bpp       = 2;
			this->videoMode = VIDEO_MODE_RGB16;
			break;

		case 24:
			this->bpp       = 3;
			this->videoMode = VIDEO_MODE_RGB24;
			break;

		case 32:
			this->bpp       = 4;
			this->videoMode = VIDEO_MODE_RGB32;
			break;
		}

		return MP_RESULT_OK;
	}

	return MP_RESULT_ERROR;
}

/*
 * 為全屏顯示初始化補(bǔ)償器
 */

MP_RESULT MediaVideoRendererRGB::InitFullscreen(HWND hwnd, unsigned int width, unsigned int height)
{
	if(hwnd && width > 0 && height > 0) {
	
		HRESULT         ddrval;
	    DDSURFACEDESC2  ddsd;
    
	    ddrval = DirectDrawCreateEx(NULL, (VOID**)&this->lpdd, IID_IDirectDraw7, NULL);
		
		if( FAILED(ddrval))
			return MP_RESULT_ERROR;
    
	    /*
	     * 設(shè)置獨(dú)占的合作模式Set Exclusive Cooperative Mode
	     */

		ddrval = this->lpdd->SetCooperativeLevel(hwnd, DDSCL_NORMAL); //DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
		
		if( FAILED(ddrval)) {

	        this->lpdd->Release();
			this->lpdd = NULL;

			return MP_RESULT_ERROR;
		}

		/*
		 * 全屏
		 *
		 */

		DDSURFACEDESC2 ddDesc;

		memset(&ddDesc, 0, sizeof(DDSURFACEDESC2));
		ddDesc.dwSize    = sizeof(DDSURFACEDESC2);


		ddrval = this->lpdd->GetDisplayMode(&ddDesc);

		if(FAILED(ddrval)) {

	        this->lpdd->Release();
			this->lpdd=NULL;
			return MP_RESULT_ERROR;;
		}

		/*
		 * 存貯全屏模式
		 */

		this->fullscreenWidth  = ddDesc.dwWidth;
		this->fullscreenHeight = ddDesc.dwHeight;

		this->fullscreenVideoHeight = height * this->fullscreenWidth / width;

		/*
		 * 產(chǎn)生主界面
		 */
   
	    ZeroMemory(&ddsd, sizeof(DDSURFACEDESC2));
		
		ddsd.dwSize  = sizeof(DDSURFACEDESC2);
		ddsd.dwFlags = DDSD_CAPS;
		ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_VIDEOMEMORY; 
    
		ddrval = this->lpdd->CreateSurface(&ddsd, &this->lpddsPrimary, NULL );

		if(FAILED(ddrval)) {

	        this->lpdd->Release();
			this->lpdd=NULL;
			return MP_RESULT_ERROR;;
		}

		/*
		 * 得到后緩沖
		 *
		 */

		ZeroMemory(&ddsd, sizeof(ddsd));
    	ddsd.dwSize     = sizeof(ddsd);
			
		ddsd.dwFlags        = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
		ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
		
		ddsd.dwWidth  = width;
		ddsd.dwHeight = height;

		if(this->lpdd->CreateSurface(&ddsd, &this->lpddsBack, NULL) != DD_OK) {
			this->lpddsPrimary->Release();
			this->lpddsPrimary = NULL;
			
			this->lpdd->Release();
			this->lpdd = NULL;

			return MP_RESULT_ERROR;
			
		}

		/*
		 * 為防止疊加繼續(xù)停留在頂部產(chǎn)生一個(gè)剪輯
		 */

	    ddrval = this->lpdd->CreateClipper(0, &this->lpddClipper, NULL);

		if(FAILED(ddrval)) {

			return MP_RESULT_ERROR;
		}
	
	    ddrval = this->lpddClipper->SetHWnd(0, hwnd);

		if(FAILED(ddrval)) {

			return MP_RESULT_ERROR;
		}
	
	    ddrval = this->lpddsPrimary->SetClipper(this->lpddClipper);

		if(FAILED(ddrval)) {

			return MP_RESULT_ERROR;
		}
		/*
		 * 停止主的Black out the primary
		 */

		this->width  = width;
		this->height = height;

		this->hwndPlayback = hwnd;

		return MP_RESULT_OK;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av在线这里只有精品| 久久九九影视网| 欧美性大战xxxxx久久久| 色综合久久88色综合天天6 | 91网站在线播放| 不卡av免费在线观看| 成人精品gif动图一区| 国产不卡高清在线观看视频| 国产精品一区二区在线观看网站| 国产一区二区伦理| 高清av一区二区| 色综合久久久久综合| 欧美在线观看视频一区二区| 欧美性猛交xxxx乱大交退制版 | 欧美va天堂va视频va在线| 精品少妇一区二区三区在线视频 | 欧美aⅴ一区二区三区视频| 日韩精品一级二级 | 欧美综合天天夜夜久久| 欧美视频在线一区二区三区| 欧美日韩国产色站一区二区三区| 欧美乱熟臀69xxxxxx| 欧美一区二区三区爱爱| 欧美精品一区二区三区一线天视频| 久久毛片高清国产| 中文字幕一区二区三中文字幕| 综合久久国产九一剧情麻豆| 亚洲国产一区二区三区| 免播放器亚洲一区| 国产成人午夜电影网| 色婷婷狠狠综合| 欧美日韩国产经典色站一区二区三区| 日韩美女在线视频 | 国产一区二区三区高清播放| 成人av在线观| 欧美日本不卡视频| 久久毛片高清国产| 一区二区三区精品久久久| 美女久久久精品| 成人av电影在线观看| 欧美人成免费网站| 国产日韩欧美在线一区| 亚洲精品写真福利| 美女在线视频一区| 91丝袜国产在线播放| 欧美一级高清大全免费观看| 国产精品久久毛片a| 婷婷成人激情在线网| 国产69精品一区二区亚洲孕妇| 欧美日韩中文字幕一区| 久久精品亚洲麻豆av一区二区 | 亚洲欧洲精品一区二区三区| 日韩精品电影在线| jvid福利写真一区二区三区| 欧美久久免费观看| 一色桃子久久精品亚洲| 久久精品国产成人一区二区三区| 色综合色综合色综合色综合色综合| 91精品国产麻豆| 亚洲蜜桃精久久久久久久| 精品一区二区综合| 欧美色涩在线第一页| 国产欧美一区二区在线| 日本最新不卡在线| 色国产综合视频| 中文字幕欧美区| 久久福利视频一区二区| 欧美中文字幕一区二区三区 | 国产精品丝袜久久久久久app| 日本不卡123| 欧美曰成人黄网| 国产精品人妖ts系列视频| 欧美a级一区二区| 欧美视频一区在线观看| 中文字幕一区二区三| 国产精品影视网| 日韩欧美色综合| 日韩成人免费电影| 欧美日韩国产系列| 亚洲一区影音先锋| 色综合色综合色综合色综合色综合| 国产日韩欧美一区二区三区综合| 免费在线观看一区二区三区| 在线亚洲精品福利网址导航| 国产精品国产三级国产专播品爱网 | 国产午夜精品美女毛片视频| 爽好久久久欧美精品| 欧美日韩一区高清| 亚洲综合精品久久| 色噜噜夜夜夜综合网| 中文字幕字幕中文在线中不卡视频| 国产高清亚洲一区| 欧美电影免费提供在线观看| 五月激情综合网| 欧美猛男gaygay网站| 亚洲成人资源网| 欧美日韩在线播放一区| 亚洲国产你懂的| 欧美三级乱人伦电影| 亚洲一区电影777| 欧美日韩国产成人在线免费| 亚洲国产cao| 4438x成人网最大色成网站| 日韩精品免费视频人成| 欧美一卡二卡在线| 免费高清不卡av| 精品国产一区二区三区忘忧草| 九一久久久久久| 欧美精品一区二区三区在线| 国产麻豆日韩欧美久久| 日本一区二区三区电影| av男人天堂一区| 亚洲综合丝袜美腿| 欧美美女黄视频| 极品少妇xxxx精品少妇| 久久亚洲一区二区三区四区| 国产又黄又大久久| 国产精品久久久99| 在线一区二区观看| 日本不卡不码高清免费观看| 精品国产乱码91久久久久久网站| 国产在线精品一区二区三区不卡| 久久久久一区二区三区四区| 成人免费毛片高清视频| 有码一区二区三区| 337p亚洲精品色噜噜狠狠| 精品写真视频在线观看 | 琪琪一区二区三区| 国产性做久久久久久| 91视频免费看| 日本aⅴ免费视频一区二区三区| 精品少妇一区二区三区在线视频 | 日韩欧美高清dvd碟片| 国产一区二三区| 亚洲欧洲一区二区在线播放| 欧美日韩精品福利| 国产精品资源在线观看| 亚洲欧美日韩中文播放 | 中文字幕欧美一区| 欧美一区二区三区的| 国产福利一区在线| 一区二区三区高清| 久久综合狠狠综合久久综合88 | 日韩一区有码在线| 91麻豆精品国产91久久久久| 久久91精品久久久久久秒播| 国产婷婷色一区二区三区四区| 色婷婷av一区二区| 国内成人免费视频| 亚洲一区在线观看免费 | 午夜精品久久久久影视| 精品999在线播放| 91黄色免费看| 国产成人丝袜美腿| 日本中文字幕一区二区视频 | thepron国产精品| 奇米色一区二区三区四区| 国产精品久久久久精k8| 日韩三级电影网址| 色综合天天做天天爱| 国产自产2019最新不卡| 亚洲国产一区视频| 中文字幕日本不卡| 精品国产乱码久久久久久免费| 在线观看视频一区二区| 国产iv一区二区三区| 男女视频一区二区| 一区二区三区在线视频免费| 国产日韩欧美高清| 日韩欧美成人午夜| 欧美日韩成人在线一区| 91在线你懂得| 成人动漫一区二区三区| 国产在线国偷精品免费看| 午夜精品123| 亚洲主播在线播放| 国产精品久久久久影院| 精品国产自在久精品国产| 欧美情侣在线播放| 欧美在线|欧美| 91美女蜜桃在线| 成人精品视频一区二区三区尤物| 美女在线观看视频一区二区| 亚洲不卡av一区二区三区| 最好看的中文字幕久久| 欧美国产1区2区| 久久免费美女视频| 久久综合色之久久综合| 日韩欧美一区二区久久婷婷| 欧美精品久久久久久久多人混战| 色屁屁一区二区| 色女孩综合影院| 91麻豆国产福利在线观看| 成人精品小蝌蚪| a4yy欧美一区二区三区| 成人国产精品免费观看动漫 | 久久久综合精品| 日韩精品资源二区在线| 欧美一级久久久久久久大片| 欧美日韩在线播放三区|