在上一篇介绍了ffplay的main函数与三个主要线程的创建,这一篇主要介绍ffplay的队列。
两个队列PacketQueue、FrameQueueffplay源码主要有两个队列PacketQueue,FrameQueue ,在说这两个队列前,我们得先搞清楚ffmpeg的两个数据结构,AVPacket 与AVFrame.
AVPacketAVPacket是压缩的数据,通常指解码前或编码后的数据,对于播放器开发,那么就是解封装后,解码前的数据;如果是做视频录制,那么就是编码后的压缩数据。
AVFrameAVFrame是AVPacket经过解码后的数据,av_read_frame得到压缩的数据包AVPacket,一般有三种压缩的数据包(视频、音频和字幕),都用AVPacket表示,然后调用send和recive对AVPacket进行解码得到AVFrame。 所以在ffplay中PacketQueue,FrameQueue 的关系如下: 本篇主要介绍PacketQueue ffplay用PacketQueue保存解封装后解码前的数据ÿ