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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? videorendererrgb.cpp

?? < VC++視頻音頻開發>> 這本書的源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/**************************************************************************************
 *                                                                                    *
 *                                                                                    *
 **************************************************************************************/

#include "VideoRendererRGB.h"

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

#include <ddraw.h>

/*
 * RGB視頻補償類
 */


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()
{

}

/*
 * 媒體項方法
 */

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;
}

/*
 * 視頻補償方法
 */

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

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

		/*
		 * 產生主要的直接顯示對象
		 */

		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;
		}
	
		/*
		 * 產生主界面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;
		}

		/*
		 * 設置剪輯
		 */

		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;
		}
	
		/*
		 * 最后產生背景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;
}

/*
 * 為全屏顯示初始化補償器
 */

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;
    
	    /*
	     * 設置獨占的合作模式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;

		/*
		 * 產生主界面
		 */
   
	    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;
			
		}

		/*
		 * 為防止疊加繼續停留在頂部產生一個剪輯
		 */

	    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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情艳妇裸体舞| 91久久人澡人人添人人爽欧美| 久久久久久久久岛国免费| 日韩黄色小视频| 日韩丝袜美女视频| 国内成人精品2018免费看| 久久夜色精品一区| 高清不卡在线观看| 国产精品国产三级国产aⅴ无密码| 97se狠狠狠综合亚洲狠狠| 亚洲一线二线三线久久久| 欧美精品三级在线观看| 免费看欧美美女黄的网站| 国产校园另类小说区| 99精品久久99久久久久| 亚洲成在人线在线播放| 精品精品欲导航| 91丨九色丨黑人外教| 五月天婷婷综合| 久久久99久久| 91香蕉视频在线| 免费黄网站欧美| 18欧美亚洲精品| 538在线一区二区精品国产| 狠狠色综合色综合网络| 亚洲视频香蕉人妖| 欧美一级二级在线观看| 大尺度一区二区| 图片区小说区区亚洲影院| 精品国产青草久久久久福利| 成人黄色在线网站| 天堂av在线一区| 欧美激情综合五月色丁香小说| 欧美影院午夜播放| 国产剧情在线观看一区二区| 亚洲一区二区三区自拍| 久久先锋影音av| 欧美日韩国产综合视频在线观看| 国产精选一区二区三区 | 欧美久久久一区| 国产精品99久久久久| 亚洲成人激情av| 亚洲欧美日韩小说| 久久精品夜夜夜夜久久| 91精品久久久久久久久99蜜臂| 99久久精品久久久久久清纯| 精品一区二区三区的国产在线播放| 亚洲最新视频在线观看| 国产嫩草影院久久久久| 欧美一区欧美二区| 欧美亚洲综合在线| 99久久99久久精品免费观看 | 欧美日韩精品系列| 成人高清视频在线| 精彩视频一区二区三区| 亚洲国产精品视频| 亚洲欧美日韩人成在线播放| 精品1区2区在线观看| 在线播放视频一区| 在线一区二区视频| 91丨porny丨蝌蚪视频| 国产成人午夜99999| 另类欧美日韩国产在线| 视频一区视频二区在线观看| 亚洲美女少妇撒尿| 亚洲少妇屁股交4| 亚洲欧美一区二区视频| 中文欧美字幕免费| 亚洲精品视频免费看| 久久精品人人爽人人爽| 久久你懂得1024| 久久综合五月天婷婷伊人| 日韩午夜电影在线观看| 日韩一区二区三区在线观看 | 麻豆精品在线看| 五月天一区二区三区| 亚洲成人综合网站| 亚洲动漫第一页| 日韩国产一二三区| 天使萌一区二区三区免费观看| 午夜一区二区三区视频| 偷偷要91色婷婷| 日本中文字幕一区二区视频| 免费人成黄页网站在线一区二区 | 亚洲午夜精品17c| 亚洲高清免费视频| 日韩国产欧美视频| 激情五月播播久久久精品| 国内精品嫩模私拍在线| 丁香网亚洲国际| 成人福利电影精品一区二区在线观看 | 美女视频黄免费的久久| 久久国产夜色精品鲁鲁99| 蜜臀99久久精品久久久久久软件| 久久99精品视频| 成熟亚洲日本毛茸茸凸凹| 一本色道久久综合亚洲精品按摩| 欧美午夜电影在线播放| 日韩一二三区不卡| 久久久国产精品不卡| 国产欧美精品区一区二区三区 | 日韩国产一二三区| 韩国理伦片一区二区三区在线播放| 国产一区二区三区高清播放| av一区二区久久| 欧美精品亚洲二区| 国产亚洲欧美中文| 亚洲精品国产视频| 免费观看一级特黄欧美大片| 国产不卡免费视频| 欧美午夜电影在线播放| 久久久久亚洲蜜桃| 亚洲一区二区欧美日韩| 国产一区二区三区蝌蚪| 在线观看日产精品| 亚洲精品在线三区| 亚洲柠檬福利资源导航| 老汉av免费一区二区三区| 99视频超级精品| 欧美sm美女调教| 一区二区三区四区精品在线视频| 老司机精品视频在线| 91同城在线观看| 欧美tickle裸体挠脚心vk| 亚洲精品国产精华液| 精品一区二区久久| 色香色香欲天天天影视综合网| 精品va天堂亚洲国产| 香蕉成人啪国产精品视频综合网| 国产91在线观看| 欧美一区二区精品久久911| 亚洲天堂2016| 国产精品亚洲人在线观看| 欧美日韩精品系列| 亚洲三级电影网站| 国产一区美女在线| 欧美一区二区三区电影| 亚洲女同ⅹxx女同tv| 成人免费视频播放| 亚洲精品一线二线三线无人区| 亚洲高清三级视频| 91麻豆国产福利在线观看| 亚洲国产成人午夜在线一区| gogo大胆日本视频一区| 2021中文字幕一区亚洲| 日韩高清在线不卡| 欧美日韩国产高清一区| 伊人婷婷欧美激情| 99精品一区二区三区| 欧美激情中文不卡| 国产高清精品久久久久| 精品国产伦一区二区三区免费| 日本aⅴ免费视频一区二区三区| 91亚洲午夜精品久久久久久| 国产精品久久免费看| 国产suv精品一区二区883| 久久综合九色综合久久久精品综合| 日产精品久久久久久久性色| 欧美日韩日日摸| 亚洲一区二区成人在线观看| 99久久精品久久久久久清纯| 国产精品久久免费看| 成人国产精品免费观看动漫 | 国产精品久久99| 成人精品视频一区| 国产精品视频第一区| 国产麻豆精品在线观看| 精品国产免费人成电影在线观看四季| 日韩精品一二三| 51精品久久久久久久蜜臀| 日韩精品每日更新| 91精品国产综合久久久蜜臀粉嫩 | 久久99久久久欧美国产| 精品国产免费人成在线观看| 国产原创一区二区三区| 国产网红主播福利一区二区| 国产麻豆欧美日韩一区| 亚洲国产精品成人综合 | 在线亚洲一区观看| 亚洲国产色一区| 欧美日韩一级片网站| 免费在线成人网| 久久精品在线观看| 91在线观看成人| 亚洲国产欧美在线| 日韩免费高清电影| 国产经典欧美精品| 自拍偷拍欧美精品| 欧美人牲a欧美精品| 黄页网站大全一区二区| 国产精品久99| 欧美精品乱人伦久久久久久| 韩国在线一区二区| 亚洲男同性视频| 欧美一激情一区二区三区| 国产成人精品aa毛片| 亚洲蜜桃精久久久久久久| 欧美挠脚心视频网站| 国产福利视频一区二区三区| 一区二区三区在线观看动漫|