Gianluca Gennari
94644fa82e
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;
2013-05-08 18:13:50 -03:00
Gianluca Gennari
416ea67979
mpdparser: support multiple ProgramInformation nodes
...
now we keep a list of ProgramInformation nodes for each Period node
2013-05-08 18:13:48 -03:00
Gianluca Gennari
dd198bc86d
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.
2013-05-08 18:13:48 -03:00
Gianluca Gennari
8e3092661a
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
2013-05-08 18:13:48 -03:00
Gianluca Gennari
7330bbfa7a
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
2013-05-08 18:13:48 -03:00
hzakari
ec44485510
Optimize the two functions that return the number and the list of languages in a single function
2013-05-08 18:13:48 -03:00
Hamid ZAKARI
fab388c9fd
Add the headers to the adaptationsets segments if any one of these changed representation
2013-05-08 18:13:46 -03:00
Hamid ZAKARI
713d02b81a
Support Multi languages (need a decodebin2 patch)
2013-05-08 18:13:45 -03:00
Hamid ZAKARI
a4ac4a3117
Remove the "TODO" comment
2013-05-08 18:13:45 -03:00
David Corvoysier
3c937636ee
Renamed LICENSE into COPYING
2013-05-08 18:13:44 -03:00
David Corvoysier
79dc12cc05
Updated authors
2013-05-08 18:13:44 -03:00
David Corvoysier
6fc0db0e0b
Initial import of gstdashdemux sources
2013-05-08 18:13:43 -03:00
Tim-Philipp Müller
43fea50c8a
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.
2013-05-08 15:42:01 +01:00
Tim-Philipp Müller
99c1dce8db
smoothstreaming: fix WMV caps
...
Makes this show at least a picture:
http://playready.directtaps.net/smoothstreaming/TTLSS720VC1/To_The_Limit_720.ism/Manifest
2013-05-08 10:55:16 +01:00
Thiago Santos
4711da22e9
mssdemux: fixing compiler warnings about print formats
2013-05-07 21:09:49 -03:00
Thiago Santos
4545f4bf4e
smoothstreaming: port to 1.0
2013-05-07 21:09:49 -03:00
Thiago Santos
001da5a239
mssdemux: remove already fixed TODO comment
2013-05-07 21:09:49 -03:00
Thiago Santos
210f6c510c
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.
2013-05-07 21:09:49 -03:00
Thiago Santos
1458500850
mssdemux: fix newsegment event leak
2013-05-07 21:09:48 -03:00
Thiago Santos
e541ec7e63
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
2013-05-07 21:09:48 -03:00
Wim Taymans
6d56eba653
mss: avoid GValue leak
2013-05-07 21:09:48 -03:00
Louis-Francis Ratté-Boulianne
f0b6b79461
mssdemux: fix a small memory leak
2013-05-07 21:09:48 -03:00
Louis-Francis Ratté-Boulianne
00400a838b
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).
2013-05-07 21:09:48 -03:00
Thiago Santos
b579cb1ddc
mssdemux: removing unused functions
2013-05-07 21:09:48 -03:00
Thiago Santos
1d28c574cf
mssdemux: switch bitrates without switching pads
2013-05-07 21:09:48 -03:00
Andre Moreira Magalhaes (andrunko)
c8367a346c
mssdemux: Check if pads are valid before removing.
2013-05-07 21:09:48 -03:00
Thiago Santos
bf0ea5d561
mssdemux: add a maximum error count for downloads
...
mssdemux will tolerate a few download errors before emitting an
error message to the bus
2013-05-07 21:09:48 -03:00
Thiago Santos
255eb4b161
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.
2013-05-07 21:09:48 -03:00
Thiago Santos
52c97834df
mssdemux: use downloadbitrate utility for measuring bitrate
...
downloadbitrate keeps a short history of bitrates and helps
tracking the current average download bitrate for mssdemux
2013-05-07 21:09:48 -03:00
Andre Moreira Magalhaes (andrunko)
68308b3e54
mssdemux: Properly compute new bitrate and use bitrate_limit.
2013-05-07 21:09:48 -03:00
Andre Moreira Magalhaes (andrunko)
706b127daa
mssdemux: Avoid a possible division by zero
2013-05-07 21:09:48 -03:00
Andre Moreira Magalhaes (andrunko)
28beb2ebd7
mssdemux: Add missing object param to GST_DEBUG|INFO_OBJECT calls
2013-05-07 21:09:48 -03:00
Thiago Santos
2219a3a1cc
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
2013-05-07 21:09:48 -03:00
Thiago Santos
a0a05b2941
mssdemux: use the shared uridownloader lib instead of an internal copy
2013-05-07 21:09:47 -03:00
Andre Moreira Magalhaes (andrunko)
12e9432847
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.
2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
8ab3d09f81
mssdemux: handle FLUSH events by resetting the demuxer state
2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
4a630f86f8
mssdemux: add conditions to prevent some crashes
2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
218f2dee0c
mssdemux: use standard glib methods
2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
44d02efee0
mssdemux: fix some memory leaks and use right free function
2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
b064910895
mssdemux: don't stop a task from inside the loop
...
Only pause the task
2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
0239d77999
mssdemux: log manifest content for debugging
2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
ea5f2718bf
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).
2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
3ebb842388
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.
2013-05-07 21:09:47 -03:00
Thiago Santos
7cb3a367f6
mssdemux: add some documentation
...
Adds a little bit of docs explaning the internals of mssdemux
2013-05-07 21:09:47 -03:00
Thiago Santos
46efc08809
mssdemux: add max-queue-size-buffers property
...
Indicates how much buffering should be done internally in
mssdemux
2013-05-07 21:09:47 -03:00
Thiago Santos
23ad760e3a
mssdemux: stop tasks faster
...
Issue a cancel to the downloaders so they stop earlier
2013-05-07 21:09:47 -03:00
Thiago Santos
aa1713068a
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.
2013-05-07 21:05:12 -03:00
Thiago Santos
0704f15103
mssdemux: do not leak fragments
2013-05-07 21:05:12 -03:00
Thiago Santos
21872e78b8
mssdemux: fix issue on fragment timestamping parsing
...
Use guint64 as the fragments can start at very high numbers,
specially on live streams
2013-05-07 21:05:12 -03:00
Thiago Santos
0a4c077d2e
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
2013-05-07 21:05:12 -03:00
Thiago Santos
1116eee681
mssdemux: push newsegments with same start time on bitrate switches
...
This keeps sinks working in sync after a bitrate switch
2013-05-07 21:05:12 -03:00
Thiago Santos
c2ae981e6d
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
2013-05-07 21:05:12 -03:00
Thiago Santos
fba63178fe
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
2013-05-07 21:05:12 -03:00
Thiago Santos
6ca10e6c1b
mssdemux: refactoring fragment download to its own function
...
Makes code clearer and helps changing the download part of the
code to its own thread
2013-05-07 21:05:11 -03:00
Thiago Santos
da4fad2f6f
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
2013-05-07 21:05:11 -03:00
Thiago Santos
b9aec0ad0d
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.
2013-05-07 21:05:11 -03:00
Thiago Santos
4b6900999a
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
2013-05-07 21:05:11 -03:00
Thiago Santos
4726115e83
mssdemux: signal no-more-pads when finished exposing pads
...
This makes decodebin/playbin mechanism know it can start playing
when buffering is finished
2013-05-07 21:05:11 -03:00
Thiago Santos
eec8164d9c
mssmanifest: Keep the stream qualities list sorted by bitrate
...
This will help making adaptive streaming chose the best rate
for a particular connection speed
2013-05-07 21:05:11 -03:00
Thiago Santos
013c11f7dd
mssdemux: also consider fourcc AVC1 as H264
...
H264 can be represented by both fourccs H264 and AVC1, use both.
2013-05-07 21:05:11 -03:00
Thiago Santos
4293cfa763
mssmanifest: add support for VC-1 and WmaPro formats parsing
...
VC-1 should map to WMV3 and WmaPro to WMA2
2013-05-07 21:05:11 -03:00
Thiago Santos
3f2409f7e2
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
2013-05-07 21:05:11 -03:00
Thiago Santos
b2ba96bb85
mssmanifest: do not set codec_data when it is empty
...
Some manifests contain empty codec datas, better not set them
2013-05-07 21:05:11 -03:00
Thiago Santos
9b3f67c5b0
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
2013-05-07 21:05:11 -03:00
Thiago Santos
ebd0862ac1
mssmanifest: fix typo
...
Fix typo that was making the advance fragment function return a wrong
flow return in case it was already EOS
2013-05-07 21:05:11 -03:00
Thiago Santos
cb7e3d1f3b
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
2013-05-07 21:05:11 -03:00
Thiago Santos
33d872916b
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
2013-05-07 21:05:11 -03:00
Thiago Santos
0f1ef317f0
mssdemux: add some more error handling
...
Post error in some more scenarios:
* when the manifest has no streams
* when getting the fragment url fails
2013-05-07 21:05:11 -03:00
Thiago Santos
3f15c9b05a
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
2013-05-07 21:05:10 -03:00
Thiago Santos
68d2719c9f
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
2013-05-07 21:05:10 -03:00
Thiago Santos
af4c690995
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
2013-05-07 21:05:10 -03:00
Thiago Santos
edea61b758
mssdemux: add the correct caps to the outgoing stream
...
mssdemux outputs a quicktime variant, named mss-fragment
2013-05-07 21:05:10 -03:00
Thiago Santos
32d8a72bfc
mssdemux: set caps to buffers before pushing
...
Also update to the latest gstfragment API that provides
the fragment as a whole buffer.
2013-05-07 21:05:10 -03:00
Thiago Santos
91dd173f3c
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.
2013-05-07 21:05:10 -03:00
Thiago Santos
b4f994d47c
mssdemux: adds mininum error handling
...
This should care for basic scenarios of errors and EOS to allow
the pipeline to stop correctly
2013-05-07 21:05:10 -03:00
Thiago Santos
96522f474c
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
2013-05-07 21:05:10 -03:00
Thiago Santos
ca4e5c34cb
smoothstreaming: refactor structure names and implement url fetching
...
Use shorter names for the MSS manifest helper structure and functions.
Also continues the implementation of the stream fetching and pushing loop.
Now it uses the base url correctly and already fetches and pushes the fragments
downstream
2013-05-07 21:05:10 -03:00
Thiago Santos
7ceb023682
mssdemux: initial implementation of the pad loop
...
The loop will fetch a new fragment and push on its srcpad. Each
stream has its own loop
2013-05-07 21:05:10 -03:00
Thiago Santos
6b63a7dc81
mssdemux: more manifest parsing and helper functions
...
Now the mss manifest is able to generate the files urls
2013-05-07 21:05:10 -03:00
Thiago Santos
5291985efe
mssdemux: pad exposing initial implementation
...
Does some basic parsing of the stream caps and adds a pad for
each stream detected in the manifest
2013-05-07 21:05:10 -03:00
Thiago Santos
72b05c0051
mssdemux: add manifest parsing
...
Continued implementing:
1) parse the manifest with libxml2
2) detect stream types
2013-05-07 21:05:10 -03:00
Thiago Santos
95e87fbee9
smoothstreaming: stubs for mssdemux
...
Just the stubs for mssdemux element.
Also add some useful code from hlsdemux that we intend to reuse
2013-05-07 21:05:10 -03:00
Thiago Santos
ef25e05b7c
smoothstreaming: build directory stubs for new plugin
...
Initial build structure for MS' Smooth Streaming plugin
Conflicts:
ext/Makefile.am
2013-05-07 20:02:41 -03:00
Stefan Sauer
7aeed2d79d
ladspa: sync controlled parames in filters and sinks
2013-05-03 21:46:53 +02:00
Sebastian Dröge
a845d6d0db
ladspa: Add $(GMODULE_NO_EXPORT_LIBS) for gmodule
2013-05-03 16:55:00 +02:00
Juan Manuel Borges Caño
70e208d08e
ladspa: improved port to gstreamer 1.0
...
Fixes : #698927
2013-05-03 12:36:44 +02:00
Tim-Philipp Müller
9056e775a9
kate: fix buffer leak in katetag
...
Makes unit test valgrind clean.
https://bugzilla.gnome.org/show_bug.cgi?id=697071
2013-04-27 12:28:58 +01:00
Tim-Philipp Müller
de3bd76051
kate: minor cleanup
2013-04-27 12:06:28 +01:00
Sebastian Dröge
9f25db0981
eglglessink: Use gst_egl_display_get() instead of passing a GstEGLDisplay to EGL functions
2013-04-24 09:40:24 +02:00
Tim-Philipp Müller
4b256e729e
tests: fix remaining kate tests
...
https://bugzilla.gnome.org/show_bug.cgi?id=697071
2013-04-23 01:17:56 +01:00
Thiago Santos
b40c9ff39a
eglglessink: eagl: fix eagl reuse by not releasing the context
...
It seems EAGL expects the application to simply ignore unused
EAGL contexts as the resources for it would be released when a new
context is set as the current one. Also move the egl extensions
querying to after a context is set to prevent crashes.
This makes the EAGL version of eglglessink reusable.
2013-04-19 08:45:02 +02:00
Sebastian Dröge
baa9754f6f
eglglessink: Give only SECONDARY rank
...
If available we still prefer xvimagesink.
2013-04-18 15:27:11 +02:00
Josep Torra
87f2bae822
eglglessink: fixes 'makes integer from pointer without a cast' warning
2013-04-18 12:54:31 +02:00
Josep Torra
1190a79b19
eglglessink: silence warnings building for RPI related to 'vcos_*'
2013-04-18 12:53:28 +02:00
Josep Torra
9a88d737fc
eglglessink: fix warnings building on the RPI
2013-04-18 12:35:55 +02:00
Sebastian Dröge
a8cca17027
eglglessink: Fix GstContext refcounting some more
2013-04-17 13:48:28 +02:00
Sebastian Dröge
f398742608
eglglessink: Fix GstContext refcounting
2013-04-17 13:16:27 +02:00
Sebastian Dröge
e8ad67f2b4
eglglessink: Update for GLTextureUploadMeta and EGL API changes
2013-04-17 10:51:18 +02:00
Sebastian Dröge
92e9988a40
eglglessink: Reorder surface queries
...
Otherwise wrong values can be returned.
2013-04-16 22:51:18 +02:00
Sebastian Dröge
118f8f33ef
eglglessink: Properly set a debug category for the adaption layers
2013-04-16 22:25:19 +02:00