tests complete successfully on BTI amd64 and aarch64.
committed.
On 2026/05/27 17:14, Brad Smith wrote:
> ping.
>
> On 2026-05-10 4:54 p.m., Brad Smith wrote:
> > Here is an update to x265 4.2.
> >
> >
> > Version 4.2
> > ===========
> >
> > New feature
> > -----------
> > 1. Threaded Motion Estimation (Experimental feature)-It uses a dedicated
> > thread
> > pool to precompute Motion Estimation in parallel. Improves encoding
> > speed up
> > to 1.5x for 1080p & lower resolution on multi core machines with low
> > frequency
> > setting. On high frequency systems or on machines with low number of
> > cores,
> > the overhead of additional Motion estimation work may outweigh
> > parallelism
> >
> > Enhancements to existing features
> > -------------
> >
> > 1.Add new Levels 6.3 to 7.2 specified in ITU-T H.265 (V9) (09/2023) and
> > above
> > 2.Improve Slices feature with check zeroMv
> > 3.Enable frame parallelism with MCSTF feature
> > 4.Updated support to signal AOM FGM params
> > 5.Improve quality with SBRC feature
> > 6.Updated DolbyVision P5 VUI defaults
> >
> > API changes
> > -----------
> > 1. API Support to enable Threaded Motion Estimation(--threaded-me)
> >
> > Optimizations
> > -------------
> > 1. RISC V optimizations including SAD, SATD, DCT, IDCT, block copy, pixel
> > utilities,
> > SAO, loopfilter, transpose kernels resulting in 2x encoding speed.
> > 2. ARM SIMD optimizations including the use of NEON and SVE instruction set
> > extensions. The following algorithms now have optimized SIMD
> > implementations:
> > DST, IDCT, SSE, SSD ,intra_pred_planar, pelFilterLumaStrong,
> > interpolation,
> > planecopy, dequant_normal, blockcopy, pixel variance resulting in 8%
> > faster
> > encoding speed compared to v4.1
> >
> > Bug fixes
> > ---------
> > 1. Fix memory leaks (no command line option, SEI buffer, analysis save/load)
> > 2. Fix chroma qp offset for non yuv444 inputs
> > 3. Fix max supported input resolution
> > 4. Fix bugs with ARM SIMD optimizations
> > 5. Fix Alpha and Multiview feature flag support in x265_config
> > 6. Fix test harness issues, CMake errors
> > 7. Fix inconsistent output with aq-motion
> > 8. Fix crash with hist-scenecut on high bit-depth builds
> > 9. Fix lookahead concurrency bug
> > 10. Fix shared link issue (R_X86_64_PC32), yuv recon output issue,
> > rd-refine and
> > dynamic-refine issue, inputs for Windows named pipe, weighted
> > prediction
> > delta_chroma_offset, crf and vbv issue in abr-ladder, psnr and ssim
> > reported
> > with MCSTF feature, internally overflowed VBV variables
> >
> > Known issues
> > ------------
> > 1. Output mismatch between analysis save & load with cutree with reuse
> > level < 10
> > 2. Inconsistent hash mismatch with abr-ladder feature
> > 3. Performance regression observed with threaded-me feature on high
> > frequency
> > systems and for higher resolutions (4k)
> >
> >
> > Index: Makefile
> > ===================================================================
> > RCS file: /cvs/ports/multimedia/x265/Makefile,v
> > retrieving revision 1.62
> > diff -u -p -u -p -r1.62 Makefile
> > --- Makefile 13 Feb 2026 12:02:17 -0000 1.62
> > +++ Makefile 10 May 2026 11:47:00 -0000
> > @@ -1,13 +1,12 @@
> > COMMENT= free H.265/HEVC encoder
> > -VER= 4.1
> > +VER= 4.2
> > DISTNAME= x265_${VER}
> > PKGNAME= x265-${VER}
> > -REVISION= 0
> > CATEGORIES= multimedia
> > -SITES= https://bitbucket.org/multicoreware/x265_git/downloads/
> > +SITES=
> > https://github.com/Multicorewareinc/x265/releases/download/${VER}/
> > -SHARED_LIBS= x265 25.0
> > +SHARED_LIBS= x265 26.0
> > HOMEPAGE= https://x265.org/
> > @@ -33,8 +32,6 @@ CONFIGURE_ARGS+=-DCMAKE_ASM_YASM_FLAGS_D
> > -DENABLE_PIC=On \
> > -DENABLE_TESTS=On \
> > -DGIT_ARCHETYPE=1
> > -
> > -MODCMAKE_POLICY_VERSION_OVERRIDE = Yes
> > .if ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "i386"
> > CONFIGURE_ARGS+=-DENABLE_ASSEMBLY=Off
> > Index: distinfo
> > ===================================================================
> > RCS file: /cvs/ports/multimedia/x265/distinfo,v
> > retrieving revision 1.28
> > diff -u -p -u -p -r1.28 distinfo
> > --- distinfo 2 Dec 2024 10:40:47 -0000 1.28
> > +++ distinfo 10 May 2026 11:47:00 -0000
> > @@ -1,2 +1,2 @@
> > -SHA256 (x265_4.1.tar.gz) = oxaZxqiYBrdLAVHl5qffZd5LSQUEgv5ev4pDedevjyk=
> > -SIZE (x265_4.1.tar.gz) = 1725279
> > +SHA256 (x265_4.2.tar.gz) = QLHqBFPgMJ8OupNODd9TP49ilZZmeeiJTo8cHI1eEhA=
> > +SIZE (x265_4.2.tar.gz) = 1833442
> > Index: patches/patch-source_CMakeLists_txt
> > ===================================================================
> > RCS file: /cvs/ports/multimedia/x265/patches/patch-source_CMakeLists_txt,v
> > retrieving revision 1.10
> > diff -u -p -u -p -r1.10 patch-source_CMakeLists_txt
> > --- patches/patch-source_CMakeLists_txt 13 Feb 2026 12:02:17 -0000
> > 1.10
> > +++ patches/patch-source_CMakeLists_txt 10 May 2026 11:47:00 -0000
> > @@ -1,25 +1,10 @@
> > - Add run-time CPU feature detection for FreeBSD / OpenBSD
> > +- Fix building AltiVec code on powerpc64
> > Index: source/CMakeLists.txt
> > --- source/CMakeLists.txt.orig
> > +++ source/CMakeLists.txt
> > -@@ -7,13 +7,13 @@ if(NOT CMAKE_BUILD_TYPE)
> > - endif()
> > - message(STATUS "cmake version ${CMAKE_VERSION}")
> > - if(POLICY CMP0025)
> > -- cmake_policy(SET CMP0025 OLD) # report Apple's Clang as just Clang
> > -+ cmake_policy(SET CMP0025 NEW) # report Apple's Clang as just Clang
> > - endif()
> > - if(POLICY CMP0042)
> > - cmake_policy(SET CMP0042 NEW) # MACOSX_RPATH
> > - endif()
> > - if(POLICY CMP0054)
> > -- cmake_policy(SET CMP0054 OLD) # Only interpret if() arguments as
> > variables or keywords when unquoted
> > -+ cmake_policy(SET CMP0054 NEW) # Only interpret if() arguments as
> > variables or keywords when unquoted
> > - endif()
> > -
> > - project (x265)
> > -@@ -88,7 +88,7 @@ elseif(ARM64MATCH GREATER "-1")
> > +@@ -91,7 +91,7 @@ elseif(ARM64MATCH GREATER "-1")
> > option(AARCH64_WARNINGS_AS_ERRORS "Build with -Werror for AArch64
> > Intrinsics files" OFF)
> > option(AARCH64_RUNTIME_CPU_DETECT "Enable AArch64 run-time CPU
> > feature detection" ON)
> > @@ -28,12 +13,21 @@ Index: source/CMakeLists.txt
> > set(AARCH64_RUNTIME_CPU_DETECT OFF CACHE BOOL "" FORCE)
> > message(STATUS "Run-time CPU feature detection unsupported on
> > this platform")
> > endif()
> > -@@ -522,6 +522,16 @@ endif()
> > +@@ -120,6 +120,10 @@ elseif(RISCV64MATCH GREATER "-1")
> > + set(RISCV64 1)
> > +
> > + option(RISCV64_RUNTIME_CPU_DETECT "Enable RISCV64 run-time CPU
> > feature detection" ON)
> > ++ if(NOT CMAKE_SYSTEM_NAME MATCHES "Linux|FreeBSD|OpenBSD")
> > ++ set(RISCV64_RUNTIME_CPU_DETECT OFF CACHE BOOL "" FORCE)
> > ++ message(STATUS "Run-time CPU feature detection unsupported on
> > this platform")
> > ++ endif()
> > - if(ENABLE_ASSEMBLY)
> > + option(ENABLE_RVV "Enable RVV" ON)
> > +
> > +@@ -664,6 +668,16 @@ if(ENABLE_ASSEMBLY)
> > add_definitions(-DENABLE_ASSEMBLY)
> > -+endif()
> > -+
> > + endif()
> > +
> > +check_symbol_exists(getauxval sys/auxv.h HAVE_GETAUXVAL)
> > +if(HAVE_GETAUXVAL)
> > + add_definitions(-DHAVE_GETAUXVAL=1)
> > @@ -42,6 +36,21 @@ Index: source/CMakeLists.txt
> > +check_symbol_exists(elf_aux_info sys/auxv.h HAVE_ELF_AUX_INFO)
> > +if(HAVE_ELF_AUX_INFO)
> > + add_definitions(-DHAVE_ELF_AUX_INFO=1)
> > - endif()
> > -
> > ++endif()
> > ++
> > option(CHECKED_BUILD "Enable run-time sanity checks (debugging)" OFF)
> > + if(CHECKED_BUILD)
> > + add_definitions(-DCHECKED_BUILD=1)
> > +@@ -785,7 +799,11 @@ if(POWER)
> > + # IBM Power8
> > + option(ENABLE_ALTIVEC "Enable ALTIVEC profiling instrumentation" ON)
> > + if(ENABLE_ALTIVEC)
> > +- add_definitions(-DHAVE_ALTIVEC=1 -maltivec -mabi=altivec)
> > ++ add_definitions(-DHAVE_ALTIVEC=1 -maltivec)
> > ++ check_cxx_compiler_flag(-mabi=altivec CC_HAS_MABI_ALTIVEC)
> > ++ if(CC_HAS_MABI_ALTIVEC)
> > ++ add_definitions(-mabi=altivec)
> > ++ endif()
> > + add_definitions(-flax-vector-conversions -fpermissive)
> > + else()
> > + add_definitions(-DHAVE_ALTIVEC=0)
> > Index: patches/patch-source_common_aarch64_cpu_h
> > ===================================================================
> > RCS file:
> > /cvs/ports/multimedia/x265/patches/patch-source_common_aarch64_cpu_h,v
> > retrieving revision 1.1
> > diff -u -p -u -p -r1.1 patch-source_common_aarch64_cpu_h
> > --- patches/patch-source_common_aarch64_cpu_h 2 Dec 2024 10:40:47
> > -0000 1.1
> > +++ patches/patch-source_common_aarch64_cpu_h 10 May 2026 11:47:00
> > -0000
> > @@ -3,7 +3,7 @@
> > Index: source/common/aarch64/cpu.h
> > --- source/common/aarch64/cpu.h.orig
> > +++ source/common/aarch64/cpu.h
> > -@@ -119,7 +119,7 @@ static inline int aarch64_get_cpu_flags()
> > +@@ -127,7 +127,7 @@ static inline int aarch64_get_cpu_flags()
> > return flags;
> > }
> > @@ -12,14 +12,14 @@ Index: source/common/aarch64/cpu.h
> > #include <sys/auxv.h>
> > -@@ -133,10 +133,10 @@ static inline int aarch64_get_cpu_flags()
> > +@@ -142,10 +142,10 @@ static inline int aarch64_get_cpu_flags()
> > int flags = 0;
> > #if HAVE_NEON_DOTPROD || HAVE_SVE
> > - unsigned long hwcap = getauxval(AT_HWCAP);
> > + unsigned long hwcap = x265_getauxval(AT_HWCAP);
> > #endif
> > - #if HAVE_NEON_I8MM || HAVE_SVE2
> > + #if HAVE_NEON_I8MM || HAVE_SVE2 || HAVE_SVE2_BITPERM
> > - unsigned long hwcap2 = getauxval(AT_HWCAP2);
> > + unsigned long hwcap2 = x265_getauxval(AT_HWCAP2);
> > #endif
> > Index: patches/patch-source_common_cpu_cpp
> > ===================================================================
> > RCS file: /cvs/ports/multimedia/x265/patches/patch-source_common_cpu_cpp,v
> > retrieving revision 1.4
> > diff -u -p -u -p -r1.4 patch-source_common_cpu_cpp
> > --- patches/patch-source_common_cpu_cpp 9 Dec 2024 22:37:26 -0000
> > 1.4
> > +++ patches/patch-source_common_cpu_cpp 10 May 2026 11:47:00 -0000
> > @@ -23,7 +23,7 @@ Index: source/common/cpu.cpp
> > #include <signal.h>
> > #include <setjmp.h>
> > static sigjmp_buf jmpbuf;
> > -@@ -128,6 +132,22 @@ const cpu_name_t cpu_names[] =
> > +@@ -137,6 +141,22 @@ const cpu_name_t cpu_names[] =
> > { "", 0 },
> > };
> > @@ -46,7 +46,7 @@ Index: source/common/cpu.cpp
> > #if X265_ARCH_X86
> > extern "C" {
> > -@@ -348,6 +368,8 @@ void PFX(cpu_neon_test)(void);
> > +@@ -357,6 +377,8 @@ void PFX(cpu_neon_test)(void);
> > int PFX(cpu_fast_neon_mrc_test)(void);
> > }
> > @@ -55,8 +55,8 @@ Index: source/common/cpu.cpp
> > uint32_t cpu_detect(bool benableavx512)
> > {
> > int flags = 0;
> > -@@ -355,6 +377,11 @@ uint32_t cpu_detect(bool benableavx512)
> > - #if HAVE_ARMV6
> > +@@ -364,6 +386,11 @@ uint32_t cpu_detect(bool benableavx512)
> > + #if HAVE_ARMV6 && ENABLE_ASSEMBLY
> > flags |= X265_CPU_ARMV6;
> > +#if HAVE_GETAUXVAL || HAVE_ELF_AUX_INFO
> > @@ -67,7 +67,7 @@ Index: source/common/cpu.cpp
> > // don't do this hack if compiled with -mfpu=neon
> > #if !HAVE_NEON
> > static void (* oldsig)(int);
> > -@@ -372,6 +399,7 @@ uint32_t cpu_detect(bool benableavx512)
> > +@@ -381,6 +408,7 @@ uint32_t cpu_detect(bool benableavx512)
> > #endif // if !HAVE_NEON
> > flags |= X265_CPU_NEON;
> > Index: patches/patch-source_common_riscv64_cpu_h
> > ===================================================================
> > RCS file: patches/patch-source_common_riscv64_cpu_h
> > diff -N patches/patch-source_common_riscv64_cpu_h
> > --- /dev/null 1 Jan 1970 00:00:00 -0000
> > +++ patches/patch-source_common_riscv64_cpu_h 10 May 2026 11:47:00
> > -0000
> > @@ -0,0 +1,59 @@
> > +- Add run-time CPU feature detection for FreeBSD / OpenBSD
> > +
> > +Index: source/common/riscv64/cpu.h
> > +--- source/common/riscv64/cpu.h.orig
> > ++++ source/common/riscv64/cpu.h
> > +@@ -28,12 +28,13 @@
> > +
> > + #if RISCV64_RUNTIME_CPU_DETECT
> > +
> > +-#if defined(__linux__)
> > ++#if HAVE_GETAUXVAL || HAVE_ELF_AUX_INFO
> > +
> > + #include <sys/auxv.h>
> > +
> > + #define HWCAP_RISCV64_RVV (1 << ('V' - 'A'))
> > +
> > ++#ifdef __linux__
> > + static int parse_proc_cpuinfo(const char *flag) {
> > + FILE *file = fopen("/proc/cpuinfo", "r");
> > + if (file == NULL)
> > +@@ -52,31 +53,34 @@ static int parse_proc_cpuinfo(const char *flag) {
> > + fclose(file);
> > + return found;
> > + }
> > ++#endif
> > +
> > + static inline uint32_t riscv64_cpu_detect()
> > + {
> > + uint32_t flags = 0;
> > +
> > +- unsigned long hwcap = getauxval(AT_HWCAP);
> > ++ unsigned long hwcap = x265_getauxval(AT_HWCAP);
> > +
> > + if (hwcap & HWCAP_RISCV64_RVV) {
> > + flags |= X265_CPU_RVV;
> > +
> > ++#ifdef __linux__
> > + if (parse_proc_cpuinfo("zbb"))
> > + flags |= X265_CPU_ZBB;
> > ++#endif
> > + }
> > +
> > + return flags;
> > + }
> > +
> > +-#else // defined(__linux__)
> > ++#else // HAVE_GETAUXVAL || HAVE_ELF_AUX_INFO
> > + #error \
> > + "Run-time CPU feature detection selected, but no detection method" \
> > + "available for your platform. Rerun cmake configure with" \
> > + "-DRISCV64_RUNTIME_CPU_DETECT=OFF."
> > +-#endif // defined(__linux__)
> > ++#endif // HAVE_GETAUXVAL || HAVE_ELF_AUX_INFO
> > +
> > +-#else // if AARCH64_RUNTIME_CPU_DETECT
> > ++#else // if RISCV64_RUNTIME_CPU_DETECT
> > +
> > + static inline uint32_t riscv64_cpu_detect()
> > + {
> > Index: patches/patch-source_common_x86_x86inc_asm
> > ===================================================================
> > RCS file:
> > /cvs/ports/multimedia/x265/patches/patch-source_common_x86_x86inc_asm,v
> > retrieving revision 1.2
> > diff -u -p -u -p -r1.2 patch-source_common_x86_x86inc_asm
> > --- patches/patch-source_common_x86_x86inc_asm 7 May 2024 15:01:27
> > -0000 1.2
> > +++ patches/patch-source_common_x86_x86inc_asm 10 May 2026 11:47:00
> > -0000
> > @@ -1,7 +1,7 @@
> > Index: source/common/x86/x86inc.asm
> > --- source/common/x86/x86inc.asm.orig
> > +++ source/common/x86/x86inc.asm
> > -@@ -731,6 +731,9 @@ BRANCH_INSTR jz, je, jnz, jne, jl, jle, jnl, jnle, jg,
> > +@@ -757,6 +757,9 @@ BRANCH_INSTR jz, je, jnz, jne, jl, jle, jnl, jnle, jg,
> > %endif
> > align function_align
> > %2:
> >
>