Blob Blame Raw


#ifndef __FILEQUANTELP_H__
#define __FILEQUANTELP_H__

#include "filequantel.h"

#define QNT_PAL_FILE_SIZE 829440
#define QNT_PAL_W_FILE_SIZE 855360
#define QTL_NTSC_FILE_SIZE 699840
#define QTL_NTSC_W_FILE_SIZE 728640

#define QUANTEL_XSIZE 720
#define QNT_PAL_XSIZE QUANTEL_XSIZE
#define QNT_PAL_YSIZE 576
#define QTL_NTSC_XSIZE QUANTEL_XSIZE
#define QTL_NTSC_YSIZE 486
#define BYTESPERROW (QUANTEL_XSIZE * sizeof(short))

#define CHECK_END_OF_FILE(car)                       \
	{                                                \
		if ((car) == EOF) {                          \
			printf("read error: EOF encountered\n"); \
			exit = 1;                                \
			break;                                   \
		}                                            \
	}

#define QUANTEL_GET_YUV_LINE(file_ptr, buf, xsize)    \
	{                                                 \
		int pixel;                                    \
		TINT32 r, g, b, y1, y2, u, v;                 \
                                                      \
		for (pixel = ((xsize) >> 1); pixel--;) {      \
			u = fgetc(file_ptr);                      \
			CHECK_END_OF_FILE(u)                      \
			u -= 128;                                 \
			y1 = fgetc(file_ptr);                     \
			CHECK_END_OF_FILE(y1)                     \
			y1 -= 16;                                 \
                                                      \
			if (y1 < 0)                               \
				y1 = 0;                               \
                                                      \
			v = fgetc(file_ptr);                      \
			CHECK_END_OF_FILE(v)                      \
			v -= 128;                                 \
			y2 = fgetc(file_ptr);                     \
			CHECK_END_OF_FILE(y2)                     \
			y2 -= 16;                                 \
                                                      \
			if (y2 < 0)                               \
				y2 = 0;                               \
                                                      \
			r = 76310 * y1 + 104635 * v;              \
			if (r > 0xFFFFFF)                         \
				r = 0xFFFFFF;                         \
			if (r <= 0xFFFF)                          \
				r = 0;                                \
                                                      \
			g = 76310 * y1 + -25690 * u + -53294 * v; \
			if (g > 0xFFFFFF)                         \
				g = 0xFFFFFF;                         \
			if (g <= 0xFFFF)                          \
				g = 0;                                \
                                                      \
			b = 76310 * y1 + 132278 * u;              \
			if (b > 0xFFFFFF)                         \
				b = 0xFFFFFF;                         \
			if (b <= 0xFFFF)                          \
				b = 0;                                \
                                                      \
			buf->r = (UCHAR)(r >> 16);                \
			buf->g = (UCHAR)(g >> 16);                \
			buf->b = (UCHAR)(b >> 16);                \
			buf->m = (UCHAR)255;                      \
			buf++;                                    \
                                                      \
			r = 76310 * y2 + 104635 * v;              \
			if (r > 0xFFFFFF)                         \
				r = 0xFFFFFF;                         \
			if (r <= 0xFFFF)                          \
				r = 0;                                \
                                                      \
			g = 76310 * y2 + -25690 * u + -53294 * v; \
			if (g > 0xFFFFFF)                         \
				g = 0xFFFFFF;                         \
			if (g <= 0xFFFF)                          \
				g = 0;                                \
                                                      \
			b = 76310 * y2 + 132278 * u;              \
			if (b > 0xFFFFFF)                         \
				b = 0xFFFFFF;                         \
			if (b <= 0xFFFF)                          \
				b = 0;                                \
                                                      \
			buf->r = (UCHAR)(r >> 16);                \
			buf->g = (UCHAR)(g >> 16);                \
			buf->b = (UCHAR)(b >> 16);                \
			buf->m = (UCHAR)255;                      \
			buf++;                                    \
		}                                             \
	}

#define QUANTEL_FILL_LINE_OF_BLACK(rbuf, gbuf, bbuf, size) \
	{                                                      \
		memset(rbuf, 0, (size_t)(size * sizeof(USHORT)));  \
		memset(gbuf, 0, (size_t)(size * sizeof(USHORT)));  \
		memset(bbuf, 0, (size_t)(size * sizeof(USHORT)));  \
	}

#define QUANTEL_FILL_LINE_OF_RGB(xmarg, xsize, rbuf, gbuf, bbuf, RGBbuf) \
	{                                                                      \
	  int i;                                                               \
		QUANTEL_FILL_LINE_OF_BLACK(rbuf, gbuf, bbuf, xmarg)                  \
		for (i = xmarg; i < xsize + xmarg; i++) {                            \
			rbuf[i] = (USHORT)RGBbuf->r;                                       \
			gbuf[i] = (USHORT)RGBbuf->g;                                       \
			bbuf[i] = (USHORT)RGBbuf->b;                                       \
			RGBbuf++;                                                          \
		}                                                                    \
		QUANTEL_FILL_LINE_OF_BLACK(rbuf + i, gbuf + i, bbuf + i, xmarg)      \
	}

#define QUANTEL_FILL_LINE_OF_RGB2(xmarg, rbuf, gbuf, bbuf, RGBbuf)  \
	{                                                                 \
	  int i;                                                          \
		QUANTEL_FILL_LINE_OF_BLACK(rbuf, gbuf, bbuf, xmarg)             \
		for (i = xmarg; i < (QUANTEL_XSIZE - xmarg); i++) {             \
			rbuf[i] = (USHORT)RGBbuf->r;                                  \
			gbuf[i] = (USHORT)RGBbuf->g;                                  \
			bbuf[i] = (USHORT)RGBbuf->b;                                  \
			RGBbuf++;                                                     \
		}                                                               \
		QUANTEL_FILL_LINE_OF_BLACK(rbuf + i, gbuf + i, bbuf + i, xmarg) \
	}

#define QUANTEL_LIMIT(r, x)  \
	{                        \
		r = x;               \
		if (r > 0x00ffffff)  \
			r = 0x00ffffff;  \
		if (r <= 0x00000000) \
			r = 0;           \
	}

#endif /* __FILEQUANTELP_H__ */