Commit graph

4260 commits

Author SHA1 Message Date
Matthieu Bouron
5ae991095d dashdemux: send missing FLUSH_STOP/EOS when no seeking period is found
https://bugzilla.gnome.org/show_bug.cgi?id=736800
2014-11-07 19:02:02 -03:00
Tim-Philipp Müller
efbae700a6 smoothstreaming: initialise new GstH264NalUnit fields
CID #1251107.
2014-11-07 00:16:12 +00:00
Alessandro Decina
7d48fe1c1e glimagesink: don't make gst_glimage_sink_handle_events call _ensure_gl_setup
gst_glimage_sink_handle_events can be called from the overlay interface and from
the main thread before GL is setup. Before this change, that would call
_ensure_gl_setup() and deadlock on OSX.

Change things so that it's always safe to call gst_glimage_sink_handle_events()
without stuff deadlocking.
2014-11-07 00:22:09 +01:00
Alessandro Decina
b60fe0271f glimagesink: fix possible deadlock on osx
Remove gst_glimage_sink_handle_events call in gst_glimage_sink_init. It was
unnecessary and when the element was instantiated from the main thread, caused a
deadlock in OSX creating the context (thread).
2014-11-07 00:22:09 +01:00
Matthew Waters
7e62c790d2 glimagesink: clamp the resize width/height to >= 1 to avoid a GL error 2014-11-07 10:03:08 +11:00
Lubosz Sarnecki
6702811e14 glimagesink: implement gst_video_overlay_handle_events
https://bugzilla.gnome.org/show_bug.cgi?id=736035
2014-11-06 16:04:11 +11:00
Tim-Philipp Müller
f216b7bb11 Sprinkle some G_PARAM_DEPRECATED and #ifndef GST_REMOVE_DEPRECATED 2014-11-02 17:19:34 +00:00
Tim-Philipp Müller
69ee564d5c hls: fix indentation 2014-11-02 17:17:46 +00:00
Nicolas Dufresne
54602c04f6 rtpopus: Use OPUS encoding name
Both Firefox and Chrome uses OPUS as the encoding in their SDP.
Adding this now defacto standard name remove the need for special
case in SDP parsing code.

https://bugzilla.gnome.org/show_bug.cgi?id=737810
2014-11-01 10:10:27 -04:00
Thiago Santos
a38ada61e3 mssdemux: add type of stream to debug log
Makes it faster to debug why certain streams are not showing
2014-10-31 17:33:55 -03:00
Thiago Santos
e644b5e6ae mssdemux: do not unlock not locked mutex 2014-10-31 17:33:55 -03:00
Matthew Waters
0537cbfa5b glimagesink: resize the viewport correctly on a caps change
with force-aspect-ratio=true, if the width or height changed, the
viewport wasn't being updated to respect the new video width and height
until a resize occured.
2014-10-31 21:29:26 +11:00
Matthew Waters
d6247993f7 glmixer: advertise support for changing input caps mid-stream
https://bugzilla.gnome.org/show_bug.cgi?id=739334
2014-10-31 21:29:25 +11:00
Vincent Penquerc'h
23029acf46 opusenc: update output segment stop time to match clipped samples
This will let oggmux generate a granpos on the last page that properly
represents the clipped samples at the end of the stream.
2014-10-30 14:41:44 +00:00
Arun Raghavan
193eeb1243 srtpdec: Trivial documentation fix 2014-10-30 18:45:04 +05:30
Matthew Waters
a4af98b8c6 glmixer: don't get the current caps from GstVideoInfo for the srcpad
It's missing the caps features needed.
2014-10-30 23:08:00 +11:00
Lubosz Sarnecki
27da1e5aaf satisfy gst-indent 2014-10-29 23:42:54 +11:00
Jan Schmidt
70e4d4123c glfiltercube: Fix typo in property description 2014-10-29 23:23:13 +11:00
Wang Xin-yu (王昕宇)
a9d13db8c6 glmixer:fix incorrect parameter passed to handle_set_context 2014-10-29 20:43:31 +11:00
Tim-Philipp Müller
95c211dc49 Add some missing G_END_DECLS 2014-10-28 21:42:31 +00:00
Tim-Philipp Müller
8a9ab58e33 faad: fix wrong unrefs in set_format error code path 2014-10-28 17:53:00 +00:00
L. Sorin
09f0b03762 curlsshsink: use the locally defined types
Just a matter of coding style, makes the code a bit tidier...

https://bugzilla.gnome.org/show_bug.cgi?id=731581
2014-10-26 21:04:02 +00:00
Matthew Waters
9ac74f6226 glmixer: override the caps query in order to 'convert' capsfeatures
Otherwise, it is only possible for the sink pads and the src pads to
have the exact same caps features.  We can convert from any feature
to another feature so support that.
2014-10-24 00:35:22 +11:00
Matthew Waters
7d9044cf05 glmixer: override the accept caps query in order to 'convert' capsfeatures
Otherwise, it is only possible for the sink pads and the src pads to
have the exact same caps features.  We can convert from any feature
to another feature so support that.
2014-10-23 23:58:33 +11:00
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