summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Bunton2016-12-29 22:22:09 +1100
committerJames Bunton2016-12-29 22:34:50 +1100
commit88305d890a84bdcb8ffd7cf18b24008367a53eb6 (patch)
tree00e0e1aaf2945c440c8e117db25285cabea0d1a4
parentd0abebb1e02b64cca2dad5986b059806e0b4b91d (diff)
downloadaur-88305d890a84bdcb8ffd7cf18b24008367a53eb6.tar.gz
Sync patches from main Handbrake package
-rw-r--r--PKGBUILD11
-rw-r--r--handbarke-fix-crash-during-2-pass-encode.patch27
-rw-r--r--handbrake-fix-2-pass-vp8-and-vp9-encoding.patch31
3 files changed, 68 insertions, 1 deletions
diff --git a/PKGBUILD b/PKGBUILD
index d67215cbe72c..9672d1cc8f40 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,7 +5,7 @@
pkgname=('handbrake-fdkaac' 'handbrake-cli-fdkaac')
pkgver=1.0.0
-pkgrel=1
+pkgrel=4
arch=('i686' 'x86_64')
url="https://handbrake.fr/"
license=('GPL')
@@ -15,13 +15,22 @@ makedepends=('intltool' 'python2' 'yasm' 'wget' 'bzip2' 'gcc-libs' 'libnotify'
'libtheora' 'libsamplerate' 'ffmpeg' 'x264' 'libx264' 'x265'
'libvpx' 'libdvdnav' 'jansson' 'librsvg' 'libgudev' 'libfdk-aac')
source=(https://handbrake.fr/mirror/HandBrake-$pkgver.tar.bz2
+ handbarke-fix-crash-during-2-pass-encode.patch
+ handbrake-fix-2-pass-vp8-and-vp9-encoding.patch
handbrake-fix-missing-x265-link-flag.patch)
sha256sums=('15fb4593c70d75621212e4499f018c3c93d7ce39f1083bf527d4616ded0044c5'
+ 'aaa09e9b3dbad54024f02afe8ace5390b281c7cc6aae80cf26d43f773b2d19f7'
+ '1b6d800acde0cc2c7e6080f23f2ddd435257c5a2d853acdeb4e4a6fada856310'
'05e212e76b6e0b94a04de02cbeb7bf9db607059e19297b5bd3d0d143135285c4')
prepare() {
cd "$srcdir/HandBrake-$pkgver"
+ # https://github.com/HandBrake/HandBrake/commit/e159ab1662ba#commitcomment-20303756
+ patch -Np1 -i ../handbarke-fix-crash-during-2-pass-encode.patch
+ # https://github.com/HandBrake/HandBrake/issues/449#issuecomment-269352579
+ patch -Np1 -i ../handbrake-fix-2-pass-vp8-and-vp9-encoding.patch
+
# https://bugs.gentoo.org/show_bug.cgi?id=552792
patch -Np1 -i ../handbrake-fix-missing-x265-link-flag.patch
diff --git a/handbarke-fix-crash-during-2-pass-encode.patch b/handbarke-fix-crash-during-2-pass-encode.patch
new file mode 100644
index 000000000000..7fe101045038
--- /dev/null
+++ b/handbarke-fix-crash-during-2-pass-encode.patch
@@ -0,0 +1,27 @@
+From 3b9c9a263f7ffa959d56d914c62df18c9567c0db Mon Sep 17 00:00:00 2001
+From: John Stebbins <jstebbins.hb@gmail.com>
+Date: Tue, 27 Dec 2016 08:56:25 -0800
+Subject: [PATCH] encavcodec: fix crash during 2 pass encode
+
+This affect mpeg4, mpeg2, vp8 and vp9 encoding
+---
+ libhb/encavcodec.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libhb/encavcodec.c b/libhb/encavcodec.c
+index d7a751e..0543fe4 100644
+--- a/libhb/encavcodec.c
++++ b/libhb/encavcodec.c
+@@ -352,10 +352,10 @@ int encavcodecInit( hb_work_object_t * w, hb_job_t * job )
+ }
+
+ if (job->pass_id == HB_PASS_ENCODE_1ST &&
+- pv->context->stats_out != NULL)
++ context->stats_out != NULL)
+ {
+ // Some encoders may write stats during init in avcodec_open
+- fprintf(pv->file, "%s", pv->context->stats_out);
++ fprintf(pv->file, "%s", context->stats_out);
+ }
+
+ // avcodec_open populates the opts dictionary with the
diff --git a/handbrake-fix-2-pass-vp8-and-vp9-encoding.patch b/handbrake-fix-2-pass-vp8-and-vp9-encoding.patch
new file mode 100644
index 000000000000..cd506bc82fe7
--- /dev/null
+++ b/handbrake-fix-2-pass-vp8-and-vp9-encoding.patch
@@ -0,0 +1,31 @@
+From d64dba737d0136b58545be33c50db093df1880c1 Mon Sep 17 00:00:00 2001
+From: John Stebbins <jstebbins.hb@gmail.com>
+Date: Tue, 27 Dec 2016 08:57:06 -0800
+Subject: [PATCH] encavcodec: fix 2 pass vp8 and vp9 encoding
+
+libvpx only supplies the stats upon the final flush of the encoder. So
+we must also write stats after final flush.
+---
+ libhb/encavcodec.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/libhb/encavcodec.c b/libhb/encavcodec.c
+index 0543fe4..591aa4f 100644
+--- a/libhb/encavcodec.c
++++ b/libhb/encavcodec.c
+@@ -610,6 +610,15 @@ static void Flush( hb_work_object_t * w, hb_buffer_list_t * list )
+ hb_work_private_t * pv = w->private_data;
+
+ avcodec_send_frame(pv->context, NULL);
++
++ // Write stats
++ // vpx only writes stats at final flush
++ if (pv->job->pass_id == HB_PASS_ENCODE_1ST &&
++ pv->context->stats_out != NULL)
++ {
++ fprintf( pv->file, "%s", pv->context->stats_out );
++ }
++
+ get_packets(w, list);
+ }
+