diff --git a/multimedia/ffmpeg/Makefile b/multimedia/ffmpeg/Makefile index 8acca3244f6d..84a365ca9454 100644 --- a/multimedia/ffmpeg/Makefile +++ b/multimedia/ffmpeg/Makefile @@ -1,687 +1,686 @@ PORTNAME= ffmpeg -PORTVERSION= 6.1.1 -PORTREVISION= 6 +PORTVERSION= 6.1.2 PORTEPOCH= 1 CATEGORIES= multimedia audio net MASTER_SITES= https://ffmpeg.org/releases/ MAINTAINER= multimedia@FreeBSD.org COMMENT= Realtime audio/video encoder/converter and streaming server WWW= https://ffmpeg.org/ LICENSE= GPLv2+ LGPL21+ LICENSE_COMB= multi BUILD_DEPENDS= ${BUILD_DEPENDS_${ARCH}} BUILD_DEPENDS_aarch64= as:devel/binutils BUILD_DEPENDS_amd64= nasm:devel/nasm BUILD_DEPENDS_armv6= as:devel/binutils BUILD_DEPENDS_armv7= as:devel/binutils BUILD_DEPENDS_i386= nasm:devel/nasm HAS_CONFIGURE= yes CONFIGURE_LOG= ffbuild/config.log USES= compiler:c11 cpe gmake localbase:ldflags perl5 \ pkgconfig shebangfix tar:xz USE_LDCONFIG= yes USE_PERL5= build SHEBANG_FILES= doc/texi2pod.pl NOPRECIOUSMAKEVARS= yes # ARCH PORTSCOUT= limit:^6\. # Option CHROMAPRINT disabled, it cannot work and people are baffled. OPTIONS_DEFINE= ALSA AMR_NB AMR_WB AOM ARIBB24 ARIBCAPTION ASM ASS BS2B CACA CDIO \ CODEC2 DAV1D DAVS2 DC1394 DEBUG DOCS DRM FDK_AAC FLITE \ FONTCONFIG FREETYPE FREI0R FRIBIDI GLSLANG GME GSM HARFBUZZ ICONV ILBC \ JACK JXL KLVANC KVAZAAR LADSPA LAME LCMS2 LENSFUN LIBBLURAY LIBPLACEBO LIBRSVG2 \ LIBXML2 LTO LV2 MODPLUG MYSOFA NETWORK NVENC OPENAL OPENCL OPENGL \ OPENH264 OPENJPEG OPENMPT OPENVINO OPTIMIZED_CFLAGS OPUS POCKETSPHINX \ PULSEAUDIO RAV1E RABBITMQ RIST RTCPU RUBBERBAND SDL SHADERC SMB SNAPPY \ SNDIO SOXR SPEEX SRT SSH SVTAV1 SVTHEVC SVTVP9 TENSORFLOW \ TESSERACT THEORA TWOLAME UAVS3D V4L VAAPI VAPOURSYNTH VDPAU VIDSTAB \ VMAF VO_AMRWBENC VORBIS VPX VULKAN WEBP X264 X265 \ XAVS2 XCB XVID XVIDEO ZIMG ZMQ ZVBI # intel-media-sdk only for i386/amd64 OPTIONS_DEFINE_amd64= MFX VPL OPTIONS_DEFINE_i386= MFX OPTIONS_DEFAULT= AOM ASM ASS DAV1D DRM FONTCONFIG FREETYPE FREI0R GMP \ GNUTLS HARFBUZZ ICONV JXL LAME LCMS2 LIBPLACEBO LIBXML2 NETWORK \ OPTIMIZED_CFLAGS OPUS RTCPU SHADERC SVTAV1 V4L VAAPI VDPAU VMAF \ VORBIS VPX VULKAN WEBP X264 X265 XCB OPTIONS_DEFAULT_amd64= NVENC OPTIONS_DEFAULT_i386= NVENC # i386 is too register-starved for LTO (PR257124) OPTIONS_EXCLUDE_i386= LTO .if !exists(${.CURDIR:H:H}/multimedia/libaribcaption) # https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/b6138633cdf2 OPTIONS_EXCLUDE+= ARIBCAPTION .endif .if !exists(${.CURDIR:H:H}/multimedia/davs2) # https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/5985a1bf7233 OPTIONS_EXCLUDE+= DAVS2 .endif .if !exists(${.CURDIR:H:H}/multimedia/uavs3d) # https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/c952db9d68d3 OPTIONS_EXCLUDE+= UAVS3D .endif .if !exists(${.CURDIR:H:H}/multimedia/xavs2) # https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/85a921f4618 OPTIONS_EXCLUDE+= XAVS2 .endif .if !exists(${.CURDIR:H:H}/multimedia/klvanc) # https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/8732dfa9954 OPTIONS_EXCLUDE+= KLVANC .endif .if !exists(${.CURDIR:H:H}/science/openvino) # https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/ff37ebaf30e6 OPTIONS_EXCLUDE+= OPENVINO .endif OPTIONS_RADIO= RTMP SSL OPTIONS_RADIO_RTMP= GCRYPT GMP OPTIONS_RADIO_SSL= GNUTLS MBEDTLS OPENSSL OPTIONS_GROUP= LICENSE OPTIONS_GROUP_LICENSE= GPL3 NONFREE ASS_DESC= Subtitles rendering via libass AOM_DESC= AV1 video encoding/decoding via libaom ARIBB24_DESC= ARIB text and caption decoding via libaribb24 ARIBCAPTION_DESC= ARIB text and caption decoding via libaribcaption BS2B_DESC= Bauer Stereophonic-to-Binaural filter CHROMAPRINT_DESC= Audio fingerprinting with chromaprint CODEC2_DESC= Codec 2 audio encoding/decoding via libcodec2 DAV1D_DESC= AV1 video decoding via libdav1d DAVS2_DESC= AVS2 decoding via libdavs2 DC1394_DESC= IIDC-1394 grabbing using libdc1394 DRM_DESC= KMS grabbing using libdrm FDK_AAC_DESC= AAC audio encoding via Fraunhofer FDK FLITE_DESC= Voice synthesis support via libflite GLSLANG_DESC= GLSL->SPIRV compilation via libglslang GME_DESC= Game Music Emu demuxer GPL3_DESC= Allow (L)GPL version 3 code(cs) HARFBUZZ_DESC= Text shaping via HarfBuzz ILBC_DESC= Internet Low Bit Rate codec KLVANC_DESC= Kernel Labs VANC processing KVAZAAR_DESC= H.265 video codec support via Kvazaar LICENSE_DESC= Licensing options LV2_DESC= LV2 audio filtering MFX_DESC= Intel MediaSDK (aka Quick Sync Video) MYSOFA_DESC= SOFAlizer binaural filter NETWORK_DESC= Networking support NONFREE_DESC= Allow use of nonfree code NVENC_DESC= NVIDIA decoder/encoder with CUDA support OPENMPT_DESC= Decoding tracked files via libopenmpt OPENH264_DESC= H.264 video codec support via OpenH264 OPENVINO_DESC= OpenVINO as a DNN module backend for DNN based filters like dnn_processing POCKETSPHINX_DESC= Automatic Speech Recognition via PocketSphinx RAV1E_DESC= AV1 encoding via librav1e RABBITMQ_DESC= AMQP 0-9-1 protocol via RabbitMQ RIST_DESC= Reliable Internet Stream Transport protocol via librist RUBBERBAND_DESC=Time-stretching and pitch-shifting with librubberband RTCPU_DESC= Detect CPU capabilities at runtime RTMP_DESC= RTMP(T)E protocol support SHADERC_DESC= GLSL->SPIRV compilation via libshaderc SRT_DESC= Haivision SRT protocol via libsrt SVTAV1_DESC= AV1 encoding via SVT-AV1 SVTHEVC_DESC= HEVC encoding via SVT-HEVC SVTVP9_DESC= VP9 encoding via SVT-VP9 LIBPLACEBO_DESC=GPU filters from libplacebo TENSORFLOW_DESC=TensorFlow as a DNN module backend for DNN based filters like sr TESSERACT_DESC= Optical Character Recognition via Tesseract THEORA_DESC= Encoding support for theora via libtheora UAVS3D_DESC= AVS3 decoding via libuavs3d VAPOURSYNTH_DESC= VapourSynth demuxer VIDSTAB_DESC= Video stabilization filter VMAF_DESC= VMAF filter via libvmaf VPL_DESC= Intel oneVPL (aka Quick Sync Video) VULKAN_DESC= Vulkan filters XAVS2_DESC= AVS2 encoding via libxavs2 XCB_DESC= X11 grabbing using XCB XVID_DESC= Encoding support for MPEG-4 ASP via libxvid ZIMG_DESC= "z" library video scaling filter ZMQ_DESC= Message passing via libzmq${ZMQ_VERSION} ZVBI_DESC= Teletext support via libzvbi OPTIONS_SUB= yes # alsa ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib ALSA_CONFIGURE_ENABLE= alsa # Opencore AMR NB AMR_NB_LIB_DEPENDS= libopencore-amrnb.so:audio/opencore-amr AMR_NB_CONFIGURE_ENABLE= libopencore-amrnb AMR_NB_IMPLIES= GPL3 # Opencore AMR WB AMR_WB_LIB_DEPENDS= libopencore-amrwb.so:audio/opencore-amr AMR_WB_CONFIGURE_ENABLE= libopencore-amrwb AMR_WB_IMPLIES= GPL3 # aom AOM_LIB_DEPENDS= libaom.so:multimedia/aom AOM_CONFIGURE_ENABLE= libaom # arib ARIBB24_LIB_DEPENDS= libaribb24.so:multimedia/aribb24 ARIBB24_CONFIGURE_ENABLE= libaribb24 # aribcaption ARIBCAPTION_LIB_DEPENDS= libaribcaption.so:multimedia/libaribcaption ARIBCAPTION_CONFIGURE_ENABLE= libaribcaption # asm support ASM_CONFIGURE_ENABLE= asm # ass ASS_LIB_DEPENDS= libass.so:multimedia/libass ASS_CONFIGURE_ENABLE= libass # bs2b BS2B_LIB_DEPENDS= libbs2b.so:audio/libbs2b BS2B_CONFIGURE_ENABLE= libbs2b # caca CACA_LIB_DEPENDS= libcaca.so:graphics/libcaca CACA_CONFIGURE_ENABLE= libcaca # cdio CDIO_LIB_DEPENDS= libcdio_paranoia.so:sysutils/libcdio-paranoia CDIO_CONFIGURE_ENABLE= libcdio # chromaprint CHROMAPRINT_BROKEN= Dependency loop CHROMAPRINT_LIB_DEPENDS= libchromaprint.so:audio/chromaprint CHROMAPRINT_CONFIGURE_ENABLE= chromaprint # codec2 CODEC2_LIB_DEPENDS= libcodec2.so:audio/codec2 CODEC2_CONFIGURE_ENABLE= libcodec2 # dav1d DAV1D_LIB_DEPENDS= libdav1d.so:multimedia/dav1d DAV1D_CONFIGURE_ENABLE= libdav1d # davs2 DAVS2_LIB_DEPENDS= libdavs2.so:multimedia/davs2 DAVS2_CONFIGURE_ENABLE= libdavs2 # dc1394 DC1394_LIB_DEPENDS= libdc1394.so:multimedia/libdc1394 DC1394_CONFIGURE_ENABLE= libdc1394 # debugging DEBUG_CONFIGURE_ON= --disable-stripping DEBUG_CONFIGURE_OFF= --disable-debug # docs DOCS_BUILD_DEPENDS= texi2html:textproc/texi2html DOCS_CONFIGURE_ENABLE= htmlpages DOCS_BINARY_ALIAS= makeinfo=${FALSE} # force texi2html # drm DRM_LIB_DEPENDS= libdrm.so:graphics/libdrm DRM_CONFIGURE_ENABLE= libdrm # fdk_aac FDK_AAC_LIB_DEPENDS= libfdk-aac.so:audio/fdk-aac FDK_AAC_CONFIGURE_ENABLE= libfdk-aac FDK_AAC_IMPLIES= NONFREE # flite FLITE_LIB_DEPENDS= libflite.so:audio/flite FLITE_CONFIGURE_ENABLE= libflite # fontconfig FONTCONFIG_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig FONTCONFIG_CONFIGURE_ENABLE= fontconfig # freetype FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2 FREETYPE_CONFIGURE_ENABLE= libfreetype # frei0r FREI0R_BUILD_DEPENDS= ${LOCALBASE}/include/frei0r.h:graphics/frei0r FREI0R_CONFIGURE_ENABLE= frei0r # fribidi FRIBIDI_LIB_DEPENDS= libfribidi.so:converters/fribidi FRIBIDI_CONFIGURE_ENABLE= libfribidi # gcrypt GCRYPT_LIB_DEPENDS= libgcrypt.so:security/libgcrypt GCRYPT_CONFIGURE_ENABLE= gcrypt # glslang GLSLANG_BUILD_DEPENDS= glslang>0:graphics/glslang \ spirv-tools>0:graphics/spirv-tools GLSLANG_CONFIGURE_ENABLE= libglslang GLSLANG_LDFLAGS= -lm GLSLANG_IMPLIES= VULKAN # gnutls GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls GNUTLS_CONFIGURE_ENABLE= gnutls # gme GME_LIB_DEPENDS= libgme.so:audio/libgme GME_CONFIGURE_ENABLE= libgme # gmp GMP_LIB_DEPENDS= libgmp.so:math/gmp GMP_CONFIGURE_ENABLE= gmp GMP_IMPLIES= GPL3 # gsm GSM_LIB_DEPENDS= libgsm.so:audio/gsm GSM_CONFIGURE_ENABLE= libgsm # harfbuzz HARFBUZZ_LIB_DEPENDS= libharfbuzz.so:print/harfbuzz HARFBUZZ_CONFIGURE_ENABLE= libharfbuzz # iconv ICONV_USES= iconv ICONV_CONFIGURE_ENABLE= iconv # ilbc ILBC_LIB_DEPENDS= libilbc.so:net/libilbc ILBC_CONFIGURE_ENABLE= libilbc # jack JACK_LIB_DEPENDS= libjack.so:audio/jack JACK_CONFIGURE_ENABLE= libjack # jxl JXL_LIB_DEPENDS= libjxl.so:graphics/libjxl JXL_CONFIGURE_ENABLE= libjxl # klvanc KLVANC_LIB_DEPENDS= libklvanc.so:multimedia/libklvanc KLVANC_CONFIGURE_ENABLE= libklvanc # kvazaar KVAZAAR_LIB_DEPENDS= libkvazaar.so:multimedia/kvazaar KVAZAAR_CONFIGURE_ENABLE= libkvazaar # ladspa LADSPA_BUILD_DEPENDS= ${LOCALBASE}/include/ladspa.h:audio/ladspa LADSPA_RUN_DEPENDS= ${LOCALBASE}/lib/ladspa/amp.so:audio/ladspa LADSPA_CONFIGURE_ENABLE= ladspa # lame LAME_LIB_DEPENDS= libmp3lame.so:audio/lame LAME_CONFIGURE_ENABLE= libmp3lame # lcms2 LCMS2_LIB_DEPENDS= liblcms2.so:graphics/lcms2 LCMS2_CONFIGURE_ENABLE= lcms2 # lensfun LENSFUN_LIB_DEPENDS= liblensfun.so:graphics/lensfun LENSFUN_CONFIGURE_ENABLE= liblensfun # libbluray LIBBLURAY_LIB_DEPENDS= libbluray.so:multimedia/libbluray LIBBLURAY_CONFIGURE_ENABLE= libbluray # libplacebo LIBPLACEBO_LIB_DEPENDS= libplacebo.so:graphics/libplacebo LIBPLACEBO_CONFIGURE_ENABLE= libplacebo LIBPLACEBO_IMPLIES= VULKAN # librsvg LIBRSVG2_USES= gnome LIBRSVG2_USE= GNOME=cairo,librsvg2 LIBRSVG2_CONFIGURE_ENABLE= librsvg # libxml LIBXML2_LIB_DEPENDS= libxml2.so:textproc/libxml2 LIBXML2_CONFIGURE_ENABLE= libxml2 # lto LTO_CONFIGURE_ON= --enable-lto # lv2 LV2_BUILD_DEPENDS= lv2>0:audio/lv2 LV2_LIB_DEPENDS= liblilv-0.so:audio/lilv LV2_CONFIGURE_ENABLE= lv2 # libv4l V4L_BUILD_DEPENDS= v4l_compat>0:multimedia/v4l_compat V4L_LIB_DEPENDS= libv4l2.so:multimedia/libv4l V4L_CONFIGURE_ENABLE= libv4l2 V4L_CONFIGURE_OFF= --disable-indev=v4l2 \ --disable-outdev=v4l2 # mbedtls MBEDTLS_LIB_DEPENDS= libmbedtls.so:security/mbedtls MBEDTLS_CONFIGURE_ENABLE= mbedtls # mfx MFX_LIB_DEPENDS= libmfx.so:multimedia/intel-media-sdk MFX_CONFIGURE_ENABLE= libmfx # modplug MODPLUG_LIB_DEPENDS= libmodplug.so:audio/libmodplug MODPLUG_CONFIGURE_ENABLE= libmodplug # mysofa MYSOFA_LIB_DEPENDS= libmysofa.so:audio/libmysofa MYSOFA_CONFIGURE_ENABLE= libmysofa # network NETWORK_CONFIGURE_ENABLE= network # nvenc NVENC_BUILD_DEPENDS= ffnvcodec-headers>=11.1.5.2:multimedia/ffnvcodec-headers NVENC_CONFIGURE_ENABLE= nvenc # OpenAL OPENAL_LIB_DEPENDS= libopenal.so:audio/openal-soft OPENAL_CONFIGURE_ENABLE= openal # opencl OPENCL_BUILD_DEPENDS= ${LOCALBASE}/include/CL/opencl.h:devel/opencl OPENCL_LIB_DEPENDS= libOpenCL.so:devel/ocl-icd OPENCL_CONFIGURE_ENABLE= opencl # opengl OPENGL_USES= gl OPENGL_USE= GL=gl OPENGL_CONFIGURE_ENABLE= opengl # openh264 OPENH264_LIB_DEPENDS= libopenh264.so:multimedia/openh264 OPENH264_CONFIGURE_ENABLE= libopenh264 # openjpeg OPENJPEG_LIB_DEPENDS= libopenjp2.so:graphics/openjpeg OPENJPEG_CONFIGURE_ENABLE= libopenjpeg # openmpt OPENMPT_LIB_DEPENDS= libopenmpt.so:audio/libopenmpt OPENMPT_CONFIGURE_ENABLE= libopenmpt # openssl/libtls OPENSSL_USES= ssl OPENSSL_CONFIGURE_ENABLE= ${"${SSL_DEFAULT:Mlibressl*}"!="":?libtls:openssl} OPENSSL_IMPLIES= NONFREE # openvino OPENVINO_LIB_DEPENDS= libinference_engine_c_api.so:science/openvino OPENVINO_CONFIGURE_ENABLE= libopenvino # optimizations OPTIMIZED_CFLAGS_CONFIGURE_ENABLE= optimizations # opus OPUS_LIB_DEPENDS= libopus.so:audio/opus OPUS_CONFIGURE_ENABLE= libopus # pocketsphinx POCKETSPHINX_LIB_DEPENDS= libpocketsphinx.so:audio/pocketsphinx POCKETSPHINX_CONFIGURE_ENABLE= pocketsphinx POCKETSPHINX_BROKEN= pocketsphinx < 5prealpha is not supported # pulseaudio PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio PULSEAUDIO_CONFIGURE_ENABLE= libpulse # rav1e RAV1E_LIB_DEPENDS= librav1e.so:multimedia/librav1e RAV1E_CONFIGURE_ENABLE= librav1e # rabbitmq RABBITMQ_LIB_DEPENDS= librabbitmq.so:net/rabbitmq-c RABBITMQ_CONFIGURE_ENABLE= librabbitmq # rist RIST_LIB_DEPENDS= librist.so:multimedia/librist RIST_CONFIGURE_ENABLE= librist # rubberband RUBBERBAND_LIB_DEPENDS= librubberband.so:audio/rubberband RUBBERBAND_CONFIGURE_ENABLE= librubberband # rtcpu RTCPU_CONFIGURE_ENABLE= runtime-cpudetect # sdl SDL_USES= sdl SDL_USE= SDL=sdl2 SDL_CONFIGURE_ENABLE= sdl2 # shaderc SHADERC_LIB_DEPENDS= libshaderc_shared.so:graphics/shaderc SHADERC_CONFIGURE_ENABLE= libshaderc SHADERC_IMPLIES= VULKAN SHADERC_PREVENTS= GLSLANG # smbclient SMB_USES= samba:lib SMB_CONFIGURE_ENABLE= libsmbclient SMB_IMPLIES= GPL3 # snappy SNAPPY_LIB_DEPENDS= libsnappy.so:archivers/snappy SNAPPY_CONFIGURE_ENABLE= libsnappy # sndio SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio SNDIO_CONFIGURE_ENABLE= sndio # soxr SOXR_LIB_DEPENDS= libsoxr.so:audio/libsoxr SOXR_CONFIGURE_ENABLE= libsoxr # speex SPEEX_LIB_DEPENDS= libspeex.so:audio/speex SPEEX_CONFIGURE_ENABLE= libspeex # ssh SSH_LIB_DEPENDS= libssh.so:security/libssh SSH_CONFIGURE_ENABLE= libssh # srt SRT_LIB_DEPENDS= libsrt.so:www/srt SRT_CONFIGURE_ENABLE= libsrt # svt-av1 SVTAV1_LIB_DEPENDS= libSvtAv1Enc.so:multimedia/svt-av1 SVTAV1_CONFIGURE_ON= --enable-libsvtav1 # svt-hevc SVTHEVC_LIB_DEPENDS= libSvtHevcEnc.so:multimedia/svt-hevc SVTHEVC_CONFIGURE_ON= --enable-libsvthevc SVTHEVC_PATCH_SITES= https://github.com/OpenVisualCloud/SVT-HEVC/raw/v1.5.1-12-g6cca5b93/ffmpeg_plugin/:svthevc SVTHEVC_PATCHFILES= master-0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch:-p1:svthevc \ 0002-doc-Add-libsvt_hevc-encoder-docs.patch:-p1:svthevc .if make(makesum) .MAKEFLAGS: WITH+=SVTHEVC .endif # svt-vp9 SVTVP9_LIB_DEPENDS= libSvtVp9Enc.so:multimedia/svt-vp9 SVTVP9_CONFIGURE_ON= --enable-libsvtvp9 SVTVP9_PATCH_SITES= https://github.com/OpenVisualCloud/SVT-VP9/raw/v0.3.0-20-gbab25a6/ffmpeg_plugin/:svtvp9 SVTVP9_PATCHFILES= master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch:-p1:svtvp9 .if make(makesum) .MAKEFLAGS: WITH+=SVTVP9 .endif # tensorflow TENSORFLOW_LIB_DEPENDS= libtensorflow.so:science/py-tensorflow TENSORFLOW_CONFIGURE_ENABLE= libtensorflow # tesseract TESSERACT_LIB_DEPENDS= libtesseract.so:graphics/tesseract TESSERACT_CONFIGURE_ENABLE= libtesseract # theora THEORA_LIB_DEPENDS= libtheora.so:multimedia/libtheora THEORA_CONFIGURE_ENABLE= libtheora # twolame TWOLAME_LIB_DEPENDS= libtwolame.so:audio/twolame TWOLAME_CONFIGURE_ENABLE= libtwolame # uavs3d UAVS3D_LIB_DEPENDS= libuavs3d.so:multimedia/uavs3d UAVS3D_CONFIGURE_ENABLE= libuavs3d # vaapi VAAPI_LIB_DEPENDS= libva.so:multimedia/libva VAAPI_CONFIGURE_ENABLE= vaapi # vapoursynth VAPOURSYNTH_LIB_DEPENDS= libvapoursynth-script.so:multimedia/vapoursynth VAPOURSYNTH_CONFIGURE_ENABLE= vapoursynth # vdpau VDPAU_USES= xorg VDPAU_USE= XORG=x11 VDPAU_LIB_DEPENDS= libvdpau.so:multimedia/libvdpau VDPAU_CONFIGURE_ENABLE= vdpau # vmaf VMAF_LIB_DEPENDS= libvmaf.so:multimedia/vmaf VMAF_CONFIGURE_ENABLE= libvmaf # vo-amrwbenc VO_AMRWBENC_LIB_DEPENDS= libvo-amrwbenc.so:audio/vo-amrwbenc VO_AMRWBENC_CONFIGURE_ENABLE= libvo-amrwbenc VO_AMRWBENC_IMPLIES= GPL3 # vid.stab VIDSTAB_LIB_DEPENDS= libvidstab.so:multimedia/vid.stab VIDSTAB_CONFIGURE_ENABLE= libvidstab # vorbis VORBIS_LIB_DEPENDS= libvorbisenc.so:audio/libvorbis VORBIS_CONFIGURE_ENABLE= libvorbis # vpl VPL_LIB_DEPENDS= libvpl.so:multimedia/onevpl VPL_CONFIGURE_ENABLE= libvpl # vp8 VPX_LIB_DEPENDS= libvpx.so:multimedia/libvpx VPX_CONFIGURE_ENABLE= libvpx # vulkan VULKAN_BUILD_DEPENDS= vulkan-headers>0:graphics/vulkan-headers VULKAN_LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader VULKAN_CONFIGURE_ENABLE= vulkan # webp WEBP_LIB_DEPENDS= libwebp.so:graphics/webp WEBP_CONFIGURE_ENABLE= libwebp # x264 X264_LIB_DEPENDS= libx264.so:multimedia/libx264 X264_CONFIGURE_ENABLE= libx264 # x265 X265_LIB_DEPENDS= libx265.so:multimedia/x265 X265_CONFIGURE_ENABLE= libx265 # xavs2 XAVS2_LIB_DEPENDS= libxavs2.so:multimedia/xavs2 XAVS2_CONFIGURE_ENABLE= libxavs2 # xcb XCB_USES= xorg XCB_USE= XORG=xcb XCB_CONFIGURE_ENABLE= libxcb # xvid XVID_LIB_DEPENDS= libxvidcore.so:multimedia/xvid XVID_CONFIGURE_ENABLE= libxvid # xv XVIDEO_USES= xorg XVIDEO_USE= XORG=x11,xext,xv XVIDEO_CONFIGURE_OFF= --disable-outdev=xv # zimg ZIMG_LIB_DEPENDS= libzimg.so:graphics/sekrit-twc-zimg ZIMG_CONFIGURE_ENABLE= libzimg # zmq ZMQ_LIB_DEPENDS= libzmq.so:net/libzmq${ZMQ_VERSION} ZMQ_CONFIGURE_ENABLE= libzmq ZMQ_VERSION?= 4 # zvbi ZVBI_LIB_DEPENDS= libzvbi.so:devel/libzvbi ZVBI_CONFIGURE_ENABLE= libzvbi # License knobs GPL3_CONFIGURE_ENABLE= version3 GPL3_VARS= LICENSE="GPLv3+ LGPL3+" LICENSE_FILE_GPLv3+ = ${WRKSRC}/COPYING.GPLv3 LICENSE_FILE_LGPL3+ = ${WRKSRC}/COPYING.LGPLv3 NONFREE_CONFIGURE_ENABLE=nonfree INSTALL_TARGET= install-progs install-doc install-data \ install-libs install-headers install-examples DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX} DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}${PKGNAMESUFFIX} MAKE_ENV+= V=1 CFLAGS_armv6= -Wno-error=int-conversion CFLAGS_armv7= -Wno-error=int-conversion CFLAGS_i386= -Wno-error=int-conversion CFLAGS_powerpc= -Wno-error=int-conversion LDFLAGS_aarch64=-Wl,-z,notext LDFLAGS_armv6= -Wl,-z,notext LDFLAGS_armv7= -Wl,-z,notext LDFLAGS_i386= -Wl,-z,notext CONFIGURE_ARGS+=--prefix="${PREFIX}" \ --mandir="${PREFIX}/share/man" \ --datadir="${DATADIR}" \ --docdir="${DOCSDIR}" \ --pkgconfigdir="${PREFIX}/libdata/pkgconfig" \ --disable-static \ --disable-libcelt \ --enable-shared \ --enable-pic \ --enable-gpl \ --cc="${CC}" \ --cxx="${CXX}" DOC_FILES= Changelog CREDITS INSTALL.md LICENSE.md MAINTAINERS \ README.md RELEASE_NOTES # under doc subdirectory DOC_DOCFILES= APIchanges *.txt PORTDOCS= * .include .if ${PORT_OPTIONS:MNONFREE} LICENSE+= NONFREE LICENSE_COMB= multi LICENSE_NAME_NONFREE= Non free code LICENSE_TEXT_NONFREE= enabling OPENSSL or FDK_AAC restricts redistribution LICENSE_PERMS_NONFREE= auto-accept .endif post-install: (cd ${WRKSRC} && ${COPYTREE_SHARE} \ "${DOC_FILES}" ${STAGEDIR}${DOCSDIR}) (cd ${WRKSRC}/doc && ${COPYTREE_SHARE} \ "${DOC_DOCFILES}" ${STAGEDIR}${DOCSDIR}) .include diff --git a/multimedia/ffmpeg/distinfo b/multimedia/ffmpeg/distinfo index a6cd7337cac8..811067130802 100644 --- a/multimedia/ffmpeg/distinfo +++ b/multimedia/ffmpeg/distinfo @@ -1,9 +1,9 @@ -TIMESTAMP = 1703981246 -SHA256 (ffmpeg-6.1.1.tar.xz) = 8684f4b00f94b85461884c3719382f1261f0d9eb3d59640a1f4ac0873616f968 -SIZE (ffmpeg-6.1.1.tar.xz) = 10458600 +TIMESTAMP = 1722554574 +SHA256 (ffmpeg-6.1.2.tar.xz) = 3b624649725ecdc565c903ca6643d41f33bd49239922e45c9b1442c63dca4e38 +SIZE (ffmpeg-6.1.2.tar.xz) = 10466152 SHA256 (master-0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch) = e8fdc940474f3819b9a8d30cab8164774584c051322acb6194bcb03d56e8175a SIZE (master-0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch) = 25395 SHA256 (0002-doc-Add-libsvt_hevc-encoder-docs.patch) = a164ebdc4d281352bf7ad1b179aae4aeb33f1191c444bed96cb8ab333c046f81 SIZE (0002-doc-Add-libsvt_hevc-encoder-docs.patch) = 5461 SHA256 (master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch) = 0433016c8523c7ce159523946a76c8fa06a926f33f94b70e8de7c2082d14178c SIZE (master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch) = 25894 diff --git a/multimedia/ffmpeg/files/patch-configure b/multimedia/ffmpeg/files/patch-configure index fbdb10a698ee..9654237228cc 100644 --- a/multimedia/ffmpeg/files/patch-configure +++ b/multimedia/ffmpeg/files/patch-configure @@ -1,39 +1,30 @@ ---- configure.orig 2023-02-27 20:43:45 UTC +--- configure.orig 2024-08-01 23:22:54 UTC +++ configure -@@ -3888,13 +3888,7 @@ target_os_default=$(tolower $(uname -s)) +@@ -3956,13 +3956,7 @@ host_os=$target_os_default host_os=$target_os_default # machine -if test "$target_os_default" = aix; then - arch_default=$(uname -p) - strip_default="strip -X32_64" - nm_default="nm -g -X32_64" -else - arch_default=$(uname -m) -fi +arch_default=$(uname -p) cpu="generic" intrinsics="none" -@@ -6705,10 +6699,10 @@ enabled libglslang && { check_lib spirv_compiler glsla +@@ -6715,10 +6709,10 @@ enabled libglslang && { check_lib spirv_compiler glsla enabled libfribidi && require_pkg_config libfribidi fribidi fribidi.h fribidi_version_info enabled libharfbuzz && require_pkg_config libharfbuzz harfbuzz hb.h hb_buffer_create enabled libglslang && { check_lib spirv_compiler glslang/Include/glslang_c_interface.h glslang_initialize_process \ - -lglslang -lMachineIndependent -lOSDependent -lHLSL -lOGLCompiler -lGenericCodeGen \ + -lglslang -lMachineIndependent -lOSDependent -lGenericCodeGen \ -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread -lstdc++ -lm || require spirv_compiler glslang/Include/glslang_c_interface.h glslang_initialize_process \ - -lglslang -lOSDependent -lHLSL -lOGLCompiler \ + -lglslang -lOSDependent \ -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread -lstdc++ -lm; } enabled libgme && { check_pkg_config libgme libgme gme/gme.h gme_new_emu || require libgme gme/gme.h gme_new_emu -lgme -lstdc++; } -@@ -7018,7 +7013,7 @@ fi - - if enabled x86; then - case $target_os in -- mingw32*|mingw64*|win32|win64|linux|cygwin*) -+ freebsd|mingw32*|mingw64*|win32|win64|linux|cygwin*) - ;; - *) - disable ffnvcodec cuvid nvdec nvenc diff --git a/multimedia/ffmpeg/files/patch-libavdevice_v4l2.c b/multimedia/ffmpeg/files/patch-libavdevice_v4l2.c deleted file mode 100644 index 8518fadce3af..000000000000 --- a/multimedia/ffmpeg/files/patch-libavdevice_v4l2.c +++ /dev/null @@ -1,18 +0,0 @@ -- ioctl() prototype on BSDs follows Version 7 AT&T UNIX - ---- libavdevice/v4l2.c.orig 2019-04-21 04:37:17 UTC -+++ libavdevice/v4l2.c -@@ -95,10 +95,10 @@ struct video_data { - int (*open_f)(const char *file, int oflag, ...); - int (*close_f)(int fd); - int (*dup_f)(int fd); --#ifdef __GLIBC__ -- int (*ioctl_f)(int fd, unsigned long int request, ...); --#else -+#if defined(__sun) || defined(__BIONIC__) || defined(__musl__) /* POSIX-like */ - int (*ioctl_f)(int fd, int request, ...); -+#else -+ int (*ioctl_f)(int fd, unsigned long int request, ...); - #endif - ssize_t (*read_f)(int fd, void *buffer, size_t n); - void *(*mmap_f)(void *start, size_t length, int prot, int flags, int fd, int64_t offset); diff --git a/multimedia/ffmpeg/files/patch-libavutil-common.h b/multimedia/ffmpeg/files/patch-libavutil-common.h index 2c8c84e6d372..b54ea87455fb 100644 --- a/multimedia/ffmpeg/files/patch-libavutil-common.h +++ b/multimedia/ffmpeg/files/patch-libavutil-common.h @@ -1,13 +1,13 @@ ---- libavutil/common.h.orig 2015-06-19 20:44:53 UTC +--- libavutil/common.h.orig 2024-08-01 23:22:48 UTC +++ libavutil/common.h -@@ -49,6 +49,10 @@ - # define AV_NE(be, le) (le) - #endif +@@ -43,6 +43,10 @@ + #include "error.h" + #include "macros.h" +#ifndef UINT64_C +#define UINT64_C(c) (c ## UL) +#endif + //rounded division & shift #define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) /* assume b>0 */ diff --git a/multimedia/ffmpeg/files/patch-libavutil_thread.h b/multimedia/ffmpeg/files/patch-libavutil_thread.h deleted file mode 100644 index 29ba6aa40761..000000000000 --- a/multimedia/ffmpeg/files/patch-libavutil_thread.h +++ /dev/null @@ -1,14 +0,0 @@ -pthread_setname_np is implemented on top of PR_SET_NAME on Linux -and is also available on DragonFly, FreeBSD and Solaris - ---- libavutil/thread.h.orig 2023-02-27 20:43:45 UTC -+++ libavutil/thread.h -@@ -196,6 +196,8 @@ static inline int ff_thread_setname(const char *name) - { - #if HAVE_PRCTL - return AVERROR(prctl(PR_SET_NAME, name)); -+#elif HAVE_PTHREADS -+ return AVERROR(pthread_setname_np(pthread_self(), name)); - #endif - - return AVERROR(ENOSYS); diff --git a/multimedia/ffmpeg/files/patch-vk277 b/multimedia/ffmpeg/files/patch-vk277 deleted file mode 100644 index 4712aaeab1d0..000000000000 --- a/multimedia/ffmpeg/files/patch-vk277 +++ /dev/null @@ -1,1324 +0,0 @@ -https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=10647 - ---- libavcodec/Makefile.orig 2023-12-31 00:07:26 UTC -+++ libavcodec/Makefile -@@ -1284,7 +1284,6 @@ SKIPHEADERS += %_tablegen.h - aacenc_quantization.h \ - aacenc_quantization_misc.h \ - bitstream_template.h \ -- vulkan_video_codec_av1std.h \ - $(ARCH)/vpx_arith.h \ - - SKIPHEADERS-$(CONFIG_AMF) += amfenc.h -@@ -1306,7 +1305,7 @@ SKIPHEADERS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox - SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_decode.h vaapi_hevc.h vaapi_encode.h - SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h vdpau_internal.h - SKIPHEADERS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox.h vt_internal.h --SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h vulkan_video_codec_av1std_decode.h -+SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h - SKIPHEADERS-$(CONFIG_V4L2_M2M) += v4l2_buffers.h v4l2_context.h v4l2_m2m.h - SKIPHEADERS-$(CONFIG_ZLIB) += zlib_wrapper.h - ---- libavcodec/cbs_av1.h.orig 2023-11-11 00:25:17 UTC -+++ libavcodec/cbs_av1.h -@@ -198,6 +198,7 @@ typedef struct AV1RawFrameHeader { - uint8_t refresh_frame_flags; - uint8_t allow_intrabc; - uint8_t ref_order_hint[AV1_NUM_REF_FRAMES]; -+ uint8_t ref_frame_sign_bias[AV1_NUM_REF_FRAMES]; - uint8_t frame_refs_short_signaling; - uint8_t last_frame_idx; - uint8_t golden_frame_idx; ---- libavcodec/cbs_av1_syntax_template.c.orig 2023-11-11 00:25:17 UTC -+++ libavcodec/cbs_av1_syntax_template.c -@@ -1572,6 +1572,16 @@ static int FUNC(uncompressed_header)(CodedBitstreamCon - } - - if (!frame_is_intra) { -+ for (i = 0; i < AV1_REFS_PER_FRAME; i++) { -+ if (seq->enable_order_hint) { -+ int idx = current->ref_frame_idx[i]; -+ int hint = current->ref_order_hint[idx]; -+ current->ref_frame_sign_bias[i] = cbs_av1_get_relative_dist(seq, hint, -+ priv->order_hint) > 0; -+ } else { -+ infer(ref_frame_sign_bias[i], 0); -+ } -+ } - // Derive reference frame sign biases. - } - ---- libavcodec/vulkan_av1.c.orig 2023-11-11 00:25:17 UTC -+++ libavcodec/vulkan_av1.c -@@ -35,18 +35,33 @@ typedef struct AV1VulkanDecodePicture { - *Can be removed once no longer needed, and threading can be enabled. */ - FFVulkanDecodeContext *dec; - -- StdVideoAV1MESATile tiles[MAX_TILES]; -- StdVideoAV1MESATileList tile_list; -- const uint32_t *tile_offsets; -+ uint32_t tile_count; -+ uint32_t tile_offsets_s[MAX_TILES]; -+ uint32_t tile_sizes[MAX_TILES]; -+ const uint32_t *tile_offsets; - - /* Current picture */ -- VkVideoDecodeAV1DpbSlotInfoMESA vkav1_ref; -- StdVideoAV1MESAFrameHeader av1_frame_header; -- VkVideoDecodeAV1PictureInfoMESA av1_pic_info; -+ StdVideoDecodeAV1ReferenceInfo std_ref; -+ VkVideoDecodeAV1DpbSlotInfoKHR vkav1_ref; -+ uint16_t width_in_sbs_minus1[64]; -+ uint16_t height_in_sbs_minus1[64]; -+ uint16_t mi_col_starts[64]; -+ uint16_t mi_row_starts[64]; -+ StdVideoAV1TileInfo tile_info; -+ StdVideoAV1Quantization quantization; -+ StdVideoAV1Segmentation segmentation; -+ StdVideoAV1LoopFilter loop_filter; -+ StdVideoAV1CDEF cdef; -+ StdVideoAV1LoopRestoration loop_restoration; -+ StdVideoAV1GlobalMotion global_motion; -+ StdVideoAV1FilmGrain film_grain; -+ StdVideoDecodeAV1PictureInfo std_pic_info; -+ VkVideoDecodeAV1PictureInfoKHR av1_pic_info; - - /* Picture refs */ - const AV1Frame *ref_src [AV1_NUM_REF_FRAMES]; -- VkVideoDecodeAV1DpbSlotInfoMESA vkav1_refs[AV1_NUM_REF_FRAMES]; -+ StdVideoDecodeAV1ReferenceInfo std_ref_info[AV1_NUM_REF_FRAMES]; -+ VkVideoDecodeAV1DpbSlotInfoKHR vkav1_refs[AV1_NUM_REF_FRAMES]; - - uint8_t frame_id_set; - uint8_t frame_id; -@@ -55,9 +70,9 @@ static int vk_av1_fill_pict(AVCodecContext *avctx, con - static int vk_av1_fill_pict(AVCodecContext *avctx, const AV1Frame **ref_src, - VkVideoReferenceSlotInfoKHR *ref_slot, /* Main structure */ - VkVideoPictureResourceInfoKHR *ref, /* Goes in ^ */ -- VkVideoDecodeAV1DpbSlotInfoMESA *vkav1_ref, /* Goes in ^ */ -- const AV1Frame *pic, int is_current, int has_grain, -- int dpb_slot_index) -+ StdVideoDecodeAV1ReferenceInfo *vkav1_std_ref, -+ VkVideoDecodeAV1DpbSlotInfoKHR *vkav1_ref, /* Goes in ^ */ -+ const AV1Frame *pic, int is_current, int has_grain) - { - FFVulkanDecodeContext *dec = avctx->internal->hwaccel_priv_data; - AV1VulkanDecodePicture *hp = pic->hwaccel_picture_private; -@@ -68,31 +83,48 @@ static int vk_av1_fill_pict(AVCodecContext *avctx, con - if (err < 0) - return err; - -- *vkav1_ref = (VkVideoDecodeAV1DpbSlotInfoMESA) { -- .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_MESA, -- .frameIdx = hp->frame_id, -+ *vkav1_std_ref = (StdVideoDecodeAV1ReferenceInfo) { -+ .flags = (StdVideoDecodeAV1ReferenceInfoFlags) { -+ .disable_frame_end_update_cdf = pic->raw_frame_header->disable_frame_end_update_cdf, -+ .segmentation_enabled = pic->raw_frame_header->segmentation_enabled, -+ }, -+ .frame_type = pic->raw_frame_header->frame_type, -+ .OrderHint = pic->raw_frame_header->order_hint, - }; - -+ for (int i = 0; i < (STD_VIDEO_AV1_NUM_REF_FRAMES - 1); i++) { -+ int hint_idx = pic->raw_frame_header->ref_frame_idx[i]; -+ int hint = pic->raw_frame_header->ref_order_hint[hint_idx]; -+ vkav1_std_ref->SavedOrderHints[AV1_REF_FRAME_LAST + i] = hint; // not sure -+ } -+ -+ *vkav1_ref = (VkVideoDecodeAV1DpbSlotInfoKHR) { -+ .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR, -+ .pStdReferenceInfo = vkav1_std_ref, -+ }; -+ - for (unsigned i = 0; i < 7; i++) { - const int idx = pic->raw_frame_header->ref_frame_idx[i]; -- vkav1_ref->ref_order_hint[i] = pic->raw_frame_header->ref_order_hint[idx]; -+ vkav1_std_ref->SavedOrderHints[i] = pic->raw_frame_header->ref_order_hint[idx]; - } - -- vkav1_ref->disable_frame_end_update_cdf = pic->raw_frame_header->disable_frame_end_update_cdf; -+ vkav1_std_ref->flags.disable_frame_end_update_cdf = pic->raw_frame_header->disable_frame_end_update_cdf; -+ vkav1_std_ref->flags.segmentation_enabled = pic->raw_frame_header->segmentation_enabled; -+ vkav1_std_ref->frame_type = pic->raw_frame_header->frame_type; - - *ref = (VkVideoPictureResourceInfoKHR) { - .sType = VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR, - .codedOffset = (VkOffset2D){ 0, 0 }, - .codedExtent = (VkExtent2D){ pic->f->width, pic->f->height }, - .baseArrayLayer = ((has_grain || dec->dedicated_dpb) && dec->layered_dpb) ? -- dpb_slot_index : 0, -+ hp->frame_id : 0, - .imageViewBinding = vkpic->img_view_ref, - }; - - *ref_slot = (VkVideoReferenceSlotInfoKHR) { - .sType = VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR, - .pNext = vkav1_ref, -- .slotIndex = dpb_slot_index, -+ .slotIndex = hp->frame_id, - .pPictureResource = ref, - }; - -@@ -110,15 +142,37 @@ static int vk_av1_create_params(AVCodecContext *avctx, - - const AV1RawSequenceHeader *seq = s->raw_seq; - -- StdVideoAV1MESASequenceHeader av1_sequence_header; -- VkVideoDecodeAV1SessionParametersAddInfoMESA av1_params_info; -- VkVideoDecodeAV1SessionParametersCreateInfoMESA av1_params; -+ StdVideoAV1SequenceHeader av1_sequence_header; -+ StdVideoAV1TimingInfo av1_timing_info; -+ StdVideoAV1ColorConfig av1_color_config; -+ VkVideoDecodeAV1SessionParametersCreateInfoKHR av1_params; - VkVideoSessionParametersCreateInfoKHR session_params_create; - - int err; - -- av1_sequence_header = (StdVideoAV1MESASequenceHeader) { -- .flags = (StdVideoAV1MESASequenceHeaderFlags) { -+ av1_timing_info = (StdVideoAV1TimingInfo) { -+ .flags = (StdVideoAV1TimingInfoFlags) { -+ .equal_picture_interval = seq->timing_info.equal_picture_interval, -+ }, -+ .num_units_in_display_tick = seq->timing_info.num_units_in_display_tick, -+ .time_scale = seq->timing_info.time_scale, -+ .num_ticks_per_picture_minus_1 = seq->timing_info.num_ticks_per_picture_minus_1, -+ }; -+ -+ av1_color_config = (StdVideoAV1ColorConfig) { -+ .flags = (StdVideoAV1ColorConfigFlags) { -+ .mono_chrome = seq->color_config.mono_chrome, -+ .color_range = seq->color_config.color_range, -+ .separate_uv_delta_q = seq->color_config.separate_uv_delta_q, -+ }, -+ .BitDepth = seq->color_config.twelve_bit ? 12 : -+ seq->color_config.high_bitdepth ? 10 : 8, -+ .subsampling_x = seq->color_config.subsampling_x, -+ .subsampling_y = seq->color_config.subsampling_y, -+ }; -+ -+ av1_sequence_header = (StdVideoAV1SequenceHeader) { -+ .flags = (StdVideoAV1SequenceHeaderFlags) { - .still_picture = seq->still_picture, - .reduced_still_picture_header = seq->reduced_still_picture_header, - .use_128x128_superblock = seq->use_128x128_superblock, -@@ -147,35 +201,14 @@ static int vk_av1_create_params(AVCodecContext *avctx, - .delta_frame_id_length_minus_2 = seq->delta_frame_id_length_minus_2, - .additional_frame_id_length_minus_1 = seq->additional_frame_id_length_minus_1, - .order_hint_bits_minus_1 = seq->order_hint_bits_minus_1, -- .timing_info = (StdVideoAV1MESATimingInfo) { -- .flags = (StdVideoAV1MESATimingInfoFlags) { -- .equal_picture_interval = seq->timing_info.equal_picture_interval, -- }, -- .num_units_in_display_tick = seq->timing_info.num_units_in_display_tick, -- .time_scale = seq->timing_info.time_scale, -- .num_ticks_per_picture_minus_1 = seq->timing_info.num_ticks_per_picture_minus_1, -- }, -- .color_config = (StdVideoAV1MESAColorConfig) { -- .flags = (StdVideoAV1MESAColorConfigFlags) { -- .mono_chrome = seq->color_config.mono_chrome, -- .color_range = seq->color_config.color_range, -- .separate_uv_delta_q = seq->color_config.separate_uv_delta_q, -- }, -- .bit_depth = seq->color_config.twelve_bit ? 12 : -- seq->color_config.high_bitdepth ? 10 : 8, -- .subsampling_x = seq->color_config.subsampling_x, -- .subsampling_y = seq->color_config.subsampling_y, -- }, -+ .pTimingInfo = &av1_timing_info, -+ .pColorConfig = &av1_color_config, - }; - -- av1_params_info = (VkVideoDecodeAV1SessionParametersAddInfoMESA) { -- .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_ADD_INFO_MESA, -- .sequence_header = &av1_sequence_header, -+ av1_params = (VkVideoDecodeAV1SessionParametersCreateInfoKHR) { -+ .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR, -+ .pStdSequenceHeader = &av1_sequence_header, - }; -- av1_params = (VkVideoDecodeAV1SessionParametersCreateInfoMESA) { -- .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_MESA, -- .pParametersAddInfo = &av1_params_info, -- }; - session_params_create = (VkVideoSessionParametersCreateInfoKHR) { - .sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR, - .pNext = &av1_params, -@@ -208,6 +241,11 @@ static int vk_av1_start_frame(AVCodecContext - const AV1RawFilmGrainParams *film_grain = &s->cur_frame.film_grain; - const int apply_grain = !(avctx->export_side_data & AV_CODEC_EXPORT_DATA_FILM_GRAIN) && - film_grain->apply_grain; -+ StdVideoAV1FrameRestorationType remap_lr_type[4] = { STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE, -+ STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE, -+ STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER, -+ STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ }; -+ int uses_lr; - - if (!dec->session_params) { - err = vk_av1_create_params(avctx, &dec->session_params); -@@ -235,29 +273,37 @@ static int vk_av1_start_frame(AVCodecContext - continue; - - err = vk_av1_fill_pict(avctx, &ap->ref_src[i], &vp->ref_slots[i], -- &vp->refs[i], &ap->vkav1_refs[i], -- ref_frame, 0, 0, i); -+ &vp->refs[i], &ap->std_ref_info[i], &ap->vkav1_refs[i], -+ ref_frame, 0, 0); - if (err < 0) - return err; - -+ // Really not sure -+ ap->std_ref_info[i].RefFrameSignBias = pic->raw_frame_header->ref_frame_sign_bias[i]; -+ - ref_count++; - } - - err = vk_av1_fill_pict(avctx, NULL, &vp->ref_slot, &vp->ref, -+ &ap->std_ref, - &ap->vkav1_ref, -- pic, 1, apply_grain, 8); -+ pic, 1, apply_grain); - if (err < 0) - return err; - -- ap->tile_list.nb_tiles = 0; -- ap->tile_list.tile_list = ap->tiles; -+ ap->tile_count = 0; - -- ap->av1_pic_info = (VkVideoDecodeAV1PictureInfoMESA) { -- .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_MESA, -- .frame_header = &ap->av1_frame_header, -- .tile_list = &ap->tile_list, -+ ap->av1_pic_info = (VkVideoDecodeAV1PictureInfoKHR) { -+ .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR, -+ .pStdPictureInfo = &ap->std_pic_info, -+ .tileCount = ap->tile_count, -+ .pTileOffsets = ap->tile_offsets_s, -+ .pTileSizes = ap->tile_sizes, - }; - -+ for (int i = 0; i < STD_VIDEO_AV1_REFS_PER_FRAME; i++) -+ ap->av1_pic_info.referenceNameSlotIndices[i] = vp->ref_slots[frame_header->ref_frame_idx[i]].slotIndex; -+ - vp->decode_info = (VkVideoDecodeInfoKHR) { - .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR, - .pNext = &ap->av1_pic_info, -@@ -274,9 +320,94 @@ static int vk_av1_start_frame(AVCodecContext - }, - }; - -+ ap->tile_info = (StdVideoAV1TileInfo) { -+ .flags = (StdVideoAV1TileInfoFlags) { -+ .uniform_tile_spacing_flag = frame_header->uniform_tile_spacing_flag, -+ }, -+ .TileCols = frame_header->tile_cols, -+ .TileRows = frame_header->tile_rows, -+ .context_update_tile_id = frame_header->context_update_tile_id, -+ .tile_size_bytes_minus_1 = frame_header->tile_size_bytes_minus1, -+ .pWidthInSbsMinus1 = ap->width_in_sbs_minus1, -+ .pHeightInSbsMinus1 = ap->height_in_sbs_minus1, -+ .pMiColStarts = ap->mi_col_starts, -+ .pMiRowStarts = ap->mi_row_starts, -+ }; -+ -+ ap->quantization = (StdVideoAV1Quantization) { -+ .flags.using_qmatrix = frame_header->using_qmatrix, -+ .flags.diff_uv_delta = frame_header->diff_uv_delta, -+ .base_q_idx = frame_header->base_q_idx, -+ .DeltaQYDc = frame_header->delta_q_y_dc, -+ .DeltaQUDc = frame_header->delta_q_u_dc, -+ .DeltaQUAc = frame_header->delta_q_u_ac, -+ .DeltaQVDc = frame_header->delta_q_v_dc, -+ .DeltaQVAc = frame_header->delta_q_v_ac, -+ .qm_y = frame_header->qm_y, -+ .qm_u = frame_header->qm_u, -+ .qm_v = frame_header->qm_v, -+ }; -+ -+ for (int i = 0; i < STD_VIDEO_AV1_MAX_SEGMENTS; i++) { -+ for (int j = 0; j < STD_VIDEO_AV1_SEG_LVL_MAX; j++) { -+ ap->segmentation.FeatureEnabled[i] |= frame_header->feature_enabled[i][j] << j; -+ ap->segmentation.FeatureData[i][j] = frame_header->feature_value[i][j]; -+ } -+ } -+ -+ ap->loop_filter = (StdVideoAV1LoopFilter) { -+ .flags = (StdVideoAV1LoopFilterFlags) { -+ .loop_filter_delta_enabled = frame_header->loop_filter_delta_enabled, -+ .loop_filter_delta_update = frame_header->loop_filter_delta_update, -+ }, -+ .loop_filter_sharpness = frame_header->loop_filter_sharpness, -+ }; -+ -+ for (int i = 0; i < STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS; i++) -+ ap->loop_filter.loop_filter_level[i] = frame_header->loop_filter_level[i]; -+ for (int i = 0; i < STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS; i++) -+ ap->loop_filter.loop_filter_mode_deltas[i] = frame_header->loop_filter_mode_deltas[i]; -+ -+ ap->cdef = (StdVideoAV1CDEF) { -+ .cdef_damping_minus_3 = frame_header->cdef_damping_minus_3, -+ .cdef_bits = frame_header->cdef_bits, -+ }; -+ -+ uses_lr = frame_header->lr_type[0] || frame_header->lr_type[1] || frame_header->lr_type[2], -+ ap->loop_restoration = (StdVideoAV1LoopRestoration) { -+ .FrameRestorationType[0] = remap_lr_type[frame_header->lr_type[0]], -+ .FrameRestorationType[1] = remap_lr_type[frame_header->lr_type[1]], -+ .FrameRestorationType[2] = remap_lr_type[frame_header->lr_type[2]], -+ .LoopRestorationSize[0] = 1 + frame_header->lr_unit_shift, -+ .LoopRestorationSize[1] = 1 + frame_header->lr_unit_shift - frame_header->lr_uv_shift, -+ .LoopRestorationSize[2] = 1 + frame_header->lr_unit_shift - frame_header->lr_uv_shift, -+ }; -+ -+ ap->film_grain = (StdVideoAV1FilmGrain) { -+ .flags = (StdVideoAV1FilmGrainFlags) { -+ .chroma_scaling_from_luma = film_grain->chroma_scaling_from_luma, -+ .overlap_flag = film_grain->overlap_flag, -+ .clip_to_restricted_range = film_grain->clip_to_restricted_range, -+ }, -+ .grain_scaling_minus_8 = film_grain->grain_scaling_minus_8, -+ .ar_coeff_lag = film_grain->ar_coeff_lag, -+ .ar_coeff_shift_minus_6 = film_grain->ar_coeff_shift_minus_6, -+ .grain_scale_shift = film_grain->grain_scale_shift, -+ .grain_seed = film_grain->grain_seed, -+ .num_y_points = film_grain->num_y_points, -+ .num_cb_points = film_grain->num_cb_points, -+ .num_cr_points = film_grain->num_cr_points, -+ .cb_mult = film_grain->cb_mult, -+ .cb_luma_mult = film_grain->cb_luma_mult, -+ .cb_offset = film_grain->cb_offset, -+ .cr_mult = film_grain->cr_mult, -+ .cr_luma_mult = film_grain->cr_luma_mult, -+ .cr_offset = film_grain->cr_offset, -+ }; -+ - /* Setup frame header */ -- ap->av1_frame_header = (StdVideoAV1MESAFrameHeader) { -- .flags = (StdVideoAV1MESAFrameHeaderFlags) { -+ ap->std_pic_info = (StdVideoDecodeAV1PictureInfo) { -+ .flags = (StdVideoDecodeAV1PictureInfoFlags) { - .error_resilient_mode = frame_header->error_resilient_mode, - .disable_cdf_update = frame_header->disable_cdf_update, - .use_superres = frame_header->use_superres, -@@ -297,171 +428,87 @@ static int vk_av1_start_frame(AVCodecContext - .reference_select = frame_header->reference_select, - .skip_mode_present = frame_header->skip_mode_present, - .delta_q_present = frame_header->delta_q_present, -+ .delta_lf_present = frame_header->delta_lf_present, -+ .delta_lf_multi = frame_header->delta_lf_multi, -+ .segmentation_enabled = frame_header->segmentation_enabled, -+ .segmentation_update_map = frame_header->segmentation_update_map, -+ .segmentation_temporal_update = frame_header->segmentation_temporal_update, -+ .segmentation_update_data = frame_header->segmentation_update_data, -+ .UsesLr = uses_lr, -+ .apply_grain = apply_grain, - }, -- .frame_to_show_map_idx = frame_header->frame_to_show_map_idx, -- .frame_presentation_time = frame_header->frame_presentation_time, -- .display_frame_id = frame_header->display_frame_id, - .frame_type = frame_header->frame_type, - .current_frame_id = frame_header->current_frame_id, -- .order_hint = frame_header->order_hint, -+ .OrderHint = frame_header->order_hint, - .primary_ref_frame = frame_header->primary_ref_frame, -- .frame_width_minus_1 = frame_header->frame_width_minus_1, -- .frame_height_minus_1 = frame_header->frame_height_minus_1, -- .coded_denom = frame_header->coded_denom, -- .render_width_minus_1 = frame_header->render_width_minus_1, -- .render_height_minus_1 = frame_header->render_height_minus_1, - .refresh_frame_flags = frame_header->refresh_frame_flags, - .interpolation_filter = frame_header->interpolation_filter, -- .tx_mode = frame_header->tx_mode, -- .tiling = (StdVideoAV1MESATileInfo) { -- .flags = (StdVideoAV1MESATileInfoFlags) { -- .uniform_tile_spacing_flag = frame_header->uniform_tile_spacing_flag, -- }, -- .tile_cols = frame_header->tile_cols, -- .tile_rows = frame_header->tile_rows, -- .context_update_tile_id = frame_header->context_update_tile_id, -- .tile_size_bytes_minus1 = frame_header->tile_size_bytes_minus1, -- }, -- .quantization = (StdVideoAV1MESAQuantization) { -- .flags.using_qmatrix = frame_header->using_qmatrix, -- .base_q_idx = frame_header->base_q_idx, -- .delta_q_y_dc = frame_header->delta_q_y_dc, -- .diff_uv_delta = frame_header->diff_uv_delta, -- .delta_q_u_dc = frame_header->delta_q_u_dc, -- .delta_q_u_ac = frame_header->delta_q_u_ac, -- .delta_q_v_dc = frame_header->delta_q_v_dc, -- .delta_q_v_ac = frame_header->delta_q_v_ac, -- .qm_y = frame_header->qm_y, -- .qm_u = frame_header->qm_u, -- .qm_v = frame_header->qm_v, -- }, -- .delta_q = (StdVideoAV1MESADeltaQ) { -- .flags = (StdVideoAV1MESADeltaQFlags) { -- .delta_lf_present = frame_header->delta_lf_present, -- .delta_lf_multi = frame_header->delta_lf_multi, -- }, -- .delta_q_res = frame_header->delta_q_res, -- .delta_lf_res = frame_header->delta_lf_res, -- }, -- .loop_filter = (StdVideoAV1MESALoopFilter) { -- .flags = (StdVideoAV1MESALoopFilterFlags) { -- .delta_enabled = frame_header->loop_filter_delta_enabled, -- .delta_update = frame_header->loop_filter_delta_update, -- }, -- .level = { -- frame_header->loop_filter_level[0], frame_header->loop_filter_level[1], -- frame_header->loop_filter_level[2], frame_header->loop_filter_level[3], -- }, -- .sharpness = frame_header->loop_filter_sharpness, -- .mode_deltas = { -- frame_header->loop_filter_mode_deltas[0], frame_header->loop_filter_mode_deltas[1], -- }, -- }, -- .cdef = (StdVideoAV1MESACDEF) { -- .damping_minus_3 = frame_header->cdef_damping_minus_3, -- .bits = frame_header->cdef_bits, -- }, -- .lr = (StdVideoAV1MESALoopRestoration) { -- .lr_unit_shift = frame_header->lr_unit_shift, -- .lr_uv_shift = frame_header->lr_uv_shift, -- .lr_type = { frame_header->lr_type[0], frame_header->lr_type[1], frame_header->lr_type[2] }, -- }, -- .segmentation = (StdVideoAV1MESASegmentation) { -- .flags = (StdVideoAV1MESASegmentationFlags) { -- .enabled = frame_header->segmentation_enabled, -- .update_map = frame_header->segmentation_update_map, -- .temporal_update = frame_header->segmentation_temporal_update, -- .update_data = frame_header->segmentation_update_data, -- }, -- }, -- .film_grain = (StdVideoAV1MESAFilmGrainParameters) { -- .flags = (StdVideoAV1MESAFilmGrainFlags) { -- .apply_grain = apply_grain, -- .chroma_scaling_from_luma = film_grain->chroma_scaling_from_luma, -- .overlap_flag = film_grain->overlap_flag, -- .clip_to_restricted_range = film_grain->clip_to_restricted_range, -- }, -- .grain_scaling_minus_8 = film_grain->grain_scaling_minus_8, -- .ar_coeff_lag = film_grain->ar_coeff_lag, -- .ar_coeff_shift_minus_6 = film_grain->ar_coeff_shift_minus_6, -- .grain_scale_shift = film_grain->grain_scale_shift, -- .grain_seed = film_grain->grain_seed, -- .num_y_points = film_grain->num_y_points, -- .num_cb_points = film_grain->num_cb_points, -- .num_cr_points = film_grain->num_cr_points, -- .cb_mult = film_grain->cb_mult, -- .cb_luma_mult = film_grain->cb_luma_mult, -- .cb_offset = film_grain->cb_offset, -- .cr_mult = film_grain->cr_mult, -- .cr_luma_mult = film_grain->cr_luma_mult, -- .cr_offset = film_grain->cr_offset, -- }, -+ .TxMode = frame_header->tx_mode, -+ .delta_q_res = frame_header->delta_q_res, -+ .delta_lf_res = frame_header->delta_lf_res, -+ .SkipModeFrame[0] = s->cur_frame.skip_mode_frame_idx[0], -+ .SkipModeFrame[1] = s->cur_frame.skip_mode_frame_idx[1], -+ .coded_denom = frame_header->coded_denom, -+ .pTileInfo = &ap->tile_info, -+ .pQuantization = &ap->quantization, -+ .pSegmentation = &ap->segmentation, -+ .pLoopFilter = &ap->loop_filter, -+ .pCDEF = &ap->cdef, -+ .pLoopRestoration = &ap->loop_restoration, -+ .pGlobalMotion = &ap->global_motion, -+ .pFilmGrain = apply_grain ? &ap->film_grain : NULL, - }; - - for (int i = 0; i < 64; i++) { -- ap->av1_frame_header.tiling.width_in_sbs_minus_1[i] = frame_header->width_in_sbs_minus_1[i]; -- ap->av1_frame_header.tiling.height_in_sbs_minus_1[i] = frame_header->height_in_sbs_minus_1[i]; -- ap->av1_frame_header.tiling.tile_start_col_sb[i] = frame_header->tile_start_col_sb[i]; -- ap->av1_frame_header.tiling.tile_start_row_sb[i] = frame_header->tile_start_row_sb[i]; -+ ap->width_in_sbs_minus1[i] = frame_header->width_in_sbs_minus_1[i]; -+ ap->height_in_sbs_minus1[i] = frame_header->height_in_sbs_minus_1[i]; -+ ap->mi_col_starts[i] = frame_header->tile_start_col_sb[i]; -+ ap->mi_row_starts[i] = frame_header->tile_start_row_sb[i]; - } - - for (int i = 0; i < 8; i++) { -- ap->av1_frame_header.segmentation.feature_enabled_bits[i] = 0; -- for (int j = 0; j < 8; j++) { -- ap->av1_frame_header.segmentation.feature_enabled_bits[i] |= (frame_header->feature_enabled[i][j] << j); -- ap->av1_frame_header.segmentation.feature_data[i][j] = frame_header->feature_value[i][j]; -+ ap->segmentation.FeatureEnabled[i] = 0x0; -+ for (int j = 0; j < STD_VIDEO_AV1_SEG_LVL_MAX; j++) { -+ ap->segmentation.FeatureEnabled[i] |= (frame_header->feature_enabled[i][j] << j); -+ ap->segmentation.FeatureData[i][j] = frame_header->feature_value[i][j]; - } - -- ap->av1_frame_header.loop_filter.ref_deltas[i] = frame_header->loop_filter_ref_deltas[i]; -+ ap->loop_filter.loop_filter_ref_deltas[i] = frame_header->loop_filter_ref_deltas[i]; - -- ap->av1_frame_header.cdef.y_pri_strength[i] = frame_header->cdef_y_pri_strength[i]; -- ap->av1_frame_header.cdef.y_sec_strength[i] = frame_header->cdef_y_sec_strength[i]; -- ap->av1_frame_header.cdef.uv_pri_strength[i] = frame_header->cdef_uv_pri_strength[i]; -- ap->av1_frame_header.cdef.uv_sec_strength[i] = frame_header->cdef_uv_sec_strength[i]; -+ ap->cdef.cdef_y_pri_strength[i] = frame_header->cdef_y_pri_strength[i]; -+ ap->cdef.cdef_y_sec_strength[i] = frame_header->cdef_y_sec_strength[i]; -+ ap->cdef.cdef_uv_pri_strength[i] = frame_header->cdef_uv_pri_strength[i]; -+ ap->cdef.cdef_uv_sec_strength[i] = frame_header->cdef_uv_sec_strength[i]; - -- ap->av1_frame_header.ref_order_hint[i] = frame_header->ref_order_hint[i]; -- ap->av1_frame_header.global_motion[i] = (StdVideoAV1MESAGlobalMotion) { -- .flags = (StdVideoAV1MESAGlobalMotionFlags) { -- .gm_invalid = s->cur_frame.gm_invalid[i], -- }, -- .gm_type = s->cur_frame.gm_type[i], -- .gm_params = { -- s->cur_frame.gm_params[i][0], s->cur_frame.gm_params[i][1], -- s->cur_frame.gm_params[i][2], s->cur_frame.gm_params[i][3], -- s->cur_frame.gm_params[i][4], s->cur_frame.gm_params[i][5], -- }, -- }; -+ /* Reference frames */ -+ ap->std_pic_info.OrderHints[i] = frame_header->ref_order_hint[i]; -+ ap->global_motion.GmType[i] = s->cur_frame.gm_type[i]; -+ for (int j = 0; j < STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS; j++) { -+ ap->global_motion.gm_params[i][j] = s->cur_frame.gm_params[i][j]; -+ } - } - -- for (int i = 0; i < 7; i++) { -- ap->av1_frame_header.ref_frame_idx[i] = frame_header->ref_frame_idx[i]; -- ap->av1_frame_header.delta_frame_id_minus1[i] = frame_header->delta_frame_id_minus1[i]; -- } -- -- ap->av1_pic_info.skip_mode_frame_idx[0] = s->cur_frame.skip_mode_frame_idx[0]; -- ap->av1_pic_info.skip_mode_frame_idx[1] = s->cur_frame.skip_mode_frame_idx[1]; -- - if (apply_grain) { - for (int i = 0; i < 14; i++) { -- ap->av1_frame_header.film_grain.point_y_value[i] = film_grain->point_y_value[i]; -- ap->av1_frame_header.film_grain.point_y_scaling[i] = film_grain->point_y_scaling[i]; -+ ap->film_grain.point_y_value[i] = film_grain->point_y_value[i]; -+ ap->film_grain.point_y_scaling[i] = film_grain->point_y_scaling[i]; - } - - for (int i = 0; i < 10; i++) { -- ap->av1_frame_header.film_grain.point_cb_value[i] = film_grain->point_cb_value[i]; -- ap->av1_frame_header.film_grain.point_cb_scaling[i] = film_grain->point_cb_scaling[i]; -- ap->av1_frame_header.film_grain.point_cr_value[i] = film_grain->point_cr_value[i]; -- ap->av1_frame_header.film_grain.point_cr_scaling[i] = film_grain->point_cr_scaling[i]; -+ ap->film_grain.point_cb_value[i] = film_grain->point_cb_value[i]; -+ ap->film_grain.point_cb_scaling[i] = film_grain->point_cb_scaling[i]; -+ ap->film_grain.point_cr_value[i] = film_grain->point_cr_value[i]; -+ ap->film_grain.point_cr_scaling[i] = film_grain->point_cr_scaling[i]; - } - - for (int i = 0; i < 24; i++) { -- ap->av1_frame_header.film_grain.ar_coeffs_y_plus_128[i] = film_grain->ar_coeffs_y_plus_128[i]; -- ap->av1_frame_header.film_grain.ar_coeffs_cb_plus_128[i] = film_grain->ar_coeffs_cb_plus_128[i]; -- ap->av1_frame_header.film_grain.ar_coeffs_cr_plus_128[i] = film_grain->ar_coeffs_cr_plus_128[i]; -+ ap->film_grain.ar_coeffs_y_plus_128[i] = film_grain->ar_coeffs_y_plus_128[i]; -+ ap->film_grain.ar_coeffs_cb_plus_128[i] = film_grain->ar_coeffs_cb_plus_128[i]; -+ ap->film_grain.ar_coeffs_cr_plus_128[i] = film_grain->ar_coeffs_cr_plus_128[i]; - } - -- ap->av1_frame_header.film_grain.ar_coeffs_cb_plus_128[24] = film_grain->ar_coeffs_cb_plus_128[24]; -- ap->av1_frame_header.film_grain.ar_coeffs_cr_plus_128[24] = film_grain->ar_coeffs_cr_plus_128[24]; -+ ap->film_grain.ar_coeffs_cb_plus_128[24] = film_grain->ar_coeffs_cb_plus_128[24]; -+ ap->film_grain.ar_coeffs_cr_plus_128[24] = film_grain->ar_coeffs_cr_plus_128[24]; - } - - /* Workaround for a spec issue. */ -@@ -480,26 +527,22 @@ static int vk_av1_decode_slice(AVCodecContext *avctx, - FFVulkanDecodePicture *vp = &ap->vp; - - for (int i = s->tg_start; i <= s->tg_end; i++) { -- ap->tiles[ap->tile_list.nb_tiles] = (StdVideoAV1MESATile) { -- .size = s->tile_group_info[i].tile_size, -- .offset = s->tile_group_info[i].tile_offset, -- .row = s->tile_group_info[i].tile_row, -- .column = s->tile_group_info[i].tile_column, -- .tg_start = s->tg_start, -- .tg_end = s->tg_end, -- }; - -+ ap->tile_offsets_s[ap->tile_count] = s->tile_group_info[i].tile_offset; -+ ap->tile_sizes[ap->tile_count] = s->tile_group_info[i].tile_size; -+ - err = ff_vk_decode_add_slice(avctx, vp, - data + s->tile_group_info[i].tile_offset, - s->tile_group_info[i].tile_size, 0, -- &ap->tile_list.nb_tiles, -+ &ap->tile_count, - &ap->tile_offsets); - if (err < 0) - return err; - -- ap->tiles[ap->tile_list.nb_tiles - 1].offset = ap->tile_offsets[ap->tile_list.nb_tiles - 1]; -+ ap->tile_offsets_s[ap->tile_count - 1] = ap->tile_offsets[ap->tile_count - 1]; - } - -+ ap->av1_pic_info.tileCount = ap->tile_count; - return 0; - } - -@@ -513,7 +556,7 @@ static int vk_av1_end_frame(AVCodecContext *avctx) - FFVulkanDecodePicture *rvp[AV1_NUM_REF_FRAMES] = { 0 }; - AVFrame *rav[AV1_NUM_REF_FRAMES] = { 0 }; - -- if (!ap->tile_list.nb_tiles) -+ if (!ap->tile_count) - return 0; - - if (!dec->session_params) { -@@ -531,7 +574,7 @@ static int vk_av1_end_frame(AVCodecContext *avctx) - } - - av_log(avctx, AV_LOG_VERBOSE, "Decoding frame, %"SIZE_SPECIFIER" bytes, %i tiles\n", -- vp->slices_size, ap->tile_list.nb_tiles); -+ vp->slices_size, ap->tile_count); - - return ff_vk_decode_frame(avctx, pic->f, vp, rav, rvp); - } ---- libavcodec/vulkan_decode.c.orig 2023-11-11 00:25:17 UTC -+++ libavcodec/vulkan_decode.c -@@ -50,7 +50,7 @@ static const VkVideoProfileInfoKHR *get_video_profile( - VkStructureType profile_struct_type = - codec_id == AV_CODEC_ID_H264 ? VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR : - codec_id == AV_CODEC_ID_HEVC ? VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR : -- codec_id == AV_CODEC_ID_AV1 ? VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_MESA : -+ codec_id == AV_CODEC_ID_AV1 ? VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR : - 0; - - profile_list = ff_vk_find_struct(ctx->s.hwfc->create_pnext, -@@ -663,7 +663,7 @@ static VkResult vulkan_setup_profile(AVCodecContext *a - const struct FFVkCodecMap *vk_codec, - VkVideoDecodeH264CapabilitiesKHR *h264_caps, - VkVideoDecodeH265CapabilitiesKHR *h265_caps, -- VkVideoDecodeAV1CapabilitiesMESA *av1_caps, -+ VkVideoDecodeAV1CapabilitiesKHR *av1_caps, - VkVideoCapabilitiesKHR *caps, - VkVideoDecodeCapabilitiesKHR *dec_caps, - int cur_profile) -@@ -674,7 +674,7 @@ static VkResult vulkan_setup_profile(AVCodecContext *a - - VkVideoDecodeH264ProfileInfoKHR *h264_profile = &prof->h264_profile; - VkVideoDecodeH265ProfileInfoKHR *h265_profile = &prof->h265_profile; -- VkVideoDecodeAV1ProfileInfoMESA *av1_profile = &prof->av1_profile; -+ VkVideoDecodeAV1ProfileInfoKHR *av1_profile = &prof->av1_profile; - - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->sw_pix_fmt); - if (!desc) -@@ -702,8 +702,8 @@ static VkResult vulkan_setup_profile(AVCodecContext *a - } else if (avctx->codec_id == AV_CODEC_ID_AV1) { - dec_caps->pNext = av1_caps; - usage->pNext = av1_profile; -- av1_profile->sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_MESA; -- av1_profile->stdProfileIdc = cur_profile; -+ av1_profile->sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR; -+ av1_profile->stdProfile = cur_profile; - } - - usage->sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR; -@@ -758,8 +758,8 @@ static int vulkan_decode_get_profile(AVCodecContext *a - VkVideoDecodeH265CapabilitiesKHR h265_caps = { - .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR, - }; -- VkVideoDecodeAV1CapabilitiesMESA av1_caps = { -- .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_MESA, -+ VkVideoDecodeAV1CapabilitiesKHR av1_caps = { -+ .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR, - }; - - VkPhysicalDeviceVideoFormatInfoKHR fmt_info = { -@@ -782,7 +782,7 @@ static int vulkan_decode_get_profile(AVCodecContext *a - cur_profile = avctx->profile; - base_profile = avctx->codec_id == AV_CODEC_ID_H264 ? AV_PROFILE_H264_CONSTRAINED_BASELINE : - avctx->codec_id == AV_CODEC_ID_H265 ? AV_PROFILE_HEVC_MAIN : -- avctx->codec_id == AV_CODEC_ID_AV1 ? STD_VIDEO_AV1_MESA_PROFILE_MAIN : -+ avctx->codec_id == AV_CODEC_ID_AV1 ? STD_VIDEO_AV1_PROFILE_MAIN : - 0; - - ret = vulkan_setup_profile(avctx, prof, hwctx, vk, vk_codec, -@@ -830,7 +830,7 @@ static int vulkan_decode_get_profile(AVCodecContext *a - - max_level = avctx->codec_id == AV_CODEC_ID_H264 ? ff_vk_h264_level_to_av(h264_caps.maxLevelIdc) : - avctx->codec_id == AV_CODEC_ID_H265 ? ff_vk_h265_level_to_av(h265_caps.maxLevelIdc) : -- avctx->codec_id == AV_CODEC_ID_AV1 ? av1_caps.maxLevelIdc : -+ avctx->codec_id == AV_CODEC_ID_AV1 ? ff_vk_av1_level_to_av(av1_caps.maxLevel) : - 0; - - av_log(avctx, AV_LOG_VERBOSE, "Decoder capabilities for %s profile \"%s\":\n", -@@ -911,7 +911,7 @@ static int vulkan_decode_get_profile(AVCodecContext *a - /* TODO: make dedicated_dpb tunable */ - dec->dedicated_dpb = !(dec_caps->flags & VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR); - dec->layered_dpb = !(caps->flags & VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR); -- dec->external_fg = av1_caps.flags & VK_VIDEO_DECODE_AV1_CAPABILITY_EXTERNAL_FILM_GRAIN_MESA; -+ // dec->external_fg = av1_caps.flags & VK_VIDEO_DECODE_AV1_CAPABILITY_EXTERNAL_FILM_GRAIN_KHR; - - if (dec->dedicated_dpb) { - fmt_info.imageUsage = VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR; -@@ -1118,8 +1118,8 @@ int ff_vk_decode_init(AVCodecContext *avctx) - VkVideoDecodeH265SessionParametersCreateInfoKHR h265_params = { - .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR, - }; -- VkVideoDecodeAV1SessionParametersCreateInfoMESA av1_params = { -- .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_MESA, -+ VkVideoDecodeAV1SessionParametersCreateInfoKHR av1_params = { -+ .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR, - }; - VkVideoSessionParametersCreateInfoKHR session_params_create = { - .sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR, ---- libavcodec/vulkan_decode.h.orig 2023-11-11 00:25:17 UTC -+++ libavcodec/vulkan_decode.h -@@ -28,7 +28,7 @@ typedef struct FFVulkanDecodeProfileData { - typedef struct FFVulkanDecodeProfileData { - VkVideoDecodeH264ProfileInfoKHR h264_profile; - VkVideoDecodeH265ProfileInfoKHR h265_profile; -- VkVideoDecodeAV1ProfileInfoMESA av1_profile; -+ VkVideoDecodeAV1ProfileInfoKHR av1_profile; - VkVideoDecodeUsageInfoKHR usage; - VkVideoProfileInfoKHR profile; - VkVideoProfileListInfoKHR profile_list; ---- libavcodec/vulkan_video.c.orig 2023-11-11 00:25:17 UTC -+++ libavcodec/vulkan_video.c -@@ -37,7 +37,7 @@ const FFVkCodecMap ff_vk_codec_map[AV_CODEC_ID_FIRST_A - 0, - 0, - FF_VK_EXT_VIDEO_DECODE_AV1, -- 0x01000000 /* TODO fix this */ -+ VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR - }, - }; - -@@ -196,6 +196,37 @@ int ff_vk_h265_level_to_av(StdVideoH265LevelIdc level) - case STD_VIDEO_H265_LEVEL_IDC_6_1: return 61; - default: - case STD_VIDEO_H265_LEVEL_IDC_6_2: return 62; -+ } -+} -+ -+int ff_vk_av1_level_to_av(StdVideoAV1Level level) -+{ -+ switch (level) { -+ case STD_VIDEO_AV1_LEVEL_2_0: return 20; -+ case STD_VIDEO_AV1_LEVEL_2_1: return 21; -+ case STD_VIDEO_AV1_LEVEL_2_2: return 22; -+ case STD_VIDEO_AV1_LEVEL_2_3: return 23; -+ case STD_VIDEO_AV1_LEVEL_3_0: return 30; -+ case STD_VIDEO_AV1_LEVEL_3_1: return 31; -+ case STD_VIDEO_AV1_LEVEL_3_2: return 32; -+ case STD_VIDEO_AV1_LEVEL_3_3: return 33; -+ case STD_VIDEO_AV1_LEVEL_4_0: return 40; -+ case STD_VIDEO_AV1_LEVEL_4_1: return 41; -+ case STD_VIDEO_AV1_LEVEL_4_2: return 42; -+ case STD_VIDEO_AV1_LEVEL_4_3: return 43; -+ case STD_VIDEO_AV1_LEVEL_5_0: return 50; -+ case STD_VIDEO_AV1_LEVEL_5_1: return 51; -+ case STD_VIDEO_AV1_LEVEL_5_2: return 52; -+ case STD_VIDEO_AV1_LEVEL_5_3: return 53; -+ case STD_VIDEO_AV1_LEVEL_6_0: return 60; -+ case STD_VIDEO_AV1_LEVEL_6_1: return 61; -+ case STD_VIDEO_AV1_LEVEL_6_2: return 62; -+ case STD_VIDEO_AV1_LEVEL_6_3: return 63; -+ case STD_VIDEO_AV1_LEVEL_7_0: return 70; -+ case STD_VIDEO_AV1_LEVEL_7_1: return 71; -+ case STD_VIDEO_AV1_LEVEL_7_2: return 72; -+ default: -+ case STD_VIDEO_AV1_LEVEL_7_3: return 73; - } - } - ---- libavcodec/vulkan_video.h.orig 2023-11-11 00:25:17 UTC -+++ libavcodec/vulkan_video.h -@@ -23,8 +23,6 @@ - #include "vulkan.h" - - #include --#include "vulkan_video_codec_av1std.h" --#include "vulkan_video_codec_av1std_decode.h" - - #define CODEC_VER_MAJ(ver) (ver >> 22) - #define CODEC_VER_MIN(ver) ((ver >> 12) & ((1 << 10) - 1)) -@@ -77,6 +75,7 @@ int ff_vk_h265_level_to_av(StdVideoH265LevelIdc level) - */ - int ff_vk_h264_level_to_av(StdVideoH264LevelIdc level); - int ff_vk_h265_level_to_av(StdVideoH265LevelIdc level); -+int ff_vk_av1_level_to_av(StdVideoAV1Level level); - - typedef struct FFVkVideoBuffer { - FFVkBuffer buf; ---- libavcodec/vulkan_video_codec_av1std.h 2023-11-11 00:25:17 UTC -+++ /dev/null -@@ -1,403 +0,0 @@ --/* Copyright 2023 Lynne -- * Copyright 2023 Dave Airlie -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#ifndef VULKAN_VIDEO_CODEC_AV1STD_H_ --#define VULKAN_VIDEO_CODEC_AV1STD_H_ 1 -- --/* --** This header is NOT YET generated from the Khronos Vulkan XML API Registry. --** --*/ -- --#ifdef __cplusplus --extern "C" { --#endif --#define vulkan_video_codec_av1std 1 -- --#define VK_MAKE_VIDEO_STD_VERSION(major, minor, patch) \ -- ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) --#define VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_0_1_0 VK_MAKE_VIDEO_STD_VERSION(0, 1, 0) --#define VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_0_1_0 --#define VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_av1_decode" -- --typedef enum StdVideoAV1MESAProfile { -- STD_VIDEO_AV1_MESA_PROFILE_MAIN = 0, -- STD_VIDEO_AV1_MESA_PROFILE_HIGH = 1, -- STD_VIDEO_AV1_MESA_PROFILE_PROFESSIONAL = 2, --} StdVideoAV1MESAProfile; -- --typedef enum StdVideoAV1MESALevel { -- STD_VIDEO_AV1_MESA_LEVEL_2_0 = 0, -- STD_VIDEO_AV1_MESA_LEVEL_2_1 = 1, -- STD_VIDEO_AV1_MESA_LEVEL_2_2 = 2, -- STD_VIDEO_AV1_MESA_LEVEL_2_3 = 3, -- STD_VIDEO_AV1_MESA_LEVEL_3_0 = 4, -- STD_VIDEO_AV1_MESA_LEVEL_3_1 = 5, -- STD_VIDEO_AV1_MESA_LEVEL_3_2 = 6, -- STD_VIDEO_AV1_MESA_LEVEL_3_3 = 7, -- STD_VIDEO_AV1_MESA_LEVEL_4_0 = 8, -- STD_VIDEO_AV1_MESA_LEVEL_4_1 = 9, -- STD_VIDEO_AV1_MESA_LEVEL_4_2 = 10, -- STD_VIDEO_AV1_MESA_LEVEL_4_3 = 11, -- STD_VIDEO_AV1_MESA_LEVEL_5_0 = 12, -- STD_VIDEO_AV1_MESA_LEVEL_5_1 = 13, -- STD_VIDEO_AV1_MESA_LEVEL_5_2 = 14, -- STD_VIDEO_AV1_MESA_LEVEL_5_3 = 15, -- STD_VIDEO_AV1_MESA_LEVEL_6_0 = 16, -- STD_VIDEO_AV1_MESA_LEVEL_6_1 = 17, -- STD_VIDEO_AV1_MESA_LEVEL_6_2 = 18, -- STD_VIDEO_AV1_MESA_LEVEL_6_3 = 19, -- STD_VIDEO_AV1_MESA_LEVEL_7_0 = 20, -- STD_VIDEO_AV1_MESA_LEVEL_7_1 = 21, -- STD_VIDEO_AV1_MESA_LEVEL_7_2 = 22, -- STD_VIDEO_AV1_MESA_LEVEL_7_3 = 23, -- STD_VIDEO_AV1_MESA_LEVEL_MAX = 31, --} StdVideoAV1MESALevel; -- --typedef struct StdVideoAV1MESAFilmGrainFlags { -- uint8_t apply_grain; -- uint8_t chroma_scaling_from_luma; -- uint8_t overlap_flag; -- uint8_t clip_to_restricted_range; --} StdVideoAV1MESAFilmGrainFlags; -- --typedef struct StdVideoAV1MESAFilmGrainParameters { -- StdVideoAV1MESAFilmGrainFlags flags; -- uint32_t grain_scaling_minus_8; -- uint32_t ar_coeff_lag; -- uint32_t ar_coeff_shift_minus_6; -- uint32_t grain_scale_shift; -- -- uint16_t grain_seed; -- uint8_t num_y_points; -- uint8_t point_y_value[14]; -- uint8_t point_y_scaling[14]; -- -- uint8_t num_cb_points; -- uint8_t point_cb_value[10]; -- uint8_t point_cb_scaling[10]; -- -- uint8_t num_cr_points; -- uint8_t point_cr_value[10]; -- uint8_t point_cr_scaling[10]; -- -- int8_t ar_coeffs_y_plus_128[24]; -- int8_t ar_coeffs_cb_plus_128[25]; -- int8_t ar_coeffs_cr_plus_128[25]; -- uint8_t cb_mult; -- uint8_t cb_luma_mult; -- uint16_t cb_offset; -- uint8_t cr_mult; -- uint8_t cr_luma_mult; -- uint16_t cr_offset; --} StdVideoAV1MESAFilmGrainParameters; -- --typedef struct StdVideoAV1MESAGlobalMotionFlags { -- uint8_t gm_invalid; --} StdVideoAV1MESAGlobalMotionFlags; -- --typedef struct StdVideoAV1MESAGlobalMotion { -- StdVideoAV1MESAGlobalMotionFlags flags; -- uint8_t gm_type; -- uint32_t gm_params[6]; --} StdVideoAV1MESAGlobalMotion; -- --typedef struct StdVideoAV1MESALoopRestoration { -- uint8_t lr_type[3]; -- uint8_t lr_unit_shift; -- uint8_t lr_uv_shift; --} StdVideoAV1MESALoopRestoration; -- --typedef struct StdVideoAV1MESATileInfoFlags { -- uint8_t uniform_tile_spacing_flag; --} StdVideoAV1MESATileInfoFlags; -- --typedef struct StdVideoAV1MESATileInfo { -- StdVideoAV1MESATileInfoFlags flags; -- uint8_t tile_cols; -- uint8_t tile_rows; -- uint8_t tile_start_col_sb[64]; -- uint8_t tile_start_row_sb[64]; -- uint8_t width_in_sbs_minus_1[64]; -- uint8_t height_in_sbs_minus_1[64]; -- uint16_t context_update_tile_id; -- uint8_t tile_size_bytes_minus1; --} StdVideoAV1MESATileInfo; -- --typedef struct StdVideoAV1MESAQuantizationFlags { -- uint8_t using_qmatrix; --} StdVideoAV1MESAQuantizationFlags; -- --typedef struct StdVideoAV1MESAQuantization { -- StdVideoAV1MESAQuantizationFlags flags; -- uint8_t base_q_idx; -- int8_t delta_q_y_dc; -- uint8_t diff_uv_delta; -- int8_t delta_q_u_dc; -- int8_t delta_q_u_ac; -- int8_t delta_q_v_dc; -- int8_t delta_q_v_ac; -- uint8_t qm_y; -- uint8_t qm_u; -- uint8_t qm_v; --} StdVideoAV1MESAQuantization; -- --typedef struct StdVideoAV1MESACDEF { -- uint8_t damping_minus_3; -- uint8_t bits; -- uint8_t y_pri_strength[8]; -- uint8_t y_sec_strength[8]; -- uint8_t uv_pri_strength[8]; -- uint8_t uv_sec_strength[8]; --} StdVideoAV1MESACDEF; -- --typedef struct StdVideoAV1MESADeltaQFlags { -- uint8_t delta_lf_present; -- uint8_t delta_lf_multi; --} StdVideoAV1MESADeltaQFlags; -- --typedef struct StdVideoAV1MESADeltaQ { -- StdVideoAV1MESADeltaQFlags flags; -- uint8_t delta_q_res; -- uint8_t delta_lf_res; --} StdVideoAV1MESADeltaQ; -- --typedef struct StdVideoAV1MESASegmentationFlags { -- uint8_t enabled; -- uint8_t update_map; -- uint8_t temporal_update; -- uint8_t update_data; --} StdVideoAV1MESASegmentationFlags; -- --typedef struct StdVideoAV1MESASegmentation { -- StdVideoAV1MESASegmentationFlags flags; -- uint8_t feature_enabled_bits[8]; -- int16_t feature_data[8][8]; --} StdVideoAV1MESASegmentation; -- --typedef struct StdVideoAV1MESALoopFilterFlags { -- uint8_t delta_enabled; -- uint8_t delta_update; --} StdVideoAV1MESALoopFilterFlags; -- --typedef struct StdVideoAV1MESALoopFilter { -- StdVideoAV1MESALoopFilterFlags flags; -- uint8_t level[4]; -- uint8_t sharpness; -- int8_t ref_deltas[8]; -- int8_t mode_deltas[2]; --} StdVideoAV1MESALoopFilter; -- --typedef struct StdVideoAV1MESAFrameHeaderFlags { -- uint8_t error_resilient_mode; -- uint8_t disable_cdf_update; -- uint8_t use_superres; -- uint8_t render_and_frame_size_different; -- uint8_t allow_screen_content_tools; -- uint8_t is_filter_switchable; -- uint8_t force_integer_mv; -- uint8_t frame_size_override_flag; -- uint8_t buffer_removal_time_present_flag; -- uint8_t allow_intrabc; -- uint8_t frame_refs_short_signaling; -- uint8_t allow_high_precision_mv; -- uint8_t is_motion_mode_switchable; -- uint8_t use_ref_frame_mvs; -- uint8_t disable_frame_end_update_cdf; -- uint8_t allow_warped_motion; -- uint8_t reduced_tx_set; -- uint8_t reference_select; -- uint8_t skip_mode_present; -- uint8_t delta_q_present; -- uint8_t UsesLr; --} StdVideoAV1MESAFrameHeaderFlags; -- --typedef struct StdVideoAV1MESAFrameHeader { -- StdVideoAV1MESAFrameHeaderFlags flags; -- -- uint32_t frame_presentation_time; -- uint32_t display_frame_id; -- uint32_t current_frame_id; -- uint8_t frame_to_show_map_idx; -- uint8_t frame_type; -- uint8_t order_hint; -- uint8_t primary_ref_frame; -- uint16_t frame_width_minus_1; -- uint16_t frame_height_minus_1; -- uint16_t render_width_minus_1; -- uint16_t render_height_minus_1; -- uint8_t coded_denom; -- -- uint8_t refresh_frame_flags; -- uint8_t ref_order_hint[8]; -- int8_t ref_frame_idx[7]; -- uint32_t delta_frame_id_minus1[7]; -- -- uint8_t interpolation_filter; -- uint8_t tx_mode; -- -- StdVideoAV1MESATileInfo tiling; -- StdVideoAV1MESAQuantization quantization; -- StdVideoAV1MESASegmentation segmentation; -- StdVideoAV1MESADeltaQ delta_q; -- StdVideoAV1MESALoopFilter loop_filter; -- StdVideoAV1MESACDEF cdef; -- StdVideoAV1MESALoopRestoration lr; -- StdVideoAV1MESAGlobalMotion global_motion[8]; // One per ref frame -- StdVideoAV1MESAFilmGrainParameters film_grain; --} StdVideoAV1MESAFrameHeader; -- --typedef struct StdVideoAV1MESAScreenCoding { -- uint8_t seq_force_screen_content_tools; --} StdVideoAV1MESAScreenCoding; -- --typedef struct StdVideoAV1MESATimingInfoFlags { -- uint8_t equal_picture_interval; --} StdVideoAV1MESATimingInfoFlags; -- --typedef struct StdVideoAV1MESATimingInfo { -- StdVideoAV1MESATimingInfoFlags flags; -- uint32_t num_units_in_display_tick; -- uint32_t time_scale; -- uint32_t num_ticks_per_picture_minus_1; --} StdVideoAV1MESATimingInfo; -- --typedef struct StdVideoAV1MESAColorConfigFlags { -- uint8_t mono_chrome; -- uint8_t color_range; -- uint8_t separate_uv_delta_q; --} StdVideoAV1MESAColorConfigFlags; -- --typedef struct StdVideoAV1MESAColorConfig { -- StdVideoAV1MESAColorConfigFlags flags; -- uint8_t bit_depth; -- uint8_t subsampling_x; -- uint8_t subsampling_y; --} StdVideoAV1MESAColorConfig; -- --typedef struct StdVideoAV1MESASequenceHeaderFlags { -- uint8_t still_picture; -- uint8_t reduced_still_picture_header; -- uint8_t use_128x128_superblock; -- uint8_t enable_filter_intra; -- uint8_t enable_intra_edge_filter; -- uint8_t enable_interintra_compound; -- uint8_t enable_masked_compound; -- uint8_t enable_warped_motion; -- uint8_t enable_dual_filter; -- uint8_t enable_order_hint; -- uint8_t enable_jnt_comp; -- uint8_t enable_ref_frame_mvs; -- uint8_t frame_id_numbers_present_flag; -- uint8_t enable_superres; -- uint8_t enable_cdef; -- uint8_t enable_restoration; -- uint8_t film_grain_params_present; -- uint8_t timing_info_present_flag; -- uint8_t initial_display_delay_present_flag; --} StdVideoAV1MESASequenceHeaderFlags; -- --typedef struct StdVideoAV1MESASequenceHeader { -- StdVideoAV1MESASequenceHeaderFlags flags; -- -- StdVideoAV1MESAProfile seq_profile; -- uint8_t frame_width_bits_minus_1; -- uint8_t frame_height_bits_minus_1; -- uint16_t max_frame_width_minus_1; -- uint16_t max_frame_height_minus_1; -- uint8_t delta_frame_id_length_minus_2; -- uint8_t additional_frame_id_length_minus_1; -- uint8_t order_hint_bits_minus_1; -- uint8_t seq_choose_integer_mv; -- uint8_t seq_force_integer_mv; -- -- StdVideoAV1MESATimingInfo timing_info; -- StdVideoAV1MESAColorConfig color_config; --} StdVideoAV1MESASequenceHeader; -- --typedef struct StdVideoAV1MESATile { -- uint16_t tg_start; -- uint16_t tg_end; -- uint16_t row; -- uint16_t column; -- uint32_t size; -- uint32_t offset; --} StdVideoAV1MESATile; -- --typedef struct StdVideoAV1MESATileList { -- StdVideoAV1MESATile *tile_list; -- uint32_t nb_tiles; --} StdVideoAV1MESATileList; -- --typedef struct VkVideoDecodeAV1PictureInfoMESA { -- VkStructureType sType; -- const void *pNext; -- StdVideoAV1MESAFrameHeader *frame_header; -- StdVideoAV1MESATileList *tile_list; -- uint8_t skip_mode_frame_idx[2]; --} VkVideoDecodeAV1PictureInfoMESA; -- --typedef struct VkVideoDecodeAV1DpbSlotInfoMESA { -- VkStructureType sType; -- const void *pNext; -- uint8_t frameIdx; -- uint8_t ref_order_hint[7]; -- uint8_t disable_frame_end_update_cdf; --} VkVideoDecodeAV1DpbSlotInfoMESA; -- --typedef struct VkVideoDecodeAV1SessionParametersAddInfoMESA { -- VkStructureType sType; -- const void *pNext; -- StdVideoAV1MESASequenceHeader *sequence_header; --} VkVideoDecodeAV1SessionParametersAddInfoMESA; -- --typedef struct VkVideoDecodeAV1SessionParametersCreateInfoMESA { -- VkStructureType sType; -- const void *pNext; -- const VkVideoDecodeAV1SessionParametersAddInfoMESA *pParametersAddInfo; --} VkVideoDecodeAV1SessionParametersCreateInfoMESA; -- --typedef struct VkVideoDecodeAV1ProfileInfoMESA { -- VkStructureType sType; -- const void *pNext; -- StdVideoAV1MESAProfile stdProfileIdc; --} VkVideoDecodeAV1ProfileInfoMESA; -- --typedef enum VkVideoDecodeAV1CapabilityFlagBitsMESA { -- VK_VIDEO_DECODE_AV1_CAPABILITY_EXTERNAL_FILM_GRAIN_MESA = 0x00000001, -- VK_VIDEO_DECODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_MESA = 0x7FFFFFFF --} VkVideoDecodeAV1CapabilityFlagBitsMESA; --typedef VkFlags VkVideoDecodeAV1CapabilityFlagsMESA; -- --typedef struct VkVideoDecodeAV1CapabilitiesMESA { -- VkStructureType sType; -- const void *pNext; -- VkVideoDecodeAV1CapabilityFlagsMESA flags; -- StdVideoAV1MESALevel maxLevelIdc; --} VkVideoDecodeAV1CapabilitiesMESA; -- --#define VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_MESA 1000509000 --#define VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_MESA 1000509001 --#define VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_ADD_INFO_MESA 1000509002 --#define VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_MESA 1000509003 --#define VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_MESA 1000509004 --#define VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_MESA 1000509005 -- --#ifdef __cplusplus --} --#endif -- --#endif ---- libavcodec/vulkan_video_codec_av1std_decode.h 2023-11-11 00:25:17 UTC -+++ /dev/null -@@ -1,36 +0,0 @@ --/* Copyright 2023 Lynne -- * Copyright 2023 Dave Airlie -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#ifndef VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ --#define VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ 1 -- --/* --** This header is NOT YET generated from the Khronos Vulkan XML API Registry. --** --*/ -- --#ifdef __cplusplus --extern "C" { --#endif --#define vulkan_video_codec_av1std_decode 1 -- -- -- --#ifdef __cplusplus --} --#endif -- --#endif ---- libavutil/hwcontext_vulkan.c.orig 2023-12-31 00:07:26 UTC -+++ libavutil/hwcontext_vulkan.c -@@ -437,7 +437,7 @@ static const VulkanOptExtension optional_device_exts[] - { VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME, FF_VK_EXT_VIDEO_DECODE_QUEUE }, - { VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME, FF_VK_EXT_VIDEO_DECODE_H264 }, - { VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME, FF_VK_EXT_VIDEO_DECODE_H265 }, -- { "VK_MESA_video_decode_av1", FF_VK_EXT_VIDEO_DECODE_AV1 }, -+ { VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME, FF_VK_EXT_VIDEO_DECODE_AV1 }, - }; - - static VkBool32 VKAPI_CALL vk_dbg_callback(VkDebugUtilsMessageSeverityFlagBitsEXT severity, ---- libavutil/vulkan_functions.h.orig 2023-11-11 00:25:17 UTC -+++ libavutil/vulkan_functions.h -@@ -43,7 +43,7 @@ typedef enum FFVulkanExtensions { - FF_VK_EXT_VIDEO_DECODE_QUEUE = 1ULL << 11, /* VK_KHR_video_decode_queue */ - FF_VK_EXT_VIDEO_DECODE_H264 = 1ULL << 12, /* VK_EXT_video_decode_h264 */ - FF_VK_EXT_VIDEO_DECODE_H265 = 1ULL << 13, /* VK_EXT_video_decode_h265 */ -- FF_VK_EXT_VIDEO_DECODE_AV1 = 1ULL << 14, /* VK_MESA_video_decode_av1 */ -+ FF_VK_EXT_VIDEO_DECODE_AV1 = 1ULL << 14, /* VK_KHR_video_decode_av1 */ - FF_VK_EXT_ATOMIC_FLOAT = 1ULL << 15, /* VK_EXT_shader_atomic_float */ - FF_VK_EXT_COOP_MATRIX = 1ULL << 16, /* VK_KHR_cooperative_matrix */ - ---- libavutil/vulkan_loader.h.orig 2023-11-11 00:25:17 UTC -+++ libavutil/vulkan_loader.h -@@ -56,7 +56,7 @@ static inline uint64_t ff_vk_extensions_to_mask(const - { VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME, FF_VK_EXT_VIDEO_DECODE_QUEUE }, - { VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME, FF_VK_EXT_VIDEO_DECODE_H264 }, - { VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME, FF_VK_EXT_VIDEO_DECODE_H265 }, -- { "VK_MESA_video_decode_av1", FF_VK_EXT_VIDEO_DECODE_AV1 }, -+ { VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME, FF_VK_EXT_VIDEO_DECODE_AV1 }, - }; - - FFVulkanExtensions mask = 0x0;