依赖检查
config中看到最多的是:
...
nvenc_deps="ffnvcodec"
nvenc_deps_any="libdl LoadLibrary"
nvenc_encoder_deps="nvenc"
...
h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
h264_cuvid_decoder_deps="cuvid"
h264_cuvid_decoder_select="h264_mp4toannexb_bsf"
h264_mediacodec_decoder_deps="mediacodec"
h264_mediacodec_decoder_select="h264_mp4toannexb_bsf h264_parser"
h264_mf_encoder_deps="mediafoundation"
h264_mmal_decoder_deps="mmal"
h264_nvenc_encoder_deps="nvenc"
h264_nvenc_encoder_select="atsc_a53"
...
这个主要用来做依赖检查,比如上面的nvenc_deps="ffnvcodec"表示:
nvenc这个模块依赖ffnvcodec,其余以此类推。
依赖类型:
_deps:必须全部满足的依赖(如 flv_decoder 依赖 h264_decoder)。
_deps_any:只需满足任意一个的依赖。
_conflict:不能同时存在的冲突依赖。
_select:强制启用的依赖(如 flv_decoder 强制启用 h264_parser)。
_suggest:建议启用的可选依赖。
_if 和 _if_any:条件启用的依赖。
依赖检查函数
核心检查在下边:
- 首先我们看到list列表是从相关的allxxx.c文件中获取到的,然后添加到对应的list中
FILTER_LIST=$(find_filters_extern libavfilter/allfilters.c)
OUTDEV_LIST=$(find_things_extern muxer AVOutputFormat libavdevice/alldevices.c outdev)
INDEV_LIST=$(find_things_extern demuxer AVInputFormat libavdevice/alldevices.c indev)
MUXER_LIST=$(find_things_extern muxer AVOutputFormat libavformat/allformats.c)
DEMUXER_LIST=$(find_things_extern demuxer AVInputFormat libavformat/allformats.c)
ENCODER_LIST=$(find_things_extern encoder AVCodec libavcodec/allcodecs.c)
DECODER_LIST=$(find_things_extern decoder AVCodec libavcodec/allcodecs.c)
CODEC_LIST="
$ENCODER_LIST
$DECODER_LIST
"
PARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parsers.c)
BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)
HWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h)
PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c)
...
AVCODEC_COMPONENTS_LIST="
$BSF_LIST
$DECODER_LIST
$ENCODER_LIST
$HWACCEL_LIST
$PARSER_LIST
"
...
check_deps $CONFIG_LIST \
$CONFIG_EXTRA \
$HAVE_LIST \
$ALL_COMPONENTS \
# The cfg loop is very hot (severa

最低0.47元/天 解锁文章
2011

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



