diff options
author | He Junyan <junyan.he@intel.com> | 2021-06-26 15:11:47 +0800 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2021-07-02 10:27:41 +0000 |
commit | 42a861fe591613313dc6bd6b9c3e0a660d637fb3 (patch) | |
tree | 918dbd07011b4eedcf27449377668a51f125b091 /gst | |
parent | ac51e4192838ccdc8f4a555b784fc2f277031f0c (diff) | |
download | gstreamer-plugins-bad-42a861fe591613313dc6bd6b9c3e0a660d637fb3.tar.gz |
h265parse: Map -intra profiles to non-intra compatible profiles.
All the -intra profiles can map to non-intra profiles as compatible
profiles, except the monochrome case for main and main-10.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2322>
Diffstat (limited to 'gst')
-rw-r--r-- | gst/videoparsers/gsth265parse.c | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/gst/videoparsers/gsth265parse.c b/gst/videoparsers/gsth265parse.c index efaf916b2..fc6023f1a 100644 --- a/gst/videoparsers/gsth265parse.c +++ b/gst/videoparsers/gsth265parse.c @@ -1850,6 +1850,106 @@ get_compatible_profile_caps (GstH265SPS * sps, GstH265Profile profile) (GST_H265_PROFILE_SCREEN_EXTENDED_HIGH_THROUGHPUT_444_14); break; } + /* All the -intra profiles can map to non-intra profiles, except + the monochrome case for main and main-10. */ + case GST_H265_PROFILE_MAIN_INTRA: + { + if (sps->chroma_format_idc == 1) { + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN); + + /* Add all main compatible profiles without monochrome. */ + /* A.3.3 */ + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_10); + + /* A.3.5 */ + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_444_10); + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_444_12); + + /* A.3.7 */ + profiles |= profile_to_flag (GST_H265_PROFILE_SCREEN_EXTENDED_MAIN); + profiles |= profile_to_flag (GST_H265_PROFILE_SCREEN_EXTENDED_MAIN_10); + profiles |= + profile_to_flag + (GST_H265_PROFILE_SCREEN_EXTENDED_HIGH_THROUGHPUT_444); + profiles |= + profile_to_flag + (GST_H265_PROFILE_SCREEN_EXTENDED_HIGH_THROUGHPUT_444_10); + profiles |= + profile_to_flag + (GST_H265_PROFILE_SCREEN_EXTENDED_HIGH_THROUGHPUT_444_14); + + /* G.11.1.1 */ + profiles |= profile_to_flag (GST_H265_PROFILE_MULTIVIEW_MAIN); + + /* H.11.1.1 */ + profiles |= profile_to_flag (GST_H265_PROFILE_SCALABLE_MAIN); + profiles |= profile_to_flag (GST_H265_PROFILE_SCALABLE_MAIN_10); + + /* I.11.1.1 */ + profiles |= profile_to_flag (GST_H265_PROFILE_3D_MAIN); + } + + /* Add all main compatible profiles with monochrome. */ + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_12); + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_422_10); + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_422_12); + profiles |= profile_to_flag (GST_H265_PROFILE_SCREEN_EXTENDED_MAIN_444); + profiles |= + profile_to_flag (GST_H265_PROFILE_SCREEN_EXTENDED_MAIN_444_10); + break; + } + case GST_H265_PROFILE_MAIN_10_INTRA: + { + if (sps->chroma_format_idc == 1) { + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_10); + + /* Add all main-10 compatible profiles without monochrome. */ + /* A.3.5 */ + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_444_10); + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_444_12); + + /* A.3.7 */ + profiles |= profile_to_flag (GST_H265_PROFILE_SCREEN_EXTENDED_MAIN_10); + + /* H.11.1.1 */ + profiles |= profile_to_flag (GST_H265_PROFILE_SCALABLE_MAIN_10); + } + + /* Add all main-10 compatible profiles with monochrome. */ + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_12); + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_422_10); + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_422_12); + break; + } + case GST_H265_PROFILE_MAIN_12_INTRA: + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_12); + break; + case GST_H265_PROFILE_MAIN_422_10_INTRA: + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_422_10); + break; + case GST_H265_PROFILE_MAIN_422_12_INTRA: + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_422_12); + break; + case GST_H265_PROFILE_MAIN_444_INTRA: + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_444); + + /* Add all main444 compatible profiles. */ + /* A.3.7 */ + profiles |= profile_to_flag (GST_H265_PROFILE_SCREEN_EXTENDED_MAIN_444); + profiles |= + profile_to_flag (GST_H265_PROFILE_SCREEN_EXTENDED_MAIN_444_10); + break; + case GST_H265_PROFILE_MAIN_444_10_INTRA: + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_444_10); + + /* Add all main444-10 compatible profiles. */ + /* A.3.7 */ + profiles |= + profile_to_flag (GST_H265_PROFILE_SCREEN_EXTENDED_MAIN_444_10); + break; + case GST_H265_PROFILE_MAIN_444_12_INTRA: + profiles |= profile_to_flag (GST_H265_PROFILE_MAIN_444_12); + break; default: break; } |