[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-multimedia
Subject:    FLAC 1.1.3+ support
From:       Alex Merry <huntedhacker () tiscali ! co ! uk>
Date:       2007-12-18 16:10:53
Message-ID: 200712181610.59855.huntedhacker () tiscali ! co ! uk
[Download RAW message or body]

[Attachment #2 (multipart/signed)]

[Attachment #4 (multipart/mixed)]


The audiocd kioslave FLAC plugin doesn't currently build with a libFLAC 
newer that 1.1.2, due to API changes.  Given libFLAC is now up to 
1.2.1, this isn't very good.

The attached patch adds support for libFLAC > 1.1.2 (while retaining 
support for 1.1.2).

OK to commit?

Alex

PS: I'm not subscribed, so please CC me in replies.


-- 
KDE: http://www.kde.org
Ubuntu/Kubuntu: http://www.ubuntu.org http://www.kubuntu.org

["flac.diff" (text/x-diff)]

Index: kdelibs/cmake/modules/FindFlac.cmake
===================================================================
--- kdelibs/cmake/modules/FindFlac.cmake	(revision 749960)
+++ kdelibs/cmake/modules/FindFlac.cmake	(working copy)
@@ -5,6 +5,9 @@
 #  FLAC_INCLUDE_DIR - the Flac include directory
 #  FLAC_LIBRARIES - Link these to use Flac
 #  FLAC_OGGFLAC_LIBRARIES - Link these to use OggFlac
+#
+# No version checking is done - use FLAC_API_VERSION_CURRENT to
+# conditionally compile version-dependent code
 
 # Copyright (c) 2006, Laurent Montel, <montel@kde.org>
 # Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
@@ -23,18 +26,16 @@ FIND_LIBRARY(FLAC_LIBRARIES NAMES FLAC )
 
 FIND_LIBRARY(FLAC_OGG_LIBRARY NAMES OggFLAC)
 
-check_library_exists(FLAC FLAC__stream_encoder_set_write_callback "" \
                HAVE_STREAM_ENCODER_WRITE_CALLBACK)
-
 
 
-IF(FLAC_INCLUDE_DIR AND FLAC_LIBRARIES AND HAVE_STREAM_ENCODER_WRITE_CALLBACK)
+IF(FLAC_INCLUDE_DIR AND FLAC_LIBRARIES)
    SET(FLAC_FOUND TRUE)
    IF (FLAC_OGG_LIBRARY)
       SET(FLAC_OGGFLAC_LIBRARIES ${FLAC_OGG_LIBRARY} ${FLAC_LIBRARIES})
    ENDIF (FLAC_OGG_LIBRARY)
-ELSE(FLAC_INCLUDE_DIR AND FLAC_LIBRARIES AND HAVE_STREAM_ENCODER_WRITE_CALLBACK)
+ELSE(FLAC_INCLUDE_DIR AND FLAC_LIBRARIES)
    SET(FLAC_FOUND FALSE)
-ENDIF(FLAC_INCLUDE_DIR AND FLAC_LIBRARIES AND HAVE_STREAM_ENCODER_WRITE_CALLBACK)
+ENDIF(FLAC_INCLUDE_DIR AND FLAC_LIBRARIES)
 
 IF(FLAC_FOUND)
    IF(NOT Flac_FIND_QUIETLY)
Index: kdemultimedia/kioslave/audiocd/plugins/flac/encoderflac.cpp
===================================================================
--- kdemultimedia/kioslave/audiocd/plugins/flac/encoderflac.cpp	(revision 749997)
+++ kdemultimedia/kioslave/audiocd/plugins/flac/encoderflac.cpp	(working copy)
@@ -48,7 +48,16 @@ public:
     unsigned long data;
 };
 
-static FLAC__StreamEncoderWriteStatus WriteCallback(const FLAC__StreamEncoder \
*encoder, const FLAC__byte buffer[], unsigned bytes, unsigned samples, unsigned \
current_frame, void *client_data) +static FLAC__StreamEncoderWriteStatus \
WriteCallback(const FLAC__StreamEncoder *encoder, +                                   \
const FLAC__byte buffer[], +#if !defined(FLAC_API_VERSION_CURRENT) || \
FLAC_API_VERSION_CURRENT <= 7 +                                                    \
unsigned bytes, +#else
+                                                    size_t bytes,
+#endif
+                                                    unsigned samples,
+                                                    unsigned current_frame,
+                                                    void *client_data)
 {
     EncoderFLAC::Private *d = (EncoderFLAC::Private*)client_data;
 
@@ -110,9 +119,11 @@ unsigned long EncoderFLAC::size(long tim
 long EncoderFLAC::readInit(long size) {
     kDebug(7117) << "EncoderFLAC::readInit() called";
     d->data = 0;
+#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT <= 7
     FLAC__stream_encoder_set_write_callback(d->encoder, WriteCallback);
     FLAC__stream_encoder_set_metadata_callback(d->encoder, MetadataCallback);
     FLAC__stream_encoder_set_client_data(d->encoder, d);
+#endif
 
     // The options match approximely those of flac compression-level-3
     FLAC__stream_encoder_set_do_mid_side_stereo(d->encoder, true);
@@ -125,7 +136,11 @@ long EncoderFLAC::readInit(long size) {
     if (size > 0)
         FLAC__stream_encoder_set_total_samples_estimate(d->encoder, size/4);
 
+#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT <= 7
     FLAC__stream_encoder_init(d->encoder);
+#else
+    FLAC__stream_encoder_init_stream(d->encoder, WriteCallback, NULL, NULL, \
MetadataCallback, d); +#endif
     return d->data;
 }
 


["signature.asc" (application/pgp-signature)]

_______________________________________________
kde-multimedia mailing list
kde-multimedia@kde.org
https://mail.kde.org/mailman/listinfo/kde-multimedia


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic