Projects
Staging
vlc-beta
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 372
View file
vlc-beta.spec
Changed
@@ -338,11 +338,12 @@ test -x "$(type -p gcc-10)" && BUILDCC="$_" test -x "$(type -p gcc-10)" && CC="$_" test -x "$(type -p g++-10)" && CXX="$_" -test -x "$(type -p qmake6)" && QMAKE6="$_" +test -x "$(type -p gcc-13)" && BUILDCC="$_" +test -x "$(type -p gcc-13)" && CC="$_" +test -x "$(type -p g++-13)" && CXX="$_" export BUILDCC="$(readlink -f ${BUILDCC})" export CC="$(readlink -f ${CC})" export CXX="$(readlink -f ${CXX})" -export QMAKE6="$(readlink -f ${QMAKE6})" CFLAGS='%optflags -Wno-unused-variable -Wno-unused-parameter -Wno-deprecated-declarations -Wno-unused-but-set-variable' CXXFLAGS='%optflags -Wno-unused-variable -Wno-unused-parameter -Wno-deprecated-declarations -Wno-unused-but-set-variable' ./bootstrap
View file
vlc-beta.patch
Changed
@@ -1,14 +1,3 @@ ---- a/buildsystem/check_qml_module.py -+++ b/buildsystem/check_qml_module.py -@@ -83,7 +83,7 @@ class QmlModuleChecker: - print("qmake not found") - return False - -- if qtconf: -+ if False: - ret = subprocess.run( - qmake, "-qtconf", qtconf, "-query", - stdout=subprocess.PIPE, stderr=subprocess.PIPE, --- a/configure.ac +++ b/configure.ac @@ -10,7 +10,7 @@ VERSION_EXTRA=0
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/contrib/src/qtvlcdeps/imports.qrc
Deleted
@@ -1,5 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>Imports.qml</file> - </qresource> -</RCC>
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/contrib/src/qtvlcdeps/vlcdeps.pro
Deleted
@@ -1,32 +0,0 @@ -TEMPLATE = app - -QT = core gui qml svg quick widgets quickcontrols2 -QTPLUGIN = qsvgicon qsvg qjpeg qico - -CONFIG -= entrypoint - -win32 { -QTPLUGIN += qwindows qmodernwindowsstyle -} - -linux { -QTPLUGIN += qxcb-glx-integration qxcb-egl-integration qxcb qwayland-generic qwayland-egl qgtk3 qxdgdesktopportal xdg-shell -} - -macx { -QTPLUGIN += qcocoa qmacstyle -} - -# qmake will run qmlimportscanner, -# which will make it generate correct qml plugin -# dependencies -RESOURCES = imports.qrc - -# These are not needed now, but may be required in the future: -# CONFIG += import_plugins staticlib create_pc create_prl no_install_prl link_prl - -# QMAKE_PKGCONFIG_NAME = vlcdeps -# QMAKE_PKGCONFIG_DESCRIPTION = Dependencies for VLC -# QMAKE_PKGCONFIG_LIBDIR = $$target.path -# QMAKE_PKGCONFIG_INCDIR = $$headers.path -# QMAKE_PKGCONFIG_DESTDIR = pkgconfig
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/buildsystem/check_qml_module.py -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/buildsystem/check_qml_module.py
Changed
@@ -3,7 +3,6 @@ import json import argparse -import sys import os import subprocess from tempfile import NamedTemporaryFile @@ -78,43 +77,36 @@ return ret - def getInstallInfo(self, qmake, qtconf): - if not os.path.isfile(qmake): - print("qmake not found") - return False - + def getInstallInfo(self, qtpaths, qtconf): + qtpaths_cmd = qtpaths, "--query", "--query-format", "json" if qtconf: - ret = subprocess.run( - qmake, "-qtconf", qtconf, "-query", - stdout=subprocess.PIPE, stderr=subprocess.PIPE, - encoding="utf8" - ) - else: - ret = subprocess.run( - qmake, "-query", - stdout=subprocess.PIPE, stderr=subprocess.PIPE, - encoding="utf8" - ) + qtpaths_cmd += "--qtconf", qtconf + ret = subprocess.run( + qtpaths_cmd, + stdout=subprocess.PIPE, stderr=subprocess.PIPE, + encoding="utf8" + ) if ret.returncode != 0: print(ret.stderr.strip()) return False - binpath = None - libexec = None - qmlpath = None - qtmajor = "" - for l in ret.stdout.splitlines(): - l.strip() - if l.startswith("QT_HOST_BINS:"): - binpath = l.split(":", 1)1 - elif l.startswith("QT_HOST_LIBEXECS:"): - libexec = l.split(":", 1)1 - elif l.startswith("QT_INSTALL_QML:"): - self.qmlpath = l.split(":", 1)1 - elif l.startswith("QT_VERSION:"): - qmlversion = l.split(":", 1)1 - qtmajor = qmlversion.split(".")0 + # Qt 6.6 outputs invalid json, try to fix it + qpaths_json = str(ret.stdout) + if ',\n}' in qpaths_json: + qpaths_json = qpaths_json.replace(',\n}', '\n}') + elif ',\r\n}' in qpaths_json: + qpaths_json = qpaths_json.replace(',\r\n}', '\r\n}') + + qtjson = json.loads(qpaths_json) + binpath = qtjson"QT_HOST_BINS" + libexec = qtjson"QT_HOST_LIBEXECS" + self.qmlpath = qtjson"QT_INSTALL_QML" + qmlversion = qtjson"QT_VERSION" + if qmlversion: + qtmajor = qmlversion.split(".")0 + else: + qtmajor = "" if qtmajor == "6": self.qt5 = False @@ -148,12 +140,12 @@ def main(): parser = argparse.ArgumentParser("check for qml runtime dependencies") parser.add_argument( - "--qmake", type=str, required=True, - help="native qmake path") + "--qtpaths", type=str, required=True, + help="native qtpaths path") parser.add_argument( "--qtconf", type=str, required=False, - help="qmake qtconf path") + help="qtpaths qtconf path") parser.add_argument( "--modules", nargs="+", action=KeyValue, required=True, @@ -162,7 +154,7 @@ args = parser.parse_args() moduleChecker = QmlModuleChecker() - if not moduleChecker.getInstallInfo(args.qmake, args.qtconf): + if not moduleChecker.getInstallInfo(args.qtpaths, args.qtconf): exit(-1) with NamedTemporaryFile(mode="w+", suffix=".qml") as f:
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/configure.ac -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/configure.ac
Changed
@@ -1188,9 +1188,9 @@ Turn some warnings into compilation error (default disabled)),, enable_extra_checks="no") AS_IF(test "${enable_extra_checks}" = "yes", - AX_APPEND_COMPILE_FLAGS(-Werror=missing-field-initializers -Werror=format -Werror=incompatible-pointer-types -Werror=restrict -Werror=int-conversion -Werror=return-type, CFLAGS) + AX_APPEND_COMPILE_FLAGS(-Werror=missing-field-initializers -Werror=format -Werror=incompatible-pointer-types -Werror=restrict -Werror=int-conversion -Werror=return-type -Werror=implicit-int -Werror=return-mismatch -Werror=declaration-missing-parameter-type, CFLAGS) AC_LANG_PUSH(C++) - AX_APPEND_COMPILE_FLAGS(-Werror=missing-field-initializers -Werror=format -Werror=return-type, CXXFLAGS) + AX_APPEND_COMPILE_FLAGS(-Werror=missing-field-initializers -Werror=format -Werror=return-type -Werror=return-mismatch, CXXFLAGS) AC_LANG_POP(C++) ) @@ -3055,17 +3055,17 @@ dnl AC_ARG_ENABLE(x262, AS_HELP_STRING(--enable-x262, H262 encoding support with static libx262 (default disabled))) -if test "${enable_x262}" != "no"; then +AS_IF(test "${enable_x262}" != "no", PKG_CHECK_MODULES(X262, x262, VLC_ADD_PLUGIN(x262) VLC_ADD_LIBS(x262,${X262_LIBS}) VLC_ADD_CFLAGS(x262,${X262_CFLAGS}) - , - if test "${enable_x262}" = "yes"; then - AC_MSG_ERROR(x262 module doesn't work without staticly compiled libx262.a) - fi + , + AS_IF(test "${enable_x262}" = "yes", + AC_MSG_ERROR(x262 module does not work without statically compiled libx262.a) + ) ) -fi +) dnl x265 encoder PKG_ENABLE_MODULES_VLC(X265,, x265, HEVC/H.265 encoder, auto) @@ -4018,7 +4018,7 @@ ) dnl check native in contribs and keep the full path if found there - AC_PATH_PROGS(QMAKE6, qmake6, qmake6, "${QT_BIN_DIRECTORY}") + AC_PATH_PROGS(QTPATHS6, qtpaths6, qtpaths6, "${QT_BIN_DIRECTORY}") AC_PATH_PROGS(MOC, moc, moc, "${QT_LIBEXEC_DIRECTORY}") AC_PATH_PROGS(RCC, rcc, rcc, "${QT_LIBEXEC_DIRECTORY}") AC_PATH_PROGS(UIC, uic, uic, "${QT_LIBEXEC_DIRECTORY}") @@ -4029,9 +4029,9 @@ ) AC_CHECK_PROGS(PYTHON3, python3, no) - AC_MSG_CHECKING(if required Qt plugins are installed with ${QMAKE6} and conf ${QT_CONF}) + AC_MSG_CHECKING(if required Qt plugins are installed with ${QTPATHS6} and conf ${QT_CONF}) AS_IF(test "$PYTHON3" != "no" && ${PYTHON3} ${srcdir}/buildsystem/check_qml_module.py \ - --qmake "${QMAKE6}" \ + --qtpaths "${QTPATHS6}" \ --qtconf "${QT_CONF}" \ --modules \ QtQml.Models="" \ @@ -4050,7 +4050,7 @@ PKG_CHECK_MODULES(QT_QUICK_TEST, Qt6QuickTest >= ${QT_MINIMUM_VERSION}, AS_IF(test "$PYTHON3" != "no" && ${PYTHON3} ${srcdir}/buildsystem/check_qml_module.py \ - --qmake "${QMAKE6}" \ + --qtpaths "${QTPATHS6}" \ --qtconf "${QT_CONF}" \ --modules QtTest="" \ >&AS_MESSAGE_FD ,
View file
_service:obs_scm:vlc-beta-20240517.361f419997.obscpio/contrib/src/gme/0004-Blip_Buffer-replace-assert-with-a-check.patch
Added
@@ -0,0 +1,45 @@ +From 74449b553fef6528e1fd9d2dccc6413ded1d5e39 Mon Sep 17 00:00:00 2001 +From: Thomas Guillem <thomas@gllm.fr> +Date: Wed, 15 May 2024 14:34:59 +0200 +Subject: PATCH Blip_Buffer: replace assert with a check + +assert() may be disabled and you don't want to abort a whole process in +case of a parsing issue. So check the offset from samples_avail(), that +will return 0 (EOF) in case of a out of bounds read. +--- + gme/Blip_Buffer.cpp | 1 - + gme/Blip_Buffer.h | 6 +++++- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/gme/Blip_Buffer.cpp b/gme/Blip_Buffer.cpp +index 71e48b2..7d2faf3 100644 +--- a/gme/Blip_Buffer.cpp ++++ b/gme/Blip_Buffer.cpp +@@ -144,7 +144,6 @@ void Blip_Buffer::bass_freq( int freq ) + void Blip_Buffer::end_frame( blip_time_t t ) + { + offset_ += t * factor_; +- assert( samples_avail() <= (long) buffer_size_ ); // time outside buffer length + } + + void Blip_Buffer::remove_silence( long count ) +diff --git a/gme/Blip_Buffer.h b/gme/Blip_Buffer.h +index 9af53f7..ea109d7 100644 +--- a/gme/Blip_Buffer.h ++++ b/gme/Blip_Buffer.h +@@ -475,7 +475,11 @@ inline blip_eq_t::blip_eq_t( double t, long rf, long sr, long cf ) : + treble( t ), rolloff_freq( rf ), sample_rate( sr ), cutoff_freq( cf ) { } + + inline int Blip_Buffer::length() const { return length_; } +-inline long Blip_Buffer::samples_avail() const { return (long) (offset_ >> BLIP_BUFFER_ACCURACY); } ++inline long Blip_Buffer::samples_avail() const ++{ ++ long samples = (long) (offset_ >> BLIP_BUFFER_ACCURACY); ++ return samples <= (long) buffer_size_ ? samples : 0; ++} + inline long Blip_Buffer::sample_rate() const { return sample_rate_; } + inline int Blip_Buffer::output_latency() const { return blip_widest_impulse_ / 2; } + inline long Blip_Buffer::clock_rate() const { return clock_rate_; } +-- +2.39.2 +
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/contrib/src/gme/rules.mak -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/contrib/src/gme/rules.mak
Changed
@@ -18,6 +18,7 @@ $(APPLY) $(SRC)/gme/0001-Export-the-proper-C-runtime-library.patch $(APPLY) $(SRC)/gme/0002-link-with-libm-and-set-it-in-pkg-config-when-buildin.patch $(APPLY) $(SRC)/gme/0003-fix-android-toolchain-broken-CMAKE_CXX_IMPLICIT_LINK.patch + $(APPLY) $(SRC)/gme/0004-Blip_Buffer-replace-assert-with-a-check.patch $(call pkg_static,"gme/libgme.pc.in") $(MOVE)
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/contrib/src/harfbuzz/rules.mak -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/contrib/src/harfbuzz/rules.mak
Changed
@@ -17,6 +17,8 @@ $(APPLY) $(SRC)/harfbuzz/0001-meson-Enable-big-objects-support-when-building-for-w.patch $(APPLY) $(SRC)/harfbuzz/0001-freetype-Fix-function-signatures-to-match-without-ca.patch $(APPLY) $(SRC)/harfbuzz/0002-Disable-Wcast-function-type-strict.patch + # build ragel as a native tool (which can't be installed) + sed -i.orig -e 's,install : true,native : true,' $(UNPACK_DIR)/subprojects/packagefiles/ragel/meson.build $(MOVE) DEPS_harfbuzz = freetype2 $(DEPS_freetype2)
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/contrib/src/qt/rules.mak -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/contrib/src/qt/rules.mak
Changed
@@ -32,7 +32,7 @@ endif $(TARBALLS)/qtbase-everywhere-src-$(QTBASE_VERSION_FULL).tar.xz: - $(call download_pkg,$(QTBASE_URL), qt) + $(call download_pkg,$(QTBASE_URL),qt) .sum-qt: qtbase-everywhere-src-$(QTBASE_VERSION_FULL).tar.xz
View file
_service:obs_scm:vlc-beta-20240517.361f419997.obscpio/contrib/src/qtvlcdeps/CMakeLists.txt
Added
@@ -0,0 +1,50 @@ +cmake_minimum_required(VERSION 3.16) + +project(qtvlcdeps VERSION 0.1 LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(Qt6 6.2 REQUIRED COMPONENTS Core Gui Qml Svg Quick Widgets QuickControls2) + +qt_standard_project_setup(REQUIRES 6.2) + +qt_add_executable(qtvlcdeps) + +qt_add_qml_module(qtvlcdeps + URI qtvlcdeps + RESOURCE_PREFIX qtvlcdeps + QML_FILES + Imports.qml +) + +qt_import_plugins(qtvlcdeps + INCLUDE Qt::QSvgIconPlugin Qt::QSvgPlugin Qt::QJpegPlugin Qt::QICOPlugin +) + +if (WIN32) + qt_import_plugins(qtvlcdeps + INCLUDE Qt::QWindowsIntegrationPlugin Qt::QModernWindowsStylePlugin + ) +endif (WIN32) + +if (UNIX) + qt_import_plugins(qtvlcdeps + INCLUDE Qt::QXcbGlxIntegrationPlugin Qt::QXcbEglIntegrationPlugin Qt::QXcbIntegrationPlugin Qt::QWaylandIntegrationPlugin Qt::QWaylandEglPlatformIntegrationPlugin Qt::QGtk3ThemePlugin Qt::QXdgDesktopPortalThemePlugin Qt::QWaylandXdgShellPlatformIntegrationPlugin + ) +endif (UNIX) + +if (APPLE) + qt_import_plugins(qtvlcdeps + INCLUDE Qt::QCocoaIntegrationPlugin Qt::QMacStylePlugin + ) +endif (APPLE) + + +set_target_properties(qtvlcdeps PROPERTIES + WIN32_EXECUTABLE TRUE + qt_no_entrypoint TRUE +) + +target_link_libraries(qtvlcdeps + PRIVATE Qt6::Core Qt6::Gui Qt6::Qml Qt6::Svg Qt6::Quick Qt6::Widgets Qt6::QuickControls2 +)
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/contrib/src/qtvlcdeps/rules.mak -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/contrib/src/qtvlcdeps/rules.mak
Changed
@@ -14,7 +14,7 @@ PKGS_FOUND += qtvlcdeps endif -QT_VLC_DEP_SOURCES := Imports.qml Imports.qrc qtvlcdeps.pc.in vlcdeps.pro +QT_VLC_DEP_SOURCES := Imports.qml qtvlcdeps.pc.in CMakeLists.txt .sum-qtvlcdeps: touch $@ @@ -28,9 +28,9 @@ $(MOVE) .qtvlcdeps: qtvlcdeps - rm -rf $</Makefile.Release - $(BUILDPREFIX)/bin/qmake6 -qtconf $(PREFIX)/bin/target_qt.conf $(SRC)/qtvlcdeps -o $< - QT_LIBS=$$(awk -F '=' '/LIBS/ {print $$2; exit}' $</Makefile.Release); \ + $(CMAKECLEAN) + $(HOSTVARS) $(CMAKE) -G Ninja -DCMAKE_TOOLCHAIN_FILE=$(PREFIX)/lib/cmake/Qt6/qt.toolchain.cmake + QT_LIBS=$$(awk -F '=' '/LINK_LIBRARIES/ {print $$2; exit}' $(BUILD_DIR)/build.ninja); \ cat $</qtvlcdeps.pc.in | \ sed "s|%1|$$QT_LIBS|" | \ sed "s|$(PREFIX)/lib/|$$\{libdir\}/|g" | \
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/extras/ci/gitlab-ci.yml -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/extras/ci/gitlab-ci.yml
Changed
@@ -24,7 +24,7 @@ VLC_WIN_LLVM_MSVCRT_IMAGE: registry.videolan.org/vlc-debian-llvm-msvcrt:20240212151604 VLC_WIN_LLVM_UCRT_IMAGE: registry.videolan.org/vlc-debian-llvm-ucrt:20240212151604 VLC_DEBIAN_IMAGE: registry.videolan.org/vlc-debian-unstable:20240402131352 - VLC_ANDROID_IMAGE: registry.videolan.org/vlc-debian-android:20231013040434 + VLC_ANDROID_IMAGE: registry.videolan.org/vlc-debian-android:20240514145422 VLC_SNAP_IMAGE: registry.videolan.org/vlc-ubuntu-focal:20231013031754 VLC_RASPBIAN_IMAGE: registry.videolan.org/vlc-ubuntu-raspberry:20231013032350 VLC_WASM_EMSCRIPTEN: registry.videolan.org/vlc-debian-wasm-emscripten:20240313095757 @@ -579,7 +579,7 @@ name: $VLC_ANDROID_IMAGE script: | git clone https://code.videolan.org/videolan/libvlcjni.git - (cd libvlcjni && git checkout aa63288b6bb5c52dfacbdec95104cd4c86c7e9c2) + (cd libvlcjni && git checkout b4416c1acbd4714fbd2e648c13723b20f3b2d834) if -n "$VLC_PREBUILT_CONTRIBS_URL" ; then CONTRIB_FLAGS="--with-prebuilt-contribs" else
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/extras/package/wasm-emscripten/build.sh -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/extras/package/wasm-emscripten/build.sh
Changed
@@ -146,7 +146,7 @@ --disable-speexdsp --disable-taglib --disable-zvbi \ --disable-rnnoise --disable-libaribcaption \ --disable-ogg --disable-vorbis --disable-kate --disable-flac \ - --host=wasm32-unknown-emscripten --enable-rav1e + --host=wasm32-unknown-emscripten diagnostic "vlc contribs: make" if "$VLC_USE_PREBUILT_CONTRIBS" -ne "0" ; then
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/include/vlc/libvlc_media_player.h -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/include/vlc/libvlc_media_player.h
Changed
@@ -2154,6 +2154,25 @@ LIBVLC_API void libvlc_video_set_teletext( libvlc_media_player_t *p_mi, int i_page ); /** + * Set teletext background transparency. + * + * \param p_mi the media player + * \param transparent whether background should be transparent. + * \version LibVLC 4.0.0 or later + */ +LIBVLC_API void libvlc_video_set_teletext_transparency( libvlc_media_player_t *p_mi, bool transparent ); + +/** + * Get teletext background transparency. + * + * \param p_mi the media player + * \retval true teletext has transparent background + * \retval false teletext has opaque background + * \version LibVLC 4.0.0 or later + */ +LIBVLC_API bool libvlc_video_get_teletext_transparency( libvlc_media_player_t *p_mi ); + +/** * Take a snapshot of the current video window. * * If i_width AND i_height is 0, original size is used.
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/include/vlc_aout.h -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/include/vlc_aout.h
Changed
@@ -317,15 +317,13 @@ * \param aout the audio output instance * \param system_ts system timestamp when audio_ts is played, based on * vlc_tick_now(), can be now, in the past or in the future. - * \param audio_ts audio timestamp played at system_ts, starts at 0 for the - * first sample played (must not take block->i_pts, passed in play(), into - * account). - * + * \param audio_pts audio timestamp played at system_ts, starts at block->i_pts + * for the first sample played. */ static inline void aout_TimingReport(audio_output_t *aout, vlc_tick_t system_ts, - vlc_tick_t audio_ts) + vlc_tick_t audio_pts) { - aout->events->timing_report(aout, system_ts, audio_ts); + aout->events->timing_report(aout, system_ts, audio_pts); } /**
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/lib/libvlc.sym -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/lib/libvlc.sym
Changed
@@ -244,6 +244,7 @@ libvlc_video_get_spu_delay libvlc_video_get_spu_text_scale libvlc_video_get_teletext +libvlc_video_get_teletext_transparency libvlc_video_set_adjust_float libvlc_video_set_adjust_int libvlc_video_set_aspect_ratio @@ -267,6 +268,7 @@ libvlc_video_set_spu_delay libvlc_video_set_spu_text_scale libvlc_video_set_teletext +libvlc_video_set_teletext_transparency libvlc_video_take_snapshot libvlc_video_new_viewpoint libvlc_video_update_viewpoint
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/lib/video.c -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/lib/video.c
Changed
@@ -446,6 +446,28 @@ vlc_player_Unlock(player); } +void libvlc_video_set_teletext_transparency( libvlc_media_player_t *p_mi, bool transparent ) +{ + vlc_player_t *player = p_mi->player; + vlc_player_Lock(player); + + vlc_player_SetTeletextTransparency(player, transparent); + + vlc_player_Unlock(player); +} + +bool libvlc_video_get_teletext_transparency( libvlc_media_player_t *p_mi ) +{ + vlc_player_t *player = p_mi->player; + vlc_player_Lock(player); + + bool transparent = vlc_player_IsTeletextTransparent(player); + + vlc_player_Unlock(player); + + return transparent; +} + /****************************************************************************** * libvlc_video_set_deinterlace : enable/disable/auto deinterlace and filter *****************************************************************************/
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/meson.build -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/meson.build
Changed
@@ -489,11 +489,16 @@ if get_option('extra_checks') add_project_arguments(cc.get_supported_arguments( '-Werror=missing-field-initializers', - '-Werror=format' + '-Werror=format', + '-Werror=return-type', + '-Werror=return-mismatch' ), language: 'c', 'cpp') add_project_arguments(cc.get_supported_arguments( '-Werror=incompatible-pointer-types', - '-Werror=restrict' + '-Werror=restrict', + '-Werror=int-conversion', + '-Werror=implicit-int', + '-Werror=declaration-missing-parameter-type' ), language: 'c') endif
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/access/rtp/h264.c -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/access/rtp/h264.c
Changed
@@ -25,6 +25,7 @@ #include <assert.h> #include "h26x.h" +#include "fmtp.h" #include <vlc_plugin.h> #include <vlc_codec.h> @@ -271,8 +272,9 @@ if(!desc->parameters) return VLC_ENOTSUP; - const char *psz = strstr(desc->parameters, "packetization-mode="); - if(!psz || psz19 == '\0' || atoi(&psz19) > 1) + uint8_t mode = 0; + int ret = vlc_sdp_fmtp_get(desc, "packetization-mode", &mode); + if ((ret && ret != -ENOENT) || mode > 1) return VLC_ENOTSUP; if (vlc_ascii_strcasecmp(desc->name, "H264") == 0) @@ -287,12 +289,10 @@ opaque->obj = obj; - if(desc->parameters) - { - psz = strstr(desc->parameters, "sprop-parameter-sets="); - if(psz) - opaque->sdpxps = h26x_fillextradata(psz + 21); - } + size_t sprop_len; + const char *sprop = vlc_sdp_fmtp_get_str(desc, "sprop-parameter-sets", &sprop_len); + if (sprop && sprop_len) + opaque->sdpxps = h26x_fillextradata(sprop); return VLC_SUCCESS; }
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/access/rtp/h265.c -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/access/rtp/h265.c
Changed
@@ -25,6 +25,7 @@ #include <assert.h> #include "h26x.h" +#include "fmtp.h" #define FLAG_DONL 1 @@ -296,25 +297,23 @@ opaque->obj = obj; - if(desc->parameters) - { - const char *psz = strstr(desc->parameters, "sprop-max-don-diff="); - if(psz) - opaque->b_donl = (atoi(psz + 19) > 0); - block_t **append = &opaque->sdpxps; - const char *props = { "sprop-vps=", "sprop-sps=", "sprop-pps=" }; - for(int i=0; i<ARRAY_SIZE(props); i++) - { - psz = strstr(desc->parameters, propsi); - if(!psz) - continue; - block_t *xps = h26x_fillextradata(psz + 10); - if(xps) - block_ChainLastAppend(&append, xps); - } - if(opaque->sdpxps) - opaque->sdpxps = block_ChainGather(opaque->sdpxps); + uint16_t don_diff; + if(!vlc_sdp_fmtp_get(desc, "sprop-max-don-diff", &don_diff)) + opaque->b_donl = (don_diff > 0); + + block_t **append = &opaque->sdpxps; + const char *props = { "sprop-vps", "sprop-sps", "sprop-pps" }; + for(size_t i=0; i<ARRAY_SIZE(props); i++) { + size_t len; + const char *value = vlc_sdp_fmtp_get_str(desc, propsi, &len); + if(!value || len == 0) + continue; + block_t *xps = h26x_fillextradata(value); + if(xps) + block_ChainLastAppend(&append, xps); } + if(opaque->sdpxps) + opaque->sdpxps = block_ChainGather(opaque->sdpxps); return VLC_SUCCESS; }
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/audio_output/adummy.c -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/audio_output/adummy.c
Changed
@@ -42,6 +42,7 @@ struct aout_sys { + vlc_tick_t first_pts; vlc_tick_t first_play_date; vlc_tick_t last_timing_date; vlc_tick_t paused_date; @@ -52,7 +53,11 @@ struct aout_sys *sys = aout->sys; if (unlikely(sys->first_play_date == VLC_TICK_INVALID)) + { + assert(sys->first_pts == VLC_TICK_INVALID); sys->first_play_date = date; + sys->first_pts = block->i_pts; + } block_Release( block ); @@ -65,7 +70,8 @@ now - sys->last_timing_date >= VLC_TICK_FROM_SEC(1)) { sys->last_timing_date = now; - aout_TimingReport(aout, now, now - sys->first_play_date); + aout_TimingReport(aout, now, + now - sys->first_play_date + sys->first_pts); } } @@ -86,6 +92,7 @@ struct aout_sys *sys = aout->sys; sys->first_play_date = sys->last_timing_date = VLC_TICK_INVALID; + sys->first_pts = VLC_TICK_INVALID; sys->paused_date = VLC_TICK_INVALID; } @@ -135,6 +142,7 @@ if (!sys) return VLC_ENOMEM; sys->first_play_date = sys->last_timing_date = VLC_TICK_INVALID; + sys->first_pts = VLC_TICK_INVALID; sys->paused_date = VLC_TICK_INVALID; aout->start = Start;
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/audio_output/android/aaudio.c -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/audio_output/android/aaudio.c
Changed
@@ -80,6 +80,7 @@ size_t timing_report_last_written_bytes; /* Number of bytes to write before sending a timing report */ size_t timing_report_delay_bytes; + vlc_tick_t first_pts; }; /* dlopen/dlsym symbols */ @@ -454,7 +455,8 @@ /* Add the start silence to the system time and don't subtract * it from pos_ticks to avoid (unlikely) negatives ts */ system_ts += BytesToTicks(sys, sys->start_silence_bytes); - aout_stream_TimingReport(stream, system_ts, pos_ticks); + aout_stream_TimingReport(stream, system_ts, + pos_ticks + sys->first_pts); } memcpy(data, f->p_buffer, tocopy); @@ -620,6 +622,8 @@ { vlc_tick_t now = vlc_tick_now(); sys->first_play_date = date - BytesToTicks(sys, sys->frames_total_bytes); + if (sys->first_pts == VLC_TICK_INVALID) + sys->first_pts = frame->i_pts; if (sys->first_play_date > now) msg_Dbg(stream, "deferring start (%"PRId64" us)", @@ -713,7 +717,7 @@ sys->started = false; sys->draining = false; - sys->first_play_date = VLC_TICK_INVALID; + sys->first_pts = sys->first_play_date = VLC_TICK_INVALID; sys->start_silence_bytes = 0; sys->timing_report_last_written_bytes = 0; sys->timing_report_delay_bytes = 0; @@ -836,7 +840,7 @@ sys->underrun_bytes = 0; sys->started = false; sys->draining = false; - sys->first_play_date = VLC_TICK_INVALID; + sys->first_pts = sys->first_play_date = VLC_TICK_INVALID; sys->timing_report_last_written_bytes = 0; sys->timing_report_delay_bytes = 0;
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/audio_output/android/audiotrack.c -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/audio_output/android/audiotrack.c
Changed
@@ -119,6 +119,7 @@ size_t timing_report_last_written_bytes; /* Number of bytes to write before sending a timing report */ size_t timing_report_delay_bytes; + vlc_tick_t first_pts; } aout_sys_t; @@ -574,6 +575,7 @@ p_sys->i_samples_written = 0; p_sys->timing_report_last_written_bytes = 0; p_sys->timing_report_delay_bytes = 0; + p_sys->first_pts = VLC_TICK_INVALID; } static vlc_tick_t @@ -1216,7 +1218,8 @@ + (p_sys->timestamp.i_frame_wrap_count << 32); aout_stream_TimingReport( stream, frame_date_us, - FRAMES_TO_US( frame_pos ) ); + FRAMES_TO_US( frame_pos ) + + p_sys->first_pts ); return VLC_SUCCESS; } @@ -1412,6 +1415,9 @@ p_sys->i_chans_to_reorder, p_sys->p_chan_table, p_sys->fmt.i_format ); + if( p_sys->first_pts == VLC_TICK_INVALID ) + p_sys->first_pts = p_buffer->i_pts; + vlc_frame_ChainLastAppend(&p_sys->frame_last, p_buffer); vlc_cond_signal(&p_sys->thread_cond);
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/audio_output/apple/avsamplebuffer.m -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/audio_output/apple/avsamplebuffer.m
Changed
@@ -62,6 +62,7 @@ block_t **_outChainLast; int64_t _ptsSamples; + vlc_tick_t _firstPts; unsigned _sampleRate; BOOL _stopped; } @@ -204,6 +205,7 @@ self stopSyncRenderer; _ptsSamples = -1; + _firstPts = VLC_TICK_INVALID; } - (void)pause:(BOOL)pause date:(vlc_tick_t)date @@ -216,10 +218,12 @@ - (void)whenTimeObserved:(CMTime) time { + assert(_firstPts != VLC_TICK_INVALID); + if (time.value == 0) return; vlc_tick_t system_now = vlc_tick_now(); - vlc_tick_t pos_ticks = VLCAVSample CMTimeTotick:time; + vlc_tick_t pos_ticks = VLCAVSample CMTimeTotick:time + _firstPts; aout_TimingReport(_aout, system_now, pos_ticks); } @@ -266,6 +270,7 @@ weakSelf whenDataReady; }; + _firstPts = block->i_pts; const CMTime interval = CMTimeMake(CLOCK_FREQ, CLOCK_FREQ); _observer = _sync addPeriodicTimeObserverForInterval:interval queue:_timeQueue @@ -415,6 +420,7 @@ _stopped = NO; _ptsSamples = -1; + _firstPts = VLC_TICK_INVALID; _sampleRate = fmt->i_rate; _bytesPerFrame = desc.mBytesPerFrame;
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/audio_output/apple/coreaudio_common.c -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/audio_output/apple/coreaudio_common.c
Changed
@@ -214,6 +214,12 @@ } size_t bytes_copied = 0; + + /* Store the previous started state, in order to skip the timing report + * from the first render call, in order to avoid small timing + * discontinuities when starting. */ + bool was_started = p_sys->started; + while (bytes > 0) { vlc_frame_t *f = p_sys->p_out_chain; @@ -252,7 +258,8 @@ p_sys->timing_report_last_written_bytes += bytes_copied; - if (p_sys->timing_report_last_written_bytes >= + if (was_started && + p_sys->timing_report_last_written_bytes >= p_sys->timing_report_delay_bytes) { p_sys->timing_report_last_written_bytes = 0; @@ -261,7 +268,8 @@ p_sys->timing_report_delay_bytes = TicksToBytes(p_sys, TIMING_REPORT_DELAY_TICKS); - vlc_tick_t pos_ticks = BytesToTicks(p_sys, p_sys->i_total_bytes); + vlc_tick_t pos_ticks = BytesToTicks(p_sys, p_sys->i_total_bytes) + + p_sys->first_pts; aout_TimingReport(p_aout, end_ticks + GetLatency(p_aout), pos_ticks); } @@ -280,6 +288,7 @@ p_sys->i_out_size = 0; p_sys->i_total_bytes = 0; p_sys->first_play_date = VLC_TICK_INVALID; + p_sys->first_pts = VLC_TICK_INVALID; p_sys->timing_report_delay_bytes = p_sys->timing_report_last_written_bytes = 0; @@ -327,6 +336,8 @@ if (!p_sys->started) { vlc_tick_t now = vlc_tick_now(); + if (p_sys->first_pts == VLC_TICK_INVALID) + p_sys->first_pts = p_block->i_pts; p_sys->first_play_date = date - BytesToTicks(p_sys, p_sys->i_out_size); if (p_sys->first_play_date > now) @@ -367,6 +378,7 @@ p_sys->i_out_size = 0; p_sys->i_total_bytes = 0; p_sys->first_play_date = VLC_TICK_INVALID; + p_sys->first_pts = VLC_TICK_INVALID; p_sys->i_rate = fmt->i_rate; p_sys->i_bytes_per_frame = fmt->i_bytes_per_frame;
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/audio_output/apple/coreaudio_common.h -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/audio_output/apple/coreaudio_common.h
Changed
@@ -65,6 +65,7 @@ size_t i_out_size; /* Size written via the render callback */ uint64_t i_total_bytes; + vlc_tick_t first_pts; /* Date when the data callback should start to process audio */ vlc_tick_t first_play_date; /* Bytes written since the last timing report */
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/audio_output/pulse.c -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/audio_output/pulse.c
Changed
@@ -80,6 +80,7 @@ } fifo; pa_usec_t flush_rt; + vlc_tick_t first_pts; pa_volume_t volume_force; /**< Forced volume (stream must be NULL) */ pa_stream_flags_t flags_force; /**< Forced flags (stream must be NULL) */ @@ -286,7 +287,7 @@ if (sys->start_date_reached && likely(rt >= sys->flush_rt + silence_us)) { - vlc_tick_t audio_ts = VLC_TICK_0 + + vlc_tick_t audio_ts = sys->first_pts + VLC_TICK_FROM_US(rt - sys->flush_rt - silence_us); aout_TimingReport(aout, sys->timing_system_ts, audio_ts); @@ -650,6 +651,9 @@ if (!sys->start_date_reached) { + if (sys->first_pts == VLC_TICK_INVALID) + sys->first_pts = block->i_pts; + vlc_tick_t now = vlc_tick_now(); sys->start_date = date - pa_bytes_to_usec(sys->fifo.size, ss); @@ -737,6 +741,7 @@ const pa_timing_info *ti = pa_stream_get_timing_info(s); if (ti != NULL && !ti->read_index_corrupt) sys->flush_rt = pa_bytes_to_usec(ti->read_index, ss); + sys->first_pts = VLC_TICK_INVALID; pa_threaded_mainloop_unlock(sys->mainloop); } @@ -981,6 +986,7 @@ sys->draining = false; pa_cvolume_init(&sys->cvolume); sys->flush_rt = 0; + sys->first_pts = VLC_TICK_INVALID; sys->start_date_reached = false; sys->start_date = VLC_TICK_INVALID;
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/audio_output/wasapi.c -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/audio_output/wasapi.c
Changed
@@ -125,6 +125,7 @@ UINT64 written; /**< Frames written to the buffer */ UINT32 frames; /**< Total buffer size (frames) */ bool s24s32; /**< Output configured as S24N, but input as S32N */ + vlc_tick_t first_pts; } aout_stream_sys_t; /*** VLC audio output callbacks ***/ @@ -157,7 +158,8 @@ } aout_stream_TimingReport(s, VLC_TICK_FROM_MSFTIME(qpcpos), - vlc_tick_from_frac(pos, clock_freq)); + vlc_tick_from_frac(pos, clock_freq) + + sys->first_pts); aout_stream_TriggerTimer(s, TimingReport, vlc_tick_now() + TIMING_REPORT_DELAY); @@ -231,6 +233,9 @@ goto out; } + if (sys->first_pts == VLC_TICK_INVALID) + sys->first_pts = block->i_pts; + if (sys->chans_to_reorder) aout_ChannelReorder(block->p_buffer, block->i_buffer, sys->chans_to_reorder, sys->chans_table, sys->format); @@ -354,6 +359,7 @@ else hr = S_OK; + sys->first_pts = VLC_TICK_INVALID; if (SUCCEEDED(hr)) { msg_Dbg(s, "reset"); @@ -926,6 +932,7 @@ CoTaskMemFree(pwf_mix); *pfmt = fmt; sys->written = 0; + sys->first_pts = VLC_TICK_INVALID; s->sys = sys; s->play = Play; s->pause = Pause;
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/codec/videotoolbox/decoder.c -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/codec/videotoolbox/decoder.c
Changed
@@ -2125,10 +2125,16 @@ p_sys->vtsession_status = vtsession_status; goto end; } - if (unlikely(!imageBuffer)) + + if (!imageBuffer) { - msg_Err(p_dec, "critical: null imageBuffer with a valid status"); - p_sys->vtsession_status = VTSESSION_STATUS_ABORT; + if (unlikely((infoFlags & kVTDecodeInfo_FrameDropped) != kVTDecodeInfo_FrameDropped)) + { + msg_Err(p_dec, "critical: null imageBuffer for a non-dropped frame with valid status"); + p_sys->vtsession_status = VTSESSION_STATUS_ABORT; + } else { + msg_Dbg(p_dec, "decoder dropped frame"); + } goto end; }
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/UI/VLCDetachedAudioWindow.xib -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/UI/VLCDetachedAudioWindow.xib
Changed
@@ -12,8 +12,8 @@ </customObject> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/> - <window title="VLC media player" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="detachedaudiowindow" animationBehavior="default" titleVisibility="hidden" id="2" userLabel="Detached Audio Window" customClass="VLCDetachedAudioWindow"> - <windowStyleMask key="styleMask" resizable="YES" fullSizeContentView="YES"/> + <window title="VLC media player" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="detachedaudiowindow" animationBehavior="default" titlebarAppearsTransparent="YES" titleVisibility="hidden" id="2" userLabel="Detached Audio Window" customClass="VLCDetachedAudioWindow"> + <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" fullSizeContentView="YES"/> <windowPositionMask key="initialPositionMask" leftStrut="YES" topStrut="YES"/> <rect key="contentRect" x="91" y="467" width="239" height="239"/> <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1177"/> @@ -28,55 +28,53 @@ <constraint firstAttribute="width" secondItem="63" secondAttribute="height" multiplier="1:1" id="RxG-T1-BEQ"/> </constraints> </customView> - <customView hidden="YES" translatesAutoresizingMaskIntoConstraints="NO" id="s7h-2z-AKB"> - <rect key="frame" x="0.0" y="0.0" width="239" height="233"/> + <customView wantsLayer="YES" translatesAutoresizingMaskIntoConstraints="NO" id="s7h-2z-AKB" customClass="VLCMainVideoViewOverlayView"> + <rect key="frame" x="0.0" y="0.0" width="239" height="239"/> <subviews> - <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="F6N-G1-ay4" customClass="VLCCustomWindowCloseButton"> - <rect key="frame" x="8" y="217" width="14" height="16"/> - <buttonCell key="cell" type="bevel" bezelStyle="rounded" image="window-close" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="WwK-DC-6gz" customClass="VLCWindowButtonCell"> - <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> - <font key="font" metaFont="system"/> - </buttonCell> - <constraints> - <constraint firstAttribute="height" constant="16" id="h5F-zc-xQI"/> - <constraint firstAttribute="width" constant="14" id="u5l-1z-YIF"/> - </constraints> - </button> - <customView translatesAutoresizingMaskIntoConstraints="NO" id="5" customClass="VLCBottomBarView"> - <rect key="frame" x="0.0" y="0.0" width="239" height="65"/> + <customView appearanceType="darkAqua" translatesAutoresizingMaskIntoConstraints="NO" id="5" customClass="VLCBottomBarView"> + <rect key="frame" x="0.0" y="0.0" width="239" height="77"/> <subviews> <customView translatesAutoresizingMaskIntoConstraints="NO" id="65" customClass="VLCDragDropView"> - <rect key="frame" x="0.0" y="0.0" width="239" height="65"/> + <rect key="frame" x="0.0" y="0.0" width="239" height="77"/> <subviews> <customView translatesAutoresizingMaskIntoConstraints="NO" id="Vae-cT-EEI" userLabel="Play controls group"> - <rect key="frame" x="77" y="10" width="85" height="23"/> + <rect key="frame" x="72" y="10" width="96" height="32"/> <subviews> <button translatesAutoresizingMaskIntoConstraints="NO" id="11"> - <rect key="frame" x="0.0" y="0.0" width="29" height="23"/> - <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="backward-3btns" imagePosition="only" alignment="center" alternateImage="backward-3btns-pressed" continuous="YES" enabled="NO" imageScaling="proportionallyUpOrDown" id="14"> + <rect key="frame" x="0.0" y="-1.5" width="32" height="35"/> + <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="backward.fill" catalog="system" imagePosition="only" alignment="center" alternateImage="backward.fill" controlSize="large" continuous="YES" enabled="NO" imageScaling="proportionallyUpOrDown" id="14"> <behavior key="behavior" lightByContents="YES"/> - <font key="font" metaFont="label"/> + <font key="font" metaFont="system"/> </buttonCell> + <constraints> + <constraint firstAttribute="width" secondItem="11" secondAttribute="height" multiplier="1:1" id="09v-B2-ddE"/> + </constraints> <connections> <action selector="bwd:" target="3" id="56"/> </connections> </button> <button translatesAutoresizingMaskIntoConstraints="NO" id="10"> - <rect key="frame" x="29" y="0.0" width="27" height="23"/> - <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="play" imagePosition="only" alignment="center" alternateImage="play-pressed" imageScaling="proportionallyUpOrDown" id="15"> + <rect key="frame" x="32" y="-3" width="32" height="38"/> + <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="play.circle.fill" catalog="system" imagePosition="only" alignment="center" alternateImage="play.circle.fill" controlSize="large" imageScaling="proportionallyUpOrDown" id="15"> <behavior key="behavior" lightByContents="YES"/> - <font key="font" metaFont="titleBar" size="12" textStyle="headline"/> + <font key="font" metaFont="system"/> </buttonCell> + <constraints> + <constraint firstAttribute="width" secondItem="10" secondAttribute="height" multiplier="1:1" id="aTD-32-d4n"/> + </constraints> <connections> <action selector="play:" target="3" id="39"/> </connections> </button> <button translatesAutoresizingMaskIntoConstraints="NO" id="12"> - <rect key="frame" x="56" y="0.0" width="29" height="23"/> - <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="forward-3btns" imagePosition="only" alignment="center" alternateImage="forward-3btns-pressed" continuous="YES" enabled="NO" imageScaling="proportionallyUpOrDown" id="13"> + <rect key="frame" x="64" y="-1.5" width="32" height="35"/> + <buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="forward.fill" catalog="system" imagePosition="only" alignment="center" alternateImage="forward.fill" controlSize="large" continuous="YES" enabled="NO" imageScaling="proportionallyUpOrDown" id="13"> <behavior key="behavior" lightByContents="YES"/> - <font key="font" metaFont="label"/> + <font key="font" metaFont="system"/> </buttonCell> + <constraints> + <constraint firstAttribute="width" secondItem="12" secondAttribute="height" multiplier="1:1" id="Naf-xP-Ez9"/> + </constraints> <connections> <action selector="fwd:" target="3" id="51"/> </connections> @@ -87,7 +85,7 @@ <constraint firstItem="10" firstAttribute="left" secondItem="11" secondAttribute="right" id="496-Ip-nTd"/> <constraint firstItem="10" firstAttribute="top" secondItem="Vae-cT-EEI" secondAttribute="top" id="9Kr-xx-Ssf"/> <constraint firstAttribute="right" secondItem="12" secondAttribute="right" id="KOc-oW-4iH"/> - <constraint firstAttribute="height" constant="23" id="bN7-k9-7Iy"/> + <constraint firstAttribute="height" constant="32" id="bN7-k9-7Iy"/> <constraint firstAttribute="bottom" secondItem="11" secondAttribute="bottom" id="fFe-7J-ver"/> <constraint firstItem="12" firstAttribute="top" secondItem="Vae-cT-EEI" secondAttribute="top" id="gwB-yN-SK0"/> <constraint firstAttribute="bottom" secondItem="12" secondAttribute="bottom" id="l2h-EI-MAG"/> @@ -97,7 +95,7 @@ </constraints> </customView> <slider hidden="YES" horizontalHuggingPriority="200" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="20" customClass="VLCSlider"> - <rect key="frame" x="8" y="41" width="176" height="18"/> + <rect key="frame" x="8" y="50" width="176" height="18"/> <constraints> <constraint firstAttribute="height" constant="14" id="MYp-CS-yPe"/> </constraints> @@ -108,15 +106,18 @@ <action selector="timeSliderAction:" target="3" id="46"/> </connections> </slider> - <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="VLCTimeField"> - <rect key="frame" x="185" y="44" width="46" height="13"/> + <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9" customClass="VLCTimeField"> + <rect key="frame" x="185" y="53" width="46" height="13"/> <constraints> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="42" id="EvZ-Sy-m25"/> <constraint firstAttribute="height" constant="13" id="LYT-Sd-Gf6"/> </constraints> + <shadow key="shadow" blurRadius="1"> + <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </shadow> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" state="on" alignment="center" title="00:00" id="16"> - <font key="font" metaFont="label"/> - <color key="textColor" white="0.25" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> + <font key="font" metaFont="systemBold" size="10"/> + <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> @@ -137,13 +138,14 @@ <constraint firstItem="65" firstAttribute="leading" secondItem="5" secondAttribute="leading" id="84j-is-ZZ4"/> <constraint firstAttribute="bottom" secondItem="65" secondAttribute="bottom" id="WrS-PS-vpi"/> <constraint firstItem="65" firstAttribute="top" secondItem="5" secondAttribute="top" id="ecn-UJ-dvK"/> - <constraint firstAttribute="height" constant="65" id="z2X-5w-wme"/> + <constraint firstAttribute="height" constant="77" id="z2X-5w-wme"/> </constraints> + <shadow key="shadow" blurRadius="10"> + <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </shadow> </customView> </subviews> <constraints> - <constraint firstItem="F6N-G1-ay4" firstAttribute="top" secondItem="s7h-2z-AKB" secondAttribute="top" id="3fm-nY-Pva"/> - <constraint firstItem="F6N-G1-ay4" firstAttribute="leading" secondItem="s7h-2z-AKB" secondAttribute="leading" constant="8" id="DxB-T0-68G"/> <constraint firstAttribute="trailing" secondItem="5" secondAttribute="trailing" id="Vh6-w4-RpJ"/> <constraint firstItem="5" firstAttribute="leading" secondItem="s7h-2z-AKB" secondAttribute="leading" id="aOM-Yt-uR4"/> <constraint firstAttribute="bottom" secondItem="5" secondAttribute="bottom" id="sVp-W4-nlt"/> @@ -167,14 +169,14 @@ <constraint firstAttribute="trailing" secondItem="63" secondAttribute="trailing" id="b8X-Kc-BfD"/> <constraint firstAttribute="bottom" secondItem="s7h-2z-AKB" secondAttribute="bottom" id="d58-lr-6o8"/> <constraint firstAttribute="trailing" secondItem="s7h-2z-AKB" secondAttribute="trailing" id="dB2-xi-SzA"/> - <constraint firstItem="s7h-2z-AKB" firstAttribute="top" secondItem="4" secondAttribute="top" constant="6" id="plq-T3-bmm"/> + <constraint firstItem="s7h-2z-AKB" firstAttribute="top" secondItem="4" secondAttribute="top" id="plq-T3-bmm"/> </constraints> </view> <connections> <outlet property="bottomBarView" destination="5" id="xZs-ha-Bmg"/> <outlet property="controlsBar" destination="3" id="69"/> <outlet property="imageView" destination="63" id="xYd-xT-wUa"/> - <outlet property="wrapperView" destination="s7h-2z-AKB" id="Vze-9X-Oxo"/> + <outlet property="overlayView" destination="s7h-2z-AKB" id="VGk-aw-I4j"/> </connections> <point key="canvasLocation" x="138.5" y="146.5"/> </window> @@ -190,12 +192,8 @@ </customObject> </objects> <resources> - <image name="backward-3btns" width="29" height="23"/> - <image name="backward-3btns-pressed" width="29" height="23"/> - <image name="forward-3btns" width="29" height="23"/> - <image name="forward-3btns-pressed" width="29" height="23"/> - <image name="play" width="27" height="23"/> - <image name="play-pressed" width="27" height="23"/> - <image name="window-close" width="14" height="16"/> + <image name="backward.fill" catalog="system" width="19" height="12"/> + <image name="forward.fill" catalog="system" width="19" height="12"/> + <image name="play.circle.fill" catalog="system" width="15" height="15"/> </resources> </document>
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/UI/VLCLibraryAudioGroupHeaderView.xib -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/UI/VLCLibraryAudioGroupHeaderView.xib
Changed
@@ -23,7 +23,7 @@ <subviews> <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VGp-RV-Jl4"> <rect key="frame" x="-2" y="6" width="144" height="28"/> - <textFieldCell key="cell" lineBreakMode="clipping" title="Audio Group" id="96R-yZ-Dap"> + <textFieldCell key="cell" lineBreakMode="truncatingTail" title="Audio Group" id="96R-yZ-Dap"> <font key="font" metaFont="systemBold" size="24"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/UI/VLCLibraryHeroView.xib -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/UI/VLCLibraryHeroView.xib
Changed
@@ -29,7 +29,7 @@ <stackView distribution="fill" orientation="vertical" alignment="leading" spacing="5" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="U3j-Zx-fFf"> <rect key="frame" x="20" y="20" width="250" height="86"/> <subviews> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kFW-i6-3hg"> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kFW-i6-3hg"> <rect key="frame" x="-2" y="58" width="103" height="28"/> <shadow key="shadow" blurRadius="20"> <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> @@ -40,19 +40,19 @@ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="aVp-p4-DHX"> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="1000" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="aVp-p4-DHX"> <rect key="frame" x="-2" y="33" width="139" height="20"/> <shadow key="shadow" blurRadius="20"> <color key="color" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> </shadow> - <textFieldCell key="cell" controlSize="large" title="Item detail string" id="P7c-bg-dPX"> + <textFieldCell key="cell" controlSize="large" lineBreakMode="truncatingTail" truncatesLastVisibleLine="YES" title="Item detail string" usesSingleLineMode="YES" id="P7c-bg-dPX"> <font key="font" metaFont="systemSemibold" size="17"/> <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="displayP3"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> - <button verticalHuggingPriority="1000" verticalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="5zZ-VM-Lb9"> - <rect key="frame" x="-3" y="-4" width="256" height="35"/> + <button verticalHuggingPriority="1000" horizontalCompressionResistancePriority="250" verticalCompressionResistancePriority="1000" translatesAutoresizingMaskIntoConstraints="NO" id="5zZ-VM-Lb9"> + <rect key="frame" x="-3" y="-4" width="179" height="35"/> <buttonCell key="cell" type="bevel" title=" Resume playing" bezelStyle="regularSquare" image="play.circle.fill" catalog="system" imagePosition="leading" alignment="left" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="639-6i-zsD"> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <font key="font" metaFont="systemSemibold" size="17"/> @@ -86,6 +86,7 @@ <constraint firstItem="qdP-As-qZ0" firstAttribute="top" secondItem="LPV-K6-7AE" secondAttribute="top" id="9aA-Ma-Vvy"/> <constraint firstItem="U3j-Zx-fFf" firstAttribute="leading" secondItem="LPV-K6-7AE" secondAttribute="leading" constant="20" symbolic="YES" id="A9P-6v-TYB"/> <constraint firstAttribute="bottom" secondItem="U3j-Zx-fFf" secondAttribute="bottom" constant="20" id="GKS-hS-EhI"/> + <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="U3j-Zx-fFf" secondAttribute="trailing" constant="20" id="Nzn-Md-2Xx"/> <constraint firstItem="GoN-QI-mru" firstAttribute="leading" secondItem="LPV-K6-7AE" secondAttribute="leading" constant="20" id="UTF-IS-5xp"/> <constraint firstItem="U3j-Zx-fFf" firstAttribute="top" relation="greaterThanOrEqual" secondItem="GoN-QI-mru" secondAttribute="bottom" constant="20" id="ZCB-XT-8xc"/> <constraint firstAttribute="bottom" secondItem="qdP-As-qZ0" secondAttribute="bottom" id="lyx-Ea-nZ1"/>
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/UI/VLCLibraryWindow.xib -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/UI/VLCLibraryWindow.xib
Changed
@@ -927,7 +927,7 @@ <splitView arrangesAllSubviews="NO" dividerStyle="thin" vertical="YES" translatesAutoresizingMaskIntoConstraints="NO" id="YHF-re-hif"> <rect key="frame" x="0.0" y="0.0" width="714" height="390"/> <subviews> - <scrollView fixedFrame="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="24" horizontalPageScroll="10" verticalLineScroll="24" verticalPageScroll="10" usesPredominantAxisScrolling="NO" id="KW4-fp-jy1"> + <scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="24" horizontalPageScroll="10" verticalLineScroll="24" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="KW4-fp-jy1"> <rect key="frame" x="0.0" y="0.0" width="298" height="390"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <clipView key="contentView" id="4uw-9H-2bN">
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/library/VLCLibraryCollectionViewItem.m -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
Changed
@@ -227,7 +227,7 @@ if(actualItem isKindOfClass:VLCMediaLibraryMediaItem class) { VLCMediaLibraryMediaItem * const mediaItem = (VLCMediaLibraryMediaItem *)actualItem; - if (mediaItem.mediaType == VLC_ML_MEDIA_TYPE_VIDEO ||Â mediaItem.mediaType == VLC_ML_MEDIA_TYPE_UNKNOWN) { + if (mediaItem.mediaType == VLC_ML_MEDIA_TYPE_VIDEO || mediaItem.mediaType == VLC_ML_MEDIA_TYPE_UNKNOWN) { VLCMediaLibraryTrack * const videoTrack = mediaItem.firstVideoTrack; self showVideoSizeIfNeededForWidth:videoTrack.videoWidth andHeight:videoTrack.videoHeight; @@ -297,6 +297,11 @@ self.collectionView.dataSource conformsToProtocol:@protocol(VLCLibraryCollectionViewDataSource)) { NSObject<VLCLibraryCollectionViewDataSource> * const dataSource = (NSObject<VLCLibraryCollectionViewDataSource> *)self.collectionView.dataSource; NSIndexPath * const indexPath = dataSource indexPathForLibraryItem:self.representedItem.item; + if (indexPath == nil) { + NSLog(@"Received nil indexPath for item %@!", self.representedItem.item.displayString); + return; + } + NSSet<NSIndexPath *> * const indexPathSet = NSSet setWithObject:indexPath; self.collectionView deselectItemsAtIndexPaths:indexPathSet;
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/library/VLCLibraryCollectionViewSupplementaryElementView.m -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/library/VLCLibraryCollectionViewSupplementaryElementView.m
Changed
@@ -39,7 +39,7 @@ self = super initWithFrame:frameRect; if (self) { self.font = NSFont.VLClibrarySectionHeaderFont; - self.textColor = self.shouldShowDarkAppearance ? NSColor.VLClibraryDarkTitleColor : NSColor.VLClibraryLightTitleColor; + self.textColor = NSColor.headerTextColor; self.editable = NO; self.selectable = NO; self.bordered = NO; @@ -50,9 +50,4 @@ return self; } -- (void)viewDidChangeEffectiveAppearance -{ - self.textColor = self.shouldShowDarkAppearance ? NSColor.VLClibraryDarkTitleColor : NSColor.VLClibraryLightTitleColor; -} - @end
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/playlist/VLCPlaylistTableCellView.m -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/playlist/VLCPlaylistTableCellView.m
Changed
@@ -84,9 +84,9 @@ }; const BOOL validArtistString = item.artistName && item.artistName.length > 0; - const BOOL validAlbumString = item.albumName && item.albumName > 0; + const BOOL validAlbumString = item.albumName && item.albumName.length > 0; - NSString *songDetailString; + NSString *songDetailString = @""; if (validArtistString && validAlbumString) { songDetailString = NSString stringWithFormat:@"%@ · %@", item.artistName, item.albumName;
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/views/VLCBottomBarView.h -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/views/VLCBottomBarView.h
Changed
@@ -24,4 +24,6 @@ @interface VLCBottomBarView : NSView +@property (readwrite, assign) BOOL drawBorder; + @end
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/views/VLCBottomBarView.m -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/views/VLCBottomBarView.m
Changed
@@ -66,12 +66,17 @@ { self.wantsLayer = YES; self.needsDisplay = YES; + self.drawBorder = YES; } - (void)drawRect:(NSRect)dirtyRect { super drawRect:dirtyRect; + if (!self.drawBorder) { + return; + } + const NSRect barFrame = self.frame; NSBezierPath * const separatorPath = NSBezierPath.bezierPath; separatorPath moveToPoint:NSMakePoint(NSMinX(barFrame), NSMaxY(barFrame) - 0.5);
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/views/VLCTrackingView.h -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/views/VLCTrackingView.h
Changed
@@ -24,11 +24,15 @@ NS_ASSUME_NONNULL_BEGIN +typedef void(^EnterExitBlock)(void); + @interface VLCTrackingView : NSView @property (readwrite) BOOL animatesTransition; @property (readwrite, assign, nullable) NSView *viewToHide; // Hide when mouse out @property (readwrite, assign, nullable) NSView *viewToShow; // Show when mouse out +@property (readwrite, strong, nullable) EnterExitBlock mouseEnteredBlock; +@property (readwrite, strong, nullable) EnterExitBlock mouseExitedBlock; @end
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/views/VLCTrackingView.m -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/views/VLCTrackingView.m
Changed
@@ -65,12 +65,18 @@ { _mouseIn = YES; self performTransition; + if (self.mouseEnteredBlock) { + self.mouseEnteredBlock(); + } } - (void)handleMouseExit { _mouseIn = NO; self performTransition; + if (self.mouseExitedBlock) { + self.mouseExitedBlock(); + } } - (void)mouseEntered:(NSEvent *)event
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/windows/VLCDetachedAudioWindow.h -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/windows/VLCDetachedAudioWindow.h
Changed
@@ -26,12 +26,13 @@ @class VLCControlsBarCommon; @class VLCImageView; @class VLCBottomBarView; +@class VLCMainVideoViewOverlayView; NS_ASSUME_NONNULL_BEGIN @interface VLCDetachedAudioWindow : VLCWindow -@property (nonatomic, weak) IBOutlet NSView *wrapperView; +@property (nonatomic, weak) IBOutlet VLCMainVideoViewOverlayView *overlayView; @property (nonatomic, weak) IBOutlet VLCImageView *imageView; @property (nonatomic, weak) IBOutlet VLCControlsBarCommon *controlsBar; @property (nonatomic, weak) IBOutlet VLCBottomBarView *bottomBarView;
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/windows/VLCDetachedAudioWindow.m -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/windows/VLCDetachedAudioWindow.m
Changed
@@ -38,6 +38,8 @@ #import "windows/controlsbar/VLCControlsBarCommon.h" +#import "windows/video/VLCMainVideoViewOverlayView.h" + @interface VLCDetachedAudioWindow() { VLCPlayerController *_playerController; @@ -49,15 +51,29 @@ - (void)awakeFromNib { self.title = @""; - self.imageView.cropsImagesToRoundedCorners = NO; _playerController = VLCMain.sharedInstance.playlistController.playerController; - VLCTrackingView *trackingView = self.contentView; - trackingView.viewToHide = self.wrapperView; + + VLCTrackingView * const trackingView = self.contentView; + trackingView.viewToHide = self.overlayView; trackingView.animatesTransition = YES; + trackingView.mouseEnteredBlock = ^{ + self.styleMask |= NSWindowStyleMaskTitled; + }; + trackingView.mouseExitedBlock = ^{ + self.styleMask &= ~NSWindowStyleMaskTitled; + }; + + self.overlayView.drawGradientForTopControls = YES; + self.overlayView.darkestGradientColor = NSColor colorWithCalibratedWhite:0.0 alpha:0.8; + + self.bottomBarView.drawBorder = NO; - NSNotificationCenter *notificationCenter = NSNotificationCenter.defaultCenter; - notificationCenter addObserver:self selector:@selector(inputItemChanged:) name:VLCPlayerCurrentMediaItemChanged object:nil; + NSNotificationCenter * const notificationCenter = NSNotificationCenter.defaultCenter; + notificationCenter addObserver:self + selector:@selector(inputItemChanged:) + name:VLCPlayerCurrentMediaItemChanged + object:nil; self inputItemChanged:nil; } @@ -69,7 +85,7 @@ - (void)inputItemChanged:(NSNotification *)aNotification { - VLCInputItem *currentInput = _playerController.currentMedia; + VLCInputItem * const currentInput = _playerController.currentMedia; if (currentInput) { self.imageView setImageURL:currentInput.artworkURL placeholderImage:NSImage imageNamed:@"noart.png"; } else {
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/windows/video/VLCMainVideoViewOverlayView.h -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/windows/video/VLCMainVideoViewOverlayView.h
Changed
@@ -29,6 +29,7 @@ @interface VLCMainVideoViewOverlayView : NSView @property (readwrite, assign) BOOL drawGradientForTopControls; +@property (readwrite, strong) NSColor *darkestGradientColor; @end
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/macosx/windows/video/VLCMainVideoViewOverlayView.m -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/macosx/windows/video/VLCMainVideoViewOverlayView.m
Changed
@@ -22,24 +22,28 @@ #import "VLCMainVideoViewOverlayView.h" + @implementation VLCMainVideoViewOverlayView -- (void)drawRect:(NSRect)dirtyRect { - super drawRect:dirtyRect; +- (void)awakeFromNib +{ + self.darkestGradientColor = NSColor colorWithCalibratedWhite:0 alpha:0.4; +} - // Drawing code here. - NSColor *_darkestGradientColor = NSColor colorWithWhite:0 alpha:0.4; +- (void)drawRect:(NSRect)dirtyRect +{ + super drawRect:dirtyRect; NSGradient *gradient; - if (_drawGradientForTopControls) { - gradient = NSGradient alloc initWithColorsAndLocations:_darkestGradientColor, 0., - NSColor clearColor, 0.5, - _darkestGradientColor, 1., + if (self.drawGradientForTopControls) { + gradient = NSGradient alloc initWithColorsAndLocations:self.darkestGradientColor, 0., + NSColor.clearColor, 0.5, + self.darkestGradientColor, 1., nil; } else { - gradient = NSGradient alloc initWithColorsAndLocations:_darkestGradientColor, 0, - NSColor clearColor, 1., + gradient = NSGradient alloc initWithColorsAndLocations:self.darkestGradientColor, 0., + NSColor.clearColor, 1., nil; }
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/maininterface/compositor_dcomp.cpp -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/maininterface/compositor_dcomp.cpp
Changed
@@ -237,11 +237,15 @@ connect(quickViewPtr, &QQuickWindow::sceneGraphInitialized, &eventLoop, - &eventLoop, &appropriateGraphicsApi() { + &eventLoop, &appropriateGraphicsApi, quickViewPtr() { if (!(QQuickWindow::graphicsApi() == QSGRendererInterface::Direct3D11 || QQuickWindow::graphicsApi() == QSGRendererInterface::Direct3D12)) { appropriateGraphicsApi = false; } + else + { + quickViewPtr->show(); + } eventLoop.quit(); }, Qt::SingleShotConnection); @@ -260,8 +264,6 @@ const bool ret = commonGUICreate(quickViewPtr, quickViewPtr, flags); - m_quickView->show(); - if (!m_quickView->isSceneGraphInitialized()) eventLoop.exec(); return (ret && appropriateGraphicsApi);
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/maininterface/compositor_wayland.cpp -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/maininterface/compositor_wayland.cpp
Changed
@@ -109,7 +109,7 @@ m_qmlView->setResizeMode(QQuickView::SizeRootObjectToView); m_qmlView->setColor(QColor(Qt::transparent)); - m_qmlView->show(); + m_qmlView->create(); QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface(); void* interfaceSurface = nativeInterface->nativeResourceForWindow("surface", m_qmlView.get()); @@ -118,8 +118,13 @@ m_waylandImpl->setupInterface(m_waylandImpl, interfaceSurface, dprForWindow(m_qmlView.get())); - return commonGUICreate(m_qmlView.get(), m_qmlView.get(), - CompositorVideo::CAN_SHOW_PIP | CompositorVideo::HAS_ACRYLIC); + const bool ret = commonGUICreate(m_qmlView.get(), m_qmlView.get(), + CompositorVideo::CAN_SHOW_PIP | CompositorVideo::HAS_ACRYLIC); + + if (ret) + m_qmlView->show(); + + return ret; } QWindow* CompositorWayland::interfaceMainWindow() const
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/maininterface/compositor_win7.cpp -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/maininterface/compositor_win7.cpp
Changed
@@ -106,11 +106,14 @@ connect(m_nativeEventFilter.get(), &Win7NativeEventFilter::windowStyleChanged, this, &CompositorWin7::resetVideoZOrder); - m_qmlView->show(); - m_qmlWindowHWND = (HWND)m_qmlView->winId(); - return commonGUICreate(m_qmlView.get(), m_qmlView.get(), CompositorVideo::CAN_SHOW_PIP); + const bool ret = commonGUICreate(m_qmlView.get(), m_qmlView.get(), CompositorVideo::CAN_SHOW_PIP); + + if (ret) + m_qmlView->show(); + + return ret; } void CompositorWin7::destroyMainInterface()
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/maininterface/compositor_x11.cpp -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/maininterface/compositor_x11.cpp
Changed
@@ -204,15 +204,15 @@ m_qmlView->setFlag(Qt::WindowType::WindowTransparentForInput); m_qmlView->setParent(m_renderWindow.get()); - m_qmlView->winId(); - m_qmlView->show(); - + m_qmlView->create(); CompositorVideo::Flags flags = CompositorVideo::CAN_SHOW_PIP | HAS_ACRYLIC; if (m_renderWindow->supportExtendedFrame()) flags |= CompositorVideo::HAS_EXTENDED_FRAME; if (!commonGUICreate(m_renderWindow.get(), m_qmlView.get(), flags)) return false; + m_qmlView->show(); + if (m_blurBehind) m_renderWindow->m_hasAcrylic = true;
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/maininterface/qml/MainViewLoader.qml -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/maininterface/qml/MainViewLoader.qml
Changed
@@ -53,6 +53,7 @@ property var pagePrefix: // optional, loaded when isLoading is true + // only loaded on initial load, when count is less then 1 property Component loadingComponent: null // NOTE: Sometimes the model has no 'loading' property. @@ -85,9 +86,10 @@ // NOTE: We have to use a Component here. When using a var the onCurrentComponentChanged event // gets called multiple times even when the currentComponent stays the same. property Component currentComponent: { - if (isLoading) { + if (isLoading && count < 1) { if (loadingComponent) return loadingComponent + // fall through to load 'grid' or 'list' view } else if (count === 0) return emptyLabel @@ -119,7 +121,7 @@ _updateView() // NOTE: This call is useful to avoid a binding loop on currentComponent. - currentComponentChanged.connect(function() { _updateView() }) + currentComponentChanged.connect(_updateView) } onModelChanged: resetFocus() @@ -169,16 +171,17 @@ function _updateView() { // NOTE: When the currentItem is null we default to the StackView focusReason. if (currentItem && currentItem.activeFocus) - _applyView(currentItem.focusReason) + _loadView(currentItem.focusReason) else if (activeFocus) - _applyView(focusReason) + _loadView(focusReason) else - replace(null, currentComponent) + _loadView() } - function _applyView(reason) { + function _loadView(reason) { replace(null, currentComponent) - setCurrentItemFocus(reason) + if (typeof reason !== "undefined") + setCurrentItemFocus(reason) } }
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/maininterface/videosurface.cpp -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/maininterface/videosurface.cpp
Changed
@@ -210,12 +210,6 @@ setAcceptedMouseButtons(Qt::AllButtons); setFlag(ItemAcceptsInputMethod, true); setFlag(ItemHasContents, true); - - connect(this, &QQuickItem::xChanged, this, &VideoSurface::onSurfacePositionChanged); - connect(this, &QQuickItem::yChanged, this, &VideoSurface::onSurfacePositionChanged); - connect(this, &QQuickItem::widthChanged, this, &VideoSurface::onSurfaceSizeChanged); - connect(this, &QQuickItem::heightChanged, this, &VideoSurface::onSurfaceSizeChanged); - connect(this, &VideoSurface::enabledChanged, this, &VideoSurface::updatePositionAndSize); } MainCtx* VideoSurface::getCtx() @@ -365,6 +359,19 @@ return node; } +void VideoSurface::componentComplete() +{ + ViewBlockingRectangle::componentComplete(); + + connect(this, &QQuickItem::xChanged, this, &VideoSurface::onSurfacePositionChanged); + connect(this, &QQuickItem::yChanged, this, &VideoSurface::onSurfacePositionChanged); + connect(this, &QQuickItem::widthChanged, this, &VideoSurface::onSurfaceSizeChanged); + connect(this, &QQuickItem::heightChanged, this, &VideoSurface::onSurfaceSizeChanged); + connect(this, &VideoSurface::enabledChanged, this, &VideoSurface::updatePositionAndSize); + + updatePositionAndSize(); +} + void VideoSurface::onProviderVideoChanged(bool hasVideo) { if (!hasVideo)
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/maininterface/videosurface.hpp -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/maininterface/videosurface.hpp
Changed
@@ -128,6 +128,8 @@ QSGNode* updatePaintNode(QSGNode *, QQuickItem::UpdatePaintNodeData *) override; + void componentComplete() override; + signals: void ctxChanged(MainCtx*); void surfaceSizeChanged(QSizeF);
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/medialibrary/qml/VideoAllSubDisplay.qml -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/medialibrary/qml/VideoAllSubDisplay.qml
Changed
@@ -37,7 +37,7 @@ property SortMenuVideo sortMenu: SortMenuVideo { ctx: MainCtx - onGrouping: (groupping) => { MainCtx.grouping = grouping } + onGrouping: (grouping) => { MainCtx.grouping = grouping } } // Private
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/network/networkmediamodel.hpp -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/network/networkmediamodel.hpp
Changed
@@ -164,7 +164,6 @@ inline ItemType getType() const { return m_type; } inline bool isIndexed() const { return m_indexed; } inline bool canBeIndexed() const { return m_canBeIndexed; } - int getCount() const; Q_INVOKABLE bool insertIntoPlaylist( const QModelIndexList& itemIdList, ssize_t playlistIndex ); Q_INVOKABLE bool addToPlaylist( int index );
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/network/qml/BrowseTreeDisplay.qml -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/network/qml/BrowseTreeDisplay.qml
Changed
@@ -38,9 +38,6 @@ readonly property int contentLeftMargin: currentItem?.contentLeftMargin ?? 0 readonly property int contentRightMargin: currentItem?.contentRightMargin ?? 0 - // 'loading' property is not available with NetworkDevicesModel - readonly property bool loading: model?.loading ?? false - // fixme remove this property Item _currentView: currentItem @@ -60,7 +57,7 @@ grid: gridComponent list: tableComponent - loadingComponent: emptyLabelComponent + loadingComponent: busyIndicatorComponent emptyLabel: emptyLabelComponent @@ -316,98 +313,113 @@ Component { id: emptyLabelComponent - FocusScope { - id: focusScope + StandardView { + view: Widgets.EmptyLabelButton { + id: emptyLabel - // NOTE: This is required to pass the focusReason when the current view changes in - // MainViewLoader. - property int focusReason: (header.activeFocus) ? header.focusReason - : emptyLabel.focusReason + visible: !root.isLoading - Navigation.navigable: layout.Navigation.navigable || (emptyLabel.visible && emptyLabel.button.enabled) + // FIXME: find better cover + cover: VLCStyle.noArtVideoCover + coverWidth : VLCStyle.dp(182, VLCStyle.scale) + coverHeight: VLCStyle.dp(114, VLCStyle.scale) - // used by MainDisplay to transfer focus - function setCurrentItemFocus(reason) { - if (!Navigation.navigable) - return + text: qsTr("Nothing to see here, go back.") - if (header.Navigation.navigable) - Helpers.enforceFocus(header, reason) - else - Helpers.enforceFocus(emptyLabel, reason) - } + button.iconTxt: VLCIcons.back + button.text: qsTr("Back") + button.enabled: !History.previousEmpty + button.width: button.implicitWidth + + function onNavigate(reason) { + History.previous(reason) + } + + Layout.fillHeight: true + Layout.fillWidth: true - ColumnLayout { - id: layout + Navigation.parentItem: root + } + } + } - anchors.fill: parent + Component { + id: busyIndicatorComponent - BrowseTreeHeader { - id: header + StandardView { + view: Item { + Navigation.navigable: false - focus: true + visible: root.isLoading - providerModel: root.model + Layout.fillHeight: true + Layout.fillWidth: true - Layout.fillWidth: true + Widgets.BusyIndicatorExt { + id: busyIndicator - Navigation.parentItem: root - Navigation.downItem: emptyLabel + runningDelayed: root.isLoading + anchors.centerIn: parent + z: 1 } + } + } + } - Widgets.EmptyLabelButton { - id: emptyLabel + // Helper view i.e a ColumnLayout with BrowseHeader + component StandardView : FocusScope { + required property Item view - visible: !root.loading + // NOTE: This is required to pass the focusReason when the current view changes in + // MainViewLoader. + property int focusReason: (header.activeFocus) ? header.focusReason + : view?.focusReason ?? Qt.NoFocusReason - // FIXME: find better cover - cover: VLCStyle.noArtVideoCover - coverWidth : VLCStyle.dp(182, VLCStyle.scale) - coverHeight: VLCStyle.dp(114, VLCStyle.scale) + // used by MainDisplay to transfer focus + function setCurrentItemFocus(reason) { + if (!Navigation.navigable) + return - text: qsTr("Nothing to see here, go back.") + if (header.Navigation.navigable) + Helpers.enforceFocus(header, reason) + else + Helpers.enforceFocus(view, reason) + } - button.iconTxt: VLCIcons.back - button.text: qsTr("Back") - button.enabled: !History.previousEmpty - button.width: button.implicitWidth + onViewChanged: { + if (layout.children.length === 2) + layout.children.pop() - function onNavigate(reason) { - History.previous(reason) - } + layout.children.push(view) + view.Navigation.upAction = function () { + // FIXME: for some reason default navigation flow doesn't work + // i.e setting Navigtaion.upItem doesn't fallthrough to parent's + // action if it's navigable is false - Layout.fillHeight: true - Layout.fillWidth: true + if (header.Navigation.navigable) + header.forceActiveFocus(Qt.BacktabFocusReason) + else + return false // fallthrough default action + } + } - Navigation.parentItem: root - Navigation.upAction: function () { - // FIXME: for some reason default navigation flow doesn't work - // i.e setting Navigtaion.upItem doesn't fallthrough to parent's - // action if Navigtaion.upItem.Navigtaion.navigble is false + ColumnLayout { + id: layout - if (header.Navigation.navigable) - header.forceActiveFocus(Qt.TabFocusReason) - else - return false // fallthrough default action - } - } + anchors.fill: parent - Item { - visible: root.loading + BrowseTreeHeader { + id: header - Layout.fillHeight: true - Layout.fillWidth: true + focus: true - Widgets.BusyIndicatorExt { - id: busyIndicator + providerModel: root.model - runningDelayed: root.loading - anchors.centerIn: parent - z: 1 - } - } + Layout.fillWidth: true + + Navigation.parentItem: root + Navigation.downItem: (view.Navigation.navigable) ? view : null } } - } }
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/network/qml/BrowseTreeHeader.qml -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/network/qml/BrowseTreeHeader.qml
Changed
@@ -28,7 +28,7 @@ import "qrc:///widgets/" as Widgets import "qrc:///style/" -T.Control { +T.Pane { id: root // Network* model @@ -40,28 +40,20 @@ colorSet: ColorContext.View } - height: implicitHeight - implicitHeight: layout.implicitHeight + topPadding + bottomPadding - topPadding: VLCStyle.layoutTitle_top_padding bottomPadding: VLCStyle.layoutTitle_bottom_padding - focus: medialibraryBtn.visible + height: implicitHeight + implicitHeight: layout.implicitHeight + topPadding + bottomPadding + implicitWidth: layout.implicitWidth + leftPadding + rightPadding + focus: medialibraryBtn.visible Navigation.navigable: medialibraryBtn.visible RowLayout { id: layout - anchors { - fill: parent - - leftMargin: root.leftPadding - rightMargin: root.rightPadding - - topMargin: root.topPadding - bottomMargin: root.bottomPadding - } + anchors.fill: parent Widgets.SubtitleLabel { text: providerModel.name
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/player/player_controlbar_model.cpp -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/player/player_controlbar_model.cpp
Changed
@@ -92,6 +92,11 @@ return m_dirty; } +bool PlayerControlbarModel::empty() const +{ + return m_empty; +} + std::array<QVector<int>, 3> PlayerControlbarModel::serializeModels() const { return { left()->getControls(), @@ -134,5 +139,19 @@ { setDirty(true); + { + bool empty = true; + if ((m_left && m_left->rowCount() > 0) || + (m_center && m_center->rowCount() > 0) || + (m_right && m_right->rowCount() > 0)) + empty = false; + + if (empty != m_empty) + { + m_empty = empty; + emit emptyChanged(empty); + } + } + emit controlListChanged(); }
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/player/player_controlbar_model.hpp -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/player/player_controlbar_model.hpp
Changed
@@ -34,6 +34,7 @@ Q_OBJECT Q_PROPERTY(bool dirty READ dirty WRITE setDirty NOTIFY dirtyChanged FINAL) + Q_PROPERTY(bool empty READ empty NOTIFY emptyChanged FINAL) Q_PROPERTY(ControlListModel* left READ left CONSTANT FINAL) Q_PROPERTY(ControlListModel* center READ center CONSTANT FINAL) @@ -70,6 +71,7 @@ ~PlayerControlbarModel(); bool dirty() const; + bool empty() const; std::array<QVector<int>, 3> serializeModels() const; void loadModels(const std::array<QVector<int>, 3>& array); @@ -83,10 +85,12 @@ signals: void dirtyChanged(bool dirty); + void emptyChanged(bool); void controlListChanged(); private: bool m_dirty = false; + bool m_empty = true; ControlListModel* m_left = nullptr; ControlListModel* m_center = nullptr;
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/player/qml/ControlBar.qml -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/player/qml/ControlBar.qml
Changed
@@ -246,6 +246,8 @@ implicitHeight: MainCtx.pinVideoControls ? VLCStyle.controlLayoutHeightPinned : VLCStyle.controlLayoutHeight + visible: !model?.empty ?? false + Navigation.upItem: trackPositionSlider.enabled ? trackPositionSlider : root.Navigation.upItem onRequestLockUnlockAutoHide: (lock) => root.requestLockUnlockAutoHide(lock)
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/player/qml/PlayerControlLayout.qml -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/player/qml/PlayerControlLayout.qml
Changed
@@ -59,7 +59,8 @@ implicitWidth: loaderLeftRight.active ? loaderLeftRight.implicitWidth : (loaderLeft.implicitWidth + loaderCenter.implicitWidth + loaderRight.implicitWidth) - implicitHeight: Math.max(loaderLeft.implicitHeight, loaderCenter.implicitHeight, loaderRight.implicitHeight) + implicitHeight: loaderLeftRight.active ? loaderLeftRight.implicitHeight + : Math.max(loaderLeft.implicitHeight, loaderCenter.implicitHeight, loaderRight.implicitHeight) // Events
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/modules/gui/qt/widgets/qml/TextFieldExt.qml -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/modules/gui/qt/widgets/qml/TextFieldExt.qml
Changed
@@ -38,8 +38,12 @@ selectedTextColor : theme.fg.highlight selectionColor : theme.bg.highlight color : theme.fg.primary + placeholderTextColor: theme.fg.secondary + font.pixelSize: VLCStyle.fontSize_normal + verticalAlignment: Text.AlignVCenter + background: Rectangle { implicitWidth: 200 implicitHeight: 40
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/src/audio_output/dec.c -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/src/audio_output/dec.c
Changed
@@ -688,20 +688,9 @@ { vlc_mutex_lock(&stream->timing.lock); - if (unlikely(stream->timing.first_pts == VLC_TICK_INVALID)) - { - /* While closing the stream, it is possible (but unlikely) that the - * module updates a timing point just after the stream is reset, and - * just before the module is stopped. */ - vlc_mutex_unlock(&stream->timing.lock); - return; - } - vlc_tick_t rate_audio_ts = stream->timing.rate_audio_ts; vlc_tick_t rate_system_ts = stream->timing.rate_system_ts; - audio_ts += stream->timing.first_pts; - if (rate_audio_ts != VLC_TICK_INVALID) { /* Drop timing updates that comes before the rate change */
View file
_service:obs_scm:vlc-beta-20240510.24e663be6f.obscpio/test/src/player/player.c -> _service:obs_scm:vlc-beta-20240517.361f419997.obscpio/test/src/player/player.c
Changed
@@ -3141,6 +3141,7 @@ struct aout_sys { + vlc_tick_t first_pts; vlc_tick_t first_play_date; vlc_tick_t pos; }; @@ -3150,9 +3151,14 @@ struct aout_sys *sys = aout->sys; if (sys->first_play_date == VLC_TICK_INVALID) + { + assert(sys->first_pts == VLC_TICK_INVALID); sys->first_play_date = date; + sys->first_pts = block->i_pts; + } - aout_TimingReport(aout, sys->first_play_date + sys->pos - VLC_TICK_0, sys->pos); + aout_TimingReport(aout, sys->first_play_date + sys->pos - VLC_TICK_0, + sys->first_pts + sys->pos); sys->pos += block->i_length; block_Release(block); } @@ -3161,7 +3167,7 @@ { struct aout_sys *sys = aout->sys; sys->pos = 0; - sys->first_play_date = VLC_TICK_INVALID; + sys->first_pts = sys->first_play_date = VLC_TICK_INVALID; } static int aout_Start(audio_output_t *aout, audio_sample_format_t *restrict fmt)
View file
_service:obs_scm:vlc-beta.obsinfo
Changed
@@ -1,4 +1,4 @@ name: vlc-beta -version: 20240510.24e663be6f -mtime: 1715348858 -commit: 24e663be6f40820db3c12f32f0d2772ef7abaaff +version: 20240517.361f419997 +mtime: 1715931988 +commit: 361f419997a2f325c3534d34fdc4b0d24cc4a85a
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.