Commit graph

3651 commits

Author SHA1 Message Date
Sebastian Dröge
3a5abc233d ext: Update for GstUriDownloader API changes 2014-02-11 14:18:32 +01:00
Sebastian Dröge
73d9a8b0c9 hlsdemux: Start downloading the next fragment immediately after caching the initial fragments
And only afterwards wait until a fragment was played. Otherwise we're keeping
our cache most of the time at "fragments-cache" fragments minus one.

Also allow setting "fragments-cache" to 1 now to start playback even faster.
2014-02-10 18:30:21 +01:00
Sebastian Dröge
4f04f3e68e hlsdemux: Start fetching new fragments whenever we have less fragments cached than given by the fragments-cache property
Waiting until our cache is empty before starting to fetch the next fragment
kind of defeats the purpose of caching multiple fragments.
2014-02-10 18:27:58 +01:00
Sebastian Dröge
89c592ccdd hlsdemux: Fix bitrate calculation
g_get_monotonic_time() returns microseconds, not nanoseconds.
2014-02-10 18:21:38 +01:00
Sebastian Dröge
a4847fd4db hlsdemux: Actually store doubles as such and don't truncate them to ints
Fixes broken duration reporting.
2014-02-10 17:27:10 +01:00
Sebastian Dröge
a5387eb372 hlsdemux: Use locale-independent int/float parsing functions from GLib 2014-02-10 17:27:10 +01:00
Wim Taymans
64367f33a6 fluiddec: add more soundfont search paths
Fedora installs the soundfonts in /usr/share/soundfonts/ so make sure we
look there as well.
2014-02-10 14:34:40 +01:00
Руслан Ижбулатов
270b57fc33 Change soundfont file search path for fluiddec
Use glib to get a list of system "share" directories, then go through that
list, appending 'sounds/sf2/' to each directory to get a soundfont directory,
and looking for .sf2 files there.

This way fluiddec is able to load sf2 files on W32, because otherwise the
path '/usr/share/sounds/sf2' makes no sense there.

Fixes #724013
2014-02-10 11:34:16 +01:00
Sebastian Dröge
6799e3b879 hlsdemux: Prefer to use nettle for decryption but fall-back to libgcrypt
nettle is used by newer versions of gnutls, while older versions of gnutls
used libgcrypt. Support both for now as not every distro has nettle yet.

nettle is preferred as it is more efficient to use and much smaller.
2014-02-09 18:52:24 +01:00
Sebastian Dröge
6abed8da20 hlsdemux: Update to non-deprecated GLib thread API 2014-02-09 18:19:33 +01:00
Sebastian Dröge
e8befb7ce3 hlsdemux: Use libgcrypt directly instead of going through gnutls
gnutls is also just wrapping gcrypt, but we don't need any of
the TLS related functionality. We just need to be able to decrypt
AES128-CBC.
2014-02-09 18:09:36 +01:00
Sebastian Dröge
15e0db90e8 srtpdec: Fix comparison compiler warning
error: comparison of constant -1 with expression of type
'GstSrtpCipherType' is always false
2014-02-08 19:59:43 +01:00
Sebastian Dröge
43e73bc3e9 motioncells: Remove unused private fields 2014-02-08 19:29:33 +01:00
Sebastian Dröge
50321b1ccd segmentation: Fix integer underflow check
error: comparison of unsigned expression < 0 is
always false [-Werror,-Wtautological-compare]
2014-02-08 19:28:26 +01:00
Sebastian Dröge
78d9134d63 dfbvideosink: Fix unitialized variable compiler warning 2014-02-08 18:58:38 +01:00
Sebastian Dröge
5c22b7f4a3 bz2: Fix typo in header include guards 2014-02-08 18:57:30 +01:00
Carlos Rafael Giani
d12fdf785c mpg123: improved error report and checks
Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
2014-02-04 17:30:13 +01:00
Sebastian Dröge
7548d5f7f9 openexrdec: Don't start scanning for the header from the start again each time
This will be incredible slow if the upstream block size is very small. Instead
continue scanning for the header where we previously stopped.

For the standard filesrc block-size this made decoding a file about
3 times faster.

https://bugzilla.gnome.org/show_bug.cgi?id=719890
2014-01-18 13:56:28 +01:00
Sebastian Dröge
1f9c305694 sfdec: This is a decoder, not a demuxer
Don't confuse autopluggers!

https://bugzilla.gnome.org/show_bug.cgi?id=722316
2014-01-18 13:34:13 +01:00
Jan Schmidt
9d31536adf resindvd: Merge changes across from master mpegdemux
Merge various changes and fixes from the master mpegdemux
Performance improvement from the way streams are organised,
return flow combining, language tag event generation,
adjustments and fixes in debug output, and things like that.
2014-01-16 20:16:47 +11:00
Tim-Philipp Müller
078b82d6d1 resindvdsrc: fix minor memory leak when creating title info message 2014-01-15 11:52:09 +00:00
Sebastian Dröge
e8d569f54d faceblur: set maximum feature size to 0x0
Previously faces would only be detected if they were at least 30x30 pixels
large and at most 32x32 pixels. We keep the minimum setting (maybe needs
a property as in facedetect) but disable the maximum feature size.

See https://bugzilla.gnome.org/show_bug.cgi?id=722158
2014-01-14 10:38:37 +01:00
Kipp Cannon
b33b1390cc facedetect: set maximum feature size to 0x0
This disables the "max feature size" feature. The current configuration
is totally busted: The max feature size is hard-coded to 2 pixels more
than the user-supplied min feature size which pretty much means you need
to guess the size of the person's face to within a few pixels to get the
code to find it.

https://bugzilla.gnome.org/show_bug.cgi?id=722158
2014-01-14 10:37:41 +01:00
Vincent Penquerc'h
d1877b0b95 schroenc: set buffer offset to buffer timestamp
oggmux expects this to order incoming buffers

https://bugzilla.gnome.org/show_bug.cgi?id=722078
2014-01-13 10:02:45 +00:00
Thiago Santos
3d2f3bcf62 dashdemux: remove unnecessary variable
Instead of using 2 indexes that were actually the same, use only
one. Saves a variable.
2014-01-09 09:13:48 -03:00
Thiago Santos
cea909b877 dashdemux: fix seeking when the mpd uses a segment template
Remove the dashdemux seeking function to use the one implemented
in mpdparser as it is more complete. This also makes dashdemux not
crash when seeking on streams that use segment templates.
2014-01-09 09:11:23 -03:00
Stefan Sauer
c894c2d721 sfdec: skip '\0' strings for metadata
libsndfile does not filter empty strings. We get a warning from gstreamer when
setting this as a tag.
2014-01-06 22:17:15 +01:00
Stefan Sauer
a59d2c4817 sfdec: break long method
Extract taglist creation into separate funtion.
2014-01-06 22:17:15 +01:00
Stefan Sauer
b1ddd2e682 sfdec: remove left over property-id enum 2014-01-06 15:06:40 +01:00
Stefan Sauer
18ec1c9bd7 sfdec: the read functions already return frames_read
Fixes choppy output.
2014-01-05 23:45:34 +01:00
Stefan Sauer
ef2eef0365 sndfile: enable rf64 format 2014-01-05 23:45:34 +01:00
Stefan Sauer
207a184931 sfdec: add date to taglist 2014-01-05 23:45:34 +01:00
Miguel París Díaz
e944195b64 srtpdec: Fix GstCaps memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=721382
2014-01-03 10:46:29 +01:00
Stefan Sauer
3149dbb44b sndfile: emit midi-base-note tag
Query instrument data. Use both 'loop_info' and 'instrument' to inform about the
basenote.
2013-12-30 15:54:29 +01:00
Sebastian Dröge
fd803921c9 opusparse: Don't send caps in GstBaseParse::start()
This is too early and will confuse the event order. The other
code that sets the caps is at the right position and does it
properly already.
2013-12-28 12:39:25 +01:00
Vincent Penquerc'h
585a6c4add opusenc: increase max payload size to 4000 bytes
1275 is the maximum size of a frame, but the encoder may return
up to 3 frames, and we need a few extra bytes for TOC, etc. We
use 4000, which is a bit more, and suggested in the libopus docs.
2013-12-27 14:29:46 +00:00
Thiago Santos
da329b44a4 dashdemux: remove stream loop thread
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-24 17:07:52 -03:00
Thiago Santos
d353d229b1 dash: detect EOS when segments are generated by template
Use the Period duration do know when to end the stream
2013-12-24 17:07:52 -03:00
Thiago Santos
5b1eda95eb dashdemux: do not try to access buffer after losing the ref
For obvious reasons
2013-12-24 17:07:52 -03:00
Thiago Santos
be54766975 dashdemux: use a separate GstUriDownloader per stream
Avoids one download having to wait for another to finish
before starting
2013-12-24 17:07:52 -03:00
Thiago Santos
f33c52377f dashdemux: store GstActiveStream to avoid getting it every time
GstActiveStream is used everywhere to operate on the MPD client,
better store it in the GstDashDemuxStream to avoid getting it
everytime
2013-12-24 17:07:52 -03:00
Thiago Santos
7c6ccda3ec dashdemux: simplify locking for streams
Use a single lock for all streams instead of having separate locks.
This makes maintenance easier and at most points we would need
a single lock before iterating on all streams data. So not much
is gained from individual locks.
2013-12-24 17:07:51 -03:00
Thiago Santos
a2583e54d1 dashdemux: fix multiple period mpd playback
Make dash playlists with multiple periods work again by waiting
to switch the periods when all streams have reached the end of
the current period. The stream_loop is responsible for advancing
the period, but the download loops will already start downloading
data for the next period as soon as possible.
2013-12-24 17:07:51 -03:00
Thiago Santos
1483b59c6b dashdemux: add combine flows function
Use a flow combination function to decide the result from the
stream_loop
2013-12-24 17:07:51 -03:00
Thiago Santos
6611d14eed dashdemux: handle multiple languages
Handle multiple languages by using the not-linked return to stop
the download task for that stream. It can be reactivated when
a reconfigure event is received. Stopping the unused streams is
relevant to save network bandwidth
2013-12-24 17:07:51 -03:00
Thiago Santos
31e4ba0094 dashdemux: Use 1 download task per stream
Instead of having a single download task for all streams, this
commit makes each stream have its own download loop, allowing
parallel download of fragments.
2013-12-24 17:07:51 -03:00
Thiago Santos
3bd66d17fc dashdemux: refactor fragment fetching into smaller functions
Makes it easier to maintain and extend. This is a first step into
adding multi language support to dashdemux
2013-12-24 17:07:51 -03:00
Thiago Santos
1d2de4a034 dashdemux: run gst-indent
Lots of indentation issues making it very annoying to commit
because of the indent hook. Fix this for once.
2013-12-24 17:07:51 -03:00
Thiago Santos
08636f3bab dashdemux: expose all streams
always expose all streams instead of only exposing one of each type.

This is more aligned with gstreamer's way of working. Allows the user
to select the stream that it wants to use by linking its pad and leaving
the unused ones as unlinked.
2013-12-24 17:07:51 -03:00
Sebastian Dröge
7f5422c06d eglglessink: Properly clean up renderbuffers and EAGL context 2013-12-24 11:51:16 +01:00
Stefan Sauer
0e3917b9c0 modplug: small seeking code reshuffle
Put the code that checks stop values together. Don't clamp a cur value of -1 to 0 (should not happen right now).
2013-12-20 20:00:55 +01:00
Stefan Sauer
a18ad22b47 sfdec: make _stop() non fatal when we have an error already
Having no open file in _stop() is okay. Just reset state.
2013-12-20 20:00:55 +01:00
Stefan Sauer
0c34d807d4 sfdec: add event function and seeking support 2013-12-20 20:00:55 +01:00
Stefan Sauer
bf956c487f sfdec: add taglist support
Map the metadata strings and a bunch of info-fields to GStreamer tags.
2013-12-20 20:00:55 +01:00
Stefan Sauer
b884eac02c sfdec: add query implementation for position and duration 2013-12-20 20:00:55 +01:00
Stefan Sauer
5f89bee749 sndfile: rewrite sndfile for 1.0
Add a sfdec for a start. Instead of a source plugin, this is a demuxer/decoder combination. This makes it work with auto-plugging.
2013-12-20 20:00:54 +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
Sebastian Dröge
d9525c134b eglglessink: Don't set the EAGLContext of the main thread and don't reuse it either
... instead create a new context for every sink instance.

https://bugzilla.gnome.org/show_bug.cgi?id=720421
2013-12-19 21:37:33 +01:00
Jan Schmidt
81ad21d63e directfb: Add hack to fix compile with broken DirectFB define
Compilation breaks because some versions of DirectFB redefine
__no_instrument_function__, which is used in the G_GNUC_NO_INSTRUMENT
macro.
2013-12-19 11:23:23 +11: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
Thiago Santos
056420940e mssdemux: improve flow return handling
Handle different flow returns both from the streaming and the
downloading loops
2013-12-18 18:52:18 -03:00
Thiago Santos
e847bea1e1 mssdemux: remove stream locks
Simplify the locking by using a single lock instead of having one
lock per stream. This still works and is simpler to maintain.
2013-12-18 18:52:18 -03:00
Thiago Santos
2ce4f6a8e4 mssdemux: avoid downloading not-linked streams
When a stream gets a not-linked return, it will be marked as so and
won't download any more new fragments until a reconfigure event
is received. This will make mssdemux expose all pads, but only download
fragments for the streams that are actually being used.

Relying on the pads being linked/unlinked isn't enough in this scenario
as there might be an input-selector downstream that is actually discarding
buffers for a given linked pad.

When streams are switching, the old active stream can be blocked because
input-selector will block not-linked streams. In case the mssdemux's
stream loop is blocked pushing a buffer to a full queue downstream it will
never unblock as the queue will not drain (input-selector is blocking).

In this scenario, stream switching will deadlock as input-selector is
waiting for the newly active stream data and the stream_loop that would
push this data is blocked waiting for input-selector.

To solve this issue, whenever an stream is reactivated on a reconfigure
it will enter into the 'catch up mode', in this mode it can push buffers
from its download thread until it reaches the currrent GstSegment's position.
This works because this timestamp will always be behind or equal to the maximum
timestamp pushed for all streams, after pushing data for this timestamp,
the stream will go back to default and be pushed sequentially from the main
streaming thread. By this time, the input-selector should have already
released the thread.

https://bugzilla.gnome.org/show_bug.cgi?id=711849
2013-12-18 18:52:18 -03:00
Sebastian Dröge
d111f37f74 curl: Fix indention 2013-12-17 12:18:16 +01:00
Haridass Selvaraj
23ab7d8c49 curlftpsink: Optionally create a temporary file during FTP transfer/upload
https://bugzilla.gnome.org/show_bug.cgi?id=711620
2013-12-17 12:18:01 +01:00
Aleix Conchillo Flaqué
fefd021ee2 srtp: add 256-bit key support
* ext/srtp/gstsrtp.[ch]: added GST_SRTP_CIPHER_AES_256_ICM to
  GstSrtpCipherType and new function cipher_key_size.

* ext/srtp/gstsrtpenc.c: maximum key size is now 46 characters (14 for
  the salt plus the key). If different ciphers are chosen for RTP and
  RTCP the maximum needed key size is expected.

* ext/srtp/gstsrtpdec.c: minor documentation updates.

https://bugzilla.gnome.org/show_bug.cgi?id=720434
2013-12-13 17:51:18 -05:00
Tim-Philipp Müller
b3910cabaf gsmdec: process all available input frames in one go
Instead of parsing, decoding and sending out
lots os little 20ms audio buffers one by one.
2013-12-12 23:34:27 +00:00
Jan Schmidt
8cca2d55f5 soundtouch: Call default event handler for basetransform
Make pipeline end properly at EOS and not leak by passing events
to the default event handler.
2013-12-10 23:06:53 +11:00
Jan Schmidt
d56d00cccd resindvd: Remove racy glib warning.
Sometimes, the pad probes can be called twice - for OOB events
travelling downstream. Clear out the pad block id, so it only
gets removed once.
2013-12-10 22:48:47 +11:00
Tim-Philipp Müller
621bf0d22e gsmdec: fix decoding of audio/ms-gsm variant
Alternates between 33 and 32 byte frames, but must start
with a 33 byte frame. This has been broken for ages since
the element was ported to the audio decoder base class.

https://bugzilla.gnome.org/show_bug.cgi?id=709416
2013-12-10 10:57:39 +00:00
Sebastian Dröge
c635cb233f sbcdec: Require caps to be set before any data processing 2013-12-05 12:05:30 +01:00
Sebastian Dröge
2e80c88129 opusdec: Require caps to be set before any data processing 2013-12-05 12:04:59 +01:00
Sebastian Dröge
f1d863c296 mpg123audiodec: Require caps to be set before any data processing 2013-12-05 12:04:39 +01:00
Sebastian Dröge
f8caef5772 gsmdec: Require caps to be set before any data processing 2013-12-05 12:04:23 +01:00
Sebastian Dröge
0fbe76c4b5 openjpegdec: Use new gst_video_decoder_set_needs_format() API 2013-12-05 11:50:17 +01:00
Sebastian Dröge
23735c703d daaladec: Use new gst_video_decoder_set_needs_format() API 2013-12-05 11:50:17 +01:00
Sebastian Dröge
a6bf25faa5 openexrdec: Instead of trying to parse the bitstream, just look for the next header
This should be more robust and allows us to handle new versions of the
file format if the library supports it.
2013-12-04 22:38:20 +01:00
Sebastian Dröge
26bf14c9fd openni2src: Check color format 2013-12-03 14:53:24 +01:00
Sebastian Dröge
4b3d2a1b09 openni2src: Add support for the video meta 2013-12-03 14:47:32 +01:00
Sebastian Dröge
dbb64a69f4 openni2src: Use GstVideoFrame API for better handling of strides
And do proper stride conversion.
2013-12-03 14:46:25 +01:00
Sebastian Dröge
39c82d0dec openni2src: Fix buffer handling to actually work and properly timestamp buffers 2013-12-03 14:35:57 +01:00
Sebastian Dröge
7a3eaa8f8a openni2src: Don't shut down library when finalizing an element instance 2013-12-03 14:35:42 +01:00
Sebastian Dröge
04e8d63597 openni2src: Fix negotiation and creation of a video buffer pool 2013-12-03 14:35:21 +01:00
Sebastian Dröge
034757e936 openni2src: Use debug category properly 2013-12-03 14:34:56 +01:00
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