Thiago Santos [Fri, 25 Jan 2013 15:45:18 +0000 (12:45 -0300)]
dashdemux: Remove timing code that delays pushing of fragments
Fragments should be pushed ASAP as downstream should be responsible for
doing the syncrhonization and proper buffering.
This has the great side effect of fixing most of the seeking A/V sync issues.
Thiago Santos [Fri, 25 Jan 2013 12:36:35 +0000 (09:36 -0300)]
dash: fixing build warnings
Also running through gst-indent
Louis-Francis Ratté-Boulianne [Wed, 23 Jan 2013 21:43:12 +0000 (16:43 -0500)]
gstdashdemux: add need_header member to know whether the initialization fragment should be pushed
Louis-Francis Ratté-Boulianne [Wed, 23 Jan 2013 18:20:25 +0000 (13:20 -0500)]
dashdemux: don't wait for the whole duration of a fragment when seeking
Louis-Francis Ratté-Boulianne [Wed, 23 Jan 2013 18:19:21 +0000 (13:19 -0500)]
dashdemux: switch pads and send header file when a newsegment event is sent
Louis-Francis Ratté-Boulianne [Wed, 16 Jan 2013 18:58:52 +0000 (13:58 -0500)]
dashdemux: various fixes
David Corvoysier [Thu, 20 Dec 2012 08:04:28 +0000 (09:04 +0100)]
Applied gst-indent
David Corvoysier [Tue, 18 Dec 2012 10:21:22 +0000 (11:21 +0100)]
Replaced URL pointing to obsolete Klagenfurt MPD by a new one
Gianluca Gennari [Mon, 17 Dec 2012 14:46:32 +0000 (15:46 +0100)]
mpdparser: fix escape sequence in URL template resolving
Gianluca Gennari [Mon, 17 Dec 2012 14:39:10 +0000 (15:39 +0100)]
mpdparser: do not switch pads when bitstreamSwitching = true
Gianluca Gennari [Mon, 17 Dec 2012 14:19:33 +0000 (15:19 +0100)]
dashdemux: complete support for manifest file updates
Gianluca Gennari [Mon, 17 Dec 2012 14:12:58 +0000 (15:12 +0100)]
dashdemux: add support for manifest file updates
- the MPD file is updated in the download loop (only if we have a "dynamic" MPD and minimumUpdatePeriod is valid);
- properly LOCK/UNLOCK the GstMpdClient;
Gianluca Gennari [Mon, 17 Dec 2012 14:04:45 +0000 (15:04 +0100)]
dashdemux: new API to set/get segment index and period index
TODO: rework segment selection to support Representations or Adaptation Sets with segments not aligned
Gianluca Gennari [Mon, 17 Dec 2012 14:00:52 +0000 (15:00 +0100)]
dashdemux: new API to load the stream Period with a given index
this avoids to fiddle with stream internals in the code
Gianluca Gennari [Mon, 17 Dec 2012 13:54:42 +0000 (14:54 +0100)]
dashdemux: implement seeking across Periods
David Corvoysier [Wed, 21 Nov 2012 13:14:34 +0000 (14:14 +0100)]
Applied gst-indent
David Corvoysier [Wed, 21 Nov 2012 13:14:21 +0000 (14:14 +0100)]
By default, do not forward pad queries upstream, because it may have unforessen side-effects (forwarding the new 1.0 GST_CAPS query would prevent pad linking for instance)
Olivier Blin [Mon, 12 Nov 2012 09:54:35 +0000 (10:54 +0100)]
plugin: register as dashdemux instead of fragmented
This fixes conflicts with the HLS plugin, which is also named
fragmented.
When building its registry, gstreamer was picking one or the other
between hls and dashdemux.
Gianluca Gennari [Thu, 25 Oct 2012 15:55:02 +0000 (17:55 +0200)]
dashdemux: check if we have received the MPD file in the proper way
Gianluca Gennari [Thu, 25 Oct 2012 15:53:53 +0000 (17:53 +0200)]
mpdparser: silence warning
Olivier Blin [Thu, 25 Oct 2012 15:15:09 +0000 (17:15 +0200)]
dashdemux: fix printing buffering time and download rate/size
This was broken on armv7.
Olivier Blin [Thu, 25 Oct 2012 15:17:35 +0000 (17:17 +0200)]
dashdemux: fix unused-but-set variable
Olivier Blin [Thu, 25 Oct 2012 14:49:21 +0000 (16:49 +0200)]
dashdemux: use new gst_mpd_client_get_next_fragment_duration API
This fixes build that has been broken by commit
fb9aeac6552021b176a4c4bd07265e02a0b70e0f.
gst_mpd_client_get_target_duration has been removed, and
gst_mpd_client_get_next_fragment_duration should be used instead.
Gianluca Gennari [Wed, 24 Oct 2012 15:28:40 +0000 (17:28 +0200)]
dashdemux: remove FIXME comment
pad switching across multiple periods works perfectly fine now
and it is done only when there is a change in the CAPS
Gianluca Gennari [Wed, 24 Oct 2012 14:55:20 +0000 (16:55 +0200)]
dashdemux: send new-segment events to all pads
Gianluca Gennari [Wed, 24 Oct 2012 14:30:01 +0000 (16:30 +0200)]
dashdemux: reworked the API to retrieve fragment timestamp, fragment duration and media presentation duration
This was necessary to support variable-duration Fragments.
in the new API:
- gst_mpd_client_get_current_position returns the timestamp of the NEXT fragment to download;
- gst_mpd_client_get_next_fragment_duration returns the duration of the next fragment to download;
- gst_mpd_client_get_media_presentation_duration returns the mediaPresentationDuration from the MPD file;
also there is a new internal parser function:
- gst_mpd_client_get_segment_duration extracts the constant segment duration from the MPD file
(only used when there is no SegmentTimeline syntax element in the current representation)
In gst_mpd_client_get_next_fragment, we set the timestamp/duration of the fragment just downloaded
copying the values from the corresponding GstMediaSegment.
TODO: rework SEEKING to support seeking across different Periods.
Gianluca Gennari [Wed, 24 Oct 2012 12:50:54 +0000 (14:50 +0200)]
dashdemux: use effective segment duration to reschedule the streaming task
do not assume segment duration is constant
Conflicts:
ext/dash/gstdashdemux.c
Gianluca Gennari [Wed, 24 Oct 2012 12:24:05 +0000 (14:24 +0200)]
dashdemux: reworked gst_dash_demux_get_buffering_time() to return the effective buffering time
do not assume the Fragment duration is constant
Gianluca Gennari [Wed, 24 Oct 2012 09:49:51 +0000 (11:49 +0200)]
dashdemux: complete support for Media Presentations with several Periods
- Periods are played in sequence, from PeriodStart to PeriodEnd
- seamless switching from one Period to the next one works fine;
- the 'new-segment' generation is broken, so if we need to switch pads for a new Period there is a crash;
Gianluca Gennari [Mon, 22 Oct 2012 16:12:30 +0000 (18:12 +0200)]
mpdparser: initial support for Media Presentations made of several Periods
- build a list of the available Periods with their start and duration time
- add the list of GstStreamPeriod in the GstMpdClient data struct
- remove cur_period from GstMpdClient and introduce an API to get the current GstStreamPeriod
- several API clean-ups
Olivier Blin [Wed, 24 Oct 2012 16:10:47 +0000 (18:10 +0200)]
mpdparser: support BaseURL for SegmentURL using mediaRange
This is used in big_buck_bunny_CappedVBR_Multirate_4s_0_AudioVideo_MainProfile.mpd
Olivier Blin [Wed, 24 Oct 2012 16:04:07 +0000 (18:04 +0200)]
mpdparser: factorize adding range parameter to URL
Gianluca Gennari [Fri, 19 Oct 2012 18:12:09 +0000 (20:12 +0200)]
dashdemux: reworked caps detection
also reworked the API to extract audio/video parameters from the manifest file
(mimeType, width, height, rate, num channels)
Gianluca Gennari [Fri, 19 Oct 2012 17:03:41 +0000 (19:03 +0200)]
dashdemux: do not send bogus duration messages when mediaPresentationDuration is unknown
Gianluca Gennari [Fri, 19 Oct 2012 16:45:30 +0000 (18:45 +0200)]
mpdparser: support SegmentTimeline syntax also for list-based media segment generation
Gianluca Gennari [Fri, 19 Oct 2012 15:47:51 +0000 (17:47 +0200)]
mpdparser: add support for SegmentTimeline syntax elements
build the list of segments to be played using the SegmentTimeline syntax, if present
bugfixes:
- for dynamic MPD files, when mediaPresentationDuration is not present use minimumUpdatePeriod instead
- do not add a spurious '$' when building an URL from a template like "$Bandwidth$/init.mp4v"
- introduce gst_mpd_client_add_media_segment() to avoid code duplication
David Corvoysier [Fri, 19 Oct 2012 13:42:51 +0000 (15:42 +0200)]
Fixed wrong index in fragments
Gianluca Gennari [Fri, 19 Oct 2012 10:01:03 +0000 (12:01 +0200)]
mpdparser: fix memory leak in gst_mpd_client_get_next_fragment_set()
we have to free next_fragment_uri
David Corvoysier [Fri, 19 Oct 2012 08:50:16 +0000 (10:50 +0200)]
Removed unused function
David Corvoysier [Fri, 19 Oct 2012 08:43:49 +0000 (10:43 +0200)]
Seek event handling cleanup
Gianluca Gennari [Thu, 18 Oct 2012 16:49:53 +0000 (18:49 +0200)]
dashdemux: fix playing of single-segment media streams
other fixes:
- fixed a buffering bug: now we stop buffering when we reach the end of manifest
- now gst_mpd_client_get_target_duration() always returns a valid duration
(in case of single-segment streams, we return either Period duration or mediaPresentation duration)
TODO: support SegmentTimeline
Gianluca Gennari [Wed, 17 Oct 2012 16:46:22 +0000 (18:46 +0200)]
uridownloader: deleted useless declaration of gst_uri_downloader_free()
Gianluca Gennari [Wed, 17 Oct 2012 16:45:25 +0000 (18:45 +0200)]
uridownloader: when possible, reuse existing element to download a new URI
previously a new element was allocated for each media segment, and it was never freed
Gianluca Gennari [Wed, 17 Oct 2012 16:43:26 +0000 (18:43 +0200)]
dashdemux: unref caps in function need_add_header()
Gianluca Gennari [Wed, 17 Oct 2012 16:42:02 +0000 (18:42 +0200)]
dashdemux: fix extraction of SegmentTemplate->initialization in gst_mpd_client_get_next_header()
now the following MPD files are properly supported:
http://dash.edgesuite.net/adobe/hdworld_dash/HDWorld-1600.mpd
http://dash.edgesuite.net/adobe/hdworld_dash/HDWorld.mpd
Gianluca Gennari [Wed, 17 Oct 2012 16:40:02 +0000 (18:40 +0200)]
dashdemux: fix memory leak in gst_dash_demux_get_next_header()
David Corvoysier [Wed, 17 Oct 2012 13:52:19 +0000 (15:52 +0200)]
We now only accept actual manifest files, and not any XML file
David Corvoysier [Wed, 17 Oct 2012 13:50:33 +0000 (15:50 +0200)]
Added a typefind helper for DASH: this commit should be reverted as soon as a proper patch has been submitted to gst-plugins-base
David Corvoysier [Wed, 17 Oct 2012 08:02:39 +0000 (10:02 +0200)]
Fixed state machine (again)
David Corvoysier [Tue, 16 Oct 2012 14:46:17 +0000 (16:46 +0200)]
Code refactoring
David Corvoysier [Tue, 16 Oct 2012 14:34:10 +0000 (16:34 +0200)]
Fixed state machine
David Corvoysier [Tue, 16 Oct 2012 11:43:39 +0000 (13:43 +0200)]
Improve consistency of the tasks shutdown code
David Corvoysier [Tue, 16 Oct 2012 10:51:44 +0000 (12:51 +0200)]
Added missing g_list_free
David Corvoysier [Tue, 16 Oct 2012 09:44:26 +0000 (11:44 +0200)]
Do not answer to URI queries
David Corvoysier [Tue, 16 Oct 2012 09:39:18 +0000 (11:39 +0200)]
Try queries upstream if we cannot process them
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