From 25422b6766ceb18778067f34e6d6b19da74bed8d Mon Sep 17 00:00:00 2001 From: He Junyan Date: Sat, 22 Jun 2019 00:44:25 +0800 Subject: [PATCH] plugin: encode: Add H265 main-444 profile. Expose the main-444 profile to h265enc caps, when the upstream chooses to use VUYA as input, we choose main 4:4:4 profile to encode the frames. --- gst-libs/gst/vaapi/gstvaapiencoder.c | 3 ++- gst-libs/gst/vaapi/gstvaapiencoder_h265.c | 2 ++ gst-libs/gst/vaapi/gstvaapiutils_h265.c | 1 + gst/vaapi/gstvaapiencode_h265.c | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/gst-libs/gst/vaapi/gstvaapiencoder.c b/gst-libs/gst/vaapi/gstvaapiencoder.c index 690caf7..771a82b 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder.c @@ -677,7 +677,8 @@ is_chroma_type_supported (GstVaapiEncoder * encoder) if (cip->chroma_type != GST_VAAPI_CHROMA_TYPE_YUV420 && cip->chroma_type != GST_VAAPI_CHROMA_TYPE_YUV422 && - cip->chroma_type != GST_VAAPI_CHROMA_TYPE_YUV420_10BPP) + cip->chroma_type != GST_VAAPI_CHROMA_TYPE_YUV420_10BPP && + cip->chroma_type != GST_VAAPI_CHROMA_TYPE_YUV444) goto unsupported; if (!get_config_attribute (encoder, VAConfigAttribRTFormat, &format)) diff --git a/gst-libs/gst/vaapi/gstvaapiencoder_h265.c b/gst-libs/gst/vaapi/gstvaapiencoder_h265.c index 9914237..8f5cd91 100644 --- a/gst-libs/gst/vaapi/gstvaapiencoder_h265.c +++ b/gst-libs/gst/vaapi/gstvaapiencoder_h265.c @@ -1082,6 +1082,8 @@ ensure_profile (GstVaapiEncoderH265 * encoder) if (format == GST_VIDEO_FORMAT_P010_10LE) profile = GST_VAAPI_PROFILE_H265_MAIN10; + else if (format == GST_VIDEO_FORMAT_VUYA) + profile = GST_VAAPI_PROFILE_H265_MAIN_444; encoder->profile = profile; encoder->profile_idc = gst_vaapi_utils_h265_get_profile_idc (profile); diff --git a/gst-libs/gst/vaapi/gstvaapiutils_h265.c b/gst-libs/gst/vaapi/gstvaapiutils_h265.c index 5b3bef1..2c078e8 100644 --- a/gst-libs/gst/vaapi/gstvaapiutils_h265.c +++ b/gst-libs/gst/vaapi/gstvaapiutils_h265.c @@ -40,6 +40,7 @@ static const struct map gst_vaapi_h265_profile_map[] = { { GST_VAAPI_PROFILE_H265_MAIN, "main" }, { GST_VAAPI_PROFILE_H265_MAIN10, "main-10" }, { GST_VAAPI_PROFILE_H265_MAIN_STILL_PICTURE, "main-still-picture" }, + { GST_VAAPI_PROFILE_H265_MAIN_444, "main-444" }, { 0, NULL } /* *INDENT-ON* */ }; diff --git a/gst/vaapi/gstvaapiencode_h265.c b/gst/vaapi/gstvaapiencode_h265.c index a3325e6..67a319c 100644 --- a/gst/vaapi/gstvaapiencode_h265.c +++ b/gst/vaapi/gstvaapiencode_h265.c @@ -65,7 +65,7 @@ static const char gst_vaapiencode_h265_sink_caps_str[] = /* *INDENT-OFF* */ static const char gst_vaapiencode_h265_src_caps_str[] = GST_CODEC_CAPS ", " - "profile = (string) { main, main-10 }"; + "profile = (string) { main, main-10, main-444 }"; /* *INDENT-ON* */ /* *INDENT-OFF* */ -- 2.7.4