From ca4c0ebadbf2c35769d0526fbeaeb301be70f15b Mon Sep 17 00:00:00 2001
From: memdmp <memdmp@estrogen.zone>
Date: Fri, 20 Jun 2025 11:25:57 +0000
Subject: chore: tmp

---
 src/memdmp/vlc4/APKBUILD                           | 260 +++++++++++++++++++++
 src/memdmp/vlc4/big-endian.patch                   |  16 ++
 src/memdmp/vlc4/check-headless.patch               |  13 ++
 .../vlc4/disable-sub-autodetect-fuzzy-1-test.patch |  20 ++
 src/memdmp/vlc4/fribidi_allow_deprecated.patch     |  10 +
 src/memdmp/vlc4/libplacebo-5.patch                 | 108 +++++++++
 src/memdmp/vlc4/musl-ioctl.patch                   |  24 ++
 src/memdmp/vlc4/omxil-rpi-codecs.patch             |  15 ++
 src/memdmp/vlc4/taglib-2.0.patch                   |  97 ++++++++
 src/memdmp/vlc4/vlc.confd                          |  15 ++
 src/memdmp/vlc4/vlc.initd                          |  32 +++
 src/memdmp/vlc4/vlc4-daemon.pre-install            |  15 ++
 src/memdmp/vlc4/vlc4-libs.pre-deinstall            |   6 +
 src/memdmp/vlc4/vlc4-libs.trigger                  |   7 +
 14 files changed, 638 insertions(+)
 create mode 100644 src/memdmp/vlc4/APKBUILD
 create mode 100644 src/memdmp/vlc4/big-endian.patch
 create mode 100644 src/memdmp/vlc4/check-headless.patch
 create mode 100644 src/memdmp/vlc4/disable-sub-autodetect-fuzzy-1-test.patch
 create mode 100644 src/memdmp/vlc4/fribidi_allow_deprecated.patch
 create mode 100644 src/memdmp/vlc4/libplacebo-5.patch
 create mode 100644 src/memdmp/vlc4/musl-ioctl.patch
 create mode 100644 src/memdmp/vlc4/omxil-rpi-codecs.patch
 create mode 100644 src/memdmp/vlc4/taglib-2.0.patch
 create mode 100644 src/memdmp/vlc4/vlc.confd
 create mode 100644 src/memdmp/vlc4/vlc.initd
 create mode 100644 src/memdmp/vlc4/vlc4-daemon.pre-install
 create mode 100644 src/memdmp/vlc4/vlc4-libs.pre-deinstall
 create mode 100644 src/memdmp/vlc4/vlc4-libs.trigger

(limited to 'src/memdmp/vlc4')

diff --git a/src/memdmp/vlc4/APKBUILD b/src/memdmp/vlc4/APKBUILD
new file mode 100644
index 0000000..daafee2
--- /dev/null
+++ b/src/memdmp/vlc4/APKBUILD
@@ -0,0 +1,260 @@
+# Contributor: Ɓukasz Jendrysik <scadu@yandex.com>
+# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: memdmp <memdmp@estrogen.zone>
+
+_reponame="vlc"
+_repoowner="videolan"
+_repourl="https://code.videolan.org/${_repoowner}/${_reponame}" # GITHUB_CODELOAD_URL due to github not having IPv6.
+_reporef="70de580e9b8231fd0bb1da614ccbd95dcce9884a" # Must be a TAG OR BRANCH! Anything else may break shit.
+_reporefdate="20250616" # YYYYMMDD of the ref
+_buildtarget="Release" # or `Debug` for testing
+
+# https://code.videolan.org/videolan/vlc/-/archive/70de580e9b8231fd0bb1da614ccbd95dcce9884a/vlc-70de580e9b8231fd0bb1da614ccbd95dcce9884a.tar.gz
+
+pkgname=vlc4
+pkgver=3.99.99
+pkgrel=8
+pkgdesc="Multi-platform MPEG, VCD/DVD, and DivX player"
+triggers="vlc4-libs.trigger=/usr/lib/vlc/plugins"
+pkgusers="vlc"
+pkggroups="vlc"
+url="https://www.videolan.org/vlc/"
+arch="all"
+license="GPL-2.0-or-later"
+subpackages="
+	$pkgname-dev
+	$pkgname-doc
+	$pkgname-qt
+	$pkgname-daemon::noarch
+	$pkgname-libs
+	"
+makedepends="
+	a52dec-dev
+	abseil-cpp-dev
+	alsa-lib-dev
+	autoconf
+	automake
+	avahi-dev
+	bison
+	dav1d-dev
+	dbus-dev
+	eudev-dev
+	faad2-dev
+	ffmpeg4-dev
+	flac-dev
+	flex
+	freetype-dev
+	gnutls-dev
+	gtk+3.0-dev
+	gst-plugins-base-dev
+	libarchive-dev
+	libass-dev
+	libavc1394-dev
+	libbluray-dev
+	libcddb-dev
+	libdc1394-dev
+	libdvbpsi-dev
+	libdvdnav-dev
+	libdvdread-dev
+	libgcrypt-dev
+	libice-dev
+	libmad-dev
+	libmatroska-dev
+	libmicrodns-dev
+	libmpeg2-dev
+	libnotify-dev
+	libogg-dev
+	libplacebo5-dev
+	libraw1394-dev
+	librsvg-dev
+	libsamplerate-dev
+	libsecret-dev
+	libshout-dev
+	libsm-dev
+	libsrt-dev
+	libtheora-dev
+	libtool
+	libupnp-dev
+	libva-dev
+	libvdpau-dev
+	libvorbis-dev
+	libvpx-dev
+	libx11-dev
+	libxext-dev
+	libxinerama-dev
+	libxml2-dev
+	libxpm-dev
+	libxv-dev
+	live-media-dev
+	lua5.2-dev
+	mesa-dev
+	ncurses-dev
+	opus-dev
+	protobuf-dev
+	pulseaudio-dev
+	qt6-qt5compat-dev
+	qt6-qtbase-dev
+	qt6-qtbase-x11
+	qt6-qtbase-private-dev
+	qt6-qtdeclarative-dev
+	qt6-qtdeclarative-private-dev
+	qt6-qtsvg-dev
+	qt6-qttools-dev
+	qt6-qtwayland-dev
+	samba-dev
+	sdl2-dev
+	speex-dev
+	speexdsp-dev
+	sysfsutils-dev
+	taglib-dev
+	v4l-utils-dev
+	wayland-dev
+	wayland-protocols
+	x264-dev
+	x265-dev
+	xcb-util-keysyms-dev
+	xcb-util-renderutil-dev
+	xdg-utils
+	"
+source="${_repourl}/-/archive/${_reporef}/${_reponame}-${_reporef}.tar.gz
+	vlc.initd
+	vlc.confd
+	"
+builddir="${srcdir}/${_reponame}-${_reporef}"
+
+# secfixes:
+#   3.0.18-r0:
+#     - CVE-2022-41325
+#   3.0.12-r0:
+#     - CVE-2020-26664
+#   3.0.11-r0:
+#     - CVE-2020-13428
+#   3.0.9.2-r0:
+#     - CVE-2019-19721
+#     - CVE-2020-6071
+#     - CVE-2020-6072
+#     - CVE-2020-6073
+#     - CVE-2020-6077
+#     - CVE-2020-6078
+#     - CVE-2020-6079
+#   3.0.7.1-r2:
+#     - CVE-2019-13602
+
+build() {
+	NOCONFIGURE=1 ./bootstrap
+
+	case "$CARCH" in
+	aarch64|arm*)
+		local arch_opts="--enable-omxil --enable-omxil-vout --enable-rpi-omxil"
+		;;
+	esac
+
+	CFLAGS="$CFLAGS -fcommon -O2 -flto=auto" \
+	CXXFLAGS="$CXXFLAGS -flto=auto -O2" \
+	LUA=lua5.2 \
+	LUAC=luac5.2 \
+	./configure \
+		--build=$CBUILD \
+		--host=$CHOST \
+		--prefix=/usr \
+		--disable-nls \
+		--disable-rpath \
+		--disable-static \
+		--enable-a52 \
+		--enable-avcodec \
+		--enable-avformat \
+		--enable-bluray \
+		--enable-dav1d \
+		--enable-dbus \
+		--enable-dc1394 \
+		--enable-dvbpsi \
+		--enable-dvdnav \
+		--enable-dvdread \
+		--enable-faad \
+		--enable-flac \
+		--enable-gnutls \
+		--enable-libcddb \
+		--enable-libplacebo \
+		--enable-libva \
+		--enable-live555 \
+		--enable-merge-ffmpeg \
+		--enable-ncurses \
+		--enable-realrtsp \
+		--enable-shout \
+		--enable-skins2 \
+		--enable-sout \
+		--enable-speex \
+		--enable-srt \
+		--enable-taglib \
+		--enable-theora \
+		--enable-upnp \
+		--enable-v4l2 \
+		--enable-vdpau \
+		--enable-vlm \
+		--enable-vorbis \
+		--enable-wma-fixed \
+		--enable-x264 \
+		--enable-xvideo \
+		$arch_opts
+
+	make
+}
+
+package() {
+	make -j1 DESTDIR="$pkgdir" install
+	# delete cache as it's autocreated by trigger
+	rm -rf "$pkgdir"/usr/lib/vlc/plugins/plugins.dat
+	# delete unneeded mozilla and kde support files
+	rm -rf "$pkgdir"/usr/lib/mozilla
+	rm -rf "$pkgdir"/usr/share/kde4
+
+	install -D -m755 "$srcdir"/vlc.initd "$pkgdir"/etc/init.d/vlc
+	install -D -m664 "$srcdir"/vlc.confd "$pkgdir"/etc/conf.d/vlc
+	install -d -o vlc -g vlc "$pkgdir"/var/log/vlc
+}
+
+check() {
+	make check || { cat ./*/test-suite.log; false; }
+}
+
+qt() {
+	pkgdesc="Qt frontend for VLC"
+	depends="vlc=$pkgver-r$pkgrel"
+	cd "$pkgdir"
+	# scan for elf files that directly or indirectly depends on
+	# libQt* libraries
+	for i in $(find . -type f ); do
+		if ldd $i 2>/dev/null | grep -q "libQt"; then
+			amove "$i"
+		fi
+	done
+	amove usr/share/icons \
+		usr/share/applications \
+		usr/share/metainfo \
+		usr/bin/qvlc
+}
+
+daemon() {
+	pkgdesc="Support for running VLC as a daemon"
+	install="vlc4-daemon.pre-install"
+	depends="vlc4=$pkgver-r$pkgrel"
+
+	amove etc/init.d
+	amove etc/conf.d
+	amove var/log/vlc
+}
+
+libs() {
+	depends=""
+	install="vlc4-libs.pre-deinstall"
+	default_libs
+
+	amove usr/lib/vlc/vlc-cache-gen
+}
+
+sha512sums="
+acf70b95bd217be4ca72a6098a35ec7b1c66119a73aeea6219c1f4656de68a88c53486dbff746de3d26272cc7d5258b46e6d99bdb1299089f4a0c83efd17134c  vlc-70de580e9b8231fd0bb1da614ccbd95dcce9884a.tar.gz
+55e245190b443dde9c7215ea5210612fcca164900a9a4b025ccf0d1e3fc5206d00b52355b256974421e37c609875627f1db19f0f5a084511aec0daf677ecc9d6  vlc.initd
+d89190dca1b8b2c3faca5863dc6c7e6eb24e05178e6f75ed752fd3c6a73cb8a42d2625b6e56453296b7096ea868be642ecd42745dac20e7f13fc67dd3c3c7c49  vlc.confd
+"
diff --git a/src/memdmp/vlc4/big-endian.patch b/src/memdmp/vlc4/big-endian.patch
new file mode 100644
index 0000000..acb6676
--- /dev/null
+++ b/src/memdmp/vlc4/big-endian.patch
@@ -0,0 +1,16 @@
+Patch-Source: https://git.adelielinux.org/adelie/packages/-/blob/c543943fea431ad69f2447a4fafc1d17957aff46/user/vlc/endian-fix.patch
+
+--- vlc-3.0.3/modules/video_chroma/copy.c.old	2018-04-18 16:19:34.000000000 +0000
++++ vlc-3.0.3/modules/video_chroma/copy.c	2018-07-22 02:13:19.870000000 +0000
+@@ -1119,7 +1119,11 @@
+                 vlc_assert_unreachable();
+         }
+ 
++#ifndef WORDS_BIGENDIAN
+         uint32_t color_16_UV = (colors_16_P[2] << 16) | colors_16_P[1];
++#else
++        uint32_t color_16_UV = (colors_16_P[1] << 16) | colors_16_P[2];
++#endif
+ 
+         PICCHECK(uint16_t, uint32_t, colors_16_P, color_16_UV, 2);
+     }
diff --git a/src/memdmp/vlc4/check-headless.patch b/src/memdmp/vlc4/check-headless.patch
new file mode 100644
index 0000000..25016f4
--- /dev/null
+++ b/src/memdmp/vlc4/check-headless.patch
@@ -0,0 +1,13 @@
+diff --git a/test/run_vlc.sh b/test/run_vlc.sh
+index af35987..9a0175b 100755
+--- a/test/run_vlc.sh
++++ b/test/run_vlc.sh
+@@ -2,7 +2,7 @@
+ 
+ set -e
+ 
+-VLC="./vlc --ignore-config --rc-fake-tty"
++VLC="./vlc -I dummy --ignore-config --rc-fake-tty"
+ 
+ $VLC -H
+ $VLC -vv vlc://quit
diff --git a/src/memdmp/vlc4/disable-sub-autodetect-fuzzy-1-test.patch b/src/memdmp/vlc4/disable-sub-autodetect-fuzzy-1-test.patch
new file mode 100644
index 0000000..b3dd8a1
--- /dev/null
+++ b/src/memdmp/vlc4/disable-sub-autodetect-fuzzy-1-test.patch
@@ -0,0 +1,20 @@
+This test fails on x86 and s390x so disable it for now
+reported upstream: https://trac.videolan.org/vlc/ticket/19321
+
+diff --git a/test/libvlc/slaves.c b/test/libvlc/slaves.c
+index 7b2c24fa43..7c47b3147b 100644
+--- a/test/libvlc/slaves.c
++++ b/test/libvlc/slaves.c
+@@ -194,10 +194,12 @@ main (void)
+         assert(p_expected_slaves[i].psz_uri != NULL);
+     }
+ 
++#if 0
+     printf("== Testing --sub-autodetect-fuzzy 1 (everything) ==\n");
+     test_media_has_slaves_from_parent(p_vlc, SLAVES_DIR "/test.mp4",
+                                       p_expected_slaves,
+                                       EXPECTED_SLAVES_COUNT);
++#endif
+     libvlc_release(p_vlc);
+ 
+     printf("== Testing --sub-autodetect-fuzzy 2 (full, left, and right match) ==\n");
diff --git a/src/memdmp/vlc4/fribidi_allow_deprecated.patch b/src/memdmp/vlc4/fribidi_allow_deprecated.patch
new file mode 100644
index 0000000..ca15ea2
--- /dev/null
+++ b/src/memdmp/vlc4/fribidi_allow_deprecated.patch
@@ -0,0 +1,10 @@
+--- a/modules/text_renderer/freetype/text_layout.c
++++ b/modules/text_renderer/freetype/text_layout.c
+@@ -52,7 +52,6 @@
+
+ /* RTL */
+ #if defined(HAVE_FRIBIDI)
+-# define FRIBIDI_NO_DEPRECATED 1
+ # include <fribidi.h>
+ #endif
+
diff --git a/src/memdmp/vlc4/libplacebo-5.patch b/src/memdmp/vlc4/libplacebo-5.patch
new file mode 100644
index 0000000..006e900
--- /dev/null
+++ b/src/memdmp/vlc4/libplacebo-5.patch
@@ -0,0 +1,108 @@
+patch vaguely ported from: https://code.videolan.org/videolan/vlc/-/merge_requests/2233
+
+diff --git a/modules/video_output/opengl/converter.h b/modules/video_output/opengl/converter.h
+index 7000e1f..49fa667 100644
+--- a/modules/video_output/opengl/converter.h
++++ b/modules/video_output/opengl/converter.h
+@@ -26,6 +26,9 @@
+ #include <vlc_picture_pool.h>
+ #include <vlc_opengl.h>
+ 
++#include <libplacebo/log.h>
++#include <libplacebo/shaders.h>
++
+ /* if USE_OPENGL_ES2 is defined, OpenGL ES version 2 will be used, otherwise
+  * normal OpenGL will be used */
+ #ifdef __APPLE__
+@@ -253,10 +256,6 @@ static inline bool HasExtension(const char *apis, const char *api)
+     return false;
+ }
+ 
+-struct pl_context;
+-struct pl_shader;
+-struct pl_shader_res;
+-
+ /*
+  * Structure that is filled by "glhw converter" module probe function
+  * The implementation should initialize every members of the struct that are
+@@ -273,7 +272,7 @@ struct opengl_tex_converter_t
+     vlc_gl_t *gl;
+ 
+     /* libplacebo context, created by the caller (optional) */
+-    struct pl_context *pl_ctx;
++    pl_log pl_log;
+ 
+     /* Function pointers to OpenGL functions, set by the caller */
+     const opengl_vtable_t *vt;
+@@ -337,7 +336,7 @@ struct opengl_tex_converter_t
+     bool yuv_color;
+     GLfloat yuv_coefficients[16];
+ 
+-    struct pl_shader *pl_sh;
++    pl_shader pl_sh;
+     const struct pl_shader_res *pl_sh_res;
+ 
+     /* Private context */
+diff --git a/modules/video_output/opengl/fragment_shaders.c b/modules/video_output/opengl/fragment_shaders.c
+index ecf7226..29f4148 100644
+--- a/modules/video_output/opengl/fragment_shaders.c
++++ b/modules/video_output/opengl/fragment_shaders.c
+@@ -611,7 +611,7 @@ opengl_fragment_shader_init_impl(opengl_tex_converter_t *tc, GLenum tex_target,
+ 
+ #ifdef HAVE_LIBPLACEBO
+     if (tc->pl_sh) {
+-        struct pl_shader *sh = tc->pl_sh;
++        pl_shader sh = tc->pl_sh;
+         struct pl_color_map_params color_params = pl_color_map_default_params;
+         color_params.intent = var_InheritInteger(tc->gl, "rendering-intent");
+         color_params.tone_mapping_algo = var_InheritInteger(tc->gl, "tone-mapping");
+@@ -634,7 +634,7 @@ opengl_fragment_shader_init_impl(opengl_tex_converter_t *tc, GLenum tex_target,
+                 pl_color_space_from_video_format(&tc->fmt),
+                 dst_space, NULL, false);
+ 
+-        struct pl_shader_obj *dither_state = NULL;
++        pl_shader_obj dither_state = NULL;
+         int method = var_InheritInteger(tc->gl, "dither-algo");
+         if (method >= 0) {
+ 
+diff --git a/modules/video_output/opengl/vout_helper.c b/modules/video_output/opengl/vout_helper.c
+index 13d65e0..1ee99af 100644
+--- a/modules/video_output/opengl/vout_helper.c
++++ b/modules/video_output/opengl/vout_helper.c
+@@ -570,8 +570,7 @@ opengl_deinit_program(vout_display_opengl_t *vgl, struct prgm *prgm)
+ 
+ #ifdef HAVE_LIBPLACEBO
+     FREENULL(tc->uloc.pl_vars);
+-    if (tc->pl_ctx)
+-        pl_context_destroy(&tc->pl_ctx);
++    pl_log_destroy(&tc->pl_log);
+ #endif
+ 
+     vlc_object_release(tc);
+@@ -622,21 +621,21 @@ opengl_init_program(vout_display_opengl_t *vgl, struct prgm *prgm,
+     // create the main libplacebo context
+     if (!subpics)
+     {
+-        tc->pl_ctx = pl_context_create(PL_API_VER, &(struct pl_context_params) {
++        tc->pl_log = pl_log_create(PL_API_VER, &(struct pl_log_params) {
+             .log_cb    = log_cb,
+             .log_priv  = tc,
+             .log_level = PL_LOG_INFO,
+         });
+-        if (tc->pl_ctx) {
++        if (tc->pl_log) {
+ #   if PL_API_VER >= 20
+-            tc->pl_sh = pl_shader_alloc(tc->pl_ctx, &(struct pl_shader_params) {
++            tc->pl_sh = pl_shader_alloc(tc->pl_log, &(struct pl_shader_params) {
+                 .glsl.version = tc->glsl_version,
+                 .glsl.gles = tc->is_gles,
+             });
+ #   elif PL_API_VER >= 6
+-            tc->pl_sh = pl_shader_alloc(tc->pl_ctx, NULL, 0);
++            tc->pl_sh = pl_shader_alloc(tc->pl_log, NULL, 0);
+ #   else
+-            tc->pl_sh = pl_shader_alloc(tc->pl_ctx, NULL, 0, 0);
++            tc->pl_sh = pl_shader_alloc(tc->pl_log, NULL, 0, 0);
+ #   endif
+         }
+     }
diff --git a/src/memdmp/vlc4/musl-ioctl.patch b/src/memdmp/vlc4/musl-ioctl.patch
new file mode 100644
index 0000000..5dee3e8
--- /dev/null
+++ b/src/memdmp/vlc4/musl-ioctl.patch
@@ -0,0 +1,24 @@
+musl libc has a different interface
+
+--- a/modules/access/v4l2/lib.c
++++ b/modules/access/v4l2/lib.c
+@@ -49,7 +49,7 @@ static int (*v4l2_fd_open_cb)(int, int) = fd_open;
+ //int (*v4l2_open) (const char *, int, ...) = open;
+ //int (*v4l2_dup) (const char *, int, ...) = dup;
+ int (*v4l2_close) (int) = close;
+-int (*v4l2_ioctl) (int, unsigned long int, ...) = ioctl;
++int (*v4l2_ioctl) (int, int, ...) = ioctl;
+ 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,7 @@
+ /* libv4l2 functions */
+ extern int v4l2_fd_open(int, int);
+ extern int (*v4l2_close) (int);
+-extern int (*v4l2_ioctl) (int, unsigned long int, ...);
++extern int (*v4l2_ioctl) (int, int, ...);
+ 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/src/memdmp/vlc4/omxil-rpi-codecs.patch b/src/memdmp/vlc4/omxil-rpi-codecs.patch
new file mode 100644
index 0000000..9b7accf
--- /dev/null
+++ b/src/memdmp/vlc4/omxil-rpi-codecs.patch
@@ -0,0 +1,15 @@
+--- vlc-2.2.0/modules/codec/omxil/omxil_core.c.orig	2015-02-28 08:37:54.044936036 -0200
++++ vlc-2.2.0/modules/codec/omxil/omxil_core.c	2015-02-28 08:38:38.738271654 -0200
+@@ -204,6 +204,12 @@
+ #ifdef RPI_OMX
+     { "video_decoder.avc", "OMX.broadcom.video_decode" },
+     { "video_decoder.mpeg2", "OMX.broadcom.video_decode" },
++    { "video_decoder.mpeg4", "OMX.broadcom.video_decode" },
++    { "video_decoder.vp6", "OMX.broadcom.video_decode" },
++    { "video_decoder.vp8", "OMX.broadcom.video_decode" },
++    { "video_decoder.theora", "OMX.broadcom.video_decode" },
++    { "video_decoder.mjpg", "OMX.broadcom.video_decode" },
++    { "video_decoder.vc1", "OMX.broadcom.video_decode" },
+     { "iv_renderer", "OMX.broadcom.video_render" },
+ #endif
+     { 0, 0 }
diff --git a/src/memdmp/vlc4/taglib-2.0.patch b/src/memdmp/vlc4/taglib-2.0.patch
new file mode 100644
index 0000000..930e55f
--- /dev/null
+++ b/src/memdmp/vlc4/taglib-2.0.patch
@@ -0,0 +1,97 @@
+Patch-Source: https://gitlab.archlinux.org/archlinux/packaging/packages/vlc/-/raw/40b8a8a1fc24f594a0b828fbde521c644964efaf/taglib-2.patch
+diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp
+index 84b401c..a3bdac7 100644
+--- 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;
+@@ -216,7 +216,7 @@ public:
+ 
+     void seek(long offset, Position p)
+     {
+-        uint64_t pos = 0;
++        offset_t pos = 0;
+         switch (p)
+         {
+             case Current:
+@@ -237,12 +237,12 @@ public:
+         return;
+     }
+ 
+-    long tell() const
++    offset_t tell() const
+     {
+         return m_previousPos;
+     }
+ 
+-    long length()
++    offset_t length()
+     {
+         uint64_t i_size;
+         if (vlc_stream_GetSize( m_stream, &i_size ) != VLC_SUCCESS)
+@@ -256,7 +256,7 @@ public:
+ 
+ private:
+     stream_t* m_stream;
+-    int64_t m_previousPos;
++    offset_t m_previousPos;
+ };
+ #endif /* TAGLIB_VERSION_1_11 */
+ 
+@@ -465,7 +465,7 @@ static void ReadMetaFromASF( ASF::Tag* tag, demux_meta_t* p_demux_meta, vlc_meta
+ 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* tag, demux_meta_t *p_demux_meta, vlc_meta
+ {
+     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* tag, demux_meta_t *p_demux_meta, vlc_meta
+ #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_this )
+         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/src/memdmp/vlc4/vlc.confd b/src/memdmp/vlc4/vlc.confd
new file mode 100644
index 0000000..9a58842
--- /dev/null
+++ b/src/memdmp/vlc4/vlc.confd
@@ -0,0 +1,15 @@
+# Sample vlc params suitable for running as a daemon
+
+## --file-logging		enable file logging
+## --logfile			logfile name/path
+## -vvv				verbose logging
+## -I dummy			disable X11 interface
+## --sout PARAMS		encoding parameters
+
+
+## Do NOT quote 'PARAMS' otherwise shell expansions will broke vlc
+##
+## The --daemon option will automatically be added so no need to add it
+## here.
+
+VLC_OPTS="--quiet -I dummy alsa://hw:0,0 --file-logging --logfile /var/log/vlc/vlc.log --sout #transcode{acodec=mp3,ab=48,channels=1,samplerate=22050}:std{access=http,mux=ogg,dst=:8080}"
diff --git a/src/memdmp/vlc4/vlc.initd b/src/memdmp/vlc4/vlc.initd
new file mode 100644
index 0000000..541a071
--- /dev/null
+++ b/src/memdmp/vlc4/vlc.initd
@@ -0,0 +1,32 @@
+#!/sbin/openrc-run
+
+description="VideoLAN daemon"
+pidfile="/var/run/vlc/${RC_SVCNAME}.pid"
+command="/usr/bin/vlc"
+
+depend() {
+	need net
+	after firewall
+}
+
+start_pre() {
+	checkpath --directory --owner vlc:vlc --mode 775 ${pidfile%/*}
+}
+
+start() {
+	ebegin "Starting ${RC_SVCNAME}"
+	start-stop-daemon --start \
+		--user vlc \
+		--pidfile ${pidfile} \
+		--exec ${command} \
+		-- \
+		--daemon --pidfile ${pidfile} ${VLC_OPTS}
+	eend $?
+}
+
+stop() {
+	ebegin "Stopping ${RC_SVCNAME}"
+	start-stop-daemon --stop \
+		--pidfile ${pidfile}
+	eend $?
+}
diff --git a/src/memdmp/vlc4/vlc4-daemon.pre-install b/src/memdmp/vlc4/vlc4-daemon.pre-install
new file mode 100644
index 0000000..aed6c18
--- /dev/null
+++ b/src/memdmp/vlc4/vlc4-daemon.pre-install
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+groups="vlc audio video"
+
+for group in $groups; do
+	addgroup -S $group 2>/dev/null
+done
+adduser -S -D -h /home/vlc -s /bin/sh -G vlc -g vlc vlc 2>/dev/null
+
+# make sure vlc are in all groups
+for group in $groups; do
+	addgroup vlc $group 2>/dev/null
+done
+
+exit 0
diff --git a/src/memdmp/vlc4/vlc4-libs.pre-deinstall b/src/memdmp/vlc4/vlc4-libs.pre-deinstall
new file mode 100644
index 0000000..2b29179
--- /dev/null
+++ b/src/memdmp/vlc4/vlc4-libs.pre-deinstall
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+rm -r -f usr/lib/vlc/plugins/plugins.dat 2>/dev/null
+rmdir -p usr/lib/vlc/plugins 2>/dev/null
+
+exit 0
diff --git a/src/memdmp/vlc4/vlc4-libs.trigger b/src/memdmp/vlc4/vlc4-libs.trigger
new file mode 100644
index 0000000..b12b509
--- /dev/null
+++ b/src/memdmp/vlc4/vlc4-libs.trigger
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if [ -f /usr/lib/vlc/vlc-cache-gen ]; then
+	exec /usr/lib/vlc/vlc-cache-gen "$@" >/dev/null 2>&1
+fi
+exit 0
+
-- 
cgit v1.2.3