| 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 |