videoaggregator: Don't configure NULL chroma-site/colorimetry

If there's no known value in the best caps then the functions to convert
them to strings will return NULL. Having the fields not in the caps is
not a problem, having them with a NULL value however will cause
negotiation failures.
This commit is contained in:
Sebastian Dröge 2020-01-28 22:07:44 +02:00
parent e0a195b7bf
commit 72cb0c0641

View file

@ -894,14 +894,21 @@ gst_video_aggregator_default_update_caps (GstVideoAggregator * vagg,
GST_DEBUG_OBJECT (vagg,
"The output format will now be : %d with chroma : %s and colorimetry %s",
best_format, gst_video_chroma_to_string (best_info.chroma_site),
color_name);
best_format,
GST_STR_NULL (gst_video_chroma_to_string (best_info.chroma_site)),
GST_STR_NULL (color_name));
best_format_caps = gst_caps_copy (caps);
gst_caps_set_simple (best_format_caps, "format", G_TYPE_STRING,
gst_video_format_to_string (best_format), "chroma-site", G_TYPE_STRING,
gst_video_chroma_to_string (best_info.chroma_site), "colorimetry",
G_TYPE_STRING, color_name, NULL);
gst_video_format_to_string (best_format), NULL);
if (best_info.chroma_site != GST_VIDEO_CHROMA_SITE_UNKNOWN)
gst_caps_set_simple (best_format_caps, "chroma-site", G_TYPE_STRING,
gst_video_chroma_to_string (best_info.chroma_site), NULL);
if (color_name != NULL)
gst_caps_set_simple (best_format_caps, "colorimetry", G_TYPE_STRING,
color_name, NULL);
g_free (color_name);
ret = gst_caps_merge (best_format_caps, gst_caps_ref (caps));