#include "SDL.h"
/* まず SDL を初期化 */
if ( SDL_Init(SDL_INIT_CDROM) < 0 ) {
fprintf(stderr, "SDL が初期化できませんでした: %s\n",SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
/* システムに CD-ROM が何台接続されているかを調べる */
printf("利用可能なドライブ数: %d\n", SDL_CDNumDrives());
for ( i=0; i<SDL_CDNumDrives(); ++i ) {
printf("ドライブ %d: \"%s\"\n", i, SDL_CDName(i));
}
SDL_CD *cdrom;
CDstatus status;
char *status_str;
cdrom = SDL_CDOpen(0);
if ( cdrom == NULL ) {
fprintf(stderr, "デフォルト CD-ROM ドライブをオープンできませんでした: %s\n",
SDL_GetError());
exit(2);
}
status = SDL_CDStatus(cdrom);
switch (status) {
case CD_TRAYEMPTY:
status_str = "トレーが空";
break;
case CD_STOPPED:
status_str = "停止";
break;
case CD_PLAYING:
status_str = "再生";
break;
case CD_PAUSED:
status_str = "一時停止中";
break;
case CD_ERROR:
status_str = "エラー状態";
break;
}
printf("ドライブのステータス: %s\n", status_str);
if ( status >= CD_PLAYING ) {
int m, s, f;
FRAMES_TO_MSF(cdrom->cur_frame, &m, &s, &f);
printf("現在再生中のトラック %d, %d:%2.2d\n",
cdrom->track[cdrom->cur_track].id, m, s);
}
SDL_CD *cdrom; /* これはすでにセットされていると仮定 */
int i;
int m, s, f;
SDL_CDStatus(cdrom);
printf("ドライブのトラック数: %d\n", cdrom->numtracks);
for ( i=0; i<cdrom->numtracks; ++i ) {
FRAMES_TO_MSF(cdrom->track[i].length, &m, &s, &f);
if ( f > 0 )
++s;
printf("\tトラック (%d 番目) %d: %d:%2.2d\n", i,
cdrom->track[i].id, m, s);
}
SDL_CD *cdrom; /* これはすでにセットされていると仮定 */
// CD 全体を再生:
if ( CD_INDRIVE(SDL_CDStatus(cdrom)) )
SDL_CDPlayTracks(cdrom, 0, 0, 0, 0);
// 最後のトラックを再生:
if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) {
SDL_CDPlayTracks(cdrom, cdrom->numtracks-1, 0, 0, 0);
}
// 最初と 2 番目のトラック、そして 3 番目のトラックを 10 秒間再生:
if ( CD_INDRIVE(SDL_CDStatus(cdrom)) )
SDL_CDPlayTracks(cdrom, 0, 0, 2, CD_FPS * 10);