summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gst-libs/gst/vaapi/gstvaapidecoder_h265.c3
-rw-r--r--gst-libs/gst/vaapi/gstvaapiprofile.c2
-rw-r--r--gst-libs/gst/vaapi/gstvaapiprofile.h1
-rw-r--r--gst-libs/gst/vaapi/gstvaapiutils_h265.c8
-rw-r--r--gst-libs/gst/vaapi/video-format.c2
-rw-r--r--gst/vaapi/gstvaapidecode.c3
6 files changed, 17 insertions, 2 deletions
diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_h265.c b/gst-libs/gst/vaapi/gstvaapidecoder_h265.c
index fcbe5ce7..992c0c02 100644
--- a/gst-libs/gst/vaapi/gstvaapidecoder_h265.c
+++ b/gst-libs/gst/vaapi/gstvaapidecoder_h265.c
@@ -533,7 +533,8 @@ is_range_extension_profile (GstVaapiProfile profile)
if (profile == GST_VAAPI_PROFILE_H265_MAIN_422_10
|| profile == GST_VAAPI_PROFILE_H265_MAIN_444
|| profile == GST_VAAPI_PROFILE_H265_MAIN_444_10
- || profile == GST_VAAPI_PROFILE_H265_MAIN12)
+ || profile == GST_VAAPI_PROFILE_H265_MAIN12
+ || profile == GST_VAAPI_PROFILE_H265_MAIN_444_12)
return TRUE;
return FALSE;
}
diff --git a/gst-libs/gst/vaapi/gstvaapiprofile.c b/gst-libs/gst/vaapi/gstvaapiprofile.c
index cbf2db57..0a538972 100644
--- a/gst-libs/gst/vaapi/gstvaapiprofile.c
+++ b/gst-libs/gst/vaapi/gstvaapiprofile.c
@@ -130,6 +130,8 @@ static const GstVaapiProfileMap gst_vaapi_profiles[] = {
"video/x-h265", "main-444-10"},
{GST_VAAPI_PROFILE_H265_MAIN12, VAProfileHEVCMain12,
"video/x-h265", "main-12"},
+ {GST_VAAPI_PROFILE_H265_MAIN_444_12, VAProfileHEVCMain444_12,
+ "video/x-h265", "main-444-12"},
{GST_VAAPI_PROFILE_H265_SCREEN_EXTENDED_MAIN, VAProfileHEVCSccMain,
"video/x-h265", "screen-extended-main"},
{GST_VAAPI_PROFILE_H265_SCREEN_EXTENDED_MAIN_10, VAProfileHEVCSccMain10,
diff --git a/gst-libs/gst/vaapi/gstvaapiprofile.h b/gst-libs/gst/vaapi/gstvaapiprofile.h
index 3ba23f69..38ec59ab 100644
--- a/gst-libs/gst/vaapi/gstvaapiprofile.h
+++ b/gst-libs/gst/vaapi/gstvaapiprofile.h
@@ -190,6 +190,7 @@ typedef enum {
GST_VAAPI_PROFILE_H265_SCREEN_EXTENDED_MAIN_444_10 =
GST_VAAPI_MAKE_PROFILE(H265,10),
GST_VAAPI_PROFILE_H265_MAIN12 = GST_VAAPI_MAKE_PROFILE(H265,11),
+ GST_VAAPI_PROFILE_H265_MAIN_444_12 = GST_VAAPI_MAKE_PROFILE(H265,12),
GST_VAAPI_PROFILE_VP9_0 = GST_VAAPI_MAKE_PROFILE(VP9,1),
GST_VAAPI_PROFILE_VP9_1 = GST_VAAPI_MAKE_PROFILE(VP9,2),
GST_VAAPI_PROFILE_VP9_2 = GST_VAAPI_MAKE_PROFILE(VP9,3),
diff --git a/gst-libs/gst/vaapi/gstvaapiutils_h265.c b/gst-libs/gst/vaapi/gstvaapiutils_h265.c
index 189f256e..44973a01 100644
--- a/gst-libs/gst/vaapi/gstvaapiutils_h265.c
+++ b/gst-libs/gst/vaapi/gstvaapiutils_h265.c
@@ -181,6 +181,11 @@ gst_vaapi_utils_h265_get_profile (GstH265SPS * sps)
case GST_H265_PROFILE_MAIN_444_10_INTRA:
vaapi_profile = GST_VAAPI_PROFILE_H265_MAIN_444_10;
break;
+ case GST_H265_PROFILE_MAIN_444_12:
+ /* Main 444_12 Intra, recognize it as MAIN_444_12 */
+ case GST_H265_PROFILE_MAIN_444_12_INTRA:
+ vaapi_profile = GST_VAAPI_PROFILE_H265_MAIN_444_12;
+ break;
case GST_H265_PROFILE_SCREEN_EXTENDED_MAIN:
vaapi_profile = GST_VAAPI_PROFILE_H265_SCREEN_EXTENDED_MAIN;
break;
@@ -375,6 +380,8 @@ gst_vaapi_utils_h265_get_chroma_type (guint chroma_format_idc,
chroma_type = GST_VAAPI_CHROMA_TYPE_YUV444;
else if (depth > 8 && depth <= 10)
chroma_type = GST_VAAPI_CHROMA_TYPE_YUV444_10BPP;
+ else if (depth > 10 && depth <= 12)
+ chroma_type = GST_VAAPI_CHROMA_TYPE_YUV444_12BPP;
break;
default:
break;
@@ -407,6 +414,7 @@ gst_vaapi_utils_h265_get_chroma_format_idc (GstVaapiChromaType chroma_type)
break;
case GST_VAAPI_CHROMA_TYPE_YUV444:
case GST_VAAPI_CHROMA_TYPE_YUV444_10BPP:
+ case GST_VAAPI_CHROMA_TYPE_YUV444_12BPP:
chroma_format_idc = 3;
break;
default:
diff --git a/gst-libs/gst/vaapi/video-format.c b/gst-libs/gst/vaapi/video-format.c
index d189b6fd..fc81407f 100644
--- a/gst-libs/gst/vaapi/video-format.c
+++ b/gst-libs/gst/vaapi/video-format.c
@@ -467,6 +467,8 @@ gst_vaapi_video_format_from_chroma (guint chroma_type)
return GST_VIDEO_FORMAT_Y210;
case GST_VAAPI_CHROMA_TYPE_YUV444_10BPP:
return GST_VIDEO_FORMAT_Y410;
+ case GST_VAAPI_CHROMA_TYPE_YUV444_12BPP:
+ return GST_VIDEO_FORMAT_Y412_LE;
default:
return GST_VIDEO_FORMAT_UNKNOWN;
}
diff --git a/gst/vaapi/gstvaapidecode.c b/gst/vaapi/gstvaapidecode.c
index 329c0e65..4be8118e 100644
--- a/gst/vaapi/gstvaapidecode.c
+++ b/gst/vaapi/gstvaapidecode.c
@@ -1302,7 +1302,8 @@ gst_vaapidecode_ensure_allowed_sinkpad_caps (GstVaapiDecode * decode)
|| profile == GST_VAAPI_PROFILE_H265_MAIN_422_10
|| profile == GST_VAAPI_PROFILE_H265_MAIN_444
|| profile == GST_VAAPI_PROFILE_H265_MAIN_444_10
- || profile == GST_VAAPI_PROFILE_H265_MAIN12) {
+ || profile == GST_VAAPI_PROFILE_H265_MAIN12
+ || profile == GST_VAAPI_PROFILE_H265_MAIN_444_12) {
gchar *profiles[3], *intra_name;
intra_name = g_strdup_printf ("%s-intra", profile_name);