From 434a7357f9ed92d87f0cc5618e9a578e315ec334 Mon Sep 17 00:00:00 2001 From: dslm4515 <27793627+dslm4515@users.noreply.gitub.com> Date: Fri, 16 Feb 2024 12:35:57 -0600 Subject: [PATCH] Upgraded vlc from 3.0.16 to 3.0.20 --- build-scripts/vlc.build | 22 +++-- patches/vlc-alpine/libplacebo-5.patch | 108 ++++++++++++++++++++++ patches/vlc-alpine/omxil-rpi-codecs.patch | 15 +++ 3 files changed, 137 insertions(+), 8 deletions(-) create mode 100644 patches/vlc-alpine/libplacebo-5.patch create mode 100644 patches/vlc-alpine/omxil-rpi-codecs.patch diff --git a/build-scripts/vlc.build b/build-scripts/vlc.build index 95be9f4..b3fb1e4 100644 --- a/build-scripts/vlc.build +++ b/build-scripts/vlc.build @@ -1,34 +1,40 @@ #! /bin/bash # VLC -# Source: https://download.videolan.org/vlc/3.0.16/vlc-3.0.16.tar.xz +# Source: https://download.videolan.org/vlc/3.0.20/vlc-3.0.20.tar.xz # # $BUILD = Directory to temporarily install # $PKGS = Directory to store built packages # # DEPS -# Required: NONE +# Required: libplacebo # Recommended: gst-plugins-ugly a52dec libgcrypt libmad alsa-lib # Recommended: desktop-file-utils ffmpeg lua52 qt5-qtsvg # Optional: dbus libidn libssh2 gst-plugins-bad gst-plugins-good +# NOTE: VLC still expect headers from libplacebo, even if support for +# is disabled +# NOTE: Fails to build with clang-17. Use GCC. +# NOTE: Stripping libraries of debug symbols causes vlc not to load + patch -Np1 -i ../patches/vlc-alpine/check-headless.patch patch -Np1 -i ../patches/vlc-alpine/disable-sub-autodetect-fuzzy-1-test.patch patch -Np1 -i ../patches/vlc-alpine/fribidi_allow_deprecated.patch -patch -Np1 -i ../patches/vlc-alpine/test-s390x.patch +patch -Np1 -i ../patches/vlc-alpine/libplacebo-5.patch +patch -Np1 -i ../patches/vlc-alpine/omxil-rpi-codecs.patch NOCONFIGURE=1 ./bootstrap && CFLAGS=" -fcommon -D_GNU_SOURCE" CXXFLAGS="-fcommon" \ BUILDCC="gcc -std=c99" \ ./configure --prefix=/usr \ - --disable-vpx \ --enable-x264 \ --enable-merge-ffmpeg \ - --without-mpg123 $BUILDTRUPLE && + --disable-v4l2 --disable-libplacebo # incompatible atm + $BUILDTRUPLE && read -p "Compile?" && make -j2 && -sudo -S make DESTDIR=$BUILD docdir=/usr/share/doc/vlc-3.0.16 install && +sudo -S make DESTDIR=$BUILD docdir=/usr/share/doc/vlc-3.0.20 install && sudo -S mkdir -pv /BMAN/install /BMAN/usr/share && \ sudo -S mv $BUILD/usr/share/doc /BMAN/usr/share/ && \ sudo -S mv $BUILD/usr/share/man /BMAN/usr/share/ && \ @@ -56,7 +62,7 @@ vlc: homepage: http://www.videolan.org/vlc/ vlc: EOF sudo -S mv -v /tmp/slack-desc install/ && -sudo -S makepkg -l y -c n $PKGS/vlc-3.0.16-$(uname -m)-mlfs.txz && \ +sudo -S makepkg -l y -c n $PKGS/vlc-3.0.20-$PSUFFIX && \ cd /BMAN && \ cat > /tmp/slack-desc << "EOF" vlc-doc: Manuals for vlc (VLC media player) @@ -68,5 +74,5 @@ vlc-doc: http://www.videolan.org/vlc/ vlc-doc: EOF sudo -S mv -v /tmp/slack-desc install/ && \ -sudo -S makepkg -l y -c n $PKGS/vlc-doc-3.0.16-noarch-mlfs.txz && \ +sudo -S makepkg -l y -c n $PKGS/vlc-doc-3.0.20-$NOPSUFFIX && \ sudo -S rm -rf ${BUILD}/* /BMAN/* diff --git a/patches/vlc-alpine/libplacebo-5.patch b/patches/vlc-alpine/libplacebo-5.patch new file mode 100644 index 0000000..006e900 --- /dev/null +++ b/patches/vlc-alpine/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 + #include + ++#include ++#include ++ + /* 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/patches/vlc-alpine/omxil-rpi-codecs.patch b/patches/vlc-alpine/omxil-rpi-codecs.patch new file mode 100644 index 0000000..9b7accf --- /dev/null +++ b/patches/vlc-alpine/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 }