Commit graph

3558 commits

Author SHA1 Message Date
Sebastian Dröge
6450d87c63 openni2src: Classification of the element should be Source/Video 2013-12-02 17:03:46 +01:00
Sebastian Dröge
4b7bead2d4 openni2src: Use GstVideoInfo to create caps and don't leak them 2013-12-02 17:02:17 +01:00
Sebastian Dröge
1ba3edf682 openni2src: Some random cleanup and minor fixes 2013-12-02 16:59:14 +01:00
Miguel Casas-Sanchez
64675f0712 openni: Add OpenNNI2 plugin
https://bugzilla.gnome.org/show_bug.cgi?id=708914
2013-12-02 11:17:02 +01:00
Tim-Philipp Müller
40c10dc59e mpeg2enc: avoid list for one single value in template caps 2013-12-01 23:31:25 +00:00
Antonio Ospite
c4fbff50df mssdemux: fix setting codec_data when using WaveFormatEx
When using WaveFormatEx the actual codec private data is at the end of
the wav header structure, after the cbSize field, see for example the
notes at http://wiki.multimedia.cx/index.php?title=WAVEFORMATEX

The previous code was erroneously passing the whole WAVEFORMATEX
structure as codec_data.

The smoothstreaming specifications[1,2,3] always mention WAVEFORMATEX
and never smaller structures like WAVEFORMAT or PCMWAVEFORMAT, so the
buffer can assumed to be at least 18 bytes and always consuming the wav
header gives the (possibly empty) codec private data.

[1] http://web.archive.org/web/20120907004742/http://www.iis.net/community/files/media/smoothspecs/%5BMS-SMTH%5D.pdf
[2] http://download.microsoft.com/download/B/0/B/B0B199DB-41E6-400F-90CD-C350D0C14A53/%5BMS-SSTR%5D.pdf
[3] http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/%5BMS-SSTR%5D.pdf

https://bugzilla.gnome.org/show_bug.cgi?id=699924
2013-11-27 09:26:36 -03:00
Antonio Ospite
f02e7a2439 mssdemux: use mssdemux_debug debug category for gstmssmanifest.c too 2013-11-27 09:26:36 -03:00
Antonio Ospite
8345c5acfb mssdemux: fix coding style 2013-11-27 09:26:36 -03:00
Sebastian Dröge
de3abac8ed openexrdec: Consider the pixel aspect ratio stored in the file 2013-11-23 19:11:42 +01:00
Sebastian Dröge
a90585c686 openexr: Add OpenEXR decoder element
This currently converts from ARGB64_F16 (16 bit float per component)
to ARGB64 by clipping. We should add support for the F16 format and
implement a conversion filter element that can apply gamma curves,
change exposure, etc.
2013-11-23 18:51:52 +01:00
Sebastian Dröge
da65dccd78 openexr: Add OpenEXR plugin
See http://www.openexr.com
2013-11-23 18:51:35 +01:00
Sebastian Dröge
f8db818a8d openjpeg: Fix names of debug categories 2013-11-23 18:51:16 +01:00
Olivier Crête
b58ca88fb9 srtpenc: Set the first session flag to false once one is create
Otherwise it always thinks it's the first session.

https://bugzilla.gnome.org/show_bug.cgi?id=711495
2013-11-19 20:18:48 -05:00
Olivier Crête
2b75eb85c4 srtpdec: Make sure that stream-id/caps/segment are sent before buffers
It may be possible that only one of the two sink pads is linked in that case,
the events need to be created from the other pad.
2013-11-19 20:12:54 -05:00
Olivier Crête
de1fb842e6 srtpdec: Pass is_rtcp to setcaps function 2013-11-19 19:10:06 -05:00
Olivier Crête
8c76d7c77e srtp: Implement SRTCP demultiplexing
Separate multiplexed RTP and RTCP if they arrive
on the rtp_sink pad.
2013-11-19 18:34:08 -05:00
Sebastian Dröge
898966a44c daala: Fix compilation 2013-11-19 00:38:45 +01:00
Thiago Santos
27b0086e4a mssdemux: do not try to deinit the downloadrate while it is used
This can cause an assertion or deadlocks.
2013-11-15 12:01:55 -03:00
Thiago Santos
fe77ee47c9 mssdemux: also consider /manifest
The spec says /Manifest, but /manifest is easily found on some
services, so handle that, too.

https://bugzilla.gnome.org/show_bug.cgi?id=710223
2013-11-15 12:01:54 -03:00
Matthieu Bouron
5e5bc19cca eglglessink: fix non-egl display context query 2013-11-13 15:50:17 +01:00
Thiago Santos
d59af97930 hlssink: do not lose ref to the multifilesink
It is needed to update location properties and it was being lost on
state changes, causing issues if the pipeline was to be reused
2013-11-07 12:50:55 -03:00
Thiago Santos
805e313cce hlssink: make sure it is handled as a sink
It only gets the sink flag set when it adds the multifilesink, that
happens in null->ready and it might be too late. Set the flag
explicitly on the constructor.

https://bugzilla.gnome.org/show_bug.cgi?id=711086
2013-11-07 12:50:55 -03:00
Sebastian Dröge
19b5092685 eglglessink: Query upstream first to get a EGLDisplay 2013-11-04 19:59:10 +01:00
L. Sorin
15717842e4 curl: curlsftpsink - new libcurl-based sink element for SFTP
Note: SFTP = SSH File Transfer Protocol
The sink acts as a client and uploads data to the SFTP server.

https://bugzilla.gnome.org/show_bug.cgi?id=709795
2013-11-01 17:20:04 +01:00
Reynaldo H. Verdejo Pinochet
980f5b4702 cdaudio: Remove cdaudio plugin
This element is being removed due to it been
considered obsolete and the functionaily it
provides no longer needed.

Details on the decision can be found here:

https://bugzilla.gnome.org/show_bug.cgi?id=711223

Fixes:

https://bugzilla.gnome.org/show_bug.cgi?id=711232
2013-11-01 07:21:56 -07:00
Reynaldo H. Verdejo Pinochet
2285d4440b cdaudio: port to 1.X
https://bugzilla.gnome.org/show_bug.cgi?id=711223
2013-10-31 13:25:46 -07:00
Andoni Morales Alastruey
e5385db3c9 eglglessink: remove unused functions in the eagl backend
https://bugzilla.gnome.org/show_bug.cgi?id=711159
2013-10-30 16:36:04 +01:00
Alex Ashley
58072914fa hlsdemux: fix memory leak in gst_hls_demux_get_next_fragment
This patch fixes three memory leaks in hlsdemux, one that occurs
during normal operation and two that occur during error conditions.

The gst_hls_demux_get_next_fragment function calls
gst_fragment_get_buffer which increments the reference count
on the buffer but gst_hls_demux_get_next_fragment never calls unref on
the buffer. This means that the reference count for each downloaded
fragment never gets to zero and so its memory is never released.

This patch adds a call to gst_buffer_unref after the flags have been
updated on the buffer.

There is a leak-on-error in gst_hls_demux_decrypt_fragment if it fails
to download the key file. If the key fails to download, null is
returned without doing an unref on the encrypted fragment. The
semantics of gst_hls_demux_decrypt_fragment is that it takes ownership
of the encrypted fragment and releases it before returning.

There is a leak-on-error in gst_hls_src_buf_to_utf8_playlist in the
unlikely event that the gst_buffer_map fails. In the "happy path"
operation of gst_hls_src_buf_to_utf8_playlist the buffer gets an unref
before the function returns, therefore the error condition must do the
same.

https://bugzilla.gnome.org/show_bug.cgi?id=710881
2013-10-25 23:12:25 -03:00
Olivier Crête
2046ba220f pitch: Fix inverted condition in setcaps 2013-10-12 16:04:25 -04:00
Thiago Santos
9a50ca5fbc hlsdemux: Small improvement on always valid if condition
No need to check for !cancelled as the above if guarantees it
to be true
2013-10-03 09:15:37 -03:00
Thiago Santos
72e05dfd7c hlsdemux: Do not call _stop holding the updates lock
It will cause a deadlock and the calers for _get_next_fragment
will already call _stop if required when _get_next_fragment fails.

Fixes #690148
2013-10-03 09:15:37 -03:00
Greg Rutz
6819d1a206 dashdemux: Improve if cause readability
Fixed up the error-handling code when downloading fragments.
Modifed the error-handling code to use positive logic when
testing for cancellation of the download loop.

https://bugzilla.gnome.org/show_bug.cgi?id=701404
2013-10-03 09:15:37 -03:00
Thiago Santos
b8dd95e219 dashdemux: actually return true on latency query
Do not forget to set the return for latency query
2013-10-03 09:15:37 -03:00
Alex Ashley
42fd04ce48 dashdemux: stop fetching live fragments that don't yet exist
There is an issue for live streams where download_loop will keep
downloading segments until it gets a 404 error for a segment
that has not yet been published. This is a problem because this
request for a segment that doesn't exist will propagate all the
way back to the origin server(s). This means that dashdemux causes
extra load on the origin server(s) for segments that aren't yet
available.

This patch uses availabilityStartTime, period
and the host's idea of UTC to decide if a fragment is available to
be requested from an HTTP server and filter out requests for fragments
that are not yet available.

https://bugzilla.gnome.org/show_bug.cgi?id=701404
2013-10-03 09:15:37 -03:00
Sebastian Dröge
c57be26ed9 openjpeg: Port OpenJPEG plugin to the 2.0 API 2013-10-02 20:07:16 +02:00
Tim-Philipp Müller
2d29f22338 opencv: don't unref NULL caps in finalize
Fixes gst-inspect-1.0 -a and generic states unit test.
2013-09-29 23:43:23 +01:00
Sebastian Dröge
3d5e214f83 eglglessink: Port iOS part to 1.0 2013-09-28 20:36:21 +02:00
Javier Jardón
a1cc9ca4de hlssink: Use floats for the EXTINF duration values
https://bugzilla.gnome.org/show_bug.cgi?id=708851
2013-09-28 13:20:08 +02:00
Javier Jardón
203f527653 hlssink: Write EXT-X-VERSION tag in the playlist file
https://bugzilla.gnome.org/show_bug.cgi?id=708851
2013-09-28 13:20:08 +02:00
Alex Ashley
0bdf13c36a hlsdemux: Fix dereferencing of NULL pointer
On some live HLS streams, gst_hls_demux_switch_playlist causes
assertion failures because it tried to dereference a NULL fragment.
This is because g_queue_peek_tail sometimes was returning NULL and
this case was not being checked.

This patch does two things:
* move the g_queue_peek_tail inside the semaphore protection
* check if q_queue_peek_tail returns NULL

https://bugzilla.gnome.org/show_bug.cgi?id=708849
2013-09-28 13:14:01 +02:00
Sebastian Dröge
fef9ef6a8e dash/smoothstreaming: Remove unused debug category with the same name
It caused static linking to fail.
2013-09-19 20:09:59 +02:00
Sebastian Dröge
6cfbda3b7e eglglessink: Fix static linking for Android by passing --tag=CC to libtool 2013-09-19 16:44:48 +02:00
Sebastian Dröge
ad0252fc04 eglglessink: Update for new GstContext API 2013-09-18 23:09:05 +02:00
Olivier Crête
b92791d102 hlsdemux: Reset GstUriDownloader cancellation when restarting to play 2013-09-17 17:41:39 -04:00
Iain Lane
fd4cb22ae4 modplug: Specify directory when including stdafx.h
modplug stopped exposing their directory in their pcfile, meaining
consumers accessing the headers directly fail to build.

75e9b16698/
2013-09-10 11:08:24 +02:00
Julien Isorce
3a84875294 eglglessink: change pool->sink->last_buffer to pool->last_buffer
So that GstEGLImageBufferPool does not depend on GstEglGlesSink
The goal is still to move it into gstegl lib
2013-09-04 13:32:14 +01:00
Julien Isorce
fdaa26e1c8 eglglessink: buffer pool does not need to maintain a ref on the display
Because it does not use it and also it may not know it when
we create the pool
2013-09-04 13:32:14 +01:00
Julien Isorce
d16583d771 eglglessink: add GstEGLImageBufferPoolSendBlockingAllocate callback
The goal here is to prepare GstEGLBufferPool to be moved into
gstegl lib. So it has to not depend on 'gst_eglglessink_queue_object'
2013-09-04 13:32:14 +01:00
Julien Isorce
c0ca9bc422 eglglessink: prepare gst_egl_adaptation_allocate_eglimage to be moved
into gstegl lib or splited between gstegl lib and gstgl lib
because it both depends on egl and gl

So it has to not depend on GstEglAdaptationContext
2013-09-04 13:32:14 +01:00
Sebastian Dröge
8e5f0e37f8 soundtouch: Fix compilation with soundtouch 1.4.0
It used FLOAT_SAMPLES/INTEGER_SAMPLES #defines instead of ones properly
prefixed with a namespace.

https://bugzilla.gnome.org/show_bug.cgi?id=707390
2013-09-03 17:36:53 +02:00
Sebastian Dröge
576b4826c8 soundtouch: Allow compilation against float and integer version of the library
https://bugzilla.gnome.org/show_bug.cgi?id=707270
2013-09-02 10:29:49 +02:00
Josep Torra
47c35ee52e dashdemux: Fix warnings when building in OS X Snow Leopard
gstdashdemux.c:1753: warning: format '%llu' expects type 'long long unsigned int', but argument 8 has type 'long unsigned int'
gstdashdemux.c:2224: warning: format '%llu' expects type 'long long unsigned int', but argument 9 has type 'guint64'
gstdashdemux.c:2224: warning: format '%llu' expects type 'long long unsigned int', but argument 10 has type 'guint64'
2013-08-30 21:52:35 +02:00
Josep Torra
0b54b0568d dashdemux: Fix warnings when building in OS X Snow Leopard
gstmpdparser.h:530: warning: type qualifiers ignored on function return type
gstmpdparser.c:4177: warning: type qualifiers ignored on function return type
2013-08-30 21:36:19 +02:00
Tim-Philipp Müller
8293594397 dfbvideosink: make "layer-mode" property an enum
https://bugzilla.gnome.org/show_bug.cgi?id=703520
2013-08-29 15:46:14 +01:00
Tim-Philipp Müller
f79448552a dfbvideosink: don't use deprecated GLib thread API
https://bugzilla.gnome.org/show_bug.cgi?id=703520
2013-08-29 14:48:28 +01:00
Kazunori Kobayashi
90020e21df dfbvideosink: port to 1.0
including the following supports and fixes:

* Create DirectFB surfaces from GstBufferPool
* Add NV12 pixel format support
* Don't use the cursor in the exclusive mode
  - EnableCusor() can be only used when the administrative mode is set
    in DirectFB 1.6.0 and later.
* Support multiple plane rendering for planar color formats
  - This accommodates the chroma plane offsets of the framebuffer
    in planar formats.
* Invoke SetConfiguration regardless of video mode setting in setcaps()
  - SetConfiguration() method should be invoked regardless of
    the result of gst_dfbvideosink_get_best_vmode(), since the two are
    unrelated.
* Disable DirectFB signal handler
  - "--dfb:no-sighandler" option is passed to DirectFBInit().
    This prevents DirectFB from trying to kill the process and allows
    GStreamer's termination sequence to proceed normally.

https://bugzilla.gnome.org/show_bug.cgi?id=703520
2013-08-29 14:37:48 +01:00
Sebastian Dröge
f7db01b0e1 webpdec: Some cleanup and minor fixes 2013-08-26 10:22:06 +02:00
Sreerenj Balachandran
499d515a9f webp: Add WebP image decoder plugin
https://bugzilla.gnome.org/show_bug.cgi?id=706285
2013-08-26 10:18:16 +02:00
Nicola Murino
e481ecbf22 facedetect: new property to control bus messages updates
https://bugzilla.gnome.org/show_bug.cgi?id=655622
2013-08-23 13:12:28 +02:00
Sebastian Dröge
21ea46568b opencv: Fix indention 2013-08-23 12:01:32 +02:00
Sebastian Dröge
5e25d41b84 opencv: Port to non-deprecated GMutex/GCond API 2013-08-23 12:01:07 +02:00
Miguel Casas-Sanchez
fbb5dd38c7 opencv: Add disparity-map calculation element
https://bugzilla.gnome.org/show_bug.cgi?id=704760
2013-08-23 11:58:21 +02:00
Tim-Philipp Müller
b8f9d674be srtpdec: fix buffers being dropped due to shadowed variable
Spotted by gstblub@gmail.com.

https://bugzilla.gnome.org/show_bug.cgi?id=706091
2013-08-16 19:48:03 +01:00
Chris Bass
7f21226956 dashdemux: offset segment numbers by startNumber
For SegmentTemplate elements containing a startNumber attribute, the
`number' member of GstMediaSegments should be offset by the value of
startNumber; however, this is not currently the case. As a result, the
first URI(s) requested by the download loop will be wrong.

This commit ensures that segment numbers will be offset by startNumber
when one is present in a SegmentTemplate element.

https://bugzilla.gnome.org/show_bug.cgi?id=705661
2013-08-16 11:15:47 -03:00
Chris Bass
19a45554bf dashdemux: remove incorrect timestamp scaling.
When using a SegmentTemplate element, the timestamps of the buffers
output by dashdemux are incorrect, causing problems downstream.

The reason is that GstMediaSegment start times are calculated (in
gst_mpdparser_get_chunk_by_index) by multiplying segment index by
segment duration and then scaling the result according the `timebase'
attribute from the MPD. However, the segment duration is already a
GstClockTime (i.e., it has already been scaled according to the timebase
from the MPD and converted to a nanosecond value), so multiplying it by
the segment index will give the correct timestamp without the need for
any further scaling.

https://bugzilla.gnome.org/show_bug.cgi?id=705679
2013-08-16 10:22:21 -03:00
Sebastian Dröge
2e8af6973f ext: Use new flush vfunc of video codec base classes and remove reset implementations 2013-08-15 15:46:58 +02:00
Thiago Santos
1b1332cb6d mssdemux: use gst_data_queue_push_force for adding events to queue
This prevents locking on startup when a stream only has a single buffer
for one of the streams and mssdemux decides to push an EOS event right
after it.
2013-08-13 12:44:41 -03:00
Thiago Santos
2db211e243 dashdemux: use push_force when adding events to the dataqueue
This prevents deadlocks on startup on files that have only a very
large buffer for a stream and the queue is filled and will lock on
the eos event that is pushed after the buffer. As no buffers have yet
been pushed to other streams, the pipeline locks on preroll
2013-08-13 11:49:54 -03:00
Olivier Crête
d346e75606 srtp: Let packets through without touching them if no crypto or auth is set 2013-08-12 12:27:33 -04:00
Olivier Crête
a10e800dfd srtpdec: Refactor code a bit
Simplify the error handling case and get the packet push out of the if()
2013-08-12 12:27:16 -04:00
Olivier Crête
04bd37dd67 srtpdec: Don't error on invalid packet, just drop it 2013-08-12 11:57:04 -04:00
Andoni Morales Alastruey
28609ca93c hlsdemux: add support for redirections 2013-08-12 16:41:52 +02:00
Thiago Santos
ac07f8577b dashdemux: properly error out when manifest has no streams
Post an error message when the manifest is parsed and no valid streams
are found be activated and used.

Fixes #704308
2013-07-30 22:06:38 -03:00
Sebastian Dröge
f2b14c68d5 midi: Fix handling of the SEGMENT query 2013-07-29 12:17:57 +02:00
Edward Hervey
97426a1caa all: Fix for GST_DISABLE_GST_DEBUG
Where applicable, remove methods that don't do anything different than
the default implementation.
2013-07-29 09:42:12 +02:00
David Schleef
ec35c36536 celt: remove, replaced by opus. 2013-07-28 14:24:25 -07:00
Edward Hervey
f2a10e415e mpg123: Remove dead assignment
harder ? :)
2013-07-27 06:39:15 +02:00
David Schleef
0f53ba8aed ladspa: initialize debug category earlier
You know, before it's used.
2013-07-26 13:21:05 -07:00
Sebastian Dröge
b9124cad88 hlsdemux: Implement pkcs7 unpadding
Every encrypted fragment will be a multiple of 128 bits, the last byte
contains the number of bytes that were added as padding in the end
and should be removed.

https://bugzilla.gnome.org/show_bug.cgi?id=701673
2013-07-23 13:30:52 +02:00
Sebastian Dröge
5b702b894e mssdemux: Add support for group-id in the stream-start event 2013-07-23 10:33:31 +02:00
Sebastian Dröge
b5e7ed0428 resindvd: Add support for group-id in the stream-start event 2013-07-23 10:33:31 +02:00
Sebastian Dröge
e63094abd5 hlsdemux: Add support for group-id in the stream-start event 2013-07-23 10:33:31 +02:00
Sebastian Dröge
493ee3383a dash: Add support for group-id in the stream-start event 2013-07-23 10:33:31 +02:00
Alex Ashley
ed16c9c560 hls: fix for assert failure when using encrypted HLS streams
When using an HLS encrypted stream, an assertion failure is thrown:
(gst-launch-1.0:31028): GLib-GObject-WARNING **: cannot register
existing type `GstFragment'

(gst-launch-1.0:31028): GLib-CRITICAL **: g_once_init_leave: assertion
`result != 0' failed

Eventually tracked this down to the call gst_fragment_new()
in function gst_hls_demux_decrypt_fragment.

The GstFragment class is defined in ext/hls/gstfragment.c and in
gst-libs/gst/uridownloader/gstfragment.c. Having two class definitions
with the same name causes the assert failure when trying to allocate
GstFragment. Deleting the version from hls and editing the
Makefile.am solves this assert failure.

https://bugzilla.gnome.org/show_bug.cgi?id=704555
2013-07-22 14:55:17 +01:00
Sebastian Dröge
e56efddd4a resindvd: Send stream-start event before anything else on the mpeg demuxer srcpads 2013-07-22 09:19:06 +02:00
Miguel Casas-Sanchez
7c2177b19f grabcut: Add GrabCut segmentation element
https://bugzilla.gnome.org/show_bug.cgi?id=702722
2013-07-17 11:28:28 +02:00
Thiago Santos
ec630db32f dashdemux: fix typo in check_queue_full function
It should return True when the queue IS full

Fixes #704226
2013-07-15 10:05:59 -03:00
Thiago Santos
1472dd3d58 dashdemux: implement queue full check function
Checks if the queue is full according to max buffering time
set by the user

https://bugzilla.gnome.org/show_bug.cgi?id=701404
2013-07-09 01:18:54 -03:00
Thiago Santos
95c2638ba5 dashdemux: minor refactor
Split one very large function into 2 smaller but still large functions.

Also change the if conditions to positive checks to improve readability.
2013-07-09 00:47:07 -03:00
Thiago Santos
5a5e66ec90 dashdemux: handle live playback resync
During a live stream it is possible for dashdemux to lag behind on a
slow connection or to rush ahead of the connection os too fast.

For the first case it is necessary to jump some segments ahead to be able to
continue playback as old segments are usually deleted from the server.

For the later, dashdemux should wait a little before attempting another
download do give time to the server to produce a new segment
2013-07-08 23:40:14 -03:00
Thiago Santos
b316d8a677 dashdemux: fix template based segment generation
When using a template based segment list, do not try to
contruct a finite segment list for the limits of the available periods.

We might not know when the period ends (for live streams) and we can
always create the segment on demand when requested by dashdemux,
avoiding use of some memory and cpu when re-creating this list.
2013-07-08 23:39:49 -03:00
Thiago Santos
a8a355108a dashdemux: use more appropriate data structures for parsing
Replaces the 2 likely larger lists with more appropriate structures
to improve performance.

Replaces S nodes GList for a GQueue, this reduces latency to startup
because of traversing the list just append an element.

Replaces the processed media segments GList for a GPtrArray as it is
constantly acessed by index during playback.
2013-07-08 23:39:49 -03:00
Thiago Santos
b8fc98849a dashdemux: answer to latency queries
Set live if stream is live and also add to the max latency the
max internal buffering
2013-07-08 23:39:49 -03:00
Thiago Santos
9a38127467 dashdemux: prevent assertion when duration is unknown
Duration from segment being unknown is a issue from the MPD and not
a programming issue, so the assert isn't useful here. Instead check
and return an error code so the caller can fallback to alternatives
2013-07-03 19:11:45 -03:00
Thiago Santos
3030c25aed dashdemux: Fix event leak when parsing manifest fails
Always remember to unref the event before proceeding, in both success
and failure cases
2013-07-03 19:11:11 -03:00
Thiago Santos
788757dc1f dashdemux: various cleanups
Removing unused function, replacing // comments with /* */ and
replacing some GST_WARNING with GST_INFO/_DEBUG as they are meant
to be
2013-07-03 15:34:41 -03:00
Alex Ashley
5ad2a2d161 dashdemux: Change first fragment selection for live streams
When dashdemux selects its first fragment, it always selects the
first fragment listed in the manifest. For on-demand content,
this is the correct behaviour. However for live content, this
behaviour is undesirable because the first fragment listed in the
manifest might be some considerable time behind "now".

The commit uses the host's idea of UTC and tries to find the
oldest fragment that contains samples for this time of day.

https://bugzilla.gnome.org/show_bug.cgi?id=701509
2013-07-03 15:34:30 -03:00
Thiago Santos
5c480dfc13 dashdemux: only generate index segment uri if there is a template
Simple fix to avoid an assertion.
2013-07-03 10:23:45 -03:00
Greg Rutz
5920ee2777 dashdemux: Implement inheritance for certain MPD elements
According to the MPEG-DASH spec, certain elements (i.e.
SegmentBase, SegmentTemplate, and SegmentList) should inherit
attributes from the same elements in the containing AdaptationSet
or Period.

Updated the SegmentBase, SegmentTemplate, and SegmentList parsers
to properly inherit attributes from the corresponding elements in
AdaptationSet and/or Period.

https://bugzilla.gnome.org/show_bug.cgi?id=702677
2013-07-03 10:23:45 -03:00
Greg Rutz
5e0ed52880 dashdemux: Properly detect presence of xml attributes
Convert all xml attribute/content parsing functions to return a
boolean value indicating whether or not the attribute/content was
present.  We need this finer-grained control in order to properly
implement the inheritance policies described in the spec

Also fixed several memory leak conditions when handling errors in
the xml attribute/content parsing functions.

https://bugzilla.gnome.org/show_bug.cgi?id=702677
2013-07-03 10:23:45 -03:00