赞
踩
1,创建自定义的解码器:
#include "decode.h"
#include "codec_internal.h"
typedef struct my_ctx {
int index;
}my_ctx;
static const AVClass my_class = {
.class_name = "my decoder",
.item_name = av_default_item_name,
.version = LIBAVUTIL_VERSION_INT,
};
static av_cold int my_decoder_init(AVCodecContext *avctx)
{
return 0;
}
static int my_decoder_frame(AVCodecContext *avctx,void *data,int *got_frame_ptr,AVPacket *avpkt)
{
return 0;
}
static av_cold int my_close(AVCodecContext *avctx)
{
return 0;
}
const FFCodec ff_my_decoder = {
.p.name ="mydecoder",
CODEC_LONG_NAME("my decoder"),
.p.type=AVMEDIA_TYPE_AUDIO,
.priv_data_size=sizeof(my_ctx),
.p.id=AV_CODEC_ID_MY,
.init=my_decoder_init,
.cb.decode = my_decoder_frame,
.close =my_close,
.p.capabilities=AV_CODEC_CAP_DR1,
.p.priv_class=&my_class,
};
2,在codec_id.h 中 添加 AVCodecID
AV_CODEC_ID_MY,
3,codec_desc.c 中添加描述
{
.id = AV_CODEC_ID_MY,
.type = AVMEDIA_TYPE_AUDIO,
.name = "my",
.long_name = NULL_IF_CONFIG_SMALL("my decoder"),
.props = AV_CODEC_PROP_LOSSY,
},
4, allcodecs.c 中添加注册
extern const FFCodec ff_my_decoder;
5,makefile 中 添加编译 .o文件
OBJS-$(CONFIG_MY_DECODER) += mycodec.o
6 ./configure --list-decoders 查看是否添加成功
本文适用于 ffmpeg6.1; 由于ffmpeg 近些年更新比较频繁。请根据自己实际情况使用;
感谢以下参考链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。