ffmpeg之packet_queue_put解析

来源:互联网 发布:qq浏览器mac官方下载 编辑:程序博客网 时间:2024/05/22 06:10

首先贴下函数原型:

typedef struct AVPacketList {    AVPacket pkt;//AVPacket也是一个结构体,不多解释    struct AVPacketList *next; //next是一个AVPacketList指针} AVPacketList;

首先贴下函数原型:

typedef struct PacketQueue {  AVPacketList *first_pkt, *last_pkt;  //first_pkt,last_pkt分别是AVPacketList类型指针  int nb_packets;  int size;  SDL_mutex *mutex;  SDL_cond *cond;} PacketQueue;
首先贴下函数原型:
int packet_queue_put(PacketQueue *q, AVPacket *pkt) {  AVPacketList *pkt1;  if(av_dup_packet(pkt) < 0) {    return -1;  }  pkt1 = av_malloc(sizeof(AVPacketList));  if (!pkt1)    return -1;  pkt1->pkt = *pkt;  pkt1->next = NULL;   SDL_LockMutex(q->mutex);   if (!q->last_pkt)//判断q->last_pkt是否为空,    q->first_pkt = pkt1;        //为空的话,则让first_pkt指向这个pktl这个结构体  else    q->last_pkt->next = pkt1;//如果q->last_pkt不为空,也就是q->last_pkt指向一个pkl类型的结构体  q->last_pkt = pkt1;           //任何时候都会执行到这一句,q->last_pkt指向最新进来的pkl类型  q->nb_packets++;  q->size += pkt1->pkt.size;  SDL_CondSignal(q->cond);    SDL_UnlockMutex(q->mutex);  return 0;

图片大概就这么个意思


                                             
2 0
原创粉丝点击