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
网友评论