diff --git a/configure b/configure index 0809449776..061e7f5aff 100755 --- a/configure +++ b/configure @@ -156,6 +156,12 @@ Hardware accelerators: --disable-vda disable VDA code [autodetect] --disable-vdpau disable VDPAU code [autodetect] +Hardware-accelerated decoding/encoding: + --enable-cuda enable dynamically linked CUDA [no] + --enable-libmfx enable HW acceleration through libmfx + --enable-mmal enable decoding via MMAL [no] + --enable-nvenc enable NVIDIA NVENC support [no] + Individual component options: --disable-everything disable all components listed below --disable-encoder=NAME disable encoder NAME @@ -197,7 +203,6 @@ External library support: --disable-audiotoolbox enable AudioToolbox decoders and encoders [autodetect] --enable-avisynth enable reading of AviSynth script files [no] --disable-bzlib disable bzlib [autodetect] - --enable-cuda enable dynamically linked CUDA [no] --enable-chromaprint enable audio fingerprinting with chromaprint [no] --enable-fontconfig enable fontconfig, useful for drawtext filter [no] --enable-frei0r enable frei0r video filtering [no] @@ -229,7 +234,6 @@ External library support: --enable-libiec61883 enable iec61883 via libiec61883 [no] --enable-libilbc enable iLBC de/encoding via libilbc [no] --enable-libkvazaar enable HEVC encoding via libkvazaar [no] - --enable-libmfx enable HW acceleration through libmfx --enable-libmodplug enable ModPlug via libmodplug [no] --enable-libmp3lame enable MP3 encoding via libmp3lame [no] --enable-libnut enable NUT (de)muxing via libnut, @@ -278,9 +282,7 @@ External library support: --disable-lzma disable lzma [autodetect] --enable-decklink enable Blackmagic DeckLink I/O support [no] --enable-mediacodec enable Android MediaCodec support [no] - --enable-mmal enable decoding via MMAL [no] --enable-netcdf enable NetCDF, needed for sofalizer filter [no] - --enable-nvenc enable NVIDIA NVENC support [no] --enable-openal enable OpenAL 1.1 capture support [no] --enable-opencl enable OpenCL code --enable-opengl enable OpenGL rendering [no] @@ -1453,7 +1455,6 @@ EXTERNAL_LIBRARY_LIST=" bzlib chromaprint crystalhd - cuda decklink frei0r gcrypt @@ -1480,7 +1481,6 @@ EXTERNAL_LIBRARY_LIST=" libiec61883 libilbc libkvazaar - libmfx libmodplug libmp3lame libnut @@ -1525,9 +1525,7 @@ EXTERNAL_LIBRARY_LIST=" libzvbi lzma mediacodec - mmal netcdf - nvenc openal opencl opengl @@ -1561,6 +1559,13 @@ FEATURE_LIST=" swscale_alpha " +HW_CODECS_LIST=" + cuda + libmfx + mmal + nvenc +" + HWACCEL_LIST=" d3d11va dxva2 @@ -1617,6 +1622,7 @@ CONFIG_LIST=" $EXAMPLE_LIST $EXTERNAL_LIBRARY_LIST $FEATURE_LIST + $HW_CODECS_LIST $HWACCEL_LIST $LICENSE_LIST $LIBRARY_LIST @@ -2274,9 +2280,6 @@ mpegaudio_select="mpegaudiodsp" mpegaudiodsp_select="dct" mpegvideo_select="blockdsp h264chroma hpeldsp idctdsp me_cmp mpeg_er videodsp" mpegvideoenc_select="me_cmp mpegvideo pixblockdsp qpeldsp" -qsvdec_select="qsv" -qsvenc_select="qsv" -vaapi_encode_deps="vaapi" vc1dsp_select="h264chroma qpeldsp startcode" rdft_select="fft" @@ -2359,24 +2362,12 @@ h263p_decoder_select="h263_decoder" h263p_encoder_select="h263_encoder" h264_decoder_select="cabac golomb h264chroma h264dsp h264pred h264qpel videodsp" h264_decoder_suggest="error_resilience" -h264_qsv_decoder_deps="libmfx" -h264_qsv_decoder_select="h264_mp4toannexb_bsf h264_parser qsvdec h264_qsv_hwaccel" -h264_qsv_encoder_deps="libmfx" -h264_qsv_encoder_select="qsvenc" -h264_vaapi_encoder_deps="VAEncPictureParameterBufferH264" -h264_vaapi_encoder_select="vaapi_encode golomb" hap_decoder_select="snappy texturedsp" hap_encoder_deps="libsnappy" hap_encoder_select="texturedspenc" hevc_decoder_select="bswapdsp cabac golomb videodsp" -hevc_qsv_decoder_deps="libmfx" -hevc_qsv_decoder_select="hevc_mp4toannexb_bsf hevc_parser qsvdec hevc_qsv_hwaccel" -hevc_qsv_encoder_deps="libmfx" -hevc_qsv_encoder_select="qsvenc" huffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp" huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llviddsp" -hevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC" -hevc_vaapi_encoder_select="vaapi_encode golomb" iac_decoder_select="imc_decoder" imc_decoder_select="bswapdsp fft mdct sinewin" indeo3_decoder_select="hpeldsp" @@ -2418,10 +2409,6 @@ mpeg1video_decoder_select="mpegvideo" mpeg1video_encoder_select="aandcttables mpegvideoenc h263dsp" mpeg2video_decoder_select="mpegvideo" mpeg2video_encoder_select="aandcttables mpegvideoenc h263dsp" -mpeg2_qsv_decoder_deps="libmfx" -mpeg2_qsv_decoder_select="qsvdec mpeg2_qsv_hwaccel" -mpeg2_qsv_encoder_deps="libmfx" -mpeg2_qsv_encoder_select="qsvenc" mpeg4_decoder_select="h263_decoder mpeg4video_parser" mpeg4_encoder_select="h263_encoder" msa1_decoder_select="mss34dsp" @@ -2649,6 +2636,35 @@ wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" wmv3_vdpau_decoder_select="vc1_vdpau_decoder" wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel" +# hardware-accelerated codecs +qsvdec_select="qsv" +qsvenc_select="qsv" +vaapi_encode_deps="vaapi" + +hwupload_cuda_filter_deps="cuda" +scale_npp_filter_deps="cuda libnpp" + +nvenc_encoder_deps="nvenc" +h264_qsv_decoder_deps="libmfx" +h264_qsv_decoder_select="h264_mp4toannexb_bsf h264_parser qsvdec h264_qsv_hwaccel" +h264_qsv_encoder_deps="libmfx" +h264_qsv_encoder_select="qsvenc" +h264_vaapi_encoder_deps="VAEncPictureParameterBufferH264" +h264_vaapi_encoder_select="vaapi_encode golomb" + +hevc_qsv_decoder_deps="libmfx" +hevc_qsv_decoder_select="hevc_mp4toannexb_bsf hevc_parser qsvdec hevc_qsv_hwaccel" +hevc_qsv_encoder_deps="libmfx" +hevc_qsv_encoder_select="qsvenc" +hevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC" +hevc_vaapi_encoder_select="vaapi_encode golomb" +mpeg2_qsv_decoder_deps="libmfx" +mpeg2_qsv_decoder_select="qsvdec mpeg2_qsv_hwaccel" +mpeg2_qsv_encoder_deps="libmfx" +mpeg2_qsv_encoder_select="qsvenc" +nvenc_h264_encoder_deps="nvenc" +nvenc_hevc_encoder_deps="nvenc" + # parsers h264_parser_select="h264_decoder" hevc_parser_select="golomb" @@ -2746,9 +2762,6 @@ libx265_encoder_deps="libx265" libxavs_encoder_deps="libxavs" libxvid_encoder_deps="libxvid" libzvbi_teletext_decoder_deps="libzvbi" -nvenc_encoder_deps="nvenc" -nvenc_h264_encoder_deps="nvenc" -nvenc_hevc_encoder_deps="nvenc" videotoolbox_deps="VideoToolbox_VideoToolbox_h" videotoolbox_extralibs="-framework CoreFoundation -framework VideoToolbox -framework CoreMedia -framework CoreVideo" videotoolbox_encoder_deps="videotoolbox VTCompressionSessionPrepareToEncodeFrames" @@ -2963,7 +2976,6 @@ fspp_filter_deps="gpl" geq_filter_deps="gpl" histeq_filter_deps="gpl" hqdn3d_filter_deps="gpl" -hwupload_cuda_filter_deps="cuda" interlace_filter_deps="gpl" kerndeint_filter_deps="gpl" ladspa_filter_deps="ladspa dlopen" @@ -3019,7 +3031,6 @@ vidstabtransform_filter_deps="libvidstab" zmq_filter_deps="libzmq" zoompan_filter_deps="swscale" zscale_filter_deps="libzimg" -scale_npp_filter_deps="cuda libnpp" scale_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer" # examples @@ -6374,6 +6385,10 @@ for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf ind echo done +echo "Enabled Hardware-accelerated codecs:" +print_enabled '' $HW_CODECS_LIST | print_in_columns +echo + license="LGPL version 2.1 or later" if enabled nonfree; then license="nonfree and unredistributable" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 1ee3977c7e..8c9c23ab8b 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -108,12 +108,8 @@ OBJS-$(CONFIG_MPEGVIDEOENC) += mpegvideo_enc.o mpeg12data.o \ motion_est.o ratecontrol.o \ mpegvideoencdsp.o OBJS-$(CONFIG_MSS34DSP) += mss34dsp.o -OBJS-$(CONFIG_NVENC) += nvenc.o OBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o OBJS-$(CONFIG_QPELDSP) += qpeldsp.o -OBJS-$(CONFIG_QSV) += qsv.o -OBJS-$(CONFIG_QSVDEC) += qsvdec.o -OBJS-$(CONFIG_QSVENC) += qsvenc.o OBJS-$(CONFIG_RANGECODER) += rangecoder.o RDFT-OBJS-$(CONFIG_HARDCODED_TABLES) += sin_tables.o OBJS-$(CONFIG_RDFT) += rdft.o $(RDFT-OBJS-yes) @@ -313,19 +309,11 @@ OBJS-$(CONFIG_H264_DECODER) += h264.o h264_cabac.o h264_cavlc.o \ h264_slice.o h264data.o h264_parse.o \ h2645_parse.o OBJS-$(CONFIG_H264_MEDIACODEC_DECODER) += mediacodecdec_h264.o -OBJS-$(CONFIG_H264_MMAL_DECODER) += mmaldec.o -OBJS-$(CONFIG_H264_VDA_DECODER) += vda_h264_dec.o -OBJS-$(CONFIG_H264_QSV_DECODER) += qsvdec_h2645.o -OBJS-$(CONFIG_H264_QSV_ENCODER) += qsvenc_h264.o -OBJS-$(CONFIG_H264_VAAPI_ENCODER) += vaapi_encode_h264.o vaapi_encode_h26x.o OBJS-$(CONFIG_HAP_DECODER) += hapdec.o hap.o OBJS-$(CONFIG_HAP_ENCODER) += hapenc.o hap.o OBJS-$(CONFIG_HEVC_DECODER) += hevc.o hevc_mvs.o hevc_ps.o hevc_sei.o \ hevc_cabac.o hevc_refs.o hevcpred.o \ hevcdsp.o hevc_filter.o h2645_parse.o hevc_data.o -OBJS-$(CONFIG_HEVC_QSV_DECODER) += qsvdec_h2645.o -OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o hevc_ps_enc.o h2645_parse.o -OBJS-$(CONFIG_HEVC_VAAPI_ENCODER) += vaapi_encode_h265.o vaapi_encode_h26x.o OBJS-$(CONFIG_HNM4_VIDEO_DECODER) += hnm4video.o OBJS-$(CONFIG_HQ_HQA_DECODER) += hq_hqa.o hq_hqadata.o hq_hqadsp.o \ canopus.o @@ -392,9 +380,6 @@ OBJS-$(CONFIG_MPC8_DECODER) += mpc8.o mpc.o OBJS-$(CONFIG_MPEGVIDEO_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o OBJS-$(CONFIG_MPEG1VIDEO_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o OBJS-$(CONFIG_MPEG1VIDEO_ENCODER) += mpeg12enc.o mpeg12.o -OBJS-$(CONFIG_MPEG2_MMAL_DECODER) += mmaldec.o -OBJS-$(CONFIG_MPEG2_QSV_DECODER) += qsvdec_mpeg2.o -OBJS-$(CONFIG_MPEG2_QSV_ENCODER) += qsvenc_mpeg2.o OBJS-$(CONFIG_MPEG2VIDEO_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o OBJS-$(CONFIG_MPEG2VIDEO_ENCODER) += mpeg12enc.o mpeg12.o OBJS-$(CONFIG_MPEG4_DECODER) += xvididct.o @@ -773,6 +758,24 @@ OBJS-$(CONFIG_VP9_D3D11VA_HWACCEL) += dxva2_vp9.o OBJS-$(CONFIG_VP9_DXVA2_HWACCEL) += dxva2_vp9.o OBJS-$(CONFIG_VP9_VAAPI_HWACCEL) += vaapi_vp9.o +# hardware-accelerated decoding/encoding +OBJS-$(CONFIG_NVENC) += nvenc.o +OBJS-$(CONFIG_QSV) += qsv.o +OBJS-$(CONFIG_QSVDEC) += qsvdec.o +OBJS-$(CONFIG_QSVENC) += qsvenc.o + +OBJS-$(CONFIG_H264_MMAL_DECODER) += mmaldec.o +OBJS-$(CONFIG_H264_VDA_DECODER) += vda_h264_dec.o +OBJS-$(CONFIG_H264_QSV_DECODER) += qsvdec_h2645.o +OBJS-$(CONFIG_H264_QSV_ENCODER) += qsvenc_h264.o +OBJS-$(CONFIG_H264_VAAPI_ENCODER) += vaapi_encode_h264.o vaapi_encode_h26x.o +OBJS-$(CONFIG_HEVC_QSV_DECODER) += qsvdec_h2645.o +OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o hevc_ps_enc.o h2645_parse.o +OBJS-$(CONFIG_HEVC_VAAPI_ENCODER) += vaapi_encode_h265.o vaapi_encode_h26x.o +OBJS-$(CONFIG_MPEG2_MMAL_DECODER) += mmaldec.o +OBJS-$(CONFIG_MPEG2_QSV_DECODER) += qsvdec_mpeg2.o +OBJS-$(CONFIG_MPEG2_QSV_ENCODER) += qsvenc_mpeg2.o + # libavformat dependencies OBJS-$(CONFIG_ISO_MEDIA) += mpeg4audio.o mpegaudiodata.o