AVPacketList结构体和AVPacketQueue结构体

本文详细介绍了FFmpeg中用于管理音视频数据包的AVPacketQueue和PacketQueue结构,包括它们的定义、作用以及如何在应用程序中实现类似功能。通过对比分析,读者将了解到如何高效地组织和操作音视频流数据。

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

1 AVPacketList结构


typedef struct AVPacketList { 
    AVPacket pkt;             
    struct AVPacketList *next;
} AVPacketList;



这个结构体就是AVPacket结构的一个链表的节点,叫做AVPacket的队列。


2 AVPacketQueue结构

位于源码的libavdevice/cklink_common.h中的结构体,这个不是给程序员用的(仅仅给开发这个开源项目的人员使用),所以只存在于源码的头文件中,并没有在install的include目录下。


typedef struct AVPacketQueue {
    AVPacketList *first_pkt, *last_pkt;   
    int nb_packets;
    unsigned long long size;
    int abort_request;
    pthread_mutex_t mutex;
    pthread_cond_t cond;
    AVFormatContext *avctx;
} AVPacketQueue;
但是,在我们学习ffmpge官网的那个SDL的tutorial的时候,在其中提到了PacketQueue结构,这个是应用程序员自己定义的,结构体如下,很显然是参考了上面的这个AVPacketQueue。
typedef struct PacketQueue {
  AVPacketList *first_pkt, *last_pkt;  //有点像链表的表头和表尾指针
  int nb_packets;
  int size;
  SDL_mutex *mutex;
  SDL_cond *cond; //两把锁用来实现这个全局结构体的访问控制
} PacketQueue;






转载于:https://my.oschina.net/u/1024767/blog/406091

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值