media: rockchip: vicap modify logic of sof

skip sof and frame_index when loss frame, only work in multi online

Signed-off-by: Zefa Chen <zefa.chen@rock-chips.com>
Change-Id: Ib9739dec0674deac0c0ad182f6836f9edf858212
This commit is contained in:
Zefa Chen
2025-01-06 11:14:12 +08:00
committed by Tao Huang
parent 007db6109c
commit cab48d65f1
3 changed files with 12 additions and 2 deletions

View File

@@ -12472,7 +12472,8 @@ static bool rkcif_check_frame_active(struct rkcif_device *cif_dev)
{
if (cif_dev->sditf[0] &&
cif_dev->sditf[0]->mode.rdbk_mode < RKISP_VICAP_RDBK_AIQ &&
cif_dev->sditf[0]->is_toisp_off)
cif_dev->sditf[0]->is_toisp_off &&
cif_dev->sditf[0]->is_multi_online)
return false;
return true;
@@ -13280,7 +13281,8 @@ static void rkcif_deal_sof(struct rkcif_device *cif_dev)
tmp_dev->stream[0].frame_idx);
}
if (tmp_dev->sditf[0] &&
tmp_dev->sditf[0]->mode.rdbk_mode < RKISP_VICAP_RDBK_AIQ) {
tmp_dev->sditf[0]->mode.rdbk_mode < RKISP_VICAP_RDBK_AIQ &&
tmp_dev->sditf[0]->is_multi_online) {
if (!tmp_dev->sditf[0]->is_toisp_off)
tmp_dev->stream[0].frame_idx++;
} else {

View File

@@ -607,6 +607,12 @@ static long sditf_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
sditf_disable_immediately(priv);
}
return 0;
case RKISP_VICAP_CMD_MULTI_ONLINE:
if (*(int *)arg)
priv->is_multi_online = true;
else
priv->is_multi_online = false;
return 0;
default:
break;
}
@@ -1740,6 +1746,7 @@ static int rkcif_subdev_media_init(struct sditf_priv *priv)
mutex_init(&priv->mutex);
priv->hdr_wrap_line = 0;
priv->is_buf_init = false;
priv->is_multi_online = false;
return 0;
}

View File

@@ -127,6 +127,7 @@ struct sditf_priv {
u32 hdr_wrap_line;
bool is_toisp_off;
bool is_buf_init;
bool is_multi_online;
};
extern struct platform_driver rkcif_subdev_driver;