ffmpeg面向对象学习
ffmpeg虽然是c语言写的,但是和linux内核源码一样采用的是面向对象的思想,所以看了下有必要研究下。
云会宾
云无心
展开
-
ffmpeg面向对象-待定
oopc中,这种继承是个老套路,也是经典讨论,linux中,还有rtthread RTOS的内核实现中常用这种套路,这个应该是oopc的经典。可以看到它实际分配的内存是FFFormatContext 然后返回的地址是AVFormatContext *类型的,这就是典型的oopc的。可以看到第1个成员就是AVFormatContext 类型的,avformat_alloc_context返回的就是这个成员的地址,其实。所谓接口继承,就是创建子类返父类的地址,这是多态实现的基础。原创 2024-09-08 12:57:01 · 113 阅读 · 0 评论 -
0.ffmpeg面向对象oopc
这让我想起来一件好玩的事,有些搞linux内核驱动的只会c的开发人员不知道linux内核是面向对象的,他们看到智能指针,继承,this指针也不认识。因为查rtsp相关问题,接触了下ffmpeg源码,发现它和linux内核一样,虽然都是c写的,但是都是面向对象的思想,c的面向对象称之为oopc。这就是怎么说,这个代码是c写的没错,但是它采用的思想是不受非c面向过程的束缚,非c半生思想——面向过程。也就是说采用的思想超出了这个编程语言的伴生思想,那就不能仅仅会这门语言了。原创 2024-09-06 08:59:34 · 348 阅读 · 0 评论