After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 350399 - [qtdemux] extract multiple redirect locations and required bitrates
[qtdemux] extract multiple redirect locations and required bitrates
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal normal
: 0.10.4
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks: 351349
 
 
Reported: 2006-08-08 09:55 UTC by Bastien Nocera
Modified: 2006-08-14 17:54 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
proposed patch (5.12 KB, patch)
2006-08-10 11:56 UTC, Tim-Philipp Müller
committed Details | Review

Description Bastien Nocera 2006-08-08 09:55:38 UTC
+++ This bug was initially created as a clone of Bug #350343 +++

From:
http://events.apple.com.edgesuite.net/aug_2006/event/index.html

http://stream.qtv.apple.com/events/aug/wwdc_2006/m_wwdc_2006_350_ref.mov
should redirect us to:
http://stream.qtv.apple.com/events/aug/wwdc_2006/qt7required.mov
and
http://stream.qtv.apple.com/events/aug/wwdc_2006/wwdc_2006_1_350_ref.mov

The first MRL redirect (m_wwdc_2006_350_ref.mov) requires:
- knowledge of the "supported quicktime version" qtim atom
- knowledge of the connection speed for the data rate

The second one (wwdc_2006_1_350_ref.mov) isn't parseable by xine-lib either. I think it uses "url" atoms that we don't know how to parse...
Comment 1 Christian Kirbach 2006-08-08 18:30:20 UTC
Thanks for the bug report. This particular bug has already been reported into our bug tracking system, but please feel free to report any further bugs you find.


*** This bug has been marked as a duplicate of 350343 ***
Comment 2 Tim-Philipp Müller 2006-08-08 18:38:06 UTC
This bug has been created as a clone of bug #350343 on purpose, please leave it open.
Comment 3 Tim-Philipp Müller 2006-08-09 16:21:21 UTC
Oddly wwdc_2006_1_350_ref.mov was wrongly typefound as mpeg system stream because it starts with the byte sequence 00 00 01 C0. Fixed in -base CVS:

  2006-08-09  Tim-Philipp Müller  <tim at centricular dot net>

        * gst/typefind/gsttypefindfunctions.c: (mpeg2_sys_type_find):
          The checks here are not even close to anything that would
          justify MAXIMUM probability, lowering to POSSIBLE until someone
          fixes the checks (case at hand: quicktime redirection files
          might start with 00 00 01 XX and pass the checks here just
          fine, see #350399).


Comment 4 Christian Kirbach 2006-08-09 20:16:25 UTC
mark it FIXED then?
Comment 5 Jan Schmidt 2006-08-09 21:38:30 UTC
No, that's just an incidental bug on the way to the real problem, which is that we don't parse these new QT7 atoms
Comment 6 Tim-Philipp Müller 2006-08-10 11:56:14 UTC
Created attachment 70628 [details] [review]
proposed patch

This is what I came up with. Basically, we need to look for siblings of the 'rmda' atom as well and in addition to the URI extract

 - the minimum required quicktime version (for sorting)
 - the minimum required bandwidth

if specified.

We want to pass multiple possible URIs to the application, but also maintain the format we've been using so far. The attached patch determines a 'best' redirect and bases the primary message structure on that as we did so far. If there is more than just one URI, it will attach a "locations" field to the structure which contains a GST_TYPE_LIST of GstStructures of all locations (including information like mimimum-bandwidth).

The result is:
<qtdemux0> posting redirect message: redirect, new-location=(string)http://stream.qtv.apple.com/events/aug/wwdc_2006/wwdc_2006_1_350_ref.mov, minimum-bitrate=(int)2800, locations=(GstStructure){ "redirect\,\ new-location\=\(string\)http://stream.qtv.apple.com/events/aug/wwdc_2006/wwdc_2006_1_350_ref.mov\,\ minimum-bitrate\=\(int\)2800", "redirect\,\ new-location\=\(string\)http://stream.qtv.apple.com/events/aug/wwdc_2006/wwdc_2006_1_350_ref.mov\,\ minimum-bitrate\=\(int\)2800", "redirect\,\ new-location\=\(string\)http://stream.qtv.apple.com/events/aug/wwdc_2006/wwdc_2006_1_350_ref.mov\,\ minimum-bitrate\=\(int\)2800", "redirect\,\ new-location\=\(string\)http://stream.qtv.apple.com/events/aug/wwdc_2006/qt7required.mov\,\ minimum-bitrate\=\(int\)2800" }

Not pretty, but in the end better than using new-location-2, minimum-bitrate-2 new-location-3, etc. IMHO.
Comment 7 Bastien Nocera 2006-08-10 15:29:18 UTC
Tim, can you make sure that this is all hidden by playbin?

There's already calls for the BaconVideoWidget in Totem to set the connection speed, so playbin/bvw should be hiding all that from the front-end.
Comment 8 Tim-Philipp Müller 2006-08-14 10:46:37 UTC
Committed with additional sort function:

  2006-08-14  Tim-Philipp Müller  <tim at centricular dot net>

        * gst/qtdemux/qtdemux.c: (qtdemux_redirects_sort_func),
        (qtdemux_process_redirects), (qtdemux_parse_tree):
          Extract all references/redirections if there is more
          than one and sort them; also extract minimum required
          bitrate information if available. (#350399)


Last bit missing: connection-speed property/stuff in playbin.
Comment 9 Tim-Philipp Müller 2006-08-14 17:54:19 UTC
 2006-08-14  Tim-Philipp Müller  <tim at centricular dot net>

        * gst/playback/gstplaybin.c: (gst_play_bin_class_init),
        (gst_play_bin_set_property), (gst_play_bin_get_property),
        (value_list_append_structure_list),
        (gst_play_bin_handle_redirect_message),
        (gst_play_bin_handle_message):
          Add "connection-speed" property; re-order redirect messages with
          multiple redirect locations depending on the minimum bitrate if
          that information is available and a connection speed is set
          (#350399).