Compare commits

..

3 Commits

Author SHA1 Message Date
Raboneko 822b2806c3 bump: rust-mise rust-usage-cli 2026-05-31 15:48:15 +00:00
Raboneko 76f8eba410 bump: rpcs3 2026-05-31 14:23:27 +00:00
Raboneko b9e476d35e bump(branch): zig-master 2026-05-31 11:54:51 +00:00
14 changed files with 335 additions and 444 deletions
+1 -1
View File
@@ -5,7 +5,7 @@
%global crate mise
Name: rust-mise
Version: 2026.5.16
Version: 2026.5.17
Release: 1%{?dist}
Summary: Front-end to your dev env
+2 -2
View File
@@ -9,8 +9,8 @@
# GLIBCXX_ASSERTIONS is known to break RPCS3
%global build_cflags %(echo "%{__build_flags_lang_c}" | sed 's|-Wp,-D_GLIBCXX_ASSERTIONS ||g') %{?_distro_extra_cflags}
%global build_cxxflags %(echo "%{__build_flags_lang_cxx}" | sed 's|-Wp,-D_GLIBCXX_ASSERTIONS ||g') %{?_distro_extra_cflags}
%global commit 1bd246d2d31cee65b867d93ff82993cec8f012cb
%global ver 0.0.40-19408
%global commit 7b540cdb20fe3225b26251d0400300d0ebbd4dc7
%global ver 0.0.40-19412
Name: rpcs3
Version: %(echo %{ver} | sed 's/-/^/g')
+1 -1
View File
@@ -4,7 +4,7 @@
%global crate usage-cli
Name: rust-usage-cli
Version: 3.3.0
Version: 3.4.0
Release: 1%{?dist}
Summary: CLI for working with usage-based CLIs
+1 -1
View File
@@ -18,7 +18,7 @@
%global zig_cache_dir %{builddir}/zig-cache
Name: zig-master
Version: 0.17.0~dev.607+456b2ec07
Version: 0.17.0~dev.633+9c5655093
Release: 2%{?dist}
Summary: Master builds of the Zig language
License: MIT AND NCSA AND LGPL-2.1-or-later AND LGPL-2.1-or-later WITH GCC-exception-2.0 AND GPL-2.0-or-later AND GPL-2.0-or-later WITH GCC-exception-2.0 AND BSD-3-Clause AND Inner-Net-2.0 AND ISC AND LicenseRef-Fedora-Public-Domain AND GFDL-1.1-or-later AND ZPL-2.1
+1 -6
View File
@@ -1,10 +1,5 @@
// HACK: use RegEx to parse HTML!
let vers = find_all(`<a href="x265_([\d.]+).tar.gz"`, get("http://ftp.videolan.org/pub/videolan/x265/"));
// HACK: assume the last one is always the newest version!
let v = vers[vers.len()-1][1];
rpm.version(v);
rpm.version(vers[vers.len()-1][1]);
// Best update script ever!!!!11
if rpm.changed() {
rpm.global("api_version", find(`set\(X265_BUILD ([\d]+)\)`, get(`https://bitbucket.org/multicoreware/x265_git/raw/${v}/source/CMakeLists.txt`), 1));
}
-264
View File
@@ -1,264 +0,0 @@
diff -Naur x265_4.2.old/doc/reST/cli.rst x265_4.2/doc/reST/cli.rst
--- x265_4.2.old/doc/reST/cli.rst 2026-05-22 09:31:41.392908256 +0200
+++ x265_4.2/doc/reST/cli.rst 2026-05-22 09:31:41.566332687 +0200
@@ -2410,6 +2410,8 @@
13. chroma-derived-c
14. ictcp
15. ipt-pq-c2
+ 16. ycgco-re
+ 17. ycgco-ro
.. option:: --chromaloc <0..5>
diff -Naur x265_4.2.old/source/CMakeLists.txt x265_4.2/source/CMakeLists.txt
--- x265_4.2.old/source/CMakeLists.txt 2026-05-22 09:31:41.511324918 +0200
+++ x265_4.2/source/CMakeLists.txt 2026-05-22 09:31:41.564187955 +0200
@@ -890,6 +890,9 @@
elseif(ARM64 OR CROSS_COMPILE_ARM64)
# compile ARM64 arch asm files here
enable_language(ASM)
+ if(APPLE)
+ set(ARM_ARGS ${ARM_ARGS} -arch ${CMAKE_OSX_ARCHITECTURES})
+ endif()
foreach(ASM ${ARM_ASMS})
set(ASM_SRC ${CMAKE_CURRENT_SOURCE_DIR}/common/aarch64/${ASM})
list(APPEND ASM_SRCS ${ASM_SRC})
diff -Naur x265_4.2.old/source/common/frame.cpp x265_4.2/source/common/frame.cpp
--- x265_4.2.old/source/common/frame.cpp 2026-05-22 09:31:41.405483833 +0200
+++ x265_4.2/source/common/frame.cpp 2026-05-22 09:31:41.561815253 +0200
@@ -378,6 +378,11 @@
delete[] m_userSEI.payloads;
}
+ if (m_rpu.payloadSize)
+ {
+ delete[] m_rpu.payload;
+ }
+
if (m_ctuInfo)
{
uint32_t widthInCU = (m_param->sourceWidth + m_param->maxCUSize - 1) >> m_param->maxLog2CUSize;
diff -Naur x265_4.2.old/source/common/param.cpp x265_4.2/source/common/param.cpp
--- x265_4.2.old/source/common/param.cpp 2026-05-22 09:31:41.406483841 +0200
+++ x265_4.2/source/common/param.cpp 2026-05-22 09:31:41.566608597 +0200
@@ -408,6 +408,7 @@
param->preferredTransferCharacteristics = -1;
param->pictureStructure = -1;
param->bEmitCLL = 1;
+ param->bEmitAmbientViewingEnvironment = 0;
param->bEnableFrameDuplication = 0;
param->dupThreshold = 70;
@@ -1815,10 +1816,10 @@
" smpte170m, smpte240m, linear, log100, log316, iec61966-2-4, bt1361e,"
" iec61966-2-1, bt2020-10, bt2020-12, smpte-st-2084, smpte-st-428 or arib-std-b67");
CHECK(param->vui.matrixCoeffs < 0
- || param->vui.matrixCoeffs > 15
+ || param->vui.matrixCoeffs > 17
|| param->vui.matrixCoeffs == 3,
"Matrix Coefficients must be unknown, bt709, fcc, bt470bg, smpte170m,"
- " smpte240m, gbr, ycgco, bt2020nc, bt2020c, smpte-st-2085, chroma-nc, chroma-c, ictcp or ipt-pq-c2");
+ " smpte240m, gbr, ycgco, bt2020nc, bt2020c, smpte-st-2085, chroma-nc, chroma-c, ictcp, ipt-pq-c2, ycgco-re, or ycgco-ro");
CHECK(param->vui.chromaSampleLocTypeTopField < 0
|| param->vui.chromaSampleLocTypeTopField > 5,
"Chroma Sample Location Type Top Field must be 0-5");
@@ -1980,6 +1981,7 @@
|| param->bEmitIDRRecoverySEI
|| !!param->interlaceMode
|| param->preferredTransferCharacteristics > 1
+ || param->bEmitAmbientViewingEnvironment
|| strlen(param->toneMapFile)
|| strlen(param->naluFile));
@@ -2941,6 +2943,10 @@
dst->bEmitCLL = src->bEmitCLL;
dst->maxCLL = src->maxCLL;
dst->maxFALL = src->maxFALL;
+ dst->ambientIlluminance = src->ambientIlluminance;
+ dst->ambientLightX = src->ambientLightX;
+ dst->ambientLightY = src->ambientLightY;
+ dst->bEmitAmbientViewingEnvironment = src->bEmitAmbientViewingEnvironment;
dst->log2MaxPocLsb = src->log2MaxPocLsb;
dst->bEmitVUIHRDInfo = src->bEmitVUIHRDInfo;
dst->bEmitVUITimingInfo = src->bEmitVUITimingInfo;
diff -Naur x265_4.2.old/source/common/threadpool.cpp x265_4.2/source/common/threadpool.cpp
--- x265_4.2.old/source/common/threadpool.cpp 2026-05-22 09:31:41.414483910 +0200
+++ x265_4.2/source/common/threadpool.cpp 2026-05-22 09:31:41.556420957 +0200
@@ -125,12 +125,6 @@
{
THREAD_NAME("Worker", m_id);
-#if _WIN32
- SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);
-#else
- __attribute__((unused)) int val = nice(10);
-#endif
-
m_pool.setCurrentThreadAffinity();
sleepbitmap_t idBit = (sleepbitmap_t)1 << m_id;
@@ -835,10 +829,16 @@
else if (cpuCount >= 32)
return (p->sourceHeight > 2000) ? 6 : 5;
else if (cpuCount >= 16)
- return 4;
+#if MACOS && X265_ARCH_ARM64
+ return 16;
+#else
+ return 4;
+#endif
else if (cpuCount >= 8)
#if _WIN32 && X265_ARCH_ARM64
return cpuCount;
+#elif MACOS && X265_ARCH_ARM64
+ return 8;
#else
return 3;
#endif
diff -Naur x265_4.2.old/source/encoder/encoder.cpp x265_4.2/source/encoder/encoder.cpp
--- x265_4.2.old/source/encoder/encoder.cpp 2026-05-22 09:31:41.432484066 +0200
+++ x265_4.2/source/encoder/encoder.cpp 2026-05-22 09:31:41.562115269 +0200
@@ -1768,11 +1768,20 @@
}
copyUserSEIMessages(inFrame[0], inputPic[0]);
- /*Copy Dolby Vision RPU from inputPic to frame*/
+ /* Copy Dolby Vision RPU from inputPic to frame. */
+ if (inFrame[0]->m_rpu.payload && inFrame[0]->m_rpu.payloadSize < inputPic[0]->rpu.payloadSize)
+ {
+ delete[] inFrame[0]->m_rpu.payload;
+ inFrame[0]->m_rpu.payload = NULL;
+ }
+
if (inputPic[0]->rpu.payloadSize)
{
+ if (inFrame[0]->m_rpu.payload == NULL)
+ {
+ inFrame[0]->m_rpu.payload = new uint8_t[inputPic[0]->rpu.payloadSize];
+ }
inFrame[0]->m_rpu.payloadSize = inputPic[0]->rpu.payloadSize;
- inFrame[0]->m_rpu.payload = new uint8_t[inputPic[0]->rpu.payloadSize];
memcpy(inFrame[0]->m_rpu.payload, inputPic[0]->rpu.payload, inputPic[0]->rpu.payloadSize);
}
@@ -3475,6 +3484,15 @@
}
}
+ if (m_param->bEmitAmbientViewingEnvironment)
+ {
+ SEIAmbientViewingEnvironment ambientsei;
+ ambientsei.ambientIlluminance = m_param->ambientIlluminance;
+ ambientsei.ambientLightX = m_param->ambientLightX;
+ ambientsei.ambientLightY = m_param->ambientLightY;
+ ambientsei.writeSEImessages(bs, m_sps, NAL_UNIT_PREFIX_SEI, list, m_param->bSingleSeiNal);
+ }
+
if (m_param->bEmitInfoSEI)
{
char *opts = x265_param2string(m_param, m_sps.conformanceWindow.rightOffset, m_sps.conformanceWindow.bottomOffset);
diff -Naur x265_4.2.old/source/encoder/entropy.cpp x265_4.2/source/encoder/entropy.cpp
--- x265_4.2.old/source/encoder/entropy.cpp 2026-05-22 09:31:41.433484074 +0200
+++ x265_4.2/source/encoder/entropy.cpp 2026-05-22 09:31:41.565040953 +0200
@@ -2104,8 +2104,9 @@
void Entropy::codeMvd(const CUData& cu, uint32_t absPartIdx, int list)
{
const MV& mvd = cu.m_mvd[list][absPartIdx];
- const int hor = mvd.x;
- const int ver = mvd.y;
+ // to ensure the mvdLX is in the range of [-2^15, 2^15-1]
+ const int16_t hor = (int16_t)mvd.x;
+ const int16_t ver = (int16_t)mvd.y;
encodeBin(hor != 0 ? 1 : 0, m_contextState[OFF_MV_RES_CTX]);
encodeBin(ver != 0 ? 1 : 0, m_contextState[OFF_MV_RES_CTX]);
diff -Naur x265_4.2.old/source/encoder/sei.h x265_4.2/source/encoder/sei.h
--- x265_4.2.old/source/encoder/sei.h 2026-05-22 09:31:41.437484109 +0200
+++ x265_4.2/source/encoder/sei.h 2026-05-22 09:31:41.558216982 +0200
@@ -726,6 +726,25 @@
}
};
+class SEIAmbientViewingEnvironment : public SEI
+{
+public:
+ SEIAmbientViewingEnvironment()
+ {
+ m_payloadType = AMBIENT_VIEWING_ENVIRONMENT;
+ m_payloadSize = 8;
+ }
+ uint32_t ambientIlluminance;
+ uint16_t ambientLightX;
+ uint16_t ambientLightY;
+ void writeSEI(const SPS&)
+ {
+ WRITE_CODE(ambientIlluminance, 32, "ambient_illuminance");
+ WRITE_CODE(ambientLightX, 16, "ambient_light_x");
+ WRITE_CODE(ambientLightY, 16, "ambient_light_y");
+ }
+};
+
class SEIDecodedPictureHash : public SEI
{
public:
diff -Naur x265_4.2.old/source/x265cli.cpp x265_4.2/source/x265cli.cpp
--- x265_4.2.old/source/x265cli.cpp 2026-05-22 09:31:41.443484161 +0200
+++ x265_4.2/source/x265cli.cpp 2026-05-22 09:31:41.567013470 +0200
@@ -328,7 +328,7 @@
H0(" smpte240m, linear, log100, log316, iec61966-2-4, bt1361e, iec61966-2-1,\n");
H0(" bt2020-10, bt2020-12, smpte2084, smpte428, arib-std-b67. Default unknown\n");
H1(" --colormatrix <string> Specify color matrix setting from unknown, bt709, fcc, bt470bg, smpte170m,\n");
- H1(" smpte240m, gbr, ycgco, bt2020nc, bt2020c, smpte2085, chroma-derived-nc, chroma-derived-c, ictcp, ipt-pq-c2. Default unknown\n");
+ H1(" smpte240m, gbr, ycgco, bt2020nc, bt2020c, smpte2085, chroma-derived-nc, chroma-derived-c, ictcp, ipt-pq-c2, ycgco-re, ycgco-ro. Default unknown\n");
H1(" --chromaloc <integer> Specify chroma sample location (0 to 5). Default of %d\n", param->vui.chromaSampleLocTypeTopField);
H0(" --master-display <string> SMPTE ST 2086 master display color volume info SEI (HDR)\n");
H0(" format: G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min)\n");
@@ -1508,4 +1508,4 @@
#ifdef __cplusplus
}
-#endif
\ No newline at end of file
+#endif
diff -Naur x265_4.2.old/source/x265.h x265_4.2/source/x265.h
--- x265_4.2.old/source/x265.h 2026-05-22 09:31:41.443484161 +0200
+++ x265_4.2/source/x265.h 2026-05-22 09:31:41.566832268 +0200
@@ -378,6 +378,7 @@
MASTERING_DISPLAY_INFO = 137,
CONTENT_LIGHT_LEVEL_INFO = 144,
ALTERNATIVE_TRANSFER_CHARACTERISTICS = 147,
+ AMBIENT_VIEWING_ENVIRONMENT = 148,
ALPHA_CHANNEL_INFO = 165,
THREE_DIMENSIONAL_REFERENCE_DISPLAYS_INFO = 176,
MULTIVIEW_SCENE_INFO = 178,
@@ -753,7 +754,7 @@
"log316", "iec61966-2-4", "bt1361e", "iec61966-2-1", "bt2020-10", "bt2020-12",
"smpte2084", "smpte428", "arib-std-b67", 0 };
static const char * const x265_colmatrix_names[] = { "gbr", "bt709", "unknown", "", "fcc", "bt470bg", "smpte170m", "smpte240m",
- "ycgco", "bt2020nc", "bt2020c", "smpte2085", "chroma-derived-nc", "chroma-derived-c", "ictcp", "ipt-pq-c2", 0 };
+ "ycgco", "bt2020nc", "bt2020c", "smpte2085", "chroma-derived-nc", "chroma-derived-c", "ictcp", "ipt-pq-c2", "ycgco-re", "ycgco-ro", 0 };
static const char * const x265_sar_names[] = { "unknown", "1:1", "12:11", "10:11", "16:11", "40:33", "24:11", "20:11",
"32:11", "80:33", "18:11", "15:11", "64:33", "160:99", "4:3", "3:2", "2:1", 0 };
static const char * const x265_interlace_names[] = { "prog", "tff", "bff", 0 };
@@ -1978,6 +1979,11 @@
* value to that value. */
uint16_t maxLuma;
+ /* ISO/IEC 23008-2:2017, D.2.39 ambient viewing environment SEI message */
+ uint32_t ambientIlluminance;
+ uint16_t ambientLightX;
+ uint16_t ambientLightY;
+
/* Maximum of the picture order count */
int log2MaxPocLsb;
@@ -2189,6 +2195,9 @@
/*Emit content light level info SEI*/
int bEmitCLL;
+ /* Emit ambient viewing environment SEI */
+ int bEmitAmbientViewingEnvironment;
+
/*
* Signals picture structure SEI timing message for every frame
* picture structure 7 is signalled for frame doubling
@@ -1,11 +0,0 @@
diff -Naur x265_4.2.old/source/common/aarch64/asm-primitives.cpp x265_4.2/source/common/aarch64/asm-primitives.cpp
--- x265_4.2.old/source/common/aarch64/asm-primitives.cpp 2026-05-22 09:31:41.396956906 +0200
+++ x265_4.2/source/common/aarch64/asm-primitives.cpp 2026-05-22 09:31:41.512336554 +0200
@@ -31,6 +31,7 @@
extern "C" {
#include "fun-decls.h"
+#include "../arm/ipfilter8.h"
}
#define ALL_LUMA_TU_TYPED(prim, fncdef, fname, cpu) \
-11
View File
@@ -1,11 +0,0 @@
diff -Naur x265_4.2.old/source/dynamicHDR10/json11/json11.cpp x265_4.2/source/dynamicHDR10/json11/json11.cpp
--- x265_4.2.old/source/dynamicHDR10/json11/json11.cpp 2026-05-22 09:31:41.430924883 +0200
+++ x265_4.2/source/dynamicHDR10/json11/json11.cpp 2026-05-22 09:31:41.531899433 +0200
@@ -25,6 +25,7 @@
#include <cstdlib>
#include <cstdio>
#include <limits>
+#include <cstdint>
#if _MSC_VER
#pragma warning(disable: 4510) //const member cannot be default initialized
@@ -1,7 +1,6 @@
diff -Naur x265_4.2.old/source/CMakeLists.txt x265_4.2/source/CMakeLists.txt
--- x265_4.2.old/source/CMakeLists.txt 2026-05-22 09:31:41.395284685 +0200
+++ x265_4.2/source/CMakeLists.txt 2026-05-22 09:31:41.446248583 +0200
@@ -1075,7 +1075,15 @@
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -611,7 +611,15 @@
if(MSVC)
set_target_properties(x265-shared PROPERTIES OUTPUT_NAME libx265)
else()
@@ -18,10 +17,9 @@ diff -Naur x265_4.2.old/source/CMakeLists.txt x265_4.2/source/CMakeLists.txt
endif()
if(UNIX)
set_target_properties(x265-shared PROPERTIES VERSION ${X265_BUILD})
diff -Naur x265_4.2.old/source/encoder/api.cpp x265_4.2/source/encoder/api.cpp
--- x265_4.2.old/source/encoder/api.cpp 2026-05-22 09:31:41.431540093 +0200
+++ x265_4.2/source/encoder/api.cpp 2026-05-22 09:31:41.446517920 +0200
@@ -1119,7 +1119,7 @@
--- a/source/encoder/api.cpp
+++ b/source/encoder/api.cpp
@@ -704,7 +704,7 @@
#define ext ".dylib"
#else
#include <dlfcn.h>
@@ -30,3 +28,4 @@ diff -Naur x265_4.2.old/source/encoder/api.cpp x265_4.2/source/encoder/api.cpp
#endif
#if defined(__GNUC__) && __GNUC__ >= 8
#pragma GCC diagnostic ignored "-Wcast-function-type"
+11
View File
@@ -0,0 +1,11 @@
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -212,7 +212,7 @@
add_definitions(-std=gnu++98)
endif()
if(ENABLE_PIC)
- add_definitions(-fPIC)
+ add_definitions(-fPIC -DPIC)
endif(ENABLE_PIC)
if(NATIVE_BUILD)
if(INTEL_CXX)
@@ -0,0 +1,11 @@
--- a/source/x265.pc.in
+++ b/source/x265.pc.in
@@ -1,6 +1,6 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix}
-libdir=${exec_prefix}/@LIB_INSTALL_DIR@
+libdir=@LIB_INSTALL_DIR@
includedir=${prefix}/include
Name: @CMAKE_PROJECT_NAME@
@@ -0,0 +1,29 @@
From 8454caf458c5f5d20cce711ff8ea8de55ec1ae50 Mon Sep 17 00:00:00 2001
From: harlanc <hailiang8@staff.weibo.com>
Date: Thu, 1 Dec 2022 07:46:13 +0000
Subject: [PATCH] fix crash when SEI length is variable
---
source/encoder/encoder.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/source/encoder/encoder.cpp b/source/encoder/encoder.cpp
index 0fea6553c..5a3fcafc7 100644
--- a/source/encoder/encoder.cpp
+++ b/source/encoder/encoder.cpp
@@ -1103,6 +1103,12 @@ void Encoder::copyUserSEIMessages(Frame *frame, const x265_picture* pic_in)
input = seiMsg;
else
input = pic_in->userSEI.payloads[i];
+
+ if (frame->m_userSEI.payloads[i].payload && (frame->m_userSEI.payloads[i].payloadSize < input.payloadSize))
+ {
+ delete[] frame->m_userSEI.payloads[i].payload;
+ frame->m_userSEI.payloads[i].payload = NULL;
+ }
if (!frame->m_userSEI.payloads[i].payload)
frame->m_userSEI.payloads[i].payload = new uint8_t[input.payloadSize];
--
2.45.0
-26
View File
@@ -1,26 +0,0 @@
diff -Naur x265_4.2.old/source/CMakeLists.txt x265_4.2/source/CMakeLists.txt
--- x265_4.2.old/source/CMakeLists.txt 2026-05-22 09:31:41.492277260 +0200
+++ x265_4.2/source/CMakeLists.txt 2026-05-22 09:31:41.494071992 +0200
@@ -178,6 +178,7 @@
option(ENABLE_LIBVMAF "Enable VMAF" OFF)
if(ENABLE_LIBVMAF)
add_definitions(-DENABLE_LIBVMAF)
+ include_directories(${VMAF_INCLUDE_DIR})
endif()
if(X64)
option(ENABLE_CET "Enable Control-flow Enforcement" OFF)
@@ -1068,10 +1069,13 @@
if(EXTRA_LIB)
target_link_libraries(x265-shared ${EXTRA_LIB})
endif()
- target_link_libraries(x265-shared ${PLATFORM_LIBS})
+ target_link_libraries(x265-shared ${PLATFORM_LIBS})
if(SVTHEVC_FOUND)
target_link_libraries(x265-shared ${SVT_HEVC_LIBRARY})
endif(SVTHEVC_FOUND)
+ if(ENABLE_LIBVMAF)
+ target_link_libraries(x265-shared ${VMAF})
+ endif(ENABLE_LIBVMAF)
if(MSVC)
set_target_properties(x265-shared PROPERTIES OUTPUT_NAME libx265)
else()
+271 -113
View File
@@ -1,39 +1,41 @@
%global api_version 216
%global build_cxxflags %{__build_flags_lang_cxx} %{?_distro_extra_cxxflags} -include %_includedir/c++/*/cstdint
%ifarch %{ix86}
%global _pkg_extra_ldflags "-Wl,-z,notext"
%endif
# Use old cmake macro
%global __cmake_in_source_build 1
%global terrasrc_commit b018f3e14bd28f5b17c22446328c6decf9ce57a5
%global _so_version 212
Summary: H.265/HEVC encoder
Name: x265
Version: 4.2
Release: 1%{?dist}
Epoch: 1
URL: http://x265.org/
License: GPL-2.0-or-later
# source/Lib/TLibCommon - BSD
# source/Lib/TLibEncoder - BSD
# everything else - GPLv2+
License: GPLv2+ and BSD
Source0: https://bitbucket.org/multicoreware/%{name}_git/downloads/%{name}_%{version}.tar.gz
Patch0: %{name}-high-bit-depth-soname.patch
Patch1: %{name}-vmaf.patch
Patch2: %{name}-fix-aarch64-build.patch
Patch3: %{name}-gcc15.patch
# https://github.com/HandBrake/HandBrake/tree/2f464fcf93d411ebdd969b39d67739ed658c5e58
# Except:
# contrib/x265/A06-Update-version-strings.patch
# contrib/x265/A08-Fix-inconsistent-bitrate-in-second-pass.patch
Patch4: %{name}-HandBrake.patch
BuildRequires: cmake
# fix building as PIC
Patch0: https://raw.githubusercontent.com/terrapkg/pkg-x265/%terrasrc_commit/x265-pic.patch
Patch1: https://raw.githubusercontent.com/terrapkg/pkg-x265/%terrasrc_commit/x265-high-bit-depth-soname.patch
Patch2: https://raw.githubusercontent.com/terrapkg/pkg-x265/%terrasrc_commit/x265-pkgconfig_path_fix.patch
# https://bitbucket.org/multicoreware/x265_git/pull-requests/10
Patch3: https://bitbucket.org/harlancc/x265_git/commits/8454caf458c5f5d20cce711ff8ea8de55ec1ae50/raw#/x265-sei-length-crash-fix.patch
BuildRequires: gcc-c++
%ifnarch %{ix86}
BuildRequires: nasm >= 2.13
%endif
BuildRequires: numactl-devel
%ifarch x86_64
BuildRequires: libvmaf-devel
%endif
BuildRequires: libstdc++-devel
BuildRequires: git
BuildRequires: cmake
%{?el7:BuildRequires: epel-rpm-macros}
BuildRequires: nasm
BuildRequires: ninja-build
Packager: Terra Packaging Team <terra@fyralabs.com>
%ifnarch armv7hl armv7hnl s390 s390x
BuildRequires: numactl-devel
%endif
%description
The primary objective of x265 is to become the best H.265/HEVC encoder
@@ -54,7 +56,7 @@ This package contains the shared library.
%package devel
Summary: H.265/HEVC encoder library development files
Requires: %{name}-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%description devel
The primary objective of x265 is to become the best H.265/HEVC encoder
@@ -66,126 +68,282 @@ This package contains the shared library development files.
%prep
%autosetup -p1 -n %{name}_%{version}
sed -i -e 's|libdir=${exec_prefix}/@LIB_INSTALL_DIR@|libdir=@LIB_INSTALL_DIR@|g' source/x265.pc.in
%conf
%build
# High depth libraries (from source/h265.h):
# If the requested bitDepth is not supported by the linked libx265, it will
# attempt to dynamically bind from a shared library with an appropriate name:
# If the requested bitDepth is not supported by the linked libx265,
# it will attempt to dynamically bind x265_api_get() from a shared
# library with an appropriate name:
# 8bit: libx265_main.so
# 10bit: libx265_main10.so
# 12bit: libx265_main12.so
#
# Trying to link 10/12 bits statically inside the shared library (as per
# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=x265-hg#n45) makes the
# library not strippable.
# Setting GIT_ARCHETYPE to 1 is like using git as a build dependency:
configure_cmake() {
%cmake -G "Unix Makefiles" \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCMAKE_SKIP_RPATH=ON \
-DENABLE_ALPHA=ON \
-DENABLE_ASSEMBLY=ON \
-DENABLE_HDR10_PLUS=ON \
-DENABLE_MULTIVIEW=ON \
-DENABLE_PIC=ON \
-DENABLE_SCC_EXT=ON \
-DENABLE_SHARED=ON \
-DGIT_ARCHETYPE="1" \
%ifarch x86_64
-DENABLE_LIBVMAF=ON \
-DVMAF_INCLUDE_DIR=%{_includedir}/libvmaf \
%endif
%ifarch %{ix86}
-DENABLE_ASSEMBLY=OFF \
%endif
$* \
../source
build() {
%cmake -Wno-dev -G "Ninja" \
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON \
-DCMAKE_SKIP_RPATH:BOOL=YES \
-DENABLE_PIC:BOOL=ON \
-DENABLE_SHARED=ON \
-DENABLE_TESTS:BOOL=ON \
-DENABLE_HDR10_PLUS=YES \
-DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy \
$* \
../source
%cmake_build
}
%ifnarch %{ix86}
# 10/12 bit libraries are supported only on 64 bit
mkdir 12bit && pushd 12bit
configure_cmake \
# High depth 10/12 bit libraries are supported only on 64 bit. They require
# disabled AltiVec instructions for building on ppc64/ppc64le.
%ifarch x86_64 aarch64 ppc64 ppc64le
mkdir 10bit; pushd 10bit
build \
-DENABLE_CLI=OFF \
-DENABLE_ALTIVEC=OFF \
-DHIGH_BIT_DEPTH=ON
popd
mkdir 12bit; pushd 12bit
build \
-DENABLE_CLI=OFF \
-DENABLE_ALTIVEC=OFF \
-DHIGH_BIT_DEPTH=ON \
-DMAIN12=ON
popd
mkdir 10bit && pushd 10bit
configure_cmake \
-DENABLE_CLI=OFF \
-DHIGH_BIT_DEPTH=ON
popd
%endif
# 8 bit + dynamicHDR CLI
# TestBench dlopens the appropriate x265 library
mkdir 8bit && pushd 8bit
configure_cmake \
-DENABLE_CLI=ON \
-DENABLE_TESTS=ON
popd
%build
%ifnarch %{ix86}
pushd 12bit
%cmake_build
popd
pushd 10bit
%cmake_build
popd
%endif
pushd 8bit
%cmake_build
# 8 bit base library + encoder
mkdir 8bit; pushd 8bit
build
popd
%install
for i in 8 10 12; do
if [ -d ${i}bit ]; then
pushd ${i}bit
%cmake_install
rm -f %{buildroot}%{_libdir}/libx265_main${i}.so
popd
fi
if [ -d ${i}bit ]; then
pushd ${i}bit
%cmake_install
# Remove unversioned library, should not be linked to
rm -f %{buildroot}%{_libdir}/libx265_main${i}.so
popd
fi
done
find %{buildroot} -name "*.a" -delete
%check
for i in 8 10 12; do
if [ -d ${i}bit ]; then
pushd ${i}bit
test/TestBench || :
popd
fi
if [ -d ${i}bit ]; then
pushd ${i}bit
test/TestBench || :
popd
fi
done
%ldconfig_scriptlets libs
%files
%doc readme.rst
%license COPYING
%{_bindir}/%{name}
%{_bindir}/x265
%files libs
%license COPYING
%{_libdir}/libhdr10plus.so
%{_libdir}/lib%{name}.so.%{api_version}
%ifnarch %{ix86}
%{_libdir}/lib%{name}_main10.so.%{api_version}
%{_libdir}/lib%{name}_main12.so.%{api_version}
%{_libdir}/libx265.so.*
%ifarch x86_64 aarch64 ppc64 ppc64le
%{_libdir}/libx265_main10.so.*
%{_libdir}/libx265_main12.so.*
%endif
%files devel
%doc doc/*
%{_includedir}/hdr10plus.h
%{_includedir}/%{name}.h
%{_includedir}/%{name}_config.h
%{_libdir}/lib%{name}.so
%{_libdir}/pkgconfig/%{name}.pc
%{_includedir}/x265.h
%{_includedir}/x265_config.h
%{_libdir}/libx265.so
%{_libdir}/pkgconfig/x265.pc
%changelog
* Sun May 31 2026 Gilver E. <roachy@fyralabs.com> - 4.2-1
- Updated patches and spec based on RPM Fusion and Negativo's changes
* Sun Sep 15 2024 Leigh Scott <leigh123linux@gmail.com> - 4.0-1
- Update to 4.0
* Fri Aug 02 2024 RPM Fusion Release Engineering <sergiomb@rpmfusion.org> - 3.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Thu May 16 2024 Dominik Mierzejewski <rpm@greysector.net> - 3.6-2
- Backport a fix for crashes when encoding with variable length SEI
* Sat Apr 06 2024 Leigh Scott <leigh123linux@gmail.com> - 3.6-1
- Update to 3.6
* Sun Feb 04 2024 RPM Fusion Release Engineering <sergiomb@rpmfusion.org> - 3.5-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Wed Aug 02 2023 RPM Fusion Release Engineering <sergiomb@rpmfusion.org> - 3.5-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Thu Dec 29 2022 Nicolas Chauvet <kwizart@gmail.com> - 3.5-5
- Enable ENABLE_HDR10_PLUS everywhere rfbz#6454
* Mon Aug 08 2022 RPM Fusion Release Engineering <sergiomb@rpmfusion.org> - 3.5-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild and ffmpeg
5.1
* Wed Feb 09 2022 RPM Fusion Release Engineering <sergiomb@rpmfusion.org> - 3.5-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Tue Aug 03 2021 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 3.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Apr 13 2021 Leigh Scott <leigh123linux@gmail.com> - 3.5-1
- Update to 3.5
* Tue Mar 16 2021 Leigh Scott <leigh123linux@gmail.com> - 3.4-5
- Enable HDR10+.
* Thu Feb 04 2021 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 3.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Aug 19 2020 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 3.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Thu Jul 23 2020 Leigh Scott <leigh123linux@gmail.com> - 3.4-2
- Use old cmake macro
* Sun May 31 2020 Leigh Scott <leigh123linux@gmail.com> - 3.4-1
- Update to 3.4
* Wed Mar 11 2020 Nicolas Chauvet <kwizart@gmail.com> - 3.3-2
- Rebuilt for i686
* Sun Feb 23 2020 Leigh Scott <leigh123linux@googlemail.com> - 3.3-1
- Update to 3.3
* Wed Feb 05 2020 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 3.2.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Nov 28 2019 Leigh Scott <leigh123linux@googlemail.com> - 3.2.1-1
- Update to 3.2.1
- Switch upstream source url
* Fri Aug 09 2019 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 3.1.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sun Aug 04 2019 Leigh Scott <leigh123linux@googlemail.com> - 3.1.2-1
- Update to 3.1.2
* Fri Jun 28 2019 Nicolas Chauvet <kwizart@gmail.com> - 3.1-1
- Update to 3.1
- Switch to github mirror
* Tue Mar 05 2019 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 3.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Thu Feb 28 2019 Leigh Scott <leigh123linux@googlemail.com> - 3.0-1
- Update to 3.0
* Sun Dec 30 2018 Leigh Scott <leigh123linux@googlemail.com> - 2.9-3
- Rebuild against newer nasm on el7 (rfbz #5128)
* Wed Nov 21 2018 Antonio Trande <sagitter@fedoraproject.org> - 2.9-2
- Rebuild for ffmpeg-3.* on el7
* Sun Nov 18 2018 Leigh Scott <leigh123linux@googlemail.com> - 2.9-1
- Update to 2.9
* Thu Oct 04 2018 Sérgio Basto <sergio@serjux.com> - 2.8-1
- Update to 2.8 more 2 patches to fix builds on non-x86 and arm
https://bitbucket.org/multicoreware/x265/issues/404/28-fails-to-build-on-ppc64le-gnu-linux
https://bitbucket.org/multicoreware/x265/issues/406/arm-assembly-fail-to-compile-on-18
* Sun Aug 19 2018 Leigh Scott <leigh123linux@googlemail.com> - 2.7-5
- Rebuilt for Fedora 29 Mass Rebuild binutils issue
* Fri Jul 27 2018 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 2.7-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Sun Apr 08 2018 Leigh Scott <leigh123linux@googlemail.com> - 2.7-3
- Fix pkgconfig file (rfbz #4853)
* Tue Feb 27 2018 Nicolas Chauvet <kwizart@gmail.com> - 2.7-2
- Fix CFLAGS on ARM
* Tue Feb 27 2018 Leigh Scott <leigh123linux@googlemail.com> - 2.7-1
- update to 2.7
- Drop shared test patch as it causes nasm build to fail
- Fix scriptlets
- Use ninja to build
* Sat Dec 30 2017 Sérgio Basto <sergio@serjux.com> - 2.6-1
- Update x265 to 2.6
* Mon Oct 16 2017 Leigh Scott <leigh123linux@googlemail.com> - 2.5-1
- update to 2.5
* Thu Aug 31 2017 RPM Fusion Release Engineering <kwizart@rpmfusion.org> - 2.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Apr 29 2017 Leigh Scott <leigh123linux@googlemail.com> - 2.4-1
- update to 2.4
* Mon Apr 10 2017 Simone Caronni <negativo17@gmail.com> - 2.2-3
- Use source from multicoreware website.
- Clean up SPEC file a bit (formatting, 80 char wide descriptions).
- Enable shared 10/12 bit libraries on 64 bit architectures.
* Mon Mar 20 2017 RPM Fusion Release Engineering <kwizart@rpmfusion.org> - 2.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Tue Jan 03 2017 Dominik Mierzejewski <rpm@greysector.net> - 2.2-1
- update to 2.2
- spell out SO version in file list
- fix typo in patch
* Mon Nov 07 2016 Sérgio Basto <sergio@serjux.com> - 2.1-1
- Update to 2.1
* Thu Aug 18 2016 Sérgio Basto <sergio@serjux.com> - 1.9-3
- Clean spec, Vascom patches series, rfbz #4199, add license tag
* Tue Jul 19 2016 Dominik Mierzejewski <rpm@greysector.net> - 1.9-2
- use https for source URL
- enable NUMA support
- make sure Fedora compiler flags are used on ARM
* Fri Apr 08 2016 Adrian Reber <adrian@lisas.de> - 1.9-1
- Update to 1.9
* Sun Oct 25 2015 Dominik Mierzejewski <rpm@greysector.net> 1.8-2
- fix building as PIC
- update SO version in file list
* Sat Oct 24 2015 Nicolas Chauvet <kwizart@gmail.com> - 1.8-1
- Update to 1.8
- Avoid tests for now
* Wed Apr 15 2015 Dominik Mierzejewski <rpm@greysector.net> 1.6-1
- update to 1.6 (ABI bump, rfbz#3593)
- release tarballs are now hosted on videolan.org
- drop obsolete patches
* Thu Dec 18 2014 Dominik Mierzejewski <rpm@greysector.net> 1.2-6
- fix build on armv7l arch (partially fix rfbz#3361, patch by Nicolas Chauvet)
- don't run tests on ARM for now (rfbz#3361)
* Sun Aug 17 2014 Dominik Mierzejewski <rpm@greysector.net> 1.2-5
- don't include contributor agreement in doc
- make sure /usr/share/doc/x265 is owned
- add a comment noting which files are BSD-licenced
* Fri Aug 08 2014 Dominik Mierzejewski <rpm@greysector.net> 1.2-4
- don't create bogus soname (patch by Xavier)
* Thu Jul 17 2014 Dominik Mierzejewski <rpm@greysector.net> 1.2-3
- fix tr call to remove DOS EOL
- build the library with -fPIC on arm and i686, too
* Sun Jul 13 2014 Dominik Mierzejewski <rpm@greysector.net> 1.2-2
- use version in source URL
- update License tag
- fix EOL in drag-uncrustify.bat
- don't link test binaries with shared binary on x86 (segfault)
* Thu Jul 10 2014 Dominik Mierzejewski <rpm@greysector.net> 1.2-1
- initial build
- fix pkgconfig file install location
- link test binaries with shared library