If the first XML element in a DASH manifest has its closing brance
beyond the first 512 bytes (because of, e.g. lots of attributes),
the MPD typefinder fails. Try to read a larger block, and then
smaller blocks until 512 bytes.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2385
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4302>
length = gst_type_find_get_length (tf);
- /* try a default that should be enough */
- if (length == 0)
- length = 512;
- else if (length < 32)
+ if (length == 0) {
+ length = 4096;
+ while (!(data = gst_type_find_peek (tf, 0, length)) && length >= 512)
+ length /= 2;
+ } else if (length < 32) {
return FALSE;
- else /* the first few bytes should be enough */
+ } else { /* the first few bytes should be enough */
length = MIN (4096, length);
+ data = gst_type_find_peek (tf, 0, length);
+ }
- data = gst_type_find_peek (tf, 0, length);
if (!data)
return FALSE;