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

📄 video_cap_thread.cpp

📁 嵌入式linux系统的网络编程(C++) 在ARM上实现视频会议 此程序获得全国研究生电子大赛一等奖 压缩包内为全部源码
💻 CPP
字号:
///////////////////////////////////////////////////////// FileName:	video_cap_thread.cpp// Author:		b1gm0use// Project:		myvideo#include <iostream>#include "network.h"#include "video_cap_thread.h"#include "video_cap.h"#include "capture_event.h"#include "video_send.h"#include "network_video_send.h"#include "video.h"#include "avi.h"using namespace std;///////////////////////////////////////////////////////// Public Functions///////////////////////////////////////////////////////// 构造函数// 传入参数为// vp_in 上层VideoPlayer对象指针// stackSize QThread所用的参数video_cap_thread::video_cap_thread ( avi * avi_ptr_in, VideoPlayer * vp_in, 		unsigned int stackSize )		:QThread( stackSize ) // {{{{	verbose_output( 2, "create video_cap_thread." );	vp = vp_in;	ns = NULL;	vs = NULL;	avi_ptr = avi_ptr_in;} // }}}video_cap_thread::~video_cap_thread ( void ) // {{{{	delete vs;	delete ns;} // }}}// 运行部分,线程代码在这里void video_cap_thread::run ( void ) // {{{{	int size = 0;	BUFF * image = NULL;	video_cap * vc = NULL;	verbose_output( 1, "running new thread." );	// 如果是standalone会创建一个video_cap对象	// 如果是listen会再创建一个network_send对象	vc = new video_cap( avi_ptr );	vc->init();	if ( avi_ptr->net_mode == LISTEN )	{		verbose_output( 3, "net_mode LISTEN" );		ns = new network_video_send( avi_ptr );		ns->init();	}	// 创建video_send对象,用于向主体发送捕捉完毕信号	if ( avi_ptr->net_mode == STANDALONE || 		( avi_ptr->net_mode == LISTEN && avi_ptr->show_local_video ) )	{		vs = new video_send( avi_ptr );		vs->init( vp );	}	verbose_output( 1, "begin video capture loop." );	while ( 1 )	{		//sleep( 1 );		// 取得一帧		if ( vc->get_image ( image, &size ) == -1 )		{			cerr << "Warning! get image error" << endl;			continue;		}		if ( image == NULL )		{			cerr << "Can't get new video frame" << endl;			::exit( 1 );		}		// 发出信号		if ( avi_ptr->net_mode == STANDALONE || 			( avi_ptr->net_mode == LISTEN && avi_ptr->show_local_video ) )		{			vs->send_image( image, size );		}		// 如果做为listen方,则向其它connect方传送图像		if ( avi_ptr->net_mode == LISTEN )		{			ns->send_image( image, size );		}	}	return ;} // }}}

⌨️ 快捷键说明

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