Commit 4b424e9e authored by Philipp Zabel's avatar Philipp Zabel Committed by Mauro Carvalho Chehab

media: coda: mark last returned frame

If reordering is not enabled, the last decoded frame has to be the last
returned buffer. Otherwise wait for the firmware to report no more
frame to display. In that case the return buffer is the last one as
well, and can be reported as such.
Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent d09ed310
...@@ -2381,6 +2381,23 @@ static void coda_finish_decode(struct coda_ctx *ctx) ...@@ -2381,6 +2381,23 @@ static void coda_finish_decode(struct coda_ctx *ctx)
V4L2_BUF_FLAG_BFRAME); V4L2_BUF_FLAG_BFRAME);
dst_buf->flags |= ready_frame->type; dst_buf->flags |= ready_frame->type;
meta = &ready_frame->meta; meta = &ready_frame->meta;
if (meta->last && !coda_reorder_enable(ctx)) {
/*
* If this was the last decoded frame, and reordering
* is disabled, this will be the last display frame.
*/
coda_dbg(1, ctx, "last meta, marking as last frame\n");
dst_buf->flags |= V4L2_BUF_FLAG_LAST;
} else if (ctx->bit_stream_param & CODA_BIT_STREAM_END_FLAG &&
display_idx == -1) {
/*
* If there is no designated presentation frame anymore,
* this frame has to be the last one.
*/
coda_dbg(1, ctx,
"no more frames to return, marking as last frame\n");
dst_buf->flags |= V4L2_BUF_FLAG_LAST;
}
dst_buf->timecode = meta->timecode; dst_buf->timecode = meta->timecode;
dst_buf->vb2_buf.timestamp = meta->timestamp; dst_buf->vb2_buf.timestamp = meta->timestamp;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment