media: coda: improve decoder job finished debug message
authorPhilipp Zabel <p.zabel@pengutronix.de>
Fri, 12 Apr 2019 15:51:26 +0000 (11:51 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Tue, 21 May 2019 11:22:18 +0000 (07:22 -0400)
Print a single line containing the following information:
 - which frame was decoded, including its type,
 - if no frame was decoded, the reason (code) why
 - which decoded frame was returned, copied out by either rotator or VODA,
 - if no frame was returned, the reason (code) why, and
 - the output queue sequence number, which is only useful in case
   each queued coded buffer corresponds to exactly one frame.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/coda/coda-bit.c

index a0dbee2262e9eb73733ff5241ab58c5b79f39799..228743b82ace430d311ffaba13f1be67d462f4fc 100644 (file)
@@ -2246,12 +2246,36 @@ static void coda_finish_decode(struct coda_ctx *ctx)
                else
                        coda_m2m_buf_done(ctx, dst_buf, VB2_BUF_STATE_DONE);
 
-               coda_dbg(1, ctx, "job finished: decoded %c frame (%u/%u)\n",
-                        coda_frame_type_char(dst_buf->flags),
-                        dst_buf->sequence, ctx->qsequence);
+               if (decoded_idx >= 0 &&
+                   decoded_idx < ctx->num_internal_frames) {
+                       coda_dbg(1, ctx, "job finished: decoded %c frame %u, returned %c frame %u (%u/%u)%s\n",
+                                coda_frame_type_char(ctx->frame_types[decoded_idx]),
+                                ctx->frame_metas[decoded_idx].sequence,
+                                coda_frame_type_char(dst_buf->flags),
+                                ctx->frame_metas[ctx->display_idx].sequence,
+                                dst_buf->sequence, ctx->qsequence,
+                                (dst_buf->flags & V4L2_BUF_FLAG_LAST) ?
+                                " (last)" : "");
+               } else {
+                       coda_dbg(1, ctx, "job finished: no frame decoded (%d), returned %c frame %u (%u/%u)%s\n",
+                                decoded_idx,
+                                coda_frame_type_char(dst_buf->flags),
+                                ctx->frame_metas[ctx->display_idx].sequence,
+                                dst_buf->sequence, ctx->qsequence,
+                                (dst_buf->flags & V4L2_BUF_FLAG_LAST) ?
+                                " (last)" : "");
+               }
        } else {
-               coda_dbg(1, ctx, "job finished: no frame decoded (%u/%u)\n",
-                        ctx->osequence, ctx->qsequence);
+               if (decoded_idx >= 0 &&
+                   decoded_idx < ctx->num_internal_frames) {
+                       coda_dbg(1, ctx, "job finished: decoded %c frame %u, no frame returned (%d)\n",
+                                coda_frame_type_char(ctx->frame_types[decoded_idx]),
+                                ctx->frame_metas[decoded_idx].sequence,
+                                ctx->display_idx);
+               } else {
+                       coda_dbg(1, ctx, "job finished: no frame decoded (%d) or returned (%d)\n",
+                                decoded_idx, ctx->display_idx);
+               }
        }
 
        /* The rotator will copy the current display frame next time */