New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

handbrake: 1.1.2 -> 1.2.0 #52453

Merged
merged 7 commits into from Jan 11, 2019
@@ -1,72 +1,64 @@
# Upstream distributes HandBrake with bundle of according versions of libraries and patches to them.
#
# Derivation patches HandBrake to use our closure.
# Derivation patches HandBrake to use Nix closure dependencies.
#

{ stdenv, lib, fetchurl,
python2, pkgconfig, yasm, zlib,
autoconf, automake, libtool, m4, jansson,
libass, libiconv, libsamplerate, fribidi, libxml2, bzip2,
libogg, libopus, libtheora, libvorbis, libdvdcss, a52dec,
lame, libdvdread, libdvdnav, libbluray,
mp4v2, mpeg2dec, x264, x265, libmkv,
fontconfig, freetype, hicolor-icon-theme,
glib, gtk3, intltool, libnotify,
gst_all_1, dbus-glib, udev, libgudev, libvpx,
useGtk ? true, wrapGAppsHook ? null, libappindicator-gtk3 ? null,
useFfmpeg ? false, libav_12 ? null, ffmpeg ? null,
{ stdenv, lib, fetchurl, callPackage,
# Main build tools
python2, pkgconfig, autoconf, automake, cmake, nasm, libtool, m4,
# Processing, video codecs, containers
ffmpeg-full, nv-codec-headers, libogg, x264, x265, libvpx, libtheora,
# Codecs, audio
libopus, lame, libvorbis, a52dec, speex, libsamplerate,
# Text processing
libiconv, fribidi, fontconfig, freetype, libass, jansson, libxml2,
# Optical media
libdvdread, libdvdnav, libdvdcss, libbluray,
useGtk ? true, wrapGAppsHook ? null,
intltool ? null,
glib ? null,
gtk3 ? null,
libappindicator-gtk3 ? null,
libnotify ? null,
gst_all_1 ? null,
dbus-glib ? null,
udev ? null,
libgudev ? null,
hicolor-icon-theme ? null,
useFdk ? false, fdk_aac ? null
}:

stdenv.mkDerivation rec {
# TODO: Release 1.2.0 would switch LibAV to FFmpeg.
version = "1.1.2";
version = "1.2.0";
name = "handbrake-${version}";

src = fetchurl {
url = ''https://download2.handbrake.fr/${version}/HandBrake-${version}-source.tar.bz2'';
sha256 = "0bny0hwlr55g2c69rsamv0xvwmfh1s4a582b9vq20xv5ly84m6ms";
sha256 = "03clkknaq3mz84p85cvr21gsy9b8vv2g4vvyfz44hz8la253jfqi";
};

patched_libav_12 = libav_12.overrideAttrs (super: {
patches = (super.patches or []) ++ [(
# NOTE: 2018-04-26: HandBrake compilation (1.1.0) requires
# a patch of LibAV (12.3) from HandBrake team. This patch
# not went LibAV upstream.
fetchurl {
url = ''https://raw.githubusercontent.com/HandBrake/HandBrake/9e1f245708a157231c427c0ef9b91729d59a30e1/contrib/ffmpeg/A21-mp4-sdtp.patch'';
sha256 = "14grzyvb1qbb90k31ibabnwmwnrc48ml6h2z0rjamdv83q45jq4g";
})
# NOTE: 2018-11-11: Transcoding to MP4 can fail with:
#
# Tag avc1/0x31637661 incompatible with output codec id '28'
# muxavformat: avformat_write_header failed!
#
# Fix using Handbrake patch that is not upstream in libav.
(
fetchurl {
url = ''https://raw.githubusercontent.com/HandBrake/HandBrake/df6c26fa261423237ee2bec0bf784c32cbfda3fa/contrib/ffmpeg/A20-avc3-hvc1-override.patch'';
sha256 = "1vijd7bmkzp3sb6zhpcpdni8fz4h13wgglnml6cz9f44j41w2c3v";
})
];
});

nativeBuildInputs = [
python2 pkgconfig yasm autoconf automake libtool m4
python2 pkgconfig autoconf automake cmake nasm libtool m4
] ++ lib.optionals useGtk [ intltool wrapGAppsHook ];

buildInputs = [
fribidi fontconfig freetype jansson zlib
libass libiconv libsamplerate libxml2 bzip2
libogg libopus libtheora libvorbis libdvdcss a52dec libmkv
lame libdvdread libdvdnav libbluray mp4v2 mpeg2dec x264 x265 libvpx
ffmpeg-full libogg libtheora x264 x265 libvpx
libopus lame libvorbis a52dec speex libsamplerate
libiconv fribidi fontconfig freetype libass jansson libxml2
libdvdread libdvdnav libdvdcss libbluray
] ++ lib.optionals useGtk [
glib gtk3 libappindicator-gtk3 libnotify
gst_all_1.gstreamer gst_all_1.gst-plugins-base dbus-glib udev
libgudev hicolor-icon-theme
] ++ (if useFfmpeg then [ ffmpeg ] else [ patched_libav_12 ])
++ lib.optional useFdk fdk_aac;
] ++ lib.optional useFdk fdk_aac
# NOTE: 2018-12-27: Handbrake supports nv-codec-headers for Linux only,
# look at ./make/configure.py search "enable_nvenc"
++ lib.optional stdenv.isLinux nv-codec-headers;

# NOTE: 2018-12-25: v1.2.0 now requires cmake dep
# (default distribution bundles&builds 3rd party libs),
# don't trigger cmake build
dontUseCmakeConfigure = true;
enableParallelBuilding = true;

preConfigure = ''
@@ -87,6 +79,7 @@ stdenv.mkDerivation rec {
(if useFdk then "--enable-fdk-aac" else "")
];

# NOTE: 2018-12-27: Check NixOS HandBrake test if changing
NIX_LDFLAGS = [
"-lx265"
];
@@ -96,7 +96,7 @@
, libxcbshapeExtlib ? true # X11 grabbing shape rendering
, libXv ? null # Xlib support
, lzma ? null # xz-utils
, nvenc ? false, nvidia-video-sdk ? null # NVIDIA NVENC support
, nvenc ? false, nvidia-video-sdk ? null, nv-codec-headers ? null # NVIDIA NVENC support
, callPackage # needed for NVENC to access external ffmpeg nvidia headers
, openal ? null # OpenAL 1.1 capture support
#, opencl ? null # OpenCL code
@@ -176,8 +176,6 @@
let
inherit (stdenv) isCygwin isFreeBSD isLinux;
inherit (stdenv.lib) optional optionals optionalString enableFeature;

nv-codec-headers = callPackage ./nv-codec-headers.nix { };
in

/*
@@ -2,18 +2,18 @@

stdenv.mkDerivation rec {
name = "nv-codec-headers-${version}";
version = "n8.1.24.2";
version = "8.2.15.6";

src = fetchgit {
url = "https://git.videolan.org/git/ffmpeg/nv-codec-headers.git";
rev = "${version}";
sha256 = "122i3f6whiz5yp44dhk73ifr1973z8vvfbg4216vb782bl8b5bam";
rev = "n${version}";
sha256 = "0216ww8byjxz639kagyw0mr9vxxwj89xdnj448d579vjr54jychv";
};

makeFlags = [ "PREFIX=$(out)" ];

meta = {
description = "ffmpeg nvidia headers for NVENC";
description = "FFmpeg version of headers for NVENC";
homepage = http://ffmpeg.org/;
license = stdenv.lib.licenses.gpl3Plus;
maintainers = [ stdenv.lib.maintainers.MP2E ];
@@ -11774,6 +11774,8 @@ in

ntrack = callPackage ../development/libraries/ntrack { };

nv-codec-headers = callPackage ../development/libraries/nv-codec-headers { };

nvidia-texture-tools = callPackage ../development/libraries/nvidia-texture-tools { };

nvidia-video-sdk = callPackage ../development/libraries/nvidia-video-sdk { };
ProTip! Use n and p to navigate between commits in a pull request.