/*******************************************************************

 *******************************************************************/

#ifndef FRAME_H
#define FRAME_H

#define UCHAR_CLIP_TABLE_OFFSET 384

typedef struct {
	int height;
	int width;

	unsigned char *y;
	unsigned char *u;
	unsigned char *v;
} FRAME;

typedef struct {
	int chroma_format;
	int progressive;

	int ry;
	int ru;
	int rv;

	int gy;
	int gu;
	int gv;

	int by;
	int bu;
	int bv;
} BGR_CONVERSION_PARAMETER;

#ifdef __cplusplus
extern "C" {
#endif

#ifndef FRAME_C
extern const unsigned char uchar_clip_table[1024];	
extern FRAME *new_frame(int width, int height);
extern void delete_frame(FRAME *p);
extern void yuv_420_to_422(FRAME *p);
extern void yuv_422_to_444(FRAME *p);
extern void frame_to_bgr(FRAME *in, unsigned char *out, BGR_CONVERSION_PARAMETER *prm);
extern void save_frame_bmp(FRAME *in, int frame_count, BGR_CONVERSION_PARAMETER *prm);
#endif
	
#ifdef __cplusplus
}
#endif

#endif