summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD12
-rw-r--r--dav1d_v1.patch80
-rw-r--r--dav1d_v1_limit.patch61
4 files changed, 155 insertions, 4 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 8775fe1a77e3..bcbcd55d795b 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = vlc-nox
pkgdesc = Multi-platform MPEG, VCD/DVD, and DivX player (without X support)
pkgver = 3.0.17.4
- pkgrel = 1
+ pkgrel = 2
url = https://www.videolan.org/vlc/
arch = x86_64
license = LGPL2.1
@@ -164,9 +164,13 @@ pkgbase = vlc-nox
source = update-vlc-plugin-cache.hook
source = caca-fix-to-newer-version.patch
source = vlc-live-media-2021.patch
+ source = dav1d_v1.patch
+ source = dav1d_v1_limit.patch
sha512sums = dac14c6586603c064294672eb878253e52b3a7bef431fb10303345e5400591b5c1f2d452a2af03f503db0ca186582a84be06fdf05ab011c33f7b0bd5389c51fb
sha512sums = b247510ffeadfd439a5dadd170c91900b6cdb05b5ca00d38b1a17c720ffe5a9f75a32e0cb1af5ebefdf1c23c5acc53513ed983a736e8fa30dd8fad237ef49dd3
sha512sums = ef479a246dc98f882a05ca56a1c2872cc67ced154c625790070b887858ddc250d55b1295db82c9122e5ecd3c2c9c712ec9718e28d0a9d21ff6a230eb6c5010ce
sha512sums = ad17d6f4f2cc83841c1c89623c339ec3ee94f6084ea980e2c8cbc3903854c85e5396e31bfd8dc90745b41794670903d854c4d282d8adec263087a9d47b226ccc
+ sha512sums = 5f7aa43a7b248812758a8ef82d15d59fb566327fc3e837002a8f4741cabde09ed7caca905f6fe168554b9a4b7561816b3eff877f4dd6664ceaf0964281facb4f
+ sha512sums = 4aca4979fe7516ee9d39ae8e2c91c0f981a033ed5c6a74eaf86569df8bbcf72ab0be037f27c8af78f26c23dc181e52bbf4a3e0209e07160fdb03e8fa33e6bc38
pkgname = vlc-nox
diff --git a/PKGBUILD b/PKGBUILD
index 95d06315ab93..179d363d48ea 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -8,7 +8,7 @@
_pkgbase=vlc
pkgname=vlc-nox
pkgver=3.0.17.4
-pkgrel=1
+pkgrel=2
pkgdesc='Multi-platform MPEG, VCD/DVD, and DivX player (without X support)'
url='https://www.videolan.org/vlc/'
arch=('x86_64')
@@ -98,11 +98,15 @@ options=('!emptydirs')
source=(http://download.videolan.org/${_pkgbase}/${pkgver}/${_pkgbase}-${pkgver}.tar.xz
update-vlc-plugin-cache.hook
caca-fix-to-newer-version.patch
- vlc-live-media-2021.patch)
+ vlc-live-media-2021.patch
+ dav1d_v1.patch
+ dav1d_v1_limit.patch)
sha512sums=('dac14c6586603c064294672eb878253e52b3a7bef431fb10303345e5400591b5c1f2d452a2af03f503db0ca186582a84be06fdf05ab011c33f7b0bd5389c51fb'
'b247510ffeadfd439a5dadd170c91900b6cdb05b5ca00d38b1a17c720ffe5a9f75a32e0cb1af5ebefdf1c23c5acc53513ed983a736e8fa30dd8fad237ef49dd3'
'ef479a246dc98f882a05ca56a1c2872cc67ced154c625790070b887858ddc250d55b1295db82c9122e5ecd3c2c9c712ec9718e28d0a9d21ff6a230eb6c5010ce'
- 'ad17d6f4f2cc83841c1c89623c339ec3ee94f6084ea980e2c8cbc3903854c85e5396e31bfd8dc90745b41794670903d854c4d282d8adec263087a9d47b226ccc')
+ 'ad17d6f4f2cc83841c1c89623c339ec3ee94f6084ea980e2c8cbc3903854c85e5396e31bfd8dc90745b41794670903d854c4d282d8adec263087a9d47b226ccc'
+ '5f7aa43a7b248812758a8ef82d15d59fb566327fc3e837002a8f4741cabde09ed7caca905f6fe168554b9a4b7561816b3eff877f4dd6664ceaf0964281facb4f'
+ '4aca4979fe7516ee9d39ae8e2c91c0f981a033ed5c6a74eaf86569df8bbcf72ab0be037f27c8af78f26c23dc181e52bbf4a3e0209e07160fdb03e8fa33e6bc38')
prepare() {
cd "${srcdir}/${_pkgbase}-${pkgver}"
@@ -110,6 +114,8 @@ prepare() {
sed -e 's|-Werror-implicit-function-declaration||g' -i configure
patch -Np1 < "${srcdir}/caca-fix-to-newer-version.patch"
patch -Np1 < "${srcdir}/vlc-live-media-2021.patch"
+ patch -Np1 < "${srcdir}/dav1d_v1.patch"
+ patch -Np1 < "${srcdir}/dav1d_v1_limit.patch"
sed 's|whoami|echo builduser|g' -i configure
sed 's|hostname -f|echo arch|g' -i configure
autoreconf -vf
diff --git a/dav1d_v1.patch b/dav1d_v1.patch
new file mode 100644
index 000000000000..a86cfb243b8f
--- /dev/null
+++ b/dav1d_v1.patch
@@ -0,0 +1,80 @@
+From 2202c892c8dc1381b596c53c2ebd3ca680061f95 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Fri, 18 Mar 2022 11:42:49 +0100
+Subject: [PATCH] dav1d: fix compilation with (upcoming) dav1d 1.0
+
+(cherry picked from commit dbf45cea2a8abdfbef897b8a71f3eb782bb1b712) (edited)
+edited:
+- 3.0 has the 128 pixels padding elsewhere
+- 3.0 has an extra parameter for add_integer_with_range()
+- 3.0 was setting i_extra_picture_buffers further down in the code
+- 3.0 uses 16 threads max
+
+Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
+---
+ modules/codec/dav1d.c | 22 +++++++++++++++++++++-
+ 1 file changed, 21 insertions(+), 1 deletion(-)
+
+diff --git a/modules/codec/dav1d.c b/modules/codec/dav1d.c
+index 039165f52ec..cfabbc27cb3 100644
+--- a/modules/codec/dav1d.c
++++ b/modules/codec/dav1d.c
+@@ -63,10 +63,16 @@ vlc_module_begin ()
+ set_category(CAT_INPUT)
+ set_subcategory(SUBCAT_INPUT_VCODEC)
+
++#if DAV1D_API_VERSION_MAJOR >= 6
++ add_integer_with_range("dav1d-thread-frames", 0, 0, DAV1D_MAX_THREADS,
++ THREAD_FRAMES_TEXT, THREAD_FRAMES_LONGTEXT, false)
++ add_obsolete_string("dav1d-thread-tiles") // unused with dav1d 1.0
++#else
+ add_integer_with_range("dav1d-thread-frames", 0, 0, DAV1D_MAX_FRAME_THREADS,
+ THREAD_FRAMES_TEXT, THREAD_FRAMES_LONGTEXT, false)
+ add_integer_with_range("dav1d-thread-tiles", 0, 0, DAV1D_MAX_TILE_THREADS,
+ THREAD_TILES_TEXT, THREAD_TILES_LONGTEXT, false)
++#endif
+ vlc_module_end ()
+
+ /*****************************************************************************
+@@ -294,6 +300,11 @@ static int OpenDecoder(vlc_object_t *p_this)
+ return VLC_ENOMEM;
+
+ dav1d_default_settings(&p_sys->s);
++#if DAV1D_API_VERSION_MAJOR >= 6
++ p_sys->s.n_threads = var_InheritInteger(p_this, "dav1d-thread-frames");
++ if (p_sys->s.n_threads == 0)
++ p_sys->s.n_threads = (i_core_count < 16) ? i_core_count : 16;
++#else
+ p_sys->s.n_tile_threads = var_InheritInteger(p_this, "dav1d-thread-tiles");
+ if (p_sys->s.n_tile_threads == 0)
+ p_sys->s.n_tile_threads =
+@@ -303,6 +314,7 @@ static int OpenDecoder(vlc_object_t *p_this)
+ p_sys->s.n_frame_threads = var_InheritInteger(p_this, "dav1d-thread-frames");
+ if (p_sys->s.n_frame_threads == 0)
+ p_sys->s.n_frame_threads = (i_core_count < 16) ? i_core_count : 16;
++#endif
+ p_sys->s.allocator.cookie = dec;
+ p_sys->s.allocator.alloc_picture_callback = NewPicture;
+ p_sys->s.allocator.release_picture_callback = FreePicture;
+@@ -313,12 +325,20 @@ static int OpenDecoder(vlc_object_t *p_this)
+ return VLC_EGENERIC;
+ }
+
++#if DAV1D_API_VERSION_MAJOR >= 6
++ msg_Dbg(p_this, "Using dav1d version %s with %d threads",
++ dav1d_version(), p_sys->s.n_threads);
++
++ dec->i_extra_picture_buffers = (p_sys->s.n_threads - 1);
++#else
+ msg_Dbg(p_this, "Using dav1d version %s with %d/%d frame/tile threads",
+ dav1d_version(), p_sys->s.n_frame_threads, p_sys->s.n_tile_threads);
+
++ dec->i_extra_picture_buffers = (p_sys->s.n_frame_threads - 1);
++#endif
++
+ dec->pf_decode = Decode;
+ dec->pf_flush = FlushDecoder;
+- dec->i_extra_picture_buffers = (p_sys->s.n_frame_threads - 1);
+
+ dec->fmt_out.video.i_width = dec->fmt_in.video.i_width;
+ dec->fmt_out.video.i_height = dec->fmt_in.video.i_height;
diff --git a/dav1d_v1_limit.patch b/dav1d_v1_limit.patch
new file mode 100644
index 000000000000..f523fe6fe148
--- /dev/null
+++ b/dav1d_v1_limit.patch
@@ -0,0 +1,61 @@
+From d38ddd7270ffaea705981b6a48086778850d3c96 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Mon, 21 Mar 2022 15:53:52 +0100
+Subject: [PATCH] dav1d: limit the number of extra frames needed by the decoder
+
+The i_extra_picture_buffers is used to add pictures to the pool that the core
+will allocate. dav1d is actually using n_threads frames. And the core is
+allocating 10 frames per default for AV1. So we need to add the missing ones.
+
+(cherry picked from commit a32031dc0f5f32083fc54a21397bce732742ccbe) (rebased)
+rebased:
+- the code dav1d 1.0.0 in 3.0 uses different max versions
+
+Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
+---
+ modules/codec/dav1d.c | 25 +++++++++++++++++++++++--
+ 1 file changed, 23 insertions(+), 2 deletions(-)
+
+diff --git a/modules/codec/dav1d.c b/modules/codec/dav1d.c
+index cfabbc27cb3..8a439ce4ff4 100644
+--- a/modules/codec/dav1d.c
++++ b/modules/codec/dav1d.c
+@@ -304,7 +304,28 @@ static int OpenDecoder(vlc_object_t *p_this)
+ p_sys->s.n_threads = var_InheritInteger(p_this, "dav1d-thread-frames");
+ if (p_sys->s.n_threads == 0)
+ p_sys->s.n_threads = (i_core_count < 16) ? i_core_count : 16;
+-#else
++
++#if DAV1D_API_VERSION_MAJOR > 6 || DAV1D_API_VERSION_MINOR >= 7
++ // after dav1d 1.0.0
++ p_sys->s.max_frame_delay = dav1d_get_frame_delay( &p_sys->s );
++#else // 1.0.0
++ // corresponds to c->n_fc when max_frame_delay is 0 in dav1d 1.0.0
++ static const uint8_t fc_lut[49] = {
++ 1, /* 1 */
++ 2, 2, 2, /* 2- 4 */
++ 3, 3, 3, 3, 3, /* 5- 9 */
++ 4, 4, 4, 4, 4, 4, 4, /* 10-16 */
++ 5, 5, 5, 5, 5, 5, 5, 5, 5, /* 17-25 */
++ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, /* 26-36 */
++ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, /* 37-49 */
++ };
++ if (p_sys->s.n_threads >= 50)
++ p_sys->s.max_frame_delay = 8;
++ else
++ p_sys->s.max_frame_delay = fc_lut[p_sys->s.n_threads - 1];
++#endif
++
++#else // before dav1d 1.0.0
+ p_sys->s.n_tile_threads = var_InheritInteger(p_this, "dav1d-thread-tiles");
+ if (p_sys->s.n_tile_threads == 0)
+ p_sys->s.n_tile_threads =
+@@ -329,7 +350,7 @@ static int OpenDecoder(vlc_object_t *p_this)
+ msg_Dbg(p_this, "Using dav1d version %s with %d threads",
+ dav1d_version(), p_sys->s.n_threads);
+
+- dec->i_extra_picture_buffers = (p_sys->s.n_threads - 1);
++ dec->i_extra_picture_buffers = p_sys->s.max_frame_delay;
+ #else
+ msg_Dbg(p_this, "Using dav1d version %s with %d/%d frame/tile threads",
+ dav1d_version(), p_sys->s.n_frame_threads, p_sys->s.n_tile_threads);