/*********
C++定义多态方式
*******/
class AVCodecBase
{
public:
virtual int init(AVCodecContext *);
virtual int decode(AVCodecContext*);
virtual int encode(AVCodecContext *, uint8_t *buf, int buf_size, void *data);
virtual int close(AVCodecContext*);
//****其他数据定义
};
int AVCodecBase::init(AVCodecContext *p)
{
//初始化...
}
int AVCodecBase::encode(AVCodecContext *p, uint8_t *buf, int buf_size, void *data)
{
//编码...
}
int AVCodecBase::decode(AVCodecContext*p)
{
//解码...
}
int AVCodecBase::close(AVCodecContext*p)
{
//关闭...
}
//===========VC1
class VC1Codec : public AVCodecBase
{
int init(AVCodecContext *p);
int decode(AVCodecContext*p);
int encode(AVCodecContext *p, uint8_t *buf, int buf_size, void *data);
int close(AVCodecContext*p);
};
int VC1Codec::init(AVCodecContext *p)
{
//VC1实现初始化...
}
int VC1Codec::encode(AVCodecContext *p, uint8_t *buf, int buf_size, void *data)
{
//VC1实现编码...
}
int VC1Codec::
ffmpeg代码分析之2——模拟C++多态之C实现篇章
最新推荐文章于 2024-10-12 11:56:41 发布
本文介绍了如何使用C语言模拟C++的多态特性,以实现ffmpeg中解码编码功能。通过定义AVCodecBase类及其子类VC1Codec和WMV3Codec,展示了C++的多态性。接着,使用C语言结构体AVCodec来模拟这一过程,创建解码器并实现初始化、解码和关闭等功能。

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



