dshowsrcwrapper: add support for RGB32, RGB555, RGB565 and RGB8 color spaces
authorJerome Laheurte <jlaheurte@quividi.com>
Fri, 22 Apr 2016 12:48:41 +0000 (14:48 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 23 Apr 2016 14:17:34 +0000 (15:17 +0100)
Some cameras (IDS) only support those.

https://bugzilla.gnome.org//show_bug.cgi?id=765427

sys/dshowsrcwrapper/gstdshow.cpp

index 705adc95642d6c9fce62e8aa3a225625e72c907d..421e49c7ce89682321b9f14604b60bb783607a78 100644 (file)
@@ -406,6 +406,18 @@ gst_dshow_guid_to_gst_video_format (AM_MEDIA_TYPE *mediatype)
   if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_UYVY, FORMAT_VideoInfo))
     return GST_VIDEO_FORMAT_UYVY;
 
+  if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_RGB32, FORMAT_VideoInfo))
+    return GST_VIDEO_FORMAT_BGRx;
+
+  if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_RGB565, FORMAT_VideoInfo))
+    return GST_VIDEO_FORMAT_BGR16;
+
+  if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_RGB555, FORMAT_VideoInfo))
+    return GST_VIDEO_FORMAT_BGR15;
+
+  if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_RGB8, FORMAT_VideoInfo))
+    return GST_VIDEO_FORMAT_GRAY8;
+
   return GST_VIDEO_FORMAT_UNKNOWN;
 }
 
@@ -449,6 +461,18 @@ gst_dshow_new_video_caps (GstVideoFormat video_format, const gchar * name,
     case GST_VIDEO_FORMAT_UYVY:
       video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("UYVY"));
       break;
+    case GST_VIDEO_FORMAT_BGRx:
+      video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("BGRx"));
+      break;
+    case GST_VIDEO_FORMAT_BGR16:
+      video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("BGR16"));
+      break;
+    case GST_VIDEO_FORMAT_BGR15:
+      video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("BGR15"));
+      break;
+    case GST_VIDEO_FORMAT_GRAY8:
+      video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("GRAY8"));
+      break;
     default:
       break;
   }