summaryrefslogtreecommitdiff
path: root/gst/playback/gsturidecodebin.c
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>2013-07-26 15:44:28 +0200
committerSjoerd Simons <sjoerd@luon.net>2014-01-24 22:34:51 +0100
commit43237ad0e25ffa4adb949cbde397cd00aa9c180d (patch)
tree6105dde252674509f937c18b5febeb9228b63457 /gst/playback/gsturidecodebin.c
parent4c8e211e57146f00fff325403c07217274e9b2f1 (diff)
uridecodebin: Drop hardcoded list of media suitable for download buffering
Discussion on IRC indicated that the main reason for this list was to prevent demuxers that can trigger a lot of seeking from using progressive buffering using queue2 (which due to being seekable triggers that behaviour). However given that upstream can indicate seeks are possible but should be avoided via a scheduling query, this extra whitelisting shouldn't be necessary for well-behaved demuxers. https://bugzilla.gnome.org/show_bug.cgi?id=704933
Diffstat (limited to 'gst/playback/gsturidecodebin.c')
-rw-r--r--gst/playback/gsturidecodebin.c34
1 files changed, 5 insertions, 29 deletions
diff --git a/gst/playback/gsturidecodebin.c b/gst/playback/gsturidecodebin.c
index cb053f0b2..0cd8b9cdb 100644
--- a/gst/playback/gsturidecodebin.c
+++ b/gst/playback/gsturidecodebin.c
@@ -90,7 +90,6 @@ struct _GstURIDecodeBin
gchar *encoding;
gboolean is_stream;
- gboolean is_download;
gboolean need_queue;
guint64 buffer_duration; /* When buffering, buffer duration (ns) */
guint buffer_size; /* When buffering, buffer size (bytes) */
@@ -1207,19 +1206,6 @@ no_ghost:
}
}
-/* helper function to lookup stuff in lists */
-static gboolean
-array_has_value (const gchar * values[], const gchar * value)
-{
- gint i;
-
- for (i = 0; values[i]; i++) {
- if (g_str_has_prefix (value, values[i]))
- return TRUE;
- }
- return FALSE;
-}
-
static gboolean
array_has_uri_value (const gchar * values[], const gchar * value)
{
@@ -1246,17 +1232,9 @@ static const gchar *queue_uris[] = { "cdda://", NULL };
/* blacklisted URIs, we know they will always fail. */
static const gchar *blacklisted_uris[] = { NULL };
-/* media types we can download */
-static const gchar *download_media[] = {
- "video/quicktime", "video/mj2", "audio/x-m4a", "application/x-3gp",
- "video/x-flv", "video/x-msvideo", "video/webm", NULL
-};
-
#define IS_STREAM_URI(uri) (array_has_uri_value (stream_uris, uri))
#define IS_QUEUE_URI(uri) (array_has_uri_value (queue_uris, uri))
#define IS_BLACKLISTED_URI(uri) (array_has_uri_value (blacklisted_uris, uri))
-#define IS_DOWNLOAD_MEDIA(media) (array_has_value (download_media, media))
-
/*
* Generate and configure a source element.
*/
@@ -1867,20 +1845,18 @@ type_found (GstElement * typefind, guint probability,
GstElement *dec_elem, *queue;
GstStructure *s;
const gchar *media_type;
+ gboolean do_download = FALSE;
GST_DEBUG_OBJECT (decoder, "typefind found caps %" GST_PTR_FORMAT, caps);
s = gst_caps_get_structure (caps, 0);
media_type = gst_structure_get_name (s);
- /* remember if we need download buffering */
- decoder->is_download = IS_DOWNLOAD_MEDIA (media_type) && decoder->download;
/* only enable download buffering if the upstream duration is known */
- if (decoder->is_download) {
+ if (decoder->download) {
gint64 dur;
- decoder->is_download =
- (gst_element_query_duration (typefind, GST_FORMAT_BYTES, &dur)
+ do_download = (gst_element_query_duration (typefind, GST_FORMAT_BYTES, &dur)
&& dur != -1);
}
@@ -1898,9 +1874,9 @@ type_found (GstElement * typefind, guint probability,
decoder->queue = queue;
GST_DEBUG_OBJECT (decoder, "check media-type %s, %d", media_type,
- decoder->download);
+ do_download);
- if (decoder->is_download) {
+ if (do_download) {
gchar *temp_template, *filename;
const gchar *tmp_dir, *prgname;