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

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

?? network_ctrl.cpp

?? 視頻會議源碼
?? CPP
字號:
///////////////////////////////////////////////////////// FileName:	network_ctrl.cpp// Author:		b1gm0use// Project:		myvideo#include <iostream>#include <qwaitcondition.h>#include "network_ctrl.h"#include "capture_event.h"#include "network_ctrl_send_thread.h"#include "network_ctrl_recv_thread.h"#include "video.h"#include "audio.h"#include "network.h"#include "avi.h"using namespace std;///////////////////////////////////////////////////////// Public Functions///////////////////////////////////////////////////////// 構造函數// 其余三個為widget的子類要求的參數network_ctrl::network_ctrl( avi * avi_ptr_in, QWidget *parent, const char *name, int wFlags ) 		: QWidget( parent, name, wFlags ) // {{{{	verbose_output( 2, "create network_ctrl." );	ncrt = NULL;	ncst = NULL;	audio_send_buff_sema = NULL;	video_send_buff_sema = NULL;		ready_to_send_audio = NULL;	ready_to_send_video = NULL;	audio_buff[0] = audio_buff[1] = audio_buff[2] = NULL;	video_buff[0] = video_buff[1] = video_buff[2] = NULL;	video_frame = audio_frame = 0;	avi_ptr = avi_ptr_in;	term_sub_thread_sema = NULL;	term_sub_thread = false;} // }}}// 析構函數network_ctrl::~network_ctrl( void ) // {{{{	verbose_output( 2, "delete network_ctrl." );	if ( avi_ptr->net_mode == CONNECT && NULL != ncrt )	{		if ( ncrt->running() )		{			ncrt->terminate();		}		delete ncrt;	}	if ( avi_ptr->net_mode == LISTEN && NULL != ncst )	{		if ( ncst->running() )		{			ncst->terminate();		}		delete ncst;	}	delete audio_send_buff_sema;	delete video_send_buff_sema;	delete ready_to_send_audio;	delete ready_to_send_video;	delete [] audio_buff[0];	delete [] audio_buff[1];	delete [] audio_buff[2];	delete [] video_buff[0];	delete [] video_buff[1];	delete [] video_buff[2];	delete term_sub_thread_sema;} // }}}// 初始化函數int network_ctrl::init ( void ) // {{{{	verbose_output( 2, "init network_ctrl." );	audio_send_buff_sema = new QSemaphore( 1 );	video_send_buff_sema = new QSemaphore( 1 );		ready_to_send_audio = new QWaitCondition;	ready_to_send_video = new QWaitCondition;	BUFF * temp;	term_sub_thread_sema = new QSemaphore( 1 );	// 如果做做為LISTEN方,則要接收數據幀	// 開辟緩沖區	if ( avi_ptr->net_mode == LISTEN )	{		if ( avi_ptr->use_g723 )		{			for ( int i=0; i<3; i++ )			{				temp = new BUFF [ BUFF_SIZE_G723 * LENGTH ];				audio_buff[i] = new buff_t( temp, BUFF_SIZE_G723 * LENGTH );			}		}		else		{			for ( int i=0; i<3; i++ )			{				temp = new BUFF [ BUFF_SIZE_G711 * LENGTH ];				audio_buff[i] = new buff_t( temp, BUFF_SIZE_G711 * LENGTH );			}		}		for ( int i=0; i<3; i++ )		{			temp = new BUFF [ avi_ptr->video_opt.min_width * avi_ptr->video_opt.factor * avi_ptr->video_opt.min_height * avi_ptr->video_opt.factor * 3 ];			video_buff[i] = new buff_t( temp, avi_ptr->video_opt.min_width * avi_ptr->video_opt.factor * avi_ptr->video_opt.min_height * avi_ptr->video_opt.factor * 3 );		}	}	return SUCCEED;} // }}}void network_ctrl::stop_running ( void ) // {{{{	if ( avi_ptr->net_mode == LISTEN )	{		if ( NULL != ncst )		{			(*term_sub_thread_sema)++;			term_sub_thread = true;			(*term_sub_thread_sema)--;						cout << "before ncst wait" << endl;			if ( ncst->wait() )			{				cout << "before ncst wait" << endl;				delete ncst;				term_sub_thread = false;				cout << "kill ok" << endl;				ncst = NULL;				return;			}		}	}	else	{		if ( avi_ptr->net_mode == CONNECT )		{			if ( NULL != ncrt )			{				(*term_sub_thread_sema)++;				term_sub_thread = true;				(*term_sub_thread_sema)--;				cout << "before wait" << endl;				if ( ncrt->wait() )				{				cout << "after wait" << endl;					delete ncrt;					term_sub_thread = false;					ncrt = NULL;					cout << "kill ok" << endl;					return;				}			}		}	}	return;} // }}}void network_ctrl::begin_running ( void ) // {{{{		// 創建不同的連接線程	if ( avi_ptr->net_mode == LISTEN && NULL == ncst )	{		ncst = new network_ctrl_send_thread( avi_ptr, this );		ncst->start();	}	else	{		if ( avi_ptr->net_mode == CONNECT && NULL == ncrt )		{			ncrt = new network_ctrl_recv_thread( avi_ptr, this );			ncrt->start();		}	}	return;} // }}}bool network_ctrl::running ( void ) // {{{{	if ( avi_ptr->net_mode == LISTEN  )	{		if ( NULL != ncst )		{			return true;		}		else		{			return false;		}	}	else	{		if ( avi_ptr->net_mode == CONNECT )		{			if ( NULL != ncrt )			{				return true;			}			else			{				return false;			}		}	}	return false;} // }}}///////////////////////////////////////////////////////// Protected Functions///////////////////////////////////////////////////////// 內部函數,用于接收自定義的事件void network_ctrl::customEvent ( QCustomEvent * e ) // {{{{	verbose_output( 4, "network_ctrl change image event." );	// 判斷事件類型,是否正確	if ( e->type() == VIDEO_NET_SEND_EVENT )	{		// 視頻數據		capture_event * new_event = (capture_event *) e;		BUFF * temp = new_event->get_buff();		int size = new_event->get_size();		(*video_send_buff_sema)++;		memcpy( video_buff[video_frame]->buff_ptr, temp, size );		video_buff[video_frame]->buff_size = size;		(*video_send_buff_sema)--;		video_frame = (video_frame+1) % 3;		ready_to_send_video->wakeAll();	}	else	{		if ( e->type() == AUDIO_NET_SEND_EVENT )		{			// 音頻數據			capture_event * new_event = (capture_event*) e;			BUFF * temp = new_event->get_buff();			int size = new_event->get_size();			(*audio_send_buff_sema)++;			memcpy( audio_buff[audio_frame]->buff_ptr, temp, size );			audio_buff[audio_frame]->buff_size = size;			(*audio_send_buff_sema)--;			audio_frame = (audio_frame + 1) % 3;			ready_to_send_audio->wakeAll();		}		else		{			cerr << "Error! You shouldn't be here!" << endl;			cerr << "Error in network_ctrl." << endl;			exit( 1 );		}	}} // }}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av性久久久久蜜臀aⅴ流畅| 日韩黄色片在线观看| 欧美日韩一二区| 久久99蜜桃精品| 亚洲精品一二三区| 日韩欧美一级二级三级| av电影在线观看一区| 久久精品免费观看| 亚洲女同ⅹxx女同tv| 精品国产污网站| 精品1区2区3区| 成人高清视频在线| 国产在线精品视频| 日韩激情一二三区| 一区二区久久久| 中文字幕欧美国产| 精品嫩草影院久久| 欧美精品一卡二卡| 色噜噜久久综合| 丁香桃色午夜亚洲一区二区三区| 日本伊人色综合网| 亚洲永久精品国产| 亚洲天堂精品在线观看| 国产日韩三级在线| 精品久久久久久亚洲综合网| 欧美日韩亚洲综合一区二区三区| av毛片久久久久**hd| 国产成人在线看| 麻豆91在线看| 日av在线不卡| 日韩电影在线一区| 亚洲va在线va天堂| 亚洲国产综合色| 亚洲免费在线电影| 亚洲欧洲一区二区在线播放| 国产日韩一级二级三级| 欧美mv日韩mv国产网站| 91麻豆精品国产91久久久使用方法| 91国偷自产一区二区使用方法| 成人国产视频在线观看| 国产v日产∨综合v精品视频| 国产精品亚洲а∨天堂免在线| 久久精品国产**网站演员| 日本欧美肥老太交大片| 亚洲成人资源在线| 视频一区视频二区中文| 肉丝袜脚交视频一区二区| 精品亚洲国内自在自线福利| 免费观看日韩av| 欧美96一区二区免费视频| 婷婷成人激情在线网| 亚洲高清在线视频| 日本不卡高清视频| 久久成人精品无人区| 国产乱子轮精品视频| 国产在线一区二区综合免费视频| 国产永久精品大片wwwapp| 国产一区二区精品久久91| 国产成人免费视| 波多野结衣中文字幕一区| 色综合久久88色综合天天| 欧美午夜在线一二页| 3d动漫精品啪啪一区二区竹菊 | 99re热这里只有精品视频| av福利精品导航| 欧美影视一区在线| 91精品国产综合久久福利| 欧美变态tickle挠乳网站| 国产日韩欧美精品综合| 中文字幕亚洲精品在线观看| 一区二区三区丝袜| 免播放器亚洲一区| 国产激情一区二区三区四区| 91网站最新网址| 欧美日韩不卡一区二区| 欧美成人一区二区三区| 国产精品三级在线观看| 一区二区三区精密机械公司| 日本亚洲免费观看| 国产高清成人在线| 欧美午夜不卡在线观看免费| 日韩欧美123| 最新欧美精品一区二区三区| 五月综合激情日本mⅴ| 国产高清在线精品| 欧美性感一类影片在线播放| 精品久久久久99| 亚洲欧美二区三区| 精品一区二区日韩| 色综合久久天天综合网| 日韩欧美国产wwwww| 亚洲少妇30p| 激情综合色播五月| 在线视频你懂得一区| 精品国产伦一区二区三区免费| 国产精品第一页第二页第三页| 视频在线观看一区| 99九九99九九九视频精品| 日韩精品一区二区三区四区| 亚洲激情图片一区| 国产一区二区91| 欧美日韩国产美| 国产精品乱码一区二区三区软件 | 精品久久久久久无| 一区二区三区日韩欧美| 国产乱子伦一区二区三区国色天香| 欧美自拍丝袜亚洲| 国产精品嫩草99a| 久久99蜜桃精品| 欧美精品在线观看一区二区| 国产精品天美传媒| 久久66热偷产精品| 欧美精品高清视频| 亚洲精品中文在线观看| 高清在线观看日韩| 日韩精品一区二区三区在线 | 在线一区二区三区| 国产女人18水真多18精品一级做| 日本vs亚洲vs韩国一区三区 | 成人午夜短视频| 2023国产精华国产精品| 婷婷中文字幕一区三区| 日本高清不卡一区| 综合自拍亚洲综合图不卡区| 国产精品一区一区| 欧美大胆一级视频| 日本v片在线高清不卡在线观看| 91黄色小视频| 一区二区三区在线视频观看58| 成人性生交大片免费看视频在线 | 免费人成在线不卡| 欧美日韩国产综合一区二区| 亚洲男同1069视频| 色哟哟一区二区在线观看| 国产精品福利电影一区二区三区四区| 激情六月婷婷久久| 欧美精品一区二区在线观看| 免费观看日韩av| 日韩一级成人av| 美女任你摸久久 | 国产精品不卡在线| 国产69精品久久777的优势| 久久精品视频网| 国产成人午夜片在线观看高清观看| 精品国产一区二区三区av性色| 理论电影国产精品| 久久综合狠狠综合久久综合88| 国产在线一区二区| 国产欧美精品一区二区三区四区 | 欧美一区二区视频观看视频| 石原莉奈在线亚洲三区| 欧美一区二区在线看| 日本午夜精品视频在线观看| 日韩欧美久久久| 国产一区二区三区电影在线观看 | 国产精品色一区二区三区| 成人短视频下载| 亚洲欧美日韩中文字幕一区二区三区 | 欧美日韩免费观看一区三区| 午夜视频在线观看一区二区| 日韩欧美电影在线| 国产精品996| 亚洲欧美偷拍卡通变态| 欧美日韩激情一区| 久久精品国产亚洲高清剧情介绍 | 欧美一级专区免费大片| 久久国产精品99久久人人澡| 国产日韩欧美a| 91网站在线观看视频| 午夜精品在线看| 久久蜜桃av一区精品变态类天堂 | 国产清纯美女被跳蛋高潮一区二区久久w| 国产白丝精品91爽爽久久| 亚洲男人的天堂av| 91精品久久久久久蜜臀| 韩国女主播一区二区三区| 国产精品久久久久久妇女6080| 欧美色综合网站| 黄色精品一二区| 亚洲美女视频在线观看| 欧美一区二区三区人| 成人黄色在线视频| 亚洲小说欧美激情另类| 久久久久久免费网| 91麻豆免费看片| 久久99精品一区二区三区三区| 国产精品国产三级国产普通话蜜臀 | av午夜精品一区二区三区| 午夜久久久久久久久| 久久精品视频一区二区三区| 欧美综合一区二区| 国产成人精品免费| 天天操天天色综合| 国产精品夫妻自拍| 欧美本精品男人aⅴ天堂| 91官网在线免费观看| 国产夫妻精品视频| 三级在线观看一区二区| 亚洲欧美一区二区三区久本道91| 日韩欧美中文一区二区|