From 85fbbc7a24f8c8080cb564995dc990c45bccc85c Mon Sep 17 00:00:00 2001 From: Aaron Boxer Date: Thu, 6 Jul 2017 15:14:57 -0400 Subject: [PATCH] jpeg2000parse: Parse colorimetry, interlace-mode, field-order, multiview-mode and chroma-site https://bugzilla.gnome.org/show_bug.cgi?id=753323 --- gst/videoparsers/gstjpeg2000parse.c | 45 +++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/gst/videoparsers/gstjpeg2000parse.c b/gst/videoparsers/gstjpeg2000parse.c index 36da1f6..62d7c6f 100644 --- a/gst/videoparsers/gstjpeg2000parse.c +++ b/gst/videoparsers/gstjpeg2000parse.c @@ -675,13 +675,44 @@ gst_jpeg2000_parse_handle_frame (GstBaseParse * parse, } } - if (current_caps_struct && - gst_structure_get_fraction (current_caps_struct, "framerate", &fr_num, - &fr_denom)) { - gst_caps_set_simple (src_caps, "framerate", GST_TYPE_FRACTION, fr_num, - fr_denom, NULL); - } else { - GST_WARNING_OBJECT (jpeg2000parse, "No framerate set"); + if (current_caps_struct) { + const gchar *caps_string = gst_structure_get_string + (current_caps_struct, "colorimetry"); + if (caps_string) { + gst_caps_set_simple (src_caps, "colorimetry", G_TYPE_STRING, + caps_string, NULL); + } + caps_string = gst_structure_get_string + (current_caps_struct, "interlace-mode"); + if (caps_string) { + gst_caps_set_simple (src_caps, "interlace-mode", G_TYPE_STRING, + caps_string, NULL); + } + caps_string = gst_structure_get_string + (current_caps_struct, "field-order"); + if (caps_string) { + gst_caps_set_simple (src_caps, "field-order", G_TYPE_STRING, + caps_string, NULL); + } + caps_string = gst_structure_get_string + (current_caps_struct, "multiview-mode"); + if (caps_string) { + gst_caps_set_simple (src_caps, "multiview-mode", G_TYPE_STRING, + caps_string, NULL); + } + caps_string = gst_structure_get_string + (current_caps_struct, "chroma-site"); + if (caps_string) { + gst_caps_set_simple (src_caps, "chroma-site", G_TYPE_STRING, + caps_string, NULL); + } + if (gst_structure_get_fraction (current_caps_struct, "framerate", &fr_num, + &fr_denom)) { + gst_caps_set_simple (src_caps, "framerate", GST_TYPE_FRACTION, fr_num, + fr_denom, NULL); + } else { + GST_WARNING_OBJECT (jpeg2000parse, "No framerate set"); + } } if (!gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (parse), src_caps)) { -- 2.7.4