前言

概述

本文档主要介绍TDE的API和数据类型以及Proc调试信息。

说明:

  • 本文以SS528V100为例,未有特殊说明,SS625V100、SS524V100、SS522V100、SS626V100与SS528V100内容一致;

  • 未有特殊说明,SS927V100与SS928V100内容一致。

产品版本

与本文档相对应的产品版本如下。

产品名称

产品版本

SS928

V100

SS626

V100

SS524

V100

SS522

V100

SS528

V100

SS625

V100

SS927

V100

读者对象

本文档(本指南)主要适用于以下工程师:

  • 技术支持工程师

  • 软件开发工程师

符号约定

在本文中可能出现下列标志,它们所代表的含义如下。

符号

说明

表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。

表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。

表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。

用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。

“须知”不涉及人身伤害。

对正文中重点信息的补充说明。

“说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。

修订记录

修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。

文档版本

发布日期

修改说明

00B01

2025-09-15

第1次临时版本发布。

概述

概述

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运行的过程当中,内部计算如果有需要做滤波会做滤波,而有些图片数据点不够导致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参考域说明

参考域

含义

目的

简要描述API的主要功能。

语法

列出调用API应包括的头文件以及API的原型声明。

参数

列出API的参数、参数说明及参数属性。

描述

简要描述API的工作过程。

返回值

列出API所有可能的返回值及其含义。

需求

列出API包含的头文件和API编译时要链接的库文件。

注意

列出使用API时应注意的事项。

举例

列出使用API的实例。

相关接口

列出与本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设备。

【参数】

无。

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

接口返回值

含义

TD_SUCCESS

成功。

OT_ERR_TDE_DEV_OPEN_FAILED

开启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命令是顺序执行。

【参数】

无。

【返回值】

返回值

描述

句柄

成功。

错误码

失败,其值为错误码。

【错误码】

接口返回值

含义

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_NO_MEM

内存不足。

【需求】

  • 头文件:ss_mpi_tde.h

  • 库文件:libss_tde.a

【注意】

  • 在调用此接口前应确保TDE设备处于打开状态。

  • 应判断返回值,确保获得1个正确的任务句柄。

  • TDE能够缓存的任务数由TDE的内存大小决定,当内存不够时会出现分配任务失败的情况,建议任务数最多不要超过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任务中的命令还没有完成,函数就会提前返回,但是任务中的命令还是会在未来的某个时刻完成。

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

is_sync

保留参数,暂不使用。

输入

is_block

阻塞标志。

TD_TRUE:阻塞。

TD_FALSE:非阻塞。

输入

time_out

超时时间,单位:ms。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

TD_SUCCESS

任务提交成功。

  • 阻塞任务:任务中的所有TDE命令已经完成。
  • 非阻塞任务:任务中的所有TDE命令都已经提交成功。

OT_ERR_TDE_JOB_TIMEOUT

等待超时。

OT_ERR_TDE_INTERRUPT

等待任务完成被打断。

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

【需求】

  • 头文件: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任务添加操作时,如果出现当前的操作参数非法等错误,程序需要返回退出时,可调用此接口取消当前任务及其下的所有操作。

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

TD_FAILURE

指定的任务已经提交无法取消。

【需求】

  • 头文件: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 bitblt 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任务已经完成,然后再进行软件的操作。

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

【返回值】

返回值

描述

0

指定的TDE任务完成。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_QUERY_TIMEOUT

指定的任务超时未完成。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

【需求】

  • 头文件: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的所有任务完成

【参数】

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

【需求】

  • 头文件:ss_mpi_tde.h

  • 库文件:libss_tde.a

【注意】

此接口为阻塞接口,会阻塞等待所有的TDE任务完成。

【举例】

无。

ss_tde_reset

【目的】

复位TDE所有状态。

【语法】

td_s32 ss_tde_reset(td_void);

【描述】

在调用此接口复位TDE所有状态。

【参数】

无。

【返回值】

返回值

描述

0

指定的TDE任务未完成

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

【需求】

  • 头文件: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为输出区域的内存中,可实现颜色填充的功能。

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

none_src

0源操作集合。

输入

fill_data

填充值。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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 智能角框属性

说明:

  • 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

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

none_src

0源操作集合。

输入

corner_rect_info

角框属性(宽、高、框内颜色、框外颜色)。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

dst_surface

目标内存。

输入

corner_rect

角框属性(宽、高、框内颜色、框外颜色)及角框位置。

输入

num

角框个数

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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)要求线宽为偶数。

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

dst_surface

目标surface,参考数据结构ot_tde_surface。

输入

line

单一线条属性,参考数据结构ot_tde_line。

输入

num

绘制线条个数。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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。

说明: 有效操作区域:指调用者指定的操作区域与位图的相交部分。

图 1 位图与位图中的操作区域的关系

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

single_src

单源操作集合。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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为输出区域的内存中。

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

single_src

单源操作集合。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

OT_ERR_TDE_MINIFICATION

缩小倍数过大。

OT_ERR_TDE_NOT_ALIGNED

Clut表的起始地址没有按照4BYTE对齐。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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

SS528V100

1920

SS625V100

1920

SS626V100

1920

SS524V100

1920

SS522V100

1920

SS928V100

2048

SS927V100

2048

注:当输入侧,输出侧,两侧宽度均大于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为输出区域的内存中。

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

single_src

单源操作集合。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

OT_ERR_TDE_MINIFICATION

缩小倍数过大。

OT_ERR_TDE_NOT_ALIGNED

Clut表的起始地址没有按照4BYTE对齐。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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操作。

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

single_src

单源操作集合。

输入

fill_color

填充色结构体。

输入

opt

操作属性结构体。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

OT_ERR_TDE_MINIFICATION

缩小倍数过大。

OT_ERR_TDE_NOT_ALIGNED

Clut表的起始地址没有按照4BYTE对齐。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

OT_ERR_TDE_CLIP_AREA

操作区域与clip区域没有交集,显示不会有更新。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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度顺时针旋转。

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

single_src

单源操作集合。

输入

rotate

旋转的角度

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件:ss_mpi_tde.h

  • 库文件:libss_tde.a

【注意】

  • SS528V100、SS625V100、SS524V100、SS522V100不支持该功能。

  • SS928V100支持该功能。

  • 支持的像素格式:

    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叠加等操作

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

double_src

双源操作集合。

输入

opt

运算参数设置结构。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

OT_ERR_TDE_MINIFICATION

缩小倍数过大。

OT_ERR_TDE_NOT_ALIGNED

Clut表的起始地址没有按照4BYTE对齐。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

OT_ERR_TDE_CLIP_AREA

操作区域与clip区域没有交集,显示不会有更新。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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操作

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

double_src

双源操作集合。

输入

fill_opt

运算参数设置结构。

输入

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

OT_ERR_TDE_NOT_ALIGNED

Clut表的起始地址没有按照4BYTE对齐。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

OT_ERR_TDE_CLIP_AREA

操作区域与clip区域没有交集,显示不会有更新。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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开关打开时,将做剪切拷贝;合并过程中也支持抗闪烁处理。

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

mb_src

宏块操作集合。

输入

opt

宏块操作属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

OT_ERR_TDE_MINIFICATION

缩小倍数过大。

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作。

OT_ERR_TDE_CLIP_AREA

操作区域与clip区域没有交集,显示不会有更新。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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剪切。

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

triple_src

三源操作集合。

输入

rop_code_color

颜色分量的ROP运算码。

输入

rop_code_alpha

Alpha分量的ROP运算码。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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操作,部分不做(保留背景)。

    • MaksBlending操作通过构造合适的Mask位图可实现:输出图像的部分区域是前背景的叠加结果,部分区域是背景图象,就像是对前背景Blending的结果做了一个clip剪切。通过构造Mask位图,还可实现任意形状的clip剪切。

【参数】

参数名称

描述

输入/输出

handle

TDE任务句柄。

输入

triple_src

三源操作集合。

输入

alpha

Alpha叠加时的全局alpha值。

输入

blend_mode

Alpha叠加模式选择。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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);

【描述】

获取抗闪烁级别。

【参数】

参数名称

描述

输入/输出

deflicker_level

抗闪烁级别枚举指针

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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);

【描述】

设置抗闪烁级别。

【参数】

参数名称

描述

输入/输出

deflicker_level

抗闪烁级别枚举。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

OT_ERR_TDE_NO_MEM

内存不足。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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。

【参数】

参数名称

描述

输入/输出

threshold_value

指向alpha判决阈值的指针

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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。

【参数】

参数名称

描述

输入/输出

threshold_value

alpha判决阈值

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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判决开关状态。

【参数】

参数名称

描述

输入/输出

threshold_en

指向alpha判决开关状态的指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

OT_ERR_TDE_NULL_PTR

参数中有空指针错误。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件: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。

【参数】

参数名称

描述

输入/输出

threshold_en

alpha判决开关状态。

TRUE:判决开关开;

FALSE:判决开关关。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,其值为错误码。

【错误码】

返回值

描述

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件:ss_mpi_tde.h

  • 库文件:libss_tde.a

【注意】

无。

【举例】

无。

ss_tde_enable_rgn_deflicker

【目的】

使能局部抗闪烁。

【语法】

td_s32 ss_tde_enable_rgn_deflicker(td_bool rgn_deflicker_en);

【描述】

使能或去使能局部抗闪烁。

【参数】

参数名称

描述

输入/输出

rgn_deflicker_en

使能抗闪烁标志

TRUE:使能;

FALSE:不使能。

输入

【错误码】

返回值

描述

OT_ERR_TDE_INVALID_PARAM

无效的参数设置。

TD_FAILURE

系统错误或未知错误。

【需求】

  • 头文件:ss_mpi_tde.h

  • 库文件:libss_tde.a

【注意】

  • 在不使能局部抗闪烁的情况下,ss_tde_quick_deflicker或ss_tde_bit_blit在对指定的区域进行抗闪烁时,不会参考区域周边的像素值;否则会参考。所以使能和不使能局部抗闪烁会使区域边缘得到不同的结果。当抗闪区域是整幅图片时,两者的效果相同。

  • 在使能局部抗闪烁的情况下,不支持源操作区域与目标操作区域位置和宽高不一样的搬移和缩放操作。

【举例】

无。

数据类型

映射表

本章详细描述了API中涉及的数据结构,如表1所示。

表 1 TDE数据结构映射表

函数

说明

ot_tde_color_format

TDE支持的光栅像素格式

ot_tde_mb_color_format

TDE支持的宏块像素格式

ot_tde_surface

位图surface结构体

ot_tde_mb_surface

宏块格式位图基本属性

ot_tde_rect

操作区域属性

ot_tde_none_src

无源操作结构体

ot_tde_single_src

单源操作结构体

ot_tde_mb_src

宏块源操作结构体

ot_tde_double_src

双源操作结构体

ot_tde_triple_src

三源操作结构体

ot_tde_alpha_blending

TDE逻辑运算类型

ot_tde_rop_mode

TDE支持的ROP操作类型

ot_tde_mirror_mode

图像镜像属性

ot_tde_clip_mode

剪切操作类型

ot_tde_mb_resize

宏块格式缩放类型

ot_tde_fill_color

图像填充色属性结构

ot_tde_colorkey_mode

Colorkey模式

ot_tde_colorkey_component

单个颜色分量的关键色属性

ot_tde_colorkey

Colorkey关键色属性

ot_tde_out_alpha_from

输出alpha来源类型

ot_tde_filter_mode

图像滤波模式

ot_tde_deflicker_mode

抗闪烁处理通道配置

ot_tde_blend_mode

用户自定义alpha混合模式

ot_tde_blend_cmd

Alpha混合命令

ot_tde_blend_opt

alpha混合操作选项

ot_tde_csc_opt

CSC参数选项

ot_tde_opt

TDE操作属性结构体

ot_tde_mb_opt

宏块Surface的操作属性

ot_tde_pattern_fill_opt

模式填充操作信息定义

ot_tde_rotate_angle

旋转角度

ot_tde_deflicker_level

抗闪烁级别定义

ot_tde_corner_rect_info

角框属性结构体

ot_tde_corner_rect

角框属性与角框绘制位置的定义

ot_tde_line

Drd画线功能线条属性的定义。

详细描述

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_RGB444

RGB444格式

OT_TDE_COLOR_FORMAT_BGR444

BGR444

OT_TDE_COLOR_FORMAT_RGB555

RGB555格式

OT_TDE_COLOR_FORMAT_BGR555

BGR555

OT_TDE_COLOR_FORMAT_RGB565

RGB565格式

OT_TDE_COLOR_FORMAT_BGR565

BGR565

OT_TDE_COLOR_FORMAT_RGB888

RGB888格式

OT_TDE_COLOR_FORMAT_BGR888

BGR888

OT_TDE_COLOR_FORMAT_ARGB4444

ARGB4444格式

OT_TDE_COLOR_FORMAT_ABGR4444

ABGR4444

OT_TDE_COLOR_FORMAT_RGBA4444

RGBA4444

OT_TDE_COLOR_FORMAT_BGRA4444

BGRA4444

OT_TDE_COLOR_FORMAT_ARGB1555

ARGB1555格式

OT_TDE_COLOR_FORMAT_ABGR1555

ABGR1555

OT_TDE_COLOR_FORMAT_RGBA1555

RGBA1555

OT_TDE_COLOR_FORMAT_BGRA1555

BGRA1555

OT_TDE_COLOR_FORMAT_ARGB8565

ARGB8565格式

OT_TDE_COLOR_FORMAT_ABGR8565

ABGR8565

OT_TDE_COLOR_FORMAT_RGBA8565

RGBA8565

OT_TDE_COLOR_FORMAT_BGRA8565

BGRA8565

OT_TDE_COLOR_FORMAT_ARGB8888

ARGB8888格式

OT_TDE_COLOR_FORMAT_ABGR8888

ABGR8888

OT_TDE_COLOR_FORMAT_RGBA8888

RGBA8888

OT_TDE_COLOR_FORMAT_BGRA8888

BGRA8888

OT_TDE_COLOR_FORMAT_RABG8888

RABG8888

OT_TDE_COLOR_FORMAT_CLUT1

CLUT1格式

OT_TDE_COLOR_FORMAT_CLUT2

CLUT2

OT_TDE_COLOR_FORMAT_CLUT4

CLUT4格式

OT_TDE_COLOR_FORMAT_CLUT8

CLUT8格式

OT_TDE_COLOR_FORMAT_ACLUT44

ACLUT44格式

OT_TDE_COLOR_FORMAT_ACLUT88

ACLUT88格式

OT_TDE_COLOR_FORMAT_A1

A1格式

OT_TDE_COLOR_FORMAT_A8

A8格式

OT_TDE_COLOR_FORMAT_YCbCr888

YCbCr888格式

OT_TDE_COLOR_FORMAT_AYCbCr8888

AYCbCr8888格式

OT_TDE_COLOR_FORMAT_YCbCr422

YCbCr422格式,YVYU排列

OT_TDE_COLOR_FORMAT_PKGVYUY

YCbCr422格式,VYUY排列

OT_TDE_COLOR_FORMAT_BYTE

BYTE格式

OT_TDE_COLOR_FORMAT_HALFWORD

HALFWORD格式

OT_TDE_COLOR_FORMAT_JPG_YCbCr400MBP

YCbCr400MBP

OT_TDE_COLOR_FORMAT_JPG_YCbCr422MBHP

YCbCr422MBHP

OT_TDE_COLOR_FORMAT_JPG_YCbCr422MBVP

YCbCr422MBVP

OT_TDE_COLOR_FORMAT_MP1_YCbCr420MBP

YCbCr420MBP

OT_TDE_COLOR_FORMAT_MP2_YCbCr420MBP

YCbCr420MBP

OT_TDE_COLOR_FORMAT_MP2_YCbCr420MBI

YCbCr420MBI

OT_TDE_COLOR_FORMAT_JPG_YCbCr420MBP

YCbCr420MBP

OT_TDE_COLOR_FORMAT_JPG_YCbCr444MBP

YCbCr444MBP

TDE_COLOR_FORMAT_MAX

无效的像素格式

【注意事项】

  • 目标格式不支持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;

【成员】

成员

描述

OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr400MBP

JPEG编码400宏块

OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr422MBHP

JPEG编码422宏块(水平采样一半)

OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr422MBVP

JPEG编码422宏块(垂直采样一半)

OT_TDE_MB_COLOR_FORMAT_MP1_YCbCr420MBP

MPEG-1编码420宏块

OT_TDE_MB_COLOR_FORMAT_MP2_YCbCr420MBP

MPEG-2编码420宏块

OT_TDE_MB_COLOR_FORMAT_MP2_YCbCr420MBI

MPEG-2编码420宏块(隔行)

OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr420MBP

JPEG编码420宏块

OT_TDE_MB_COLOR_FORMAT_JPG_YCbCr444MBP

JPEG编码444宏块

【注意事项】

上述提供的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_formatcolor_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;

【成员】

成员

描述

phys_addr

位图首地址。

phys_len

内存长度

color_format

位图格式。

height

位图高度。

width

位图宽度。

stride

位图跨度。

is_ycbcr_clut

Clut表是否位于YCbCr空间。

alpha_max_is_255

位图alpha最大值为255还是128。

support_alpha_ex_1555

是否使能1555的Alpha扩展。

当位图格式为ARGB1555时,该项有效。

如果该值为TD_FALSE,则位图像素要么全透要么全不透。

alpha0

Alpha0值。

取值范围:[0, 255]。

当位图格式为ARGB1555且support_alpha_ex_1555为TRUE时,该项有效。

在ARGB1555格式下,当像素的最高位为0时,选择该值作为alpha叠加的alpha值。

alpha1

Alpha1值。

取值范围:[0, 255]。

当位图格式为ARGB1555且support_alpha_ex_1555为TRUE时,该项有效。

在ARGB1555格式下,当像素的最高位为1时,选择该值作为alpha叠加的alpha值。

cbcr_phys_addr

CbCr分量地址。

cbcr_phys_len

CbCr内存长度

cbcr_stride

CbCr分量跨度。

clut_phys_addr

Clut表首地址,用作颜色扩展或颜色校正。

clut_phys_len

Clut表的内存长度

【注意事项】

  • 像素格式大于等于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;

【成员】

成员

描述

mb_color_format

宏块格式

y_addr

亮度块物理首地址

y_len

亮度内存长度

y_width

亮度块的宽度

y_height

亮度块的高度

y_stride

亮度块相邻两行的跨度

cbcr_phys_addr

色度块的物理首地址

cbcr_phys_len

色度内存长度

cbcr_stride

色度块相邻两行的跨度

【注意事项】

无。

【相关数据类型和接口】

无。

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;

【成员】

成员

描述

pos_x

操作区域的起始横坐标,以像素数为单位。

有效范围:[0, 位图宽度)。

pos_y

操作区域的起始纵坐标,以像素数为单位。

有效范围:[0, 位图高度)。

width

操作区域的宽度,以像素数为单位。

有效范围:(0, 4096]。

height

操作区域的高度,以像素数为单位。

有效范围:(0, 4096]。

【注意事项】

  • 操作区域与位图的关系如图1所示。

  • 若操作区域与位图部分相交,则取相交部分为实际参与操作的区域;若操作区域与位图不相交,则返回相应错误码。

【相关数据类型和接口】

无。

ot_tde_none_src

【说明】

TDE操作组合类型(按源的个数区分)。此为0源操作。

【定义】

typedef struct {
      ot_tde_surface  *dst_surface;
      ot_tde_rect *dst_rect;
} ot_tde_none_src;

【成员】

成员

描述

dst_surface

目标surface结构体。

dst_rect

目标区域。

【注意事项】

无。

【相关数据类型和接口】

无。

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;

【成员】

成员

描述

src_surface

源surface结构体。

dst_surface

目标surface结构体。

src_rect

源区域。

dst_rect

目标区域。

【注意事项】

无。

【相关数据类型和接口】

无。

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;

【成员】

成员

描述

mb_surface

宏块surface结构体。

dst_surface

目标surface结构体。

src_rect

源区域。

dst_rect

目标区域。

【注意事项】

无。

【相关数据类型和接口】

无。

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;

【成员】

成员

描述

bg_surface

背景surface结构体。

fg_surface

前景surface结构体。

dst_surface

目标surface结构体。

bg_rect

背景区域

fg_rect

前景区域

dst_rect

目标区域

【注意事项】

无。

【相关数据类型和接口】

无。

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;

【成员】

成员

描述

bg_surface

背景surface结构体。

fg_surface

前景surface结构体。

dst_surface

目标surface结构体。

bg_rect

背景区域。

fg_rect

前景区域。

dst_rect

目标区域。

mask_surface

Mask surface。

mask_rect

Mask 区域。

【注意事项】

无。

【相关数据类型和接口】

无。

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; 

【成员】

成员

描述

OT_TDE_ALPHA_BLENDING_NONE

无逻辑运算

OT_TDE_ALPHA_BLENDING_BLEND

Alpha叠加类型

OT_TDE_ALPHA_BLENDING_ROP

布尔运算类型

OT_TDE_ALPHA_BLENDING_COLORIZE

Colorize操作

OT_TDE_ALPHA_BLENDING_MAX

无效逻辑运算类型

【注意事项】

若进行两个位图的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;

【成员】

成员

描述

OT_TDE_ROP_BLACK

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

无效的ROP类型

注意: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_MIRROR_NONE

输出图像不进行镜像操作

OT_TDE_MIRROR_HOR

输出图像水平镜像

OT_TDE_MIRROR_VER

输出图像垂直镜像

OT_TDE_MIRROR_BOTH

输出图像水平+垂直镜像

OT_TDE_MIRROR_MAX

无效的镜像类型

【注意事项】

无。

【相关数据类型和接口】

无。

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_CLIP_MODE_NONE

输出结果不做剪切

OT_TDE_CLIP_MODE_INSIDE

区域内剪切模式

OT_TDE_CLIP_MODE_OUTSIDE

区域外剪切模式

OT_TDE_CLIP_MODE_MAX

无效的剪切模式

【注意事项】

无。

【相关数据类型和接口】

无。

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_MB_RESIZE_NONE

不进行缩放

OT_TDE_MB_RESIZE_QUALITY_LOW

宏块Suface的低质量缩放模式

OT_TDE_MB_RESIZE_QUALITY_MIDDLE

宏块Suface的中质量缩放模式

OT_TDE_MB_RESIZE_QUALITY_HIGH

宏块Suface的高质量缩放模式

OT_TDE_MB_RESIZE_MAX

无效的缩放模式

【注意事项】

无。

【相关数据类型和接口】

无。

ot_tde_fill_color

【说明】

图像填充色属性结构。

【定义】

typedef struct {
     ot_tde_color_format color_format;
     td_u32 color_value;
} ot_tde_fill_color;

【成员】

成员

描述

color_format

填充色格式

color_value

填充值

【注意事项】

填充值必须与填充格式相匹配,如某位图需填充为蓝色,可指定填充色格式为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;

【成员】

成员

描述

OT_TDE_COLORKEY_MODE_NONE

不做colorkey操作

OT_TDE_COLORKEY_MODE_FG

对前景位图进行colorkey操作

OT_TDE_COLORKEY_MODE_BG

对背景位图进行colorkey操作

OT_TDE_COLORKEY_MODE_MAX

无效的colorkey模式

【注意事项】

对前景位图进行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;

【成员】

成员

描述

min_component

分量关键色最小值

max_component

分量关键色最大值

is_component_out

分量关键色在范围内或范围外

is_component_ignore

分量是否忽略

component_mask

分量掩码

component_reserved~component_reserved2

保留值

【注意事项】

  • 结构成员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类型时各分量的关键色属性。

成员

描述

alpha

alpha分量关键色属性

red

Red分量关键色属性

green

Green分量关键色属性

blue

Blue分量关键色属性

结构ycbcr_colorkey成员:表示位图格式为AYCbCr类型时,各分量的关键色属性。

成员

描述

alpha

alpha分量关键色属性

y

Y分量关键色属性

cb

Cb分量关键色属性

cr

Cr分量关键色属性

结构clut_colorkey成员:表示位图格式为CLUT类型时,各分量的关键色属性。

成员

描述

alpha

alpha分量关键色属性

clut

CLUT分量关键色属性

联合类型ot_tde_colorkey成员,各分量的关键色属性。

成员

描述

argb_colorkey

当位图格式为ARGB类型时,关键色属性

ycbcr_colorkey

当位图格式为AYCbCr类型时,关键色属性

clut_colorkey

当位图格式为CLUT类型时,关键色属性

【注意事项】

不管当前位图是什么格式,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_OUT_ALPHA_FROM_NORM

输出图像的alpha来源于alpha blending的结果或者抗闪烁的结果

OT_TDE_OUT_ALPHA_FROM_BG

输出图像的alpha来源于背景位图

OT_TDE_OUT_ALPHA_FROM_FG

输出图像的alpha来源于前景位图

OT_TDE_OUT_ALPHA_FROM_GLOBALALPHA

输出图像的alpha来源于全局alpha

OT_TDE_OUT_ALPHA_FROM_MAX

无效值

【注意事项】

无。

【相关数据类型和接口】

无。

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_FILTER_MODE_COLOR

对颜色进行滤波

OT_TDE_FILTER_MODE_ALPHA

对alpha通道滤波

OT_TDE_FILTER_MODE_BOTH

对颜色和alpha通道同时滤波

OT_TDE_FILTER_MODE_NONE

不进行滤波

OT_TDE_FILTER_MODE_MAX

无效的滤波模式

【注意事项】

图像的缩放或抗闪都是一种滤波,故在图像缩放或(和)抗闪操作时,需要指明滤波模式。

【相关数据类型和接口】

无。

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_DEFLICKER_LEVEL_MODE_NONE

不做抗闪烁

OT_TDE_DEFLICKER_LEVEL_MODE_RGB

RGB分量抗闪烁

OT_TDE_DEFLICKER_LEVEL_MODE_BOTH

alpha分量抗闪烁

OT_TDE_DEFLICKER_LEVEL_MODE_MAX

无效的抗闪处理通道配置

【注意事项】

无。

【相关数据类型和接口】

无。

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分别为源位图像素和目的位图像素的系数,选择下表中不同的项代表不同的系数。

成员

描述

OT_TDE_BLEND_ZERO

0

OT_TDE_BLEND_ONE

1

OT_TDE_BLEND_SRC2COLOR

取sc

OT_TDE_BLEND_INVSRC2COLOR

取1-sc

OT_TDE_BLEND_SRC2ALPHA

sa

OT_TDE_BLEND_INVSRC2ALPHA

1-sa

OT_TDE_BLEND_SRC1COLOR

dc

OT_TDE_BLEND_INVSRC1COLOR

1-dc

OT_TDE_BLEND_SRC1ALPHA

da

OT_TDE_BLEND_INVSRC1ALPHA

1-da

OT_TDE_BLEND_SRC2ALPHASAT

min(1-da, sa)+1

OT_TDE_BLEND_MAX

无效的alpha混合模式

【注意事项】

在前景位图和背景位图作叠加运算时,可以分别设置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 parameteres. */
    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。

成员

描述

OT_TDE_BLEND_CMD_NONE

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

fs1.0-da ,fdsa

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

用户自己配置参数

OT_TDE_BLEND_CMD_MAX

无效的alpha混合命令

【举例】

图 1 blend操作的效果图

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;

【成员】

成员

描述

global_alpha_en

是否使能全局alpha

pixel_alpha_en

是否使能像素alpha

src1_alpha_premulti

是否使能Src1 alpha预乘

src2_alpha_premulti

是否使能Src2 alpha预乘

blend_cmd

alpha混合命令

src1_blend_mode

src1 blend模式选择,在blend_cmd = OT_TDE_BLENDCMD_CONFIG时有效

src2_blend_mode

src2 blend模式选择,在blend_cmd = OT_TDE_BLENDCMD_CONFIG时有效

【注意事项】

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

【成员】

成员

描述

src_csc_user_en

用户自定义ICSC参数使能

src_csc_param_reload_en

重新加载用户自定义ICSC参数使能

dst_csc_user_en

用户自定义OCSC参数使能

dst_csc_param_reload_en

重新加载用户自定义OCSC参数使能

src_csc_param_addr

ICSC参数地址,要求128bit对齐

src_csc_param_len

ICSC参数内存长度

dst_csc_param_addr

OCSC参数地址,要求128bit对齐

dst_csc_param_len

OCSC参数内存长度

【注意事项】

无。

【相关数据类型和接口】

无。

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;

【成员】

成员

描述

alpha_blending_cmd

逻辑运算类型

rop_color

颜色空间ROP类型

rop_alpha

Alpha的ROP类型

colorkey_mode

colorkey方式

colorkey_value

colorkey设置值

clip_mode

区域内作clip还是区域外作clip

clip_rect

clip区域定义

deflicker_mode

是否抗闪烁

resize

是否缩放

filter_mode

缩放或deflicker时使用的滤波模式

mirror

镜像类型

clut_reload

是否重新加载Clut表

global_alpha

全局alpha值

取值范围:[0, 255]

out_alpha_from

输出alpha来源

color_resize

colorize的值

blend_opt

Alpha混合操作选项

csc_opt

CSC参数选项

is_compress

压缩(tde的压缩输出仅用于与gfbg模块解压配套使用,外部设置无意义)

is_decompress

解压(设置无效)

【功能说明】

  • 按位布尔运算,即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操作是指满足关键色范围的像素不参与TDE运算。Colorkey设置需要根据像素格式对每个分量单独设置过滤条件。所有分量满足过滤条件的颜色称为关键色。Colorkey操作有2种模式:

    • 对前景进行colorkey,其设置的含义是前景位图中的关键色不参与运算,将背景位图保留,即背景位图相应区域直接拷贝至输出位图,如图2所示。

    • 对背景进行colorkey,其设置的含义是背景位图中的关键色区域直接拷贝至输出位图,其他区域是运算结果,如图3所示。

图 2 对前景位图进行colorkey运算的搬移操作示意图

图 3 对背景位图进行colorkey运算的搬移操作示意图

  • 缩放操作

    当前景位图中的操作区域若和目的位图的操作区域大小不一致时,有以下两种情况:

    • 若指定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支持两种裁剪模式:

    • 区域内裁剪:指仅更新clip指定范围内的区域为TDE运算结果。如图4所示,clip区域与目的位图的操作区域相交,区域内裁剪就导致仅将灰色区域更新为TDE运算结果,目标操作区域的其它地方保持不变。

    • 区域外裁剪:指TDE运算结果仅更新clip指定范围外的区域。如图5所示,clip区域与目的位图的操作区域相交,区域外裁剪就导致仅将灰色区域更新为TDE运算结果,clip区域内部的地方保持不变。

图 4 区域内clip示意图

图 5 区域外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;

【成员】

成员

描述

clip_mode

Clip模式选择:区域内作clip还是区域外作clip

clip_rect

Clip区域定义

is_deflicker

是否抗闪烁

resize_en

宏块缩放模式:不缩放/高质量缩放/中质量缩放/低质量缩放

is_set_out_alpha

是否用户指定输出结果位图的alpha值

如果不设置Alpha,则默认输出最大Alpha值

out_alpha

用户指定的输出结果位图的alpha值

【注意事项】

无。

【相关数据类型和接口】

无。

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;

【成员】

成员

描述

alpha_blending_cmd

逻辑运算类型

rop_color

颜色空间ROP类型

rop_alpha

alpha的ROP类型

colorkey_mode

color key方式

colorkey_value

color key值

clip_mode

clip模式

clip_rect

clip区域

clut_reload

是否重载clut表

global_alpha

全局alpha

out_alpha_from

输出alpha来源

color_resize

Colorize值

blend_opt

Blend操作选项

csc_opt

Csc参数选项

【注意事项】

无。

【相关数据类型和接口】

无。

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_ROTATE_CLOCKWISE_90

顺时针旋转90度

OT_TDE_ROTATE_CLOCKWISE_180

顺时针旋转180度

OT_TDE_ROTATE_CLOCKWISE_270

顺时针旋转270度

OT_TDE_ROTATE_MAX

无效参数

【注意事项】

无。

【相关数据类型和接口】

无。

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_DEFLICKER_LEVEL_AUTO

自适应,由TDE选择抗闪烁系数

OT_TDE_DEFLICKER_LEVEL_LOW

低级别抗闪烁

OT_TDE_DEFLICKER_LEVEL_MIDDLE

中级别抗闪烁

OT_TDE_DEFLICKER_LEVEL_HIGH

高级别抗闪烁

OT_TDE_DEFLICKER_LEVEL_MAX

无效的抗闪等级

【注意事项】

无。

【相关数据类型和接口】

无。

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;

【成员】

成员

描述

width

角框宽

height

角框高

inner_color

角框内颜色

outer_color

角框外颜色

【注意事项】

角框内颜色和角框外颜色根据图像的格式填入一个像素值。

【相关数据类型和接口】

无。

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

角框绘制区域指针:

corner_rect_region-> pos_x;x起始坐标

corner_rect_region-> pos_y;y起始坐标

corner_rect_region-> width;绘制宽

corner_rect_region-> height;绘制高

corner_rect_info

角框属性,详见数据结构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;

【成员】

成员

描述

start_x

起点横坐标 [-16383, 16383]

start_y

起点纵坐标 [-16383, 16383]

end_x

终点横坐标 [-16383, 16383]

end_y

终点纵坐标 [-16383, 16383]

thick

线条宽度

color

颜色值

【注意事项】

  • 颜色值:根据图像的格式填入一个像素值

  • 仅SS626V100支持该接口。

【相关数据类型和接口】

ss_tde_draw_line

错误码

TDE API错误码如下所示。

表 1 TDE API错误码

错误代码

宏定义

描述

0xa0648001

OT_ERR_TDE_DEV_NOT_OPEN

TDE设备未打开,API调用失败

0xa0648002

OT_ERR_TDE_DEV_OPEN_FAILED

开启TDE设备失败

0xa0648003

OT_ERR_TDE_NULL_PTR

参数中有空指针错误

0xa0648004

OT_ERR_TDE_NO_MEM

内存不足

0xa0648005

OT_ERR_TDE_INVALID_HANDLE

无效的任务句柄

0xa0648006

OT_ERR_TDE_INVALID_PARAM

无效的参数设置

0xa0648007

OT_ERR_TDE_NOT_ALIGNED

Clut表的起始地址没有按照4BYTE对齐

0xa0648008

OT_ERR_TDE_MINIFICATION

缩小倍数过大

0xa0648009

OT_ERR_TDE_CLIP_AREA

操作区域与clip区域没有交集,显示不会有更新

0xa064800a

OT_ERR_TDE_JOB_TIMEOUT

等待超时

0xa064800b

OT_ERR_TDE_UNSUPPORTED_OPERATION

不支持的操作

0xa064800c

OT_ERR_TDE_QUERY_TIMEOUT

指定的任务超时未完成

0xa064800d

OT_ERR_TDE_INTERRUPT

等待任务完成被打断

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 内存池信息

参数

描述

[unit 64]

cmd:当前软件节点

[unit 96]

job:当前提软件配置的任务个数

[unit 1664]

node:当前提交给TDE硬件的任务个数

[unit 1792]

系数表:TDE初始化后存放各类系数表

[total]

内存总数

表 2 节点信息

参数

描述

src1_ctrl

该操作配置的src1_ctrl寄存器的值。

src1_ch0_addr_high

该操作配置的src1_ch0_addr_high寄存器的值。

src1_ch0_addr_low

该操作配置的src1_ch0_addr_low寄存器的值。

src1_ch1_addr_high

该操作配置的src1_ch1_addr_high寄存器的值。

src1_ch1_addr_low

该操作配置的src1_ch1_addr_low寄存器的值。

src1_ch0_stride

该操作配置的src1_ch0_stride寄存器的值。

src1_ch1_stride

该操作配置的src1_ch1_stride寄存器的值。

src1_imgsize

该操作配置的src1_imgsize寄存器的值。

src1_fill

该操作配置的src1_fill寄存器的值。

src1_alpha

该操作配置的src1_alpha寄存器的值。

src1_pix_offset

该操作配置的src1_pix_offset寄存器的值。

src2_ctrl

该操作配置的src2_ctrl寄存器的值。

src2_ch0_addr_high

该操作配置的src2_ch0_addr_high寄存器的值。

src2_ch0_addr_low

该操作配置的src2_ch0_addr_low寄存器的值。

src2_ch1_addr_high

该操作配置的src2_ch1_addr_high寄存器的值。

src2_ch1_addr_low

该操作配置的src2_ch1_addr_low寄存器的值。

src2_ch0_stride

该操作配置的src2_ch0_stride寄存器的值。

src2_ch1_stride

该操作配置的src2_ch1_stride寄存器的值。

src2_imgsize

该操作配置的src2_imgsize寄存器的值。

src2_fill

该操作配置的src2_fill寄存器的值。

src2_alpha

该操作配置的src2_alpha寄存器的值。

src2_pix_offset

该操作配置的src2_pix_offset寄存器的值。

des_ctrl

该操作配置的des_ctrl寄存器的值。

des_ch0_addr_high

该操作配置的des_ch0_addr_high寄存器的值。

des_ch0_addr_low

该操作配置的des_ch0_addr_low寄存器的值。

des_ch1_addr_high

该操作配置的des_ch1_addr_high寄存器的值。

des_ch1_addr_low

该操作配置的des_ch1_addr_low寄存器的值。

des_ch0_stride

该操作配置的des_ch0_stride寄存器的值。

des_ch1_stride

该操作配置的des_ch1_stride寄存器的值。

des_imgsize

该操作配置的des_imgsize寄存器的值。

des_alpha

该操作配置的des_alpha寄存器的值。

des_crop_pos_st

该操作配置的des_crop_pos_st寄存器的值。

des_crop_pos_ed

该操作配置的des_crop_pos_ed寄存器的值。

des_pix_offset

该操作配置的des_pix_offset寄存器的值。

src1_hsp

该操作配置的src1_hsp寄存器的值。

src1_hloffset

该操作配置的src1_hloffset寄存器的值。

src1_hcoffset

该操作配置的src1_hcoffset寄存器的值。

src1_vsp

该操作配置的src1_vsp寄存器的值。

src1_vsr

该操作配置的src1_vsr寄存器的值。

src1_voffset

该操作配置的src1_voffset寄存器的值。

src1_zmeoreso

该操作配置的src1_zmeoreso寄存器的值。

src1_zmeireso

该操作配置的src1_zmeireso寄存器的值。

src1_hpzme

该操作配置的src1_hpzme寄存器的值。

src1_hpzme_size

该操作配置的src1_hpzme_size寄存器的值。

src1_csc_idc0

该操作配置的src1_csc_idc0寄存器的值。

src1_csc_idc1

该操作配置的src1_csc_idc1寄存器的值。

src1_csc_odc0

该操作配置的src1_csc_odc0寄存器的值。

src1_csc_odc1

该操作配置的src1_csc_odc1寄存器的值。

src1_csc_p0

该操作配置的src1_csc_p0寄存器的值。

src1_csc_p1

该操作配置的src1_csc_p1寄存器的值。

src1_csc_p2

该操作配置的src1_csc_p2寄存器的值。

src1_csc_p3

该操作配置的src1_csc_p3寄存器的值。

src1_csc_p4

该操作配置的src1_csc_p4寄存器的值。

src1_dither_ctrl

该操作配置的src1_dither_ctrl寄存器的值。

src2_hsp

该操作配置的src2_hsp寄存器的值。

src2_hloffset

该操作配置的src2_hloffset寄存器的值。

src2_hcoffset

该操作配置的src2_hcoffset寄存器的值。

src2_vsp

该操作配置的src2_vsp寄存器的值。

src2_vsr

该操作配置的src2_vsr寄存器的值。

src2_voffset

该操作配置的src2_voffset寄存器的值。

src2_zmeoreso

该操作配置的src2_zmeoreso寄存器的值。

src2_zmeireso

该操作配置的src2_zmeireso寄存器的值。

src2_hpzme

该操作配置的src2_hpzme寄存器的值。

src2_hpzme_size

该操作配置的src2_hpzme_size寄存器的值。

src2_csc_mux

该操作配置的src2_csc_mux寄存器的值。

des_csc_idc0

该操作配置的des_csc_idc0寄存器的值。

des_csc_idc1

该操作配置的des_csc_idc1寄存器的值。

des_csc_odc0

该操作配置的des_csc_odc0寄存器的值。

des_csc_odc1

该操作配置的des_csc_odc1寄存器的值。

des_csc_p0

该操作配置的des_csc_p0寄存器的值。

des_csc_p1

该操作配置的des_csc_p1寄存器的值。

des_csc_p2

该操作配置的des_csc_p2寄存器的值。

des_csc_p3

该操作配置的des_csc_p3寄存器的值。

des_csc_p4

该操作配置的des_csc_p4寄存器的值。

des_dither_ctrl

该操作配置的des_dither_ctrl寄存器的值。

des_dswn

该操作配置的des_dswn寄存器的值。

src2_rtt_ctrl

该操作配置的src2_rtt_ctrl寄存器的值。

cbmctrl

该操作配置的cbmctrl寄存器的值。

cbmbkg

该操作配置的cbmbkg寄存器的值。

cbmcolorize

该操作配置的cbmcolorize寄存器的值。

cbmalupara

该操作配置的cbmalupara寄存器的值。

cbmkeypara

该操作配置的cbmkeypara寄存器的值。

cbmkeymin

该操作配置的cbmkeymin寄存器的值。

cbmkeymax

该操作配置的cbmkeymax寄存器的值。

cbmkeymask

该操作配置的cbmkeymask寄存器的值。

src1_cbmpara

该操作配置的src1_cbmpara寄存器的值。

src1_cbmstpos

该操作配置的src1_cbmstpos寄存器的值。

src2_cbmpara

该操作配置的src2_cbmpara寄存器的值。

src2_cbmstpos

该操作配置的src2_cbmstpos寄存器的值。

src1_zme_lhaddr_high

该操作配置的src1_zme_lhaddr_high寄存器的值。

src1_zme_lhaddr_low

该操作配置的src1_zme_lhaddr_low寄存器的值。

src1_zme_lvaddr_high

该操作配置的src1_zme_lvaddr_high寄存器的值。

src1_zme_lvaddr_low

该操作配置的src1_zme_lvaddr_low寄存器的值。

src1_zme_chaddr_high

该操作配置的src1_zme_chaddr_high寄存器的值。

src1_zme_chaddr_low

该操作配置的src1_zme_chaddr_low寄存器的值。

src1_zme_cvaddr_high

该操作配置的src1_zme_cvaddr_high寄存器的值。

src1_zme_cvaddr_low

该操作配置的src1_zme_cvaddr_low寄存器的值。

src2_zme_lhaddr_high

该操作配置的src2_zme_lhaddr_high寄存器的值。

src2_zme_lhaddr_low

该操作配置的src2_zme_lhaddr_low寄存器的值。

src2_zme_lvaddr_high

该操作配置的src2_zme_lvaddr_high寄存器的值。

src2_zme_lvaddr_low

该操作配置的src2_zme_lvaddr_low寄存器的值。

src2_zme_chaddr_high

该操作配置的src2_zme_chaddr_high寄存器的值。

src2_zme_chaddr_low

该操作配置的src2_zme_chaddr_low寄存器的值。

src2_zme_cvaddr_high

该操作配置的src2_zme_cvaddr_high寄存器的值。

src2_zme_cvaddr_low

该操作配置的src2_zme_cvaddr_low寄存器的值。

clut_addr_high

该操作配置的clut_addr_high寄存器的值。

clut_addr_low

该操作配置的clut_addr_low寄存器的值。

实例

软件流程

说明: 本章以利用bitblit和color space实现图片动画旋转效果为例。在应用TDE前应保证TDE和GFBG驱动已经加载,视频输出设备处于工作状态。运行本示例至少需要给叠加图像层0分配1658880字节的显存,有关GFBG的加载请参见《GFBG开发指南》。

该例的软件实现流程如图1所示。

图 1 软件实现的流程图(主流程)

注:“调用TDE刷新两个屏幕surface”的详细流程请参见图2

调用TDE刷新两个屏幕surface函数的实现过程如图2所示。

图 2 调用TDE刷新两个屏幕surface函数的实现过程

代码参考

详细的代码实现请见SDK的sample目录下的tde/sample_tde.c。