音视频开发中的队列实现

本文介绍了如何使用C语言实现音视频开发中的队列,包括最小队列的结构设计、队列的压入和获取操作,以及如何处理空队列和扩展功能,强调了线程安全的重要性。
摘要由CSDN通过智能技术生成

〇、参考

《音视频开发进阶指南:基于Android与iOS平台的实践》:7.2.1 音频队列的实现

一、最小队列

  • 使用C语言

    • C++类中的方法,对应到C中则为,结构体中的函数指针类型的属性

    • 结构体中的其他属性,称为常规属性

  • 使用链表实现,将队列元素作为有效数据封装到链表节点中,最终连接成的链表就是一个队列

typedef struct PacketQueue {
	PacketList *mFirst;
  	PacketList *mLast;
  	Mutex      *mMutex;
  	Cond       *mCond;
  	int (*packet_queue_put)(PacketQueue *que, Packet *pkt);
  	int (*packet_queue_get)(PacketQueue *que, Packet *pkt, int block);
} PacketQueue;

1.0 自定义链表(节点)类型

链表的其中一个成员也是一个链表,由于这种特殊结构的存在,后面我们将链表节点类型和链表类型当成一回事,可以混用。

typedef struct PacketList{
	Packet *pkt;
	PacketList *next;
} PacketList;

1.1 队列常规属性

  1. 头节点mFirst&#

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值