Here is an update to musikcube 3.0.0. This is dependent on the asio port I posted.
https://github.com/clangen/musikcube/releases/tag/3.0.0 Index: Makefile =================================================================== RCS file: /home/cvs/ports/audio/musikcube/Makefile,v retrieving revision 1.6 diff -u -p -u -p -r1.6 Makefile --- Makefile 6 May 2023 22:21:02 -0000 1.6 +++ Makefile 8 May 2023 00:31:56 -0000 @@ -2,7 +2,7 @@ COMMENT = terminal-based music player GH_ACCOUNT = clangen GH_PROJECT = musikcube -GH_TAGNAME = 0.98.1 +GH_TAGNAME = 3.0.0 CATEGORIES = audio @@ -11,10 +11,9 @@ HOMEPAGE = https://musikcube.com/ # BSD-3 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 mpg123 openmpt panel sndio ssl swresample tag z +WANTLIB += ${COMPILER_LIBCXX} avcodec avformat avutil c crypto +WANTLIB += curl curses ev m microhttpd mp3lame mpg123 openmpt +WANTLIB += panel sndio ssl swresample tag z COMPILER = base-clang ports-gcc @@ -22,9 +21,9 @@ MODULES = devel/cmake CONFIGURE_ARGS += -DENABLE_BUNDLED_TAGLIB=false +BUILD_DEPENDS+= devel/asio LIB_DEPENDS = audio/libopenmpt \ audio/taglib \ - devel/boost \ devel/libev \ graphics/ffmpeg \ net/curl \ Index: distinfo =================================================================== RCS file: /home/cvs/ports/audio/musikcube/distinfo,v retrieving revision 1.3 diff -u -p -u -p -r1.3 distinfo --- distinfo 6 May 2023 22:21:02 -0000 1.3 +++ distinfo 7 May 2023 23:16:44 -0000 @@ -1,2 +1,2 @@ -SHA256 (musikcube-0.98.1.tar.gz) = 8xEoOEbkls42+z6Fo14w2JWjwQPJOpGzZA6WNwG4noA= -SIZE (musikcube-0.98.1.tar.gz) = 6506484 +SHA256 (musikcube-3.0.0.tar.gz) = uFeYDCFPhvF8wojtpFYrUWg81CqEOkpNjY5gFpz4c0U= +SIZE (musikcube-3.0.0.tar.gz) = 4758625 Index: patches/patch-CMakeLists_txt =================================================================== RCS file: /home/cvs/ports/audio/musikcube/patches/patch-CMakeLists_txt,v retrieving revision 1.3 diff -u -p -u -p -r1.3 patch-CMakeLists_txt --- patches/patch-CMakeLists_txt 6 May 2023 22:21:02 -0000 1.3 +++ patches/patch-CMakeLists_txt 7 May 2023 23:20:29 -0000 @@ -1,18 +1,24 @@ Index: CMakeLists.txt --- CMakeLists.txt.orig +++ CMakeLists.txt -@@ -97,9 +97,11 @@ add_dependencies(musikcubed musikcore) +@@ -122,12 +122,16 @@ add_dependencies(musikcubed musikcore) + # tag readers 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") ++endif() + add_plugin("src/plugins/coreaudioout" "coreaudioout") + add_plugin("src/plugins/nullout" "nullout") +-add_plugin("src/plugins/pipewireout" "pipewireout") +-add_plugin("src/plugins/portaudioout" "portaudioout") +-add_plugin("src/plugins/pulseout" "pulseout") ++if (NOT CMAKE_SYSTEM_NAME MATCHES "OpenBSD") + add_plugin("src/plugins/pipewireout" "pipewireout") ++ add_plugin("src/plugins/portaudioout" "portaudioout") ++ add_plugin("src/plugins/pulseout" "pulseout") +endif() add_plugin("src/plugins/sndioout" "sndioout") - add_plugin("src/plugins/coreaudioout" "coreaudioout") # remotes + add_plugin("src/plugins/macosmediakeys" "macosmediakeys") Index: patches/patch-_cmake_ConfigureBsdPaths_cmake =================================================================== RCS file: patches/patch-_cmake_ConfigureBsdPaths_cmake diff -N patches/patch-_cmake_ConfigureBsdPaths_cmake --- patches/patch-_cmake_ConfigureBsdPaths_cmake 6 May 2023 22:21:02 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,15 +0,0 @@ -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 --- patches/patch-src_musikcube_CMakeLists_txt 6 May 2023 22:21:02 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,23 +0,0 @@ -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.3 diff -u -p -u -p -r1.3 patch-src_plugins_server_main_cpp --- patches/patch-src_plugins_server_main_cpp 6 May 2023 22:21:02 -0000 1.3 +++ patches/patch-src_plugins_server_main_cpp 7 May 2023 23:20:28 -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 -@@ -191,10 +191,10 @@ extern "C" DLL_EXPORT void SetPreferences(musik::core: +@@ -179,10 +179,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 --- patches/patch-src_plugins_stockencoders_FfmpegEncoder_cpp 6 May 2023 22:21:02 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,73 +0,0 @@ -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); Index: pkg/PLIST =================================================================== RCS file: /home/cvs/ports/audio/musikcube/pkg/PLIST,v retrieving revision 1.3 diff -u -p -u -p -r1.3 PLIST --- pkg/PLIST 11 Mar 2022 18:20:20 -0000 1.3 +++ pkg/PLIST 8 May 2023 00:27:38 -0000 @@ -48,9 +48,11 @@ include/musikcube/musikcore/sdk/IVisuali include/musikcube/musikcore/sdk/ReplayGain.h include/musikcube/musikcore/sdk/String.h include/musikcube/musikcore/sdk/constants.h +include/musikcube/musikcore/sdk/version.h share/musikcube/ @so share/musikcube/libmusikcore.so share/musikcube/locales/ +share/musikcube/locales/cs_CZ.json share/musikcube/locales/de_DE.json share/musikcube/locales/en_US.json share/musikcube/locales/es_ES.json @@ -58,12 +60,12 @@ share/musikcube/locales/fr_FR.json share/musikcube/locales/it_IT.json share/musikcube/locales/ja_JP.json share/musikcube/locales/ru_RU.json +share/musikcube/locales/uk_UA.json share/musikcube/locales/zh_CN.json @bin share/musikcube/musikcube @bin share/musikcube/musikcubed share/musikcube/plugins/ @so share/musikcube/plugins/libffmpegdecoder.so -@so share/musikcube/plugins/libgmedecoder.so @so share/musikcube/plugins/libhttpdatastream.so @so share/musikcube/plugins/libnullout.so @so share/musikcube/plugins/libopenmptdecoder.so