
This change is made to support 100ms VBV delay for aggressive rate control in iris3 hw. Video buffer verifer helps to ensure that encoded stream doesn't overflow or underflow the decoder's buffer. iris3 hw is capable to decode data in 100ms VBV buffer window. Adaptive Blur (Internal encoder feature): This is other enhancement which supports adaptive blur feature on iris3 for CBR_VFR (Constant bit rate_Variable frame rate)/CBR_CFR (Constant bit rate_Constant frame rate) rc types apart from already supported VBR_CFR. Unlike iris2, there is no need to enable CAC. Below are the listed scenarios when it is enabled/disabled on iris3- - Supported only for 8 bits encoding (H.264 & H.265). - By default enabled for VBR_CFR/CBR_VFR/CBR_CFR RC without CAC enabled. - No dependency on CAC to be enabled. - Adaptive Blur is disabled if minquality_VBR is enabled - Adaptive Blur is supported for 3 RC types: VBR_CFR, CBR_VFR & CBR_CFR - If any one of the features (scalar/external blur) enabled, encoder disables adaptive-blur. - Static property available to disable adaptive blur feature Below are the listed scenarios when it is enabled/disabled on iris2- - Supported only for 8 bits encoding (H.264 & H.265). - By default enabled for VBR_CFR RC type with CAC enabled. - Dependency on CAC to be enabled. - Adaptive Blur is disabled if CAC is disabled - Adaptive Blur is disabled if minquality_VBR is enabled - Adaptive Blur is not supported for any other RC types except: VBR_CFR - If any one of the features (scalar/external blur) enabled, encoder disables adaptive-blur. - Static property available to disable adaptive blur feature For backward compatibilty: - Removed CAC as parent from msm_vidc_kalama.c. - Removed cac query from msm_vidc_adjust_blur_type in msm_vidc_control.c. - Moved legacy code to newly created function msm_vidc_adjust_blur_type_iris2(). - Added msm_vidc_adjust_blur_type_iris2 in BLUR_TYPES in msm_vidc_waipio.c Change-Id: I49dec7e2574496d1b32babde55c0187866ca21d2 Signed-off-by: Mahesh Kumar Sharma <quic_smahesh@quicinc.com>
122 行
6.0 KiB
C
122 行
6.0 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2020-2021,, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _MSM_VIDC_CONTROL_H_
|
|
#define _MSM_VIDC_CONTROL_H_
|
|
|
|
#include <media/v4l2_vidc_extensions.h>
|
|
#include "msm_vidc_inst.h"
|
|
#include "msm_vidc_internal.h"
|
|
|
|
int msm_vidc_ctrl_init(struct msm_vidc_inst *inst);
|
|
int msm_vidc_ctrl_deinit(struct msm_vidc_inst *inst);
|
|
int msm_v4l2_op_s_ctrl(struct v4l2_ctrl *ctrl);
|
|
int msm_v4l2_op_g_volatile_ctrl(struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_bitrate(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_dynamic_layer_bitrate(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_bitrate_mode(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_entropy_mode(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_profile(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_ltr_count(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_use_ltr(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_mark_ltr(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_ir_random(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_delta_based_rc(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_transform_8x8(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_chroma_qp_index_offset(void *instance,
|
|
struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_slice_count(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_layer_count(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_gop_size(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_b_frame(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_peak_bitrate(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_hevc_min_qp(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_hevc_max_qp(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_hevc_i_frame_qp(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_hevc_p_frame_qp(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_hevc_b_frame_qp(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_blur_type(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_blur_resolution(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_cac(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_bitrate_boost(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_min_quality(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_lowlatency_mode(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_v4l2_properties(struct msm_vidc_inst *inst);
|
|
int msm_vidc_adjust_session_priority(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_roi_info(void *instance, struct v4l2_ctrl *ctrl);
|
|
int msm_vidc_adjust_all_intra(void *instance, struct v4l2_ctrl *ctrl);
|
|
|
|
int msm_vidc_set_header_mode(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_deblock_mode(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_min_qp(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_max_qp(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_frame_qp(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_req_sync_frame(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_chroma_qp_index_offset(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_slice_count(void* instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_layer_count_and_type(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_gop_size(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_bitrate(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_dynamic_layer_bitrate(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_u32(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_u32_enum(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_constant_quality(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_vbr_related_properties(
|
|
void *instance, enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_cbr_related_properties(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_use_and_mark_ltr(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_nal_length(void* instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_session_priority(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_flip(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_rotation(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_blur_resolution(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_stage(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_pipe(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_csc_custom_matrix(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_session_priority(void* instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_seq_change_at_sync_frame(void *instance);
|
|
int msm_vidc_set_level(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_s32(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_q16(void *instance,
|
|
enum msm_vidc_inst_capability_type cap_id);
|
|
int msm_vidc_set_v4l2_properties(struct msm_vidc_inst *inst);
|
|
int msm_vidc_v4l2_menu_to_hfi(struct msm_vidc_inst *inst,
|
|
enum msm_vidc_inst_capability_type cap_id, u32 *value);
|
|
int msm_vidc_v4l2_to_hfi_enum(struct msm_vidc_inst *inst,
|
|
enum msm_vidc_inst_capability_type cap_id, u32 *value);
|
|
int msm_vidc_update_cap_value(struct msm_vidc_inst *inst, u32 cap,
|
|
s32 adjusted_val, const char *func);
|
|
int msm_vidc_get_parent_value(struct msm_vidc_inst* inst, u32 cap, u32 parent,
|
|
s32 *value, const char *func);
|
|
#endif
|