home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / cd32 / cd32-tools / mpegsup-1 / include / devices / mpeg.h next >
C/C++ Source or Header  |  1994-01-21  |  6KB  |  207 lines

  1. #ifndef    DEVICES_MPEG_H
  2. #define DEVICES_MPEG_H
  3.  
  4. /*
  5. **    $Id: mpeg.h,v 40.3 93/10/23 01:04:32 kcd Exp Locker: kcd $
  6. **
  7. **    CD32 MPEG Device Driver C Header File
  8. **
  9. **    (C) Copyright 1993 Commodore-Amiga, Inc.
  10. **        All Rights Reserved
  11. */
  12.  
  13. #ifndef    EXEC_IO_H
  14. #include <exec/io.h>
  15. #endif /* EXEC_IO_H */
  16.  
  17. struct IOMPEGReq
  18. {
  19.     /* Standard Stuff */
  20.  
  21.     struct IOStdReq    iomr_Req;
  22.  
  23.     /* Global MPEG fields */
  24.  
  25.     UWORD        iomr_MPEGError;        /* Extended Error Information */
  26.     UBYTE        iomr_Version;        /* Must be set to 0 for this spec */
  27.     UBYTE        iomr_StreamType;
  28.     ULONG        iomr_MPEGFlags;
  29.     LONG        iomr_Arg1;
  30.     ULONG        iomr_Arg2;
  31.  
  32.     UWORD        iomr_PTSHigh;        /* Bits 32-30 of this data's PTS */
  33.     UWORD        iomr_PTSMid;        /* Bits 29-15 of this data's PTS */
  34.     UWORD        iomr_PTSLow;        /* Bits 14-9  of this data's PTS */
  35.  
  36.     /* Private Device Information */
  37.  
  38.     UWORD        iomr_Private0;
  39.     ULONG        iomr_Private1;
  40.     ULONG        iomr_Private2;
  41.  
  42.     UWORD        iomr_Private3;
  43.     UWORD        iomr_Private4;
  44.     UWORD        iomr_Private5;
  45.  
  46. };
  47.  
  48. /*
  49. ** Handy defines
  50. **
  51. */
  52.  
  53. #define    iomr_SlowSpeed        iomr_Arg1
  54. #define iomr_PauseMode        iomr_Arg1
  55. #define iomr_DisplayType    iomr_Arg1
  56. #define iomr_SearchSpeed    iomr_Arg1
  57. #define iomr_SectorSize        iomr_Arg1
  58. #define iomr_StreamStart    iomr_Arg2
  59.  
  60. /*
  61. ** Defined Stream Types
  62. */
  63. #define    MPEGSTREAM_VIDEO    1    /* Raw Video bitstream */
  64. #define MPEGSTREAM_AUDIO    2    /* Raw Audio bitstream */
  65. #define MPEGSTREAM_SYSTEM    3    /* ISO 1172 System Stream */
  66.  
  67. /*
  68. ** MPEG Error Values
  69. */
  70. #define MPEGERR_BAD_STATE    1    /* Command is illegal for the current device state */
  71. #define MPEGERR_BAD_PARAMETER    2    /* Some parameter was illegal */
  72. #define MPEGERR_CMD_FAILED    3    /* Command Failed */
  73. #define MPEGERR_CDERROR        4    /* Problem with cd.device I/O */
  74.  
  75. /*
  76. ** Extended error values.
  77. */
  78. #define MPEGEXTERR_STREAM_MISMATCH    1    /* Stream type not appropriate */
  79. #define MPEGEXTERR_MICROCODE_FAILURE    2    /* MicroCode failed to respond */
  80. #define MPEGEXTERR_BAD_STREAM_TYPE    3    /* Stream/Command incompatible */
  81.  
  82. /*
  83. ** Flags for iomr_MPEGFlags
  84. */
  85.  
  86. #define MPEGB_VALID_PTS            31    /* This bit of data has a valid PTS */
  87. #define MPEGB_ONESHOT            2    /* One-Shot scan */
  88.  
  89. #define MPEGF_VALID_PTS            (1L << MPEGB_VALID_PTS)
  90. #define MPEGF_ONESHOT            (1L << MPEGB_ONESHOT)
  91.  
  92. /*
  93. ** MPEG Device Commands
  94. */
  95. #define MPEGCMD_PLAY        (CMD_NONSTD + 0)
  96. #define MPEGCMD_PAUSE        (CMD_NONSTD + 1)
  97. #define MPEGCMD_SLOWMOTION    (CMD_NONSTD + 2)
  98. #define MPEGCMD_SINGLESTEP    (CMD_NONSTD + 3)
  99. #define MPEGCMD_SEARCH        (CMD_NONSTD + 4)
  100. #define MPEGCMD_RECORD        (CMD_NONSTD + 5)
  101. #define MPEGCMD_GETDEVINFO    (CMD_NONSTD + 6)
  102. #define MPEGCMD_SETWINDOW    (CMD_NONSTD + 7)
  103. #define MPEGCMD_SETBORDER    (CMD_NONSTD + 8)
  104. #define MPEGCMD_GETVIDEOPARAMS    (CMD_NONSTD + 9)
  105. #define MPEGCMD_SETVIDEOPARAMS    (CMD_NONSTD + 10)
  106. #define MPEGCMD_SETAUDIOPARAMS    (CMD_NONSTD + 11)
  107. #define MPEGCMD_PLAYLSN        (CMD_NONSTD + 12)
  108. #define MPEGCMD_SEEKLSN        (CMD_NONSTD + 13)
  109. #define MPEGCMD_READFRAMEYUV    (CMD_NONSTD + 14)
  110.  
  111. #define MPEGCMD_END        (CMD_NONSTD + 15)
  112.  
  113. /*
  114. ** This structure is returned form a MPEGCMD_GETDEVINFO command. Use this
  115. ** to determine what the device driver is capable of doing.  Not all devices
  116. ** will support all commands/features.
  117. */
  118.  
  119. struct MPEGDevInfo
  120. {
  121.     UWORD    mdi_Version;
  122.     UWORD    mdi_Flags;
  123.  
  124.     ULONG    mdi_BoardCapabilities;
  125.     UBYTE    mdi_BoardDesc[256];
  126. };
  127.  
  128. struct MPEGWindowParams
  129. {
  130.     UWORD    mwp_XOffset;        /* Hi-Res Pixels */
  131.     UWORD    mwp_YOffset;        /* Non-interlaced scanlines */
  132.     UWORD    mwp_Width;        /* Hi-Res Pixels */
  133.     UWORD    mwp_Height;        /* Non-interlaced scanlines */
  134. };
  135.  
  136. struct MPEGBorderParams
  137. {
  138.     UWORD    mbp_BorderLeft;        /* Hi-Res Pixels */
  139.     UWORD    mbp_BorderTop;        /* Non-interlaced scanlines */
  140.     UBYTE    mbp_BorderRed;        /* Border 8-bit red value */
  141.     UBYTE    mbp_BorderGreen;    /* Border 8-bit green value */
  142.     UBYTE   mbp_BorderBlue;        /* Border 8-bit blue value */
  143. };
  144.  
  145. /* The structure is used by the MPEGCMD_READFRAMEYUV command. */
  146. /* Color components with NULL pointers will not be written to. */
  147.  
  148. struct MPEGFrameStore
  149. {
  150.     UWORD    mfs_Width;        /* Picture Width */
  151.     UWORD    mfs_Height;        /* Picture Height */
  152.     UBYTE    *mfs_Luma;        /* Must be Width*Height bytes */
  153.     UBYTE    *mfs_Cr;        /* Must be Width*Height/4 bytes */
  154.     UBYTE    *mfs_Cb;        /* Must be Width*Height/4 bytes */
  155. };
  156.  
  157. /*
  158. ** NB: Not all devices support the full functionality that these
  159. **     structures provide for.  Please take this into account.
  160. */
  161.  
  162. struct MPEGVideoParamsSet
  163. {
  164.     UWORD    mvp_Fade;        /* Fade level.  0 = no MPEG video at all, 65535 = full saturation */
  165.     UWORD    mvp_DisplayType;    /* 0 = No Change, 3 = PAL (50Hz), 4 = NTSC (60Hz) */
  166. };
  167.  
  168. struct MPEGVideoParamsGet
  169. {
  170.     UWORD    mvp_PictureWidth;    /* Width in lo-res pixels */
  171.     UWORD    mvp_PictureHeight;    /* Height in non-interlaced scanlines */
  172.     UWORD    mvp_PictureRate;    /* Pictures per second code */
  173. };
  174.  
  175. struct MPEGAudioParams
  176. {
  177.     UWORD    map_VolumeLeft;        /* Left Channel Volume (0=Mute, 65535 = loudest) */
  178.     UWORD    map_VolumeRight;    /* Right Channel Volume */
  179.     UWORD    map_StreamID;        /* MPEG Audio stream ID. ~0 for all streams */
  180. };
  181.  
  182. /* Board Capabilities for playback */
  183.  
  184. #define MPEGCB_PLAYRAWVIDEO    16    /* Can play a raw video stream */
  185. #define MPEGCB_PLAYRAWAUDIO    17    /* Can play a raw audio stream */
  186. #define MPEGCB_PLAYSYSTEM    18    /* Can play an ISO-1172 system stream */
  187. #define MPEGCB_WINDOWVIDEO    19    /* Can do window subpositioning */
  188. #define MPEGCB_SCALEVIDEO    20    /* Can scale video */
  189. #define MPEGCB_STEPPLAY        21    /* Can single-step */
  190. #define MPEGCB_SCANPLAY        22    /* Can scan */
  191. #define MPEGCB_SLOWPLAY        23    /* Can do slow-motion */
  192. #define MPEGCB_READFRAME    24    /* Can read digital frame data */
  193.  
  194. /* Flag Versions */
  195.  
  196. #define MPEGCF_PLAYRAWVIDEO    (1L << MPEGCB_PLAYRAWVIDEO)
  197. #define MPEGCF_PLAYRAWAUDIO    (1L << MPEGCB_PLAYRAWAUDIO)
  198. #define MPEGCF_PLAYSYSTEM    (1L << MPEGCB_PLAYSYSTEM)
  199. #define MPEGCF_WINDOWVIDEO    (1L << MPEGCB_WINDOWVIDEO)
  200. #define MPEGCF_SCALEVIDEO    (1L << MPEGCB_SCALEVIDEO)
  201. #define MPEGCF_STEPPLAY        (1L << MPEGCB_STEPPLAY)
  202. #define MPEGCF_SCANPLAY        (1L << MPEGCB_SCANPLAY)
  203. #define MPEGCF_SLOWPLAY        (1L << MPEGCB_SLOWPLAY)
  204. #define MPEGCF_READFRAME    (1L << MPEGCB_READFRAME)
  205.  
  206. #endif /* DEVICES_MPEG_H */
  207.