2 * This file has been modified for the cdrkit suite.
4 * The behaviour and appearence of the program code below can differ to a major
5 * extent from the version distributed by the original author(s).
7 * For details, see Changelog file distributed with the cdrkit package. If you
8 * received this file from another source then ask the distributing person for
9 * a log of modifications.
13 /* @(#)cdda_paranoia.h 1.20 04/02/20 J. Schilling from cdparanoia-III-alpha9.8 */
15 * Modifications to make the code portable Copyright (c) 2002 J. Schilling
18 * CopyPolicy: GNU Public License 2 applies
19 * Copyright (C) by Monty (xiphmont@mit.edu)
23 #ifndef _CDROM_PARANOIA_H
24 #define _CDROM_PARANOIA_H
37 #define CD_FRAMESIZE_RAW 2352
38 #define CD_FRAMEWORDS (CD_FRAMESIZE_RAW/2)
41 * Second parameter of the callback function
43 #define PARANOIA_CB_READ 0 /* Read off adjust ??? */
44 #define PARANOIA_CB_VERIFY 1 /* Verifying jitter */
45 #define PARANOIA_CB_FIXUP_EDGE 2 /* Fixed edge jitter */
46 #define PARANOIA_CB_FIXUP_ATOM 3 /* Fixed atom jitter */
47 #define PARANOIA_CB_SCRATCH 4 /* Unsupported */
48 #define PARANOIA_CB_REPAIR 5 /* Unsupported */
49 #define PARANOIA_CB_SKIP 6 /* Skip exhausted retry */
50 #define PARANOIA_CB_DRIFT 7 /* Drift detected */
51 #define PARANOIA_CB_BACKOFF 8 /* Unsupported */
52 #define PARANOIA_CB_OVERLAP 9 /* Dyn Overlap adjust */
53 #define PARANOIA_CB_FIXUP_DROPPED 10 /* Fixed dropped bytes */
54 #define PARANOIA_CB_FIXUP_DUPED 11 /* Fixed duplicate bytes */
55 #define PARANOIA_CB_READERR 12 /* Hard read error */
58 * Cdparanoia modes to be set with paranoia_modeset()
60 #define PARANOIA_MODE_FULL 0xFF
61 #define PARANOIA_MODE_DISABLE 0
63 #define PARANOIA_MODE_VERIFY 1 /* Verify data integrity in overlap area */
64 #define PARANOIA_MODE_FRAGMENT 2 /* unsupported */
65 #define PARANOIA_MODE_OVERLAP 4 /* Perform overlapped reads */
66 #define PARANOIA_MODE_SCRATCH 8 /* unsupported */
67 #define PARANOIA_MODE_REPAIR 16 /* unsupported */
68 #define PARANOIA_MODE_NEVERSKIP 32 /* Do not skip failed reads (retry maxretries) */
72 typedef void cdrom_paranoia;
76 * The interface from libcdparanoia to the high level caller
78 extern cdrom_paranoia *paranoia_init(void * d, int nsectors);
79 extern void paranoia_dynoverlapset(cdrom_paranoia * p, int minoverlap,
81 extern void paranoia_modeset(cdrom_paranoia * p, int mode);
82 extern long paranoia_seek(cdrom_paranoia * p, long seek, int mode);
83 extern Int16_t *paranoia_read(cdrom_paranoia * p, void (*callback) (long, int));
84 extern Int16_t *paranoia_read_limited(cdrom_paranoia * p,
85 void (*callback) (long, int),
87 extern void paranoia_free(cdrom_paranoia * p);
88 extern void paranoia_overlapset(cdrom_paranoia * p, long overlap);
91 #define memmove(dst, src, size) movebytes((src), (dst), (size))
96 * The callback interface from libparanoia to the CD-ROM interface
98 extern long cdda_disc_firstsector(void *d); /* -> long sector */
99 extern long cdda_disc_lastsector(void *d); /* -> long sector */
100 /* -> long sectors */
101 extern long cdda_read(void *d, void *buffer, long beginsector, long sectors);
102 extern int cdda_sector_gettrack(void *d, long sector); /* -> int trackno */
103 extern int cdda_track_audiop(void *d, int track); /* -> int Is audiotrack */
104 extern long cdda_track_firstsector(void *d, int track); /* -> long sector */
105 extern long cdda_track_lastsector(void *d, int track); /* -> long sector */
106 extern int cdda_tracks(void *d); /* -> int tracks */
108 #endif /* _CDROM_PARANOIA_H */