ffplay 源码分析FrameQueue(视频...)

1、结构  

          typedef struct FrameQueue {

                  Frame queue[FRAME_QUEUE_SIZE];

                   int rindex;//queue数组的读取位

                   int windex;//queue数组的写入位

                    int size;  //queue实际有数据个数

                    int max_size;//queue最大个数

                    int keep_last;//看初始化

                    int rindex_shown;//已经读取的个数,读数之后一直为1

                    SDL_mutex *mutex;

                     SDL_cond *cond;

                     PacketQueue *pktq;

                } FrameQueue;

          if (frame_queue_init(&is->pictq, &is->videoq, VIDEO_PICTURE_QUEUE_SIZE, 1) < 0)

            goto fail;

           if (frame_queue_init(&is->subpq, &is->subtitleq, SUBPICTURE_QUEUE_SIZE, 0) < 0)

            goto fail;

           if (frame_queue_init(&is->sampq, &is->audioq, SAMPLE_QUEUE_SIZE, 1) < 0)

           goto fail;

          初始化得知视频是数组个数为三,rindex标记读取位,windex标记插入位,则数组三个循环读取写入。

2、static int queue_picture() 写入帧、static Frame *frame_queue_peek_last() 读取帧

     static void frame_queue_push() size计数加1 、static void frame_queue_next() size计数减1

你可能感兴趣的:(ffplay 源码分析FrameQueue(视频...))