video: driver: Set proper HFI during low latency for decoder
Decoder supports dynamic low latency. When client configures the video session in low latency mode, driver would configure the firmware such that HFI_CMD_SETTINGS_CHANGE is triggerred on sync frame boundary. Change-Id: Ie70eaaeb8ad420db926f0d99f77723476deee400 Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org>
This commit is contained in:
@@ -481,10 +481,10 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
|
||||
V4L2_MPEG_MSM_VIDC_DISABLE, V4L2_MPEG_MSM_VIDC_ENABLE,
|
||||
1, V4L2_MPEG_MSM_VIDC_DISABLE,
|
||||
V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST,
|
||||
HFI_PROP_STAGE,
|
||||
CAP_FLAG_DYNAMIC_ALLOWED,
|
||||
HFI_PROP_SEQ_CHANGE_AT_SYNC_FRAME,
|
||||
CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
|
||||
{0}, {0},
|
||||
NULL, msm_vidc_set_stage},
|
||||
NULL, msm_vidc_set_seq_change_at_sync_frame},
|
||||
|
||||
{LTR_COUNT, ENC, H264|HEVC,
|
||||
0, 2, 1, 0,
|
||||
|
@@ -95,6 +95,8 @@ 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,
|
||||
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,
|
||||
|
@@ -778,6 +778,10 @@ static int msm_vdec_set_output_properties(struct msm_vidc_inst *inst)
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
rc = msm_vidc_set_seq_change_at_sync_frame(inst, LOWLATENCY_MODE);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@@ -3351,3 +3351,24 @@ int msm_vidc_set_pipe(void *instance,
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
int msm_vidc_set_seq_change_at_sync_frame(void* instance,
|
||||
enum msm_vidc_inst_capability_type cap_id)
|
||||
{
|
||||
int rc = 0;
|
||||
u32 payload;
|
||||
struct msm_vidc_inst* inst = (struct msm_vidc_inst*)instance;
|
||||
|
||||
if (!inst || !inst->capabilities) {
|
||||
d_vpr_e("%s: invalid params\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
payload = inst->capabilities->cap[LOWLATENCY_MODE].value;
|
||||
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
|
||||
&payload, sizeof(u32), __func__);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
return rc;
|
||||
}
|
Reference in New Issue
Block a user