[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/multimedia/k3b
From: Michal Malek <michalm () jabster ! pl>
Date: 2009-11-21 20:56:59
Message-ID: 1258837019.964791.1274.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1052485 by mmalek:
Added suport for new libmpcdec API. Patch by Yavor Doganov, thanks a lot!
BUG: 214149
CC: yavor@gnu.org
M +27 -16 cmake/modules/FindMuse.cmake
M +1 -0 plugins/decoder/musepack/k3bmpc_config.h.cmake
M +58 -0 plugins/decoder/musepack/k3bmpcwrapper.cpp
M +4 -0 plugins/decoder/musepack/k3bmpcwrapper.h
--- trunk/extragear/multimedia/k3b/cmake/modules/FindMuse.cmake #1052484:1052485
@@ -10,25 +10,36 @@
#
-if ( MUSE_INCLUDE_DIR AND MUSE_LIBRARIES )
- # in cache already
- SET(Muse_FIND_QUIETLY TRUE)
-endif ( MUSE_INCLUDE_DIR AND MUSE_LIBRARIES )
+IF( MUSE_INCLUDE_DIR AND MUSE_LIBRARIES )
+ # in cache already
+ SET(Muse_FIND_QUIETLY TRUE)
+ENDIF( MUSE_INCLUDE_DIR AND MUSE_LIBRARIES )
+FIND_PATH( MUSE_INCLUDE_DIR 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 mpcdec/mpcdec.h )
+ IF( MUSE_INCLUDE_DIR )
+ 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 musepack/musepack.h )
+ FIND_LIBRARY( MUSE_LIBRARIES NAMES musepack )
+ SET( MPC_HEADER_FILE "<musepack/musepack.h>" )
+ SET( MPC_OLD_API 1 )
+ ENDIF( MUSE_INCLUDE_DIR )
+ENDIF( MUSE_INCLUDE_DIR )
-FIND_PATH(MUSE_INCLUDE_DIR NAMES mpcdec/mpcdec.h
-)
+IF( MUSE_INCLUDE_DIR AND MUSE_LIBRARIES )
+ SET( MUSE_FOUND TRUE )
+ELSE( MUSE_INCLUDE_DIR AND MUSE_LIBRARIES )
+ SET( MUSE_FOUND FALSE )
+ENDIF( MUSE_INCLUDE_DIR AND MUSE_LIBRARIES )
-if(MUSE_INCLUDE_DIR)
- FIND_LIBRARY(MUSE_LIBRARIES NAMES mpcdec)
- set(MPC_HEADER_FILE "<mpcdec/mpcdec.h>")
-else(MUSE_INCLUDE_DIR)
- FIND_PATH(MUSE_INCLUDE_DIR NAMES musepack/musepack.h)
- set(MPC_HEADER_FILE "<musepack/musepack.h>")
- FIND_LIBRARY(MUSE_LIBRARIES NAMES musepack )
-endif(MUSE_INCLUDE_DIR)
-
-include(FindPackageHandleStandardArgs)
+INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Muse DEFAULT_MSG MUSE_INCLUDE_DIR MUSE_LIBRARIES )
# show the MUSE_INCLUDE_DIR and MUSE_LIBRARIES variables only in the advanced view
--- trunk/extragear/multimedia/k3b/plugins/decoder/musepack/k3bmpc_config.h.cmake #1052484:1052485
@@ -1 +1,2 @@
#define MPC_HEADER_FILE ${MPC_HEADER_FILE}
+#cmakedefine MPC_OLD_API
--- trunk/extragear/multimedia/k3b/plugins/decoder/musepack/k3bmpcwrapper.cpp #1052484:1052485
@@ -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
}
--- trunk/extragear/multimedia/k3b/plugins/decoder/musepack/k3bmpcwrapper.h #1052484:1052485
@@ -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;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic