annotate fli.c @ 3155:9200edf69d1d

initial commit
author melanson
date Tue, 27 Nov 2001 05:43:03 +0000
parents
children a1205b22a5f4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3155
9200edf69d1d initial commit
melanson
parents:
diff changeset
1 /*
9200edf69d1d initial commit
melanson
parents:
diff changeset
2 FLI Decoder for MPlayer
9200edf69d1d initial commit
melanson
parents:
diff changeset
3
9200edf69d1d initial commit
melanson
parents:
diff changeset
4 (C) 2001 Mike Melanson
9200edf69d1d initial commit
melanson
parents:
diff changeset
5 */
9200edf69d1d initial commit
melanson
parents:
diff changeset
6
9200edf69d1d initial commit
melanson
parents:
diff changeset
7 #define LE_16(x) *(unsigned short *)(x)
9200edf69d1d initial commit
melanson
parents:
diff changeset
8 #define LE_32(x) *(unsigned int *)(x)
9200edf69d1d initial commit
melanson
parents:
diff changeset
9
9200edf69d1d initial commit
melanson
parents:
diff changeset
10 #define FLI_256_COLOR 4
9200edf69d1d initial commit
melanson
parents:
diff changeset
11 #define FLI_DELTA 7
9200edf69d1d initial commit
melanson
parents:
diff changeset
12 #define FLI_COLOR 11
9200edf69d1d initial commit
melanson
parents:
diff changeset
13 #define FLI_LC 12
9200edf69d1d initial commit
melanson
parents:
diff changeset
14 #define FLI_BLACK 13
9200edf69d1d initial commit
melanson
parents:
diff changeset
15 #define FLI_BRUN 15
9200edf69d1d initial commit
melanson
parents:
diff changeset
16 #define FLI_COPY 16
9200edf69d1d initial commit
melanson
parents:
diff changeset
17 #define FLI_MINI 18
9200edf69d1d initial commit
melanson
parents:
diff changeset
18
9200edf69d1d initial commit
melanson
parents:
diff changeset
19 // 256 RGB entries; 25% of these bytes will be unused, but it's faster
9200edf69d1d initial commit
melanson
parents:
diff changeset
20 // to index 4-byte entries
9200edf69d1d initial commit
melanson
parents:
diff changeset
21 static unsigned char palette[256 * 4];
9200edf69d1d initial commit
melanson
parents:
diff changeset
22
9200edf69d1d initial commit
melanson
parents:
diff changeset
23 void AVI_Decode_Fli(
9200edf69d1d initial commit
melanson
parents:
diff changeset
24 unsigned char *encoded,
9200edf69d1d initial commit
melanson
parents:
diff changeset
25 int encoded_size,
9200edf69d1d initial commit
melanson
parents:
diff changeset
26 unsigned char *decoded,
9200edf69d1d initial commit
melanson
parents:
diff changeset
27 int width,
9200edf69d1d initial commit
melanson
parents:
diff changeset
28 int height,
9200edf69d1d initial commit
melanson
parents:
diff changeset
29 int bytes_per_pixel)
9200edf69d1d initial commit
melanson
parents:
diff changeset
30 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
31 int stream_ptr = 0;
9200edf69d1d initial commit
melanson
parents:
diff changeset
32 int pixel_ptr;
9200edf69d1d initial commit
melanson
parents:
diff changeset
33 int palette_ptr1;
9200edf69d1d initial commit
melanson
parents:
diff changeset
34 int palette_ptr2;
9200edf69d1d initial commit
melanson
parents:
diff changeset
35
9200edf69d1d initial commit
melanson
parents:
diff changeset
36 unsigned int frame_size;
9200edf69d1d initial commit
melanson
parents:
diff changeset
37 int num_chunks;
9200edf69d1d initial commit
melanson
parents:
diff changeset
38
9200edf69d1d initial commit
melanson
parents:
diff changeset
39 unsigned int chunk_size;
9200edf69d1d initial commit
melanson
parents:
diff changeset
40 int chunk_type;
9200edf69d1d initial commit
melanson
parents:
diff changeset
41
9200edf69d1d initial commit
melanson
parents:
diff changeset
42 int i, j;
9200edf69d1d initial commit
melanson
parents:
diff changeset
43
9200edf69d1d initial commit
melanson
parents:
diff changeset
44 int color_packets;
9200edf69d1d initial commit
melanson
parents:
diff changeset
45 int color_changes;
9200edf69d1d initial commit
melanson
parents:
diff changeset
46 int color_scale;
9200edf69d1d initial commit
melanson
parents:
diff changeset
47
9200edf69d1d initial commit
melanson
parents:
diff changeset
48 int lines;
9200edf69d1d initial commit
melanson
parents:
diff changeset
49 int compressed_lines;
9200edf69d1d initial commit
melanson
parents:
diff changeset
50 int starting_line;
9200edf69d1d initial commit
melanson
parents:
diff changeset
51 signed short line_packets;
9200edf69d1d initial commit
melanson
parents:
diff changeset
52 int y_ptr;
9200edf69d1d initial commit
melanson
parents:
diff changeset
53 int line_inc;
9200edf69d1d initial commit
melanson
parents:
diff changeset
54 signed char byte_run;
9200edf69d1d initial commit
melanson
parents:
diff changeset
55
9200edf69d1d initial commit
melanson
parents:
diff changeset
56 frame_size = LE_32(&encoded[stream_ptr]);
9200edf69d1d initial commit
melanson
parents:
diff changeset
57 stream_ptr += 6; // skip the magic number
9200edf69d1d initial commit
melanson
parents:
diff changeset
58 num_chunks = LE_16(&encoded[stream_ptr]);
9200edf69d1d initial commit
melanson
parents:
diff changeset
59 stream_ptr += 10; // skip padding
9200edf69d1d initial commit
melanson
parents:
diff changeset
60
9200edf69d1d initial commit
melanson
parents:
diff changeset
61 // iterate through the chunks
9200edf69d1d initial commit
melanson
parents:
diff changeset
62 frame_size -= 16;
9200edf69d1d initial commit
melanson
parents:
diff changeset
63 while ((frame_size > 0) && (num_chunks > 0))
9200edf69d1d initial commit
melanson
parents:
diff changeset
64 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
65 chunk_size = LE_32(&encoded[stream_ptr]);
9200edf69d1d initial commit
melanson
parents:
diff changeset
66 stream_ptr += 4;
9200edf69d1d initial commit
melanson
parents:
diff changeset
67 chunk_type = LE_16(&encoded[stream_ptr]);
9200edf69d1d initial commit
melanson
parents:
diff changeset
68 stream_ptr += 2;
9200edf69d1d initial commit
melanson
parents:
diff changeset
69
9200edf69d1d initial commit
melanson
parents:
diff changeset
70 switch (chunk_type)
9200edf69d1d initial commit
melanson
parents:
diff changeset
71 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
72 case FLI_256_COLOR:
9200edf69d1d initial commit
melanson
parents:
diff changeset
73 case FLI_COLOR:
9200edf69d1d initial commit
melanson
parents:
diff changeset
74 if (chunk_type == FLI_COLOR)
9200edf69d1d initial commit
melanson
parents:
diff changeset
75 color_scale = 4;
9200edf69d1d initial commit
melanson
parents:
diff changeset
76 else
9200edf69d1d initial commit
melanson
parents:
diff changeset
77 color_scale = 1;
9200edf69d1d initial commit
melanson
parents:
diff changeset
78 // set up the palette
9200edf69d1d initial commit
melanson
parents:
diff changeset
79 color_packets = LE_16(&encoded[stream_ptr]);
9200edf69d1d initial commit
melanson
parents:
diff changeset
80 stream_ptr += 2;
9200edf69d1d initial commit
melanson
parents:
diff changeset
81 palette_ptr1 = 0;
9200edf69d1d initial commit
melanson
parents:
diff changeset
82 for (i = 0; i < color_packets; i++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
83 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
84 // first byte is how many colors to skip
9200edf69d1d initial commit
melanson
parents:
diff changeset
85 palette_ptr1 += (encoded[stream_ptr++] * 4);
9200edf69d1d initial commit
melanson
parents:
diff changeset
86 // next byte indicates how many entries to change
9200edf69d1d initial commit
melanson
parents:
diff changeset
87 color_changes = encoded[stream_ptr++];
9200edf69d1d initial commit
melanson
parents:
diff changeset
88 // if there are 0 color changes, there are actually 256
9200edf69d1d initial commit
melanson
parents:
diff changeset
89 if (color_changes == 0)
9200edf69d1d initial commit
melanson
parents:
diff changeset
90 color_changes = 256;
9200edf69d1d initial commit
melanson
parents:
diff changeset
91 for (j = 0; j < color_changes; j++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
92 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
93 palette[palette_ptr1++] = encoded[stream_ptr + 2] * color_scale;
9200edf69d1d initial commit
melanson
parents:
diff changeset
94 palette[palette_ptr1++] = encoded[stream_ptr + 1] * color_scale;
9200edf69d1d initial commit
melanson
parents:
diff changeset
95 palette[palette_ptr1++] = encoded[stream_ptr + 0] * color_scale;
9200edf69d1d initial commit
melanson
parents:
diff changeset
96 palette_ptr1++;
9200edf69d1d initial commit
melanson
parents:
diff changeset
97 stream_ptr += 3;
9200edf69d1d initial commit
melanson
parents:
diff changeset
98 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
99 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
100 break;
9200edf69d1d initial commit
melanson
parents:
diff changeset
101
9200edf69d1d initial commit
melanson
parents:
diff changeset
102 case FLI_DELTA:
9200edf69d1d initial commit
melanson
parents:
diff changeset
103 line_inc = width * bytes_per_pixel;
9200edf69d1d initial commit
melanson
parents:
diff changeset
104 y_ptr = 0;
9200edf69d1d initial commit
melanson
parents:
diff changeset
105 compressed_lines = LE_16(&encoded[stream_ptr]);
9200edf69d1d initial commit
melanson
parents:
diff changeset
106 stream_ptr += 2;
9200edf69d1d initial commit
melanson
parents:
diff changeset
107 while (compressed_lines > 0)
9200edf69d1d initial commit
melanson
parents:
diff changeset
108 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
109 line_packets = LE_16(&encoded[stream_ptr]);
9200edf69d1d initial commit
melanson
parents:
diff changeset
110 stream_ptr += 2;
9200edf69d1d initial commit
melanson
parents:
diff changeset
111 if (line_packets < 0)
9200edf69d1d initial commit
melanson
parents:
diff changeset
112 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
113 line_packets = -line_packets;
9200edf69d1d initial commit
melanson
parents:
diff changeset
114 y_ptr += (line_packets * line_inc);
9200edf69d1d initial commit
melanson
parents:
diff changeset
115 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
116 else
9200edf69d1d initial commit
melanson
parents:
diff changeset
117 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
118 pixel_ptr = y_ptr;
9200edf69d1d initial commit
melanson
parents:
diff changeset
119 for (i = 0; i < line_packets; i++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
120 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
121 // account for the skip bytes
9200edf69d1d initial commit
melanson
parents:
diff changeset
122 pixel_ptr += encoded[stream_ptr++] * 3;
9200edf69d1d initial commit
melanson
parents:
diff changeset
123 byte_run = encoded[stream_ptr++];
9200edf69d1d initial commit
melanson
parents:
diff changeset
124 if (byte_run < 0)
9200edf69d1d initial commit
melanson
parents:
diff changeset
125 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
126 byte_run = -byte_run;
9200edf69d1d initial commit
melanson
parents:
diff changeset
127 palette_ptr1 = encoded[stream_ptr++] * 4;
9200edf69d1d initial commit
melanson
parents:
diff changeset
128 palette_ptr2 = encoded[stream_ptr++] * 4;
9200edf69d1d initial commit
melanson
parents:
diff changeset
129 for (j = 0; j < byte_run; j++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
130 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
131 decoded[pixel_ptr++] = palette[palette_ptr1 + 0];
9200edf69d1d initial commit
melanson
parents:
diff changeset
132 decoded[pixel_ptr++] = palette[palette_ptr1 + 1];
9200edf69d1d initial commit
melanson
parents:
diff changeset
133 decoded[pixel_ptr++] = palette[palette_ptr1 + 2];
9200edf69d1d initial commit
melanson
parents:
diff changeset
134
9200edf69d1d initial commit
melanson
parents:
diff changeset
135 decoded[pixel_ptr++] = palette[palette_ptr2 + 0];
9200edf69d1d initial commit
melanson
parents:
diff changeset
136 decoded[pixel_ptr++] = palette[palette_ptr2 + 1];
9200edf69d1d initial commit
melanson
parents:
diff changeset
137 decoded[pixel_ptr++] = palette[palette_ptr2 + 2];
9200edf69d1d initial commit
melanson
parents:
diff changeset
138 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
139 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
140 else
9200edf69d1d initial commit
melanson
parents:
diff changeset
141 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
142 for (j = 0; j < byte_run * 2; j++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
143 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
144 palette_ptr1 = encoded[stream_ptr++] * 4;
9200edf69d1d initial commit
melanson
parents:
diff changeset
145 decoded[pixel_ptr++] = palette[palette_ptr1 + 0];
9200edf69d1d initial commit
melanson
parents:
diff changeset
146 decoded[pixel_ptr++] = palette[palette_ptr1 + 1];
9200edf69d1d initial commit
melanson
parents:
diff changeset
147 decoded[pixel_ptr++] = palette[palette_ptr1 + 2];
9200edf69d1d initial commit
melanson
parents:
diff changeset
148 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
149 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
150 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
151 y_ptr += line_inc;
9200edf69d1d initial commit
melanson
parents:
diff changeset
152 compressed_lines--;
9200edf69d1d initial commit
melanson
parents:
diff changeset
153 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
154 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
155 break;
9200edf69d1d initial commit
melanson
parents:
diff changeset
156
9200edf69d1d initial commit
melanson
parents:
diff changeset
157 case FLI_LC:
9200edf69d1d initial commit
melanson
parents:
diff changeset
158 // line compressed
9200edf69d1d initial commit
melanson
parents:
diff changeset
159 line_inc = width * bytes_per_pixel;
9200edf69d1d initial commit
melanson
parents:
diff changeset
160 starting_line = LE_16(&encoded[stream_ptr]);
9200edf69d1d initial commit
melanson
parents:
diff changeset
161 stream_ptr += 2;
9200edf69d1d initial commit
melanson
parents:
diff changeset
162 y_ptr = starting_line * line_inc;
9200edf69d1d initial commit
melanson
parents:
diff changeset
163
9200edf69d1d initial commit
melanson
parents:
diff changeset
164 compressed_lines = LE_16(&encoded[stream_ptr]);
9200edf69d1d initial commit
melanson
parents:
diff changeset
165 stream_ptr += 2;
9200edf69d1d initial commit
melanson
parents:
diff changeset
166 while (compressed_lines > 0)
9200edf69d1d initial commit
melanson
parents:
diff changeset
167 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
168 pixel_ptr = y_ptr;
9200edf69d1d initial commit
melanson
parents:
diff changeset
169 line_packets = encoded[stream_ptr++];
9200edf69d1d initial commit
melanson
parents:
diff changeset
170 if (line_packets > 0)
9200edf69d1d initial commit
melanson
parents:
diff changeset
171 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
172 for (i = 0; i < line_packets; i++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
173 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
174 // account for the skip bytes
9200edf69d1d initial commit
melanson
parents:
diff changeset
175 pixel_ptr += encoded[stream_ptr++] * 3;
9200edf69d1d initial commit
melanson
parents:
diff changeset
176 byte_run = encoded[stream_ptr++];
9200edf69d1d initial commit
melanson
parents:
diff changeset
177 if (byte_run > 0)
9200edf69d1d initial commit
melanson
parents:
diff changeset
178 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
179 for (j = 0; j < byte_run; j++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
180 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
181 palette_ptr1 = encoded[stream_ptr++] * 4;
9200edf69d1d initial commit
melanson
parents:
diff changeset
182 decoded[pixel_ptr++] = palette[palette_ptr1 + 0];
9200edf69d1d initial commit
melanson
parents:
diff changeset
183 decoded[pixel_ptr++] = palette[palette_ptr1 + 1];
9200edf69d1d initial commit
melanson
parents:
diff changeset
184 decoded[pixel_ptr++] = palette[palette_ptr1 + 2];
9200edf69d1d initial commit
melanson
parents:
diff changeset
185 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
186 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
187 else
9200edf69d1d initial commit
melanson
parents:
diff changeset
188 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
189 byte_run = -byte_run;
9200edf69d1d initial commit
melanson
parents:
diff changeset
190 palette_ptr1 = encoded[stream_ptr++] * 4;
9200edf69d1d initial commit
melanson
parents:
diff changeset
191 for (j = 0; j < byte_run; j++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
192 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
193 decoded[pixel_ptr++] = palette[palette_ptr1 + 0];
9200edf69d1d initial commit
melanson
parents:
diff changeset
194 decoded[pixel_ptr++] = palette[palette_ptr1 + 1];
9200edf69d1d initial commit
melanson
parents:
diff changeset
195 decoded[pixel_ptr++] = palette[palette_ptr1 + 2];
9200edf69d1d initial commit
melanson
parents:
diff changeset
196 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
197 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
198 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
199 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
200
9200edf69d1d initial commit
melanson
parents:
diff changeset
201 y_ptr += line_inc;
9200edf69d1d initial commit
melanson
parents:
diff changeset
202 compressed_lines--;
9200edf69d1d initial commit
melanson
parents:
diff changeset
203 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
204 break;
9200edf69d1d initial commit
melanson
parents:
diff changeset
205
9200edf69d1d initial commit
melanson
parents:
diff changeset
206 case FLI_BLACK:
9200edf69d1d initial commit
melanson
parents:
diff changeset
207 // set the whole frame to color 0 (which is usually black)
9200edf69d1d initial commit
melanson
parents:
diff changeset
208 for (pixel_ptr = 0; pixel_ptr < (width * height * 3); pixel_ptr++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
209 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
210 decoded[pixel_ptr++] = palette[0];
9200edf69d1d initial commit
melanson
parents:
diff changeset
211 decoded[pixel_ptr++] = palette[1];
9200edf69d1d initial commit
melanson
parents:
diff changeset
212 decoded[pixel_ptr++] = palette[2];
9200edf69d1d initial commit
melanson
parents:
diff changeset
213 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
214 break;
9200edf69d1d initial commit
melanson
parents:
diff changeset
215
9200edf69d1d initial commit
melanson
parents:
diff changeset
216 case FLI_BRUN:
9200edf69d1d initial commit
melanson
parents:
diff changeset
217 // byte run compression
9200edf69d1d initial commit
melanson
parents:
diff changeset
218 line_inc = width * bytes_per_pixel;
9200edf69d1d initial commit
melanson
parents:
diff changeset
219 y_ptr = 0;
9200edf69d1d initial commit
melanson
parents:
diff changeset
220 for (lines = 0; lines < height; lines++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
221 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
222 pixel_ptr = y_ptr;
9200edf69d1d initial commit
melanson
parents:
diff changeset
223 line_packets = encoded[stream_ptr++];
9200edf69d1d initial commit
melanson
parents:
diff changeset
224 for (i = 0; i < line_packets; i++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
225 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
226 byte_run = encoded[stream_ptr++];
9200edf69d1d initial commit
melanson
parents:
diff changeset
227 if (byte_run > 0)
9200edf69d1d initial commit
melanson
parents:
diff changeset
228 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
229 palette_ptr1 = encoded[stream_ptr++] * 4;
9200edf69d1d initial commit
melanson
parents:
diff changeset
230 for (j = 0; j < byte_run; j++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
231 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
232 decoded[pixel_ptr++] = palette[palette_ptr1 + 0];
9200edf69d1d initial commit
melanson
parents:
diff changeset
233 decoded[pixel_ptr++] = palette[palette_ptr1 + 1];
9200edf69d1d initial commit
melanson
parents:
diff changeset
234 decoded[pixel_ptr++] = palette[palette_ptr1 + 2];
9200edf69d1d initial commit
melanson
parents:
diff changeset
235 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
236 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
237 else // copy bytes if byte_run < 0
9200edf69d1d initial commit
melanson
parents:
diff changeset
238 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
239 byte_run = -byte_run;
9200edf69d1d initial commit
melanson
parents:
diff changeset
240 for (j = 0; j < byte_run; j++)
9200edf69d1d initial commit
melanson
parents:
diff changeset
241 {
9200edf69d1d initial commit
melanson
parents:
diff changeset
242 palette_ptr1 = encoded[stream_ptr++] * 4;
9200edf69d1d initial commit
melanson
parents:
diff changeset
243 decoded[pixel_ptr++] = palette[palette_ptr1 + 0];
9200edf69d1d initial commit
melanson
parents:
diff changeset
244 decoded[pixel_ptr++] = palette[palette_ptr1 + 1];
9200edf69d1d initial commit
melanson
parents:
diff changeset
245 decoded[pixel_ptr++] = palette[palette_ptr1 + 2];
9200edf69d1d initial commit
melanson
parents:
diff changeset
246 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
247 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
248 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
249
9200edf69d1d initial commit
melanson
parents:
diff changeset
250 y_ptr += line_inc;
9200edf69d1d initial commit
melanson
parents:
diff changeset
251 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
252 break;
9200edf69d1d initial commit
melanson
parents:
diff changeset
253
9200edf69d1d initial commit
melanson
parents:
diff changeset
254 case FLI_COPY:
9200edf69d1d initial commit
melanson
parents:
diff changeset
255 // currently unimplemented
9200edf69d1d initial commit
melanson
parents:
diff changeset
256 printf ("FLI_COPY chunk (currently unimplemented)\n");
9200edf69d1d initial commit
melanson
parents:
diff changeset
257 stream_ptr += chunk_size - 6;
9200edf69d1d initial commit
melanson
parents:
diff changeset
258 break;
9200edf69d1d initial commit
melanson
parents:
diff changeset
259
9200edf69d1d initial commit
melanson
parents:
diff changeset
260 case FLI_MINI:
9200edf69d1d initial commit
melanson
parents:
diff changeset
261 // sort of a thumbnail? disregard this chunk...
9200edf69d1d initial commit
melanson
parents:
diff changeset
262 stream_ptr += chunk_size - 6;
9200edf69d1d initial commit
melanson
parents:
diff changeset
263 break;
9200edf69d1d initial commit
melanson
parents:
diff changeset
264
9200edf69d1d initial commit
melanson
parents:
diff changeset
265 default:
9200edf69d1d initial commit
melanson
parents:
diff changeset
266 printf ("FLI: Unrecognized chunk type: %d\n", chunk_type);
9200edf69d1d initial commit
melanson
parents:
diff changeset
267 break;
9200edf69d1d initial commit
melanson
parents:
diff changeset
268 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
269
9200edf69d1d initial commit
melanson
parents:
diff changeset
270 frame_size -= chunk_size;
9200edf69d1d initial commit
melanson
parents:
diff changeset
271 num_chunks--;
9200edf69d1d initial commit
melanson
parents:
diff changeset
272 }
9200edf69d1d initial commit
melanson
parents:
diff changeset
273 }