Imported Upstream version 1.1.11
[platform/upstream/cdrkit.git] / libparanoia / cdda_paranoia.h
1 /*
2  * This file has been modified for the cdrkit suite.
3  *
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).
6  *
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.
10  *
11  */
12
13 /* @(#)cdda_paranoia.h  1.20 04/02/20 J. Schilling from cdparanoia-III-alpha9.8 */
14 /*
15  *      Modifications to make the code portable Copyright (c) 2002 J. Schilling
16  */
17 /*
18  * CopyPolicy: GNU Public License 2 applies
19  * Copyright (C) by Monty (xiphmont@mit.edu)
20  *
21  */
22
23 #ifndef _CDROM_PARANOIA_H
24 #define _CDROM_PARANOIA_H
25
26 #ifndef _MCONFIG_H
27 #include <mconfig.h>
28 #endif
29 #ifndef _UTYPES_H
30 #include <utypes.h>
31 #endif
32
33 #ifndef __GNUC__
34 #define inline
35 #endif
36
37 #define CD_FRAMESIZE_RAW                2352
38 #define CD_FRAMEWORDS                   (CD_FRAMESIZE_RAW/2)
39
40 /*
41  * Second parameter of the callback function
42  */
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 */
56
57 /*
58  * Cdparanoia modes to be set with paranoia_modeset()
59  */
60 #define PARANOIA_MODE_FULL               0xFF
61 #define PARANOIA_MODE_DISABLE            0
62
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) */
69
70
71 #ifndef CDP_COMPILE
72 typedef void    cdrom_paranoia;
73 #endif
74
75 /*
76  * The interface from libcdparanoia to the high level caller
77  */
78 extern cdrom_paranoia   *paranoia_init(void * d, int nsectors);
79 extern void     paranoia_dynoverlapset(cdrom_paranoia * p, int minoverlap, 
80                                                                                           int maxoverlap);
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), 
86                                                                                                   int maxretries);
87 extern void     paranoia_free(cdrom_paranoia * p);
88 extern void     paranoia_overlapset(cdrom_paranoia * p, long overlap);
89
90 #ifndef HAVE_MEMMOVE
91 #define memmove(dst, src, size)         movebytes((src), (dst), (size))
92 #endif
93
94
95 /*
96  * The callback interface from libparanoia to the CD-ROM interface
97  */
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 */
107
108 #endif  /* _CDROM_PARANOIA_H */