diff options
author | James Bunton | 2016-12-29 22:22:09 +1100 |
---|---|---|
committer | James Bunton | 2016-12-29 22:34:50 +1100 |
commit | 88305d890a84bdcb8ffd7cf18b24008367a53eb6 (patch) | |
tree | 00e0e1aaf2945c440c8e117db25285cabea0d1a4 | |
parent | d0abebb1e02b64cca2dad5986b059806e0b4b91d (diff) | |
download | aur-88305d890a84bdcb8ffd7cf18b24008367a53eb6.tar.gz |
Sync patches from main Handbrake package
-rw-r--r-- | PKGBUILD | 11 | ||||
-rw-r--r-- | handbarke-fix-crash-during-2-pass-encode.patch | 27 | ||||
-rw-r--r-- | handbrake-fix-2-pass-vp8-and-vp9-encoding.patch | 31 |
3 files changed, 68 insertions, 1 deletions
@@ -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); + } + |