📄 network_ctrl.h
字号:
///////////////////////////////////////////////////////// FileName: network_ctrl.h// Author: b1gm0use// Project: myvideo#ifndef _NETWORK_CTRL_H_#define _NETWORK_CTRL_H_#include <qwidget.h>#include <qmutex.h>#include <list>#include "common.h"using namespace std;class network_ctrl_recv_thread;class network_ctrl_send_thread;class QSemaphore;class QWaitCondition;class avi;class buff_t // {{{{public: buff_t ( BUFF * ptr, int size ) { buff_ptr = ptr; buff_size = size; }; ~buff_t ( void ) { if ( NULL != buff_ptr); { delete [] buff_ptr; } }public: BUFF * buff_ptr; int buff_size;}; // }}}class network_ctrl : public QWidget{ Q_OBJECTpublic: // 构造函数 network_ctrl ( avi * avi_ptr_in, QWidget *parent = 0, const char *name = 0, int wFlags = 0 ); // 析构函数 ~network_ctrl(); // 初始化函数 int init( void ); void begin_running ( void ); void stop_running ( void ); bool running ( void ); friend class network_ctrl_send_thread; friend class network_ctrl_recv_thread; friend class network_audio_send_thread; friend class network_audio_recv_thread; friend class network_video_send_thread; friend class network_video_recv_thread;protected: // 内部函数,用于接收自定义的事件 void customEvent ( QCustomEvent * e );private: // 指向捕捉线程的指针 network_ctrl_recv_thread * ncrt; network_ctrl_send_thread * ncst; // 保护audio_buff不会被同时访问 QSemaphore * audio_send_buff_sema; // 保护video_buff不会被同时访问 QSemaphore * video_send_buff_sema; // 通知音频发送线程可以发送 QWaitCondition * ready_to_send_audio; // 通知视频发送线程可以发送 QWaitCondition * ready_to_send_video; // 待发送的音频缓冲 buff_t * audio_buff[3]; // 待发送的视频缓冲 buff_t * video_buff[3]; // 指示下一个将使用的是哪一个音频缓冲 int video_frame; // 指示下一个将使用的是哪一个视频缓冲 int audio_frame; // 指向avi的指针 avi * avi_ptr; QSemaphore * term_sub_thread_sema; bool term_sub_thread;};#endif //_NETWORK_CTRL_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -