home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mmoshead.zip / codec.h next >
Text File  |  1994-02-13  |  7KB  |  258 lines

  1. /*************************************/
  2. /* codec.h -- Multimedia for emx 1.0 */
  3. /*                                   */
  4. /*                                   */
  5. /* Marc E.E. van Woerkom, 2/94       */
  6. /*                                   */
  7. /*************************************/
  8.  
  9.  
  10. /* nested header management */
  11. #ifndef _CODEC_H
  12. #define _CODEC_H
  13.  
  14. /* use 32-bit alignment */
  15. #pragma pack(4)
  16.  
  17.  
  18. /***********/
  19. /* defines */
  20. /***********/
  21.  
  22. #define FOURCC_ULTI                   mmioFOURCC('U', 'L', 'T', 'I')
  23. #define FOURCC_RT21                   mmioFOURCC('R', 'T', '2', '1')
  24.                                       
  25. #define HEX_FOURCC_ULTI               0x49544C55L
  26. #define HEX_FOURCC_RT21               0x31325452L
  27.                                       
  28. #define MMIO_RGB_5_6_5                0x0001L
  29. #define MMIO_RGB_24                   0x0002L
  30. #define MMIO_YUV_4_1_1                0x0004L
  31. #define MMIO_COMPRESSED               0x0008L
  32. #define MMIO_YUV_24                   0x0010L
  33. #define MMIO_PALETTIZED               0x0020L
  34. #define MMIO_DROP_DELTA_FRAME         0x0001L
  35. #define MMIO_IS_KEY_FRAME             0x0002L
  36. #define MMIO_IS_PALETTE               0x0004L
  37. #define MMIO_PALETTE_CHANGE           0x0008L
  38. #define MMIO_ORIGIN_LOWERLEFT         0x0010L
  39. #define MMIO_RECTL_CHANGE             0x0020L
  40. #define MMIO_ORIGIN_UPPERLEFT         0x0040L
  41. #define MMIO_DROP_FRAME_DECODE        0x0080L
  42. #define MMIO_INVISIBLE_FRAME          0x1000L
  43. #define MMIO_VIDEO_UNKNOWN            0x0000L
  44. #define MMIO_VIDEO_DATA               0x0001L
  45.                                       
  46. #define MOVIE_HAS_VIDEO               0x0001L
  47. #define MOVIE_HAS_AUDIO               0x0002L
  48. #define MOVIE_CAN_SEEK                0x0004L
  49. #define MOVIE_CAN_SCAN                0x0008L
  50. #define MOVIE_HAS_COPYRIGHT           0x0010L
  51. #define MOVIE_WAS_CAPTUREFILE         0x0020L
  52.                                       
  53. #define MULTITRACKREAD_NOTDONE        0x0001L
  54. #define MULTITRACKREAD_EOF            0x0002L
  55.  
  56. #define VALID_CODECOPEN_INPUTFLAGS   (CODEC_DECOMPRESS       | \
  57.                                       CODEC_WINDOW_CLIPPING  | \
  58.                                       CODEC_PALETTE_TRANS    | \
  59.                                       CODEC_SELFHEAL         | \
  60.                                       CODEC_SCALE_PEL_DOUBLE | \
  61.                                       CODEC_SCALE_PEL_HALVED | \
  62.                                       CODEC_SCALE_CONTINUOUS | \
  63.                                       CODEC_MULAPERTURE      | \
  64.                                       CODEC_HARDWARE         | \
  65.                                       CODEC_DIRECT_DISPLAY)
  66.  
  67. #define VALID_DECOMPRESS_INPUTFLAGS  (MMIO_DROP_DELTA_FRAME  | \
  68.                                       MMIO_PALETTE_CHANGE    | \
  69.                                       MMIO_ORIGIN_LOWERLEFT  | \
  70.                                       MMIO_RECTL_CHANGE      | \
  71.                                       MMIO_DROP_FRAME_DECODE | \
  72.                                       MMIO_ORIGIN_UPPERLEFT)
  73.  
  74.  
  75. /************/
  76. /* typedefs */
  77. /************/
  78.  
  79. typedef struct _GENPAL {
  80.     ULONG ulStartIndex;
  81.     ULONG ulNumColors;
  82.     PRGB2 prgb2Entries;
  83. } GENPAL;
  84.  
  85. typedef struct _RECTL1 {
  86.     LONG xLeft;
  87.     LONG yBottom;
  88.     LONG xRight;
  89.     LONG yTop;
  90. } RECTL1;
  91.  
  92. typedef RECTL1* PRECTL1;
  93.  
  94. typedef struct _CODECVIDEOHEADER {
  95.     ULONG  ulStructLen;
  96.     ULONG  cx;
  97.     ULONG  cy;
  98.     USHORT cPlanes;
  99.     USHORT cBitCount;
  100.     ULONG  ulColorEncoding;
  101.     GENPAL genpal;
  102. } CODECVIDEOHEADER;
  103.  
  104. typedef struct _CODECOPEN {
  105.     ULONG ulFlags;
  106.     PVOID pControlHdr;
  107.     PVOID pSrcHdr;
  108.     PVOID pDstHdr;
  109.     PVOID pOtherInfo;
  110. } CODECOPEN;
  111.  
  112. typedef struct _MMCOMPRESS {
  113.     ULONG ulStructLen;
  114.     ULONG ulFlags;
  115.     ULONG ulSrcBufLen;
  116.     PVOID pSrcBuf;
  117.     ULONG ulDstBufLen;
  118.     PVOID pDstBuf;
  119.     PVOID pRunTimeInfo;
  120. } MMCOMPRESS;
  121.  
  122. typedef struct _MMDECOMPRESS {
  123.     ULONG ulStructLen;
  124.     ULONG ulFlags;
  125.     ULONG ulSrcBufLen;
  126.     PVOID pSrcBuf;
  127.     ULONG ulDstBufLen;
  128.     PVOID pDstBuf;
  129.     PVOID pRunTimeInfo;
  130. } MMDECOMPRESS;
  131.  
  132. typedef struct _MMVIDEOCOMPRESS {
  133.     ULONG  ulStructLen;
  134.     GENPAL genpalVideo;
  135.     PVOID  pControlHdr;
  136. } MMVIDEOCOMPRESS;
  137.  
  138. typedef struct _MMVIDEODECOMPRESS {
  139.     ULONG   ulStructLen;
  140.     ULONG   ulRectlCount;
  141.     PRECTL1 prectl;
  142.     ULONG   ulSkipLength;
  143.     ULONG   ulDecodeLines;
  144.     GENPAL  genpalPhysical;
  145.     GENPAL  genpalVideo;
  146.     RECTL1  rectlSrc;
  147.     RECTL1  rectlDst;
  148. } MMVIDEODECOMPRESS;
  149.  
  150. typedef struct _MMVIDEOOPEN {
  151.     ULONG ulStructLen;
  152.     ULONG ulQuality;
  153.     ULONG ulKeyFrameRate;
  154.     ULONG ulScale;
  155.     ULONG ulRate;
  156.     ULONG ulDataConstraint;
  157.     ULONG ulConstraintInterval;
  158. } MMVIDEOOPEN;
  159.  
  160. typedef struct _RECORDTAB {
  161.     ULONG ulReserved1;
  162.     PVOID pRecord;
  163.     ULONG ulLength;
  164.     ULONG ulReserved2;
  165.     ULONG ulReserved3;
  166.     ULONG ulParm1;
  167.     ULONG ulParm2;
  168. } RECORDTAB;
  169.  
  170. typedef RECORDTAB* PRECORDTAB;
  171.  
  172. typedef struct _TRACKMAP {
  173.     ULONG      ulTrackID;
  174.     ULONG      ulNumEntries;
  175.     PRECORDTAB pRecordTabList;
  176. } TRACKMAP;
  177.  
  178. typedef TRACKMAP* PTRACKMAP;
  179.  
  180. typedef struct _MMMULTITRACKREAD {
  181.     ULONG     ulLength;
  182.     PVOID     pBuffer;
  183.     ULONG     ulFlags;
  184.     ULONG     ulNumTracks;
  185.     PTRACKMAP pTrackMapList;
  186. } MMMULTITRACKREAD;
  187.  
  188. typedef struct _MMMULTITRACKWRITE {
  189.     ULONG     ulNumTracks;
  190.     PTRACKMAP pTrackMapList;
  191. } MMMULTITRACKWRITE;
  192.  
  193. typedef struct _MMMOVIEHEADER {
  194.     ULONG        ulStructLen;
  195.     ULONG        ulReserved;
  196.     ULONG        ulMediaType;
  197.     ULONG        ulMovieCapsFlags;
  198.     ULONG        ulMaxBytesPerSec;
  199.     ULONG        ulPaddingGranularity;
  200.     ULONG        ulSuggestedBufferSize;
  201.     ULONG        ulStart;
  202.     ULONG        ulLength;
  203.     ULONG        ulNextTrackID;
  204.     ULONG        ulNumEntries;
  205.     PMMTRACKINFO pmmTrackInfoList;
  206.     PSZ          pszMovieTitle;
  207.     ULONG        ulCountry;
  208.     ULONG        ulCodePage;
  209. } MMMOVIEHEADER;
  210.  
  211.  
  212.  
  213. #ifdef INCL_GPI  /* ensure definition of PMMXDIBHEADER */
  214.  
  215.     typedef struct _MMVIDEOHEADER {
  216.         ULONG  ulStructLen;
  217.         ULONG  ulContentType;
  218.         ULONG  ulMediaType;
  219.         ULONG  ulVideoCapsFlags;
  220.         ULONG  ulWidth;
  221.         ULONG  ulHeight;
  222.         ULONG  ulScale;
  223.         ULONG  ulRate;
  224.         ULONG  ulStart;
  225.         ULONG  ulLength;
  226.         ULONG  ulTotalFrames;
  227.         ULONG  ulInitialFrames;
  228.         MMTIME mmtimePerFrame;
  229.         ULONG  ulSuggestedBufferSize;
  230.         GENPAL genpalVideo;
  231.         PMMXDIBHEADER pmmXDIBHeader;
  232.     } MMVIDEOHEADER;
  233.     
  234.     typedef MMVIDEOHEADER* PMMVIDEOHEADER;
  235.  
  236. #endif
  237.  
  238.  
  239. typedef GENPAL*             PGENPAL;
  240. typedef CODECOPEN*          PCODECOPEN;
  241. typedef CODECVIDEOHEADER*   PCODECVIDEOHEADER;
  242. typedef MMCOMPRESS*         PMMCOMPRESS;
  243. typedef MMDECOMPRESS*       PMMDECOMPRESS;
  244. typedef MMMOVIEHEADER*      PMMMOVIEHEADER;
  245. typedef MMMULTITRACKREAD*   PMMMULTITRACKREAD;
  246. typedef MMMULTITRACKWRITE*  PMMMULTITRACKWRITE;
  247. typedef MMVIDEOCOMPRESS*    PMMVIDEOCOMPRESS;
  248. typedef MMVIDEODECOMPRESS*  PMMVIDEODECOMPRESS;
  249. typedef MMVIDEOOPEN*        PMMVIDEOOPEN;
  250.  
  251.  
  252. /* set default alignment */
  253. #pragma pack()
  254.  
  255. /* nested header management */
  256. #endif
  257.  
  258.