文章目录
整体架构概览
FFplay采用生产者-消费者模型与多线程解耦设计:
- 数据生产者:
read_thread()从文件/网络读取原始数据包(AVPacket),按流类型分发到对应PacketQueue(如videoq、audioq)。 - 数据消费者:
video_thread()解码视频并写入pictqaudio_thread()解码音频并写入sampq
- 同步与渲染:
- 视频通过主循环调用
video_refresh()从pictq取帧显示 - 音频通过SDL回调
sdl_audio_callback()从sampq取帧播放
- 视频通过主循环调用
- 统一抽象:解码逻辑通过
Decoder结构和decoder_decode_frame()函数实现。
订阅专栏 解锁全文
3万+

被折叠的 条评论
为什么被折叠?



