mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
media: venus: dec: Fix handling of the start cmd
[ Upstream commit50248ad9f1] The decoder driver should clear the last_buffer_dequeued flag of the capture queue upon receiving V4L2_DEC_CMD_START. The last_buffer_dequeued flag is set upon receiving EOS (which always happens upon receiving V4L2_DEC_CMD_STOP). Without this patch, after issuing the V4L2_DEC_CMD_STOP and V4L2_DEC_CMD_START, the vb2_dqbuf() function will always fail, even if the buffers are completed by the hardware. Fixes:beac82904a("media: venus: make decoder compliant with stateful codec API") Signed-off-by: Michał Krawczyk <mk@semihalf.com> Signed-off-by: Stanimir Varbanov <stanimir.k.varbanov@gmail.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b21a9a57c7
commit
1e229899e3
@@ -526,6 +526,7 @@ static int
|
|||||||
vdec_decoder_cmd(struct file *file, void *fh, struct v4l2_decoder_cmd *cmd)
|
vdec_decoder_cmd(struct file *file, void *fh, struct v4l2_decoder_cmd *cmd)
|
||||||
{
|
{
|
||||||
struct venus_inst *inst = to_inst(file);
|
struct venus_inst *inst = to_inst(file);
|
||||||
|
struct vb2_queue *dst_vq;
|
||||||
struct hfi_frame_data fdata = {0};
|
struct hfi_frame_data fdata = {0};
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@@ -556,6 +557,13 @@ vdec_decoder_cmd(struct file *file, void *fh, struct v4l2_decoder_cmd *cmd)
|
|||||||
inst->codec_state = VENUS_DEC_STATE_DRAIN;
|
inst->codec_state = VENUS_DEC_STATE_DRAIN;
|
||||||
inst->drain_active = true;
|
inst->drain_active = true;
|
||||||
}
|
}
|
||||||
|
} else if (cmd->cmd == V4L2_DEC_CMD_START &&
|
||||||
|
inst->codec_state == VENUS_DEC_STATE_STOPPED) {
|
||||||
|
dst_vq = v4l2_m2m_get_vq(inst->fh.m2m_ctx,
|
||||||
|
V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
|
||||||
|
vb2_clear_last_buffer_dequeued(dst_vq);
|
||||||
|
|
||||||
|
inst->codec_state = VENUS_DEC_STATE_DECODING;
|
||||||
}
|
}
|
||||||
|
|
||||||
unlock:
|
unlock:
|
||||||
|
|||||||
Reference in New Issue
Block a user