summary refs log tree commit diff
path: root/pkgs/applications/video/handbrake
diff options
context:
space:
mode:
authorGabriel Ebner <gebner@gebner.org>2016-08-29 08:03:41 +0200
committerGabriel Ebner <gebner@gebner.org>2016-08-29 08:05:26 +0200
commit6a11b11a7d8d89e724d0c1670777d196204f33e4 (patch)
tree0f56d3414a0b79b60848816247747d033d53a983 /pkgs/applications/video/handbrake
parent7a073c1c6ddf98752cfe12f719f82dcd09d22079 (diff)
downloadnixpkgs-6a11b11a7d8d89e724d0c1670777d196204f33e4.tar
nixpkgs-6a11b11a7d8d89e724d0c1670777d196204f33e4.tar.gz
nixpkgs-6a11b11a7d8d89e724d0c1670777d196204f33e4.tar.bz2
nixpkgs-6a11b11a7d8d89e724d0c1670777d196204f33e4.tar.lz
nixpkgs-6a11b11a7d8d89e724d0c1670777d196204f33e4.tar.xz
nixpkgs-6a11b11a7d8d89e724d0c1670777d196204f33e4.tar.zst
nixpkgs-6a11b11a7d8d89e724d0c1670777d196204f33e4.zip
handbrake: 0.9.9 -> 0.10.5
Diffstat (limited to 'pkgs/applications/video/handbrake')
-rw-r--r--pkgs/applications/video/handbrake/default.nix46
-rw-r--r--pkgs/applications/video/handbrake/disable-unfree.patch101
-rw-r--r--pkgs/applications/video/handbrake/handbrake-0.10.3-nolibav.patch76
3 files changed, 94 insertions, 129 deletions
diff --git a/pkgs/applications/video/handbrake/default.nix b/pkgs/applications/video/handbrake/default.nix
index 351cf5c5211..9f257cde21f 100644
--- a/pkgs/applications/video/handbrake/default.nix
+++ b/pkgs/applications/video/handbrake/default.nix
@@ -7,8 +7,6 @@
 # This has the benefits of providing improvements to other packages,
 # making licenses more clear and reducing compile time/install size.
 #
-# For compliance, the unfree codec faac is optionally spliced out.
-#
 # Only tested on Linux
 #
 # TODO: package and use libappindicator
@@ -18,47 +16,40 @@
   autoconf, automake, libtool, m4,
   libass, libsamplerate, fribidi, libxml2, bzip2,
   libogg, libtheora, libvorbis, libdvdcss, a52dec, fdk_aac,
-  lame, faac, ffmpeg, libdvdread, libdvdnav, libbluray,
-  mp4v2, mpeg2dec, x264, libmkv,
+  lame, ffmpeg, libdvdread, libdvdnav, libbluray,
+  mp4v2, mpeg2dec, x264, x265, libmkv,
   fontconfig, freetype, hicolor_icon_theme,
-  glib, gtk, webkitgtk, intltool, libnotify,
-  gst_all_1, dbus_glib, udev, libgudev,
-  useGtk ? true,
-  useWebKitGtk ? false # This prevents ghb from starting in my tests
+  glib, gtk3, intltool, libnotify,
+  gst_all_1, dbus_glib, udev, libgudev, libvpx,
+  wrapGAppsHook,
+  useGtk ? true
 }:
 
 stdenv.mkDerivation rec {
-  version = "0.9.9";
+  version = "0.10.5";
   name = "handbrake-${version}";
 
-  # ToDo: doesn't work (yet)
-  allowUnfree = false; # config.allowUnfree or false;
-
   buildInputsX = stdenv.lib.optionals useGtk [
-    glib gtk intltool libnotify
+    glib gtk3 intltool libnotify
     gst_all_1.gstreamer gst_all_1.gst-plugins-base dbus_glib udev
     libgudev
-  ] ++ stdenv.lib.optionals useWebKitGtk [ webkitgtk ];
-
-  # Did not test compiling with it
-  unfreeInputs = stdenv.lib.optional allowUnfree faac;
+    wrapGAppsHook
+  ];
 
   nativeBuildInputs = [ python pkgconfig yasm autoconf automake libtool m4 ];
   buildInputs = [
     fribidi fontconfig freetype hicolor_icon_theme
     libass libsamplerate libxml2 bzip2
     libogg libtheora libvorbis libdvdcss a52dec libmkv fdk_aac
-    lame ffmpeg libdvdread libdvdnav libbluray mp4v2 mpeg2dec x264
-  ] ++ buildInputsX ++ unfreeInputs;
+    lame ffmpeg libdvdread libdvdnav libbluray mp4v2 mpeg2dec x264 x265 libvpx
+  ] ++ buildInputsX;
 
 
   src = fetchurl {
     url = "http://download.handbrake.fr/releases/${version}/HandBrake-${version}.tar.bz2";
-    sha256 = "1crmm1c32vx60jfl2bqzg59q4qqx6m83b08snp7h1njc21sdf7d7";
+    sha256 = "1w720y3bplkz187wgvy4a4xm0vpppg45mlni55l6yi8v2bfk14pv";
   };
 
-  patches = stdenv.lib.optional (! allowUnfree) ./disable-unfree.patch;
-
   preConfigure = ''
     # Fake wget to prevent downloads
     mkdir wget
@@ -72,13 +63,13 @@ stdenv.mkDerivation rec {
     sed -i '/MODULES += contrib/d' make/include/main.defs
     sed -i '/PKG_CONFIG_PATH=/d' gtk/module.rules
 
-    # disable faac if non-free
-    if [ -z "$allowUnfree" ]; then
-      rm libhb/encfaac.c
-    fi
+    patch -p1 -R < ${./handbrake-0.10.3-nolibav.patch}
   '';
 
-  configureFlags = "--enable-fdk-aac ${if useGtk then "--disable-gtk-update-checks" else "--disable-gtk"}";
+  configureFlags = [
+    "--enable-fdk-aac"
+    (if useGtk then "--disable-gtk-update-checks" else "--disable-gtk")
+  ];
 
   preBuild = ''
     cd build
@@ -90,7 +81,6 @@ stdenv.mkDerivation rec {
     longDescription = ''
       Handbrake is a versatile transcoding DVD ripper. This package
       provides the cli HandbrakeCLI and the GTK+ version ghb.
-      The faac library is disabled if you're compiling free-only.
     '';
     license = stdenv.lib.licenses.gpl2;
     maintainers = [ stdenv.lib.maintainers.wmertens ];
diff --git a/pkgs/applications/video/handbrake/disable-unfree.patch b/pkgs/applications/video/handbrake/disable-unfree.patch
deleted file mode 100644
index 30edcb81c09..00000000000
--- a/pkgs/applications/video/handbrake/disable-unfree.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-diff -ru HandBrake-0.9.9-orig/gtk/configure.ac HandBrake-0.9.9/gtk/configure.ac
---- HandBrake-0.9.9-orig/gtk/configure.ac	2014-05-02 22:50:00.047305795 +0200
-+++ HandBrake-0.9.9/gtk/configure.ac	2014-05-02 22:48:57.119304020 +0200
-@@ -203,7 +203,7 @@
-     ;;
- esac
- 
--HB_LIBS="-lhb -la52 -lmkv -lavresample -lavformat -lavcodec -lavutil -ldvdnav -ldvdread -lfaac -lmp3lame -lmpeg2 -lvorbis -lvorbisenc -logg -lsamplerate -lx264 -lmp4v2 -lswscale -ltheoraenc -ltheoradec -lz -lbz2 -lpthread -lbluray -lass -lfontconfig -lfreetype -lxml2"
-+HB_LIBS="-lhb -la52 -lmkv -lavresample -lavformat -lavcodec -lavutil -ldvdnav -ldvdread -lmp3lame -lmpeg2 -lvorbis -lvorbisenc -logg -lsamplerate -lx264 -lmp4v2 -lswscale -ltheoraenc -ltheoradec -lz -lbz2 -lpthread -lbluray -lass -lfontconfig -lfreetype -lxml2"
- 
- if test "x$use_fdk_aac" = "xyes" ; then
-     HB_LIBS+=" -lfdk-aac"
-diff -ru HandBrake-0.9.9-orig/gtk/src/preset_xlat.c HandBrake-0.9.9/gtk/src/preset_xlat.c
---- HandBrake-0.9.9-orig/gtk/src/preset_xlat.c	2014-05-02 22:50:00.043305794 +0200
-+++ HandBrake-0.9.9/gtk/src/preset_xlat.c	2014-05-02 22:42:20.987292846 +0200
-@@ -260,7 +260,6 @@
- 
- static value_map_t acodec_xlat[] =
- {
--    {"AAC (faac)", "faac"},
-     {"AC3 Passthru", "ac3"},
-     {"MP3 (lame)", "lame"},
-     {"Vorbis (vorbis)", "vorbis"},
-diff -ru HandBrake-0.9.9-orig/gtk/src/presets.c HandBrake-0.9.9/gtk/src/presets.c
---- HandBrake-0.9.9-orig/gtk/src/presets.c	2014-05-02 22:50:00.043305794 +0200
-+++ HandBrake-0.9.9/gtk/src/presets.c	2014-05-02 22:42:41.283293419 +0200
-@@ -2029,8 +2029,6 @@
- 
- static value_map_t acodec_xlat_compat[] =
- {
--    {"AAC (CoreAudio)", "faac"},
--    {"HE-AAC (CoreAudio)", "faac"},
-     {"AC3 (ffmpeg)", "ac3"},
-     {"AC3", "ac3"},
-     {"MP3 Passthru", "mp3pass"},
-diff -ru HandBrake-0.9.9-orig/libhb/common.c HandBrake-0.9.9/libhb/common.c
---- HandBrake-0.9.9-orig/libhb/common.c	2014-05-02 22:50:00.047305795 +0200
-+++ HandBrake-0.9.9/libhb/common.c	2014-05-02 22:37:24.679284489 +0200
-@@ -126,7 +126,6 @@
-     { "AAC (CoreAudio)",    "ca_aac",     HB_ACODEC_CA_AAC,       HB_MUX_MP4|HB_MUX_MKV },
-     { "HE-AAC (CoreAudio)", "ca_haac",    HB_ACODEC_CA_HAAC,      HB_MUX_MP4|HB_MUX_MKV },
- #endif
--    { "AAC (faac)",         "faac",       HB_ACODEC_FAAC,         HB_MUX_MP4|HB_MUX_MKV },
- #ifdef USE_FDK_AAC
-     { "AAC (FDK)",          "fdk_aac",    HB_ACODEC_FDK_AAC,      HB_MUX_MP4|HB_MUX_MKV },
-     { "HE-AAC (FDK)",       "fdk_haac",   HB_ACODEC_FDK_HAAC,     HB_MUX_MP4|HB_MUX_MKV },
-diff -ru HandBrake-0.9.9-orig/libhb/common.h HandBrake-0.9.9/libhb/common.h
---- HandBrake-0.9.9-orig/libhb/common.h	2014-05-02 22:50:00.047305795 +0200
-+++ HandBrake-0.9.9/libhb/common.h	2014-05-02 22:39:37.839288245 +0200
-@@ -945,7 +945,6 @@
- extern hb_work_object_t hb_decavcodeca;
- extern hb_work_object_t hb_decavcodecv;
- extern hb_work_object_t hb_declpcm;
--extern hb_work_object_t hb_encfaac;
- extern hb_work_object_t hb_enclame;
- extern hb_work_object_t hb_encvorbis;
- extern hb_work_object_t hb_muxer;
-diff -ru HandBrake-0.9.9-orig/libhb/hb.c HandBrake-0.9.9/libhb/hb.c
---- HandBrake-0.9.9-orig/libhb/hb.c	2014-05-02 22:50:00.047305795 +0200
-+++ HandBrake-0.9.9/libhb/hb.c	2014-05-02 22:39:02.287287242 +0200
-@@ -487,7 +487,6 @@
- 	hb_register( &hb_decavcodeca );
- 	hb_register( &hb_decavcodecv );
- 	hb_register( &hb_declpcm );
--	hb_register( &hb_encfaac );
- 	hb_register( &hb_enclame );
- 	hb_register( &hb_encvorbis );
- 	hb_register( &hb_muxer );
-@@ -588,7 +587,6 @@
- 	hb_register( &hb_decavcodeca );
- 	hb_register( &hb_decavcodecv );
- 	hb_register( &hb_declpcm );
--	hb_register( &hb_encfaac );
- 	hb_register( &hb_enclame );
- 	hb_register( &hb_encvorbis );
- 	hb_register( &hb_muxer );
-diff -ru HandBrake-0.9.9-orig/libhb/module.defs HandBrake-0.9.9/libhb/module.defs
---- HandBrake-0.9.9-orig/libhb/module.defs	2014-05-02 22:50:00.047305795 +0200
-+++ HandBrake-0.9.9/libhb/module.defs	2014-05-02 22:39:25.727287903 +0200
-@@ -95,7 +95,7 @@
- LIBHB.lib = $(LIBHB.build/)hb.lib
- 
- LIBHB.dll.libs = $(foreach n, \
--        a52 ass avcodec avformat avutil avresample dvdnav dvdread faac \
-+        a52 ass avcodec avformat avutil avresample dvdnav dvdread \
-         fontconfig freetype mkv mpeg2 mp3lame mp4v2 \
-         ogg samplerate swscale theora vorbis vorbisenc x264 xml2 bluray, \
-         $(CONTRIB.build/)lib/lib$(n).a )
-Only in HandBrake-0.9.9: libhb-orig
-diff -ru HandBrake-0.9.9orig/test/module.defs HandBrake-0.9.9/test/module.defs
---- HandBrake-0.9.9-orig/test/module.defs	2014-05-02 23:15:10.575348401 +0200
-+++ HandBrake-0.9.9/test/module.defs	2014-05-02 23:17:00.523351502 +0200
-@@ -14,7 +14,7 @@
- TEST.libs = $(LIBHB.a)
- 
- TEST.GCC.l = \
--        a52 ass avcodec avformat avutil avresample dvdnav dvdread faac \
-+        a52 ass avcodec avformat avutil avresample dvdnav dvdread \
-         fontconfig freetype fribidi mkv mpeg2 mp3lame mp4v2 ogg \
-         samplerate swscale theoraenc theoradec vorbis vorbisenc x264 \
-         bluray xml2 bz2 z
diff --git a/pkgs/applications/video/handbrake/handbrake-0.10.3-nolibav.patch b/pkgs/applications/video/handbrake/handbrake-0.10.3-nolibav.patch
new file mode 100644
index 00000000000..8539186aaa5
--- /dev/null
+++ b/pkgs/applications/video/handbrake/handbrake-0.10.3-nolibav.patch
@@ -0,0 +1,76 @@
+From 75549414927212d4d1666730133805b33447de79 Mon Sep 17 00:00:00 2001
+From: John Stebbins <jstebbins.hb@gmail.com>
+Date: Tue, 3 Nov 2015 10:16:01 -0800
+Subject: [PATCH] muxavformat: add support for mp4 fallback audio signalling
+
+---
+diff --git a/libhb/muxavformat.c b/libhb/muxavformat.c
+index 0d70597..373c2ab 100644
+--- a/libhb/muxavformat.c
++++ b/libhb/muxavformat.c
+@@ -121,7 +121,7 @@ static int avformatInit( hb_mux_object_t * m )
+     hb_mux_data_t * track;
+     int meta_mux;
+     int max_tracks;
+-    int ii, ret;
++    int ii, jj, ret;
+ 
+     int clock_min, clock_max, clock;
+     hb_video_framerate_get_limits(&clock_min, &clock_max, &clock);
+@@ -589,6 +589,56 @@ static int avformatInit( hb_mux_object_t * m )
+         }
+     }
+ 
++    // Check for audio track associations
++    for (ii = 0; ii < hb_list_count(job->list_audio); ii++)
++    {
++        audio = hb_list_item(job->list_audio, ii);
++        switch (audio->config.out.codec & HB_ACODEC_MASK)
++        {
++            case HB_ACODEC_FFAAC:
++            case HB_ACODEC_CA_AAC:
++            case HB_ACODEC_CA_HAAC:
++            case HB_ACODEC_FDK_AAC:
++            case HB_ACODEC_FDK_HAAC:
++                break;
++
++            default:
++            {
++                // Mark associated fallback audio tracks for any non-aac track
++                for(jj = 0; jj < hb_list_count( job->list_audio ); jj++ )
++                {
++                    hb_audio_t    * fallback;
++                    int             codec;
++
++                    if (ii == jj) continue;
++
++                    fallback = hb_list_item( job->list_audio, jj );
++                    codec = fallback->config.out.codec & HB_ACODEC_MASK;
++                    if (fallback->config.in.track == audio->config.in.track &&
++                        (codec == HB_ACODEC_FFAAC ||
++                         codec == HB_ACODEC_CA_AAC ||
++                         codec == HB_ACODEC_CA_HAAC ||
++                         codec == HB_ACODEC_FDK_AAC ||
++                         codec == HB_ACODEC_FDK_HAAC))
++                    {
++                        hb_mux_data_t * fallback_track;
++                        int           * sd;
++
++                        track = audio->priv.mux_data;
++                        fallback_track = fallback->priv.mux_data;
++                        sd = (int*)av_stream_new_side_data(track->st,
++                                                     AV_PKT_DATA_FALLBACK_TRACK,
++                                                     sizeof(int));
++                        if (sd != NULL)
++                        {
++                            *sd = fallback_track->st->index;
++                        }
++                    }
++                }
++            } break;
++        }
++    }
++
+     char * subidx_fmt =
+         "size: %dx%d\n"
+         "org: %d, %d\n"