[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