FFmpeg队列之add_to_pktbuf入队函数浅显分析

本文分析FFmpeg中用于维护FIFO队列的add_to_pktbuf函数,该函数通过两个指针实现队列操作。功能包括检查队列大小限制、更新剩余容量,并根据队列状态调整头部和尾部指针。入队操作会返回新节点的内存地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



俺觉得ffmpeg最牛逼的地方就在于只用两个指针来维护一个FIFO的队列就好了。

比如这个入队函数的功能就是入队,功能及其简化,其实也是限制队列大小的,比如说

raw buffer的总共大小(就是pkt的size大小的和),最共最多有raw_packet_buffer_remaining_size的初始值这么大,

当取走一个节点,那么raw_packet_buffer_remaining_size 的当前值会加大pkt.size;

当为raw buffer存入一个新的节点,raw_packet_buffer_remaining_size的当前值就就减小了pkt.size。


入队的时候,会判断队列是否空,当空的时候,会改变对头指针,

不管队列是否空,队尾指针,始终会被改变。

因此,add_to_pktbuf 传入的是对头指针的地址和队尾指针的地址,进行修改。

当然,新加入的pkt在入队后的内存地址会被函数返回。

static AVPacket *add_to_pktbuf(AVPacketList **packet_buffer, AVPacket *pkt,
                               AVPacketList **plast_pktl){

                               printf("### IN add_to_pktbuf  BEGIN \n");
    AVPacketList *pktl = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等风来不如迎风去

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值