@@ -218,6 +218,7 @@ External library support:
218218 --enable-lcms2 enable ICC profile support via LittleCMS 2 [no]
219219 --enable-libaom enable AV1 video encoding/decoding via libaom [no]
220220 --enable-libaribb24 enable ARIB text and caption decoding via libaribb24 [no]
221+ --enable-libaribcaption enable ARIB text and caption decoding via libaribcaption [no]
221222 --enable-libass enable libass subtitles rendering,
222223 needed for subtitles and ass filter [no]
223224 --enable-libbluray enable BluRay reading using libbluray [no]
@@ -412,7 +413,7 @@ Toolchain options:
412413 --build-suffix=SUFFIX library name suffix []
413414 --enable-pic build position-independent code
414415 --enable-thumb compile for Thumb instruction set
415- --enable-lto use link-time optimization
416+ --enable-lto[=arg] use link-time optimization
416417 --env="ENV=override" override the environment variables
417418
418419Advanced options (experts only):
@@ -1805,6 +1806,7 @@ EXTERNAL_LIBRARY_LIST="
18051806 ladspa
18061807 lcms2
18071808 libaom
1809+ libaribcaption
18081810 libass
18091811 libbluray
18101812 libbs2b
@@ -2314,6 +2316,7 @@ SYSTEM_LIBRARIES="
23142316 bcrypt
23152317 vaapi_drm
23162318 vaapi_x11
2319+ vaapi_win32
23172320 vdpau_x11
23182321"
23192322
@@ -2524,7 +2527,6 @@ CMDLINE_SELECT="
25242527 debug
25252528 extra_warnings
25262529 logging
2527- lto
25282530 optimizations
25292531 rpath
25302532 stripping
@@ -2774,7 +2776,7 @@ asv1_encoder_select="aandcttables bswapdsp fdctdsp pixblockdsp"
27742776asv2_decoder_select=" blockdsp bswapdsp idctdsp"
27752777asv2_encoder_select=" aandcttables bswapdsp fdctdsp pixblockdsp"
27762778atrac1_decoder_select=" sinewin"
2777- av1_decoder_select=" av1_frame_split_bsf cbs_av1"
2779+ av1_decoder_select=" av1_frame_split_bsf cbs_av1 atsc_a53 "
27782780bink_decoder_select=" blockdsp hpeldsp"
27792781binkaudio_dct_decoder_select=" wma_freqs"
27802782binkaudio_rdft_decoder_select=" wma_freqs"
@@ -2898,6 +2900,7 @@ notchlc_decoder_select="lzf"
28982900nuv_decoder_select=" idctdsp"
28992901opus_decoder_deps=" swresample"
29002902opus_encoder_select=" audio_frame_queue"
2903+ pdv_decoder_deps=" zlib"
29012904png_decoder_select=" inflate_wrapper"
29022905png_encoder_select=" deflate_wrapper llvidencdsp"
29032906prores_decoder_select=" blockdsp idctdsp"
@@ -2998,6 +3001,7 @@ cuvid_deps="ffnvcodec"
29983001d3d11va_deps=" dxva_h ID3D11VideoDecoder ID3D11VideoContext"
29993002dxva2_deps=" dxva2api_h DXVA2_ConfigPictureDecode ole32 user32"
30003003ffnvcodec_deps_any=" libdl LoadLibrary"
3004+ mediacodec_deps=" android"
30013005nvdec_deps=" ffnvcodec"
30023006vaapi_x11_deps=" xlib_x11"
30033007videotoolbox_hwaccel_deps=" videotoolbox pthreads"
@@ -3158,7 +3162,7 @@ aac_mf_encoder_deps="mediafoundation"
31583162ac3_mf_encoder_deps=" mediafoundation"
31593163av1_cuvid_decoder_deps=" cuvid CUVIDAV1PICPARAMS"
31603164av1_mediacodec_decoder_deps=" mediacodec"
3161- av1_mediacodec_decoder_extralibs= " -landroid "
3165+ av1_mediacodec_encoder_deps= " mediacodec "
31623166av1_nvenc_encoder_deps=" nvenc NV_ENC_PIC_PARAMS_AV1"
31633167av1_nvenc_encoder_select=" atsc_a53"
31643168h263_v4l2m2m_decoder_deps=" v4l2_m2m h263_v4l2_m2m"
@@ -3168,10 +3172,8 @@ h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
31683172h264_cuvid_decoder_deps=" cuvid"
31693173h264_cuvid_decoder_select=" h264_mp4toannexb_bsf"
31703174h264_mediacodec_decoder_deps=" mediacodec"
3171- h264_mediacodec_decoder_extralibs=" -landroid"
31723175h264_mediacodec_decoder_select=" h264_mp4toannexb_bsf h264_parser"
31733176h264_mediacodec_encoder_deps=" mediacodec"
3174- h264_mediacodec_encoder_extralibs=" -landroid"
31753177h264_mediacodec_encoder_select=" h264_metadata"
31763178h264_mf_encoder_deps=" mediafoundation"
31773179h264_mmal_decoder_deps=" mmal"
@@ -3190,10 +3192,8 @@ hevc_amf_encoder_deps="amf"
31903192hevc_cuvid_decoder_deps=" cuvid"
31913193hevc_cuvid_decoder_select=" hevc_mp4toannexb_bsf"
31923194hevc_mediacodec_decoder_deps=" mediacodec"
3193- hevc_mediacodec_decoder_extralibs=" -landroid"
31943195hevc_mediacodec_decoder_select=" hevc_mp4toannexb_bsf hevc_parser"
31953196hevc_mediacodec_encoder_deps=" mediacodec"
3196- hevc_mediacodec_encoder_extralibs=" -landroid"
31973197hevc_mediacodec_encoder_select=" hevc_metadata"
31983198hevc_mf_encoder_deps=" mediafoundation"
31993199hevc_nvenc_encoder_deps=" nvenc"
@@ -3227,6 +3227,7 @@ mpeg2_v4l2m2m_decoder_deps="v4l2_m2m mpeg2_v4l2_m2m"
32273227mpeg4_crystalhd_decoder_select=" crystalhd"
32283228mpeg4_cuvid_decoder_deps=" cuvid"
32293229mpeg4_mediacodec_decoder_deps=" mediacodec"
3230+ mpeg4_mediacodec_encoder_deps=" mediacodec"
32303231mpeg4_mmal_decoder_deps=" mmal"
32313232mpeg4_omx_encoder_deps=" omx"
32323233mpeg4_v4l2m2m_decoder_deps=" v4l2_m2m mpeg4_v4l2_m2m"
@@ -3239,6 +3240,7 @@ vc1_qsv_decoder_select="qsvdec"
32393240vc1_v4l2m2m_decoder_deps=" v4l2_m2m vc1_v4l2_m2m"
32403241vp8_cuvid_decoder_deps=" cuvid"
32413242vp8_mediacodec_decoder_deps=" mediacodec"
3243+ vp8_mediacodec_encoder_deps=" mediacodec"
32423244vp8_qsv_decoder_select=" qsvdec"
32433245vp8_rkmpp_decoder_deps=" rkmpp"
32443246vp8_vaapi_encoder_deps=" VAEncPictureParameterBufferVP8"
@@ -3247,6 +3249,7 @@ vp8_v4l2m2m_decoder_deps="v4l2_m2m vp8_v4l2_m2m"
32473249vp8_v4l2m2m_encoder_deps=" v4l2_m2m vp8_v4l2_m2m"
32483250vp9_cuvid_decoder_deps=" cuvid"
32493251vp9_mediacodec_decoder_deps=" mediacodec"
3252+ vp9_mediacodec_encoder_deps=" mediacodec"
32503253vp9_qsv_decoder_select=" qsvdec"
32513254vp9_rkmpp_decoder_deps=" rkmpp"
32523255vp9_vaapi_encoder_deps=" VAEncPictureParameterBufferVP9"
@@ -3332,6 +3335,7 @@ libaom_av1_decoder_deps="libaom"
33323335libaom_av1_encoder_deps=" libaom"
33333336libaom_av1_encoder_select=" extract_extradata_bsf"
33343337libaribb24_decoder_deps=" libaribb24"
3338+ libaribcaption_decoder_deps=" libaribcaption"
33353339libcelt_decoder_deps=" libcelt"
33363340libcodec2_decoder_deps=" libcodec2"
33373341libcodec2_encoder_deps=" libcodec2"
@@ -3362,7 +3366,6 @@ libopencore_amrwb_decoder_deps="libopencore_amrwb"
33623366libopenh264_decoder_deps=" libopenh264"
33633367libopenh264_decoder_select=" h264_mp4toannexb_bsf"
33643368libopenh264_encoder_deps=" libopenh264"
3365- libopenjpeg_decoder_deps=" libopenjpeg"
33663369libopenjpeg_encoder_deps=" libopenjpeg"
33673370libopenmpt_demuxer_deps=" libopenmpt"
33683371libopus_decoder_deps=" libopus"
@@ -3505,7 +3508,6 @@ xwma_demuxer_select="riffdec"
35053508
35063509# indevs / outdevs
35073510android_camera_indev_deps=" android camera2ndk mediandk pthreads"
3508- android_camera_indev_extralibs=" -landroid -lcamera2ndk -lmediandk"
35093511alsa_indev_deps=" alsa"
35103512alsa_outdev_deps=" alsa"
35113513avfoundation_indev_deps=" avfoundation corevideo coremedia pthreads"
@@ -3828,15 +3830,15 @@ swscale_suggest="libm stdatomic"
38283830
38293831avcodec_extralibs=" pthreads_extralibs iconv_extralibs dxva2_extralibs lcms2_extralibs"
38303832avfilter_extralibs=" pthreads_extralibs"
3831- avutil_extralibs=" d3d11va_extralibs nanosleep_extralibs pthreads_extralibs vaapi_drm_extralibs vaapi_x11_extralibs vdpau_x11_extralibs"
3833+ avutil_extralibs=" d3d11va_extralibs mediacodec_extralibs nanosleep_extralibs pthreads_extralibs vaapi_drm_extralibs vaapi_x11_extralibs vaapi_win32_extralibs vdpau_x11_extralibs"
38323834
38333835# programs
38343836ffmpeg_deps=" avcodec avfilter avformat threads"
38353837ffmpeg_select=" aformat_filter anull_filter atrim_filter format_filter
38363838 hflip_filter null_filter
38373839 transpose_filter trim_filter vflip_filter"
38383840ffmpeg_suggest=" ole32 psapi shell32"
3839- ffplay_deps=" avcodec avformat swscale swresample sdl2"
3841+ ffplay_deps=" avcodec avformat avfilter swscale swresample sdl2"
38403842ffplay_select=" rdft crop_filter transpose_filter hflip_filter vflip_filter rotate_filter"
38413843ffplay_suggest=" shell32"
38423844ffprobe_deps=" avcodec avformat"
@@ -4170,6 +4172,9 @@ for opt do
41704172 --enable-sdl)
41714173 enable sdl2
41724174 ;;
4175+ --enable-lto* )
4176+ lto=-f${opt# --enable-}
4177+ ;;
41734178 --enable-* =* |--disable-* =* )
41744179 eval $( echo " ${opt%% =* } " | sed ' s/--/action=/;s/-/ thing=/' )
41754180 is_in " ${thing} s" $COMPONENT_LIST || die_unknown " $opt "
@@ -4639,15 +4644,15 @@ icl_flags(){
46394644 # on Windows, does enable remarks so disable them here.
46404645 -Wall) echo $flag -Qdiag-disable:remark ;;
46414646 -std=c99) echo -Qstd=c99 ;;
4642- -flto) echo -ipo ;;
4647+ -flto* ) echo -ipo ;;
46434648 esac
46444649 done
46454650}
46464651
46474652icc_flags (){
46484653 for flag; do
46494654 case $flag in
4650- -flto) echo -ipo ;;
4655+ -flto* ) echo -ipo ;;
46514656 * ) echo $flag ;;
46524657 esac
46534658 done
@@ -6567,6 +6572,7 @@ enabled libaom && require_pkg_config libaom "aom >= 1.0.0" aom/aom_co
65676572enabled libaribb24 && { check_pkg_config libaribb24 " aribb24 > 1.0.3" " aribb24/aribb24.h" arib_instance_new ||
65686573 { enabled gpl && require_pkg_config libaribb24 aribb24 " aribb24/aribb24.h" arib_instance_new; } ||
65696574 die " ERROR: libaribb24 requires version higher than 1.0.3 or --enable-gpl." ; }
6575+ enabled libaribcaption && require_pkg_config libaribcaption " libaribcaption >= 0.1.0" " aribcaption/aribcaption.h" aribcc_context_alloc
65706576enabled lv2 && require_pkg_config lv2 lilv-0 " lilv/lilv.h" lilv_world_new
65716577enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
65726578enabled libass && require_pkg_config libass " libass >= 0.11.0" ass/ass.h ass_library_init
@@ -6945,6 +6951,21 @@ test_cpp <<EOF && enable uwp && d3d11va_extralibs="-ldxgi -ld3d11"
69456951#endif
69466952EOF
69476953
6954+ # vaapi_win32 requires linking directly to dxgi if not building for
6955+ # the desktop api partition
6956+ test_cpp << EOF && enable uwp && vaapi_win32_extralibs="-ldxgi"
6957+ #ifdef WINAPI_FAMILY
6958+ #include <winapifamily.h>
6959+ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
6960+ #error desktop, not uwp
6961+ #else
6962+ // WINAPI_FAMILY_APP, WINAPI_FAMILY_PHONE_APP => UWP
6963+ #endif
6964+ #else
6965+ #error no family set
6966+ #endif
6967+ EOF
6968+
69486969# mediafoundation requires linking directly to mfplat if building for uwp target
69496970enabled uwp && mediafoundation_extralibs=" -lmfplat -lmfuuid -lole32 -lstrmiids" || mediafoundation_extralibs=" -lmfuuid -lole32 -lstrmiids"
69506971
@@ -6955,7 +6976,14 @@ enabled vaapi &&
69556976 check_pkg_config vaapi " libva >= 0.35.0" " va/va.h" vaInitialize
69566977
69576978if enabled vaapi; then
6958- check_pkg_config vaapi_drm " libva-drm" " va/va_drm.h" vaGetDisplayDRM
6979+ case $target_os in
6980+ mingw32* |mingw64* |win32|win64)
6981+ check_pkg_config vaapi_win32 " libva-win32" " va/va_win32.h" vaGetDisplayWin32
6982+ ;;
6983+ * )
6984+ check_pkg_config vaapi_drm " libva-drm" " va/va_drm.h" vaGetDisplayDRM
6985+ ;;
6986+ esac
69596987
69606988 if enabled xlib_x11; then
69616989 check_pkg_config vaapi_x11 " libva-x11" " va/va_x11.h" vaGetDisplay
@@ -7182,17 +7210,17 @@ fi
71827210
71837211check_optflags (){
71847212 check_cflags " $@ "
7185- enabled lto && check_ldflags " $@ "
7213+ [ -n " $ lto" ] && check_ldflags " $@ "
71867214}
71877215
71887216check_optflags $optflags
71897217check_optflags -fno-math-errno
71907218check_optflags -fno-signed-zeros
71917219
7192- if enabled lto; then
7220+ if [ -n " $ lto" ] ; then
71937221 test " $cc_type " ! = " $ld_type " && die " LTO requires same compiler and linker"
7194- check_cflags -flto
7195- check_ldflags -flto $cpuflags
7222+ check_cflags $lto
7223+ check_ldflags $lto $cpuflags
71967224 disable inline_asm_direct_symbol_refs
71977225fi
71987226
@@ -7223,7 +7251,7 @@ if enabled icc; then
72237251 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
72247252 enable ebp_available
72257253 # The test above does not test linking
7226- enabled lto && disable symver_asm_label
7254+ [ -n " $ lto" ] && disable symver_asm_label
72277255 if enabled x86_32; then
72287256 icc_version=$( $cc -dumpversion)
72297257 test ${icc_version%% .* } -ge 11 &&
@@ -7355,12 +7383,6 @@ esac
73557383
73567384enable frame_thread_encoder
73577385
7358- # these filters depend on removed avcodec APIs
7359- # they are kept disabled for now, but will be removed if
7360- # nobody updates and re-enables them
7361- disable mcdeint_filter
7362- disable uspp_filter
7363-
73647386enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST ; }
73657387
73667388check_deps $CONFIG_LIST \
0 commit comments