GNOME Bugzilla – Bug 350399
[qtdemux] extract multiple redirect locations and required bitrates
Last modified: 2006-08-14 17:54:19 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...
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 ***
This bug has been created as a clone of bug #350343 on purpose, please leave it open.
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).
mark it FIXED then?
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
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.
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.
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.
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).