ffplay分析(从启动到读取线程的操作)

《ffplay的数据结构分析》
《ffplay分析(视频解码线程的操作)》
《ffplay分析(音频解码线程的操作)》

ffplay从启动到读取线程的操作分析

一、分析:

1、main():初始化ffmpeg

在这里插入图片描述

2、main():ffplay 命令行参数的解析处理

在这里插入图片描述

3、main():SDL初始化

在这里插入图片描述

4、main():解码器的冲刷Packet初始化

在这里插入图片描述

5、main():SDL创建窗口

在这里插入图片描述

6、main():打开各种流并且启动读取数据线程

在这里插入图片描述

7、stream_open():分配VideoState保存文件名

在这里插入图片描述

8、stream_open():初始化Frame队列(解码后)/Packet队列(解码前),初始化用于控制读取线程休眠的条件变量

在这里插入图片描述

9、stream_open():初始化时钟、初始化音量

在这里插入图片描述

10:stream_open():启动读取数据线程

在这里插入图片描述

11:read_thread():初始化各个流的默认索引值、初始化ffmpeg读取中断回调函数

在这里插入图片描述

12、read_thread():打开文件操作(avformat_open_input()、avformat_find_stream_info())

在这里插入图片描述
在这里插入图片描述

13、read_thread():处理是否指定播放的起始时间和是否是实时流数据

在这里插入图片描述

14、read_thread():设置各个流的流索引

在这里插入图片描述

15、read_thread():设置显示窗口宽高

在这里插入图片描述

16、read_thread():打开各个流操作

在这里插入图片描述

17、read_thread():实时流判断设置缓冲区不限制

在这里插入图片描述

18、read_thread():循环读取数据(判断是否请求退出、是否暂停网络流操作)

在这里插入图片描述

19、read_thread():循环读取数据(判断是否有seek操作)

在这里插入图片描述

20、read_thread():循环读取数据(判断video是不是attachments_pic)

在这里插入图片描述

21、read_thread():循环读取数据(判断队列是否已经有足够的数据)

在这里插入图片描述

22、read_thread():循环读取数据(判断是否已经播放完毕)

在这里插入图片描述

23、read_thread():循环读取数据(执行av_read_frame()读取帧数据)

在这里插入图片描述

24、read_thread():循环读取数据(判断帧是否在播放范围内)

在这里插入图片描述

25、read_thread():循环读取数据(线程退出处理)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37599645/article/details/112964349