David Corvoysier [Tue, 16 Oct 2012 09:26:03 +0000 (11:26 +0200)]
Renamed demux->next_stream in demux->next_push
David Corvoysier [Tue, 16 Oct 2012 09:23:26 +0000 (11:23 +0200)]
Inlined one-line utility funciton that was called only once
David Corvoysier [Tue, 16 Oct 2012 07:10:00 +0000 (09:10 +0200)]
Fixed regression after the introduction of the multi-screen support, preventing the pipeline from stopping properly
David Corvoysier [Mon, 15 Oct 2012 14:41:28 +0000 (16:41 +0200)]
Modified log level of shutdown message
David Corvoysier [Mon, 15 Oct 2012 13:08:53 +0000 (15:08 +0200)]
Comments: We don't select a single representation, but a representation for each stream Code: cleanup of gst_get_next_fragment (also renamed in gst_get_next_fragment_set)
David Corvoysier [Mon, 15 Oct 2012 12:25:27 +0000 (14:25 +0200)]
Removed debug trace
David Corvoysier [Mon, 15 Oct 2012 12:14:53 +0000 (14:14 +0200)]
Added introduction and general design notes
David Corvoysier [Mon, 15 Oct 2012 11:54:17 +0000 (13:54 +0200)]
Fixed wrong comment
David Corvoysier [Mon, 15 Oct 2012 11:52:31 +0000 (13:52 +0200)]
Documented gst_dash_demux_download_loop
David Corvoysier [Mon, 15 Oct 2012 11:35:15 +0000 (13:35 +0200)]
Commented gst_dash_demux_stream_loop
David Corvoysier [Mon, 15 Oct 2012 11:17:12 +0000 (13:17 +0200)]
Commented needs_pad_switch
David Corvoysier [Mon, 15 Oct 2012 11:09:49 +0000 (13:09 +0200)]
Documented the representation switch mechanism
David Corvoysier [Mon, 15 Oct 2012 09:40:55 +0000 (11:40 +0200)]
Replaced references to playlist (HLS) by references to manifest (DASH)
David Corvoysier [Mon, 15 Oct 2012 09:33:58 +0000 (11:33 +0200)]
Renamed gst_dash_demux_switch_playlist to gst_dash_demux_select_representation and added comments
David Corvoysier [Mon, 15 Oct 2012 09:19:29 +0000 (11:19 +0200)]
Removed obsolete comment
David Corvoysier [Mon, 15 Oct 2012 09:18:25 +0000 (11:18 +0200)]
Applied gst-indent
David Corvoysier [Thu, 11 Oct 2012 10:54:50 +0000 (12:54 +0200)]
Updated README
Gianluca Gennari [Tue, 9 Oct 2012 11:24:23 +0000 (13:24 +0200)]
mpdparser: support MPD files with SegmentBase elements encoded inside a SegmentList element
also properly support MPD files without any Initialization segment
Gianluca Gennari [Mon, 8 Oct 2012 15:43:14 +0000 (17:43 +0200)]
mpdparser/dashdemux: fixed get_width, get_height, get_audio_rate, get_num_audio_channels API functions
the actual values now can be extracted also from the AdaptationSet element;
checking NULL structs for better robustness;
Gianluca Gennari [Mon, 8 Oct 2012 14:59:21 +0000 (16:59 +0200)]
mpdparser: added support for single-segment streams with the URL encoded in the baseURL syntax element
Gianluca Gennari [Mon, 8 Oct 2012 13:26:48 +0000 (15:26 +0200)]
mpdparser: added lang attribute to ProgramInformation node
Gianluca Gennari [Mon, 8 Oct 2012 09:47:45 +0000 (11:47 +0200)]
mpdparser: added support for Accessibility, Role, Rating, Viewpoint elements to AdaptationSet node
those are DescriptorType elements, so they are just parsed and dumped for now;
Gianluca Gennari [Mon, 8 Oct 2012 09:30:40 +0000 (11:30 +0200)]
mpdparser: support multiple ProgramInformation nodes
now we keep a list of ProgramInformation nodes for each Period node
Gianluca Gennari [Mon, 8 Oct 2012 09:16:09 +0000 (11:16 +0200)]
mpdparser: fixed parsing of SegmentList syntax element, and eliminated Represention node list from Period node
SegmentList nodes are allowed into Period, AdaptationSet or Representation nodes
and there is at most 1 element, so no need to keep a list;
Period nodes cannot have any Represention elements, as AdaptationSet nodes are mandatory;
this breaks compatibility with some legacy DASH test sequences.
Gianluca Gennari [Mon, 8 Oct 2012 08:29:04 +0000 (10:29 +0200)]
mpdparser: fixed return with no value
gstmpdparser.c: In function ‘gst_mpdparser_get_list_and_nb_of_audio_language’:
gstmpdparser.c:2891: warning: ‘return’ with no value, in function returning non-void
Gianluca Gennari [Mon, 8 Oct 2012 08:24:29 +0000 (10:24 +0200)]
mpdparser.c/.h: changed license from dual MIT/LGPL 2.0 to LGPL 2.1
uniformed licencinsing to the other libraries in the dashdemux project
hzakari [Tue, 2 Oct 2012 00:28:58 +0000 (02:28 +0200)]
Optimize the two functions that return the number and the list of languages in a single function
Hamid ZAKARI [Sat, 29 Sep 2012 03:27:51 +0000 (05:27 +0200)]
Add the headers to the adaptationsets segments if any one of these changed representation
Hamid ZAKARI [Sat, 29 Sep 2012 01:13:29 +0000 (03:13 +0200)]
Support Multi languages (need a decodebin2 patch)
Hamid ZAKARI [Sat, 29 Sep 2012 00:41:13 +0000 (02:41 +0200)]
Remove the "TODO" comment
David Corvoysier [Fri, 28 Sep 2012 10:55:27 +0000 (12:55 +0200)]
Renamed LICENSE into COPYING
David Corvoysier [Fri, 28 Sep 2012 09:46:00 +0000 (11:46 +0200)]
Updated authors
David Corvoysier [Wed, 8 May 2013 14:13:32 +0000 (11:13 -0300)]
Initial import of gstdashdemux sources
Sebastian Pölsterl [Fri, 26 Oct 2012 16:00:02 +0000 (18:00 +0200)]
Use DVB API v5 aka S2API instead of obsolete v3 API
Patch is based on work of Tony Houghton <h@realh.co.uk>
https://bugzilla.gnome.org/show_bug.cgi?id=654479
Tim-Philipp Müller [Wed, 8 May 2013 14:42:01 +0000 (15:42 +0100)]
smoothstreaming: pass width, height, channels and rate as integer
g_ascii_strtoull() returns a long long integer, but we need to
pass a normal int to gst_structure_set() for fields of G_TYPE_INT,
so cast appropriately.
Sreerenj Balachandran [Wed, 8 May 2013 09:45:20 +0000 (12:45 +0300)]
vdpau: Add VdpVideoSurface caps feature
Tim-Philipp Müller [Wed, 8 May 2013 09:55:16 +0000 (10:55 +0100)]
smoothstreaming: fix WMV caps
Makes this show at least a picture:
http://playready.directtaps.net/smoothstreaming/TTLSS720VC1/To_The_Limit_720.ism/Manifest
Thiago Santos [Tue, 23 Apr 2013 15:08:38 +0000 (12:08 -0300)]
mssdemux: fixing compiler warnings about print formats
Thiago Santos [Tue, 16 Apr 2013 22:35:03 +0000 (19:35 -0300)]
smoothstreaming: port to 1.0
Thiago Santos [Fri, 12 Apr 2013 18:59:04 +0000 (15:59 -0300)]
mssdemux: remove already fixed TODO comment
Thiago Santos [Fri, 12 Apr 2013 18:58:17 +0000 (15:58 -0300)]
mssdemux: replace gst_value_deserialize with simpler function
The deserialization was only used to convert hex strings into
GstBuffers. Replace gst_value_deserialize with a simpler, direct
function.
Thiago Santos [Fri, 12 Apr 2013 18:56:35 +0000 (15:56 -0300)]
mssdemux: fix newsegment event leak
Thiago Santos [Fri, 12 Apr 2013 18:55:23 +0000 (15:55 -0300)]
mssdemux: replace unused parameter
The buffer parameter wasn't being used, it was only to signal if
a buffer was downloaded and advance to the next fragment in the
manifest.
Replace the buffer with a boolean that has the same effect and is
safer
Wim Taymans [Mon, 11 Mar 2013 09:09:40 +0000 (10:09 +0100)]
mss: avoid GValue leak
Louis-Francis Ratté-Boulianne [Fri, 22 Feb 2013 22:00:30 +0000 (17:00 -0500)]
mssdemux: fix a small memory leak
Louis-Francis Ratté-Boulianne [Tue, 19 Feb 2013 18:17:53 +0000 (13:17 -0500)]
mssdemux: avoid streaming to fail when download is cancelled
When download was failing repeatedly, it was causing streaming to fail even though it was cancelled on purpose (stopping tasks).
Thiago Santos [Fri, 8 Feb 2013 05:01:46 +0000 (02:01 -0300)]
mssdemux: removing unused functions
Thiago Santos [Fri, 8 Feb 2013 03:51:30 +0000 (01:51 -0200)]
mssdemux: switch bitrates without switching pads
Andre Moreira Magalhaes (andrunko) [Thu, 7 Feb 2013 18:26:46 +0000 (16:26 -0200)]
mssdemux: Check if pads are valid before removing.
Thiago Santos [Thu, 7 Feb 2013 06:10:46 +0000 (03:10 -0300)]
mssdemux: add a maximum error count for downloads
mssdemux will tolerate a few download errors before emitting an
error message to the bus
Thiago Santos [Wed, 6 Feb 2013 11:48:55 +0000 (08:48 -0300)]
mssdemux: use streams bitrate individually
connection setup times seem to matter when measuring the download
rate of different streams. Streams with longer fragments have a
*relatively* lower connection setup time and achieve higher bitrates.
Using the average seems unfair here, so use each stream's measured bitrate
to select its best quality option.
Thiago Santos [Tue, 5 Feb 2013 20:48:42 +0000 (17:48 -0300)]
mssdemux: use downloadbitrate utility for measuring bitrate
downloadbitrate keeps a short history of bitrates and helps
tracking the current average download bitrate for mssdemux
Andre Moreira Magalhaes (andrunko) [Tue, 5 Feb 2013 06:01:04 +0000 (04:01 -0200)]
mssdemux: Properly compute new bitrate and use bitrate_limit.
Andre Moreira Magalhaes (andrunko) [Tue, 5 Feb 2013 05:27:51 +0000 (03:27 -0200)]
mssdemux: Avoid a possible division by zero
Andre Moreira Magalhaes (andrunko) [Tue, 5 Feb 2013 05:27:22 +0000 (03:27 -0200)]
mssdemux: Add missing object param to GST_DEBUG|INFO_OBJECT calls
Thiago Santos [Tue, 5 Feb 2013 03:28:19 +0000 (00:28 -0300)]
mssdemux: add bitrate-limit property
It allows the plugin to use its own downloading bitrate measures
as a feedback to select the best streams bitrate for the current
network scenario
Thiago Santos [Tue, 5 Feb 2013 00:58:09 +0000 (21:58 -0300)]
mssdemux: use the shared uridownloader lib instead of an internal copy
Andre Moreira Magalhaes (andrunko) [Mon, 4 Feb 2013 04:20:51 +0000 (02:20 -0200)]
mssdemux: Do not block on reset.
We need to cancel the downloader for each stream before joining the main download task, otherwise
the download task will block until all the stream tasks finish.
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:44:04 +0000 (17:44 -0500)]
mssdemux: handle FLUSH events by resetting the demuxer state
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:43:46 +0000 (17:43 -0500)]
mssdemux: add conditions to prevent some crashes
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:29:58 +0000 (17:29 -0500)]
mssdemux: use standard glib methods
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:27:19 +0000 (17:27 -0500)]
mssdemux: fix some memory leaks and use right free function
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:12:41 +0000 (17:12 -0500)]
mssdemux: don't stop a task from inside the loop
Only pause the task
Louis-Francis Ratté-Boulianne [Thu, 31 Jan 2013 21:14:37 +0000 (16:14 -0500)]
mssdemux: log manifest content for debugging
Louis-Francis Ratté-Boulianne [Wed, 30 Jan 2013 05:22:50 +0000 (00:22 -0500)]
mssdemux: make codec private data from manifest attributes with AAC-LC
When the codec is AAC-LC, some server implementation (e.g. Microsoft IIS) doesn't add the CodecPrivateData attribute. The element needs to re-create the codec data from the Quality Level attributes (channels and sampling rate).
Louis-Francis Ratté-Boulianne [Wed, 30 Jan 2013 03:57:36 +0000 (22:57 -0500)]
mssdemux: only try to reload the manifest for live streams
There is no way to know if a live stream is really finished, so try to reload the manifest and check if there are more fragments to download. Else just let know it's the EOS.
Thiago Santos [Sat, 26 Jan 2013 00:24:56 +0000 (21:24 -0300)]
mssdemux: add some documentation
Adds a little bit of docs explaning the internals of mssdemux
Thiago Santos [Tue, 22 Jan 2013 20:33:41 +0000 (17:33 -0300)]
mssdemux: add max-queue-size-buffers property
Indicates how much buffering should be done internally in
mssdemux
Thiago Santos [Mon, 21 Jan 2013 21:05:59 +0000 (18:05 -0300)]
mssdemux: stop tasks faster
Issue a cancel to the downloaders so they stop earlier
Thiago Santos [Thu, 17 Jan 2013 19:20:10 +0000 (16:20 -0300)]
mssdemux: implement live streams handling
Live streams force the demuxer to keep reloading the Manifest from
time to time, as the new fragments are being added as they are recorded.
The demuxer should also try to keep up and detect when it had to skip
fragments, marking the discont flag when that happens.
Curiously, the spec doesn't seem to mention when/how a live stream is supposed
to end, so keep trying downloads until the demuxer errors out.
Thiago Santos [Thu, 17 Jan 2013 19:19:54 +0000 (16:19 -0300)]
mssdemux: do not leak fragments
Thiago Santos [Thu, 17 Jan 2013 16:48:13 +0000 (13:48 -0300)]
mssdemux: fix issue on fragment timestamping parsing
Use guint64 as the fragments can start at very high numbers,
specially on live streams
Thiago Santos [Wed, 16 Jan 2013 18:28:19 +0000 (15:28 -0300)]
mssdemux: error out when upstream doesn't implement URI query
Error out when upstream doesn't answer to URI query and mssdemux
doesn't know the URI to fetch the fragments from
Thiago Santos [Tue, 15 Jan 2013 20:31:25 +0000 (17:31 -0300)]
mssdemux: push newsegments with same start time on bitrate switches
This keeps sinks working in sync after a bitrate switch
Thiago Santos [Mon, 14 Jan 2013 16:21:10 +0000 (13:21 -0300)]
mssdemux: rewriting pad tasks so that buffers are pushed by ts order
Use pad tasks to download data and an extra task that gets the earlier
buffer (with the smallest timestamp) and pushes on the corresponding
pad.
This prevents that the audio stream rushes ahead on buffers as its
fragments should be smaller
Thiago Santos [Fri, 11 Jan 2013 18:01:33 +0000 (15:01 -0300)]
mssdemux: some fixes to bitrate switching
Removes a possible deadlock from bitrate switching when the pad
that requested the switch blocks on its pad-push
Thiago Santos [Thu, 10 Jan 2013 19:26:48 +0000 (16:26 -0300)]
mssdemux: refactoring fragment download to its own function
Makes code clearer and helps changing the download part of the
code to its own thread
Thiago Santos [Thu, 10 Jan 2013 18:16:36 +0000 (15:16 -0300)]
mssdemux: implement bitrate switching
When connection-speed changes, signal that we might need a bitrate
switch. During the switch, a new pad group is added and the old one
is drained and removed.
New pads also need to push newsegments before starting to stream
Thiago Santos [Tue, 8 Jan 2013 21:01:17 +0000 (18:01 -0300)]
mssdemux: add connection-speed property
This speed limits the maximum bitrate of streams. Currently it
is only read when starting the pipeline, but it should be used
for switching bitrates during playback to adapt to network
changes.
Thiago Santos [Tue, 8 Jan 2013 20:55:49 +0000 (17:55 -0300)]
mssdemux: add an 'active' flag to manifest stream
mssdemux should set the streams it has exposed as active so that
the manifest won't use the non-active streams to compute total bitrates
or providing fragments
Thiago Santos [Tue, 8 Jan 2013 20:54:57 +0000 (17:54 -0300)]
mssdemux: signal no-more-pads when finished exposing pads
This makes decodebin/playbin mechanism know it can start playing
when buffering is finished
Thiago Santos [Tue, 8 Jan 2013 14:08:39 +0000 (11:08 -0300)]
mssmanifest: Keep the stream qualities list sorted by bitrate
This will help making adaptive streaming chose the best rate
for a particular connection speed
Thiago Santos [Tue, 8 Jan 2013 13:16:23 +0000 (10:16 -0300)]
mssdemux: also consider fourcc AVC1 as H264
H264 can be represented by both fourccs H264 and AVC1, use both.
Thiago Santos [Fri, 4 Jan 2013 20:01:34 +0000 (17:01 -0300)]
mssmanifest: add support for VC-1 and WmaPro formats parsing
VC-1 should map to WMV3 and WmaPro to WMA2
Thiago Santos [Fri, 4 Jan 2013 20:00:34 +0000 (17:00 -0300)]
mssdemux: do not try to expose unknown streams
When the stream can't have its caps detected, better not to expose it.
If no streams are known, signal an error about no playable streams to
the application
Thiago Santos [Fri, 4 Jan 2013 18:49:43 +0000 (15:49 -0300)]
mssmanifest: do not set codec_data when it is empty
Some manifests contain empty codec datas, better not set them
Thiago Santos [Fri, 4 Jan 2013 18:49:02 +0000 (15:49 -0300)]
mssdemux: set timestamp and duration to fragment buffers
We can get those from the manifest and helps downstream to know
the fragment start time after a seeking operation
Thiago Santos [Fri, 28 Dec 2012 03:49:24 +0000 (00:49 -0300)]
mssmanifest: fix typo
Fix typo that was making the advance fragment function return a wrong
flow return in case it was already EOS
Thiago Santos [Fri, 28 Dec 2012 03:48:33 +0000 (00:48 -0300)]
mssdemux: initial implementation of seek event handling
Adds basic handling for seek in time events. Needs to cooperate
with the downstream qtdemux so that it forwards the seeks and
the corresponding newsegments
Thiago Santos [Wed, 26 Dec 2012 19:19:14 +0000 (16:19 -0300)]
mssdemux: handle src pad queries fir duration and latency
Add a src pad query handler to get the duration from the manifest
and report it upstream.
Also adds a simple handler for latency queries
Thiago Santos [Fri, 21 Dec 2012 19:42:11 +0000 (16:42 -0300)]
mssdemux: add some more error handling
Post error in some more scenarios:
* when the manifest has no streams
* when getting the fragment url fails
Thiago Santos [Fri, 21 Dec 2012 18:37:45 +0000 (15:37 -0300)]
codecparsers: ensure the debug category is properly initialized
The user of the library might not need to create a NalParser, so
the debug category needs to be initialized from other functions
as well if required.
Thiago Santos [Thu, 20 Dec 2012 18:30:06 +0000 (15:30 -0300)]
mssdemux: add timescale to the caps
This is important for downstream to properly timestamp the samples
The default value is
10000000, but this can be set in the stream
or at the top-level manifest entry
Thiago Santos [Thu, 20 Dec 2012 17:27:58 +0000 (14:27 -0300)]
mssdemux: parse the fps from h264 codec data if possible
Use h264 codec parsing lib to extract the fps from the manifest's
codec data as it doesn't seem to provide it anywhere else
Thiago Santos [Thu, 20 Dec 2012 04:09:05 +0000 (01:09 -0300)]
mssdemux: correctly add h264 codec data to caps
Need to construct an avcc atom from the codecdata read from MSS
manifests to make h264 decoders/parsers accept it
Thiago Santos [Thu, 20 Dec 2012 04:07:18 +0000 (01:07 -0300)]
mssdemux: add the correct caps to the outgoing stream
mssdemux outputs a quicktime variant, named mss-fragment
Thiago Santos [Sun, 25 Nov 2012 04:57:36 +0000 (01:57 -0300)]
mssdemux: set caps to buffers before pushing
Also update to the latest gstfragment API that provides
the fragment as a whole buffer.
Thiago Santos [Thu, 22 Nov 2012 16:01:09 +0000 (13:01 -0300)]
mssdemux: improve state changing
Keep a ref on pad to prevent it being unreffed while the mssdemux
streams are still using it. Also reset the element when going to
ready instead of when going to null.
Thiago Santos [Thu, 22 Nov 2012 15:28:56 +0000 (12:28 -0300)]
mssdemux: adds mininum error handling
This should care for basic scenarios of errors and EOS to allow
the pipeline to stop correctly
Thiago Santos [Thu, 22 Nov 2012 15:28:20 +0000 (12:28 -0300)]
mssdemux: mssmanifest: prevent accessing null stream fragment
Move the access to the stream fragment data after the check
if the fragment exists to prevent a segfault