Android 万能音频播放器 二 C++队列存放AvPacket
目录
前言
本文为Android万能因音音频播放器的第二篇,是上一篇文章Android 万能音频播放器 一 C++多线程解码音频数据
的延续,本文的实现功能是蒋解码出的AvPacket放到队列中,为什么放到队列中呢?生产者消费者模式嘛,还有就是容易控制播放状态,如果是在音视频播放的过程中,还可以方便做音视频同步,如果对NDK中消费者生产者模式不是很了解可以看这篇文章Android NDK C++ 实现生产者消费者模式(线程加减锁)
本章实现
解码获取AVpakcet需要耗费一定的时间,为了达到更好地播放效果(流畅度),需要把解码出来的AVpacket先缓存到队列中,播放时直接从队里里面取。。
C++队列(queue)
- 头文件 #include “queue”
- 创建队列 std::queue queue;
- 入队 queue.push(t);
- 出队T t = queue.front();//获取队头
queue.pop();
功能代码
入队
putAvpacket(AVPacket *avPacket)
{
//加锁
pthread_mutex_lock(&mutexPacket);
//入队
queuePacket