
#ifndef Py_YUV_H
#define Py_YUV_H
#ifdef __cplusplus
extern "C" {
#endif

/*
 * SVideo YUV 4:1:1 format.
 *
 * 4 consecutive quadwords describe 8 pixels on 2 lines, as depicted
 * below.  An array of (width/4) of the below structure describes 2
 * scan lines.
 *
 * +-------------------+
 * | 00 | 01 | 02 | 03 | . . .
 * +-------------------+
 * | 10 | 11 | 12 | 13 | . . .
 * +-------------------+
 */
struct yuv411 {
    struct {
        unsigned int dummy:8;
        unsigned int y0:8;
        unsigned int u0:2;
        unsigned int v0:2;
        unsigned int y1:8;
        unsigned int u1:2;
        unsigned int v1:2;
    } v[4];
};

#define YUV411_Y00(y)   (y).v[0].y0
#define YUV411_Y01(y)   (y).v[1].y0
#define YUV411_Y02(y)   (y).v[2].y0
#define YUV411_Y03(y)   (y).v[3].y0
#define YUV411_Y10(y)   (y).v[0].y1
#define YUV411_Y11(y)   (y).v[1].y1
#define YUV411_Y12(y)   (y).v[2].y1
#define YUV411_Y13(y)   (y).v[3].y1
#define YUV411_U00(y)   ((y).v[0].u0<<6|(y).v[1].u0<<4|(y).v[2].u0<<2|(y).v[3].u0)
#define YUV411_U01(y)   YUV411_U00(y)
#define YUV411_U02(y)   YUV411_U00(y)
#define YUV411_U03(y)   YUV411_U00(y)
#define YUV411_U10(y)   ((y).v[0].u1<<6|(y).v[1].u1<<4|(y).v[2].u1<<2|(y).v[3].u1)
#define YUV411_U11(y)   YUV411_U10(y)
#define YUV411_U12(y)   YUV411_U10(y)
#define YUV411_U13(y)   YUV411_U10(y)
#define YUV411_V00(y)   ((y).v[0].v0<<6|(y).v[1].v0<<4|(y).v[2].v0<<2|(y).v[3].v0)
#define YUV411_V01(y)   YUV411_V00(y)
#define YUV411_V02(y)   YUV411_V00(y)
#define YUV411_V03(y)   YUV411_V00(y)
#define YUV411_V10(y)   ((y).v[0].v1<<6|(y).v[1].v1<<4|(y).v[2].v1<<2|(y).v[3].v1)
#define YUV411_V11(y)   YUV411_V10(y)
#define YUV411_V12(y)   YUV411_V10(y)
#define YUV411_V13(y)   YUV411_V10(y)

/*
 * Compression Library YUV 4:2:2 format.
 *
 * 1 longword describes 2 pixels.
 *
 * +-------+
 * | 0 | 1 |
 * +-------+
 */
struct yuv422 {
    unsigned int u:8;
    unsigned int y0:8;
    unsigned int v:8;
    unsigned int y1:8;
};
#define YUV422_Y0(y)    (y).y0
#define YUV422_Y1(y)    (y).y1
#define YUV422_U0(y)    (y).u
#define YUV422_U1(y)    (y).u
#define YUV422_V0(y)    (y).v
#define YUV422_V1(y)    (y).v

/*
 * Compression library YUV 4:2:2 Duplicate Chroma format.
 *
 * This is like the previous format, but the U and V values are
 * duplicated vertically (and hence there is some redundancy in the
 * data).  With other words, lines 2*n and 2*n+1 have the same U and V
 * values but different Y values.
 */

/*
 * Conversion functions.
 */
void yuv_sv411_to_cl422dc(int, void *, void *, int, int);
void yuv_sv411_to_cl422dc_quartersize(int, void *, void *, int, int);
void yuv_sv411_to_cl422dc_sixteenthsize(int, void *, void *, int, int);

#ifdef __cplusplus
}
#endif
#endif /* !Py_YUV_H */
