summaryrefslogtreecommitdiff
path: root/libre/handbrake
diff options
context:
space:
mode:
Diffstat (limited to 'libre/handbrake')
-rw-r--r--libre/handbrake/0001-Fix-linking-issue-when-disabling-internal-libbluray.patch31
-rw-r--r--libre/handbrake/0002-Fix-linking-issue-when-disabling-internal-x265.patch43
-rw-r--r--libre/handbrake/PKGBUILD64
-rw-r--r--libre/handbrake/handbrake-no-download.patch15
-rw-r--r--libre/handbrake/handbrake-supress-clip_id.patch38
-rw-r--r--libre/handbrake/switch-libav-to-ffmpeg.patch792
6 files changed, 112 insertions, 871 deletions
diff --git a/libre/handbrake/0001-Fix-linking-issue-when-disabling-internal-libbluray.patch b/libre/handbrake/0001-Fix-linking-issue-when-disabling-internal-libbluray.patch
new file mode 100644
index 000000000..09333b96f
--- /dev/null
+++ b/libre/handbrake/0001-Fix-linking-issue-when-disabling-internal-libbluray.patch
@@ -0,0 +1,31 @@
+From 27812b1245d525604e9e3da09ae45134595146b9 Mon Sep 17 00:00:00 2001
+From: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
+Date: Wed, 13 Nov 2019 16:07:39 +0100
+Subject: [PATCH 1/2] Fix linking issue when disabling internal libbluray
+
+Without that fix we have:
+ /usr/bin/ld: /home/gnutoo/work/projects/parabola/handbrake/build//libhb/libhandbrake.a(ports.o):
+ undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
+ /usr/bin/ld: /usr/lib/libdl.so.2: error adding symbols: DSO missing from
+ command line
+
+Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
+---
+ gtk/configure.ac | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gtk/configure.ac b/gtk/configure.ac
+index 92aabcbe8..82e8d88ce 100644
+--- a/gtk/configure.ac
++++ b/gtk/configure.ac
+@@ -232,6 +232,7 @@ case $host in
+ HB_LIBS="$HB_LIBS -pthread"
+ ;;
+ *-*-linux*)
++ HB_LIBS="$HB_LIBS -ldl -lpthread"
+ if test "x$use_qsv" = "xyes" ; then
+ HB_LIBS="$HB_LIBS -lva -lva-drm"
+ fi
+--
+2.24.0
+
diff --git a/libre/handbrake/0002-Fix-linking-issue-when-disabling-internal-x265.patch b/libre/handbrake/0002-Fix-linking-issue-when-disabling-internal-x265.patch
new file mode 100644
index 000000000..96d2442a7
--- /dev/null
+++ b/libre/handbrake/0002-Fix-linking-issue-when-disabling-internal-x265.patch
@@ -0,0 +1,43 @@
+From 8712791f459d5b8e36ae6f407c6f45e661a2311d Mon Sep 17 00:00:00 2001
+From: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
+Date: Wed, 13 Nov 2019 16:07:39 +0100
+Subject: [PATCH 2/2] Fix linking issue when disabling internal x265
+
+Without that fix we have:
+ /usr/bin/ld: ./libhb/libhandbrake.a(common.o): undefined reference to symbol 'x265_api_query'
+ /usr/bin/ld: /usr/lib/libx265.so.179: error adding symbols: DSO missing from command line
+
+Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
+---
+ gtk/configure.ac | 1 +
+ test/module.defs | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/gtk/configure.ac b/gtk/configure.ac
+index 82e8d88ce..034ccdcdb 100644
+--- a/gtk/configure.ac
++++ b/gtk/configure.ac
+@@ -237,6 +237,7 @@ case $host in
+ HB_LIBS="$HB_LIBS -lva -lva-drm"
+ fi
+ if test "x$use_x265" = "xyes" ; then
++ HB_LIBS="$HB_LIBS -lx265"
+ if test "x$use_numa" = "xyes" ; then
+ HB_LIBS="$HB_LIBS -lnuma"
+ fi
+diff --git a/test/module.defs b/test/module.defs
+index ffc00a8b2..1895d16ee 100644
+--- a/test/module.defs
++++ b/test/module.defs
+@@ -16,7 +16,7 @@ TEST.libs = $(LIBHB.a)
+ TEST.GCC.l = \
+ ass avformat avfilter avcodec avutil swresample postproc mp3lame dvdnav \
+ dvdread fribidi \
+- swscale vpx theoraenc theoradec vorbis vorbisenc ogg x264 \
++ swscale vpx theoraenc theoradec vorbis vorbisenc ogg x264 x265 \
+ bluray freetype xml2 bz2 z jansson harfbuzz opus speex lzma dav1d
+
+ ifeq (,$(filter $(HOST.system),darwin cygwin mingw))
+--
+2.24.0
+
diff --git a/libre/handbrake/PKGBUILD b/libre/handbrake/PKGBUILD
index bb291b6e7..6a868070a 100644
--- a/libre/handbrake/PKGBUILD
+++ b/libre/handbrake/PKGBUILD
@@ -2,48 +2,57 @@
# Contributor (Arch): Giovanni Scafora <giovanni@archlinux.org>
# Contributor (Arch): Sebastien Piccand <sebcactus gmail com>
# Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>
+# Contributor: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
pkgname=('handbrake' 'handbrake-cli')
-pkgver=1.1.2
+pkgver=1.3.0
pkgrel=1
-pkgrel+=.par3
+pkgrel+=.par1
arch=('x86_64')
arch+=('i686' 'armv7h')
url="https://handbrake.fr/"
license=('GPL')
-makedepends=('intltool' 'python2' 'yasm' 'wget' 'cmake' 'bzip2' 'gcc-libs'
+makedepends=('intltool' 'python2' 'nasm' 'wget' 'cmake' 'bzip2' 'gcc-libs' 'xz'
'zlib' 'libnotify' 'gst-plugins-base' 'gtk3' 'dbus-glib' 'libass'
'lame' 'libxml2' 'opus' 'libvorbis' 'libtheora' 'libsamplerate'
- 'x264' 'jansson' 'librsvg' 'libgudev')
+ 'speex' 'x264' 'jansson' 'librsvg' 'libgudev')
+makedepends+=('dav1d' 'libbluray' 'numactl' 'meson' 'x265')
makedepends+=('ffmpeg' 'libdvdnav')
source=(https://download.handbrake.fr/releases/$pkgver/HandBrake-$pkgver-source.tar.bz2
https://github.com/HandBrake/HandBrake/releases/download/$pkgver/HandBrake-$pkgver-source.tar.bz2.sig
- handbrake-fix-missing-x265-link-flag.patch
- handbrake-no-download.patch
- handbrake-supress-clip_id.patch
- switch-libav-to-ffmpeg.patch)
-sha256sums=('ba9a4a90a7657720f04e4ba0a2880ed055be3bd855e99c0c13af944c3904de2e'
+ 0001-Fix-linking-issue-when-disabling-internal-libbluray.patch
+ 0002-Fix-linking-issue-when-disabling-internal-x265.patch)
+sha256sums=('a9a82eb5ca04a793705b3d7d11cefa29946694eeb13b40161446aaca35b31d96'
'SKIP'
- '05e212e76b6e0b94a04de02cbeb7bf9db607059e19297b5bd3d0d143135285c4'
- 'd8116caa83f870803581f0d02e1302b3b8990479d446e4c73bedd35bed531042'
- '6407a96c59baa030a4e5fa46c53ddb3e841c7d4787613d391e032a62600d527f'
- '7f82adce83d41552e19cdd74268db4084190f201be549b45802817f80fbc37bb')
+ '8a2818c31815764227d52ea99f7291acacec16c62487f5ae7ea64fedd52546fd'
+ 'a1181cba4d83a20ead3e1d92649f8f25add000ebc3293829b9604cfc6ed79326')
validpgpkeys+=('1629C061B3DDE7EB4AE34B81021DB8B44E4A8645') # HandBrake Team <developers@handbrake.fr>
prepare() {
cd "$srcdir/HandBrake-$pkgver"
- # https://bugs.gentoo.org/show_bug.cgi?id=552792
- patch -Np1 -i ../handbrake-fix-missing-x265-link-flag.patch
+ # Prevent fetching and use system libraries instead
+ _libs="\
+ ffmpeg \
+ libbluray \
+ libdav1d \
+ libdvdnav \
+ libdvdread \
+ libvpx \
+ nvenc \
+ x264 \
+ x265 \
+ x265_8bit \
+ x265_10bit \
+ x265_12bit \
+ "
- patch -Np1 -i ../handbrake-no-download.patch
- patch -Np1 -i ../handbrake-supress-clip_id.patch
- patch -Np1 -i ../switch-libav-to-ffmpeg.patch
+ patch -Np1 -i ../0001-Fix-linking-issue-when-disabling-internal-libbluray.patch
+ patch -Np1 -i ../0002-Fix-linking-issue-when-disabling-internal-x265.patch
- # Use more system libs
- # Bundled libbluray is kept because it is patched locally
- for _lib in ffmpeg x265 libvpx libdvdnav libdvdread; do
+ for _lib in $_libs ; do
sed -i "/MODULES += contrib\/$_lib/d" make/include/main.defs
+ rm -rf contrib/$_lib
done
}
@@ -51,15 +60,18 @@ build() {
cd "$srcdir/HandBrake-$pkgver"
./configure --prefix=/usr \
- --disable-gtk-update-checks
+ --disable-df-fetch \
+ --disable-gtk-update-checks \
+ --disable-nvenc \
+
make -C build
}
package_handbrake() {
pkgdesc="Multithreaded video transcoder"
depends=('bzip2' 'gcc-libs' 'zlib' 'gst-plugins-base' 'libnotify' 'dbus-glib'
- 'gtk3' 'libass' 'lame' 'libxml2' 'opus' 'libvorbis' 'libtheora'
- 'libsamplerate' 'x264' 'jansson' 'librsvg' 'libgudev'
+ 'gtk3' 'xz' 'libass' 'lame' 'libxml2' 'opus' 'libvorbis' 'libtheora'
+ 'libsamplerate' 'speex' 'x264' 'jansson' 'librsvg' 'libgudev'
'desktop-file-utils' 'hicolor-icon-theme')
depends+=('ffmpeg' 'libdvdnav')
optdepends=('gst-plugins-good: for video previews'
@@ -74,8 +86,8 @@ package_handbrake() {
package_handbrake-cli() {
pkgdesc="Multithreaded video transcoder (CLI)"
- depends=('bzip2' 'gcc-libs' 'zlib' 'libass' 'lame' 'libxml2' 'opus'
- 'libvorbis' 'libtheora' 'libsamplerate' 'x264' 'jansson')
+ depends=('bzip2' 'gcc-libs' 'zlib' 'xz' 'libass' 'lame' 'libxml2' 'opus'
+ 'libvorbis' 'libtheora' 'libsamplerate' 'speex' 'x264' 'jansson')
depends+=('ffmpeg' 'libdvdnav')
optdepends=('libdvdcss: for decoding encrypted DVDs')
diff --git a/libre/handbrake/handbrake-no-download.patch b/libre/handbrake/handbrake-no-download.patch
deleted file mode 100644
index 561fd98b1..000000000
--- a/libre/handbrake/handbrake-no-download.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- HandBrake-1.0.1.orig/make/include/main.defs 2016-12-29 16:07:59.000000000 -0500
-+++ HandBrake-1.0.1/make/include/main.defs 2017-01-03 17:06:19.446985505 -0500
-@@ -77,12 +77,6 @@
- MODULES += contrib/x265
- endif
-
--MODULES += contrib/ffmpeg
--MODULES += contrib/libvpx
--MODULES += contrib/libdvdread
--MODULES += contrib/libdvdnav
--MODULES += contrib/libbluray
--
- ifneq (,$(filter $(BUILD.system),mingw))
- ifneq ($(HAS.pthread),1)
- ifneq ($(HAS.pthreadGC2),1)
diff --git a/libre/handbrake/handbrake-supress-clip_id.patch b/libre/handbrake/handbrake-supress-clip_id.patch
deleted file mode 100644
index 0570f23e8..000000000
--- a/libre/handbrake/handbrake-supress-clip_id.patch
+++ /dev/null
@@ -1,38 +0,0 @@
---- HandBrake-1.0.1.orig/libhb/bd.c 2016-12-29 16:07:59.000000000 -0500
-+++ HandBrake-1.0.1/libhb/bd.c 2017-01-03 16:59:37.551990672 -0500
-@@ -234,24 +234,6 @@
- return 1;
- }
-
--static void show_clip_list( BLURAY_TITLE_INFO * ti )
--{
-- int ii;
--
-- for (ii = 0; ii < ti->clip_count; ii++)
-- {
-- BLURAY_CLIP_INFO * ci = &ti->clips[ii];
-- int64_t duration = ci->out_time - ci->in_time;
-- int hh, mm, ss;
--
-- hh = duration / (90000 * 60 * 60);
-- mm = (duration / (90000 * 60)) % 60;
-- ss = (duration / 90000) % 60;
-- hb_log("bd:\t\t%s.M2TS -- Duration: %02d:%02d:%02d",
-- ti->clips[ii].clip_id, hh, mm, ss);
-- }
--}
--
- /***********************************************************************
- * hb_bd_title_scan
- **********************************************************************/
-@@ -335,10 +317,6 @@
- hb_log( "bd: ignoring title (too short)" );
- goto fail;
- }
-- if (global_verbosity_level >= 2)
-- {
-- show_clip_list(ti);
-- }
-
- BLURAY_STREAM_INFO * bdvideo = &ti->clips[0].video_streams[0];
-
diff --git a/libre/handbrake/switch-libav-to-ffmpeg.patch b/libre/handbrake/switch-libav-to-ffmpeg.patch
deleted file mode 100644
index 7ea2186a8..000000000
--- a/libre/handbrake/switch-libav-to-ffmpeg.patch
+++ /dev/null
@@ -1,792 +0,0 @@
---- HandBrake-1.1.2.orig/gtk/configure.ac 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/gtk/configure.ac 2018-11-07 16:19:55.149573439 -0500
-@@ -170,7 +170,7 @@
-
- GHB_CFLAGS="$HBINC $GHB_CFLAGS"
-
--HB_LIBS="-lhandbrake -lavresample -lavformat -lavcodec -lavfilter -lavutil -ldvdnav -ldvdread -lmp3lame -lvorbis -lvorbisenc -logg -lsamplerate -lx264 -lswscale -ltheoraenc -ltheoradec -lvpx -lz -lbz2 -lbluray -lass -lfontconfig -lfreetype -lxml2 -ljansson -lopus"
-+HB_LIBS="-lhandbrake -lavformat -lavfilter -lavcodec -lavutil -lswresample -lpostproc -ldvdnav -ldvdread -lmp3lame -lvorbis -lvorbisenc -logg -lsamplerate -lx264 -lswscale -ltheoraenc -ltheoradec -lvpx -lz -lbz2 -lbluray -lass -lfontconfig -lfreetype -lxml2 -ljansson -lopus"
-
- case $host in
- *-*-mingw*)
---- HandBrake-1.1.2.orig/libhb/decavcodec.c 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/decavcodec.c 2018-11-07 16:27:29.862414400 -0500
-@@ -390,13 +390,12 @@
- //if (!(pv->qsv.decode && pv->job != NULL && (pv->job->vcodec & HB_VCODEC_QSV_MASK)))
- #endif
- {
-- hb_avcodec_close(pv->context);
-+ hb_avcodec_free_context(&pv->context);
- }
- }
- if ( pv->context )
- {
-- av_freep( &pv->context->extradata );
-- av_freep( &pv->context );
-+ hb_avcodec_free_context(&pv->context);
- }
- hb_audio_resample_free(pv->resample);
-
-@@ -821,9 +820,7 @@
-
- if ( parser != NULL )
- av_parser_close( parser );
-- hb_avcodec_close( context );
-- av_freep( &context->extradata );
-- av_freep( &context );
-+ hb_avcodec_free_context(&context);
- return result;
- }
-
-@@ -1294,8 +1291,12 @@
- {
- int result;
-
-- av_buffersrc_add_frame(pv->video_filters.input, pv->frame);
-- result = av_buffersink_get_frame(pv->video_filters.output, pv->frame);
-+ result = av_buffersrc_add_frame(pv->video_filters.input, pv->frame);
-+ if (result < 0) {
-+ hb_error("filter_video: failed to add frame");
-+ } else {
-+ result = av_buffersink_get_frame(pv->video_filters.output, pv->frame);
-+ }
- while (result >= 0)
- {
- hb_buffer_t * buf = copy_frame(pv);
-@@ -2101,9 +2102,7 @@
- if ( pv->title->opaque_priv == NULL )
- {
- pv->video_codec_opened = 0;
-- hb_avcodec_close( pv->context );
-- av_freep( &pv->context->extradata );
-- av_freep( &pv->context );
-+ hb_avcodec_free_context(&pv->context);
- if ( pv->parser )
- {
- av_parser_close(pv->parser);
-@@ -2239,7 +2238,8 @@
- av_packet_unref(&avp);
- return;
- }
-- out = hb_audio_resample(pv->resample, pv->frame->extended_data,
-+ out = hb_audio_resample(pv->resample,
-+ (const uint8_t **)pv->frame->extended_data,
- pv->frame->nb_samples);
- if (out != NULL && pv->drop_samples > 0)
- {
---- HandBrake-1.1.2.orig/libhb/decpgssub.c 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/decpgssub.c 2018-11-07 16:33:05.320629765 -0500
-@@ -502,7 +502,7 @@
- {
- hb_work_private_t * pv = w->private_data;
- avcodec_flush_buffers( pv->context );
-- avcodec_close( pv->context );
-+ avcodec_free_context( &pv->context );
- }
-
- hb_work_object_t hb_decpgssub =
---- HandBrake-1.1.2.orig/libhb/encavcodec.c 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/encavcodec.c 2018-11-07 16:35:51.169822169 -0500
-@@ -399,12 +399,13 @@
- return;
- }
- hb_chapter_queue_close(&pv->chapter_queue);
-- if( pv->context && pv->context->codec )
-+ if( pv->context )
- {
- hb_deep_log( 2, "encavcodec: closing libavcodec" );
-- avcodec_flush_buffers( pv->context );
-- hb_avcodec_close( pv->context );
-- av_free( pv->context );
-+ if( pv->context->codec ) {
-+ avcodec_flush_buffers( pv->context );
-+ }
-+ hb_avcodec_free_context(&pv->context);
- }
- if( pv->file )
- {
---- HandBrake-1.1.2.orig/libhb/encavcodecaudio.c 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/encavcodecaudio.c 2018-11-07 18:16:43.503730591 -0500
-@@ -23,7 +23,7 @@
- uint8_t * input_buf;
- hb_list_t * list;
-
-- AVAudioResampleContext *avresample;
-+ SwrContext * swresample;
-
- int64_t last_pts;
- };
-@@ -231,40 +231,40 @@
- if (context->sample_fmt != AV_SAMPLE_FMT_FLT)
- {
- pv->output_buf = malloc(pv->max_output_bytes);
-- pv->avresample = avresample_alloc_context();
-- if (pv->avresample == NULL)
-+ pv->swresample = swr_alloc();
-+ if (pv->swresample == NULL)
- {
-- hb_error("encavcodecaInit: avresample_alloc_context() failed");
-+ hb_error("encavcodecaInit: swr_alloc() failed");
- return 1;
- }
-- av_opt_set_int(pv->avresample, "in_sample_fmt",
-+ av_opt_set_int(pv->swresample, "in_sample_fmt",
- AV_SAMPLE_FMT_FLT, 0);
-- av_opt_set_int(pv->avresample, "out_sample_fmt",
-+ av_opt_set_int(pv->swresample, "out_sample_fmt",
- context->sample_fmt, 0);
-- av_opt_set_int(pv->avresample, "in_channel_layout",
-+ av_opt_set_int(pv->swresample, "in_channel_layout",
- context->channel_layout, 0);
-- av_opt_set_int(pv->avresample, "out_channel_layout",
-+ av_opt_set_int(pv->swresample, "out_channel_layout",
- context->channel_layout, 0);
- if (hb_audio_dither_is_supported(audio->config.out.codec))
- {
- // dithering needs the sample rate
-- av_opt_set_int(pv->avresample, "in_sample_rate",
-+ av_opt_set_int(pv->swresample, "in_sample_rate",
- context->sample_rate, 0);
-- av_opt_set_int(pv->avresample, "out_sample_rate",
-+ av_opt_set_int(pv->swresample, "out_sample_rate",
- context->sample_rate, 0);
-- av_opt_set_int(pv->avresample, "dither_method",
-+ av_opt_set_int(pv->swresample, "dither_method",
- audio->config.out.dither_method, 0);
- }
-- if (avresample_open(pv->avresample))
-+ if (swr_init(pv->swresample))
- {
-- hb_error("encavcodecaInit: avresample_open() failed");
-- avresample_free(&pv->avresample);
-+ hb_error("encavcodecaInit: swr_init() failed");
-+ swr_free(&pv->swresample);
- return 1;
- }
- }
- else
- {
-- pv->avresample = NULL;
-+ pv->swresample = NULL;
- pv->output_buf = pv->input_buf;
- }
-
-@@ -308,10 +308,10 @@
- {
- Finalize(w);
- hb_deep_log(2, "encavcodecaudio: closing libavcodec");
-- if (pv->context->codec != NULL)
-+ if (pv->context->codec != NULL) {
- avcodec_flush_buffers(pv->context);
-- hb_avcodec_close(pv->context);
-- av_free( pv->context );
-+ }
-+ hb_avcodec_free_context(&pv->context);
- }
-
- if (pv->output_buf != NULL)
-@@ -329,9 +329,9 @@
- hb_list_empty(&pv->list);
- }
-
-- if (pv->avresample != NULL)
-+ if (pv->swresample != NULL)
- {
-- avresample_free(&pv->avresample);
-+ swr_free(&pv->swresample);
- }
-
- free(pv);
-@@ -404,31 +404,28 @@
- pv->input_samples * sizeof(float), &pts, &pos);
-
- // Prepare input frame
-- int out_linesize, out_size;
-+ int out_size;
- AVFrame frame = { .nb_samples = pv->samples_per_frame, };
-
-- out_size = av_samples_get_buffer_size(&out_linesize,
-+ out_size = av_samples_get_buffer_size(NULL,
- pv->context->channels,
- pv->samples_per_frame,
- pv->context->sample_fmt, 1);
- avcodec_fill_audio_frame(&frame,
- pv->context->channels, pv->context->sample_fmt,
- pv->output_buf, out_size, 1);
-- if (pv->avresample != NULL)
-+ if (pv->swresample != NULL)
- {
-- int in_linesize, out_samples;
-+ int out_samples;
-
-- av_samples_get_buffer_size(&in_linesize, pv->context->channels,
-- frame.nb_samples, AV_SAMPLE_FMT_FLT, 1);
-- out_samples = avresample_convert(pv->avresample,
-- frame.extended_data, out_linesize,
-- frame.nb_samples, &pv->input_buf,
-- in_linesize, frame.nb_samples);
-+ out_samples = swr_convert(pv->swresample,
-+ frame.extended_data, frame.nb_samples,
-+ (const uint8_t **)&pv->input_buf, frame.nb_samples);
- if (out_samples != pv->samples_per_frame)
- {
- // we're not doing sample rate conversion,
- // so this shouldn't happen
-- hb_log("encavcodecaWork: avresample_convert() failed");
-+ hb_log("encavcodecaWork: swr_convert() failed");
- continue;
- }
- }
---- HandBrake-1.1.2.orig/libhb/hb.c 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/hb.c 2018-11-07 16:45:12.564522006 -0500
-@@ -102,14 +102,6 @@
- av_lockmgr_register(ff_lockmgr_cb);
- av_register_all();
- avfilter_register_all();
--#ifdef _WIN64
-- // avresample's assembly optimizations can cause crashes under Win x86_64
-- // (see http://bugzilla.libav.org/show_bug.cgi?id=496)
-- // disable AVX and FMA4 as a workaround
-- hb_deep_log(2, "hb_avcodec_init: Windows x86_64, disabling AVX and FMA4");
-- int cpu_flags = av_get_cpu_flags() & ~AV_CPU_FLAG_AVX & ~AV_CPU_FLAG_FMA4;
-- av_set_cpu_flags_mask(cpu_flags);
--#endif
- }
-
- int hb_avcodec_open(AVCodecContext *avctx, AVCodec *codec,
-@@ -140,11 +132,9 @@
- return ret;
- }
-
--int hb_avcodec_close(AVCodecContext *avctx)
-+void hb_avcodec_free_context(AVCodecContext **avctx)
- {
-- int ret;
-- ret = avcodec_close(avctx);
-- return ret;
-+ avcodec_free_context(avctx);
- }
-
-
---- HandBrake-1.1.2.orig/libhb/hbffmpeg.h 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/hbffmpeg.h 2018-11-07 16:47:00.726314186 -0500
-@@ -17,14 +17,14 @@
- #include "libavutil/downmix_info.h"
- #include "libavutil/display.h"
- #include "libswscale/swscale.h"
--#include "libavresample/avresample.h"
-+#include "libswresample/swresample.h"
- #include "common.h"
-
- #define HB_FFMPEG_THREADS_AUTO (-1) // let hb_avcodec_open() decide thread_count
-
- void hb_avcodec_init(void);
- int hb_avcodec_open(AVCodecContext *, AVCodec *, AVDictionary **, int);
--int hb_avcodec_close(AVCodecContext *);
-+void hb_avcodec_free_context(AVCodecContext **avctx);
- const char* const* hb_av_preset_get_names(int encoder);
-
- uint64_t hb_ff_mixdown_xlat(int hb_mixdown, int *downmix_mode);
---- HandBrake-1.1.2.orig/libhb/module.defs 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/module.defs 2018-11-07 16:51:42.516948168 -0500
-@@ -130,7 +130,7 @@
- LIBHB.lib = $(LIBHB.build/)hb.lib
-
- LIBHB.dll.libs = $(foreach n, \
-- ass avcodec avformat avfilter avutil avresample dvdnav dvdread \
-+ ass avformat avfilter avcodec avutil swresample postproc dvdnav dvdread \
- freetype mp3lame samplerate swscale vpx theora vorbis vorbisenc ogg \
- x264 xml2 bluray jansson harfbuzz opus, \
- $(CONTRIB.build/)lib/lib$(n).a )
-@@ -186,7 +186,7 @@
- endif
-
- LIBHB.GCC.args.extra.dylib++ += -Wl,--out-implib,$(LIBHB.lib)
--LIBHB.GCC.l += ws2_32 uuid ole32
-+LIBHB.GCC.l += bcrypt ws2_32 uuid ole32
- ifeq ($(HAS.dlfcn),1)
- LIBHB.GCC.l += dl
- endif
---- HandBrake-1.1.2.orig/libhb/muxavformat.c 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/muxavformat.c 2018-11-07 16:54:05.220517000 -0500
-@@ -800,7 +800,7 @@
- }
- else
- {
-- track->st->codecpar->codec_id = AV_CODEC_ID_SSA;
-+ track->st->codecpar->codec_id = AV_CODEC_ID_ASS;
- need_fonts = 1;
-
- if (subtitle->extradata_size)
-@@ -1197,10 +1197,12 @@
- {
- pkt.flags |= AV_PKT_FLAG_KEY;
- }
-+#ifdef AV_PKT_FLAG_DISPOSABLE
- if (!(buf->s.flags & HB_FLAG_FRAMETYPE_REF))
- {
- pkt.flags |= AV_PKT_FLAG_DISPOSABLE;
- }
-+#endif
- }
- else if (buf->s.frametype & HB_FRAME_MASK_KEY)
- {
-@@ -1313,7 +1315,7 @@
- free(styleatom);
- }
- }
-- if (track->st->codecpar->codec_id == AV_CODEC_ID_SSA &&
-+ if (track->st->codecpar->codec_id == AV_CODEC_ID_ASS &&
- job->mux == HB_MUX_AV_MKV)
- {
- // avformat requires the this additional information
---- HandBrake-1.1.2.orig/libhb/stream.c 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/stream.c 2018-11-07 16:56:19.404469782 -0500
-@@ -5315,7 +5315,7 @@
- "subtitle colors likely to be wrong" );
- break;
- case AV_CODEC_ID_TEXT:
-- case AV_CODEC_ID_SRT:
-+ case AV_CODEC_ID_SUBRIP:
- subtitle->format = TEXTSUB;
- subtitle->source = UTF8SUB;
- subtitle->config.dest = PASSTHRUSUB;
-@@ -5327,7 +5327,7 @@
- subtitle->config.dest = PASSTHRUSUB;
- subtitle->codec = WORK_DECTX3GSUB;
- break;
-- case AV_CODEC_ID_SSA:
-+ case AV_CODEC_ID_ASS:
- subtitle->format = TEXTSUB;
- subtitle->source = SSASUB;
- subtitle->config.dest = PASSTHRUSUB;
-@@ -5852,7 +5852,7 @@
- * either field. This is not a problem because the VOB decoder can extract this
- * information from the packet payload itself.
- *
-- * SSA subtitles (AV_CODEC_ID_SSA) do not have their duration stored in
-+ * SSA subtitles (AV_CODEC_ID_ASS) do not have their duration stored in
- * either field. This is not a problem because the SSA decoder can extract this
- * information from the packet payload itself.
- */
-@@ -5888,7 +5888,7 @@
- break;
- }
- if ( ffmpeg_pkt_codec == AV_CODEC_ID_TEXT ||
-- ffmpeg_pkt_codec == AV_CODEC_ID_SRT ||
-+ ffmpeg_pkt_codec == AV_CODEC_ID_SUBRIP ||
- ffmpeg_pkt_codec == AV_CODEC_ID_MOV_TEXT ) {
- int64_t ffmpeg_pkt_duration = stream->ffmpeg_pkt.duration;
- int64_t buf_duration = av_to_hb_pts( ffmpeg_pkt_duration, tsconv, 0 );
---- HandBrake-1.1.2.orig/macosx/HandBrake.xcodeproj/project.pbxproj 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/macosx/HandBrake.xcodeproj/project.pbxproj 2018-11-07 18:29:58.654562496 -0500
-@@ -7,11 +7,14 @@
- objects = {
-
- /* Begin PBXBuildFile section */
-+ 1C0695AC20BD193D001543DA /* libpostproc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C0695AA20BD193D001543DA /* libpostproc.a */; };
-+ 1C0695AD20BD193D001543DA /* libpostproc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C0695AA20BD193D001543DA /* libpostproc.a */; };
-+ 1C0695AE20BD193D001543DA /* libswresample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C0695AB20BD193D001543DA /* libswresample.a */; };
-+ 1C0695AF20BD193D001543DA /* libswresample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C0695AB20BD193D001543DA /* libswresample.a */; };
- 1C6D76551CD7733300F5B943 /* libharfbuzz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C15C82B1CD7722500368223 /* libharfbuzz.a */; };
- 1C6D76561CD7733400F5B943 /* libharfbuzz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C15C82B1CD7722500368223 /* libharfbuzz.a */; };
- 1C7776A2202300DD001C31EB /* HBRenamePresetController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C7776A0202300DC001C31EB /* HBRenamePresetController.m */; };
- 1C7776A5202301D5001C31EB /* HBRenamePresetController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1C7776A3202301D5001C31EB /* HBRenamePresetController.xib */; };
-- 226268E11572CC7300477B4E /* libavresample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226268DF1572CC7300477B4E /* libavresample.a */; };
- 22DD2C4B177B95DA00EF50D3 /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22DD2C49177B94DB00EF50D3 /* libvpx.a */; };
- 273F202314ADB8650021BE6D /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202214ADB8650021BE6D /* IOKit.framework */; };
- 273F202614ADB8A40021BE6D /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 273F202514ADB8A40021BE6D /* libz.dylib */; };
-@@ -124,7 +127,6 @@
- A91CE2B41C7DABBC0068F46F /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72914B102DA00B785E4 /* libavcodec.a */; };
- A91CE2B51C7DABBC0068F46F /* libavfilter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9E165511C523016003EF30E /* libavfilter.a */; };
- A91CE2B61C7DABBC0068F46F /* libavformat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72A14B102DA00B785E4 /* libavformat.a */; };
-- A91CE2B71C7DABBC0068F46F /* libavresample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226268DF1572CC7300477B4E /* libavresample.a */; };
- A91CE2B81C7DABBC0068F46F /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72B14B102DA00B785E4 /* libavutil.a */; };
- A91CE2B91C7DABBC0068F46F /* libbluray.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72C14B102DA00B785E4 /* libbluray.a */; };
- A91CE2BA1C7DABBC0068F46F /* libdvdnav.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27D6C72E14B102DA00B785E4 /* libdvdnav.a */; };
-@@ -317,11 +319,12 @@
- /* End PBXCopyFilesBuildPhase section */
-
- /* Begin PBXFileReference section */
-+ 1C0695AA20BD193D001543DA /* libpostproc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpostproc.a; path = "external/contrib/lib/libpostproc.a"; sourceTree = BUILT_PRODUCTS_DIR; };
-+ 1C0695AB20BD193D001543DA /* libswresample.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswresample.a; path = "external/contrib/lib/libswresample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 1C15C82B1CD7722500368223 /* libharfbuzz.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libharfbuzz.a; path = external/contrib/lib/libharfbuzz.a; sourceTree = BUILT_PRODUCTS_DIR; };
- 1C7776A0202300DC001C31EB /* HBRenamePresetController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HBRenamePresetController.m; sourceTree = "<group>"; };
- 1C7776A1202300DC001C31EB /* HBRenamePresetController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HBRenamePresetController.h; sourceTree = "<group>"; };
- 1C7776A4202301D5001C31EB /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/HBRenamePresetController.xib; sourceTree = "<group>"; };
-- 226268DF1572CC7300477B4E /* libavresample.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavresample.a; path = external/contrib/lib/libavresample.a; sourceTree = BUILT_PRODUCTS_DIR; };
- 22CC9E74191EBEA500C69D81 /* libx265.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libx265.a; path = external/contrib/lib/libx265.a; sourceTree = BUILT_PRODUCTS_DIR; };
- 22DD2C49177B94DB00EF50D3 /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = external/contrib/lib/libvpx.a; sourceTree = BUILT_PRODUCTS_DIR; };
- 271BA4C014B119F800BC1D2C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; name = Info.plist; path = external/macosx/Info.plist; sourceTree = BUILT_PRODUCTS_DIR; };
-@@ -630,7 +633,6 @@
- 27D6C74414B102DA00B785E4 /* libass.a in Frameworks */,
- 27D6C74614B102DA00B785E4 /* libavcodec.a in Frameworks */,
- 27D6C74814B102DA00B785E4 /* libavformat.a in Frameworks */,
-- 226268E11572CC7300477B4E /* libavresample.a in Frameworks */,
- 27D6C74A14B102DA00B785E4 /* libavutil.a in Frameworks */,
- 27D6C74C14B102DA00B785E4 /* libbluray.a in Frameworks */,
- 27D6C75014B102DA00B785E4 /* libdvdnav.a in Frameworks */,
-@@ -638,11 +640,13 @@
- 27D6C75814B102DA00B785E4 /* libfreetype.a in Frameworks */,
- 27D6C75A14B102DA00B785E4 /* libfribidi.a in Frameworks */,
- 27D6C75F14B102DA00B785E4 /* libmp3lame.a in Frameworks */,
-+ 1C0695AC20BD193D001543DA /* libpostproc.a in Frameworks */,
- 27D6C76514B102DA00B785E4 /* libogg.a in Frameworks */,
- 27D6C76714B102DA00B785E4 /* libsamplerate.a in Frameworks */,
- 27D6C76914B102DA00B785E4 /* libswscale.a in Frameworks */,
- 27D6C76B14B102DA00B785E4 /* libtheora.a in Frameworks */,
- 27D6C76D14B102DA00B785E4 /* libvorbis.a in Frameworks */,
-+ 1C0695AE20BD193D001543DA /* libswresample.a in Frameworks */,
- 27D6C76F14B102DA00B785E4 /* libvorbisenc.a in Frameworks */,
- 6F0D69A91AD0683100A39DCA /* Foundation.framework in Frameworks */,
- 22DD2C4B177B95DA00EF50D3 /* libvpx.a in Frameworks */,
-@@ -678,6 +682,7 @@
- A91CE2B21C7DAB550068F46F /* AudioToolbox.framework in Frameworks */,
- A91CE2D41C7DABE40068F46F /* libiconv.tbd in Frameworks */,
- A91CE2D21C7DABDA0068F46F /* libz.tbd in Frameworks */,
-+ 1C0695AF20BD193D001543DA /* libswresample.a in Frameworks */,
- A91CE2D01C7DABCE0068F46F /* libbz2.tbd in Frameworks */,
- A900E6BD1D7B1B5A00CB6C0A /* libopus.a in Frameworks */,
- A91CE2CE1C7DABBC0068F46F /* libvorbisfile.a in Frameworks */,
-@@ -685,7 +690,6 @@
- A91CE2B41C7DABBC0068F46F /* libavcodec.a in Frameworks */,
- A91CE2B51C7DABBC0068F46F /* libavfilter.a in Frameworks */,
- A91CE2B61C7DABBC0068F46F /* libavformat.a in Frameworks */,
-- A91CE2B71C7DABBC0068F46F /* libavresample.a in Frameworks */,
- A91CE2B81C7DABBC0068F46F /* libavutil.a in Frameworks */,
- A91CE2B91C7DABBC0068F46F /* libbluray.a in Frameworks */,
- A91CE2BA1C7DABBC0068F46F /* libdvdnav.a in Frameworks */,
-@@ -697,6 +701,7 @@
- A91CE2C01C7DABBC0068F46F /* libmp3lame.a in Frameworks */,
- A91CE2C11C7DABBC0068F46F /* libogg.a in Frameworks */,
- A91CE2C21C7DABBC0068F46F /* libsamplerate.a in Frameworks */,
-+ 1C0695AD20BD193D001543DA /* libpostproc.a in Frameworks */,
- A91CE2C31C7DABBC0068F46F /* libswscale.a in Frameworks */,
- A91CE2C41C7DABBC0068F46F /* libtheora.a in Frameworks */,
- A91CE2C51C7DABBC0068F46F /* libvorbis.a in Frameworks */,
-@@ -723,11 +728,12 @@
- 271BA4C714B1236D00BC1D2C /* Static Libraries */ = {
- isa = PBXGroup;
- children = (
-+ 1C0695AA20BD193D001543DA /* libpostproc.a */,
-+ 1C0695AB20BD193D001543DA /* libswresample.a */,
- 27D6C72414B1019100B785E4 /* libhandbrake.a */,
- 27D6C72814B102DA00B785E4 /* libass.a */,
- 27D6C72914B102DA00B785E4 /* libavcodec.a */,
- 27D6C72A14B102DA00B785E4 /* libavformat.a */,
-- 226268DF1572CC7300477B4E /* libavresample.a */,
- 27D6C72B14B102DA00B785E4 /* libavutil.a */,
- 27D6C72C14B102DA00B785E4 /* libbluray.a */,
- 27D6C72E14B102DA00B785E4 /* libdvdnav.a */,
---- HandBrake-1.1.2.orig/test/module.defs 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/test/module.defs 2018-11-07 17:03:22.815388083 -0500
-@@ -14,7 +14,7 @@
- TEST.libs = $(LIBHB.a)
-
- TEST.GCC.l = \
-- ass avresample avformat avcodec avfilter avutil mp3lame dvdnav \
-+ ass avformat avfilter avcodec avutil swresample postproc mp3lame dvdnav \
- dvdread fribidi \
- samplerate swscale vpx theoraenc theoradec vorbis vorbisenc ogg x264 \
- bluray freetype xml2 bz2 z jansson harfbuzz opus
-@@ -89,7 +89,7 @@
- else
- TEST.GCC.l += pthreadGC2
- endif
-- TEST.GCC.l += iconv ws2_32 regex uuid ole32
-+ TEST.GCC.l += bcrypt iconv ws2_32 regex uuid ole32
- TEST.GCC.D += PTW32_STATIC_LIB
- TEST.GCC.args.extra.exe++ += -static
- endif # (1-mingw,$(BUILD.cross)-$(BUILD.system))
---- HandBrake-1.1.2.orig/libhb/audio_resample.c 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/audio_resample.c 2018-11-07 17:49:17.441246400 -0500
-@@ -21,8 +21,8 @@
- goto fail;
- }
-
-- // avresample context, initialized in hb_audio_resample_update()
-- resample->avresample = NULL;
-+ // swresample context, initialized in hb_audio_resample_update()
-+ resample->swresample = NULL;
-
- // we don't support planar output yet
- if (av_sample_fmt_is_planar(sample_fmt))
-@@ -55,8 +55,15 @@
- resample->out.channels = av_get_channel_layout_nb_channels(channel_layout);
- resample->out.channel_layout = channel_layout;
- resample->out.matrix_encoding = matrix_encoding;
-- resample->out.normalize_mix_level = normalize_mix;
- resample->out.sample_fmt = sample_fmt;
-+ if (normalize_mix)
-+ {
-+ resample->out.maxval = 1.0;
-+ }
-+ else
-+ {
-+ resample->out.maxval = 1000;
-+ }
- resample->out.sample_size = av_get_bytes_per_sample(sample_fmt);
-
- // set default input characteristics
-@@ -105,7 +112,7 @@
- // Dolby Surround is Stereo when it comes to remixing
- channel_layout = AV_CH_LAYOUT_STEREO;
- }
-- // avresample can't remap a single-channel layout to
-+ // swresample can't remap a single-channel layout to
- // another single-channel layout
- if (resample->out.channel_layout == AV_CH_LAYOUT_MONO &&
- is_mono(channel_layout))
-@@ -161,50 +168,46 @@
- resample->resample.surround_mix_level != resample->in.surround_mix_level));
-
- if (resample_changed || (resample->resample_needed &&
-- resample->avresample == NULL))
-+ resample->swresample == NULL))
- {
-- if (resample->avresample == NULL)
-+ if (resample->swresample == NULL)
- {
-- resample->avresample = avresample_alloc_context();
-- if (resample->avresample == NULL)
-+ resample->swresample = swr_alloc();
-+ if (resample->swresample == NULL)
- {
-- hb_error("hb_audio_resample_update: avresample_alloc_context() failed");
-+ hb_error("hb_audio_resample_update: swr_alloc() failed");
- return 1;
- }
-
-- av_opt_set_int(resample->avresample, "out_sample_fmt",
-+ av_opt_set_int(resample->swresample, "out_sample_fmt",
- resample->out.sample_fmt, 0);
-- av_opt_set_int(resample->avresample, "out_channel_layout",
-+ av_opt_set_int(resample->swresample, "out_channel_layout",
- resample->out.channel_layout, 0);
-- av_opt_set_int(resample->avresample, "matrix_encoding",
-+ av_opt_set_int(resample->swresample, "matrix_encoding",
- resample->out.matrix_encoding, 0);
-- av_opt_set_int(resample->avresample, "normalize_mix_level",
-- resample->out.normalize_mix_level, 0);
-- }
-- else if (resample_changed)
-- {
-- avresample_close(resample->avresample);
-+ av_opt_set_double(resample->swresample, "rematrix_maxval",
-+ resample->out.maxval, 0);
- }
-
-- av_opt_set_int(resample->avresample, "in_sample_fmt",
-+ av_opt_set_int(resample->swresample, "in_sample_fmt",
- resample->in.sample_fmt, 0);
-- av_opt_set_int(resample->avresample, "in_channel_layout",
-+ av_opt_set_int(resample->swresample, "in_channel_layout",
- resample->in.channel_layout, 0);
-- av_opt_set_double(resample->avresample, "lfe_mix_level",
-+ av_opt_set_double(resample->swresample, "lfe_mix_level",
- resample->in.lfe_mix_level, 0);
-- av_opt_set_double(resample->avresample, "center_mix_level",
-+ av_opt_set_double(resample->swresample, "center_mix_level",
- resample->in.center_mix_level, 0);
-- av_opt_set_double(resample->avresample, "surround_mix_level",
-+ av_opt_set_double(resample->swresample, "surround_mix_level",
- resample->in.surround_mix_level, 0);
-
-- if ((ret = avresample_open(resample->avresample)))
-+ if ((ret = swr_init(resample->swresample)))
- {
- char err_desc[64];
- av_strerror(ret, err_desc, 63);
-- hb_error("hb_audio_resample_update: avresample_open() failed (%s)",
-+ hb_error("hb_audio_resample_update: swr_init() failed (%s)",
- err_desc);
-- // avresample won't open, start over
-- avresample_free(&resample->avresample);
-+ // swresample won't open, start over
-+ swr_free(&resample->swresample);
- return ret;
- }
-
-@@ -224,25 +227,25 @@
- {
- if (resample != NULL)
- {
-- if (resample->avresample != NULL)
-+ if (resample->swresample != NULL)
- {
-- avresample_free(&resample->avresample);
-+ swr_free(&resample->swresample);
- }
- free(resample);
- }
- }
-
- hb_buffer_t* hb_audio_resample(hb_audio_resample_t *resample,
-- uint8_t **samples, int nsamples)
-+ const uint8_t **samples, int nsamples)
- {
- if (resample == NULL)
- {
- hb_error("hb_audio_resample: resample is NULL");
- return NULL;
- }
-- if (resample->resample_needed && resample->avresample == NULL)
-+ if (resample->resample_needed && resample->swresample == NULL)
- {
-- hb_error("hb_audio_resample: resample needed but libavresample context "
-+ hb_error("hb_audio_resample: resample needed but libswresample context "
- "is NULL");
- return NULL;
- }
-@@ -252,24 +255,18 @@
-
- if (resample->resample_needed)
- {
-- int in_linesize, out_linesize;
-- // set in/out linesize and out_size
-- av_samples_get_buffer_size(&in_linesize,
-- resample->resample.channels, nsamples,
-- resample->resample.sample_fmt, 0);
-- out_size = av_samples_get_buffer_size(&out_linesize,
-+ out_size = av_samples_get_buffer_size(NULL,
- resample->out.channels, nsamples,
- resample->out.sample_fmt, 0);
- out = hb_buffer_init(out_size);
-
-- out_samples = avresample_convert(resample->avresample,
-- &out->data, out_linesize, nsamples,
-- samples, in_linesize, nsamples);
-+ out_samples = swr_convert(resample->swresample, &out->data, nsamples,
-+ samples, nsamples);
-
- if (out_samples <= 0)
- {
- if (out_samples < 0)
-- hb_log("hb_audio_resample: avresample_convert() failed");
-+ hb_log("hb_audio_resample: swr_convert() failed");
- // don't send empty buffers downstream (EOF)
- hb_buffer_close(&out);
- return NULL;
---- HandBrake-1.1.2.orig/libhb/audio_resample.h 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/audio_resample.h 2018-11-07 18:01:39.397808925 -0500
-@@ -7,11 +7,11 @@
- * For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html
- */
-
--/* Implements a libavresample wrapper for convenience.
-+/* Implements a libswresample wrapper for convenience.
- *
- * Supports sample_fmt and channel_layout conversion.
- *
-- * sample_rate conversion will come later (libavresample doesn't support
-+ * sample_rate conversion will come later (libswresample doesn't support
- * sample_rate conversion with float samples yet). */
-
- #ifndef AUDIO_RESAMPLE_H
-@@ -20,7 +20,7 @@
- #include <math.h>
- #include <stdint.h>
- #include "libavutil/channel_layout.h"
--#include "libavresample/avresample.h"
-+#include "libswresample/swresample.h"
-
- /* Default mix level for center and surround channels */
- #define HB_MIXLEV_DEFAULT ((double)M_SQRT1_2)
-@@ -33,7 +33,7 @@
- int dual_mono_right_only;
-
- int resample_needed;
-- AVAudioResampleContext *avresample;
-+ SwrContext *swresample;
-
- struct
- {
-@@ -58,10 +58,10 @@
- {
- int channels;
- int sample_size;
-- int normalize_mix_level;
- uint64_t channel_layout;
- enum AVSampleFormat sample_fmt;
- enum AVMatrixEncoding matrix_encoding;
-+ double maxval;
- } out;
- } hb_audio_resample_t;
-
-@@ -108,6 +108,6 @@
- * resampling is only done when necessary.
- */
- hb_buffer_t* hb_audio_resample(hb_audio_resample_t *resample,
-- uint8_t **samples, int nsamples);
-+ const uint8_t **samples, int nsamples);
-
- #endif /* AUDIO_RESAMPLE_H */
---- HandBrake-1.1.2.orig/libhb/common.c 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/common.c 2018-11-07 18:06:08.535679790 -0500
-@@ -177,12 +177,12 @@
- hb_dither_t *hb_audio_dithers_last_item = NULL;
- hb_dither_internal_t hb_audio_dithers[] =
- {
-- { { "default", "auto", AV_RESAMPLE_DITHER_NONE - 1, }, NULL, 1, },
-- { { "none", "none", AV_RESAMPLE_DITHER_NONE, }, NULL, 1, },
-- { { "rectangular", "rectangular", AV_RESAMPLE_DITHER_RECTANGULAR, }, NULL, 1, },
-- { { "triangular", "triangular", AV_RESAMPLE_DITHER_TRIANGULAR, }, NULL, 1, },
-- { { "triangular with high pass", "triangular_hp", AV_RESAMPLE_DITHER_TRIANGULAR_HP, }, NULL, 1, },
-- { { "triangular with noise shaping", "triangular_ns", AV_RESAMPLE_DITHER_TRIANGULAR_NS, }, NULL, 1, },
-+ { { "default", "auto", SWR_DITHER_NONE - 1, }, NULL, 1, },
-+ { { "none", "none", SWR_DITHER_NONE, }, NULL, 1, },
-+ { { "rectangular", "rectangular", SWR_DITHER_RECTANGULAR, }, NULL, 1, },
-+ { { "triangular", "triangular", SWR_DITHER_TRIANGULAR, }, NULL, 1, },
-+ { { "triangular with high pass", "triangular_hp", SWR_DITHER_TRIANGULAR_HIGHPASS, }, NULL, 1, },
-+ { { "lipshitz noise shaping", "lipshitz_ns", SWR_DITHER_NS_LIPSHITZ, }, NULL, 1, },
- };
- int hb_audio_dithers_count = sizeof(hb_audio_dithers) / sizeof(hb_audio_dithers[0]);
-
-@@ -1675,22 +1675,13 @@
- * input could be s16 (possibly already dithered) converted to flt, so
- * let's use a "low-risk" dither algorithm (standard triangular).
- */
-- return AV_RESAMPLE_DITHER_TRIANGULAR;
-+ return SWR_DITHER_TRIANGULAR;
- }
-
- int hb_audio_dither_is_supported(uint32_t codec)
- {
-- // encoder's input sample format must be s16(p)
-- switch (codec)
-- {
-- case HB_ACODEC_FFFLAC:
-- case HB_ACODEC_FDK_AAC:
-- case HB_ACODEC_FDK_HAAC:
-- return 1;
--
-- default:
-- return 0;
-- }
-+ // Since dithering is performed by swresample, all codecs are supported
-+ return 1;
- }
-
- int hb_audio_dither_get_from_name(const char *name)
-@@ -1857,7 +1848,7 @@
- // regular stereo (not Dolby)
- case HB_AMIXDOWN_LEFT:
- case HB_AMIXDOWN_RIGHT:
-- return (layout == AV_CH_LAYOUT_STEREO);
-+ return (layout & AV_CH_LAYOUT_STEREO);
-
- // mono remix always supported
- // HB_AMIXDOWN_NONE always supported (for Passthru)
---- HandBrake-1.1.2.orig/libhb/declpcm.c 2018-09-04 14:35:01.000000000 -0500
-+++ HandBrake-1.1.2/libhb/declpcm.c 2018-11-07 18:10:28.433967052 -0500
-@@ -338,7 +338,8 @@
- hb_log("declpcm: hb_audio_resample_update() failed");
- return NULL;
- }
-- out = hb_audio_resample(pv->resample, &pv->data, pv->nsamples);
-+ out = hb_audio_resample(pv->resample, (const uint8_t **)&pv->data,
-+ pv->nsamples);
-
- if (out != NULL)
- {
-