OSD firmware API description
============================

Note: this API is part of the decoder firmware, so it's cx23415 only.

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_GET_FRAMEBUFFER
Enum 	65/0x41
Description
	Return base and length of contiguous OSD memory.
Result[0]
	OSD base address
Result[1]
	OSD length

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_GET_PIXEL_FORMAT
Enum 	66/0x42
Description
	Query OSD format
Result[0]
	0=8bit index
	1=16bit RGB 5:6:5
	2=16bit ARGB 1:5:5:5
	3=16bit ARGB 1:4:4:4
	4=32bit ARGB 8:8:8:8

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_SET_PIXEL_FORMAT
Enum 	67/0x43
Description
	Assign pixel format
Param[0]
	0=8bit index
	1=16bit RGB 5:6:5
	2=16bit ARGB 1:5:5:5
	3=16bit ARGB 1:4:4:4
	4=32bit ARGB 8:8:8:8

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_GET_STATE
Enum 	68/0x44
Description
	Query OSD state
Result[0]
	Bit  0   0=off, 1=on
	Bits 1:2 alpha control
	Bits 3:5 pixel format

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_SET_STATE
Enum 	69/0x45
Description
	OSD switch
Param[0]
	0=off, 1=on

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_GET_OSD_COORDS
Enum 	70/0x46
Description
	Retrieve coordinates of OSD area blended with video
Result[0]
	OSD buffer address
Result[1]
	Stride in pixels
Result[2]
	Lines in OSD buffer
Result[3]
	Horizontal offset in buffer
Result[4]
	Vertical offset in buffer

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_SET_OSD_COORDS
Enum 	71/0x47
Description
	Assign the coordinates of the OSD area to blend with video
Param[0]
	buffer address
Param[1]
	buffer stride in pixels
Param[2]
	lines in buffer
Param[3]
	horizontal offset
Param[4]
	vertical offset

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_GET_SCREEN_COORDS
Enum 	72/0x48
Description
	Retrieve OSD screen area coordinates
Result[0]
	top left horizontal offset
Result[1]
	top left vertical offset
Result[2]
	bottom right horizontal offset
Result[3]
	bottom right vertical offset

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_SET_SCREEN_COORDS
Enum 	73/0x49
Description
	Assign the coordinates of the screen area to blend with video
Param[0]
	top left horizontal offset
Param[1]
	top left vertical offset
Param[2]
	bottom left horizontal offset
Param[3]
	bottom left vertical offset

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_GET_GLOBAL_ALPHA
Enum 	74/0x4A
Description
	Retrieve OSD global alpha
Result[0]
	global alpha: 0=off, 1=on
Result[1]
	bits 0:7 global alpha

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_SET_GLOBAL_ALPHA
Enum 	75/0x4B
Description
	Update global alpha
Param[0]
	global alpha: 0=off, 1=on
Param[1]
	global alpha (8 bits)
Param[2]
	local alpha: 0=on, 1=off

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_SET_BLEND_COORDS
Enum 	78/0x4C
Description
	Move start of blending area within display buffer
Param[0]
	horizontal offset in buffer
Param[1]
	vertical offset in buffer

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_GET_FLICKER_STATE
Enum 	79/0x4F
Description
	Retrieve flicker reduction module state
Result[0]
	flicker state: 0=off, 1=on

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_SET_FLICKER_STATE
Enum 	80/0x50
Description
	Set flicker reduction module state
Param[0]
	State: 0=off, 1=on

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_BLT_COPY
Enum 	82/0x52
Description
	BLT copy
Param[0]
'0000'  zero
'0001' ~destination AND ~source
'0010' ~destination AND  source
'0011' ~destination
'0100'  destination AND ~source
'0101'                  ~source
'0110'  destination XOR  source
'0111' ~destination OR  ~source
'1000' ~destination AND ~source
'1001'  destination XNOR source
'1010'                   source
'1011' ~destination OR   source
'1100'  destination
'1101'  destination OR  ~source
'1110'  destination OR   source
'1111'  one

Param[1]
	Resulting alpha blending
	    '01' source_alpha
	    '10' destination_alpha
	    '11' source_alpha*destination_alpha+1
		 (zero if both source and destination alpha are zero)
Param[2]
	'00' output_pixel = source_pixel

	'01' if source_alpha=0:
		 output_pixel = destination_pixel
	     if 256 > source_alpha > 1:
		 output_pixel = ((source_alpha + 1)*source_pixel +
				 (255 - source_alpha)*destination_pixel)/256

	'10' if destination_alpha=0:
		 output_pixel = source_pixel
	      if 255 > destination_alpha > 0:
		 output_pixel = ((255 - destination_alpha)*source_pixel +
				 (destination_alpha + 1)*destination_pixel)/256

	'11' if source_alpha=0:
		 source_temp = 0
	     if source_alpha=255:
		 source_temp = source_pixel*256
	     if 255 > source_alpha > 0:
		 source_temp = source_pixel*(source_alpha + 1)
	     if destination_alpha=0:
		 destination_temp = 0
	     if destination_alpha=255:
		 destination_temp = destination_pixel*256
	     if 255 > destination_alpha > 0:
		 destination_temp = destination_pixel*(destination_alpha + 1)
	     output_pixel = (source_temp + destination_temp)/256
Param[3]
	width
Param[4]
	height
Param[5]
	destination pixel mask
Param[6]
	destination rectangle start address
Param[7]
	destination stride in dwords
Param[8]
	source stride in dwords
Param[9]
	source rectangle start address

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_BLT_FILL
Enum 	83/0x53
Description
	BLT fill color
Param[0]
	Same as Param[0] on API 0x52
Param[1]
	Same as Param[1] on API 0x52
Param[2]
	Same as Param[2] on API 0x52
Param[3]
	width
Param[4]
	height
Param[5]
	destination pixel mask
Param[6]
	destination rectangle start address
Param[7]
	destination stride in dwords
Param[8]
	color fill value

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_BLT_TEXT
Enum 	84/0x54
Description
	BLT for 8 bit alpha text source
Param[0]
	Same as Param[0] on API 0x52
Param[1]
	Same as Param[1] on API 0x52
Param[2]
	Same as Param[2] on API 0x52
Param[3]
	width
Param[4]
	height
Param[5]
	destination pixel mask
Param[6]
	destination rectangle start address
Param[7]
	destination stride in dwords
Param[8]
	source stride in dwords
Param[9]
	source rectangle start address
Param[10]
	color fill value

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_SET_FRAMEBUFFER_WINDOW
Enum 	86/0x56
Description
	Positions the main output window on the screen. The coordinates must be
	such that the entire window fits on the screen.
Param[0]
	window width
Param[1]
	window height
Param[2]
	top left window corner horizontal offset
Param[3]
	top left window corner vertical offset

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_SET_CHROMA_KEY
Enum 	96/0x60
Description
	Chroma key switch and color
Param[0]
	state: 0=off, 1=on
Param[1]
	color

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_GET_ALPHA_CONTENT_INDEX
Enum 	97/0x61
Description
	Retrieve alpha content index
Result[0]
	alpha content index, Range 0:15

-------------------------------------------------------------------------------

Name 	CX2341X_OSD_SET_ALPHA_CONTENT_INDEX
Enum 	98/0x62
Description
	Assign alpha content index
Param[0]
	alpha content index, range 0:15
