typefind: Skip parsing of data URIs

Commit a46ab2ced2 introduced a regression,
breaking typefinding for media content muxed in mp4 container and serialized to
data URIs. For this case it doesn't make sense to look for a file extension, so
skip URI parsing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1983>
This commit is contained in:
Philippe Normand 2022-03-08 12:04:41 +00:00 committed by GStreamer Marge Bot
parent a31307d37d
commit 8ae3c584d0

View file

@ -803,6 +803,8 @@ gst_type_find_get_extension (GstTypeFindElement * typefind, GstPad * pad)
gchar *uri, *result, *path, *base_path, *find; gchar *uri, *result, *path, *base_path, *find;
GstUri *gst_uri; GstUri *gst_uri;
base_path = NULL;
query = gst_query_new_uri (); query = gst_query_new_uri ();
/* try getting the caps with an uri query and from the extension */ /* try getting the caps with an uri query and from the extension */
@ -813,6 +815,11 @@ gst_type_find_get_extension (GstTypeFindElement * typefind, GstPad * pad)
if (uri == NULL) if (uri == NULL)
goto no_uri; goto no_uri;
/* data URIs paths are opaque and do not semantically represent a
filesystem-like resource path, so skip URI parsing for this case. */
if (g_str_has_prefix (uri, "data:"))
goto no_extension;
GST_DEBUG_OBJECT (typefind, "finding extension of %s", uri); GST_DEBUG_OBJECT (typefind, "finding extension of %s", uri);
gst_uri = gst_uri_from_string (uri); gst_uri = gst_uri_from_string (uri);