mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-11 09:55:36 +00:00
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>
This commit is contained in:
parent
ac51e41928
commit
42a861fe59
1 changed files with 100 additions and 0 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue