1 /* 
    2 $VER: video.h 51.8 (16.9.2007)
    3 */
    4 
    5 /* video objects methods and attributes */
    6 
    7 #ifndef CLASSES_MULTIMEDIA_VIDEO_H
    8 #define CLASSES_MULTIMEDIA_VIDEO_H
    9 
   10 #include <classes/multimedia/multimedia.h>
   11 
   12 /* formats */
   13 
   14 #define MMF_VIDEO_BMP            (MMF_VIDEOMASK + 1)
   15 #define MMF_VIDEO_PNG            (MMF_VIDEOMASK + 2)   /* PNG zlib stream */
   16 #define MMF_VIDEO_BITPLANES      (MMF_VIDEOMASK + 3)   /* bitplanes */
   17 #define MMF_VIDEO_GRAY8          (MMF_VIDEOMASK + 4)   /* raw 8-bit grayscale */
   18 #define MMF_VIDEO_GRAY16BE       (MMF_VIDEOMASK + 5)   /* raw 16-bit grayscale, big endian */
   19 #define MMF_VIDEO_RGB24          (MMF_VIDEOMASK + 6)   /* raw RGB, 8 bits per gun */
   20 #define MMF_VIDEO_RGB48BE        (MMF_VIDEOMASK + 7)   /* raw RGB, 16 bits per gun, big endian */
   21 #define MMF_VIDEO_GIF            (MMF_VIDEOMASK + 8)   /* GIF compressed stream */
   22 #define MMF_VIDEO_LUT8           (MMF_VIDEOMASK + 9)   /* raw, palette based, 256 colors */
   23 #define MMF_VIDEO_IFFDEEP        (MMF_VIDEOMASK + 10)  /* IFF DEEP */
   24 #define MMF_VIDEO_IFFILBM        (MMF_VIDEOMASK + 11)  /* IFF ILBM */
   25 #define MMF_VIDEO_PCX            (MMF_VIDEOMASK + 12)
   26 #define MMF_VIDEO_JPEG           (MMF_VIDEOMASK + 13)
   27 #define MMF_VIDEO_ZXSPECTRUM     (MMF_VIDEOMASK + 14)  /* ZX Spectrum screen dump */
   28 #define MMF_VIDEO_TARGA          (MMF_VIDEOMASK + 15)  /* Targa */
   29 #define MMF_VIDEO_IFFANIM5       (MMF_VIDEOMASK + 16)
   30 #define MMF_VIDEO_IFFANIM7       (MMF_VIDEOMASK + 17)
   31 #define MMF_VIDEO_SUNRASTER      (MMF_VIDEOMASK + 18)
   32 #define MMF_VIDEO_AMIGAICON      (MMF_VIDEOMASK + 19)
   33 #define MMF_VIDEO_RGBA32         (MMF_VIDEOMASK + 20)  /* raw RGBA, 8 bits per gun */
   34 #define MMF_VIDEO_DEGAS          (MMF_VIDEOMASK + 21)  /* Atari Degas */
   35 #define MMF_VIDEO_BGR24          (MMF_VIDEOMASK + 22)  /* raw data, 8 bits per gun */
   36 #define MMF_VIDEO_ABGR32         (MMF_VIDEOMASK + 23)  /* raw data, 8 bits per gun */
   37 #define MMF_VIDEO_ARGB32         (MMF_VIDEOMASK + 24)  /* raw data, 8 bits per gun */
   38 #define MMF_VIDEO_TIFF           (MMF_VIDEOMASK + 25)
   39 #define MMF_VIDEO_BGRA32         (MMF_VIDEOMASK + 26)  /* raw data, 8 bits per gun */
   40 #define MMF_VIDEO_QOI            (MMF_VIDEOMASK + 26)  /* Quite Ok Image Format */
   41 #define MMF_VIDEO_PHOTOCD        (MMF_VIDEOMASK + 27)  /* Kodak PhotoCD */
   42 #define MMF_VIDEO_INGF           (MMF_VIDEOMASK + 28)  /* ImageFX native format */
   43 #define MMF_VIDEO_WEBP           (MMF_VIDEOMASK + 29)  /* WebP */
   44 
   45 /* methods */
   46 
   47 /* attributes */
   48 
   49 #define MMA_Video_Width               (MMA_Dummy + 400)
   50 #define MMA_Video_Height              (MMA_Dummy + 401)
   51 #define MMA_Video_BitsPerPixel        (MMA_Dummy + 402)
   52 #define MMA_Video_FrameCount          (MMA_Dummy + 403)
   53 #define MMA_Video_SrcOffsetX          (MMA_Dummy + 404)
   54 #define MMA_Video_SrcOffsetY          (MMA_Dummy + 405)
   55 #define MMA_Video_RastPort            (MMA_Dummy + 406)
   56 #define MMA_Video_DestOffsetX         (MMA_Dummy + 407)
   57 #define MMA_Video_DestOffsetY         (MMA_Dummy + 408)
   58 #define MMA_Video_UseAlpha            (MMA_Dummy + 409)
   59 #define MMA_Video_GlobalAlpha         (MMA_Dummy + 410)
   60 #define MMA_Video_Progressive         (MMA_Dummy + 411)
   61 #define MMA_Video_FinalTouch          (MMA_Dummy + 412)
   62 #define MMA_Video_Palette             (MMA_Dummy + 413)
   63 #define MMA_Video_GammaCorrection     (MMA_Dummy + 414)
   64 #define MMA_Video_SourceWidth         (MMA_Dummy + 415)
   65 #define MMA_Video_SourceHeight        (MMA_Dummy + 416)
   66 #define MMA_Video_FpsNumerator        (MMA_Dummy + 417)
   67 #define MMA_Video_BgColor             (MMA_Dummy + 418)
   68 #define MMA_Video_FpsDenominator      (MMA_Dummy + 419)
   69 #define MMA_Video_SyncSignal          (MMA_Dummy + 420)
   70 #define MMA_Video_SyncTask            (MMA_Dummy + 421)
   71 #define MMA_Video_SyncPort            (MMA_Dummy + 422)
   72 #define MMA_Video_Unbuffered          (MMA_Dummy + 423)
   73 #define MMA_Video_ToGray              (MMA_Dummy + 424)
   74 #define MMA_Video_PaletteLength       (MMA_Dummy + 425)
   75 #define MMA_Video_LinePadding         (MMA_Dummy + 426)  /* videopcm.encoder, in bytes, 1, 2 or 4 */
   76 
   77 /* Mask data right after image (used by bmp.decoder) */
   78 
   79 #define MMA_Video_MaskAfterImage      (MMA_Dummy + 499)
   80 
   81 /* Bytes per line (modulo) used by bitplane.decoder. */
   82 
   83 #define MMA_Video_BytesPerLine        (MMA_Dummy + 498)
   84 
   85 /* Color to gray conversion types. */
   86 
   87 #define MMV_Video_ToGray_Mean          1
   88 #define MMV_Video_ToGray_Luma          2
   89 #define MMV_Video_ToGray_Min           3
   90 #define MMV_Video_ToGray_Max           4
   91 
   92 /* Video metaformat */
   93 
   94 #define MMMF_PIXMAP                  1
   95 #define MMMF_RECTFILL                2
   96 #define MMMF_WAIT                    3
   97 #define MMMF_SAVE                    4
   98 #define MMMF_RESTORE                 5
   99 #define MMMF_END                     6
  100 
  101 struct MFHeader
  102 {
  103 	ULONG Type;    /* one of MMMF_XXXXX above */
  104 	ULONG Length;  /* in LONG-s */
  105 };
  106 
  107 /*============================================================================*/
  108 /* MMMF_RECTFILL draws a filled rectangle.                                    */
  109 /*============================================================================*/
  110 
  111 struct MFRectFill    /* 0 pixels follow */
  112 {
  113 	ULONG Left;
  114 	ULONG Top;
  115 	ULONG Width;
  116 	ULONG Height;
  117 	ULONG Color;
  118 };
  119 
  120 /*============================================================================*/
  121 /* MMMF_PIXMAP draws a rectangular pixmap, ARGB32 pixmap data directly        */
  122 /* follows this structure in the metastream. There are exactly Width * Height */
  123 /* longwords.                                                                 */
  124 /*============================================================================*/
  125 
  126 struct MFPixMap      /* mfpm_Width * mfpm_Height pixels follow */
  127 {
  128 	ULONG Left;
  129 	ULONG Top;
  130 	ULONG Width;
  131 	ULONG Height;
  132 	ULONG Transparent;
  133 };
  134 
  135 /*============================================================================*/
  136 /* MMMF_WAIT directs player to wait to the specified timepoint of stream.     */
  137 /*============================================================================*/
  138 
  139 struct MFWait
  140 {
  141 	ULONG MicrosHigh;
  142 	ULONG MicrosLow;
  143 };
  144 
  145 /*============================================================================*/
  146 /* MMMF_SAVE instructs player to save a rectangular output area to a buffer   */
  147 /* identified by 'Id' for later use.                                          */
  148 /*============================================================================*/
  149 
  150 struct MFSave
  151 {
  152 	ULONG Left;
  153 	ULONG Top;
  154 	ULONG Width;
  155 	ULONG Height;
  156 	ULONG Id;
  157 };
  158 
  159 /*============================================================================*/
  160 /* MMMF_RESTORE requests restoring rectangular pixmap from a buffer identi-   */
  161 /* fied by 'Id' and place it at specified coordinates.                        */
  162 /*============================================================================*/
  163 
  164 struct MFRestore
  165 {
  166 	ULONG Left;
  167 	ULONG Top;
  168 	ULONG Id;
  169 };
  170 
  171 #endif /* CLASSES_MULTIMEDIA_PICTURE_H */