ffmpeg中的AVClass 和 AVOption入门学习

AVClass 和AVOption
ffmpeg库中源码结构体中大量使用了这两个结构体,本人菜鸟一枚,正学习入门,特写一遍文章分析一下其来龙去脉
其主要作用是通过传入字符串修改或获取结构体内部成员变量的值。试想如果没有一套可复用的机制,每个结构体都需要写一套函数去set和get其成员变量的值,这会导致代码臃肿。
源代码实例:
源代码中的范例
每一个想复用该机制的结构体需保证其第一个成员变量为AVClass *,为什么呢?上图中obj为test_struct 的地址,通过它的地址就可以得到AVClass的地址,二者是一样的,这就是放在第一个成员变量的好处,得到它的地址自然就能访问它的结构体成员了
最后总结一下是怎么设置test_struct成员变量的值,通过test_struct的地址可以访问到其成员变量AVClass *class,而class保存了全局的结构体数组test_class的地址,该结构体中的option字段又保存了test_options数组的地址。test_option数组相当于一张表,可以通过查询每一行中的name找到其对应变量的地址,然后根据变量类型对其赋值。其中每一行的第二个字段为该变量对应于结构体首地址的偏移,常量为0.
能够获取到地址,自然就能通过创建相应类型的指针指向它,然后通过该指针间接赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值