Quoting Diego Biurrun (2016-04-05 11:43:57) > --- > > This would be simpler and more logical if these codecs had different > AVCodec declarations from the purely software ones... > > configure | 86 > +++++++++++++++++++++++++++++++---------------------- > libavcodec/Makefile | 33 ++++++++++---------- > 2 files changed, 69 insertions(+), 50 deletions(-)
Overall this commit looks very weird to me, it's quite unclear what is it supposed to accomplish. I don't really see why should some codecs or components be treated differently just because they are "hardware accelerated" (whatever that means). > > diff --git a/configure b/configure > index 6432717..edf89b8 100755 > --- a/configure > +++ b/configure > @@ -139,6 +139,12 @@ Hardware accelerators: > --enable-vda enable VDA code > --enable-vdpau enable VDPAU code > > +Hardware-accelerated decoding/encoding: > + --enable-cuda enable dynamically linked CUDA [no] This is misleading, CUDA can be also used for filtering. Potentially same holds for libmfx. Also, why is this separate from vaapi/vdpau/dxva and the rest? > + --enable-libmfx enable HW acceleration through libmfx > + --enable-mmal enable decoding via MMAL [no] > + --enable-nvenc enable encoding via NVENC [no] > + > Individual component options: > --disable-everything disable all components listed below > --disable-encoder=NAME disable encoder NAME > @@ -179,7 +185,6 @@ Individual component options: > External library support: > --enable-avisynth enable reading of AviSynth script files [no] > --enable-bzlib enable bzlib [autodetect] > - --enable-cuda enable dynamically linked CUDA [no] > --enable-frei0r enable frei0r video filtering > --enable-gnutls enable gnutls [no] > --enable-libbs2b enable bs2b DSP library [no] > @@ -193,7 +198,6 @@ External library support: > --enable-libgsm enable GSM de/encoding via libgsm [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-libmp3lame enable MP3 encoding via libmp3lame [no] > --enable-libnpp enable NVIDIA Performance Primitives-based code > [no] > --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb > [no] > @@ -223,8 +227,6 @@ External library support: > --enable-libxcb-xfixes enable X11 grabbing mouse rendering [auto] > --enable-libxvid enable Xvid encoding via xvidcore, > native MPEG-4/Xvid encoder exists [no] > - --enable-mmal enable decoding via MMAL [no] > - --enable-nvenc enable encoding via NVENC [no] > --enable-openssl enable openssl [no] > --enable-x11grab enable X11 grabbing (legacy) [no] > --enable-zlib enable zlib [autodetect] > @@ -1207,7 +1209,6 @@ EXAMPLE_LIST=" > EXTERNAL_LIBRARY_LIST=" > avisynth > bzlib > - cuda > frei0r > gnutls > libbs2b > @@ -1221,7 +1222,6 @@ EXTERNAL_LIBRARY_LIST=" > libgsm > libilbc > libkvazaar > - libmfx > libmp3lame > libnpp > libopencore_amrnb > @@ -1250,8 +1250,6 @@ EXTERNAL_LIBRARY_LIST=" > libxcb_shm > libxcb_xfixes > libxvid > - mmal > - nvenc > openssl > x11grab > zlib > @@ -1269,6 +1267,13 @@ FEATURE_LIST=" > swscale_alpha > " > > +HW_CODECS_LIST=" This name is highly misleading, since those are very much NOT codecs. They are available external libraries (or headers in the case of nvenc). > + cuda > + libmfx > + mmal > + nvenc > +" > + > HWACCEL_LIST=" > d3d11va > dxva2 > @@ -1317,6 +1322,7 @@ CONFIG_LIST=" > $EXAMPLE_LIST > $EXTERNAL_LIBRARY_LIST > $FEATURE_LIST > + $HW_CODECS_LIST > $HWACCEL_LIST > $LICENSE_LIST > $LIBRARY_LIST > @@ -1876,11 +1882,6 @@ mpegaudio_select="mpegaudiodsp" > mpegaudiodsp_select="dct" > mpegvideo_select="blockdsp hpeldsp idctdsp me_cmp mpeg_er videodsp" > mpegvideoenc_select="me_cmp mpegvideo pixblockdsp qpeldsp" > -nvenc_deps_any="dlopen LoadLibrary" > -nvenc_extralibs='$ldl' > -qsvdec_select="qsv" > -qsvenc_select="qsv" > -vaapi_encode_deps="vaapi" > vc1dsp_select="h264chroma qpeldsp startcode" > > # decoders / encoders > @@ -1953,24 +1954,10 @@ h263i_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_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" > hap_decoder_select="snappy texturedsp" > hap_encoder_deps="libsnappy" > hap_encoder_select="texturedspenc" > hevc_decoder_select="bswapdsp cabac golomb videodsp" > -hevc_nvenc_encoder_deps="nvenc" > -hevc_qsv_encoder_deps="libmfx" > -hevc_qsv_decoder_deps="libmfx" > -hevc_qsv_decoder_select="hevc_mp4toannexb_bsf hevc_parser qsvdec > hevc_qsv_hwaccel" > -hevc_qsv_encoder_select="qsvenc" > -hevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC" > -hevc_vaapi_encoder_select="vaapi_encode golomb" > huffyuv_decoder_select="bswapdsp huffyuvdsp" > huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp" > iac_decoder_select="imc_decoder" > @@ -2013,10 +2000,6 @@ mpeg1video_decoder_select="error_resilience mpeg_er > mpegvideo" > mpeg1video_encoder_select="aandcttables mpegvideoenc" > mpeg2video_decoder_select="error_resilience mpeg_er mpegvideo" > mpeg2video_encoder_select="aandcttables mpegvideoenc" > -mpeg2_qsv_decoder_deps="libmfx" > -mpeg2_qsv_decoder_select="qsvdec mpeg2_qsv_hwaccel mpegvideo_parser" > -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" > @@ -2031,8 +2014,6 @@ mxpeg_decoder_select="mjpeg_decoder" > nellymoser_decoder_select="mdct sinewin" > nellymoser_encoder_select="audio_frame_queue mdct sinewin" > nuv_decoder_select="idctdsp lzo" > -nvenc_h264_encoder_deps="nvenc" > -nvenc_hevc_encoder_deps="nvenc" > on2avc_decoder_select="mdct" > opus_decoder_deps="avresample" > opus_decoder_select="imdct15" > @@ -2169,6 +2150,39 @@ wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel" > wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" > wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel" > > +# hardware-accelerated codecs > +nvenc_deps_any="dlopen LoadLibrary" > +nvenc_extralibs='$ldl' > +qsvdec_select="qsv" > +qsvenc_select="qsv" > +vaapi_encode_deps="vaapi" > + > +hwupload_cuda_filter_deps="cuda" > +scale_npp_filter_deps="cuda libnpp" > + > +h264_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_nvenc_encoder_deps="nvenc" > +hevc_qsv_decoder_deps="libmfx" > +hevc_qsv_encoder_deps="libmfx" > +hevc_qsv_decoder_select="hevc_mp4toannexb_bsf hevc_parser hevc_qsv_hwaccel > qsvdec" > +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 mpegvideo_parser" > +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" > @@ -2369,12 +2383,10 @@ frei0r_filter_extralibs='$ldl' > frei0r_src_filter_deps="frei0r dlopen" > frei0r_src_filter_extralibs='$ldl' > hqdn3d_filter_deps="gpl" > -hwupload_cuda_filter_deps="cuda" > interlace_filter_deps="gpl" > ocv_filter_deps="libopencv" > resample_filter_deps="avresample" > scale_filter_deps="swscale" > -scale_npp_filter_deps="cuda libnpp" > scale_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer" > > # examples > @@ -5081,6 +5093,10 @@ for type in decoder encoder hwaccel parser demuxer > muxer protocol filter bsf ind > echo > done > > +echo "Enabled Hardware-accelerated codecs:" Again, not codecs. > +print_enabled '' $HW_CODECS_LIST | print_3_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 307d7c6..fbe9998 100644 > --- a/libavcodec/Makefile > +++ b/libavcodec/Makefile > @@ -91,12 +91,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) > @@ -255,20 +251,11 @@ OBJS-$(CONFIG_H264_DECODER) += h264.o > h264_cabac.o h264_cavlc.o \ > h264_refs.o h264_sei.o \ > h264_slice.o h264data.o > h264_parse.o \ > h2645_parse.o > -OBJS-$(CONFIG_H264_MMAL_DECODER) += mmaldec.o > -OBJS-$(CONFIG_H264_NVENC_ENCODER) += nvenc_h264.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_NVENC_ENCODER) += nvenc_hevc.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 > @@ -325,8 +312,6 @@ OBJS-$(CONFIG_MPC8_DECODER) += mpc8.o mpc.o > OBJS-$(CONFIG_MPEG_XVMC_DECODER) += mpegvideo_xvmc.o > OBJS-$(CONFIG_MPEG1VIDEO_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o > OBJS-$(CONFIG_MPEG1VIDEO_ENCODER) += mpeg12enc.o mpeg12.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 > @@ -628,6 +613,24 @@ OBJS-$(CONFIG_VC1_DXVA2_HWACCEL) += dxva2_vc1.o > OBJS-$(CONFIG_VC1_VAAPI_HWACCEL) += vaapi_vc1.o > OBJS-$(CONFIG_VC1_VDPAU_HWACCEL) += vdpau_vc1.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 > + I don't really see why should those be separated. They are internal subsystems, on the same footing as any others. -- Anton Khirnov _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel