annotate vidix/vidix.h @ 25809:7c4ba42d7328

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