~malept/ubuntu/lucid/python2.6/dev-dependency-fix

« back to all changes in this revision

Viewing changes to Modules/yuv.h

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-13 12:51:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090213125100-uufgcb9yeqzujpqw
Tags: upstream-2.6.1
ImportĀ upstreamĀ versionĀ 2.6.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
#ifndef Py_YUV_H
 
3
#define Py_YUV_H
 
4
#ifdef __cplusplus
 
5
extern "C" {
 
6
#endif
 
7
 
 
8
/*
 
9
 * SVideo YUV 4:1:1 format.
 
10
 *
 
11
 * 4 consecutive quadwords describe 8 pixels on 2 lines, as depicted
 
12
 * below.  An array of (width/4) of the below structure describes 2
 
13
 * scan lines.
 
14
 *
 
15
 * +-------------------+
 
16
 * | 00 | 01 | 02 | 03 | . . .
 
17
 * +-------------------+
 
18
 * | 10 | 11 | 12 | 13 | . . .
 
19
 * +-------------------+
 
20
 */
 
21
struct yuv411 {
 
22
        struct {
 
23
                unsigned int dummy:8;
 
24
                unsigned int y0:8;
 
25
                unsigned int u0:2;
 
26
                unsigned int v0:2;
 
27
                unsigned int y1:8;
 
28
                unsigned int u1:2;
 
29
                unsigned int v1:2;
 
30
        } v[4];
 
31
};
 
32
 
 
33
#define YUV411_Y00(y)   (y).v[0].y0
 
34
#define YUV411_Y01(y)   (y).v[1].y0
 
35
#define YUV411_Y02(y)   (y).v[2].y0
 
36
#define YUV411_Y03(y)   (y).v[3].y0
 
37
#define YUV411_Y10(y)   (y).v[0].y1
 
38
#define YUV411_Y11(y)   (y).v[1].y1
 
39
#define YUV411_Y12(y)   (y).v[2].y1
 
40
#define YUV411_Y13(y)   (y).v[3].y1
 
41
#define YUV411_U00(y)   ((y).v[0].u0<<6|(y).v[1].u0<<4|(y).v[2].u0<<2|(y).v[3].u0)
 
42
#define YUV411_U01(y)   YUV411_U00(y)
 
43
#define YUV411_U02(y)   YUV411_U00(y)
 
44
#define YUV411_U03(y)   YUV411_U00(y)
 
45
#define YUV411_U10(y)   ((y).v[0].u1<<6|(y).v[1].u1<<4|(y).v[2].u1<<2|(y).v[3].u1)
 
46
#define YUV411_U11(y)   YUV411_U10(y)
 
47
#define YUV411_U12(y)   YUV411_U10(y)
 
48
#define YUV411_U13(y)   YUV411_U10(y)
 
49
#define YUV411_V00(y)   ((y).v[0].v0<<6|(y).v[1].v0<<4|(y).v[2].v0<<2|(y).v[3].v0)
 
50
#define YUV411_V01(y)   YUV411_V00(y)
 
51
#define YUV411_V02(y)   YUV411_V00(y)
 
52
#define YUV411_V03(y)   YUV411_V00(y)
 
53
#define YUV411_V10(y)   ((y).v[0].v1<<6|(y).v[1].v1<<4|(y).v[2].v1<<2|(y).v[3].v1)
 
54
#define YUV411_V11(y)   YUV411_V10(y)
 
55
#define YUV411_V12(y)   YUV411_V10(y)
 
56
#define YUV411_V13(y)   YUV411_V10(y)
 
57
 
 
58
/*
 
59
 * Compression Library YUV 4:2:2 format.
 
60
 *
 
61
 * 1 longword describes 2 pixels.
 
62
 *
 
63
 * +-------+
 
64
 * | 0 | 1 |
 
65
 * +-------+
 
66
 */
 
67
struct yuv422 {
 
68
        unsigned int u:8;
 
69
        unsigned int y0:8;
 
70
        unsigned int v:8;
 
71
        unsigned int y1:8;
 
72
};
 
73
#define YUV422_Y0(y)    (y).y0
 
74
#define YUV422_Y1(y)    (y).y1
 
75
#define YUV422_U0(y)    (y).u
 
76
#define YUV422_U1(y)    (y).u
 
77
#define YUV422_V0(y)    (y).v
 
78
#define YUV422_V1(y)    (y).v
 
79
 
 
80
/*
 
81
 * Compression library YUV 4:2:2 Duplicate Chroma format.
 
82
 *
 
83
 * This is like the previous format, but the U and V values are
 
84
 * duplicated vertically (and hence there is some redundancy in the
 
85
 * data).  With other words, lines 2*n and 2*n+1 have the same U and V
 
86
 * values but different Y values.
 
87
 */
 
88
 
 
89
/*
 
90
 * Conversion functions.
 
91
 */
 
92
void yuv_sv411_to_cl422dc(int, void *, void *, int, int);
 
93
void yuv_sv411_to_cl422dc_quartersize(int, void *, void *, int, int);
 
94
void yuv_sv411_to_cl422dc_sixteenthsize(int, void *, void *, int, int);
 
95
 
 
96
#ifdef __cplusplus
 
97
}
 
98
#endif
 
99
#endif /* !Py_YUV_H */