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

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

?? video_channel.cpp

?? 實時監控
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// video_channel.cpp : implementation file
//

#include "stdafx.h"
#include "../DvrManager.h"
#include "net.h"
#include "../toolbars/RightCamera.h"
#include "../toolbars/RightLogin.h"
#include "../toolbars/RightLR.h"
#include "../toolbars/RightMD.h"
#include "../toolbars/RightVOD.h"
#include "../utils/balloonhelp.h"
#include "../utils/common.h"
#include "../utils/custom_msgs.h"
#include "msgbox.h"
#include "video_channel.h"
#include "reg.h"
#include "../utils/BitmapPicture.h"
#include "../utils/Picture.h"
#include "memdc.h"
#include "vector"
#include "safe_destroy.h"
#include "../mem_draw_base.h"
#include "../mem_draw_factory.h"

//////////////////////////////////////////////////////////////////////////
// 2004-02-06
//#include "../net/init_multi_dec.h"
//_init_mutli_dec init_multi_dec;
//////////////////////////////////////////////////////////////////////////


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define SEL_STYLE	WS_EX_CLIENTEDGE
/////////////////////////////////////////////////////////////////////////////
// video_channel

#define WIDTH	352
#define HEIGHT	288

#define draw_byte_total		80

extern LPCTSTR rvVideoLogo;
CPicture VIDEO_LOGO;


//##ModelId=3F90BABD006C
typedef std::vector<video_channel*> vclist;
vclist video_wnds;

//##ModelId=3F90BAA70093
video_channel* video_channel::current_sel()
{
	if( cur_sel )
		return (video_channel*)cur_sel;
	else
		return (video_channel*)def;
}

//##ModelId=3F90BAA7009D
video_channel* video_channel::number(int idx)
{
	return video_wnds[idx];
}

//##ModelId=3F90BAA700B0
int video_channel::count()
{
	return video_wnds.size();
}

//##ModelId=3F90BAA70057
video_channel::video_channel(): 
  v_chnl(-2)
, v_ip(0)
, drawing_grid(false)
, w(0), h(0)
, mem_draw(NULL)
{
	mask.alloc(draw_byte_total);
	//m_boolcheckbuf=true;
	m_draw_id=0;
	m_Slow = FALSE; 
	tcpudp_server = FALSE;
}

//##ModelId=3F90BAA700F7
video_channel::~video_channel()
{
	safe_destroy(mem_draw);
}

BEGIN_MESSAGE_MAP(video_channel, baseclass)
	//{{AFX_MSG_MAP(video_channel)
	ON_WM_DESTROY()
	ON_WM_MOVE()
	ON_WM_SIZE()
	ON_WM_LBUTTONUP()
	ON_WM_LBUTTONDOWN()
	ON_WM_PAINT()
	ON_WM_RBUTTONDOWN()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_SNAPSHOT, on_snapshot)
	MSG2(NTM_CMD_LOGOUT_OK, on_logout)
	MSG2(NTM_CMD_CHANNEL_OPENED, on_channel_opened)
	MSG2(NTM_CMD_CHANNEL_CLOSED, on_channel_closed)
	MSG2(NTM_CMD_REQUEST_NOT_OK, on_req_failure)
	MSG2(NTM_VIDEO_FRAME, on_video_frame)
	MSG2(NTM_VOD_SET_SPEED, on_vod_set_speed)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// video_channel message handlers

//##ModelId=3F90BAA700D8
void video_channel::dd_update()
{
	CRightLogin* rl = CRightLogin::the_one();
	if( IsWindow(rl->m_hWnd) )
		rl->PostMessage(WM_UPDATE_WINDOW, (WPARAM)index());
//	if( dd )
//		dd_update_bound(dd);
}

//##ModelId=3F90BAA70060
bool video_channel::create(int index, CWnd* parent, const CRect& rc /* = CRect */, 
							DWORD style /* = ... */)
{
	if( !baseclass::create(index, parent, rc, style) )
		return false;

	if( index == 0 )
		def = this;

	CString str ;
//	str.Format(_T("%02d"), index+1);
//	title = read_string(rkVWTitle, str);
	str.Format(IDS_HWND_FMT, index+1) ;
	title = str ;
	
	if( !VIDEO_LOGO.IsLoaded() )
	{
		CString str = read_string(rkSettings, rvVideoLogo);
		if( !str.IsEmpty() )
			VIDEO_LOGO.Load(str);
	}

	video_wnds.push_back(this);

//	return dd != 0;
	return true;
}

//##ModelId=3F90BAA7016F
void video_channel::OnDestroy() 
{
//	if( dd )
//	{
//		dd_destroy(dd);
//		dd = 0;
//	}
	baseclass::OnDestroy();
}

//##ModelId=3F90BAA7007E
void video_channel::report_channel()
{
	if( cur_sel && cur_sel != this )
		return;

	CRightLogin* rl = CRightLogin::the_one();
	CRightCamera* rc = CRightCamera::the_one();
	CRightLR* rlr = CRightLR::the_one();

	rl->m_strVideoTitle.Empty();
	rl->m_strChannelIndex.Empty();
	rl->m_strChannelIP.Empty();
	rl->m_strChannelBitrate.Empty();
	rl->m_strNetType.Empty();
	if( v_chnl != -1 &&
		v_chnl != VOD_GROUP )
		if( rc->m_hWnd )
		{
			rc->m_chnl.Format(IDS_CHNL_FMT, v_chnl+1);
		}
	
	rl->m_strVideoTitle = title;
	if( is_video_opened() )
	{
		if( v_chnl != VOD_GROUP )
			rl->m_strChannelIndex.Format(IDS_CHNL_FMT, v_chnl+1);
		else
			rl->m_strChannelIndex = IDString(IDS_VOD);
		
		//rl->m_strChannelIP = get_dvrname(v_ip)+get_alias(v_ip);
		rl->m_strChannelIP = get_alias(v_ip);
		if( rlr->m_hWnd )
		{
			rlr->m_ctrl = rl->m_strChannelIP;
			rlr->m_str_chnl_info.Format(IDS_CHNL_FMT, v_chnl+1);
		}
		rl->m_slow = m_Slow;
		if(tcpudp_server)
		{
			if(m_Slow)
				rl->m_strNetType = "LAN";
			else
				rl->m_strNetType = "WAN";
		}
	}
	else
	{
		static IDString NOT_OPENED_YET(IDS_NOT_OPENED_YET);
		rl->m_strChannelIndex = NOT_OPENED_YET;
		rl->m_strChannelIP = NOT_OPENED_YET;
		rl->m_strChannelBitrate = NOT_OPENED_YET;
		rl->m_strNetType = NOT_OPENED_YET;
		rc->m_control = NOT_OPENED_YET;
		rc->m_chnl = NOT_OPENED_YET;
		rlr->m_str_chnl_info = NOT_OPENED_YET;
		rlr->m_ctrl = NOT_OPENED_YET;
	}
	// 2003.7.16. nodman
	// 不能直接使用UpdateData,
	// 因為在登出成功后, 由網絡線程執行到這里, MFC對多線程比較感冒
	// rlogin->UpdateData(FALSE); 會出錯
	if( rl->m_hWnd )
	{
		rl->SendMessage(WM_UPDATE_DATA, FALSE);
		rl->PostMessage(NTM_REFRESH_BITRATE,NULL,1);
	}
	if( rc->m_hWnd )
	{
		rc->ipp = v_ip;
		rc->channel = v_chnl;
		rc->PostMessage(WM_UPDATE_DATA, FALSE);
	}
	if( rlr->m_hWnd )
	{
		rlr->PostMessage(WM_UPDATE_DATA, FALSE, (LPARAM)this);
	}

}

/// 從net_cmd得到消息
/// @{
//void video_channel::on_channel_opened(IPPORT_TYPE, ULONG mip, USHORT mport, ULONG channel)
//##ModelId=3F90BAA7011E
LRESULT video_channel::on_channel_opened(WPARAM w, LPARAM l)
{
	ULONG ip = w;
	USHORT port = HSHORT(l);
	SHORT channel = LSHORT(l);

	video_opened(ip, port, channel);
	RedrawWindow();
	return 0;
}

LRESULT video_channel::on_req_failure(WPARAM w, LPARAM l)
{
	on_channel_closed(w, l);

	CRightLogin* rl = CRightLogin::the_one();
	rl->PostMessage(NTM_CMD_REQUEST_NOT_OK, w, l);

	return 0;
}

//void video_channel::on_channel_closed(IPPORT_TYPE, ULONG channel)
//##ModelId=3F90BAA70129
LRESULT video_channel::on_channel_closed(WPARAM w, LPARAM l)
{
	drawing_grid = false;

	ULONG ip = w;
	USHORT port = HSHORT(l);
	SHORT channel = LSHORT(l);
	
	video_closed(ip, port, channel);

	//CRightLogin::the_one()->PostMessage(NTM_CMD_CHANNEL_CLOSED, w, l);
    //m_boolcheckbuf=true;
	m_draw_id = 0;
	on_unsel();
	return 0;
}

//void video_channel::on_logout_success(IPPORT_TYPE)
//##ModelId=3F90BAA70101
LRESULT video_channel::on_logout(WPARAM w, LPARAM l)
{
	ULONG ip = w;
	USHORT port = HSHORT(l);
	SHORT channel = LSHORT(l);
	
	if( v_ip == ip_port(ip, port) )
		video_closed(ip, port, v_chnl);
	

	return 0;
}


/// @}

// 當前是否打開通道
//##ModelId=3F90BAA700CE
bool video_channel::is_video_opened()
{
	return v_ip;
}

// 當選擇時的處理
//##ModelId=3F90BAA60394
void video_channel::on_sel()
{
	report_channel();
	CRightVOD* rv = CRightVOD::the_one();
	if(rv->m_hWnd)
	   rv->PostMessage(WM_UPDATE_DATA);
}

//##ModelId=3F90BAA6039E
void video_channel::on_unsel()
{
	CRect rc;
	GetWindowRect(rc);
	CWnd* p = GetParent();
	if( !p )
		return;

	p->ScreenToClient(rc);
	rc.InflateRect(2,2,2,2);
	p->RedrawWindow(rc);
}

// 查詢打開通道的IP
//##ModelId=3F90BAA700BA
ip_port video_channel::channel_ip()
{
	return v_ip;
}

// 查詢打開通道的索引
//##ModelId=3F90BAA700C4
int video_channel::channel_index()
{
	return v_chnl;
}
//##ModelId=3F90BAA70183
void video_channel::OnMove(int x, int y) 
{
	baseclass::OnMove(x, y);
	dd_update();
}

//##ModelId=3F90BAA70197
void video_channel::OnSize(UINT nType, int cx, int cy) 
{
	baseclass::OnSize(nType, cx, cy);
	dd_update();
}

//##ModelId=3F90BAA700E2
void video_channel::draw(void* buf)
{
	check_grid((byte*)buf);
//	dd_draw(dd, (LONG)buf);
}

/*
 *	已解碼視頻幀到來
 */
//void video_channel::on_video_frame(int channel, void* vid_buf, ULONG size, int w, int h)
//##ModelId=3F90BAA7013D
LRESULT video_channel::on_video_frame(WPARAM w, LPARAM l)
{
	byte* buf = (byte*)w;
	cs = (COLOR_SPACE)HSHORT(l);
	vs = (VIDEO_STANDARDS)LSHORT(l);
    
	check_grid(buf);
	if(is_vod())
	{
        m_checkbuf=buf;
		//m_boolcheckbuf=false;
	}
	m_draw_id++;
    check_playing_mode();
	if( v_chnl == 0 )
	{
		const FRAME_BYTES = 352*288*2;	// YUY2 colorspace for H263
		//SendStreamToMultiDec(0, buf, FRAME_BYTES);
	}
	return 0;
}

//##ModelId=3F90BAA700EC
BOOL video_channel::PreTranslateMessage(MSG* pMsg)
{
	if( AfxGetMainWnd()->SendMessage(WM_FILTER_ACCEL, (WPARAM)pMsg, 0) )
		return TRUE;
	
//	if(pMsg->message == WM_RBUTTONDOWN )
//	{
//		OnRButtonDown();
//		if( drawing_grid )
//			return TRUE;
//	}
	return baseclass::PreTranslateMessage(pMsg);
}

//##ModelId=3F90BAA700D0
bool video_channel::is_vod()
{
	return v_chnl == VOD_GROUP;
}

//##ModelId=3F90BAA70164
LRESULT video_channel::on_snapshot(WPARAM w, LPARAM)
{
	CRightLogin::the_one()->SendMessage(WM_SNAPSHOT);
	/*
	 *	等待下一幀到來
	 *	下一幀到的時候, h263 解碼器中, 會判斷snapshot是否為空
	 *	如果不為空, 就把該幀保存在以snapshot為名的文件中. 
	 *	并設snapshot為空, 以防止多次抓圖.
	 */
	return 0;
}


//////////////////////////////////////////////////////////////////////////
/// 內部處理
//##ModelId=3F90BAA60331
void video_channel::video_opened(ULONG ip, USHORT port, int chnl)
{
	if( v_ip )
		return;
	
	v_ip = ip_port(ip,port);
	v_chnl = chnl;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久er热在这里只有精品66| 中文字幕欧美区| 91在线观看免费视频| 国产精品伊人色| 精品一区二区三区免费播放| 亚洲成人免费观看| 亚洲一区二区三区免费视频| 一区二区三区中文在线观看| 自拍av一区二区三区| 亚洲天堂福利av| 亚洲女人的天堂| 亚洲四区在线观看| 亚洲精品高清在线观看| 伊人色综合久久天天| 夜夜揉揉日日人人青青一国产精品| 亚洲青青青在线视频| 一区二区三区在线播放| 亚洲成人av电影在线| 美女脱光内衣内裤视频久久网站 | 一区二区三区不卡视频| 亚洲男人电影天堂| 午夜一区二区三区视频| 日本在线不卡视频| 黄页视频在线91| 国产99久久久国产精品潘金 | 亚洲激情第一区| 亚洲福利国产精品| 免费一级片91| 国产精品77777| 91豆麻精品91久久久久久| 欧美日韩精品免费| 欧美精品一区二区三区蜜臀| 国产精品成人一区二区三区夜夜夜| 亚洲人吸女人奶水| 水野朝阳av一区二区三区| 国产麻豆91精品| 欧美在线免费视屏| 精品国产区一区| 亚洲免费高清视频在线| 日本免费新一区视频| 成人av免费观看| 9191精品国产综合久久久久久| 欧美精品一区二区久久婷婷| 亚洲三级在线免费观看| 日本大胆欧美人术艺术动态| 成人av免费在线播放| 88在线观看91蜜桃国自产| 国产精品色呦呦| 麻豆成人久久精品二区三区小说| 懂色av一区二区三区免费看| 欧美理论电影在线| 亚洲日本va在线观看| 久久超级碰视频| 欧美色电影在线| 国产精品卡一卡二卡三| 久久国产精品无码网站| 欧美性生活影院| 国产精品久久久久精k8| 国产在线国偷精品免费看| 欧美亚男人的天堂| 亚洲六月丁香色婷婷综合久久 | 欧美久久久久久久久| 中文字幕一区二区三区在线不卡 | 日本乱码高清不卡字幕| 国产人久久人人人人爽| 老鸭窝一区二区久久精品| 欧美日韩国产不卡| 亚洲乱码一区二区三区在线观看| 高清视频一区二区| 国产婷婷色一区二区三区| 毛片基地黄久久久久久天堂| 欧美精品电影在线播放| 午夜天堂影视香蕉久久| 欧美在线三级电影| 午夜欧美大尺度福利影院在线看| 色婷婷综合五月| 亚洲欧美一区二区三区国产精品| 国产91精品一区二区| 久久精品日产第一区二区三区高清版 | 亚洲成av人**亚洲成av**| 97se亚洲国产综合自在线观| 国产精品看片你懂得 | 亚洲免费在线观看视频| 91一区一区三区| 亚洲天堂中文字幕| 欧美亚洲禁片免费| 人人精品人人爱| 欧美videossexotv100| 久久99久国产精品黄毛片色诱| 日韩欧美另类在线| 国产一区二区免费看| 中文字幕二三区不卡| 91亚洲国产成人精品一区二区三 | 6080日韩午夜伦伦午夜伦| 日韩在线一区二区| 26uuu精品一区二区| 成人一区二区视频| 亚洲精品视频一区| 欧美日韩国产高清一区二区三区 | 91免费国产在线| 午夜免费欧美电影| 久久你懂得1024| 成人妖精视频yjsp地址| 亚洲精品欧美二区三区中文字幕| 91精品欧美一区二区三区综合在| 蜜臀91精品一区二区三区| 国产欧美日韩综合精品一区二区| 91在线免费看| 免费精品99久久国产综合精品| 欧美高清在线精品一区| 在线免费观看一区| 激情成人综合网| 亚洲一区视频在线| 久久色.com| 欧美午夜精品久久久久久孕妇| 免费一级欧美片在线观看| 中文字幕乱码日本亚洲一区二区| 欧美色精品天天在线观看视频| 国产传媒欧美日韩成人| 一区二区三区四区在线免费观看| 日韩一区二区电影网| 91在线无精精品入口| 麻豆国产一区二区| 亚洲国产日韩综合久久精品| 国产精品理论片| 777午夜精品视频在线播放| 成人午夜碰碰视频| 青椒成人免费视频| 亚洲综合成人在线视频| 国产蜜臀97一区二区三区| 欧美久久久久久久久久| 色综合咪咪久久| 成人综合日日夜夜| 久久超碰97中文字幕| 午夜视频在线观看一区| 最新国产の精品合集bt伙计| 欧美成人免费网站| 欧美日本在线看| 色国产综合视频| 99精品欧美一区| 国产风韵犹存在线视精品| 久久爱www久久做| 日韩av午夜在线观看| 亚洲成人在线观看视频| 亚洲激情在线播放| 亚洲美女屁股眼交| 亚洲女同女同女同女同女同69| 中文在线资源观看网站视频免费不卡| 日韩免费一区二区| 91精品国产乱| 欧美一区二区三区不卡| 欧美日韩久久久一区| 欧美色区777第一页| 欧美色区777第一页| 欧美日韩一区二区电影| 欧美日韩一本到| 7777精品伊人久久久大香线蕉 | 亚洲网友自拍偷拍| 亚洲综合色自拍一区| 亚洲精品日韩综合观看成人91| 亚洲精品va在线观看| 亚洲一区二区三区在线| 亚洲高清免费一级二级三级| 图片区小说区区亚洲影院| 日本成人在线一区| 韩日欧美一区二区三区| 国产精品77777| 色香蕉成人二区免费| 色婷婷综合久久| 欧美二区三区91| 亚洲精品一区二区精华| 日本一区二区三级电影在线观看| 国产日产精品1区| 日韩一区在线看| 亚洲已满18点击进入久久| 日韩综合小视频| 国产精品一区二区在线观看网站 | 亚洲高清视频的网址| 免费在线一区观看| 国产精品1区2区| 色综合久久综合| 日韩一区二区免费电影| 国产性色一区二区| 亚洲精品美国一| 久久精品999| 91影院在线观看| 欧美xxxx在线观看| 亚洲欧洲三级电影| 人人超碰91尤物精品国产| 丁香网亚洲国际| 欧美日韩精品是欧美日韩精品| 久久久久久久久久看片| 亚洲理论在线观看| 国内精品伊人久久久久av一坑| 91亚洲精品一区二区乱码| 91精品久久久久久蜜臀| 中文字幕一区日韩精品欧美| 免费高清在线一区| 色哟哟在线观看一区二区三区| 久久综合九色综合97婷婷女人|