summaryrefslogtreecommitdiff
path: root/src/i965_fourcc.h
blob: 55daf507e09103f4def83342856c7c0fbc13aab9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#ifndef _I965_FOURCC_H_
#define _I965_FOURCC_H_

#ifndef VA_FOURCC_YV16
#define VA_FOURCC_YV16 VA_FOURCC('Y','V','1','6')
#endif

#ifndef VA_FOURCC_I420
#define VA_FOURCC_I420 VA_FOURCC('I','4','2','0')
#endif

/*
 * VA_FOURCC_IA44 is an exception because the va.h already
 * defines the AI44 as VA_FOURCC('I', 'A', '4', '4').
 */
#ifndef VA_FOURCC_IA44
#define VA_FOURCC_IA44 VA_FOURCC('A','I','4','4')
#endif

#ifndef VA_FOURCC_IA88
#define VA_FOURCC_IA88 VA_FOURCC('I','A','8','8')
#endif

#ifndef VA_FOURCC_AI88
#define VA_FOURCC_AI88 VA_FOURCC('A','I','8','8')
#endif

#ifndef VA_FOURCC_IMC1
#define VA_FOURCC_IMC1 VA_FOURCC('I','M','C','1')
#endif

#ifndef VA_FOURCC_YVY2
#define VA_FOURCC_YVY2 VA_FOURCC('Y','V','Y','2')
#endif

#define I965_MAX_PLANES         4
#define I965_MAX_COMONENTS      4

#define I965_COLOR_YUV          0
#define I965_COLOR_RGB          1
#define I965_COLOR_INDEX        2

typedef struct {
    uint8_t plane;                      /* the plane which the pixel belongs to */
    uint8_t offset;                     /* bits offset within a macro-pixel for packed YUV formats or pixel for other formats in the plane */
} i965_component_info;

typedef struct {
    uint32_t fourcc;                    /* fourcc */
    uint32_t format;                    /* 0: YUV, 1: RGB, 2: Indexed format */
    uint32_t subsampling;               /* Sub sampling */
    uint8_t flag;                       /* 1: only supported by vaCreateSurfaces(), 2: only supported by vaCreateImage(), 3: both */
    uint8_t hfactor;                    /* horizontal sampling factor */
    uint8_t vfactor;                    /* vertical sampling factor */
    uint8_t num_planes;                 /* number of planes */
    uint8_t bpp[I965_MAX_PLANES];       /* bits per pixel within a plane */
    uint8_t num_components;             /* number of components */
    /*
     * Components in the array are ordered in Y, U, V, A (up to 4 components)
     * for YUV formats, R, G, B, A (up to 4 components) for RGB formats and
     * I, A (2 components) for indexed formats
     */
    i965_component_info components[I965_MAX_COMONENTS];
} i965_fourcc_info;

extern const i965_fourcc_info *get_fourcc_info(unsigned int);

#endif /* _I965_FOURCC_H_ */