Video Driver: fix frame freeze for HEVC 10bit all intra decoding
1. Allow turbo for HEVC 10bit all intra decoding; 2. Add 25 percent extra to VSP cycle for HEVC 10bit all intra decoding; Change-Id: I794b2a896f7e9444c8979abdb15b8e673a5270ee Signed-off-by: Zhongbo Shi <quic_zhongbos@quicinc.com> Signed-off-by: Ankush Mitra <quic_ankumitr@quicinc.com>
This commit is contained in:

کامیت شده توسط
Gerrit - the friendly Code Review server

والد
dc39a04e6e
کامیت
b35fde25c4
@@ -1,6 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2020-2021,, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _MSM_VIDC_DRIVER_H_
|
||||
@@ -577,6 +578,7 @@ bool res_is_less_than(u32 width, u32 height,
|
||||
u32 ref_width, u32 ref_height);
|
||||
bool res_is_less_than_or_equal_to(u32 width, u32 height,
|
||||
u32 ref_width, u32 ref_height);
|
||||
bool is_hevc_10bit_decode_session(struct msm_vidc_inst *inst);
|
||||
int signal_session_msg_receipt(struct msm_vidc_inst *inst,
|
||||
enum signal_session_response cmd);
|
||||
int msm_vidc_get_properties(struct msm_vidc_inst *inst);
|
||||
|
@@ -181,5 +181,6 @@ struct msm_vidc_inst {
|
||||
bool has_bframe;
|
||||
bool ir_enabled;
|
||||
u32 adjust_priority;
|
||||
bool iframe;
|
||||
};
|
||||
#endif // _MSM_VIDC_INST_H_
|
||||
|
@@ -901,6 +901,7 @@ void *msm_vidc_open(void *vidc_core, u32 session_type)
|
||||
inst->ipsc_properties_set = false;
|
||||
inst->opsc_properties_set = false;
|
||||
inst->has_bframe = false;
|
||||
inst->iframe = false;
|
||||
inst->auto_framerate = DEFAULT_FPS << 16;
|
||||
inst->initial_time_us = ktime_get_ns() / 1000;
|
||||
kref_init(&inst->kref);
|
||||
|
@@ -1761,6 +1761,22 @@ bool msm_vidc_allow_psc_last_flag(struct msm_vidc_inst *inst)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool is_hevc_10bit_decode_session(struct msm_vidc_inst *inst)
|
||||
{
|
||||
bool is10bit = false;
|
||||
enum msm_vidc_colorformat_type colorformat;
|
||||
|
||||
colorformat = v4l2_colorformat_to_driver(inst,
|
||||
inst->fmts[OUTPUT_PORT].fmt.pix_mp.pixelformat, __func__);
|
||||
|
||||
if (colorformat == MSM_VIDC_FMT_TP10C || colorformat == MSM_VIDC_FMT_P010)
|
||||
is10bit = true;
|
||||
|
||||
return inst->domain == MSM_VIDC_DECODER &&
|
||||
inst->codec == MSM_VIDC_HEVC &&
|
||||
is10bit;
|
||||
}
|
||||
|
||||
int msm_vidc_state_change_streamon(struct msm_vidc_inst *inst,
|
||||
enum msm_vidc_port_type port)
|
||||
{
|
||||
|
@@ -1,6 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/devcoredump.h>
|
||||
@@ -1661,6 +1662,10 @@ static int handle_property_with_payload(struct msm_vidc_inst *inst,
|
||||
inst->hfi_frame_info.picture_type = payload_ptr[0];
|
||||
if (inst->hfi_frame_info.picture_type & HFI_PICTURE_B)
|
||||
inst->has_bframe = true;
|
||||
if (inst->hfi_frame_info.picture_type & HFI_PICTURE_IDR)
|
||||
inst->iframe = true;
|
||||
else
|
||||
inst->iframe = false;
|
||||
break;
|
||||
case HFI_PROP_SUBFRAME_INPUT:
|
||||
if (port != INPUT_PORT) {
|
||||
|
مرجع در شماره جدید
Block a user