[aravis] gst-0.10: fix pixel format conversions



commit 8d443a86fe888ee5d1d82fbe1c4cd06675dadb24
Author: Emmanuel Pacaud <emmanuel gnome org>
Date:   Mon Apr 14 09:54:11 2014 +0200

    gst-0.10: fix pixel format conversions

 docs/reference/aravis/aravis-sections.txt |    1 +
 gst-0.10/gstaravis.c                      |    4 +-
 src/arvmisc.c                             |   62 ++++++++++++++++++++++------
 src/arvmisc.h                             |    7 ++-
 4 files changed, 55 insertions(+), 19 deletions(-)
---
diff --git a/docs/reference/aravis/aravis-sections.txt b/docs/reference/aravis/aravis-sections.txt
index f6e9e72..c26017d 100644
--- a/docs/reference/aravis/aravis-sections.txt
+++ b/docs/reference/aravis/aravis-sections.txt
@@ -1059,6 +1059,7 @@ arv_g_thread_new
 <TITLE>ArvGst</TITLE>
 arv_pixel_format_to_gst_caps_string
 arv_pixel_format_from_gst_caps
+arv_pixel_format_to_gst_0_10_caps_string
 arv_pixel_format_from_gst_0_10_caps
 </SECTION>
 
diff --git a/gst-0.10/gstaravis.c b/gst-0.10/gstaravis.c
index 597d3ee..e082654 100644
--- a/gst-0.10/gstaravis.c
+++ b/gst-0.10/gstaravis.c
@@ -100,7 +100,7 @@ gst_aravis_get_all_camera_caps (GstAravis *gst_aravis)
        for (i = 0; i < n_pixel_formats; i++) {
                const char *caps_string;
 
-               caps_string = arv_pixel_format_to_gst_caps_string (pixel_formats[i]);
+               caps_string = arv_pixel_format_to_gst_0_10_caps_string (pixel_formats[i]);
 
                if (caps_string != NULL) {
                        GstStructure *structure;
@@ -230,7 +230,7 @@ gst_aravis_set_caps (GstBaseSrc *src, GstCaps *caps)
        if (gst_aravis->fixed_caps != NULL)
                gst_caps_unref (gst_aravis->fixed_caps);
 
-       caps_string = arv_pixel_format_to_gst_caps_string (pixel_format);
+       caps_string = arv_pixel_format_to_gst_0_10_caps_string (pixel_format);
        if (caps_string != NULL) {
                GstStructure *structure;
                GstCaps *caps;
diff --git a/src/arvmisc.c b/src/arvmisc.c
index 3995921..6531dbf 100644
--- a/src/arvmisc.c
+++ b/src/arvmisc.c
@@ -591,6 +591,8 @@ typedef struct {
        const char *gst_caps_string;
        const char *name;
        const char *format;
+       const char *gst_0_10_caps_string;
+       const char *name_0_10;
        int bpp;
        int depth;
        guint32 fourcc;
@@ -601,49 +603,57 @@ ArvGstCapsInfos arv_gst_caps_infos[] = {
                ARV_PIXEL_FORMAT_MONO_8,
                "video/x-raw, format=(string)GRAY8",
                "video/x-raw", "GRAY8",
-               8,      8,      0
+               "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, format=(string)GRAY16_LE",
                "video/x-raw",  "GRAY16_LE",
-               16,     10,     0
+               "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, format=(string)GRAY16_LE",
                "video/x-raw",  "GRAY16_LE",
-               16,     12,     0
+               "video/x-raw-gray, bpp=(int)16, depth=(int)12",
+               "video/x-raw-gray",     16,     12,     0
        },
        {
                ARV_PIXEL_FORMAT_MONO_16,
                "video/x-raw, format=(string)GRAY16_LE",
                "video/x-raw",  "GRAY16_LE",
-               16,     16,     0
+               "video/x-raw-gray, bpp=(int)16, depth=(int)16",
+               "video/x-raw-gray",     16,     16,     0
        },
        {
                ARV_PIXEL_FORMAT_BAYER_GR_8,
                "video/x-bayer, format=(string)grbg",
                "video/x-bayer",        "grbg",
-               8,      8,      ARV_MAKE_FOURCC ('g','r','b','g')
+               "video/x-raw-bayer, format=(string)grbg, bpp=(int)8, depth=(int)8",
+               "video/x-raw-bayer",    8,      8,      ARV_MAKE_FOURCC ('g','r','b','g')
        },
        {
                ARV_PIXEL_FORMAT_BAYER_RG_8,
                "video/x-bayer, format=(string)rggb",
                "video/x-bayer",        "rggb",
-               8,      8,      ARV_MAKE_FOURCC ('r','g','g','b')
+               "video/x-raw-bayer, format=(string)rggb, bpp=(int)8, depth=(int)8",
+               "video/x-raw-bayer",    8,      8,      ARV_MAKE_FOURCC ('r','g','g','b')
        },
        {
                ARV_PIXEL_FORMAT_BAYER_GB_8,
                "video/x-bayer, format=(string)gbrg",
                "video/x-bayer",        "gbrg",
-               8,      8,      ARV_MAKE_FOURCC ('g','b','r','g')
+               "video/x-raw-bayer, format=(string)gbrg, bpp=(int)8, depth=(int)8",
+               "video/x-raw-bayer",    8,      8,      ARV_MAKE_FOURCC ('g','b','r','g')
        },
        {
                ARV_PIXEL_FORMAT_BAYER_BG_8,
                "video/x-bayer, format=(string)bggr",
                "video/x-bayer",        "bggr",
-               8,      8,      ARV_MAKE_FOURCC ('b','g','g','r')
+               "video/x-raw-bayer, format=(string)bggr, bpp=(int)8, depth=(int)8",
+               "video/x-raw-bayer",    8,      8,      ARV_MAKE_FOURCC ('b','g','g','r')
        },
 
 /* Non 8bit bayer formats are not supported by gstreamer bayer plugin.
@@ -653,24 +663,28 @@ ArvGstCapsInfos arv_gst_caps_infos[] = {
                ARV_PIXEL_FORMAT_YUV_422_PACKED,
                "video/x-raw, format=(string)UYVY",
                "video/x-raw",  "UYVY",
-               0,      0,      ARV_MAKE_FOURCC ('U','Y','V','Y')
+               "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, format=(string)YUY2",
-               0,      0,      ARV_MAKE_FOURCC ('Y','U','Y','2')
+               "video/x-raw-yuv, format=(fourcc)YUYU2",
+               "video/x-raw-yuv",      0,      0,      ARV_MAKE_FOURCC ('Y','U','Y','2')
        },
        {
                ARV_PIXEL_FORMAT_RGB_8_PACKED,
                "video/x-raw, format=(string)RGB",
                "video/x-raw",  "RGB",
-               24,     24,     0
+               "video/x-raw-rgb, format=(string)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, format=(string)YUY2",
                "video/x-raw",  "YUY2",
-               0,      0,      ARV_MAKE_FOURCC ('Y','U','Y','2')
+               "video/x-raw-yuv, format=(fourcc)YUYU2",
+               "video/x-raw-yuv",      0,      0,      ARV_MAKE_FOURCC ('Y','U','Y','2')
        }
 };
 
@@ -719,6 +733,26 @@ arv_pixel_format_from_gst_caps (const char *name, const char *format)
        return 0;
 }
 
+const char *
+arv_pixel_format_to_gst_0_10_caps_string (ArvPixelFormat pixel_format)
+{
+       int i;
+
+       for (i = 0; i < G_N_ELEMENTS (arv_gst_caps_infos); i++)
+               if (arv_gst_caps_infos[i].pixel_format == pixel_format)
+                       break;
+
+       if (i == G_N_ELEMENTS (arv_gst_caps_infos)) {
+               arv_warning_misc ("[PixelFormat::to_gst_0_10_caps_string] 0x%08x not found", pixel_format);
+               return NULL;
+       }
+
+       arv_log_misc ("[PixelFormat::to_gst_0_10_caps_string] 0x%08x -> %s",
+                     pixel_format, arv_gst_caps_infos[i].gst_0_10_caps_string);
+
+       return arv_gst_caps_infos[i].gst_0_10_caps_string;
+}
+
 ArvPixelFormat
 arv_pixel_format_from_gst_0_10_caps (const char *name, int bpp, int depth, guint32 fourcc)
 {
@@ -727,10 +761,10 @@ arv_pixel_format_from_gst_0_10_caps (const char *name, int bpp, int depth, guint
        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)
+               if (strcmp (name, arv_gst_caps_infos[i].name_0_10) != 0)
                        continue;
 
-               if (strcmp (name, "video/x-raw") == 0 &&
+               if (strcmp (name, "video/x-raw-yuv") == 0 &&
                    fourcc == arv_gst_caps_infos[i].fourcc)
                        return arv_gst_caps_infos[i].pixel_format;
 
diff --git a/src/arvmisc.h b/src/arvmisc.h
index 5b9998a..f93ab54 100644
--- a/src/arvmisc.h
+++ b/src/arvmisc.h
@@ -67,9 +67,10 @@ 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, const char *format);
-ArvPixelFormat         arv_pixel_format_from_gst_0_10_caps     (const char *name, int bpp, int depth, 
guint32 fourcc);
+const char *   arv_pixel_format_to_gst_caps_string             (ArvPixelFormat pixel_format);
+ArvPixelFormat         arv_pixel_format_from_gst_caps                  (const char *name, const char 
*format);
+const char *   arv_pixel_format_to_gst_0_10_caps_string        (ArvPixelFormat pixel_format);
+ArvPixelFormat         arv_pixel_format_from_gst_0_10_caps             (const char *name, int bpp, int 
depth, guint32 fourcc);
 
 /*
    Compatibility with old glib


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]