mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-04 01:32:42 +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);
|
(GST_H265_PROFILE_SCREEN_EXTENDED_HIGH_THROUGHPUT_444_14);
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue