[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[k3b] Помощ при миграция libmpcdec3 -> libmpcdec6
From: |
Yavor Doganov |
Subject: |
[k3b] Помощ при миграция libmpcdec3 -> libmpcdec6 |
Date: |
Fri, 05 Jun 2009 13:39:44 +0300 |
Следва k3b (#476379). Тук големия зор беше зареждането на приставките,
когато програмата е инсталирана с prefix != този на системните
библиотеки на KDE4 (т.е. изхода на `kde4-config --prefix) [1], както и
първия ми сблъсък със CMake (address@hidden).
Кръпката е срещу SVN trunk (upstream) [2], защото порта за KDE4 ще
замени старата версия на k3b съвсем скоро.
Не съм сигурен за тази промяна:
#ifdef MPC_OLD_API
m_decoder = new mpc_decoder;
#endif
но иначе получавам грешки при компилиране.
Тествах с двата формата -- файловете се добавят, като правилно се
извлича времетраенето. (Функционалността за изпълнение на песните
plugins/audiooutput/* изглежда е временно премахната в новата версия.)
[1] Ако kde4libs е в /usr, а инсталирате k3b (или което и да е
приложение за KDE4) някъде другаде, трябва да се добавят тези два реда в
~/kde{4}/share/config/kdeglobals:
[Directories]
prefixes=/path/to/alternative/prefix
и след това да се изпълни (като нормален потребител) kbuildsycoca4.
Инак приставките в ${libdir}/kde4/ не могат да се заредят.
[2] svn://anonsvn.kde.org/home/kde/trunk/extragear/multimedia/k3b
(И да, компилирането на k3b е истинска Голгота за процесора :-{ Все пак
се надявам някой да прегледа кръпката и да тества, преди да я подам.)
Index: cmake/modules/FindMuse.cmake
===================================================================
--- cmake/modules/FindMuse.cmake (revision 977727)
+++ cmake/modules/FindMuse.cmake (working copy)
@@ -16,12 +16,17 @@
endif ( MUSE_INCLUDE_DIR AND MUSE_LIBRARIES )
-FIND_PATH(MUSE_INCLUDE_DIR NAMES mpcdec/mpcdec.h
+FIND_PATH(MUSE_INCLUDE_DIR NAMES mpc/mpcdec.h
)
if(MUSE_INCLUDE_DIR)
FIND_LIBRARY(MUSE_LIBRARIES NAMES mpcdec)
+ set(MPC_HEADER_FILE "<mpc/mpcdec.h>")
+else(MUSE_INCLUDE_DIR)
+ FIND_PATH(MUSE_INCLUDE_DIR NAMES mpcdec/mpcdec.h)
+ FIND_LIBRARY(MUSE_LIBRARIES NAMES mpcdec)
set(MPC_HEADER_FILE "<mpcdec/mpcdec.h>")
+ set(MPC_OLD_API 1)
else(MUSE_INCLUDE_DIR)
FIND_PATH(MUSE_INCLUDE_DIR NAMES musepack/musepack.h)
set(MPC_HEADER_FILE "<musepack/musepack.h>")
Index: plugins/decoder/musepack/k3bmpcwrapper.cpp
===================================================================
--- plugins/decoder/musepack/k3bmpcwrapper.cpp (revision 977727)
+++ plugins/decoder/musepack/k3bmpcwrapper.cpp (working copy)
@@ -19,32 +19,60 @@
#include <qfile.h>
+#ifdef MPC_OLD_API
mpc_int32_t read_impl( void* data, void* ptr, mpc_int32_t size )
{
QFile* input = static_cast<QFile*>( data );
+#else
+mpc_int32_t read_impl( mpc_reader* data, void* ptr, mpc_int32_t size )
+{
+ QFile* input = static_cast<QFile*>( data->data );
+#endif
return input->read( (char*)ptr, size );
}
+#ifdef MPC_OLD_API
mpc_bool_t seek_impl( void* data, mpc_int32_t offset )
{
QFile* input = static_cast<QFile*>( data );
+#else
+mpc_bool_t seek_impl( mpc_reader* data, mpc_int32_t offset )
+{
+ QFile* input = static_cast<QFile*>( data->data );
+#endif
return input->seek( offset );
}
+#ifdef MPC_OLD_API
mpc_int32_t tell_impl( void* data )
{
QFile* input = static_cast<QFile*>( data );
+#else
+mpc_int32_t tell_impl( mpc_reader* data )
+{
+ QFile* input = static_cast<QFile*>( data->data );
+#endif
return input->pos();
}
+#ifdef MPC_OLD_API
mpc_int32_t get_size_impl( void* data )
{
QFile* input = static_cast<QFile*>( data );
+#else
+mpc_int32_t get_size_impl( mpc_reader* data )
+{
+ QFile* input = static_cast<QFile*>( data->data );
+#endif
return input->size();
}
+#ifdef MPC_OLD_API
mpc_bool_t canseek_impl( void* )
+#else
+mpc_bool_t canseek_impl( mpc_reader* )
+#endif
{
return true;
}
@@ -74,7 +102,9 @@
m_reader->canseek = canseek_impl;
m_reader->data = m_input;
+#ifdef MPC_OLD_API
m_decoder = new mpc_decoder;
+#endif
m_info = new mpc_streaminfo;
}
@@ -85,7 +115,12 @@
close();
delete m_reader;
+#ifdef MPC_OLD_API
delete m_decoder;
+#else
+ if( m_decoder)
+ mpc_demux_exit( m_decoder );
+#endif
delete m_info;
delete m_input;
}
@@ -98,6 +133,7 @@
m_input->setFileName( filename );
if( m_input->open( QIODevice::ReadOnly ) ) {
+#ifdef MPC_OLD_API
mpc_streaminfo_init( m_info );
if( mpc_streaminfo_read( m_info, m_reader ) != ERROR_CODE_OK ) {
kDebug() << "(K3bMpcWrapper) Not a valid musepack file: \"" << filename
<< "\"";
@@ -106,16 +142,25 @@
else {
mpc_decoder_setup( m_decoder, m_reader );
if( !mpc_decoder_initialize( m_decoder, m_info ) ) {
+#else
+ m_decoder = mpc_demux_init( m_reader );
+ if( !m_decoder ) {
+#endif
kDebug() << "(K3bMpcWrapper) failed to initialize the Musepack
decoder.";
close();
return false;
}
else {
+#ifndef MPC_OLD_API
+ mpc_demux_get_info( m_decoder, m_info );
+#endif
kDebug() << "(K3bMpcWrapper) valid musepack file. "
<< channels() << " Channels and Samplerate: " << samplerate()
<< endl;
return true;
}
+#ifdef MPC_OLD_API
}
+#endif
}
else
return false;
@@ -133,8 +178,17 @@
// FIXME: make this a member variable
MPC_SAMPLE_FORMAT sample_buffer[MPC_DECODER_BUFFER_LENGTH];
+#ifdef MPC_OLD_API
unsigned int samples = mpc_decoder_decode( m_decoder, sample_buffer, 0, 0 );
+#else
+ unsigned int samples;
+ mpc_frame_info frame;
+ frame.buffer = sample_buffer;
+ mpc_demux_decode( m_decoder, &frame);
+ samples = frame.samples;
+#endif
+
if( samples*channels()*2 > (unsigned int)max ) {
kDebug() << "(K3bMpcWrapper) buffer not big enough.";
return -1;
@@ -170,7 +224,11 @@
bool K3bMpcWrapper::seek( const K3b::Msf& msf )
{
+#ifdef MPC_OLD_API
return mpc_decoder_seek_seconds( m_decoder, (double)msf.totalFrames()/75.0 );
+#else
+ return mpc_demux_seek_second( m_decoder, (double)msf.totalFrames()/75.0 );
+#endif
}
Index: plugins/decoder/musepack/k3bmpcwrapper.h
===================================================================
--- plugins/decoder/musepack/k3bmpcwrapper.h (revision 977727)
+++ plugins/decoder/musepack/k3bmpcwrapper.h (working copy)
@@ -49,7 +49,11 @@
private:
QFile* m_input;
mpc_reader* m_reader;
+#ifdef MPC_OLD_API
mpc_decoder* m_decoder;
+#else
+ mpc_demux* m_decoder;
+#endif
mpc_streaminfo* m_info;
};
Index: plugins/decoder/musepack/k3bmpc_config.h.cmake
===================================================================
--- plugins/decoder/musepack/k3bmpc_config.h.cmake (revision 977727)
+++ plugins/decoder/musepack/k3bmpc_config.h.cmake (working copy)
@@ -1 +1,2 @@
#define MPC_HEADER_FILE ${MPC_HEADER_FILE}
+#cmakedefine MPC_OLD_API
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [k3b] Помощ при миграция libmpcdec3 -> libmpcdec6,
Yavor Doganov <=