9 static void dispatchDecoder8(
ubyte **pFrame,
ubyte codeType,
ubyte **pData,
int *pDataRemain,
int *curXb,
int *curYb);
19 for (j = 0; j < yb; j++) {
20 for (i = 0; i < (xb / 2); i++) {
21 dispatchDecoder8(&pFrame, (*pMap) & 0xf, &pData, &dataRemain, &i, &j);
23 dispatchDecoder8(&pFrame, (*pMap) >> 4, &pData, &dataRemain, &i, &j);
33 static void relClose(
int i,
int *
x,
int *
y)
44 static void relFar(
int i,
int sign,
int *
x,
int *
y)
47 *x = sign * (8 + (i % 7));
50 *x = sign * (-14 + (i - 56) % 29);
51 *y = sign * (8 + (i - 56) / 29);
57 static void copyFrame(
ubyte *pDest,
ubyte *pSrc)
61 for (i = 0; i < 8; i++) {
62 memcpy(pDest, pSrc, 8);
77 *pFrame++ = p[(mask &
pattern) >> shift];
92 pel = p[(mask & pat0) >> shift];
112 pel = p[(mask & pat) >> shift];
125 unsigned long mask = 0x00000003UL;
128 unsigned long pat = (pat3 << 24) | (pat2 << 16) | (pat1 << 8) | pat0;
130 for (i = 0; i < 16; i++) {
131 pFrame[i&3] = p[(pat &
mask) >> shift];
147 *pFrame++ = p[(mask & pat) ? 1 : 0];
158 while (mask != 0x10) {
159 pel = p[(mask & pat) ? 1 : 0];
177 ushort pat = (pat1 << 8) | pat0;
179 for (i = 0; i < 4; i++) {
180 for (j = 0; j < 4; j++) {
181 pel = p[(pat &
mask) ? 1 : 0];
190 static void dispatchDecoder8(
ubyte **pFrame,
ubyte codeType,
ubyte **pData,
int *pDataRemain,
int *curXb,
int *curYb)
208 relFar(*(*pData)++, 1, &x, &y);
209 copyFrame(*pFrame, *pFrame + x + y*
g_width);
215 relFar(*(*pData)++, -1, &x, &y);
216 copyFrame(*pFrame, *pFrame + x + y*
g_width);
222 relClose(*(*pData)++, &x, &y);
229 x = (
signed char)*(*pData)++;
230 y = (
signed char)*(*pData)++;
237 for (i = 0; i < 2; i++) {
240 if (++*curXb == (
g_width >> 3)) {
255 for (i = 0; i < 8; i++) {
256 patternRow2Pixels(*pFrame, *(*pData)++, p);
260 for (i = 0; i < 2; i++) {
261 patternRow2Pixels2(*pFrame, *(*pData) & 0xf, p);
264 patternRow2Pixels2(*pFrame, *(*pData)++ >> 4, p);
273 if ( (*pData)[0] <= (*pData)[1] ) {
275 for (i = 0; i < 4; i++) {
278 pat[0] = *(*pData)++;
279 pat[1] = *(*pData)++;
280 patternQuadrant2Pixels(*pFrame, pat[0], pat[1], p);
288 }
else if ( (*pData)[6] <= (*pData)[7] ) {
290 for (i = 0; i < 4; i++) {
296 pat[0] = *(*pData)++;
297 pat[1] = *(*pData)++;
298 patternQuadrant2Pixels(*pFrame, pat[0], pat[1], p);
307 for (i = 0; i < 8; i++) {
313 patternRow2Pixels(*pFrame, *(*pData)++, p);
322 if ( (*pData)[0] <= (*pData)[1] ) {
323 if ( (*pData)[2] <= (*pData)[3] ) {
329 for (i = 0; i < 8; i++) {
330 pat[0] = *(*pData)++;
331 pat[1] = *(*pData)++;
333 patternRow4Pixels(*pFrame, pat[0], pat[1], p);
344 patternRow4Pixels2(*pFrame, *(*pData)++, p);
347 patternRow4Pixels2(*pFrame, *(*pData)++, p);
350 patternRow4Pixels2(*pFrame, *(*pData)++, p);
353 patternRow4Pixels2(*pFrame, *(*pData)++, p);
357 if ( (*pData)[2] <= (*pData)[3] ) {
364 for (i = 0; i < 8; i++) {
365 pat[0] = *(*pData)++;
367 patternRow4Pixels2x1(*pFrame, pat[0], p);
379 for (i = 0; i < 4; i++) {
380 pat[0] = *(*pData)++;
381 pat[1] = *(*pData)++;
383 patternRow4Pixels(*pFrame, pat[0], pat[1], p);
386 patternRow4Pixels(*pFrame, pat[0], pat[1], p);
396 if ( (*pData)[0] <= (*pData)[1] ) {
397 for (i = 0; i < 4; i++) {
402 pat[0] = *(*pData)++;
403 pat[1] = *(*pData)++;
404 pat[2] = *(*pData)++;
405 pat[3] = *(*pData)++;
407 patternQuadrant4Pixels(*pFrame, pat[0], pat[1], pat[2], pat[3], p);
415 if ( (*pData)[12] <= (*pData)[13] ) {
417 for (i = 0; i < 4; i++) {
425 pat[0] = *(*pData)++;
426 pat[1] = *(*pData)++;
427 pat[2] = *(*pData)++;
428 pat[3] = *(*pData)++;
430 patternQuadrant4Pixels(*pFrame, pat[0], pat[1], pat[2], pat[3], p);
439 for (i = 0; i < 8; i++) {
447 pat[0] = *(*pData)++;
448 pat[1] = *(*pData)++;
450 patternRow4Pixels(*pFrame, pat[0], pat[1], p);
460 for (i = 0; i < 8; i++) {
461 memcpy(*pFrame, *pData, 8);
471 for (i = 0; i < 4; i++) {
472 for (j = 0; j < 2; j++) {
473 for (k = 0; k < 4; k++) {
474 (*pFrame)[2*k] = (*pData)[k];
475 (*pFrame)[2*k+1] = (*pData)[k];
489 for (i = 0; i < 2; i++) {
490 for (j = 0; j < 4; j++) {
491 for (k = 0; k < 4; k++) {
492 (*pFrame)[k*
g_width+j] = (*pData)[0];
493 (*pFrame)[k*
g_width+j+4] = (*pData)[1];
506 for (i = 0; i < 8; i++) {
507 memset(*pFrame, **pData, 8);
517 for (i = 0; i < 8; i++) {
518 for (j = 0; j < 8; j++) {
519 (*pFrame)[j] = (*pData)[(i+j)&1];
void decodeFrame8(ubyte *pFrame, ubyte *pMap, int mapRemain, ubyte *pData, int dataRemain)
GLint GLint GLint GLint GLint x