From 73159cdc5d82484176e0fac9d410a4045c3856b5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Fri, 17 Jan 2020 16:19:52 +0100 Subject: [PATCH] vaapih264enc: accept baseline as constrained baseline compatible --- gst/vaapi/gstvaapiencode_h264.c | 8 ++++++++ gst/vaapi/gstvaapipluginutil.c | 2 ++ 2 files changed, 10 insertions(+) diff --git a/gst/vaapi/gstvaapiencode_h264.c b/gst/vaapi/gstvaapiencode_h264.c index 98badf4..72aeac5 100644 --- a/gst/vaapi/gstvaapiencode_h264.c +++ b/gst/vaapi/gstvaapiencode_h264.c @@ -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 { diff --git a/gst/vaapi/gstvaapipluginutil.c b/gst/vaapi/gstvaapipluginutil.c index 4db9b77..87ab575 100644 --- a/gst/vaapi/gstvaapipluginutil.c +++ b/gst/vaapi/gstvaapipluginutil.c @@ -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); } -- 2.7.4