From 757acf21b82a3ca9a070e0267acc10faced77bb3 Mon Sep 17 00:00:00 2001 From: Ryan Burns Date: Wed, 13 May 2026 15:08:53 -0700 Subject: [PATCH 1/2] x265: 4.1 -> 4.2 Changelog: https://x265.readthedocs.io/en/master/releasenotes.html#version-4-2 --- pkgs/by-name/x2/x265/package.nix | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/pkgs/by-name/x2/x265/package.nix b/pkgs/by-name/x2/x265/package.nix index 80ef96001f7c..c51679eca4e7 100644 --- a/pkgs/by-name/x2/x265/package.nix +++ b/pkgs/by-name/x2/x265/package.nix @@ -36,7 +36,7 @@ in stdenv.mkDerivation (finalAttrs: { pname = "x265"; - version = "4.1"; + version = "4.2"; outputs = [ "out" @@ -47,7 +47,7 @@ stdenv.mkDerivation (finalAttrs: { # whether we fetch a source tarball or a tag from the git repo src = fetchurl { url = "https://bitbucket.org/multicoreware/x265_git/downloads/x265_${finalAttrs.version}.tar.gz"; - hash = "sha256-oxaZxqiYBrdLAVHl5qffZd5LSQUEgv5ev4pDedevjyk="; + hash = "sha256-QLHqBFPgMJ8OupNODd9TP49ilZZmeeiJTo8cHI1eEhA="; }; patches = [ @@ -55,26 +55,6 @@ stdenv.mkDerivation (finalAttrs: { # fix compilation with gcc15 # https://bitbucket.org/multicoreware/x265_git/pull-requests/36 ./gcc15-fixes.patch - - # Fix the build with CMake 4. - (fetchpatch { - name = "x265-fix-cmake-4-1.patch"; - url = "https://bitbucket.org/multicoreware/x265_git/commits/b354c009a60bcd6d7fc04014e200a1ee9c45c167/raw"; - stripLen = 1; - hash = "sha256-kS+hYZb5dnIlNoZ8ABmNkLkPx+NqCPy+DonXktBzJAE="; - }) - (fetchpatch { - name = "x265-fix-cmake-4-2.patch"; - url = "https://bitbucket.org/multicoreware/x265_git/commits/51ae8e922bcc4586ad4710812072289af91492a8/raw"; - stripLen = 1; - hash = "sha256-ZrpyfSnijUgdyVscW73K48iEXa9k85ftNaQdr0HWSYg="; - }) - (fetchpatch { - name = "x265-fix-cmake-4-3.patch"; - url = "https://bitbucket.org/multicoreware/x265_git/commits/78e5ac35c13c5cbccc5933083edceb0d3eaeaa21/raw"; - stripLen = 1; - hash = "sha256-qEihgUKGEdthbKz67s+/hS/qdpzl+3tEB3gx2tarax4="; - }) ] # TODO: remove after update to version 4.2 ++ lib.optionals (stdenv.hostPlatform.isAarch32 && stdenv.hostPlatform.isLinux) [ From a7daddef5b46fd55f43e3aad943882516d5609c7 Mon Sep 17 00:00:00 2001 From: Ryan Burns Date: Wed, 13 May 2026 18:14:53 -0700 Subject: [PATCH 2/2] handbrake: 1.10.2 -> 1.11.1 --- pkgs/by-name/ha/handbrake/package.nix | 149 +++++++++++++++----------- 1 file changed, 85 insertions(+), 64 deletions(-) diff --git a/pkgs/by-name/ha/handbrake/package.nix b/pkgs/by-name/ha/handbrake/package.nix index ce91685cf0b2..edc886281aca 100644 --- a/pkgs/by-name/ha/handbrake/package.nix +++ b/pkgs/by-name/ha/handbrake/package.nix @@ -10,7 +10,10 @@ { stdenv, lib, + applyPatches, fetchFromGitHub, + fetchFromGitLab, + fetchpatch2, # For tests testers, runCommand, @@ -26,7 +29,7 @@ numactl, writeText, # Processing, video codecs, containers - ffmpeg_7-full, + ffmpeg_8-full, nv-codec-headers, libogg, x264, @@ -85,14 +88,35 @@ }: let - version = "1.10.2"; + version = "1.11.1"; - src = fetchFromGitHub { - owner = "HandBrake"; - repo = "HandBrake"; - # uses version commit for logic in version.txt - rev = "dddf75f756e56d2b8dbb0609175bc12047a4841d"; - hash = "sha256-CIMpJDJ0IIz95f3/zxeQqpCFpHWEmdgA+VaaUDY516A="; + src = applyPatches { + src = fetchFromGitHub { + owner = "HandBrake"; + repo = "HandBrake"; + # uses version commit for logic in version.txt + rev = "4ce99a885cde39b3511016efdb5124726819defb"; + hash = "sha256-oWXNiRK0wbmINnjM3GrOIawcSULTuy3yANfgW8li9F0="; + }; + + patches = [ + # Only needed so the subsequent patch applies + (fetchpatch2 { + url = "https://github.com/HandBrake/HandBrake/commit/c8e16778a330881af36fa32004f887bd73874d15.patch"; + hash = "sha256-i3/X9opDzsZIO7bjLHHZltuQH93uENRF0t7FP7DDdBM="; + }) + # Update x265 submodule to v4.2, drop in next release + (fetchpatch2 { + url = "https://github.com/HandBrake/HandBrake/commit/432514bf839e7280511e4a7afc35fb4868ef4d0b.patch"; + excludes = [ + "contrib/x265/module.defs" + "contrib/x265_8bit/module.defs" + "contrib/x265_10bit/module.defs" + "contrib/x265_12bit/module.defs" + ]; + hash = "sha256-xwIY1pO9mKbrQFjQCENuvntIoiZTHeUVg8axrl3zxxo="; + }) + ]; }; # Handbrake maintains a set of ffmpeg patches. In particular, these @@ -100,70 +124,67 @@ let # https://github.com/HandBrake/HandBrake/issues/4029 # base ffmpeg version is specified in: # https://github.com/HandBrake/HandBrake/blob/master/contrib/ffmpeg/module.defs - ffmpeg-version = "7.1.1"; - ffmpeg-hb = - (ffmpeg_7-full.override { - version = ffmpeg-version; - hash = "sha256-GyS8imOqfOUPxXrzCiQtzCQIIH6bvWmQAB0fKUcRsW4="; - }).overrideAttrs - (old: { - patches = (old.patches or [ ]) ++ [ - "${src}/contrib/ffmpeg/A01-mov-read-name-track-tag-written-by-movenc.patch" - "${src}/contrib/ffmpeg/A02-movenc-write-3gpp-track-titl-tag.patch" - "${src}/contrib/ffmpeg/A03-mov-read-3gpp-udta-tags.patch" - "${src}/contrib/ffmpeg/A04-movenc-write-3gpp-track-names-tags-for-all-available.patch" - "${src}/contrib/ffmpeg/A05-avformat-mov-add-support-audio-fallback-track-ref.patch" - "${src}/contrib/ffmpeg/A06-dvdsubdec-fix-processing-of-partial-packets.patch" - "${src}/contrib/ffmpeg/A07-dvdsubdec-return-number-of-bytes-used.patch" - "${src}/contrib/ffmpeg/A08-dvdsubdec-use-pts-of-initial-packet.patch" - "${src}/contrib/ffmpeg/A09-dvdsubdec-add-an-option-to-output-subtitles-with-emp.patch" - "${src}/contrib/ffmpeg/A10-ccaption_dec-fix-pts-in-real_time-mode.patch" - "${src}/contrib/ffmpeg/A11-avformat-matroskaenc-return-error-if-aac-extradata-c.patch" - "${src}/contrib/ffmpeg/A12-videotoolbox-disable-H.264-10-bit-on-Intel-macOS-it-.patch" - - # patch to fix - # commented out because it causes ffmpeg's filter-pixdesc-p010le test to fail. - # "${src}/contrib/ffmpeg/A13-libswscale-fix-yuv420p-to-p01xle-color-conversion-bu.patch" - - "${src}/contrib/ffmpeg/A14-hevc_mp4toannexb.c-fix-qsv-decode-of-10bit-hdr.patch" - "${src}/contrib/ffmpeg/A15-Expose-the-unmodified-Dolby-Vision-RPU-T35-buffers.patch" - "${src}/contrib/ffmpeg/A16-avcodec-amfenc-Add-support-for-on-demand-key-frames.patch" - "${src}/contrib/ffmpeg/A17-avcodec-amfenc-properly-set-primaries-transfer-and-m.patch" - "${src}/contrib/ffmpeg/A18-libavcodec-qsvenc-update-has_b_frames-value.patch" - "${src}/contrib/ffmpeg/A19-libavcodec-qsv-enable-av1-scc.patch" - "${src}/contrib/ffmpeg/A20-Revert-avcodec-amfenc-GPU-driver-version-check.patch" - "${src}/contrib/ffmpeg/A21-lavc-pgssubdec-Add-graphic-plane-and-cropping.patch" - "${src}/contrib/ffmpeg/A22-avformat-mov-read-and-write-additional-iTunes-style-.patch" - "${src}/contrib/ffmpeg/A23-avformat-movenc-write-iTunEXTC-and-iTunMOVI-metadata.patch" - "${src}/contrib/ffmpeg/A24-AV1-videotoolbox.patch" - "${src}/contrib/ffmpeg/A25-videotoolbox-speedup-decoding.patch" - "${src}/contrib/ffmpeg/A28-enable-av1_mf-encoder.patch" - "${src}/contrib/ffmpeg/A30-qsv-fixed-BT2020-BT709-conversion.patch" - "${src}/contrib/ffmpeg/A31-Parse-EAC3-Atmos-ComplexityIndex-for-MP4-remuxing.patch" - ]; - }); + ffmpeg-hb = ffmpeg_8-full.overrideAttrs (old: { + patches = (old.patches or [ ]) ++ [ + "${src}/contrib/ffmpeg/A01-mov-read-name-track-tag-written-by-movenc.patch" + "${src}/contrib/ffmpeg/A02-movenc-write-3gpp-track-titl-tag.patch" + "${src}/contrib/ffmpeg/A03-mov-read-3gpp-udta-tags.patch" + "${src}/contrib/ffmpeg/A04-movenc-write-3gpp-track-names-tags-for-all-available.patch" + "${src}/contrib/ffmpeg/A05-avformat-mov-add-support-audio-fallback-track-ref.patch" + "${src}/contrib/ffmpeg/A06-avformat-mov-read-and-write-additional-iTunes-style-.patch" + "${src}/contrib/ffmpeg/A07-avformat-movenc-write-iTunEXTC-and-iTunMOVI-metadata.patch" + "${src}/contrib/ffmpeg/A08-dvdsubdec-fix-processing-of-partial-packets.patch" + "${src}/contrib/ffmpeg/A09-dvdsubdec-return-number-of-bytes-used.patch" + "${src}/contrib/ffmpeg/A10-dvdsubdec-use-pts-of-initial-packet.patch" + "${src}/contrib/ffmpeg/A11-dvdsubdec-add-an-option-to-output-subtitles-with-emp.patch" + "${src}/contrib/ffmpeg/A12-ccaption_dec-fix-pts-in-real_time-mode.patch" + "${src}/contrib/ffmpeg/A13-avformat-matroskaenc-return-error-if-aac-extradata-c.patch" + "${src}/contrib/ffmpeg/A14-Expose-the-unmodified-Dolby-Vision-RPU-T35-buffers.patch" + "${src}/contrib/ffmpeg/A15-lavc-pgssubdec-Add-graphic-plane-and-cropping.patch" + "${src}/contrib/ffmpeg/A16-libavcodec-qsvenc.c-update-has_b_frames-value-after-.patch" + "${src}/contrib/ffmpeg/A17-qsv-enable-av1-scc.patch" + "${src}/contrib/ffmpeg/A18-fixed-BT2020-BT709-conversion-via-VPP.patch" + "${src}/contrib/ffmpeg/A19-videotoolbox-disable-H.264-10-bit-on-Intel-macOS-it-.patch" + "${src}/contrib/ffmpeg/A20-videotoolbox-speedup-decoding.patch" + "${src}/contrib/ffmpeg/A21-Revert-avcodec-amfenc-GPU-driver-version-check.patch" + "${src}/contrib/ffmpeg/A22-fix-d3d11-static-pool-size-error.patch" + "${src}/contrib/ffmpeg/A23-movenc-set-the-chapters-track-language-to-the-same-a.patch" + "${src}/contrib/ffmpeg/A24-movenc-use-version-2-audio-descriptor-for-2-channels.patch" + ]; + }); x265-hb = x265.overrideAttrs (old: { - version = "4.1"; - sourceRoot = "x265_4.1/source"; + version = "4.2"; + sourceRoot = "x265_4.2/source"; src = fetchurl { - url = "https://bitbucket.org/multicoreware/x265_git/downloads/x265_4.1.tar.gz"; - hash = "sha256-oxaZxqiYBrdLAVHl5qffZd5LSQUEgv5ev4pDedevjyk="; + url = "https://bitbucket.org/multicoreware/x265_git/downloads/x265_4.2.tar.gz"; + hash = "sha256-QLHqBFPgMJ8OupNODd9TP49ilZZmeeiJTo8cHI1eEhA="; }; # nixpkgs' x265 sourceRoot is x265-.../source whereas handbrake's x265 patches # are written with respect to the parent directory instead of that source directory. # patches which don't cleanly apply are commented out. postPatch = (old.postPatch or "") + '' pushd .. - patch -p1 < ${src}/contrib/x265/A01-Do-not-set-thread-priority-on-Windows.patch - patch -p1 < ${src}/contrib/x265/A02-Apple-Silicon-tuning.patch - patch -p1 < ${src}/contrib/x265/A03-Implement-ambient-viewing-environment-sei.patch - patch -p1 < ${src}/contrib/x265/A04-add-new-matrix-coefficients-from-H.273-v3.patch - patch -p1 < ${src}/contrib/x265/A05-Fix-Dolby-Vision-RPU-memory-management.patch - # patch -p1 < ${src}/contrib/x265/A06-Update-version-strings.patch - patch -p1 < ${src}/contrib/x265/A07-Fix-macOS-cross-compilation.patch - # patch -p1 < ${src}/contrib/x265/A08-Fix-inconsistent-bitrate-in-second-pass.patch - patch -p1 < ${src}/contrib/x265/A09-Ensuring-the-mvdLX-is-compliant.patch + for p in ${src}/contrib/x265/*.patch; do + patch -p1 < "$p" + done + popd + ''; + }); + + svt-av1-hb = svt-av1.overrideAttrs (old: rec { + version = "4.0.1"; + src = fetchFromGitLab { + owner = "AOMediaCodec"; + repo = "SVT-AV1"; + rev = "v${version}"; + hash = "sha256-7krVkLZxgolqPTkuyKAx07BekAPacftcGZ44lQTQFZQ="; + }; + postPatch = (old.postPatch or "") + '' + pushd .. + for p in ${src}/contrib/svt-av1/*.patch; do + patch -p1 < "$p" + done popd ''; }); @@ -268,7 +289,7 @@ let libvpx libxml2 speex - svt-av1 + svt-av1-hb x264 x265-hb xz