ffmpeg内存模型
文章目录
- 展示图
- 拷贝packet
- 重要!!!
- avpacket.c相关函数
- av_packet_alloc 简单的赋值 里面的还有没有进行初始化的指针
- av_packet_ref
展示图
拷贝packet
拷贝packet有两种情况
1: 两个packet的buf引用的是同一个数据缓冲空间,类似与浅拷贝
2:两个packet的buf引用的是不同的数据缓冲空间,类似与深拷贝
重要!!!
当我们进行浅拷贝的时候 AVBuffer里面的 refcount就会+1 表示有多一个指向此范围的结构体
当释放引用共享空间的packet的时候 这个计数就会-1 当计数为0的时候 就会释放掉引用的缓存空间
AVFrame也是相同的机制
注意 重要内容为
真实的数据为 avpacket 里面的avbufferRef 里面的AvBuffer
avpacket.c相关函数
av_packet_alloc 简单的赋值 里面的还有没有进行初始化的指针
av_packet_ref
如果这里有数据的话 则会简单的进行指针的拷贝
然后将相关的引用计数给+1
avframe的逻辑也差不多如此
av_packet_copy_props 拷贝全部属性AVPacket
av_packet_clone克隆一份 实际就是加上申请空间然后再进行数据赋值