mjpeg-streamer源码分析 mjpeg streamer

M-JPEG是一种基于静态图像压缩技术JPEG发展起来的动态图像压缩技术,可以生成序列化的运动图像。其主要特点是基本不考虑视频流中不同帧之间的变化,只单独对某一帧进行压缩,其压缩倍数为20~80倍,适合静态画面的压缩,分辨率可从352×288到704×576。其涉及到的基础知识有条件变量、动态函数库的操作、指针函数的操作、守护进程。这里我们主要分析M-JPEG源码中的input_uvc.c输入函数、以及output_http.c、output_file.c输出函数。首先,分析该软件的结构体:--------------------------------------------------------------------------------------------------globals结构体:--------------------------------------------------------------------------------------------------typedef struct_globals globals;struct _globals{int stop; pthread_mutex_t db; pthread_cond_t db_update;unsigned char *buf; int size; input in; output out[MAX_OUTPUT_PLUGINS];int outcnt; };--------------------------------------------------------------------------------------------------input结构体:typedef struct_input input;struct _input{char *plugin; void *handle; input_parameter param; int (*init)(input_parameter *);int (*stop)(void);int (*run)(void);int (*cmd)(in_cmd_type, int);};typedef struct_input_parameter input_parameter;struct_input_parameter {char *parameter_string;struct _globals *global;};--------------------------------------------------------------------------------------------------output结构体:typedef struct_output output;struct _output{char *plugin; void *handle; output_parameter param; int (*init)(output_parameter *);int (*stop)(int);int (*run)(int);int (*cmd)(int, out_cmd_type, int);};typedef struct_output_parameter output_parameter;struct_output_parameter {int id; char *parameter_string;struct _globals *global;};--------------------------------------------------------------------------------------------------其次我们看到mjpg_streamer.c这个文件,这里主要遇到一个功能函数getopt_long_only(),该函数功能主要是解析命令行选项,也就是将*input中的-h-i -o -v -b的参数解析出来。
mjpeg-streamer源码分析 mjpeg streamer
input_uvc.c(pluginsinput_uvc):这个函数貌似挺长的,其实代码也就只是实现对usb摄像头的格式、帧、请求buf,队列buf等的一些设置,主要实现也是在函数init_videoIn(videoIn,dev, width, height, fps, format, 1) 中,有兴趣的话,大家可以去看看。intinput_stop(void)和input_run(void)表示输入停止,貌似更加简单,只要将线程取下cancel就ok,那么run肯定是cretethreads了。
output_http.c(pluginsoutput_http):刚开始也肯定是对其初始化,然后stop,最后run。其实我挺喜欢这个项目的编写者,处处为咱们考虑。
我想这个项目分析的差不多了,至于一些小的方面,我不依依细说了,最后送大家一句古语“师傅领进门,修行靠个人”,并赠上这个项目的框架图。


  

爱华网本文地址 » http://www.aihuau.com/a/25101011/48752.html

更多阅读

股票公式全解析:16 股票软件源码引入

股票公式全解析:[16]股票软件源码引入——简介我们上一篇文章主要说明了大智慧的源码引入的基本方法,大家在使用这个源码的时候一定要注意具体的设置,按照我的要求一步一步实现,源码的编写我会专门有一个介绍,现在我继续说明其他股票软件

易语言进度条源码 精易论坛

易语言进度条源码——简介今天,我给大家带来如何弄进度条!易语言进度条源码——工具/原料电脑易语言易语言进度条源码——方法/步骤易语言进度条源码 1、打开易语言!拉

声明:《mjpeg-streamer源码分析 mjpeg streamer》为网友傻瓜丿分享!如侵犯到您的合法权益请联系我们删除