1
/***************************************************************************
2
* scsi-read-toc-pma-atip.h
4
* Fri Oct 27 08:16:39 2006
5
* Copyright 2006 Rouquier Philippe
6
* <Rouquier Philippe@localhost.localdomain>
7
****************************************************************************/
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation; either version 2 of the License, or
13
* (at your option) any later version.
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU Library General Public License for more details.
20
* You should have received a copy of the GNU General Public License
21
* along with this program; if not, write to the Free Software
22
* Foundation, Inc., 51 Franklin Street, Fifth Floor Boston, MA 02110-1301, USA
27
#include "scsi-base.h"
29
#ifndef _SCSI_READ_TOC_PMA_ATIP_H
30
#define _SCSI_READ_TOC_PMA_ATIP_H
34
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
36
struct _BraseroScsiTocPmaAtipHdr {
39
uchar first_track_session;
40
uchar last_track_session;
43
struct _BraseroScsiTocDesc {
46
uchar control :4; /* BraseroScsiTrackMode */
47
uchar adr :4; /* BraseroScsiQSubChannelProgAreaMode */
52
uchar track_start [4];
55
struct _BraseroScsiRawTocDesc {
58
uchar control :4; /* BraseroScsiTrackMode */
59
uchar adr :4; /* BraseroScsiQSubChannelLeadinMode */
61
/* Q sub-channel data */
64
uchar point; /* BraseroScsiQSubChannelLeadinMode5 or BraseroScsiQSubChannelLeadinMode1 */
75
struct _BraseroScsiPmaDesc {
78
uchar control :4; /* BraseroScsiTrackMode */
79
uchar adr :4; /* BraseroScsiQSubChannelPmaMode */
81
uchar track_num; /* always 0 */
83
uchar point; /* see BraseroScsiQSubChannelPmaMode */
94
struct _BraseroScsiAtipDesc {
95
uchar reference_speed :3; /* 1 */
97
uchar indicative_target_wrt_pwr :4;
99
uchar reserved1 :6; /* 2 */
100
uchar unrestricted_use :1;
103
uchar A3_valid :1; /* 3 */
106
uchar disc_sub_type :3;
110
uchar reserved2; /* 4 */
115
uchar reserved3; /* 8 */
117
/* Additional capacity for high capacity CD-R,
118
* otherwise last possible leadout */
122
uchar reserved4; /* 12 */
124
/* Write strategy recording parameters.
125
* See MMC1 and MMC2 for a description. */
135
/* Be careful here since the following is only true for MMC3. That means
136
* if we use this size with a MMC1/2 drives it returns an error (invalid
137
* field). The following value is not really useful anyway. */
144
struct _BraseroScsiTocPmaAtipHdr {
147
uchar first_track_session;
148
uchar last_track_session;
151
struct _BraseroScsiTocDesc {
160
uchar track_start [4];
163
struct _BraseroScsiRawTocDesc {
182
struct _BraseroScsiPmaDesc {
201
struct _BraseroScsiAtipDesc {
202
uchar indicative_target_wrt_pwr :4;
204
uchar reference_speed :3;
207
uchar unrestricted_use :1;
212
uchar disc_sub_type :3;
219
uchar leadin_start_time_mn;
220
uchar leadin_start_time_sec;
221
uchar leadin_start_time_frame;
224
/* Additional capacity for high capacity CD-R,
225
* otherwise last possible leadout */
231
/* write strategy recording parameters */
247
typedef struct _BraseroScsiTocDesc BraseroScsiTocDesc;
248
typedef struct _BraseroScsiRawTocDesc BraseroScsiRawTocDesc;
249
typedef struct _BraseroScsiPmaDesc BraseroScsiPmaDesc;
250
typedef struct _BraseroScsiAtipDesc BraseroScsiAtipDesc;
252
typedef struct _BraseroScsiTocPmaAtipHdr BraseroScsiTocPmaAtipHdr;
254
/* multiple toc descriptors may be returned */
255
struct _BraseroScsiFormattedTocData {
256
BraseroScsiTocPmaAtipHdr hdr [1];
257
BraseroScsiTocDesc desc [0];
259
typedef struct _BraseroScsiFormattedTocData BraseroScsiFormattedTocData;
261
/* multiple toc descriptors may be returned */
262
struct _BraseroScsiRawTocData {
263
BraseroScsiTocPmaAtipHdr hdr [1];
264
BraseroScsiRawTocDesc desc [0];
266
typedef struct _BraseroScsiRawTocData BraseroScsiRawTocData;
268
/* multiple pma descriptors may be returned */
269
struct _BraseroScsiPmaData {
270
BraseroScsiTocPmaAtipHdr hdr [1];
271
BraseroScsiPmaDesc desc [0];
273
typedef struct _BraseroScsiPmaData BraseroScsiPmaData;
275
struct _BraseroScsiAtipData {
276
BraseroScsiTocPmaAtipHdr hdr [1];
277
BraseroScsiAtipDesc desc [1];
279
typedef struct _BraseroScsiAtipData BraseroScsiAtipData;
281
struct _BraseroScsiMultisessionData {
282
BraseroScsiTocPmaAtipHdr hdr [1];
283
BraseroScsiTocDesc desc [1];
285
typedef struct _BraseroScsiMultisessionData BraseroScsiMultisessionData;
288
BRASERO_SCSI_CD_TEXT_ALBUM_TITLE = 0x80,
289
BRASERO_SCSI_CD_TEXT_PERFORMER_NAME = 0x81,
290
BRASERO_SCSI_CD_TEXT_SONGWRITER_NAME = 0x82,
291
BRASERO_SCSI_CD_TEXT_COMPOSER_NAME = 0x83,
292
BRASERO_SCSI_CD_TEXT_ARRANGER_NAME = 0x84,
293
BRASERO_SCSI_CD_TEXT_ARTIST_NAME = 0x85,
294
BRASERO_SCSI_CD_TEXT_DISC_ID_INFO = 0x86,
295
BRASERO_SCSI_CD_TEXT_GENRE_ID_INFO = 0x87,
296
BRASERO_SCSI_CD_TEXT_TOC_1 = 0x88,
297
BRASERO_SCSI_CD_TEXT_TOC_2 = 0x89,
298
BRASERO_SCSI_CD_TEXT_RESERVED_1 = 0x8A,
299
BRASERO_SCSI_CD_TEXT_RESERVED_2 = 0x8B,
300
BRASERO_SCSI_CD_TEXT_RESERVED_3 = 0x8C,
301
BRASERO_SCSI_CD_TEXT_RESERVED_CONTENT = 0x8D,
302
BRASERO_SCSI_CD_TEXT_UPC_EAN_ISRC = 0x8E,
303
BRASERO_SCSI_CD_TEXT_BLOCK_SIZE = 0x8F,
304
} BraseroScsiCDTextPackType;
306
struct _BraseroScsiCDTextPackData {
313
uchar double_byte :1;
318
typedef struct _BraseroScsiCDTextPackData BraseroScsiCDTextPackData;
320
struct _BraseroScsiCDTextData {
321
BraseroScsiTocPmaAtipHdr hdr [1];
322
BraseroScsiCDTextPackData pack [0];
324
typedef struct _BraseroScsiCDTextData BraseroScsiCDTextData;
326
#define BRASERO_SCSI_TRACK_LEADOUT_START 0xAA
330
#endif /* _SCSI_READ_TOC_PMA_ATIP_H */