Imported Upstream version 1.1.11
[platform/upstream/cdrkit.git] / icedax / icedax.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 /* @(#)icedax.h 1.4 00/02/13 Copyright 1998,1999,2000 Heiko Eissfeldt */
14 /***
15  * CopyPolicy: GNU Public License 2 applies
16  * Copyright (C) by Heiko Eissfeldt
17  *
18  * prototypes from cdda2wav.c
19  */
20
21 #ifdef max
22 #undef max
23 #endif
24 #ifdef min
25 #undef min
26 #endif
27 #define max(a,b) ((a) > (b) ? (a) : (b))
28 #define min(a,b) ((a) < (b) ? (a) : (b))
29
30
31 /* verbose levels */
32 #define SHOW_TOC        1
33 #define SHOW_SUMMARY    2
34 #define SHOW_INDICES    4
35 #define SHOW_MCN        8
36 #define SHOW_ISRC       16
37 #define SHOW_STARTPOSITIONS     32
38 #define SHOW_TITLES     64
39 #define SHOW_JUSTAUDIOTRACKS    128
40 #define SHOW_MAX        255
41
42 /* Endianess */
43 #define GUESS (-2)
44 #define NONE (-1)
45 #define LITTLE 0
46 #define BIG 1
47
48 void FatalError(const char *szMessage, ...);
49 void AnalyzeQchannel(unsigned frame);
50 long SamplesNeeded(long amount, long undersampling);
51 unsigned int get_current_track(void);
52
53 #if defined (sun) && !defined(SVR4)
54 #define  atexit(f) on_exit(f, 0)
55 #endif
56
57 #ifndef _LINUX_CDROM_H
58 #define _LINUX_CDROM_H
59
60 /*
61  * some fix numbers
62  */
63 #define CD_MINS             74 /* max. minutes per CD, not really a limit */
64 #define CD_SECS             60 /* seconds per minute */
65 #define CD_FRAMES           75 /* frames per second */
66
67 #define CD_SYNC_SIZE        12 /* 12 sync bytes per raw data frame, not transfered by the drive */
68 #define CD_HEAD_SIZE         4 /* header (address) bytes per raw data frame */
69 #define CD_SUBHEAD_SIZE      8 /* subheader bytes per raw XA data frame */
70 #define CD_XA_HEAD        (CD_HEAD_SIZE+CD_SUBHEAD_SIZE) /* "before data" part of raw XA frame */
71 #define CD_XA_SYNC_HEAD   (CD_SYNC_SIZE+CD_XA_HEAD)/* sync bytes + header of XA frame */
72
73 #define CD_FRAMESIZE      2048 /* bytes per frame, "cooked" mode */
74 #define CD_FRAMESIZE_RAW  2352 /* bytes per frame, "raw" mode */
75 /* most drives don't deliver everything: */
76 #define CD_FRAMESIZE_RAW1 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE) /* 2340 */
77 #define CD_FRAMESIZE_RAW0 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE-CD_HEAD_SIZE) /* 2336 */
78 /* Optics drive also has a 'read all' mode: */
79 #define CD_FRAMESIZE_RAWER 2646 /* bytes per frame */
80
81 #define CD_EDC_SIZE         4 /* bytes EDC per most raw data frame types */
82 #define CD_ZERO_SIZE        8 /* bytes zero per yellow book mode 1 frame */
83 #define CD_ECC_SIZE       276 /* bytes ECC per most raw data frame types */
84 #define CD_XA_TAIL        (CD_EDC_SIZE+CD_ECC_SIZE) /* "after data" part of raw XA frame */
85
86 #define CD_FRAMESIZE_SUB    96 /* subchannel data "frame" size */
87 #define CD_MSF_OFFSET      150 /* MSF numbering offset of first frame */
88
89 #define CD_CHUNK_SIZE       24 /* lowest-level "data bytes piece" */
90 #define CD_NUM_OF_CHUNKS    98 /* chunks per frame */
91
92 #define CD_FRAMESIZE_XA CD_FRAMESIZE_RAW1 /* obsolete name */
93 #define CD_BLOCK_OFFSET    CD_MSF_OFFSET /* obsolete name */
94
95 /*
96  * the raw frame layout:
97  *
98  * - audio (red):                  | audio_sample_bytes |
99  *                                 |        2352        |
100  *
101  * - data (yellow, mode1):         | sync - head - data - EDC - zero - ECC |
102  *                                 |  12  -   4  - 2048 -  4  -   8  - 276 |
103  *
104  * - data (yellow, mode2):         | sync - head - data |
105  *                                 |  12  -   4  - 2336 |
106  *
107  * - XA data (green, mode2 form1): | sync - head - sub - data - EDC - ECC |
108  *                                 |  12  -   4  -  8  - 2048 -  4  - 276 |
109  *
110  * - XA data (green, mode2 form2): | sync - head - sub - data - EDC |
111  *                                 |  12  -   4  -  8  - 2324 -  4  |
112  */
113
114
115 /*
116  * CD-ROM address types (cdrom_tocentry.cdte_format)
117  */
118 #if     !defined CDROM_LBA
119 #define CDROM_LBA 0x01 /* "logical block": first frame is #0 */
120 #define CDROM_MSF 0x02 /* "minute-second-frame": binary, not bcd here! */
121 #endif
122 /*
123  * bit to tell whether track is data or audio (cdrom_tocentry.cdte_ctrl)
124  */
125 #define CDROM_DATA_TRACK        0x04
126
127 /*
128  * The leadout track is always 0xAA, regardless of # of tracks on disc
129  */
130 #define CDROM_LEADOUT   0xAA
131
132 /*
133  * audio states (from SCSI-2, but seen with other drives, too)
134  */
135 #define CDROM_AUDIO_INVALID     0x00    /* audio status not supported */
136 #define CDROM_AUDIO_PLAY        0x11    /* audio play operation in progress */
137 #define CDROM_AUDIO_PAUSED      0x12    /* audio play operation paused */
138 #define CDROM_AUDIO_COMPLETED   0x13    /* audio play successfully completed */
139 #define CDROM_AUDIO_ERROR       0x14    /* audio play stopped due to error */
140 #define CDROM_AUDIO_NO_STATUS   0x15    /* no current audio status to return */
141
142 #ifdef FIVETWELVE
143 #define CDROM_MODE1_SIZE        512
144 #else
145 #define CDROM_MODE1_SIZE        2048
146 #endif /*FIVETWELVE*/
147 #define CDROM_MODE2_SIZE        2336
148
149 #endif
150