视频编码(6.4--6.5)¶
数据类型¶
相关数据类型、数据结构定义如下:
OT_VENC_MAX_CHN_NUM:定义最大通道数。
OT_VENC_TEXTURE_THRESHOLD_SIZE:定义纹理级码控的阈值个数。
OT_VENC_MAX_TILE_NUM:定义最大支持Tile的个数。
OT_VENC_MAX_SSE_NUM:定义SSE个数。
OT_VENC_VEDU_IP_NUM:定义芯片的编码逻辑个数。
OT_VENC_MAX_FRAME_NUM:定义用户发送多帧图像接口中图像的最大帧数
OT_VENC_MAX_MOSAIC_RECT_NUM:定义用户发送多帧图像接口中马赛克区域的最大个数
OT_VENC_QP_HIST_NUM:定义QP直方图数组大小。
OT_VENC_MAX_SVC_RECT_NUM:定义智能检测目标框个数。
OT_VENC_MD_THRESHOLD_NUM:定义MD检测阈值个数。
OT_VENC_MD_LEVEL_NUM:定义MD检测Level值个数。
OT_VENC_MAX_PACK_INFO_NUM:定义码流包包含其他数据的最大个数。
OT_VENC_MAX_MPF_NUM:定义MPF图像的最大个数。
OT_VENC_PRORES_MAX_ID_CHAR_NUM:定义PRORES厂商名最大字符个数。
OT_VENC_MAX_HIERARCHY_NUM:定义分层编码的最大层数。
OT_VENC_SCALING_LIST_SIZE_16:定义量化表相关大小。
OT_VENC_SCALING_LIST_SIZE_64:定义量化表相关大小。
OT_VENC_JPEG_QT_COEF_NUM:定义jpeg量化表大小。
OT_VENC_MJPEG_QT_COEF_NUM:定义mjpeg量化表大小。
OT_VENC_MAX_ROI_NUM:定义H.264/H.265 ROI最大个数。
OT_VENC_MAX_JPEG_ROI_NUM:定义JPEG ROI最大个数。
OT_VENC_MAX_BITRATE:定义最大码率。
OT_VENC_MIN_BITRATE:定义最小码率。
OT_VENC_MJPEG_MAX_BITRATE:定义MJPEG最大码率。
OT_VENC_MJPEG_MIN_BITRATE:定义MJPEG最小码率。
ot_venc_h264_nalu_type:定义H.264码流NALU类型。
ot_venc_ref_type:定义H.264跳帧参考码流的帧类型以及参考属性。
ot_venc_jpege_pack_type:定义JPEG码流的PACK类型。
ot_venc_h265_nalu_type:定义H.265码流NALU类型。
ot_venc_prores_pack_type:定义PRORES码流的PACK类型。
ot_venc_data_type:定义码流类型的联合体。
ot_venc_pack_info:定义当前码流包数据中包含的其他类型码流包数据的结构体。
ot_venc_pack:定义帧码流包结构体。
ot_venc_h264_stream_info:定义H.264协议码流特征信息。
ot_venc_jpeg_stream_info:定义JPEG/MJPEG协议码流特征信息。
ot_venc_h265_stream_info:定义H.265协议码流特征信息。
ot_venc_prores_stream_info:定义PRORES协议码流特征信息。
ot_venc_h264_adv_stream_info:定义H.264协议高级码流特征信息。
ot_venc_sse_info:定义码流信息中SSE信息。
ot_venc_h265_adv_stream_info:定义H.265协议高级码流特征信息。
ot_venc_stream:定义帧码流类型结构体。
ot_venc_stream_buf_info:定义码流buffer信息的结构体。
ot_venc_h265_attr:定义H.265编码器属性结构体。
ot_venc_h264_attr:定义H.264编码器属性结构体。
ot_venc_mpf_cfg:定义JPEG MPF结构体。
ot_venc_pic_recv_mode:定义RECEIVE MODE结构体。
ot_venc_recv_src:定义JPEG收帧方式在OT_VENC_PIC_RECV_MULTI情况下的绑定源类型。
ot_venc_jpeg_attr:定义JPEG/MJPEG编码器属性结构体。
ot_venc_prores_frame_rate:定义PRORES协议帧率。
ot_venc_prores_aspect_ratio:定义PRORES协议幅型比。
ot_venc_prores_attr:定义PRORES编码器属性结构体。
ot_venc_attr:定义编码器属性结构体。
ot_venc_gop_mode:定义Gop Mode类型。
ot_venc_gop_normal_p:定义单参考帧的P帧Gop属性结构体;
ot_venc_gop_dual_p:定义双参考帧的P帧Gop属性结构体;
ot_venc_gop_smart_p:定义编码智能P帧Gop属性结构体;
ot_venc_gop_adv_smart_p:定义编码高级智能P帧Gop属性结构体;
ot_venc_gop_bipred_b:定义编码B帧GOP属性结构体。
ot_venc_gop_attr:定义Gop Mode类型的结构体。
ot_venc_chn_attr:定义编码通道属性结构体。
ot_venc_start_param:定义编码通道连续接收并编码的帧数结构体。
ot_venc_stream_info:定义编码器码流特征信息,供外部查询使用。
ot_venc_chn_status:定义编码通道的状态结构体。
ot_venc_slice_split:定义H.264/ H.265编码通道slice分割属性。
ot_venc_search_window:定义H.264/H.265通道的搜索窗范围。
ot_venc_h264_intra_pred:定义H.264编码通道帧内预测属性。
ot_venc_h264_trans:定义H.264编码通道变换、量化属性。
ot_venc_h264_entropy:定义H.264编码通道熵编码属性。
ot_venc_h264_dblk:定义H.264编码通道Deblocking属性。
ot_venc_h264_vui:定义H.264编码通道VUI属性。
ot_venc_h265_vui:定义H.265协议编码通道Vui结构体。
ot_venc_vui_aspect_ratio:定义H.264/H.265协议编码通道Vui中AspectRatio信息的结构体。
ot_venc_h264_vui_time_info:定义H.264协议编码通道Vui中Time_Info信息的结构体。
ot_venc_h265_vui_time_info:定义H.265协议编码通道Vui中Time_Info信息的结构体。
ot_venc_vui_video_signal:定义H.264/H.265协议编码通道Vui中信息的Video_Signal结构体。
ot_venc_vui_bitstream_restric:定义H.264/H.265协议编码通道Vui中信息的Bitstream_Restriction结构体。
ot_venc_jpeg_param:定义JPEG编码参数集合。
ot_venc_mjpeg_param:定义MJPEG协议编码通道高级参数结构体。
ot_venc_roi_attr:定义编码通道感兴趣区域编码属性。
ot_venc_roi_for_frame:定义感兴趣区域应用类型。
ot_venc_roi_attr_ex:定义编码通道感兴趣区域编码高级属性。
ot_venc_jpeg_roi_attr:JPEG和MJPEG定义编码感兴趣区域信息。
ot_venc_roi_bg_frame_rate:定义非Roi区域的帧率属性。
ot_venc_ref_param:定义H.264/H.265编码的高级跳帧参考参数
ot_venc_rc_attr:定义编码通道码率控制器属性。
ot_venc_rc_mode:定义编码通道码率控制器模式。
ot_venc_rc_qpmap_mode:定义编码通道QPMAP模式下CU32、CU64 QP值的取值方式。
ot_venc_h264_cbr:定义H.264编码通道CBR属性结构。
ot_venc_h264_vbr:定义H.264编码通道VBR属性结构。
ot_venc_h264_avbr:定义H.264编码通道AVBR属性结构。
ot_venc_h264_qvbr:定义H.264编码通道QVBR属性结构。
ot_venc_h264_cvbr:定义H.264编码通道CVBR属性结构。
ot_venc_h264_fixqp:定义H.264编码通道Fixqp属性结构。
ot_venc_h264_qpmap:定义H.264编码通道QPMAP属性结构。
ot_venc_mjpeg_fixqp:定义MJPEG编码通道Fixqp属性结构。
ot_venc_mjpeg_cbr:定义MJPEG编码通道CBR属性结构。
ot_venc_mjpeg_vbr:定义MJPEG编码通道VBR属性结构。
ot_venc_h265_cbr:定义H.265编码通道CBR属性结构。
ot_venc_h265_vbr:定义H.265编码通道VBR属性结构。
ot_venc_h265_avbr:定义H.265编码通道AVBR属性结构。
ot_venc_h265_qvbr:定义H.265编码通道QVBR属性结构。
ot_venc_h265_cvbr:定义H.265编码通道CVBR属性结构。
ot_venc_h265_fixqp:定义H.265编码通道Fixqp属性结构。
ot_venc_h265_qpmap:定义H.265编码通道QPMAP属性结构。
ot_venc_super_frame_mode:定义码率控制中超大帧处理模式。
ot_venc_h264_vbr_param:定义H.264协议编码通道VBR码率控制模式高级参数配置。
ot_venc_h264_avbr_param:定义H.264协议编码通道AVBR码率控制模式高级参数配置。
ot_venc_h264_qvbr_param:定义H.264协议编码通道QVBR码率控制模式高级参数配置。
ot_venc_h264_cvbr_param:定义H.264协议编码通道CVBR码率控制模式高级参数配置。
ot_venc_h264_cbr_param:定义H.264协议编码通道CBR新版码率控制模式高级参数配置。
ot_venc_mjpeg_cbr_param:定义MJPEG协议编码通道CBR码率控制模式高级参数配置。
ot_venc_mjpeg_vbr_param:定义MJPEG协议编码通道VBR码率控制模式高级参数配置。
ot_venc_h265_vbr_param:定义H.265协议编码通道VBR码率控制模式高级参数配置。
ot_venc_h265_avbr_param:定义H.265协议编码通道AVBR码率控制模式高级参数配置。
ot_venc_h265_qvbr_param:定义H.265协议编码通道QVBR码率控制模式高级参数配置。
ot_venc_h265_cvbr_param:定义H.265协议编码通道CVBR码率控制模式高级参数配置。
ot_venc_h265_cbr_param:定义H.265协议编码通道CBR新版码率控制模式高级参数配置。
ot_venc_rc_param:定义编码通道的码率控制高级参数。
ot_venc_jpeg_enc_mode:定义JPEG编码通道的抓拍模式。
ot_venc_h265_pu:定义H.265编码通道PU的属性。
ot_venc_h265_trans:定义H.265编码通道的变换量化属性。
ot_venc_h265_entropy:定义H.265编码通道的熵编码属性。
ot_venc_h265_dblk:定义H.265编码通道Deblocking属性。
ot_venc_h265_sao:定义H.265编码通道Sao属性。
ot_venc_frame_lost_mode:定义编码通道瞬时码率超过阈值时的丢帧模式。
ot_venc_frame_lost_strategy:定义编码通道瞬时码率超过阈值时的丢帧策略。
ot_venc_reencode_priority:超大帧重编优先级枚举。
ot_venc_super_frame_strategy:超大帧处理策略参数。
ot_venc_intra_refresh_mode:P帧刷Islice模式。
ot_venc_intra_refresh:P帧刷Islice控制参数。
ot_venc_mod_param:编码相关模块参数。
ot_venc_mod_type:编码相关模块参数类型。
ot_venc_venc_mod_param:ssxx_venc.ko模块参数。
ot_venc_h264_mod_param:ssxx_h264e.ko模块参数。
ot_venc_h265_mod_param:ssxx_h265.ko模块参数。
ot_venc_jpeg_mod_param:ssxx_jpeg.ko模块中参数。
ot_venc_frame_type:编码相关模块参数类型。
ot_venc_user_rc_info:用户码控信息结构体。
ot_venc_user_roimap:用户ROI信息结构体。
ot_venc_user_frame_info:用户发送图像信息结构体。
ot_venc_mosaic_mode:马赛克模式。
ot_venc_mosaic_pixel_yuv:马赛克填充颜色。
ot_venc_mosaic_rect:马赛克rect模式参数结构体。
ot_venc_mosaic_map:马赛克map模式参数结构体。
ot_venc_mosaic_info:马赛克信息结构体。
ot_venc_multi_frame_info:用户发送多帧图像及马赛克信息结构体。
ot_venc_chn_config:编码通道复合编码配置。
ot_venc_sse_rgn:SSERegion模块中参数。
ot_venc_chn_param:定义venc通道参数结构体。
ot_venc_fg_protect:前景保护参数结构体。
ot_venc_scene_mode:编码模式场景。
ot_venc_scene_chg_detect:编码场景检测控制参数。
ot_venc_chn_pool:定义编码通道绑定的VB池结构体。
ot_venc_cu_pred:CU模式选择倾向性配置结构体。
ot_venc_skip_bias:SKIP倾向性选择配置结构体。
ot_venc_debreath_effect:去除呼吸效应参数结构体。
ot_venc_hierarchical_qp:QP分层参数结构体。
ot_venc_rc_adv_param:定义RC模块的高级参数。
ot_venc_svc_rect_type:定义智能检测目标框type类型信息。
ot_venc_svc_map_param:定义智能编码QpMap,SkipMap值。
ot_venc_svc_param:定义智能编码的控制参数。
ot_venc_svc_rect_info:定义检测目标框属性信息。
ot_venc_md_sad_mode:定义sad计算结果所用方式控制信息。
ot_venc_md_param:定义md检测结果信息。
ot_venc_deblur_param:定义背景去模糊控制参数。
ot_venc_param_set_id:定义参数集ID。
ot_venc_h264_poc:定义H.264编码通道POC类型。
ot_venc_jpeg_dering_level: 定义JPEG编码通道的强边去Ring效应强度等级。
ot_venc_deblur_far_bg:定义运动物体远区域的拖尾和残留区域检测参数结构体。
ot_venc_deblur_near_bg:定义运动物体近区域拖尾和残留区域检测参数结构体。
ot_venc_adv_deblur:定义运动物体近/远区域拖尾和残留区域检测参数。
ot_venc_jpeg_roi_adv_attr:JPEG和MJPEG定义编码感兴趣区域高级属性信息。
OT_VENC_MAX_CHN_NUM¶
【说明】
定义最大通道个数。
【定义】
SS528V100/SS524V100
#define OT_VENC_MAX_CHN_NUM 256
SS625V100/SS522V101/SS626V100:
#define OT_VENC_MAX_CHN_NUM 128
SS928V100:
#define OT_VENC_MAX_CHN_NUM 64
【注意事项】
最大通道数:不同解决方案默认值不同。由于最大通道个数涉及到内存的分配,允许用户根据实际需要重新指定最大通道个数,具体方式为:对于linux内核态版本,在加载ssxx_venc.ko时设置模块参数g_venc_max_chn_num来指定实际的最大通道个数,其作用优先级比OT_VENC_MAX_CHN_NUM高。
使用方式如下:
SS528V100/SS524V100
insmod ot_venc.ko g_venc_max_chn_num=128
【相关数据类型及接口】
无。
OT_VENC_TEXTURE_THRESHOLD_SIZE¶
【说明】
定义RC宏块复杂度的阈值的个数。
【定义】
#define OT_VENC_TEXTURE_THRESHOLD_SIZE 16
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MAX_TILE_NUM¶
【说明】
定义最大支持Tile的个数。
【定义】
#define OT_VENC_MAX_TILE_NUM 1
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MAX_SSE_NUM¶
【说明】
定义SSE个数。
【定义】
#define OT_VENC_MAX_SSE_NUM 8
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_VEDU_IP_NUM¶
【说明】
定义解决方案的编码逻辑的个数。
【定义】
SS528V100:
#define OT_VENC_VEDU_IP_NUM 3
SS625V100/SS524V100/SS522V101/SS928V100/SS626V100:
#define OT_VENC_VEDU_IP_NUM 1
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MAX_FRAME_NUM¶
【说明】
定义用户发送多帧图像接口中图像的最大帧数。
【定义】
#define OT_VENC_MAX_FRAME_NUM 2
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MAX_MOSAIC_RECT_NUM¶
【说明】
定义用户发送多帧图像接口中马赛克区域的最大个数。
【定义】
#define OT_VENC_MAX_MOSAIC_RECT_NUM 200
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_QP_HIST_NUM¶
【说明】
定义QP直方图数组大小。
【定义】
#define OT_VENC_QP_HIST_NUM 52
【注意事项】
无。
【相关数据类型及接口】
OT_VENC_MAX_SVC_RECT_NUM¶
【说明】
定义智能检测目标框个数。
【定义】
#define OT_VENC_MAX_SVC_RECT_NUM 32
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MD_THRESHOLD_NUM¶
【说明】
定义MD检测阈值个数。
【定义】
#define OT_VENC_MD_THRESHOLD_NUM 3
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MD_LEVEL_NUM¶
【说明】
定义MD检测Level级别个数。
【定义】
#define OT_VENC_MD_LEVEL_NUM 4
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MAX_PACK_INFO_NUM¶
【说明】
定义码流包包含其他数据的最大个数。
【定义】
#define OT_VENC_MAX_PACK_INFO_NUM 8
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MAX_MPF_NUM¶
【说明】
定义MPF图像的最大个数。
【定义】
#define OT_VENC_MAX_MPF_NUM 2
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_PRORES_MAX_ID_CHAR_NUM¶
【说明】
定义PRORES厂商名最大字符个数。
【定义】
#define OT_VENC_PRORES_MAX_ID_CHAR_NUM 4
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MAX_HIERARCHY_NUM¶
【说明】
定义分层编码的最大层数。
【定义】
#define OT_VENC_MAX_HIERARCHY_NUM 4
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_SCALING_LIST_SIZE_16¶
【说明】
定义量化表相关大小。
【定义】
#define OT_VENC_SCALING_LIST_SIZE_16 16
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_SCALING_LIST_SIZE_64¶
【说明】
定义量化表相关大小。
【定义】
#define OT_VENC_SCALING_LIST_SIZE_64 64
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_JPEG_QT_COEF_NUM¶
【说明】
定义jpeg量化表大小。
【定义】
#define OT_VENC_JPEG_QT_COEF_NUM 64
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MJPEG_QT_COEF_NUM¶
【说明】
定义mjpeg量化表大小。
【定义】
#define OT_VENC_MJPEG_QT_COEF_NUM 64
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MAX_ROI_NUM¶
【说明】
定义H.264/H.265 ROI最大个数。
【定义】
#define OT_VENC_MAX_ROI_NUM 8
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MAX_JPEG_ROI_NUM¶
【说明】
定义JPEG ROI最大个数。
【定义】
#define OT_VENC_MAX_JPEG_ROI_NUM 16
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MAX_BITRATE¶
【说明】
定义最大码率,以Kbps为单位。
【定义】
SS528V100/SS625V100/SS522V101:
#define OT_VENC_MAX_BITRATE (60 * 1024)
SS524V100/SS626V100:
#define OT_VENC_MAX_BITRATE (200 * 1024)
SS928V100:
#define OT_VENC_MAX_BITRATE (160 * 1024)
【注意事项】
SS524V100/SS626V100最大码率仅做参考,以实际码率可达到最大值为准。
【相关数据类型及接口】
无。
OT_VENC_MIN_BITRATE¶
【说明】
定义最小码率,以Kbps为单位。
【定义】
#define OT_VENC_MIN_BITRATE 2
【注意事项】
无。
【相关数据类型及接口】
无。
OT_VENC_MJPEG_MAX_BITRATE¶
【说明】
定义MJPEG最大码率,以Kbps为单位。
【定义】
SS528V100/SS625V100/SS522V101:
#define OT_VENC_MJPEG_MAX_BITRATE (60 * 1024)
SS524V100/SS626V100:
#define OT_VENC_MJPEG_MAX_BITRATE (200 * 1024)
SS928V100:
#define OT_VENC_MJPEG_MAX_BITRATE (1024 * 1024)
【注意事项】
SS928V100码率越高会导致性能下降,使用高码率时需要测试是否满足性能要求。
【相关数据类型及接口】
无。
OT_VENC_MJPEG_MIN_BITRATE¶
【说明】
定义MJPEG最小码率,以Kbps为单位。
【定义】
#define OT_VENC_MJPEG_MIN_BITRATE 2
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_h264_nalu_type¶
【说明】
定义H.264码流NALU类型。
【定义】
typedef enum {
OT_VENC_H264_NALU_B_SLICE = 0,
OT_VENC_H264_NALU_P_SLICE = 1,
OT_VENC_H264_NALU_I_SLICE = 2,
OT_VENC_H264_NALU_IDR_SLICE = 5,
OT_VENC_H264_NALU_SEI = 6,
OT_VENC_H264_NALU_SPS = 7,
OT_VENC_H264_NALU_PPS = 8,
OT_VENC_H264_NALU_BUTT
} ot_venc_h264_nalu_type;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_ref_type¶
【说明】
定义H.264跳帧参考码流的帧类型以及参考属性。
【定义】
typedef enum {
OT_VENC_BASE_IDR_SLICE = 0,
OT_VENC_BASE_P_SLICE_REF_TO_IDR,
OT_VENC_BASE_P_SLICE_REF_BY_BASE,
OT_VENC_BASE_P_SLICE_REF_BY_ENHANCE,
OT_VENC_ENHANCE_P_SLICE_REF_BY_ENHANCE,
OT_VENC_ENHANCE_P_SLICE_NOT_FOR_REF,
OT_VENC_P_SLICE_BUTT
} ot_venc_ref_type;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_jpege_pack_type¶
【说明】
定义JPEG码流的PACK类型。
【定义】
typedef enum {
OT_VENC_JPEG_PACK_ECS = 5,
OT_VENC_JPEG_PACK_APP = 6,
OT_VENC_JPEG_PACK_VDO = 7,
OT_VENC_JPEG_PACK_PIC = 8,
OT_VENC_JPEG_PACK_DCF = 9,
OT_VENC_JPEG_PACK_DCF_PIC = 10,
OT_VENC_JPEG_PACK_BUTT
} ot_venc_jpege_pack_type;
【成员】
【注意事项】
只有JPEG属性的模式配置为多通道接收模式才会启用OT_VENC_JPEG_PACK_DCF和OT_VENC_JPEG_PACK_DCF_PIC。单通道接收模式的OT_VENC_JPEG_PACK_ECS包为多通道接收模式OT_VENC_JPEG_PACK_DCF和OT_VENC_JPEG_PACK_DCF_PIC数据包之和。
多个ECS(熵编码段)组成一个完整的帧,当需要开启ECS低延时,需要开启ecs_output_en,此时逻辑编码完一个ECS就上报中断,通道属性is_by_frame必须为FALSE,即按包收流。
【相关数据类型及接口】
无。
ot_venc_h265_nalu_type¶
【说明】
定义H.265码流NALU类型。
【定义】
typedef enum {
OT_VENC_H265_NALU_B_SLICE = 0,
OT_VENC_H265_NALU_P_SLICE = 1,
OT_VENC_H265_NALU_I_SLICE = 2,
OT_VENC_H265_NALU_IDR_SLICE = 19,
OT_VENC_H265_NALU_VPS = 32,
OT_VENC_H265_NALU_SPS = 33,
OT_VENC_H265_NALU_PPS = 34,
OT_VENC_H265_NALU_SEI = 39,
OT_VENC_H265_NALU_ENHANCE = 64,
OT_VENC_H265_NALU_BUTT
} ot_venc_h265_nalu_type;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_prores_pack_type¶
【说明】
定义PRORES码流的PACK类型。
【定义】
typedef enum {
OT_VENC_PRORES_PACK_PIC = 1,
OT_VENC_PRORES_PACK_BUTT
} ot_venc_prores_pack_type;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_data_type¶
【说明】
定义码流结果类型。
【定义】
typedef union {
ot_venc_h264_nalu_type h264_type;
ot_venc_jpege_pack_type jpeg_type;
ot_venc_h265_nalu_type h265_type;
ot_venc_prores_pack_type prores_type;
} ot_venc_data_type;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_pack_info¶
【说明】
定义当前码流包数据中包含的其他类型码流包数据的结构体。
【定义】
typedef struct {
ot_venc_data_type pack_type;
td_u32 pack_offset;
td_u32 pack_len;
} ot_venc_pack_info;
【成员】
ot_venc_pack¶
【说明】
定义帧码流包结构体。
【定义】
typedef struct {
td_phys_addr_t phys_addr;
td_u8 ATTRIBUTE *addr;
td_u32 ATTRIBUTE len;
td_u64 pts;
td_bool is_frame_end;
ot_venc_data_type data_type;
td_u32 offset;
td_u32 data_num;
ot_venc_pack_info pack_info[OT_VENC_MAX_PACK_INFO_NUM];
} ot_venc_pack;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_h264_stream_info¶
【说明】
定义H.264协议码流特征信息。
【定义】
typedef struct {
td_u32 pic_bytes;
td_u32 inter16x16_mb_num;
td_u32 inter8x8_mb_num;
td_u32 intra16_mb_num;
td_u32 intra8_mb_num;
td_u32 intra4_mb_num;
ot_venc_ref_type ref_type;
td_u32 update_attr_cnt;
td_u32 start_qp;
td_u32 mean_qp;
td_bool is_p_skip;
} ot_venc_h264_stream_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_jpeg_stream_info¶
【说明】
定义JPEG/MJPEG协议码流特征信息。
【定义】
typedef struct {
td_u32 pic_bytes;
td_u32 update_attr_cnt;
td_u32 qfactor;
} ot_venc_jpeg_stream_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_h265_stream_info¶
【说明】
定义H.265协议码流特征信息。
【定义】
typedef struct {
td_u32 pic_bytes;
td_u32 inter64x64_cu_num;
td_u32 inter32x32_cu_num;
td_u32 inter16x16_cu_num;
td_u32 inter8x8_cu_num;
td_u32 intra32x32_cu_num;
td_u32 intra16x16_cu_num;
td_u32 intra8x8_cu_num;
td_u32 intra4x4_cu_num;
ot_venc_ref_type ref_type;
td_u32 update_attr_cnt;
td_u32 start_qp;
td_u32 mean_qp;
td_bool is_p_skip;
} ot_venc_h265_stream_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_prores_stream_info¶
【说明】
定义PRORES协议码流特征信息。
【定义】
typedef struct {
td_u32 pic_bytes;
td_u32 update_attr_cnt;
} ot_venc_prores_stream_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_h264_adv_stream_info¶
【说明】
定义H.264协议码流高级特征信息。
【定义】
typedef struct {
td_u32 residual_bits;
td_u32 head_bits;
td_u32 madi_val;
td_u32 madp_val;
td_double psnr_val;
td_u32 sse_lcu_cnt;
td_u64 sse_sum;
ot_venc_sse_info sse_info[OT_VENC_MAX_SSE_NUM];
td_u32 qp_hist[OT_VENC_QP_HIST_NUM];
td_u32 move_scene16x16_num;
td_u32 move_scene_bits;
td_u32 deblur_near_bg_num;
td_u32 deblur_far_bg_num;
} ot_venc_h264_adv_stream_info;
【成员】
sse_info[OT_VENC_MAX_SSE_NUM] |
|
qp_hist[OT_VENC_QP_HIST_NUM] |
|
【注意事项】
move_scene16x16_num和move_scene_bits统计使能需要调用接口 ss_mpi_venc_set_fg_protect开启前景宏块级码率控制。
仅SS928V100/SS626V100支持PSNR、帧SSE和SSE信息统计。
【相关数据类型及接口】
ss_mpi_venc_get_stream
ss_mpi_venc_set_fg_protect
ot_venc_sse_info¶
【说明】
定义H.264/H.265协议SSE信息。
【定义】
typedef struct {
td_bool enable;
td_u64 sse_val;
} ot_venc_sse_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_get_stream
ot_venc_h265_adv_stream_info¶
【说明】
定义H.265协议码流高级特征信息。
【定义】
typedef struct {
td_u32 residual_bits;
td_u32 head_bits;
td_u32 madi_val;
td_u32 madp_val;
td_double psnr_val;
td_u32 sse_lcu_cnt;
td_u64 sse_sum;
ot_venc_sse_info sse_info[OT_VENC_MAX_SSE_NUM];
td_u32 qp_hist[OT_VENC_QP_HIST_NUM];
td_u32 move_scene32x32_num;
td_u32 move_scene_bits;
td_u32 deblur_near_bg_num;
td_u32 deblur_far_bg_num;
} ot_venc_h265_adv_stream_info;
【成员】
sse_info[OT_VENC_MAX_SSE_NUM] |
|
qp_hist[OT_VENC_QP_HIST_NUM] |
|
【注意事项】
move_scene32x32_num和move_scene_bits统计使能需要调用接口ss_mpi_venc_set_fg_protect开启前景宏块级码率控制。
sse的统计值有误差。计算sse_sum, sse_val时,未统计每一个LCU*LCU块底部4行,右边5列的像素;
psnr的计算过程如下:
lcu_hor = (H265E_LCU_SIZE - 5);
lcu_ver = (H265E_LCU_SIZE - 4);
dl_data = (td_double)(((td_u64)255 * 255 * lcu_hor * lcu_ver * mse_lcu_cnt + 64) >> 7) / sse_sum;
psnr = 10.0 * log10(dl_data);
用户获取到的sse_sum, sse_val值,是对其统计值S进行(S * lcu_hor * lcu_ver / lcu_size / lcu_size + 64)/ 128的运算后的值。
sse的统计值有误差。
当sse_sum为0时候,返回psnr值为99.00。
【相关数据类型及接口】
ss_mpi_venc_get_stream
ss_mpi_venc_set_fg_protect
ot_venc_stream¶
【说明】
定义帧码流类型结构体。
【定义】
typedef struct {
ot_venc_pack ATTRIBUTE *pack;
td_u32 ATTRIBUTE pack_cnt;
td_u32 seq;
union {
ot_venc_h264_stream_info h264_info;
ot_venc_jpeg_stream_info jpeg_info;
ot_venc_h265_stream_info h265_info;
ot_venc_prores_stream_info prores_info;
};
union {
ot_venc_h264_adv_stream_info h264_adv_info;
ot_venc_h265_adv_stream_info h265_adv_info;
};
} ot_venc_stream;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_get_stream
ot_venc_stream_buf_info¶
【说明】
定义码流buffer信息的结构体。
【定义】
typedef struct {
td_phys_addr_t phys_addr[OT_VENC_MAX_TILE_NUM];
td_void ATTRIBUTE *user_addr[OT_VENC_MAX_TILE_NUM];
td_u64 ATTRIBUTE buf_size[OT_VENC_MAX_TILE_NUM];
} ot_venc_stream_buf_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_get_stream_buf_info
ot_venc_h265_attr¶
【说明】
定义H.265编码属性结构体。
【定义】
typedef struct {
td_bool rcn_ref_share_buf_en;
td_u32 frame_buf_ratio;
} ot_venc_h265_attr;
【成员】
【注意事项】
SS528V100、SS625V100不支持frame_buf_ratio调节,必须设置为100。
frame_buf_ratio用来设置节省帧buffer比例,比如设置为80,则表示帧buffer为原始大小的80%;设置frame_buf_ratio不为100时,可能会对以下功能有影响, 且该值越小理论上出现的概率越高:
P帧刷I slice可能会出现整帧刷成I块且提前结束刷I slice,涉及接口:ss_mpi_venc_set_intra_refresh;
去呼吸效应在某些帧上可能会失效,涉及接口:ss_mpi_venc_set_debreath_effect;
QPMAP表不能强制指定skip块,SkipWeight表不能强制指定skip块,强制指定skip块可能会导致系统异常,驱动内部不做检查,用户自行保证;
ROI背景低帧率编码可能会出现部分帧的非ROI区域不能编码为p_skip块,涉及接口:ss_mpi_venc_set_roi_bg_frame_rate;
某些场景指定为p_skip帧的情况下可能会失效,如编码瞬时码率超过阈值时丢帧策略,涉及接口:ss_mpi_venc_set_frame_lost_strategy;
skip倾向性可能会失效,涉及接口:ss_mpi_venc_set_skip_bias
【相关数据类型及接口】
无。
ot_venc_h264_attr¶
【说明】
定义H.264编码属性结构体。
【定义】
typedef struct {
td_bool rcn_ref_share_buf_en;
td_u32 frame_buf_ratio;
} ot_venc_h264_attr;
【成员】
【注意事项】
SS528V100、SS625V100不支持frame_buf_ratio调节,必须设置为100。
frame_buf_ratio用来设置节省帧buffer比例,比如设置为80,则表示帧buffer为原始大小的80%;设置frame_buf_ratio不为100时,可能会对以下功能有影响, 且该值越小理论上出现的概率越高:
P帧刷I slice可能会出现整帧刷成I块且提前结束刷I slice,涉及接口:ss_mpi_venc_set_intra_refresh;
去呼吸效应在某些帧上可能会失效,涉及接口:ss_mpi_venc_set_debreath_effect;
QPMAP表不能强制指定skip块,SkipWeight表不能强制指定skip块,强制指定skip块可能会导致系统异常,驱动内部不做检查,用户自行保证;
ROI背景低帧率编码可能会出现部分帧的非ROI区域不能编码为p_skip块,涉及接口:ss_mpi_venc_set_roi_bg_frame_rate;
某些场景指定为p_skip帧的情况下可能会失效,如编码瞬时码率超过阈值时丢帧策略,涉及接口:ss_mpi_venc_set_frame_lost_strategy;
skip倾向性可能会失效,涉及接口:ss_mpi_venc_set_skip_bias。
【相关数据类型及接口】
无。
ot_venc_mpf_cfg¶
【说明】
定义JPEG MPF结构体。
【定义】
typedef struct {
td_u8 large_thumbnail_num;
ot_size large_thumbnail_size[OT_VENC_MAX_MPF_NUM];
} ot_venc_mpf_cfg;
【成员】
large_thumbnail_size[OT_VENC_MAX_MPF_NUM] |
【注意事项】
使能Mpf后获取码流仅支持多包模式,建议调用接口ss_mpi_venc_set_mod_param设置 one_stream_buffer为多包模式。
Mpf的宽的范围为(160,PicWidth),高的范围为(120,PicHeight),PicWidth和PicHeight为通道属性宽高。Mpf的宽高必须按4对齐。
当Mpf个数配置为2时,第2个Mpf的宽高属性必须小于第1个Mpf的宽高属性。
mpf图像大小受vgs缩放能力限制,通道宽高和第1个Mpf的宽高比例要小于vgs缩放能力,第1个Mpf的宽高和第2个Mpf的宽高比例要小于vgs缩放能力。
SS528V100、SS625V100、SS524V100、SS522V101不支持MPF。
【相关数据类型及接口】
无。
ot_venc_pic_recv_mode¶
【说明】
定义RECEIVE MODE结构体。
【定义】
typedef enum {
OT_VENC_PIC_RECV_SINGLE = 0,
OT_VENC_PIC_RECV_MULTI,
OT_VENC_PIC_RECV_BUTT
} ot_venc_pic_recv_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_recv_src¶
【说明】
定义JPEG收帧方式在OT_VENC_PIC_RECV_MULTI情况下的绑定源类型。
【定义】
typedef enum {
OT_VENC_RECV_SRC0 = 0,
OT_VENC_RECV_SRC1,
OT_VENC_RECV_SRC2,
OT_VENC_RECV_SRC3,
OT_VENC_RECV_BUTT
} ot_venc_recv_src;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_jpeg_attr¶
【说明】
定义JPEG抓拍属性结构体。
【定义】
typedef struct
{
td_bool dcf_en;
ot_venc_mpf_cfg mpf_cfg;
ot_venc_pic_recv_mode recv_mode;
} ot_venc_jpeg_attr;
【成员】
【注意事项】
缩略图默认大小为160x120,不支持设置。
dcf不支持叠加osd。
JPEGE编码通道使用overlay方式实现osd时,osd可叠加到原图上,也可叠加到mpf图上。
JPEGE编码通道设置recv_mode为OT_VENC_PIC_RECV_MULTI模式时允许从多个源接收图像,须配合DCF/MPF使用。JPEGE编码通道根据接收到图像的分辨率判断该图像编码为SRC或者DCF或者MPF0或者MPF1,因此要求从多个源接收到图像的分辨率分别和通道宽高、DCF、MPF0及MPF1相等。
SS528V100、SS625V100、SS524V100、SS522V101、SS626V100不支持使能dcf,mpf功能;不支持OT_VENC_PIC_RECV_MULTI模式配置。
【相关数据类型及接口】
无。
ot_venc_prores_frame_rate¶
【说明】
定义PRORES帧率枚举。
【定义】
typedef enum {
OT_VENC_PRORES_FRAME_RATE_UNKNOWN = 0,
OT_VENC_PRORES_FRAME_RATE_23_976,
OT_VENC_PRORES_FRAME_RATE_24,
OT_VENC_PRORES_FRAME_RATE_25,
OT_VENC_PRORES_FRAME_RATE_29_97,
OT_VENC_PRORES_FRAME_RATE_30,
OT_VENC_PRORES_FRAME_RATE_50,
OT_VENC_PRORES_FRAME_RATE_59_94,
OT_VENC_PRORES_FRAME_RATE_60,
OT_VENC_PRORES_FRAME_RATE_100,
OT_VENC_PRORES_FRAME_RATE_119_88,
OT_VENC_PRORES_FRAME_RATE_120,
OT_VENC_PRORES_FRAME_RATE_BUTT
} ot_venc_prores_frame_rate;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_prores_aspect_ratio¶
【说明】
定义PRORES幅型比枚举。
【定义】
typedef enum {
OT_VENC_PRORES_ASPECT_RATIO_UNKNOWN = 0,
OT_VENC_PRORES_ASPECT_RATIO_SQUARE,
OT_VENC_PRORES_ASPECT_RATIO_4_3,
OT_VENC_PRORES_ASPECT_RATIO_16_9,
OT_VENC_PRORES_ASPECT_RATIO_BUTT
} ot_venc_prores_aspect_ratio;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_prores_attr¶
【说明】
定义PRORES属性结构体。
【定义】
typedef struct {
td_char identifier[OT_VENC_PRORES_MAX_ID_CHAR_NUM];
ot_venc_prores_frame_rate frame_rate_code;
ot_venc_prores_aspect_ratio aspect_ratio;
} ot_venc_prores_attr;
【成员】
identifier[OT_VENC_PRORES_MAX_ID_CHAR_NUM] |
|
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_attr¶
【说明】
定义编码器属性结构体。
【定义】
typedef struct {
ot_payload_type type;
td_u32 max_pic_width;
td_u32 max_pic_height;
td_u32 buf_size;
td_u32 profile;
td_bool is_by_frame;
td_u32 pic_width;
td_u32 pic_height;
union {
ot_venc_h264_attr h264_attr;
ot_venc_h265_attr h265_attr;
ot_venc_jpeg_attr jpeg_attr;
ot_venc_prores_attr prores_attr;
};
} ot_venc_attr;
【成员】
|
推荐值:一幅最大编码图像大小。推荐值为MaxPicWidth ´ MaxPicHeight ´1.5 byte。 调用接口ss_mpi_venc_set_mod_param设置模块参数min_buf_mode可以选择取值范围限制方式。 2、min_buf_mode = 1,用户保证buffer大小合理性: |
|
|
|
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_gop_mode¶
【说明】
定义H.264/H.265 GOP类型。
【定义】
typedef enum {
OT_VENC_GOP_MODE_NORMAL_P = 0,
OT_VENC_GOP_MODE_DUAL_P = 1,
OT_VENC_GOP_MODE_SMART_P = 2,
OT_VENC_GOP_MODE_ADV_SMART_P = 3,
OT_VENC_GOP_MODE_BIPRED_B = 4,
OT_VENC_GOP_MODE_LOW_DELAY_B = 5,
OT_VENC_GOP_MODE_BUTT,
} ot_venc_gop_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_gop_normal_p¶
【说明】
定义编码单参考帧P帧GOP属性结构体。
【定义】
typedef struct {
td_s32 ip_qp_delta;
} ot_venc_gop_normal_p;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_gop_dual_p¶
【说明】
定义编码双参考帧P帧GOP属性结构体。
【定义】
typedef struct {
td_u32 sp_interval;
td_s32 sp_qp_delta;
td_s32 ip_qp_delta;
} ot_venc_gop_dual_p;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_gop_smart_p¶
【说明】
定义编码智能P帧GOP属性结构体。
【定义】
typedef struct {
td_u32 bg_interval;
td_s32 bg_qp_delta;
td_s32 vi_qp_delta;
td_u32 vi_max_qp;
td_u32 vi_min_qp;
} ot_venc_gop_smart_p;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_gop_adv_smart_p¶
【说明】
定义编码高级智能P帧GOP属性结构体。
【定义】
typedef struct {
td_u32 bg_interval;
td_s32 bg_qp_delta;
td_s32 vi_qp_delta;
} ot_venc_gop_adv_smart_p;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_gop_bipred_b¶
【说明】
定义编码B帧GOP属性结构体。
【定义】
typedef struct {
td_u32 b_frame_num;
td_s32 b_qp_delta;
td_s32 ip_qp_delta;
} ot_venc_gop_bipred_b;
【成员】
【注意事项】
无。
【相关数据类型及接口】
无。
ot_venc_gop_attr¶
【说明】
定义编码器GOP属性结构体。
【定义】
typedef struct {
ot_venc_gop_mode gop_mode;
union {
ot_venc_gop_normal_p normal_p;
ot_venc_gop_dual_p dual_p;
ot_venc_gop_smart_p smart_p;
ot_venc_gop_adv_smart_p adv_smart_p;
ot_venc_gop_bipred_b bipred_b;
};
} ot_venc_gop_attr;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_chn_attr¶
【说明】
定义编码通道属性结构体。
【定义】
typedef struct {
ot_venc_attr venc_attr;
ot_venc_rc_attr rc_attr;
ot_venc_gop_attr gop_attr;
} ot_venc_chn_attr;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_start_param¶
【说明】
定义编码通道连续接收并编码的帧数结构体。
【定义】
typedef struct {
td_s32 recv_pic_num;
} ot_venc_start_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_start_chn
ot_venc_stream_info¶
【说明】
定义编码器码流特征信息,供外部查询使用。
【定义】
typedef struct {
ot_venc_ref_type ref_type;
td_u32 pic_bytes;
td_u32 pic_cnt;
td_u32 start_qp;
td_u32 mean_qp;
td_bool is_p_skip;
td_u32 residual_bits;
td_u32 head_bits;
td_u32 madi_val;
td_u32 madp_val;
td_u64 sse_sum;
td_u32 sse_lcu_cnt;
td_double psnr_val;
} ot_venc_stream_info;
【成员】
【注意事项】
此结构体定义是为了ss_mpi_venc_query_status接口中使用。编码特征信息的内容与ss_mpi_venc_get_stream获取到的编码特征信息一致,请参考结构体ot_venc_stream。与ss_mpi_venc_get_stream获取信息不同的是,ss_mpi_venc_query_status不必读取实际编码出来的码流,可以在不同的进程中使用。
此结构体数据仅对H.264和H.265通道有效,其他协议获取到的信息为全部为0。
此结构体数据与最近一次调用ss_mpi_venc_get_stream获取到的编码信息一致,在用户还未获取到任一帧码流前,此结构体中数据为全部为0。
【相关数据类型及接口】
ot_venc_chn_status¶
【说明】
定义编码通道的状态结构体。
【定义】
typedef struct {
td_u32 left_pics;
td_u32 left_stream_bytes;
td_u32 left_stream_frames;
td_u32 cur_packs;
td_u32 left_recv_pics;
td_u32 left_enc_pics;
td_bool is_jpeg_snap_end;
td_u64 release_pic_pts;
td_s64 cvbr_bytes_saving;
ot_venc_stream_info stream_info;
td_u32 discard_pics;
td_u32 stream_buf_full_cnt;
} ot_venc_chn_status;
【成员】
【注意事项】
如果venc接收的抓拍帧有丢帧出现,is_jpeg_snap_end会存在不能正确标记抓拍结束的情况。
【相关数据类型及接口】
ss_mpi_venc_query_status
ot_venc_slice_split¶
【说明】
定义H.264,H.265协议编码通道SLICE分割结构体。
【定义】
typedef struct {
td_bool enable;
td_u32 split_mode;
td_u32 split_size;
td_bool slice_output_en;
} ot_venc_slice_split;
【成员】
【注意事项】
当split_mode=1时,对H.265协议需要关注当前解决方案的LCU大小,SS528V100/SS625V100/SS524V100/SS522V101/SS928V100/SS626V100解决方案的LCU大小为32。
【相关数据类型及接口】
ss_mpi_venc_set_slice_split
ss_mpi_venc_get_slice_split
ot_venc_search_window¶
【说明】
定义H.264/H.265协议编码通道搜索窗范围。
【定义】
typedef struct {
ot_op_mode mode;
td_u32 hor;
td_u32 ver;
} ot_venc_search_window;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_search_window
ss_mpi_venc_get_search_window
ot_venc_h264_intra_pred¶
【说明】
定义H.264协议编码通道帧内预测结构体。
【定义】
typedef struct {
td_u32 constrained_intra_pred_flag;
} ot_venc_h264_intra_pred;
【成员】
【注意事项】
以上参数具体含义请参见H.264协议。
【相关数据类型及接口】
ss_mpi_venc_set_h264_intra_pred
ss_mpi_venc_get_h264_intra_pred
ot_venc_h264_trans¶
【说明】
定义H.264协议编码通道变换、量化结构体。
【定义】
typedef struct {
td_u32 intra_trans_mode;
td_u32 inter_trans_mode;
td_bool scaling_list_valid;
td_u8 inter_scaling_list8x8[OT_VENC_SCALING_LIST_SIZE_64];
td_u8 intra_scaling_list8x8[OT_VENC_SCALING_LIST_SIZE_64];
td_s32 chroma_qp_index_offset;
} ot_venc_h264_trans;
【成员】
【注意事项】
以上参数具体含义请参见H.264协议。
不支持量化表,因此不支持设置scaling_list_valid、inter_scaling_list8x8、intra_scaling_list8x8。
【相关数据类型及接口】
ss_mpi_venc_set_h264_trans
ss_mpi_venc_get_h264_trans
ot_venc_h264_entropy¶
【说明】
定义H.264协议编码通道熵编码结构体。
【定义】
typedef struct {
td_u32 entropy_coding_mode_i;
td_u32 entropy_coding_mode_p;
td_u32 entropy_coding_mode_b;
td_u32 cabac_init_idc;
} ot_venc_h264_entropy;
【成员】
|
|
|
|
|
|
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_h264_entropy
ss_mpi_venc_get_h264_entropy
ot_venc_h264_dblk¶
【说明】
定义H.264协议编码通道Dblk结构体。
【定义】
typedef struct {
td_u32 disable_deblocking_filter_idc;
td_s32 slice_alpha_c0_offset_div2;
td_s32 slice_beta_offset_div2;
} ot_venc_h264_dblk;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_h264_dblk
ss_mpi_venc_get_h264_dblk
ot_venc_h264_vui¶
【说明】
定义H.264协议编码通道Vui结构体。
【定义】
typedef struct {
ot_venc_vui_aspect_ratio vui_aspect_ratio;
ot_venc_h264_vui_time_info vui_time_info;
ot_venc_vui_video_signal vui_video_signal;
ot_venc_vui_bitstream_restric vui_bitstream_restric;
} ot_venc_h264_vui;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_h264_vui
ss_mpi_venc_get_h264_vui
ot_venc_h265_vui¶
【说明】
定义H.265协议编码通道Vui结构体。
【定义】
typedef struct {
ot_venc_vui_aspect_ratio vui_aspect_ratio;
ot_venc_h265_vui_time_info vui_time_info;
ot_venc_vui_video_signal vui_video_signal;
ot_venc_vui_bitstream_restric vui_bitstream_restric;
} ot_venc_h265_vui;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_h265_vui
ss_mpi_venc_get_h265_vui
ot_venc_vui_aspect_ratio¶
【说明】
定义H.264/H.265协议编码通道Vui中AspectRatio信息的结构体。
【定义】
typedef struct
{
td_u8 aspect_ratio_info_present_flag;
td_u8 aspect_ratio_idc;
td_u8 overscan_info_present_flag;
td_u8 overscan_appropriate_flag;
td_u16 sar_width;
td_u16 sar_height;
} ot_venc_vui_aspect_ratio;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_h264_vui_time_info¶
【说明】
定义H.264协议编码通道Vui中Time_Info信息的结构体。
【定义】
typedef struct {
td_u8 timing_info_present_flag;
td_u8 fixed_frame_rate_flag;
td_u32 num_units_in_tick;
td_u32 time_scale;
} ot_venc_h264_vui_time_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_h265_vui_time_info¶
【说明】
定义H.265协议编码通道Vui中Time_Info信息的结构体。
【定义】
typedef struct {
td_u32 timing_info_present_flag;
td_u32 num_units_in_tick;
td_u32 time_scale;
td_u32 num_ticks_poc_diff_one_minus1;
} ot_venc_h265_vui_time_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_vui_video_signal¶
【说明】
定义H.264/H.265协议编码通道Vui中信息的Video_Signal结构体。
【定义】
typedef struct {
td_u8 video_signal_type_present_flag;
td_u8 video_format;
td_u8 video_full_range_flag;
td_u8 colour_description_present_flag;
td_u8 colour_primaries;
td_u8 transfer_characteristics;
td_u8 matrix_coefficients;
} ot_venc_vui_video_signal;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_vui_bitstream_restric¶
【说明】
定义H.264/H.265协议编码通道Vui中信息的Bitstream_Restriction结构体。
【定义】
typedef struct {
td_u8 bitstream_restriction_flag ;
} ot_venc_vui_bitstream_restric;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_jpeg_param¶
【说明】
定义JPEG协议编码通道高级参数结构体。
【定义】
typedef struct {
td_u32 qfactor;
td_u8 y_qt[OT_VENC_JPEG_QT_COEF_NUM];
td_u8 cb_qt[OT_VENC_JPEG_QT_COEF_NUM];
td_u8 cr_qt[OT_VENC_JPEG_QT_COEF_NUM];
td_u32 mcu_per_ecs;
td_bool ecs_output_en;
} ot_venc_jpeg_param;
【成员】
每个ECS中包含多少个MCU,系统默认为0,表示不划分Ecs。 mcu_per_ecs:[0, min{(picwidth+15)>>4 x (picheight+15)>>4 x 2, 65535}] |
|
仅SS928V100/SS626V100支持,不支持的默认值为TD_FALSE,当ecs_output_en为TD_TRUE时,通道属性is_by_frame必须为TD_FALSE。 |
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_jpeg_param
ss_mpi_venc_get_jpeg_param
ot_venc_mjpeg_param¶
【说明】
定义MJPEG协议编码通道高级参数结构体。
【定义】
typedef struct {
td_u8 y_qt[OT_VENC_MJPEG_QT_COEF_NUM];
td_u8 cb_qt[OT_VENC_MJPEG_QT_COEF_NUM];
td_u8 cr_qt[OT_VENC_MJPEG_QT_COEF_NUM];
td_u32 mcu_per_ecs;
td_bool ecs_output_en;
} ot_venc_mjpeg_param;
【成员】
每个ECS中包含多少个MCU,系统默认为0,表示不划分ECS。 mcu_per_ecs:[0,min{(picwidth+15)>>4 x (picheight+15)>>4 x 2, 65535}] |
|
仅SS928V100/SS626V100支持,不支持的默认值为TD_FALSE,当ecs_output_en为TD_TRUE时,通道属性is_by_frame必须为TD_FALSE。 |
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_mjpeg_param
ss_mpi_venc_get_mjpeg_param
ot_venc_roi_attr¶
【说明】
定义编码感兴趣区域信息。
【定义】
typedef struct {
td_u32 idx;
td_bool enable;
td_bool is_abs_qp;
td_s32 qp;
ot_rect rect;
} ot_venc_roi_attr;
【成员】
|
|
QP值,当QP模式为TD_FALSE时,qp为QP偏移,qp范围[-51,51],当QP模式为TD_TRUE时,qp为宏块QP值,qp范围[0,51] |
|
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_roi_attr
ss_mpi_venc_get_roi_attr
ot_venc_roi_for_frame¶
【说明】
定义感兴趣区域应用类型。
【定义】
typedef enum {
OT_VENC_ROI_FOR_I = 0,
OT_VENC_ROI_FOR_P_B,
OT_VENC_ROI_FOR_VI,
OT_VENC_ROI_FOR_BUTT,
} ot_venc_roi_for_frame;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_roi_attr_ex¶
【说明】
定义编码通道感兴趣区域编码高级属性。
【定义】
typedef struct {
td_u32 idx;
td_bool enable[OT_VENC_ROI_FOR_BUTT];
td_bool is_abs_qp[OT_VENC_ROI_FOR_BUTT];
td_s32 qp[OT_VENC_ROI_FOR_BUTT];
ot_rect rect[OT_VENC_ROI_FOR_BUTT];
} ot_venc_roi_attr_ex;
【成员】
|
|
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_roi_attr_ex
ss_mpi_venc_get_roi_attr_ex
ot_venc_jpeg_roi_attr¶
【说明】
JPEG和MJPEG定义编码感兴趣区域信息,而 H.264/H.265 的 ROI 设置需使用其他接口。
【定义】
typedef struct {
td_u32 idx;
td_bool enable;
td_u32 level;
ot_rect rect;
} td_venc_jpeg_roi_attr;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_jpeg_roi_attr
ss_mpi_venc_get_jpeg_roi_attr
ot_venc_roi_bg_frame_rate¶
【说明】
定义非编码感兴趣区域帧率。
【定义】
typedef struct {
td_s32 src_frame_rate;
td_s32 dst_frame_rate;
} ot_venc_roi_bg_frame_rate;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_roi_bg_frame_rate
ss_mpi_venc_get_roi_bg_frame_rate
ot_venc_ref_param¶
【说明】
定义H.264/H.265编码的高级跳帧参考参数。
【定义】
typedef struct {
td_u32 base;
td_u32 enhance;
td_bool pred_en;
td_bool base_qp_delta_en;
td_s32 base_qp_delta;
} ot_venc_ref_param;
【成员】
代表base层的帧是否被base层其他帧用作参考。当pred_en 设置为TD_FALSE时,等同于base设置为无限大,base层的所有帧都参考IDR帧。 |
|
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_ref_param
ss_mpi_venc_get_ref_param
ot_venc_rc_attr¶
【说明】
定义编码通道码率控制器属性。
【定义】
typedef struct {
ot_venc_rc_mode rc_mode;
union {
ot_venc_h264_cbr h264_cbr;
ot_venc_h264_vbr h264_vbr;
ot_venc_h264_avbr h264_avbr;
ot_venc_h264_qvbr h264_qvbr;
ot_venc_h264_cvbr h264_cvbr;
ot_venc_h264_fixqp h264_fixqp;
ot_venc_h264_qpmap h264_qpmap;
ot_venc_mjpeg_cbr mjpeg_cbr;
ot_venc_mjpeg_vbr mjpeg_vbr;
ot_venc_mjpeg_fixqp mjpeg_fixqp;
ot_venc_h265_cbr h265_cbr;
ot_venc_h265_vbr h265_vbr;
ot_venc_h265_avbr h265_avbr;
ot_venc_h265_qvbr h265_qvbr;
ot_venc_h265_cvbr h265_cvbr;
ot_venc_h265_fixqp h265_fixqp;
ot_venc_h265_qpmap h265_qpmap;
};
} ot_venc_rc_attr;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_rc_mode¶
【说明】
定义编码通道码率控制器模式。
【定义】
typedef enum {
OT_VENC_RC_MODE_H264_CBR = 1,
OT_VENC_RC_MODE_H264_VBR,
OT_VENC_RC_MODE_H264_AVBR,
OT_VENC_RC_MODE_H264_QVBR,
OT_VENC_RC_MODE_H264_CVBR,
OT_VENC_RC_MODE_H264_FIXQP,
OT_VENC_RC_MODE_H264_QPMAP,
OT_VENC_RC_MODE_MJPEG_CBR,
OT_VENC_RC_MODE_MJPEG_VBR,
OT_VENC_RC_MODE_MJPEG_FIXQP,
OT_VENC_RC_MODE_H265_CBR,
OT_VENC_RC_MODE_H265_VBR,
OT_VENC_RC_MODE_H265_AVBR,
OT_VENC_RC_MODE_H265_QVBR,
OT_VENC_RC_MODE_H265_CVBR,
OT_VENC_RC_MODE_H265_FIXQP,
OT_VENC_RC_MODE_H265_QPMAP,
OT_VENC_RC_MODE_BUTT,
} ot_venc_rc_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_rc_qpmap_mode¶
【说明】
定义编码通道QPMAP模式下CU32、CU64 QP值的取值方式。
【定义】
typedef enum {
OT_VENC_RC_QPMAP_MODE_MEAN_QP = 0,
OT_VENC_RC_QPMAP_MODE_MIN_QP,
OT_VENC_RC_QPMAP_MODE_MAX_QP,
OT_VENC_RC_QPMAP_MODE_BUTT,
} ot_venc_rc_qpmap_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_h264_cbr¶
【说明】
定义H.264编码通道CBR属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate ;
td_u32 bit_rate;
} ot_venc_h264_cbr;
【成员】
【注意事项】
设置源帧率src_frame_rate时:
VENC帧率控制为增帧模式,则src_frame_rate应设置为VENC的输入帧率。
VENC帧率控制为减帧模式或不进行帧率控制,src_frame_rate应该设置为产生TimeRef的实际帧率,RC需要根据src_frame_rate统计实际的帧率以及进行码率控制。
如果编码图像的源是VI时,则src_frame_rate设置为VI的实际输出帧率,因为TimeRef是在VI输出的时候产生;
如果VI和VPSS在线时,则src_frame_rate设置为VPSS的实际输出帧率,因为TimeRef是在VPSS输出的时候产生;
如果VI和VPSS离线时,由于VPSS只有组的帧率控制,VPSS组的源帧率设置应该和编码的src_frame_rate设置相同,src_frame_rate设置为VI的实际输出帧率,因为TimeRef是在VI输出的时候产生。
假设VI的输出帧率是30:
如果VENC不进行帧率控制,src_frame_rate应该设置为30。
如果VENC进行帧率控制,VENC帧率控制如果为增帧模式,dst_frame_rate应该设置大于30,VENC帧率控制如果为减帧模式,dst_frame_rate应该设置小于30。
如果VENC帧率控制为减帧模式,同时RC进行了帧率控制,那么最终的帧率将以两者的较小值为准。比如VENC设置为源帧率30帧,目标帧率6帧,而RC设置为源帧率30,目标帧率为10帧,那么最终的目标帧率为6帧。
设置目标帧率dst_frame_rate时,高16位用于表示分母,低16位表示分子。
如果用户设置目标帧率为整数,设置分母高16位为0即可表示整数。例如设置src_frame_rate等于25,dst_frame_rate等于12,则表示将从25帧输入图像中取出12帧进行编码,其余13帧将丢掉。
如果设置src_frame_rate等于25,dst_frame_rate等于15/2,则表示要求编码器2秒钟编码15帧。
dst_frame_rate的设置方式如下:如果要设置为整数帧率25,则可采用以下方式dst_frame_rate= 25;如果要设置为分数帧率15/2,则采用以下方式:dst_frame_rate= 15+(2<<16)。
当使用VENC和RC两级帧率控制时,VENC的目标帧率小于RC的目标帧率,比如VENC设置为源帧率30帧,目标帧率6帧,而RC设置为源帧率30,目标帧率为10帧,这种情况可能会引起码率控制不准确;建议用户设置VENC的目标帧率大于等于RC的目标帧率,以此来达到用户的目标帧率。
当VPSS只绑定编码且使用AUTO模式时,使用VENC的帧率控制可以节省VPSS的性能。
如果设置的码率超过芯片手册中规定的最大实时码率,则不能保证实时编码。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h264_vbr¶
【说明】
定义H.264编码通道VBR属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate ;
td_u32 max_bit_rate;
} ot_venc_h264_vbr;
【成员】
【注意事项】
请参见ot_venc_h264_cbr关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h264_avbr¶
【说明】
定义H.264编码通道AVBR属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 max_bit_rate;
} ot_venc_h264_avbr;
【成员】
【注意事项】
请参见ot_venc_h264_cbr关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h264_qvbr¶
【说明】
定义H.264编码通道QVBR属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 target_bit_rate;
} ot_venc_h264_qvbr;
【成员】
【注意事项】
请参见ot_venc_h264_cbr关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h264_cvbr¶
【说明】
定义H.264编码通道CVBR属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 max_bit_rate;
td_u32 short_term_stats_time;
td_u32 long_term_stats_time;
td_u32 long_term_max_bit_rate;
td_u32 long_term_min_bit_rate;
} ot_venc_h264_cvbr;
【成员】
|
取值范围:[OT_VENC_MIN_BITRATE, max_bit_rate] |
|
【注意事项】
请参见ot_venc_h264_cbr 关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h264_fixqp¶
【说明】
定义H.264编码通道Fixqp属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 i_qp;
td_u32 p_qp;
td_u32 b_qp;
} ot_venc_h264_fixqp;
【成员】
【注意事项】
请参见ot_venc_h264_cbr 关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h264_qpmap¶
【说明】
定义H.264编码通道QPMAP属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
} ot_venc_h264_qpmap;
【成员】
【注意事项】
请参见ot_venc_h264_cbr 关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_mjpeg_fixqp¶
【说明】
定义MJPEG编码通道Fixqp属性结构。
【定义】
typedef struct {
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 qfactor;
} ot_venc_mjpeg_fixqp;
【成员】
【注意事项】
请参见ot_venc_h264_cbr 关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_mjpeg_cbr¶
【说明】
定义MJPEG编码通道CBR属性结构。
【定义】
typedef struct {
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 bit_rate;
} ot_venc_mjpeg_cbr;
【成员】
【注意事项】
请参见ot_venc_h264_cbr 关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_mjpeg_vbr¶
【说明】
定义MJPEG编码通道VBR属性结构。
【定义】
typedef struct {
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 max_bit_rate;
} ot_venc_mjpeg_vbr;
【成员】
【注意事项】
请参见ot_venc_h264_cbr 关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h265_cbr¶
【说明】
定义H.265编码通道CBR属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate ;
td_u32 bit_rate;
} ot_venc_h265_cbr;
【成员】
【注意事项】
请参见ot_venc_h264_cbr 关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h265_vbr¶
【说明】
定义 H.265编码通道VBR属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate ;
td_u32 max_bit_rate;
} ot_venc_h265_vbr;
【成员】
【注意事项】
请参见ot_venc_h264_cbr 关于src_frame_rate和dst_frame_rate的说明
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h265_avbr¶
【说明】
定义 H.265编码通道AVBR属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 max_bit_rate;
} ot_venc_h265_avbr;
【成员】
【注意事项】
请参见ot_venc_h264_cbr关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h265_qvbr¶
【说明】
定义H.265编码通道QVBR属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 target_bit_rate;
} ot_venc_h265_qvbr;
【成员】
【注意事项】
请参见ot_venc_h264_cbr 关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h265_cvbr¶
【说明】
定义H.265编码通道CVBR属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 max_bit_rate;
td_u32 short_term_stats_time;
td_u32 long_term_stats_time;
td_u32 long_term_max_bit_rate;
td_u32 long_term_min_bit_rate;
} ot_venc_h265_cvbr;
【成员】
【注意事项】
请参见ot_venc_h264_cbr 关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h265_fixqp¶
【说明】
定义H.265编码通道Fixqp属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
td_u32 i_qp;
td_u32 p_qp;
td_u32 b_qp;
} ot_venc_h265_fixqp;
【成员】
【注意事项】
请参见ot_venc_h264_cbr 关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_h265_qpmap¶
【说明】
定义H.265编码通道QPMAP属性结构。
【定义】
typedef struct {
td_u32 gop;
td_u32 stats_time;
td_u32 src_frame_rate;
td_u32 dst_frame_rate;
ot_venc_rc_qpmap_mode qpmap_mode;
} ot_venc_h265_qpmap;
【成员】
【注意事项】
请参见ot_venc_h264_cbr 关于src_frame_rate和dst_frame_rate的说明。
【相关数据类型及接口】
ss_mpi_venc_create_chn
ot_venc_super_frame_mode¶
【说明】
定义码率控制中超大帧处理模式。
【定义】
typedef enum {
OT_VENC_SUPER_FRAME_NONE = 0,
OT_VENC_SUPER_FRAME_DISCARD,
OT_VENC_SUPER_FRAME_REENCODE,
OT_VENC_SUPER_FRAME_BUTT
} ot_venc_super_frame_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_get_super_frame_strategy
ot_venc_h264_vbr_param¶
【说明】
定义H.264协议编码通道VBR码率控制模式高级参数配置。
【定义】
typedef struct {
td_s32 chg_pos;
td_u32 max_i_proportion;
td_u32 min_i_proportion;
td_s32 max_reencode_times;
td_bool qpmap_en;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
} ot_venc_h264_vbr_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_h264_avbr_param¶
【说明】
定义H.264协议编码通道AVBR码率控制模式高级参数配置。
【定义】
typedef struct {
td_s32 chg_pos;
td_u32 max_i_proportion;
td_u32 min_i_proportion;
td_s32 max_reencode_times;
td_bool qpmap_en;
td_s32 min_still_percent;
td_u32 max_still_qp;
td_u32 min_still_psnr;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_u32 min_qp_delta;
td_u32 motion_sensitivity;
td_bool save_bitrate_en;
} ot_venc_h264_avbr_param;
【成员】
|
I帧:FrameLevelMinQp = min_qp_delta +min_i_qp |
|
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_h264_qvbr_param¶
【说明】
定义H.264协议编码通道QVBR码率控制模式高级参数配置。
【定义】
typedef struct {
td_u32 max_i_proportion;
td_u32 min_i_proportion;
td_s32 max_reencode_times;
td_bool qpmap_en;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_s32 max_bit_percent;
td_s32 min_bit_percent;
td_s32 max_psnr_fluctuate;
td_s32 min_psnr_fluctuate;
} ot_venc_h264_qvbr_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_h264_cvbr_param¶
【说明】
定义H.264协议编码通道CVBR码率控制模式高级参数配置。
【定义】
typedef struct {
td_u32 max_i_proportion;
td_u32 min_i_proportion;
td_s32 max_reencode_times;
td_bool qpmap_en;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_u32 min_qp_delta;
td_u32 max_qp_delta;
td_u32 extra_bit_percent;
td_u32 long_term_stats_time_unit;
td_bool save_bitrate_en;
} ot_venc_h264_cvbr_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_h264_cbr_param¶
【说明】
定义H.264协议编码通道CBR新版码率控制模式高级参数配置。
【定义】
typedef struct {
td_u32 max_i_proportion;
td_u32 min_i_proportion;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_s32 max_reencode_times;
td_bool qpmap_en;
} ot_venc_h264_cbr_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_mjpeg_cbr_param¶
【说明】
定义MJPEG协议编码通道CBR码率控制模式高级参数配置。
【定义】
typedef struct {
td_u32 max_qfactor;
td_u32 min_qfactor;
} ot_venc_mjpeg_cbr_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_mjpeg_vbr_param¶
【说明】
定义MJPEG协议编码通道VBR码率控制模式高级参数配置。
【定义】
typedef struct {
td_s32 chg_pos;
td_u32 max_qfactor;
td_u32 min_qfactor;
} ot_venc_mjpeg_vbr_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_h265_vbr_param¶
【说明】
定义H.265协议编码通道VBR码率控制模式高级参数配置。
【定义】
typedef struct {
td_s32 chg_pos;
td_u32 max_i_proportion;
td_u32 min_i_proportion;
td_s32 max_reencode_times;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_bool qpmap_en;
ot_venc_rc_qpmap_mode qpmap_mode;
} ot_venc_h265_vbr_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_h265_avbr_param¶
【说明】
定义H.265协议编码通道AVBR码率控制模式高级参数配置。
【定义】
typedef struct {
td_s32 chg_pos;
td_u32 max_i_proportion;
td_u32 min_i_proportion;
td_s32 max_reencode_times;
td_s32 min_still_percent;
td_u32 max_still_qp;
td_u32 min_still_psnr;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_u32 min_qp_delta;
td_u32 motion_sensitivity;
td_bool qpmap_en;
ot_venc_rc_qpmap_mode qpmap_mode;
} ot_venc_h265_avbr_param;
【成员】
|
I帧:FrameLevelMinQp = min_qp_delta+ min_i_qp |
|
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_h265_qvbr_param¶
【说明】
定义H.265协议编码通道QVBR码率控制模式高级参数配置。
【定义】
typedef struct {
td_u32 max_i_proportion;
td_u32 min_i_proportion;
td_s32 max_reencode_times;
td_bool qpmap_en;
ot_venc_rc_qpmap_mode qpmap_mode;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_s32 max_bit_percent;
td_s32 min_bit_percent;
td_s32 max_psnr_fluctuate;
td_s32 min_psnr_fluctuate;
} ot_venc_h265_qvbr_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_h265_cvbr_param¶
【说明】
定义H.265协议编码通道CVBR码率控制模式高级参数配置。
【定义】
typedef struct {
td_u32 max_i_proportion;
td_u32 min_i_proportion;
td_s32 max_reencode_times;
td_bool qpmap_en;
ot_venc_rc_qpmap_mode qpmap_mode;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_u32 min_qp_delta;
td_u32 max_qp_delta;
td_u32 extra_bit_percent;
td_u32 long_term_stats_time_unit;
} ot_venc_h265_cvbr_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_h265_cbr_param¶
【说明】
定义H.265协议编码通道CBR新版码率控制模式高级参数配置。
【定义】
typedef struct {
td_u32 max_i_proportion;
td_u32 min_i_proportion;
td_u32 max_qp;
td_u32 min_qp;
td_u32 max_i_qp;
td_u32 min_i_qp;
td_s32 max_reencode_times;
td_bool qpmap_en;
ot_venc_rc_qpmap_mode qpmap_mode;
} ot_venc_h265_cbr_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_rc_param¶
【说明】
定义编码通道的码率控制高级参数。
【定义】
typedef struct {
td_u32 threshold_i[OT_VENC_TEXTURE_THRESHOLD_SIZE];
td_u32 threshold_p[OT_VENC_TEXTURE_THRESHOLD_SIZE];
td_u32 threshold_b[OT_VENC_TEXTURE_THRESHOLD_SIZE];
td_u32 direction;
td_u32 row_qp_delta;
td_s32 first_frame_start_qp;
ot_venc_scene_chg_detect scene_chg_detect;
union {
ot_venc_h264_cbr_param h264_cbr_param;
ot_venc_h264_vbr_param h264_vbr_param;
ot_venc_h264_avbr_param h264_avbr_param;
ot_venc_h264_qvbr_param h264_qvbr_param;
ot_venc_h264_cvbr_param h264_cvbr_param;
ot_venc_h265_cbr_param h265_cbr_param;
ot_venc_h265_vbr_param h265_vbr_param;
ot_venc_h265_avbr_param h265_avbr_param;
ot_venc_h265_qvbr_param h265_qvbr_param;
ot_venc_h265_cvbr_param h265_cvbr_param;
ot_venc_mjpeg_cbr_param mjpeg_cbr_param;
ot_venc_mjpeg_vbr_param mjpeg_vbr_param;
};
} ot_venc_rc_param;
【成员】
设置第一帧的起始Qp值,CBR/VBR/AVBR/QVBR/CVBR有效。 first_frame_start_qp如果为-1则第一帧的起始QP由编码器内部计算,如果为其它合法值则由用户指定该值为第一帧起始QP。 |
|
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_jpeg_enc_mode¶
【说明】
定义JPEG编码通道的抓拍模式。
【定义】
typedef enum {
OT_VENC_JPEG_ENC_ALL = 0,
OT_VENC_JPEG_ENC_SNAP = 1,
OT_VENC_JPEG_ENC_BUTT,
} ot_venc_jpeg_enc_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_jpeg_enc_mode
ss_mpi_venc_get_jpeg_enc_mode
ot_venc_h265_pu¶
【说明】
定义H.265协议编码通道PU参数结构体。
【定义】
typedef struct {
td_u32 constrained_intra_pred_flag;
td_u32 strong_intra_smoothing_enabled_flag;
} ot_venc_h265_pu;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_h265_pu
ss_mpi_venc_get_h265_pu
ot_venc_h265_trans¶
【说明】
定义H.265协议编码通道变换量化的结构体。
【定义】
typedef struct {
td_s32 cb_qp_offset;
td_s32 cr_qp_offset;
td_bool scaling_list_en;
td_bool scaling_list_tu4_valid;
td_u8 inter_scaling_list4x4[2][OT_VENC_SCALING_LIST_SIZE_16];
td_u8 intra_scaling_list4x4[2][OT_VENC_SCALING_LIST_SIZE_16];
td_bool scaling_list_tu8_valid;
td_u8 inter_scaling_list8x8[2][OT_VENC_SCALING_LIST_SIZE_64];
td_u8 intra_scaling_list8x8[2][OT_VENC_SCALING_LIST_SIZE_64];
td_bool scaling_list_tu16_valid;
td_u8 inter_scaling_list16x16[2][OT_VENC_SCALING_LIST_SIZE_64];
td_u8 intra_scaling_list16x16[2][OT_VENC_SCALING_LIST_SIZE_64];
td_bool scaling_list_tu32_valid;
td_u8 inter_scaling_list32x32[OT_VENC_SCALING_LIST_SIZE_64];
td_u8 intra_scaling_list32x32[OT_VENC_SCALING_LIST_SIZE_64];
} ot_venc_h265_trans;
【成员】
inter_scaling_list4x4[2][OT_VENC_SCALING_LIST_SIZE_16] |
|
intra_scaling_list4x4[2][OT_VENC_SCALING_LIST_SIZE_16] |
|
inter_scaling_list8x8[2][OT_VENC_SCALING_LIST_SIZE_64] |
|
intra_scaling_list8x8[2][OT_VENC_SCALING_LIST_SIZE_64] |
|
inter_scaling_list16x16[2][OT_VENC_SCALING_LIST_SIZE_64] |
|
intra_scaling_list16x16[2][OT_VENC_SCALING_LIST_SIZE_64] |
|
inter_scaling_list32x32[OT_VENC_SCALING_LIST_SIZE_64] |
|
intra_scaling_list32x32[OT_VENC_SCALING_LIST_SIZE_64] |
【注意事项】
在场景配置为OT_VENC_SCENE_1 时,为平衡图像质量,cb_qp_offset、cr_qp_offset默认配置为-3。
在场景配置为OT_VENC_SCENE_0、OT_VENC_SCENE_2时,cb_qp_offset、cr_qp_offset默认值不同解决方案有差异,其中SS928V100默认值为-3,其他值为0。
scaling_list_en为0时为无量化表。
scaling_list_en为1,scaling_list_tu4_valid/scaling_list_tu8_valid/ scaling_list_tu16_valid/ scaling_list_tu32_valid为0时,为协议默认量化表。
scaling_list_en/scaling_list_tu4_valid/scaling_list_tu8_valid/ scaling_list_tu16_valid/ scaling_list_tu32_valid为1时,为用户自定义量化表。
scaling_list_tu4_valid/scaling_list_tu8_valid/ scaling_list_tu16_valid/ scaling_list_tu32_valid仅支持同时为0或1。
SS528V100/SS625V100/SS524V100/SS522V101/SS928V100/SS626V100仅支持无量化表。
【相关数据类型及接口】
ss_mpi_venc_set_h265_trans
ss_mpi_venc_get_h265_trans
ot_venc_h265_entropy¶
【说明】
定义H.265协议编码通道熵编码的结构体。
【定义】
typedef struct {
td_u32 cabac_init_flag;
} ot_venc_h265_entropy;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_h265_entropy
ss_mpi_venc_get_h265_entropy
ot_venc_h265_dblk¶
【说明】
定义H.265协议编码通道Deblocking的结构体。
【定义】
typedef struct {
td_u32 slice_deblocking_filter_disabled_flag;
td_s32 slice_beta_offset_div2;
td_s32 slice_tc_offset_div2;
td_u32 loop_filter_across_tiles_enabled_flag;
td_u32 loop_filter_across_slices_enabled_flag;
} ot_venc_h265_dblk;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_h265_dblk
ss_mpi_venc_get_h265_dblk
ot_venc_h265_sao¶
【说明】
定义H.265协议编码通道Sao的结构体。
【定义】
typedef struct {
td_u32 slice_sao_luma_flag;
td_u32 slice_sao_chroma_flag;
} ot_venc_h265_sao;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_h265_sao
ss_mpi_venc_get_h265_sao
ot_venc_frame_lost_mode¶
【说明】
瞬时码率超过阈值时的丢帧模式。
【定义】
typedef enum {
OT_VENC_FRAME_LOST_NORMAL = 0,
OT_VENC_FRAME_LOST_P_SKIP,
OT_VENC_FRAME_LOST_BUTT,
} ot_venc_frame_lost_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_frame_lost_strategy
ss_mpi_venc_get_frame_lost_strategy
ot_venc_frame_lost_strategy¶
【说明】
瞬时码率超过阈值时的丢帧策略参数。
【定义】
typedef struct {
td_bool enable;
td_u32 bit_rate_threshold;
ot_venc_frame_lost_mode mode;
td_u32 frame_gap;
} ot_venc_frame_lost_strategy;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_frame_lost_strategy
ot_venc_reencode_priority¶
【说明】
超大帧重编优先级枚举。
【定义】
typedef enum {
OT_VENC_REENCODE_BIT_RATE_FIRST = 1,
OT_VENC_REENCODE_FRAME_BITS_FIRST,
OT_VENC_REENCODE_BUTT,
} ot_venc_reencode_priority;
【成员】
【注意事项】
此优先级只在超大帧重编时有效。
【相关数据类型及接口】
无。
ot_venc_super_frame_strategy¶
【说明】
超大帧处理策略参数。
【定义】
typedef struct {
ot_venc_super_frame_mode super_frame_mode;
td_u32 i_frame_bits_threshold;
td_u32 p_frame_bits_threshold;
td_u32 b_frame_bits_threshold;
ot_venc_reencode_priority reencode_priority;
} ot_venc_super_frame_strategy;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_super_frame_strategy
ot_venc_intra_refresh_mode¶
【说明】
P帧刷Islice模式定义。
【定义】
typedef enum {
OT_VENC_INTRA_REFRESH_ROW = 0,
OT_VENC_INTRA_REFRESH_COLUMN,
OT_VENC_INTRA_REFRESH_BUTT
} ot_venc_intra_refresh_mode;
【成员】
【注意事项】
无
【相关数据类型及接口】
ot_venc_intra_refresh¶
【说明】
P帧刷Islice控制参数。
【定义】
typedef struct {
td_bool enable;
ot_venc_intra_refresh_mode mode;
td_u32 refresh_num;
td_u32 request_i_qp;
} ot_venc_intra_refresh;
【成员】
每次I宏块刷新行数或者列数,可以通过这个变量控制刷新的速度及码流的平稳程度。刷新行数或者列数越多,刷新的速度越快,但是码流平稳度越差;刷新的行数或者列数越少,刷新的速度越慢,但是码流平稳度越好。 |
|
I帧QP值,在帧内刷新模式,可能方案还需要插入IDR帧,设置I帧QP用于控制插入的IDR帧的质量,质量越好IDR帧大小越大;质量越差IDR帧大小越小。 |
【注意事项】
无
【相关数据类型及接口】
ss_mpi_venc_get_intra_refresh
ss_mpi_venc_set_intra_refresh
ot_venc_mod_param¶
【说明】
编码相关模块参数。
【定义】
typedef struct {
ot_venc_mod_type mod_type;
union {
ot_venc_venc_mod_param venc_mod_param;
ot_venc_h264_mod_param h264_mod_param;
ot_venc_h265_mod_param h265_mod_param;
ot_venc_jpeg_mod_param jpeg_mod_param;
};
} ot_venc_mod_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_get_mod_param
ss_mpi_venc_set_mod_param
ot_venc_mod_type¶
【说明】
编码相关模块参数类型。
【定义】
typedef enum {
OT_VENC_MOD_VENC = 1,
OT_VENC_MOD_H264,
OT_VENC_MOD_H265,
OT_VENC_MOD_JPEG,
OT_VENC_MOD_RC,
OT_VENC_MOD_BUTT
} ot_venc_mod_type;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_venc_mod_param¶
【说明】
ssxx_venc.ko模块参数。
【定义】
typedef struct {
td_u32 buf_cache;
td_u32 frame_buf_recycle;
} ot_venc_venc_mod_param;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_h264_mod_param¶
【说明】
ssxx_h264e.ko模块参数。
【定义】
typedef struct {
td_u32 one_stream_buf;
td_u32 mini_buf_mode;
td_u32 low_power_mode;
ot_vb_src vb_src;
td_bool qp_hist_en;
td_u32 max_user_data_len;
} ot_venc_h264_mod_param;
【成员】
|
0:Qp直方图不输出,即ot_venc_h264_adv_stream_info中的成员变量 qp_hist[]为全0。 1:Qp直方图输出,即ot_venc_h264_adv_stream_info中的成员变量 qp_hist[]为实际的当前帧的QP直方图 |
|
【注意事项】
无。
【相关数据类型及接口】
ot_venc_h265_mod_param¶
【说明】
ssxx_h265.ko模块参数。
【定义】
typedef struct {
td_u32 one_stream_buf;
td_u32 mini_buf_mode;
td_u32 low_power_mode;
ot_vb_src vb_src;
td_bool qp_hist_en;
td_u32 max_user_data_len;
} ot_venc_h265_mod_param;
【成员】
|
0:Qp直方图不输出,即ot_venc_h265_adv_stream_info中的成员变量 qp_hist[]为全0。 1:Qp直方图输出,即ot_venc_h265_adv_stream_info中的成员变量 qp_hist[]为实际的当前帧的QP直方图。 |
|
【注意事项】
无。
【相关数据类型及接口】
ot_venc_jpeg_mod_param¶
【说明】
ssxx_jpeg.ko模块中参数。
【定义】
typedef struct {
td_u32 one_stream_buf;
td_u32 mini_buf_mode;
td_u32 clear_stream_buf;
td_u32 dering_mode;
} ot_venc_jpeg_mod_param;
【成员】
|
1:使能去Ring算法,在相同量化表和qfactor的情况下能减少Ring现象并且减小图片文件大小,但也会损失一些图片清晰度和细节。 |
【注意事项】
无。
【相关数据类型及接口】
ot_venc_frame_type¶
【说明】
定义编码帧类型枚举。
【定义】
typedef enum {
OT_VENC_FRAME_TYPE_NONE = 1,
OT_VENC_FRAME_TYPE_IDR,
OT_VENC_FRAME_TYPE_P_SKIP,
OT_VENC_FRAME_TYPE_BUTT
} ot_venc_frame_type;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ot_venc_user_rc_info¶
【说明】
用户码控信息结构体。
【定义】
typedef struct {
td_bool qpmap_valid;
td_bool skip_weight_valid;
td_u32 blk_start_qp;
td_phys_addr_t qpmap_phys_addr;
td_phys_addr_t skip_weight_phys_addr;
ot_venc_frame_type frame_type;
} ot_venc_user_rc_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_send_frame_ex
ot_venc_user_roimap¶
【说明】
用户ROI信息结构体。
【定义】
typedef struct {
td_bool valid;
td_phys_addr_t phys_addr;
} ot_venc_user_roimap;
【成员】
【注意事项】
ROIMap仅支持JPEG和MJPEG协议。
【相关数据类型及接口】
ss_mpi_venc_send_frame_ex
说明:
图像中每16 * 16的块由2个bit表示,2个bit可以表示0~3共4个档位,用以表示该块的降码率等级,等级越高降码率相对越多,图像质量损失也相对越多,与设置JPEG ROI属性接口ss_mpi_venc_set_jpeg_roi_attr参数ot_venc_jpeg_roi_attr中的level意义相同。
JPEG ROIMap表需要内存计算如下: roimap_stride = (width + 1023) / 1024 * 1024 / 64 roimap_size = stride * ((height + 15) / 16 * 16 / 16)
ot_venc_user_frame_info¶
【说明】
用户发送图像信息结构体。
【定义】
typedef struct {
ot_video_frame_info user_frame;
ot_venc_user_rc_info user_rc_info;
ot_venc_user_roimap user_roimap;
} ot_venc_user_frame_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_send_frame_ex
ot_omx_user_rc_info¶
【说明】
用户码控信息结构体。
【定义】
typedef struct {
td_bool rc_info_valid;
td_u32 target_bits;
td_u32 max_qp;
td_u32 min_qp;
td_u32 start_qp;
ot_venc_frame_type frame_type;
} ot_omx_user_rc_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_omx_send_frame
ot_omx_user_frame_info¶
【说明】
用户发送图像信息和外部码率控制信息结构体。
【定义】
typedef struct {
ot_video_frame_info user_frame;
ot_omx_user_rc_info user_rc_info;
} ot_omx_user_frame_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_omx_send_frame
ot_venc_mosaic_mode¶
【说明】
定义马赛克模式。
【定义】
typedef enum
{
OT_VENC_MOSAIC_MODE_RECT = 0,
OT_VENC_MOSAIC_MODE_MAP,
OT_VENC_MOSAIC_MODE_BUTT
} ot_venc_mosaic_mode;
【成员】
【注意事项】
SS528V100/SS625V100/SS522V101/SS524V100/SS626V100暂不支持复合编码。
SS928V100仅支持OT_VENC_MOSAIC_MODE_MAP模式。
【相关数据类型及接口】
ss_mpi_venc_send_multi_frame
ot_venc_mosaic_pixel_yuv¶
【说明】
定义纯色填充的颜色。
【定义】
typedef struct {
td_u8 data_y;
td_u8 data_u;
td_u8 data_v;
} ot_venc_mosaic_pixel_yuv;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_send_multi_frame
ot_venc_mosaic_rect¶
【说明】
马赛克rect模式的参数结构体。
【定义】
typedef struct {
td_u32 rect_num;
ot_rect rect[OT_VENC_MAX_MOSAIC_RECT_NUM];
} ot_venc_mosaic_rect;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_send_multi_frame
ot_venc_mosaic_map¶
【说明】
马赛克map模式的参数结构体。
【定义】
typedef struct {
td_bool valid;
td_phys_addr_t phys_addr;
td_bool specified_yuv_en;
ot_venc_mosaic_pixel_yuv pixel_yuv;
} ot_venc_mosaic_map;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_send_multi_frame
ot_venc_mosaic_info¶
【说明】
马赛克信息结构体。
【定义】
typedef struct {
ot_venc_mosaic_mode mode;
ot_mosaic_blk_size blk_size;
union {
ot_venc_mosaic_rect rect_param;
ot_venc_mosaic_map map_param;
};
} ot_venc_mosaic_info;
【成员】
【注意事项】
SS528V100/SS625V100/SS522V101/SS524V100/SS626V100暂不支持复合编码。
【相关数据类型及接口】
ss_mpi_venc_send_multi_frame
ot_venc_multi_frame_info¶
【说明】
用户发送多帧图像及马赛克信息结构体。
【定义】
typedef struct {
td_u32 frame_num;
ot_video_frame_info frame[OT_VENC_MAX_FRAME_NUM];
ot_venc_mosaic_info mosaic_info;
} ot_venc_multi_frame_info;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_send_multi_frame
ot_venc_chn_config¶
【说明】
编码通道配置。
【定义】
typedef struct {
td_bool mosaic_en;
td_bool composite_enc_en;
td_u32 quality_level
} ot_venc_chn_config;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_send_multi_frame
ot_venc_sse_rgn¶
【说明】
SSERegion模块中参数。
【定义】
typedef struct {
td_u32 idx;
td_bool enable;
ot_rect rect;
} ot_venc_sse_rgn;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_sse_rgn
ss_mpi_venc_get_sse_rgn
ot_venc_chn_param¶
【说明】
定义Venc通道参数结构体。
【定义】
typedef struct {
td_bool color_to_grey_en;
td_u32 priority;
td_u32 max_stream_cnt;
td_u32 poll_wake_up_frame_cnt;
ot_crop_info crop_info;
ot_frame_rate_ctrl frame_rate;
} ot_venc_chn_param;
【成员】
【注意事项】
crop_info结构体的成员:
rect.x必须16像素对齐;
rect.y必须2像素对齐;
rect.width,rect.height满足对应编码通道的宽高约束。
frame_rate结构体的成员:
src_frame_rate:表示进入通道的帧率,以fps为单位。
取值范围:-1或[1, 240]
dst_frame_rate:表示通道输出的帧率,以fps为单位。
取值范围:Jpeg:-1或[1, src_frame_rate];H.264/H.265/Mjpeg:-1或[1, 240]
【相关数据类型及接口】
ss_mpi_venc_set_chn_param
ss_mpi_venc_get_chn_param
ot_venc_fg_protect¶
【说明】
前景保护参数结构体。
【定义】
typedef struct {
td_bool enable;
td_u32 direction;
td_u32 gain;
td_u32 offset;
td_u32 threshold_p[OT_VENC_TEXTURE_THRESHOLD_SIZE];
td_u32 threshold_b[OT_VENC_TEXTURE_THRESHOLD_SIZE];
} ot_venc_fg_protect;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_fg_protect
ss_mpi_venc_get_fg_protect
ot_venc_scene_mode¶
【说明】
定义编码场景枚举。
【定义】
typedef enum {
OT_VENC_SCENE_0 = 0,
OT_VENC_SCENE_1 = 1,
OT_VENC_SCENE_2 = 2,
OT_VENC_SCENE_BUTT
} ot_venc_scene_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_scene_mode
ss_mpi_venc_get_scene_mode
ot_venc_scene_chg_detect¶
【说明】
编码场景检测控制参数。
【定义】
typedef struct {
td_bool detect_scene_chg_en;
td_bool adapt_insert_idr_frame_en;
} ot_venc_scene_chg_detect;
【成员】
|
使能场景切换检测后,编码器会自动检测场景切换,并且在检测到场景切换后主动调整QP,提升质量;但是如果频繁的出现场景切换,会导致码率升高。云台、车载产品在镜头运动时有较大概率判断为场景切换。建议在运动时设置为TD_FALSE。 |
|
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_param
ss_mpi_venc_get_rc_param
ot_venc_chn_pool¶
【说明】
定义编码通道绑定的VB池结构体。
【定义】
typedef struct {
ot_vb_pool pic_vb_pool;
ot_vb_pool pic_info_vb_pool;
} ot_venc_chn_pool;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_attach_vb_pool
ot_venc_cu_pred¶
【说明】
CU模式选择的倾向性配置结构体
【定义】
typedef struct {
ot_op_mode pred_mode;
td_u32 intra32_cost;
td_u32 intra16_cost;
td_u32 intra8_cost;
td_u32 intra4_cost;
td_u32 inter64_cost;
td_u32 inter32_cost;
td_u32 inter16_cost;
td_u32 inter8_cost;
} ot_venc_cu_pred;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_cu_pred
ss_mpi_venc_get_cu_pred
ot_venc_skip_bias¶
【说明】
SKIP倾向性配置结构体。
【定义】
typedef struct {
td_bool enable;
td_u32 gain;
td_u32 offset;
td_u32 bg_cost;
td_u32 fg_cost;
} ot_venc_skip_bias;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_skip_bias
ss_mpi_venc_get_skip_bias
ot_venc_debreath_effect¶
【说明】
去除呼吸效应参数结构体。
【定义】
typedef struct {
td_bool enable;
td_s32 strength0;
td_s32 strength1;
} ot_venc_debreath_effect;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_debreath_effect
ss_mpi_venc_get_debreath_effect
ot_venc_hierarchical_qp¶
【说明】
QP分层参数结构体。
【定义】
typedef struct {
td_bool enable;
td_s32 qp_delta[OT_VENC_MAX_HIERARCHY_NUM];
td_s32 frame_num[OT_VENC_MAX_HIERARCHY_NUM];
} ot_venc_hierarchical_qp;
【成员】
qp_delta[OT_VENC_MAX_HIERARCHY_NUM] |
|
frame_num[OT_VENC_MAX_HIERARCHY_NUM] |
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_hierarchical_qp
ss_mpi_venc_get_hierarchical_qp
ot_venc_rc_adv_param¶
【说明】
定义RC模块的高级参数,此接口会包含与码流控制算法无关的功能,并且未来版本还有可能扩展。
【定义】
typedef struct {
td_u32 clear_stats_after_set_attr;
} ot_venc_rc_adv_param;
【成员】
设置新的通道码率后,是否清除码率控制的统计信息,默认值为1。 注意:当设置的参数改变统计buffer内存大小时,此时需要重新分配内存或者算法可能读取到未被赋值的内存,此时算法必须清除统计信息。 |
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_rc_adv_param
ss_mpi_venc_get_rc_adv_param
ot_venc_svc_rect_type¶
【说明】
定义智能检测目标框type类型信息。
【定义】
typedef enum {
SVC_RECT_TYPE0,
SVC_RECT_TYPE1,
SVC_RECT_TYPE2,
SVC_RECT_TYPE3,
SVC_RECT_TYPE4,
SVC_RECT_TYPE_BUTT
} ot_venc_svc_rect_type;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_send_svc_region
ss_mpi_venc_get_svc_param
ss_mpi_venc_set_svc_param
ot_venc_svc_map_param¶
【说明】
定义智能编码QpMap,SkipMap值。
【定义】
typedef struct {
td_u8 qpmap_value_i; /* RW;Range: [0, 255] */
td_u8 qpmap_value_p; /* RW;Range: [0, 255] */
td_u8 skipmap_value; /* RW;Range: [0, 255] */
} ot_venc_svc_map_param;
【成员】
【注意事项】
qpmap_value_i,qpmap_value_p取值的意义:
当取值为0,1,2,…,31:对应deltaQP:0,1,2,…,31
当取值为32,33,34,…,63:对应deltaQP:-32,-31,…,-1
当取值为64,65,…,115:对应绝对QP:0,1,2,…,51
当取值为[115, 127]:对应绝对QP为51
当取值为[128,255]:对应强制skip模式
skipmap_value取值的意义:
skipmap_value对应左右两个LCU的Skipweight值;
高4bit代表左LCU的Skipweight值;
低4bit代表右LCU的Skipweight值;
建议高4bit与低4bit设定的skipweight一致,且为避免图像出现缺块现象,skipweight设定值不宜过强。
I帧时,背景与Activity区域的skipweight为0。
【相关数据类型及接口】
ss_mpi_venc_get_svc_param
ss_mpi_venc_set_svc_param
ot_venc_svc_param¶
【说明】
定义智能编码调节参数。
【定义】
typedef struct {
ot_venc_svc_map_param fg_region[SVC_RECT_TYPE_BUTT];
ot_venc_svc_map_param activity_region;
ot_venc_svc_map_param bg_region;
td_bool fg_protect_adaptive_en; /* RW;Range: [0, 1] */
} ot_venc_svc_param;
【成员】
【注意事项】
Activity_region:智能检测结果不稳定时内部自动生成的保护区域,区域设置为前一次智能检测覆盖的区域,整体区域的QpMapValue的值一致。若智能检测结果连续稳定,建议将对应的activity_region区域对应QpMap Value设置为0。
fg_protect_adaptive_en:仅在qpmap_value_i及qpmap_value_p为相对负QP下起作用,若要设定绝对QP,请根据码率、目标框大小的实际情况设定绝对QP值,以免设置不合理带来的码率剧烈波动。
【相关数据类型及接口】
ss_mpi_venc_get_svc_param
ss_mpi_venc_set_svc_param
ot_venc_svc_rect_info¶
【说明】
定义智能检测目标框属性信息。
【定义】
typedef struct {
td_u32 rect_num;
ot_size base_resolution;
ot_rect rect_attr[OT_VENC_MAX_SVC_RECT_NUM];
ot_venc_svc_rect_type detect_type[OT_VENC_MAX_SVC_RECT_NUM];
td_u64 pts;
} ot_venc_svc_rect_info;
【成员】
智能检测目标个数,取值范围[0, OT_VENC_MAX_SVC_RECT_NUM] |
|
【注意事项】
base_resolution要小于或等于开启智能编码功能通道的分辨率。
为保证目标框的图像质量,请自行根据目标的大小及基础分辨率的大小进行合理的扩边处理,保证目标框完全涵盖住目标。
rect_attr:x,y表示框左上角的坐标;width, height表示框的宽,高。需要满足:
x取值范围:[0, base_resolution.width )
y 取值范围:[0, base_resolution.height)
x + width <= base_resolution.width
y + height <= base_resolution.height
【相关数据类型及接口】
ss_mpi_venc_send_svc_region
ot_venc_md_sad_mode¶
【说明】
定义sad计算结果所用方式控制信息。
【定义】
typedef enum {
OT_VENC_MD_SAD_MODE_ZERO = 0,
OT_VENC_MD_SAD_MODE_SEARCH = 1,
OT_VENC_MD_SAD_MODE_BUTT
} ot_venc_md_sad_mode;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_get_md
ss_mpi_venc_set_md
ot_venc_md_param¶
【说明】
定义md检测控制信息。
【定义】
typedef struct {
td_bool online_en;
td_bool sad_stats_en;
td_bool level_stats_en;
ot_venc_md_sad_mode sad_mode;
td_s32 threshold_gain[OT_VENC_MD_THRESHOLD_NUM];
td_s32 threshold_offset[OT_VENC_MD_THRESHOLD_NUM];
td_s32 qp_delta[OT_VENC_MD_LEVEL_NUM];
td_s32 md_skip_weight[OT_VENC_MD_LEVEL_NUM];
} ot_venc_md_param;
【成员】
【注意事项】
sad_stats_en和level_stats_en暂不支持。
md检测算法在I帧下不调节QP,只在P帧调节QP。为保证图像效果,不建议与智能编码(SVC)共同使用。
qp_delta取值的意义:
当取值为0,1,2,…,31:对应qp_delta:0,1,2,…,31
当取值为32,33,34,…,63:对应qp_delta:-32,-31,…,-1
注意:MD算法的qp_delta会与ROI_OSD QP叠加作用,设置ROI_OSD QP时,请考虑到MD qp_delta的影响。
【相关数据类型及接口】
ss_mpi_venc_get_md
ss_mpi_venc_set_md
ot_venc_deblur_param¶
【说明】
定义去背景模糊控制信息。
【定义】
typedef struct {
td_bool deblur_en;
td_bool deblur_adaptive_en;
} ot_venc_deblur_param;
【成员】
【注意事项】
详见请参考ss_mpi_venc_set_deblur接口描述【注意】。
【相关数据类型及接口】
ss_mpi_venc_get_deblur
ss_mpi_venc_set_deblur
ot_venc_param_set_id¶
【说明】
定义H.264/H.265参数集ID。
【定义】
typedef struct {
td_u32 param_set_id;
} ot_venc_param_set_id;
【成员】
【注意事项】
无
【相关数据类型及接口】
ss_mpi_venc_get_param_set_id
ss_mpi_venc_set_param_set_id
ot_venc_h264_poc¶
【说明】
定义H.264协议编码通道POC类型。
【定义】
typedef struct {
td_u32 pic_order_cnt_type;
} ot_venc_h264_poc;
【成员】
【注意事项】
无
【相关数据类型及接口】
ss_mpi_venc_get_h264_poc
ss_mpi_venc_set_h264_poc
ot_venc_jpeg_dering_level¶
【说明】
定义JPEG编码通道的强边去Ring效应强度等级。
【定义】
typedef enum {
OT_VENC_JPEG_DERING_LEVEL_0 = 0,
OT_VENC_JPEG_DERING_LEVEL_1,
OT_VENC_JPEG_DERING_LEVEL_2,
OT_VENC_JPEG_DERING_LEVEL_3,
OT_VENC_JPEG_DERING_LEVEL_BUTT,
} ot_venc_jpeg_dering_level;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_jpeg_dering_level
ss_mpi_venc_get_jpeg_dering_level
ot_venc_deblur_far_bg¶
【说明】
定义运动物体远区域的拖尾和残留区域检测参数结构体。
【定义】
typedef struct {
td_u8 qp_delta;
td_u8 min_qp;
td_u8 max_qp;
} ot_venc_deblur_far_bg;
【成员】
【注意事项】
qp_delta的调节建议范围为[0, 3]之间,调节过大对帧级码控的平稳性产生影响,产生主观图像质量的副作用。
【相关数据类型及接口】
ot_venc_deblur_near_bg¶
【说明】
定义运动物体近区域拖尾和残留区域检测参数结构体。
【定义】
typedef struct {
td_u8 gain;
td_u8 offset;
td_u8 qp_delta;
td_u8 min_qp;
td_u8 max_qp;
} ot_venc_deblur_near_bg;
【成员】
【注意事项】
qp_delta的调节建议范围为【0,2】之间,调节过大对帧级码控的平稳性产生影响,产生主观图像质量的副作用。
【相关数据类型及接口】
ot_venc_adv_deblur¶
【说明】
定义运动物体近/远区域拖尾和残留区域检测参数。
【定义】
typedef struct {
td_bool near_bg_en;
td_bool far_bg_en;
ot_venc_deblur_near_bg near_bg;
ot_venc_deblur_far_bg far_bg;
} ot_venc_adv_deblur;
【成员】
【注意事项】
near_bg_en使能需要打开ot_venc_deblur_param中的deblur_en和关闭deblur_adaptive_en.
far_bg_en使能需要打开ot_venc_deblur_param中的deblur_en和关闭deblur_adaptive_en.
【相关数据类型及接口】
ss_mpi_venc_set_adv_deblur
ss_mpi_venc_get_adv_deblur
ot_venc_jpeg_roi_adv_attr¶
【说明】
JPEG和MJPEG定义编码感兴趣区域高级属性信息。
【定义】
typedef struct {
td_u32 idx;
td_bool enable;
td_u32 fg_level;
td_u32 bg_level;
ot_rect rect;
} ot_venc_jpeg_roi_adv_attr;
【成员】
【注意事项】
无。
【相关数据类型及接口】
ss_mpi_venc_set_jpeg_roi_adv_attr
ss_mpi_venc_get_jpeg_roi_adv_attr
错误码¶
视频编码API错误码如下所示。
表 1 视频编码API错误码