图片队列 线程: Video_thread() { avfilter_graph_allc(); 滤镜初始化 get_video_frame(); 得到包中的帧(一幅图) queue_picture(); 此帧入图片队列(vp) { 抛出事件--调用 event_loop { alloc_picture(); 开辟新帧,内存空间 (vp中已有值) } 两个vp指向同一空间,开辟的vp即为图片入队的vp(此时为bmp)最后将vp值赋予 pict. data/linesize,接着入队(av_picture_copy(需要使用滤镜处理,然后入队)/ sws_scale(直接入队,scale前的代码均为配置)来入队) } } StreamOpen { read_thread(); 读图片队列中的图片 { av_read_frame(); 读帧 } } 显示: Video_refresh { video_display() { video_open(); } } t_main: { 启动:'读取帧’线程 { 启动:'收包、帧入队’线程(收帧、读帧); } 为帧分配空间 }
|
|