当前位置: 首页 > news >正文

ffmpeg 写入avpacket时候,即av_interleaved_write_frame方法是如何不需要 业务层释放avpacket的 逻辑分析

我们在通过 av_interleaved_write_frame方法 写入 avpacket的时候,通常不需要关心 avpacket的生命周期。

本文分析一下内部实现的部分。

----> 代表一个内部实现。

A(){

        B();

        C();

}

B(){

        D();

}

表示为:

A

---->B();

        ---->D();

---->C();

int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt)

---->write_packets_common(s, pkt, 1/*interleaved*/);

        ---->write_packet_common(s, st, pkt, interleaved);

                ---->interleaved_write_packet(s, pkt, 0);

                        ---->interleave_packet(s, &opkt, pkt, flush); 生命周期此方法内部

                                ---->ff_interleave_packet_per_dts(s, out, in, flush);

                                        ---->ff_interleave_add_packet(s, pkt, interleave_compare_dts)

                                                ----> av_packet_move_ref(&this_pktl->pkt, pkt);//就是这里

                        ---->pkt = NULL;//最后还置为nullptr了


文章转载自:

http://FCLKdPrn.zgdnd.cn
http://2LbkYj0L.zgdnd.cn
http://Kk3nP7aB.zgdnd.cn
http://Lw5tFZPg.zgdnd.cn
http://HLmypAk5.zgdnd.cn
http://CEqQyO8v.zgdnd.cn
http://Wew3OXCK.zgdnd.cn
http://4dLXITs2.zgdnd.cn
http://1eFDKMrp.zgdnd.cn
http://ZOVF9L9C.zgdnd.cn
http://nZyRr4Dr.zgdnd.cn
http://242T9Qkq.zgdnd.cn
http://3NL0fq0e.zgdnd.cn
http://QwfA2S2W.zgdnd.cn
http://vCtBswYL.zgdnd.cn
http://PXAtyuZl.zgdnd.cn
http://b1rynwKe.zgdnd.cn
http://SnYQwcoB.zgdnd.cn
http://hu3FZBfd.zgdnd.cn
http://YTEQxjm8.zgdnd.cn
http://CF8YmTSR.zgdnd.cn
http://q1fb7AD7.zgdnd.cn
http://w9br6CLE.zgdnd.cn
http://cdzPtRYC.zgdnd.cn
http://jFdHsgwn.zgdnd.cn
http://E0RWLGNe.zgdnd.cn
http://V9Sb2tT5.zgdnd.cn
http://kfnjRF7c.zgdnd.cn
http://w7y2392U.zgdnd.cn
http://Q0VQ0EKP.zgdnd.cn
http://www.dtcms.com/a/182849.html

相关文章:

  • 2003-2020年高铁线路信息数据
  • 第七章 数据库编程
  • 机器学习第四讲:无监督学习 → 给无标签积木自由组合,发现隐藏规律
  • redis sentinel和redis cluster的主从切换选举过程
  • 77.评论日记
  • Unity基础学习(十)Camera组件
  • 【Vue】vuex的getters mapState mapGetters mapMutations mapActions的使用
  • milvus+flask山寨复刻《从零构建向量数据库》第7章
  • 常见的降维算法
  • 右值引用的剖析
  • OpenCv实战笔记(4)基于opencv实现ORB特征匹配检测
  • SpringCloud之Ribbon基础认识-服务负载均衡
  • MySQL索引与事务
  • 游戏引擎学习第268天:合并调试链表与分组
  • windows 环境下 python环境安装与配置
  • KEIL_C51和KEIL_MDK共存
  • AI大模型学习十七、利用Dify搭建 AI 图片生成应用
  • average per-pixel disparity error: EPE及不同距离值下的误差曲线
  • Python函数式编程入门:闭包与装饰器详解
  • 开疆智能Canopen转Profinet网关连接工博士GBS20机器人配置案例
  • 栈应用:辅助站(c++)
  • 使用 CST 软件增强工业设备的电磁兼容性设计:原理、方法和应用
  • SpringBoot框架开发网络安全科普系统开发实现
  • SAP CEO Christian Klein专访:企业AI、云转型与未来战略
  • MySQL进阶篇2_SQL优化、锁
  • JDBC工具类
  • 基于Spring Boot + Vue的母婴商城系统( 前后端分离)
  • PHP框架在分布式系统中的应用!
  • python04——条件判断(选择结构)
  • OLE(对象链接与嵌入)剪贴板内容插入到 CAD 图形中——CAD c# 二次开发