qtdemux: Fix critical message on cenc sample grouping parsing

Inside qtdemux_parse_sbgp there is already a check to ensure the fragment group
properties are not null but it is being hit in some examples and it is better to
directly avoid the critical.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4576>
This commit is contained in:
Xabier Rodriguez Calvar 2023-05-08 16:55:26 +02:00 committed by GStreamer Marge Bot
parent ed52e3a005
commit bdff780fe9

View file

@ -4444,8 +4444,8 @@ qtdemux_parse_moof (GstQTDemux * qtdemux, const guint8 * buffer, guint length,
&& (stream->protection_scheme_type == FOURCC_cenc && (stream->protection_scheme_type == FOURCC_cenc
|| stream->protection_scheme_type == FOURCC_cbcs)) { || stream->protection_scheme_type == FOURCC_cbcs)) {
QtDemuxCencSampleSetInfo *info = stream->protection_scheme_info; QtDemuxCencSampleSetInfo *info = stream->protection_scheme_info;
GNode *sbgp_node, *sgpd_node; GNode *sgpd_node;
GstByteReader sgpd_data, sbgp_data; GstByteReader sgpd_data;
if (info->fragment_group_properties) { if (info->fragment_group_properties) {
g_ptr_array_free (info->fragment_group_properties, TRUE); g_ptr_array_free (info->fragment_group_properties, TRUE);
@ -4471,17 +4471,20 @@ qtdemux_parse_moof (GstQTDemux * qtdemux, const guint8 * buffer, guint length,
FOURCC_sgpd, &sgpd_data); FOURCC_sgpd, &sgpd_data);
} }
sbgp_node = qtdemux_tree_get_child_by_type_full (traf_node, FOURCC_sbgp, if (info->fragment_group_properties) {
&sbgp_data); GstByteReader sbgp_data;
while (sbgp_node) { GNode *sbgp_node = qtdemux_tree_get_child_by_type_full (traf_node,
if (qtdemux_parse_sbgp (qtdemux, stream, &sbgp_data, FOURCC_seig, FOURCC_sbgp, &sbgp_data);
&info->sample_to_group_map, info->default_properties, while (sbgp_node) {
info->track_group_properties, if (qtdemux_parse_sbgp (qtdemux, stream, &sbgp_data, FOURCC_seig,
info->fragment_group_properties)) { &info->sample_to_group_map, info->default_properties,
break; info->track_group_properties,
info->fragment_group_properties)) {
break;
}
sbgp_node = qtdemux_tree_get_sibling_by_type_full (sbgp_node,
FOURCC_sgpd, &sbgp_data);
} }
sbgp_node = qtdemux_tree_get_sibling_by_type_full (sbgp_node,
FOURCC_sgpd, &sbgp_data);
} }
} }