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了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值