This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit acbaf420aade95d5965260ede91945b194093b32 Author: Diego de Souza <[email protected]> AuthorDate: Sat Mar 14 01:31:56 2026 +0100 Commit: Timo Rothenpieler <[email protected]> CommitDate: Tue Jul 14 19:45:02 2026 +0000 avcodec/nvdec: register CUARRAY hwaccel variants for all supported codecs Add CUARRAY hwaccel structs (ff_<codec>_nvdec_cuarray_hwaccel) and the corresponding AV_PIX_FMT_CUARRAY entries in each decoder's pixel format negotiation list. This allows decoders to advertise CUARRAY as a supported hardware output format alongside AV_PIX_FMT_CUDA. Codecs: H.264, HEVC, AV1, MPEG-1, MPEG-2, MPEG-4, VC-1, WMV3, VP8, VP9. Signed-off-by: Diego de Souza <[email protected]> --- configure | 19 +++++++++++++++++++ libavcodec/Makefile | 9 +++++++++ libavcodec/av1dec.c | 16 ++++++++++++++++ libavcodec/h263dec.c | 6 ++++++ libavcodec/h264_slice.c | 7 +++++++ libavcodec/h264dec.c | 3 +++ libavcodec/hevc/hevcdec.c | 22 ++++++++++++++++++++++ libavcodec/hwaccels.h | 10 ++++++++++ libavcodec/hwconfig.h | 2 ++ libavcodec/mpeg12dec.c | 12 ++++++++++++ libavcodec/mpeg4videodec.c | 3 +++ libavcodec/nvdec_av1.c | 20 ++++++++++++++++++++ libavcodec/nvdec_h264.c | 20 ++++++++++++++++++++ libavcodec/nvdec_hevc.c | 20 ++++++++++++++++++++ libavcodec/nvdec_mpeg12.c | 32 ++++++++++++++++++++++++++++++++ libavcodec/nvdec_mpeg4.c | 20 ++++++++++++++++++++ libavcodec/nvdec_vc1.c | 34 ++++++++++++++++++++++++++++++++++ libavcodec/nvdec_vp8.c | 20 ++++++++++++++++++++ libavcodec/nvdec_vp9.c | 20 ++++++++++++++++++++ libavcodec/vc1dec.c | 6 ++++++ libavcodec/vp8.c | 6 ++++++ libavcodec/vp9.c | 10 ++++++++++ 22 files changed, 317 insertions(+) diff --git a/configure b/configure index 4ed0148977..c715098795 100755 --- a/configure +++ b/configure @@ -3417,6 +3417,8 @@ av1_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_AV1" av1_dxva2_hwaccel_select="av1_decoder" av1_nvdec_hwaccel_deps="nvdec CUVIDAV1PICPARAMS" av1_nvdec_hwaccel_select="av1_decoder" +av1_nvdec_cuarray_hwaccel_deps="nvdec CUVIDAV1PICPARAMS" +av1_nvdec_cuarray_hwaccel_select="av1_decoder" av1_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferAV1_bit_depth_idx" av1_vaapi_hwaccel_select="av1_decoder" av1_vdpau_hwaccel_deps="vdpau VdpPictureInfoAV1" @@ -3443,6 +3445,8 @@ h264_dxva2_hwaccel_deps="dxva2" h264_dxva2_hwaccel_select="h264_decoder" h264_nvdec_hwaccel_deps="nvdec" h264_nvdec_hwaccel_select="h264_decoder" +h264_nvdec_cuarray_hwaccel_deps="nvdec" +h264_nvdec_cuarray_hwaccel_select="h264_decoder" h264_vaapi_hwaccel_deps="vaapi" h264_vaapi_hwaccel_select="h264_decoder" h264_vdpau_hwaccel_deps="vdpau" @@ -3461,6 +3465,8 @@ hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC" hevc_dxva2_hwaccel_select="hevc_decoder" hevc_nvdec_hwaccel_deps="nvdec" hevc_nvdec_hwaccel_select="hevc_decoder" +hevc_nvdec_cuarray_hwaccel_deps="nvdec" +hevc_nvdec_cuarray_hwaccel_select="hevc_decoder" hevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC" hevc_vaapi_hwaccel_select="hevc_decoder" hevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC" @@ -3475,6 +3481,8 @@ mjpeg_vaapi_hwaccel_deps="vaapi" mjpeg_vaapi_hwaccel_select="mjpeg_decoder" mpeg1_nvdec_hwaccel_deps="nvdec" mpeg1_nvdec_hwaccel_select="mpeg1video_decoder" +mpeg1_nvdec_cuarray_hwaccel_deps="nvdec" +mpeg1_nvdec_cuarray_hwaccel_select="mpeg1video_decoder" mpeg1_vdpau_hwaccel_deps="vdpau" mpeg1_vdpau_hwaccel_select="mpeg1video_decoder" mpeg1_videotoolbox_hwaccel_deps="videotoolbox" @@ -3489,6 +3497,8 @@ mpeg2_dxva2_hwaccel_deps="dxva2" mpeg2_dxva2_hwaccel_select="mpeg2video_decoder" mpeg2_nvdec_hwaccel_deps="nvdec" mpeg2_nvdec_hwaccel_select="mpeg2video_decoder" +mpeg2_nvdec_cuarray_hwaccel_deps="nvdec" +mpeg2_nvdec_cuarray_hwaccel_select="mpeg2video_decoder" mpeg2_vaapi_hwaccel_deps="vaapi" mpeg2_vaapi_hwaccel_select="mpeg2video_decoder" mpeg2_vdpau_hwaccel_deps="vdpau" @@ -3497,6 +3507,8 @@ mpeg2_videotoolbox_hwaccel_deps="videotoolbox" mpeg2_videotoolbox_hwaccel_select="mpeg2video_decoder" mpeg4_nvdec_hwaccel_deps="nvdec" mpeg4_nvdec_hwaccel_select="mpeg4_decoder" +mpeg4_nvdec_cuarray_hwaccel_deps="nvdec" +mpeg4_nvdec_cuarray_hwaccel_select="mpeg4_decoder" mpeg4_vaapi_hwaccel_deps="vaapi" mpeg4_vaapi_hwaccel_select="mpeg4_decoder" mpeg4_vdpau_hwaccel_deps="vdpau" @@ -3521,12 +3533,16 @@ vc1_dxva2_hwaccel_deps="dxva2" vc1_dxva2_hwaccel_select="vc1_decoder" vc1_nvdec_hwaccel_deps="nvdec" vc1_nvdec_hwaccel_select="vc1_decoder" +vc1_nvdec_cuarray_hwaccel_deps="nvdec" +vc1_nvdec_cuarray_hwaccel_select="vc1_decoder" vc1_vaapi_hwaccel_deps="vaapi" vc1_vaapi_hwaccel_select="vc1_decoder" vc1_vdpau_hwaccel_deps="vdpau" vc1_vdpau_hwaccel_select="vc1_decoder" vp8_nvdec_hwaccel_deps="nvdec" vp8_nvdec_hwaccel_select="vp8_decoder" +vp8_nvdec_cuarray_hwaccel_deps="nvdec" +vp8_nvdec_cuarray_hwaccel_select="vp8_decoder" vp8_vaapi_hwaccel_deps="vaapi" vp8_vaapi_hwaccel_select="vp8_decoder" vp9_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_VP9" @@ -3539,6 +3555,8 @@ vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9" vp9_dxva2_hwaccel_select="vp9_decoder" vp9_nvdec_hwaccel_deps="nvdec" vp9_nvdec_hwaccel_select="vp9_decoder" +vp9_nvdec_cuarray_hwaccel_deps="nvdec" +vp9_nvdec_cuarray_hwaccel_select="vp9_decoder" vp9_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferVP9_bit_depth" vp9_vaapi_hwaccel_select="vp9_decoder" vp9_vdpau_hwaccel_deps="vdpau VdpPictureInfoVP9" @@ -3554,6 +3572,7 @@ wmv3_d3d11va2_hwaccel_select="vc1_d3d11va2_hwaccel" wmv3_d3d12va_hwaccel_select="vc1_d3d12va_hwaccel" wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel" wmv3_nvdec_hwaccel_select="vc1_nvdec_hwaccel" +wmv3_nvdec_cuarray_hwaccel_select="vc1_nvdec_cuarray_hwaccel" wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 5730463f3e..232fdd7339 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -1051,6 +1051,7 @@ OBJS-$(CONFIG_AV1_D3D11VA_HWACCEL) += dxva2_av1.o OBJS-$(CONFIG_AV1_DXVA2_HWACCEL) += dxva2_av1.o OBJS-$(CONFIG_AV1_D3D12VA_HWACCEL) += dxva2_av1.o d3d12va_av1.o OBJS-$(CONFIG_AV1_NVDEC_HWACCEL) += nvdec_av1.o +OBJS-$(CONFIG_AV1_NVDEC_CUARRAY_HWACCEL) += nvdec_av1.o OBJS-$(CONFIG_AV1_VAAPI_HWACCEL) += vaapi_av1.o OBJS-$(CONFIG_AV1_VDPAU_HWACCEL) += vdpau_av1.o OBJS-$(CONFIG_AV1_VIDEOTOOLBOX_HWACCEL) += videotoolbox_av1.o @@ -1063,6 +1064,7 @@ OBJS-$(CONFIG_H264_D3D11VA_HWACCEL) += dxva2_h264.o OBJS-$(CONFIG_H264_DXVA2_HWACCEL) += dxva2_h264.o OBJS-$(CONFIG_H264_D3D12VA_HWACCEL) += dxva2_h264.o d3d12va_h264.o OBJS-$(CONFIG_H264_NVDEC_HWACCEL) += nvdec_h264.o +OBJS-$(CONFIG_H264_NVDEC_CUARRAY_HWACCEL) += nvdec_h264.o OBJS-$(CONFIG_H264_QSV_HWACCEL) += qsvdec.o OBJS-$(CONFIG_H264_VAAPI_HWACCEL) += vaapi_h264.o OBJS-$(CONFIG_H264_VDPAU_HWACCEL) += vdpau_h264.o @@ -1072,6 +1074,7 @@ OBJS-$(CONFIG_HEVC_D3D11VA_HWACCEL) += dxva2_hevc.o OBJS-$(CONFIG_HEVC_DXVA2_HWACCEL) += dxva2_hevc.o OBJS-$(CONFIG_HEVC_D3D12VA_HWACCEL) += dxva2_hevc.o d3d12va_hevc.o OBJS-$(CONFIG_HEVC_NVDEC_HWACCEL) += nvdec_hevc.o +OBJS-$(CONFIG_HEVC_NVDEC_CUARRAY_HWACCEL) += nvdec_hevc.o OBJS-$(CONFIG_HEVC_QSV_HWACCEL) += qsvdec.o OBJS-$(CONFIG_HEVC_VAAPI_HWACCEL) += vaapi_hevc.o h265_profile_level.o OBJS-$(CONFIG_HEVC_VDPAU_HWACCEL) += vdpau_hevc.o h265_profile_level.o @@ -1079,17 +1082,20 @@ OBJS-$(CONFIG_HEVC_VULKAN_HWACCEL) += vulkan_decode.o vulkan_hevc.o OBJS-$(CONFIG_MJPEG_NVDEC_HWACCEL) += nvdec_mjpeg.o OBJS-$(CONFIG_MJPEG_VAAPI_HWACCEL) += vaapi_mjpeg.o OBJS-$(CONFIG_MPEG1_NVDEC_HWACCEL) += nvdec_mpeg12.o +OBJS-$(CONFIG_MPEG1_NVDEC_CUARRAY_HWACCEL) += nvdec_mpeg12.o OBJS-$(CONFIG_MPEG1_VDPAU_HWACCEL) += vdpau_mpeg12.o OBJS-$(CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o OBJS-$(CONFIG_MPEG2_D3D11VA_HWACCEL) += dxva2_mpeg2.o OBJS-$(CONFIG_MPEG2_DXVA2_HWACCEL) += dxva2_mpeg2.o OBJS-$(CONFIG_MPEG2_D3D12VA_HWACCEL) += dxva2_mpeg2.o d3d12va_mpeg2.o OBJS-$(CONFIG_MPEG2_NVDEC_HWACCEL) += nvdec_mpeg12.o +OBJS-$(CONFIG_MPEG2_NVDEC_CUARRAY_HWACCEL) += nvdec_mpeg12.o OBJS-$(CONFIG_MPEG2_QSV_HWACCEL) += qsvdec.o OBJS-$(CONFIG_MPEG2_VAAPI_HWACCEL) += vaapi_mpeg2.o OBJS-$(CONFIG_MPEG2_VDPAU_HWACCEL) += vdpau_mpeg12.o OBJS-$(CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o OBJS-$(CONFIG_MPEG4_NVDEC_HWACCEL) += nvdec_mpeg4.o +OBJS-$(CONFIG_MPEG4_NVDEC_CUARRAY_HWACCEL) += nvdec_mpeg4.o OBJS-$(CONFIG_MPEG4_VAAPI_HWACCEL) += vaapi_mpeg4.o OBJS-$(CONFIG_MPEG4_VDPAU_HWACCEL) += vdpau_mpeg4.o OBJS-$(CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o @@ -1097,15 +1103,18 @@ OBJS-$(CONFIG_VC1_D3D11VA_HWACCEL) += dxva2_vc1.o OBJS-$(CONFIG_VC1_DXVA2_HWACCEL) += dxva2_vc1.o OBJS-$(CONFIG_VC1_D3D12VA_HWACCEL) += dxva2_vc1.o d3d12va_vc1.o OBJS-$(CONFIG_VC1_NVDEC_HWACCEL) += nvdec_vc1.o +OBJS-$(CONFIG_VC1_NVDEC_CUARRAY_HWACCEL) += nvdec_vc1.o OBJS-$(CONFIG_VC1_QSV_HWACCEL) += qsvdec.o OBJS-$(CONFIG_VC1_VAAPI_HWACCEL) += vaapi_vc1.o OBJS-$(CONFIG_VC1_VDPAU_HWACCEL) += vdpau_vc1.o OBJS-$(CONFIG_VP8_NVDEC_HWACCEL) += nvdec_vp8.o +OBJS-$(CONFIG_VP8_NVDEC_CUARRAY_HWACCEL) += nvdec_vp8.o OBJS-$(CONFIG_VP8_VAAPI_HWACCEL) += vaapi_vp8.o OBJS-$(CONFIG_VP9_D3D11VA_HWACCEL) += dxva2_vp9.o OBJS-$(CONFIG_VP9_DXVA2_HWACCEL) += dxva2_vp9.o OBJS-$(CONFIG_VP9_D3D12VA_HWACCEL) += dxva2_vp9.o d3d12va_vp9.o OBJS-$(CONFIG_VP9_NVDEC_HWACCEL) += nvdec_vp9.o +OBJS-$(CONFIG_VP9_NVDEC_CUARRAY_HWACCEL) += nvdec_vp9.o OBJS-$(CONFIG_VP9_VAAPI_HWACCEL) += vaapi_vp9.o OBJS-$(CONFIG_VP9_VDPAU_HWACCEL) += vdpau_vp9.o OBJS-$(CONFIG_VP9_VIDEOTOOLBOX_HWACCEL) += videotoolbox_vp9.o diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index d614c8d68a..ee2b5a08ee 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -543,6 +543,7 @@ static int get_pixel_format(AVCodecContext *avctx) CONFIG_AV1_D3D11VA_HWACCEL * 2 + \ CONFIG_AV1_D3D12VA_HWACCEL + \ CONFIG_AV1_NVDEC_HWACCEL + \ + CONFIG_AV1_NVDEC_CUARRAY_HWACCEL + \ CONFIG_AV1_VAAPI_HWACCEL + \ CONFIG_AV1_VDPAU_HWACCEL + \ CONFIG_AV1_VIDEOTOOLBOX_HWACCEL + \ @@ -567,6 +568,9 @@ static int get_pixel_format(AVCodecContext *avctx) #if CONFIG_AV1_NVDEC_HWACCEL *fmtp++ = AV_PIX_FMT_CUDA; #endif +#if CONFIG_AV1_NVDEC_CUARRAY_HWACCEL + *fmtp++ = AV_PIX_FMT_CUARRAY; +#endif #if CONFIG_AV1_VAAPI_HWACCEL *fmtp++ = AV_PIX_FMT_VAAPI; #endif @@ -594,6 +598,9 @@ static int get_pixel_format(AVCodecContext *avctx) #if CONFIG_AV1_NVDEC_HWACCEL *fmtp++ = AV_PIX_FMT_CUDA; #endif +#if CONFIG_AV1_NVDEC_CUARRAY_HWACCEL + *fmtp++ = AV_PIX_FMT_CUARRAY; +#endif #if CONFIG_AV1_VAAPI_HWACCEL *fmtp++ = AV_PIX_FMT_VAAPI; #endif @@ -645,11 +652,17 @@ static int get_pixel_format(AVCodecContext *avctx) case AV_PIX_FMT_GRAY8: #if CONFIG_AV1_NVDEC_HWACCEL *fmtp++ = AV_PIX_FMT_CUDA; +#endif +#if CONFIG_AV1_NVDEC_CUARRAY_HWACCEL + *fmtp++ = AV_PIX_FMT_CUARRAY; #endif break; case AV_PIX_FMT_GRAY10: #if CONFIG_AV1_NVDEC_HWACCEL *fmtp++ = AV_PIX_FMT_CUDA; +#endif +#if CONFIG_AV1_NVDEC_CUARRAY_HWACCEL + *fmtp++ = AV_PIX_FMT_CUARRAY; #endif break; } @@ -1555,6 +1568,9 @@ const FFCodec ff_av1_decoder = { #if CONFIG_AV1_NVDEC_HWACCEL HWACCEL_NVDEC(av1), #endif +#if CONFIG_AV1_NVDEC_CUARRAY_HWACCEL + HWACCEL_NVDEC_CUARRAY(av1), +#endif #if CONFIG_AV1_VAAPI_HWACCEL HWACCEL_VAAPI(av1), #endif diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 23fd16b726..9fc30f7b1b 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -56,6 +56,9 @@ static const enum AVPixelFormat h263_hwaccel_pixfmt_list_420[] = { #if CONFIG_MPEG4_NVDEC_HWACCEL AV_PIX_FMT_CUDA, #endif +#if CONFIG_MPEG4_NVDEC_CUARRAY_HWACCEL + AV_PIX_FMT_CUARRAY, +#endif #if CONFIG_MPEG4_VDPAU_HWACCEL AV_PIX_FMT_VDPAU, #endif @@ -668,6 +671,9 @@ static const AVCodecHWConfigInternal *const h263_hw_config_list[] = { #if CONFIG_MPEG4_NVDEC_HWACCEL HWACCEL_NVDEC(mpeg4), #endif +#if CONFIG_MPEG4_NVDEC_CUARRAY_HWACCEL + HWACCEL_NVDEC_CUARRAY(mpeg4), +#endif #if CONFIG_MPEG4_VDPAU_HWACCEL HWACCEL_VDPAU(mpeg4), #endif diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 7e2c460293..9b5ed8f77e 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -790,6 +790,7 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback) (CONFIG_H264_D3D11VA_HWACCEL * 2) + \ CONFIG_H264_D3D12VA_HWACCEL + \ CONFIG_H264_NVDEC_HWACCEL + \ + CONFIG_H264_NVDEC_CUARRAY_HWACCEL + \ CONFIG_H264_VAAPI_HWACCEL + \ CONFIG_H264_VIDEOTOOLBOX_HWACCEL + \ CONFIG_H264_VDPAU_HWACCEL + \ @@ -818,6 +819,9 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback) #endif #if CONFIG_H264_NVDEC_HWACCEL *fmt++ = AV_PIX_FMT_CUDA; +#endif +#if CONFIG_H264_NVDEC_CUARRAY_HWACCEL + *fmt++ = AV_PIX_FMT_CUARRAY; #endif if (CHROMA444(h)) { if (h->avctx->colorspace == AVCOL_SPC_RGB) { @@ -871,6 +875,9 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback) #if CONFIG_H264_NVDEC_HWACCEL *fmt++ = AV_PIX_FMT_CUDA; #endif +#if CONFIG_H264_NVDEC_CUARRAY_HWACCEL + *fmt++ = AV_PIX_FMT_CUARRAY; +#endif #if CONFIG_H264_VIDEOTOOLBOX_HWACCEL if (h->avctx->colorspace != AVCOL_SPC_RGB) *fmt++ = AV_PIX_FMT_VIDEOTOOLBOX; diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index ca65df2b84..b78b7989ea 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -1134,6 +1134,9 @@ const FFCodec ff_h264_decoder = { #if CONFIG_H264_NVDEC_HWACCEL HWACCEL_NVDEC(h264), #endif +#if CONFIG_H264_NVDEC_CUARRAY_HWACCEL + HWACCEL_NVDEC_CUARRAY(h264), +#endif #if CONFIG_H264_VAAPI_HWACCEL HWACCEL_VAAPI(h264), #endif diff --git a/libavcodec/hevc/hevcdec.c b/libavcodec/hevc/hevcdec.c index 1c03289116..9aa3319565 100644 --- a/libavcodec/hevc/hevcdec.c +++ b/libavcodec/hevc/hevcdec.c @@ -566,6 +566,7 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) CONFIG_HEVC_D3D11VA_HWACCEL * 2 + \ CONFIG_HEVC_D3D12VA_HWACCEL + \ CONFIG_HEVC_NVDEC_HWACCEL + \ + CONFIG_HEVC_NVDEC_CUARRAY_HWACCEL + \ CONFIG_HEVC_VAAPI_HWACCEL + \ CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL + \ CONFIG_HEVC_VDPAU_HWACCEL + \ @@ -599,6 +600,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) #if CONFIG_HEVC_NVDEC_HWACCEL *fmt++ = AV_PIX_FMT_CUDA; #endif +#if CONFIG_HEVC_NVDEC_CUARRAY_HWACCEL + *fmt++ = AV_PIX_FMT_CUARRAY; +#endif #if CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL *fmt++ = AV_PIX_FMT_VIDEOTOOLBOX; #endif @@ -631,6 +635,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) #endif #if CONFIG_HEVC_NVDEC_HWACCEL *fmt++ = AV_PIX_FMT_CUDA; +#endif +#if CONFIG_HEVC_NVDEC_CUARRAY_HWACCEL + *fmt++ = AV_PIX_FMT_CUARRAY; #endif break; case AV_PIX_FMT_YUV444P: @@ -643,6 +650,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) #if CONFIG_HEVC_NVDEC_HWACCEL *fmt++ = AV_PIX_FMT_CUDA; #endif +#if CONFIG_HEVC_NVDEC_CUARRAY_HWACCEL + *fmt++ = AV_PIX_FMT_CUARRAY; +#endif #if CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL *fmt++ = AV_PIX_FMT_VIDEOTOOLBOX; #endif @@ -663,6 +673,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) #endif #if CONFIG_HEVC_NVDEC_HWACCEL *fmt++ = AV_PIX_FMT_CUDA; +#endif +#if CONFIG_HEVC_NVDEC_CUARRAY_HWACCEL + *fmt++ = AV_PIX_FMT_CUARRAY; #endif break; case AV_PIX_FMT_YUV444P10: @@ -683,6 +696,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) #endif #if CONFIG_HEVC_NVDEC_HWACCEL *fmt++ = AV_PIX_FMT_CUDA; +#endif +#if CONFIG_HEVC_NVDEC_CUARRAY_HWACCEL + *fmt++ = AV_PIX_FMT_CUARRAY; #endif break; case AV_PIX_FMT_YUV422P12: @@ -694,6 +710,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) #endif #if CONFIG_HEVC_NVDEC_HWACCEL *fmt++ = AV_PIX_FMT_CUDA; +#endif +#if CONFIG_HEVC_NVDEC_CUARRAY_HWACCEL + *fmt++ = AV_PIX_FMT_CUARRAY; #endif break; } @@ -4262,6 +4281,9 @@ const FFCodec ff_hevc_decoder = { #if CONFIG_HEVC_NVDEC_HWACCEL HWACCEL_NVDEC(hevc), #endif +#if CONFIG_HEVC_NVDEC_CUARRAY_HWACCEL + HWACCEL_NVDEC_CUARRAY(hevc), +#endif #if CONFIG_HEVC_VAAPI_HWACCEL HWACCEL_VAAPI(hevc), #endif diff --git a/libavcodec/hwaccels.h b/libavcodec/hwaccels.h index 4f8da46c13..e593bf3b71 100644 --- a/libavcodec/hwaccels.h +++ b/libavcodec/hwaccels.h @@ -25,6 +25,7 @@ extern const struct FFHWAccel ff_av1_d3d11va2_hwaccel; extern const struct FFHWAccel ff_av1_d3d12va_hwaccel; extern const struct FFHWAccel ff_av1_dxva2_hwaccel; extern const struct FFHWAccel ff_av1_nvdec_hwaccel; +extern const struct FFHWAccel ff_av1_nvdec_cuarray_hwaccel; extern const struct FFHWAccel ff_av1_vaapi_hwaccel; extern const struct FFHWAccel ff_av1_vdpau_hwaccel; extern const struct FFHWAccel ff_av1_videotoolbox_hwaccel; @@ -38,6 +39,7 @@ extern const struct FFHWAccel ff_h264_d3d11va2_hwaccel; extern const struct FFHWAccel ff_h264_d3d12va_hwaccel; extern const struct FFHWAccel ff_h264_dxva2_hwaccel; extern const struct FFHWAccel ff_h264_nvdec_hwaccel; +extern const struct FFHWAccel ff_h264_nvdec_cuarray_hwaccel; extern const struct FFHWAccel ff_h264_vaapi_hwaccel; extern const struct FFHWAccel ff_h264_vdpau_hwaccel; extern const struct FFHWAccel ff_h264_videotoolbox_hwaccel; @@ -47,6 +49,7 @@ extern const struct FFHWAccel ff_hevc_d3d11va2_hwaccel; extern const struct FFHWAccel ff_hevc_d3d12va_hwaccel; extern const struct FFHWAccel ff_hevc_dxva2_hwaccel; extern const struct FFHWAccel ff_hevc_nvdec_hwaccel; +extern const struct FFHWAccel ff_hevc_nvdec_cuarray_hwaccel; extern const struct FFHWAccel ff_hevc_vaapi_hwaccel; extern const struct FFHWAccel ff_hevc_vdpau_hwaccel; extern const struct FFHWAccel ff_hevc_videotoolbox_hwaccel; @@ -54,6 +57,7 @@ extern const struct FFHWAccel ff_hevc_vulkan_hwaccel; extern const struct FFHWAccel ff_mjpeg_nvdec_hwaccel; extern const struct FFHWAccel ff_mjpeg_vaapi_hwaccel; extern const struct FFHWAccel ff_mpeg1_nvdec_hwaccel; +extern const struct FFHWAccel ff_mpeg1_nvdec_cuarray_hwaccel; extern const struct FFHWAccel ff_mpeg1_vdpau_hwaccel; extern const struct FFHWAccel ff_mpeg1_videotoolbox_hwaccel; extern const struct FFHWAccel ff_mpeg2_d3d11va_hwaccel; @@ -61,10 +65,12 @@ extern const struct FFHWAccel ff_mpeg2_d3d11va2_hwaccel; extern const struct FFHWAccel ff_mpeg2_d3d12va_hwaccel; extern const struct FFHWAccel ff_mpeg2_dxva2_hwaccel; extern const struct FFHWAccel ff_mpeg2_nvdec_hwaccel; +extern const struct FFHWAccel ff_mpeg2_nvdec_cuarray_hwaccel; extern const struct FFHWAccel ff_mpeg2_vaapi_hwaccel; extern const struct FFHWAccel ff_mpeg2_vdpau_hwaccel; extern const struct FFHWAccel ff_mpeg2_videotoolbox_hwaccel; extern const struct FFHWAccel ff_mpeg4_nvdec_hwaccel; +extern const struct FFHWAccel ff_mpeg4_nvdec_cuarray_hwaccel; extern const struct FFHWAccel ff_mpeg4_vaapi_hwaccel; extern const struct FFHWAccel ff_mpeg4_vdpau_hwaccel; extern const struct FFHWAccel ff_mpeg4_videotoolbox_hwaccel; @@ -77,15 +83,18 @@ extern const struct FFHWAccel ff_vc1_d3d11va2_hwaccel; extern const struct FFHWAccel ff_vc1_d3d12va_hwaccel; extern const struct FFHWAccel ff_vc1_dxva2_hwaccel; extern const struct FFHWAccel ff_vc1_nvdec_hwaccel; +extern const struct FFHWAccel ff_vc1_nvdec_cuarray_hwaccel; extern const struct FFHWAccel ff_vc1_vaapi_hwaccel; extern const struct FFHWAccel ff_vc1_vdpau_hwaccel; extern const struct FFHWAccel ff_vp8_nvdec_hwaccel; +extern const struct FFHWAccel ff_vp8_nvdec_cuarray_hwaccel; extern const struct FFHWAccel ff_vp8_vaapi_hwaccel; extern const struct FFHWAccel ff_vp9_d3d11va_hwaccel; extern const struct FFHWAccel ff_vp9_d3d11va2_hwaccel; extern const struct FFHWAccel ff_vp9_d3d12va_hwaccel; extern const struct FFHWAccel ff_vp9_dxva2_hwaccel; extern const struct FFHWAccel ff_vp9_nvdec_hwaccel; +extern const struct FFHWAccel ff_vp9_nvdec_cuarray_hwaccel; extern const struct FFHWAccel ff_vp9_vaapi_hwaccel; extern const struct FFHWAccel ff_vp9_vdpau_hwaccel; extern const struct FFHWAccel ff_vp9_videotoolbox_hwaccel; @@ -96,6 +105,7 @@ extern const struct FFHWAccel ff_wmv3_d3d11va2_hwaccel; extern const struct FFHWAccel ff_wmv3_d3d12va_hwaccel; extern const struct FFHWAccel ff_wmv3_dxva2_hwaccel; extern const struct FFHWAccel ff_wmv3_nvdec_hwaccel; +extern const struct FFHWAccel ff_wmv3_nvdec_cuarray_hwaccel; extern const struct FFHWAccel ff_wmv3_vaapi_hwaccel; extern const struct FFHWAccel ff_wmv3_vdpau_hwaccel; diff --git a/libavcodec/hwconfig.h b/libavcodec/hwconfig.h index ee29ca631d..c7b1888017 100644 --- a/libavcodec/hwconfig.h +++ b/libavcodec/hwconfig.h @@ -67,6 +67,8 @@ void ff_hwaccel_uninit(AVCodecContext *avctx); HW_CONFIG_HWACCEL(1, 1, 0, D3D11, D3D11VA, ff_ ## codec ## _d3d11va2_hwaccel) #define HWACCEL_NVDEC(codec) \ HW_CONFIG_HWACCEL(1, 1, 0, CUDA, CUDA, ff_ ## codec ## _nvdec_hwaccel) +#define HWACCEL_NVDEC_CUARRAY(codec) \ + HW_CONFIG_HWACCEL(1, 1, 0, CUARRAY, CUDA, ff_ ## codec ## _nvdec_cuarray_hwaccel) #define HWACCEL_VAAPI(codec) \ HW_CONFIG_HWACCEL(1, 1, 1, VAAPI, VAAPI, ff_ ## codec ## _vaapi_hwaccel) #define HWACCEL_VDPAU(codec) \ diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 19ad08d10e..bef003704a 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -791,6 +791,9 @@ static const enum AVPixelFormat mpeg1_hwaccel_pixfmt_list_420[] = { #if CONFIG_MPEG1_NVDEC_HWACCEL AV_PIX_FMT_CUDA, #endif +#if CONFIG_MPEG1_NVDEC_CUARRAY_HWACCEL + AV_PIX_FMT_CUARRAY, +#endif #if CONFIG_MPEG1_VDPAU_HWACCEL AV_PIX_FMT_VDPAU, #endif @@ -802,6 +805,9 @@ static const enum AVPixelFormat mpeg2_hwaccel_pixfmt_list_420[] = { #if CONFIG_MPEG2_NVDEC_HWACCEL AV_PIX_FMT_CUDA, #endif +#if CONFIG_MPEG2_NVDEC_CUARRAY_HWACCEL + AV_PIX_FMT_CUARRAY, +#endif #if CONFIG_MPEG2_VDPAU_HWACCEL AV_PIX_FMT_VDPAU, #endif @@ -2648,6 +2654,9 @@ const FFCodec ff_mpeg1video_decoder = { #if CONFIG_MPEG1_NVDEC_HWACCEL HWACCEL_NVDEC(mpeg1), #endif +#if CONFIG_MPEG1_NVDEC_CUARRAY_HWACCEL + HWACCEL_NVDEC_CUARRAY(mpeg1), +#endif #if CONFIG_MPEG1_VDPAU_HWACCEL HWACCEL_VDPAU(mpeg1), #endif @@ -2719,6 +2728,9 @@ const FFCodec ff_mpeg2video_decoder = { #if CONFIG_MPEG2_NVDEC_HWACCEL HWACCEL_NVDEC(mpeg2), #endif +#if CONFIG_MPEG2_NVDEC_CUARRAY_HWACCEL + HWACCEL_NVDEC_CUARRAY(mpeg2), +#endif #if CONFIG_MPEG2_VAAPI_HWACCEL HWACCEL_VAAPI(mpeg2), #endif diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index 9cfb3cde2d..e080c83f9d 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -4102,6 +4102,9 @@ const FFCodec ff_mpeg4_decoder = { #if CONFIG_MPEG4_NVDEC_HWACCEL HWACCEL_NVDEC(mpeg4), #endif +#if CONFIG_MPEG4_NVDEC_CUARRAY_HWACCEL + HWACCEL_NVDEC_CUARRAY(mpeg4), +#endif #if CONFIG_MPEG4_VAAPI_HWACCEL HWACCEL_VAAPI(mpeg4), #endif diff --git a/libavcodec/nvdec_av1.c b/libavcodec/nvdec_av1.c index d07fe6324c..45fc67375e 100644 --- a/libavcodec/nvdec_av1.c +++ b/libavcodec/nvdec_av1.c @@ -20,6 +20,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config_components.h" + #include "libavutil/mem.h" #include "avcodec.h" #include "nvdec.h" @@ -339,6 +341,7 @@ static int nvdec_av1_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ return ff_nvdec_frame_params(avctx, hw_frames_ctx, 8 * 2, 0); } +#if CONFIG_AV1_NVDEC_HWACCEL const FFHWAccel ff_av1_nvdec_hwaccel = { .p.name = "av1_nvdec", .p.type = AVMEDIA_TYPE_VIDEO, @@ -352,3 +355,20 @@ const FFHWAccel ff_av1_nvdec_hwaccel = { .uninit = ff_nvdec_decode_uninit, .priv_data_size = sizeof(NVDECContext), }; +#endif + +#if CONFIG_AV1_NVDEC_CUARRAY_HWACCEL +const FFHWAccel ff_av1_nvdec_cuarray_hwaccel = { + .p.name = "av1_nvdec_cuarray", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_AV1, + .p.pix_fmt = AV_PIX_FMT_CUARRAY, + .start_frame = nvdec_av1_start_frame, + .end_frame = ff_nvdec_simple_end_frame, + .decode_slice = nvdec_av1_decode_slice, + .frame_params = nvdec_av1_frame_params, + .init = ff_nvdec_decode_init, + .uninit = ff_nvdec_decode_uninit, + .priv_data_size = sizeof(NVDECContext), +}; +#endif diff --git a/libavcodec/nvdec_h264.c b/libavcodec/nvdec_h264.c index 54c98e611d..83ec456e34 100644 --- a/libavcodec/nvdec_h264.c +++ b/libavcodec/nvdec_h264.c @@ -20,6 +20,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config_components.h" + #include <stdint.h> #include <string.h> @@ -172,6 +174,7 @@ static int nvdec_h264_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, sps->ref_frame_count + sps->num_reorder_frames, 0); } +#if CONFIG_H264_NVDEC_HWACCEL const FFHWAccel ff_h264_nvdec_hwaccel = { .p.name = "h264_nvdec", .p.type = AVMEDIA_TYPE_VIDEO, @@ -185,3 +188,20 @@ const FFHWAccel ff_h264_nvdec_hwaccel = { .uninit = ff_nvdec_decode_uninit, .priv_data_size = sizeof(NVDECContext), }; +#endif + +#if CONFIG_H264_NVDEC_CUARRAY_HWACCEL +const FFHWAccel ff_h264_nvdec_cuarray_hwaccel = { + .p.name = "h264_nvdec_cuarray", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_H264, + .p.pix_fmt = AV_PIX_FMT_CUARRAY, + .start_frame = nvdec_h264_start_frame, + .end_frame = ff_nvdec_end_frame, + .decode_slice = nvdec_h264_decode_slice, + .frame_params = nvdec_h264_frame_params, + .init = ff_nvdec_decode_init, + .uninit = ff_nvdec_decode_uninit, + .priv_data_size = sizeof(NVDECContext), +}; +#endif diff --git a/libavcodec/nvdec_hevc.c b/libavcodec/nvdec_hevc.c index 2b9df3e702..601ace7d29 100644 --- a/libavcodec/nvdec_hevc.c +++ b/libavcodec/nvdec_hevc.c @@ -20,6 +20,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config_components.h" + #include <stdint.h> #include <string.h> @@ -321,6 +323,7 @@ static int nvdec_hevc_decode_init(AVCodecContext *avctx) { return ff_nvdec_decode_init(avctx); } +#if CONFIG_HEVC_NVDEC_HWACCEL const FFHWAccel ff_hevc_nvdec_hwaccel = { .p.name = "hevc_nvdec", .p.type = AVMEDIA_TYPE_VIDEO, @@ -334,3 +337,20 @@ const FFHWAccel ff_hevc_nvdec_hwaccel = { .uninit = ff_nvdec_decode_uninit, .priv_data_size = sizeof(NVDECContext), }; +#endif + +#if CONFIG_HEVC_NVDEC_CUARRAY_HWACCEL +const FFHWAccel ff_hevc_nvdec_cuarray_hwaccel = { + .p.name = "hevc_nvdec_cuarray", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_HEVC, + .p.pix_fmt = AV_PIX_FMT_CUARRAY, + .start_frame = nvdec_hevc_start_frame, + .end_frame = ff_nvdec_end_frame, + .decode_slice = nvdec_hevc_decode_slice, + .frame_params = nvdec_hevc_frame_params, + .init = nvdec_hevc_decode_init, + .uninit = ff_nvdec_decode_uninit, + .priv_data_size = sizeof(NVDECContext), +}; +#endif diff --git a/libavcodec/nvdec_mpeg12.c b/libavcodec/nvdec_mpeg12.c index ca0a1001dc..34524488f1 100644 --- a/libavcodec/nvdec_mpeg12.c +++ b/libavcodec/nvdec_mpeg12.c @@ -118,6 +118,22 @@ const FFHWAccel ff_mpeg2_nvdec_hwaccel = { }; #endif +#if CONFIG_MPEG2_NVDEC_CUARRAY_HWACCEL +const FFHWAccel ff_mpeg2_nvdec_cuarray_hwaccel = { + .p.name = "mpeg2_nvdec_cuarray", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG2VIDEO, + .p.pix_fmt = AV_PIX_FMT_CUARRAY, + .start_frame = nvdec_mpeg12_start_frame, + .end_frame = ff_nvdec_simple_end_frame, + .decode_slice = ff_nvdec_simple_decode_slice, + .frame_params = nvdec_mpeg12_frame_params, + .init = ff_nvdec_decode_init, + .uninit = ff_nvdec_decode_uninit, + .priv_data_size = sizeof(NVDECContext), +}; +#endif + #if CONFIG_MPEG1_NVDEC_HWACCEL const FFHWAccel ff_mpeg1_nvdec_hwaccel = { .p.name = "mpeg1_nvdec", @@ -133,3 +149,19 @@ const FFHWAccel ff_mpeg1_nvdec_hwaccel = { .priv_data_size = sizeof(NVDECContext), }; #endif + +#if CONFIG_MPEG1_NVDEC_CUARRAY_HWACCEL +const FFHWAccel ff_mpeg1_nvdec_cuarray_hwaccel = { + .p.name = "mpeg1_nvdec_cuarray", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG1VIDEO, + .p.pix_fmt = AV_PIX_FMT_CUARRAY, + .start_frame = nvdec_mpeg12_start_frame, + .end_frame = ff_nvdec_simple_end_frame, + .decode_slice = ff_nvdec_simple_decode_slice, + .frame_params = nvdec_mpeg12_frame_params, + .init = ff_nvdec_decode_init, + .uninit = ff_nvdec_decode_uninit, + .priv_data_size = sizeof(NVDECContext), +}; +#endif diff --git a/libavcodec/nvdec_mpeg4.c b/libavcodec/nvdec_mpeg4.c index 369bd5b997..7f31edfe35 100644 --- a/libavcodec/nvdec_mpeg4.c +++ b/libavcodec/nvdec_mpeg4.c @@ -20,6 +20,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config_components.h" + #include "avcodec.h" #include "internal.h" #include "mpeg4videodec.h" @@ -112,6 +114,7 @@ static int nvdec_mpeg4_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 2, 0); } +#if CONFIG_MPEG4_NVDEC_HWACCEL const FFHWAccel ff_mpeg4_nvdec_hwaccel = { .p.name = "mpeg4_nvdec", .p.type = AVMEDIA_TYPE_VIDEO, @@ -125,3 +128,20 @@ const FFHWAccel ff_mpeg4_nvdec_hwaccel = { .uninit = ff_nvdec_decode_uninit, .priv_data_size = sizeof(NVDECContext), }; +#endif + +#if CONFIG_MPEG4_NVDEC_CUARRAY_HWACCEL +const FFHWAccel ff_mpeg4_nvdec_cuarray_hwaccel = { + .p.name = "mpeg4_nvdec_cuarray", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_MPEG4, + .p.pix_fmt = AV_PIX_FMT_CUARRAY, + .start_frame = nvdec_mpeg4_start_frame, + .end_frame = ff_nvdec_simple_end_frame, + .decode_slice = nvdec_mpeg4_decode_slice, + .frame_params = nvdec_mpeg4_frame_params, + .init = ff_nvdec_decode_init, + .uninit = ff_nvdec_decode_uninit, + .priv_data_size = sizeof(NVDECContext), +}; +#endif diff --git a/libavcodec/nvdec_vc1.c b/libavcodec/nvdec_vc1.c index d00cf5237a..05fd63a353 100644 --- a/libavcodec/nvdec_vc1.c +++ b/libavcodec/nvdec_vc1.c @@ -159,6 +159,7 @@ static int nvdec_vc1_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 2, 0); } +#if CONFIG_VC1_NVDEC_HWACCEL const FFHWAccel ff_vc1_nvdec_hwaccel = { .p.name = "vc1_nvdec", .p.type = AVMEDIA_TYPE_VIDEO, @@ -172,6 +173,23 @@ const FFHWAccel ff_vc1_nvdec_hwaccel = { .uninit = ff_nvdec_decode_uninit, .priv_data_size = sizeof(NVDECContext), }; +#endif + +#if CONFIG_VC1_NVDEC_CUARRAY_HWACCEL +const FFHWAccel ff_vc1_nvdec_cuarray_hwaccel = { + .p.name = "vc1_nvdec_cuarray", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VC1, + .p.pix_fmt = AV_PIX_FMT_CUARRAY, + .start_frame = nvdec_vc1_start_frame, + .end_frame = ff_nvdec_simple_end_frame, + .decode_slice = nvdec_vc1_decode_slice, + .frame_params = nvdec_vc1_frame_params, + .init = ff_nvdec_decode_init, + .uninit = ff_nvdec_decode_uninit, + .priv_data_size = sizeof(NVDECContext), +}; +#endif #if CONFIG_WMV3_NVDEC_HWACCEL const FFHWAccel ff_wmv3_nvdec_hwaccel = { @@ -188,3 +206,19 @@ const FFHWAccel ff_wmv3_nvdec_hwaccel = { .priv_data_size = sizeof(NVDECContext), }; #endif + +#if CONFIG_WMV3_NVDEC_CUARRAY_HWACCEL +const FFHWAccel ff_wmv3_nvdec_cuarray_hwaccel = { + .p.name = "wmv3_nvdec_cuarray", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_WMV3, + .p.pix_fmt = AV_PIX_FMT_CUARRAY, + .start_frame = nvdec_vc1_start_frame, + .end_frame = ff_nvdec_simple_end_frame, + .decode_slice = ff_nvdec_simple_decode_slice, + .frame_params = nvdec_vc1_frame_params, + .init = ff_nvdec_decode_init, + .uninit = ff_nvdec_decode_uninit, + .priv_data_size = sizeof(NVDECContext), +}; +#endif diff --git a/libavcodec/nvdec_vp8.c b/libavcodec/nvdec_vp8.c index e273a6ec35..241cced65b 100644 --- a/libavcodec/nvdec_vp8.c +++ b/libavcodec/nvdec_vp8.c @@ -20,6 +20,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config_components.h" + #include "avcodec.h" #include "nvdec.h" #include "decode.h" @@ -93,6 +95,7 @@ static int nvdec_vp8_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 3, 0); } +#if CONFIG_VP8_NVDEC_HWACCEL const FFHWAccel ff_vp8_nvdec_hwaccel = { .p.name = "vp8_nvdec", .p.type = AVMEDIA_TYPE_VIDEO, @@ -106,3 +109,20 @@ const FFHWAccel ff_vp8_nvdec_hwaccel = { .uninit = ff_nvdec_decode_uninit, .priv_data_size = sizeof(NVDECContext), }; +#endif + +#if CONFIG_VP8_NVDEC_CUARRAY_HWACCEL +const FFHWAccel ff_vp8_nvdec_cuarray_hwaccel = { + .p.name = "vp8_nvdec_cuarray", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VP8, + .p.pix_fmt = AV_PIX_FMT_CUARRAY, + .start_frame = nvdec_vp8_start_frame, + .end_frame = ff_nvdec_simple_end_frame, + .decode_slice = ff_nvdec_simple_decode_slice, + .frame_params = nvdec_vp8_frame_params, + .init = ff_nvdec_decode_init, + .uninit = ff_nvdec_decode_uninit, + .priv_data_size = sizeof(NVDECContext), +}; +#endif diff --git a/libavcodec/nvdec_vp9.c b/libavcodec/nvdec_vp9.c index f83ff93818..73eee1c926 100644 --- a/libavcodec/nvdec_vp9.c +++ b/libavcodec/nvdec_vp9.c @@ -20,6 +20,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config_components.h" + #include "libavutil/pixdesc.h" #include "avcodec.h" @@ -172,6 +174,7 @@ static int nvdec_vp9_frame_params(AVCodecContext *avctx, return ff_nvdec_frame_params(avctx, hw_frames_ctx, 8, 0); } +#if CONFIG_VP9_NVDEC_HWACCEL const FFHWAccel ff_vp9_nvdec_hwaccel = { .p.name = "vp9_nvdec", .p.type = AVMEDIA_TYPE_VIDEO, @@ -185,3 +188,20 @@ const FFHWAccel ff_vp9_nvdec_hwaccel = { .uninit = ff_nvdec_decode_uninit, .priv_data_size = sizeof(NVDECContext), }; +#endif + +#if CONFIG_VP9_NVDEC_CUARRAY_HWACCEL +const FFHWAccel ff_vp9_nvdec_cuarray_hwaccel = { + .p.name = "vp9_nvdec_cuarray", + .p.type = AVMEDIA_TYPE_VIDEO, + .p.id = AV_CODEC_ID_VP9, + .p.pix_fmt = AV_PIX_FMT_CUARRAY, + .start_frame = nvdec_vp9_start_frame, + .end_frame = ff_nvdec_simple_end_frame, + .decode_slice = ff_nvdec_simple_decode_slice, + .frame_params = nvdec_vp9_frame_params, + .init = ff_nvdec_decode_init, + .uninit = ff_nvdec_decode_uninit, + .priv_data_size = sizeof(NVDECContext), +}; +#endif diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index 12b1e09415..1102e8123e 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -1417,6 +1417,9 @@ const FFCodec ff_vc1_decoder = { #if CONFIG_VC1_NVDEC_HWACCEL HWACCEL_NVDEC(vc1), #endif +#if CONFIG_VC1_NVDEC_CUARRAY_HWACCEL + HWACCEL_NVDEC_CUARRAY(vc1), +#endif #if CONFIG_VC1_VAAPI_HWACCEL HWACCEL_VAAPI(vc1), #endif @@ -1456,6 +1459,9 @@ const FFCodec ff_wmv3_decoder = { #if CONFIG_WMV3_NVDEC_HWACCEL HWACCEL_NVDEC(wmv3), #endif +#if CONFIG_WMV3_NVDEC_CUARRAY_HWACCEL + HWACCEL_NVDEC_CUARRAY(wmv3), +#endif #if CONFIG_WMV3_VAAPI_HWACCEL HWACCEL_VAAPI(wmv3), #endif diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c index c54e79173c..39cc00fefe 100644 --- a/libavcodec/vp8.c +++ b/libavcodec/vp8.c @@ -185,6 +185,9 @@ static enum AVPixelFormat get_pixel_format(VP8Context *s) #endif #if CONFIG_VP8_NVDEC_HWACCEL AV_PIX_FMT_CUDA, +#endif +#if CONFIG_VP8_NVDEC_CUARRAY_HWACCEL + AV_PIX_FMT_CUARRAY, #endif AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE, @@ -2976,6 +2979,9 @@ const FFCodec ff_vp8_decoder = { #endif #if CONFIG_VP8_NVDEC_HWACCEL HWACCEL_NVDEC(vp8), +#endif +#if CONFIG_VP8_NVDEC_CUARRAY_HWACCEL + HWACCEL_NVDEC_CUARRAY(vp8), #endif NULL }, diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index 8ea313532a..9f10db6d0f 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -168,6 +168,7 @@ static int update_size(AVCodecContext *avctx, int w, int h) CONFIG_VP9_D3D11VA_HWACCEL * 2 + \ CONFIG_VP9_D3D12VA_HWACCEL + \ CONFIG_VP9_NVDEC_HWACCEL + \ + CONFIG_VP9_NVDEC_CUARRAY_HWACCEL + \ CONFIG_VP9_VAAPI_HWACCEL + \ CONFIG_VP9_VDPAU_HWACCEL + \ CONFIG_VP9_VIDEOTOOLBOX_HWACCEL + \ @@ -202,6 +203,9 @@ static int update_size(AVCodecContext *avctx, int w, int h) #if CONFIG_VP9_NVDEC_HWACCEL *fmtp++ = AV_PIX_FMT_CUDA; #endif +#if CONFIG_VP9_NVDEC_CUARRAY_HWACCEL + *fmtp++ = AV_PIX_FMT_CUARRAY; +#endif #if CONFIG_VP9_VAAPI_HWACCEL *fmtp++ = AV_PIX_FMT_VAAPI; #endif @@ -219,6 +223,9 @@ static int update_size(AVCodecContext *avctx, int w, int h) #if CONFIG_VP9_NVDEC_HWACCEL *fmtp++ = AV_PIX_FMT_CUDA; #endif +#if CONFIG_VP9_NVDEC_CUARRAY_HWACCEL + *fmtp++ = AV_PIX_FMT_CUARRAY; +#endif #if CONFIG_VP9_VAAPI_HWACCEL *fmtp++ = AV_PIX_FMT_VAAPI; #endif @@ -1947,6 +1954,9 @@ const FFCodec ff_vp9_decoder = { #if CONFIG_VP9_NVDEC_HWACCEL HWACCEL_NVDEC(vp9), #endif +#if CONFIG_VP9_NVDEC_CUARRAY_HWACCEL + HWACCEL_NVDEC_CUARRAY(vp9), +#endif #if CONFIG_VP9_VAAPI_HWACCEL HWACCEL_VAAPI(vp9), #endif _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
