On Aug 13 21:27:22, s...@spacehopper.org wrote: > On 2024/08/13 16:07, Jan Stary wrote: > > On Aug 03 15:15:08, b...@comstyle.com wrote: > > > On Sat, Aug 03, 2024 at 01:23:44PM -0400, Brad Smith wrote: > > > > Here is an update to FFmpeg 6.1.1. > > > > > > > > Most of the tree is in good shape, but a few ports still need some > > > > work. > > > > > > > > Please test if you have I guess one of those Apple arm64 systems > > > > or modern Intel amd64. > > > > > > 6.1.2 has been released. Here is an updated diff. > > > > Works fine for me on current/amd64. > > > > Not sure why 'make update', while updating ffmpeg to 6.1.2, > > didn;t lso update the dependency of mpv on ffmpeg. > > Did you run 'make update' in mpv?
I have now (sorry). But it does not update anything, as mpv-0.38.0p1 is already installed. > > $ ldd /usr/local/bin/mpv | grep libav | awk '{print$NF}' > > /usr/local/lib/libavcodec.so.25.0 > > /usr/local/lib/libavfilter.so.11.0 > > /usr/local/lib/libavformat.so.22.0 > > /usr/local/lib/libavutil.so.15.0 > > /usr/local/lib/libavdevice.so.13.0 > > > > $ pkg_info -L ffmpeg | grep libav.*so > > /usr/local/lib/libavcodec.so.26.0 > > /usr/local/lib/libavdevice.so.14.0 > > /usr/local/lib/libavfilter.so.12.0 > > /usr/local/lib/libavformat.so.23.0 > > /usr/local/lib/libavutil.so.16.0 These belong to the new ffmpeg-6.1.2.v1 but there is also e.g. /usr/local/lib/libavcodec.so.25.0 which belongs to no package: $ pkg_info -E /usr/local/lib/libavcodec.so.25.0 $ pkg_info -E /usr/local/lib/libavcodec.so.26.0 /usr/local/lib/libavcodec.so.26.0: ffmpeg-6.1.2v1 ffmpeg-6.1.2v1 audio/video converter and streamer Is this expected? Jan > > > Index: graphics/ffmpeg/Makefile > > > =================================================================== > > > RCS file: /cvs/ports/graphics/ffmpeg/Makefile,v > > > retrieving revision 1.241 > > > diff -u -p -u -p -r1.241 Makefile > > > --- graphics/ffmpeg/Makefile 3 Aug 2024 05:41:40 -0000 1.241 > > > +++ graphics/ffmpeg/Makefile 3 Aug 2024 19:12:07 -0000 > > > @@ -1,6 +1,6 @@ > > > COMMENT= audio/video converter and streamer > > > > > > -V= 4.4.5 > > > +V= 6.1.2 > > > DISTNAME= ffmpeg-${V} > > > EPOCH= 1 > > > CATEGORIES= graphics multimedia > > > @@ -9,14 +9,14 @@ EXTRACT_SUFX= .tar.xz > > > > > > USE_NOBTCFI-amd64= Yes > > > > > > -SHARED_LIBS= avcodec 25.0 \ > > > - avdevice 13.0 \ > > > - avfilter 11.0 \ > > > - avformat 22.0 \ > > > - avutil 15.0 \ > > > - postproc 19.0 \ > > > - swresample 4.0 \ > > > - swscale 7.0 > > > +SHARED_LIBS= avcodec 26.0 \ > > > + avdevice 14.0 \ > > > + avfilter 12.0 \ > > > + avformat 23.0 \ > > > + avutil 16.0 \ > > > + postproc 20.0 \ > > > + swresample 5.0 \ > > > + swscale 8.0 > > > > > > HOMEPAGE= https://ffmpeg.org/ > > > > > > @@ -32,7 +32,6 @@ WANTLIB += va-x11 vidstab vorbis vorbise > > > WANTLIB += xcb-shm xcb-xfixes xml2 xvidcore z zimg > > > > > > COMPILER= base-clang ports-gcc > > > -COMPILER_LANGS= c > > > > > > DEBUG_PACKAGES= ${BUILD_PACKAGES} > > > > > > @@ -100,10 +99,12 @@ CONFIGURE_STYLE= simple > > > CONFIGURE_ARGS+=--enable-shared \ > > > --arch=${MACHINE_ARCH} \ > > > --cc=${CC} \ > > > + --cxx=${CXX} \ > > > --enable-debug \ > > > --disable-stripping \ > > > --disable-indev=jack \ > > > --disable-outdev=sdl2 \ > > > + --disable-vulkan \ > > > --enable-fontconfig \ > > > --enable-frei0r \ > > > --enable-gpl \ > > > @@ -111,6 +112,7 @@ CONFIGURE_ARGS+=--enable-shared \ > > > --enable-libaom \ > > > --enable-libass \ > > > --enable-libdav1d \ > > > + --enable-libfontconfig \ > > > --enable-libfreetype \ > > > --enable-libfribidi \ > > > --enable-libgsm \ > > > Index: graphics/ffmpeg/distinfo > > > =================================================================== > > > RCS file: /cvs/ports/graphics/ffmpeg/distinfo,v > > > retrieving revision 1.67 > > > diff -u -p -u -p -r1.67 distinfo > > > --- graphics/ffmpeg/distinfo 3 Aug 2024 05:41:40 -0000 1.67 > > > +++ graphics/ffmpeg/distinfo 3 Aug 2024 19:12:07 -0000 > > > @@ -1,2 +1,2 @@ > > > -SHA256 (ffmpeg-4.4.5.tar.xz) = > > > +VFODTUVruWicSg99xY24dH/cnSxWFO82E4US+QWqwc= > > > -SIZE (ffmpeg-4.4.5.tar.xz) = 9575596 > > > +SHA256 (ffmpeg-6.1.2.tar.xz) = > > > O2JGSXJezcVlyQPKZkPUHzO9SSOZIuRcmxRCxj3KTjg= > > > +SIZE (ffmpeg-6.1.2.tar.xz) = 10466152 > > > Index: graphics/ffmpeg/patches/patch-configure > > > =================================================================== > > > RCS file: /cvs/ports/graphics/ffmpeg/patches/patch-configure,v > > > retrieving revision 1.73 > > > diff -u -p -u -p -r1.73 patch-configure > > > --- graphics/ffmpeg/patches/patch-configure 3 Aug 2024 05:41:40 > > > -0000 1.73 > > > +++ graphics/ffmpeg/patches/patch-configure 3 Aug 2024 19:12:07 > > > -0000 > > > @@ -1,48 +1,9 @@ > > > -- configure: add initial RISC-V support > > > - Fix broken libatomic test > > > > > > Index: configure > > > --- configure.orig > > > +++ configure > > > -@@ -1992,6 +1992,7 @@ ARCH_LIST=" > > > - parisc > > > - ppc > > > - ppc64 > > > -+ riscv > > > - s390 > > > - sh4 > > > - sparc > > > -@@ -2601,7 +2602,7 @@ for ext in $(filter_out mmx > > > $ARCH_EXT_LIST_X86_SIMD); > > > - done > > > - > > > - aligned_stack_if_any="aarch64 ppc x86" > > > --fast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 > > > x86_64" > > > -+fast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 riscv64 > > > sparc64 x86_64" > > > - fast_clz_if_any="aarch64 alpha avr32 mips ppc x86" > > > - fast_unaligned_if_any="aarch64 ppc x86" > > > - simd_align_16_if_any="altivec neon sse" > > > -@@ -4915,6 +4916,9 @@ case "$arch" in > > > - "Power Macintosh"|ppc*|powerpc*) > > > - arch="ppc" > > > - ;; > > > -+ riscv*) > > > -+ arch="riscv" > > > -+ ;; > > > - s390|s390x) > > > - arch="s390" > > > - ;; > > > -@@ -5306,6 +5310,10 @@ case "$arch" in > > > - check_64bit ppc ppc64 > > > - enabled shared && enable_weak pic > > > - ;; > > > -+ riscv) > > > -+ check_64bit riscv32 riscv64 > > > -+ enabled shared && enable_weak pic > > > -+ ;; > > > - s390) > > > - check_64bit s390 s390x > > > - enabled shared && enable_weak pic > > > -@@ -5379,7 +5387,6 @@ case $target_os in > > > +@@ -5598,7 +5598,6 @@ case $target_os in > > > enable section_data_rel_ro > > > striptype="" > > > SHFLAGS='-shared' > > > @@ -50,7 +11,7 @@ Index: configure > > > SLIB_INSTALL_LINKS= > > > oss_indev_extralibs="-lossaudio" > > > oss_outdev_extralibs="-lossaudio" > > > -@@ -5736,7 +5743,7 @@ set_default libdir > > > +@@ -5959,7 +5958,7 @@ set_default libdir > > > set_default $PATHS_LIST > > > set_default nm > > > > > > @@ -59,7 +20,7 @@ Index: configure > > > > > > enable_weak_pic() { > > > disabled pic && return > > > -@@ -6191,7 +6198,7 @@ check_headers asm/types.h > > > +@@ -6483,7 +6482,7 @@ check_headers asm/types.h > > > # > > > # some configurations also require linking to libatomic, so try > > > # both with -latomic and without > > > Index: graphics/ffmpeg/patches/patch-doc_encoders_texi > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-doc_encoders_texi > > > diff -N graphics/ffmpeg/patches/patch-doc_encoders_texi > > > --- graphics/ffmpeg/patches/patch-doc_encoders_texi 13 May 2022 > > > 12:56:19 -0000 1.7 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,103 +0,0 @@ > > > -- doc/encoders: update default coder for aac > > > -- doc/encoders: add available values for libsvtav1 options > > > -- avcodec/libsvtav1: add a svtav1-params option to pass a list of > > > key=value > > > - parameters > > > -- avcodec/libsvtav1: update some options and defaults > > > - > > > -Index: doc/encoders.texi > > > ---- doc/encoders.texi.orig > > > -+++ doc/encoders.texi > > > -@@ -53,7 +53,7 @@ Set AAC encoder coding method. Possible values: > > > - > > > - @table @samp > > > - @item twoloop > > > --Two loop searching (TLS) method. > > > -+Two loop searching (TLS) method. This is the default method. > > > - > > > - This method first sets quantizers depending on band thresholds and then > > > tries > > > - to find an optimal combination by adding or subtracting a specific > > > value from > > > -@@ -75,7 +75,6 @@ Constant quantizer method. > > > - Uses a cheaper version of twoloop algorithm that doesn't try to do as > > > many > > > - clever adjustments. Worse with low bitrates (less than 64kbps), but is > > > better > > > - and much faster at higher bitrates. > > > --This is the default choice for a coder > > > - > > > - @end table > > > - > > > -@@ -1747,27 +1746,29 @@ You need to explicitly configure the build with > > > @code{ > > > - @table @option > > > - @item profile > > > - Set the encoding profile. > > > -+@table @samp > > > -+@item main > > > -+@item high > > > -+@item professional > > > -+@end table > > > - > > > - @item level > > > --Set the operating point level. > > > -+Set the operating point level. For example: '4.0' > > > - > > > -+@item hielevel > > > -+Set the Hierarchical prediction levels. > > > -+@table @samp > > > -+@item 3level > > > -+@item 4level > > > -+This is the default. > > > -+@end table > > > -+ > > > - @item tier > > > - Set the operating point tier. > > > -- > > > --@item rc > > > --Set the rate control mode to use. > > > -- > > > --Possible modes: > > > --@table @option > > > --@item cqp > > > --Constant quantizer: use fixed values of qindex (dependent on the frame > > > type) > > > --throughout the stream. This mode is the default. > > > -- > > > --@item vbr > > > --Variable bitrate: use a target bitrate for the whole stream. > > > -- > > > --@item cvbr > > > --Constrained variable bitrate: use a target bitrate for each GOP. > > > -+@table @samp > > > -+@item main > > > -+This is the default. > > > -+@item high > > > - @end table > > > - > > > - @item qmax > > > -@@ -1776,6 +1777,9 @@ Set the maximum quantizer to use when using a > > > bitrate > > > - @item qmin > > > - Set the minimum quantizer to use when using a bitrate mode. > > > - > > > -+@item crf > > > -+Constant rate factor value used in crf rate control mode (0-63). > > > -+ > > > - @item qp > > > - Set the quantizer used in cqp rate control mode (0-63). > > > - > > > -@@ -1786,14 +1790,18 @@ Enable scene change detection. > > > - Set number of frames to look ahead (0-120). > > > - > > > - @item preset > > > --Set the quality-speed tradeoff, in the range 0 to 8. Higher values are > > > --faster but lower quality. Defaults to 8 (highest speed). > > > -+Set the quality-speed tradeoff, in the range 0 to 13. Higher values are > > > -+faster but lower quality. > > > - > > > - @item tile_rows > > > - Set log2 of the number of rows of tiles to use (0-6). > > > - > > > - @item tile_columns > > > - Set log2 of the number of columns of tiles to use (0-4). > > > -+ > > > -+@item svtav1-params > > > -+Set SVT-AV1 options using a list of @var{key}=@var{value} pairs > > > separated > > > -+by ":". See the SVT-AV1 encoder user guide for a list of accepted > > > parameters. > > > - > > > - @end table > > > - > > > Index: graphics/ffmpeg/patches/patch-ffbuild_library_mak > > > =================================================================== > > > RCS file: /cvs/ports/graphics/ffmpeg/patches/patch-ffbuild_library_mak,v > > > retrieving revision 1.2 > > > diff -u -p -u -p -r1.2 patch-ffbuild_library_mak > > > --- graphics/ffmpeg/patches/patch-ffbuild_library_mak 11 Mar 2022 > > > 19:22:17 -0000 1.2 > > > +++ graphics/ffmpeg/patches/patch-ffbuild_library_mak 3 Aug 2024 > > > 19:12:07 -0000 > > > @@ -1,16 +1,16 @@ > > > Index: ffbuild/library.mak > > > --- ffbuild/library.mak.orig > > > +++ ffbuild/library.mak > > > -@@ -50,7 +50,7 @@ $(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR) > > > +@@ -66,7 +66,7 @@ $(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR) > > > > > > - $(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SLIBOBJS) > > > $(SUBDIR)lib$(NAME).ver > > > + $(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SHLIBOBJS) $(SLIBOBJS) > > > $(SUBDIR)lib$(NAME).ver > > > $(SLIB_CREATE_DEF_CMD) > > > - $$(LD) $(SHFLAGS) $(LDFLAGS) $(LDSOFLAGS) $$(LD_O) $$(filter > > > %.o,$$^) $(FFEXTRALIBS) > > > + $$(LD) $(SHFLAGS) $(LDFLAGS) $(LDSOFLAGS) $$(LD_O) $$(filter > > > %.o,$$^) $(LIB$(NAME)_EXTRALIBS) > > > $(SLIB_EXTRA_CMD) > > > > > > ifdef SUBDIR > > > -@@ -64,8 +64,6 @@ clean:: > > > +@@ -80,8 +80,6 @@ clean:: > > > install-lib$(NAME)-shared: $(SUBDIR)$(SLIBNAME) > > > $(Q)mkdir -p "$(SHLIBDIR)" > > > $$(INSTALL) -m 755 $$< "$(SHLIBDIR)/$(SLIB_INSTALL_NAME)" > > > Index: graphics/ffmpeg/patches/patch-libavcodec_aacenc_c > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavcodec_aacenc_c > > > diff -N graphics/ffmpeg/patches/patch-libavcodec_aacenc_c > > > --- graphics/ffmpeg/patches/patch-libavcodec_aacenc_c 11 Mar 2022 > > > 19:22:17 -0000 1.25 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,14 +0,0 @@ > > > -aacenc: make the twoloop coder the default > > > - > > > -Index: libavcodec/aacenc.c > > > ---- libavcodec/aacenc.c.orig > > > -+++ libavcodec/aacenc.c > > > -@@ -1104,7 +1104,7 @@ static av_cold int aac_encode_init(AVCodecContext > > > *avc > > > - > > > - #define AACENC_FLAGS AV_OPT_FLAG_ENCODING_PARAM | > > > AV_OPT_FLAG_AUDIO_PARAM > > > - static const AVOption aacenc_options[] = { > > > -- {"aac_coder", "Coding algorithm", offsetof(AACEncContext, > > > options.coder), AV_OPT_TYPE_INT, {.i64 = AAC_CODER_FAST}, 0, > > > AAC_CODER_NB-1, AACENC_FLAGS, "coder"}, > > > -+ {"aac_coder", "Coding algorithm", offsetof(AACEncContext, > > > options.coder), AV_OPT_TYPE_INT, {.i64 = AAC_CODER_TWOLOOP}, 0, > > > AAC_CODER_NB-1, AACENC_FLAGS, "coder"}, > > > - {"anmr", "ANMR method", 0, AV_OPT_TYPE_CONST, > > > {.i64 = AAC_CODER_ANMR}, INT_MIN, INT_MAX, AACENC_FLAGS, "coder"}, > > > - {"twoloop", "Two loop searching method", 0, AV_OPT_TYPE_CONST, > > > {.i64 = AAC_CODER_TWOLOOP}, INT_MIN, INT_MAX, AACENC_FLAGS, "coder"}, > > > - {"fast", "Default fast search", 0, AV_OPT_TYPE_CONST, > > > {.i64 = AAC_CODER_FAST}, INT_MIN, INT_MAX, AACENC_FLAGS, "coder"}, > > > Index: graphics/ffmpeg/patches/patch-libavcodec_aarch64_fft_neon_S > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavcodec_aarch64_fft_neon_S > > > diff -N graphics/ffmpeg/patches/patch-libavcodec_aarch64_fft_neon_S > > > --- graphics/ffmpeg/patches/patch-libavcodec_aarch64_fft_neon_S 17 Jun > > > 2023 22:19:43 -0000 1.1 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,44 +0,0 @@ > > > -Index: libavcodec/aarch64/fft_neon.S > > > ---- libavcodec/aarch64/fft_neon.S.orig > > > -+++ libavcodec/aarch64/fft_neon.S > > > -@@ -36,6 +36,7 @@ > > > - > > > - > > > - function fft4_neon > > > -+ AARCH64_VALID_JUMP_TARGET > > > - ld1 {v0.2s,v1.2s,v2.2s,v3.2s}, [x0] > > > - > > > - fadd v4.2s, v0.2s, v1.2s // r0+r1,i0+i1 > > > -@@ -58,6 +59,7 @@ function fft4_neon > > > - endfunc > > > - > > > - function fft8_neon > > > -+ AARCH64_VALID_JUMP_TARGET > > > - mov x1, x0 > > > - ld1 {v0.2s, v1.2s, v2.2s, v3.2s}, [x0], #32 > > > - ld1 {v16.2s,v17.2s,v18.2s,v19.2s}, [x0] > > > -@@ -108,6 +110,7 @@ function fft8_neon > > > - endfunc > > > - > > > - function fft16_neon > > > -+ AARCH64_VALID_JUMP_TARGET > > > - mov x1, x0 > > > - ld1 {v0.2s, v1.2s, v2.2s, v3.2s}, [x0], #32 > > > - ld1 {v16.2s,v17.2s,v18.2s,v19.2s}, [x0], #32 > > > -@@ -337,6 +340,8 @@ endfunc > > > - > > > - .macro def_fft n, n2, n4 > > > - function fft\n\()_neon, align=6 > > > -+ AARCH64_VALID_JUMP_TARGET > > > -+ AARCH64_SIGN_LINK_REGISTER > > > - sub sp, sp, #16 > > > - stp x28, x30, [sp] > > > - add x28, x0, #\n4*2*8 > > > -@@ -347,6 +352,7 @@ function fft\n\()_neon, align=6 > > > - bl fft\n4\()_neon > > > - sub x0, x28, #\n4*2*8 > > > - ldp x28, x30, [sp], #16 > > > -+ AARCH64_VALIDATE_LINK_REGISTER > > > - movrel x4, X(ff_cos_\n) > > > - mov x2, #\n4>>1 > > > - b fft_pass_neon > > > Index: graphics/ffmpeg/patches/patch-libavcodec_aarch64_h264idct_neon_S > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavcodec_aarch64_h264idct_neon_S > > > diff -N graphics/ffmpeg/patches/patch-libavcodec_aarch64_h264idct_neon_S > > > --- graphics/ffmpeg/patches/patch-libavcodec_aarch64_h264idct_neon_S > > > 17 Jun 2023 22:19:43 -0000 1.1 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,35 +0,0 @@ > > > -Index: libavcodec/aarch64/h264idct_neon.S > > > ---- libavcodec/aarch64/h264idct_neon.S.orig > > > -+++ libavcodec/aarch64/h264idct_neon.S > > > -@@ -24,6 +24,7 @@ > > > - > > > - function ff_h264_idct_add_neon, export=1 > > > - .L_ff_h264_idct_add_neon: > > > -+ AARCH64_VALID_CALL_TARGET > > > - ld1 {v0.4H, v1.4H, v2.4H, v3.4H}, [x1] > > > - sxtw x2, w2 > > > - movi v30.8H, #0 > > > -@@ -79,6 +80,7 @@ endfunc > > > - > > > - function ff_h264_idct_dc_add_neon, export=1 > > > - .L_ff_h264_idct_dc_add_neon: > > > -+ AARCH64_VALID_CALL_TARGET > > > - sxtw x2, w2 > > > - mov w3, #0 > > > - ld1r {v2.8H}, [x1] > > > -@@ -266,6 +268,7 @@ endfunc > > > - > > > - function ff_h264_idct8_add_neon, export=1 > > > - .L_ff_h264_idct8_add_neon: > > > -+ AARCH64_VALID_CALL_TARGET > > > - movi v19.8H, #0 > > > - sxtw x2, w2 > > > - ld1 {v24.8H, v25.8H}, [x1] > > > -@@ -330,6 +333,7 @@ endfunc > > > - > > > - function ff_h264_idct8_dc_add_neon, export=1 > > > - .L_ff_h264_idct8_dc_add_neon: > > > -+ AARCH64_VALID_CALL_TARGET > > > - mov w3, #0 > > > - sxtw x2, w2 > > > - ld1r {v31.8H}, [x1] > > > Index: graphics/ffmpeg/patches/patch-libavcodec_aarch64_mdct_neon_S > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavcodec_aarch64_mdct_neon_S > > > diff -N graphics/ffmpeg/patches/patch-libavcodec_aarch64_mdct_neon_S > > > --- graphics/ffmpeg/patches/patch-libavcodec_aarch64_mdct_neon_S 17 Jun > > > 2023 22:19:43 -0000 1.1 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,61 +0,0 @@ > > > -Index: libavcodec/aarch64/mdct_neon.S > > > ---- libavcodec/aarch64/mdct_neon.S.orig > > > -+++ libavcodec/aarch64/mdct_neon.S > > > -@@ -25,6 +25,7 @@ > > > - function ff_imdct_half_neon, export=1 > > > - sub sp, sp, #32 > > > - stp x19, x20, [sp] > > > -+ AARCH64_SIGN_LINK_REGISTER > > > - str x30, [sp, #16] > > > - mov x12, #1 > > > - ldr w14, [x0, #28] // mdct_bits > > > -@@ -121,6 +122,7 @@ function ff_imdct_half_neon, export=1 > > > - > > > - ldp x19, x20, [sp] > > > - ldr x30, [sp, #16] > > > -+ AARCH64_VALIDATE_LINK_REGISTER > > > - add sp, sp, #32 > > > - > > > - ret > > > -@@ -129,6 +131,7 @@ endfunc > > > - function ff_imdct_calc_neon, export=1 > > > - sub sp, sp, #32 > > > - stp x19, x20, [sp] > > > -+ AARCH64_SIGN_LINK_REGISTER > > > - str x30, [sp, #16] > > > - ldr w3, [x0, #28] // mdct_bits > > > - mov x19, #1 > > > -@@ -160,8 +163,10 @@ function ff_imdct_calc_neon, export=1 > > > - subs x19, x19, #16 > > > - b.gt 1b > > > - > > > -- ldp x19, x20, [sp], #16 > > > -- ldr x30, [sp], #16 > > > -+ ldp x19, x20, [sp] > > > -+ ldr x30, [sp, #16] > > > -+ AARCH64_VALIDATE_LINK_REGISTER > > > -+ add sp, sp, #32 > > > - > > > - ret > > > - endfunc > > > -@@ -170,6 +175,7 @@ endfunc > > > - function ff_mdct_calc_neon, export=1 > > > - sub sp, sp, #32 > > > - stp x19, x20, [sp] > > > -+ AARCH64_SIGN_LINK_REGISTER > > > - str x30, [sp, #16] > > > - > > > - mov x12, #1 > > > -@@ -317,7 +323,10 @@ function ff_mdct_calc_neon, export=1 > > > - st2 {v4.2s,v5.2s}, [x0] > > > - st2 {v6.2s,v7.2s}, [x8] > > > - > > > -- ldp x19, x20, [sp], #16 > > > -- ldr x30, [sp], #16 > > > -+ ldp x19, x20, [sp] > > > -+ ldr x30, [sp, #16] > > > -+ AARCH64_VALIDATE_LINK_REGISTER > > > -+ add sp, sp, #32 > > > -+ > > > - ret > > > - endfunc > > > Index: graphics/ffmpeg/patches/patch-libavcodec_aarch64_simple_idct_neon_S > > > =================================================================== > > > RCS file: > > > graphics/ffmpeg/patches/patch-libavcodec_aarch64_simple_idct_neon_S > > > diff -N > > > graphics/ffmpeg/patches/patch-libavcodec_aarch64_simple_idct_neon_S > > > --- graphics/ffmpeg/patches/patch-libavcodec_aarch64_simple_idct_neon_S > > > 17 Jun 2023 22:19:43 -0000 1.1 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,12 +0,0 @@ > > > -Index: libavcodec/aarch64/simple_idct_neon.S > > > ---- libavcodec/aarch64/simple_idct_neon.S.orig > > > -+++ libavcodec/aarch64/simple_idct_neon.S > > > -@@ -58,7 +58,7 @@ endconst > > > - .endm > > > - > > > - .macro idct_end > > > -- br x10 > > > -+ ret x10 > > > - .endm > > > - > > > - .macro smull1 a, b, c > > > Index: > > > graphics/ffmpeg/patches/patch-libavcodec_aarch64_synth_filter_neon_S > > > =================================================================== > > > RCS file: > > > graphics/ffmpeg/patches/patch-libavcodec_aarch64_synth_filter_neon_S > > > diff -N > > > graphics/ffmpeg/patches/patch-libavcodec_aarch64_synth_filter_neon_S > > > --- graphics/ffmpeg/patches/patch-libavcodec_aarch64_synth_filter_neon_S > > > 17 Jun 2023 22:19:43 -0000 1.1 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,19 +0,0 @@ > > > -Index: libavcodec/aarch64/synth_filter_neon.S > > > ---- libavcodec/aarch64/synth_filter_neon.S.orig > > > -+++ libavcodec/aarch64/synth_filter_neon.S > > > -@@ -52,6 +52,7 @@ function ff_synth_filter_float_neon, export=1 > > > - stp x5, x1, [sp, #16] > > > - and x7, x7, #~63 > > > - and w8, w8, #511 > > > -+ AARCH64_SIGN_LINK_REGISTER > > > - stp x7, x30, [sp, #32] > > > - str w8, [x2] > > > - str s0, [sp, #48] > > > -@@ -63,6 +64,7 @@ function ff_synth_filter_float_neon, export=1 > > > - ldp x2, x4, [sp] // synct_buf_2, window > > > - ldp x13, x9, [sp, #16] // out, synth_buf > > > - ldp x0, x30, [sp, #32] // *synth_buf_offset > > > -+ AARCH64_VALIDATE_LINK_REGISTER > > > - ldr s0, [sp, #48] > > > - > > > - add x3, x2, #16*4 // synct_buf_2 + 16 > > > Index: > > > graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9itxfm_16bpp_neon_S > > > =================================================================== > > > RCS file: > > > graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9itxfm_16bpp_neon_S > > > diff -N > > > graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9itxfm_16bpp_neon_S > > > --- > > > graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9itxfm_16bpp_neon_S > > > 17 Jun 2023 22:19:43 -0000 1.1 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,129 +0,0 @@ > > > -Index: libavcodec/aarch64/vp9itxfm_16bpp_neon.S > > > ---- libavcodec/aarch64/vp9itxfm_16bpp_neon.S.orig > > > -+++ libavcodec/aarch64/vp9itxfm_16bpp_neon.S > > > -@@ -1040,7 +1040,7 @@ function \txfm\()16_1d_4x16_pass1_neon > > > - .irp i, 16, 20, 24, 28, 17, 21, 25, 29, 18, 22, 26, 30, 19, 23, 27, 31 > > > - store \i, x0, #16 > > > - .endr > > > -- br x14 > > > -+ ret x14 > > > - 1: > > > - // Special case: For the last input column (x1 == 12), > > > - // which would be stored as the last row in the temp buffer, > > > -@@ -1068,7 +1068,7 @@ function \txfm\()16_1d_4x16_pass1_neon > > > - mov v29.16b, v17.16b > > > - mov v30.16b, v18.16b > > > - mov v31.16b, v19.16b > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - > > > - // Read a vertical 4x16 slice out of a 16x16 matrix, do a transform on > > > it, > > > -@@ -1098,7 +1098,7 @@ function \txfm\()16_1d_4x16_pass2_neon > > > - load_add_store v16.4s, v17.4s, v18.4s, v19.4s, v20.4s, v21.4s, > > > v22.4s, v23.4s > > > - load_add_store v24.4s, v25.4s, v26.4s, v27.4s, v28.4s, v29.4s, > > > v30.4s, v31.4s > > > - > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - .endm > > > - > > > -@@ -1208,7 +1208,7 @@ function vp9_\txfm1\()_\txfm2\()_16x16_add_16_neon > > > - ldp d12, d13, [sp], 0x10 > > > - ldp d14, d15, [sp], 0x10 > > > - .endif > > > -- br x15 > > > -+ ret x15 > > > - endfunc > > > - > > > - function ff_vp9_\txfm1\()_\txfm2\()_16x16_add_10_neon, export=1 > > > -@@ -1264,7 +1264,7 @@ function idct16_1d_4x16_pass1_quarter_neon > > > - st1 {v23.4s}, [x0], #16 > > > - st1 {v27.4s}, [x0], #16 > > > - st1 {v31.4s}, [x0], #16 > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - > > > - function idct16_1d_4x16_pass2_quarter_neon > > > -@@ -1286,7 +1286,7 @@ function idct16_1d_4x16_pass2_quarter_neon > > > - load_add_store v16.4s, v17.4s, v18.4s, v19.4s, v20.4s, v21.4s, > > > v22.4s, v23.4s > > > - load_add_store v24.4s, v25.4s, v26.4s, v27.4s, v28.4s, v29.4s, > > > v30.4s, v31.4s > > > - > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - > > > - function idct16_1d_4x16_pass1_half_neon > > > -@@ -1313,7 +1313,7 @@ function idct16_1d_4x16_pass1_half_neon > > > - .irp i, 16, 20, 24, 28, 17, 21, 25, 29, 18, 22, 26, 30, 19, 23, 27, 31 > > > - store \i, x0, #16 > > > - .endr > > > -- br x14 > > > -+ ret x14 > > > - 1: > > > - // Special case: For the second input column (r1 == 4), > > > - // which would be stored as the second row in the temp buffer, > > > -@@ -1341,7 +1341,7 @@ function idct16_1d_4x16_pass1_half_neon > > > - mov v21.16b, v17.16b > > > - mov v22.16b, v18.16b > > > - mov v23.16b, v19.16b > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - > > > - function idct16_1d_4x16_pass2_half_neon > > > -@@ -1364,7 +1364,7 @@ function idct16_1d_4x16_pass2_half_neon > > > - load_add_store v16.4s, v17.4s, v18.4s, v19.4s, v20.4s, v21.4s, > > > v22.4s, v23.4s > > > - load_add_store v24.4s, v25.4s, v26.4s, v27.4s, v28.4s, v29.4s, > > > v30.4s, v31.4s > > > - > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - > > > - .macro idct16_partial size > > > -@@ -1390,7 +1390,7 @@ function idct16x16_\size\()_add_16_neon > > > - > > > - add sp, sp, #1024 > > > - ldp d8, d9, [sp], 0x10 > > > -- br x15 > > > -+ ret x15 > > > - endfunc > > > - .endm > > > - > > > -@@ -1729,7 +1729,7 @@ function idct32_1d_4x32_pass1\suffix\()_neon > > > - store_rev v29.4s, v25.4s, v21.4s, v17.4s, v29.16b, v25.16b > > > - store_rev v28.4s, v24.4s, v20.4s, v16.4s, v28.16b, v24.16b > > > - .purgem store_rev > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - > > > - // This is mostly the same as 4x32_pass1, but without the transpose, > > > -@@ -1849,7 +1849,7 @@ function idct32_1d_4x32_pass2\suffix\()_neon > > > - load_acc_store v24.4s, v25.4s, v26.4s, v27.4s, 1 > > > - load_acc_store v28.4s, v29.4s, v30.4s, v31.4s, 1 > > > - .purgem load_acc_store > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - .endm > > > - > > > -@@ -1943,7 +1943,7 @@ function vp9_idct_idct_32x32_add_16_neon > > > - ldp d10, d11, [sp], 0x10 > > > - ldp d8, d9, [sp], 0x10 > > > - > > > -- br x15 > > > -+ ret x15 > > > - endfunc > > > - > > > - function ff_vp9_idct_idct_32x32_add_10_neon, export=1 > > > -@@ -2009,7 +2009,7 @@ function idct32x32_\size\()_add_16_neon > > > - ldp d10, d11, [sp], 0x10 > > > - ldp d8, d9, [sp], 0x10 > > > - > > > -- br x15 > > > -+ ret x15 > > > - endfunc > > > - .endm > > > - > > > Index: graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9itxfm_neon_S > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9itxfm_neon_S > > > diff -N graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9itxfm_neon_S > > > --- graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9itxfm_neon_S > > > 17 Jun 2023 22:19:43 -0000 1.1 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,120 +0,0 @@ > > > -Index: libavcodec/aarch64/vp9itxfm_neon.S > > > ---- libavcodec/aarch64/vp9itxfm_neon.S.orig > > > -+++ libavcodec/aarch64/vp9itxfm_neon.S > > > -@@ -787,7 +787,7 @@ function \txfm\()16_1d_8x16_pass1_neon > > > - .irp i, 16, 24, 17, 25, 18, 26, 19, 27, 20, 28, 21, 29, 22, 30, 23, 31 > > > - store \i, x0, #16 > > > - .endr > > > -- br x14 > > > -+ ret x14 > > > - 1: > > > - // Special case: For the last input column (x1 == 8), > > > - // which would be stored as the last row in the temp buffer, > > > -@@ -806,7 +806,7 @@ function \txfm\()16_1d_8x16_pass1_neon > > > - mov v29.16b, v21.16b > > > - mov v30.16b, v22.16b > > > - mov v31.16b, v23.16b > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - > > > - // Read a vertical 8x16 slice out of a 16x16 matrix, do a transform on > > > it, > > > -@@ -834,7 +834,7 @@ function \txfm\()16_1d_8x16_pass2_neon > > > - load_add_store v16.8h, v17.8h, v18.8h, v19.8h, v20.8h, v21.8h, > > > v22.8h, v23.8h, v16.8b, v17.8b > > > - load_add_store v24.8h, v25.8h, v26.8h, v27.8h, v28.8h, v29.8h, > > > v30.8h, v31.8h, v16.8b, v17.8b > > > - > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - .endm > > > - > > > -@@ -925,7 +925,7 @@ function ff_vp9_\txfm1\()_\txfm2\()_16x16_add_neon, > > > ex > > > - ldp d12, d13, [sp], 0x10 > > > - ldp d14, d15, [sp], 0x10 > > > - .endif > > > -- br x15 > > > -+ ret x15 > > > - endfunc > > > - .endm > > > - > > > -@@ -960,7 +960,7 @@ function idct16_1d_8x16_pass1_quarter_neon > > > - .irp i, 24, 25, 26, 27 > > > - store \i, x0, x9 > > > - .endr > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - > > > - function idct16_1d_8x16_pass2_quarter_neon > > > -@@ -978,7 +978,7 @@ function idct16_1d_8x16_pass2_quarter_neon > > > - load_add_store v16.8h, v17.8h, v18.8h, v19.8h, v20.8h, v21.8h, > > > v22.8h, v23.8h, v16.8b, v17.8b > > > - load_add_store v24.8h, v25.8h, v26.8h, v27.8h, v28.8h, v29.8h, > > > v30.8h, v31.8h, v16.8b, v17.8b > > > - > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - > > > - function idct16_1d_8x16_pass1_half_neon > > > -@@ -1003,7 +1003,7 @@ function idct16_1d_8x16_pass1_half_neon > > > - .irp i, 24, 25, 26, 27, 28, 29, 30, 31 > > > - store \i, x0, x9 > > > - .endr > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - > > > - function idct16_1d_8x16_pass2_half_neon > > > -@@ -1021,7 +1021,7 @@ function idct16_1d_8x16_pass2_half_neon > > > - load_add_store v16.8h, v17.8h, v18.8h, v19.8h, v20.8h, v21.8h, > > > v22.8h, v23.8h, v16.8b, v17.8b > > > - load_add_store v24.8h, v25.8h, v26.8h, v27.8h, v28.8h, v29.8h, > > > v30.8h, v31.8h, v16.8b, v17.8b > > > - > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - > > > - .macro idct16_partial size > > > -@@ -1038,7 +1038,7 @@ function idct16x16_\size\()_add_neon > > > - .endr > > > - > > > - add sp, sp, #512 > > > -- br x15 > > > -+ ret x15 > > > - endfunc > > > - .endm > > > - > > > -@@ -1349,7 +1349,7 @@ function idct32_1d_8x32_pass1\suffix\()_neon > > > - store_rev v25.8h, v17.8h > > > - store_rev v24.8h, v16.8h > > > - .purgem store_rev > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - > > > - // This is mostly the same as 8x32_pass1, but without the transpose, > > > -@@ -1466,7 +1466,7 @@ function idct32_1d_8x32_pass2\suffix\()_neon > > > - load_acc_store v24.8h, v25.8h, v26.8h, v27.8h, 1 > > > - load_acc_store v28.8h, v29.8h, v30.8h, v31.8h, 1 > > > - .purgem load_acc_store > > > -- br x14 > > > -+ ret x14 > > > - endfunc > > > - .endm > > > - > > > -@@ -1547,7 +1547,7 @@ function ff_vp9_idct_idct_32x32_add_neon, export=1 > > > - ldp d8, d9, [sp], 0x10 > > > - ldp d10, d11, [sp], 0x10 > > > - > > > -- br x15 > > > -+ ret x15 > > > - endfunc > > > - > > > - .macro idct32_partial size > > > -@@ -1572,7 +1572,7 @@ function idct32x32_\size\()_add_neon > > > - ldp d8, d9, [sp], 0x10 > > > - ldp d10, d11, [sp], 0x10 > > > - > > > -- br x15 > > > -+ ret x15 > > > - endfunc > > > - .endm > > > - > > > Index: > > > graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9lpf_16bpp_neon_S > > > =================================================================== > > > RCS file: > > > graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9lpf_16bpp_neon_S > > > diff -N > > > graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9lpf_16bpp_neon_S > > > --- graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9lpf_16bpp_neon_S > > > 17 Jun 2023 22:19:43 -0000 1.1 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,174 +0,0 @@ > > > -Index: libavcodec/aarch64/vp9lpf_16bpp_neon.S > > > ---- libavcodec/aarch64/vp9lpf_16bpp_neon.S.orig > > > -+++ libavcodec/aarch64/vp9lpf_16bpp_neon.S > > > -@@ -69,7 +69,7 @@ > > > - mov x12, v4.d[1] > > > - adds x11, x11, x12 > > > - b.ne 1f > > > -- br x10 > > > -+ ret x10 > > > - 1: > > > - > > > - .if \wd >= 8 > > > -@@ -205,7 +205,7 @@ > > > - b.eq 6f > > > - .else > > > - b.ne 1f > > > -- br x13 > > > -+ ret x13 > > > - 1: > > > - .endif > > > - > > > -@@ -264,7 +264,7 @@ > > > - b.ne 1f > > > - // If no pixels needed flat8in nor flat8out, jump to a > > > - // writeout of the inner 4 pixels > > > -- br x14 > > > -+ ret x14 > > > - 1: > > > - > > > - mov x11, v7.d[0] > > > -@@ -272,7 +272,7 @@ > > > - adds x11, x11, x12 > > > - b.ne 1f > > > - // If no pixels need flat8out, jump to a writeout of the inner > > > 6 pixels > > > -- br x15 > > > -+ ret x15 > > > - > > > - 1: > > > - // flat8out > > > -@@ -446,7 +446,7 @@ function ff_\func\()_\bpp\()_neon, export=1 > > > - ldp d10, d11, [sp], 0x10 > > > - ldp d12, d13, [sp], 0x10 > > > - ldp d14, d15, [sp], 0x10 > > > -- br x16 > > > -+ ret x16 > > > - .else > > > - b \func\()_16_neon > > > - .endif > > > -@@ -486,7 +486,7 @@ function ff_\func\()_\suffix\()_\bpp\()_neon, > > > export=1 > > > - ldp d12, d13, [sp], 0x10 > > > - ldp d14, d15, [sp], 0x10 > > > - .endif > > > -- br x16 > > > -+ ret x16 > > > - endfunc > > > - .endm > > > - > > > -@@ -520,7 +520,7 @@ function > > > ff_vp9_loop_filter_\dir\()_\wd1\()\wd2\()_16_ > > > - lsl w3, w14, #\bpp - 8 > > > - lsl w4, w15, #\bpp - 8 > > > - bl vp9_loop_filter_\dir\()_\wd2\()_8_16_neon > > > -- br x16 > > > -+ ret x16 > > > - endfunc > > > - .endm > > > - > > > -@@ -553,7 +553,7 @@ function vp9_loop_filter_v_4_8_16_neon > > > - st1 {v25.8h}, [x0], x1 > > > - sub x0, x0, x1, lsl #1 > > > - > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - bpp_frontends vp9_loop_filter_v_4_8 > > > -@@ -601,7 +601,7 @@ function vp9_loop_filter_h_4_8_16_neon > > > - sub x0, x0, x1, lsl #3 > > > - add x0, x0, #4 > > > - > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - bpp_frontends vp9_loop_filter_h_4_8 > > > -@@ -632,7 +632,7 @@ function vp9_loop_filter_v_8_8_16_neon > > > - sub x0, x0, x1, lsl #1 > > > - sub x0, x0, x1 > > > - > > > -- br x10 > > > -+ ret x10 > > > - 6: > > > - sub x9, x0, x1, lsl #1 > > > - st1 {v22.8h}, [x9], x1 > > > -@@ -640,7 +640,7 @@ function vp9_loop_filter_v_8_8_16_neon > > > - st1 {v23.8h}, [x9], x1 > > > - st1 {v25.8h}, [x0], x1 > > > - sub x0, x0, x1, lsl #1 > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - bpp_frontends vp9_loop_filter_v_8_8 > > > -@@ -683,7 +683,7 @@ function vp9_loop_filter_h_8_8_16_neon > > > - sub x0, x0, x1, lsl #3 > > > - add x0, x0, #8 > > > - > > > -- br x10 > > > -+ ret x10 > > > - 6: > > > - // If we didn't need to do the flat8in part, we use the same > > > writeback > > > - // as in loop_filter_h_4_8. > > > -@@ -700,7 +700,7 @@ function vp9_loop_filter_h_8_8_16_neon > > > - st1 {v25.d}[1], [x0], x1 > > > - sub x0, x0, x1, lsl #3 > > > - add x0, x0, #4 > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - bpp_frontends vp9_loop_filter_h_8_8 > > > -@@ -755,7 +755,7 @@ function vp9_loop_filter_v_16_8_16_neon > > > - sub x0, x0, x1, lsl #3 > > > - add x0, x0, x1 > > > - > > > -- br x10 > > > -+ ret x10 > > > - 8: > > > - add x9, x9, x1, lsl #2 > > > - // If we didn't do the flat8out part, the output is left in the > > > -@@ -768,7 +768,7 @@ function vp9_loop_filter_v_16_8_16_neon > > > - st1 {v26.8h}, [x0], x1 > > > - sub x0, x0, x1, lsl #1 > > > - sub x0, x0, x1 > > > -- br x10 > > > -+ ret x10 > > > - 7: > > > - sub x9, x0, x1, lsl #1 > > > - st1 {v22.8h}, [x9], x1 > > > -@@ -776,7 +776,7 @@ function vp9_loop_filter_v_16_8_16_neon > > > - st1 {v23.8h}, [x9], x1 > > > - st1 {v25.8h}, [x0], x1 > > > - sub x0, x0, x1, lsl #1 > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - bpp_frontends vp9_loop_filter_v_16_8, push=1 > > > -@@ -833,7 +833,7 @@ function vp9_loop_filter_h_16_8_16_neon > > > - st1 {v31.8h}, [x0], x1 > > > - sub x0, x0, x1, lsl #3 > > > - > > > -- br x10 > > > -+ ret x10 > > > - 8: > > > - // The same writeback as in loop_filter_h_8_8 > > > - sub x9, x0, #8 > > > -@@ -850,7 +850,7 @@ function vp9_loop_filter_h_16_8_16_neon > > > - st1 {v27.8h}, [x0], x1 > > > - sub x0, x0, x1, lsl #3 > > > - add x0, x0, #8 > > > -- br x10 > > > -+ ret x10 > > > - 7: > > > - // The same writeback as in loop_filter_h_4_8 > > > - sub x9, x0, #4 > > > -@@ -866,7 +866,7 @@ function vp9_loop_filter_h_16_8_16_neon > > > - st1 {v25.d}[1], [x0], x1 > > > - sub x0, x0, x1, lsl #3 > > > - add x0, x0, #4 > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - bpp_frontends vp9_loop_filter_h_16_8, push=1 > > > Index: graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9lpf_neon_S > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9lpf_neon_S > > > diff -N graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9lpf_neon_S > > > --- graphics/ffmpeg/patches/patch-libavcodec_aarch64_vp9lpf_neon_S > > > 17 Jun 2023 22:19:43 -0000 1.1 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,220 +0,0 @@ > > > -Index: libavcodec/aarch64/vp9lpf_neon.S > > > ---- libavcodec/aarch64/vp9lpf_neon.S.orig > > > -+++ libavcodec/aarch64/vp9lpf_neon.S > > > -@@ -399,7 +399,7 @@ > > > - .endif > > > - // If no pixels needed flat8in nor flat8out, jump to a > > > - // writeout of the inner 4 pixels > > > -- br x14 > > > -+ ret x14 > > > - 1: > > > - > > > - mov x5, v7.d[0] > > > -@@ -411,7 +411,7 @@ > > > - cbnz x5, 1f > > > - .endif > > > - // If no pixels need flat8out, jump to a writeout of the inner > > > 6 pixels > > > -- br x15 > > > -+ ret x15 > > > - > > > - 1: > > > - // flat8out > > > -@@ -532,32 +532,32 @@ function vp9_loop_filter_4 > > > - loop_filter 4, .8b, 0, v16, v17, v18, v19, v28, v29, > > > v30, v31 > > > - ret > > > - 9: > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - function vp9_loop_filter_4_16b_mix_44 > > > - loop_filter 4, .16b, 44, v16, v17, v18, v19, v28, v29, > > > v30, v31 > > > - ret > > > - 9: > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - function vp9_loop_filter_8 > > > - loop_filter 8, .8b, 0, v16, v17, v18, v19, v28, v29, > > > v30, v31 > > > - ret > > > - 6: > > > -- br x13 > > > -+ ret x13 > > > - 9: > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - function vp9_loop_filter_8_16b_mix > > > - loop_filter 8, .16b, 88, v16, v17, v18, v19, v28, v29, > > > v30, v31 > > > - ret > > > - 6: > > > -- br x13 > > > -+ ret x13 > > > - 9: > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - function vp9_loop_filter_16 > > > -@@ -568,7 +568,7 @@ function vp9_loop_filter_16 > > > - ldp d10, d11, [sp], 0x10 > > > - ldp d12, d13, [sp], 0x10 > > > - ldp d14, d15, [sp], 0x10 > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - function vp9_loop_filter_16_16b > > > -@@ -579,7 +579,7 @@ function vp9_loop_filter_16_16b > > > - ldp d10, d11, [sp], 0x10 > > > - ldp d12, d13, [sp], 0x10 > > > - ldp d14, d15, [sp], 0x10 > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - .macro loop_filter_4 > > > -@@ -648,7 +648,7 @@ function ff_vp9_loop_filter_v_4_8_neon, export=1 > > > - st1 {v23.8b}, [x9], x1 > > > - st1 {v25.8b}, [x0], x1 > > > - > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - function ff_vp9_loop_filter_v_44_16_neon, export=1 > > > -@@ -672,7 +672,7 @@ function ff_vp9_loop_filter_v_44_16_neon, export=1 > > > - st1 {v23.16b}, [x9], x1 > > > - st1 {v25.16b}, [x0], x1 > > > - > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - function ff_vp9_loop_filter_h_4_8_neon, export=1 > > > -@@ -714,7 +714,7 @@ function ff_vp9_loop_filter_h_4_8_neon, export=1 > > > - st1 {v25.s}[0], [x9], x1 > > > - st1 {v25.s}[1], [x0], x1 > > > - > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - function ff_vp9_loop_filter_h_44_16_neon, export=1 > > > -@@ -766,7 +766,7 @@ function ff_vp9_loop_filter_h_44_16_neon, export=1 > > > - st1 {v25.s}[1], [x9], x1 > > > - st1 {v25.s}[3], [x0], x1 > > > - > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - function ff_vp9_loop_filter_v_8_8_neon, export=1 > > > -@@ -793,14 +793,14 @@ function ff_vp9_loop_filter_v_8_8_neon, export=1 > > > - st1 {v23.8b}, [x9], x1 > > > - st1 {v26.8b}, [x0], x1 > > > - > > > -- br x10 > > > -+ ret x10 > > > - 6: > > > - sub x9, x0, x1, lsl #1 > > > - st1 {v22.8b}, [x9], x1 > > > - st1 {v24.8b}, [x0], x1 > > > - st1 {v23.8b}, [x9], x1 > > > - st1 {v25.8b}, [x0], x1 > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - .macro mix_v_16 mix > > > -@@ -828,14 +828,14 @@ function ff_vp9_loop_filter_v_\mix\()_16_neon, > > > export= > > > - st1 {v23.16b}, [x9], x1 > > > - st1 {v26.16b}, [x0], x1 > > > - > > > -- br x10 > > > -+ ret x10 > > > - 6: > > > - sub x9, x0, x1, lsl #1 > > > - st1 {v22.16b}, [x9], x1 > > > - st1 {v24.16b}, [x0], x1 > > > - st1 {v23.16b}, [x9], x1 > > > - st1 {v25.16b}, [x0], x1 > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - .endm > > > - > > > -@@ -876,7 +876,7 @@ function ff_vp9_loop_filter_h_8_8_neon, export=1 > > > - st1 {v23.8b}, [x9], x1 > > > - st1 {v27.8b}, [x0], x1 > > > - > > > -- br x10 > > > -+ ret x10 > > > - 6: > > > - // If we didn't need to do the flat8in part, we use the same > > > writeback > > > - // as in loop_filter_h_4_8. > > > -@@ -891,7 +891,7 @@ function ff_vp9_loop_filter_h_8_8_neon, export=1 > > > - st1 {v24.s}[1], [x0], x1 > > > - st1 {v25.s}[0], [x9], x1 > > > - st1 {v25.s}[1], [x0], x1 > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - > > > - .macro mix_h_16 mix > > > -@@ -942,7 +942,7 @@ function ff_vp9_loop_filter_h_\mix\()_16_neon, > > > export= > > > - st1 {v27.8b}, [x9], x1 > > > - st1 {v27.d}[1], [x0], x1 > > > - > > > -- br x10 > > > -+ ret x10 > > > - 6: > > > - add x9, x9, #2 > > > - add x0, x0, #2 > > > -@@ -963,7 +963,7 @@ function ff_vp9_loop_filter_h_\mix\()_16_neon, > > > export= > > > - st1 {v24.s}[3], [x0], x1 > > > - st1 {v25.s}[1], [x9], x1 > > > - st1 {v25.s}[3], [x0], x1 > > > -- br x10 > > > -+ ret x10 > > > - endfunc > > > - .endm > > > - > > > -@@ -1022,7 +1022,7 @@ function ff_vp9_loop_filter_v_16_8_neon, export=1 > > > - ldp d10, d11, [sp], 0x10 > > > - ldp d12, d13, [sp], 0x10 > > > - ldp d14, d15, [sp], 0x10 > > > -- br x10 > > > -+ ret x10 > > > - 8: > > > - add x9, x9, x1, lsl #2 > > > - // If we didn't do the flat8out part, the output is left in the > > > -@@ -1091,7 +1091,7 @@ function ff_vp9_loop_filter_v_16_16_neon, export=1 > > > - ldp d10, d11, [sp], 0x10 > > > - ldp d12, d13, [sp], 0x10 > > > - ldp d14, d15, [sp], 0x10 > > > -- br x10 > > > -+ ret x10 > > > - 8: > > > - add x9, x9, x1, lsl #2 > > > - st1 {v21.16b}, [x9], x1 > > > -@@ -1168,7 +1168,7 @@ function ff_vp9_loop_filter_h_16_8_neon, export=1 > > > - ldp d10, d11, [sp], 0x10 > > > - ldp d12, d13, [sp], 0x10 > > > - ldp d14, d15, [sp], 0x10 > > > -- br x10 > > > -+ ret x10 > > > - 8: > > > - // The same writeback as in loop_filter_h_8_8 > > > - sub x9, x0, #4 > > > -@@ -1287,7 +1287,7 @@ function ff_vp9_loop_filter_h_16_16_neon, export=1 > > > - ldp d10, d11, [sp], 0x10 > > > - ldp d12, d13, [sp], 0x10 > > > - ldp d14, d15, [sp], 0x10 > > > -- br x10 > > > -+ ret x10 > > > - 8: > > > - sub x9, x0, #4 > > > - add x0, x9, x1, lsl #3 > > > Index: graphics/ffmpeg/patches/patch-libavcodec_libaomenc_c > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavcodec_libaomenc_c > > > diff -N graphics/ffmpeg/patches/patch-libavcodec_libaomenc_c > > > --- graphics/ffmpeg/patches/patch-libavcodec_libaomenc_c 20 Aug 2022 > > > 12:29:18 -0000 1.5 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,218 +0,0 @@ > > > -- lavc/aomenc: Force default qmax of 0 if crf was set to 0 > > > -- avcodec/libaomenc: Avoid copying data, allow user-supplied buffers > > > -- lavc/libaomenc: Show encoder config as a warning in case of failed > > > initialization > > > -- avcodec/libaomenc: use ctx->usage to get default cfg > > > -- avcodec/libaomenc: remove the redundant initialization > > > -- avcodec/libaomenc: Add unmet target level warning > > > -- avcodec/libaomenc: Expose the allintra usage mode > > > -- avcodec/libaomenc: Get number of operating points > > > - > > > -Index: libavcodec/libaomenc.c > > > ---- libavcodec/libaomenc.c.orig > > > -+++ libavcodec/libaomenc.c > > > -@@ -36,6 +36,7 @@ > > > - > > > - #include "av1.h" > > > - #include "avcodec.h" > > > -+#include "encode.h" > > > - #include "internal.h" > > > - #include "packet_internal.h" > > > - #include "profiles.h" > > > -@@ -194,6 +195,15 @@ static const char *const ctlidstr[] = { > > > - [AV1E_SET_ENABLE_SMOOTH_INTERINTRA] = > > > "AV1E_SET_ENABLE_SMOOTH_INTERINTRA", > > > - [AV1E_SET_ENABLE_REF_FRAME_MVS] = > > > "AV1E_SET_ENABLE_REF_FRAME_MVS", > > > - #endif > > > -+#ifdef AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS > > > -+ [AV1E_GET_NUM_OPERATING_POINTS] = > > > "AV1E_GET_NUM_OPERATING_POINTS", > > > -+#endif > > > -+#ifdef AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX > > > -+ [AV1E_GET_SEQ_LEVEL_IDX] = "AV1E_GET_SEQ_LEVEL_IDX", > > > -+#endif > > > -+#ifdef AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX > > > -+ [AV1E_GET_TARGET_SEQ_LEVEL_IDX] = > > > "AV1E_GET_TARGET_SEQ_LEVEL_IDX", > > > -+#endif > > > - }; > > > - > > > - static av_cold void log_encoder_error(AVCodecContext *avctx, const char > > > *desc) > > > -@@ -208,10 +218,10 @@ static av_cold void > > > log_encoder_error(AVCodecContext * > > > - } > > > - > > > - static av_cold void dump_enc_cfg(AVCodecContext *avctx, > > > -- const struct aom_codec_enc_cfg *cfg) > > > -+ const struct aom_codec_enc_cfg *cfg, > > > -+ int level) > > > - { > > > - int width = -30; > > > -- int level = AV_LOG_DEBUG; > > > - > > > - av_log(avctx, level, "aom_codec_enc_cfg\n"); > > > - av_log(avctx, level, "generic settings\n" > > > -@@ -319,10 +329,73 @@ static av_cold int codecctl_int(AVCodecContext > > > *avctx, > > > - return 0; > > > - } > > > - > > > -+#if defined(AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS) && \ > > > -+ defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \ > > > -+ defined(AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX) > > > -+static av_cold int codecctl_intp(AVCodecContext *avctx, > > > -+#ifdef UENUM1BYTE > > > -+ aome_enc_control_id id, > > > -+#else > > > -+ enum aome_enc_control_id id, > > > -+#endif > > > -+ int* ptr) > > > -+{ > > > -+ AOMContext *ctx = avctx->priv_data; > > > -+ char buf[80]; > > > -+ int width = -30; > > > -+ int res; > > > -+ > > > -+ snprintf(buf, sizeof(buf), "%s:", ctlidstr[id]); > > > -+ av_log(avctx, AV_LOG_DEBUG, " %*s%d\n", width, buf, *ptr); > > > -+ > > > -+ res = aom_codec_control(&ctx->encoder, id, ptr); > > > -+ if (res != AOM_CODEC_OK) { > > > -+ snprintf(buf, sizeof(buf), "Failed to set %s codec control", > > > -+ ctlidstr[id]); > > > -+ log_encoder_error(avctx, buf); > > > -+ return AVERROR(EINVAL); > > > -+ } > > > -+ > > > -+ return 0; > > > -+} > > > -+#endif > > > -+ > > > - static av_cold int aom_free(AVCodecContext *avctx) > > > - { > > > - AOMContext *ctx = avctx->priv_data; > > > - > > > -+#if defined(AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS) && \ > > > -+ defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \ > > > -+ defined(AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX) > > > -+ if (!(avctx->flags & AV_CODEC_FLAG_PASS1)) { > > > -+ int num_operating_points; > > > -+ int levels[32]; > > > -+ int target_levels[32]; > > > -+ > > > -+ if (!codecctl_intp(avctx, AV1E_GET_NUM_OPERATING_POINTS, > > > -+ &num_operating_points) && > > > -+ !codecctl_intp(avctx, AV1E_GET_SEQ_LEVEL_IDX, levels) && > > > -+ !codecctl_intp(avctx, AV1E_GET_TARGET_SEQ_LEVEL_IDX, > > > -+ target_levels)) { > > > -+ for (int i = 0; i < num_operating_points; i++) { > > > -+ if (levels[i] > target_levels[i]) { > > > -+ // Warn when the target level was not met > > > -+ av_log(avctx, AV_LOG_WARNING, > > > -+ "Could not encode to target level %d.%d for " > > > -+ "operating point %d. The output level is > > > %d.%d.\n", > > > -+ 2 + (target_levels[i] >> 2), > > > target_levels[i] & 3, > > > -+ i, 2 + (levels[i] >> 2), levels[i] & 3); > > > -+ } else if (target_levels[i] < 31) { > > > -+ // Log the encoded level if a target level was given > > > -+ av_log(avctx, AV_LOG_INFO, > > > -+ "Output level for operating point %d is > > > %d.%d.\n", > > > -+ i, 2 + (levels[i] >> 2), levels[i] & 3); > > > -+ } > > > -+ } > > > -+ } > > > -+ } > > > -+#endif > > > -+ > > > - aom_codec_destroy(&ctx->encoder); > > > - av_freep(&ctx->twopass_stats.buf); > > > - av_freep(&avctx->stats_out); > > > -@@ -596,7 +669,7 @@ static av_cold int aom_init(AVCodecContext *avctx, > > > - av_log(avctx, AV_LOG_INFO, "%s\n", aom_codec_version_str()); > > > - av_log(avctx, AV_LOG_VERBOSE, "%s\n", aom_codec_build_config()); > > > - > > > -- if ((res = aom_codec_enc_config_default(iface, &enccfg, 0)) != > > > AOM_CODEC_OK) { > > > -+ if ((res = aom_codec_enc_config_default(iface, &enccfg, > > > ctx->usage)) != AOM_CODEC_OK) { > > > - av_log(avctx, AV_LOG_ERROR, "Failed to get config: %s\n", > > > - aom_codec_err_to_string(res)); > > > - return AVERROR(EINVAL); > > > -@@ -611,7 +684,7 @@ static av_cold int aom_init(AVCodecContext *avctx, > > > - return AVERROR(EINVAL); > > > - } > > > - > > > -- dump_enc_cfg(avctx, &enccfg); > > > -+ dump_enc_cfg(avctx, &enccfg, AV_LOG_DEBUG); > > > - > > > - enccfg.g_w = avctx->width; > > > - enccfg.g_h = avctx->height; > > > -@@ -620,8 +693,6 @@ static av_cold int aom_init(AVCodecContext *avctx, > > > - enccfg.g_threads = > > > - FFMIN(avctx->thread_count ? avctx->thread_count : > > > av_cpu_count(), 64); > > > - > > > -- enccfg.g_usage = ctx->usage; > > > -- > > > - if (ctx->lag_in_frames >= 0) > > > - enccfg.g_lag_in_frames = ctx->lag_in_frames; > > > - > > > -@@ -654,8 +725,11 @@ static av_cold int aom_init(AVCodecContext *avctx, > > > - > > > - if (avctx->qmin >= 0) > > > - enccfg.rc_min_quantizer = avctx->qmin; > > > -- if (avctx->qmax >= 0) > > > -+ if (avctx->qmax >= 0) { > > > - enccfg.rc_max_quantizer = avctx->qmax; > > > -+ } else if (!ctx->crf) { > > > -+ enccfg.rc_max_quantizer = 0; > > > -+ } > > > - > > > - if (enccfg.rc_end_usage == AOM_CQ || enccfg.rc_end_usage == AOM_Q) { > > > - if (ctx->crf < enccfg.rc_min_quantizer || ctx->crf > > > > enccfg.rc_max_quantizer) { > > > -@@ -742,13 +816,14 @@ static av_cold int aom_init(AVCodecContext *avctx, > > > - if (res < 0) > > > - return res; > > > - > > > -- dump_enc_cfg(avctx, &enccfg); > > > - /* Construct Encoder Context */ > > > - res = aom_codec_enc_init(&ctx->encoder, iface, &enccfg, flags); > > > - if (res != AOM_CODEC_OK) { > > > -+ dump_enc_cfg(avctx, &enccfg, AV_LOG_WARNING); > > > - log_encoder_error(avctx, "Failed to initialize encoder"); > > > - return AVERROR(EINVAL); > > > - } > > > -+ dump_enc_cfg(avctx, &enccfg, AV_LOG_DEBUG); > > > - > > > - // codec control failures are currently treated only as warnings > > > - av_log(avctx, AV_LOG_DEBUG, "aom_codec_control\n"); > > > -@@ -943,7 +1018,6 @@ static inline void cx_pktcpy(AOMContext *ctx, > > > - dst->sz = src->data.frame.sz; > > > - dst->buf = src->data.frame.buf; > > > - #ifdef AOM_FRAME_IS_INTRAONLY > > > -- dst->have_sse = 0; > > > - dst->frame_number = ++ctx->frame_number; > > > - dst->have_sse = ctx->have_sse; > > > - if (ctx->have_sse) { > > > -@@ -967,7 +1041,7 @@ static int storeframe(AVCodecContext *avctx, struct > > > Fr > > > - { > > > - AOMContext *ctx = avctx->priv_data; > > > - int av_unused pict_type; > > > -- int ret = ff_alloc_packet2(avctx, pkt, cx_frame->sz, 0); > > > -+ int ret = ff_get_encode_buffer(avctx, pkt, cx_frame->sz, 0); > > > - if (ret < 0) { > > > - av_log(avctx, AV_LOG_ERROR, > > > - "Error getting output packet of size > > > %"SIZE_SPECIFIER".\n", cx_frame->sz); > > > -@@ -1282,6 +1356,7 @@ static const AVOption options[] = { > > > - { "usage", "Quality and compression efficiency vs speed > > > trade-off", OFFSET(usage), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, > > > "usage"}, > > > - { "good", "Good quality", 0, AV_OPT_TYPE_CONST, > > > {.i64 = 0 /* AOM_USAGE_GOOD_QUALITY */}, 0, 0, VE, "usage"}, > > > - { "realtime", "Realtime encoding", 0, AV_OPT_TYPE_CONST, > > > {.i64 = 1 /* AOM_USAGE_REALTIME */}, 0, 0, VE, "usage"}, > > > -+ { "allintra", "All Intra encoding", 0, AV_OPT_TYPE_CONST, > > > {.i64 = 2 /* AOM_USAGE_ALL_INTRA */}, 0, 0, VE, "usage"}, > > > - { "tune", "The metric that the encoder tunes for. > > > Automatically chosen by the encoder by default", OFFSET(tune), > > > AV_OPT_TYPE_INT, {.i64 = -1}, -1, AOM_TUNE_SSIM, VE, "tune"}, > > > - { "psnr", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = > > > AOM_TUNE_PSNR}, 0, 0, VE, "tune"}, > > > - { "ssim", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = > > > AOM_TUNE_SSIM}, 0, 0, VE, "tune"}, > > > -@@ -1341,11 +1416,12 @@ AVCodec ff_libaom_av1_encoder = { > > > - .long_name = NULL_IF_CONFIG_SMALL("libaom AV1"), > > > - .type = AVMEDIA_TYPE_VIDEO, > > > - .id = AV_CODEC_ID_AV1, > > > -+ .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | > > > -+ AV_CODEC_CAP_OTHER_THREADS, > > > - .priv_data_size = sizeof(AOMContext), > > > - .init = av1_init, > > > - .encode2 = aom_encode, > > > - .close = aom_free, > > > -- .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_OTHER_THREADS, > > > - .caps_internal = FF_CODEC_CAP_AUTO_THREADS, > > > - .profiles = NULL_IF_CONFIG_SMALL(ff_av1_profiles), > > > - .priv_class = &class_aom, > > > Index: graphics/ffmpeg/patches/patch-libavcodec_libsvtav1_c > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavcodec_libsvtav1_c > > > diff -N graphics/ffmpeg/patches/patch-libavcodec_libsvtav1_c > > > --- graphics/ffmpeg/patches/patch-libavcodec_libsvtav1_c 3 Aug 2024 > > > 05:41:40 -0000 1.4 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,368 +0,0 @@ > > > -- avcodec/libsvtav1: Fix duplicate definition of caps_internal > > > -- avcodec/libsvtav1: make coded GOP type configurable > > > -- avcodec/libsvtav1: Fix value range for rc mode > > > -- avcodec/libsvtav1: properly enforce CQP mode when set in wrapper > > > -- avcodec/libsvtav1: add a svtav1-params option to pass a list of > > > key=value parameters > > > -- avcodec/libsvtav1: update some options and defaults > > > -- avcodec/libsvtav1: deprecate some options > > > -- avcodec/libsvtav1: fine tune qp mode settings > > > -- avcodec/libsvtav1: pass color description info > > > -- avcodec/libsvtav1: give svtav1-params priority over avctx values > > > -- avcodec/libsvtav1: pass pict_type to library > > > -- avcodec/libsvtav1: add support for setting chroma sample location > > > -- avcodec/libsvtav1: update avctx bit rate according to RC mode > > > -- avcodec/libsvtav1: signal CPB properties through side data > > > -- avcodec/libsvtav1: properly initialize the flush EbBufferHeaderType > > > struct > > > -- avcodec/libsvtav1: replace vbv_bufsize with maximum_buffer_size_ms > > > -- avcodec/libsvtav1: only set max_buf_sz if both bitrate and rc_buf_sz > > > is set > > > -- avcodec/libsvtav1: don't force a default value for deprecated options > > > - > > > -Index: libavcodec/libsvtav1.c > > > ---- libavcodec/libsvtav1.c.orig > > > -+++ libavcodec/libsvtav1.c > > > -@@ -60,17 +60,20 @@ typedef struct SvtContext { > > > - EOS_STATUS eos_flag; > > > - > > > - // User options. > > > -+ AVDictionary *svtav1_opts; > > > -+#if FF_API_SVTAV1_OPTS > > > - int hierarchical_level; > > > - int la_depth; > > > -- int enc_mode; > > > -- int rc_mode; > > > - int scd; > > > -- int qp; > > > - > > > - int tier; > > > - > > > - int tile_columns; > > > - int tile_rows; > > > -+#endif > > > -+ int enc_mode; > > > -+ int crf; > > > -+ int qp; > > > - } SvtContext; > > > - > > > - static const struct { > > > -@@ -147,11 +150,132 @@ static int > > > config_enc_params(EbSvtAv1EncConfiguration > > > - { > > > - SvtContext *svt_enc = avctx->priv_data; > > > - const AVPixFmtDescriptor *desc; > > > -+ AVDictionaryEntry *en = NULL; > > > - > > > -+ // Update param from options > > > -+#if FF_API_SVTAV1_OPTS > > > -+ if (svt_enc->hierarchical_level >= 0) > > > -+ param->hierarchical_levels = svt_enc->hierarchical_level; > > > -+ if (svt_enc->tier >= 0) > > > -+ param->tier = svt_enc->tier; > > > -+ if (svt_enc->scd >= 0) > > > -+ param->scene_change_detection = svt_enc->scd; > > > -+ if (svt_enc->tile_columns >= 0) > > > -+ param->tile_columns = svt_enc->tile_columns; > > > -+ if (svt_enc->tile_rows >= 0) > > > -+ param->tile_rows = svt_enc->tile_rows; > > > -+ > > > -+ if (svt_enc->la_depth >= 0) > > > -+ param->look_ahead_distance = svt_enc->la_depth; > > > -+#endif > > > -+ > > > -+ if (svt_enc->enc_mode >= 0) > > > -+ param->enc_mode = svt_enc->enc_mode; > > > -+ > > > -+ if (avctx->bit_rate) { > > > -+ param->target_bit_rate = avctx->bit_rate; > > > -+ if (avctx->rc_max_rate != avctx->bit_rate) > > > -+ param->rate_control_mode = 1; > > > -+ else > > > -+ param->rate_control_mode = 2; > > > -+ > > > -+ param->max_qp_allowed = avctx->qmax; > > > -+ param->min_qp_allowed = avctx->qmin; > > > -+ } > > > -+ param->max_bit_rate = avctx->rc_max_rate; > > > -+ if (avctx->bit_rate && avctx->rc_buffer_size) > > > -+ param->maximum_buffer_size_ms = avctx->rc_buffer_size * 1000LL > > > / avctx->bit_rate; > > > -+ > > > -+ if (svt_enc->crf > 0) { > > > -+ param->qp = svt_enc->crf; > > > -+ param->rate_control_mode = 0; > > > -+ } else if (svt_enc->qp > 0) { > > > -+ param->qp = svt_enc->qp; > > > -+ param->rate_control_mode = 0; > > > -+ param->enable_adaptive_quantization = 0; > > > -+ } > > > -+ > > > -+ desc = av_pix_fmt_desc_get(avctx->pix_fmt); > > > -+ param->color_primaries = avctx->color_primaries; > > > -+ param->matrix_coefficients = (desc->flags & > > > AV_PIX_FMT_FLAG_RGB) ? > > > -+ AVCOL_SPC_RGB : avctx->colorspace; > > > -+ param->transfer_characteristics = avctx->color_trc; > > > -+ > > > -+ if (avctx->color_range != AVCOL_RANGE_UNSPECIFIED) > > > -+ param->color_range = avctx->color_range == AVCOL_RANGE_JPEG; > > > -+ else > > > -+ param->color_range = !!(desc->flags & AV_PIX_FMT_FLAG_RGB); > > > -+ > > > -+#if SVT_AV1_CHECK_VERSION(1, 0, 0) > > > -+ if (avctx->chroma_sample_location != AVCHROMA_LOC_UNSPECIFIED) { > > > -+ const char *name = > > > -+ av_chroma_location_name(avctx->chroma_sample_location); > > > -+ > > > -+ switch (avctx->chroma_sample_location) { > > > -+ case AVCHROMA_LOC_LEFT: > > > -+ param->chroma_sample_position = EB_CSP_VERTICAL; > > > -+ break; > > > -+ case AVCHROMA_LOC_TOPLEFT: > > > -+ param->chroma_sample_position = EB_CSP_COLOCATED; > > > -+ break; > > > -+ default: > > > -+ if (!name) > > > -+ break; > > > -+ > > > -+ av_log(avctx, AV_LOG_WARNING, > > > -+ "Specified chroma sample location %s is unsupported " > > > -+ "on the AV1 bit stream level. Usage of a container > > > that " > > > -+ "allows passing this information - such as Matroska > > > - " > > > -+ "is recommended.\n", > > > -+ name); > > > -+ break; > > > -+ } > > > -+ } > > > -+#endif > > > -+ > > > -+ if (avctx->profile != FF_PROFILE_UNKNOWN) > > > -+ param->profile = avctx->profile; > > > -+ > > > -+ if (avctx->level != FF_LEVEL_UNKNOWN) > > > -+ param->level = avctx->level; > > > -+ > > > -+ if (avctx->gop_size > 0) > > > -+ param->intra_period_length = avctx->gop_size - 1; > > > -+ > > > -+ if (avctx->framerate.num > 0 && avctx->framerate.den > 0) { > > > -+ param->frame_rate_numerator = avctx->framerate.num; > > > -+ param->frame_rate_denominator = avctx->framerate.den; > > > -+ } else { > > > -+ param->frame_rate_numerator = avctx->time_base.den; > > > -+ param->frame_rate_denominator = avctx->time_base.num * > > > avctx->ticks_per_frame; > > > -+ } > > > -+ > > > -+ /* 2 = IDR, closed GOP, 1 = CRA, open GOP */ > > > -+ param->intra_refresh_type = avctx->flags & AV_CODEC_FLAG_CLOSED_GOP > > > ? 2 : 1; > > > -+ > > > -+#if SVT_AV1_CHECK_VERSION(0, 9, 1) > > > -+ while ((en = av_dict_get(svt_enc->svtav1_opts, "", en, > > > AV_DICT_IGNORE_SUFFIX))) { > > > -+ EbErrorType ret = svt_av1_enc_parse_parameter(param, en->key, > > > en->value); > > > -+ if (ret != EB_ErrorNone) { > > > -+ int level = (avctx->err_recognition & AV_EF_EXPLODE) ? > > > AV_LOG_ERROR : AV_LOG_WARNING; > > > -+ av_log(avctx, level, "Error parsing option %s: %s.\n", > > > en->key, en->value); > > > -+ if (avctx->err_recognition & AV_EF_EXPLODE) > > > -+ return AVERROR(EINVAL); > > > -+ } > > > -+ } > > > -+#else > > > -+ if ((en = av_dict_get(svt_enc->svtav1_opts, "", NULL, > > > AV_DICT_IGNORE_SUFFIX))) { > > > -+ int level = (avctx->err_recognition & AV_EF_EXPLODE) ? > > > AV_LOG_ERROR : AV_LOG_WARNING; > > > -+ av_log(avctx, level, "svt-params needs libavcodec to be > > > compiled with SVT-AV1 " > > > -+ "headers >= 0.9.1.\n"); > > > -+ if (avctx->err_recognition & AV_EF_EXPLODE) > > > -+ return AVERROR(ENOSYS); > > > -+ } > > > -+#endif > > > -+ > > > - param->source_width = avctx->width; > > > - param->source_height = avctx->height; > > > - > > > -- desc = av_pix_fmt_desc_get(avctx->pix_fmt); > > > - param->encoder_bit_depth = desc->comp[0].depth; > > > - > > > - if (desc->log2_chroma_w == 1 && desc->log2_chroma_h == 1) > > > -@@ -165,12 +289,6 @@ static int > > > config_enc_params(EbSvtAv1EncConfiguration > > > - return AVERROR(EINVAL); > > > - } > > > - > > > -- if (avctx->profile != FF_PROFILE_UNKNOWN) > > > -- param->profile = avctx->profile; > > > -- > > > -- if (avctx->level != FF_LEVEL_UNKNOWN) > > > -- param->level = avctx->level; > > > -- > > > - if ((param->encoder_color_format == EB_YUV422 || > > > param->encoder_bit_depth > 10) > > > - && param->profile != FF_PROFILE_AV1_PROFESSIONAL ) { > > > - av_log(avctx, AV_LOG_WARNING, "Forcing Professional profile\n"); > > > -@@ -180,40 +298,21 @@ static int > > > config_enc_params(EbSvtAv1EncConfiguration > > > - param->profile = FF_PROFILE_AV1_HIGH; > > > - } > > > - > > > -- // Update param from options > > > -- param->hierarchical_levels = svt_enc->hierarchical_level; > > > -- param->enc_mode = svt_enc->enc_mode; > > > -- param->tier = svt_enc->tier; > > > -- param->rate_control_mode = svt_enc->rc_mode; > > > -- param->scene_change_detection = svt_enc->scd; > > > -- param->qp = svt_enc->qp; > > > -+ avctx->bit_rate = param->rate_control_mode > 0 ? > > > -+ param->target_bit_rate : 0; > > > -+ avctx->rc_max_rate = param->max_bit_rate; > > > -+ avctx->rc_buffer_size = param->maximum_buffer_size_ms * > > > avctx->bit_rate / 1000LL; > > > - > > > -- param->target_bit_rate = avctx->bit_rate; > > > -+ if (avctx->bit_rate || avctx->rc_max_rate || avctx->rc_buffer_size) > > > { > > > -+ AVCPBProperties *cpb_props = ff_add_cpb_side_data(avctx); > > > -+ if (!cpb_props) > > > -+ return AVERROR(ENOMEM); > > > - > > > -- if (avctx->gop_size > 0) > > > -- param->intra_period_length = avctx->gop_size - 1; > > > -- > > > -- if (avctx->framerate.num > 0 && avctx->framerate.den > 0) { > > > -- param->frame_rate_numerator = avctx->framerate.num; > > > -- param->frame_rate_denominator = avctx->framerate.den; > > > -- } else { > > > -- param->frame_rate_numerator = avctx->time_base.den; > > > -- param->frame_rate_denominator = avctx->time_base.num * > > > avctx->ticks_per_frame; > > > -+ cpb_props->buffer_size = avctx->rc_buffer_size; > > > -+ cpb_props->max_bitrate = avctx->rc_max_rate; > > > -+ cpb_props->avg_bitrate = avctx->bit_rate; > > > - } > > > - > > > -- if (param->rate_control_mode) { > > > -- param->max_qp_allowed = avctx->qmax; > > > -- param->min_qp_allowed = avctx->qmin; > > > -- } > > > -- > > > -- param->intra_refresh_type = 2; /* Real keyframes only */ > > > -- > > > -- if (svt_enc->la_depth >= 0) > > > -- param->look_ahead_distance = svt_enc->la_depth; > > > -- > > > -- param->tile_columns = svt_enc->tile_columns; > > > -- param->tile_rows = svt_enc->tile_rows; > > > -- > > > - return 0; > > > - } > > > - > > > -@@ -326,11 +425,8 @@ static int eb_send_frame(AVCodecContext *avctx, > > > const > > > - if (svt_enc->eos_flag == EOS_SENT) > > > - return 0; > > > - > > > -- headerPtrLast.n_alloc_len = 0; > > > -- headerPtrLast.n_filled_len = 0; > > > -- headerPtrLast.n_tick_count = 0; > > > -- headerPtrLast.p_app_private = NULL; > > > -- headerPtrLast.p_buffer = NULL; > > > -+ memset(&headerPtrLast, 0, sizeof(headerPtrLast)); > > > -+ headerPtrLast.pic_type = EB_AV1_INVALID_PICTURE; > > > - headerPtrLast.flags = EB_BUFFERFLAG_EOS; > > > - > > > - svt_av1_enc_send_picture(svt_enc->svt_handle, &headerPtrLast); > > > -@@ -346,6 +442,16 @@ static int eb_send_frame(AVCodecContext *avctx, > > > const > > > - headerPtr->p_app_private = NULL; > > > - headerPtr->pts = frame->pts; > > > - > > > -+ switch (frame->pict_type) { > > > -+ case AV_PICTURE_TYPE_I: > > > -+ headerPtr->pic_type = EB_AV1_KEY_PICTURE; > > > -+ break; > > > -+ default: > > > -+ // Actually means auto, or default. > > > -+ headerPtr->pic_type = EB_AV1_INVALID_PICTURE; > > > -+ break; > > > -+ } > > > -+ > > > - svt_av1_enc_send_picture(svt_enc->svt_handle, headerPtr); > > > - > > > - return 0; > > > -@@ -468,21 +574,22 @@ static av_cold int eb_enc_close(AVCodecContext > > > *avctx) > > > - #define OFFSET(x) offsetof(SvtContext, x) > > > - #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM > > > - static const AVOption options[] = { > > > -- { "hielevel", "Hierarchical prediction levels setting", > > > OFFSET(hierarchical_level), > > > -- AV_OPT_TYPE_INT, { .i64 = 4 }, 3, 4, VE , "hielevel"}, > > > -+#if FF_API_SVTAV1_OPTS > > > -+ { "hielevel", "Hierarchical prediction levels setting (Deprecated, > > > use svtav1-params)", OFFSET(hierarchical_level), > > > -+ AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 4, VE | > > > AV_OPT_FLAG_DEPRECATED , "hielevel"}, > > > - { "3level", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 3 }, INT_MIN, > > > INT_MAX, VE, "hielevel" }, > > > - { "4level", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 4 }, INT_MIN, > > > INT_MAX, VE, "hielevel" }, > > > - > > > -- { "la_depth", "Look ahead distance [0, 120]", OFFSET(la_depth), > > > -- AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 120, VE }, > > > -+ { "la_depth", "Look ahead distance [0, 120] (Deprecated, use > > > svtav1-params)", OFFSET(la_depth), > > > -+ AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 120, VE | > > > AV_OPT_FLAG_DEPRECATED }, > > > - > > > -- { "preset", "Encoding preset [0, 8]", > > > -- OFFSET(enc_mode), AV_OPT_TYPE_INT, { .i64 = MAX_ENC_PRESET }, 0, > > > MAX_ENC_PRESET, VE }, > > > -- > > > -- { "tier", "Set operating point tier", OFFSET(tier), > > > -- AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE, "tier" }, > > > -+ { "tier", "Set operating point tier (Deprecated, use > > > svtav1-params)", OFFSET(tier), > > > -+ AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, VE | > > > AV_OPT_FLAG_DEPRECATED, "tier" }, > > > - { "main", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, 0, 0, VE, > > > "tier" }, > > > - { "high", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, 0, 0, VE, > > > "tier" }, > > > -+#endif > > > -+ { "preset", "Encoding preset", > > > -+ OFFSET(enc_mode), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, > > > MAX_ENC_PRESET, VE }, > > > - > > > - FF_AV1_PROFILE_OPTS > > > - > > > -@@ -514,21 +621,20 @@ static const AVOption options[] = { > > > - { LEVEL("7.3", 73) }, > > > - #undef LEVEL > > > - > > > -- { "rc", "Bit rate control mode", OFFSET(rc_mode), > > > -- AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 3, VE , "rc"}, > > > -- { "cqp", "Constant quantizer", 0, AV_OPT_TYPE_CONST, { .i64 = 0 > > > }, INT_MIN, INT_MAX, VE, "rc" }, > > > -- { "vbr", "Variable Bit Rate, use a target bitrate for the > > > entire stream", 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, INT_MIN, INT_MAX, > > > VE, "rc" }, > > > -- { "cvbr", "Constrained Variable Bit Rate, use a target bitrate > > > for each GOP", 0, AV_OPT_TYPE_CONST,{ .i64 = 2 }, INT_MIN, INT_MAX, VE, > > > "rc" }, > > > -+ { "crf", "Constant Rate Factor value", OFFSET(crf), > > > -+ AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 63, VE }, > > > -+ { "qp", "Initial Quantizer level value", OFFSET(qp), > > > -+ AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 63, VE }, > > > -+#if FF_API_SVTAV1_OPTS > > > -+ { "sc_detection", "Scene change detection (Deprecated, use > > > svtav1-params)", OFFSET(scd), > > > -+ AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, VE | > > > AV_OPT_FLAG_DEPRECATED }, > > > - > > > -- { "qp", "Quantizer to use with cqp rate control mode", OFFSET(qp), > > > -- AV_OPT_TYPE_INT, { .i64 = 50 }, 0, 63, VE }, > > > -+ { "tile_columns", "Log2 of number of tile columns to use > > > (Deprecated, use svtav1-params)", OFFSET(tile_columns), AV_OPT_TYPE_INT, > > > { .i64 = -1 }, -1, 4, VE | AV_OPT_FLAG_DEPRECATED }, > > > -+ { "tile_rows", "Log2 of number of tile rows to use (Deprecated, use > > > svtav1-params)", OFFSET(tile_rows), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, > > > 6, VE | AV_OPT_FLAG_DEPRECATED }, > > > -+#endif > > > - > > > -- { "sc_detection", "Scene change detection", OFFSET(scd), > > > -- AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, > > > -+ { "svtav1-params", "Set the SVT-AV1 configuration using a > > > :-separated list of key=value parameters", OFFSET(svtav1_opts), > > > AV_OPT_TYPE_DICT, { 0 }, 0, 0, VE }, > > > - > > > -- { "tile_columns", "Log2 of number of tile columns to use", > > > OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 4, VE}, > > > -- { "tile_rows", "Log2 of number of tile rows to use", > > > OFFSET(tile_rows), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 6, VE}, > > > -- > > > - {NULL}, > > > - }; > > > - > > > -@@ -540,9 +646,10 @@ static const AVClass class = { > > > - }; > > > - > > > - static const AVCodecDefault eb_enc_defaults[] = { > > > -- { "b", "7M" }, > > > -+ { "b", "0" }, > > > -+ { "flags", "+cgop" }, > > > - { "g", "-1" }, > > > -- { "qmin", "0" }, > > > -+ { "qmin", "1" }, > > > - { "qmax", "63" }, > > > - { NULL }, > > > - }; > > > -@@ -557,12 +664,11 @@ AVCodec ff_libsvtav1_encoder = { > > > - .receive_packet = eb_receive_packet, > > > - .close = eb_enc_close, > > > - .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_OTHER_THREADS, > > > -- .caps_internal = FF_CODEC_CAP_AUTO_THREADS, > > > -+ .caps_internal = FF_CODEC_CAP_AUTO_THREADS | > > > FF_CODEC_CAP_INIT_CLEANUP, > > > - .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, > > > - > > > AV_PIX_FMT_YUV420P10, > > > - AV_PIX_FMT_NONE }, > > > - .priv_class = &class, > > > - .defaults = eb_enc_defaults, > > > -- .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, > > > - .wrapper_name = "libsvtav1", > > > - }; > > > Index: graphics/ffmpeg/patches/patch-libavcodec_version_h > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavcodec_version_h > > > diff -N graphics/ffmpeg/patches/patch-libavcodec_version_h > > > --- graphics/ffmpeg/patches/patch-libavcodec_version_h 13 May 2022 > > > 12:56:19 -0000 1.1 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,14 +0,0 @@ > > > -avcodec/libsvtav1: deprecate some options > > > - > > > -Index: libavcodec/version.h > > > ---- libavcodec/version.h.orig > > > -+++ libavcodec/version.h > > > -@@ -168,5 +168,8 @@ > > > - #ifndef FF_API_INIT_PACKET > > > - #define FF_API_INIT_PACKET (LIBAVCODEC_VERSION_MAJOR < 60) > > > - #endif > > > -+#ifndef FF_API_SVTAV1_OPTS > > > -+#define FF_API_SVTAV1_OPTS (LIBAVCODEC_VERSION_MAJOR < 60) > > > -+#endif > > > - > > > - #endif /* AVCODEC_VERSION_H */ > > > Index: graphics/ffmpeg/patches/patch-libavcodec_x86_fft_asm > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavcodec_x86_fft_asm > > > diff -N graphics/ffmpeg/patches/patch-libavcodec_x86_fft_asm > > > --- graphics/ffmpeg/patches/patch-libavcodec_x86_fft_asm 21 Jun 2023 > > > 12:58:18 -0000 1.2 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,128 +0,0 @@ > > > -- place a table in rodata > > > -- use _CET_ENDBR in functions header > > > - > > > -Index: libavcodec/x86/fft.asm > > > ---- libavcodec/x86/fft.asm.orig > > > -+++ libavcodec/x86/fft.asm > > > -@@ -325,6 +325,7 @@ INIT_YMM avx > > > - %if HAVE_AVX_EXTERNAL > > > - align 16 > > > - fft8_avx: > > > -+ _CET_ENDBR > > > - mova m0, Z(0) > > > - mova m1, Z(1) > > > - T8_AVX m0, m1, m2, m3, m4 > > > -@@ -335,6 +336,7 @@ fft8_avx: > > > - > > > - align 16 > > > - fft16_avx: > > > -+ _CET_ENDBR > > > - mova m2, Z(2) > > > - mova m3, Z(3) > > > - T4_SSE m2, m3, m7 > > > -@@ -372,6 +374,7 @@ fft16_avx: > > > - > > > - align 16 > > > - fft32_avx: > > > -+ _CET_ENDBR > > > - call fft16_avx > > > - > > > - mova m0, Z(4) > > > -@@ -396,6 +399,7 @@ fft32_avx: > > > - ret > > > - > > > - fft32_interleave_avx: > > > -+ _CET_ENDBR > > > - call fft32_avx > > > - mov r2d, 32 > > > - .deint_loop: > > > -@@ -419,6 +423,7 @@ INIT_XMM sse > > > - align 16 > > > - fft4_avx: > > > - fft4_sse: > > > -+ _CET_ENDBR > > > - mova m0, Z(0) > > > - mova m1, Z(1) > > > - T4_SSE m0, m1, m2 > > > -@@ -428,6 +433,7 @@ fft4_sse: > > > - > > > - align 16 > > > - fft8_sse: > > > -+ _CET_ENDBR > > > - mova m0, Z(0) > > > - mova m1, Z(1) > > > - T4_SSE m0, m1, m2 > > > -@@ -442,6 +448,7 @@ fft8_sse: > > > - > > > - align 16 > > > - fft16_sse: > > > -+ _CET_ENDBR > > > - mova m0, Z(0) > > > - mova m1, Z(1) > > > - T4_SSE m0, m1, m2 > > > -@@ -465,6 +472,7 @@ fft16_sse: > > > - %macro FFT48_3DNOW 0 > > > - align 16 > > > - fft4 %+ SUFFIX: > > > -+ _CET_ENDBR > > > - T2_3DNOW m0, m1, Z(0), Z(1) > > > - mova m2, Z(2) > > > - mova m3, Z(3) > > > -@@ -479,6 +487,7 @@ fft4 %+ SUFFIX: > > > - > > > - align 16 > > > - fft8 %+ SUFFIX: > > > -+ _CET_ENDBR > > > - T2_3DNOW m0, m1, Z(0), Z(1) > > > - mova m2, Z(2) > > > - mova m3, Z(3) > > > -@@ -532,6 +541,7 @@ FFT48_3DNOW > > > - %macro DECL_PASS 2+ ; name, payload > > > - align 16 > > > - %1: > > > -+ _CET_ENDBR > > > - DEFINE_ARGS zc, w, n, o1, o3 > > > - lea o3q, [nq*3] > > > - lea o1q, [nq*8] > > > -@@ -548,10 +558,6 @@ DEFINE_ARGS zc, w, n, o1, o3 > > > - %macro FFT_DISPATCH 2; clobbers 5 GPRs, 8 XMMs > > > - lea r2, [dispatch_tab%1] > > > - mov r2, [r2 + (%2q-2)*gprsize] > > > --%ifdef PIC > > > -- lea r3, [$$] > > > -- add r2, r3 > > > --%endif > > > - call r2 > > > - %endmacro ; FFT_DISPATCH > > > - > > > -@@ -731,11 +737,7 @@ DECL_PASS pass_interleave_3dnow, PASS_BIG 0 > > > - %define pass_interleave_3dnowext pass_interleave_3dnow > > > - %endif > > > - > > > --%ifdef PIC > > > --%define SECTION_REL - $$ > > > --%else > > > - %define SECTION_REL > > > --%endif > > > - > > > - %macro DECL_FFT 1-2 ; nbits, suffix > > > - %ifidn %0, 1 > > > -@@ -759,6 +761,7 @@ DECL_PASS pass_interleave_3dnow, PASS_BIG 0 > > > - > > > - align 16 > > > - fft %+ n %+ fullsuffix: > > > -+ _CET_ENDBR > > > - call fft %+ n2 %+ SUFFIX > > > - add r0, n*4 - (n&(-2<<%1)) > > > - call fft %+ n4 %+ SUFFIX > > > -@@ -773,8 +776,10 @@ fft %+ n %+ fullsuffix: > > > - %endrep > > > - %undef n > > > - > > > -+[SECTION .data.rel.ro write] > > > - align 8 > > > - dispatch_tab %+ fullsuffix: pointer list_of_fft > > > -+__?SECT?__ > > > - %endmacro ; DECL_FFT > > > - > > > - %if HAVE_AVX_EXTERNAL > > > Index: graphics/ffmpeg/patches/patch-libavformat_rtpproto_c > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavformat_rtpproto_c > > > diff -N graphics/ffmpeg/patches/patch-libavformat_rtpproto_c > > > --- graphics/ffmpeg/patches/patch-libavformat_rtpproto_c 11 Mar 2022 > > > 19:22:17 -0000 1.2 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,14 +0,0 @@ > > > -avformat/rtpproto: set ttl upper bound to 255 > > > - > > > -Index: libavformat/rtpproto.c > > > ---- libavformat/rtpproto.c.orig > > > -+++ libavformat/rtpproto.c > > > -@@ -67,7 +67,7 @@ typedef struct RTPContext { > > > - #define D AV_OPT_FLAG_DECODING_PARAM > > > - #define E AV_OPT_FLAG_ENCODING_PARAM > > > - static const AVOption options[] = { > > > -- { "ttl", "Time to live (in milliseconds, multicast > > > only)", OFFSET(ttl), AV_OPT_TYPE_INT, { > > > .i64 = -1 }, -1, INT_MAX, .flags = D|E }, > > > -+ { "ttl", "Time to live (multicast only)", > > > OFFSET(ttl), AV_OPT_TYPE_INT, { > > > .i64 = -1 }, -1, 255, .flags = D|E }, > > > - { "buffer_size", "Send/Receive buffer size (in bytes)", > > > OFFSET(buffer_size), AV_OPT_TYPE_INT, { > > > .i64 = -1 }, -1, INT_MAX, .flags = D|E }, > > > - { "rtcp_port", "Custom rtcp port", > > > OFFSET(rtcp_port), AV_OPT_TYPE_INT, { > > > .i64 = -1 }, -1, INT_MAX, .flags = D|E }, > > > - { "local_rtpport", "Local rtp port", > > > OFFSET(local_rtpport), AV_OPT_TYPE_INT, { > > > .i64 = -1 }, -1, INT_MAX, .flags = D|E }, > > > Index: graphics/ffmpeg/patches/patch-libavformat_udp_c > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavformat_udp_c > > > diff -N graphics/ffmpeg/patches/patch-libavformat_udp_c > > > --- graphics/ffmpeg/patches/patch-libavformat_udp_c 11 Mar 2022 > > > 19:22:17 -0000 1.2 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,82 +0,0 @@ > > > -- avformat/udp: set ttl upper bound to 255 > > > -- avformat/udp: properly check for valid ttl in url > > > -- avformat/udp: use one setsockopt for ipv4/ipv6 > > > -- avformat/udp: Fix IP_MULTICAST_TTL for BSD compatibility > > > -- avformat/udp: remove IPPROTO_IPV6 macro > > > - > > > -Index: libavformat/udp.c > > > ---- libavformat/udp.c.orig > > > -+++ libavformat/udp.c > > > -@@ -134,7 +134,7 @@ static const AVOption options[] = { > > > - { "reuse", "explicitly allow reusing UDP sockets", > > > OFFSET(reuse_socket), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, > > > D|E }, > > > - { "reuse_socket", "explicitly allow reusing UDP sockets", > > > OFFSET(reuse_socket), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, > > > .flags = D|E }, > > > - { "broadcast", "explicitly allow or disallow broadcast > > > destination", OFFSET(is_broadcast), AV_OPT_TYPE_BOOL, { .i64 = 0 > > > }, 0, 1, E }, > > > -- { "ttl", "Time to live (multicast only)", > > > OFFSET(ttl), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, > > > INT_MAX, E }, > > > -+ { "ttl", "Time to live (multicast only)", > > > OFFSET(ttl), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, 255, > > > E }, > > > - { "connect", "set if connect() should be called on socket", > > > OFFSET(is_connected), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, > > > .flags = D|E }, > > > - { "fifo_size", "set the UDP receiving circular buffer size, > > > expressed as a number of packets with size of 188 bytes", > > > OFFSET(circular_buffer_size), AV_OPT_TYPE_INT, {.i64 = 7*4096}, 0, > > > INT_MAX, D }, > > > - { "overrun_nonfatal", "survive in case of UDP receiving circular > > > buffer overrun", OFFSET(overrun_nonfatal), AV_OPT_TYPE_BOOL, {.i64 = 0}, > > > 0, 1, D }, > > > -@@ -161,22 +161,40 @@ static const AVClass udplite_context_class = { > > > - static int udp_set_multicast_ttl(int sockfd, int mcastTTL, > > > - struct sockaddr *addr) > > > - { > > > -+ int protocol, cmd; > > > -+ > > > -+ /* There is some confusion in the world whether IP_MULTICAST_TTL > > > -+ * takes a byte or an int as an argument. > > > -+ * BSD seems to indicate byte so we are going with that and use > > > -+ * int and fall back to byte to be safe */ > > > -+ switch (addr->sa_family) { > > > - #ifdef IP_MULTICAST_TTL > > > -- if (addr->sa_family == AF_INET) { > > > -- if (setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_TTL, &mcastTTL, > > > sizeof(mcastTTL)) < 0) { > > > -- ff_log_net_error(NULL, AV_LOG_ERROR, > > > "setsockopt(IP_MULTICAST_TTL)"); > > > -- return ff_neterrno(); > > > -- } > > > -- } > > > -+ case AF_INET: > > > -+ protocol = IPPROTO_IP; > > > -+ cmd = IP_MULTICAST_TTL; > > > -+ break; > > > - #endif > > > --#if defined(IPPROTO_IPV6) && defined(IPV6_MULTICAST_HOPS) > > > -- if (addr->sa_family == AF_INET6) { > > > -- if (setsockopt(sockfd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, > > > &mcastTTL, sizeof(mcastTTL)) < 0) { > > > -- ff_log_net_error(NULL, AV_LOG_ERROR, > > > "setsockopt(IPV6_MULTICAST_HOPS)"); > > > -+#ifdef IPV6_MULTICAST_HOPS > > > -+ case AF_INET6: > > > -+ protocol = IPPROTO_IPV6; > > > -+ cmd = IPV6_MULTICAST_HOPS; > > > -+ break; > > > -+#endif > > > -+ default: > > > -+ return 0; > > > -+ } > > > -+ > > > -+ if (setsockopt(sockfd, protocol, cmd, &mcastTTL, sizeof(mcastTTL)) > > > < 0) { > > > -+ /* BSD compatibility */ > > > -+ unsigned char ttl = (unsigned char) mcastTTL; > > > -+ > > > -+ ff_log_net_error(NULL, AV_LOG_DEBUG, "setsockopt(IPV4/IPV6 > > > MULTICAST TTL)"); > > > -+ if (setsockopt(sockfd, protocol, cmd, &ttl, sizeof(ttl)) < 0) { > > > -+ ff_log_net_error(NULL, AV_LOG_ERROR, "setsockopt(IPV4/IPV6 > > > MULTICAST TTL)"); > > > - return ff_neterrno(); > > > - } > > > - } > > > --#endif > > > -+ > > > - return 0; > > > - } > > > - > > > -@@ -673,6 +691,11 @@ static int udp_open(URLContext *h, const char *uri, > > > in > > > - } > > > - if (av_find_info_tag(buf, sizeof(buf), "ttl", p)) { > > > - s->ttl = strtol(buf, NULL, 10); > > > -+ if (s->ttl < 0 || s->ttl > 255) { > > > -+ av_log(h, AV_LOG_ERROR, "ttl(%d) should be in range > > > [0,255]\n", s->ttl); > > > -+ ret = AVERROR(EINVAL); > > > -+ goto fail; > > > -+ } > > > - } > > > - if (av_find_info_tag(buf, sizeof(buf), "udplite_coverage", p)) { > > > - s->udplite_coverage = strtol(buf, NULL, 10); > > > Index: graphics/ffmpeg/patches/patch-libavutil_aarch64_asm_S > > > =================================================================== > > > RCS file: graphics/ffmpeg/patches/patch-libavutil_aarch64_asm_S > > > diff -N graphics/ffmpeg/patches/patch-libavutil_aarch64_asm_S > > > --- graphics/ffmpeg/patches/patch-libavutil_aarch64_asm_S 17 Jun 2023 > > > 22:19:43 -0000 1.1 > > > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > > > @@ -1,137 +0,0 @@ > > > -Index: libavutil/aarch64/asm.S > > > ---- libavutil/aarch64/asm.S.orig > > > -+++ libavutil/aarch64/asm.S > > > -@@ -36,6 +36,125 @@ > > > - # define __has_feature(x) 0 > > > - #endif > > > - > > > -+ > > > -+/* Support macros for > > > -+ * - Armv8.3-A Pointer Authentication and > > > -+ * - Armv8.5-A Branch Target Identification > > > -+ * features which require emitting a .note.gnu.property section with the > > > -+ * appropriate architecture-dependent feature bits set. > > > -+ * > > > -+ * |AARCH64_SIGN_LINK_REGISTER| and |AARCH64_VALIDATE_LINK_REGISTER| > > > expand to > > > -+ * PACIxSP and AUTIxSP, respectively. |AARCH64_SIGN_LINK_REGISTER| > > > should be > > > -+ * used immediately before saving the LR register (x30) to the stack. > > > -+ * |AARCH64_VALIDATE_LINK_REGISTER| should be used immediately after > > > restoring > > > -+ * it. Note |AARCH64_SIGN_LINK_REGISTER|'s modifications to LR must be > > > undone > > > -+ * with |AARCH64_VALIDATE_LINK_REGISTER| before RET. The SP register > > > must also > > > -+ * have the same value at the two points. For example: > > > -+ * > > > -+ * .global f > > > -+ * f: > > > -+ * AARCH64_SIGN_LINK_REGISTER > > > -+ * stp x29, x30, [sp, #-96]! > > > -+ * mov x29, sp > > > -+ * ... > > > -+ * ldp x29, x30, [sp], #96 > > > -+ * AARCH64_VALIDATE_LINK_REGISTER > > > -+ * ret > > > -+ * > > > -+ * |AARCH64_VALID_CALL_TARGET| expands to BTI 'c'. Either it, or > > > -+ * |AARCH64_SIGN_LINK_REGISTER|, must be used at every point that may > > > be an > > > -+ * indirect call target. In particular, all symbols exported from a > > > file must > > > -+ * begin with one of these macros. For example, a leaf function that > > > does not > > > -+ * save LR can instead use |AARCH64_VALID_CALL_TARGET|: > > > -+ * > > > -+ * .globl return_zero > > > -+ * return_zero: > > > -+ * AARCH64_VALID_CALL_TARGET > > > -+ * mov x0, #0 > > > -+ * ret > > > -+ * > > > -+ * A non-leaf function which does not immediately save LR may need both > > > macros > > > -+ * because |AARCH64_SIGN_LINK_REGISTER| appears late. For example, the > > > function > > > -+ * may jump to an alternate implementation before setting up the stack: > > > -+ * > > > -+ * .globl with_early_jump > > > -+ * with_early_jump: > > > -+ * AARCH64_VALID_CALL_TARGET > > > -+ * cmp x0, #128 > > > -+ * b.lt .Lwith_early_jump_128 > > > -+ * AARCH64_SIGN_LINK_REGISTER > > > -+ * stp x29, x30, [sp, #-96]! > > > -+ * mov x29, sp > > > -+ * ... > > > -+ * ldp x29, x30, [sp], #96 > > > -+ * AARCH64_VALIDATE_LINK_REGISTER > > > -+ * ret > > > -+ * > > > -+ * .Lwith_early_jump_128: > > > -+ * ... > > > -+ * ret > > > -+ * > > > -+ * These annotations are only required with indirect calls. Private > > > symbols that > > > -+ * are only the target of direct calls do not require annotations. Also > > > note > > > -+ * that |AARCH64_VALID_CALL_TARGET| is only valid for indirect calls > > > (BLR), not > > > -+ * indirect jumps (BR). Indirect jumps in assembly are supported through > > > -+ * |AARCH64_VALID_JUMP_TARGET|. Landing Pads which shall serve for > > > jumps and > > > -+ * calls can be created using |AARCH64_VALID_JUMP_CALL_TARGET|. > > > -+ * > > > -+ * Although not necessary, it is safe to use these macros in 32-bit ARM > > > -+ * assembly. This may be used to simplify dual 32-bit and 64-bit files. > > > -+ * > > > -+ * References: > > > -+ * - "ELF for the ArmĀ® 64-bit Architecture" > > > -+ * https: > > > *github.com/ARM-software/abi-aa/blob/master/aaelf64/aaelf64.rst > > > -+ * - "Providing protection for complex software" > > > -+ * > > > https://developer.arm.com/architectures/learn-the-architecture/providing-protection-for-complex-software > > > -+ */ > > > -+#if defined(__ARM_FEATURE_BTI_DEFAULT) && (__ARM_FEATURE_BTI_DEFAULT == > > > 1) > > > -+# define GNU_PROPERTY_AARCH64_BTI (1 << 0) // Has BTI > > > -+# define AARCH64_VALID_CALL_TARGET hint #34 // BTI 'c' > > > -+# define AARCH64_VALID_JUMP_TARGET hint #38 // BTI 'j' > > > -+#else > > > -+# define GNU_PROPERTY_AARCH64_BTI 0 // No BTI > > > -+# define AARCH64_VALID_CALL_TARGET > > > -+# define AARCH64_VALID_JUMP_TARGET > > > -+#endif > > > -+ > > > -+#if defined(__ARM_FEATURE_PAC_DEFAULT) > > > -+# if ((__ARM_FEATURE_PAC_DEFAULT & (1 << 0)) != 0) // authentication > > > using key A > > > -+# define AARCH64_SIGN_LINK_REGISTER paciasp > > > -+# define AARCH64_VALIDATE_LINK_REGISTER autiasp > > > -+# elif ((__ARM_FEATURE_PAC_DEFAULT & (1 << 1)) != 0) // > > > authentication using key B > > > -+# define AARCH64_SIGN_LINK_REGISTER pacibsp > > > -+# define AARCH64_VALIDATE_LINK_REGISTER autibsp > > > -+# else > > > -+# error Pointer authentication defines no valid key! > > > -+# endif > > > -+# if ((__ARM_FEATURE_PAC_DEFAULT & (1 << 2)) != 0) > > > -+# error Authentication of leaf functions is enabled but not > > > supported in FFmpeg! > > > -+# endif > > > -+# define GNU_PROPERTY_AARCH64_PAC (1 << 1) > > > -+#else > > > -+# define GNU_PROPERTY_AARCH64_PAC 0 > > > -+# define AARCH64_SIGN_LINK_REGISTER > > > -+# define AARCH64_VALIDATE_LINK_REGISTER > > > -+#endif > > > -+ > > > -+ > > > -+#if (GNU_PROPERTY_AARCH64_BTI != 0 || GNU_PROPERTY_AARCH64_PAC != 0) > > > -+ .pushsection .note.gnu.property, "a" > > > -+ .balign 8 > > > -+ .long 4 > > > -+ .long 0x10 > > > -+ .long 0x5 > > > -+ .asciz "GNU" > > > -+ .long 0xc0000000 /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */ > > > -+ .long 4 > > > -+ .long (GNU_PROPERTY_AARCH64_BTI | GNU_PROPERTY_AARCH64_PAC) > > > -+ .long 0 > > > -+ .popsection > > > -+#endif > > > -+ > > > - .macro function name, export=0, align=2 > > > - .macro endfunc > > > - ELF .size \name, . - \name > > > -@@ -49,6 +168,7 @@ FUNC .endfunc > > > - ELF .type EXTERN_ASM\name, %function > > > - FUNC .func EXTERN_ASM\name > > > - EXTERN_ASM\name: > > > -+ AARCH64_VALID_CALL_TARGET > > > - .else > > > - ELF .type \name, %function > > > - FUNC .func \name > > > Index: graphics/ffmpeg/pkg/PLIST > > > =================================================================== > > > RCS file: /cvs/ports/graphics/ffmpeg/pkg/PLIST,v > > > retrieving revision 1.42 > > > diff -u -p -u -p -r1.42 PLIST > > > --- graphics/ffmpeg/pkg/PLIST 30 Dec 2022 00:13:29 -0000 1.42 > > > +++ graphics/ffmpeg/pkg/PLIST 3 Aug 2024 19:12:07 -0000 > > > @@ -14,6 +14,7 @@ include/libavcodec/codec_desc.h > > > include/libavcodec/codec_id.h > > > include/libavcodec/codec_par.h > > > include/libavcodec/d3d11va.h > > > +include/libavcodec/defs.h > > > include/libavcodec/dirac.h > > > include/libavcodec/dv_profile.h > > > include/libavcodec/dxva2.h > > > @@ -21,28 +22,32 @@ include/libavcodec/jni.h > > > include/libavcodec/mediacodec.h > > > include/libavcodec/packet.h > > > include/libavcodec/qsv.h > > > -include/libavcodec/vaapi.h > > > include/libavcodec/vdpau.h > > > include/libavcodec/version.h > > > +include/libavcodec/version_major.h > > > include/libavcodec/videotoolbox.h > > > include/libavcodec/vorbis_parser.h > > > include/libavcodec/xvmc.h > > > include/libavdevice/ > > > include/libavdevice/avdevice.h > > > include/libavdevice/version.h > > > +include/libavdevice/version_major.h > > > include/libavfilter/ > > > include/libavfilter/avfilter.h > > > include/libavfilter/buffersink.h > > > include/libavfilter/buffersrc.h > > > include/libavfilter/version.h > > > +include/libavfilter/version_major.h > > > include/libavformat/ > > > include/libavformat/avformat.h > > > include/libavformat/avio.h > > > include/libavformat/version.h > > > +include/libavformat/version_major.h > > > include/libavutil/ > > > include/libavutil/adler32.h > > > include/libavutil/aes.h > > > include/libavutil/aes_ctr.h > > > +include/libavutil/ambient_viewing_environment.h > > > include/libavutil/attributes.h > > > include/libavutil/audio_fifo.h > > > include/libavutil/avassert.h > > > @@ -60,7 +65,9 @@ include/libavutil/channel_layout.h > > > include/libavutil/common.h > > > include/libavutil/cpu.h > > > include/libavutil/crc.h > > > +include/libavutil/csp.h > > > include/libavutil/des.h > > > +include/libavutil/detection_bbox.h > > > include/libavutil/dict.h > > > include/libavutil/display.h > > > include/libavutil/dovi_meta.h > > > @@ -68,6 +75,7 @@ include/libavutil/downmix_info.h > > > include/libavutil/encryption_info.h > > > include/libavutil/error.h > > > include/libavutil/eval.h > > > +include/libavutil/executor.h > > > include/libavutil/ffversion.h > > > include/libavutil/fifo.h > > > include/libavutil/file.h > > > @@ -75,6 +83,7 @@ include/libavutil/film_grain_params.h > > > include/libavutil/frame.h > > > include/libavutil/hash.h > > > include/libavutil/hdr_dynamic_metadata.h > > > +include/libavutil/hdr_dynamic_vivid_metadata.h > > > include/libavutil/hmac.h > > > include/libavutil/hwcontext.h > > > include/libavutil/hwcontext_cuda.h > > > @@ -124,18 +133,23 @@ include/libavutil/timestamp.h > > > include/libavutil/tree.h > > > include/libavutil/twofish.h > > > include/libavutil/tx.h > > > +include/libavutil/uuid.h > > > include/libavutil/version.h > > > include/libavutil/video_enc_params.h > > > +include/libavutil/video_hint.h > > > include/libavutil/xtea.h > > > include/libpostproc/ > > > include/libpostproc/postprocess.h > > > include/libpostproc/version.h > > > +include/libpostproc/version_major.h > > > include/libswresample/ > > > include/libswresample/swresample.h > > > include/libswresample/version.h > > > +include/libswresample/version_major.h > > > include/libswscale/ > > > include/libswscale/swscale.h > > > include/libswscale/version.h > > > +include/libswscale/version_major.h > > > @static-lib lib/libavcodec.a > > > @lib lib/libavcodec.so.${LIBavcodec_VERSION} > > > @static-lib lib/libavdevice.a > > > @@ -183,6 +197,9 @@ lib/pkgconfig/libswscale.pc > > > @man man/man3/libswresample.3 > > > @man man/man3/libswscale.3 > > > share/doc/ffmpeg/ > > > +share/doc/ffmpeg/bootstrap.min.css > > > +share/doc/ffmpeg/community.html > > > +share/doc/ffmpeg/default.css > > > share/doc/ffmpeg/developer.html > > > share/doc/ffmpeg/faq.html > > > share/doc/ffmpeg/fate.html > > > @@ -213,31 +230,33 @@ share/doc/ffmpeg/libswscale.html > > > share/doc/ffmpeg/mailing-list-faq.html > > > share/doc/ffmpeg/nut.html > > > share/doc/ffmpeg/platform.html > > > +share/doc/ffmpeg/style.min.css > > > share/doc/pkg-readmes/${PKGSTEM} > > > share/examples/ffmpeg/ > > > share/examples/ffmpeg/Makefile > > > share/examples/ffmpeg/README > > > +share/examples/ffmpeg/avio_http_serve_files.c > > > share/examples/ffmpeg/avio_list_dir.c > > > -share/examples/ffmpeg/avio_reading.c > > > +share/examples/ffmpeg/avio_read_callback.c > > > share/examples/ffmpeg/decode_audio.c > > > +share/examples/ffmpeg/decode_filter_audio.c > > > +share/examples/ffmpeg/decode_filter_video.c > > > share/examples/ffmpeg/decode_video.c > > > -share/examples/ffmpeg/demuxing_decoding.c > > > +share/examples/ffmpeg/demux_decode.c > > > share/examples/ffmpeg/encode_audio.c > > > share/examples/ffmpeg/encode_video.c > > > share/examples/ffmpeg/extract_mvs.c > > > share/examples/ffmpeg/filter_audio.c > > > -share/examples/ffmpeg/filtering_audio.c > > > -share/examples/ffmpeg/filtering_video.c > > > -share/examples/ffmpeg/http_multiclient.c > > > share/examples/ffmpeg/hw_decode.c > > > -share/examples/ffmpeg/metadata.c > > > -share/examples/ffmpeg/muxing.c > > > -share/examples/ffmpeg/qsvdec.c > > > -share/examples/ffmpeg/remuxing.c > > > -share/examples/ffmpeg/resampling_audio.c > > > -share/examples/ffmpeg/scaling_video.c > > > +share/examples/ffmpeg/mux.c > > > +share/examples/ffmpeg/qsv_decode.c > > > +share/examples/ffmpeg/qsv_transcode.c > > > +share/examples/ffmpeg/remux.c > > > +share/examples/ffmpeg/resample_audio.c > > > +share/examples/ffmpeg/scale_video.c > > > +share/examples/ffmpeg/show_metadata.c > > > +share/examples/ffmpeg/transcode.c > > > share/examples/ffmpeg/transcode_aac.c > > > -share/examples/ffmpeg/transcoding.c > > > share/examples/ffmpeg/vaapi_encode.c > > > share/examples/ffmpeg/vaapi_transcode.c > > > share/ffmpeg/ > > > Index: x11/mplayer/Makefile > > > =================================================================== > > > RCS file: /cvs/ports/x11/mplayer/Makefile,v > > > retrieving revision 1.330 > > > diff -u -p -u -p -r1.330 Makefile > > > --- x11/mplayer/Makefile 3 Aug 2024 05:41:40 -0000 1.330 > > > +++ x11/mplayer/Makefile 3 Aug 2024 19:12:07 -0000 > > > @@ -1,9 +1,8 @@ > > > COMMENT= movie player supporting many formats > > > > > > -V= 20230409 > > > -FFMPEG_V= 4.4.5 > > > +V= 20240803 > > > +FFMPEG_V= 6.1.2 > > > DISTNAME= mplayer-${V} > > > -REVISION= 2 > > > CATEGORIES= x11 multimedia > > > SITES= https://comstyle.com/source/ > > > EXTRACT_SUFX= .tar.xz > > > Index: x11/mplayer/distinfo > > > =================================================================== > > > RCS file: /cvs/ports/x11/mplayer/distinfo,v > > > retrieving revision 1.55 > > > diff -u -p -u -p -r1.55 distinfo > > > --- x11/mplayer/distinfo 9 Apr 2023 20:03:20 -0000 1.55 > > > +++ x11/mplayer/distinfo 3 Aug 2024 19:12:07 -0000 > > > @@ -1,2 +1,2 @@ > > > -SHA256 (mplayer-20230409.tar.xz) = > > > bwTz7Xl2T+HlT3FoBA5d1k6ZZiO5K9ITOBRiAPp6Fgo= > > > -SIZE (mplayer-20230409.tar.xz) = 5176244 > > > +SHA256 (mplayer-20240803.tar.xz) = > > > hiP7BVMGNwA8doA3pwBYUJOZGKeo292GRpW/VJy9DVQ= > > > +SIZE (mplayer-20240803.tar.xz) = 5235548 > > > Index: x11/mplayer/patches/patch-DOCS_man_en_mplayer_1 > > > =================================================================== > > > RCS file: /cvs/ports/x11/mplayer/patches/patch-DOCS_man_en_mplayer_1,v > > > retrieving revision 1.22 > > > diff -u -p -u -p -r1.22 patch-DOCS_man_en_mplayer_1 > > > --- x11/mplayer/patches/patch-DOCS_man_en_mplayer_1 11 Mar 2022 > > > 20:16:48 -0000 1.22 > > > +++ x11/mplayer/patches/patch-DOCS_man_en_mplayer_1 3 Aug 2024 > > > 19:12:07 -0000 > > > @@ -1,7 +1,7 @@ > > > Index: DOCS/man/en/mplayer.1 > > > --- DOCS/man/en/mplayer.1.orig > > > +++ DOCS/man/en/mplayer.1 > > > -@@ -1552,7 +1552,7 @@ May be negative. > > > +@@ -1557,7 +1557,7 @@ May be negative. > > > . > > > .TP > > > .B \-cdrom\-device <path to device> > > > @@ -10,7 +10,7 @@ Index: DOCS/man/en/mplayer.1 > > > . > > > .TP > > > .B \-channels <number> (also see \-af channels) > > > -@@ -12277,7 +12277,7 @@ mplayer dvd://1 \-dvdangle 2 > > > +@@ -12250,7 +12250,7 @@ mplayer dvd://1 \-dvdangle 2 > > > .PP > > > .B Play from a different DVD device: > > > .nf > > > @@ -19,7 +19,7 @@ Index: DOCS/man/en/mplayer.1 > > > .fi > > > . > > > .PP > > > -@@ -12343,11 +12343,11 @@ mplayer \-vo zr2 \-vf scale=352:288,zrmjpeg > > > file.avi > > > +@@ -12316,11 +12316,11 @@ mplayer \-vo zr2 \-vf scale=352:288,zrmjpeg > > > file.avi > > > .PP > > > .B Play DTS-CD with passthrough: > > > .nf > > > Index: x11/mplayer/patches/patch-Makefile > > > =================================================================== > > > RCS file: /cvs/ports/x11/mplayer/patches/patch-Makefile,v > > > retrieving revision 1.35 > > > diff -u -p -u -p -r1.35 patch-Makefile > > > --- x11/mplayer/patches/patch-Makefile 11 Mar 2022 20:16:48 -0000 > > > 1.35 > > > +++ x11/mplayer/patches/patch-Makefile 3 Aug 2024 19:12:07 -0000 > > > @@ -9,7 +9,7 @@ Index: Makefile > > > SRCS_COMMON-$(AUDIO_INPUT) += $(SRCS_AUDIO_INPUT-yes) > > > SRCS_COMMON-$(BITMAP_FONT) += sub/font_load.c > > > SRCS_COMMON-$(CDDA) += stream/stream_cdda.c > > > \ > > > -@@ -614,7 +615,8 @@ SRCS_MPLAYER = command.c \ > > > +@@ -613,7 +614,8 @@ SRCS_MPLAYER = command.c \ > > > libvo/vo_mpegpes.c \ > > > libvo/vo_null.c \ > > > sub/spuenc.c \ > > > Index: x11/mplayer/patches/patch-configure > > > =================================================================== > > > RCS file: /cvs/ports/x11/mplayer/patches/patch-configure,v > > > retrieving revision 1.96 > > > diff -u -p -u -p -r1.96 patch-configure > > > --- x11/mplayer/patches/patch-configure 9 Apr 2023 20:03:20 -0000 > > > 1.96 > > > +++ x11/mplayer/patches/patch-configure 3 Aug 2024 19:12:07 -0000 > > > @@ -15,7 +15,7 @@ Index: configure > > > # Use this before starting a check > > > echocheck() { > > > echo "============ Checking for $@ ============" >> "$TMPLOG" > > > -@@ -1530,39 +1537,39 @@ echo configuration: $configuration > "$TMPLOG" > > > +@@ -1521,39 +1528,39 @@ echo configuration: $configuration > "$TMPLOG" > > > echo >> "$TMPLOG" > > > > > > > > > @@ -87,7 +87,7 @@ Index: configure > > > list_subparts() { > > > test ! -e ffmpeg/libav${3} && return 1 > > > pattern="s/^[^#]*${1}.*([^ ,]*, *\([^ ,)]*\).*/\1_${2}/p" > > > -@@ -1995,7 +2002,10 @@ fi > > > +@@ -1990,7 +1997,10 @@ fi > > > if arm ; then > > > cc_check && host_arch=aarch64 || host_arch=arm > > > fi > > > @@ -98,7 +98,7 @@ Index: configure > > > > > > echo "Detected operating system: $system_name" > > > echo "Detected host architecture: $host_arch" > > > -@@ -2540,7 +2550,7 @@ case "$host_arch" in > > > +@@ -2544,7 +2554,7 @@ case "$host_arch" in > > > arch='sparc' > > > iproc='sparc' > > > if test "$host_arch" = "sparc64" ; then > > > @@ -107,7 +107,7 @@ Index: configure > > > proc='ultrasparc' > > > def_fast_64bit='#define HAVE_FAST_64BIT 1' > > > elif sunos ; then > > > -@@ -2841,7 +2851,14 @@ EOF > > > +@@ -2846,7 +2856,14 @@ EOF > > > arch='arc' > > > iproc='arc' > > > ;; > > > @@ -122,7 +122,7 @@ Index: configure > > > *) > > > echo "The architecture of your CPU ($host_arch) is not supported by > > > this configure script" > > > echo "It seems nobody has ported MPlayer to your OS or CPU type > > > yet." > > > -@@ -2915,7 +2932,7 @@ cat > $TMPC << EOF > > > +@@ -2920,7 +2937,7 @@ cat > $TMPC << EOF > > > int ff_extern; > > > EOF > > > cc_check -c || die "Symbol mangling check failed." > > > @@ -131,7 +131,7 @@ Index: configure > > > extern_prefix=${sym%%ff_extern*} > > > def_extern_asm="#define EXTERN_ASM $extern_prefix" > > > def_extern_prefix="#define EXTERN_PREFIX \"$extern_prefix\"" > > > -@@ -2980,7 +2997,7 @@ else > > > +@@ -2985,7 +3002,7 @@ else > > > fi > > > > > > CFLAGS="-D_ISOC99_SOURCE -I. -Iffmpeg $CFLAGS" > > > @@ -140,7 +140,7 @@ Index: configure > > > > > > # On glibc, add some more CPPFLAGS for enabling required functionality. > > > cpp_condition_check features.h "defined __GLIBC__" && > > > -@@ -3061,7 +3078,7 @@ elif test $relocatable = "yes" ; then > > > +@@ -3066,7 +3083,7 @@ elif test $relocatable = "yes" ; then > > > fi > > > echores $relocatable > > > > > > @@ -149,7 +149,7 @@ Index: configure > > > # Checking assembler (_as) compatibility... > > > # Added workaround for older as that reads from stdin by default - > > > atmos > > > as_version=$(echo '' | $_as -version 2>&1 | sed -n 's/^.*assembler > > > \(version \)*\([0-9.]*\).*$/\2/p') > > > -@@ -6365,12 +6382,16 @@ fi #if irix > > > +@@ -6338,12 +6355,16 @@ fi #if irix > > > echocheck "sndio audio" > > > if test "$_sndio" = auto ; then > > > _sndio=no > > > @@ -168,7 +168,7 @@ Index: configure > > > else > > > def_sndio='#undef CONFIG_SNDIO_AUDIO' > > > noaomodules="sndio $noaomodules" > > > -@@ -6553,7 +6574,7 @@ echocheck "cdparanoia" > > > +@@ -6526,7 +6547,7 @@ echocheck "cdparanoia" > > > if test "$_cdparanoia" = auto ; then > > > _cdparanoia=no > > > for inc_tmp in "" "-I/usr/include/cdda" "-I/usr/local/include/cdda" > > > ; do > > > @@ -177,7 +177,7 @@ Index: configure > > > _cdparanoia=yes && extra_cflags="$extra_cflags $inc_tmp" && > > > break > > > done > > > fi > > > -@@ -8445,6 +8466,7 @@ extra_ldflags="$extra_ldflags $libm" > > > +@@ -8417,6 +8438,7 @@ extra_ldflags="$extra_ldflags $libm" > > > # XML documentation tests > > > echocheck "XML catalogs" > > > for try_catalog in \ > > > @@ -185,7 +185,7 @@ Index: configure > > > /etc/sgml/catalog \ > > > /usr/share/xml/docbook/*/catalog.xml \ > > > /opt/local/share/xml/docbook-xml/*/catalog.xml \ > > > -@@ -8472,6 +8494,7 @@ fi > > > +@@ -8444,6 +8466,7 @@ fi > > > > > > echocheck "XML chunked stylesheet" > > > for try_chunk_xsl in \ > > > @@ -193,7 +193,7 @@ Index: configure > > > /usr/share/xml/docbook/*/html/chunk.xsl \ > > > /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl \ > > > /usr/share/sgml/docbook/yelp/docbook/html/chunk.xsl \ > > > -@@ -8497,6 +8520,7 @@ fi > > > +@@ -8469,6 +8492,7 @@ fi > > > > > > echocheck "XML monolithic stylesheet" > > > for try_docbook_xsl in \ > > > @@ -201,7 +201,7 @@ Index: configure > > > /usr/share/xml/docbook/*/html/docbook.xsl \ > > > /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/docbook.xsl \ > > > /usr/share/sgml/docbook/yelp/docbook/html/docbook.xsl \ > > > -@@ -8550,6 +8574,7 @@ EOF > > > +@@ -8522,6 +8546,7 @@ EOF > > > echocheck "XML DTD" > > > #FIXME: This should prefer higher version numbers, not the other way > > > around .. > > > for try_dtd in \ > > > @@ -209,7 +209,7 @@ Index: configure > > > /usr/share/xml/docbook/*/dtd/4*/docbookx.dtd \ > > > /usr/share/xml/docbook/*/docbookx.dtd \ > > > /usr/share/sgml/docbook/*/docbookx.dtd \ > > > -@@ -9753,9 +9778,6 @@ cmp -s "$TMPH" config.h || mv -f "$TMPH" config.h > > > +@@ -9732,9 +9757,6 @@ cmp -s "$TMPH" config.h || mv -f "$TMPH" config.h > > > > > > > > > ############################################################################ > > > > > > @@ -219,7 +219,7 @@ Index: configure > > > # Create avconfig.h for FFmpeg. > > > cat > "$TMPH" << EOF > > > /* Generated by mpconfigure */ > > > -@@ -9848,8 +9870,6 @@ print_enabled_components > > > libavformat/demuxer_list.c AV > > > +@@ -9827,8 +9849,6 @@ print_enabled_components > > > libavformat/demuxer_list.c AV > > > print_enabled_components libavformat/muxer_list.c AVOutputFormat > > > muxer_list $libavmuxers > > > print_enabled_components libavformat/protocol_list.c URLProtocol > > > url_protocols $libavprotocols > > > print_enabled_filters libavfilter/filter_list.c AVFilter filter_list > > > $libavfilters > > > > > > > > >