很多时候我们希望通过回调函数给ffmpeg传递码流,让它帮我们完成解码操作,要实现该功能需要定义AVIOContext和AVFormatContext对象,下面把核心代码贴出来:
if (NULL != m_pull_data_func)
{
m_avio_ctx_input = avio_alloc_context(m_avio_ctx_buffer, m_avio_ctx_buffer_size,
0, m_pull_data_func_param, m_pull_data_func, NULL, NULL);
}
else
{
break;
}
if (!m_avio_ctx_input)
{
ret = AVERROR(ENOMEM);
break;
}
m_fmt_ctx->pb = m_avio_ctx_input;
m_fmt_ctx->flags = AVFMT_FLAG_CUSTOM_IO;
ret = avformat_open_input(&m_fmt_ctx, NULL, NULL, NULL);
if (ret < 0)
{
fprintf(stderr, "Could not op