AVPacket相关函数介绍
转载: https://www.jianshu.com/p/bb6d3905907e
操作AVPacket的函数大约有30个,主要分为:AVPacket的创建初始化,AVPacket中的data数据管理(clone,free,copy),AVPacket中的side_data数据管理。 void av_init_packet(AVPacket *pkt); 初始化packet的值为默认值,该函数不会影响data引用的数据缓存空间和size,需要单独处理。 int av_new_packet(AVPacket *pkt, int size); av_init_packet的增强版,不但会初始化字段,还为data分配了存储空间 AVPacket *av_packet_alloc(void); 创建一个AVPacket,将其字段设为默认值(data为空,没有数据缓存空间)。 void av_packet_free(AVPacket **pkt); 释放使用av_packet_alloc创建的AVPacket,如果该Packet有引用计数(packet->buf不为空),则先调用av_packet_unref。 AVPacket *av_packet_clone(const AVPacket *src); 其功能是av_packet_alloc和av_packet_ref int av_copy_packet(AVPacket *dst, const AVPacket *src); 复制一个新的packet,包括数据缓存 int av_copy_packet_side_data(AVPacket *dst, const AVPacket *src); 初始化一个引用计数的packet,并指定了其数据缓存 int av_grow_packet(AVPacket *pkt, int grow_by); 增大Packet->data指向的数据缓存 void av_shrink_packet(AVPacket *pkt, int size); 减小Packet->data指向的数据缓存 3.1 废弃函数介绍 ------> av_dup_packet和av_free_packet int av_dup_packet(AVPacket *pkt); 复制src->data引用的数据缓存,赋值给dst。也就是创建两个独立packet,这个功能现在可用使用函数av_packet_ref来代替 void av_free_packet(AVPacket *pkt); 释放packet,包括其data引用的数据缓存,现在可以使用av_packet_unref代替 3.2 函数对比 --------->av_free_packet和av_packet_free void av_free_packet(AVPacket *pkt); 只是清空里边的数据内容,内存地址仍然在。我的版本是3.3已经废弃,所以用av_packet_unref替代。 如果不清空会发生什么情况呢,举个简单的例子,一个char数组大小为128,里面有100个自己的内容。第二次使用你没有清空第一次的内容,第二次的数据大小为60,那么第一次的最后40个字节的数据仍会保留,造成数据冗余,极大可能对你的处理造成影响(这个跟自己的处理有关系,并不一定)。 void av_packet_free(AVPacket **pkt); 类似于free(p); p = Null;不仅清空内容还清空内存(一般就是如果用了av_packet_alloc后就要调用av_packet_free来释放。但如果有引用计数,在调用av_packet_free前一般先调用av_packet_unref) 作者:片片碎 链接:https://www.jianshu.com/p/bb6d3905907e 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架