1<HTML 2><HEAD 3><TITLE 4>CDROM Examples</TITLE 5><META 6NAME="GENERATOR" 7CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+ 8"><LINK 9REL="HOME" 10TITLE="SDL Library Documentation" 11HREF="index.html"><LINK 12REL="UP" 13TITLE="Examples" 14HREF="guideexamples.html"><LINK 15REL="PREVIOUS" 16TITLE="Audio Examples" 17HREF="guideaudioexamples.html"><LINK 18REL="NEXT" 19TITLE="Time Examples" 20HREF="guidetimeexamples.html"></HEAD 21><BODY 22CLASS="SECT1" 23BGCOLOR="#FFF8DC" 24TEXT="#000000" 25LINK="#0000ee" 26VLINK="#551a8b" 27ALINK="#ff0000" 28><DIV 29CLASS="NAVHEADER" 30><TABLE 31SUMMARY="Header navigation table" 32WIDTH="100%" 33BORDER="0" 34CELLPADDING="0" 35CELLSPACING="0" 36><TR 37><TH 38COLSPAN="3" 39ALIGN="center" 40>SDL Library Documentation</TH 41></TR 42><TR 43><TD 44WIDTH="10%" 45ALIGN="left" 46VALIGN="bottom" 47><A 48HREF="guideaudioexamples.html" 49ACCESSKEY="P" 50>Prev</A 51></TD 52><TD 53WIDTH="80%" 54ALIGN="center" 55VALIGN="bottom" 56>Chapter 4. Examples</TD 57><TD 58WIDTH="10%" 59ALIGN="right" 60VALIGN="bottom" 61><A 62HREF="guidetimeexamples.html" 63ACCESSKEY="N" 64>Next</A 65></TD 66></TR 67></TABLE 68><HR 69ALIGN="LEFT" 70WIDTH="100%"></DIV 71><DIV 72CLASS="SECT1" 73><H1 74CLASS="SECT1" 75><A 76NAME="GUIDECDROMEXAMPLES" 77></A 78>CDROM Examples</H1 79><P 80></P 81><DIV 82CLASS="SECT2" 83><H2 84CLASS="SECT2" 85><A 86NAME="AEN393" 87></A 88>Listing CD-ROM drives</H2 89><P 90><PRE 91CLASS="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 109CLASS="SECT2" 110><H2 111CLASS="SECT2" 112><A 113NAME="AEN397" 114></A 115>Opening the default drive</H2 116><P 117><PRE 118CLASS="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 158CLASS="SECT2" 159><H2 160CLASS="SECT2" 161><A 162NAME="AEN401" 163></A 164>Listing the tracks on a CD</H2 165><P 166><PRE 167CLASS="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 184CLASS="SECT2" 185><H2 186CLASS="SECT2" 187><A 188NAME="AEN405" 189></A 190>Play an entire CD</H2 191><P 192><PRE 193CLASS="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 212CLASS="NAVFOOTER" 213><HR 214ALIGN="LEFT" 215WIDTH="100%"><TABLE 216SUMMARY="Footer navigation table" 217WIDTH="100%" 218BORDER="0" 219CELLPADDING="0" 220CELLSPACING="0" 221><TR 222><TD 223WIDTH="33%" 224ALIGN="left" 225VALIGN="top" 226><A 227HREF="guideaudioexamples.html" 228ACCESSKEY="P" 229>Prev</A 230></TD 231><TD 232WIDTH="34%" 233ALIGN="center" 234VALIGN="top" 235><A 236HREF="index.html" 237ACCESSKEY="H" 238>Home</A 239></TD 240><TD 241WIDTH="33%" 242ALIGN="right" 243VALIGN="top" 244><A 245HREF="guidetimeexamples.html" 246ACCESSKEY="N" 247>Next</A 248></TD 249></TR 250><TR 251><TD 252WIDTH="33%" 253ALIGN="left" 254VALIGN="top" 255>Audio Examples</TD 256><TD 257WIDTH="34%" 258ALIGN="center" 259VALIGN="top" 260><A 261HREF="guideexamples.html" 262ACCESSKEY="U" 263>Up</A 264></TD 265><TD 266WIDTH="33%" 267ALIGN="right" 268VALIGN="top" 269>Time Examples</TD 270></TR 271></TABLE 272></DIV 273></BODY 274></HTML 275>