[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