annotate vidix/vidix.h @ 22949:6613c5397aba

Remove the .norecurse hack. It bloats the Makefile, adds maintenance burden, likely has no users and most of all does not work correctly anyway.
author diego
date Wed, 11 Apr 2007 07:16:04 +0000
parents d74001dbe2a6
children d5e23946d776
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
1 /*
dcc632dd2097 preliminary version
nick
parents:
diff changeset
2 * vidix.h
dcc632dd2097 preliminary version
nick
parents:
diff changeset
3 * VIDIX - VIDeo Interface for *niX
dcc632dd2097 preliminary version
nick
parents:
diff changeset
4 * This interface is introduced as universal one to MPEG decoder,
dcc632dd2097 preliminary version
nick
parents:
diff changeset
5 * BES == Back End Scaler and YUV2RGB hw accelerators.
dcc632dd2097 preliminary version
nick
parents:
diff changeset
6 * In the future it may be expanded up to capturing and audio things.
dcc632dd2097 preliminary version
nick
parents:
diff changeset
7 * Main goal of this this interface imlpementation is providing DGA
dcc632dd2097 preliminary version
nick
parents:
diff changeset
8 * everywhere where it's possible (unlike X11 and other).
22902
d74001dbe2a6 missing headers in vidix drivers registry files
ben
parents: 22860
diff changeset
9 * Copyright 2002 Nick Kurshev, 2007 Benjamin Zores
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
10 * Licence: GPL
dcc632dd2097 preliminary version
nick
parents:
diff changeset
11 * This interface is based on v4l2, fbvid.h, mga_vid.h projects
dcc632dd2097 preliminary version
nick
parents:
diff changeset
12 * and personally my ideas.
dcc632dd2097 preliminary version
nick
parents:
diff changeset
13 * NOTE: This interface is introduces as driver interface.
dcc632dd2097 preliminary version
nick
parents:
diff changeset
14 * Don't use it for APP.
dcc632dd2097 preliminary version
nick
parents:
diff changeset
15 */
dcc632dd2097 preliminary version
nick
parents:
diff changeset
16 #ifndef VIDIX_H
dcc632dd2097 preliminary version
nick
parents:
diff changeset
17 #define VIDIX_H
dcc632dd2097 preliminary version
nick
parents:
diff changeset
18
dcc632dd2097 preliminary version
nick
parents:
diff changeset
19 #ifdef __cplusplus
dcc632dd2097 preliminary version
nick
parents:
diff changeset
20 extern "C" {
dcc632dd2097 preliminary version
nick
parents:
diff changeset
21 #endif
dcc632dd2097 preliminary version
nick
parents:
diff changeset
22
dcc632dd2097 preliminary version
nick
parents:
diff changeset
23 #define VIDIX_VERSION 100
dcc632dd2097 preliminary version
nick
parents:
diff changeset
24
22860
efe51e2b81c3 removed references to no longer used internal drivers functions
ben
parents: 22859
diff changeset
25 #define PROBE_NORMAL 0 /* normal probing */
efe51e2b81c3 removed references to no longer used internal drivers functions
ben
parents: 22859
diff changeset
26 #define PROBE_FORCE 1 /* ignore device_id but recognize device if it's known */
efe51e2b81c3 removed references to no longer used internal drivers functions
ben
parents: 22859
diff changeset
27
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
28 typedef enum vidix_dev_type {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
29 TYPE_OUTPUT = 0x00000000, /* Is a video playback device */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
30 TYPE_CAPTURE = 0x00000001, /* Is a capture device */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
31 TYPE_CODEC = 0x00000002, /* Device supports hw (de)coding */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
32 TYPE_FX = 0x00000004, /* Is a video effects device */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
33 } vidix_dev_type_t;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
34
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
35 typedef enum vidix_dev_flag {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
36 FLAG_NONE = 0x00000000, /* No flags defined */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
37 FLAG_DMA = 0x00000001, /* Card can use DMA */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
38 /* Card can use DMA only if src pitch == dest pitch */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
39 FLAG_EQ_DMA = 0x00000002,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
40 /* Possible to wait for DMA to finish. See BM_DMA_SYNC and BM_DMA_BLOCK */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
41 FLAG_SYNC_DMA = 0x00000004,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
42 FLAG_UPSCALER = 0x00000010, /* Card supports hw upscaling */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
43 FLAG_DOWNSCALER = 0x00000020, /* Card supports hw downscaling */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
44 FLAG_SUBPIC = 0x00001000, /* Card supports DVD subpictures */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
45 FLAG_EQUALIZER = 0x00002000, /* Card supports equalizer */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
46 } vidix_dev_flag_t;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
47
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
48 typedef struct vidix_capability_s
dcc632dd2097 preliminary version
nick
parents:
diff changeset
49 {
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
50 char name[64]; /* Driver name */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
51 char author[64]; /* Author name */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
52 vidix_dev_type_t type;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
53 unsigned reserved0[4];
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
54 int maxwidth;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
55 int maxheight;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
56 int minwidth;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
57 int minheight;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
58 int maxframerate; /* -1 if unlimited */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
59 vidix_dev_flag_t flags;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
60 unsigned short vendor_id;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
61 unsigned short device_id;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
62 unsigned reserved1[4];
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
63 } vidix_capability_t;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
64
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
65 typedef enum vidix_depth {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
66 VID_DEPTH_NONE = 0x0000,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
67 VID_DEPTH_1BPP = 0x0001,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
68 VID_DEPTH_2BPP = 0x0002,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
69 VID_DEPTH_4BPP = 0x0004,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
70 VID_DEPTH_8BPP = 0x0008,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
71 VID_DEPTH_12BPP = 0x0010,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
72 VID_DEPTH_15BPP = 0x0020,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
73 VID_DEPTH_16BPP = 0x0040,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
74 VID_DEPTH_24BPP = 0x0080,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
75 VID_DEPTH_32BPP = 0x0100,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
76 VID_DEPTH_ALL = VID_DEPTH_1BPP | VID_DEPTH_2BPP | \
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
77 VID_DEPTH_4BPP | VID_DEPTH_8BPP | \
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
78 VID_DEPTH_12BPP | VID_DEPTH_15BPP | \
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
79 VID_DEPTH_16BPP | VID_DEPTH_24BPP | \
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
80 VID_DEPTH_32BPP,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
81 } vidix_depth_t;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
82
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
83 typedef enum vidix_cap {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
84 VID_CAP_NONE = 0x0000,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
85 /* if overlay can be bigger than source */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
86 VID_CAP_EXPAND = 0x0001,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
87 /* if overlay can be smaller than source */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
88 VID_CAP_SHRINK = 0x0002,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
89 /* if overlay can be blended with framebuffer */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
90 VID_CAP_BLEND = 0x0004,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
91 /* if overlay can be restricted to a colorkey */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
92 VID_CAP_COLORKEY = 0x0008,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
93 /* if overlay can be restricted to an alpha channel */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
94 VID_CAP_ALPHAKEY = 0x0010,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
95 /* if the colorkey can be a range */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
96 VID_CAP_COLORKEY_ISRANGE = 0x0020,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
97 /* if the alphakey can be a range */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
98 VID_CAP_ALPHAKEY_ISRANGE = 0x0040,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
99 /* colorkey is checked against framebuffer */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
100 VID_CAP_COLORKEY_ISMAIN = 0x0080,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
101 /* colorkey is checked against overlay */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
102 VID_CAP_COLORKEY_ISOVERLAY = 0x0100,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
103 /* alphakey is checked against framebuffer */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
104 VID_CAP_ALPHAKEY_ISMAIN = 0x0200,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
105 /* alphakey is checked against overlay */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
106 VID_CAP_ALPHAKEY_ISOVERLAY = 0x0400,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
107 } vidix_cap_t;
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
108
dcc632dd2097 preliminary version
nick
parents:
diff changeset
109 typedef struct vidix_fourcc_s
dcc632dd2097 preliminary version
nick
parents:
diff changeset
110 {
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
111 unsigned fourcc; /* input: requested fourcc */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
112 vidix_depth_t depth; /* output: screen depth for given fourcc */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
113 vidix_cap_t flags; /* output: capability */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
114 } vidix_fourcc_t;
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
115
dcc632dd2097 preliminary version
nick
parents:
diff changeset
116 typedef struct vidix_yuv_s
dcc632dd2097 preliminary version
nick
parents:
diff changeset
117 {
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
118 unsigned y,u,v;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
119 } vidix_yuv_t;
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
120
dcc632dd2097 preliminary version
nick
parents:
diff changeset
121 typedef struct vidix_rect_s
dcc632dd2097 preliminary version
nick
parents:
diff changeset
122 {
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
123 unsigned x,y,w,h; /* in pixels */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
124 vidix_yuv_t pitch; /* line-align in bytes */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
125 } vidix_rect_t;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
126
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
127 typedef enum vidix_color_key_op {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
128 CKEY_FALSE = 0,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
129 CKEY_TRUE = 1,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
130 CKEY_EQ = 2,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
131 CKEY_NEQ = 3,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
132 } vidix_color_key_op_t;
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
133
dcc632dd2097 preliminary version
nick
parents:
diff changeset
134 typedef struct vidix_color_key_s
dcc632dd2097 preliminary version
nick
parents:
diff changeset
135 {
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
136 vidix_color_key_op_t op; /* defines logical operation */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
137 unsigned char red;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
138 unsigned char green;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
139 unsigned char blue;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
140 unsigned char reserved;
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
141 }vidix_ckey_t;
dcc632dd2097 preliminary version
nick
parents:
diff changeset
142
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
143 typedef enum vidix_video_key_op {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
144 VKEY_FALSE = 0,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
145 VKEY_TRUE = 1,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
146 VKEY_EQ = 2,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
147 VKEY_NEQ = 3,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
148 } vidix_video_key_op_t;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
149
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
150 typedef struct vidix_video_key_s {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
151 vidix_video_key_op_t op; /* defines logical operation */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
152 unsigned char key[8];
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
153 } vidix_vkey_t;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
154
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
155 typedef enum vidix_interleave {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
156 VID_PLAY_INTERLEAVED_UV = 0x00000001,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
157 /* UVUVUVUVUV used by Matrox G200 */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
158 INTERLEAVING_UV = 0x00001000,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
159 /* VUVUVUVUVU */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
160 INTERLEAVING_VU = 0x00001001,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
161 } vidix_interleave_t;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
162
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
163 #define VID_PLAY_MAXFRAMES 64 /* unreal limitation */
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
164
dcc632dd2097 preliminary version
nick
parents:
diff changeset
165 typedef struct vidix_playback_s
dcc632dd2097 preliminary version
nick
parents:
diff changeset
166 {
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
167 unsigned fourcc; /* app -> driver: movies's fourcc */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
168 unsigned capability; /* app -> driver: what capability to use */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
169 unsigned blend_factor; /* app -> driver: blending factor */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
170 vidix_rect_t src; /* app -> driver: original movie size */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
171 vidix_rect_t dest; /* app -> driver: destinition movie size.
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
172 driver->app dest_pitch */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
173 vidix_interleave_t flags; /* driver -> app: interleaved UV planes */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
174 /* memory model */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
175 unsigned frame_size; /* driver -> app: destinition frame size */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
176 unsigned num_frames; /* app -> driver: after call: driver -> app */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
177 unsigned offsets[VID_PLAY_MAXFRAMES]; /* driver -> app */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
178 vidix_yuv_t offset; /* driver -> app: relative offsets
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
179 within frame for yuv planes */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
180 void *dga_addr; /* driver -> app: linear address */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
181 } vidix_playback_t;
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
182
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
183 typedef enum vidix_key_op {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
184 KEYS_PUT = 0,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
185 KEYS_AND = 1,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
186 KEYS_OR = 2,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
187 KEYS_XOR = 3,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
188 } vidix_key_op_t;
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
189
4070
b61ba6c256dd Minor interface changes: color and video keys are moved out from playback configuring
nick
parents: 4008
diff changeset
190 typedef struct vidix_grkey_s
b61ba6c256dd Minor interface changes: color and video keys are moved out from playback configuring
nick
parents: 4008
diff changeset
191 {
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
192 vidix_ckey_t ckey; /* app -> driver: color key */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
193 vidix_vkey_t vkey; /* app -> driver: video key */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
194 vidix_key_op_t key_op; /* app -> driver: keys operations */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
195 } vidix_grkey_t;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
196
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
197 typedef enum vidix_veq_cap {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
198 VEQ_CAP_NONE = 0x00000000UL,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
199 VEQ_CAP_BRIGHTNESS = 0x00000001UL,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
200 VEQ_CAP_CONTRAST = 0x00000002UL,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
201 VEQ_CAP_SATURATION = 0x00000004UL,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
202 VEQ_CAP_HUE = 0x00000008UL,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
203 VEQ_CAP_RGB_INTENSITY = 0x00000010UL,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
204 } vidix_veq_cap_t;
4070
b61ba6c256dd Minor interface changes: color and video keys are moved out from playback configuring
nick
parents: 4008
diff changeset
205
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
206 typedef enum vidix_veq_flag {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
207 VEQ_FLG_ITU_R_BT_601 = 0x00000000, /* ITU-R BT.601 colour space (default) */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
208 VEQ_FLG_ITU_R_BT_709 = 0x00000001, /* ITU-R BT.709 colour space */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
209 VEQ_FLG_ITU_MASK = 0x0000000f,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
210 } vidix_veq_flag_t;
4070
b61ba6c256dd Minor interface changes: color and video keys are moved out from playback configuring
nick
parents: 4008
diff changeset
211
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
212 typedef struct vidix_video_eq_s {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
213 vidix_veq_cap_t cap; /* on get_eq should contain capability of
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
214 equalizer on set_eq should contain using fields */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
215 /* end-user app can have presets like: cold-normal-hot picture and so on */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
216 int brightness; /* -1000 : +1000 */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
217 int contrast; /* -1000 : +1000 */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
218 int saturation; /* -1000 : +1000 */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
219 int hue; /* -1000 : +1000 */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
220 int red_intensity; /* -1000 : +1000 */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
221 int green_intensity; /* -1000 : +1000 */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
222 int blue_intensity; /* -1000 : +1000 */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
223 vidix_veq_flag_t flags; /* currently specifies ITU YCrCb color
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
224 space to use */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
225 } vidix_video_eq_t;
4070
b61ba6c256dd Minor interface changes: color and video keys are moved out from playback configuring
nick
parents: 4008
diff changeset
226
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
227 typedef enum vidix_interlace_flag {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
228 /* stream is not interlaced */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
229 CFG_NON_INTERLACED = 0x00000000,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
230 /* stream is interlaced */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
231 CFG_INTERLACED = 0x00000001,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
232 /* first frame contains even fields but second - odd */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
233 CFG_EVEN_ODD_INTERLACING = 0x00000002,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
234 /* first frame contains odd fields but second - even */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
235 CFG_ODD_EVEN_INTERLACING = 0x00000004,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
236 /* field deinterlace_pattern is valid */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
237 CFG_UNIQUE_INTERLACING = 0x00000008,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
238 /* unknown deinterlacing - use adaptive if it's possible */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
239 CFG_UNKNOWN_INTERLACING = 0x0000000f,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
240 } vidix_interlace_flag_t;
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
241
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
242 typedef struct vidix_deinterlace_s {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
243 vidix_interlace_flag_t flags;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
244 unsigned deinterlace_pattern; /* app -> driver: deinterlace pattern if
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
245 flag CFG_UNIQUE_INTERLACING is set */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
246 } vidix_deinterlace_t;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
247
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
248 typedef struct vidix_slice_s {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
249 void *address; /* app -> driver */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
250 unsigned size; /* app -> driver */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
251 vidix_rect_t slice; /* app -> driver */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
252 } vidix_slice_t;
4191
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
253
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
254 typedef enum vidix_bm_flag {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
255 LVO_DMA_NOSYNC = 0,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
256 /* waits for vsync or hsync */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
257 LVO_DMA_SYNC = 1,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
258 } vidix_dma_flag_t;
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
259
dcc632dd2097 preliminary version
nick
parents:
diff changeset
260 typedef struct vidix_dma_s
dcc632dd2097 preliminary version
nick
parents:
diff changeset
261 {
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
262 vidix_slice_t src; /* app -> driver */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
263 vidix_slice_t dest; /* app -> driver */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
264 vidix_dma_flag_t flags; /* app -> driver */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
265 } vidix_dma_t;
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
266
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
267 typedef enum vidix_fx_type {
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
268 FX_TYPE_BOOLEAN = 0x00000000,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
269 FX_TYPE_INTEGER = 0x00000001,
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
270 } vidix_fx_type_t;
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
271
4191
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
272 /*
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
273 This structure is introdused to support OEM effects like:
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
274 - sharpness
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
275 - exposure
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
276 - (auto)gain
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
277 - H(V)flip
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
278 - black level
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
279 - white balance
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
280 and many other
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
281 */
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
282 typedef struct vidix_oem_fx_s
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
283 {
22859
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
284 vidix_fx_type_t type; /* type of effects */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
285 int num; /* app -> driver: effect number.
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
286 From 0 to max number of effects */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
287 int minvalue; /* min value of effect. 0 - for boolean */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
288 int maxvalue; /* max value of effect. 1 - for boolean */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
289 int value; /* current value of effect on get; required on set */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
290 char *name[80]; /* effect name to display */
c5a45e3d6d16 updated vidix.h from upstream vidix project
ben
parents: 4929
diff changeset
291 } vidix_oem_fx_t;
4191
62a6135d090e + new features and possibility
nick
parents: 4070
diff changeset
292
3991
dcc632dd2097 preliminary version
nick
parents:
diff changeset
293 #ifdef __cplusplus
dcc632dd2097 preliminary version
nick
parents:
diff changeset
294 }
dcc632dd2097 preliminary version
nick
parents:
diff changeset
295 #endif
dcc632dd2097 preliminary version
nick
parents:
diff changeset
296
dcc632dd2097 preliminary version
nick
parents:
diff changeset
297 #endif