There is no need to queue an empty buffer for signaling a last frame,
because all frames are separate from each other in JPEG.

Signed-off-by: Xia Jiang <xia.ji...@mediatek.com>
---
v9: new patch
---
 .../media/platform/mtk-jpeg/mtk_jpeg_core.c   | 21 +------------------
 1 file changed, 1 insertion(+), 20 deletions(-)

diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c 
b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c
index 49bdbf1c435f..bb4ebce881ee 100644
--- a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c
+++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c
@@ -55,15 +55,9 @@ static struct mtk_jpeg_fmt mtk_jpeg_formats[] = {
 
 #define MTK_JPEG_NUM_FORMATS ARRAY_SIZE(mtk_jpeg_formats)
 
-enum {
-       MTK_JPEG_BUF_FLAGS_INIT                 = 0,
-       MTK_JPEG_BUF_FLAGS_LAST_FRAME           = 1,
-};
-
 struct mtk_jpeg_src_buf {
        struct vb2_v4l2_buffer b;
        struct list_head list;
-       int flags;
        struct mtk_jpeg_dec_param dec_param;
 };
 
@@ -520,8 +514,6 @@ static int mtk_jpeg_qbuf(struct file *file, void *priv, 
struct v4l2_buffer *buf)
 
        vb = vb2_get_buffer(vq, buf->index);
        jpeg_src_buf = mtk_jpeg_vb2_to_srcbuf(vb);
-       jpeg_src_buf->flags = (buf->m.planes[0].bytesused == 0) ?
-               MTK_JPEG_BUF_FLAGS_LAST_FRAME : MTK_JPEG_BUF_FLAGS_INIT;
 end:
        return v4l2_m2m_qbuf(file, fh->m2m_ctx, buf);
 }
@@ -676,10 +668,6 @@ static void mtk_jpeg_buf_queue(struct vb2_buffer *vb)
        param = &jpeg_src_buf->dec_param;
        memset(param, 0, sizeof(*param));
 
-       if (jpeg_src_buf->flags & MTK_JPEG_BUF_FLAGS_LAST_FRAME) {
-               v4l2_dbg(1, debug, &jpeg->v4l2_dev, "Got eos\n");
-               goto end;
-       }
        header_valid = mtk_jpeg_parse(param, (u8 *)vb2_plane_vaddr(vb, 0),
                                      vb2_get_plane_payload(vb, 0));
        if (!header_valid) {
@@ -792,19 +780,12 @@ static void mtk_jpeg_device_run(void *priv)
        struct mtk_jpeg_src_buf *jpeg_src_buf;
        struct mtk_jpeg_bs bs;
        struct mtk_jpeg_fb fb;
-       int i, ret;
+       int ret;
 
        src_buf = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
        dst_buf = v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx);
        jpeg_src_buf = mtk_jpeg_vb2_to_srcbuf(&src_buf->vb2_buf);
 
-       if (jpeg_src_buf->flags & MTK_JPEG_BUF_FLAGS_LAST_FRAME) {
-               for (i = 0; i < dst_buf->vb2_buf.num_planes; i++)
-                       vb2_set_plane_payload(&dst_buf->vb2_buf, i, 0);
-               buf_state = VB2_BUF_STATE_DONE;
-               goto dec_end;
-       }
-
        if (mtk_jpeg_check_resolution_change(ctx, &jpeg_src_buf->dec_param)) {
                mtk_jpeg_queue_src_chg_event(ctx);
                ctx->state = MTK_JPEG_SOURCE_CHANGE;
-- 
2.18.0

Reply via email to