Commit graph

5324 commits

Author SHA1 Message Date
Vineeth TM
e821582c13 vksink: Fix GError memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=762842
2016-02-29 09:50:25 +02:00
Thiago Santos
38cc9070cd dashdemux: sync index and the selected chunk when seeking
Otherwise the chunk selected isn't matched to the index and
the timing will be different, causing it to actually start
from a different position
2016-02-26 17:31:44 -03:00
Tim-Philipp Müller
111bb7c4c2 opus: rename plugin to opusparse for the time being
Until we fix it up and get rid of the opus dependency and
move it elsewhere too.
2016-02-26 00:44:34 +00:00
Tim-Philipp Müller
5f6ab24e0d opus: remove Opus encoder/decoder, moved to -base
https://bugzilla.gnome.org/show_bug.cgi?id=756282
2016-02-26 00:44:34 +00:00
Tim-Philipp Müller
a50e4bcadf opus: remove Opus RTP elements, they have moved to -good
https://bugzilla.gnome.org/show_bug.cgi?id=756282
2016-02-25 22:56:38 +00:00
Matthew Waters
c086540291 qt: use a static_cast instead of dynamic one
The dynamic_cast is a little but of overkill as the app will still crash if it
fails in the later g_assert.

Allows compilation with -fno-rtti

https://bugzilla.gnome.org/show_bug.cgi?id=762526
2016-02-24 21:20:18 +11:00
Wang Xin-yu (王昕宇)
96ac4af7bf glmixer: iterator didn't advance in continue statement
Leading to a deadlock.

https://bugzilla.gnome.org/show_bug.cgi?id=760873
2016-02-24 18:27:44 +11:00
Dave Craig
a5eee1e28a disparity: Don't assume that get_current_caps() returns non-NULL caps after has_current_caps()
Remove calls to gst_pad_has_current_caps() which then go on to call
gst_pad_get_current_caps() as the caps can go to NULL in between. Instead just
use gst_pad_get_current_caps() and check for NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=759539
2016-02-23 18:13:37 +02:00
Florin Apostol
72e46a4478 dashdemux: correctly handle an HTTP-XSDATE that is exactly the size of the date string
The code in the gst_dash_demux_parse_http_xsdate() was trying to
handle the case where the string is not null terminated by resizing
the buffer and appending a zero byte. This does not work if the buffer
is exactly the length of the string because the gst_buffer_resize()
function does not re-allocate the buffer, it just changes its size.

If a buffer is passed to gst_dash_demux_parse_http_xsdate() that is
exactly the length of the string, the function fails with an assert
failure in gst_buffer_resize().

https://bugzilla.gnome.org/show_bug.cgi?id=762148
2016-02-23 14:41:35 +02:00
Matthew Waters
98752fde48 gl: fix the build
2d287812 was incomplete
2016-02-22 21:03:28 +11:00
Matthew Waters
2d2878125e gl: error out if the configured GL API is unsupported by our element
https://bugzilla.gnome.org/show_bug.cgi?id=759801
2016-02-22 20:52:54 +11:00
Sergey Borovkov
0d80be0ce0 qmlglsink: Schedule onSceneGrpahInitialized to execute on render thread
onSceneGraphInitialized() is called from non render thread currently when
scene graph is already initialized.

https://bugzilla.gnome.org/show_bug.cgi?id=761003
2016-02-22 20:26:41 +11:00
Tim-Philipp Müller
95b1d4bf39 daala: don't use exported but undeclared core debug category symbols
It's not right and won't work on Windows with MSVC.
2016-02-20 12:55:08 +00:00
Sebastian Dröge
bce2f8f5f0 modplug: Fix compiler warning about C++11 compatibility
gstmodplug.cc:94:17: error: invalid suffix on literal; C++11 requires a space between literal and string macro [-Werror=literal-suffix]
 #define FORMATS "{ "GST_AUDIO_NE (S32)", "GST_AUDIO_NE (S16)", U8 }"
                 ^
gstmodplug.cc:94:39: error: invalid suffix on literal; C++11 requires a space between literal and string macro [-Werror=literal-suffix]
 #define FORMATS "{ "GST_AUDIO_NE (S32)", "GST_AUDIO_NE (S16)", U8 }"
                                       ^
2016-02-18 00:24:04 +02:00
David Fernandez
55ba6f1ee8 curlbasesink: don't send empty buffers
Fixes problem in curlhttpsink when qtmux uses faststart.

https://bugzilla.gnome.org/show_bug.cgi?id=762013
2016-02-17 11:10:22 +00:00
Thibault Saunier
d3fc5b5175 ladspa: Fix some debugs 2016-02-17 11:17:24 +01:00
Matthew Waters
b24d28f729 glimagesink: remove unsed reconfigure variable 2016-02-17 11:42:23 +11:00
Matthew Waters
ccc17ebe10 glimagesink: don't push a reconfigure event from the GL thread
Doing so may cause deadlocks when other elements attempt destroy or created
GL resources.

https://bugzilla.gnome.org/show_bug.cgi?id=760559
2016-02-17 10:34:14 +11:00
Wang Xin-yu (王昕宇)
5b1872e387 glvideomixer: don't leak pad's vertex buffer on release_pad
https://bugzilla.gnome.org/show_bug.cgi?id=760873
2016-02-17 10:30:45 +11:00
Matthew Waters
ac690978f2 glmixer: Remove usage of GstGLMixerFrameData
Subclasses can just iterate over the list of pads themselves

https://bugzilla.gnome.org/show_bug.cgi?id=760873
2016-02-17 10:30:45 +11:00
Matthew Waters
0d94c9ae7f glmixer: don't hold the object lock while calling into GL
Doing so can deadlock between the GL thread and the object lock e.g.
when performing reconfigure events in glimagesink on a resize event.

https://bugzilla.gnome.org/show_bug.cgi?id=760559
2016-02-17 10:30:45 +11:00
Matthew Waters
1cca847b2a vkdevice: add the necessary but arbitrary queue priority
Silences an error in the validation layers.
2016-02-17 01:13:43 +11:00
Matthew Waters
49430569da vkswapper: add the necessary call to check if the physical device supports the surface
Silences an error in the validation layers.
2016-02-17 01:13:43 +11:00
Matthew Waters
4ca3fdb955 vulkan: update to SDK 1.0.3.1 2016-02-17 01:13:43 +11:00
Matthew Waters
a3aa0d11ec vkswapper: iterate over the device queue's using the new iteration API 2016-02-17 01:13:43 +11:00
Matthew Waters
ca8f2b0826 vkdevice: add callback iteration over the device queue's 2016-02-17 01:13:43 +11:00
Matthew Waters
eb4419b49b vkqueue: add context helpers 2016-02-17 01:13:43 +11:00
Matthew Waters
5617b0904b vkutils: move object-specific context queries to their respective files
vkutils now just contains some utility functions to further simplify retrieving
multiple objects.
2016-02-17 01:13:43 +11:00
Matthew Waters
d1d8a365a2 vkdevice: remove unneeded error parameter from get_queue() 2016-02-17 01:13:43 +11:00
Matthew Waters
53f99ac804 vkupload: implement an uploader abstraction 2016-02-17 01:13:43 +11:00
Matthew Waters
57bd62f85f vkdisplay: unref the instance
fixes memory leak
2016-02-17 01:13:43 +11:00
Matthew Waters
7118f1f7e2 vulkan: chain up in finalize
They were missing in some cases
2016-02-17 01:13:43 +11:00
Matthew Waters
22172df413 vksink: only unref if the pointers are non-NULL 2016-02-17 01:13:43 +11:00
Matthew Waters
b5dce08d8f vkimagememory: free the managing struct on _free
fixes a memory leak
2016-02-17 01:13:43 +11:00
Matthew Waters
68b1e18123 vkdevice: perform a waitIdle before destroying the device 2016-02-17 01:13:43 +11:00
Matthew Waters
1c2aae08c5 Revert "vulkan: remove views from the memory objects."
This reverts commit 1ea817298ee4d5ef9b00f888f8ebe16a888b1150.
2016-02-17 01:13:43 +11:00
Matthew Waters
3c2710dc0f vulkanmemory: remove bind variants 2016-02-17 01:13:43 +11:00
Matthew Waters
4c0a169af9 vulkan: remove views from the memory objects.
They are not used and it's not possible to create the view before binding the
VkDeviceMemory object to them.
2016-02-17 01:13:43 +11:00
Matthew Waters
0309c9fbc7 vkswapper: alpha flags are now supported by LunarG's driver 2016-02-17 01:13:43 +11:00
Matthew Waters
0dd1154b73 vulkan: add a vulkanbuffer bufferpool 2016-02-17 01:13:43 +11:00
Matthew Waters
86e18d6b8f vulkan: add upload element 2016-02-17 01:13:43 +11:00
Matthew Waters
980213ee97 vkutils: fix assert inversion 2016-02-17 01:13:43 +11:00
Matthew Waters
43afa15fac vulkan: add caps feature names for the buffer and image memories 2016-02-17 01:13:43 +11:00
Matthew Waters
7871910bc6 vulkan: add device to handle_context_query 2016-02-17 01:13:43 +11:00
Matthew Waters
bfab93dabe vulkan: move instance_open into the utility ensure_element_data
So callers don't have to perform it themselves.
2016-02-17 01:13:43 +11:00
Matthew Waters
0bcb3cdd29 vkinstance: add signal for overriding device creation 2016-02-17 01:13:43 +11:00
Matthew Waters
300f4e03b2 vulkan: separate allocation and binding of memory 2016-02-17 01:13:43 +11:00
Matthew Waters
914c1a5193 vkbuffermemory: follow the rest of the struct macros 2016-02-17 01:13:43 +11:00
Matthew Waters
16510e2cbc vkswapper: use buffer memory to upload video frames to the GPU 2016-02-17 01:13:43 +11:00
Matthew Waters
bd41cc4557 vulkan: add a buffer memory allocator
Wraps the VkBuffer in a GstMemory subclass.
2016-02-17 01:13:43 +11:00
Matthew Waters
eb3f6eebce vkmemory: align struct members in the header 2016-02-17 01:13:43 +11:00
Matthew Waters
a2ad5d9eac vkmacros: use specific _INIT macros to initialize structures 2016-02-17 01:13:43 +11:00
Matthew Waters
6731fad9af vkimagememory: add get_{width,height) functions 2016-02-17 01:13:43 +11:00
Matthew Waters
08fd5c2ae5 vulkan: update to release 1.0.1.1 2016-02-17 01:13:43 +11:00
Matthew Waters
700eb16af8 vulkan/xcb: flush after mapping the window
Otherwise the map may not reach the server and not appear.
2016-02-17 01:13:43 +11:00
Matthew Waters
28ad97059d vkswapper: fix semaphore usage 2016-02-17 01:13:43 +11:00
Matthew Waters
0ee8fe193e vulkan: add some debugging about the supported extensions 2016-02-17 01:13:43 +11:00
Matthew Waters
72e956fe5e vkswapper: get the function pointers from the correct object
GetPhysicalDevice* functions are instance functions rather than device
functions.
2016-02-17 01:13:43 +11:00
Matthew Waters
d067ed8a9e vkinstance: add the necessary winsys extension 2016-02-17 01:13:43 +11:00
Matthew Waters
3ed50f36ed vkdisplay: forward declare GstVulkanDisplayType 2016-02-17 01:13:43 +11:00
Matthew Waters
f0fb45dd76 vkapi: remove unneeded headers
vkapi is for accessing the vulkan headers with the correct defines applied so
doesn't need any interal headers.
2016-02-17 01:13:43 +11:00
Matthew Waters
873e0d6340 vkimagememory: fix the memory barrier access masks
silences the following warnings from the validation layer

AccessMask xxx must have required access bit xxx and may have optional bits 0
when layout is VK_IMAGE_LAYOUT_TRANSFER_{SRC,DST}_OPTIMAL
2016-02-17 01:13:43 +11:00
Matthew Waters
9a0f415e79 vkswapper: only wait on the semaphore once
It's invalid usage and we may deadlock
2016-02-17 01:13:43 +11:00
Matthew Waters
2f11fc029d vkimagememory: initialize flags and don't crash on errors 2016-02-17 01:13:43 +11:00
Matthew Waters
b38362e75f vulkan: update error db for 0.10.2 2016-02-17 01:13:43 +11:00
Matthew Waters
6fe59754df vulkan: update to SDK 0.10.2 2016-02-17 01:13:43 +11:00
Matthew Waters
996200ffc0 vulkan: implement GstContext helpers
Based off libgstgl's implementation
2016-02-17 01:13:43 +11:00
Matthew Waters
75aaf184bb vkdevice: remove gst_vulkan_device_close()
When sharing the device between multiple elements/application, we need
to use th erefcount to know when to close the device.
2016-02-17 01:13:43 +11:00
Matthew Waters
5dd530daec vkinstance: remove gst_vulkan_instance_close
Sharing the instance across multiple elements/application will require
using the refcount instead to know when to close and destroy the instance.
2016-02-17 01:13:43 +11:00
Matthew Waters
203c6fa55c vkswapper: remove outdated comment 2016-02-17 01:13:43 +11:00
Matthew Waters
8819319ad1 vkswapper: always match lock/unlock of the render lock
If a draw event comes from the winsys before we've rendered a buffer we were
deadlocking.
2016-02-17 01:13:43 +11:00
Matthew Waters
a4e82bcef7 vkmemory: debug output the memory properties requested 2016-02-17 01:13:43 +11:00
Matthew Waters
87a35f679d vkimagememory: don't leak GstMapInfo in failure cases on _map() 2016-02-17 01:13:43 +11:00
Matthew Waters
074cb047ef vulkan: de-C99 struct declarations 2016-02-17 01:13:43 +11:00
Matthew Waters
a4476fa24b vkwindow/swapper: implement redraw handling
only xcb has been implemented
2016-02-17 01:13:43 +11:00
Matthew Waters
216a321319 vulkan: implement quitting and resizing the window
As before, only xcb has been implemented.
2016-02-17 01:13:43 +11:00
Matthew Waters
5de6dd9f40 new vulkan based video sink
Currently xcb is the only winsys that is implemented and there's no redraws et
al
2016-02-17 01:13:43 +11:00
Tim-Philipp Müller
08d8aefcda mpg123: move plugin from -bad to -ugly
https://bugzilla.gnome.org/show_bug.cgi?id=719849
2016-02-16 11:00:55 +00:00
Matthew Waters
057aca2cda gtk(gl)sink: remove the signal handlers on finalize
It's possible that the sink element will be freed before the widget is
destroyed.  When the widget was eventually destroyed, it was attempting to
access member variables of the freed sink struct which resulted in undefined
behaviour.

Fix by disconnecting our signal on finalize.

https://bugzilla.gnome.org/show_bug.cgi?id=762098
2016-02-16 20:09:08 +11:00
Alessandro Decina
effe132310 glvideoflip: don't ignore method changes when caps aren't set (yet) 2016-02-16 13:06:20 +11:00
Florin Apostol
88e21e6089 dashdemux: gst_dash_demux_get_live_seek_range returns positive values
https://bugzilla.gnome.org/show_bug.cgi?id=752374
2016-02-10 14:34:48 -03:00
Julien MOUTTE
2b457a46a0 rtpmsink: Implement setcaps that uses streamheader
This allow adding rtmpsink after the flv streaming have started. Otherwise,
FLV streamheader is never sent to the server, which cannot figure-out
what is this stream about. It should also help in certain renegotiation
figures. The sink will no longer work without an streamheader in caps,
though there is no known implementation of flvdemux that does not
support this.

https://bugzilla.gnome.org/show_bug.cgi?id=760242
2016-02-09 19:35:22 -05:00
Luis de Bethencourt
8d445ee758 mssdemux: remove unnecessary check
stream->current_fragment has the value of g_list_previous (iter) which has
just been checked. No need to check it again.

Just to be safe, use a g_assert() to check fragment before dereferencing.

CID #1352041
2016-02-09 21:41:33 +00:00
Thiago Santos
632111ae14 dashdemux: plug mpd client leak
On parsing error, free the mpd client object

https://bugzilla.gnome.org/show_bug.cgi?id=760120
2016-02-09 17:30:14 -03:00
Florin Apostol
3191051828 dashdemux: fix memory leak in gst_dash_demux_update_manifest_data
new_client local variable was not freed in case of errors.
Also, the buffer is not unmapped.

https://bugzilla.gnome.org/show_bug.cgi?id=760120
2016-02-09 17:05:13 -03:00
Florin Apostol
9ccd541980 mpdparser: renamed gst_mpd_client_get_next_segment_availability_end_time to gst_mpd_client_get_next_segment_availability_start_time
The function actually returns the segment availability start time (as defined by the standard).
That is at the end of the segment, but it is called availability start time.

Availability end time is something else (the time when the segment is no longer
available on the server). The function name was misleading.

https://bugzilla.gnome.org/show_bug.cgi?id=757655
2016-02-09 16:49:37 -03:00
Florin Apostol
b96ea72b4f mpdparser: corrected getting segment availability
https://bugzilla.gnome.org/show_bug.cgi?id=757655
2016-02-09 16:35:44 -03:00
Matthew Waters
cd4a93da3b glsyncmeta: separate out gpu/cpu waits.
CPU waits are more expensive and are only required if the CPU is ever going to
access the data. GPU waits perform inter-context synchronisation and are cheaper
as they don't require CPU intervention.
2016-02-09 12:30:25 +11:00
Luis de Bethencourt
ae96e6bd51 resindvd: remove commented out include
Commit 211828979b removed rsnaudiomunge,
no need for this commented out include for a file that doesn't exist
anymore.
2016-02-08 15:00:45 +00:00
Luis de Bethencourt
e4467618f4 Revert "resindvd: get rid of _stdint.h include"
This reverts commit 0eff6e1991.

Breaks the build when linking with dvdnav.h
2016-02-08 14:26:46 +00:00
Luis de Bethencourt
bca503a2c4 x265enc: get rid of _stdint.h include
It was never needed since it doesn't use any standard integer fixed width
types. Only the Glib types.
2016-02-08 13:43:24 +00:00
Luis de Bethencourt
0eff6e1991 resindvd: get rid of _stdint.h include 2016-02-08 13:38:29 +00:00
Matthew Waters
4d8a8b3925 gleffects: identity: add the shader to the hash table
So that we don't recreate it every frame and leak memory.

https://bugzilla.gnome.org/show_bug.cgi?id=761578
2016-02-08 12:24:32 +11:00
Thiago Santos
ac2734f5cb mssdemux: implement snap seeking
Implement snap seek flags handling in stream_seek to allow the
parent class to handle it for us

https://bugzilla.gnome.org/show_bug.cgi?id=759158
2016-02-04 14:20:16 -03:00
Thiago Santos
c01d266238 mssdemux: use correct seek position on reverse seeks
Otherwise it was always using the 'start' value, leading to wrong
behavior
2016-02-04 14:20:16 -03:00
Thiago Santos
1b12d7f8a3 mssdemux: only update download position if the seek requests to
Some seeks are only updating the stop position, there is no need
to change the current downloading position.
2016-02-04 14:20:16 -03:00
Thiago Santos
86fb14f5ed mssdemux: do not assert on fragment reloads for non-live
It can be used as a resource to verify if the server has updated
something in the Manifest when downloads are failing
2016-02-04 14:20:16 -03:00
Thiago Santos
40faf9e09b dashdemux: implement snap seek handling
Handle snap seeking at the stream_seek method and let superclass
do the rest to support snap seeking

https://bugzilla.gnome.org/show_bug.cgi?id=759158
2016-02-04 14:09:35 -03:00
Thiago Santos
731ab94cc3 adaptivedemux: handle snap seeks
Adaptive demuxers need to start downloading from specific positions
(fragments) for every stream, this means that all streams can snap-seek
to a different position when requested. Snap seeking in this case will
be done in 2 steps:

1) do the snap seeking on the pad that received the seek event and
   get the final position

2) use this position to do a regular seek on the other streams to
   make sure they all start from the same position

More arguments were added to the stream_seek function, allowing better control
of how seeking is done. Knowing the flags and the playback direction allows
subclasses to handle snap-seeking.
And also adds a new return parameter to inform of the final
selected seeking position that is used to align the other streams.

https://bugzilla.gnome.org/show_bug.cgi?id=759158
2016-02-04 14:05:08 -03:00
Vincent Penquerc'h
730d92ea8d opus: fix FEC
FEC may only be used when PLC is enabled on the audio decoder,
as it relies on empty buffers to generate audio from the next
buffer. Hooking to the gap events doesn't work as the audio
decoder does not like more buffers output than it sends.

The length of data to generate using FEC from the next packet
is determined by rounding the gap duration to nearest. This
ensures that duration imprecision does not cause quantization
to 2.5 milliseconds less than available. Doing so causes the
Opus API to fail decoding. Such duration imprecision is common
in live cases.

The buffer to consider when determining the length of audio
to be decoded is the previous buffer when using FEC, and the
new buffer otherwise. In the FEC case, this means we determine
the amount of audio from the previous buffer, whether it was
missing or not (and get the data either from this buffer, or
the current one if the previous one was missing).
2016-02-03 16:36:10 +00:00