diff options
Diffstat (limited to 'Documentation/video4linux/cx2341x/fw-osd-api.txt')
-rw-r--r-- | Documentation/video4linux/cx2341x/fw-osd-api.txt | 342 |
1 files changed, 342 insertions, 0 deletions
diff --git a/Documentation/video4linux/cx2341x/fw-osd-api.txt b/Documentation/video4linux/cx2341x/fw-osd-api.txt new file mode 100644 index 000000000000..da98ae30a37a --- /dev/null +++ b/Documentation/video4linux/cx2341x/fw-osd-api.txt | |||
@@ -0,0 +1,342 @@ | |||
1 | OSD firmware API description | ||
2 | ============================ | ||
3 | |||
4 | Note: this API is part of the decoder firmware, so it's cx23415 only. | ||
5 | |||
6 | ------------------------------------------------------------------------------- | ||
7 | |||
8 | Name CX2341X_OSD_GET_FRAMEBUFFER | ||
9 | Enum 65/0x41 | ||
10 | Description | ||
11 | Return base and length of contiguous OSD memory. | ||
12 | Result[0] | ||
13 | OSD base address | ||
14 | Result[1] | ||
15 | OSD length | ||
16 | |||
17 | ------------------------------------------------------------------------------- | ||
18 | |||
19 | Name CX2341X_OSD_GET_PIXEL_FORMAT | ||
20 | Enum 66/0x42 | ||
21 | Description | ||
22 | Query OSD format | ||
23 | Result[0] | ||
24 | 0=8bit index, 4=AlphaRGB 8:8:8:8 | ||
25 | |||
26 | ------------------------------------------------------------------------------- | ||
27 | |||
28 | Name CX2341X_OSD_SET_PIXEL_FORMAT | ||
29 | Enum 67/0x43 | ||
30 | Description | ||
31 | Assign pixel format | ||
32 | Param[0] | ||
33 | 0=8bit index, 4=AlphaRGB 8:8:8:8 | ||
34 | |||
35 | ------------------------------------------------------------------------------- | ||
36 | |||
37 | Name CX2341X_OSD_GET_STATE | ||
38 | Enum 68/0x44 | ||
39 | Description | ||
40 | Query OSD state | ||
41 | Result[0] | ||
42 | Bit 0 0=off, 1=on | ||
43 | Bits 1:2 alpha control | ||
44 | Bits 3:5 pixel format | ||
45 | |||
46 | ------------------------------------------------------------------------------- | ||
47 | |||
48 | Name CX2341X_OSD_SET_STATE | ||
49 | Enum 69/0x45 | ||
50 | Description | ||
51 | OSD switch | ||
52 | Param[0] | ||
53 | 0=off, 1=on | ||
54 | |||
55 | ------------------------------------------------------------------------------- | ||
56 | |||
57 | Name CX2341X_OSD_GET_OSD_COORDS | ||
58 | Enum 70/0x46 | ||
59 | Description | ||
60 | Retrieve coordinates of OSD area blended with video | ||
61 | Result[0] | ||
62 | OSD buffer address | ||
63 | Result[1] | ||
64 | Stride in pixels | ||
65 | Result[2] | ||
66 | Lines in OSD buffer | ||
67 | Result[3] | ||
68 | Horizontal offset in buffer | ||
69 | Result[4] | ||
70 | Vertical offset in buffer | ||
71 | |||
72 | ------------------------------------------------------------------------------- | ||
73 | |||
74 | Name CX2341X_OSD_SET_OSD_COORDS | ||
75 | Enum 71/0x47 | ||
76 | Description | ||
77 | Assign the coordinates of the OSD area to blend with video | ||
78 | Param[0] | ||
79 | buffer address | ||
80 | Param[1] | ||
81 | buffer stride in pixels | ||
82 | Param[2] | ||
83 | lines in buffer | ||
84 | Param[3] | ||
85 | horizontal offset | ||
86 | Param[4] | ||
87 | vertical offset | ||
88 | |||
89 | ------------------------------------------------------------------------------- | ||
90 | |||
91 | Name CX2341X_OSD_GET_SCREEN_COORDS | ||
92 | Enum 72/0x48 | ||
93 | Description | ||
94 | Retrieve OSD screen area coordinates | ||
95 | Result[0] | ||
96 | top left horizontal offset | ||
97 | Result[1] | ||
98 | top left vertical offset | ||
99 | Result[2] | ||
100 | bottom right hotizontal offset | ||
101 | Result[3] | ||
102 | bottom right vertical offset | ||
103 | |||
104 | ------------------------------------------------------------------------------- | ||
105 | |||
106 | Name CX2341X_OSD_SET_SCREEN_COORDS | ||
107 | Enum 73/0x49 | ||
108 | Description | ||
109 | Assign the coordinates of the screen area to blend with video | ||
110 | Param[0] | ||
111 | top left horizontal offset | ||
112 | Param[1] | ||
113 | top left vertical offset | ||
114 | Param[2] | ||
115 | bottom left horizontal offset | ||
116 | Param[3] | ||
117 | bottom left vertical offset | ||
118 | |||
119 | ------------------------------------------------------------------------------- | ||
120 | |||
121 | Name CX2341X_OSD_GET_GLOBAL_ALPHA | ||
122 | Enum 74/0x4A | ||
123 | Description | ||
124 | Retrieve OSD global alpha | ||
125 | Result[0] | ||
126 | global alpha: 0=off, 1=on | ||
127 | Result[1] | ||
128 | bits 0:7 global alpha | ||
129 | |||
130 | ------------------------------------------------------------------------------- | ||
131 | |||
132 | Name CX2341X_OSD_SET_GLOBAL_ALPHA | ||
133 | Enum 75/0x4B | ||
134 | Description | ||
135 | Update global alpha | ||
136 | Param[0] | ||
137 | global alpha: 0=off, 1=on | ||
138 | Param[1] | ||
139 | global alpha (8 bits) | ||
140 | Param[2] | ||
141 | local alpha: 0=on, 1=off | ||
142 | |||
143 | ------------------------------------------------------------------------------- | ||
144 | |||
145 | Name CX2341X_OSD_SET_BLEND_COORDS | ||
146 | Enum 78/0x4C | ||
147 | Description | ||
148 | Move start of blending area within display buffer | ||
149 | Param[0] | ||
150 | horizontal offset in buffer | ||
151 | Param[1] | ||
152 | vertical offset in buffer | ||
153 | |||
154 | ------------------------------------------------------------------------------- | ||
155 | |||
156 | Name CX2341X_OSD_GET_FLICKER_STATE | ||
157 | Enum 79/0x4F | ||
158 | Description | ||
159 | Retrieve flicker reduction module state | ||
160 | Result[0] | ||
161 | flicker state: 0=off, 1=on | ||
162 | |||
163 | ------------------------------------------------------------------------------- | ||
164 | |||
165 | Name CX2341X_OSD_SET_FLICKER_STATE | ||
166 | Enum 80/0x50 | ||
167 | Description | ||
168 | Set flicker reduction module state | ||
169 | Param[0] | ||
170 | State: 0=off, 1=on | ||
171 | |||
172 | ------------------------------------------------------------------------------- | ||
173 | |||
174 | Name CX2341X_OSD_BLT_COPY | ||
175 | Enum 82/0x52 | ||
176 | Description | ||
177 | BLT copy | ||
178 | Param[0] | ||
179 | '0000' zero | ||
180 | '0001' ~destination AND ~source | ||
181 | '0010' ~destination AND source | ||
182 | '0011' ~destination | ||
183 | '0100' destination AND ~source | ||
184 | '0101' ~source | ||
185 | '0110' destination XOR source | ||
186 | '0111' ~destination OR ~source | ||
187 | '1000' ~destination AND ~source | ||
188 | '1001' destination XNOR source | ||
189 | '1010' source | ||
190 | '1011' ~destination OR source | ||
191 | '1100' destination | ||
192 | '1101' destination OR ~source | ||
193 | '1110' destination OR source | ||
194 | '1111' one | ||
195 | |||
196 | Param[1] | ||
197 | Resulting alpha blending | ||
198 | '01' source_alpha | ||
199 | '10' destination_alpha | ||
200 | '11' source_alpha*destination_alpha+1 | ||
201 | (zero if both source and destination alpha are zero) | ||
202 | Param[2] | ||
203 | '00' output_pixel = source_pixel | ||
204 | |||
205 | '01' if source_alpha=0: | ||
206 | output_pixel = destination_pixel | ||
207 | if 256 > source_alpha > 1: | ||
208 | output_pixel = ((source_alpha + 1)*source_pixel + | ||
209 | (255 - source_alpha)*destination_pixel)/256 | ||
210 | |||
211 | '10' if destination_alpha=0: | ||
212 | output_pixel = source_pixel | ||
213 | if 255 > destination_alpha > 0: | ||
214 | output_pixel = ((255 - destination_alpha)*source_pixel + | ||
215 | (destination_alpha + 1)*destination_pixel)/256 | ||
216 | |||
217 | '11' if source_alpha=0: | ||
218 | source_temp = 0 | ||
219 | if source_alpha=255: | ||
220 | source_temp = source_pixel*256 | ||
221 | if 255 > source_alpha > 0: | ||
222 | source_temp = source_pixel*(source_alpha + 1) | ||
223 | if destination_alpha=0: | ||
224 | destination_temp = 0 | ||
225 | if destination_alpha=255: | ||
226 | destination_temp = destination_pixel*256 | ||
227 | if 255 > destination_alpha > 0: | ||
228 | destination_temp = destination_pixel*(destination_alpha + 1) | ||
229 | output_pixel = (source_temp + destination_temp)/256 | ||
230 | Param[3] | ||
231 | width | ||
232 | Param[4] | ||
233 | height | ||
234 | Param[5] | ||
235 | destination pixel mask | ||
236 | Param[6] | ||
237 | destination rectangle start address | ||
238 | Param[7] | ||
239 | destination stride in dwords | ||
240 | Param[8] | ||
241 | source stride in dwords | ||
242 | Param[9] | ||
243 | source rectangle start address | ||
244 | |||
245 | ------------------------------------------------------------------------------- | ||
246 | |||
247 | Name CX2341X_OSD_BLT_FILL | ||
248 | Enum 83/0x53 | ||
249 | Description | ||
250 | BLT fill color | ||
251 | Param[0] | ||
252 | Same as Param[0] on API 0x52 | ||
253 | Param[1] | ||
254 | Same as Param[1] on API 0x52 | ||
255 | Param[2] | ||
256 | Same as Param[2] on API 0x52 | ||
257 | Param[3] | ||
258 | width | ||
259 | Param[4] | ||
260 | height | ||
261 | Param[5] | ||
262 | destination pixel mask | ||
263 | Param[6] | ||
264 | destination rectangle start address | ||
265 | Param[7] | ||
266 | destination stride in dwords | ||
267 | Param[8] | ||
268 | color fill value | ||
269 | |||
270 | ------------------------------------------------------------------------------- | ||
271 | |||
272 | Name CX2341X_OSD_BLT_TEXT | ||
273 | Enum 84/0x54 | ||
274 | Description | ||
275 | BLT for 8 bit alpha text source | ||
276 | Param[0] | ||
277 | Same as Param[0] on API 0x52 | ||
278 | Param[1] | ||
279 | Same as Param[1] on API 0x52 | ||
280 | Param[2] | ||
281 | Same as Param[2] on API 0x52 | ||
282 | Param[3] | ||
283 | width | ||
284 | Param[4] | ||
285 | height | ||
286 | Param[5] | ||
287 | destination pixel mask | ||
288 | Param[6] | ||
289 | destination rectangle start address | ||
290 | Param[7] | ||
291 | destination stride in dwords | ||
292 | Param[8] | ||
293 | source stride in dwords | ||
294 | Param[9] | ||
295 | source rectangle start address | ||
296 | Param[10] | ||
297 | color fill value | ||
298 | |||
299 | ------------------------------------------------------------------------------- | ||
300 | |||
301 | Name CX2341X_OSD_SET_FRAMEBUFFER_WINDOW | ||
302 | Enum 86/0x56 | ||
303 | Description | ||
304 | Positions the main output window on the screen. The coordinates must be | ||
305 | such that the entire window fits on the screen. | ||
306 | Param[0] | ||
307 | window width | ||
308 | Param[1] | ||
309 | window height | ||
310 | Param[2] | ||
311 | top left window corner horizontal offset | ||
312 | Param[3] | ||
313 | top left window corner vertical offset | ||
314 | |||
315 | ------------------------------------------------------------------------------- | ||
316 | |||
317 | Name CX2341X_OSD_SET_CHROMA_KEY | ||
318 | Enum 96/0x60 | ||
319 | Description | ||
320 | Chroma key switch and color | ||
321 | Param[0] | ||
322 | state: 0=off, 1=on | ||
323 | Param[1] | ||
324 | color | ||
325 | |||
326 | ------------------------------------------------------------------------------- | ||
327 | |||
328 | Name CX2341X_OSD_GET_ALPHA_CONTENT_INDEX | ||
329 | Enum 97/0x61 | ||
330 | Description | ||
331 | Retrieve alpha content index | ||
332 | Result[0] | ||
333 | alpha content index, Range 0:15 | ||
334 | |||
335 | ------------------------------------------------------------------------------- | ||
336 | |||
337 | Name CX2341X_OSD_SET_ALPHA_CONTENT_INDEX | ||
338 | Enum 98/0x62 | ||
339 | Description | ||
340 | Assign alpha content index | ||
341 | Param[0] | ||
342 | alpha content index, range 0:15 | ||