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