Commit graph

3782 commits

Author SHA1 Message Date
Matthew Waters
15d0c04933 gl/mem: allocate the memory per plane
This patch provides the basic infrastructure required for this.
Upload and Download has been ported to this.

Has the nice effect of allowing GstGLMemory to be our
refcounted texture object for any texture type (not just RGBA).

Should not lose any features/video formats.
2014-04-11 10:37:06 +10:00
Matthew Waters
95abfda139 gl: add colorconvert object that converts between color spaces/formats
Currently used by both upload and download objects separately.
2014-04-11 10:37:05 +10:00
Vincent Penquerc'h
aa2b8f179e faac: fix faac API error checking
Coverity 1139790
2014-04-10 17:55:21 +01:00
Vincent Penquerc'h
2e940ba253 dashdemux: do not ignore failure to register typefinder
Coverity 1139629
2014-04-10 17:52:02 +01:00
Vincent Penquerc'h
2dd898793e dashdemux: fix time leak
Coverity 1147016
2014-04-10 17:48:03 +01:00
Vincent Penquerc'h
59654c68ee dashdemux: remove dead code and variable
A recent commit made stream not able to be NULL, ending up with
a flag being always set to FALSE when it matters.

Coverity 1146968, 1147012
2014-04-10 17:46:32 +01:00
Vincent Penquerc'h
bbda6a1ab9 curl: remove unneeded NULL check
We just checked for NULL and allocated if it was. And glib aborts
if it can't allocate, I'm told.

Coverity 1139841
2014-04-10 17:37:22 +01:00
Vincent Penquerc'h
feede7ddfa curl: remove duplicate assignment
Coverity 1197708
2014-04-10 17:33:55 +01:00
Sebastian Dröge
f82d9ec4a9 hlsdemux: Also update the sequence position when updating non-live playlists 2014-04-10 16:53:42 +02:00
Sebastian Dröge
a06d4ea408 hlsdemux: Try reloading the playlist first if downloading a fragment fails
But only add this for non-live playlists. For live playlists we already
have another thread that is periodically updating playlists.

Reason for this is that sometimes downloading a fragment can fail because
the URIs have changed or expired since last time.
2014-04-10 15:06:53 +02:00
Sebastian Dröge
864399f299 hlsdemux: When updating a non-live playlist make sure to find the current sequence by time
Sequence numbers in different playlists are not guaranteed to be the same for the
same position, e.g. fragments could have different durations in different playlists.

In theory we should do exactly the same for live playlists, but unfortunately we can't
because doing this kind of seeking requires the complete playlist since we started
playback. For live playlists the server is however dropping fragments in the beginning
over time and we have no absolute time references.
2014-04-10 15:06:53 +02:00
Vincent Penquerc'h
14f8172d2b smoothstreaming: avoid using an uninitialized manifest
If we did not set the manifest yet, early out in the seeking query.

Coverity 1139737
2014-04-10 09:51:07 +01:00
Vincent Penquerc'h
b3a18a2fcc hlssink: catch failure to write playlist file
Coverity 1139613
2014-04-09 18:44:38 +01:00
Vincent Penquerc'h
e308986807 kate: fix implicit promotion to signed int breaking on largeish inputs
Coverity 1139858, 1139857
2014-04-09 18:31:31 +01:00
Vincent Penquerc'h
14dc7839cf ladspa: remove duplicate assignment
Coverity 1139706
2014-04-09 18:16:52 +01:00
Vincent Penquerc'h
0e3c1f6e3a mimdec: fix open error checking
Coverity 206364
2014-04-09 18:12:58 +01:00
Vincent Penquerc'h
956be9a018 schrodec: remove unnecessary check
The tag was dereferenced earier. From the libschroedinger code,
it's not obvious to see whether tag and frame would be NULL at
the same time. I think is likely that both will be non NULL
here, but that's not certain. Additional tests may be needed
to avoid dereferencing tag and/or frame, but what to do if
only one is NULL isn't obvious, as the _get_tag function does
transfer ownership so isn't undoable.

Coverity 1139850
2014-04-09 17:53:57 +01:00
Vincent Penquerc'h
88879654df smoothstreaming: remove unnecessary check
The function is static, the only call site passes a non NULL
pointer, and the pointer is dereferenced before anyway.

Coverity 1139839
2014-04-09 17:10:06 +01:00
Vincent Penquerc'h
54704b6f5d srtp: remove dead assignment
Coverity 1197707
2014-04-09 16:55:30 +01:00
Vincent Penquerc'h
612cdeec80 resindvd: avoid crashing in pathological case
When we'd see an unknown stream type, then a SDDS stream.
Then we'd get to the end of the switch with a NULL temp stream
pointer, and dereference it.

Coverity 1139708
2014-04-09 14:37:48 +01:00
Vincent Penquerc'h
25d4ca70c9 opus: add missing va_end in variadic function
Coverity 1139944
2014-04-09 11:03:17 +01:00
Vincent Penquerc'h
084c4d5dc4 mpeg2enc: remove dead assignment
Coverity 1139829
2014-04-09 10:33:10 +01:00
Vincent Penquerc'h
9eab659d1d gl: pass large structure by const pointer, not value
Avoids large pointless memcpy.

Coverity 206236, 206237
2014-04-09 10:31:19 +01:00
Vincent Penquerc'h
fd6a4f7372 flite: fix off by one in channel mask building
The first loop would shift 1 by 64, which is either undefined
or implementation defined, instead of clearing the top bit.

Coverity 1197691
2014-04-08 17:35:37 +01:00
Vincent Penquerc'h
a78e516cbf hls: restore NULL test mistakenly removed
Thanks to tpm for point out I'm an idiot.
2014-04-08 17:10:27 +01:00
Vincent Penquerc'h
c319b1cc8f hls: only set DISCONT flag on a valid buffer
Recent refactoring causes this code to be called with either a NULL
fragment, or a non NULL fragment. In the former case, we don't have
a buffer. In the latter case, the original code dealing with DISCONT
assumed the buffer was valid. Testing for a NULL buffer here thus
does not seem to change the intent, and fixes:

Coverity 1195147
2014-04-08 16:56:04 +01:00
Vincent Penquerc'h
45b8225a02 hls: bring NULL test before dereference
Coverity 1195168
2014-04-08 16:46:56 +01:00
Vincent Penquerc'h
4b5068f5dd gl: test for frame NULLness before dereferencing it
Coverity 1195172, 1195171
2014-04-08 16:25:51 +01:00
Vincent Penquerc'h
db7934233f resindvd: guard against overflow in audio subtitle streams
Turns out there was the same issue as with subtitles.

There is space for a single audio stream, but up to 255
may be used based on a uint8_t value in a struct, which may
or may not be read from the (untrusted) data.
A comment in ifo_types.h says this value is either 0 or 1, so
we can ensure this here without drawbacks.

Coverity 1139585
2014-04-08 14:24:31 +01:00
Vincent Penquerc'h
380f95ea01 resindvd: guard against overflow in menu subtitle streams
There is space for a single subtitle stream, but up to 255
may be used based on a uint8_t value in a struct, which may
or may not be read from the (untrusted) data.
A comment in ifo_types.h says this value is either 0 or 1, so
we can ensure this here without drawbacks.

Coverity 1139586
2014-04-08 14:21:53 +01:00
Vincent Penquerc'h
57a138df86 dtsdec: fix buffer overflows
Channels can be up to 7. Also add a guard in case more can be
returned in the future.

Coverity 1139820, 1139821
2014-04-08 12:41:16 +01:00
Edward Hervey
eb0a307e28 soundtouch: Add missing break in switch
Whoops, modifying the pitch when modifying the output rate ...

CID #1139749
2014-04-08 11:23:50 +02:00
Edward Hervey
2e808ca1e9 rsvg: Add missing break in switch statement
This wasn't fatal before (worst case it would clear an already empty
adapter).

CID #1139758
2014-04-08 11:21:44 +02:00
Edward Hervey
8ca5387b0f mpeg2enc: Add missing break in switch
QUERY_CAPS is fully handled, we don't need to passthrough to the default
handler.

CID #1139756
2014-04-08 11:20:29 +02:00
Edward Hervey
334bcd433b bz2: Initialize variables
There is a small chance that we might end up in the done step without
having any output available.

Furthermore, when going through not_ready, we need to ensure gst_buffer_unmap
has a properly initialized GstMapInfo.

CID #1139923
CID #1139924
CID #1139919
CID #1139920
2014-04-08 09:55:15 +02:00
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