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

List:       kde-buildsystem
Subject:    FLAC test
From:       Alex Merry <huntedhacker () tiscali ! co ! uk>
Date:       2008-01-25 21:28:19
Message-ID: 3079584.zuFL8CGNRH () tiscali ! co ! uk
[Download RAW message or body]

The audiocd kioslave FLAC plugin doesn't currently build with a libFLAC 
newer than 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).

I tried asking on kde-multimedia, and got no reply for or against (it's v. low \
traffic, so I guess not many subscribers).  cartman (on IRC) suggested I try here.

Should I apply this, and if so should it go into branch?

Alex


["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;
 }
 



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


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

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