59 lines
1.9 KiB
Diff
59 lines
1.9 KiB
Diff
From 97236cb80ebc96198ea6cae7b62a9183c8255d7b Mon Sep 17 00:00:00 2001
|
|
From: Jeffy Chen <jeffy.chen@rock-chips.com>
|
|
Date: Wed, 3 Jul 2024 17:18:59 +0800
|
|
Subject: [PATCH 13/13] HACK: v4l2src: Support bypassing buf cache cleaning
|
|
|
|
Set env GST_V4L2SRC_NO_CACHE_CLEAN=1.
|
|
|
|
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
|
|
---
|
|
sys/v4l2/gstv4l2bufferpool.c | 2 ++
|
|
sys/v4l2/gstv4l2bufferpool.h | 2 ++
|
|
sys/v4l2/gstv4l2src.c | 4 ++++
|
|
3 files changed, 8 insertions(+)
|
|
|
|
diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c
|
|
index 58c2099..3df189e 100644
|
|
--- a/sys/v4l2/gstv4l2bufferpool.c
|
|
+++ b/sys/v4l2/gstv4l2bufferpool.c
|
|
@@ -1173,6 +1173,8 @@ gst_v4l2_buffer_pool_qbuf (GstV4l2BufferPool * pool, GstBuffer * buf,
|
|
group->buffer.field = field;
|
|
}
|
|
|
|
+ group->buffer.flags |= pool->extra_buf_flags;
|
|
+
|
|
if (frame_number) {
|
|
group->buffer.timestamp.tv_sec = *frame_number;
|
|
group->buffer.timestamp.tv_usec = 0;
|
|
diff --git a/sys/v4l2/gstv4l2bufferpool.h b/sys/v4l2/gstv4l2bufferpool.h
|
|
index db8c554..c63c9ed 100644
|
|
--- a/sys/v4l2/gstv4l2bufferpool.h
|
|
+++ b/sys/v4l2/gstv4l2bufferpool.h
|
|
@@ -97,6 +97,8 @@ struct _GstV4l2BufferPool
|
|
|
|
/* Control to warn only once on buggy feild driver bug */
|
|
gboolean has_warned_on_buggy_field;
|
|
+
|
|
+ guint32 extra_buf_flags;
|
|
};
|
|
|
|
struct _GstV4l2BufferPoolClass
|
|
diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c
|
|
index ddd4c9d..9cd8608 100644
|
|
--- a/sys/v4l2/gstv4l2src.c
|
|
+++ b/sys/v4l2/gstv4l2src.c
|
|
@@ -1210,6 +1210,10 @@ gst_v4l2src_create (GstPushSrc * src, GstBuffer ** buf)
|
|
{
|
|
GstV4l2BufferPool *obj_pool =
|
|
GST_V4L2_BUFFER_POOL_CAST (gst_v4l2_object_get_buffer_pool (obj));
|
|
+
|
|
+ if (g_getenv("GST_V4L2SRC_NO_CACHE_CLEAN"))
|
|
+ obj_pool->extra_buf_flags |= V4L2_BUF_FLAG_NO_CACHE_CLEAN;
|
|
+
|
|
ret = gst_v4l2_buffer_pool_process (obj_pool, buf, NULL);
|
|
if (obj_pool)
|
|
gst_object_unref (obj_pool);
|
|
--
|
|
2.20.1
|
|
|