前言¶
本文档主要介绍TDE的API和数据类型以及Proc调试信息。
说明:
本文以SS528V100为例,未有特殊说明,SS625V100、SS524V100、SS522V100、SS626V100与SS528V100内容一致;
未有特殊说明,SS927V100与SS928V100内容一致。
与本文档相对应的产品版本如下。
本文档(本指南)主要适用于以下工程师:
技术支持工程师
软件开发工程师
在本文中可能出现下列标志,它们所代表的含义如下。
修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。
概述¶
概述¶
TDE(Two Dimensional Engine)利用硬件为OSD(On Screen Display)和GUI(Graphics User Interface)提供快速的图形绘制功能,主要有快速位图搬移、快速色彩填充、快速抗闪搬移、快速位图缩放、画点、画水平/垂直线、位图格式转换、位图alpha叠加、位图按位布尔运算、ColorKey操作。
模块加载¶
加载的命令¶
加载命令为insmod ssxx_tde.ko参数。
参数¶
参数g_is_resize_filter¶
在ss_tde_quick_resize接口运行过程中,当需要进行滤波处理时内部会自动执行滤波操作。但对于某些图片数据点不足的场景,滤波后效果可能较差,此时可将该参数配置为0以关闭滤波。配置为1时开启滤波。
参数g_max_node_num¶
该参数决定TDE最大节点数。g_max_node_num 默认值为200,最大值为500,最小值为2。当g_max_node_num设置值大于最大值时,g_max_node_num设置为最大值,当g_max_node_num设置值小于最小值时,g_max_node_num设置为最小值。内部会根据g_max_node_num的值重新计算TDE实际使用的内存大小。
以SS528V100举例,使用方法如下:
insmod SS528V100_tde.ko g_max_node_num=1 异常测试(按最小值2配置)
insmod SS528V100_tde.ko 默认测试 (按默认值200配置)
insmod SS528V100_tde.ko g_max_node_num=300正常测试(按设置值300配置)
insmod SS528V100_tde.ko g_max_node_num=600 异常测试 (按最大值500配置)
insmod SS528V100_tde.ko g_max_node_num=-1 异常测试 (报错加载ko失败)
insmod SS528V100_tde.ko g_max_node_num=a 异常测试(报错加载ko失败)
参数g_tde_tmp_buf¶
该参数仅用于ss_tde_bitmap_mask_rop与ss_tde_bitmap_mask_blend接口,充当临时buffer,如需使用上述两接口则在加载ko时要配置参数g_tde_tmp_buf的大小,大小配置为前景位图大小,例如:对于前景格式为ARGB8888分辨率大小为720*576的图片则需要配置为:720*576*4= 1658880
参数g_rgb_truncation_mode¶
该参数为rgb截位模式的参数,可配置成0或者是1。g_rgb_truncation_mode默认为1,表示内部采用一种抖动的算法处理数据;g_rgb_truncation_mode配成0时,表示内部使用四舍五入的方式处理数据。备注:如果配置为1时,可能会出现网格的效果,可将该参数配置为0。最终参数的使用根据所需要的效果确定。
参考域说明¶
API参考域¶
本手册使用9个参考域描述API的相关信息,它们的作用如表1所示。
表 1 API参考域说明
数据类型参考域¶
本手册使用5个参考域描述数据类型的相关信息,它们的作用如表1所示。
表 1 数据类型参考域说明
API参考¶
API概述¶
TDE(Two Dimension Engine)功能函数参考提供2D加速相关操作。
该功能模块提供以下API:
ss_tde_open:打开TDE设备。
ss_tde_close:关闭TDE设备。
ss_tde_begin_job:创建1个TDE任务。
ss_tde_end_job:提交添加操作完成的TDE任务。
ss_tde_cancel_job:取消指定的TDE任务。
ss_tde_wait_for_done:等待指定的TDE任务完成。
ss_tde_wait_all_done:等待TDE的所有任务完成。
ss_tde_reset:复位TDE所有状态。
ss_tde_quick_fill:向任务中添加快速填充操作。
ss_tde_quick_draw_rect:向任务中添加绘制角框操作。
ss_tde_draw_multi_rect:向任务中添加绘制复数角框操作。
ss_tde_draw_line:向任务中添加绘制线条(含直线、斜线)操作。
ss_tde_quick_copy:向任务中添加快速拷贝操作。
ss_tde_quick_resize:向任务中添加光栅位图缩放操作。
ss_tde_quick_deflicker:向任务中添加光栅位图抗闪烁操作。
ss_tde_solid_draw:向任务中添加对光栅位图进行有附加操作的填充搬移操作。
ss_tde_rotate:向任务中添加对光栅位图的旋转操作。
ss_tde_bit_blit:向任务中添加对光栅位图进行有附加功能的搬移操作。
ss_tde_pattern_fill:模式填充。
ss_tde_mb_blit:向任务中添加对宏块位图进行有附加功能的搬移操作。
ss_tde_bitmap_mask_rop:向任务中添加对光栅位图进行Mask Rop搬移操作。
ss_tde_bitmap_mask_blend:向任务中添加对光栅位图进行Mask Blend搬移操作。
ss_tde_get_deflicker_level:获取抗闪烁级别。
ss_tde_set_deflicker_level:设置抗闪烁级别。
ss_tde_get_alpha_threshold_value:获取alpha判决阈值。
ss_tde_set_alpha_threshold_value:设置alpha判决阈值。
ss_tde_get_alpha_threshold_state:获取alpha判决开关。
ss_tde_set_alpha_threshold_state:设置alpha判决开关。
ss_tde_enable_rgn_deflicker:使能/去使能局部抗闪烁。
功能函数参考¶
ss_tde_open¶
【目的】
打开TDE设备。
【语法】
td_s32 ss_tde_open(td_void);
【描述】
调用此接口打开TDE设备。
【参数】
无。
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
在进行TDE相关操作前应该首先调用此接口,保证TDE设备处于打开状态。
TDE设备允许多进程重复打开。
【举例】
/*declaration*/
td_s32 ret = 0;
/* open TDE device*/
ret = ss_tde_open ();
if (ret != TD_SUCCESS) {
return -1;
}
/* close TDE device*/
ss_tde_close ();
ss_tde_close¶
【目的】
关闭TDE设备。
【语法】
td_void ss_tde_close(td_void);
【描述】
调用此接口关闭TDE设备。
【参数】
无。
【返回值】
无。
【错误码】
无。
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
调用ss_tde_open与ss_tde_close的次数需要对应。
【举例】
无。
ss_tde_begin_job¶
【目的】
创建1个TDE任务。
【语法】
td_s32 ss_tde_begin_job(td_void);
【描述】
调用此接口创建1个TDE任务(Job)。TDE以任务的形式管理TDE命令:1个TDE任务是一系列TDE命令的集合,它可以包含1个或多个TDE操作;一个TDE命令对应一个TDE操作;成功创建TDE任务添加完TDE操作后,通过ss_tde_end_job提交该Job;同一任务中的TDE命令是顺序执行。
【参数】
无。
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
在调用此接口前应确保TDE设备处于打开状态。
应判断返回值,确保获得1个正确的任务句柄。
TDE能够缓存的任务数由TDE的内存大小决定(由模块参数g_max_node_num控制),当内存不够时会出现分配任务失败的情况,建议任务数最多不要超过200。
ss_tde_begin_job必须和ss_tde_end_job配套使用,否则会造成内存泄漏。
【举例】
/* declaration */
td_s32 ret;
td_s32 handle;
/* create a TDE job */
handle = ss_tde_begin_job ();
if(handle == OT_ERR_TDE_INVALID_HANDLE || handle == OT_ERR_TDE_DEV_NOT_OPEN) {
return -1;
}
/* submit the job */
ret = ss_tde_end_job (handle, TD_FALSE, TD_TRUE, 20);
if(ret != TD_SUCCESS) {
return -1;
}
ss_tde_end_job¶
【目的】
提交已创建的TDE任务。
【语法】
td_s32 ss_tde_end_job(td_s32 handle, td_bool is_sync, td_bool is_block, td_u32 time_out);
【描述】
调用此接口提交1个TDE任务。可以指定为阻塞还是非阻塞,阻塞时可以设置超时时间。
阻塞
指该函数调用不会立刻返回,只有在以下情况下才会返回:
TDE任务中的命令都完成
等待超时
等待被打断
非阻塞
指该函数调用会立刻返回,而不关心TDE任务中的命令是否已经完成。
阻塞时可以设置一个最长等待时间,如果等待时间到了,TDE任务中的命令还没有完成,函数就会提前返回,但是任务中的命令还是会在未来的某个时刻完成。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
|
|
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
在调用此接口前应保证调用ss_tde_open打开TDE设备,并且调用ss_tde_begin_job获得了有效的任务句柄。
若设置为阻塞操作,函数超时返回或被中断返回时应该注意:此时TDE操作的API函数提前返回,但执行的操作仍会完成。
提交任务后,此任务对应的handle会变为无效,再次提交会出现错误码OT_ERR_TDE_INVALID_HANDLE。
【举例】
无。
ss_tde_cancel_job¶
【目的】
取消TDE任务及已经成功加入到该任务中的操作。
【语法】
td_s32 ss_tde_cancel_job(td_s32 handle);
【描述】
向TDE任务添加操作时,如果出现当前的操作参数非法等错误,程序需要返回退出时,可调用此接口取消当前任务及其下的所有操作。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
在调用此接口前应保证调用ss_tde_open打开TDE设备,并且调用ss_tde_begin_job获得了有效的任务句柄,否则返回值无效。
已经提交的任务不能够再取消。
取消后的任务不再有效,故不能再向其添加操作,也不能提交该任务。
在向TDE任务中添加操作(如操作A)时出错可以有以下两种处理方式:
忽略出错的操作A,继续向TDE任务中添加其余命令,并提交该任务。若该任务成功执行,则说明所有成功添加的操作都完成了,A操作因未添加成功而没有执行。
因添加操作A出错而取消整个任务,则说明该任务连同其下所有已成功添加的操作都被取消。
【举例】
/* declaration */
td_s32 ret;
td_s32 handle;
ot_tde_surface src_surface;
ot_tde_surface dst_surface;
ot_tde_opt opt = {0};
/* create a TDE job */
handle = ss_tde_begin_job();
if(handle == OT_ERR_TDE_INVALID_HANDLE) {
return -1;
}
/* add serival commands to job successfully */
...
/* prepare arguments of bitblit command */
/* if fail to add one more bitblit command to the job, cancel the job */
ret = ss_tde_bit_blit(handle, &src_surface, &dst_surface, &opt);
if(ret != TD_SUCCESS) {
printf("add bitlit command failed!\n");
ss_tde_cancel_job(handle);
return -1;
}
ss_tde_wait_for_done¶
【目的】
等待指定的任务完成。
【语法】
td_s32 ss_tde_wait_for_done(td_s32 handle);
【描述】
当使用非阻塞方式提交TDE任务后,可以使用此接口等待指定的TDE任务完成。此接口为阻塞调用。
该接口一般用于TDE对一块显存进行非阻塞操作后,软件再对该显存进行操作,这样就存在前面的TDE和软件同时操作同一块显存的风险。这时,用户可以先调用此接口确保之前的TDE任务已经完成,然后再进行软件的操作。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
此接口为阻塞接口,会阻塞等待指定的任务完成。
不允许等待一个未提交的任务,否则返回错误码OT_ERR_TDE_INVALID_HANDLE。
【举例】
无。
ss_tde_wait_all_done¶
【目的】
等待TDE的所有任务完成。
【语法】
td_s32 ss_tde_wait_all_done(td_void);
【描述】
在调用此接口等待TDE的所有任务完成
【参数】
无
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
此接口为阻塞接口,会阻塞等待所有的TDE任务完成。
【举例】
无。
ss_tde_reset¶
【目的】
复位TDE所有状态。
【语法】
td_s32 ss_tde_reset(td_void);
【描述】
在调用此接口复位TDE所有状态。
【参数】
无。
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
此接口一般用于待机唤醒软硬件不匹配时出现超时错误时调用,用于复位软硬件。
【举例】
无。
ss_tde_quick_fill¶
【目的】
向任务中添加快速填充操作。
【语法】
td_s32 ss_tde_quick_fill(td_s32 handle, const ot_tde_none_src *none_src, td_u32 fill_data);
【描述】
将数据值fill_data填充到none_src中以dst_surface为目的地址、dst_rect为输出区域的内存中,可实现颜色填充的功能。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持的格式(目标位图格式)如下:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888, OT_TDE_COLOR_FORMAT_CLUT1, OT_TDE_COLOR_FORMAT_CLUT2, OT_TDE_COLOR_FORMAT_CLUT4, OT_TDE_COLOR_FORMAT_CLUT8, OT_TDE_COLOR_FORMAT_ACLUT44, OT_TDE_COLOR_FORMAT_ACLUT88, OT_TDE_COLOR_FORMAT_A1, OT_TDE_COLOR_FORMAT_A8, OT_TDE_COLOR_FORMAT_BYTE, OT_TDE_COLOR_FORMAT_HALFWORD
由于该操作直接将fill_data填充在目标位图的指定区域内,调用者应根据目标位图的格式,正确设置对应颜色的填充值。例如,若需填充蓝色,应按照位图格式指定蓝色填充值。
如位图格式为ARGB1555,欲填充为蓝色,则应指定fill_data为0x801F(其中alpha位为1)。
【举例】
无。
ss_tde_quick_draw_rect¶
【目的】
向任务中添加快速绘制角框操作。
【语法】
td_s32 ss_tde_quick_draw_rect(td_s32 handle, const ot_tde_none_src *none_src, const ot_tde_corner_rect_info *corner_rect_info);
【描述】
将填充好的角框属性结构体corner_rect_info,绘制到none_src中以dst_surface所指向的内存区域(由dst_rect指定输出区域),可实现快速绘制角框,具体如图1所示。
说明:
1.角框坐标(x,y): x = none_src->dst_rect->pos_x; y = none_src->dst_rect->pos_y;
2.角框外颜色:corner_rect_info ->outer_color
3.角框内颜色:corner_rect_info ->inner_color
4.角框形状由w与h决定:corner_rect_info ->width,corner_rect_info ->height
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持的格式(目标位图格式)如下:
OT_TDE_COLOR_FORMAT_CLUT2、OT_TDE_COLOR_FORMAT_CLUT4
注:仅SS626V100除了支持上述两个格式外,新增支持以下格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888, OT_TDE_COLOR_FORMAT_CLUT1, OT_TDE_COLOR_FORMAT_CLUT8, OT_TDE_COLOR_FORMAT_ACLUT44, OT_TDE_COLOR_FORMAT_ACLUT88, OT_TDE_COLOR_FORMAT_A1, OT_TDE_COLOR_FORMAT_A8,OT_TDE_COLOR_FORMAT_YCbCr888, OT_TDE_COLOR_FORMAT_AYCbCr888
使用限制:
CLUT1格式画框,目标区域起始横坐标按8像素对齐,宽度按8像素对齐。
CLUT2格式画框,目标区域起始横坐标按4像素对齐,宽度按4像素对齐。
CLUT4格式画框,目标区域起始横坐标按2像素对齐,宽度按2像素对齐。
【举例】
无。
ss_tde_draw_multi_rect¶
【目的】
向任务中添加绘制复数角框操作。
【语法】
td_s32 ss_tde_draw_multi_rect(td_s32 handle, const ot_tde_surface *dst_surface, const ot_tde_corner_rect *corner_rect, td_u32 num);
【描述】
填充好结构体corner_rect与角框个数num,将之绘制到以dst_surface为目的地址、corner_rect_region为输出区域的内存中,可实现快速绘制复数个角框。
说明:
1.角框坐标(x,y)及角框大小(w,h): x = corner_rect -> corner_rect_region ->pos_x; y = corner_rect -> corner_rect_region ->pos_y; w = corner_rect -> corner_rect_region ->width; h = corner_rect -> corner_rect_region ->height;
2.角框外颜色:corner_rect-> corner_rect_info->outer_color
3.角框内颜色:corner_rect-> corner_rect_info->inner_color
4.角框形状由w与h决定:corner_rect-> corner_rect_info ->width,corner_rect-> corner_rect_info ->height
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持的格式(目标位图格式)如下:
OT_TDE_COLOR_FORMAT_CLUT2
OT_TDE_COLOR_FORMAT_CLUT4
使用限制:
CLUT2格式画框,目标区域起始横坐标按4像素对齐,宽度按4像素对齐。
CLUT4格式画框,目标区域起始横坐标按2像素对齐,宽度按2像素对齐。
最多一次绘制128个框。
如果配置128个框,当第10个框配置有误,则会停止配置返回对应错误码。此时客户有以下两种处理方式:
通过ss_tde_cancel_job取消该任务,重新正确配置。
直接通过ss_tde_end_job提交该任务,正确绘制前9个框。
【举例】
一次绘制64个框代码片段:
td_s32 handle;
ot_tde_corner_rect multi_corner = {0};
/* 分配64个框的属性值的空间 */
multi_corner. corner_rect_info = (ot_tde_corner_rect_info *)malloc(sizeof(ot_tde_corner_rect_info) * 64);
multi_corner.corner_rect_region = (ot_tde_rect*)malloc(sizeof(ot_tde_rect) * 64);
/* 配置需要画的框与位置 */
for (i = 1; i < 64; i++) {
multi_corner. corner_rect_info [i].width = 4;
multi_corner. corner_rect_info [i].height = 1;
multi_corner. corner_rect_info [i].inner_color = 0x1;
multi_corner. corner_rect_info [i].outer_color = 0x3;
multi_corner.corner_rect_region [i].height = 10;
multi_corner.corner_rect_region [i].width = 10;
multi_corner.corner_rect_region [i].pos_x = rect_list[i - 1].pos_x + 4;
multi_corner.corner_rect_region [i].pos_y = rect_list[i - 1].pos_y + 2;
}
/* 获取TDE有效句柄 */
handle = ss_tde_begin_job();
/* 添加复数角框任务。dst_surface需要有效 */
ss_tde_draw_multi_rect(handle, &dst_surface, &multi_corner, 64);
/* 提交任务给硬件 */
ss_tde_end_job(handle, is_sync, is_block, time_out);
free(multi_corner.corner_rect_info);
free(multi_corner.corner_rect_region);
ss_tde_close();
ss_tde_draw_line¶
【目的】
向任务中添加drd画线操作,支持画直线、斜线。
【语法】
td_s32 ss_tde_draw_line(td_s32 handle, const ot_tde_surface *dst_surface, const ot_tde_line *line, td_u32 num);
【描述】
将num条line绘制在以dst_surface为目的地址的内存中,可实现绘制1条或多条斜线(最多可绘制的线数为100条)。
可设置的线宽为1~256;package格式(OT_TDE_COLOR_FORMAT_YCbCr888, OT_TDE_COLOR_FORMAT_AYCbCr8888)要求线宽为偶数。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持的格式(目标位图格式)如下:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888, OT_TDE_COLOR_FORMAT_CLUT4, OT_TDE_COLOR_FORMAT_CLUT8, OT_TDE_COLOR_FORMAT_ACLUT44, OT_TDE_COLOR_FORMAT_ACLUT88, OT_TDE_COLOR_FORMAT_A8, OT_TDE_COLOR_FORMAT_YCbCr888, OT_TDE_COLOR_FORMAT_AYCbCr8888
【举例】
无。
ss_tde_quick_copy¶
【目的】
向指定任务中添加快速拷贝操作。
【语法】
td_s32 ss_tde_quick_copy(td_s32 handle, const ot_tde_single_src *single_src);
【描述】
将single_src中基地址为src_surface的位图的指定区域src_rect拷贝到以dst_surface为目的地址、dst_rect为输出区域的内存中。
位图、操作区域及两者的的关系描述如下:
位图信息由ot_tde_surface表示,它描述位图的基本信息,包括:位图的像素宽度、像素高度、位图每行的跨度、颜色格式、位图存放的物理地址等。
操作区域由ot_tde_rect表示,它描述位图中参与本次操作的矩形范围,包括:起始位置和尺寸信息。
位图及位图操作区域的关系如图1所示。
通过指定不同的操作区域,用户可指定位图的全部或部分参与操作。
若希望整个位图都参与操作,则指定操作区域起点为(0,0),宽高分别为位图的宽高。
若希望位图的部分区域参与操作,则指定适当的操作区域大小。如图1中的情况(a),指定的操作区域即为有效的操作区域。注意:如果指定的操作区域与位图部分相交,如情况(b),则自动裁剪指定操作区域,故有效的操作区域为灰色相交部分。
若指定的操作区域与位图不相交,如情况(c),则认为配置错误,返回错误码OT_ERR_TDE_INVALID_PARAM。
说明: 有效操作区域:指调用者指定的操作区域与位图的相交部分。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持的格式如下:
源位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888, OT_TDE_COLOR_FORMAT_CLUT1, OT_TDE_COLOR_FORMAT_CLUT2, OT_TDE_COLOR_FORMAT_CLUT4, OT_TDE_COLOR_FORMAT_CLUT8, OT_TDE_COLOR_FORMAT_ACLUT44, OT_TDE_COLOR_FORMAT_ACLUT88, OT_TDE_COLOR_FORMAT_A1, OT_TDE_COLOR_FORMAT_A8, OT_TDE_COLOR_FORMAT_BYTE, OT_TDE_COLOR_FORMAT_HALFWORD
目标位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888, OT_TDE_COLOR_FORMAT_CLUT1, OT_TDE_COLOR_FORMAT_CLUT2, OT_TDE_COLOR_FORMAT_CLUT4, OT_TDE_COLOR_FORMAT_CLUT8, OT_TDE_COLOR_FORMAT_ACLUT44, OT_TDE_COLOR_FORMAT_ACLUT88, OT_TDE_COLOR_FORMAT_A1, OT_TDE_COLOR_FORMAT_A8, OT_TDE_COLOR_FORMAT_BYTE, OT_TDE_COLOR_FORMAT_HALFWORD
此接口使用的是直接DMA搬移,因此性能优于ss_tde_bit_blit搬移。
快速拷贝操作不支持格式转换,源位图和目标位图格式必须一致。
快速拷贝不支持缩放功能,因此如果源和目的的操作区域尺寸不一致,则按照两者最小的公共区域进行拷贝搬移。
指定的操作区域要和指定的位图有公共区域,否则会返回错误;其他操作均有此要求。
像素格式大于等于BYTE的位图格式的基地址和位图的stride必须按照像素格式对齐,像素格式不足BYTE的位图格式的基地址和stride需要按照BYTE对齐;其他操作均有此要求。
像素格式不足BYTE的位图格式的水平起始位置和宽度必须按照特定个数像素对齐。如CLUT2按照4像素对齐,CLUT4按照2像素对齐。
YCbCr422格式的位图的水平起始位置和宽度必须为偶数;其他操作均有此要求。
【举例】
无。
ss_tde_quick_resize¶
【目的】
向任务中添加光栅位图缩放操作。
【语法】
td_s32 ss_tde_quick_resize(td_s32 handle, const ot_tde_single_src *single_src);
【描述】
将single_src中基地址为src_surface的位图以区域src_rect指定的尺寸缩放至dst_rect的尺寸,将结果拷贝到以dst_surface为目的地址、dst_rect为输出区域的内存中。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持的格式如下:
源位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888
目标位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888
缩小倍数小于等于255倍,放大倍数则没有限制(不超过最大分辨率)。其他接口的缩放倍数限制与此一致,不另作说明。
缩放时源位图和目标位图可以为同一位图,但操作区域不能有重叠,否则效果会异常。
缩放对目标区域宽度的限制:
注:当输入侧,输出侧,两侧宽度均大于ZME_MAX_LENGTH时,不支持缩放。
【举例】
无。
ss_tde_quick_deflicker¶
【目的】
向任务中添加抗闪烁操作。
【语法】
td_s32 ss_tde_quick_deflicker(td_s32 handle, const ot_tde_single_src *single_src);
【描述】
将single_src中基地址为src_surface的位图以指定的区域src_rect进行抗闪烁,将结果拷贝到以dst_surface为目的地址、dst_rect为输出区域的内存中。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持的格式如下:
源位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888
目标位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888
抗闪烁只按垂直方向进行滤波。
抗闪烁源位图和目标位图可以为同一位图,但操作区域不能有重叠,否则效果会异常。
如果指定的输入区域与输出不一致,则会进行缩放处理。
如果源位图和目标位图的格式不相同,则会进行格式转换处理。
【举例】
无。
ss_tde_solid_draw¶
【目的】
向任务中添加对光栅位图进行有附加操作的填充搬移操作。实现在surface上画点、画线、色块填充或内存填充等功能。
【语法】
td_s32 ss_tde_solid_draw(td_s32 handle, const ot_tde_single_src *single_src, const ot_tde_fill_color *fill_color, const ot_tde_opt *opt);
【描述】
该接口实现背景surface操作区域和填充色运算后输出到目标surface的操作区域。该运算可以是alpha叠加运算或ROP运算,中间可以伴随着clip操作。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持的格式如下:
背景位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888, OT_TDE_COLOR_FORMAT_YCbCr888, OT_TDE_COLOR_FORMAT_AYCbCr8888
目标位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888
在调用此接口前应保证调用ss_tde_open打开TDE设备,并且调用ss_tde_begin_job获得了有效的任务句柄。
当背景位图src_suface与src_rect为NULL且操作结构opt为NULL时,该接口可实现单纯的色彩填充功能,即与ss_tde_quick_fill实现的功能一样。接口调用形式如下:
single_src.src_surface = NULL; single_src.src_rect = NULL; ss_tde_solid_draw(handle, &single_src, &fill_color,NULL);
当背景位图src_suface与src_rect不为NULL时(此时操作属性opt一定不能为NULL),可实现背景位图的指定区域与填充色做alpha叠加或ROP等操作,结果输出到目的位图的指定区域。接口调用形式如下:
ss_tde_solid_draw (handle, &single_src, &fill_color, opt);注:single_src中的值为有效值
调用者可将填充色与指定位图做alpha叠加、ROP、colorkey、输出结果的镜像mirror和输出结果的剪切clip。
当指定ROP操作时,ROP操作对象填充色作为前景S2,single_src.src_surface作为背景S1。
当指定colorkey操作时,只能对前景S2做colorkey。
Solid Draw绘制矩形或者水平/垂直直线的方法是通过设置填充矩形的宽/高来完成。例如:垂直直线就是绘制宽度为1像素的矩形。
【举例】
无。
ss_tde_rotate¶
【目的】
向任务中添加光栅位图旋转操作。
【语法】
td_s32 ss_tde_rotate(td_s32 handle, const ot_tde_single_src *single_src, ot_tde_rotate_angle rotate);
【描述】
将single_src中基地址为src_surface的位图以区域src_rect指定的尺寸旋转至dst_rect的尺寸,将结果拷贝到以dst_surface为目的地址、dst_rect为输出区域的内存中,可以做90度,180度和270度顺时针旋转。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
SS528V100、SS625V100、SS524V100、SS522V100不支持该功能。
SS928V100、SS927V100支持该功能。
支持的像素格式:
OT_TDE_COLOR_FORMAT_ARGB1555,
OT_TDE_COLOR_FORMAT_ARGB4444,
OT_TDE_COLOR_FORMAT_ARGB8888,
OT_TDE_COLOR_FORMAT_YCbCr422。
旋转的同时不支持格式转换,即输入输出像素格式需一致。
当像素格式是YCbCr422时,操作区域宽、高需要偶对齐。
位图物理地址与行间距需要16对齐。
旋转的同时不叠加任何其余规格。
输入格式为OT_TDE_COLOR_FORMAT_YCbCr422时,做180度旋转,不能超过zme的行buffer约束,具体约束见ss_tde_quick_resize接口中的约束描述。
【举例】
无。
ss_tde_bit_blit¶
【目的】
向任务中添加对光栅位图进行有附加功能的搬移操作。
【语法】
td_s32 ss_tde_bit_blit(td_s32 handle, const ot_tde_double_src *double_src, const ot_tde_opt *opt);
【描述】
将double_src中前景位图(fg_surface)与背景位图(bg_surface)的指定区域(fg_rect、bg_rect)进行运算,将运算后的位图拷贝到目标位图(dst_surface)的指定区域(dst_rect)中。其中,当前景位图不为NULL时,背景位图(bg_surface)的指定区域(bg_rect)和目标位图(dst_surface)的指定区域(dst_rect)必须一致。
ot_tde_opt结构中存放有TDE运算功能的配置信息,如:是否进行ROP操作及ROP命令码;是否作色键(colorkey)及colorkey的配置值;是否作区域裁减(clip操作)及指定clip区域;是否缩放、是否抗闪烁、是否镜像、是否进行alpha混合等信息。上述的操作可以同时使能。
ot_tde_opt结构中的配置项涉及到的概念解释,具体参考【功能说明】:
单源或双源的图形操作
单源操作指只有一个位图来源(如仅指定背景位图和目的位图,前景位图为NULL),针对该位图可以做以下处理:
位图搬移
位图格式转换
位图缩放
位图抗闪烁
位图颜色扩展或颜色校正
位图输出结果裁减,即clip
双源操作指有两个位图来源(背景位图和前景位图),两个位图的运算结果输出到目的位图指定的区域。其中,背景位图可以与目标位图为同一位图,此操作的含义为:将前景位图与背景位图进行运算,将结果直接输出覆盖到背景位图中。双源类的操作包括以下处理:
前景和背景的ROP操作
前景和背景的alpha叠加操作
ColorKey操作
前景位图指定区域缩放/抗闪烁处理后,再与背景做alpha叠加等操作
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持的格式如下:
背景位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888, OT_TDE_COLOR_FORMAT_CLUT1, OT_TDE_COLOR_FORMAT_CLUT2, OT_TDE_COLOR_FORMAT_CLUT4, OT_TDE_COLOR_FORMAT_CLUT8, OT_TDE_COLOR_FORMAT_ACLUT44, OT_TDE_COLOR_FORMAT_ACLUT88, OT_TDE_COLOR_FORMAT_A1, OT_TDE_COLOR_FORMAT_A8, OT_TDE_COLOR_FORMAT_YCbCr888, OT_TDE_COLOR_FORMAT_AYCbCr8888, OT_TDE_COLOR_FORMAT_BYTE, OT_TDE_COLOR_FORMAT_HALFWORD
前景位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888, OT_TDE_COLOR_FORMAT_CLUT1, OT_TDE_COLOR_FORMAT_CLUT2, OT_TDE_COLOR_FORMAT_CLUT4, OT_TDE_COLOR_FORMAT_CLUT8, OT_TDE_COLOR_FORMAT_ACLUT44, OT_TDE_COLOR_FORMAT_ACLUT88, OT_TDE_COLOR_FORMAT_A1, OT_TDE_COLOR_FORMAT_A8, OT_TDE_COLOR_FORMAT_YCbCr888, OT_TDE_COLOR_FORMAT_AYCbCr8888, OT_TDE_COLOR_FORMAT_YCbCr422, OT_TDE_COLOR_FORMAT_PKGVYUY, OT_TDE_COLOR_FORMAT_BYTE, OT_TDE_COLOR_FORMAT_HALFWORD, OT_TDE_COLOR_FORMAT_JPG_YCbCr400MBP, OT_TDE_COLOR_FORMAT_JPG_YCbCr422MBHP, OT_TDE_COLOR_FORMAT_JPG_YCbCr422MBVP, OT_TDE_COLOR_FORMAT_MP1_YCbCr420MBP, OT_TDE_COLOR_FORMAT_MP2_YCbCr420MBP, OT_TDE_COLOR_FORMAT_MP2_YCbCr420MBI, OT_TDE_COLOR_FORMAT_JPG_YCbCr420MBP, OT_TDE_COLOR_FORMAT_JPG_YCbCr444MBP
目标位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888, OT_TDE_COLOR_FORMAT_CLUT1, OT_TDE_COLOR_FORMAT_CLUT2, OT_TDE_COLOR_FORMAT_CLUT4, OT_TDE_COLOR_FORMAT_CLUT8, OT_TDE_COLOR_FORMAT_ACLUT44, OT_TDE_COLOR_FORMAT_ACLUT88, OT_TDE_COLOR_FORMAT_A1, OT_TDE_COLOR_FORMAT_A8, OT_TDE_COLOR_FORMAT_BYTE, OT_TDE_COLOR_FORMAT_HALFWORD
CLUT格式作为输出时,输入格式需与输出格式保持一致,且只能做拷贝操作。且不能两个源同为CLUT格式。
只有单源操作且操作项为NULL时,支持前景和目标为A1、A8、BYTE和HALFWORD格式,但前景和目标的格式必须相同,其余操作均不支持A1、A8、BYTE和HALFWORD格式。
在调用此接口前应保证调用ss_tde_open打开TDE设备,并且调用ss_tde_begin_job获得了有效的任务句柄。
目标位图必须与背景位图的颜色空间一致,前景位图的颜色空间可以与背景/目标位图不一致,这种情况下会进行颜色空间转换功能。
当前景源位图与目标位图尺寸不一致时,如果设置了缩放则按照设定的区域进行缩放,否则按照设置公共区域的最小值进行裁减搬移。
global_alpha和alpha0、alpha1的设置值统一按照[0, 255]的范围进行设置。
背景位图可以与目标位图为同一位图。
当只需要使用单源搬移操作时(比如只对源位图进行ROP取非操作),可以将背景或背景位图的结构信息和操作区域结构指针设置为空。
clip操作时
若为区域内clip,则裁减区域必须与操作区域有公共交集,否则会返回错误。
若为区域外clip,则裁减区域不可完全覆盖操作区域,否则会返回错误码。也就是说,实际更新区域不能为空。
在第一次作颜色扩展操作(源为CLUT格式,目的为ARGB/AYCbCr格式)时,需要打开clut_reload标记。
ROP操作时,通过操作结构体ot_tde_opt中的成员rop_color和rop_alpha分别指定颜色和alpha分量进行的ROP操作。其中,ROP操作类型中的S1指背景位图bg_surface,S2指前景位图fg_surface。
伴随缩放的情况下需满足ss_tde_quick_resize对宽高的限制。
【举例】
无。
ss_tde_pattern_fill¶
【目的】
模式填充。
【语法】
td_s32 ss_tde_pattern_fill(td_s32 handle, const ot_tde_double_src *double_src,
const ot_tde_pattern_fill_opt *fill_opt);
【描述】
将前景位图(fg_surface)的指定区域(fg_rect)平铺到背景位图(bg_surface)的指定区域(bg_rect),平铺的过程中可以实现colorkey、ROP、clip、颜色扩展、位图格式转换等操作,将操作后的结果搬移到目标位图(dst_surface)的指定区域(dst_rect)。将前景位图往背景位图模式填充时,前景位图的指定区域不会进行缩放,前景位图会平铺到整个背景位图的指定区域。若前景位图的指定区域大于背景位图的指定区域,则自动进行裁减。
当只需要使用单源操作时,可以将背景位图和指定区域置空或前景位图和指定区域置空,此时可以直接将前景位图或背景位图平铺到目的位图的指定区域。平铺过程可以实现位图格式转换,位图颜色扩展或颜色校正,位图输出结果裁减,即 clip。
当使用双源操作时,前景位图的指定区域填充到背景位图的指定区域中时,两个位图可以先做运算,将运算结果输出到目的位图指定的区域。双源的操作包括以下处理:
前景和背景的ROP操作
前景和背景的alpha叠加操作
ColorKey操作
【参数】
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持的格式如下:
背景位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888, OT_TDE_COLOR_FORMAT_CLUT1, OT_TDE_COLOR_FORMAT_CLUT2, OT_TDE_COLOR_FORMAT_CLUT4, OT_TDE_COLOR_FORMAT_CLUT8, OT_TDE_COLOR_FORMAT_ACLUT44, OT_TDE_COLOR_FORMAT_ACLUT88, OT_TDE_COLOR_FORMAT_YcbCr888, OT_TDE_COLOR_FORMAT_AYCbCr8888
前景位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888, OT_TDE_COLOR_FORMAT_CLUT1, OT_TDE_COLOR_FORMAT_CLUT2, OT_TDE_COLOR_FORMAT_CLUT4, OT_TDE_COLOR_FORMAT_CLUT8, OT_TDE_COLOR_FORMAT_ACLUT44, OT_TDE_COLOR_FORMAT_ACLUT88, OT_TDE_COLOR_FORMAT_YcbCr888, OT_TDE_COLOR_FORMAT_AYCbCr8888
目标位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888, OT_TDE_COLOR_FORMAT_YcbCr888, OT_TDE_COLOR_FORMAT_AYCbCr8888
在调用此接口前应保证调用ss_tde_open打开TDE设备,并且调用ss_tde_begin_job获得了有效的任务句柄。
若背景位图为NULL时,则当前景位图指定区域大于目标位图指定区域,进行裁减。
若背景位图指定区域没超过背景位图最大宽高且目标位图指定区域没超过目标位图最大宽高,则背景位图指定区域大小和目标位图指定区域大小必须一致。
若目标位图的指定区域大于目标位图的最大宽高,则自动裁减;而前景位图或背景位图的宽高超过其对应位图的最大宽高,则不会进行裁减,格式填充不成功。
若前景位图的指定区域大于背景位图的指定区域,则自动裁减。
若背景与前景的像素格式不一致,则目的位图可以为除CLUT格式外的其他格式。且背景位图和目标位图的颜色空间可以不一致。
源和目标位图的格式都不能为BYTE格式。
若前景位图和背景位图均不为NULL,则在将前景位图的指定区域往背景位图的指定区域填充的过程中不可做缩放,抗闪和镜像操作,其他操作和Bitblit中两幅位图可做的操作相同。
作clip操作时,裁减区域必须与操作区域有公共交集,否则会返回错误。
在第一次作颜色扩展操作(源为CLUT格式,目的为ARGB/AYCbCr格式),需要打开CLUT Reload标记。
ROP操作时,通过操作结构体ot_tde_opt中的成员rop_color和rop_alpha分别指定颜色和alpha分量进行的ROP操作。其中,ROP操作类型中的S1指背景位图bg_surface,S2指前景位图fg_surface。
该操作不能做缩放。
当单源操作时,无论是背景或是前景,其指定区域的宽不可超过256;当双源操作时,前景指定区域的宽不可超过256。
【举例】
无。
ss_tde_mb_blit¶
【目的】
向任务中添加对宏块位图进行有附加功能的搬移操作。将亮度和色度宏块数据合并成光栅格式,可以伴随缩放、抗闪烁、clip处理。
【语法】
td_s32 ss_tde_mb_blit(td_s32 handle, const ot_tde_mb_src *mb_src, const ot_tde_mb_opt *opt);
【描述】
宏块surface指定区域的亮度和色度数据合并成光栅格式输出到目标surface的指定区域。在合并的过程中可以伴随缩放操作,由opt的resize_en参数指定。如果没有指定缩放,将直接将宏块数据合并的结果输出到目标surface上,超出的部分将剪切掉。当clip开关打开时,将做剪切拷贝;合并过程中也支持抗闪烁处理。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持的格式如下:
前景位图格式:
OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr400MBP, OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr422MBHP, OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr422MBVP, OT_TDE_MB_COLOR_FORMAT_MP1_YCbCr420MBP, OT_TDE_MB_COLOR_FORMAT_MP2_YCbCr420MBP, OT_TDE_MB_COLOR_FORMAT_MP2_YCbCr420MBI, OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr420MBP, OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr444MBP
目标位图格式:
OT_TDE_COLOR_FORMAT_RGB444, OT_TDE_COLOR_FORMAT_BGR444, OT_TDE_COLOR_FORMAT_RGB555, OT_TDE_COLOR_FORMAT_BGR555, OT_TDE_COLOR_FORMAT_RGB565, OT_TDE_COLOR_FORMAT_BGR565, OT_TDE_COLOR_FORMAT_RGB888, OT_TDE_COLOR_FORMAT_BGR888, OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_RABG8888
在调用此接口前应保证调用ss_tde_open打开TDE设备,并且调用ss_tde_begin_job获得了有效的任务句柄。
对于YCbCr422格式的宏块,若采用的是水平方向采样,则操作区域起始点水平坐标必须是偶数。若垂直方向采样,无此限制。
伴随缩放的情况下需满足ss_tde_quick_resize对宽高的限制。
【举例】
无。
ss_tde_bitmap_mask_rop¶
【目的】
向任务中添加对光栅位图进行Mask Rop搬移操作。根据mask位图实现前景位图和背景位图ROP的效果。
【语法】
td_s32 ss_tde_bitmap_mask_rop(td_s32 handle,const ot_tde_triple_src *triple_src,
ot_tde_rop_mode rop_code_color, ot_tde_rop_mode rop_code_alpha);
【描述】
Mask位图必须为A1位图,在Mask位图为0的地方输出背景像素值,为1的地方输出前景和背景的ROP运算结果值。
MaskRop与普通的Rop操作的不同之处有以下两点:
普通的ROP操作是两幅位图的操作区域中的每个像素点都参与ROP操作,无法实现部分区域做ROP操作,部分不做(保留背景)。
MaskRop操作通过构造合适的Mask位图可实现:输出位图的部分区域是前背景的ROP结果,部分区域是背景图象,就像是对前背景ROP的结果做了一个clip剪切。通过构造Mask位图,还可实现任意形状的clip剪切。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持或不支持的格式如下:
背景位图格式和目标位图格式不支持:
OT_TDE_COLOR_FORMAT_CLUT1,OT_TDE_COLOR_FORMAT_CLUT2, OT_TDE_COLOR_FORMAT_CLUT4,OT_TDE_COLOR_FORMAT_CLUT8, OT_TDE_COLOR_FORMAT_ACLUT44,OT_TDE_COLOR_FORMAT_ACLUT88, OT_TDE_COLOR_FORMAT_A1,OT_TDE_COLOR_FORMAT_A8, OT_TDE_COLOR_FORMAT_BYTE, OT_TDE_COLOR_FORMAT_HALFWORD, OT_TDE_COLOR_FORMAT_JPG_YCbCr400MBP, OT_TDE_COLOR_FORMAT_JPG_YCbCr422MBHP, OT_TDE_COLOR_FORMAT_JPG_YCbCr422MBVP, OT_TDE_COLOR_FORMAT_MP1_YCbCr420MBP, OT_TDE_COLOR_FORMAT_MP2_YCbCr420MBP, OT_TDE_COLOR_FORMAT_MP2_YCbCr420MBI, OT_TDE_COLOR_FORMAT_JPG_YCbCr420MBP, OT_TDE_COLOR_FORMAT_JPG_YCbCr444MBP, OT_TDE_COLOR_FORMAT_YCbCr422, OT_TDE_COLOR_FORMAT_PKGVYUY
前景位图格式只支持:
OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_AYCbCr8888, OT_TDE_COLOR_FORMAT_RABG8888
Mask位图格式只支持OT_TDE_COLOR_FORMAT_A1。
调用此接口前应保证调用ss_tde_open打开TDE设备,并且调用ss_tde_begin_job获得了有效的任务句柄。
前景位图、背景位图、mask位图、目的位图分别和其操作区域求得有效操作区域,4个有效操作区域的大小必须一致。
Mask位图必须是A1格式的位图。
目标位图和背景位图必须位于同一颜色空间。
此接口需要用到临时buffer,在加载ko时要配置参数g_tde_tmp_buf的大小,大小配置为前景位图大小,例如:对于前景格式为ARGB8888分辨率大小为720*576的图片则需要配置为:720*576*4= 1658880。
说明: 有效操作区域:指调用者指定的操作区域与位图的相交部分。
【举例】
使用接口代码片段如下:
td_s32 handle;
ot_tde_surface bg_surface, fg_surface, mask_surface, dst_surface;
ot_tde_rect bg_rect, fg_rect, mask_rect, dst_rect;
ot_tde_triple_src triple_src = {0};
/* 配置有效的surface与rect */
……
ss_tde_open();
handle = ss_tde_begin_job();
/* 使用三源rop接口 */
triple_src.bg_surface = & bg_surface;
triple_src.fg_surface = & fg_surface;
triple_src.mask_surface = & mask_surface;
triple_src.dst_surface = & dst_surface;
triple_src.bg_rect = &bg_rect;
triple_src.fg_rect = &fg_rect;
triple_src.mask_rect = &mask_rect;
triple_src.dst_rect = &dst_rect;
ss_tde_bitmap_mask_rop(handle, &triple_src, OT_TDE_ROP_MASKPEN,
OT_TDE_ROP_MASKPEN);
/* 提交任务给硬件 */
ss_tde_end_job(handle, ……);
ss_tde_close();
ss_tde_bitmap_mask_blend¶
【目的】
向任务中添加对光栅位图进行Mask Blend搬移操作。根据Mask位图实现前景位图和背景位图带Mask位图的叠加效果。
【语法】
td_s32 ss_tde_bitmap_mask_blend(td_s32 handle,
const ot_tde_triple_src *triple_src,
td_u8 alpha,
ot_tde_alpha_blending blend_mode);
【描述】
Mask是A1的位图,在Mask位图为0的地方输出背景像素值,为1的地方输出前景和背景的blending叠加结果。
MaskBlending与普通的blending叠加操作的不同之处有以下两点:
普通的blending叠加操作是两幅位图的操作区域中的每个像素点都参与叠加,无法实现部分区域做blending操作,部分不做(保留背景)。
MaskBlending操作通过构造合适的Mask位图可实现:输出位图的部分区域是前背景的叠加结果,部分区域是背景图象,就像是对前背景Blending的结果做了一个clip剪切。通过构造Mask位图,还可实现任意形状的clip剪切。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
支持或不支持的格式如下:
背景位图格式和目标位图格式不支持:
OT_TDE_COLOR_FORMAT_CLUT1, OT_TDE_COLOR_FORMAT_CLUT2, OT_TDE_COLOR_FORMAT_CLUT4, OT_TDE_COLOR_FORMAT_CLUT8, OT_TDE_COLOR_FORMAT_ACLUT44, OT_TDE_COLOR_FORMAT_ACLUT88, OT_TDE_COLOR_FORMAT_A1, OT_TDE_COLOR_FORMAT_A8, OT_TDE_COLOR_FORMAT_BYTE, OT_TDE_COLOR_FORMAT_HALFWORD, OT_TDE_COLOR_FORMAT_JPG_YCbCr400MBP, OT_TDE_COLOR_FORMAT_JPG_YCbCr422MBHP, OT_TDE_COLOR_FORMAT_JPG_YCbCr422MBVP, OT_TDE_COLOR_FORMAT_MP1_YCbCr420MBP, OT_TDE_COLOR_FORMAT_MP2_YCbCr420MBP, OT_TDE_COLOR_FORMAT_MP2_YCbCr420MBI, OT_TDE_COLOR_FORMAT_JPG_YCbCr420MBP, OT_TDE_COLOR_FORMAT_JPG_YCbCr444MBP, OT_TDE_COLOR_FORMAT_YCbCr422, OT_TDE_COLOR_FORMAT_PKGVYUY
前景位图格式只支持:
OT_TDE_COLOR_FORMAT_ARGB4444, OT_TDE_COLOR_FORMAT_ABGR4444, OT_TDE_COLOR_FORMAT_RGBA4444, OT_TDE_COLOR_FORMAT_BGRA4444, OT_TDE_COLOR_FORMAT_ARGB1555, OT_TDE_COLOR_FORMAT_ABGR1555, OT_TDE_COLOR_FORMAT_RGBA1555, OT_TDE_COLOR_FORMAT_BGRA1555, OT_TDE_COLOR_FORMAT_ARGB8565, OT_TDE_COLOR_FORMAT_ABGR8565, OT_TDE_COLOR_FORMAT_RGBA8565, OT_TDE_COLOR_FORMAT_BGRA8565, OT_TDE_COLOR_FORMAT_ARGB8888, OT_TDE_COLOR_FORMAT_ABGR8888, OT_TDE_COLOR_FORMAT_RGBA8888, OT_TDE_COLOR_FORMAT_BGRA8888, OT_TDE_COLOR_FORMAT_AYCbCr8888, OT_TDE_COLOR_FORMAT_RABG8888
Mask位图格式只支持OT_TDE_COLOR_FORMAT_A1和OT_TDE_COLOR_FORMAT_A8。
在调用此接口前应保证调用ss_tde_open打开TDE设备,并且调用ss_tde_begin_job获得了有效的任务句柄。
目标位图和背景位图必须位于同一颜色空间。
如果芯片支持预乘模式,且前景位图是预乘了的数据,Alpha叠加模式应该选择预乘模式;否则选择非预乘模式。
blend_mode只支持OT_TDE_ALPHA_BLENDING_BLEND模式。
前景位图、背景位图、mask位图、目的位图分别和其操作区域求得有效操作区域,4个有效操作区域的大小必须一致。
Mask位图必须是A1或A8格式的位图。
此接口需要用到临时buffer,在加载ko时要配置参数g_tde_tmp_buf的大小,大小配置为前景位图大小,例如:对于前景格式为ARGB8888分辨率大小为720*576的图片则需要配置为:720*576*4=1658880。
【举例】
使用方式可参考ss_tde_bitmap_mask_rop使用方式。
ss_tde_get_deflicker_level¶
【目的】
获取抗闪烁级别。
【语法】
td_s32 ss_tde_get_deflicker_level(ot_tde_deflicker_level *deflicker_level);
【描述】
获取抗闪烁级别。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
无。
【举例】
无。
ss_tde_set_deflicker_level¶
【目的】
设置抗闪烁级别。
【语法】
td_s32 ss_tde_set_deflicker_level(ot_tde_deflicker_level deflicker_level);
【描述】
设置抗闪烁级别。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
无。
【举例】
无。
ss_tde_get_alpha_threshold_value¶
【目的】
获取alpha判决阈值。
【语法】
td_s32 ss_tde_get_alpha_threshold_value(td_u8 *threshold_value);
【描述】
获取alpha判决阈值。用于结果图片像素格式为ARGB1555的情况。若前景位图和背景位图的alpha运算结果小于此阈值,结果像素的alpha位取0;大于或等于此阈值,像素的alpha位取1。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
无。
【举例】
无。
ss_tde_set_alpha_threshold_value¶
【目的】
设置alpha判决阈值。
【语法】
td_s32 ss_tde_set_alpha_threshold_value(td_u8 threshold_value);
【描述】
设置alpha判决阈值。当前景和背景做bitblit操作时,不管前景位图和背景位图的格式是什么,硬件都会生成ARGB8888的中间位图格式,若目标图片像素格式为ARGB1555的情况,则前景位图和背景位图的alpha运算结果小于此阈值,结果像素的alpha位取0;大于或等于此阈值,像素的alpha位取1。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
无。
【举例】
无。
ss_tde_get_alpha_threshold_state¶
【目的】
获取alpha判决开关状态。
【语法】
td_s32 ss_tde_get_alpha_threshold_state(td_bool *threshold_en);
【描述】
获取alpha判决开关状态。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
无。
【举例】
无。
ss_tde_set_alpha_threshold_state¶
【目的】
设置alpha判决开关状态。
【语法】
td_s32 ss_tde_set_alpha_threshold_state(td_bool threshold_en);
【描述】
设置alpha判决开关状态。在开关开的状态下,阈值为用户自己设置的值,否则阈值为0xFF。
【参数】
【返回值】
失败,其值为错误码。 |
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
无。
【举例】
无。
ss_tde_enable_rgn_deflicker¶
【目的】
使能局部抗闪烁。
【语法】
td_s32 ss_tde_enable_rgn_deflicker(td_bool rgn_deflicker_en);
【描述】
使能或去使能局部抗闪烁。
【参数】
【错误码】
【需求】
头文件:ss_mpi_tde.h
库文件:libss_tde.a
【注意】
在不使能局部抗闪烁的情况下,ss_tde_quick_deflicker或ss_tde_bit_blit在对指定的区域进行抗闪烁时,不会参考区域周边的像素值;否则会参考。所以使能和不使能局部抗闪烁会使区域边缘得到不同的结果。当抗闪区域是整幅图片时,两者的效果相同。
在使能局部抗闪烁的情况下,不支持源操作区域与目标操作区域位置和宽高不一样的搬移和缩放操作。
【举例】
无。
数据类型¶
映射表¶
本章详细描述了API中涉及的数据结构,如表1所示。
表 1 TDE数据结构映射表
详细描述¶
ot_tde_color_format¶
【说明】
TDE支持的所有像素格式。
【定义】
typedef enum {
OT_TDE_COLOR_FORMAT_RGB444 = 0, /* RGB444 format */
OT_TDE_COLOR_FORMAT_BGR444, /* BGR444 format */
OT_TDE_COLOR_FORMAT_RGB555, /* RGB555 format */
OT_TDE_COLOR_FORMAT_BGR555, /* BGR555 format */
OT_TDE_COLOR_FORMAT_RGB565, /* RGB565 format */
OT_TDE_COLOR_FORMAT_BGR565, /* BGR565 format */
OT_TDE_COLOR_FORMAT_RGB888, /* RGB888 format */
OT_TDE_COLOR_FORMAT_BGR888, /* BGR888 format */
OT_TDE_COLOR_FORMAT_ARGB4444, /* ARGB4444 format */
OT_TDE_COLOR_FORMAT_ABGR4444, /* ABGR4444 format */
OT_TDE_COLOR_FORMAT_RGBA4444, /* RGBA4444 format */
OT_TDE_COLOR_FORMAT_BGRA4444, /* BGRA4444 format */
OT_TDE_COLOR_FORMAT_ARGB1555, /* ARGB1555 format */
OT_TDE_COLOR_FORMAT_ABGR1555, /* ABGR1555 format */
OT_TDE_COLOR_FORMAT_RGBA1555, /* RGBA1555 format */
OT_TDE_COLOR_FORMAT_BGRA1555, /* BGRA1555 format */
OT_TDE_COLOR_FORMAT_ARGB8565, /* ARGB8565 format */
OT_TDE_COLOR_FORMAT_ABGR8565, /* ABGR8565 format */
OT_TDE_COLOR_FORMAT_RGBA8565, /* RGBA8565 format */
OT_TDE_COLOR_FORMAT_BGRA8565, /* BGRA8565 format */
OT_TDE_COLOR_FORMAT_ARGB8888, /* ARGB8888 format */
OT_TDE_COLOR_FORMAT_ABGR8888, /* ABGR8888 format */
OT_TDE_COLOR_FORMAT_RGBA8888, /* RGBA8888 format */
OT_TDE_COLOR_FORMAT_BGRA8888, /* BGRA8888 format */
OT_TDE_COLOR_FORMAT_RABG8888, /* RABG8888 format */
OT_TDE_COLOR_FORMAT_CLUT1,
OT_TDE_COLOR_FORMAT_CLUT2,
OT_TDE_COLOR_FORMAT_CLUT4,
OT_TDE_COLOR_FORMAT_CLUT8,
OT_TDE_COLOR_FORMAT_ACLUT44,
OT_TDE_COLOR_FORMAT_ACLUT88,
OT_TDE_COLOR_FORMAT_A1,
OT_TDE_COLOR_FORMAT_A8,
OT_TDE_COLOR_FORMAT_YCbCr888,
OT_TDE_COLOR_FORMAT_AYCbCr8888,
OT_TDE_COLOR_FORMAT_YCbCr422,
OT_TDE_COLOR_FORMAT_PKGVYUY,
OT_TDE_COLOR_FORMAT_BYTE,
OT_TDE_COLOR_FORMAT_HALFWORD,
OT_TDE_COLOR_FORMAT_JPG_YCbCr400MBP,
OT_TDE_COLOR_FORMAT_JPG_YCbCr422MBHP,
OT_TDE_COLOR_FORMAT_JPG_YCbCr422MBVP,
OT_TDE_COLOR_FORMAT_MP1_YCbCr420MBP,
OT_TDE_COLOR_FORMAT_MP2_YCbCr420MBP,
OT_TDE_COLOR_FORMAT_MP2_YCbCr420MBI,
OT_TDE_COLOR_FORMAT_JPG_YCbCr420MBP,
OT_TDE_COLOR_FORMAT_JPG_YCbCr444MBP,
OT_TDE_COLOR_FORMAT_MAX
} ot_tde_color_format;
【成员】
【注意事项】
目标格式不支持OT_TDE_COLOR_FORMAT_YCbCr400MBP, OT_TDE_COLOR_FORMAT_YCbCr422MBHP, OT_TDE_COLOR_FORMAT_YCbCr422MBVP, OT_TDE_COLOR_FORMAT_YCbCr420MBP, OT_TDE_COLOR_FORMAT_YCbCr420MBI, OT_TDE_COLOR_FORMAT_YCbCr444MBP。
OT_TDE_COLOR_FORMAT_A1, OT_TDE_COLOR_FORMAT_A8, OT_TDE_COLOR_FORMAT_BYTE只支持DMA搬移,且不能转成其他格式。
CLUT格式作为输出时,输入格式只能与输出保持一致,且只能做拷贝操作。且不能两个源同为CLUT格式。
上述提供的420宏块格式排列一致,与ot_tde_mb_color_format的420宏块格式无区别。
【相关数据类型和接口】
无。
ot_tde_mb_color_format¶
【说明】
TDE支持的宏块格式类型。
【定义】
typedef enum {
OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr400MBP = 0,
OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr422MBHP,
OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr422MBVP,
OT_TDE_MB_COLOR_FORMAT_MP1_YCbCr420MBP,
OT_TDE_MB_COLOR_FORMAT_MP2_YCbCr420MBP,
OT_TDE_MB_COLOR_FORMAT_MP2_YCbCr420MBI,
OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr420MBP,
OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr444MBP,
OT_TDE_MB_COLOR_FORMAT_MAX
} ot_tde_mb_color_format;
【成员】
【注意事项】
上述提供的420宏块格式排列一致,与ot_tde_color_format的420宏块格式无区别。具体使用看使用的功能接口的参数类型。
【相关数据类型和接口】
无。
ot_tde_surface¶
【说明】
位图surface结构体。
【定义】
typedef struct {
td_phys_addr_t phys_addr;
td_u32 phys_len;
ot_tde_color_format color_format;
td_u32 height;
td_u32 width;
td_u32 stride;
td_bool is_ycbcr_clut;
td_bool alpha_max_is_255;
td_bool support_alpha_ex_1555;
td_u8 alpha0;
td_u8 alpha1;
td_phys_addr_t cbcr_phys_addr;
td_u32 cbcr_phys_len;
td_u32 cbcr_stride;
td_phys_addr_t clut_phys_addr;
td_u32 clut_phys_len;
} ot_tde_surface;
【成员】
【注意事项】
像素格式大于等于BYTE的位图格式的位图首地址和Stride必须按照像素格式对齐,像素格式不足BYTE的位图格式的位图首地址和Stride需要按照BYTE对齐。
像素格式不足BYTE的位图格式的水平起始位置和宽度必须按照BYTE对齐。
YCbCr422格式的位图的水平起始位置和宽度必须为偶数。
CLUT到真彩色ARGB的扩展是依靠检索CLUT表来实现的。故颜色扩展功能(如CLUT1格式位图扩展到ARGB8888格式位图)或颜色校正时,需要配置CLUT表首地址clut_phys_addr,且其指向的CLUT表内存必须是物理连续的。
stride最大不超过65535。
【相关数据类型和接口】
无。
ot_tde_mb_surface¶
【说明】
宏块surface结构体,描述宏块格式的位图的基本信息。
【定义】
typedef struct {
ot_tde_mb_color_format mb_color_format;
td_phys_addr_t y_addr;
td_u32 y_len;
td_u32 y_width;
td_u32 y_height;
td_u32 y_stride;
td_phys_addr_t cbcr_phys_addr;
td_u32 cbcr_phys_len;
td_u32 cbcr_stride;
} ot_tde_mb_surface;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_rect¶
【说明】
TDE操作区域属性。
【定义】
typedef struct {
td_s32 pos_x; /* Horizontal coordinate */
td_s32 pos_y; /* Vertical coordinate */
td_u32 width; /* Width */
td_u32 height; /* Height */
} ot_tde_rect;
【成员】
【注意事项】
操作区域与位图的关系如图1所示。
若操作区域与位图部分相交,则取相交部分为实际参与操作的区域;若操作区域与位图不相交,则返回相应错误码。
【相关数据类型和接口】
无。
ot_tde_none_src¶
【说明】
TDE操作组合类型(按源的个数区分)。此为0源操作。
【定义】
typedef struct {
ot_tde_surface *dst_surface;
ot_tde_rect *dst_rect;
} ot_tde_none_src;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_single_src¶
【说明】
TDE操作组合类型(按源的个数区分)。此为单源操作。
【定义】
typedef struct {
ot_tde_surface *src_surface;
ot_tde_surface *dst_surface;
ot_tde_rect *src_rect;
ot_tde_rect *dst_rect;
} ot_tde_single_src;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_mb_src¶
【说明】
TDE操作组合类型(按源的个数区分)。此为双源操作。
【定义】
typedef struct {
ot_tde_mb_surface *mb_surface;
ot_tde_surface *dst_surface;
ot_tde_rect *src_rect;
ot_tde_rect *dst_rect;
} ot_tde_mb_src;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_double_src¶
【说明】
TDE操作组合类型(按源的个数区分)。此为双源操作。
【定义】
typedef struct {
ot_tde_surface *bg_surface;
ot_tde_surface *fg_surface;
ot_tde_surface *dst_surface;
ot_tde_rect *bg_rect;
ot_tde_rect *fg_rect;
ot_tde_rect *dst_rect;
} ot_tde_double_src;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_triple_src¶
【说明】
TDE操作组合类型(按源的个数区分)。此为三源操作。
【定义】
typedef struct {
ot_tde_surface *bg_surface;
ot_tde_surface *fg_surface;
ot_tde_surface *dst_surface;
ot_tde_surface *mask_surface;
ot_tde_rect *bg_rect;
ot_tde_rect *fg_rect;
ot_tde_rect *mask_rect;
ot_tde_rect *dst_rect;
} ot_tde_triple_src;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_alpha_blending¶
【说明】
逻辑运算类型属性。
【定义】
typedef enum {
OT_TDE_ALPHA_BLENDING_NONE = 0x0,
OT_TDE_ALPHA_BLENDING_BLEND = 0x1,
OT_TDE_ALPHA_BLENDING_ROP = 0x2,
OT_TDE_ALPHA_BLENDING_COLORIZE = 0x4,
OT_TDE_ALPHA_BLENDING_MAX = 0x8
} ot_tde_alpha_blending;
【成员】
【注意事项】
若进行两个位图的alpha叠加运算,请选择OT_TDE_ALPHA_BLENDING_BLEND,若进行Colorize操作,请选择OT_TDE_ALPHA_BLENDING_COLORIZE。如选择OT_TDE_ALPHA_BLENDING_ROP,指进行布尔逻辑运算类型。通过指定ot_tde_opt结构中的rop_color和rop_alpha成员,分别指定颜色和alpha分量的ROP运算类型。
【相关数据类型和接口】
无。
ot_tde_rop_mode¶
【说明】
TDE支持的ROP操作类型。
【定义】
typedef enum {
OT_TDE_ROP_BLACK = 0, /* Blackness */
OT_TDE_ROP_NOTMERGEPEN, /* ~(S2 | S1) */
OT_TDE_ROP_MASKNOTPEN, /* ~S2&S1 */
OT_TDE_ROP_NOTCOPYPEN, /* ~S2 */
OT_TDE_ROP_MASKPENNOT, /* S2&~S1 */
OT_TDE_ROP_NOT, /* ~S1 */
OT_TDE_ROP_XORPEN, /* S2^S1 */
OT_TDE_ROP_NOTMASKPEN, /* ~(S2 & S1) */
OT_TDE_ROP_MASKPEN, /* S2&S1 */
OT_TDE_ROP_NOTXORPEN, /* ~(S2^S1) */
OT_TDE_ROP_NOP, /* S1 */
OT_TDE_ROP_MERGENOTPEN, /* ~S2|S1 */
OT_TDE_ROP_COPYPEN, /* S2 */
OT_TDE_ROP_MERGEPENNOT, /* S2|~S1 */
OT_TDE_ROP_MERGEPEN, /* S2|S1 */
OT_TDE_ROP_WHITE, /* Whiteness */
OT_TDE_ROP_MAX
} ot_tde_rop_mode;
【成员】
注意:S1表示背景位图,S2表示位前景位图。
【注意事项】
不同操作时,S1、S2具体所指的位图不同,详见每个接口的说明部分。如果对两幅位图进行的操作类型选择为OT_TDE_ALPHA_BLENDING_ROP,则可以分别对颜色空间和Alpha指定不同的ROP操作。例如:设前景位图和背景位图均为ARGB8888格式的位图。前景位图的像素值为foreground,背景位图的像素值为background,经过运算后的像素的值为pixel,取Alpha的ROP操作为Whiteness,取颜色空间的ROP操作为Blackness,则经过运算之后的像素值pixel计算如下:
pixel. alpha=0xff;
pixel.r=pixel.g=pixel.b=0x00;
其中pixel. alpha,pixel.r,pixel.g,pixel.b分别代表运算后位图的各个分量。
【相关数据类型和接口】
无。
ot_tde_mirror_mode¶
【说明】
位图镜像属性。
【定义】
typedef enum {
OT_TDE_MIRROR_NONE = 0,
OT_TDE_MIRROR_HOR,
OT_TDE_MIRROR_VER,
OT_TDE_MIRROR_BOTH,
OT_TDE_MIRROR_MAX
} ot_tde_mirror_mode;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_clip_mode¶
【说明】
剪切操作类型。
【定义】
typedef enum {
OT_TDE_CLIP_MODE_NONE = 0,
OT_TDE_CLIP_MODE_INSIDE,
OT_TDE_CLIP_MODE_OUTSIDE,
OT_TDE_CLIP_MODE_MAX
} ot_tde_clip_mode;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_mb_resize¶
【说明】
宏块格式缩放类型。
【定义】
typedef enum {
OT_TDE_MB_RESIZE_NONE = 0,
OT_TDE_MB_RESIZE_QUALITY_LOW,
OT_TDE_MB_RESIZE_QUALITY_MIDDLE,
OT_TDE_MB_RESIZE_QUALITY_HIGH,
OT_TDE_MB_RESIZE_MAX
} ot_tde_mb_resize;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_fill_color¶
【说明】
位图填充色属性结构。
【定义】
typedef struct {
ot_tde_color_format color_format;
td_u32 color_value;
} ot_tde_fill_color;
【成员】
【注意事项】
填充值必须与填充格式相匹配,如某位图需填充为蓝色,可指定填充色格式为ARGB1555,填充值为0x801F(此处alpha位为1)。
【相关数据类型和接口】
无。
ot_tde_colorkey_mode¶
【说明】
TDE colorkey模式属性。
【定义】
typedef enum {
OT_TDE_COLORKEY_MODE_NONE = 0,
OT_TDE_COLORKEY_MODE_FG,
OT_TDE_COLORKEY_MODE_BG,
OT_TDE_COLORKEY_MODE_MAX
} ot_tde_colorkey_mode;
【成员】
【注意事项】
对前景位图进行colorkey时,对于颜色扩展,在CLUT前做colorkey;对于颜色校正,在CLUT后做colorkey。
【相关数据类型和接口】
无。
ot_tde_colorkey_component¶
【说明】
单个颜色分量的关键色属性。
【定义】
typedef struct {
td_u8 min_component;
td_u8 max_component;
td_u8 is_component_out;
td_u8 is_component_ignore;
td_u8 component_mask;
td_u8 component_reserved;
td_u8 component_reserved1;
td_u8 component_reserved2;
} ot_tde_colorkey_component;
【成员】
【注意事项】
结构成员is_component_ignore指关键色比较时是否忽略该分量的比较,而总是认为其满足关键色要求。
若is_component_ignore为TRUE,表示关键色比较时,忽略该分量的比较,认为该分量总是满足关键色要求。
若is_component_ignore为FALSE,表示需要根据[最小关键色,最大关键色]范围以及属性is_component_out判断该分量的值是否符合关键色要求。
结构体成员component_mask控制分量中的哪些bit位有效,即分量会和component_mask做与运算。若component_mask为0则分量的值为0,若component_mask为0xFF则分量的值为该像素点的分量值,以此类推。
【相关数据类型和接口】
无。
ot_tde_colorkey¶
【说明】
关键色属性。
【定义】
typedef union {
struct {
ot_tde_colorkey_component alpha;
ot_tde_colorkey_component red;
ot_tde_colorkey_component green;
ot_tde_colorkey_component blue;
} argb_colorkey;
struct {
ot_tde_colorkey_component alpha;
ot_tde_colorkey_component y;
ot_tde_colorkey_component cb;
ot_tde_colorkey_component cr;
} ycbcr_colorkey;
struct {
ot_tde_colorkey_component alpha;
ot_tde_colorkey_component clut;
} clut_colorkey;
} ot_tde_colorkey;
【成员】
结构argb_colorkey成员:表示位图格式为ARGB类型时各分量的关键色属性。
结构ycbcr_colorkey成员:表示位图格式为AYCbCr类型时,各分量的关键色属性。
结构clut_colorkey成员:表示位图格式为CLUT类型时,各分量的关键色属性。
联合类型ot_tde_colorkey成员,各分量的关键色属性。
【注意事项】
不管当前位图是什么格式,color space颜色上限值和下限值都应该是ARGB8888格式的值。
【相关数据类型和接口】
无。
ot_tde_out_alpha_from¶
【说明】
输出alpha来源类型。
【定义】
typedef enum {
OT_TDE_OUT_ALPHA_FROM_NORM = 0,
OT_TDE_OUT_ALPHA_FROM_BG,
OT_TDE_OUT_ALPHA_FROM_FG,
OT_TDE_OUT_ALPHA_FROM_GLOBALALPHA,
OT_TDE_OUT_ALPHA_FROM_MAX
} ot_tde_out_alpha_from;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_filter_mode¶
【说明】
位图滤波模式。
【定义】
typedef enum {
OT_TDE_FILTER_MODE_COLOR = 0,
OT_TDE_FILTER_MODE_ALPHA,
OT_TDE_FILTER_MODE_BOTH,
OT_TDE_FILTER_MODE_NONE,
OT_TDE_FILTER_MODE_MAX
} ot_tde_filter_mode;
【成员】
【注意事项】
位图的缩放或抗闪都是一种滤波,故在位图缩放或(和)抗闪操作时,需要指明滤波模式。
【相关数据类型和接口】
无。
ot_tde_deflicker_mode¶
【说明】
抗闪烁处理通道配置。
【定义】
typedef enum {
OT_TDE_DEFLICKER_LEVEL_MODE_NONE = 0,
OT_TDE_DEFLICKER_LEVEL_MODE_RGB,
OT_TDE_DEFLICKER_LEVEL_MODE_BOTH,
OT_TDE_DEFLICKER_LEVEL_MODE_MAX
} ot_tde_deflicker_mode;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_blend_mode¶
【说明】
用户自定义alpha混合模式。
【定义】
typedef enum {
OT_TDE_BLEND_ZERO = 0x0,
OT_TDE_BLEND_ONE,
OT_TDE_BLEND_SRC2COLOR,
OT_TDE_BLEND_INVSRC2COLOR,
OT_TDE_BLEND_SRC2ALPHA,
OT_TDE_BLEND_INVSRC2ALPHA,
OT_TDE_BLEND_SRC1COLOR,
OT_TDE_BLEND_INVSRC1COLOR,
OT_TDE_BLEND_SRC1ALPHA,
OT_TDE_BLEND_INVSRC1ALPHA,
OT_TDE_BLEND_SRC2ALPHASAT,
OT_TDE_BLEND_MAX
} ot_tde_blend_mode;
【成员】
pixel = (foreground x fs + background x fd),其中:
fs:foreground blend coefficient。
fd:destination blend coefficient。
pixel:运算以后的像素值。
foreground:前景位图的像素值。
background:背景位图的像素值。
sa:forground alpha。
da:background alpha。
sc:forground color。
dc:background color。
sc为颜色值归一化后的值,各分量分开计算。即颜色分量归一化值计算公式为:各分量颜色值/255
fs和fd分别为源位图像素和目的位图像素的系数,选择下表中不同的项代表不同的系数。
【注意事项】
在前景位图和背景位图作叠加运算时,可以分别设置Src1通道和Src2通道的叠加模式。现在支持11种叠加模式。当ot_tde_blend_mode取ot_tde_blend_cmd时,可通过取ot_tde_blend_mode里面不同的项实现不同类型的叠加。
【相关数据类型和接口】
无。
ot_tde_blend_cmd¶
【说明】
Alpha混合命令。用于计算进行alpha混合以后的像素值。
【定义】
typedef enum {
OT_TDE_BLEND_CMD_NONE = 0x0, /* fs: sa fd: 1.0-sa */
OT_TDE_BLEND_CMD_CLEAR, /* fs: 0.0 fd: 0.0 */
OT_TDE_BLEND_CMD_SRC, /* fs: 1.0 fd: 0.0 */
OT_TDE_BLEND_CMD_SRCOVER, /* fs: 1.0 fd: 1.0-sa */
OT_TDE_BLEND_CMD_DSTOVER, /* fs: 1.0-da fd: 1.0 */
OT_TDE_BLEND_CMD_SRCIN, /* fs: da fd: 0.0 */
OT_TDE_BLEND_CMD_DSTIN, /* fs: 0.0 fd: sa */
OT_TDE_BLEND_CMD_SRCOUT, /* fs: 1.0-da fd: 0.0 */
OT_TDE_BLEND_CMD_DSTOUT, /* fs: 0.0 fd: 1.0-sa */
OT_TDE_BLEND_CMD_SRCATOP, /* fs: da fd: 1.0-sa */
OT_TDE_BLEND_CMD_DSTATOP, /* fs: 1.0-da fd: sa */
OT_TDE_BLEND_CMD_ADD, /* fs: 1.0 fd: 1.0 */
OT_TDE_BLEND_CMD_XOR, /* fs: 1.0-da fd: 1.0-sa */
OT_TDE_BLEND_CMD_DST, /* fs: 0.0 fd: 1.0 */
OT_TDE_BLEND_CMD_CONFIG, /* You can set the parameters. */
OT_TDE_BLEND_CMD_MAX
} ot_tde_blend_cmd;
【成员】
pixel = (foreground x fs + background x fd),其中:
fs:foreground blend coefficient。
fd:destination blend coefficient。
pixel:运算以后的像素值。
foreground:前景位图的像素值。
background:背景位图的像素值。
sa:forground alpha。
da:background alpha。
【举例】
foreground = 0xffff0000; background = 0xff0000ff; 操作OT_TDE_BLEND_CMD_SRCOVER
fs = 1; fd = 1-sa;
sa = 1; (0xff/255归一化)
pixel = (foreground x fs + background x fd)
= (0xffff0000 x 1 + 0xff0000ff x (1-1))
= 0xffff0000
【注意事项】
CLUT相关格式不支持alpha混合。
【相关数据类型和接口】
无。
ot_tde_blend_opt¶
【说明】
alpha混合操作选项。
【定义】
typedef struct {
td_bool global_alpha_en;
td_bool pixel_alpha_en;
td_bool src1_alpha_premulti;
td_bool src2_alpha_premulti;
ot_tde_blend_cmd blend_cmd;
ot_tde_blend_mode src1_blend_mode;
ot_tde_blend_mode src2_blend_mode;
} ot_tde_blend_opt;
【成员】
【注意事项】
CLUT相关格式不支持alpha混合。
源1(Src1)是背景。
【相关数据类型和接口】
无。
ot_tde_csc_opt¶
【说明】
CSC参数选项。
【定义】
typedef struct {
td_bool src_csc_user_en;
td_bool src_csc_param_reload_en;
td_bool dst_csc_user_en;
td_bool dst_csc_param_reload_en;
td_phys_addr_t src_csc_param_addr;
td_s32 src_csc_param_len;
td_phys_addr_t dst_csc_param_addr;
td_s32 dst_csc_param_len;
} ot_tde_csc_opt;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_opt¶
【说明】
TDE操作属性结构体。
【定义】
typedef struct {
ot_tde_alpha_blending alpha_blending_cmd;
ot_tde_rop_mode rop_color;
ot_tde_rop_mode rop_alpha;
ot_tde_colorkey_mode colorkey_mode;
ot_tde_colorkey colorkey_value;
ot_tde_clip_mode clip_mode;
ot_tde_rect clip_rect;
ot_tde_deflicker_mode deflicker_mode;
td_bool resize;
ot_tde_filter_mode filter_mode;
ot_tde_mirror_mode mirror;
td_bool clut_reload;
td_u8 global_alpha;
ot_tde_out_alpha_from out_alpha_from;
td_u32 color_resize;
ot_tde_blend_opt blend_opt;
ot_tde_csc_opt csc_opt;
td_bool is_compress;
td_bool is_decompress;
} ot_tde_opt;
【成员】
【功能说明】
按位布尔运算,即ROP
ROP操作是指在将前景位图的RGB颜色分量和alpha分量值与背景位图的RGB颜色分量值和alpha分量值进行按位的布尔运算(包括按位与,按位或等),将结果输出,如ROP运算的搬移操作示意图(src1:R,G,B=0xFF,0xFF,0;src2:R,G,B=0,0,0xFF)图所示。
图 1 ROP运算的搬移操作示意图(src1:R,G,B=0xFF,0xFF,0;src2:R,G,B=0,0,0xFF)

注:单源rop运算仅支持S2,即单源S1的rop运算不支持。
Alpha混合操作
Alpha混合操作是指将前景位图和背景位图的像素值按照前景位图的alpha值进行加权求和,得到1个alpha混和后的输出位图,达到两个位图按照一定透明度叠加的效果。输出位图的alpha值取决于用户设置的alpha混合命令,具体的计算方法参考ot_tde_blend_cmd里的介绍。这里有两种叠加方式:
说明: 无论哪种模式,全局alpha都要参与叠加。
前景或背景位图数据是alpha预乘后的数据,这时需要选择前景或背景预乘alpha叠加模式。
前景或背景位图数据没有预乘,这时需要选择前景或背景非预乘alpha叠加模式。
ColorKey操作
Colorkey操作是指满足关键色(ColorKey)条件的像素不参与TDE运算,而是直接保留背景或前景的原始像素值。Colorkey设置需要根据像素格式对每个分量单独设置过滤条件。所有分量满足过滤条件的颜色称为关键色。Colorkey操作有2种模式:
缩放操作
当前景位图中的操作区域若和目的位图的操作区域大小不一致时,有以下两种情况:
若指定ot_tde_opt中resize为TRUE,即将前景的操作区域缩放到目的位图的操作区域大小,再和背景做其他运算。
若指定ot_tde_opt中resize为FALSE,则不会进行前景操作区域的缩放,而是将前景、背景和目的位图的操作区域(fg_rect、bg_rect、dst_rect)三者求最小,并将该最小区域作为三个位图的真正操作区域。
抗闪烁操作
抗闪烁操作指是否对前景位图的操作区域做抗闪处理,然后再和背景alpha叠加等运算,可通过ot_tde_opt中deflicker_mode指定。
镜像功能
镜像功能指将输出结果做水平(或/和垂直)方向上的反向。调用者可通过ot_tde_opt中mirror配置项指定。镜像可以分为:
水平镜像,按照水平方向进行对称拷贝。
垂直镜像,按照垂直方向进行对称拷贝。
水平垂直同时镜像,水平垂直同时对称拷贝。
颜色扩展或校正功能
颜色扩展功能指将精度低的色彩格式通过调色板(称为CLUT表)扩展到真彩色。如CLUT8格式的位图仅有256色,调用者可通过构造合适的CLUT表,将CLUT表首地址配置给位图SURFACE的clut_phys_addr属性,TDE就可以依靠检索CLUT表来实现CLUT8到真彩色ARGB的扩展。
为了实现颜色扩展,调用者需要配置的选项为:
位图SURFACE结构中的CLUT表首地址clut_phys_addr,该地址指向的内存必须物理连续。
位图SURFACE结构中的is_ycbcr_clut项,设置该CLUT表在RGB空间还是YC空间。
操作结构ot_tde_opt中的clut_reload项,表明是否需要硬件重新加载CLUT表。在第一次作颜色扩展操作(源为CLUT格式,目的为ARGB/AYCbCr格式)时,需要打开CLUT Reload标记。
输出位图的剪切功能,即clip功能
经过TDE处理的位图直接输出到目的位图的指定区域。而clip功能则可以在输出位图时,指定输出其中的一部分到目的位图,即对输出结果做了裁剪后才输出。clip支持两种裁剪模式:
输出alpha来源
有4种模式供选择:
来源于运算结果
来源于前景位图
来源于背景位图
来源于全局alpha
说明: 对于alpha叠加运算,则需要选择来源于运算结果模式。
color_resize色度调整
TDE支持在搬移过程中设置colorize功能,也就是给位图着色,相当于给每个分量乘以了一个系数。这个功能只对Src2有效。处理过程如下: Src.r = (Src.r * (colorize.r + 1)) >> 8 Src.g = (Src.g * (colorize.g + 1)) >> 8
Src.b = (Src.b * (colorize.b + 1)) >> 8 colorize为一个32bit的值,
colorize.r =(colorize>> 16)&0xff
colorize.g =(colorize>> 8)&0xff
colorize.b = colorize&0xff
注:前景位图、背景位图和目标位图信息。只支持光栅格式。
代码使用片段:
……
opt. alpha_blending_cmd = OT_TDE_ALPHA_BLENDING_COLORIZE; //使能color_resize功能
opt. color_resize = 0xffffff; //设置color_resize值
ss_tde_bit_blit(handle, &double_src, &opt);
……
【注意事项】
所有对光栅格式的运算,内部均转换为32位数据进行运算,再按照指定格式输出。
【相关数据类型和接口】
无。
ot_tde_mb_opt¶
【说明】
宏块surface的操作属性。
【定义】
typedef struct {
ot_tde_clip_mode clip_mode;
ot_tde_rect clip_rect;
td_bool is_deflicker;
ot_tde_mb_resize resize_en;
td_bool is_set_out_alpha;
td_u8 out_alpha;
} ot_tde_mb_opt;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_pattern_fill_opt¶
【说明】
模式填充操作信息定义。
【定义】
typedef struct {
ot_tde_alpha_blending alpha_blending_cmd;
ot_tde_rop_mode rop_color;
ot_tde_rop_mode rop_alpha;
ot_tde_colorkey_mode colorkey_mode;
ot_tde_colorkey colorkey_value;
ot_tde_clip_mode clip_mode;
ot_tde_rect clip_rect;
td_bool clut_reload;
td_u8 global_alpha;
ot_tde_out_alpha_from out_alpha_from;
td_u32 color_resize;
ot_tde_blend_opt blend_opt;
ot_tde_csc_opt csc_opt;
} ot_tde_pattern_fill_opt;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_rotate_angle¶
【说明】
旋转角度。
【定义】
typedef enum {
OT_TDE_ROTATE_CLOCKWISE_90 = 0, /* Rotate 90 degree clockwise */
OT_TDE_ROTATE_CLOCKWISE_180, /* Rotate 180 degree clockwise */
OT_TDE_ROTATE_CLOCKWISE_270, /* Rotate 270 degree clockwise */
OT_TDE_ROTATE_MAX
} ot_tde_rotate_angle;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_deflicker_level¶
【说明】
抗闪烁级别定义。
【定义】
typedef enum {
OT_TDE_DEFLICKER_LEVEL_AUTO = 0,
OT_TDE_DEFLICKER_LEVEL_LOW,
OT_TDE_DEFLICKER_LEVEL_MIDDLE,
OT_TDE_DEFLICKER_LEVEL_HIGH,
OT_TDE_DEFLICKER_LEVEL_MAX
} ot_tde_deflicker_level;
【成员】
【注意事项】
无。
【相关数据类型和接口】
无。
ot_tde_corner_rect_info¶
【说明】
角框属性信息定义。
【定义】
typedef struct {
td_u32 width;
td_u32 height;
td_u32 inner_color;
td_u32 outer_color;
} ot_tde_corner_rect_info;
【成员】
【注意事项】
角框内颜色和角框外颜色根据位图的格式填入一个像素值。
【相关数据类型和接口】
无。
ot_tde_corner_rect¶
【说明】
角框属性与角框绘制位置的定义。
【定义】
typedef struct {
ot_tde_rect *corner_rect_region;
ot_tde_corner_rect_info *corner_rect_info;
} ot_tde_corner_rect;
【成员】
|
corner_rect_region-> pos_x;x起始坐标 corner_rect_region-> pos_y;y起始坐标 |
|
角框属性,详见数据结构ot_tde_corner_rect_info介绍 |
【注意事项】
无
【相关数据类型和接口】
无
ot_tde_line¶
【说明】
Drd画线功能线条属性的定义。
【定义】
typedef struct {
td_s32 start_x;
td_s32 start_y;
td_s32 end_x;
td_s32 end_y;
td_u32 thick;
td_u32 color;
} ot_tde_line;
【成员】
【注意事项】
颜色值:根据位图的格式填入一个像素值
仅SS626V100支持该接口。
【相关数据类型和接口】
错误码¶
TDE API错误码如下所示。
表 1 TDE API错误码
Proc调试信息¶
调试命令¶
可通过命令cat /proc/umap/tde查看内存池使用状况与节点状态。
调试信息¶
# cat /proc/umap/tde
[TDE] Version: [V1.0.0.0 B00 Release], Build Time[Apr 14 2020, 16:15:57]
--------- tde memory pool info ---------
type total used
[unit 64] 68 1
[unit 96] 68 0
[unit 1664] 68 0
[unit 1792] 3 3
[total] 126K 5K
--------- tde node params info ---------
(src1_ctrl ): 0xa0180000
(src1_ch0_addr_high ): 0x00000000
(src1_ch0_addr_low ): 0x544ee000
(src1_ch1_addr_high ): 0x00000000
(src1_ch1_addr_low ): 0x00000000
(src1_ch0_stride ): 0x00000200
(src1_ch1_stride ): 0x00000000
(src1_imgsize ): 0x007f007f
(src1_fill ): 0x00000000
(src1_alpha ): 0x00000000
(src1_pix_offset ): 0x00000000
(src2_ctrl ): 0x00000000
(src2_ch0_addr_high ): 0x00000000
(src2_ch0_addr_low ): 0x00000000
(src2_ch1_addr_high ): 0x00000000
(src2_ch1_addr_low ): 0x00000000
(src2_ch0_stride ): 0x00000000
(src2_ch1_stride ): 0x00000000
(src2_imgsize ): 0x00000000
(src2_fill ): 0x00000000
(src2_alpha ): 0x00000000
(src2_pix_offset ): 0x00000000
(des_ctrl ): 0x801a0000
(des_ch0_addr_high ): 0x00000000
(des_ch0_addr_low ): 0x544fe000
(des_ch1_addr_high ): 0x00000000
(des_ch1_addr_low ): 0x00000000
(des_ch0_stride ): 0x00000200
(des_ch1_stride ): 0x00000200
(des_imgsize ): 0x007f007f
(des_alpha ): 0x000000ff
(des_crop_pos_st ): 0x00000000
(des_crop_pos_ed ): 0x00000000
(des_pix_offset ): 0x00000000
(src1_hsp ): 0x00000000
(src1_hloffset ): 0x00000000
(src1_hcoffset ): 0x00000000
(src1_vsp ): 0x00000000
(src1_vsr ): 0x00000000
(src1_voffset ): 0x00000000
(src1_zmeoreso ): 0x00000000
(src1_zmeireso ): 0x00000000
(src1_hpzme ): 0x00000000
(src1_hpzme_size ): 0x00000000
(src1_csc_idc0 ): 0x00000000
(src1_csc_idc1 ): 0x00000000
(src1_csc_odc0 ): 0x00000000
(src1_csc_odc1 ): 0x00000000
(src1_csc_p0 ): 0x00000000
(src1_csc_p1 ): 0x00000000
(src1_csc_p2 ): 0x00000000
(src1_csc_p3 ): 0x00000000
(src1_csc_p4 ): 0x00000000
(src1_dither_ctrl ): 0x00000000
(src2_hsp ): 0x00000000
(src2_hloffset ): 0x00000000
(src2_hcoffset ): 0x00000000
(src2_vsp ): 0x00000000
(src2_vsr ): 0x00000000
(src2_voffset ): 0x00000000
(src2_zmeoreso ): 0x00000000
(src2_zmeireso ): 0x00000000
(src2_hpzme ): 0x00000000
(src2_hpzme_size ): 0x00000000
(src2_csc_mux ): 0x00000000
(des_csc_idc0 ): 0x00000000
(des_csc_idc1 ): 0x00000000
(des_csc_odc0 ): 0x00000000
(des_csc_odc1 ): 0x00000000
(des_csc_p0 ): 0x00000000
(des_csc_p1 ): 0x00000000
(des_csc_p2 ): 0x00000000
(des_csc_p3 ): 0x00000000
(des_csc_p4 ): 0x00000000
(des_dither_ctrl ): 0x00000000
(des_dswn ): 0x00000000
(src2_rtt_ctrl ): 0x00000000
(cbmctrl ): 0x00000000
(cbmbkg ): 0x00000000
(cbmcolorize ): 0x00000000
(cbmalupara ): 0x00000000
(cbmkeypara ): 0x00000000
(cbmkeymin ): 0x00000000
(cbmkeymax ): 0x00000000
(cbmkeymask ): 0x00000000
(src1_cbmpara ): 0x00000000
(src1_cbmstpos ): 0x00000000
(src2_cbmpara ): 0x00000000
(src2_cbmstpos ): 0x00000000
(src1_zme_lhaddr_high ): 0x00000000
(src1_zme_lhaddr_low ): 0x00000000
(src1_zme_lvaddr_high ): 0x00000000
(src1_zme_lvaddr_low ): 0x00000000
(src1_zme_chaddr_high ): 0x00000000
(src1_zme_chaddr_low ): 0x00000000
(src1_zme_cvaddr_high ): 0x00000000
(src1_zme_cvaddr_low ): 0x00000000
(src2_zme_lhaddr_high ): 0x00000000
(src2_zme_lhaddr_low ): 0x00000000
(src2_zme_lvaddr_high ): 0x00000000
(src2_zme_lvaddr_low ): 0x00000000
(src2_zme_chaddr_high ): 0x00000000
(src2_zme_chaddr_low ): 0x00000000
(src2_zme_cvaddr_high ): 0x00000000
(src2_zme_cvaddr_low ): 0x00000000
(clut_addr_high ): 0x00000000
(clut_addr_low ): 0x00000000
【参数说明】
表 1 内存池信息
表 2 节点信息
实例¶
软件流程¶
说明: 本章以利用bitblit和color space实现图片动画旋转效果为例。在应用TDE前应保证TDE和GFBG驱动已经加载,视频输出设备处于工作状态。运行本示例至少需要给叠加位图层0分配1658880字节的显存,有关GFBG的加载请参见《GFBG开发指南》。
该例的软件实现流程如图1所示。
调用TDE刷新两个屏幕surface函数的实现过程如图2所示。
代码参考¶
详细的代码实现请见SDK的sample目录下的tde/sample_tde.c。













