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

Reply via email to