58 lines
2.2 KiB
Diff
58 lines
2.2 KiB
Diff
From 5ea9d06c14e2c254e90a36cc97e6e8cdd86a9b66 Mon Sep 17 00:00:00 2001
|
|
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
|
Date: Sat, 9 Nov 2019 13:06:15 +0100
|
|
Subject: [PATCH 034/170] drv:media: cedrus: Add callback for buffer cleanup
|
|
|
|
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
|
---
|
|
drivers/staging/media/sunxi/cedrus/cedrus.h | 1 +
|
|
drivers/staging/media/sunxi/cedrus/cedrus_video.c | 13 +++++++++++++
|
|
2 files changed, 14 insertions(+)
|
|
|
|
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.h b/drivers/staging/media/sunxi/cedrus/cedrus.h
|
|
index 9d34e5785..0a17ed0dc 100644
|
|
--- a/drivers/staging/media/sunxi/cedrus/cedrus.h
|
|
+++ b/drivers/staging/media/sunxi/cedrus/cedrus.h
|
|
@@ -168,6 +168,7 @@ struct cedrus_dec_ops {
|
|
int (*start)(struct cedrus_ctx *ctx);
|
|
void (*stop)(struct cedrus_ctx *ctx);
|
|
void (*trigger)(struct cedrus_ctx *ctx);
|
|
+ void (*buf_cleanup)(struct cedrus_ctx *ctx, struct cedrus_buffer *buf);
|
|
};
|
|
|
|
struct cedrus_variant {
|
|
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_video.c b/drivers/staging/media/sunxi/cedrus/cedrus_video.c
|
|
index 33726175d..9bb82c8e0 100644
|
|
--- a/drivers/staging/media/sunxi/cedrus/cedrus_video.c
|
|
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_video.c
|
|
@@ -469,6 +469,18 @@ static int cedrus_buf_prepare(struct vb2_buffer *vb)
|
|
return 0;
|
|
}
|
|
|
|
+static void cedrus_buf_cleanup(struct vb2_buffer *vb)
|
|
+{
|
|
+ struct vb2_queue *vq = vb->vb2_queue;
|
|
+ struct cedrus_ctx *ctx = vb2_get_drv_priv(vq);
|
|
+ struct cedrus_dev *dev = ctx->dev;
|
|
+ struct cedrus_dec_ops *ops = dev->dec_ops[ctx->current_codec];
|
|
+
|
|
+ if (!V4L2_TYPE_IS_OUTPUT(vq->type) && ops->buf_cleanup)
|
|
+ ops->buf_cleanup(ctx,
|
|
+ vb2_to_cedrus_buffer(vq->bufs[vb->index]));
|
|
+}
|
|
+
|
|
static int cedrus_start_streaming(struct vb2_queue *vq, unsigned int count)
|
|
{
|
|
struct cedrus_ctx *ctx = vb2_get_drv_priv(vq);
|
|
@@ -551,6 +563,7 @@ static void cedrus_buf_request_complete(struct vb2_buffer *vb)
|
|
static struct vb2_ops cedrus_qops = {
|
|
.queue_setup = cedrus_queue_setup,
|
|
.buf_prepare = cedrus_buf_prepare,
|
|
+ .buf_cleanup = cedrus_buf_cleanup,
|
|
.buf_queue = cedrus_buf_queue,
|
|
.buf_out_validate = cedrus_buf_out_validate,
|
|
.buf_request_complete = cedrus_buf_request_complete,
|
|
--
|
|
2.35.3
|
|
|