Here is an update to musikcube 0.98.1.

0.98.1

* fixed album art extraction for xiph comments.
* fixed PulseAudio compile issue.
* fixed `musikdroid` app notification on Android 13 devices.
* fixed ancient metadata indexer crash when trimming whitespace from strings.
* fixed `pipewireout` to have more sensible default buffer sizes, and add the
  ability for the user to configure them.
* updated `musikdroid` dependencies and tooling, fixed a few warnings.
* merged latest upstream `PDCurses` code for Windows builds.
* sending `musikcubed` a SIGUSR1 will trigger a library rescan.
* fixed a bug when querying tracks by category with a filter.
* fixed a `musikdroid` bug that could cause the BrowseFragment to get into
  a bad state where search would no longer work.

--------------------------------------------------------------------------------

0.98.0

* added the ability to click the browse and tracklist headers to change filter
  options
* added the ability to click transport metadata to display a context menu with
  a list of actions for the current track/artist/album
* added the ability to search/filter in browse view; press `^F` to toggle the
  feature on and off.
* fixed a bug that could cause tracks to sort incorrectly if some tracks in
  the album have a disc number specified and others don't.
* added the ability to use `libelogind` or `basu` instead of `libsystemd` for
  the `mpris` plugin (@robertgzr)
* fixed ape decoding.
* some warning cleanups when using `wsprintw` (@trofi)
* further improvements to build system to remove OS-specific conditionals in
  favor of library detection
* added color output to various important cmake messages, making it much easier
  to spot check configuration issues.
* added support for the `piggy` debug tool to help with log collection and
  remote app monitoring. disabled by default.
* updated Windows build to use Visual Studio 2022
* updated Linux/macOS dependencies for standalone *nix builds: boost 1.79.0,
  openssl 3.0.2 (1.1.1n for rpi), curl 7.83.0, ffmpeg 5.0.1, libopenmtp 0.6.2
* updated sqlite to 3.39.0

--------------------------------------------------------------------------------

0.97.0

* no functional changes to the app
* finished re-architecture of build and app packing infrastructure to support
  "standalone"/"portable" builds for non-Windows platforms. these changes allow
  us to build a much smaller set of binaries for distribution that are more
  universally compatible across different versions of macOS and Linux
  distributions.

--------------------------------------------------------------------------------

0.96.13

* macOS and Linux only release that fixes standalone binaries.

--------------------------------------------------------------------------------

0.96.11

* added support for ffmpeg5 libraries.
* upgraded to ffmpeg5 for Windows builds.
* fixed WasapiOut to use high-quality, built-in resampler.
* added `allow_decoder_resampling` to WasapiOut to disable the high-quality,
  built-in resampler and rely on plugin resampling instead.
* fixed dialog background rendering in certain versions of ncurses.
* fixed duration calculation for float-encoded wav files.
* added additional PipeWire output debugging.
* rewrote build system and packaging scripts.


Index: Makefile
===================================================================
RCS file: /home/cvs/ports/audio/musikcube/Makefile,v
retrieving revision 1.5
diff -u -p -u -p -r1.5 Makefile
--- Makefile    22 Apr 2023 18:03:28 -0000      1.5
+++ Makefile    28 Apr 2023 23:40:18 -0000
@@ -2,8 +2,7 @@ COMMENT =       terminal-based music player
 
 GH_ACCOUNT =   clangen
 GH_PROJECT =   musikcube
-GH_TAGNAME =   0.96.10
-REVISION =     1
+GH_TAGNAME =   0.98.1
 
 CATEGORIES =   audio
 
@@ -15,7 +14,7 @@ PERMIT_PACKAGE=       Yes
 WANTLIB += ${COMPILER_LIBCXX} avcodec avformat avutil boost_atomic-mt
 WANTLIB += boost_chrono-mt boost_filesystem-mt boost_system-mt
 WANTLIB += boost_thread-mt c crypto curl curses ev m microhttpd
-WANTLIB += mp3lame openmpt panel sndio ssl swresample tag z
+WANTLIB += mp3lame mpg123 openmpt panel sndio ssl swresample tag z
 
 COMPILER =     base-clang ports-gcc
 
Index: distinfo
===================================================================
RCS file: /home/cvs/ports/audio/musikcube/distinfo,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 distinfo
--- distinfo    30 Dec 2021 22:33:28 -0000      1.2
+++ distinfo    28 Apr 2023 22:00:10 -0000
@@ -1,2 +1,2 @@
-SHA256 (musikcube-0.96.10.tar.gz) = 
kf2YTmi272bxvh7N8MhGB0U+xuyAYy7OaIrHRcdxnqU=
-SIZE (musikcube-0.96.10.tar.gz) = 9509759
+SHA256 (musikcube-0.98.1.tar.gz) = 8xEoOEbkls42+z6Fo14w2JWjwQPJOpGzZA6WNwG4noA=
+SIZE (musikcube-0.98.1.tar.gz) = 6506484
Index: patches/patch-CMakeLists_txt
===================================================================
RCS file: patches/patch-CMakeLists_txt
diff -N patches/patch-CMakeLists_txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-CMakeLists_txt        28 Apr 2023 23:19:04 -0000
@@ -0,0 +1,18 @@
+Index: CMakeLists.txt
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -97,9 +97,11 @@ add_dependencies(musikcubed musikcore)
+ add_plugin("src/plugins/taglib_plugin" "taglibreader")
+ # outputs
+ add_plugin("src/plugins/nullout" "nullout")
+-add_plugin("src/plugins/alsaout" "alsaout")
+-add_plugin("src/plugins/pulseout" "pulseout")
+-add_plugin("src/plugins/pipewireout" "pipewireout")
++if (NOT CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
++  add_plugin("src/plugins/alsaout" "alsaout")
++  add_plugin("src/plugins/pulseout" "pulseout")
++  add_plugin("src/plugins/pipewireout" "pipewireout")
++endif()
+ add_plugin("src/plugins/sndioout" "sndioout")
+ add_plugin("src/plugins/coreaudioout" "coreaudioout")
+ # remotes
Index: patches/patch-_cmake_ConfigureBsdPaths_cmake
===================================================================
RCS file: patches/patch-_cmake_ConfigureBsdPaths_cmake
diff -N patches/patch-_cmake_ConfigureBsdPaths_cmake
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-_cmake_ConfigureBsdPaths_cmake        28 Apr 2023 22:07:57 
-0000
@@ -0,0 +1,15 @@
+Fix OpenBSD build
+
+Index: .cmake/ConfigureBsdPaths.cmake
+--- .cmake/ConfigureBsdPaths.cmake.orig
++++ .cmake/ConfigureBsdPaths.cmake
+@@ -24,4 +24,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "Darwin" OR CMAKE_SYSTEM
+     "${BSD_PATH_PREFIX}/lib"
+     "${BSD_PATH_PREFIX}/opt/openssl/lib"
+     "${BSD_PATH_PREFIX}/opt/ncurses/lib")
+-endif ()
+\ No newline at end of file
++
++  include_directories("${BSD_PATH_PREFIX}/include")
++  link_directories("${BSD_PATH_PREFIX}/lib")
++endif ()
Index: patches/patch-src_musikcube_CMakeLists_txt
===================================================================
RCS file: patches/patch-src_musikcube_CMakeLists_txt
diff -N patches/patch-src_musikcube_CMakeLists_txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_musikcube_CMakeLists_txt  28 Apr 2023 22:08:04 -0000
@@ -0,0 +1,23 @@
+Fix OpenBSD build
+
+Index: src/musikcube/CMakeLists.txt
+--- src/musikcube/CMakeLists.txt.orig
++++ src/musikcube/CMakeLists.txt
+@@ -104,9 +104,14 @@ if (APPLE)
+         set(PANEL_LIBRARY_NAME "lib${PANEL_LIBRARY_NAME}.a")
+     endif()
+ else()
+-    message(STATUS "[ncurses] not Darwin! will attempt to link against 
libtinfo")
+-    find_library(LIBTINFO NAMES tinfo)
+-    message(STATUS "[musikcube] using libtinfo at: " ${LIBTINFO})
++    if (CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
++        message(STATUS "[ncurses] detected OpenBSD, unsetting LIBTINFO")
++        set(LIBTINFO "")
++    else()
++        message(STATUS "[ncurses] not Darwin! will attempt to link against 
libtinfo")
++        find_library(LIBTINFO NAMES tinfo)
++        message(STATUS "[musikcube] using libtinfo at: " ${LIBTINFO})
++    endif()
+ endif()
+ 
+ find_library(LIBNCURSES NAMES ${CURSES_LIBRARY_NAME} PATHS 
${VENDOR_LINK_DIRECTORIES})
Index: patches/patch-src_plugins_server_main_cpp
===================================================================
RCS file: 
/home/cvs/ports/audio/musikcube/patches/patch-src_plugins_server_main_cpp,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 patch-src_plugins_server_main_cpp
--- patches/patch-src_plugins_server_main_cpp   11 Mar 2022 18:20:20 -0000      
1.2
+++ patches/patch-src_plugins_server_main_cpp   28 Apr 2023 21:52:44 -0000
@@ -3,7 +3,7 @@ disable http/websocket server by default
 Index: src/plugins/server/main.cpp
 --- src/plugins/server/main.cpp.orig
 +++ src/plugins/server/main.cpp
-@@ -189,10 +189,10 @@ extern "C" DLL_EXPORT void SetPreferences(musik::core:
+@@ -191,10 +191,10 @@ extern "C" DLL_EXPORT void SetPreferences(musik::core:
      context.prefs = prefs;
  
      if (prefs) {
Index: patches/patch-src_plugins_stockencoders_FfmpegEncoder_cpp
===================================================================
RCS file: patches/patch-src_plugins_stockencoders_FfmpegEncoder_cpp
diff -N patches/patch-src_plugins_stockencoders_FfmpegEncoder_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_plugins_stockencoders_FfmpegEncoder_cpp   28 Apr 2023 
22:25:32 -0000
@@ -0,0 +1,73 @@
+Use non-deprecated ffmpeg channel layout APIs if we detect libavutil >= 58
+
+Index: src/plugins/stockencoders/FfmpegEncoder.cpp
+--- src/plugins/stockencoders/FfmpegEncoder.cpp.orig
++++ src/plugins/stockencoders/FfmpegEncoder.cpp
+@@ -39,6 +39,10 @@
+ #include <random>
+ #include <map>
+ 
++#if LIBAVUTIL_VERSION_MAJOR >= 58
++#define USE_FFMPEG6_CHANNEL_LAYOUT
++#endif
++
+ using namespace musik::core::sdk;
+ 
+ static const int IO_CONTEXT_BUFFER_SIZE = 4096;
+@@ -272,8 +276,13 @@ bool FfmpegEncoder::OpenOutputCodec(size_t rate, size_
+         return false;
+     }
+ 
+-    this->outputContext->channels = (int) channels;
++#ifdef USE_FFMPEG6_CHANNEL_LAYOUT
++    this->outputContext->ch_layout.nb_channels = (int)channels;
++    this->outputContext->ch_layout.order = AV_CHANNEL_ORDER_NATIVE;
++#else
++    this->outputContext->channels = (int)channels;
+     this->outputContext->channel_layout = resolveChannelLayout(channels);
++#endif
+     this->outputContext->sample_rate = resolveSampleRate(this->outputCodec, 
(int) rate);
+     this->outputContext->sample_fmt = resolveSampleFormat(this->outputCodec);
+     this->outputContext->bit_rate = (int64_t) bitrate * 1000;
+@@ -314,6 +323,18 @@ bool FfmpegEncoder::OpenOutputCodec(size_t rate, size_
+ 
+     /* resampler context that will be used to convert the input audio
+     sample format to the one recommended by the encoder */
++#ifdef USE_FFMPEG6_CHANNEL_LAYOUT
++    swr_alloc_set_opts2(
++        &this->resampler,
++        &this->outputContext->ch_layout,
++        this->outputContext->sample_fmt,
++        this->outputContext->sample_rate,
++        &this->outputContext->ch_layout,
++        AV_SAMPLE_FMT_FLT,
++        (int)rate,
++        0,
++        nullptr);
++#else
+     this->resampler = swr_alloc_set_opts(
+         nullptr,
+         this->outputContext->channel_layout,
+@@ -324,6 +345,7 @@ bool FfmpegEncoder::OpenOutputCodec(size_t rate, size_
+         (int)rate,
+         0,
+         nullptr);
++#endif
+ 
+     error = swr_init(this->resampler);
+ 
+@@ -620,9 +642,13 @@ AVFrame* FfmpegEncoder::ReallocFrame(
+         }
+         original = av_frame_alloc();
+         original->nb_samples = samplesPerChannel;
+-        original->channel_layout = this->outputContext->channel_layout;
+         original->format = format;
+         original->sample_rate = sampleRate;
++#ifdef USE_FFMPEG6_CHANNEL_LAYOUT
++        original->ch_layout = this->outputContext->ch_layout;
++#else
++        original->channel_layout = this->outputContext->channel_layout;
++#endif
+         int error = av_frame_get_buffer(original, 0);
+         if (error < 0) {
+             logAvError("av_frame_get_buffer", error);

Reply via email to