media: amphion: handle picture skipped event
For some invalid frames, especially multiple consecutive invalid frames, they all can't be decoded, then the firmware can send picture skipped event to notify driver that some frames are invalid, driver can return them with error flag. Signed-off-by: Ming Qian <ming.qian@nxp.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
Родитель
455e583638
Коммит
be9fd51072
|
@ -69,8 +69,8 @@ enum {
|
|||
VPU_MSG_ID_BS_ERROR,
|
||||
VPU_MSG_ID_UNSUPPORTED,
|
||||
VPU_MSG_ID_TIMESTAMP_INFO,
|
||||
|
||||
VPU_MSG_ID_FIRMWARE_XCPT,
|
||||
VPU_MSG_ID_PIC_SKIPPED,
|
||||
};
|
||||
|
||||
enum VPU_ENC_MEMORY_RESOURSE {
|
||||
|
|
|
@ -170,6 +170,7 @@ enum {
|
|||
VID_API_EVENT_DEC_CHECK_RES = 0x24,
|
||||
VID_API_EVENT_DEC_CFG_INFO = 0x25,
|
||||
VID_API_EVENT_UNSUPPORTED_STREAM = 0x26,
|
||||
VID_API_EVENT_PIC_SKIPPED = 0x27,
|
||||
VID_API_EVENT_STR_SUSPENDED = 0x30,
|
||||
VID_API_EVENT_SNAPSHOT_DONE = 0x40,
|
||||
VID_API_EVENT_FW_STATUS = 0xF0,
|
||||
|
@ -703,6 +704,7 @@ static struct vpu_pair malone_msgs[] = {
|
|||
{VPU_MSG_ID_BS_ERROR, VID_API_EVENT_BS_ERROR},
|
||||
{VPU_MSG_ID_UNSUPPORTED, VID_API_EVENT_UNSUPPORTED_STREAM},
|
||||
{VPU_MSG_ID_FIRMWARE_XCPT, VID_API_EVENT_FIRMWARE_XCPT},
|
||||
{VPU_MSG_ID_PIC_SKIPPED, VID_API_EVENT_PIC_SKIPPED},
|
||||
};
|
||||
|
||||
static void vpu_malone_pack_fs_alloc(struct vpu_rpc_event *pkt,
|
||||
|
|
|
@ -166,6 +166,13 @@ static void vpu_session_handle_firmware_xcpt(struct vpu_inst *inst, struct vpu_r
|
|||
vpu_v4l2_set_error(inst);
|
||||
}
|
||||
|
||||
static void vpu_session_handle_pic_skipped(struct vpu_inst *inst, struct vpu_rpc_event *pkt)
|
||||
{
|
||||
vpu_inst_lock(inst);
|
||||
vpu_skip_frame(inst, 1);
|
||||
vpu_inst_unlock(inst);
|
||||
}
|
||||
|
||||
static struct vpu_msg_handler handlers[] = {
|
||||
{VPU_MSG_ID_START_DONE, vpu_session_handle_start_done},
|
||||
{VPU_MSG_ID_STOP_DONE, vpu_session_handle_stop_done},
|
||||
|
@ -181,6 +188,7 @@ static struct vpu_msg_handler handlers[] = {
|
|||
{VPU_MSG_ID_PIC_EOS, vpu_session_handle_eos},
|
||||
{VPU_MSG_ID_UNSUPPORTED, vpu_session_handle_error},
|
||||
{VPU_MSG_ID_FIRMWARE_XCPT, vpu_session_handle_firmware_xcpt},
|
||||
{VPU_MSG_ID_PIC_SKIPPED, vpu_session_handle_pic_skipped},
|
||||
};
|
||||
|
||||
static int vpu_session_handle_msg(struct vpu_inst *inst, struct vpu_rpc_event *msg)
|
||||
|
|
Загрузка…
Ссылка в новой задаче