1.线程池本质 多个线程组成的一个集合,目的为了并发执行任务,定义时是一个结构体,成员有互斥锁,条件变量,任务链队列指针,任务链队列中等待的任务个数,当前活跃的线程数量,线程ID,线程销毁标记等 2.线程池的关键技术 (1)万能函数指针(通用函数指针): *void *(*p)(void ) ( ...
《FFmpeg开发实战:从零基础到短视频上线》一书在第10章介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流。不过MediaMTX的功能实在是太简单了,无法应用于真实直播的生产环境,真正能用于生产环境的流媒体服务器还要看SRS或者ZLMediaKi ...
互斥锁,也叫互斥量。有以下几个显著的特点: 唯一性:互斥锁保证在任何给定的时间点,只有一个线程可以获得对临界区资源的访问权。如果一个线程锁定了一个互斥量,在它解除锁定之前,没有其他线程可以锁定这个互斥量。 原子性:锁定和解锁互斥锁的操作是原子的,这意味着操作系统(或pthread函数库)保证了如果一 ...
读写锁(rwlock)与互斥锁(Mutex Lock)相比,有如下特点: 更加细致的区分了读和写,给共享资源分别上了“读”锁和“写”锁。 “写”独占,“读”共享,“写”锁优先级更高 如果共享资源在绝大多数情况下是“读”操作,可以提高程序的并发性能。 常用的函数原型总结如下: pthread_rwlo ...
《FFmpeg开发实战:从零基础到短视频上线》一书介绍了JPEG、PNG、GIF等图片格式,以及如何通过FFmpeg把视频画面转存为这些格式。除了上述这些常见的图片格式,还有较新的WebP格式,它由VP8视频标准派生而来,VP8演进的视频格式叫做WebM,图片格式则叫WebP。 若想让FFmpeg ...
我们知道,lua通过package模块来管理模块的搜索和加载,当使用require首次成功加载一个模块后,模块(Table)会被存储在package.loaded中,之后的require行为会直接获取到已加载的模块缓存。 如何在程序执行时,将对模块文件的修改热更新到程序中,同时确保运行时状态的正常。 ...
Design OOP use C 使用c语言实现面向对象特性 以底层思维来理解面向对象。我所理解的oop:为不同的数据元提供稳定的处理逻辑框架,同时提供复写的可能,支持不同数据元个性化定制有限的逻辑; 多态特性: 基类实现一组通用处理逻辑接口,子类通过改变特定接口的执行逻辑实现将子类与个性化操作绑定 ...
strcpy和memcpy 目录strcpy和memcpy 复制内容: strcpy:专门用于复制字符串,它会一直复制直到遇到源字符串中的'\0'结束符。这意味着如果源字符串长度超过了目标缓冲区的大小(不包括'\0'),就会发生缓冲区溢出,这是一个常见的安全隐患。 memcpy:可以复制任意内容,如 ...
AV1是一种新兴的免费视频编码标准,它由开放媒体联盟(Alliance for Open Media,简称AOM)于2018年制定,融合了Google VP10、Mozilla Daala以及Cisco Thor三款开源项目的成果。据说在实际测试中,AV1标准比H.265(HEVC)的压缩率提升了 ...
OBS是一个开源的直播录制软件,英文全称叫做Open Broadcaster Software,广泛用于视频录制、实时直播等领域。OBS不但开源,而且跨平台,兼容Windows、Mac OS、Linux等操作系统。 OBS的官网是https://obsproject.com/,录制软件名叫OBS ...
笔者做项目过程中,使用了很多关于字符串的C库中自带功能函数,极大便利了项目流程。再次做一个小结,之后若有增加会继续补充。 所需采用函数 序号 函数/描述 1 char *strcat(char *dest, const char *src) 【char *strncat(char *dest, co ...
条件编译(也称为预处理)是一种在编译阶段控制代码是否包含进最终编译单元的技术。这通常通过使用预处理器指令(如#if, #ifdef, #ifndef, #else, #elif, 和 #endif)来完成。而条件编译通常是和宏联系在一起,因此说宏带有不用来回切换,宏替换发生在编译的预处理阶段,省 ...
《FFmpeg开发实战:从零基础到短视频上线》一书提到:通常情况下,在视频流解析之后,从AVCodecContext结构得到的宽高就是视频画面的宽高。然而有的视频文件并非如此,如果按照AVCodecContext设定的宽高展示视频,会发现画面被压扁或者拉长了。比如该书第10章源码playsync. ...
AVS3是中国AVS工作组制定的第三代音视频编解码技术标准,也是全球首个已推出的面向8K及5G产业应用的视频编码标准。AVS工作组于2019年3月9日完成第三代AVS视频标准(AVS3)基准档次的制订工作,参考软件的测试表明,AVS3基准档次的性能比上一代标准AVS2和HEVC提升了约30%。 l ...
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <sys/mman.h> #incl ...
JPEG库的移植(arm平台) 目录JPEG库的移植(arm平台)介绍头文件及全局变量1、图片显示2、其他图片压缩到jpg图片3、主函数及验证程序输出结果 介绍 图解 头文件及全局变量 #include <stdio.h> #include <stdlib.h> #include <sys/type ...
AVS3是中国AVS工作组制定的第三代音视频编解码技术标准,也是全球首个已推出的面向8K及5G产业应用的视频编码标准。AVS工作组于2019年3月9日完成第三代AVS视频标准(AVS3)基准档次的制订工作,参考软件的测试表明,AVS3基准档次的性能比上一代标准AVS2和HEVC提升了约30%。 l ...
目录关于时间的函数及tm结构体描述对函数的简单理解操作函数功能实现 关于时间的函数及tm结构体描述 time.h头文件中常用的几个函数描述如下: 序号 函数&描述 1 time_t time(time_t *tloc)最基础的函数,计算当前时间,并返回成 time_t(aka long int)格式 ...
/******************************************************************************************************** * * file name: Zqh_顺序表.c * author : keyword2 ...
删除A中与B相同的元素 目录删除A中与B相同的元素程序验证输出结果 程序 #include <stdio.h> /******************************************************************* * * file name: 删除A中与B相同的元 ...