视频上到什么地方可以做网站链接,南山品牌网站建设企业,网站建设实训建议,企业网站展示论文介绍 在本系列#xff0c;我打算花大篇幅讲解我的 gitee 项目音视频播放器#xff0c;在这个项目#xff0c;您可以学到音视频解封装#xff0c;解码#xff0c;SDL渲染相关的知识。您对源代码感兴趣的话#xff0c;请查看基于FFmpeg和SDL的音视频播放器
如果您不理解本… 介绍 在本系列我打算花大篇幅讲解我的 gitee 项目音视频播放器在这个项目您可以学到音视频解封装解码SDL渲染相关的知识。您对源代码感兴趣的话请查看基于FFmpeg和SDL的音视频播放器
如果您不理解本文可参考我的前一篇文章音视频项目—基于FFmpeg和SDL的音视频播放器解析十五 解析 接着上文我们继续解析函数 fill_audio_pcm 。
is-swr_ctx swr_alloc_set_opts(NULL, is-dst_tgt.channel_layout,(enum AVSampleFormat)is-dst_tgt.fmt,is-dst_tgt.freq,frame-channel_layout,(enum AVSampleFormat)frame-format,frame-sample_rate,0, NULL);
if(!is-swr_ctx || swr_init(is-swr_ctx) 0){swr_free((SwrContext**)(is-swr_ctx));return;
}
swr_alloc_set_opts 分配 SwrContext。
如果没分配或者初始化 swrcontext 失败则释放并返回。
if(is-swr_ctx){const uint8_t** in (const uint8_t**) frame-extended_data;uint8_t** out is-audio_buf1;int out_samples frame-nb_samples * is-dst_tgt.freq / frame-sample_rate 256;int out_bytes av_samples_get_buffer_size(NULL, is-dst_tgt.channels, out_samples, is-dst_tgt.fmt, 0);if(out_bytes 0){return;
}
如果 swrcontext 分配且初始化成功并赋值。
然后通过 av_samples_get_buffer_size获取 buffer_size如果小于 0则返回。
好了今天就解析到这里。
欲知后事如何请听下回分解。