aboutsummaryrefslogtreecommitdiffstats
path: root/meta-multimedia/recipes-multimedia/vlc
diff options
context:
space:
mode:
Diffstat (limited to 'meta-multimedia/recipes-multimedia/vlc')
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.4.3.bb (renamed from meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.4.2.bb)5
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc/0001-make-opencv-configurable.patch8
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc/0001-po-Fix-invalid-.oc-translation-format-string.patch44
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc/0001-taglib-Fix-build-on-x86-32-bit.patch50
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc/0002-use-vorbisidec.patch10
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc/0003-fix-luaL-checkint.patch2
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch8
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc/0005-Fix-build-with-Qt-5.15.patch56
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc/0005-ioctl-does-not-have-same-signature-between-glibc-and.patch40
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc/0006-configure-Disable-incompatible-function-pointer-type.patch26
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc/4645.patch179
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc/4665.patch377
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc/taglib-2.patch67
-rw-r--r--meta-multimedia/recipes-multimedia/vlc/vlc_3.0.20.bb (renamed from meta-multimedia/recipes-multimedia/vlc/vlc_3.0.11.bb)41
14 files changed, 817 insertions, 96 deletions
diff --git a/meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.4.2.bb b/meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.4.3.bb
index fe06699ab4..42c771e0ff 100644
--- a/meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.4.2.bb
+++ b/meta-multimedia/recipes-multimedia/vlc/libdvdcss_1.4.3.bb
@@ -1,6 +1,6 @@
SUMMARY = "libdvdcss is a simple library for accessing DVDs like block devices"
DESCRIPTION = "libdvdcss is a simple library designed for accessing DVDs like a block device without having to bother about the decryption."
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
SRC_URI = "http://download.videolan.org/pub/libdvdcss/${PV}/libdvdcss-${PV}.tar.bz2"
@@ -9,5 +9,4 @@ inherit autotools
EXTRA_OECONF = " --disable-doc "
-SRC_URI[md5sum] = "7b74f2e142b13c9de6dc8d807ab912d4"
-SRC_URI[sha256sum] = "78c2ed77ec9c0d8fbed7bf7d3abc82068b8864be494cfad165821377ff3f2575"
+SRC_URI[sha256sum] = "233cc92f5dc01c5d3a96f5b3582be7d5cee5a35a52d3a08158745d3d86070079"
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/0001-make-opencv-configurable.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/0001-make-opencv-configurable.patch
index 950c09b8ae..d6ff0b2dba 100644
--- a/meta-multimedia/recipes-multimedia/vlc/vlc/0001-make-opencv-configurable.patch
+++ b/meta-multimedia/recipes-multimedia/vlc/vlc/0001-make-opencv-configurable.patch
@@ -5,11 +5,9 @@ Upstream-Status: Inappropriate [configuration]
Signed-off-by: Tim Orling <TicoTimo@gmail.com>
-Index: vlc-2.1.4/configure.ac
-===================================================================
---- vlc-2.1.4.orig/configure.ac
-+++ vlc-2.1.4/configure.ac
-@@ -1693,7 +1693,16 @@ PKG_ENABLE_MODULES_VLC([BLURAY], [libblu
+--- a/configure.ac
++++ b/configure.ac
+@@ -1891,7 +1891,16 @@ PKG_ENABLE_MODULES_VLC([BLURAY], [libblu
dnl
dnl OpenCV wrapper and example filters
dnl
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/0001-po-Fix-invalid-.oc-translation-format-string.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/0001-po-Fix-invalid-.oc-translation-format-string.patch
new file mode 100644
index 0000000000..866ed03294
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/vlc/vlc/0001-po-Fix-invalid-.oc-translation-format-string.patch
@@ -0,0 +1,44 @@
+From fc4bd86bea0b81da0b6fa5be0a352aecc8fa690a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 9 Sep 2023 20:13:55 -0700
+Subject: [PATCH] po: Fix invalid .oc translation format string
+
+gettext can validate format strings now [1] with 0.22 and newer release
+
+[1] https://savannah.gnu.org/bugs/index.php?64332#comment1
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ po/oc.po | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/po/oc.po b/po/oc.po
+index 667696cfe7..ddb1677d8a 100644
+--- a/po/oc.po
++++ b/po/oc.po
+@@ -5298,18 +5298,18 @@ msgstr "Comanda+"
+ #: src/misc/update.c:482
+ #, c-format
+ msgid "%.1f GiB"
+-msgstr "%.lf Gio"
++msgstr "%.1f Gio"
+
+ #: src/misc/update.c:484
+ #, c-format
+ msgid "%.1f MiB"
+-msgstr "%.lf Mio"
++msgstr "%.1f Mio"
+
+ #: src/misc/update.c:486 modules/gui/macosx/VLCPlaylistInfo.m:138
+ #: modules/gui/macosx/VLCPlaylistInfo.m:140
+ #, c-format
+ msgid "%.1f KiB"
+-msgstr "%.lf Kio"
++msgstr "%.1f Kio"
+
+ #: src/misc/update.c:488
+ #, c-format
+--
+2.42.0
+
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/0001-taglib-Fix-build-on-x86-32-bit.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/0001-taglib-Fix-build-on-x86-32-bit.patch
new file mode 100644
index 0000000000..2dff9b63ce
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/vlc/vlc/0001-taglib-Fix-build-on-x86-32-bit.patch
@@ -0,0 +1,50 @@
+From 5b921009b0db2c5c15aef7ce241d3c81f9c272c9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 9 Mar 2024 12:26:39 -0800
+Subject: [PATCH] taglib: Fix build on x86 32-bit
+
+While compiling with clang, there are errors seen such as
+on function override signature mismatches
+
+meta_engine/taglib.cpp:240:10: error: virtual function 'tell' has a different return type ('long') than the function it overrides (which has return type 'offset_t' (aka 'long long'))
+ 240 | long tell() const
+ | ~~~~ ^
+/mnt/b/yoe/master/build/tmp/work/core2-32-yoe-linux/vlc/3.0.20/recipe-sysroot/usr/include/taglib/tiostream.h:156:22: note: overridden virtual function is here
+ 156 | virtual offset_t tell() const = 0;
+ | ~~~~~~~~ ^
+meta_engine/taglib.cpp:245:10: error: virtual function 'length' has a different return type ('long') than the function it overrides (which has return type 'offset_t' (aka 'long long'))
+ 245 | long length()
+ | ~~~~ ^
+/mnt/b/yoe/master/build/tmp/work/core2-32-yoe-linux/vlc/3.0.20/recipe-sysroot/usr/include/taglib/tiostream.h:161:22: note: overridden virtual function is here
+ 161 | virtual offset_t length() = 0;
+ | ~~~~~~~~ ^
+
+Upstream-Status: Submitted [https://mailman.videolan.org/pipermail/vlc-devel/2024-March/143639.html]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ modules/meta_engine/taglib.cpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp
+index f371485008..129fdf55f1 100644
+--- a/modules/meta_engine/taglib.cpp
++++ b/modules/meta_engine/taglib.cpp
+@@ -237,12 +237,12 @@ public:
+ return;
+ }
+
+- long tell() const
++ offset_t tell() const
+ {
+- return m_previousPos;
++ return (offset_t)m_previousPos;
+ }
+
+- long length()
++ offset_t length()
+ {
+ uint64_t i_size;
+ if (vlc_stream_GetSize( m_stream, &i_size ) != VLC_SUCCESS)
+--
+2.44.0
+
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/0002-use-vorbisidec.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/0002-use-vorbisidec.patch
index d05cf02b71..f68da33607 100644
--- a/meta-multimedia/recipes-multimedia/vlc/vlc/0002-use-vorbisidec.patch
+++ b/meta-multimedia/recipes-multimedia/vlc/vlc/0002-use-vorbisidec.patch
@@ -1,14 +1,12 @@
* tremor provides libvorbisidec, use it instead of libvorbisdec
-Upstream-status: Pending
+Upstream-Status: Pending
Signed-off-by: Tim Orling <TicoTimo@gmail.com>
-Index: vlc-2.2.1/modules/codec/Makefile.am
-===================================================================
---- vlc-2.2.1.orig/modules/codec/Makefile.am
-+++ vlc-2.2.1/modules/codec/Makefile.am
-@@ -234,7 +234,7 @@ codec_LTLIBRARIES += $(LTLIBtheora)
+--- a/modules/codec/Makefile.am
++++ b/modules/codec/Makefile.am
+@@ -324,7 +324,7 @@ codec_LTLIBRARIES += $(LTLIBdaala)
libtremor_plugin_la_SOURCES = codec/vorbis.c
libtremor_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) -DMODULE_NAME_IS_tremor
libtremor_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(codecdir)'
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/0003-fix-luaL-checkint.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/0003-fix-luaL-checkint.patch
index 96b5d2d246..e10002f78e 100644
--- a/meta-multimedia/recipes-multimedia/vlc/vlc/0003-fix-luaL-checkint.patch
+++ b/meta-multimedia/recipes-multimedia/vlc/vlc/0003-fix-luaL-checkint.patch
@@ -1,7 +1,7 @@
* luaL_checkint and luaL_optint were deprecated in lua 5.3
* replacement functions are luaL_checkinteger and luaL_optinteger
-Upstream-status: Pending
+Upstream-Status: Pending
Signed-off-by: Tim Orling <TicoTimo@gmail.com>
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch
index 424aaa2815..6659a44a0a 100644
--- a/meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch
+++ b/meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch
@@ -8,16 +8,15 @@ in different locations, therefore its best to rely on pkgconf to find
the libs and header locations instead of assuming /opt/vc which might
work on some distros ( like raspbian ) but not everywhere
+Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
configure.ac | 31 +++++++++++--------------------
1 file changed, 11 insertions(+), 20 deletions(-)
-diff --git a/configure.ac b/configure.ac
-index d7cf692..f81b99d 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -3427,27 +3427,18 @@ AC_ARG_ENABLE(mmal,
+@@ -3460,27 +3460,18 @@ AC_ARG_ENABLE(mmal,
AS_HELP_STRING([--enable-mmal],
[Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
if test "${enable_mmal}" != "no"; then
@@ -56,6 +55,3 @@ index d7cf692..f81b99d 100644
dnl
dnl evas plugin
---
-2.26.1
-
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/0005-Fix-build-with-Qt-5.15.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/0005-Fix-build-with-Qt-5.15.patch
deleted file mode 100644
index c4465b6af3..0000000000
--- a/meta-multimedia/recipes-multimedia/vlc/vlc/0005-Fix-build-with-Qt-5.15.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From c805c6f64da6d8b03355b4796865b75e2f3b500d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Mon, 8 Jun 2020 00:50:08 +0200
-Subject: [PATCH] Fix build with Qt >= 5.15
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- modules/gui/qt/components/playlist/views.cpp | 1 +
- modules/gui/qt/dialogs/plugins.cpp | 1 +
- modules/gui/qt/util/timetooltip.hpp | 1 +
- 3 files changed, 3 insertion(+)
-
-diff --git a/modules/gui/qt/components/playlist/views.cpp b/modules/gui/qt/components/playlist/views.cpp
-index 24db9d9..71d8514 100644
---- a/modules/gui/qt/components/playlist/views.cpp
-+++ b/modules/gui/qt/components/playlist/views.cpp
-@@ -35,6 +35,7 @@
- #include <QMetaType>
- #include <QHeaderView>
- #include <QSvgRenderer>
-+#include <QPainterPath>
-
- #include <assert.h>
-
-diff --git a/modules/gui/qt/dialogs/plugins.cpp b/modules/gui/qt/dialogs/plugins.cpp
-index d233382..9ae9a63 100644
---- a/modules/gui/qt/dialogs/plugins.cpp
-+++ b/modules/gui/qt/dialogs/plugins.cpp
-@@ -66,6 +66,7 @@
- #include <QSplitter>
- #include <QToolButton>
- #include <QStackedWidget>
-+#include <QPainterPath>
-
- //match the image source (width/height)
- #define SCORE_ICON_WIDTH_SCALE 4
-diff --git a/modules/gui/qt/util/timetooltip.hpp b/modules/gui/qt/util/timetooltip.hpp
-index 6a1329e..9f50b18 100644
---- a/modules/gui/qt/util/timetooltip.hpp
-+++ b/modules/gui/qt/util/timetooltip.hpp
-@@ -25,6 +25,7 @@
- #include "qt.hpp"
-
- #include <QWidget>
-+#include <QPainterPath>
-
- class TimeTooltip : public QWidget
- {
---
-2.26.2
-
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/0005-ioctl-does-not-have-same-signature-between-glibc-and.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/0005-ioctl-does-not-have-same-signature-between-glibc-and.patch
new file mode 100644
index 0000000000..89e7d585d7
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/vlc/vlc/0005-ioctl-does-not-have-same-signature-between-glibc-and.patch
@@ -0,0 +1,40 @@
+From a46cee56d05884b8020ace6f67ef8389ac1845da Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 5 Mar 2023 13:50:40 -0800
+Subject: [PATCH 1/3] ioctl does not have same signature between glibc and musl
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ modules/access/v4l2/lib.c | 4 ++++
+ modules/access/v4l2/v4l2.h | 4 ++++
+ 2 files changed, 8 insertions(+)
+
+--- a/modules/access/v4l2/lib.c
++++ b/modules/access/v4l2/lib.c
+@@ -49,7 +49,11 @@ int (*v4l2_fd_open) (int, int) = fd_open
+ //int (*v4l2_open) (const char *, int, ...) = open;
+ //int (*v4l2_dup) (const char *, int, ...) = dup;
+ int (*v4l2_close) (int) = close;
++#ifdef __GLIBC__
+ int (*v4l2_ioctl) (int, unsigned long int, ...) = ioctl;
++#else
++int (*v4l2_ioctl) (int, int, ...) = ioctl;
++#endif
+ ssize_t (*v4l2_read) (int, void *, size_t) = read;
+ //ssize_t (*v4l2_write) (int, const void *, size_t) = write;
+ void * (*v4l2_mmap) (void *, size_t, int, int, int, int64_t) = mmap;
+--- a/modules/access/v4l2/v4l2.h
++++ b/modules/access/v4l2/v4l2.h
+@@ -28,7 +28,11 @@
+ /* libv4l2 functions */
+ extern int (*v4l2_fd_open) (int, int);
+ extern int (*v4l2_close) (int);
++#ifdef __GLIBC__
+ extern int (*v4l2_ioctl) (int, unsigned long int, ...);
++#else
++extern int (*v4l2_ioctl) (int, int, ...);
++#endif
+ extern ssize_t (*v4l2_read) (int, void *, size_t);
+ extern void * (*v4l2_mmap) (void *, size_t, int, int, int, int64_t);
+ extern int (*v4l2_munmap) (void *, size_t);
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/0006-configure-Disable-incompatible-function-pointer-type.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/0006-configure-Disable-incompatible-function-pointer-type.patch
new file mode 100644
index 0000000000..b158328aa2
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/vlc/vlc/0006-configure-Disable-incompatible-function-pointer-type.patch
@@ -0,0 +1,26 @@
+From 048e4fdd08ac588feb27b03e3ec1824e24f77d62 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 5 Mar 2023 14:13:25 -0800
+Subject: [PATCH 3/3] configure: Disable incompatible-function-pointer-types
+ warning
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -98,6 +98,11 @@ AS_IF([test -n "${with_binary_version}"]
+ dnl Prevent clang from accepting unknown flags with a mere warning
+ AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CFLAGS])
+ AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CXXFLAGS])
++dnl disable clang from erroring on function pointer protype mismatch, vlc seems to rely on that
++dnl especially in modules/video_filter/deinterlace/algo_yadif.c how it interpolates 'filter` variable
++dnl between different functions yadif_filter_line_c_16bit() and yadif_filter_line_c()
++AX_APPEND_COMPILE_FLAGS([-Wno-error=incompatible-function-pointer-types -Wno-error=incompatible-function-pointer-types], [CFLAGS])
++AX_APPEND_COMPILE_FLAGS([-Wno-error=incompatible-function-pointer-types -Wno-error=incompatible-function-pointer-types], [CXXFLAGS])
+
+ dnl
+ dnl Check the operating system
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/4645.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/4645.patch
new file mode 100644
index 0000000000..3f2aa60512
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/vlc/vlc/4645.patch
@@ -0,0 +1,179 @@
+From 1e2918115ca2f5c4ffde00dc02ad89525714f6c2 Mon Sep 17 00:00:00 2001
+From: Thomas Guillem <thomas@gllm.fr>
+Date: Tue, 5 Dec 2023 09:23:35 +0100
+Subject: [PATCH 1/5] input: fix incompatible-pointer-types assignment
+
+Fixes #28441
+Upstream-Status: Backport [https://code.videolan.org/videolan/vlc/-/merge_requests/4645]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/input/input_internal.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/input/input_internal.h b/src/input/input_internal.h
+index d29731edca1b..ea02f39f5add 100644
+--- a/src/input/input_internal.h
++++ b/src/input/input_internal.h
+@@ -117,7 +117,7 @@ typedef struct input_thread_private_t
+
+ /* Title infos FIXME multi-input (not easy) ? */
+ int i_title;
+- const input_title_t **title;
++ input_title_t * const *title;
+
+ int i_title_offset;
+ int i_seekpoint_offset;
+--
+GitLab
+
+
+From adcf4e66e2ce2c382bb97957c91bfde040f4f3ca Mon Sep 17 00:00:00 2001
+From: Zhao Zhili <quinkblack@foxmail.com>
+Date: Thu, 1 Mar 2018 14:25:59 +0800
+Subject: [PATCH 2/5] yadif: fix variable type
+
+Signed-off-by: Thomas Guillem <thomas@gllm.fr>
+(cherry picked from commit 77b86f4452be4dbe0d56a9cd1b66da61b116da60)
+Signed-off-by: Thomas Guillem <thomas@gllm.fr>
+---
+ modules/video_filter/deinterlace/yadif.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/modules/video_filter/deinterlace/yadif.h b/modules/video_filter/deinterlace/yadif.h
+index 4bc592ba9307..af16443d0804 100644
+--- a/modules/video_filter/deinterlace/yadif.h
++++ b/modules/video_filter/deinterlace/yadif.h
+@@ -140,10 +140,10 @@ static void yadif_filter_line_c(uint8_t *dst, uint8_t *prev, uint8_t *cur, uint8
+ }
+
+ static void yadif_filter_line_c_16bit(uint8_t *dst8, uint8_t *prev8, uint8_t *cur8, uint8_t *next8, int w, int prefs, int mrefs, int parity, int mode) {
+- uint8_t *dst = (uint8_t *)dst8;
+- uint8_t *prev = (uint8_t *)prev8;
+- uint8_t *cur = (uint8_t *)cur8;
+- uint8_t *next = (uint8_t *)next8;
++ uint16_t *dst = (uint16_t *)dst8;
++ uint16_t *prev = (uint16_t *)prev8;
++ uint16_t *cur = (uint16_t *)cur8;
++ uint16_t *next = (uint16_t *)next8;
+ int x;
+ uint16_t *prev2= parity ? prev : cur ;
+ uint16_t *next2= parity ? cur : next;
+--
+GitLab
+
+
+From 45198e5328ff2b2f4eb2fb76add0789fec26270f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
+Date: Sun, 3 Mar 2019 09:59:10 +0200
+Subject: [PATCH 3/5] swscale: avoid invalid pointer conversion
+
+(cherry picked from commit ab00e6c59d42e05ab08893091783d8b5febc0058)
+Signed-off-by: Thomas Guillem <thomas@gllm.fr>
+---
+ modules/video_chroma/swscale.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/modules/video_chroma/swscale.c b/modules/video_chroma/swscale.c
+index 8993d11ec5dd..11897527355c 100644
+--- a/modules/video_chroma/swscale.c
++++ b/modules/video_chroma/swscale.c
+@@ -588,8 +588,9 @@ static void Convert( filter_t *p_filter, struct SwsContext *ctx,
+ {
+ filter_sys_t *p_sys = p_filter->p_sys;
+ uint8_t palette[AVPALETTE_SIZE];
+- uint8_t *src[4]; int src_stride[4];
+- uint8_t *dst[4]; int dst_stride[4];
++ uint8_t *src[4], *dst[4];
++ const uint8_t *csrc[4];
++ int src_stride[4], dst_stride[4];
+
+ GetPixels( src, src_stride, p_sys->desc_in, &p_filter->fmt_in.video,
+ p_src, i_plane_count, b_swap_uvi );
+@@ -606,11 +607,14 @@ static void Convert( filter_t *p_filter, struct SwsContext *ctx,
+ GetPixels( dst, dst_stride, p_sys->desc_out, &p_filter->fmt_out.video,
+ p_dst, i_plane_count, b_swap_uvo );
+
++ for (size_t i = 0; i < ARRAY_SIZE(src); i++)
++ csrc[i] = src[i];
++
+ #if LIBSWSCALE_VERSION_INT >= ((0<<16)+(5<<8)+0)
+- sws_scale( ctx, src, src_stride, 0, i_height,
++ sws_scale( ctx, csrc, src_stride, 0, i_height,
+ dst, dst_stride );
+ #else
+- sws_scale_ordered( ctx, src, src_stride, 0, i_height,
++ sws_scale_ordered( ctx, csrc, src_stride, 0, i_height,
+ dst, dst_stride );
+ #endif
+ }
+--
+GitLab
+
+
+From 4431076ad4a21fdcabd3f7ef1d61c45891689b0c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
+Date: Sun, 3 Mar 2019 17:20:04 +0200
+Subject: [PATCH 4/5] dynamicoverlay: fix variable shadowing
+
+(cherry picked from commit d42e05d6b2c061ae352c131d5aebf8c8d8aa6d35)
+Signed-off-by: Thomas Guillem <thomas@gllm.fr>
+---
+ modules/spu/dynamicoverlay/dynamicoverlay_commands.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/modules/spu/dynamicoverlay/dynamicoverlay_commands.c b/modules/spu/dynamicoverlay/dynamicoverlay_commands.c
+index a93462925e8a..a85f9aafb0b9 100644
+--- a/modules/spu/dynamicoverlay/dynamicoverlay_commands.c
++++ b/modules/spu/dynamicoverlay/dynamicoverlay_commands.c
+@@ -899,12 +899,11 @@ static const commanddesc_static_t p_commands[] =
+ void RegisterCommand( filter_t *p_filter )
+ {
+ filter_sys_t *p_sys = (filter_sys_t*) p_filter->p_sys;
+- size_t i_index = 0;
+
+ p_sys->i_commands = ARRAY_SIZE(p_commands);
+ p_sys->pp_commands = (commanddesc_t **) calloc( p_sys->i_commands, sizeof(commanddesc_t*) );
+ if( !p_sys->pp_commands ) return;
+- for( i_index = 0; i_index < p_sys->i_commands; i_index ++ )
++ for( size_t i_index = 0; i_index < p_sys->i_commands; i_index ++ )
+ {
+ p_sys->pp_commands[i_index] = (commanddesc_t *) malloc( sizeof(commanddesc_t) );
+ if( !p_sys->pp_commands[i_index] ) return;
+--
+GitLab
+
+
+From fda14fc7c013eb75291df10cc8b88336c51328ad Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
+Date: Mon, 26 Feb 2018 20:43:03 +0200
+Subject: [PATCH 5/5] dynamicoverlay: fix memory corruption
+
+Font alpha is 8-bits, not 32-bits.
+
+(cherry picked from commit 6f14081af7325d334a53126c4eea52bc30fc08a0)
+Signed-off-by: Thomas Guillem <thomas@gllm.fr>
+---
+ modules/spu/dynamicoverlay/dynamicoverlay_commands.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/modules/spu/dynamicoverlay/dynamicoverlay_commands.c b/modules/spu/dynamicoverlay/dynamicoverlay_commands.c
+index a85f9aafb0b9..7a71c6f2373a 100644
+--- a/modules/spu/dynamicoverlay/dynamicoverlay_commands.c
++++ b/modules/spu/dynamicoverlay/dynamicoverlay_commands.c
+@@ -234,8 +234,12 @@ static int parser_SetTextAlpha( char *psz_command, char *psz_end,
+ skip_space( &psz_command );
+ if( isdigit( (unsigned char)*psz_command ) )
+ {
+- if( parse_digit( &psz_command, &p_params->fontstyle.i_font_alpha ) == VLC_EGENERIC )
++ int32_t value;
++
++ if( parse_digit( &psz_command, &value ) == VLC_EGENERIC )
+ return VLC_EGENERIC;
++
++ p_params->fontstyle.i_font_alpha = value;
+ }
+ return VLC_SUCCESS;
+ }
+--
+GitLab
+
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/4665.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/4665.patch
new file mode 100644
index 0000000000..c9ef33358e
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/vlc/vlc/4665.patch
@@ -0,0 +1,377 @@
+From 770789f265761fc7ab2de69ca105fec4ad93d9e2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
+Date: Mon, 26 Feb 2018 20:36:29 +0200
+Subject: [PATCH 1/9] chromaprint: missing cast
+
+(cherry picked from commit 7bd5bab3e43ae187f7219db61ed85d06d2ba0547)
+Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
+Upstream-Status: Backport [https://code.videolan.org/videolan/vlc/-/merge_requests/4665]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ modules/stream_out/chromaprint.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/stream_out/chromaprint.c b/modules/stream_out/chromaprint.c
+index 80ec31ba2590..c76cbda3c2bb 100644
+--- a/modules/stream_out/chromaprint.c
++++ b/modules/stream_out/chromaprint.c
+@@ -231,7 +231,7 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_sys_t *id,
+ if ( !p_sys->b_finished && id->i_samples > 0 && p_buf->i_buffer )
+ {
+ if(! chromaprint_feed( p_sys->p_chromaprint_ctx,
+- p_buf->p_buffer,
++ (int16_t *)p_buf->p_buffer,
+ p_buf->i_buffer / BYTESPERSAMPLE ) )
+ msg_Warn( p_stream, "feed error" );
+ id->i_samples -= i_samples;
+--
+GitLab
+
+
+From 6179d6b843f2a93af6a3d51c4244766e3eba9e77 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
+Date: Sun, 14 Apr 2019 09:41:38 +0300
+Subject: [PATCH 2/9] win32: wrap {g,s}etsockopt()
+
+char * can alias anything, and Winsock relies on that. Unfortunately,
+the compiler still issues warnings. This works around that.
+
+(cherry picked from commit 36715d9b79f34824e126c2bc3aee2f1c1c16af46)
+Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
+---
+ include/vlc_network.h | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/include/vlc_network.h b/include/vlc_network.h
+index 010454a01c09..e39ffd0bacaa 100644
+--- a/include/vlc_network.h
++++ b/include/vlc_network.h
+@@ -183,6 +183,22 @@ VLC_API int vlc_close(int);
+
+ /** @} */
+
++#ifdef _WIN32
++static inline int vlc_getsockopt(int s, int level, int name,
++ void *val, socklen_t *len)
++{
++ return getsockopt(s, level, name, (char *)val, len);
++}
++#define getsockopt vlc_getsockopt
++
++static inline int vlc_setsockopt(int s, int level, int name,
++ const void *val, socklen_t len)
++{
++ return setsockopt(s, level, name, (const char *)val, len);
++}
++#define setsockopt vlc_setsockopt
++#endif
++
+ /* Portable network names/addresses resolution layer */
+
+ #define NI_MAXNUMERICHOST 64
+--
+GitLab
+
+
+From 3391108f9709f0d77d9297c94371cf9cd30f2cbe Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Thu, 7 Dec 2023 15:43:04 +0100
+Subject: [PATCH 3/9] netsync: use char for temporary local buffer
+
+On Windows recvfrom/revc/sendto expects a char*.
+---
+ modules/control/netsync.c | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/modules/control/netsync.c b/modules/control/netsync.c
+index 2a6a1a6a2bf8..8c91034d7cf2 100644
+--- a/modules/control/netsync.c
++++ b/modules/control/netsync.c
+@@ -181,7 +181,7 @@ static void *Master(void *handle)
+ intf_sys_t *sys = intf->p_sys;
+ for (;;) {
+ struct pollfd ufd = { .fd = sys->fd, .events = POLLIN, };
+- uint64_t data[2];
++ char data[16];
+
+ if (poll(&ufd, 1, -1) < 0)
+ continue;
+@@ -198,8 +198,8 @@ static void *Master(void *handle)
+ if (master_system < 0)
+ continue;
+
+- data[0] = hton64(mdate());
+- data[1] = hton64(master_system);
++ SetQWBE(&data[0], mdate());
++ SetQWBE(&data[8], master_system);
+
+ /* Reply to the sender */
+ sendto(sys->fd, data, 16, 0,
+@@ -224,7 +224,7 @@ static void *Slave(void *handle)
+
+ for (;;) {
+ struct pollfd ufd = { .fd = sys->fd, .events = POLLIN, };
+- uint64_t data[2];
++ char data[16];
+
+ vlc_tick_t system = GetPcrSystem(sys->input);
+ if (system < 0)
+@@ -233,7 +233,7 @@ static void *Slave(void *handle)
+ /* Send clock request to the master */
+ const vlc_tick_t send_date = mdate();
+
+- data[0] = hton64(system);
++ SetQWBE(&data[0], system);
+ send(sys->fd, data, 8, 0);
+
+ /* Don't block */
+@@ -244,8 +244,8 @@ static void *Slave(void *handle)
+ if (recv(sys->fd, data, 16, 0) < 16)
+ goto wait;
+
+- const vlc_tick_t master_date = ntoh64(data[0]);
+- const vlc_tick_t master_system = ntoh64(data[1]);
++ const vlc_tick_t master_date = GetQWBE(&data[0]);
++ const vlc_tick_t master_system = GetQWBE(&data[8]);
+ const vlc_tick_t diff_date = receive_date -
+ ((receive_date - send_date) / 2 + master_date);
+
+--
+GitLab
+
+
+From 27e584d7b9add8dbbb82b7227228e1ec1e25a089 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Tue, 3 Jan 2023 13:23:00 +0100
+Subject: [PATCH 4/9] access/dtv: move the lfind() Windows hack in the module
+
+So that we don't have to include search.h each time vlc_fixups.h is used.
+
+The Win32 prototype of lfind() expects an unsigned* for 'nelp', not a size_t*.
+
+(cherry picked from commit 7c43bcba27b6fe256456d93a9d32e10648f08da8)
+Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
+---
+ include/vlc_fixups.h | 3 +++
+ modules/access/dtv/access.c | 5 +++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h
+index 37f788933779..861cb4cc5063 100644
+--- a/include/vlc_fixups.h
++++ b/include/vlc_fixups.h
+@@ -501,8 +501,11 @@ void *tsearch( const void *key, void **rootp, int(*cmp)(const void *, const void
+ void *tfind( const void *key, const void **rootp, int(*cmp)(const void *, const void *) );
+ void *tdelete( const void *key, void **rootp, int(*cmp)(const void *, const void *) );
+ void twalk( const void *root, void(*action)(const void *nodep, VISIT which, int depth) );
++#ifndef _WIN32
++/* the Win32 prototype of lfind() expects an unsigned* for 'nmemb' */
+ void *lfind( const void *key, const void *base, size_t *nmemb,
+ size_t size, int(*cmp)(const void *, const void *) );
++#endif
+ #endif /* HAVE_SEARCH_H */
+ #ifndef HAVE_TDESTROY
+ void tdestroy( void *root, void (*free_node)(void *nodep) );
+diff --git a/modules/access/dtv/access.c b/modules/access/dtv/access.c
+index d9756c7b4885..c6ca5005883c 100644
+--- a/modules/access/dtv/access.c
++++ b/modules/access/dtv/access.c
+@@ -32,6 +32,11 @@
+ #ifdef HAVE_SEARCH_H
+ #include <search.h>
+ #endif
++#if defined(_WIN32)
++/* the Win32 prototype of lfind() expects an unsigned* for 'nelp' */
++# define lfind(a,b,c,d,e) \
++ lfind((a),(b), &(unsigned){ (*(c) > UINT_MAX) ? UINT_MAX : *(c) }, (d),(e))
++#endif
+
+ #include "dtv/dtv.h"
+
+--
+GitLab
+
+
+From 5a9ca37a95b6e85e6beaaefba9aa4a886a45411c Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Mon, 15 Jul 2019 12:41:29 +0200
+Subject: [PATCH 5/9] vlc_common: fix swab() calls on win32 that don't use
+ const on source pointer
+
+(cherry picked from commit a9e0b1124e19225b903a2926951781e84002c410)
+Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
+---
+ include/vlc_common.h | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/include/vlc_common.h b/include/vlc_common.h
+index 8090b277150d..089878581763 100644
+--- a/include/vlc_common.h
++++ b/include/vlc_common.h
+@@ -947,6 +947,11 @@ static inline void SetQWLE (void *p, uint64_t qw)
+ # define O_NONBLOCK 0
+ # endif
+
++/* the mingw32 swab() and win32 _swab() prototypes expect a char* instead of a
++ const void* */
++# define swab(a,b,c) swab((char*) (a), (char*) (b), (c))
++
++
+ # include <tchar.h>
+ #endif /* _WIN32 */
+
+--
+GitLab
+
+
+From b758e19479a80604e3feb470b197e4a13a203a85 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Wed, 10 Jul 2019 08:23:45 +0200
+Subject: [PATCH 6/9] avcodec: encoder: fix MPEG4 matrix passed as const
+
+lavc expects a pointer that it will free in avcodec_free_context().
+
+(cherry picked from commit d86c4c87aa78130a4fd00294e25df865d0e2b327)
+Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
+---
+ modules/codec/avcodec/encoder.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
+index 2b1c3604713d..4919ccf0e0e4 100644
+--- a/modules/codec/avcodec/encoder.c
++++ b/modules/codec/avcodec/encoder.c
+@@ -588,8 +588,14 @@ int InitVideoEnc( vlc_object_t *p_this )
+
+ if ( p_sys->b_mpeg4_matrix )
+ {
+- p_context->intra_matrix = mpeg4_default_intra_matrix;
+- p_context->inter_matrix = mpeg4_default_non_intra_matrix;
++ p_context->intra_matrix = av_malloc( sizeof(mpeg4_default_intra_matrix) );
++ if ( p_context->intra_matrix )
++ memcpy( p_context->intra_matrix, mpeg4_default_intra_matrix,
++ sizeof(mpeg4_default_intra_matrix));
++ p_context->inter_matrix = av_malloc( sizeof(mpeg4_default_non_intra_matrix) );
++ if ( p_context->inter_matrix )
++ memcpy( p_context->inter_matrix, mpeg4_default_non_intra_matrix,
++ sizeof(mpeg4_default_non_intra_matrix));
+ }
+
+ if ( p_sys->b_pre_me )
+--
+GitLab
+
+
+From 55be3ce60795a09d13861c5637c1fe7aebc5ce8b Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Thu, 7 Dec 2023 14:18:22 +0100
+Subject: [PATCH 7/9] smb: fix potential string to wide string copy
+
+The type of net_resource depends on the UNICODE define.
+---
+ modules/access/smb.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules/access/smb.c b/modules/access/smb.c
+index 5fe56f0c9dfe..6add2a3e6278 100644
+--- a/modules/access/smb.c
++++ b/modules/access/smb.c
+@@ -524,7 +524,7 @@ static void Win32AddConnection( stream_t *p_access, const char *psz_server,
+ const char *psz_pwd, const char *psz_domain )
+ {
+ char psz_remote[MAX_PATH];
+- NETRESOURCE net_resource;
++ NETRESOURCEA net_resource;
+ DWORD i_result;
+ VLC_UNUSED( psz_domain );
+
+@@ -544,7 +544,7 @@ static void Win32AddConnection( stream_t *p_access, const char *psz_server,
+
+ net_resource.lpRemoteName = psz_remote;
+
+- i_result = WNetAddConnection2( &net_resource, psz_pwd, psz_user, 0 );
++ i_result = WNetAddConnection2A( &net_resource, psz_pwd, psz_user, 0 );
+
+ if( i_result != NO_ERROR )
+ {
+--
+GitLab
+
+
+From 5ae924bf212dce64a6424561d92426dbcc2cf3a0 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Wed, 6 Dec 2023 14:45:46 +0100
+Subject: [PATCH 8/9] dxva2: add missing mask initializers
+
+---
+ modules/codec/avcodec/dxva2.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/modules/codec/avcodec/dxva2.c b/modules/codec/avcodec/dxva2.c
+index 18b872fe0fe3..2e6809a05410 100644
+--- a/modules/codec/avcodec/dxva2.c
++++ b/modules/codec/avcodec/dxva2.c
+@@ -84,12 +84,12 @@ DEFINE_GUID(DXVA_Intel_H264_NoFGT_ClearVideo, 0x604F8E68, 0x4951, 0x4c54,
+
+ /* XXX Preferred format must come first */
+ static const d3d9_format_t d3d_formats[] = {
+- { "YV12", MAKEFOURCC('Y','V','1','2'), VLC_CODEC_YV12 },
+- { "NV12", MAKEFOURCC('N','V','1','2'), VLC_CODEC_NV12 },
+- //{ "IMC3", MAKEFOURCC('I','M','C','3'), VLC_CODEC_YV12 },
+- { "P010", MAKEFOURCC('P','0','1','0'), VLC_CODEC_P010 },
++ { "YV12", MAKEFOURCC('Y','V','1','2'), VLC_CODEC_YV12, 0,0,0 },
++ { "NV12", MAKEFOURCC('N','V','1','2'), VLC_CODEC_NV12, 0,0,0 },
++ //{ "IMC3", MAKEFOURCC('I','M','C','3'), VLC_CODEC_YV12, 0,0,0 },
++ { "P010", MAKEFOURCC('P','0','1','0'), VLC_CODEC_P010, 0,0,0 },
+
+- { NULL, 0, 0 }
++ { NULL, 0, 0, 0,0,0 }
+ };
+
+ static const d3d9_format_t *D3dFindFormat(D3DFORMAT format)
+--
+GitLab
+
+
+From 08c7a66780740679ba1b0abe9e30e73afc6bc271 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Wed, 6 Dec 2023 07:48:29 +0100
+Subject: [PATCH 9/9] win32/modules: use cast with GetProcAddress function
+ pointers
+
+---
+ src/text/url.c | 3 ++-
+ src/win32/plugin.c | 3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/text/url.c b/src/text/url.c
+index b962eb31f849..2eb4b8d10817 100644
+--- a/src/text/url.c
++++ b/src/text/url.c
+@@ -892,7 +892,8 @@ static int IdnToAscii(DWORD flags, LPCWSTR str, int len, LPWSTR buf, int size)
+ int (WINAPI *IdnToAsciiReal)(DWORD, LPCWSTR, int, LPWSTR, int);
+ int ret = 0;
+
+- IdnToAsciiReal = GetProcAddress(h, "IdnToAscii");
++ IdnToAsciiReal = (int (WINAPI *)(DWORD, LPCWSTR, int, LPWSTR, int))
++ GetProcAddress(h, "IdnToAscii");
+ if (IdnToAsciiReal != NULL)
+ ret = IdnToAsciiReal(flags, str, len, buf, size);
+ else
+diff --git a/src/win32/plugin.c b/src/win32/plugin.c
+index 1a65521fca75..b5c336eb99ca 100644
+--- a/src/win32/plugin.c
++++ b/src/win32/plugin.c
+@@ -45,7 +45,8 @@ static BOOL WINAPI SetThreadErrorModeFallback(DWORD mode, DWORD *oldmode)
+
+ BOOL (WINAPI *SetThreadErrorModeReal)(DWORD, DWORD *);
+
+- SetThreadErrorModeReal = GetProcAddress(h, "SetThreadErrorMode");
++ SetThreadErrorModeReal = (BOOL (WINAPI *)(DWORD, DWORD *))
++ GetProcAddress(h, "SetThreadErrorMode");
+ if (SetThreadErrorModeReal != NULL)
+ return SetThreadErrorModeReal(mode, oldmode);
+
+--
+GitLab
+
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/taglib-2.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/taglib-2.patch
new file mode 100644
index 0000000000..f238ff4244
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/vlc/vlc/taglib-2.patch
@@ -0,0 +1,67 @@
+Fix build with taglib 2.0
+
+Source: https://gitlab.archlinux.org/archlinux/packaging/packages/vlc/-/blob/main/taglib-2.patch?ref_type=heads
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/modules/meta_engine/taglib.cpp
++++ b/modules/meta_engine/taglib.cpp
+@@ -185,7 +185,7 @@ public:
+ ByteVector res(length, 0);
+ ssize_t i_read = vlc_stream_Read( m_stream, res.data(), length);
+ if (i_read < 0)
+- return ByteVector::null;
++ return ByteVector();
+ else if ((size_t)i_read != length)
+ res.resize(i_read);
+ return res;
+@@ -465,7 +465,7 @@ static void ReadMetaFromASF( ASF::Tag* t
+ static void ReadMetaFromBasicTag(const Tag* tag, vlc_meta_t *dest)
+ {
+ #define SET( accessor, meta ) \
+- if( !tag->accessor().isNull() && !tag->accessor().isEmpty() ) \
++ if( !tag->accessor().isEmpty() ) \
+ vlc_meta_Set##meta( dest, tag->accessor().toCString(true) )
+ #define SETINT( accessor, meta ) \
+ if( tag->accessor() ) \
+@@ -806,15 +806,15 @@ static void ReadMetaFromMP4( MP4::Tag* t
+ {
+ MP4::Item list;
+ #define SET( keyName, metaName ) \
+- if( tag->itemListMap().contains(keyName) ) \
++ if( tag->itemMap().contains(keyName) ) \
+ { \
+- list = tag->itemListMap()[keyName]; \
++ list = tag->itemMap()[keyName]; \
+ vlc_meta_Set##metaName( p_meta, list.toStringList().front().toCString( true ) ); \
+ }
+ #define SET_EXTRA( keyName, metaName ) \
+- if( tag->itemListMap().contains(keyName) ) \
++ if( tag->itemMap().contains(keyName) ) \
+ { \
+- list = tag->itemListMap()[keyName]; \
++ list = tag->itemMap()[keyName]; \
+ vlc_meta_AddExtra( p_meta, metaName, list.toStringList().front().toCString( true ) ); \
+ }
+
+@@ -824,9 +824,9 @@ static void ReadMetaFromMP4( MP4::Tag* t
+ #undef SET
+ #undef SET_EXTRA
+
+- if( tag->itemListMap().contains("covr") )
++ if( tag->itemMap().contains("covr") )
+ {
+- MP4::CoverArtList list = tag->itemListMap()["covr"].toCoverArtList();
++ MP4::CoverArtList list = tag->itemMap()["covr"].toCoverArtList();
+ const char *psz_format = list[0].format() == MP4::CoverArt::PNG ? "image/png" : "image/jpeg";
+
+ msg_Dbg( p_demux_meta, "Found embedded art (%s) is %i bytes",
+@@ -1337,7 +1337,7 @@ static int WriteMeta( vlc_object_t *p_th
+ if( RIFF::AIFF::File* riff_aiff = dynamic_cast<RIFF::AIFF::File*>(f.file()) )
+ WriteMetaToId3v2( riff_aiff->tag(), p_item );
+ else if( RIFF::WAV::File* riff_wav = dynamic_cast<RIFF::WAV::File*>(f.file()) )
+- WriteMetaToId3v2( riff_wav->tag(), p_item );
++ WriteMetaToId3v2( riff_wav->ID3v2Tag(), p_item );
+ }
+ else if( TrueAudio::File* trueaudio = dynamic_cast<TrueAudio::File*>(f.file()) )
+ {
diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.11.bb b/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.20.bb
index dd9486e8a7..2a6b27add0 100644
--- a/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.11.bb
+++ b/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.20.bb
@@ -2,32 +2,35 @@ DESCRIPTION = "Video player and streamer - davinci edition"
HOMEPAGE = "http://www.videolan.org"
SECTION = "multimedia"
-LICENSE = "GPL-2.0"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-DEPENDS = "coreutils-native fribidi libtool libgcrypt libgcrypt-native \
+DEPENDS = "coreutils-native fribidi libtool libgcrypt libgcrypt-native bison-native \
dbus libxml2 gnutls \
tremor faad2 ffmpeg flac alsa-lib \
lua-native lua libidn \
- avahi jpeg xz libmodplug mpeg2dec \
+ avahi jpeg xz libmodplug \
libmtp libopus orc libsamplerate0 libusb1 schroedinger taglib \
tiff"
-LDFLAGS_append_riscv64 = " -latomic"
+LDFLAGS:append:riscv64 = " -latomic"
+LDFLAGS:append:riscv32 = " -latomic"
-# While this item does not require it, it depends on ffmpeg which does
-LICENSE_FLAGS = "commercial"
-
-SRC_URI = "http://download.videolan.org/pub/videolan/${BPN}/${PV}/${BP}.tar.xz \
+SRC_URI = "https://get.videolan.org/${BPN}/${PV}/${BP}.tar.xz \
file://0001-make-opencv-configurable.patch \
file://0002-use-vorbisidec.patch \
file://0003-fix-luaL-checkint.patch \
file://0004-Use-packageconfig-to-detect-mmal-support.patch \
- file://0005-Fix-build-with-Qt-5.15.patch \
+ file://0005-ioctl-does-not-have-same-signature-between-glibc-and.patch \
+ file://0006-configure-Disable-incompatible-function-pointer-type.patch \
+ file://taglib-2.patch \
+ file://0001-taglib-Fix-build-on-x86-32-bit.patch \
+ file://4645.patch \
+ file://4665.patch \
"
-SRC_URI[sha256sum] = "3e94a1acf33445e9da15d528aa48657aa26b912eaa2656b403d43860a8834919"
+SRC_URI[sha256sum] = "adc7285b4d2721cddf40eb5270cada2aaa10a334cb546fd55a06353447ba29b5"
-inherit autotools features_check gettext pkgconfig mime-xdg
+inherit autotools-brokensep features_check gettext pkgconfig mime-xdg
REQUIRED_DISTRO_FEATURES = "x11"
@@ -96,13 +99,12 @@ PACKAGECONFIG[png] = "--enable-png,--disable-png,libpng"
PACKAGECONFIG[vdpau] = "--enable-vdpau,--disable-vdpau,libvdpau"
PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland wayland-native"
-do_configure_append() {
- sed -i -e s:'${top_builddir_slash}libtool':'${top_builddir_slash}'${TARGET_SYS}-libtool:g ${B}/doltlibtool
-
+do_configure:append() {
# moc needs support: precreate build paths
for qtpath in adapters components/epg components/playlist components/sout dialogs managers styles util/buttons; do
mkdir -p "${B}/modules/gui/qt/$qtpath"
done
+ sed -i -e 's|${WORKDIR}||g' ${B}/config.h
}
# This recipe packages vlc as a library as well, so qt4 dependencies
@@ -110,9 +112,9 @@ do_configure_append() {
PACKAGES =+ "libvlc"
LEAD_SONAME_libvlc = "libvlc.so.5"
-FILES_libvlc = "${libdir}/lib*.so.*"
+FILES:libvlc = "${libdir}/lib*.so.*"
-FILES_${PN} += "\
+FILES:${PN} += "\
${bindir}/vlc \
${libdir}/vlc/vlc/libvlc_vdpau.so \
${datadir}/applications \
@@ -121,14 +123,15 @@ FILES_${PN} += "\
${datadir}/metainfo/vlc.appdata.xml \
"
-FILES_${PN}-dbg += "\
+FILES:${PN}-dbg += "\
${libdir}/vlc/*/.debug \
${libdir}/vlc/plugins/*/.debug \
"
-FILES_${PN}-staticdev += "\
+FILES:${PN}-staticdev += "\
${libdir}/vlc/plugins/*/*.a \
"
-INSANE_SKIP_${PN} = "dev-so"
+INSANE_SKIP:${PN} = "dev-so"
+EXCLUDE_FROM_WORLD = "${@bb.utils.contains("LICENSE_FLAGS_ACCEPTED", "commercial", "0", "1", d)}"