Commit graph

4236 commits

Author SHA1 Message Date
Matthew Waters
e40d70c69a gl: propogate other-context using GstContext 2014-10-23 23:58:33 +11:00
Brendan Long
9b94f29261 dash: Remove obsolete README.
https://bugzilla.gnome.org/show_bug.cgi?id=738848
2014-10-23 10:26:54 +02:00
Matthieu Bouron
7fb584b087 hlsdemux: reset end_of_playlist attribute when we receive a seek
https://bugzilla.gnome.org/show_bug.cgi?id=738696
2014-10-21 12:55:42 +02:00
Matthew Waters
73a484d500 glmixer: fixup eglimage include path 2014-10-21 06:04:10 +11:00
Matthew Waters
2e49c99db3 glbufferpool: add the GstVideoGLTextureUploadMeta buffer pool option 2014-10-21 02:00:09 +11:00
Matthew Waters
f0caf04ad6 videoaggregator: operate on caps rather than video info
Otherwise the CapsFeatures will be lost along with the possibility
of multiple output types and formats.

https://bugzilla.gnome.org/show_bug.cgi?id=738129
2014-10-21 01:14:36 +11:00
Sebastian Dröge
a4d8efde0f rtmpsink: Declare sink variable that was forgotten in last commit 2014-10-20 09:47:27 +02:00
Havard Graff
a1e948cddd rtmpsink: Free URI string in finalize()
https://bugzilla.gnome.org/show_bug.cgi?id=738674
2014-10-20 09:36:40 +02:00
Stefan Sauer
24fd4cd74c curlbasesink: strip newlines from curl debug messages
The messages we receive in the custom log handler might end with a newline and
are not \0 terminated. Copy the messages, trim and terminate them.
2014-10-16 14:12:19 +02:00
Stefan Sauer
9b459b52f6 curlbasesink: small code cleanup
Use a local var and save a local var.
2014-10-16 14:12:19 +02:00
Thijs Vermeir
f241294662 x265enc: add x265 encoder element 2014-10-15 17:11:39 +02:00
Matthew Waters
771b94b3ca gldeinterlace: ref the uploaded buffer
Instead of the possibly non-GL input buffer.
2014-10-14 16:54:01 +02:00
Sebastian Dröge
981b5595d9 libde265: Change rank to SECONDARY, gst-libav has PRIMARY rank 2014-10-14 10:51:22 +02:00
Joachim Bauch
51fc68e196 Integrate libde265 into gst-plugins-bad. 2014-10-14 10:48:27 +02:00
Sebastian Dröge
302034ac4c glimagesink: Only finalize the other context in finalize()
Otherwise we change a value of a property when going to READY state,
which is unexpected behaviour.
2014-10-13 13:28:57 +02:00
Sebastian Dröge
dbdeed9b15 glmixer: Call the pad's parent class finalize method 2014-10-13 13:27:55 +02:00
Sebastian Dröge
f1fd536dc4 glmixer: Only finalize the other context in finalize()
Otherwise we change a value of a property when going to READY state,
which is unexpected behaviour.
2014-10-13 13:27:11 +02:00
Sebastian Dröge
fe3fafe652 gltestsrc: Add other-context property 2014-10-13 13:25:42 +02:00
Sebastian Dröge
d8a262a589 glimagesink: Don't leak other-context 2014-10-13 11:57:22 +02:00
Sebastian Dröge
3efaa0dec0 glmixer: Add other-context property 2014-10-13 11:57:22 +02:00
Benjamin Gaignard
23bb5f5319 waylandsink: do not render twice the same buffer
Do not try to render a buffer that is already being rendered.
This happens typically during the initial rendering stage as the first
buffer is rendered twice: first by preroll(), then by render().
This commit avoids this assertion failure:
  CRITICAL: gst_wayland_compositor_acquire_buffer: assertion
  'meta->used_by_compositor == FALSE' failed

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

Signed-off-by: Fabien Dessenne <fabien.dessenne@st.com>
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
2014-10-11 17:35:41 +02:00
Tifaine Inguere
4395c02b96 waylandsink : Allow surface to catch input events
If waylandsink is the owner of the display then it is in charge
of catching input events on the surface.

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

Signed-off-by: Tifaine Inguere <tifaine.inguere@st.com>
Reviewed-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
2014-10-11 17:18:29 +02:00
George Kiagiadakis
3058fe8d98 waylandsink: take into account the case where a pool may be destroyed together with GstWlDisplay
There are two cases covered here:
1) The GstWlDisplay forces the release of the last buffer and the pool
   gets destroyed in this context, which means it unregisters all the
   other buffers from the GstWlDisplay as well and the display->buffers
   hash table gets corrupted because it is iterating.
2) The pool and its buffers get destroyed concurrently from another
   thread while GstWlDisplay is finalizing and many things get corrupted.
2014-10-11 14:57:14 +02:00
George Kiagiadakis
5b1c5dbf99 waylandsink: stack the video subsurface into another subsurface that covers the whole render rectangle
The main reason behind this is that when the video caps change and the video
subsurface needs to resize and change position, the wl_subsurface.set_position
call needs a commit in its parent in order to take effect. Previously,
the parent was the application's surface, over which there is no control.
Now, the parent is inside the sink, so we can commit it and change size smoothly.

As a side effect, this also allows the sink to draw its black borders on
its own, without the need for the application to do that. And another side
effect is that this can now allow resizing the sink when it is in top-level
mode and have it respect the aspect ratio.
2014-10-11 14:57:14 +02:00
George Kiagiadakis
ee7968dd4a waylandsink: rename video format conversion functions to indicate they are about wl_shm
Needed to add linux_dmabuf format conversion functions later
2014-10-11 14:57:14 +02:00
George Kiagiadakis
4377a5d71c waylandsink: remove the ugly gst_wl_display_stop() now that this mechanism is not needed anymore
Because we no longer have a custom buffer pool that holds a reference
to the display, there is no way for a cyclic reference to happen like
before, so we no longer need to explicitly call a function from the
display to release the wl_buffers.

However, the general mechanism of registering buffers to the display
and forcibly releasing them when the display is destroyed is still
needed to avoid potential memory leaks. The comment in wlbuffer.c
is updated to reflect the current situation.
2014-10-11 14:57:13 +02:00
George Kiagiadakis
d7bddb0c51 waylandsink: replace the custom buffer pool with an allocator
This reduces the complexity of having a custom buffer pool, as
we don't really need it. We only need the custom allocation part.
And since the wl_buffer is no longer saved in a GstMeta, we can
create it and add it on the buffers in the sink's render()
function, which removes the reference cycle caused by the pool
holding a reference to the display and also allows more generic
scenarios (the allocator being used in another pool, or buffers
being allocated without a pool [if anything stupid does that]).

This commit also simplifies the propose_allocation() function,
which doesn't really need to do all these complicated checks,
since there is always a correct buffer pool available, created
in set_caps().

The other side effect of this commit is that a new wl_shm_pool
is now created for every GstMemory, which means that we use
as much shm memory as we actually need and no more. Previously,
the created wl_shm_pool would allocate space for 15 buffers, no
matter if they were being used or not.
2014-10-11 14:57:13 +02:00
George Kiagiadakis
9807d58b01 waylandsink: rework the mechanism for keeping buffers out of the pool until wl_buffer::release
This also removes the GstWlMeta and adds a wrapper class for wl_buffer
which is saved in the GstBuffer qdata instead of being a GstMeta.

The motivation behind this is mainly to allow attaching wl_buffers on
GstBuffers that have not been allocated inside the GstWaylandBufferPool,
so that if for example an upstream element is sending us a buffer
from a different pool, which however does not need to be copied
to a buffer from our pool because it may be a hardware buffer
(hello dmabuf!), we can create a wl_buffer directly from it and first,
attach it on it so that we don't have to re-create a wl_buffer every
time the same GstBuffer arrives and second, force the whole mechanism
for keeping the buffer out of the pool until there is a wl_buffer::release
on that foreign GstBuffer.
2014-10-11 14:57:13 +02:00
Vineeth T M
b8927d848c schrodec: optimize parse logic
Header will be read each and everytime parse function will be called
which is not necessary since until we have complete data,
we need not parse the header again.

https://bugzilla.gnome.org/show_bug.cgi?id=737984
2014-10-10 13:06:40 +01:00
Tim-Philipp Müller
39a5c20263 fluiddec: don't leak incoming caps event
https://bugzilla.gnome.org/show_bug.cgi?id=738291
2014-10-10 13:05:49 +01:00
Antonio Ospite
28d9826fd5 fluiddec: fix some memory leaks
https://bugzilla.gnome.org/show_bug.cgi?id=738223
2014-10-10 11:29:25 +01:00
Vivia Nikolaidou
7872359239 gloverlay: And fix another unused variable compiler warning 2014-10-08 21:51:12 +03:00
Vivia Nikolaidou
b8d64301af gloverlay: Fix unused variable compiler warning when compiling without desktop GL 2014-10-08 21:49:59 +03:00
Anuj Jaiswal
ce9076f260 zbar: Add YVU9 and YUV9 to ZBAR_YUV_CAPS
https://bugzilla.gnome.org/show_bug.cgi?id=737407
2014-10-08 16:46:04 +01:00
Wang Xin-yu (王昕宇)
e6212f5156 gltestsrc: implement checkers pattern with GLSL
https://bugzilla.gnome.org/show_bug.cgi?id=737505
2014-10-07 23:41:38 +11:00
Thomas Bluemel
c87835a79f hlsdemux: Fix accessing invalidated memory
In gst_hls_demux_get_next_fragment() the next fragment URI gets
stored in next_fragment_uri, but the gst_hls_demux_updates_loop()
can at any time update the playlist, rendering this string invalid.
Therefore, any data (like key, iv, URIs) that is taken from a
GstM3U8Client needs to be copied. In addition, accessing the
internals of a GstM3U8Client requires locking.

https://bugzilla.gnome.org/show_bug.cgi?id=737793
2014-10-07 15:22:27 +03:00
Vivia Nikolaidou
778b1814a8 curlsmtpsink: Set CURLOPT_UPLOAD to 1 to not use VRFY and other unneeded commands
Fixes the sink with SMTP servers that disable VRFY for spam protection.

http://sourceforge.net/p/curl/bugs/1389/
2014-10-06 21:28:45 +03:00
Sebastian Dröge
28e44b3392 openh264: Use a MARGINAL rank for the encoder and decoder
They work but for now we prefer others until these are extensively tested.
2014-10-06 16:44:51 +03:00
Lihua Liu
47abcb9a6b curlsmtpsink: Email with multipart content-type should end with a final boundary
Add final boundary for each of the sending out emails from smtpsink.

https://bugzilla.gnome.org/show_bug.cgi?id=736134
2014-10-06 15:42:53 +03:00
Nicola Murino
4d8d9b009b openh264enc: make denoise work
https://bugzilla.gnome.org/show_bug.cgi?id=737894
2014-10-06 12:31:29 +03:00
Sebastian Dröge
518d84c148 openh264dec: The codec can only do baseline so simplify the code a bit
and declare this also on the srcpad caps.

With baseline profile there are no B-frames or frame reordering.
2014-10-03 17:23:36 +03:00
Sebastian Dröge
bc8e1465dc openh264dec: On ::finish() stop trying if the decoder returned that no output is available 2014-10-03 17:23:36 +03:00
Sebastian Dröge
088cf16bf9 openh264: Run gst-indent over everything 2014-10-03 17:23:36 +03:00
Sebastian Dröge
09f5b9acec openh264: Remove unused codecparsers lib 2014-10-03 17:23:36 +03:00
Sebastian Dröge
68baaf19c3 openh264: Add FIXME comment about missing API in openh264 2014-10-03 17:23:36 +03:00
Sebastian Dröge
0e15f47bdf openh264dec: Try to handle frame reordering
As openh264 has no way to attach any IDs to input frames that we then get on
the output frames, we have to assume that the input has valid PTS. We just
take the frame with the oldest PTS, and if there is no PTS information we take
the one with the oldest DTS.
2014-10-03 17:23:36 +03:00
Sebastian Dröge
8ae2af61ce openh264dec: Don't drop videocodec frames if we can't decode them *yet*
Fixes jittery playback of streams with B frames.
2014-10-03 17:23:36 +03:00
Sebastian Dröge
1dfcdb9ce3 openh264dec: GstVideoDecoder works on frames, not sub-frames (e.g. NALs)
And we can just pass complete AUs to the decoder without problems.
2014-10-03 17:23:36 +03:00
Sebastian Dröge
1eb740a7c3 openh264dec: As we require NAL alignment from upstream we don't need to parse anything 2014-10-03 17:23:36 +03:00
Sebastian Dröge
0a31814ef3 openh264dec: Properly drain codec on ::finish() 2014-10-03 17:23:35 +03:00
Sebastian Dröge
10475b6793 openh264enc: Properly drain the encoder on ::finish() 2014-10-03 17:23:35 +03:00
Sebastian Dröge
8aedcc6bde openh264enc: We always get a single frame as output, not a NAL
No need to accumulate NALs.
2014-10-03 17:23:35 +03:00
Sebastian Dröge
70d4e6b740 openh264enc: Fix up caps and stride handling 2014-10-03 17:23:35 +03:00
Sebastian Dröge
f3cabe3cc3 openh264enc: Add support for GstVideoMeta
This will allow upstream elements to work more efficiently.
2014-10-03 17:23:35 +03:00
Sebastian Dröge
2285cbaa45 openh264dec: Add support for GstVideoMeta
This will make operation with various sinks faster for free.
2014-10-03 17:23:35 +03:00
Sebastian Dröge
4475663569 openh264dec: Optimize frame copying a bit 2014-10-03 17:23:35 +03:00
Sebastian Dröge
4c5a504a7b openh264dec: Don't forget to unref the input state 2014-10-03 17:23:35 +03:00
Sebastian Dröge
76b5c1c511 openh264dec: Fix various crashes on ::stop() 2014-10-03 17:23:35 +03:00
Sebastian Dröge
bc5c6a0fc9 openh264dec: Remove invalid sprops-parameter-set handling
This only exists on RTP caps, not H264 caps.
2014-10-03 17:23:35 +03:00
Sebastian Dröge
739a10d84e openh264enc: Don't set caps manually
This will break the order of events in GStreamer.
2014-10-03 17:23:35 +03:00
Sebastian Dröge
18e7540263 openh264dec: Fix input state handling and propagation of upstream caps fields 2014-10-03 17:23:35 +03:00
Sebastian Dröge
cf4ec9b04e openh264: Add OpenH264 based encoder/decoder elements
These are the openh264 elements released under the BSD-2 license
by Ericsson as part of the OpenWebRTC project.
https://github.com/EricssonResearch/openwebrtc-gst-plugins

https://bugzilla.gnome.org/show_bug.cgi?id=737788
2014-10-03 17:23:35 +03:00
Tim-Philipp Müller
3953b8e419 fluiddec: don't crash on 0-sized input buffers
https://bugzilla.gnome.org/show_bug.cgi?id=737658
2014-10-01 00:53:59 +01:00
Lubosz Sarnecki
04034b11f4 gltransformation: graphene multiplication order has changed
https://bugzilla.gnome.org/show_bug.cgi?id=733510
2014-09-30 22:11:35 +10:00
Matthew Waters
d1360ef2c7 glvideomixer: update element documentation 2014-09-30 20:39:36 +10:00
David Waring
29f1f4533e dash: Use GstUri to join URIs 2014-09-29 12:22:19 +03:00
Matthew Waters
3ab17dfbe3 Revert accidental push: "gltestsrc: implement checkers pattern with GLSL"
This reverts commit eae09179f0.
2014-09-29 00:27:30 +10:00
Wang Xin-yu (王昕宇)
eae09179f0 gltestsrc: implement checkers pattern with GLSL 2014-09-28 21:43:34 +10:00
Matthew Waters
b658f04d6c gloverlay: fix zero output frames with YUY2/UYVY
also, be nice and disable blending for other elements
2014-09-26 22:29:56 +10:00
Matthew Waters
720ba932c9 gloverlay: protect desktop gl specific tokens with #if 2014-09-26 22:22:06 +10:00
Matthew Waters
eaa424cec7 gloverlay: free the image memory every time the location changes
fixes a memory leak
2014-09-26 12:28:55 +10:00
Sebastian Dröge
9c6c82887f gloverlay: Include into the build with GLES2 only too 2014-09-25 20:48:59 +03:00
Matthew Waters
7e69750336 gltestsrc: free the shader on stop 2014-09-26 01:59:44 +10:00
Matthew Waters
acb21cdb83 glvideomixer: fix blending with low-alpha sources
We also need to apply the blend paramaters to the alpha channel otherwise
the output of the blend will appear black at low alpha values (< 0.2).
2014-09-26 01:59:43 +10:00
Matthew Waters
7b3024c387 gloverlay: reimplement everything
- update for shaders
 - add alpha property
 - image placement properties shamelessly borrowed from gdkpixbufoverlay
 - image placement properties are GstController able
 - use GstGLMemory for the overlay image data
 - add support for gles2
2014-09-26 01:59:43 +10:00
Luis de Bethencourt
97ed6a2668 mpeg2enc: break statement unnecessary
Code flow never arrives to the break statements due to the goto's. So the
breaks are unnecessary.

https://bugzilla.gnome.org/show_bug.cgi?id=736942
2014-09-25 15:45:57 +01:00
Lihua Liu
22e09f19ed curlsmtpsink: Email with multipart content-type should end with a final boundary
Add final boundary for each of the sending out emails from smtpsink.

https://bugzilla.gnome.org/show_bug.cgi?id=736134
2014-09-25 11:16:30 +03:00
Stefan Sauer
f8f2cca0e4 curl*sink: add more logging 2014-09-25 10:14:41 +02:00
Stefan Sauer
04d271dfd3 curlbasesink: add a debug function
If gstreamer is build with logging enabled, add a debug function and output
verbose messages to the log instead of stderr.
2014-09-25 08:05:50 +02:00
Stefan Sauer
8a8d3ac351 curlhttpsink: only add content-disposition header if a filename is set
The header is optional and therefore we better omit it if we don't have a filename.
2014-09-24 22:25:55 +02:00
Stefan Sauer
a80cde8cb6 curlbasesink: don't replace specific error messages with a generic one
Only set an error if we haven't set one already.
2014-09-24 22:25:55 +02:00
Stefan Sauer
2e51ba1219 curltlssink: swap check
Lets check for NULL first, as that is the default anyway.
2014-09-24 22:25:55 +02:00
Matthieu Bouron
22c7559152 dashdemux: mark first buffer as discont after restarting a download task
Mark first buffer as discont after restarting a download task, so
downstream can reset its state to properly handle the new fragment.

Related issue: https://bugzilla.gnome.org/show_bug.cgi?id=736318

https://bugzilla.gnome.org/show_bug.cgi?id=736319
2014-09-24 13:30:20 -03:00
Thiago Santos
2273c15f15 dashdemux: push a time segment when restarting streaming
This should inform demuxers/decoders downstream that the stream is
about to start from a new position and they should flush accordingly

https://bugzilla.gnome.org/show_bug.cgi?id=736319
2014-09-24 12:35:37 -03:00
Anuj Jaiswal
e4247f0a5a mplex: break statement unnecessary
One more code flow issue where it never arrives to the break statement due to
the goto. So the break is unnecessary.
Plus two coding style fixes.

https://bugzilla.gnome.org/show_bug.cgi?id=736895
2014-09-24 14:45:20 +01:00
Matthew Waters
9f953f297f glvideomixer: skip input frames with an alpha of 0 2014-09-24 14:31:19 +10:00
Matthew Waters
c44352b11f gl: download whenever we have sysmem capsfeatures
Otherwise we could pass on a RGBA formatted buffer and downstream would
misinterpret that as some other video format.

Fixes pipelines of the form

    gleffects ! tee ! xvimagesink
2014-09-24 13:16:30 +10:00
Sebastian Rasmussen
462d27e60a gsettings: Fix typo in description
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=736933
2014-09-23 23:15:38 +03:00
Lubosz Sarnecki
b2398e3fd1 gltestsrc: add Mandelbrot fractal pattern.
https://bugzilla.gnome.org/show_bug.cgi?id=735131
2014-09-24 00:40:57 +10:00
Lubosz Sarnecki
3736f944b5 gltestsrc: implement snow pattern with GLSL.
https://bugzilla.gnome.org/show_bug.cgi?id=735131
2014-09-24 00:40:37 +10:00
Matthew Waters
5b8d7a443e glupload: provide the output buffer that is rendered into
Allows callers to properly reference count the buffers used for
rendering.

Fixes a redraw race in glimagesink where the previous buffer
(the one used for redraw operations) is freed as soon as the next
buffer is uploaded.

1. glimagesink uploads in _prepare() to texture n
1.1 glupload holds buffer n
2. glimagesink _render()s texture n
3. glimagesink uploads texture n+1
3.1 glupload free previous buffer which deletes texture n
3.2 glupload holds buffer n+1
4. glwindow resize/expose
5. glimagesink redraws with texture n

The race is that the buffer n (the one used for redrawing) is freed as soon as
the buffer n+1 arrives.  There could be any amount of time and number of
redraws between this event and when buffer n+1 is actually rendered and thus
replaces buffer n as the redraw source.

https://bugzilla.gnome.org/show_bug.cgi?id=736740
2014-09-21 21:36:49 +10:00
Sanjay NM
a1ae26acbd gl: Removed unreachable break, unused variable
https://bugzilla.gnome.org/show_bug.cgi?id=736957
2014-09-19 21:48:14 +10:00
Philippe Normand
6d67b5263f hlsdemux: lock client mutex before entering the retry_failover block
This is consistent with the case where the block execution is
triggered by the goto invoked after the current_variant update.

https://bugzilla.gnome.org/show_bug.cgi?id=736919
2014-09-18 23:28:15 +01:00
George Kiagiadakis
e289ab07c1 mssdemux: synchronize with the download loop thread to signal it to continue
If EOS or ERROR happens before the download loop thread has reached its
g_cond_wait() call, then the g_cond_signal doesn't have any effect and
the download loop thread stucks later.

https://bugzilla.gnome.org/show_bug.cgi?id=735663
2014-09-18 13:38:29 -03:00
George Kiagiadakis
f4546b64ea hlsdemux: synchronize with the download loop thread to signal it to continue
If EOS or ERROR happens before the download loop thread has reached its
g_cond_wait() call, then the g_cond_signal doesn't have any effect and
the download loop thread stucks later.

https://bugzilla.gnome.org/show_bug.cgi?id=735663
2014-09-18 13:38:27 -03:00
George Kiagiadakis
55032ae5fe dashdemux: synchronize with the download loop thread to signal it to continue
If EOS or ERROR happens before the download loop thread has reached its
g_cond_wait() call, then the g_cond_signal doesn't have any effect and
the download loop thread stucks later.

https://bugzilla.gnome.org/show_bug.cgi?id=735663
2014-09-18 13:38:25 -03:00
Thiago Santos
01ccac24fa mssdemux: fix clearing of eos state in pads
The internal pad still keeps its EOS flag and event as it can be assigned
after the flush-start/stop pair is sent. The EOS is assigned from the streaming
thread so this is racy.

To be sure to clear it, it has to be done after setting the source to READY to
be sure that its streaming thread isn't running.

https://bugzilla.gnome.org/show_bug.cgi?id=736012
2014-09-18 12:14:30 -03:00
Thiago Santos
07b59c93c2 hlsdemux: fix clearing of eos state in pads
The internal pad still keeps its EOS flag and event as it can be assigned
after the flush-start/stop pair is sent. The EOS is assigned from the streaming
thread so this is racy.

To be sure to clear it, it has to be done after setting the source to READY to
be sure that its streaming thread isn't running.

https://bugzilla.gnome.org/show_bug.cgi?id=736012
2014-09-18 12:14:30 -03:00
Thiago Santos
24c99712a8 dashdemux: fix clearing of eos state in pads
The internal pad still keeps its EOS flag and event as it can be assigned
after the flush-start/stop pair is sent. The EOS is assigned from the streaming
thread so this is racy.

To be sure to clear it, it has to be done after setting the source to READY to
be sure that its streaming thread isn't running.

https://bugzilla.gnome.org/show_bug.cgi?id=736012
2014-09-18 12:14:30 -03:00
Anuj Jaiswal
8b180b85a2 faad: logical disjunction consecutive return, break unnecessary
https://bugzilla.gnome.org/show_bug.cgi?id=736790
2014-09-18 12:33:35 +03:00