|
1 <HTML |
|
2 ><HEAD |
|
3 ><TITLE |
|
4 >CDROM Examples</TITLE |
|
5 ><META |
|
6 NAME="GENERATOR" |
|
7 CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ |
|
8 "><LINK |
|
9 REL="HOME" |
|
10 TITLE="SDL Library Documentation" |
|
11 HREF="index.html"><LINK |
|
12 REL="UP" |
|
13 TITLE="Examples" |
|
14 HREF="guideexamples.html"><LINK |
|
15 REL="PREVIOUS" |
|
16 TITLE="Audio Examples" |
|
17 HREF="guideaudioexamples.html"><LINK |
|
18 REL="NEXT" |
|
19 TITLE="Time Examples" |
|
20 HREF="guidetimeexamples.html"></HEAD |
|
21 ><BODY |
|
22 CLASS="SECT1" |
|
23 BGCOLOR="#FFF8DC" |
|
24 TEXT="#000000" |
|
25 LINK="#0000ee" |
|
26 VLINK="#551a8b" |
|
27 ALINK="#ff0000" |
|
28 ><DIV |
|
29 CLASS="NAVHEADER" |
|
30 ><TABLE |
|
31 SUMMARY="Header navigation table" |
|
32 WIDTH="100%" |
|
33 BORDER="0" |
|
34 CELLPADDING="0" |
|
35 CELLSPACING="0" |
|
36 ><TR |
|
37 ><TH |
|
38 COLSPAN="3" |
|
39 ALIGN="center" |
|
40 >SDL Library Documentation</TH |
|
41 ></TR |
|
42 ><TR |
|
43 ><TD |
|
44 WIDTH="10%" |
|
45 ALIGN="left" |
|
46 VALIGN="bottom" |
|
47 ><A |
|
48 HREF="guideaudioexamples.html" |
|
49 ACCESSKEY="P" |
|
50 >Prev</A |
|
51 ></TD |
|
52 ><TD |
|
53 WIDTH="80%" |
|
54 ALIGN="center" |
|
55 VALIGN="bottom" |
|
56 >Chapter 4. Examples</TD |
|
57 ><TD |
|
58 WIDTH="10%" |
|
59 ALIGN="right" |
|
60 VALIGN="bottom" |
|
61 ><A |
|
62 HREF="guidetimeexamples.html" |
|
63 ACCESSKEY="N" |
|
64 >Next</A |
|
65 ></TD |
|
66 ></TR |
|
67 ></TABLE |
|
68 ><HR |
|
69 ALIGN="LEFT" |
|
70 WIDTH="100%"></DIV |
|
71 ><DIV |
|
72 CLASS="SECT1" |
|
73 ><H1 |
|
74 CLASS="SECT1" |
|
75 ><A |
|
76 NAME="GUIDECDROMEXAMPLES" |
|
77 ></A |
|
78 >CDROM Examples</H1 |
|
79 ><P |
|
80 ></P |
|
81 ><DIV |
|
82 CLASS="SECT2" |
|
83 ><H2 |
|
84 CLASS="SECT2" |
|
85 ><A |
|
86 NAME="AEN393" |
|
87 ></A |
|
88 >Listing CD-ROM drives</H2 |
|
89 ><P |
|
90 ><PRE |
|
91 CLASS="PROGRAMLISTING" |
|
92 > #include "SDL.h" |
|
93 |
|
94 /* Initialize SDL first */ |
|
95 if ( SDL_Init(SDL_INIT_CDROM) < 0 ) { |
|
96 fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); |
|
97 exit(1); |
|
98 } |
|
99 atexit(SDL_Quit); |
|
100 |
|
101 /* Find out how many CD-ROM drives are connected to the system */ |
|
102 printf("Drives available: %d\n", SDL_CDNumDrives()); |
|
103 for ( i=0; i<SDL_CDNumDrives(); ++i ) { |
|
104 printf("Drive %d: \"%s\"\n", i, SDL_CDName(i)); |
|
105 }</PRE |
|
106 ></P |
|
107 ></DIV |
|
108 ><DIV |
|
109 CLASS="SECT2" |
|
110 ><H2 |
|
111 CLASS="SECT2" |
|
112 ><A |
|
113 NAME="AEN397" |
|
114 ></A |
|
115 >Opening the default drive</H2 |
|
116 ><P |
|
117 ><PRE |
|
118 CLASS="PROGRAMLISTING" |
|
119 > SDL_CD *cdrom; |
|
120 CDstatus status; |
|
121 char *status_str; |
|
122 |
|
123 cdrom = SDL_CDOpen(0); |
|
124 if ( cdrom == NULL ) { |
|
125 fprintf(stderr, "Couldn't open default CD-ROM drive: %s\n", |
|
126 SDL_GetError()); |
|
127 exit(2); |
|
128 } |
|
129 |
|
130 status = SDL_CDStatus(cdrom); |
|
131 switch (status) { |
|
132 case CD_TRAYEMPTY: |
|
133 status_str = "tray empty"; |
|
134 break; |
|
135 case CD_STOPPED: |
|
136 status_str = "stopped"; |
|
137 break; |
|
138 case CD_PLAYING: |
|
139 status_str = "playing"; |
|
140 break; |
|
141 case CD_PAUSED: |
|
142 status_str = "paused"; |
|
143 break; |
|
144 case CD_ERROR: |
|
145 status_str = "error state"; |
|
146 break; |
|
147 } |
|
148 printf("Drive status: %s\n", status_str); |
|
149 if ( status >= CD_PLAYING ) { |
|
150 int m, s, f; |
|
151 FRAMES_TO_MSF(cdrom->cur_frame, &m, &s, &f); |
|
152 printf("Currently playing track %d, %d:%2.2d\n", |
|
153 cdrom->track[cdrom->cur_track].id, m, s); |
|
154 }</PRE |
|
155 ></P |
|
156 ></DIV |
|
157 ><DIV |
|
158 CLASS="SECT2" |
|
159 ><H2 |
|
160 CLASS="SECT2" |
|
161 ><A |
|
162 NAME="AEN401" |
|
163 ></A |
|
164 >Listing the tracks on a CD</H2 |
|
165 ><P |
|
166 ><PRE |
|
167 CLASS="PROGRAMLISTING" |
|
168 > SDL_CD *cdrom; /* Assuming this has already been set.. */ |
|
169 int i; |
|
170 int m, s, f; |
|
171 |
|
172 SDL_CDStatus(cdrom); |
|
173 printf("Drive tracks: %d\n", cdrom->numtracks); |
|
174 for ( i=0; i<cdrom->numtracks; ++i ) { |
|
175 FRAMES_TO_MSF(cdrom->track[i].length, &m, &s, &f); |
|
176 if ( f > 0 ) |
|
177 ++s; |
|
178 printf("\tTrack (index %d) %d: %d:%2.2d\n", i, |
|
179 cdrom->track[i].id, m, s); |
|
180 }</PRE |
|
181 ></P |
|
182 ></DIV |
|
183 ><DIV |
|
184 CLASS="SECT2" |
|
185 ><H2 |
|
186 CLASS="SECT2" |
|
187 ><A |
|
188 NAME="AEN405" |
|
189 ></A |
|
190 >Play an entire CD</H2 |
|
191 ><P |
|
192 ><PRE |
|
193 CLASS="PROGRAMLISTING" |
|
194 > SDL_CD *cdrom; /* Assuming this has already been set.. */ |
|
195 |
|
196 // Play entire CD: |
|
197 if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) |
|
198 SDL_CDPlayTracks(cdrom, 0, 0, 0, 0); |
|
199 |
|
200 // Play last track: |
|
201 if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) { |
|
202 SDL_CDPlayTracks(cdrom, cdrom->numtracks-1, 0, 0, 0); |
|
203 } |
|
204 |
|
205 // Play first and second track and 10 seconds of third track: |
|
206 if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) |
|
207 SDL_CDPlayTracks(cdrom, 0, 0, 2, CD_FPS * 10);</PRE |
|
208 ></P |
|
209 ></DIV |
|
210 ></DIV |
|
211 ><DIV |
|
212 CLASS="NAVFOOTER" |
|
213 ><HR |
|
214 ALIGN="LEFT" |
|
215 WIDTH="100%"><TABLE |
|
216 SUMMARY="Footer navigation table" |
|
217 WIDTH="100%" |
|
218 BORDER="0" |
|
219 CELLPADDING="0" |
|
220 CELLSPACING="0" |
|
221 ><TR |
|
222 ><TD |
|
223 WIDTH="33%" |
|
224 ALIGN="left" |
|
225 VALIGN="top" |
|
226 ><A |
|
227 HREF="guideaudioexamples.html" |
|
228 ACCESSKEY="P" |
|
229 >Prev</A |
|
230 ></TD |
|
231 ><TD |
|
232 WIDTH="34%" |
|
233 ALIGN="center" |
|
234 VALIGN="top" |
|
235 ><A |
|
236 HREF="index.html" |
|
237 ACCESSKEY="H" |
|
238 >Home</A |
|
239 ></TD |
|
240 ><TD |
|
241 WIDTH="33%" |
|
242 ALIGN="right" |
|
243 VALIGN="top" |
|
244 ><A |
|
245 HREF="guidetimeexamples.html" |
|
246 ACCESSKEY="N" |
|
247 >Next</A |
|
248 ></TD |
|
249 ></TR |
|
250 ><TR |
|
251 ><TD |
|
252 WIDTH="33%" |
|
253 ALIGN="left" |
|
254 VALIGN="top" |
|
255 >Audio Examples</TD |
|
256 ><TD |
|
257 WIDTH="34%" |
|
258 ALIGN="center" |
|
259 VALIGN="top" |
|
260 ><A |
|
261 HREF="guideexamples.html" |
|
262 ACCESSKEY="U" |
|
263 >Up</A |
|
264 ></TD |
|
265 ><TD |
|
266 WIDTH="33%" |
|
267 ALIGN="right" |
|
268 VALIGN="top" |
|
269 >Time Examples</TD |
|
270 ></TR |
|
271 ></TABLE |
|
272 ></DIV |
|
273 ></BODY |
|
274 ></HTML |
|
275 > |