- outcaps =
- gst_caps_new_simple ("image/x-jpc", "framerate", GST_TYPE_FRACTION, 0, 1,
- "fields", G_TYPE_INT, 1, "colorspace", G_TYPE_STRING, "sYUV", NULL);
+ sampling = gst_structure_get_string (structure, "sampling");
+ if (sampling) {
+ if (!strcmp (sampling, GST_RTP_J2K_RGB) ||
+ !strcmp (sampling, GST_RTP_J2K_RGBA) ||
+ !strcmp (sampling, GST_RTP_J2K_BGR) ||
+ !strcmp (sampling, GST_RTP_J2K_BGRA))
+ colorspace = "sRGB";
+ else if (!strcmp (sampling, GST_RTP_J2K_GRAYSCALE))
+ colorspace = "GRAY";
+ else
+ colorspace = "sYUV";
+ } else {
+ GST_ELEMENT_WARNING (depayload, STREAM, DEMUX, NULL,
+ ("Non-compliant stream: sampling field missing. Frames my appear incorrect"));
+ colorspace = gst_structure_get_string (structure, "colorspace");
+ if (!strcmp (colorspace, "GRAY")) {
+ sampling = GST_RTP_J2K_GRAYSCALE;
+ }
+ }
+
+ outcaps = gst_caps_new_simple ("image/x-jpc",
+ "framerate", GST_TYPE_FRACTION, 0, 1,
+ "fields", G_TYPE_INT, 1, "colorspace", G_TYPE_STRING, colorspace, NULL);
+
+ if (sampling)
+ gst_caps_set_simple (outcaps, "sampling", G_TYPE_STRING, sampling, NULL);
+