platform/upstream/gstreamer.git
11 years agompdparser: add support for SegmentTimeline syntax elements
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

11 years agoFixed wrong index in fragments
David Corvoysier [Fri, 19 Oct 2012 13:42:51 +0000 (15:42 +0200)]
Fixed wrong index in fragments

11 years agompdparser: fix memory leak in gst_mpd_client_get_next_fragment_set()
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

11 years agoRemoved unused function
David Corvoysier [Fri, 19 Oct 2012 08:50:16 +0000 (10:50 +0200)]
Removed unused function

11 years agoSeek event handling cleanup
David Corvoysier [Fri, 19 Oct 2012 08:43:49 +0000 (10:43 +0200)]
Seek event handling cleanup

11 years agodashdemux: fix playing of single-segment media streams
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

11 years agouridownloader: deleted useless declaration of gst_uri_downloader_free()
Gianluca Gennari [Wed, 17 Oct 2012 16:46:22 +0000 (18:46 +0200)]
uridownloader: deleted useless declaration of gst_uri_downloader_free()

11 years agouridownloader: when possible, reuse existing element to download a new URI
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

11 years agodashdemux: unref caps in function need_add_header()
Gianluca Gennari [Wed, 17 Oct 2012 16:43:26 +0000 (18:43 +0200)]
dashdemux: unref caps in function need_add_header()

11 years agodashdemux: fix extraction of SegmentTemplate->initialization in gst_mpd_client_get_ne...
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

11 years agodashdemux: fix memory leak in gst_dash_demux_get_next_header()
Gianluca Gennari [Wed, 17 Oct 2012 16:40:02 +0000 (18:40 +0200)]
dashdemux: fix memory leak in gst_dash_demux_get_next_header()

11 years agoWe now only accept actual manifest files, and not any XML file
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

11 years agoAdded a typefind helper for DASH: this commit should be reverted as soon as a proper...
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

11 years agoFixed state machine (again)
David Corvoysier [Wed, 17 Oct 2012 08:02:39 +0000 (10:02 +0200)]
Fixed state machine (again)

11 years agoCode refactoring
David Corvoysier [Tue, 16 Oct 2012 14:46:17 +0000 (16:46 +0200)]
Code refactoring

11 years agoFixed state machine
David Corvoysier [Tue, 16 Oct 2012 14:34:10 +0000 (16:34 +0200)]
Fixed state machine

11 years agoImprove consistency of the tasks shutdown code
David Corvoysier [Tue, 16 Oct 2012 11:43:39 +0000 (13:43 +0200)]
Improve consistency of the tasks shutdown code

11 years agoAdded missing g_list_free
David Corvoysier [Tue, 16 Oct 2012 10:51:44 +0000 (12:51 +0200)]
Added missing g_list_free

11 years agoDo not answer to URI queries
David Corvoysier [Tue, 16 Oct 2012 09:44:26 +0000 (11:44 +0200)]
Do not answer to URI queries

11 years agoTry queries upstream if we cannot process them
David Corvoysier [Tue, 16 Oct 2012 09:39:18 +0000 (11:39 +0200)]
Try queries upstream if we cannot process them

11 years agoRenamed demux->next_stream in demux->next_push
David Corvoysier [Tue, 16 Oct 2012 09:26:03 +0000 (11:26 +0200)]
Renamed demux->next_stream in demux->next_push

11 years agoInlined one-line utility funciton that was called only once
David Corvoysier [Tue, 16 Oct 2012 09:23:26 +0000 (11:23 +0200)]
Inlined one-line utility funciton that was called only once

11 years agoFixed regression after the introduction of the multi-screen support, preventing the...
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

11 years agoModified log level of shutdown message
David Corvoysier [Mon, 15 Oct 2012 14:41:28 +0000 (16:41 +0200)]
Modified log level of shutdown message

11 years agoComments: We don't select a single representation, but a representation for each...
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)

11 years agoRemoved debug trace
David Corvoysier [Mon, 15 Oct 2012 12:25:27 +0000 (14:25 +0200)]
Removed debug trace

11 years agoAdded introduction and general design notes
David Corvoysier [Mon, 15 Oct 2012 12:14:53 +0000 (14:14 +0200)]
Added introduction and general design notes

11 years agoFixed wrong comment
David Corvoysier [Mon, 15 Oct 2012 11:54:17 +0000 (13:54 +0200)]
Fixed wrong comment

11 years agoDocumented gst_dash_demux_download_loop
David Corvoysier [Mon, 15 Oct 2012 11:52:31 +0000 (13:52 +0200)]
Documented gst_dash_demux_download_loop

11 years agoCommented gst_dash_demux_stream_loop
David Corvoysier [Mon, 15 Oct 2012 11:35:15 +0000 (13:35 +0200)]
Commented gst_dash_demux_stream_loop

11 years agoCommented needs_pad_switch
David Corvoysier [Mon, 15 Oct 2012 11:17:12 +0000 (13:17 +0200)]
Commented needs_pad_switch

11 years agoDocumented the representation switch mechanism
David Corvoysier [Mon, 15 Oct 2012 11:09:49 +0000 (13:09 +0200)]
Documented the representation switch mechanism

11 years agoReplaced references to playlist (HLS) by references to manifest (DASH)
David Corvoysier [Mon, 15 Oct 2012 09:40:55 +0000 (11:40 +0200)]
Replaced references to playlist (HLS) by references to manifest (DASH)

11 years agoRenamed gst_dash_demux_switch_playlist to gst_dash_demux_select_representation and...
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

11 years agoRemoved obsolete comment
David Corvoysier [Mon, 15 Oct 2012 09:19:29 +0000 (11:19 +0200)]
Removed obsolete comment

11 years agoApplied gst-indent
David Corvoysier [Mon, 15 Oct 2012 09:18:25 +0000 (11:18 +0200)]
Applied gst-indent

11 years agoUpdated README
David Corvoysier [Thu, 11 Oct 2012 10:54:50 +0000 (12:54 +0200)]
Updated README

11 years agompdparser: support MPD files with SegmentBase elements encoded inside a SegmentList...
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

11 years agompdparser/dashdemux: fixed get_width, get_height, get_audio_rate, get_num_audio_chann...
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;

11 years agompdparser: added support for single-segment streams with the URL encoded in the baseU...
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

11 years agompdparser: added lang attribute to ProgramInformation node
Gianluca Gennari [Mon, 8 Oct 2012 13:26:48 +0000 (15:26 +0200)]
mpdparser: added lang attribute to ProgramInformation node

11 years agompdparser: added support for Accessibility, Role, Rating, Viewpoint elements to Adapt...
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;

11 years agompdparser: support multiple ProgramInformation nodes
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

11 years agompdparser: fixed parsing of SegmentList syntax element, and eliminated Represention...
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.

11 years agompdparser: fixed return with no value
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

11 years agompdparser.c/.h: changed license from dual MIT/LGPL 2.0 to LGPL 2.1
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

11 years agoOptimize the two functions that return the number and the list of languages in a...
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

11 years agoAdd the headers to the adaptationsets segments if any one of these changed representation
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

11 years agoSupport Multi languages (need a decodebin2 patch)
Hamid ZAKARI [Sat, 29 Sep 2012 01:13:29 +0000 (03:13 +0200)]
Support Multi languages (need a decodebin2 patch)

11 years agoRemove the "TODO" comment
Hamid ZAKARI [Sat, 29 Sep 2012 00:41:13 +0000 (02:41 +0200)]
Remove the "TODO" comment

11 years agoRenamed LICENSE into COPYING
David Corvoysier [Fri, 28 Sep 2012 10:55:27 +0000 (12:55 +0200)]
Renamed LICENSE into COPYING

11 years agoUpdated authors
David Corvoysier [Fri, 28 Sep 2012 09:46:00 +0000 (11:46 +0200)]
Updated authors

11 years agoInitial import of gstdashdemux sources
David Corvoysier [Wed, 8 May 2013 14:13:32 +0000 (11:13 -0300)]
Initial import of gstdashdemux sources

11 years agoUse DVB API v5 aka S2API instead of obsolete v3 API
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

11 years agosmoothstreaming: pass width, height, channels and rate as integer
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.

11 years agovdpau: Add VdpVideoSurface caps feature
Sreerenj Balachandran [Wed, 8 May 2013 09:45:20 +0000 (12:45 +0300)]
vdpau: Add VdpVideoSurface caps feature

11 years agosmoothstreaming: fix WMV caps
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

11 years agomssdemux: fixing compiler warnings about print formats
Thiago Santos [Tue, 23 Apr 2013 15:08:38 +0000 (12:08 -0300)]
mssdemux: fixing compiler warnings about print formats

11 years agosmoothstreaming: port to 1.0
Thiago Santos [Tue, 16 Apr 2013 22:35:03 +0000 (19:35 -0300)]
smoothstreaming: port to 1.0

11 years agomssdemux: remove already fixed TODO comment
Thiago Santos [Fri, 12 Apr 2013 18:59:04 +0000 (15:59 -0300)]
mssdemux: remove already fixed TODO comment

11 years agomssdemux: replace gst_value_deserialize with simpler function
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.

11 years agomssdemux: fix newsegment event leak
Thiago Santos [Fri, 12 Apr 2013 18:56:35 +0000 (15:56 -0300)]
mssdemux: fix newsegment event leak

11 years agomssdemux: replace unused parameter
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

11 years agomss: avoid GValue leak
Wim Taymans [Mon, 11 Mar 2013 09:09:40 +0000 (10:09 +0100)]
mss: avoid GValue leak

11 years agomssdemux: fix a small memory leak
Louis-Francis Ratté-Boulianne [Fri, 22 Feb 2013 22:00:30 +0000 (17:00 -0500)]
mssdemux: fix a small memory leak

11 years agomssdemux: avoid streaming to fail when download is cancelled
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).

11 years agomssdemux: removing unused functions
Thiago Santos [Fri, 8 Feb 2013 05:01:46 +0000 (02:01 -0300)]
mssdemux: removing unused functions

11 years agomssdemux: switch bitrates without switching pads
Thiago Santos [Fri, 8 Feb 2013 03:51:30 +0000 (01:51 -0200)]
mssdemux: switch bitrates without switching pads

11 years agomssdemux: Check if pads are valid before removing.
Andre Moreira Magalhaes (andrunko) [Thu, 7 Feb 2013 18:26:46 +0000 (16:26 -0200)]
mssdemux: Check if pads are valid before removing.

11 years agomssdemux: add a maximum error count for downloads
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

11 years agomssdemux: use streams bitrate individually
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.

11 years agomssdemux: use downloadbitrate utility for measuring bitrate
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

11 years agomssdemux: Properly compute new bitrate and use bitrate_limit.
Andre Moreira Magalhaes (andrunko) [Tue, 5 Feb 2013 06:01:04 +0000 (04:01 -0200)]
mssdemux: Properly compute new bitrate and use bitrate_limit.

11 years agomssdemux: Avoid a possible division by zero
Andre Moreira Magalhaes (andrunko) [Tue, 5 Feb 2013 05:27:51 +0000 (03:27 -0200)]
mssdemux: Avoid a possible division by zero

11 years agomssdemux: Add missing object param to GST_DEBUG|INFO_OBJECT calls
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

11 years agomssdemux: add bitrate-limit property
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

11 years agomssdemux: use the shared uridownloader lib instead of an internal copy
Thiago Santos [Tue, 5 Feb 2013 00:58:09 +0000 (21:58 -0300)]
mssdemux: use the shared uridownloader lib instead of an internal copy

11 years agomssdemux: Do not block on reset.
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.

11 years agomssdemux: handle FLUSH events by resetting the demuxer state
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:44:04 +0000 (17:44 -0500)]
mssdemux: handle FLUSH events by resetting the demuxer state

11 years agomssdemux: add conditions to prevent some crashes
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:43:46 +0000 (17:43 -0500)]
mssdemux: add conditions to prevent some crashes

11 years agomssdemux: use standard glib methods
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:29:58 +0000 (17:29 -0500)]
mssdemux: use standard glib methods

11 years agomssdemux: fix some memory leaks and use right free function
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

11 years agomssdemux: don't stop a task from inside the loop
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

11 years agomssdemux: log manifest content for debugging
Louis-Francis Ratté-Boulianne [Thu, 31 Jan 2013 21:14:37 +0000 (16:14 -0500)]
mssdemux: log manifest content for debugging

11 years agomssdemux: make codec private data from manifest attributes with AAC-LC
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).

11 years agomssdemux: only try to reload the manifest for live streams
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.

11 years agomssdemux: add some documentation
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

11 years agomssdemux: add max-queue-size-buffers property
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

11 years agomssdemux: stop tasks faster
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

11 years agomssdemux: implement live streams handling
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.

11 years agomssdemux: do not leak fragments
Thiago Santos [Thu, 17 Jan 2013 19:19:54 +0000 (16:19 -0300)]
mssdemux: do not leak fragments

11 years agomssdemux: fix issue on fragment timestamping parsing
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

11 years agomssdemux: error out when upstream doesn't implement URI query
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

11 years agomssdemux: push newsegments with same start time on bitrate switches
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

11 years agomssdemux: rewriting pad tasks so that buffers are pushed by ts order
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

11 years agomssdemux: some fixes to bitrate switching
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

11 years agomssdemux: refactoring fragment download to its own function
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

11 years agomssdemux: implement bitrate switching
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

11 years agomssdemux: add connection-speed property
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.

11 years agomssdemux: add an 'active' flag to manifest stream
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