videoaggregator: allow selecting an alpha output from non-alpha inputs
authorMatthew Waters <matthew@centricular.com>
Wed, 3 Mar 2021 07:28:54 +0000 (18:28 +1100)
committerThibault Saunier <tsaunier@igalia.com>
Wed, 31 Mar 2021 01:55:17 +0000 (01:55 +0000)
e.g. if we have:

video-x/raw,format=I420 ! compositor ! video/x-raw,format=BGRA

This will currently produce a warning as the alpha-ness of the chosen
'best' format (I420) will be different from the value restricted by the
downstream caps filter.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1059>

gst-libs/gst/video/gstvideoaggregator.c

index c38bf48..b1d5577 100644 (file)
@@ -951,7 +951,9 @@ gst_video_aggregator_find_best_format (GstVideoAggregator * vagg,
   for (i = 0; i < vagg->priv->supported_formats->len; i++) {
     GstVideoFormatInfo *format_info = vagg->priv->supported_formats->pdata[i];
 
-    if ((! !GST_VIDEO_FORMAT_INFO_HAS_ALPHA (format_info)) == (! !need_alpha)) {
+    /* either we don't care about alpha, or the output format needs to have
+     * alpha */
+    if (!need_alpha || GST_VIDEO_FORMAT_INFO_HAS_ALPHA (format_info)) {
       gst_video_info_set_format (best_info, format_info->format,
           best_info->width, best_info->height);
       possible_caps =