SDL_syscdrom_c.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:6k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga
  4.     This library is free software; you can redistribute it and/or
  5.     modify it under the terms of the GNU Library General Public
  6.     License as published by the Free Software Foundation; either
  7.     version 2 of the License, or (at your option) any later version.
  8.     This library is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.     Library General Public License for more details.
  12.     You should have received a copy of the GNU Library General Public
  13.     License along with this library; if not, write to the Free
  14.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  15.     Sam Lantinga
  16.     slouken@libsdl.org
  17. */
  18. /* This is the MacOS specific header for the SDL CD-ROM API
  19.    Contributed by Matt Slot
  20.  */
  21. /* AppleCD Control calls */
  22. #define kVerifyTheDisc      5 /* Returns noErr if there is disc inserted */
  23. #define kEjectTheDisc      7 /* Eject disc from drive */
  24. #define kUserEject      80 /* Enable/disable the CD-ROM eject button */
  25. #define kReadTOC     100 /* Extract various TOC information from the disc */
  26. #define kReadQ    101 /* Extract Q subcode info for the current track */
  27. #define kAudioTrackSearch   103 /* Start playback from the indicated position */
  28. #define kAudioPlay     104 /* Start playback from the indicated position */
  29. #define kAudioPause     105 /* Pause/continue the playback */
  30. #define kAudioStop     106 /* Stop playback at the indicated position */
  31. #define kAudioStatus     107 /* Return audio play status */
  32. #define kAudioControl     109 /* Set the output volume for the audio channels */
  33. #define kReadAudioVolume    112 /* Get the output volume for the audio channels */
  34. #define kSetTrackList    122 /* Set the track program for the audio CD to play */
  35. #define kGetTrackList    123 /* Get the track program the audio CD is playing */
  36. #define kGetTrackIndex    124 /* Get the track index the audio CD is playing */
  37. #define kSetPlayMode    125 /* Set the audio tracks play mode */
  38. #define kGetPlayMode    126 /* Get the audio tracks play mode */
  39. /* AppleCD Status calls */
  40. #define kGetDriveType     96 /* Get the type of the physical CD-ROM drive */
  41. #define kWhoIsThere      97 /* Get a bitmap of SCSI IDs the driver controls */
  42. #define kGetBlockSize      98 /* Get current block size of the CD-ROM drive */
  43. /* AppleCD other constants */
  44. #define kBlockPosition       0 /* Position at the specified logical block number */
  45. #define kAbsMSFPosition       1 /* Position at the specified Min/Sec/Frame (in BCD) */
  46. #define kTrackPosition       2 /* Position at the specified track number (in BCD) */
  47. #define kIndexPosition       3 /* Position at the nth track in program (in BCD) */
  48. #define kMutedPlayMode      0 /* Play the audio track with no output */
  49. #define kStereoPlayMode      9 /* Play the audio track in normal stereo */
  50. #define kControlFieldMask   0x0D /* Bits 3,2,0 in the nibble */
  51. #define kDataTrackMask    0x04 /* Indicates Data Track */
  52. #define kGetTrackRange       1 /* Query TOC for track numbers */
  53. #define kGetLeadOutArea       2 /* Query TOC for "Lead Out" end of audio data */
  54. #define kGetTrackEntries      3 /* Query TOC for track starts and data types */
  55. #define kStatusPlaying   0 /* Audio Play operation in progress */
  56. #define kStatusPaused   1 /* CD-ROM device in Hold Track ("Pause") state */
  57. #define kStatusMuted   2 /* MUTING-ON operation in progress */
  58. #define kStatusDone   3 /* Audio Play completed */
  59. #define kStatusError   4 /* Error occurred during audio play operation */
  60. #define kStatusStopped   5 /* Audio play operation not requested */
  61. #define kPlayModeSequential   0 /*  Play tracks in order */
  62. #define kPlayModeShuffled   1 /* Play tracks randomly */
  63. #define kPlayModeProgrammed   2 /* Use custom playlist */
  64. /* AppleCD Gestalt selectors */
  65. #define kGestaltAudioCDSelector    'aucd'
  66. #define kDriverVersion52    0x00000520
  67. #define kDriverVersion51    0x00000510
  68. #define kDriverVersion50    0x00000500
  69. /* Drive type constants */
  70. #define kDriveAppleCD_SC      1
  71. #define kDriveAppleCD_SCPlus_or_150      2
  72. #define kDriveAppleCD_300_or_300Plus      3
  73. /* Misc constants */
  74. #define kFirstSCSIDevice     -33
  75. #define kLastSCSIDevice      -40
  76. #if PRAGMA_STRUCT_ALIGN
  77. #pragma options align=mac68k
  78. #endif
  79. /* AppleCD driver parameter block */
  80. typedef struct CDCntrlParam {
  81. QElemPtr qLink;
  82. short qType;
  83. short ioTrap;
  84. Ptr ioCmdAddr;
  85. IOCompletionUPP ioCompletion;
  86. OSErr ioResult;
  87. StringPtr ioNamePtr;
  88. short ioVRefNum;
  89. short ioCRefNum;
  90. short csCode;
  91. union {
  92. long longs[6];
  93. short words[11];
  94. unsigned char bytes[22];
  95. struct {
  96. unsigned char status;
  97. unsigned char play;
  98. unsigned char control;
  99. unsigned char minute;
  100. unsigned char second;
  101. unsigned char frame;
  102. } cd;
  103. } csParam;
  104. } CDCntrlParam, *CDCntrlParamPtr;
  105. typedef union CDTrackData {
  106. long value; /* Treat as a longword value */
  107. struct {
  108. unsigned char reserved : 4; /* Unused by AppleCD driver  */
  109. unsigned char control : 4; /* Track flags (data track?) */
  110. unsigned char min; /* Start of track (BCD)      */
  111. unsigned char sec; /* Start of track (BCD)      */
  112. unsigned char frame; /* Start of track (BCD)      */
  113. } entry; /* Broken into fields        */
  114. } CDTrackData, *CDTrackPtr;
  115. #if PRAGMA_STRUCT_ALIGN
  116. #pragma options align=reset
  117. #endif