clash for linux
Clash 是一个使用 Go 语言编写,基于规则的跨平台代理软件核心程序。
Clash 是一个使用 Go 语言编写,基于规则的跨平台代理软件核心程序。
cmake编译生成的可执行文件与Install后的文件不同:
1 | $ md5sum build/lib/libenc.so packages/aarch64/Debug/lib/libenc.so |
在linux系统中多线程的资源同步使用互斥锁pthread_mutex_t,同时它也可以用于多进程之间的资源同步。
互斥锁的使用过程中,主要有pthread_mutex_init,pthread_mutex_destory,pthread_mutex_lock,pthread_mutex_unlock这几个函数以完成锁的初始化,锁的销毁,上锁和释放锁操作。
CMA
,Contiguous Memory Allocator,是内存管理子系统中的一个模块,预留内存的配置解析和管理内存配置。一般系统会在启动过程中,从整个memory中配置一段连续内存用于CMA,然后内核其他的模块可以通过CMA的接口API进行连续内存的分配。CMA的核心并不是设计精巧的算法来管理地址连续的内存块,实际上它的底层还是依赖内核伙伴系统这样的内存管理机制,或者说CMA是处于需要连续内存块的其他内核模块(例如DMA mapping framework)和内存管理模块之间的一个中间层模块,主要功能包括:
dynamic debug
(dyndbg)是内核提供的一个调试功能,允许动态的开关内核打印输出,包含的API:pr_debug()
、dev_dbg()
、print_hex_dump_debug()
、print_hex_dump_bytes()
等。
dynamic debug通过设置/dynamic_debug/control文件来控制内核输出,有多种匹配的条件:文件名,函数名,行号,模块名和输出字符的格式;
视频编解码分析工具,主要针对AVC/HEVC码流的分析
DPB
全称 Decoded Picture Buffer,即解码图片缓存区。
在做视频解码时,需要将最近的若干幅参考帧
缓存起来,这个缓冲区就叫做DPB
。解码已经完成的图像被缓存在DPB中,供后续帧用作参考图像,因此,解码器需要按照一定的规则对DPB中的图像进行管理。
在H264中参考帧最多可以存储16帧
参考帧。
POC(picture order count):图像播放顺序号,在编解码中视频编码顺序
与视频的播放顺序
,并不完全相同.
视频编码时,如果采用了B帧编码,由于B帧很多时候都是双向预测得来的,这时会先编码B帧的后向预测图像(P帧),然后再进行B帧编码,因此会把视频原来的播放顺序打乱,以新的编码顺序输出码流而在解码断接收到码流后,需要把顺序还原成原本的播放顺序,以输出正确的视频。
B帧的存在导致播放顺序POC和解码顺序frame_num不一致