前言

概述

本文为使用HNR的软件开发工程师和图像质量开发工程师而写,目的是为您在开发过程中提供使用指导和帮助。

说明: 本文以SS928V100描述为例,未有特殊说明,SS927V100与SS928V100内容一致。

产品版本

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

产品名称

产品版本

SS928

V100

SS927

V100

修订记录

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

文档版本

发布日期

修改说明

00B02

2025-12-25

第2次临时版本发布。

ot_hnr_ref_mode【定义】及【成员】涉及修改

00B01

2025-09-15

第1次临时版本发布。

概述

概述

HNR(hypersensitive noise reduction)是一种新型的去噪算法,它能使成像设备在更低照度时噪声去除更干净,细节保留更多,从而提高成像设备极低照度的感光能力。本文主要介绍HNR的接口说明和使用注意事项。

HNR参考帧普通模式性能支持3840 x 2160@30fps,无参考帧模式支持3840 x 2160@40fps,HNR支持的最高帧率为100fps。

基本概念

  • sfs (spatial filter strength),即空域去噪强度。

  • tfs (temporal filter strength),即时域去噪强度。

性能

线性OT_HNR_REF_MODE_NORM模式性能数据如下。

分辨率

帧率

3840x2160

单路30fps

1920x1080

单路96fps

1920x1080

四路25fps

2688x1520

单路57fps

2688x1520

四路14fps

API参考

该功能模块为用户提供以下API:

  • ss_mpi_hnr_init:初始化HNR模块。

  • ss_mpi_hnr_exit:去初始化HNR模块。

  • ss_mpi_hnr_load_cfg:加载HNR的配置文件。

  • ss_mpi_hnr_unload_cfg:卸载HNR的配置文件。

  • ss_mpi_hnr_set_alg_cfg:设置HNR算法相关配置参数。

  • ss_mpi_hnr_get_alg_cfg:获取HNR算法相关配置参数。

  • ss_mpi_hnr_enable:使能HNR数据流开关。

  • ss_mpi_hnr_disable:关闭HNR数据流开关。

  • ss_mpi_hnr_set_attr:设置HNR的属性。

  • ss_mpi_hnr_get_attr:获取HNR的属性。

  • ss_mpi_hnr_set_input_depth:设置HNR输入队列的缓存深度。

  • ss_mpi_hnr_set_thread_attr:设置HNR线程属性。

  • ss_mpi_hnr_get_thread_attr:获取HNR线程属性。

  • ss_mpi_hnr_attach_out_vb_pool:HNR输出绑定到某个视频缓存VB池。

  • ss_mpi_hnr_detach_out_vb_pool:HNR输出与视频缓存VB池解除绑定。

ss_mpi_hnr_init

【描述】

初始化HNR模块。

【语法】

td_s32 ss_mpi_hnr_init(td_void);

【参数】

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

  • 不支持多进程调用。

  • 调用此接口前需要先初始化VI、ISP模块。

【举例】

【相关主题】

ss_mpi_hnr_exit

【描述】

去初始化HNR模块。

【语法】

td_void ss_mpi_hnr_exit(td_void);

【参数】

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

  • 不支持多进程调用。

  • 调用此接口去初始化HNR模块前,需要关闭HNR数据流开关。

【举例】

【相关主题】

ss_mpi_hnr_load_cfg

【描述】

加载HNR的配置文件。

【语法】

td_s32 ss_mpi_hnr_load_cfg(const ot_hnr_cfg *cfg, td_s32 *cfg_id);

【参数】

参数名称

描述

输入/输出

cfg

HNR配置文件指针

输入

cfg_id

返回的配置文件ID指针

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

  • 调用该接口前必须先调用ss_mpi_hnr_init初始化HNR模块。

  • 调用该接口前HNR数据流需要保持关闭状态。

  • 相同类型的配置文件,如果图像宽高相等时,不能重复加载。

  • 支持多个配置文件的加载,或者同一配置文件、不同分辨率多次加载。

  • 不支持多进程调用。

  • WDR模式不支持加载抓拍模型。

【举例】

【相关主题】

ss_mpi_hnr_unload_cfg

【描述】

卸载HNR的配置文件。

【语法】

td_s32 ss_mpi_hnr_unload_cfg(td_s32 cfg_id);

【参数】

参数名称

描述

输入/输出

cfg_id

配置文件对应的ID。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

  • 应用程序退出前,需调用此接口释放已加载配置文件的内存资源,或者调用ss_mpi_hnr_exit接口释放HNR的所有资源。

  • 不支持多进程调用。

  • 调用此接口前需要关闭HNR数据流开关。

【举例】

【相关主题】

ss_mpi_hnr_set_alg_cfg

【描述】

设置HNR算法相关配置参数。

【语法】

td_s32 ss_mpi_hnr_set_alg_cfg(ot_vi_pipe vi_pipe, const ot_hnr_alg_cfg *cfg)

【参数】

参数名称

描述

输入/输出

vi_pipe

VI模块的PIPE号,

取值范围:[0, OT_VI_MAX_PIPE_NUM)。详见《MPP 媒体处理软件V5.0 开发参考》“视频输入”章节。

输入

cfg

HNR算法参数配置结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

  • 调用该接口前必须先调用ss_mpi_hnr_init初始化HNR模块。

  • 调用该接口前需要已创建pipe,并且已初始化ISP。

  • 调用该接口时HNR数据流需要保持关闭状态。

  • 如果未调用此接口,默认为有参考帧模式。

  • 如果是拍照场景,必须调用此接口设置为无参考帧模式。

  • HNR参考帧普通模式支持的最大分辨率为4096×4096;HNR无参考帧模式(OT_HNR_REF_MODE_NONE和OT_HNR_REF_MODE_NONE_ADVANCED)支持的最大分辨率为8192×8192。

  • 当前版本HNR 的无参考帧模式(OT_HNR_REF_MODE_NONE和OT_HNR_REF_MODE_NONE_ADVANCED)不支持BGGR和GRBG的Bayer图像的数据格式。

  • WDR模式不支持HNR无参考帧模式(OT_HNR_REF_MODE_NONE和OT_HNR_REF_MODE_NONE_ADVANCED)。

  • OT_HNR_REF_MODE_NONE_ADVANCED模式仅支持在VI视频模式为OT_VI_VIDEO_MODE_ADVANCED时使用。

  • OT_HNR_REF_MODE_NONE_ADVANCED模式仅支持送帧方式,推荐使用RunOnce方式。

  • OT_HNR_REF_MODE_NONE_ADVANCED模式的输入帧仅支持非压缩格式。

  • 如果在非主进程中调用此接口,必须先调用ss_mpi_isp_mem_share或ss_mpi_isp_mem_share_all接口,共享ISP相关MMZ buffer。

【举例】

【相关主题】

ss_mpi_hnr_get_alg_cfg

【描述】

获取HNR算法相关配置参数。

【语法】

td_s32 ss_mpi_hnr_get_alg_cfg(ot_vi_pipe vi_pipe, ot_hnr_alg_cfg *cfg);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI模块的PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)。详见《MPP 媒体处理软件V5.0 开发参考》“视频输入”章节。

输入

cfg

HNR算法参数配置结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

  • 调用该接口前必须先调用ss_mpi_hnr_init初始化HNR模块。

  • 调用该接口前需要已创建pipe,并且已初始化ISP。

  • 如果在非主进程中调用此接口,必须先调用ss_mpi_isp_mem_share或ss_mpi_isp_mem_share_all接口,共享ISP相关MMZ buffer。

【举例】

【相关主题】

ss_mpi_hnr_enable

【描述】

使能HNR数据流开关。

【语法】

td_s32 ss_mpi_hnr_enable(ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI模块的PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM),详见《MPP 媒体处理软件V5.0 开发参考》“视频输入”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

  • 主进程调用该接口前必须先调用ss_mpi_hnr_init初始化HNR模块,并调用ss_mpi_hnr_load_cfg接口加载HNR配置文件。

  • 其他非主进程(例如PQTools)支持使用该接口打开HNR数据流,无需初始化HNR;但需要主进程初始化HNR模块,否则无法实际打开数据流。

  • 如果在非主进程中调用此接口,必须先调用ss_mpi_isp_mem_share或ss_mpi_isp_mem_share_all接口,共享ISP相关MMZ buffer。

  • enable hnr前有如下限制条件:

    • 对应的pipe必须已经创建。

    • 需要用户调用函数去分配VB池,VB大小计算使用函数ot_hnr_get_pic_buf_size,详见《MPP 媒体处理软件V5.0 开发参考》“系统控制”章节,且分配的VB池需要attach对应的PIPE上。

  • 如果更改了输入Bayer图像的数据格式,需要ss_mpi_hnr_disable关闭之后,在重新调用本接口使能HNR数据流才会生效。

  • HNR使能之后,有参考帧模式延迟4帧生效,无参考帧模式延迟2帧生效。

  • HNR仅支持12bit的Bayer图像数据处理。如果sensor输入非12bit的Bayer图像,需设置VI PIPE输出的图像数据格式为Bayer 12bit。

  • HNR的线性模式使用有如下限制:

    如果另一路使用WDR模式,则VI视频模式需要设置为OT_VI_VIDEO_MODE_NORM模式,否则会影响WDR路的BNR效果;

  • HNR的WDR模式使用有如下限制:

    • 只能在VI离线时生效;

    • VI视频模式必须设置为OT_VI_VIDEO_MODE_NORM模式;

    • HNR建议绑定长帧所在的pipe,不能是虚拟pipe;

    • pipe通路不能开压缩;

    • 当前版本HNR 的WDR模式不支持BGGR和GRBG的Bayer图像的数据格式;

    • 不支持normal_blend模式;

    • 超性能场景可能会出现WDR长短帧丢帧不同步,进而导致WDR融合效果异常。

【举例】

【相关主题】

ss_mpi_hnr_disable

【描述】

关闭HNR数据流开关。

【语法】

td_s32 ss_mpi_hnr_disable(ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI模块的PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)。详见《MPP 媒体处理软件V5.0 开发参考》“视频输入”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

  • 主进程调用该接口前必须先调用ss_mpi_hnr_init初始化HNR模块,并调用ss_mpi_hnr_load_cfg接口加载HNR配置文件。

  • 其他非主进程(例如PQTools)支持使用该接口关闭HNR数据流,无需初始化HNR。

  • 如果在非主进程中调用此接口,必须先调用ss_mpi_isp_mem_share或ss_mpi_isp_mem_share_all接口,共享ISP相关MMZ buffer。

  • 在VI模块销毁对应的pipe之前,需要先调用该接口关闭HNR功能,否则可能出现VB泄漏。

【举例】

【相关主题】

ss_mpi_hnr_set_attr

【描述】

设置HNR的属性。

【语法】

td_s32 ss_mpi_hnr_set_attr(ot_vi_pipe vi_pipe, const ot_hnr_attr *attr);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI模块的PIPE号,

取值范围:[0, OT_VI_MAX_PIPE_NUM)。详见《MPP 媒体处理软件V5.0 开发参考》“视频输入”章节。

输入

attr

HNR属性结构体指针。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

  • 调用该接口前必须先调用ss_mpi_hnr_init初始化HNR模块,并调用ss_mpi_hnr_load_cfg接口加载HNR配置文件。

  • 使能HNR数据流开关之后才能调用此接口成功设置HNR属性。

  • VI视频模式为OT_VI_VIDEO_MODE_NORM时,当attr->enable为TD_FALSE时,bnr_bypass必须为TD_FALSE。

  • VI视频模式为OT_VI_VIDEO_MODE_ADVANCED时,bnr_bypass不起作用。

  • VI视频模式为OT_VI_VIDEO_MODE_NORM时,并且bnr_bypass为TD_FALSE时,才能开启normal_blend。

  • VI视频模式为OT_VI_VIDEO_MODE_NORM时,normal_blend开启,不支持获取HNR处理后的raw,不支持ISP RunOnce方式使用HNR,因为BE灌的raw没有经过HNR处理。

  • VI视频模式为OT_VI_VIDEO_MODE_NORM时,normal_blend关闭,支持获取HNR处理后的raw, 支持ISP RunOnce方式使用HNR。

  • 如果在非主进程中调用此接口,必须先调用ss_mpi_isp_mem_share或ss_mpi_isp_mem_share_all接口,共享ISP相关MMZ buffer。

【举例】

【相关主题】

ss_mpi_hnr_get_attr

【描述】

获取HNR的属性。

【语法】

td_s32 ss_mpi_hnr_get_attr(ot_vi_pipe vi_pipe, ot_hnr_attr *attr);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI模块的PIPE号,

取值范围:[0, OT_VI_MAX_PIPE_NUM)。详见《MPP 媒体处理软件V5.0 开发参考》“视频输入”章节。

输入

attr

HNR属性结构体指针。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

  • 使能HNR数据流开关之后才能调用此接口成功获取HNR属性。

  • 如果在非主进程中调用此接口,必须先调用ss_mpi_isp_mem_share或ss_mpi_isp_mem_share_all接口,共享ISP相关MMZ buffer。

【举例】

【相关主题】

ss_mpi_hnr_set_input_depth

【描述】

设置HNR输入队列的缓存深度。

【语法】

td_s32 ss_mpi_hnr_set_input_depth(ot_vi_pipe vi_pipe, td_u32 depth);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI模块的PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)。详见《MPP媒体处理软件V5.0开发参考》“视频输入”章节。

输入

depth

输入缓存深度,取值范围:[1, 20]

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

调用该接口前必须先调用ss_mpi_hnr_init初始化HNR模块,并且对应的pipe必须已经创建。

【举例】

【相关主题】

ss_mpi_hnr_set_thread_attr

【描述】

设置HNR线程属性。

【语法】

td_s32 ss_mpi_hnr_set_thread_attr(const ot_hnr_thread_attr *thread_attr);

【参数】

参数名称

描述

输入/输出

thread_attr

HNR线程属性。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

调用该接口支持在调用ss_mpi_hnr_init初始化HNR模块前或开启HNR通路后动态修改。

【举例】

【相关主题】

ss_mpi_hnr_get_thread_attr

【描述】

获取HNR线程属性。

【语法】

td_s32 ss_mpi_hnr_get_thread_attr(const ot_hnr_thread_attr *thread_attr);

【参数】

参数名称

描述

输入/输出

thread_attr

HNR线程属性。

输出

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

【举例】

【相关主题】

ss_mpi_hnr_attach_out_vb_pool

【描述】

将HNR输出绑定到某个视频缓存VB池。

【语法】

td_s32 ss_mpi_hnr_attach_out_vb_pool(ot_vi_pipe vi_pipe, ot_vb_pool vb_pool);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI模块的PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)。详见《MPP媒体处理软件V5.0开发参考》“视频输入”章节。

输入

vb_pool

视频缓存VB池信息。具体请参见“系统控制”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

  • 调用该接口前必须先调用ss_mpi_hnr_init初始化HNR模块。

  • 调用该接口前HNR数据流需要保持关闭状态。

  • 只推荐在VI stagger输入场景且VI视频模式为OT_VI_VIDEO_MODE_NORM时使用;其他场景使用会造成vb利用率下降。

【举例】

【相关主题】

ss_mpi_hnr_detach_out_vb_pool

【描述】

将HNR输出与某个视频缓存VB池解绑定。

【语法】

td_s32 ss_mpi_hnr_detach_out_vb_pool(ot_vi_pipe vi_pipe);

【参数】

参数名称

描述

输入/输出

vi_pipe

VI模块的PIPE号。

取值范围:[0, OT_VI_MAX_PIPE_NUM)。详见《MPP媒体处理软件V5.0开发参考》“视频输入”章节。

输入

【返回值】

返回值

描述

0

成功。

非0

失败,请参见错误码。

【需求】

  • 头文件:ss_mpi_hnr.h

  • 库文件:libss_hnr.a

【注意】

  • 调用该接口前必须先调用ss_mpi_hnr_init初始化HNR模块。

  • 调用该接口前HNR数据流需要保持关闭状态。

【举例】

【相关主题】

数据类型

HNR模块相关数据类型定义如下:

  • OT_HNR_MAX_CFG_NUM:定义HNR配置文件最大支持加载数。

  • ot_hnr_mem_info:定义HNR配置文件内存信息。

  • ot_hnr_cfg:定义HNR配置文件信息。

  • ot_hnr_param:定义HNR图像效果参数。

  • ot_hnr_manual_attr:定义HNR手动参数。

  • ot_hnr_attr:定义HNR属性。

  • ot_hnr_ref_mode:定义HNR参考帧模式。

  • ot_hnr_alg_cfg:定义HNR算法配置参数。

  • ot_hnr_thread_attr:定义HNR线程配置参数。

OT_HNR_MAX_CFG_NUM

【说明】

定义HNR配置文件最大支持加载数。

【定义】

#define OT_HNR_MAX_CFG_NUM  32

【注意事项】

【相关数据类型及接口】

ot_hnr_mem_info

【说明】

HNR配置文件内存信息。

【定义】

typedef struct {
    td_phys_addr_t phys_addr;
    td_void *virt_addr;
    td_u32  size;
} ot_hnr_mem_info;

【成员】

成员名称

描述

phys_addr

HNR配置文件的内存物理地址。

td_phys_addr_t详细请参考《MPP 媒体处理软件 V5.0 开发参考》“系统控制”章节。

virt_addr

HNR配置文件的内存虚拟地址。

size

HNR配置文件的内存大小。

【注意事项】

【相关数据类型及接口】

ot_hnr_cfg

ot_hnr_cfg

【说明】

HNR配置文件信息。

【定义】

typedef struct {
    ot_hnr_mem_info mem_info;
    ot_size image_size;
    td_bool is_wdr_mode;
} ot_hnr_cfg;

【成员】

成员名称

描述

mem_info

HNR配置文件内存信息

image_size

配置文件所支持的图像分辨率。

is_wdr_mode

配置文件是否支持WDR模式,否则支持线性模式。

【注意事项】

  • 用户需要保证内存中所存储的配置文件信息的完整性和正确性,否则可能导致运行异常。

  • 配置文件加载时需指定所支持的图像分辨率。

  • 支持的图像分辨率宽高都必须是4的整数倍。

  • HNR参考帧模式支持的图像分辨率宽高与VI PIPE离线图像大小范围一致。详细请参考《MPP 媒体处理软件 V5.0 开发参考》“视频输入”章节。

【相关数据类型及接口】

ot_hnr_param

【说明】

定义HNR图像效果参数。

【定义】

typedef struct {
    td_u32 sfs;
    td_u32 tfs;
} ot_hnr_param;

【成员】

成员名称

描述

sfs

整体画面的空域去噪强度。数值越大,去噪越强。

取值范围: [0, 31]

tfs

时域去噪强度。数值越大,时域去噪越强。此版本暂不支持此参数的效果调节。

取值范围: [0, 31]

【注意事项】

当前版本,tfs参数暂未生效。参数调节请参考《HNR调优指南》。

【相关数据类型及接口】

ot_hnr_manual_attr

ot_hnr_manual_attr

【说明】

定义HNR手动参数。

【定义】

typedef struct {
    ot_hnr_param param;
} ot_hnr_manual_attr;

【成员】

成员名称

描述

param

HNR图像效果参数

【注意事项】

【相关数据类型及接口】

ot_hnr_attr

ot_hnr_attr

【说明】

定义HNR属性。

【定义】

typedef struct {
    td_bool enable;
    td_bool bnr_bypass;
    td_bool normal_blend;
    ot_op_mode op_type;
    ot_hnr_manual_attr manual_attr;
    ot_hnr_auto_attr auto_attr;
} ot_hnr_attr;

【成员】

成员名称

描述

enable

图像效果使能开关。

bnr_bypass

BNR Bypass开关。详细请参考《HNR 调试指南》HNR与BNR切换。

normal_blend

normal模式blend开关。

op_type

HNR选择模式。详细请参考《MPP 媒体处理软件 V5.0 开发参考》“系统控制”章节。

manual_attr

HNR手动模式参数。

auto_attr

HNR自动模式的标准参数。

ot_hnr_auto_attr参数暂不支持。

【注意事项】

本版本暂只支持手动模式参数,不支持自动模式参数配置。

【相关数据类型及接口】

ot_hnr_ref_mode

【说明】

定义HNR参考帧模式。

【定义】

typedef enum {
    OT_HNR_REF_MODE_NORM = 0,
    OT_HNR_REF_MODE_NONE,
    OT_HNR_REF_MODE_NONE_ADVANCED,
    OT_HNR_REF_MODE_NORM_FACE,
    OT_HNR_REF_MODE_BUTT
} ot_hnr_ref_mode;

【成员】

成员名称

描述

OT_HNR_REF_MODE_NORM

HNR参考帧普通模式,图像处理需要参考帧。默认为此模式。

OT_HNR_REF_MODE_NONE

HNR无参考帧模式,图像处理无需参考帧。

OT_HNR_REF_MODE_NONE_ADVANCED

HNR无参考帧的高级模式,提升图像暗处细节,图像处理无需参考帧。

OT_HNR_REF_MODE_NORM_FACE

HNR参考帧人脸模式,提升运动人脸细节,图像处理需要参考帧。

【注意事项】

如果是拍照场景,需选用HNR无参考帧模式,或HNR无参考帧的高级模式。

【相关数据类型及接口】

ot_hnr_alg_cfg

ot_hnr_alg_cfg

【说明】

定义HNR算法配置参数。

【定义】

typedef struct {
    ot_hnr_ref_mode ref_mode;
} ot_hnr_alg_cfg;

【成员】

成员名称

描述

ref_mode

HNR参考帧模式。

【注意事项】

【相关数据类型及接口】

ot_hnr_thread_attr

【说明】

定义HNR线程属性。

【定义】

typedef struct {
    td_u32 cpu_id;
} ot_hnr_thread_attr;

【成员】

成员名称

描述

cpu_id

绑定的CPU ID,取值范围为[0, 3]。

【注意事项】

【相关数据类型及接口】

Proc调试信息

概述

调试信息采用了Linux下的proc文件系统,可实时反映当前系统的运行状态,所记录的信息可供问题定位及分析时使用。

【文件目录】

/proc/umap

【信息查看方法】

  • 在控制台上可以使用cat命令查看信息,cat /proc/umap/isp或cat /proc/umap/pqp;也可以使用其他常用的文件操作命令,例如 cp /proc/umap/isp ./或cp /proc/umap/pqp ./,将文件拷贝到当前目录。

  • 在应用程序中可以将上述文件当作普通只读文件进行读操作,例如fopen、fread等。

说明: 参数在描述时有以下两种情况需要注意:

  • 取值为{0, 1}的参数,如未列出具体取值和含义的对应关系,则参数为1时表示肯定,为0时表示否定。

  • 取值为{aaa, bbb, ccc}的参数,未列出具体取值和含义的对应关系,但可直接根据取值aaa、bbb或ccc判断参数含义。

Proc信息说明

HNR调试信息说明

【调试信息】

# cat /proc/umap/isp 
 
[ISP] Version: [MPP_Vx.x.x.x B0xx Release], Build Time[mm dd yyyy, hh:mm:ss]
----------------------------------------hnr info------------------------------------------------------------------------
hnr_en   attr_en       sfs   set_bnr_bypass bnr_bypass_status  long_frame_mode   normal_blend     normal_blend_status
1         1        31                1                 0                N                   0                       0
 
    cfg_id     width     height     is_wdr   ref_mode  version_id
        0      3840      2160        N   norm     2021082801
 
   vi_pipe       iso    handle  busy_node  free_node  ref_mode  input_depth  ref_cnt work_time   slp_cnt  slp_time
        0      3521        1         2         1      norm         8               1     12226        26     12231 
 

【注意事项】

当HNR数据流首次使能之后,才能查看到HNR相关的proc信息。

【调试信息分析】

记录当前HNR工作状态资源信息,主要包括HNR用户设置信息,加载的配置文件信息,任务状态信息。

【参数说明】

参数

描述

HNR用户设置信息

hnr_en

HNR数据流开关。

attr_en

HNR效果开关。

sfs

画面的空域去噪强度

set_bnr_bypass

BNR Bypass设置开关。

bnr_bypass_status

BNR Bypass生效状态。

long_frame_mode

是否为长帧模式。

Y:是长帧模式;

N:不是长帧模式。

normal_blend

normal_blend设置开关。

normal_blend_status

normal_blend生效状态。

HNR配置文件信息

cfg_id

配置文件ID

width

配置文件对应图像的宽度信息。

height

配置文件对应图像的高度信息。

is_wdr

配置文件是否为WDR模式。

Y:WDR模式;

N:线性模式。

ref_mode

配置文件的参考帧模式。

norm:参考帧普通模式,图像处理需要参考帧;

none:无参考帧模式,图像处理无需参考帧;

advanced:无参考帧高级模式。

version_id

配置文件版本ID。

HNR任务状态信息

vi_pipe

HNR使能通路对应VI的PIPE号。

iso

HNR计算输入的iso信息。

iso值来自帧信息supplement的isp_frame_info中的iso。

如果是WDR非长帧模式,此iso值等于isp的iso值除以isp增益。

handle

HNR当前任务handle号。

busy_node

HNR任务队列的工作节点数量。

free_node

HNR任务队列的空闲节点数量。

ref_mode

HNR参考帧模式。

norm:参考帧普通模式,图像处理需要参考帧;

none:无参考帧模式,图像处理无需参考帧;

advanced:无参考帧高级模式。

input_depth

HNR输入队列的缓存深度。

ref_cnt

当前已提交任务个数。

work_time

10s内提交任务最大耗时,单位us。

slp_cnt

submit线程10s内进入睡眠次数。

slp_time

submit线程10s睡眠一次的平均耗时,单位us。

PQP调试信息说明

【调试信息】

# cat /proc/umap/pqp 
 
[PQP] Version: [Vx.x.x.x B0xx Release], Build Time[mm  dd yyyy, hh:mm:ss]
----------------------------------------pqp module param------------------------------
   dev_id       high_profile
        0             N

-------------------------------- pqp task queue info----------------------------------
   dev_id     wait_queue_id   work_queue_id   wait_head_idx    wait_tail_idx
        0                0               -1               0              0
   work_head_idx   work_tail_idx
                0             0
 
-------------------------------------- pqp task info -----------------------------------
   dev_id   handle   task_send    task_finish  last_finish_id  start_task_id  handle_wrap
        0        0           0            0            0             0            0
   finish_wrap
            0
 
-------------------------------------- pqp perf info------------------------------------
    dev_id  irq_num_per_sec  last_irq_time  max_irq_time  last_task_time
         0                0            0              0             0
 
--------------------------------------- pqp err info-------------------------------------
 dev_id  query_timeout_num  hw_timeout_num  hw_err_num
      0                   0                 0            0 

【调试信息分析】

记录当前PQP工作状态资源信息,主要包括PQP队列状态信息,任务状态信息,性能信息和错误信息。

【参数说明】

参数

描述

pqp module param

PQP模块参数信息

dev_id

Dev ID。

high_profile

高性能的开关:仅SS928V100支持。

Y:使能;

N:不使能。

pqp task queue info

PQP 模块任务队列信息

dev_id

Dev ID。

wait_queue_id

等待队列ID(0或1)。

work_queue_id

工作队列ID(0,1或-1),-1表示硬件空闲。

wait_head_idx

等待队列的首个有效任务索引。

wait_tail_idx

等待队列的末尾有效任务索引。

work_head_idx

工作队列的首个有效任务索引。

work_tail_idx

工作队列的末尾有效任务索引。

pqp task info

PQP 任务相关信息

dev_id

Dev ID。

handle

当前分配的任务handle号。

task_send

当前已下发任务的个数。

task_finish

当前已完成任务的个数。

last_finish_id

上一次完成任务的ID。

start_task_id

最近一次启动硬件执行的任务ID。

handle_wrap

handle号分配发生回写的次数。

finish_wrap

完成任务数发生回写的次数。

pqp perf info

PQP性能相关信息

dev_id

Dev ID。

irq_num_per_sec

最近一次的1秒内中断执行次数。

last_irq_time

最近一次执行中断的执行耗时。

单位:us。

max_irq_time

执行一次中断的最大耗时。

单位:us。

last_task_time

最近一个任务执行耗时。

单位:us。

pqp err info

PQP错误信息

dev_id

Dev ID。

query_timeout_num

任务查询超时次数。

hw_timeout_num

硬件执行超时次数。

hw_err_num

硬件执行报错次数。

错误码

HNR错误码如下所示。

表 1 HNR API错误码

错误代码

宏定义

描述

0xa0528002

OT_ERR_HNR_INVALID_PIPE_ID

PIPE号无效

0xa0528007

OT_ERR_HNR_ILLEGAL_PARAM

参数无效

0xa052800a

OT_ERR_HNR_NULL_PTR

输入参数空指针错误

0xa052800c

OT_ERR_HNR_NOT_SUPPORT

操作不支持

0xa052800d

OT_ERR_HNR_NOT_PERM

操作不允许

0xa0528014

OT_ERR_HNR_NO_MEM

数据缓存溢出

0xa0528018

OT_ERR_HNR_NOT_READY

未初始化

0xa0528050

OT_ERR_HNR_BIN_NOT_MATACH

Bin配置文件不匹配