codec_descriptors,把codec id,type, name, profile放在一起
static const AVCodecDescriptor codec_descriptors[] = {
/* video codecs */
{
.id = AV_CODEC_ID_MPEG1VIDEO,
.type = AVMEDIA_TYPE_VIDEO,
.name = "mpeg1video",
.long_name = NULL_IF_CONFIG_SMALL("MPEG-1 video"),
.props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER,
},
//...
//profile,有些有定义,有些没有定义,H264的有,AC3的没有
{
.id = AV_CODEC_ID_H264,
.type = AVMEDIA_TYPE_VIDEO,
.name = "h264",
.long_name = NULL_IF_CONFIG_SMALL("H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"),
.props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_LOSSLESS | AV_CODEC_PROP_REORDER,
.profiles = NULL_IF_CONFIG_SMALL(ff_h264_profiles),
},
有意思的是通过av_get_profile_name和avcodec_profile_name这两函数获取profile的时候,怎么都是null, 最后检查,是configure的时候开了--enable-small,把这个去掉就好了。
因为profiles用到了NULL_IF_CONFIG_SMALL,所以要使用它,就得关掉。
.profiles = NULL_IF_CONFIG_SMALL(ff_h264_profiles)
网友评论