Commit graph

3847 commits

Author SHA1 Message Date
Sebastian Dröge 82b7c915bb glimagesink: Create GL context and set up window from the streaming thread
gst_gl_context_create() might need to dispatch some operations to the
application's main thread, and calling this in the change_state function
can cause deadlocks.
2014-04-07 11:21:07 +02:00
Wim Taymans ff5d1a18f3 wildmidi: fix possible uninitialized variables 2014-04-03 11:54:41 +02:00
Wim Taymans 6c014f7e36 mpdparse: only add location when node existed
Actually return FALSE when the location node was non-existing
Only add the location node when it existed
2014-04-03 11:48:07 +02:00
Matthew Waters e01e2cce9f gl: pass video info's by reference 2014-04-02 23:05:47 +11:00
Matthew Waters 98c486025a gl: fix array initialization 2014-04-02 23:05:11 +11:00
Matthew Waters cb8f90e4c3 glbumper: remove redundant check 2014-04-02 22:54:55 +11:00
Matthew Waters 5b0da41038 gl: fix assignment of temporary variables 2014-04-02 22:43:41 +11:00
Matthew Waters e58cd96b96 gl: avoid adding a NULL pool to propose allocation 2014-04-02 22:42:50 +11:00
Matthieu Bouron 820685409e dashdemux: use correct print format for gint64
https://bugzilla.gnome.org/show_bug.cgi?id=727385
2014-03-31 14:50:17 +02:00
Sebastian Dröge b86e502a8b hlsdemux: Handle errors when switching playlists properly 2014-03-30 19:22:25 +02:00
Sebastian Dröge 89ca4535eb hlsdemux: Go EOS if the end of the segment is reached 2014-03-30 19:22:25 +02:00
Sebastian Dröge 911023eb88 hlsdemux: Store buffer end position in segment.position 2014-03-30 19:22:24 +02:00
Sebastian Dröge f701755b83 hlsdemux: Don't set the segment offset
It's causing wrong running times after seeks or bitrate
switches.
2014-03-29 10:33:45 +01:00
Sebastian Dröge e11a99e26a hlsdemux: Set DISCONT flag on all buffers in reverse playback mode 2014-03-29 10:33:45 +01:00
Sebastian Dröge 8109ed8785 hlsdemux: Fix forwards and backwards searching in the files list 2014-03-29 10:33:45 +01:00
Sebastian Dröge 6039734f3e hlsdemux: Unset DTS of all buffers
We won't get a valid DTS from the source.
2014-03-29 10:33:45 +01:00
Sebastian Dröge cad284e843 hlsdemux: Send flush start event before waiting for the tasks to finish
Otherwise we'll wait until buffers are completely processed downstream,
which might take quite some time.
2014-03-29 10:33:45 +01:00
Sebastian Dröge 91ec00a0c0 hlsdemux: Implement trick modes via I-frame variant lists 2014-03-29 10:33:45 +01:00
Sebastian Dröge 77231ab957 hlsdemux: Implement parsing of #EXT-X-I-FRAME-STREAM-INF
These are I-frame-only variant lists that can be used
for trick mode playback.
2014-03-29 10:33:45 +01:00
Rico Tzschichholz d10fcf4d3f build: Fix make dist 2014-03-28 20:02:40 +00:00
Julien Isorce 7dd3b2fff7 eglglessink: unref last buffer on DRAIN
Similar to 093574053f
in gstbasesink

https://bugzilla.gnome.org/show_bug.cgi?id=726107
2014-03-28 11:54:45 +00:00
Reynaldo H. Verdejo Pinochet 2008ec409b eglglessink: fix wrong doc block for create_window
Wrong since 1ad253b9 when prop name was changed from
can_create_window to create_window.
2014-03-27 18:54:27 -03:00
Julien Isorce 75c92dc915 gl: only set CAPS_FEATURE_MEMORY_EGL_IMAGE on egl platform 2014-03-27 07:07:01 +00:00
Julien Isorce 218244a040 gl: let the user includes itself our egl headers if needed
Forgot to address this change.

https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-03-26 19:17:03 +00:00
Julien Isorce 0ae3c984aa gl: add EGLImage support
* picked from old libgstegl:
  - GstEGLImageMemory
  - GstEGLImageAllocator
  - last_buffer management from removed GstEGLImageBufferPool

* add-ons:
  - GstEGLImageMemory now old a reference on GstGLContext
    so that it can delete the EGLImage and its gltexture source
    while having the associated gl context being current.
  - add EGLImage support for GstVideoGLTextureUploadMeta which
    mainly call EGLImageTargetTexture2D
  - GstGLBufferPool now supports GstEGLImageAllocator
  - glimagesink / glfilters / etc.. now propose GstEGLImageAllocator
    to upstream

https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-03-26 19:09:13 +00:00
Jan Schmidt 6b784cf808 rtmpsink: Remove URL check for valid playpath.
The playpath is an optional component of the URL - don't require it.
2014-03-26 09:05:55 +11:00
Wim Taymans 9adb1734cf srtpenc: unlock object lock before posting error
Posting an error with the object lock will deadlock. Rework the code
a bit to make things more simple.
2014-03-25 17:46:32 +01:00
Gwenole Beauchesne 21b897de2f gl: fix out-of-source builds.
Always use the locally generated <gst/gl/gstglconfig.h> file.

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2014-03-24 17:56:13 +01:00
Matthew Waters faa94a8737 gl: silence a critical if upstream does not provide us with meta params 2014-03-20 07:01:01 +11:00
Julien Isorce fa4ce072ee gl: silence warnings building for RPI related to 'vcos_*'
Similar than 1190a79b19
2014-03-19 14:43:13 +00:00
Julien Isorce e870244e39 gl: keep only one occurence of '#include <EGL/egl.h>'
To simply maintainance if we need to put specific includes around it.
2014-03-19 14:43:13 +00:00
Thijs Vermeir 1a5560441d make: whitespace cleanups 2014-03-17 12:00:09 +01:00
Matthew Waters 6b3fe44185 Move gst-plugins-gl to bad 2014-03-16 15:17:59 +01:00
Matthew Waters 870503dc6b gl: silence all the compiler warnings 2014-03-16 15:17:44 +01:00
Matthew Waters 4bdf5f336a move gl elements to ext subdirectory 2014-03-16 11:23:16 +01:00
Matthew Waters b90d824626 [838/906] gl: Use GL_TEXTURE_2D instead of GL_TEXTURE_RECTANGLE
We create our textures (in Desktop GL) with GL_TEXTURE_RECTANGLE,
vaapi attempts to bind our texture to GL_TEXTURE_2D which throws a
GL_INVALID_OPERATION error and as thus, no video.

Also, by moving exclusively to GL_TEXTURE_2D and the npot extension
we also remove a difference between the Desktop GL and GLES2 code.

https://bugzilla.gnome.org/show_bug.cgi?id=712287
2014-03-15 18:37:03 +01:00
Matthew Waters a5b877fb13 [717/906] remove outdated cmake build files 2014-03-15 18:36:56 +01:00
Matthew Waters 13067b104c [704/906] Use gst_object_[un]ref so we can get refcounts in the log 2014-03-15 18:36:56 +01:00
Matthew Waters c52b138a8d [604/906] gst_element_class_set_details_simple() => gst_element_class_set_metadata() 2014-03-15 18:36:50 +01:00
Matthew Waters 93f7e993ad [603/906] update FSF address 2014-03-15 18:36:50 +01:00
Matthew Waters 3affb44884 [544/906] fix memory leaks from not g_free()ing string returned by gst_element_get_name 2014-03-15 18:36:46 +01:00
Matthew Waters 6f2acb94c6 [502/906] Update versioning for gstreamer 1.0
Renames GST_MAJORMINOR to GST_API_VERSION in build files
removes -lgstinterfaces from _LDADD flags
2014-03-15 18:36:44 +01:00
Julien Isorce b88351ad0c [488/906] libvisual-gl: full compatibility with projectM-libvisual if libprojectM >= 2.0.1
Fix bug #310775
2014-03-15 18:36:43 +01:00
Julien Isorce 6f1530c658 [486/906] libvisual-gl: add minimal support to libvisual plugins that uses Framebuffer objects
Fix bug #310775

gst-launch audiotestsrc ! libvisual_gl_projectM ! glimagesink is working
but for now you cannot append any other opengl filters between
libvisual_gl_projectM and glimagesink because our FBO is turned OFF.

It would require that libvisual allows to split rendering between
pass1,2,3... and final rendering. In order to unbind our FBO before
the passN, and then rebind it just before the final libvisual rendering.
2014-03-15 18:36:43 +01:00
Julien Isorce c298f99b5d [484/906] libvisual_gl: correctly setup depth and blend functions 2014-03-15 18:36:43 +01:00
Jonathan Matthew a3cc71ae5f [482/906] ext: Add a libvisual plugin wrapping opengl libvisual
Fix bug #202069
2014-03-15 18:36:42 +01:00
Sebastian Dröge 7ddd67baef hlsdemux: Always calculate the current download rate
Also take into account the last download rate when
calculating it.
2014-03-12 12:35:22 +01:00
Aurélien Zanelli da601be78f sbcenc: Allow user to set channel-mode
Don't return error when channel-mode is already set, just check that it
is coherent with number of channels.

https://bugzilla.gnome.org/show_bug.cgi?id=726098
2014-03-12 09:06:33 +01:00
Sebastian Dröge bd54a212d3 hlsdemux: Fix comparison in bitrate selection 2014-03-09 20:50:44 +01:00
Sebastian Dröge c9bb878fe5 m3u8: Fix off-by-one in the download range end 2014-03-07 16:24:19 +01:00
Sebastian Dröge d2880dce68 hlsdemux: Implement proper segment handling
https://bugzilla.gnome.org/show_bug.cgi?id=695846
https://bugzilla.gnome.org/show_bug.cgi?id=723268
2014-03-06 23:16:56 +01:00
Sebastian Dröge cd02546089 hlsdemux: Implement handling of byte ranges 2014-03-06 16:36:10 +01:00
Zallesov 7ed08a1326 hlsdemux: Fix seeking further than track duration
Don't fail the seek but instead send an EOS event from the streaming thread.
2014-03-06 09:39:22 +01:00
Sebastian Dröge 5d5ca5139e hlsdemux: Switch playlists after pushing the fragment
Makes sure we properly set the discont flag for the next buffer,
not the current one.
2014-03-05 20:44:02 +01:00
Matthieu Bouron 4da4dfc4bf assrender: handle video/x-raw(ANY) if downstream supports the GstVideoOverlayCompositionMeta API
https://bugzilla.gnome.org/show_bug.cgi?id=721950
2014-03-05 20:41:20 +01:00
Sebastian Dröge 0a32c5f7a4 hlsdemux: Implement proper handling of discontinuities
It's not really correct yet for seeks but better than what
we had before.

See https://bugzilla.gnome.org/show_bug.cgi?id=695846
2014-03-01 17:15:54 +01:00
Aleix Conchillo Flaqué a04fe75047 srtpenc: unref caps after gst_query_set_caps_result
https://bugzilla.gnome.org/show_bug.cgi?id=725412
2014-03-01 16:40:39 +01:00
Alex Ashley b7ef52c515 hlsdemux: Segfaults if playlist has no media files
hlsdemux causes a null pointer dereference if the media playlist
does not contain any media files. The gst_m3u8_client_get_duration
function assumes that demux->client->current->files is valid when
computing duration.

gst_m3u8_client_update needed to be modified to check for the
case of downloading an M3U8 file that doesn't contain any media
files, and returning an error to gsthlsdemux.c

This bug can be reproduced by creating a master m3u8 file that
contains one media playlist that points back to the master m3u8
file.  For example create a file called bug725134.m3u8:
  #EXTM3U
  #EXT-X-VERSION:4
  #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1251135, CODECS="avc1.42001f mp4a.40.2", RESOLUTION=640x352
  bug725134.m3u8

https://bugzilla.gnome.org/show_bug.cgi?id=725134
2014-03-01 16:34:59 +01:00
Sebastian Dröge 8284f7bc61 openalsrc: Remove unused function to fix compiler warning 2014-02-27 21:45:34 +01:00
Sebastian Dröge 874af7db4e hlsdemux: Init and clear a mutex
GLib initialises automatically for us for some reason... but of course
does not clear the mutex once the demuxer is destroyed.
2014-02-27 15:50:12 +01:00
Sebastian Dröge 5f0a5c3594 hlsdemux: Unref seek events before returning from the seek handler
Otherwise we leak them all.
2014-02-27 15:41:30 +01:00
Alex Ashley 161254d7c0 hlsdemux: Fix parsing of CODECS and RESOLUTION
hlsdemux does not check for the '"' character in #EXT-X-STREAM-INF
attributes. The CODECS parameter is an example of an attribute
that might use the '"' symbol and might contain a ',' character
inside this quoted string.

For example: CODECS="avc1.77.30, mp4a.40.2"

hlsdemux does not correctly parse the RESOLUTION attribute, it
assumes that an '=' character is used to delineate the width
and height values, but the HLS RFC states that a 'x' character
must be used as the delimiter between width and height.

https://bugzilla.gnome.org/show_bug.cgi?id=725140
2014-02-26 09:23:22 +01:00
Alex Ashley 91775a1abd hlsdemux: Fix for URLs that contain a '/' in the query parameter
If the URL for the master manifest files contains a '/' character
in the query parameter (for example
http://example.net/1054559_h264_1500k.mp4/master.m3u8?acl=/*1054559_h264_1500k.mp4),
hlsdemux is incorrectly converting the relative URLs of the media
playlists in to absolute URLs. It is incorrectly using the last '/' it
finds in the URL. According to RFC3986 the '/' character is allowed in
the query part of the URL.

https://bugzilla.gnome.org/show_bug.cgi?id=725137
2014-02-26 09:20:58 +01:00
Julien Isorce 966fb81db0 eglglessink: move GstEGLImageBufferPool to gstegl lib
https://bugzilla.gnome.org/show_bug.cgi?id=706054
2014-02-25 17:29:18 +00:00
Sebastian Dröge b3a7242910 hlsdemux: Keep track of timestamps by adding them up during playback
...instead of adding them from the start of playlist every time. This
among other things fixes timestamps for live streams, where the playlist
is some kind of ringbuffer of fragments and thus adding from the beginning
of the playlist will miss the past fragments.

https://bugzilla.gnome.org/show_bug.cgi?id=724983
2014-02-23 15:18:22 +01:00
Sebastian Dröge 090bf91974 hlsdemux: Deprecate fragments-cache property
The buffering/caching is handling completely different now and
outside of hlsdemux.
2014-02-23 11:01:57 +01:00
Brendan Long 7f591f9c7e katedec: Merge new tags with existing tags to prevent overwriting demuxer tags
https://bugzilla.gnome.org/show_bug.cgi?id=724699
2014-02-23 10:52:15 +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 a51116add3 hlsdemux: Refactor threading and downloading
We now download fragments as fast as possible and push them downstream
while another thread is just responsible for updating live playlists
every now and then.

This simplifies the code a lot and together with the new buffering
mode for adaptive streams in multiqueue makes streams start much faster.

Also simplify threading a bit and hopefully make the GstTask usage safer.
2014-02-23 00:10:45 +01:00
Sebastian Dröge 76e74547c7 hlsdemux: Only switch pads if the caps are changing 2014-02-23 00:10:45 +01:00
Chris Bass 6342d225bf dashdemux: ensure segments aren't fetched before they're available
Incorrect time scaling in gst_dash_demux_wait_for_fragment_to_be_available()
means that media segments are fetched before their availablity time. This
patch fixes this.

https://bugzilla.gnome.org/show_bug.cgi?id=724875
2014-02-22 16:29:13 +01:00
Chris Bass 462c04cade dashdemux: initialise demux->last_manifest_update
demux->last_manifest_update is not initialised at startup, with the
effect that live manifests are reloaded immediately after the download
loop begins. This patch fixes this.

https://bugzilla.gnome.org/show_bug.cgi?id=724790
2014-02-20 20:26:25 +01:00
Andoni Morales Alastruey 99feef2d08 hlsdemux: fix update interval with respect of the spec 2014-02-14 13:07:39 +01:00
Sebastian Dröge e40b72bc9b hlsdemux: Ignore empty lines in the playlist
Based on a patch by Andoni Morales.
2014-02-12 18:50:09 +01:00
Sebastian Dröge 65c1faf553 hlsdemux: Make sure to ignore \r in line endings in every case 2014-02-12 18:47:45 +01:00
Sebastian Dröge 13997abbf9 hlsdemux: Give a proper name to the srcpads and remove it when resetting the element 2014-02-12 18:27:21 +01:00
Sebastian Dröge adea24cdf8 hlsdemux: Stop leaking GErrors in some error paths 2014-02-12 16:46:31 +01:00
Gil Pedersen 62ddd34807 hlsdemux: don't pause task when it is stopped
This fixes a potential dead-lock situation from GstTask

https://bugzilla.gnome.org/show_bug.cgi?id=675869
2014-02-12 16:04:52 +01:00
Sebastian Dröge 281f2f3590 hlsdemux: Wait for the update task to finish when shutting down 2014-02-12 16:01:05 +01:00
Sebastian Dröge 4dcacc1773 hlsdemux: Prevent rounding errors due to division by using gst_util_uint64_scale() 2014-02-12 15:33:06 +01:00
Arnaud Vrac 6e54b8ee53 hlsdemux: schedule next update based on the fragment duration 2014-02-12 15:18:29 +01:00
Sebastian Dröge 05efcbf757 hlsdemux: Properly error out if caps can't be typefind instead of using NULL caps 2014-02-12 15:16:23 +01:00
Arnaud Vrac 63e18bb7bf hlsdemux: log fragment timestamp 2014-02-12 14:39:15 +01:00
Sebastian Dröge dc45d236d2 hlsdemux: Use g_ascii_xdigit_value() instead of our own version of it 2014-02-12 14:10:02 +01:00
Sebastian Dröge a84220a658 hlsdemux: Error out if the key is not 16 bytes large 2014-02-12 13:40:41 +01:00
Sebastian Dröge 8c3ef21a68 hlsdemux: Download playlists with compression, keys and fragments without 2014-02-12 13:13:30 +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 48ba499ed2 dashdemux: Download MPD with compression, the fragments without 2014-02-12 13:10:50 +01:00
Sebastian Dröge 245a7d94f5 hlsdemux: Don't set the element private data on the srcpads
It's not used anyway.
2014-02-12 11:26:04 +01:00
Sebastian Dröge 60f1dadd1c hlsdemux: Use gst_pad_use_fixed_caps() on the srcpads 2014-02-12 11:25:41 +01:00
Sebastian Dröge bc42a18f92 hlsdemux: Cache the key fragment instead of downloading it over and over again 2014-02-12 10:59:38 +01:00
Sebastian Dröge 792d1e0109 hlsdemux: Fix cleanup when decryption fails
First unmap buffers, then unref them. And also unref the
key fragment.
2014-02-12 10:58:45 +01:00
Lihua Liu f3464e01bb curlsmtpsink: Include timezone information in mail header
https://bugzilla.gnome.org/show_bug.cgi?id=724125
2014-02-11 21:03:18 +01:00
Sebastian Dröge 5e55bae14b hlsdemux: Don't try decryption if an unsupported method is found 2014-02-11 18:15:45 +01:00
Sebastian Dröge 56faad51bb hlsdemux: Properly parse IV from the playlist
Without this every fragment's first 16 bytes will be corrupted
if not the fallback IV is used by the playlist.
2014-02-11 18:15:07 +01:00
Sebastian Dröge 591598da48 hlsdemux: Propagate download errors properly and post error messages if they're fatal 2014-02-11 14:57:16 +01:00
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
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