Philippe Normand
bf1246cb13
mssdemux: activate streams before configuring bitrate
...
Doing the contrary has no effect and the consequence is that playback
will start with the lowest bitrate even if we can already handle
higher bitrate.
https://bugzilla.gnome.org/show_bug.cgi?id=755108
2015-09-30 16:54:20 +01:00
Philippe Normand
ae7d938842
mssdemux: PlayReady WRM parsing support
...
If the manifest has a ProtectionHeader node then parse it and emit
protection events according to the specified protection SystemID.
https://bugzilla.gnome.org/show_bug.cgi?id=753613
2015-09-30 16:49:11 +01:00
Philippe Normand
5d4388bf9e
mssdemux: always use timescale for gst timestamp calculation
...
Not doing this can lead the demuxer to attempt downloading fragments
for an invalid start time. The server would then send a HTTP
Precondition failed error, the demuxer would try some more times to
download the invalid fragment and eventually error out.
https://bugzilla.gnome.org/show_bug.cgi?id=754523
2015-09-30 10:04:37 +01:00
Tim-Philipp Müller
699452ef31
Remove obsolete Android build cruft
...
This is not needed any longer.
2015-04-26 18:59:32 +01:00
Sebastian Dröge
0cd3938345
adaptivedemux: Allow subclasses to override how a new manifest would be downloaded
2015-04-23 17:47:18 +02:00
Thiago Santos
2526c7b286
mssdemux: use correct function to clear fragment info
...
Just freeing the url won't reset the byte ranges and can lead to wrong
ranges being used.
2015-02-17 11:41:27 -03:00
Thiago Santos
f7a1649c77
adaptivedemux: add bitrate-limit property
...
Move the property from subclasses to adaptivedemux, it allows
selecing the percentage of the measured bitrate to be used when
selecting stream bitrates
2015-02-17 11:12:42 -03:00
Thiago Santos
e9ab79dc36
adaptivedemux: add connection-speed property
...
Allows to set a bitrate directly instead of measuring it internally
based on the received chunks. The connection-speed was removed from
mssdemux and hlsdemux as it is now in the base class
2015-02-17 11:12:41 -03:00
Rajat Verma
de246c6741
mssdemux: fix crash while setting bitrate in caps structure
...
q->bitrate is a guint64, but G_TYPE_INT may read fewer bits
off the stack, and if we pass more then the NULL sentinel
may not be found at the right place, which in turn might
lead to crashes.
https://bugzilla.gnome.org/show_bug.cgi?id=741751
2015-01-07 10:08:20 +00:00
Thiago Santos
8b63a16af0
mssdemux: fix reverse playback fragment tracking
...
Rework reverse fragment traversing with repetition fields to prevent
NULL pointer deref and avoid never advancing a fragment as the variable
is unsigned and would always be non-negative.
CID #1257627
CID #1257628
2014-12-10 15:27:49 -03:00
Thiago Santos
8c49c79d7e
mssdemux: add live support
...
Implement the functions of adaptivedemux to have live support
enabled. This allows mssdemux to refresh the Manifest periodically
2014-12-04 19:52:33 -03:00
Thiago Santos
a105af22f2
mssdemux: fix getting current position in segments when after last one
...
For live streams this makes a difference when resyncing after a
Manifest refresh, otherwise it doesn't know where to restart
2014-12-04 14:28:25 -03:00
Thiago Santos
a2c31e38d1
mssdemux: support manifests with repetition fragments
...
Read the "r" attribute from fragments to support fragments nodes
that use repetition to have a shorter Manifest xml.
Instead of doing:
<c d="100" />
<c d="100" />
You can use:
<c d="100" r="2" />
2014-12-04 14:24:42 -03:00
Thiago Santos
b418c88b26
mssdemux: port to adaptivedemux base class
2014-12-04 14:24:42 -03:00
Thiago Santos
613b110b25
mssdemux: seeks in the manifest never fail
...
Set void as the return and remove error handling as it could
never fail
2014-11-07 19:30:18 -03:00
Tim-Philipp Müller
efbae700a6
smoothstreaming: initialise new GstH264NalUnit fields
...
CID #1251107 .
2014-11-07 00:16:12 +00:00
Tim-Philipp Müller
f216b7bb11
Sprinkle some G_PARAM_DEPRECATED and #ifndef GST_REMOVE_DEPRECATED
2014-11-02 17:19:34 +00:00
Thiago Santos
a38ada61e3
mssdemux: add type of stream to debug log
...
Makes it faster to debug why certain streams are not showing
2014-10-31 17:33:55 -03:00
Thiago Santos
e644b5e6ae
mssdemux: do not unlock not locked mutex
2014-10-31 17:33:55 -03:00
George Kiagiadakis
e289ab07c1
mssdemux: synchronize with the download loop thread to signal it to continue
...
If EOS or ERROR happens before the download loop thread has reached its
g_cond_wait() call, then the g_cond_signal doesn't have any effect and
the download loop thread stucks later.
https://bugzilla.gnome.org/show_bug.cgi?id=735663
2014-09-18 13:38:29 -03:00
Thiago Santos
01ccac24fa
mssdemux: fix clearing of eos state in pads
...
The internal pad still keeps its EOS flag and event as it can be assigned
after the flush-start/stop pair is sent. The EOS is assigned from the streaming
thread so this is racy.
To be sure to clear it, it has to be done after setting the source to READY to
be sure that its streaming thread isn't running.
https://bugzilla.gnome.org/show_bug.cgi?id=736012
2014-09-18 12:14:30 -03:00
Matthieu Bouron
bce21e7398
mssdemux: improve position detection when a download restart
...
Query other src pads before falling back to the position of the last
known pushed segment (which can be far ahead in time).
https://bugzilla.gnome.org/show_bug.cgi?id=736421
2014-09-11 18:25:19 -03:00
Sebastian Dröge
bda4eae1cc
mssdemux: Don't send flush events to deactivated pads
...
https://bugzilla.gnome.org/show_bug.cgi?id=736012
2014-09-04 18:21:38 +03:00
Sebastian Dröge
546feaef5c
mssdemux: Always use the redirect target to resolve relative URIs
...
But redownload the playlists from the original URI if it's not
a permanent redirect.
2014-05-28 12:56:24 +02:00
Thiago Santos
ce7319c62d
mssdemux: avoid deadlocking when erroring
...
It might get stuck when posting the message while
a reconfigure event is being pushed upstream
2014-05-12 18:28:45 -03:00
Thiago Santos
a1f87d0b4f
mssdemux: fix caps leak
2014-05-12 18:08:12 -03:00
Thiago Santos
6b8448c245
mssdemux: handle error messages from internal source
...
set up a bin message handler to get notified of error messages from
the internal source element
2014-05-12 18:08:12 -03:00
Thiago Santos
b627d7df83
mssdemux: Always accept the latency configure event
...
Upstream or internal elements are irrelevant and we should
always succeed.
2014-05-12 16:27:37 -03:00
Thiago Santos
b54367e211
mssdemux: reenable segment tracking for streams
...
Store the latest pushed timestamp so that mssdemux streams know
where they are in time
2014-05-12 16:27:37 -03:00
Thiago Santos
45d5859131
mssdemux: deprecate unused max-queue-size-buffers
...
There is no internal storage of buffers anymore
2014-05-12 16:27:37 -03:00
Thiago Santos
99a2e425de
mssdemux: measure bitrate similarly to hlsdemux
...
new bitrate = (old bitrate + (last fragment bitrate * 3)) / 4
2014-05-12 16:27:37 -03:00
Thiago Santos
90577c3ae7
mssdemux: remove uridownloader in favor of internal source
...
Refactor mssdemux to remove uridownloader to use an internal
source element which reduces startup latency and provides smaller
buffers for better buffering management downstream
2014-05-12 16:27:37 -03:00
Sebastian Dröge
3c2fe80ab6
mssdemux: Update for uri downloader API changes
2014-05-05 09:41:51 +02:00
Sebastian Dröge
5d34b071d9
mssdemux: Update for URI downloader API changes
...
And include the manifest file as referer in requests, and make sure
to set refresh=TRUE when updating the manifest.
2014-05-02 10:43:06 +02:00
Vincent Penquerc'h
14f8172d2b
smoothstreaming: avoid using an uninitialized manifest
...
If we did not set the manifest yet, early out in the seeking query.
Coverity 1139737
2014-04-10 09:51:07 +01:00
Vincent Penquerc'h
88879654df
smoothstreaming: remove unnecessary check
...
The function is static, the only call site passes a non NULL
pointer, and the pointer is dereferenced before anyway.
Coverity 1139839
2014-04-09 17:10:06 +01:00
Sebastian Dröge
b47a4faf5f
ext: Use Codec/Demuxer/Adaptive for the adaptive streaming demuxers
2014-02-23 00:11:04 +01:00
Sebastian Dröge
a11c6640bf
mssdemux: Download the manifest with compression, the fragments without
2014-02-12 13:11:38 +01:00
Sebastian Dröge
3a5abc233d
ext: Update for GstUriDownloader API changes
2014-02-11 14:18:32 +01:00
Thiago Santos
6348113777
mssdemux: updating docs explaining how it works
...
mssdemux changed a lot and the docs were not correct anymore.
Also adds the 'Adaptive' category to its details
2013-12-20 00:40:42 -03:00
Thiago Santos
ff1e88ce93
mssdemux: do not push event holding object lock
...
Can lead to deadlocks as the push might block downstream in
serialized event cases.
2013-12-20 00:40:42 -03:00
Thiago Santos
aa61251371
mssdemux: lock around 'cancelled' flag
...
Prevents race conditions when pipeline is seeking near eos
2013-12-20 00:40:42 -03:00
Thiago Santos
628461b4d1
mssdemux: fix segfault when trying to access codec_data
...
Check if codec_data was obtained before trying to use it to
prevent a segfault
2013-12-18 18:52:19 -03:00
Thiago Santos
5948a07324
mssdemux: also generate caps from audiotag attribute
...
Some audio will have its audio format defined by the AudioTag
instead of the Fourcc. Fallback to using AudioTag if Fourcc
isn't available
2013-12-18 18:52:19 -03:00
Thiago Santos
26acbbcca9
mssdemux: make sure streams stop properly on cancelled
...
specially when the gst_task_join is waiting for the task
to go stop and the task itself sets its back to paused, causing
a deadlock on exit.
2013-12-18 18:52:19 -03:00
Thiago Santos
99c8fb7330
mssdemux: track segments per stream
...
As streams now flow independently, the GstSegment needs to be put
on each stream so they can track the position of each one correctly
instead of being mixed in a single segment
2013-12-18 18:52:19 -03:00
Guillaume Desmottes
f44c6ed526
mssdemux: push language code tag
...
https://bugzilla.gnome.org/show_bug.cgi?id=712358
2013-12-18 18:52:19 -03:00
Guillaume Desmottes
d6a9f17d8a
mssmanifest: store the language of the stream
...
https://bugzilla.gnome.org/show_bug.cgi?id=712358
2013-12-18 18:52:19 -03:00
Thiago Santos
67f3190301
mssdemux: remove the stream loop task
...
Download and push from the same task, makes code a lot simpler
to maintain. Also pushing from separate threads avoids deadlocking
when gst_pad_push blocks due to downstream queues being full
2013-12-18 18:52:19 -03:00
Thiago Santos
4e6e1315da
mssdemux: Improve logging
...
Show the stream's pad on log messages to make easier to debug
issues in the multiple threads
2013-12-18 18:52:18 -03:00