简析video_thread
2013-12-13 16:50
260 查看
static int video_thread(void *arg) { VideoState *is = arg; AVPacket pkt1, *pkt = &pkt1; int len1, got_picture; AVFrame *frame= avcodec_alloc_frame(); double pts; for(;;) { //不停的从视频PacketQueue 队列中取出视频Packet if (packet_queue_get(&is->videoq, pkt, 1) < 0) break; //调用AVCodecContext下AVCodec接口的decode()函数解码视频Packet len1 = avcodec_decode_video(is->video_st->codec, frame, &got_picture, pkt->data, pkt->size); //got_picture = 0时即解码没有一帧的视频,decoder会将Packet数据累积起来,和接下来的Packet共同解码视频帧 if (got_picture) { //解码得到视频一帧,后做颜色空间转化并调用SDL 库显示出来 output_picture2(is, frame, pts); } av_free_packet(pkt); } return 0; }
相关文章推荐
- 【算法导论】邻接表存储的拓扑排序
- 基于UVC的罗技摄像头C270 hack
- Multi-table Insert Using Pipelined Function
- 【算法导论】邻接表存储的拓扑排序
- C# ComboBox自动完成功能的示例
- 初识linq,lambda表达式
- Log4j 经典总结
- linux添加root权限用户
- [置顶] 算法导论 之 平衡二叉树 - 创建、插入、查询、销毁 - 递归[C语言]
- SQL2000自制row_number
- 快速排序
- simplexml_load_string() 函数
- 侃侃单片机裸奔的程序框架(转帖)
- ubuntu 13.10试用感受
- ArcGIS 3D相交工具
- extern详解
- rsync安装配置及故障解决完全教程[window, 文件同步]
- Libgdx AssetManager资源加载
- 数据库_mysql_入门
- 优秀的PHP开发者是怎样炼成的?之 懒惰是金