1 /* GStreamer
2  * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
3  *
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  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  */
19 
20 
21 #ifndef __GST_FLX_FMT_H__
22 #define __GST_FLX_FMT_H__
23 
24 #include <gst/gst.h>
25 
26 G_BEGIN_DECLS
27 
28 enum Flx_TypeChunk
29 {
30 	/* frame chunks */
31 	FLX_PREFIX_TYPE		= 0xf100,
32 	FLX_SCRIPT_CHUNK	= 0xf1e0,
33 	FLX_FRAME_TYPE		= 0xf1fa,
34 	FLX_SEGMENT_TABLE	= 0xf1fb,
35 	FLX_HUFFMAN_TABLE	= 0xf1fc,
36 
37 	/* sub chunks */
38 	FLX_CEL_DATA		= 3,
39 	FLX_COLOR256		= 4,
40 	FLX_SS2			= 7,
41         FLX_COLOR64		= 11,
42         FLX_LC			= 12,
43         FLX_BLACK		= 13,
44         FLX_BRUN		= 15,
45         FLX_COPY		= 16,
46         FLX_MINI		= 18,
47 	FLX_DTA_RUN		= 25,
48 	FLX_DTA_COPY		= 26,
49 	FLX_DTA_LC		= 27,
50 	FLX_LABEL		= 31,
51 	FLX_BMP_MASK		= 32,
52 	FLX_MLEV_MASK		= 33,
53 	FLX_SEGMENT		= 34,
54 	FLX_KEY_IMAGE		= 35,
55 	FLX_KEY_PAL		= 36,
56 	FLX_REGION		= 37,
57 	FLX_WAVE		= 38,
58 	FLX_USERSTRING		= 39,
59 	FLX_RGN_MASK		= 40
60 
61 };
62 
63 enum Flx_MagicHdr
64 {
65 	FLX_MAGICHDR_FLI	= 0xaf11,
66 	FLX_MAGICHDR_FLC	= 0xaf12,
67 	FLX_MAGICHDR_FLX	= 0xaf44,
68 	FLX_MAGICHDR_HUFFBWT	= 0xaf30
69 };
70 
71 typedef struct _FlxHeader
72 {
73 	guint32	size;
74 	guint16 type;
75 	guint16	frames;
76 	guint16 width,height,depth,flags;
77 	guint32 speed;
78 	guint16 reserved1;
79 	/* FLC */
80 	guint32 created,creator,updated,updater;
81 	guint16 aspect_dx, aspect_dy;
82 	/* EGI */
83 	guint16 ext_flags,keyframes,totalframes;
84 	guint32 req_memory;
85 	guint16 max_regions,transp_num;
86 	guchar	reserved2[24];
87 	/* FLC */
88 	guint32 oframe1,oframe2;
89 	guchar	reserved3[40];
90 } FlxHeader;
91 #define FlxHeaderSize 128
92 
93 typedef struct _FlxFrameChunk
94 {
95 	guint32	size;
96 	guint16	id;
97 } FlxFrameChunk;
98 #define FlxFrameChunkSize 6
99 
100 typedef struct _FlxPrefixChunk
101 {
102 	guint16 chunks;
103 	guchar  reserved[8];
104 } FlxPrefixChunk;
105 
106 typedef struct _FlxSegmentTable
107 {
108 	guint16 segments;
109 } FlxSegmentTable;
110 
111 typedef struct _FlxHuffmanTable
112 {
113 	guint16 codelength;
114 	guint16 numcodes;
115 	guchar	reserved[6];
116 } FlxHuffmanTable;
117 
118 typedef struct _FlxFrameType
119 {
120 	guint16 chunks;
121 	guint16 delay;
122 	guchar	reserved[6];
123 } FlxFrameType;
124 #define FlxFrameTypeSize 10
125 
126 G_END_DECLS
127 
128 #endif /* __GST_FLX_FMT_H__ */
129