mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 01:30:38 +00:00
decoder: hevc: Workaround to recognize wrongly encoded main profile streams
HACK: This is a work-around to identify some main profile streams having wrong profile_idc. There are some wrongly encoded main profile streams(eg: ENTP_C_LG_3.bin) which doesn't have any of the profile_idc values mentioned in Annex-A, instead general_profile_idc has been set as zero and having general_profile_compatibility_flag[general_profile_idc] is TRUE. Assuming them as MAIN profile for now. https://bugzilla.gnome.org/show_bug.cgi?id=753226 Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
This commit is contained in:
parent
869facf3bc
commit
95b8ca0cda
1 changed files with 17 additions and 3 deletions
|
@ -608,7 +608,8 @@ get_max_dec_frame_buffering (GstH265SPS * sps)
|
|||
/* Fixme: Add limit check based on Annex A */
|
||||
|
||||
/* Assuming HighestTid as sps_max_sub_layers_minus1 */
|
||||
return MAX (1, (sps->max_dec_pic_buffering_minus1[sps->max_sub_layers_minus1] + 1));
|
||||
return MAX (1,
|
||||
(sps->max_dec_pic_buffering_minus1[sps->max_sub_layers_minus1] + 1));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1022,8 +1023,21 @@ get_profile (GstVaapiDecoderH265 * decoder, GstH265SPS * sps, guint dpb_size)
|
|||
|
||||
profile =
|
||||
gst_vaapi_utils_h265_get_profile (sps->profile_tier_level.profile_idc);
|
||||
if (!profile)
|
||||
if (!profile) {
|
||||
/* HACK: This is a work-around to identify some main profile streams having wrong profile_idc.
|
||||
* There are some wrongly encoded main profile streams(eg: ENTP_C_LG_3.bin) which doesn't
|
||||
* have any of the profile_idc values mentioned in Annex-A, instead general_profile_idc
|
||||
* has been set as zero and having general_profile_compatibility_flag[general_profile_idc]
|
||||
* is TRUE. Assuming them as MAIN profile for now */
|
||||
if (sps->profile_tier_level.profile_space == 0 &&
|
||||
sps->profile_tier_level.profile_idc == 0 &&
|
||||
sps->profile_tier_level.profile_compatibility_flag[0] == 1) {
|
||||
GST_WARNING ("Wrong profile_idc, blindly setting it as main profile !!");
|
||||
profile = GST_VAAPI_PROFILE_H265_MAIN;
|
||||
} else
|
||||
return GST_VAAPI_PROFILE_UNKNOWN;
|
||||
}
|
||||
|
||||
fill_profiles (profiles, &n_profiles, profile);
|
||||
switch (profile) {
|
||||
case GST_VAAPI_PROFILE_H265_MAIN10:
|
||||
|
|
Loading…
Reference in a new issue