[aravis] gst: add arv_pixel_format_from_gst_caps.
- From: Emmanuel Pacaud <emmanuel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [aravis] gst: add arv_pixel_format_from_gst_caps.
- Date: Wed, 16 Feb 2011 14:57:51 +0000 (UTC)
commit df7a7e6f6d3e1b851d16ba4f16c5cdbae67659e4
Author: Emmanuel Pacaud <emmanuel gnome org>
Date: Wed Feb 16 15:54:48 2011 +0100
gst: add arv_pixel_format_from_gst_caps.
src/arvtools.c | 96 +++++++++++++++++++++++++++++++++++++++++++++++++-------
src/arvtools.h | 1 +
2 files changed, 85 insertions(+), 12 deletions(-)
---
diff --git a/src/arvtools.c b/src/arvtools.c
index 7d6b5fa..747990c 100644
--- a/src/arvtools.c
+++ b/src/arvtools.c
@@ -694,24 +694,73 @@ CLEANUP:
* @short_description: Gstreamer utilities
*/
+#define ARV_MAKE_FOURCC(a,b,c,d) ((guint32)((a)|(b)<<8|(c)<<16|(d)<<24))
+
typedef struct {
ArvPixelFormat pixel_format;
const char *gst_caps_string;
+ const char *name;
+ int bpp;
+ int depth;
+ guint32 fourcc;
} ArvGstCapsInfos;
ArvGstCapsInfos arv_gst_caps_infos[] = {
- { ARV_PIXEL_FORMAT_MONO_8, "video/x-raw-gray, bpp=(int)8, depth=(int)8"},
- { ARV_PIXEL_FORMAT_MONO_10, "video/x-raw-gray, bpp=(int)16, depth=(int)10"},
- { ARV_PIXEL_FORMAT_MONO_12, "video/x-raw-gray, bpp=(int)16, depth=(int)12"},
- { ARV_PIXEL_FORMAT_MONO_12_PACKED, "video/x-raw-gray, bpp=(int)12, depth=(int)12"},
- { ARV_PIXEL_FORMAT_MONO_16, "video/x-raw-gray, bpp=(int)16, depth=(int)16"},
- { ARV_PIXEL_FORMAT_BAYER_BG_8, "video/x-raw-bayer, bpp=(int)8, depth=(int)8"},
- { ARV_PIXEL_FORMAT_YUV_422_PACKED, "video/x-raw-yuv, format=(fourcc)UYVY"},
- { ARV_PIXEL_FORMAT_YUV_422_YUYV_PACKED, "video/x-raw-yuv, format=(fourcc)YUY2"},
- { ARV_PIXEL_FORMAT_RGB_8_PACKED, "video/x-raw-rgb, bpp=(int)24, depth=(int)24"},
-
- { ARV_PIXEL_FORMAT_CUSTOM_YUV_422_YUYV_PACKED, "video/x-raw-yuv, format=(fourcc)YUY2"},
- { ARV_PIXEL_FORMAT_CUSTOM_BAYER_BG_16, "video/x-raw-bayer, bpp=(int)16, depth=(int)16"}
+ {
+ ARV_PIXEL_FORMAT_MONO_8,
+ "video/x-raw-gray, bpp=(int)8, depth=(int)8",
+ "video/x-raw-gray", 8, 8, 0
+ },
+ {
+ ARV_PIXEL_FORMAT_MONO_10,
+ "video/x-raw-gray, bpp=(int)16, depth=(int)10",
+ "video/x-raw-gray", 16, 10, 0,
+ },
+ {
+ ARV_PIXEL_FORMAT_MONO_12,
+ "video/x-raw-gray, bpp=(int)16, depth=(int)12",
+ "video/x-raw-gray", 16, 12, 0,
+ },
+ {
+ ARV_PIXEL_FORMAT_MONO_12_PACKED,
+ "video/x-raw-gray, bpp=(int)12, depth=(int)12",
+ "video/x-raw-gray", 12, 12, 0,
+ },
+ {
+ ARV_PIXEL_FORMAT_MONO_16,
+ "video/x-raw-gray, bpp=(int)16, depth=(int)16",
+ "video/x-raw-gray", 16, 16, 0
+ },
+ {
+ ARV_PIXEL_FORMAT_BAYER_BG_8,
+ "video/x-raw-bayer, bpp=(int)8, depth=(int)8",
+ "video/x-raw-bayer", 8, 8, 0
+ },
+ {
+ ARV_PIXEL_FORMAT_YUV_422_PACKED,
+ "video/x-raw-yuv, format=(fourcc)UYVY",
+ "video/x-raw-yuv", 0, 0, ARV_MAKE_FOURCC ('U','Y','V','Y')
+ },
+ {
+ ARV_PIXEL_FORMAT_YUV_422_YUYV_PACKED,
+ "video/x-raw-yuv, format=(fourcc)YUY2",
+ "video/x-raw-yuv", 0, 0, ARV_MAKE_FOURCC ('Y','U','Y','2')
+ },
+ {
+ ARV_PIXEL_FORMAT_RGB_8_PACKED,
+ "video/x-raw-rgb, bpp=(int)24, depth=(int)24",
+ "video/x-raw-rgb", 24, 24, 0
+ },
+ {
+ ARV_PIXEL_FORMAT_CUSTOM_YUV_422_YUYV_PACKED,
+ "video/x-raw-yuv, format=(fourcc)YUY2",
+ "video/x-raw-yuv", 0, 0, ARV_MAKE_FOURCC ('Y','U','Y','2')
+ },
+ {
+ ARV_PIXEL_FORMAT_CUSTOM_BAYER_BG_16,
+ "video/x-raw-bayer, bpp=(int)16, depth=(int)16",
+ "video/x-raw-bayer", 16, 16, 0
+ }
};
/**
@@ -739,3 +788,26 @@ arv_pixel_format_to_gst_caps_string (ArvPixelFormat pixel_format)
return arv_gst_caps_infos[i].gst_caps_string;
}
+
+ArvPixelFormat
+arv_pixel_format_from_gst_caps (const char *name, int bpp, int depth, guint32 fourcc)
+{
+ unsigned int i;
+
+ g_return_val_if_fail (name != NULL, 0);
+
+ for (i = 0; i < G_N_ELEMENTS (arv_gst_caps_infos); i++) {
+ if (strcmp (name, arv_gst_caps_infos[i].name) != 0)
+ continue;
+
+ if (strcmp (name, "video/x-raw-yuv") == 0 &&
+ fourcc == arv_gst_caps_infos[i].fourcc)
+ return arv_gst_caps_infos[i].pixel_format;
+
+ if (depth == arv_gst_caps_infos[i].depth &&
+ bpp == arv_gst_caps_infos[i].bpp)
+ return arv_gst_caps_infos[i].pixel_format;
+ }
+
+ return 0;
+}
diff --git a/src/arvtools.h b/src/arvtools.h
index 3e2408b..ec1b2d5 100644
--- a/src/arvtools.h
+++ b/src/arvtools.h
@@ -108,6 +108,7 @@ void arv_copy_memory_with_endianess (void *to, size_t to_size, guint to_endia
void * arv_decompress (void *input_buffer, size_t input_size, size_t *output_size);
const char * arv_pixel_format_to_gst_caps_string (ArvPixelFormat pixel_format);
+ArvPixelFormat arv_pixel_format_from_gst_caps (const char *name, int bpp, int depth, guint32 fourcc);
/*
Compatibility with glib < 2.23
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]