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