1 /* -*- tab-width: 8; c-basic-offset: 4 -*- */
3 * Header file for CD-ROM support
5 * Copyright 1994 Martin Ayotte
6 * Copyright 1999 Eric Pouech
7 * Copyright 2000 Andreas Mohr
10 #ifndef __WINE_CDROM_H__
11 #define __WINE_CDROM_H__
13 #ifndef __WINE_CONFIG_H
14 # error You must include config.h to use this header
20 #include "wine/windef16.h"
22 #ifdef HAVE_LINUX_CDROM_H
23 # include <linux/cdrom.h>
25 #ifdef HAVE_LINUX_UCDROM_H
26 # include <linux/ucdrom.h>
28 #ifdef HAVE_SYS_CDIO_H
29 # include <sys/cdio.h>
35 struct cdrom_subchnl sc
;
36 #elif defined(__FreeBSD__) || defined(__NetBSD__)
37 struct cd_sub_channel_info sc
;
39 /* those data reflect the cdaudio structure and
40 * don't change while playing
50 /* those data change while playing */
56 #define WINE_CDA_DONTKNOW 0x00
57 #define WINE_CDA_NOTREADY 0x01
58 #define WINE_CDA_OPEN 0x02
59 #define WINE_CDA_PLAY 0x03
60 #define WINE_CDA_STOP 0x04
61 #define WINE_CDA_PAUSE 0x05
63 int CDROM_Open(WINE_CDAUDIO
* wcda
, int drive
);
64 int CDROM_OpenDev(WINE_CDAUDIO
* wcda
);
65 int CDROM_GetMediaType(WINE_CDAUDIO
* wcda
, int parentdev
);
66 int CDROM_CloseDev(int dev
);
67 int CDROM_Close(WINE_CDAUDIO
* wcda
);
68 int CDROM_Reset(WINE_CDAUDIO
* wcda
, int parentdev
);
69 int CDROM_Audio_Play(WINE_CDAUDIO
* wcda
, DWORD start
, DWORD stop
, int parentdev
);
70 int CDROM_Audio_Stop(WINE_CDAUDIO
* wcda
, int parentdev
);
71 int CDROM_Audio_Pause(WINE_CDAUDIO
* wcda
, int pauseOn
, int parentdev
);
72 int CDROM_Audio_Seek(WINE_CDAUDIO
* wcda
, DWORD at
, int parentdev
);
73 int CDROM_SetDoor(WINE_CDAUDIO
* wcda
, int open
, int parentdev
);
74 UINT16
CDROM_Audio_GetNumberOfTracks(WINE_CDAUDIO
* wcda
, int parentdev
);
75 BOOL
CDROM_Audio_GetTracksInfo(WINE_CDAUDIO
* wcda
, int parentdev
);
76 BOOL
CDROM_Audio_GetCDStatus(WINE_CDAUDIO
* wcda
, int parentdev
);
77 WORD
CDROM_Data_FindBestVoldesc(int fd
);
78 DWORD
CDROM_Audio_GetSerial(WINE_CDAUDIO
* wcda
);
79 DWORD
CDROM_Data_GetSerial(WINE_CDAUDIO
* wcda
, int parentdev
);
80 DWORD
CDROM_GetSerial(int drive
);
81 DWORD
CDROM_GetLabel(int drive
, char *label
);
83 #define CDFRAMES_PERSEC 75
84 #define SECONDS_PERMIN 60
85 #define CDFRAMES_PERMIN ((CDFRAMES_PERSEC) * (SECONDS_PERMIN))
87 #ifndef CDROM_DATA_TRACK
88 #define CDROM_DATA_TRACK 0x04
91 #define CDROM_MSF_MINUTE(msf) ((BYTE)(msf))
92 #define CDROM_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8))
93 #define CDROM_MSF_FRAME(msf) ((BYTE)((msf)>>16))
95 #define CDROM_MAKE_MSF(m, s, f) ((DWORD)(((BYTE)(m) | \
97 (((DWORD)(BYTE)(f))<<16)))
99 /* values borrowed from Linux 2.2.x cdrom.h */
100 #define CDS_NO_INFO 0
101 #define CDS_AUDIO 100
102 #define CDS_DATA_1 101
103 #define CDS_DATA_2 102
104 #define CDS_XA_2_1 103
105 #define CDS_XA_2_2 104
106 #define CDS_MIXED 105