blob: 5455ced82f4c051233881dc3f931851e8fb3bcbb [file] [log] [blame]
http://bugs.gentoo.org/206939
http://pkgs.fedoraproject.org/cgit/cdrkit.git/tree/cdrkit-1.1.11-paranoiacdda.patch modified because
we install headers to $includedir instead of $includedir/cdda
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -1,3 +1,3 @@
PROJECT (cdrkit C)
-SUBDIRS(include genisoimage wodim libedc libhfs_iso libparanoia icedax libusal librols libunls readom netscsid 3rd-party/dirsplit)
+SUBDIRS(include genisoimage wodim libedc libhfs_iso icedax libusal librols libunls readom netscsid 3rd-party/dirsplit)
--- icedax/CMakeLists.txt
+++ icedax/CMakeLists.txt
@@ -1,8 +1,9 @@
PROJECT (icedax C)
-INCLUDE_DIRECTORIES(../include ../wodim ../libparanoia ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/include)
+INCLUDE_DIRECTORIES(../include ../wodim ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/include)
include(../include/AddScgBits.cmake)
include(../include/AddSchilyBits.cmake)
include(../include/AddNetworkBits.cmake)
+INCLUDE (CheckLibraryExists)
FIND_FILE (HAVE_SYS_SOUNDCARD_H sys/soundcard.h)
IF(HAVE_SYS_SOUNDCARD_H)
@@ -18,12 +19,20 @@ IF(HAVE_LIBOSSAUDIO)
LIST(APPEND EXTRA_LIBS "ossaudio")
ENDIF(HAVE_LIBOSSAUDIO)
-LIST(APPEND EXTRA_LIBS paranoia)
+CHECK_INCLUDE_FILES(cdda_interface.h HAVE_CDDA_INTERFACE_H)
+CHECK_LIBRARY_EXISTS (cdda_paranoia paranoia_init "" HAVE_LIBPARANOIA)
+IF(HAVE_CDDA_INTERFACE_H AND HAVE_LIBPARANOIA)
+ LIST(APPEND EXTRA_LIBS cdda_paranoia cdda_interface)
+ELSE(HAVE_CDDA_INTERFACE_H AND HAVE_LIBPARANOIA)
+ MESSAGE(FATAL_ERROR "You need cdparanoia library installed")
+ENDIF(HAVE_CDDA_INTERFACE_H AND HAVE_LIBPARANOIA)
+
+LIST(APPEND EXTRA_LIBS)
IF (WIN32)
LIST(APPEND EXTRA_LIBS winmm)
ENDIF (WIN32)
-LINK_DIRECTORIES(../librols ../libusal ../libparanoia)
+LINK_DIRECTORIES(../librols ../libusal)
ADD_EXECUTABLE (icedax aifc.c aiff.c base64.c icedax.c interface.c ioctl.c raw.c resample.c ringbuff.c scsi_cmds.c semshm.c setuid.c sha_func.c sndconfig.c sun.c toc.c wav.c)
TARGET_LINK_LIBRARIES(icedax wodimstuff ${EXTRA_LIBS})
SET_TARGET_PROPERTIES(icedax PROPERTIES SKIP_BUILD_RPATH TRUE)
--- icedax/global.h
+++ icedax/global.h
@@ -17,7 +17,8 @@
#include "md5.h"
#endif
#ifdef USE_PARANOIA
-#include "cdda_paranoia.h"
+#include <cdda_interface.h>
+#include <cdda_paranoia.h>
#endif
typedef struct index_list
@@ -102,10 +103,10 @@ typedef struct global
struct paranoia_parms_t
{
- Ucbit disable_paranoia:1;
- Ucbit disable_extra_paranoia:1;
- Ucbit disable_scratch_detect:1;
- Ucbit disable_scratch_repair:1;
+ char disable_paranoia:1;
+ char disable_extra_paranoia:1;
+ char disable_scratch_detect:1;
+ char disable_scratch_repair:1;
int retries;
int overlap;
int mindynoverlap;
--- icedax/icedax.c
+++ icedax/icedax.c
@@ -120,6 +120,10 @@
#ifdef USE_LAME
#include "mp3.h" /* mp3 file handling */
#endif
+#ifdef USE_PARANOIA
+#include <cdda_interface.h>
+#include <cdda_paranoia.h>
+#endif
#include "interface.h" /* low level cdrom interfacing */
#include "icedax.h"
#include "resample.h"
@@ -128,9 +132,6 @@
#include "ringbuff.h"
#include "global.h"
#include "exitcodes.h"
-#ifdef USE_PARANOIA
-#include "cdda_paranoia.h"
-#endif
#include "defaults.h"
static void RestrictPlaybackRate(long newrate);
@@ -800,7 +801,7 @@ static void init_globals()
global.useroverlap = -1; /* amount of overlapping sectors user override */
global.need_hostorder = 0; /* processing needs samples in host endianess */
global.in_lendian = -1; /* input endianess from SetupSCSI() */
- global.outputendianess = NONE; /* user specified output endianess */
+ global.outputendianess = NONE_EN; /* user specified output endianess */
global.findminmax = 0; /* flag find extrem amplitudes */
#ifdef HAVE_LIMITS_H
global.maxamp[0] = INT_MIN; /* maximum amplitude */
@@ -2418,7 +2419,7 @@ Rate Divider Rate Divider
if (bulk == -1) bulk = 0;
global.need_big_endian = global.audio_out->need_big_endian;
- if (global.outputendianess != NONE)
+ if (global.outputendianess != NONE_EN)
global.need_big_endian = global.outputendianess == BIG;
if (global.no_file) global.fname_base[0] = '\0';
@@ -2602,7 +2603,7 @@ Rate Divider Rate Divider
fputs( ", soundcard", stderr );
#endif
#if defined USE_PARANOIA
- fputs( ", libparanoia", stderr );
+ fputs( ", libcdda_paranoia", stderr );
#endif
fputs( " support\n", stderr );
}
@@ -2892,8 +2893,28 @@ Rate Divider Rate Divider
#ifdef USE_PARANOIA
if (global.paranoia_selected) {
long paranoia_mode;
+ cdrom_drive *tmpdrive;
+ usal_close(get_scsi_p());
- global.cdp = paranoia_init(get_scsi_p(), global.nsectors);
+ tmpdrive = cdda_identify(global.dev_name, 0, NULL);
+ if (!tmpdrive)
+ {
+ fputs("Can't identify disc\n", stderr);
+ return 1;
+ }
+
+ if(global.nsectors)
+ {
+ tmpdrive->nsectors = global.nsectors;
+ tmpdrive->bigbuff = global.nsectors * CD_FRAMESIZE_RAW;
+ }
+ if (cdda_open(tmpdrive) != 0)
+ {
+ fputs("Can't open disc\n", stderr);
+ cdda_close(tmpdrive);
+ return 1;
+ }
+ global.cdp = paranoia_init(tmpdrive);
if (global.paranoia_parms.overlap >= 0) {
int overlap = global.paranoia_parms.overlap;
@@ -2902,17 +2923,7 @@ Rate Divider Rate Divider
overlap = global.nsectors - 1;
paranoia_overlapset(global.cdp, overlap);
}
- /*
- * Default to a minimum of dynamic overlapping == 0.5 sectors.
- * If we don't do this, we get the default from libparanoia
- * which is approx. 0.1.
- */
- if (global.paranoia_parms.mindynoverlap < 0)
- paranoia_dynoverlapset(global.cdp, CD_FRAMEWORDS/2, -1);
- paranoia_dynoverlapset(global.cdp,
- global.paranoia_parms.mindynoverlap * CD_FRAMEWORDS,
- global.paranoia_parms.maxdynoverlap * CD_FRAMEWORDS);
-
+
paranoia_mode = PARANOIA_MODE_FULL ^ PARANOIA_MODE_NEVERSKIP;
if (global.paranoia_parms.disable_paranoia) {
--- icedax/icedax.h
+++ icedax/icedax.h
@@ -41,7 +41,7 @@
/* Endianess */
#define GUESS (-2)
-#define NONE (-1)
+#define NONE_EN (-1)
#define LITTLE 0
#define BIG 1
--- icedax/interface.c
+++ icedax/interface.c
@@ -116,7 +116,7 @@ int (*Play_at)(SCSI *usalp, unsigned in
int (*StopPlay)(SCSI *usalp);
void (*trash_cache)(UINT4 *p, unsigned lSector, unsigned SectorBurstVal);
-#if defined USE_PARANOIA
+#if 0 //defined USE_PARANOIA
long cdda_read(void *d, void *buffer, long beginsector, long sectors);
long cdda_read(void *d, void *buffer, long beginsector, long sectors)
--- icedax/toc.c
+++ icedax/toc.c
@@ -379,8 +379,7 @@ static void emit_cddb_form(char *fname_b
static void emit_cdindex_form(char *fname_baseval);
#endif
-
-typedef struct TOC { /* structure of table of contents (cdrom) */
+typedef struct TOC_t { /* structure of table of contents (cdrom) */
unsigned char reserved1;
unsigned char bFlags;
unsigned char bTrack;
@@ -391,8 +390,7 @@ typedef struct TOC { /* structure of tab
int frms;
unsigned char ISRC[16];
int SCMS;
-} TOC;
-
+} TOC_t;
/* Flags contains two fields:
bits 7-4 (ADR)
@@ -432,7 +430,7 @@ struct iterator {
int index;
int startindex;
void (*reset)(struct iterator *this);
- struct TOC *(*getNextTrack)(struct iterator *this);
+ struct TOC_t *(*getNextTrack)(struct iterator *this);
int (*hasNextTrack)(struct iterator *this);
};
@@ -518,7 +516,7 @@ unsigned FixupTOC(unsigned no_tracks)
InitIterator(&i, 1);
while (i.hasNextTrack(&i)) {
- struct TOC *p = i.getNextTrack(&i);
+ struct TOC_t *p = i.getNextTrack(&i);
if (IS__AUDIO(p)) count_audio_tracks++;
}
@@ -733,7 +731,7 @@ static void emit_cddb_form(char *fname_b
fprintf( cddb_form, "# Track frame offsets:\n#\n");
while (i.hasNextTrack(&i)) {
- struct TOC *p = i.getNextTrack(&i);
+ struct TOC_t *p = i.getNextTrack(&i);
if (GETTRACK(p) == CDROM_LEADOUT) break;
fprintf( cddb_form,
"# %lu\n", 150 + Get_AudioStartSector(GETTRACK(p)));
@@ -765,7 +763,7 @@ static void emit_cddb_form(char *fname_b
i.reset(&i);
while (i.hasNextTrack(&i)) {
- struct TOC *p = i.getNextTrack(&i);
+ struct TOC_t *p = i.getNextTrack(&i);
int ii;
ii = GETTRACK(p);
@@ -788,7 +786,7 @@ static void emit_cddb_form(char *fname_b
i.reset(&i);
while (i.hasNextTrack(&i)) {
- struct TOC *p = i.getNextTrack(&i);
+ struct TOC_t *p = i.getNextTrack(&i);
int ii;
ii = GETTRACK(p);
@@ -1495,7 +1493,7 @@ static int IsSingleArtist(void)
InitIterator(&i, 1);
while (i.hasNextTrack(&i)) {
- struct TOC *p = i.getNextTrack(&i);
+ struct TOC_t *p = i.getNextTrack(&i);
int ii;
if (IS__DATA(p) || GETTRACK(p) == CDROM_LEADOUT) continue;
@@ -1681,7 +1679,7 @@ static void emit_cdindex_form(char *fnam
global.creator ? ascii2html(global.creator) : "");
while (i.hasNextTrack(&i)) {
- struct TOC *p = i.getNextTrack(&i);
+ struct TOC_t *p = i.getNextTrack(&i);
int ii = GETTRACK(p);
if (ii == CDROM_LEADOUT) break;
@@ -1703,7 +1701,7 @@ static void emit_cdindex_form(char *fnam
fprintf( cdindex_form, " <MultipleArtistCD>\n");
while (i.hasNextTrack(&i)) {
- struct TOC *p = i.getNextTrack(&i);
+ struct TOC_t *p = i.getNextTrack(&i);
int ii = GETTRACK(p);
if (ii == CDROM_LEADOUT) break;
@@ -1942,9 +1940,9 @@ static void DisplayToc_with_gui(unsigned
if ((global.verbose & (SHOW_TOC | SHOW_STARTPOSITIONS | SHOW_SUMMARY | SHOW_TITLES)) != 0
&& i.hasNextTrack(&i)) {
- TOC *o = i.getNextTrack(&i);
+ TOC_t *o = i.getNextTrack(&i);
while (i.hasNextTrack(&i)) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
int from;
from = GETTRACK(o);
@@ -2072,9 +2070,9 @@ static void DisplayToc_no_gui(unsigned l
count_audio_trks = 0;
if (i.hasNextTrack(&i)) {
- TOC *o = i.getNextTrack(&i);
+ TOC_t *o = i.getNextTrack(&i);
while (i.hasNextTrack(&i)) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
int from;
from = GETTRACK(o);
@@ -2131,10 +2129,10 @@ static void DisplayToc_no_gui(unsigned l
i.reset(&i);
if ((global.verbose & SHOW_TOC) != 0 &&
i.hasNextTrack(&i)) {
- TOC *o = i.getNextTrack(&i);
+ TOC_t *o = i.getNextTrack(&i);
for (; i.hasNextTrack(&i);) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
if ( GETTRACK(o) <= MAXTRK ) {
unsigned char brace1, brace2;
@@ -2189,9 +2187,9 @@ static void DisplayToc_no_gui(unsigned l
ii = 0;
i.reset(&i);
if (i.hasNextTrack(&i)) {
- TOC *o = i.getNextTrack(&i);
+ TOC_t *o = i.getNextTrack(&i);
for ( ; i.hasNextTrack(&i);) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
fprintf ( stderr,
" %2u.(%8u)",
GETTRACK(o),
@@ -2248,7 +2246,7 @@ static void DisplayToc_no_gui(unsigned l
i.reset(&i);
for ( ; i.hasNextTrack(&i);) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
int jj = GETTRACK(p);
if ( global.tracktitle[jj] != NULL ) {
@@ -2260,7 +2258,7 @@ static void DisplayToc_no_gui(unsigned l
i.reset(&i);
for ( ; i.hasNextTrack(&i); ) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
int jj;
if (IS__DATA(p))
@@ -2720,7 +2718,7 @@ void Read_MCN_ISRC(void)
InitIterator(&i, 1);
while (i.hasNextTrack(&i)) {
- struct TOC *p = i.getNextTrack(&i);
+ struct TOC_t *p = i.getNextTrack(&i);
unsigned ii = GETTRACK(p);
if (ii == CDROM_LEADOUT) break;
@@ -3155,7 +3153,7 @@ unsigned ScanIndices(unsigned track, uns
while (i.hasNextTrack(&i)) {
- struct TOC *p = i.getNextTrack(&i);
+ struct TOC_t *p = i.getNextTrack(&i);
unsigned ii = GETTRACK(p);
if ( ii < starttrack || IS__DATA(p) )
@@ -3322,7 +3320,7 @@ unsigned char *Get_MCN(void)
}
-static TOC g_toc [MAXTRK+1]; /* hidden track + 100 regular tracks */
+static TOC_t g_toc [MAXTRK+1]; /* hidden track + 100 regular tracks */
/*#define IS_AUDIO(i) (!(g_toc[i].bFlags & 0x40))*/
@@ -3397,10 +3395,10 @@ static int patch_cd_extra(unsigned track
static int restrict_tracks_illleadout(void)
{
- struct TOC *o = &g_toc[cdtracks+1];
+ struct TOC_t *o = &g_toc[cdtracks+1];
int i;
for (i = cdtracks; i >= 0; i--) {
- struct TOC *p = &g_toc[i];
+ struct TOC_t *p = &g_toc[i];
if (GETSTART(o) > GETSTART(p)) break;
}
patch_cd_extra(i+1, GETSTART(o));
@@ -3523,7 +3521,7 @@ static void it_reset(struct iterator *th
static int it_hasNextTrack(struct iterator *this);
-static struct TOC *it_getNextTrack(struct iterator *this);
+static struct TOC_t *it_getNextTrack(struct iterator *this);
static int it_hasNextTrack(struct iterator *this)
{
@@ -3532,7 +3530,7 @@ static int it_hasNextTrack(struct iterat
-static struct TOC *it_getNextTrack(struct iterator *this)
+static struct TOC_t *it_getNextTrack(struct iterator *this)
{
/* if ( (*this->hasNextTrack)(this) == 0 ) return NULL; */
if ( this->index > (int)cdtracks+1 ) return NULL;
@@ -3583,7 +3581,7 @@ long Get_AudioStartSector(unsigned long
if (p_track == cdtracks + 1) p_track = CDROM_LEADOUT;
while (i.hasNextTrack(&i)) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
if (GETTRACK(p) == p_track) {
if (IS__DATA(p)) {
@@ -3613,7 +3611,7 @@ long Get_StartSector(unsigned long p_tra
if (p_track == cdtracks + 1) p_track = CDROM_LEADOUT;
while (i.hasNextTrack(&i)) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
if (GETTRACK(p) == p_track) {
return GETSTART(p);
@@ -3637,7 +3635,7 @@ long Get_EndSector(unsigned long p_track
if (p_track == cdtracks + 1) p_track = CDROM_LEADOUT;
while (i.hasNextTrack(&i)) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
if (GETTRACK(p) == p_track) {
p = i.getNextTrack(&i);
if (p == NULL) {
@@ -3669,7 +3667,7 @@ long FirstAudioTrack(void)
else i.reset(&i);
while (i.hasNextTrack(&i)) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
unsigned ii = GETTRACK(p);
if (ii == CDROM_LEADOUT) break;
@@ -3687,7 +3685,7 @@ long FirstDataTrack(void)
else i.reset(&i);
while (i.hasNextTrack(&i)) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
if (IS__DATA(p)) {
return GETTRACK(p);
}
@@ -3708,7 +3706,7 @@ long LastAudioTrack(void)
else i.reset(&i);
while (i.hasNextTrack(&i)) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
if (IS__AUDIO(p) && (GETTRACK(p) != CDROM_LEADOUT)) {
j = GETTRACK(p);
}
@@ -3730,7 +3728,7 @@ long Get_LastSectorOnCd(unsigned long p_
if (p_track == cdtracks + 1) p_track = CDROM_LEADOUT;
while (i.hasNextTrack(&i)) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
if (GETTRACK(p) < p_track)
continue;
@@ -3749,9 +3747,9 @@ int Get_Track(unsigned long sector)
else i.reset(&i);
if (i.hasNextTrack(&i)) {
- TOC *o = i.getNextTrack(&i);
+ TOC_t *o = i.getNextTrack(&i);
while (i.hasNextTrack(&i)) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
if ((GETSTART(o) <= sector) && (GETSTART(p) > sector)) {
if (IS__DATA(o)) {
return -1;
@@ -3772,7 +3770,7 @@ int CheckTrackrange(unsigned long from,
else i.reset(&i);
while (i.hasNextTrack(&i)) {
- TOC *p = i.getNextTrack(&i);
+ TOC_t *p = i.getNextTrack(&i);
if (GETTRACK(p) < from)
continue;
@@ -3788,54 +3786,3 @@ int CheckTrackrange(unsigned long from,
return 0;
}
-#ifdef USE_PARANOIA
-long cdda_disc_firstsector(void *d);
-
-long cdda_disc_firstsector(void *d)
-{
- return Get_StartSector(FirstAudioTrack());
-}
-
-int cdda_tracks(void *d);
-
-int cdda_tracks(void *d)
-{
- return LastAudioTrack() - FirstAudioTrack() +1;
-}
-
-int cdda_track_audiop(void *d, int track);
-
-int cdda_track_audiop(void *d, int track)
-{
- return Get_Datatrack(track) == 0;
-}
-
-long cdda_track_firstsector(void *d, int track);
-
-long cdda_track_firstsector(void *d, int track)
-{
- return Get_AudioStartSector(track);
-}
-
-long cdda_track_lastsector(void *d, int track);
-
-long cdda_track_lastsector(void *d, int track)
-{
- return Get_EndSector(track);
-}
-
-long cdda_disc_lastsector(void *d);
-
-long cdda_disc_lastsector(void *d)
-{
- return Get_LastSectorOnCd(cdtracks) - 1;
-}
-
-int cdda_sector_gettrack(void *d,long sector);
-
-int cdda_sector_gettrack(void *d, long sector)
-{
- return Get_Track(sector);
-}
-
-#endif