《ffplay的数据结构分析》
《ffplay分析(从启动到读取线程的操作)》
《ffplay分析(视频解码线程的操作)》
《ffplay分析(音频解码线程的操作)》
《ffplay 分析(音频从Frame(解码后)队列取数据到SDL输出)》
《ffplay分析 (视频从Frame(解码后)队列取数据到SDL输出)》
《ffplay分析 (音视频同步:主时钟为音频)》
《ffplay分析 (seek操作处理)》
《ffplay源码(版本:ffmpeg-4.2.1)》
ffplay分析 (暂停 / 播放处理)
- 一、分析:
- 1、read_thread():线程读取线程暂停时的操作
- 2、audio_decode_frame():sdl_audio_callback()调用audio_decode_frame()判断is->paused
- 3、sdl_audio_callback():SDL回调函数根据audio_decode_frame()返回值写入空白数据到SDL
- 4、video_refresh():判断paused不进行显示下一帧
- 5、event_loop():(暂停 / 播放控制)SDLK_p、SDLK_SPACE事件处理
- 6、stream_toggle_pause():(暂停 / 播放控制)stream_toggle_pause()暂停与播放时的时钟控制处理
一、分析:
(1)读取数据线程暂停时:根据Packet队列是否达到特定的大小后就不再继续读取数据。
(2)音频播放线程暂停时:根据paused标志判断写入空白数据到SDL。
(3)视频播放线程暂停时:根据paused标志判断不继续显示下一帧。
1、read_thread():线程读取线程暂停时的操作
2、audio_decode_frame():sdl_audio_callback()调用audio_decode_frame()判断is->paused
3、sdl_audio_callback():SDL回调函数根据audio_decode_frame()返回值写入空白数据到SDL
4、video_refresh():判断paused不进行显示下一帧
5、event_loop():(暂停 / 播放控制)SDLK_p、SDLK_SPACE事件处理