gstreamer: amlv4l2dec [1/1]
PD#SWPL-79817
Problem:
new git for amlv4l2dec
Solution:
(detail info)
Verify:
(detail info)
Change-Id: I9b84c97bc6fd27ea269bf4c2cc7bcf51b6be8502
Signed-off-by: xuesong.jiang <xuesong.jiang@amlogic.com>
diff --git a/src/aml-v4l2-utils.h b/src/aml-v4l2-utils.h
new file mode 100644
index 0000000..961be22
--- /dev/null
+++ b/src/aml-v4l2-utils.h
@@ -0,0 +1,95 @@
+/* GStreamer
+ * Copyright (C) 2022 <xuesong.jiang@amlogic.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Suite 500,
+ * Boston, MA 02110-1335, USA.
+ */
+
+#ifndef __AML_V4L2_UTILS_H__
+#define __AML_V4L2_UTILS_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_AML_V4L2_ERROR_INIT \
+ { \
+ NULL, NULL \
+ }
+#define GST_AML_V4L2_ERROR(v4l2err, domain, code, msg, dbg) \
+ { \
+ if (v4l2err) \
+ { \
+ gchar *_msg = _gst_element_error_printf msg; \
+ v4l2err->error = g_error_new_literal(GST_##domain##_ERROR, \
+ GST_##domain##_ERROR_##code, _msg); \
+ g_free(_msg); \
+ v4l2err->dbg_message = _gst_element_error_printf dbg; \
+ v4l2err->file = __FILE__; \
+ v4l2err->func = GST_FUNCTION; \
+ v4l2err->line = __LINE__; \
+ } \
+ }
+
+/**
+ * GST_AML_V4L2_IS_M2M:
+ * @_dcaps: The device capabilities
+ *
+ * Checks if the device caps represent an M2M device. Note that modern M2M
+ * devices uses V4L2_CAP_VIDEO_M2M* flag, but legacy uses to set both CAPTURE
+ * and OUTPUT flags instead.
+ *
+ * Returns: %TRUE if this is a M2M device.
+ */
+#define GST_AML_V4L2_IS_M2M(_dcaps) \
+ (((_dcaps) & (V4L2_CAP_VIDEO_M2M | V4L2_CAP_VIDEO_M2M_MPLANE)) ||\
+ (((_dcaps) & \
+ (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_CAPTURE_MPLANE)) && \
+ ((_dcaps) & \
+ (V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_OUTPUT_MPLANE))))
+
+typedef struct _GstAmlV4l2Iterator GstAmlV4l2Iterator;
+typedef struct _GstAmlV4l2Error GstAmlV4l2Error;
+
+struct _GstAmlV4l2Iterator
+{
+ const gchar *device_path;
+ const gchar *device_name;
+ const gchar *sys_path;
+};
+
+struct _GstAmlV4l2Error
+{
+ GError *error;
+ gchar *dbg_message;
+ const gchar *file;
+ const gchar *func;
+ gint line;
+};
+
+GstAmlV4l2Iterator *gst_aml_v4l2_iterator_new(void);
+gboolean gst_aml_v4l2_iterator_next(GstAmlV4l2Iterator *it);
+void gst_aml_v4l2_iterator_free(GstAmlV4l2Iterator *it);
+
+const gchar *gst_aml_v4l2_iterator_get_device_path(GstAmlV4l2Iterator *it);
+const gchar *gst_aml_v4l2_iterator_get_device_name(GstAmlV4l2Iterator *it);
+const gchar *gst_aml_v4l2_iterator_get_sys_path(GstAmlV4l2Iterator *it);
+
+void gst_aml_v4l2_clear_error(GstAmlV4l2Error *error);
+void gst_aml_v4l2_error(gpointer element, GstAmlV4l2Error *error);
+
+G_END_DECLS
+
+#endif /* __AML_V4L2_UTILS_H__ */