您当前的位置: 首页 > 

令狐掌门

暂无认证

  • 4浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ffplay 源码分析(七):音频播放线程分析

令狐掌门 发布时间:2021-08-12 00:23:49 ,浏览量:4

  音频播放是一个被动的过程,声卡设备主动向程序要数据,而不是程序主动发数据到声卡。在ffmpeg解码一个AVPacket的音频到AVFrame后,在AVFrame中存储的音频数据大小与SDL回调所需要的数据大概率是不相等的,这就需要再增加一级缓冲区解决问题。

  在audio输出时,主要模型如下图: 在这里插入图片描述   在这个模型中,sdl通过sdl_audio_callback函数向ffplay要音频数据,ffplay将sampq中的数据通过audio_decode_frame函数取出,放入is->audio_buf,然后送出给sdl。在后续回调时先找audio_buf要数据,数据不足的情况下,再调用audio_decode_frame补充audio_buf

注意audio_decode_frame这个函数名很具有迷惑性,实际上,这个函数是没有解码功能的!这个函数主要是处理sampq到audio_buf的过程,最多只是执行了重采样。

  关于SDL的音频采样,播放可以看看本专栏前面的博客,了解了大致的audio输出模型后,再看详细代码。

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0710s