vaapih264enc: accept baseline as constrained baseline compatible
authorVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Fri, 17 Jan 2020 15:19:52 +0000 (16:19 +0100)
committerVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Sun, 19 Jan 2020 15:14:14 +0000 (15:14 +0000)
gst/vaapi/gstvaapiencode_h264.c
gst/vaapi/gstvaapipluginutil.c

index 98badf4..72aeac5 100644 (file)
@@ -295,6 +295,12 @@ gst_vaapiencode_h264_set_config (GstVaapiEncode * base_encode)
       if (profile == GST_VAAPI_PROFILE_UNKNOWN)
         goto fail;
 
+      /* if allwed caps request baseline (which is deprecated), the
+       * encoder will try with constrained baseline which is
+       * compatible. */
+      if (profile == GST_VAAPI_PROFILE_H264_BASELINE)
+        profile = GST_VAAPI_PROFILE_H264_CONSTRAINED_BASELINE;
+
       tmp_caps = gst_caps_from_string (GST_CODEC_CAPS);
       gst_caps_set_simple (tmp_caps, "profile", G_TYPE_STRING,
           gst_vaapi_profile_get_name (profile), NULL);
@@ -381,6 +387,8 @@ retry:
   if (!gst_caps_can_intersect (allowed_caps, tmp_caps)) {
     if (profile == GST_VAAPI_PROFILE_H264_CONSTRAINED_BASELINE) {
       profile = GST_VAAPI_PROFILE_H264_BASELINE;
+      GST_INFO ("user might requested baseline profile, "
+          "trying constrained-baseline instead");
       goto retry;
     }
   } else {
index 4db9b77..87ab575 100644 (file)
@@ -1043,6 +1043,8 @@ gst_vaapi_h26x_encoder_get_profiles_from_caps (GstCaps * caps,
       const gchar *str = g_value_get_string (value);
       if (str) {
         profile = func (str);
+        if (profile == GST_VAAPI_PROFILE_H264_BASELINE)
+          profile = GST_VAAPI_PROFILE_H264_CONSTRAINED_BASELINE;
         if (profile != GST_VAAPI_PROFILE_UNKNOWN)
           g_array_append_val (profiles, profile);
       }