All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philipp Zabel <p.zabel@pengutronix.de>
To: linux-media@vger.kernel.org
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	kernel@pengutronix.de
Subject: [PATCH 11/28] media: coda: make coda_bitstream_queue more versatile
Date: Tue, 18 Jun 2019 18:45:18 +0200	[thread overview]
Message-ID: <20190618164535.20162-12-p.zabel@pengutronix.de> (raw)
In-Reply-To: <20190618164535.20162-1-p.zabel@pengutronix.de>

Pass vaddr and size to coda_bitstream_queue instead of a struct
vb2_v4l2_buffer to make it reusable for queueing data that is
not exactly a whole v4l2 buffer into the bitstream ringbuffer.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
 drivers/media/platform/coda/coda-bit.c | 23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/drivers/media/platform/coda/coda-bit.c b/drivers/media/platform/coda/coda-bit.c
index 494bc130c7af..4f96f808b4dd 100644
--- a/drivers/media/platform/coda/coda-bit.c
+++ b/drivers/media/platform/coda/coda-bit.c
@@ -199,33 +199,25 @@ static int coda_bitstream_pad(struct coda_ctx *ctx, u32 size)
 	return (n < size) ? -ENOSPC : 0;
 }
 
-static int coda_bitstream_queue(struct coda_ctx *ctx,
-				struct vb2_v4l2_buffer *src_buf)
+static int coda_bitstream_queue(struct coda_ctx *ctx, const u8 *buf, u32 size)
 {
-	u32 src_size = vb2_get_plane_payload(&src_buf->vb2_buf, 0);
-	u32 n;
-
-	n = kfifo_in(&ctx->bitstream_fifo,
-			vb2_plane_vaddr(&src_buf->vb2_buf, 0), src_size);
-	if (n < src_size)
-		return -ENOSPC;
+	u32 n = kfifo_in(&ctx->bitstream_fifo, buf, size);
 
-	src_buf->sequence = ctx->qsequence++;
-
-	return 0;
+	return (n < size) ? -ENOSPC : 0;
 }
 
 static bool coda_bitstream_try_queue(struct coda_ctx *ctx,
 				     struct vb2_v4l2_buffer *src_buf)
 {
 	unsigned long payload = vb2_get_plane_payload(&src_buf->vb2_buf, 0);
+	u8 *vaddr = vb2_plane_vaddr(&src_buf->vb2_buf, 0);
 	int ret;
 
 	if (coda_get_bitstream_payload(ctx) + payload + 512 >=
 	    ctx->bitstream.size)
 		return false;
 
-	if (vb2_plane_vaddr(&src_buf->vb2_buf, 0) == NULL) {
+	if (!vaddr) {
 		v4l2_err(&ctx->dev->v4l2_dev, "trying to queue empty buffer\n");
 		return true;
 	}
@@ -235,11 +227,14 @@ static bool coda_bitstream_try_queue(struct coda_ctx *ctx,
 	    ctx->codec->src_fourcc == V4L2_PIX_FMT_H264)
 		coda_bitstream_pad(ctx, 512 - payload);
 
-	ret = coda_bitstream_queue(ctx, src_buf);
+	ret = coda_bitstream_queue(ctx, vaddr, payload);
 	if (ret < 0) {
 		v4l2_err(&ctx->dev->v4l2_dev, "bitstream buffer overflow\n");
 		return false;
 	}
+
+	src_buf->sequence = ctx->qsequence++;
+
 	/* Sync read pointer to device */
 	if (ctx == v4l2_m2m_get_curr_priv(ctx->dev->m2m_dev))
 		coda_kfifo_sync_to_device_write(ctx);
-- 
2.20.1


  parent reply	other threads:[~2019-06-18 16:45 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-18 16:45 [PATCH 00/28] media: coda: fixes and improvements Philipp Zabel
2019-06-18 16:45 ` [PATCH 01/28] media: coda: implement CMD_START to restart decoding Philipp Zabel
2019-06-18 16:45 ` [PATCH 02/28] media: coda: use mem2mem try_en/decoder_cmd helpers Philipp Zabel
2019-06-18 16:45 ` [PATCH 03/28] media: coda: fix mpeg2 sequence number handling Philipp Zabel
2019-06-18 16:45 ` [PATCH 04/28] media: coda: fix last buffer handling in V4L2_ENC_CMD_STOP Philipp Zabel
2019-06-18 16:45 ` [PATCH 05/28] media: coda: add coda_wake_up_capture_queue Philipp Zabel
2019-06-18 16:45 ` [PATCH 06/28] media: coda: fix V4L2_DEC_CMD_STOP when all buffers are already consumed Philipp Zabel
2019-06-18 16:45 ` [PATCH 07/28] media: coda: split decoder sequence initialization out of start decoding Philipp Zabel
2019-06-18 16:45 ` [PATCH 08/28] media: coda: add sequence initialization work Philipp Zabel
2019-06-18 16:45 ` [PATCH 09/28] media: coda: implement decoder source change event Philipp Zabel
2019-06-18 16:45 ` [PATCH 10/28] media: coda: integrate internal frame metadata into a structure Philipp Zabel
2019-06-18 16:45 ` Philipp Zabel [this message]
2019-06-18 16:45 ` [PATCH 12/28] media: coda: pad first buffer with repeated MPEG headers to fix sequence init Philipp Zabel
2019-06-18 16:45 ` [PATCH 13/28] media: coda: do not enforce 512-byte initial bitstream payload on CODA960 Philipp Zabel
2019-06-18 16:45 ` [PATCH 14/28] media: coda: flush bitstream ring buffer on decoder restart Philipp Zabel
2019-06-18 16:45 ` [PATCH 15/28] media: coda: increment sequence offset for the last returned frame Philipp Zabel
2019-06-18 16:45 ` [PATCH 16/28] media: coda: allow flagging last output buffer internally Philipp Zabel
2019-06-18 16:45 ` [PATCH 17/28] media: coda: mark the last output buffer on decoder stop command Philipp Zabel
2019-06-18 16:45 ` [PATCH 18/28] media: coda: only set the stream end flags if there are no more pending output buffers Philipp Zabel
2019-06-18 16:45 ` [PATCH 19/28] media: coda: mark the last output buffer on encoder stop command Philipp Zabel
2019-06-18 16:45 ` [PATCH 20/28] media: coda: retire coda_buf_is_end_of_stream Philipp Zabel
2019-06-18 16:45 ` [PATCH 21/28] media: coda: only wake up capture queue if no pending buffers to encode Philipp Zabel
2019-06-18 16:45 ` [PATCH 22/28] media: coda: flag the last encoded buffer Philipp Zabel
2019-06-18 16:45 ` [PATCH 23/28] media: coda: lock capture queue wakeup against encoder stop command Philipp Zabel
2019-06-18 16:45 ` [PATCH 24/28] media: coda: mark last pending buffer or last meta on decoder " Philipp Zabel
2019-06-18 16:45 ` [PATCH 25/28] media: coda: mark last returned frame Philipp Zabel
2019-06-18 16:45 ` [PATCH 26/28] media: coda: store device pointer in driver structure instead of pdev Philipp Zabel
2019-06-18 16:45 ` [PATCH 27/28] media: coda: add coda_slice_mode() function Philipp Zabel
2019-06-18 16:45 ` [PATCH 28/28] media: coda: encoder parameter change support Philipp Zabel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190618164535.20162-12-p.zabel@pengutronix.de \
    --to=p.zabel@pengutronix.de \
    --cc=hverkuil@xs4all.nl \
    --cc=kernel@pengutronix.de \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.