[prev in list] [next in list] [prev in thread] [next in thread]
List: kde
Subject: [kde] Patch to kdemultimedia to use libcdio instead of cdparanoia
From: William Immendorf <will.immendorf () gmail ! com>
Date: 2011-06-19 15:52:58
Message-ID: BANLkTikT5SUjMQ=B6_+EKdUj7Y3C=RLGZA () mail ! gmail ! com
[Download RAW message or body]
Hello everyone,
I am a regular on the Linux from Scratch mailing lists, and someone
named Michael Uleysky sent a patch to make kdemultimedia use libcdio
instead of cdparanoia (because they provide equivalent functionality).
The patch is attached. However, I would like some improvements to be
done. I want kdemultimedia to use either libcdio or cdparanoia,
depending on which one exists, and on user preference. I don't know
CMake enough to do that, but if anyone would like to do that task, it
would be much appreciated.
The patch is in LFS format, apply with -Np1.
--
William Immendorf
The ultimate in free computing.
Messages in plain text, please, no HTML.
GPG key ID: 1697BE98
If it's not signed, it's not from me.
--
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
--
Are you a Gmail user? Please read this important notice:
http://www.fsf.org/campaigns/jstrap/gmail?31450.
["kdemultimedia-4.6.4-libcdio.patch" (text/x-patch)]
diff -urNd kdemultimedia-4.6.4/cmake/modules/FindCdparanoia.cmake \
kdemultimedia-4.6.4-libcdio/cmake/modules/FindCdparanoia.cmake
--- kdemultimedia-4.6.4/cmake/modules/FindCdparanoia.cmake 2011-01-20 \
08:22:40.000000000 +1000
+++ kdemultimedia-4.6.4-libcdio/cmake/modules/FindCdparanoia.cmake 2011-06-19 \
13:49:10.611760816 +1100 @@ -17,20 +17,31 @@
SET(CDPARANOIA_FOUND TRUE)
else (CDPARANOIA_INCLUDE_DIR AND CDPARANOIA_LIBRARIES)
+ IF (NOT WIN32)
+ # use pkg-config to get the directories and then use these values
+ # in the FIND_PATH() and FIND_LIBRARY() calls
+ FIND_PACKAGE(PkgConfig)
+ PKG_CHECK_MODULES(PC_CDPARANOIA QUIET libcdio_paranoia)
+ SET(CDPARANOIA_DEFINITIONS ${PC_CDPARANOIA_CFLAGS_OTHER})
+ ENDIF (NOT WIN32)
- FIND_PATH(CDPARANOIA_INCLUDE_DIR cdda_interface.h PATH_SUFFIXES cdda cdparanoia)
-
- FIND_LIBRARY(CDPARANOIA_LIBRARY NAMES cdda_paranoia)
- FIND_LIBRARY(CDPARANOIA_IF_LIBRARY NAMES cdda_interface)
-
- IF (CDPARANOIA_LIBRARY AND CDPARANOIA_IF_LIBRARY)
- SET(CDPARANOIA_LIBRARIES ${CDPARANOIA_LIBRARY} ${CDPARANOIA_IF_LIBRARY} "-lm")
- ENDIF (CDPARANOIA_LIBRARY AND CDPARANOIA_IF_LIBRARY)
+ FIND_PATH(CDPARANOIA_INCLUDE_DIR paranoia.h
+ HINTS
+ ${PC_CDPARANOIA_INCLUDEDIR}
+ ${PC_CDPARANOIA_INCLUDE_DIRS}
+ PATH_SUFFIXES cdio
+ )
+
+ FIND_LIBRARY(CDPARANOIA_LIBRARIES NAMES cdio_paranoia libcdio_paranoia
+ HINTS
+ ${PC_CDPARANOIA_LIBDIR}
+ ${PC_CDPARANOIA_LIBRARY_DIRS}
+ )
INCLUDE(FindPackageHandleStandardArgs)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(Cdparanoia DEFAULT_MSG
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(Libcdio DEFAULT_MSG
CDPARANOIA_LIBRARIES CDPARANOIA_INCLUDE_DIR)
- MARK_AS_ADVANCED(CDPARANOIA_INCLUDE_DIR CDPARANOIA_LIBRARY CDPARANOIA_IF_LIBRARY)
+ MARK_AS_ADVANCED(CDPARANOIA_INCLUDE_DIR)
endif (CDPARANOIA_INCLUDE_DIR AND CDPARANOIA_LIBRARIES)
diff -urNd kdemultimedia-4.6.4/kioslave/audiocd/audiocd.cpp \
kdemultimedia-4.6.4-libcdio/kioslave/audiocd/audiocd.cpp
--- kdemultimedia-4.6.4/kioslave/audiocd/audiocd.cpp 2011-01-20 08:23:34.000000000 \
+1000
+++ kdemultimedia-4.6.4-libcdio/kioslave/audiocd/audiocd.cpp 2011-06-19 \
13:42:24.296182196 +1100 @@ -28,12 +28,8 @@
#include <kdemacros.h>
extern "C"
{
- //cdda_interface.h in cdparanoia 10.2 has a member called 'private' which the C++ \
compiler doesn't like
- #define private _private
- #include <cdda_interface.h>
- #include <cdda_paranoia.h>
- #undef private
- void paranoiaCallback(long, int);
+ #include <paranoia.h>
+ void paranoiaCallback(long, paranoia_cb_mode_t);
KDE_EXPORT int kdemain(int argc, char ** argv);
}
@@ -116,24 +112,22 @@
cddbUserChoice = -1;
}
- bool tocsAreDifferent(struct cdrom_drive *drive)
+ bool tocsAreDifferent(cdrom_drive *drive)
{
if (tracks != (uint)drive->tracks) return true;
for (int i = 0; i < drive->tracks; ++i)
{
if (disc_toc[i].dwStartSector != drive->disc_toc[i].dwStartSector ||
- disc_toc[i].bFlags != drive->disc_toc[i].bFlags ||
disc_toc[i].bTrack != drive->disc_toc[i].bTrack) return true;
}
return false;
}
- void setToc(struct cdrom_drive *drive)
+ void setToc(cdrom_drive *drive)
{
for (int i = 0; i < drive->tracks; ++i)
{
disc_toc[i].dwStartSector = drive->disc_toc[i].dwStartSector;
- disc_toc[i].bFlags = drive->disc_toc[i].bFlags;
disc_toc[i].bTrack = drive->disc_toc[i].bTrack;
}
}
@@ -218,7 +212,7 @@
return encoderFromExtension(filename.right(len - pos));
}
-static void setDeviceToCd(KCompactDisc *cd, struct cdrom_drive *drive)
+static void setDeviceToCd(KCompactDisc *cd, cdrom_drive *drive)
{
#if defined(HAVE_CDDA_IOCTL_DEVICE)
cd->setDevice(QLatin1String( drive->ioctl_device_name ), 50, false);
@@ -264,7 +258,7 @@
#endif
}
-struct cdrom_drive * AudioCDProtocol::initRequest(const KUrl & url)
+cdrom_drive * AudioCDProtocol::initRequest(const KUrl & url)
{
if (url.hasHost())
{
@@ -279,7 +273,7 @@
// Then url parameters can overrule our settings.
parseURLArgs(url);
- struct cdrom_drive * drive = getDrive();
+ cdrom_drive * drive = getDrive();
if (0 == drive)
return 0;
@@ -426,7 +420,7 @@
return drive;
}
-bool AudioCDProtocol::getSectorsForRequest(struct cdrom_drive * drive, long & \
firstSector, long & lastSector) const +bool \
AudioCDProtocol::getSectorsForRequest(cdrom_drive * drive, long & firstSector, long & \
lastSector) const {
if (d->req_allTracks)
{ // we rip all the tracks of the CD
@@ -447,7 +441,7 @@
void AudioCDProtocol::get(const KUrl & url)
{
- struct cdrom_drive * drive = initRequest(url);
+ cdrom_drive * drive = initRequest(url);
if (!drive)
return;
@@ -534,7 +528,7 @@
void AudioCDProtocol::stat(const KUrl & url)
{
- struct cdrom_drive * drive = initRequest(url);
+ cdrom_drive * drive = initRequest(url);
if (!drive)
return;
@@ -609,7 +603,7 @@
void AudioCDProtocol::listDir(const KUrl & url)
{
- struct cdrom_drive * drive = initRequest(url);
+ cdrom_drive * drive = initRequest(url);
// Some error checking before proceeding
if (!drive)
@@ -726,7 +720,7 @@
finished();
}
-void AudioCDProtocol::addEntry(const QString& trackTitle, AudioCDEncoder *encoder, \
struct cdrom_drive * drive, int trackNo) +void AudioCDProtocol::addEntry(const \
QString& trackTitle, AudioCDEncoder *encoder, cdrom_drive * drive, int trackNo) {
if(!encoder || !drive)
return;
@@ -760,11 +754,11 @@
return encoder->size(length_seconds);
}
-struct cdrom_drive *AudioCDProtocol::getDrive()
+cdrom_drive *AudioCDProtocol::getDrive()
{
const QByteArray device(QFile::encodeName(d->device));
- struct cdrom_drive * drive = 0;
+ cdrom_drive * drive = 0;
if (!device.isEmpty() && device != "/" )
drive = cdda_identify(device, CDDA_MESSAGE_PRINTIT, 0);
@@ -806,7 +800,7 @@
}
void AudioCDProtocol::paranoiaRead(
- struct cdrom_drive * drive,
+ cdrom_drive * drive,
long firstSector,
long lastSector,
AudioCDEncoder* encoder,
@@ -1136,7 +1130,7 @@
* The higher the paranoia_read_limited_error the worse the problem is
* FYI: PARANOIA_CB_READ & PARANOIA_CB_VERIFY happen continusly when ripping
*/
-void paranoiaCallback(long, int function)
+void paranoiaCallback(long, paranoia_cb_mode_t function)
{
switch(function){
case PARANOIA_CB_VERIFY:
diff -urNd kdemultimedia-4.6.4/kioslave/audiocd/audiocd.h \
kdemultimedia-4.6.4-libcdio/kioslave/audiocd/audiocd.h
--- kdemultimedia-4.6.4/kioslave/audiocd/audiocd.h 2011-01-20 08:23:34.000000000 \
+1000
+++ kdemultimedia-4.6.4-libcdio/kioslave/audiocd/audiocd.h 2011-06-19 \
13:12:47.616189278 +1100 @@ -29,7 +29,7 @@
class AudioCDEncoder;
-struct cdrom_drive;
+//struct cdrom_drive;
namespace AudioCD {
@@ -53,7 +53,7 @@
AudioCDEncoder *encoderFromExtension(const QString& extension);
AudioCDEncoder *determineEncoder(const QString & filename);
- struct cdrom_drive *findDrive(bool &noPermission);
+ cdrom_drive *findDrive(bool &noPermission);
void parseURLArgs(const KUrl &);
void loadSettings();
@@ -64,7 +64,7 @@
* return false if the parameters are invalid (for instance,
* track number which does not exist on this CD)
*/
- bool getSectorsForRequest(struct cdrom_drive * drive,
+ bool getSectorsForRequest(cdrom_drive * drive,
long & firstSector, long & lastSector) const;
/**
@@ -78,7 +78,7 @@
* Reads data off the cd and then passes it to an encoder to encode
*/
void paranoiaRead(
- struct cdrom_drive * drive,
+ cdrom_drive * drive,
long firstSector,
long lastSector,
AudioCDEncoder* encoder,
@@ -86,7 +86,7 @@
unsigned long size
);
- struct cdrom_drive *initRequest(const KUrl &);
+ cdrom_drive *initRequest(const KUrl &);
/**
* Add an entry in the KIO directory, using the title you give,
@@ -101,7 +101,7 @@
* this function will do the right thing.
*/
void addEntry(const QString& trackTitle, AudioCDEncoder *encoder,
- struct cdrom_drive * drive, int trackNo);
+ cdrom_drive * drive, int trackNo);
class Private;
Private * d;
diff -urNd kdemultimedia-4.6.4/kioslave/audiocd/CMakeLists.txt \
kdemultimedia-4.6.4-libcdio/kioslave/audiocd/CMakeLists.txt
--- kdemultimedia-4.6.4/kioslave/audiocd/CMakeLists.txt 2011-01-20 08:23:34.000000000 \
+1000
+++ kdemultimedia-4.6.4-libcdio/kioslave/audiocd/CMakeLists.txt 2011-06-19 \
13:40:39.296201408 +1100 @@ -34,7 +34,7 @@
-target_link_libraries(kio_audiocd ${CDPARANOIA_LIBRARIES} ${KDE4_KIO_LIBS} \
audiocdplugins kcddb kcompactdisc) +target_link_libraries(kio_audiocd \
${CDPARANOIA_LIBRARIES} cdio_cdda cdio ${KDE4_KIO_LIBS} audiocdplugins kcddb \
kcompactdisc)
install(TARGETS kio_audiocd DESTINATION ${PLUGIN_INSTALL_DIR} )
diff -urNd kdemultimedia-4.6.4/kioslave/audiocd/plugins/wav/encodercda.cpp \
kdemultimedia-4.6.4-libcdio/kioslave/audiocd/plugins/wav/encodercda.cpp
--- kdemultimedia-4.6.4/kioslave/audiocd/plugins/wav/encodercda.cpp 2011-01-20 \
08:23:33.000000000 +1000
+++ kdemultimedia-4.6.4-libcdio/kioslave/audiocd/plugins/wav/encodercda.cpp 2011-06-19 \
13:43:28.066185535 +1100 @@ -42,10 +42,7 @@
// Remove this by calculating CD_FRAMESIZE_RAW from the frames
extern "C"
{
- //cdda_interface.h in cdparanoia 10.2 has a member called 'private' which the C++ \
compiler doesn't like
- #define private _private
- #include <cdda_interface.h>
- #undef private
+ #include <sector.h>
}
inline int16_t swap16 (int16_t i)
diff -urNd kdemultimedia-4.6.4/kioslave/CMakeLists.txt \
kdemultimedia-4.6.4-libcdio/kioslave/CMakeLists.txt
--- kdemultimedia-4.6.4/kioslave/CMakeLists.txt 2011-01-20 08:23:35.000000000 +1000
+++ kdemultimedia-4.6.4-libcdio/kioslave/CMakeLists.txt 2011-06-19 13:50:15.551774979 \
+1100 @@ -1,5 +1,5 @@
macro_optional_find_package(Cdparanoia)
-macro_log_feature(CDPARANOIA_FOUND "cdparanoia" "Reads digital audio directly from a \
CD, then writes the data to a file or pipe in several different formats" \
"http://www.xiph.org/paranoia/" FALSE "" "Required for building the AudioCD \
ioslave.") +macro_log_feature(CDPARANOIA_FOUND "libcdio" "Reads digital audio \
directly from a CD, then writes the data to a file or pipe in several different \
formats" "http://www.xiph.org/paranoia/" FALSE "" "Required for building the AudioCD \
ioslave.")
if (CDPARANOIA_FOUND)
___________________________________________________
This message is from the kde mailing list.
Account management: https://mail.kde.org/mailman/listinfo/kde.
Archives: http://lists.kde.org/.
More info: http://www.kde.org/faq.html.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic