ffmpeg学习:avformat_alloc_context函数

ffmpeg版本:4.1

1、概述

AVFormatContext *avformat_alloc_context(void)函数用来申请AVFormatContext类型变量并初始化默认参数。申请的空间

通过void avformat_free_context(AVFormatContext *s)函数释放。

 

2、源码分析

AVFormatContext *avformat_alloc_context(void)
{
    AVFormatContext *ic;
    ic = av_malloc(sizeof(AVFormatContext));
    if (!ic) return ic;
    avformat_get_context_defaults(ic);

    ic->internal = av_mallocz(sizeof(*ic->internal));
    if (!ic->internal) {
        avformat_free_context(ic);
        return NULL;
    }
    ic->internal->offset = AV_NOPTS_VALUE;
    ic->internal->raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE;
    ic->internal->shortest_end = AV_NOPTS_VALUE;

    return ic;
}

该函数调用av_malloc申请AVFormatContext内存,调用avformat_get_context_defaults初始化默认参数,并申请和初始化ic->internal 内存。

 

static void avformat_get_context_defaults(AVFormatContext *s)
{
    memset(s, 0, sizeof(AVFormatContext)); 

    s->av_class = &av_format_context_class;//设置av_class参数,通过av_class调用av_opt_set*可设置AVFormatContext结构体

//成员变量

    s->io_open  = io_open_default;
    s->io_close = io_close_default;

    av_opt_set_defaults(s);//根据av_class->option的值设置AVFormatContext结构体成员默认值
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值