MI SCL API

Version 3.0


1. 概述


1.1. 模块说明

SCL将原始画面缩放到各个output port 指定分辨率。每个scl按照输入数据源的类型划分成不同的Device, 每一个output port 端口有crop/scaling/mirror/flip/pixel 转换功能。


1.2. 流程框图

图 1‑1:Tiramisu框图

MI_SCL 总共有6个scl 硬件, 按照输入源的类型,划分成不同的Device。

Device Id Input port输入源类型
Device0 只支持和MI_ISP output port0 realtime 连接
Device1 支持从Dram读取数据, 数据类型只支持YUV420/YUV422格式 支持MI_JPD realtime 绑定
Device2 只支持和MI_VIF YUV Realtime 连接
Device3 只支持从Dram读取数据, 数据类型只支持YUV420/YUV422格式, 只可以使用E_MI_SCL_HWSCL5, 支持Rotation, 做rotation的时候功能限制见MI_SCL_SetChnParam 支持E_MI_SYS_PIXEL_FRAME_YUV_TILE_420 压缩格式输出到MI_DISP

HWSclId 规格

HWSclId YUV422 Max width 非YUV422 Max width Pixel format Bind type
0 8192 4608 YUV42O/YUV422/ARGB Frame mode Realtime Bind Venc(JPEG) Ring/HW_AUTOSYNC Bind Venc(h26x)
1 8192 4608 YUV42O/YUV422/ARGB 同Port0
2 3840 3840 YUV42O/YUV422/ARGB 同Port0
3 3840 3840 YUV42O/YUV422/ARGB 同Port0
4 3840 3840 YUV42O/YUV422/ARGB 同Port0
5 3840 3840 YUV42O/YUV422/ARGB TILE_420 同Port0
  • 注意

    • 相同的HWSclId不可以跨Device使用。

    • output portid按照MI_SCL_CreateDevice 时设置u32NeedUseHWOutPortMask从低位到高位依次和HWSCLID 映射。

    • output port和后端realtime/ring/hw_autosync 绑定时,后端仅支持和一个output port id 连接。可以支持多个channel 但是同一个output port id 绑定realtime或者 hw_autosync(h26x)。


1.3. 关键字说明

  • Device

    Device 由固定的input 类型,和用户分配的HWSclId 组成。

  • Channel

    一个Device可以分时复用为多个通道, 每个通道为一个channel。

  • Input Port

    Channel上的输入端口,每个Device支持的输入类型请参考流程框图。

  • Output Port

    Device上的输出端口,输出端口和Device 的HWSclId 一一对应。


2. API 参考


2.1. 功能模块API

API名 功能
MI_SCL_CreateDevice 创建SCL设备
MI_SCL_DestroyDevice 销毁SCL设备
MI_SCL_CreateChannel 创建SCL 通道
MI_SCL_DestroyChannel 销毁SCL 通道
MI_SCL_SetChnParam 设置通道属性
MI_SCL_GetChnParam 获取通道属性
MI_SCL_SetInputPortCrop 设置通道input 端口crop
MI_SCL_GetInputPortCrop 获取通道input端口crop 信息
MI_SCL_StartChannel 启动通道
MI_SCL_StopChannel 禁用通道
MI_SCL_SetOutputPortParam 设置output 端口参数
MI_SCL_GetOutputPortParam 获取output 端口参数
MI_SCL_EnableOutputPort 使能output 端口
MI_SCL_DisableOutputPort 禁用output 端口
MI_SCL_StretchBuf 缩放、拉伸、裁剪指定内存中的图像数据

2.2. MI_SCL_CreateDevice

  • 功能

    创建一个SCL设备。

  • 语法

    MI_S32 MI_SCL_CreateDevice(MI_SCL_DEV DevId, MI_SCL_DevAttr_t *pstSclDevAttr)
    
  • 形参

    参数名称 描述 输入/输出
    DevId SCL 设备号。 输入
    pstSclDevAttr Scl 设备属性。 输入
  • 返回值

    • MI_OK 成功。

    • 非0 失败,详情参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    • 每个Device的特性参考1.2章节中 注意说明。

    • stCreateDevAttr.u32NeedUseHWOutPortMask = E_MI_SCL_HWSCL2| E_MI_SCL_HWSCL3| E_MI_SCL_HWSCL4;

      每个channel的输出端口和Device上的HWSCL ID之间对应关系为:

      Port0 -> HWSCL2

      Port1 -> HWSCL3

      Port2 -> HWSCL4

      Portid 与HWSCL bitmask 从低到高对应。

    • 有MI_VDEC使用场景,Device3 会被内部创建使用,其它Device不能再使用HWSCL5;用户创建Device3对应的channel 使用。

  • 举例

    MI_SCL 初始化流程:

    MI_S32 ST_SclModuleInit(MI_SCL_DEV SclDevId)
    {
        ST_SclDevAttr_t *pstSclDevAttr= &gstSclModule.stSclDevAttr[SclDevId];
        MI_SCL_CHANNEL SclChnId = 0;
        MI_SCL_PORT  SclOutPortId =0;
    
        MI_SCL_DevAttr_t stCreateDevAttr;
        memset(&stCreateDevAttr, 0x0, sizeof(MI_SCL_DevAttr_t));
        stCreateDevAttr.u32NeedUseHWOutPortMask=E_MI_SCL_HWSCL2|E_MI_SCL_HWSCL3| E_MI_SCL_HWSCL4;
        MI_SCL_CreateDevice((MI_SCL_DEV)SclDevId, &stCreateDevAttr);
    
        MI_SCL_ChannelAttr_t  stSclChnAttr;
        memset(&stSclChnAttr, 0x0, sizeof(MI_SCL_ChannelAttr_t));
    
        MI_SCL_CreateChannel((MI_SCL_DEV)SclDevId, SclChnId, &stSclChnAttr);
    
        if(pstSclChnAttr->stSclInPortAttr[0].stInputCropWin.u16Width !=0
            && pstSclChnAttr->stSclInPortAttr[0].stInputCropWin.u16Height !=0)
        {
            MI_SCL_SetInputPortCrop((MI_SCL_DEV)SclDevId, SclChnId, &pstSclChnAttr->stSclInPortAttr[0].stInputCropWin);
        }
    
        MI_SCL_ChnParam_t  stSclChnParam;
        memset(&stSclChnParam, 0x0, sizeof(MI_SCL_ChnParam_t));
        stSclChnParam.eRot = pstSclChnAttr->eRotate;
        MI_SCL_SetChnParam((MI_SCL_DEV)SclDevId, SclChnId, &stSclChnParam);
    
        MI_SCL_StartChannel((MI_SCL_DEV)SclDevId, SclChnId);
    
        for(SclOutPortId=0; SclOutPortId<ST_MAX_ISP_OUTPORT_NUM; SclOutPortId++)
        {
            ST_PortAttr_t *pstSclOutputAttr = &pstSclChnAttr->stSclOutPortAttr[SclOutPortId];
            if(pstSclOutputAttr->bUsed == TRUE)
            {
                MI_SCL_OutPortParam_t  stSclOutputParam;
                memset(&stSclOutputParam, 0x0, sizeof(MI_SCL_OutPortParam_t));
                memcpy(&stSclOutputParam.stSCLOutCropRect, &pstSclOutputAttr->stOrigPortCrop, sizeof(MI_SYS_WindowRect_t));
                memcpy(&stSclOutputParam.stSCLOutputSize, &pstSclOutputAttr->stOrigPortSize, sizeof(MI_SYS_WindowSize_t));
                stSclOutputParam.ePixelFormat = pstSclOutputAttr->ePixelFormat;
                stSclOutputParam.bMirror = pstSclOutputAttr->bMirror;
                stSclOutputParam.bFlip = pstSclOutputAttr->bFlip;
    
                MI_SCL_SetOutputPortParam((MI_SCL_DEV)SclDevId, SclChnId, SclOutPortId, &stSclOutputParam);
    
                MI_SCL_EnableOutputPort((MI_SCL_DEV)SclDevId, SclChnId, SclOutPortId);
            }
        }
    
        return MI_SUCCESS;
    }
    

    MI_SCL 去初始化流程:

    MI_S32 ST_SclModuleUnInit(MI_SCL_DEV SclDevId)
    {
        ST_SclDevAttr_t *pstSclDevAttr= &gstSclModule.stSclDevAttr[SclDevId];
        MI_SCL_CHANNEL SclChnId = 0;
        MI_SCL_PORT  SclOutPortId =0;
    
        ST_SclChannelAttr_t  *pstSclChnAttr = &pstSclDevAttr->stSclChnlAttr[SclChnId];
    
        for(SclOutPortId=0; SclOutPortId<ST_MAX_SCL_OUTPORT_NUM; SclOutPortId++)
        {
            MI_SCL_DisableOutputPort((MI_SCL_DEV)SclDevId, SclChnId, SclOutPortId);
        }
    
        MI_SCL_StopChannel((MI_SCL_DEV)SclDevId, SclChnId);
        MI_SCL_DestroyChannel((MI_SCL_DEV)SclDevId, SclChnId);
    
        MI_SCL_DestroyDevice((MI_SCL_DEV)SclDevId);
    
        return MI_SUCCESS;
    }
    

2.3. MI_SCL_DestroyDevice

  • 功能

    销毁一个SCL 设备。

  • 语法

    MI_S32 MI_SCL_DestroyDevice(MI_SCL_DEV DevId)
    
  • 形参

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
  • 返回值

    • MI_OK 成功。

    • 非0 失败,详情参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    需要先禁用掉设备上所有的输出端口和通道,否则会返回失败。

  • 举例

    参考 MI_SCL_CreateDevice举例。

  • 相关主题

    MI_SCL_CreateDevice


2.4. MI_SCL_CreateChannel

  • 功能

    设备上创建一个通道。

  • 语法

    MI_S32 MI_SCL_CreateChannel(MI_SCL_DEV DevId, MI_SCL_CHANNEL ChnId, MI_SCL_ChannelAttr_t *pstChnAttr)
    
  • 形参

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
    ChnId SCL 通道号,取值范围(0~31)。 输入
    pstChnAttr SCL 通道属性 输入
  • 返回值

    • MI_OK 成功。

    • 非0 失败,详情参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    需要先创建设备才能创建通道。

  • 举例

    参考 MI_SCL_CreateDevice举例。

  • 相关主题

    MI_SCL_DestroyChannel


2.5. MI_SCL_DestroyChannel

  • 功能

    销毁设备上的一个通道。

  • 语法

    MI_S32 MI_SCL_DestroyChannel(MI_SCL_DEV DevId, MI_SCL_CHANNEL ChnId)
    
  • 形参

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
    ChnId SCL 通道号 输入
  • 返回值

    • MI_OK 成功。

    • 非0 失败,详情参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    需要关掉通道上的所有输出端口,才能销毁通道。

  • 举例

    参考 MI_SCL_CreateDevice举例。

  • 相关主题

    MI_SCL_CreateChannel


2.6. MI_SCL_SetChnParam

  • 功能

    动态设置通道参数。

  • 语法

    MI_S32 MI_SCL_SetChnParam(MI_SCL_DEV DevId, MI_SCL_CHANNEL ChnId, MI_SCL_ChnParam_t *pstChnParam)
    
  • 形参

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
    ChnId SCL 通道号 输入
    pstChnParam 通道参数 输入
  • 返回值

    • MI_OK 成功。

    • 非0 失败,详情参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    • 通道已经在运行的情况下,需要改变通道参数, 需要先使用MI_SCL_StopChannel](#211-mi_scl_stopchannel)将通道停下,清除缓存数据。

    • Tiramisu 系列芯片只有Device3 支持rotation。

    • 当SCL Dev3 设置rotation 90、180、270 时,output端口仅支持rotation功能,不支持crop/scaling/pixel format转换/Mirror/Flip。

    • rot时不支持MI_RGN attach 叠加osd/cover。

  • 举例

    参考 MI_SCL_CreateDevice举例。

  • 相关主题

    MI_SCL_GetChnParam


2.7. MI_SCL_GetChnParam

  • 功能

    获取通道参数。

  • 语法

    MI_S32 MI_SCL_GetChnParam(MI_SCL_DEV DevId, MI_SCL_CHANNEL ChnId, MI_SCL_ChnParam_t *pstChnParam)
    
  • 形参

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
    ChnId SCL 通道号 输入
    pstChnParam SCL 通道参数 输出
  • 返回值

    • MI_OK 成功。

    • 非0 失败,详情参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    在没有设置的情况下,获取到的参数都为0。

  • 相关主题

    MI_SCL_SetChnParam


2.8. MI_SCL_SetInputPortCrop

  • 功能

    在输入端口设置裁剪区域。

  • 语法

    MI_S32 MI_SCL_SetInputPortCrop(MI_SCL_DEV DevId, MI_SCL_CHANNEL ChnId, MI_SYS_WindowRect_t *pstCropInfo)
    
  • 形参

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
    ChnId SCL 通道号 输入
    pstCropInfo 裁剪区域 输入
  • 返回值

    • MI_OK 成功。

    • 非0 失败,详情参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    只有输入端口是从DRAM 读取数据时,该设置才能生效。

  • 举例

    参考 MI_SCL_CreateDevice举例。

  • 相关主题

    MI_SCL_GetInputPortCrop


2.9. MI_SCL_GetInputPortCrop

  • 功能

    获取通道输入端口裁剪区域。

  • 语法

    MI_S32 MI_SCL_GetInputPortCrop(MI_SCL_DEV DevId, MI_SCL_CHANNEL ChnId, MI_SYS_WindowRect_t *pstCropInfo)
    
  • 形参

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
    ChnId SCL 通道号 输入
    pstCropInfo 裁剪区域 输出
  • 返回值

    • MI_OK 成功。

    • 非0 失败,详情参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    当不需要裁剪时, 获取到的是输入端口分辨率

  • 相关主题

    MI_SCL_SetInputPortCrop


2.10. MI_SCL_StartChannel

  • 功能

    启用设备上的一个通道。

  • 语法

    MI_S32 MI_SCL_StartChannel(MI_SCL_DEV DevId, MI_SCL_CHANNEL ChnId)
    
  • 形参

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
    ChnId SCL 通道号 输入
  • 返回值

    • MI_OK 成功。

    • 非0 失败,详情参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    MI_SCL_StopChannel成对调用。

  • 举例

    参考MI_SCL_CreateDevice举例。

  • 相关主题

    MI_SCL_StopChannel


2.11. MI_SCL_StopChannel

  • 功能

    停用设备上的一个通道。

  • 语法

    MI_S32 MI_SCL_StopChannel(MI_SCL_DEV DevId, MI_SCL_CHANNEL ChnId)
    
  • 形参

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
    ChnId SCL 通道号 输入
  • 返回值

    • MI_OK 成功。

    • 非0 失败,详情参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    在通道创建的情况下,都可以停下通道, 通道停下所有的输出端口都不会有数据输出。

  • 举例

    参考 MI_SCL_CreateDevice举例。

  • 相关主题

    MI_SCL_StartChannel


2.12. MI_SCL_SetOutputPortParam

  • 描述

    设置通道输出端口参数。

  • 语法

    MI_S32 MI_SCL_SetOutputPortParam(MI_SCL_DEV DevId, MI_SCL_CHANNEL ChnId, MI_SCL_PORT PortId, MI_SCL_OutPortParam_t *pstOutPortParam)
    
  • 参数

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
    ChnId SCL 通道号 输入
    PortId 输出端口号 输入
    pstOutPortParam 输出端口参数 输入
  • 返回值

    • MI_OK成功。

    • 非MI_OK失败,参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    在输出端口已经启用的情况下,需要改变输出参数,需要先调用MI_SCL_DisableOutputPort](#215-mi_scl_disableoutputport) 禁用端口,再来设置参数,然后再启用输出端口。

  • 举例

    参考 MI_SCL_CreateDevice举例。

  • 相关主题

    MI_SCL_GetOutputPortParam


2.13. MI_SCL_GetOutputPortParam

  • 描述

    获取输出端口参数。

  • 语法

    MI_S32 MI_SCL_GetOutputPortParam(MI_SCL_DEV DevId, MI_SCL_CHANNEL ChnId, MI_SCL_PORT PortId, MI_SCL_OutPortParam_t *pstOutPortParam)
    
  • 参数

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
    ChnId SCL 通道号 输入
    PortId SCL 输出端口号 输入
    pstOutPortParam SCL 输出端口参数 输出
  • 返回值

    • MI_OK成功。

    • 非MI_OK失败,参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 相关主题

    MI_SCL_SetOutputPortParam


2.14. MI_SCL_EnableOutputPort

  • 描述

    使能输出端口。

  • 语法

    MI_S32 MI_SCL_EnableOutputPort(MI_SCL_DEV DevId, MI_SCL_CHANNEL ChnId, MI_SCL_PORT PortId)
    
  • 参数

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
    ChnId SCL 通道号 输入
    PortId SCL 输出端口号 输入
  • 返回值

    • MI_OK成功。

    • 非MI_OK失败,参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    MI_SCL_DisableOutputPort 成对调用。

  • 举例

    参考 MI_SCL_CreateDevice举例。

  • 相关主题

    MI_SCL_DisableOutputPort


2.15. MI_SCL_DisableOutputPort

  • 描述

    禁用输出端口。

  • 语法

    MI_S32 MI_SCL_DisableOutputPort(MI_SCL_DEV DevId, MI_SCL_CHANNEL ChnId, MI_SCL_PORT PortId)
    
  • 参数

    参数名称 描述 输入/输出
    DevId SCL 设备号 输入
    ChnId SCL 通道号 输入
    PortId 输出端口号 输入
  • 返回值

    • MI_OK成功。

    • 非MI_OK失败,参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    MI_SCL_EnableOutputPort 成对调用。

  • 举例

    参考MI_SCL_CreateDevice举例。

  • 相关主题

    MI_SCL_EnableOutputPort


2.16. MI_SCL_StretchBuf

  • 描述

    缩放、拉伸、裁剪指定内存中的图像数据。

  • 语法

    MI_S32 MI_SCL_StretchBuf(MI_SCL_DirectBuf_t *pstSrcBuf, MI_SYS_WindowRect_t *pstSrcCrop,MI_SCL_DirectBuf_t *pstDstBuf, MI_SCL_FilterType_e eFilterType)
    
  • 参数

    参数名称 描述 输入/输出
    pstSrcBuf 源数据buffer参数指针
    pstSrcCrop 源数据裁剪区域
    pstDstBuf 输出buffer参数指针
    eFilterType Scl 使用滤波器类型
  • 返回值

    • MI_OK成功。

    • 非MI_OK失败,参照错误码

  • 依赖

    • 头文件:mi_scl_datatype.h、mi_scl.h

    • 库文件:

  • 注意

    • 该API使用的是Device3, 需要提前创建Device3。

    • 该接口是阻塞形式,这帧数据做完才会结束。

  • 相关主题

    MI_SCL_CreateDevice


3. SCL 数据类型


3.1. 数据类型定义

数据类型 描述
MI_SCL_DEV SCL设备ID
MI_SCL_CHANNEL SCL 通道ID
MI_SCL_PORT SCL 输出端口ID
MI_SCL_HWSclId_e SCL 输出端口对应硬件scaling ID
MI_SCL_DevAttr_t SCL 设备属性
MI_SCL_ChannelAttr_t SCL 通道静态属性
MI_SCL_ChnParam_t SCL 通道动态属性
MI_SCL_OutPortParam_t SCL 输出端口参数
MI_SCL_FilterType_e SCL 滤波类型
MI_SCL_DirectBuf_t SCL操作指定buffer 参数类型

3.2. MI_SCL_DEV

  • 说明

    定义SCL 设备ID类型。

  • 定义

    typedef MI_U32 MI_SCL_DEV;
    

3.3. MI_SCL_CHANNEL

  • 说明

    定义SCL 通道ID类型。

  • 定义

    typedef MI_U32 MI_SCL_CHANNEL;
    

3.4. MI_SCL_PORT

  • 说明

    定义SCL 输出端口ID类型。

  • 定义

    typedef MI_U32 MI_SCL_PORT;
    

3.5. MI_SCL_HWSclId_e

  • 说明

    SCL设备使用的硬件scaler Id 枚举。

  • 定义

    typedef enum
    
    {
    
        E_MI_SCL_HWSCLID_INVALID= 0,
    
        E_MI_SCL_HWSCL0 = 0x0001,
    
        E_MI_SCL_HWSCL1 = 0x0002,
    
        E_MI_SCL_HWSCL2 = 0x0004,
    
        E_MI_SCL_HWSCL3 = 0x0008,
    
        E_MI_SCL_HWSCL4 = 0x0010,
    
        E_MI_SCL_HWSCL5 = 0x0020,
    
        E_MI_SCL_HWSCL_MAX = 0xffff,
    
    }MI_SCL_HWSclId_e;
    
  • 相关数据类型及接口

    MI_SCL_DevAttr_t


3.6. MI_SCL_DevAttr_t

  • 说明

    SCL 设备属性。

  • 定义

    typedef struct MI_SCL_DevAttr_s
    
    {
    
        MI_U32 u32NeedUseHWOutPortMask;
    
    }MI_SCL_DevAttr_t;
    
  • 成员

    成员名称 描述
    u32NeedUseHWOutPortMask Device需要使用的Scaler id。
  • 注意事项

    • MI_SCL_HWSclId_e成员bit mask组成。

    • 每个HW scl id 特点参考1.2.1章节,HW sclid 规格,按照场景需求选择。

  • 相关数据类型及接口

    MI_SCL_CreateDevice


3.7. MI_SCL_ChannelAttr_t

  • 说明

    Scl 通道属性。

  • 定义

    typedef struct MI_SCL_ChannelAttr_s
    
    {
    
        MI_U32 u32Reserved;
    
    }MI_SCL_ChannelAttr_t;
    
  • 成员

    成员名称 描述
    u32Reserved 预留参数。
  • 注意事项

    Tiramisu系列芯片没有通道静态设置参数,可直接设置0。

  • 相关数据类型及接口

    MI_SCL_CreateChannel


3.8. MI_SCL_ChnParam_t

  • 说明

    SCL通道动态参数类型

  • 定义

    typedef struct MI_SCL_ChnParam_s
    
    {
    
        MI_SYS_Rotate_e eRot;
    
    }MI_SCL_ChnParam_t;
    
  • 成员

    成员名称 描述
    eRot Rotation 参数
  • 相关数据类型及接口

    MI_SCL_SetChnParam


3.9. MI_SCL_OutPortParam_t

  • 说明

    SCL 输出端口参数。

  • 定义

    typedef struct MI_SCL_OutPortParam_s
    
    {
    
        MI_SYS_WindowRect_t stSCLOutCropRect;
    
        MI_SYS_WindowSize_t stSCLOutputSize;
    
        MI_BOOL bMirror;
    
        MI_BOOL bFlip;
    
        MI_SYS_PixelFormat_e ePixelFormat;
    
        MI_SYS_CompressMode_e eCompressMode;
    
    }MI_SCL_OutPortParam_t;
    
  • 成员

    成员名称 描述
    stSCLOutCropRect 输出裁剪区域
    stSCLOutputSize 输出size
    bMirror 使能水平翻转
    bFlip 使能垂直翻转
    ePixelFormat 输出像素格式
    eCompressMode 输出压缩格式
  • 注意事项

    Tiramisu 系列芯片不支持压缩格式。

  • 相关数据类型及接口

    MI_SCL_SetOutputPortParam


3.10. MI_SCL_FilterType_e

  • 说明

    Scl 滤波器类型。

  • 定义

    typedef enum
    
    {
    
        E_MI_SCL_FILTER_TYPE_AUTO,
    
        E_MI_SCL_FILTER_TYPE_BYPASS,
    
        E_MI_SCL_FILTER_TYPE_BILINEAR,
    
        E_MI_SCL_FILTER_TYPE_BICUBIC,
    
        E_MI_SCL_FILTER_TYPE_MAX,
    
    } MI_SCL_FilterType_e;
    
  • 成员

    成员名称 描述
    E_MI_SCL_FILTER_TYPE_AUTO 自动选择滤波器
    E_MI_SCL_FILTER_TYPE_BYPASS 不经过算法滤波器
    E_MI_SCL_FILTER_TYPE_BILINEAR 双线性滤波器
    E_MI_SCL_FILTER_TYPE_BICUBIC 双立方插值滤波器
    E_MI_SCL_FILTER_TYPE_MAX 滤波器类型最大值
  • 注意事项

    当选择和算法相同的滤波器类型,可以得到更加精准的算法结果。

  • 相关数据类型及接口

    MI_SCL_StretchBuf


3.11. MI_SCL_DirectBuf_t

  • 说明

    SCL 直接操作buffer 参数类型。

  • 定义

    typedef struct MI_SCL_DirectBuf_s
    
    {
    
        MI_SYS_PixelFormat_e ePixelFormat;
    
        MI_U32 u32Width;
    
        MI_U32 u32Height;
    
        MI_PHY phyAddr[2];
    
        MI_U32 u32Stride[2];
    
        MI_U32 u32BuffSize;
    
    }MI_SCL_DirectBuf_t;
    
  • 成员

    成员名称 描述
    ePixelFormat Buffer 像素格式
    u32Width 有效像素宽度
    u32Height 有效像素高度
    phyAddr Buffer 物理地址
    u32Stride Buffer 一行占字节数
    u32BuffSize Buffer 占用空间
  • 相关数据类型及接口

    MI_SCL_StretchBuf


4. SCL 错误码

视频输入 API 错误码如下表所示。

错误代码 宏定义 描述
0XA0222000 MI_ERR_SCL_INVALID_DEVID 设备号无效
0XA0222001 MI_ERR_SCL_INVALID_CHNID 通道号无效
0XA0222002 MI_ERR_SCL_INVALID_PORTID 端口号无效
0XA0222003 MI_ERR_SCL_ILLEGAL_PARAM 参数设置无效
0XA0222004 MI_ERR_SCL_EXIST 设备已经存在
0XA0222005 MI_ERR_SCL_UNEXIST 设备已经不存在
0XA0222006 MI_ERR_SCL_NULL_PTR 输入参数空指针错误
0XA0222007 MI_ERR_SCL_NOT_SUPPORT 操作不支持
0XA0222008 MI_ERR_SCL_NOT_PERM 操作不允许
0XA0222009 MI_ERR_SCL_NOMEM 分配内存失败
0XA022200a MI_ERR_SCL_NOBUF 缓存为满
0XA022200b MI_ERR_SCL_BUF_EMPTY 缓存为空
0XA022200c MI_ERR_SCL_NOTREADY 系统未初始化
0XA022200d MI_ERR_SCL_BUSY 系统忙