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