Package not found: devel:languages:python/python-scandir

File qmmp-MPC_OLD_API.patch of Package qmmp

--- ./src/plugins/Input/mpc/CMakeLists.orig.txt	2020-09-20 05:48:14.000000000 +0900
+++ ./src/plugins/Input/mpc/CMakeLists.txt	2020-09-23 05:04:15.401594973 +0900
@@ -10,12 +10,19 @@
 
 # libmpc
 CHECK_INCLUDE_FILE_CXX(mpc/mpcdec.h MPC_HEADER_NEW_FOUND)
+IF(NOT MPC_HEADER_NEW_FOUND)
+CHECK_INCLUDE_FILE_CXX(mpcdec/mpcdec.h MPC_HEADER_OLD_FOUND)
+ADD_DEFINITIONS(-DMPC_OLD_API)
+ENDIF(NOT MPC_HEADER_NEW_FOUND)
+
 FIND_LIBRARY(MPC_LIB NAME mpcdec PATHS /usr/lib /usr/lib32  /usr/local/lib /usr/local/lib32)
 
-IF(MPC_HEADER_NEW_FOUND AND (NOT MPC_LIB MATCHES "^.*-NOTFOUND"))
+IF((MPC_HEADER_NEW_FOUND OR MPC_HEADER_OLD_FOUND) AND (NOT MPC_LIB MATCHES "^.*-NOTFOUND"))
 SET(MPC_FOUND TRUE CACHE INTERNAL "mpc")
 MESSAGE(STATUS "Found MusePack: ${MPC_LIB}")
-ENDIF(MPC_HEADER_NEW_FOUND AND (NOT MPC_LIB MATCHES "^.*-NOTFOUND"))
+ELSE((MPC_HEADER_NEW_FOUND OR MPC_HEADER_OLD_FOUND) AND (NOT MPC_LIB MATCHES "^.*-NOTFOUND"))
+MESSAGE(STATUS "Could not find MusePack library")
+ENDIF((MPC_HEADER_NEW_FOUND OR MPC_HEADER_OLD_FOUND) AND (NOT MPC_LIB MATCHES "^.*-NOTFOUND"))
 
 include_directories(${TAGLIB_INCLUDE_DIRS})
 link_directories(${TAGLIB_LIBRARY_DIRS})
--- ./src/plugins/Input/mpc/decoder_mpc.orig.h	2020-09-20 05:48:14.000000000 +0900
+++ ./src/plugins/Input/mpc/decoder_mpc.h	2020-09-23 05:08:44.101327516 +0900
@@ -21,12 +21,21 @@
 #ifndef DECODER_MPC_H
 #define DECODER_MPC_H
 
+#ifdef MPC_OLD_API
+#include <mpcdec/mpcdec.h>
+#else
 #include <mpc/mpcdec.h>
+#endif
+
 #include <qmmp/decoder.h>
 
 struct mpc_data
 {
+#ifdef MPC_OLD_API
+    mpc_decoder decoder;
+#else
     mpc_demux *demuxer;
+#endif
     mpc_reader reader;
     mpc_streaminfo info;
 };
--- ./src/plugins/Input/mpc/decoder_mpc.orig.cpp	2020-09-20 05:48:14.000000000 +0900
+++ ./src/plugins/Input/mpc/decoder_mpc.cpp	2020-10-08 04:56:26.977629219 +0900
@@ -28,33 +28,59 @@
 
 // mpc callbacks
 
+#ifdef MPC_OLD_API
+static mpc_int32_t mpc_callback_read (void *data, void *buffer, mpc_int32_t size)
+{
+    DecoderMPC *dmpc = (DecoderMPC *) data;
+#else
 static mpc_int32_t mpc_callback_read (mpc_reader *reader, void *buffer, mpc_int32_t size)
 {
     DecoderMPC *dmpc = (DecoderMPC *) reader->data;
+#endif
     return dmpc->input()->read((char *)buffer, size);
 }
-
+#ifdef MPC_OLD_API
+static mpc_bool_t mpc_callback_seek (void *data, mpc_int32_t offset)
+{
+    DecoderMPC *dmpc = (DecoderMPC *) data;
+#else
 static mpc_bool_t mpc_callback_seek (mpc_reader *reader, mpc_int32_t offset)
 {
     DecoderMPC *dmpc = (DecoderMPC *) reader->data;
+#endif
     return dmpc->input()->seek(offset);
 }
-
+#ifdef MPC_OLD_API
+static mpc_int32_t mpc_callback_tell (void *data)
+{
+    DecoderMPC *dmpc = (DecoderMPC *) data;
+#else
 static mpc_int32_t mpc_callback_tell (mpc_reader *reader)
 {
     DecoderMPC *dmpc = (DecoderMPC *) reader->data;
+#endif
     return dmpc->input()->pos ();
 }
-
+#ifdef MPC_OLD_API
+static mpc_bool_t  mpc_callback_canseek (void *data)
+{
+    DecoderMPC *dmpc = (DecoderMPC *) data;
+#else
 static mpc_bool_t  mpc_callback_canseek (mpc_reader *reader)
 {
     DecoderMPC *dmpc = (DecoderMPC *) reader->data;
+#endif
     return !dmpc->input()->isSequential () ;
 }
-
+#ifdef MPC_OLD_API
+static mpc_int32_t mpc_callback_get_size (void *data)
+{
+    DecoderMPC *dmpc = (DecoderMPC *) data;
+#else
 static mpc_int32_t mpc_callback_get_size (mpc_reader *reader)
 {
     DecoderMPC *dmpc = (DecoderMPC *) reader->data;
+#endif
     return dmpc->input()->size();
 }
 
@@ -66,12 +92,23 @@
     m_len = 0;
     m_bitrate = 0;
     m_totalTime = 0.0;
+#ifdef MPC_OLD_API
+    m_data = 0;
+#else
     m_data = nullptr;
+#endif
 }
 
 DecoderMPC::~DecoderMPC()
 {
     m_len = 0;
+#ifdef MPC_OLD_API
+    if(data())
+    {
+        delete data();
+        m_data = 0;
+    }
+#else
     if(m_data)
     {
         if(m_data->demuxer)
@@ -79,6 +116,7 @@
         delete m_data;
         m_data = nullptr;
     }
+#endif
 }
 
 bool DecoderMPC::initialize()
@@ -105,19 +143,40 @@
     m_data->reader.get_size = mpc_callback_get_size;
     m_data->reader.data = this;
 
+#ifdef MPC_OLD_API
+    mpc_streaminfo_init (&m_data->info);
+    if (mpc_streaminfo_read (&m_data->info, &m_data->reader) != ERROR_CODE_OK)
+        return false;
+#else
     m_data->demuxer = mpc_demux_init (&m_data->reader);
 
     if (!m_data->demuxer)
         return false;
     mpc_demux_get_info (m_data->demuxer, &m_data->info);
+#endif
 
     int chan = data()->info.channels;
     configure(data()->info.sample_freq, chan, Qmmp::PCM_FLOAT);
     QMap<Qmmp::ReplayGainKey, double> rg_info; //replay gain information
+#ifdef MPC_OLD_API
+    mpc_decoder_setup (&data()->decoder, &data()->reader);
+
+    //mpc_decoder_scale_output (&data()->decoder, 3.0);
+    if (!mpc_decoder_initialize (&data()->decoder, &data()->info))
+    {
+        qWarning("DecoderMPC: cannot get info.");
+        return false;
+    }
+    rg_info[Qmmp::REPLAYGAIN_ALBUM_GAIN] = data()->info.gain_album/100.0;
+    rg_info[Qmmp::REPLAYGAIN_TRACK_GAIN] = data()->info.gain_title/100.0;
+    rg_info[Qmmp::REPLAYGAIN_ALBUM_PEAK] = data()->info.peak_album/32768.0;
+    rg_info[Qmmp::REPLAYGAIN_TRACK_PEAK] = data()->info.peak_title/32768.0;
+#else
     rg_info[Qmmp::REPLAYGAIN_ALBUM_GAIN] = data()->info.gain_album/256.0;
     rg_info[Qmmp::REPLAYGAIN_TRACK_GAIN] = data()->info.gain_title/256.0;
     rg_info[Qmmp::REPLAYGAIN_ALBUM_PEAK] = pow(10, data()->info.peak_album/256.0/20.0);
     rg_info[Qmmp::REPLAYGAIN_TRACK_PEAK] = pow(10, data()->info.peak_title/256.0/20.0);
+#endif
     setReplayGainInfo(rg_info);
 
     m_totalTime = mpc_streaminfo_get_length(&data()->info) * 1000;
@@ -137,6 +196,15 @@
 
 qint64 DecoderMPC::read(unsigned char *audio, qint64 maxSize)
 {
+#ifdef MPC_OLD_API
+    mpc_uint32_t vbrAcc = 0;
+    mpc_uint32_t vbrUpd = 0;
+    MPC_SAMPLE_FORMAT buffer[MPC_DECODER_BUFFER_LENGTH];
+    m_len = mpc_decoder_decode (&data()->decoder, buffer, &vbrAcc, &vbrUpd);
+    m_len *= data()->info.channels;
+    memcpy(audio, buffer, qMin(qint64(m_len * sizeof(float)), maxSize));
+    m_bitrate = vbrUpd * data()->info.sample_freq / 1152000;
+#else
     mpc_frame_info frame;
     mpc_status err;
     MPC_SAMPLE_FORMAT buffer[MPC_DECODER_BUFFER_LENGTH];
@@ -158,11 +226,15 @@
         }
     }
     m_bitrate = frame.bits * data()->info.sample_freq / 1152000;
+#endif
     return m_len * sizeof(float);
 }
 
 void DecoderMPC::seek(qint64 pos)
 {
+#ifdef MPC_OLD_API
+    mpc_decoder_seek_seconds(&data()->decoder, pos/1000);
+#else
     mpc_demux_seek_second(data()->demuxer, (double)pos/1000);
-
+#endif
 }
openSUSE Build Service is sponsored by