1 AVPacketList结构 程序员
typedef struct AVPacketList { AVPacket pkt; struct AVPacketList *next; } AVPacketList;
2 AVPacketQueue结构 学习
位于源码的libavdevice/cklink_common.h中的结构体,这个不是给程序员用的(仅仅给开发这个开源项目的人员使用),因此只存在于源码的头文件中,并无在install的include目录下。 spa
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;