Commit graph

4942 commits

Author SHA1 Message Date
Sebastian Dröge
856bb027f9 opus: Handle sprop-stereo and sprop-maxcapturerate RTP caps fields
https://bugzilla.gnome.org/show_bug.cgi?id=746617
2015-03-23 12:24:55 +01:00
Sebastian Dröge
a128502221 opusdec: Take channels and sample rate from the caps if we have no stream header 2015-03-23 12:09:25 +01:00
Sebastian Dröge
c2f38cd054 opusdec: Reset the decoder if the caps change 2015-03-23 12:09:09 +01:00
Sebastian Dröge
bb5b0f2d12 opusdec: Take output sample rate from the stream headers too
This way we let opusdec do the resampling if needed and don't carry
around buffers with a too high sample rate if not required.

While Opus always uses 48kHz internally, this information from the
header specifies which frequencies are safe to drop.
2015-03-23 11:57:09 +01:00
Sebastian Dröge
716eaf765b opusheader: Put number of channels and sample rate into the caps
https://bugzilla.gnome.org/show_bug.cgi?id=746617
2015-03-23 11:56:09 +01:00
Nicola Murino
0719c8c766 glimagesink: fix caps leak
https://bugzilla.gnome.org/show_bug.cgi?id=746541
2015-03-21 16:52:08 +00:00
Jose Antonio Santos Cadenas
ff11a1a8a0 srtpdec: Add support for buffer list
https://bugzilla.gnome.org/show_bug.cgi?id=746387
2015-03-19 16:31:47 +01:00
Jose Antonio Santos Cadenas
8f8b0f5478 srtpenc: Do not drop all buffers in buffer list if one fails
https://bugzilla.gnome.org/show_bug.cgi?id=746387
2015-03-19 16:27:21 +01:00
Sebastian Dröge
82b73713cb dtls: Pass the connection instance as data to the thread pool
No need to ref/unref the connection every time we push something on the pool.
However we have to provide non-NULL data to the pool, so let's just give it
some coffee.
2015-03-19 14:04:28 +01:00
Sebastian Dröge
602b1ca3d2 dtls: Remove unused thread struct field 2015-03-19 13:55:53 +01:00
Sebastian Dröge
fd609f6bc0 dtls: Use a shared thread pool for the timeouts
This way we will share threads with other DTLS connections if possible, and
don't have to start/stop threads for timeouts if there are many to be handled
in a short period of time.

Also use the system clock and async waiting on it for scheduling the timeouts.
2015-03-19 13:30:00 +01:00
Sebastian Dröge
4072666c7d dtls: Shutdown timeout thread when it's not needed
It is not needed most of the time and usually we have a thread
idling around doing nothing all the time after the first few seconds.
2015-03-18 18:21:35 +01:00
Sebastian Dröge
7782bdf286 dtlsenc: Clear the queue when deactivating the pad 2015-03-18 17:40:47 +01:00
Sebastian Dröge
4fed95c534 dtlsenc: Handle pad activity states properly 2015-03-18 17:40:34 +01:00
Sebastian Dröge
ff01df1093 dtlsenc: Don't manually activate/deactivate srcpad 2015-03-18 17:35:12 +01:00
Jose Antonio Santos Cadenas
8d2e98bc3f srtpdec: Separate buffer encoding functionality into a different function
https://bugzilla.gnome.org/show_bug.cgi?id=746387
2015-03-18 16:26:48 +01:00
Jose Antonio Santos Cadenas
f295beda07 srtpenc: Add support for buffer list
https://bugzilla.gnome.org/show_bug.cgi?id=746387
2015-03-18 16:26:48 +01:00
Jose Antonio Santos Cadenas
ef4a904700 srtpenc: Add missing locks
https://bugzilla.gnome.org/show_bug.cgi?id=746387
2015-03-18 16:22:58 +01:00
Jose Antonio Santos Cadenas
2d3938c063 srtpenc: Split chain functionality so it can be reused for buffer list
https://bugzilla.gnome.org/show_bug.cgi?id=746387
2015-03-18 16:21:36 +01:00
Sebastian Dröge
3614302cf8 dtlsenc: Use a GQueue instead of a GPtrArray
Using a GPtrArray as a queue is not very efficient as the whole
array has to be copied whenever an element is removed from the
beginning.
2015-03-18 13:52:38 +01:00
Sebastian Dröge
47b73f0d52 dtlsdec: Fix locking
Especially don't hold any mutex while adding/removing pads or pushing data.
2015-03-18 10:06:47 +01:00
Sebastian Dröge
989c2ef67b dtlsdec: Add support for buffer lists 2015-03-18 10:06:15 +01:00
Sebastian Dröge
2082476efb dtls: Fix some search & replace mistakes from renaming the elements 2015-03-18 09:46:40 +01:00
Jose Antonio Santos Cadenas
e2cdbdae13 srtpenc: Improve memory management on chain function
Avoiding copy the buffer twice, one while mapping and other with mencpy

https://bugzilla.gnome.org/show_bug.cgi?id=746356
2015-03-17 18:18:43 +01:00
Jose Antonio Santos Cadenas
5bad599560 srtpenc: Fix typo in log 2015-03-17 18:18:32 +01:00
Sebastian Dröge
2dcd5dd39b dtls: Initialize debug category earlier
Otherwise the openssl initialization will use it before initialization
2015-03-17 11:43:00 +01:00
Tim-Philipp Müller
9f06d36d95 dtls: make sure we actually log into the right debug category
GST_DTLS_USE_GST_LOG is not defined anywhere, so
we'd just log into the default category by accident.
We use the gst logging system unconditionally now,
so might just as well remove this #if #else.
2015-03-16 17:51:20 +00:00
Tim-Philipp Müller
86a889883e dtls: fix some more compiler warnings
gcc-4.9.2:
gstdtlsagent.c:114:1: error: old-style function definition
gstdtlsconnection.c:253:3: error: ISO C90 forbids mixed declarations and code
gstdtlsconnection.c:291:3: error: ISO C90 forbids mixed declarations and code
gstdtlsconnection.c:391:3: error: ISO C90 forbids mixed declarations and code
gstdtlsconnection.c:434:3: error: ISO C90 forbids mixed declarations and code
gstdtlsconnection.c:773:1: error: 'BIO_s_gst_dtls_connection' was used with no prototype before its definition
gstdtlsconnection.c:773:1: error: old-style function definition
2015-03-16 17:36:49 +00:00
Sebastian Dröge
d9344ad820 dtls: Unconditionally use GStreamer debug log system 2015-03-16 18:23:27 +01:00
Sebastian Dröge
936fa2f1c4 dtls: Re-namespace from Er to Gst 2015-03-16 18:23:27 +01:00
Sebastian Dröge
1de51fcf02 dtls: Fix some compiler warnings
gstdtlsconnection.c:128:32: error: passing 'const char [30]' to parameter of type 'void *'
      discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
      SSL_get_ex_new_index (0, "gstdtlsagent connection index", NULL, NULL,
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/openssl/ssl.h:1981:43: note: passing argument to parameter 'argp' here
int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
                                          ^
gstdtlsconnection.c:822:40: error: arithmetic on a pointer to void is a GNU extension
      [-Werror,-Wpointer-arith]
  memcpy (out_buffer, priv->bio_buffer + priv->bio_buffer_offset, copy_size);
                      ~~~~~~~~~~~~~~~~ ^
2015-03-16 18:23:27 +01:00
Sebastian Dröge
6183e99eec dtls: Fix indention 2015-03-16 18:23:27 +01:00
Sebastian Dröge
1e0ed9af11 dtls: Add new DTLS plugin
This is a copy of the Ericsson DTLS plugin from
https://github.com/EricssonResearch/openwebrtc-gst-plugins/tree/master/ext/erdtls/src

https://bugzilla.gnome.org/show_bug.cgi?id=744582
2015-03-16 18:23:27 +01:00
xixi
5a1ed14c3c dashdemux: fetch wrong segment at the end of Period
Fix check for end of Period time to avoid trying
to fetch a segment that doesn't exist

https://bugzilla.gnome.org/show_bug.cgi?id=746038
2015-03-15 12:02:58 +00:00
Víctor Manuel Jáquez Leal
d925e7fd19 glupload: move meta-data copy into gst-gl library
In some upload implementations the out buffer has more than one references,
turning the buffer not writable, so it won't be possible to modify its
meta-data.

This patch moves the meta-data copy before increasing the reference of the out
buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=746173
2015-03-14 19:53:02 +00:00
Julien Isorce
f8fca66fb9 glimagesink: keep window invisible when sharing output
https://bugzilla.gnome.org/show_bug.cgi?id=739681
2015-03-14 17:56:39 +00:00
Julien Isorce
0150255a46 glimagesink: provide GstSample in client-draw signal
Instead of prividing texture and size directly.
And apply changes to examples.

https://bugzilla.gnome.org/show_bug.cgi?id=739681
2015-03-14 17:56:21 +00:00
Matthew Waters
fa61e8e4ce glsyncmeta: make context to wait and set sync explicit
otherwise we may wait on a sync object in same context by accident
2015-03-14 16:53:46 +00:00
Nicolas Dufresne
ac89e53173 glimagesink: Add NULL check in error case
Other context may be NULL if something went wrong. Avoid trying to unref
a NULL pointer.
2015-03-14 12:58:22 +00:00
Matthew Waters
0c8ede8565 glupload/colorconvert: only copy timestamps if the input buffer != output 2015-03-14 10:39:06 +00:00
Matthew Waters
a29a18cc3a glshader: attribute locations are -1 on error 2015-03-13 17:41:17 +00:00
Jan Schmidt
450dc5f697 GL: Remove annoying printf in the filterbin class_init 2015-03-14 02:54:18 +11:00
Matthew Waters
2ba6bb9b93 glimagesink: add pixel-aspect-ratio property on the bin 2015-03-13 12:43:13 +00:00
Matthew Waters
4be45e5f30 glimagesink: forward ALL the properties on the bin 2015-03-13 12:30:20 +00:00
Matthew Waters
067d5c45d2 gluploadelement: properly unref buffers that are the same as the input
basetransform doesn't unref equal input and output buffers
2015-03-13 12:30:20 +00:00
Matthew Waters
34485c9976 gl: get the context from basemixer/basefilter 2015-03-13 12:30:20 +00:00
Matthew Waters
91b7642c48 gl: retreive the gldisplay/app gl context as soon as possible
fixes the usage of gst_gl_display_filter_gl_api
2015-03-13 12:30:20 +00:00
Matthew Waters
dbe8ae4d98 caopengllayersink: implement as a bin like glimagesink 2015-03-12 16:45:51 +00:00
Matthew Waters
66ccdab09a gl/cocoa: avoid deadlock when creating context on the main thread.
Make window/view creation async so that it is possible to
gst_gl_context_create from the main thread.
2015-03-12 16:45:51 +00:00
Matthew Waters
ef0bd30c87 gl: store the list of contexts within gldisplay
Removes the reliance on the allocation query to propogate GL contexts.

Allows thread safely getting a context for the a specific thread.
2015-03-12 16:45:51 +00:00
Matthew Waters
2f2470488b glimagesink: unset the current shader after rendering
fixes gltestsrc ! glimagesink when gltestsrc doesn't use a shader
2015-03-12 16:45:51 +00:00
Matthew Waters
5495397c81 gltestsrc: remove usage of gldownload library object 2015-03-12 16:45:51 +00:00
Matthew Waters
776d190f59 gl: new glsrcbin element 2015-03-12 16:45:51 +00:00
Matthew Waters
0fb56738a1 glvideomixer: implement with glmixerbin
The relevant properties are forwarded to/from the containing bin
and sink pads.
2015-03-12 16:45:51 +00:00
Matthew Waters
d5a692bdb0 glmixer: remove usage of upload/download objects 2015-03-12 16:45:51 +00:00
Matthew Waters
9e605fca6c gl: new glmixerbin element 2015-03-12 16:45:51 +00:00
Matthew Waters
8a0017e21d glimagesink: implement as a bin
glupload ! glcolorconvert ! sink

Some properties are manually forwarded.  The rest are available using
GstChildProxy.

The two signals are forwarded as well.
2015-03-12 16:45:50 +00:00
Matthew Waters
b0600aca97 gl: new glsinkbin element
similar to glfilterbin but for sinks
2015-03-12 16:45:50 +00:00
Matthew Waters
7fe908bc02 gl: new element glfilterbin
It encapsulates a confiurable GL processing element in the
upload/colorconvert/download dance required to transparently process
the majority of GstBuffer's.
2015-03-12 16:45:50 +00:00
Matthew Waters
a7cbc04aba gl: add new gldownloadelement
Simply transforms caps to/from raw/glmemory capsfeatures
2015-03-12 16:45:50 +00:00
Matthew Waters
3514600bf3 gl: add a new glcolorconvert element based on the glcolorconvert library object 2015-03-12 16:45:50 +00:00
Matthew Waters
efaca13d11 gl: add a new glupload element based on the glupload library object 2015-03-12 16:45:50 +00:00
Matthew Waters
45d85a0570 gl: add a new glbasemixer class below glmixer
It deals with propagating the gl display/contexts throughout the
application/pipeline
2015-03-12 16:45:50 +00:00
Vincent Penquerc'h
22d9c9f763 opusenc: replace cbr and constrained-vbr properties with an enum
It was deemed confusing before.

https://bugzilla.gnome.org/show_bug.cgi?id=744909
2015-03-12 14:04:20 +00:00
Jan Schmidt
f150cf2d2e Remove a bunch of silly ';;' typos at the end of lines 2015-03-12 01:33:03 +11:00
Mathieu Duponchelle
bd70c73a8a dashdemux: implement get_presentation_offset.
To account for presentationTimeOffset as per section 7.2.1 .

https://bugzilla.gnome.org/show_bug.cgi?id=745455
2015-03-10 15:17:37 +01:00
Mathieu Duponchelle
793b4bca93 gstmpdparser: Really set the default value for startNumber.
+ The specs ask for a default of 1, the current code only did
 set a default when the field was present.

https://bugzilla.gnome.org/show_bug.cgi?id=745455
2015-03-10 15:17:37 +01:00
Nicolas Dufresne
2d5d2eabef glmixer: Don't share our downstream pool with upstream
Pool cannot have multiple owner. This can lead to spurious
pool was flushing error.

https://bugzilla.gnome.org/show_bug.cgi?id=74570
2015-03-06 20:12:09 -05:00
Nicolas Dufresne
fb4d769425 glimagesink: Only cache pool, don't manage it
GLImage does not use any kind of internal pool. There was some
remaining code and comment stating that it was managing the
pool, and it was in fact setting the active state when doing
to ready state.

* Only create the pool if requested and in propose_allocation
* Cache the pool to avoid reallocation on spurious reconfigure
* Don't try to deactivate the pool (we don't own it)

https://bugzilla.gnome.org/show_bug.cgi?id=745705
2015-03-06 19:25:16 -05:00
Sebastian Dröge
b81823e7db gl: Remove format info in glcolorconvert's transform_caps function instead of on every caller
... and let glmixer actually transform the caps it is supposed to transform
instead of inventing new caps.
2015-03-06 18:53:13 +01:00
Luis de Bethencourt
290508932e motioncells: protect against not found id
If searchIdx() doesn't find the id it returns -1, which breaks
motioncelssvector.at (idx). Check for it and return if not found.

Changing a few other lines for style consistency.
2015-03-05 15:56:44 +00:00
Luis de Bethencourt
632854eba3 opencv: remove always-true check
filter->cvImage has just been used/dereferenced, there would be an error
there if the pointer was NULL. No need to check since it will always be true.
2015-03-05 15:34:32 +00:00
Vincent Penquerc'h
b9c521c0ec opusdec: fix latency query in FEC case
The max latency parameter is "the maximum time an element
synchronizing to the clock is allowed to wait for receiving all
data for the current running time" (docs/design/part-latency.txt).

https://bugzilla.gnome.org/show_bug.cgi?id=744338
2015-03-04 11:04:29 +00:00
Thiago Santos
87f8d7890c hlsdemux: set timestamp on discont buffers
Make sure discont buffers have its timestamp set to allow downstream
to resync if needed
2015-03-04 08:00:48 -03:00
Nicolas Dufresne
eff94f929d gloverlay: Fix upside down and miss-aligned JPEG
LibJPEG uses macroblock of 8x8 sample. In this element we use RGB and
Y444, two 24bit formats that are stored in 32bit pixels. This mean we
have 32x32 bytes macroblocks. For this reason, we need to allocate
our buffer slightly larger. We also need to pass the line pointer in
the right order, otherwise the image endup upside-down.

https://bugzilla.gnome.org/show_bug.cgi?id=745109
2015-03-03 15:26:13 -05:00
Xavier Claessens
128c2a141a gltransformation: normalize translations
https://bugzilla.gnome.org/show_bug.cgi?id=744763

* Lubosz: use maxfloat for transformation range
2015-03-03 14:05:21 -05:00
Xavier Claessens
80f97eaee7 gltransformation: Fix doc typo
https://bugzilla.gnome.org/show_bug.cgi?id=744763
2015-03-03 14:05:21 -05:00
Luis de Bethencourt
dc79b8d761 waylandsink: g_mkstemp is safer than mkstep 2015-03-03 16:53:32 +00:00
Luis de Bethencourt
bed7a679b5 Revert "waylandsink: mkstemp requires setting permission mask"
This reverts commit 1890e7355a.

Better to use g_mkstemp that takes care of the mask without affecting the
entire process.
2015-03-03 16:51:49 +00:00
Luis de Bethencourt
1890e7355a waylandsink: mkstemp requires setting permission mask
Using mkstemp without setting the permission mask is potentially harmful.
POSIX specification of mkstemp() does not say anything about file modes, so we
need to make sure its file mode creation mask is set appropriately before
calling it.
2015-03-03 15:51:55 +00:00
Nicolas Dufresne
b8f168cd65 glmemory: Add GstAllocationParams and alignment support
This implements support for GstAllocationParams and memory alignments.
The parameters where simply ignored which could lead to crash on
certain platform when used with libav and no luck.

https://bugzilla.gnome.org/show_bug.cgi?id=744246
2015-02-28 14:32:39 -05:00
Nicolas Dufresne
c20c6cfb92 opengl: Clean Makefile.am
+ Split headers from source
+ Remove uneeded AM_CFLAGS, AM_LDFLAGS
+ Always set OBJCFLAGS

Due to the presence of a .m and regardless of the conditional values,
automake will promote the link command to OBJC using OBJCFLAGS. Only
the basic flags (like warnings and optimization) are going to make a
difference though.

This cleanup builds up the makefile with less specific files first
toward more specific file. FLAGS are built with the basic that unused
flags will have empty variable.
2015-02-24 19:01:45 -05:00
Xavier Claessens
e25f4f1a60 glimagesink: cosmetic cleanup
https://bugzilla.gnome.org/show_bug.cgi?id=745105
2015-02-24 15:22:34 -05:00
Tim-Philipp Müller
004e910006 opengl: don't add --tag=CC twice to LIBTOOLFLAGS 2015-02-24 19:52:59 +00:00
Nicolas Dufresne
0feaeb38f9 opengl: Add --tag=CC to LIBTOOLCLFAGS
This is required for static build.
2015-02-24 14:35:37 -05:00
Luis de Bethencourt
65e5f68437 modplug: remove unused variable 2015-02-24 14:01:18 +00:00
Luis de Bethencourt
9078702b52 modplug: not using deprecated API anymore 2015-02-24 14:01:18 +00:00
Luis de Bethencourt
4d6b9c450d modplug: update example pipeline command 2015-02-24 14:01:18 +00:00
Matthew Waters
e3ec517838 caopengllayersink: render black when we don't have a texture to display
Like when the winsys asks us to redraw before the pipeline has started
2015-02-25 00:03:28 +11:00
Matthew Waters
021bfa99a1 new caopengllayersink element
renders gstreamer gl scene/video frames to a caopengllayer retreivable
from the "layer" property.
2015-02-24 19:12:10 +11:00
Julien Isorce
5fa0595046 glmixer: fix some compiler warnings
i686-apple-darwin11-llvm-gcc-4.2

gstglmixer.h:43: error: redefinition of typedef ‘GstGLMixer’
gstglmixerpad.h:32: error: previous declaration of ‘GstGLMixer’ was here
gstglmixer.h:46: error: redefinition of typedef ‘GstGLMixerFrameData’
gstglmixerpad.h:33: error: previous declaration of ‘GstGLMixerFrameData’ was here
2015-02-22 10:34:05 +00:00
Alex Ashley
a08dd85608 hlsdemux: select correct starting position for live streams
When playing live HLS streams, the media playback starts from the
beginning of the media playlist. When playing a live HLS stream,
media playback should start from 3 fragments from the end of the
playlist.

See section 6.3.3. of the HLS draft [1]

This commit changes the logic to select 3 fragments from the end when
playing a live stream.

[1] http://tools.ietf.org/html/draft-pantos-http-live-streaming-12#page-29

https://bugzilla.gnome.org/show_bug.cgi?id=727742
2015-02-20 19:00:01 -03:00
Guillaume Seguin
b75f64d72e hlssink: reduce playlist's EXT-X-VERSION to 3
We are not using any features greater than the 3rd version,
so reduce to what we actually use to make it compatible with
more players

https://bugzilla.gnome.org/show_bug.cgi?id=744689
2015-02-19 12:17:21 -03:00
Vincent Penquerc'h
0e809604f5 rtpopuspay: default encoding name to OPUS
https://bugzilla.gnome.org/show_bug.cgi?id=737810
2015-02-19 14:30:10 +00:00
Vincent Penquerc'h
e05135aae5 rtpopuspay: make caps writable before truncating them
https://bugzilla.gnome.org/show_bug.cgi?id=737810
2015-02-19 14:05:06 +00:00
Vincent Penquerc'h
3be7d0748a rtpopuspay: negotiate the encoding name
Chrome uses a different encoding name that gstreamer.

https://bugzilla.gnome.org/show_bug.cgi?id=737810
2015-02-19 13:53:54 +00:00
Sebastian Dröge
1bd7b4566e rsninputselector: Fail the latency query if one of the upstream queries fails 2015-02-19 01:28:30 +02:00
Nicolas Dufresne
4ea15b1b3f gltransform: Fix includes of graphene headers
The graphene-1.0 part should not be in the source code. This directory
is part of the cflags include. This is similar to gstreamer-1.0/
directory. This break compilation if the include directory where
graphene is installed is not in your include path.
2015-02-18 17:15:01 -05:00
Sebastian Dröge
0a20954769 opusenc: Remove g_warnings() for the deprecated audio property
Otherwise there are g_warnings() already when just using gst-inspect or
dumping a pipeline graph.
2015-02-18 17:47:50 +02:00
Thiago Santos
81b555838a dashdemux: protect against malformed isombff format
Be more careful around malformed mpds that announce using
isombff profile but actually are regular mpds
2015-02-18 08:19:59 -03:00
Thiago Santos
f79d9522c5 hlsdemux: remove unused define 2015-02-17 11:53:49 -03:00
Thiago Santos
2526c7b286 mssdemux: use correct function to clear fragment info
Just freeing the url won't reset the byte ranges and can lead to wrong
ranges being used.
2015-02-17 11:41:27 -03:00
Thiago Santos
a48a361256 dashdemux: depracate bandwidth-usage in favor of bitrate-limit
Bitrate-limit is already available in the baseclass and, even though
the bandwidth-usage name is better, hls and mss already used
bitrate-limit. This patch deprecates the bandwidth-usage and maps
it to the baseclass bitrate-limite.
2015-02-17 11:12:42 -03:00
Thiago Santos
f7a1649c77 adaptivedemux: add bitrate-limit property
Move the property from subclasses to adaptivedemux, it allows
selecing the percentage of the measured bitrate to be used when
selecting stream bitrates
2015-02-17 11:12:42 -03:00
Thiago Santos
00bdac51a3 hlssink: allow creation of 'infinite' playlist
Allow the playlist-length to accept '0' as a value, indicating
that no segment should be removed from the playlist. This allows
generating playlists to be used as VOD when complete.
2015-02-17 11:12:42 -03:00
Thiago Santos
6ec5904d46 hlssink: remove unused attribute
the GFile attribute is never used
2015-02-17 11:12:41 -03:00
Thiago Santos
e9ab79dc36 adaptivedemux: add connection-speed property
Allows to set a bitrate directly instead of measuring it internally
based on the received chunks. The connection-speed was removed from
mssdemux and hlsdemux as it is now in the base class
2015-02-17 11:12:41 -03:00
Mathieu Duponchelle
7ca6d9634a dashdemux: Fix handling of live streams with timeshift buffers.
By implementing get_live_seek_range.

As shown by :

gst-validate-1.0 playbin \
uri=http://dev-iplatforms.kw.bbc.co.uk/dash/news24-avc3/news24.php

This patch handles live seeking, by setting a live seek range
comprised between now - timeShiftBufferDepth and now.

The inteersting thing with this stream is that one can actually
ask fragments up to availabilityStartTime, but it seems quite clear
in the spec that content is only guaranteed to exist up to
timeShiftBufferDepth.

One can test live seeking this way :

gst-validate-1.0 playbin \
uri=http://dev-iplatforms.kw.bbc.co.uk/dash/news24-avc3/news24.php \
--set-scenario seek_back.scenario

with scenario being:

description, seek=true
seek, playback-time=position+5.0, start="position-600.0",
flags=accurate+flush

This example will play the stream, wait for five seconds, then seek back
to a position 10 minutes earlier.

https://bugzilla.gnome.org/show_bug.cgi?id=744362
2015-02-12 22:47:26 +01:00
Edward Hervey
43464aa204 glimagesink: Fix debug statement 2015-02-12 17:34:10 +01:00
Edward Hervey
638f99a37a glimagesink: Sprinkle more debug 2015-02-12 15:57:55 +01:00
Thiago Santos
cb94de5d2f dashdemux: set proper stream type to streams
strncmp returns 0 when it compares equal and not a
boolean
2015-02-12 11:16:25 -03:00
Sebastian Dröge
767fefafb3 x265enc: Add support for 10bit 4:2:0 and 4:4:4 formats 2015-02-11 14:44:16 +01:00
Sebastian Dröge
037928dcf6 Improve and fix LATENCY query handling
This now follows the design docs everywhere, especially the maximum latency
handling.

https://bugzilla.gnome.org/show_bug.cgi?id=744106
2015-02-11 14:16:21 +01:00
Jan Schmidt
52166768ed resindvd: Don't send meaningless segment position downstream
Don't place a meaningless value in the position field in
outgoing segments - values have to be in the range start->stop.

https://bugzilla.gnome.org/show_bug.cgi?id=740558
2015-02-08 06:16:12 +11:00
Thiago Santos
62309fbfa0 faac: relace parsed with framed in aac caps
For AAC it should always be 'framed' and not 'parsed'
2015-02-05 13:31:18 -03:00
Thiago Santos
759ee44988 faac: fix output caps to negotiate with some muxers
Add parsed/framed=true to allow negotiation with some
muxers that required parsed input. Encoders already provide
parsed/framed output so it should say so in caps.
2015-02-05 13:10:16 -03:00
Matthew Waters
4f15cc8d3c glimagesink: log the converted caps 2015-02-05 11:07:19 +11:00
Luis de Bethencourt
3656e0248a motioncells: initialize class variables
Some variables are not initialized in the constructor. It is highly unlikely
they are used before being set, but it is safer to initialize them.

CID #1197704
2015-02-04 11:52:26 +00:00
Matthew Waters
c1ad8d776a gl: remove the egl caps from the src pads
we don't actually support producing EGLImage buffers anywhere.
2015-02-03 15:30:08 +11:00
Matthew Waters
e7a10a2d44 glcolorconvert: put GstGLSyncMeta on output buffers
allows thread safely using the provided output buffer in a separate
thread
2015-02-03 14:32:55 +11:00
Matthew Waters
c06715bde6 glupload/download/convert: provide transform_caps functions
Allows finer grain decisions about formats and features at each
stage of the pipeline.
Also provide propose_allocation for glupload besed on the supported
methods.
2015-02-03 14:32:55 +11:00
Matthew Waters
c827d1f804 glimagesink: clobber the alpha channel by default
this can be disabled with the ignore-alpha property
2015-01-30 15:54:05 +11:00
Alessandro Decina
5f547c5600 gl: initial support for texture targets other than GL_TEXTURE_2D
Make GstGLMemory hold the texture target (tex_target) the texture it represents
(tex_id) is bound to. Modify gst_gl_memory_wrapped_texture and
gst_gl_download_perform_with_data to take the texture target as an argument.

This change is needed to support wrapping textures created outside libgstgl,
which might be bound to a target other than GL_TEXTURE_2D. For example on OSX
textures coming from VideoToolbox have target GL_TEXTURE_RECTANGLE.

With this change we still keep (and sometimes imply) GL_TEXTURE_2D as the
target of textures created with libgstgl.

API: modify GstGLMemory
API: modify gst_gl_memory_wrapped_texture
API: gst_gl_download_perform_with_data
2015-01-30 00:34:08 +11:00
Vincent Penquerc'h
5c44bceeb3 opusenc: change audio property to audio-type
This is now an enum with values generic (default) and voice.

https://bugzilla.gnome.org/show_bug.cgi?id=740891
2015-01-29 13:23:57 +00:00
Matthew Waters
6cf97eb221 glwindow: make showing a window explicit
Also fixes the cgl context always displaying a window to render to for
every GstGLContextCocoa created
2015-01-29 22:26:37 +11:00
Thiago Santos
85bb450a44 dashdemux: use audio_%02u and video_%02u names for pads
Instead of using the default ghostpad%u naming. The audio_/video_
names are more common in demuxers
2015-01-26 18:03:40 -03:00
Edward Hervey
2b59d8ab7c waylandsink: Free leaked GstStructure
Coverity CID : 1256565
2015-01-23 12:44:22 +01:00
Edward Hervey
88038884a8 gltestsrc: Ensure variable is initialized before usage
Coverity CID: 1256569
2015-01-23 12:41:29 +01:00
Matthew Waters
ab48bb6f0f glwindow: remove width/height from _draw()
Depending on the platform, it was only ever implemented to 1) set a
default surface size, 2) resize based on the video frame or 3) nothing.
Instead, provide a set_preferred_size () that elements/applications
can use to request a certain size which may be ignored for
videooverlay/other cases.
2015-01-23 16:11:31 +11:00
Arun Raghavan
561cab9003 openh264: Implement the preset interface
Will be useful when we want to set presets on the encoder via encodebin
or such.
2015-01-22 11:07:49 +05:30
Sebastian Dröge
80e02cbdf9 Constify some static arrays everywhere 2015-01-21 10:18:50 +01:00
Thiago Santos
229a15b393 adaptivedemux: refactor chunk downloading flow
Add more power to the chunk_received function (renamed to data_received)
and also to the fragment_finish function.

The data_received function must parse/decrypt the data if necessary and
also push it using the new push_buffer function that is exposed now. The
default implementation gets data from the stream adapter (all available)
and pushes it.

The fragment_finish function must also advance the fragment. The default
implementation only advances the fragment.

This allows the subsegment handling in dashdemux to continuously download
the same file from the server instead of stopping at every subsegment
boundary and starting a new request
2015-01-19 15:30:04 -03:00
Thiago Santos
3b920131f0 dashdemux: add log message about segment time information
For debugging purposes
2015-01-19 08:37:59 -03:00
Sebastian Dröge
cd3930969a dashdemux: Fix compiler warning with clang
gstdashdemux.c:1330:13: error: implicit conversion from enumeration type 'enum _GstAdaptiveDemuxFlowReturn' to different enumeration type
      'GstFlowReturn' [-Werror,-Wenum-conversion]
      ret = GST_ADAPTIVE_DEMUX_FLOW_SUBSEGMENT_END;
          ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2015-01-19 11:23:52 +01:00
Nicola Murino
907e02cfa9 glimagesink: fix memleak
https://bugzilla.gnome.org/show_bug.cgi?id=743142
2015-01-19 14:33:02 +11:00
Tim-Philipp Müller
e694bddf56 Remove libgmyth-based MythTV source element which was never ported
gmyth seems to be unmaintained upstream, and no one has asked
for this to be ported for a very long time, so let's just
remove it. Neither debian nor Fedora seem to ship libgmyth
any longer, and in any case it's most likely deprecated by
the UPnP support in MythTV.
2015-01-18 17:15:00 +00:00
David Waring
6dca8f5cce dashdemux: Fix detection for the end of segment.
The segment start time is calculated as the offset into the current segment.
The old condition to detect the end of period (i.e. segment start time >
period start + period duration) failed when the period start was not 0 since
the segment start time does not take the period start time into account.
Fix this detection by only comparing the segment start to the period duration.

https://bugzilla.gnome.org/show_bug.cgi?id=733369
2015-01-16 17:07:22 -03:00
Thiago Santos
fb760a563c dashdemux: remove unused segment attribute
It was never used, only initialized
2015-01-16 17:07:22 -03:00
Thiago Santos
3055bb331a dashdemux: implement ISOBMFF profile handling
The ISOBMFF profile allows definind subsegments in a segment. At those
subsegment boundaries the client can switch from one representation to
another as they have aligned indexes.

To handle those the 'sidx' index is parsed from the stream and the
entries point to pts/offset of the samples in the stream. Knowing that
the entries are aligned in the different representation allows the client
to switch mid fragment. In this profile a single fragment is used per
representation and the subsegments are contained in this fragment.

To notify the superclass about the subsegment boundary the chunk_received
function returns a special flow return that indicates that. In this case,
the super class will check if a more suitable bitrate is available and will
change to the same subsegment in this new representation.

It also requires special handling of the position in the stream as the
fragment advancing is now done by incrementing the index of the subsegment.
It will only advance to the next fragment once all subsegments have been
downloaded.

https://bugzilla.gnome.org/show_bug.cgi?id=741248
2015-01-16 17:07:05 -03:00
Thiago Santos
f5b98f24c2 dashdemux: parse the sidx index from isobmff streams
Allows dashdemux to identify the subsegments in the stream and
switch bitrates when needed
2015-01-16 15:00:11 -03:00
Thiago Santos
b40e5decb2 dashdemux: check for profiles
Check for available profiles to enable certain features for
dash playback. For now we check for the ISOFF On Demand 2011 profile.
2015-01-16 15:00:11 -03:00
Vincent Penquerc'h
d1e8b88eaa hlsdemux: remove unused fragments_cache field 2015-01-16 11:43:22 +00:00
Vincent Penquerc'h
b5860af143 hlsdemux: a few leak fixes 2015-01-16 11:43:22 +00:00
Stefan Sauer
b533ad8502 bs2b: implement the preset interface
Instead of a preset property implement the preset interface in a read-only
fashion.
2015-01-15 19:59:03 +01:00
Christoph Reiter
75f8cca325 bs2b: add new plugin (Effect/Audio, crossfeed)
https://bugzilla.gnome.org/show_bug.cgi?id=611689
2015-01-15 19:59:03 +01:00
Matthew Waters
39e6f621b3 glvideomixer: don't upload if alpha <= 0
Implemented using a upload_buffer vfunc within GstGLMixer allowing
NULL uploaded buffers.
2015-01-15 09:50:02 +11:00
Matthew Waters
d5c3693791 gl: split glcolorconvert usage from glupload
the separation allows the transfer operation to occur in a separate
thread/time which may increase performance in specific circumstances.
2015-01-14 22:22:13 +11:00
Zaheer Abbas Merali
3a4d988a29 Revert "Revert "openh264: fix to work with released versions and master of upstream""
This reverts commit 329f0ccba1.
2015-01-13 11:32:03 -08:00
Zaheer Abbas Merali
21b7ce5504 openh264: remove all trace output to console from encoder 2015-01-13 11:31:21 -08:00
Tim-Philipp Müller
9aaf12aae0 mpg123: fix compiler warning and simplify checks in set_caps
https://bugzilla.gnome.org/show_bug.cgi?id=740195
2015-01-11 14:21:48 +00:00
Carlos Rafael Giani
ece6426810 mpg123: rework set_format code so mpg123audiodec works with decodebin/playbin
The old code was using gst_caps_normalize() and was generally overly
complex. Simplify by picking sample rate and number of channels from
upstream and the sample format from the allowed caps. If the format caps
is a list of strins, just pick the first one. And if the srcpad isn't
linked yet, use the default format (S16).

https://bugzilla.gnome.org/show_bug.cgi?id=740195
2015-01-11 14:21:25 +00:00
Thiago Santos
d310c0c460 hlsdemux: cache current file position in the list
Avoids iterating the list everytime to look for the next segment
to be used (or to advance to the next one).
2015-01-08 17:55:33 -03:00
Thiago Santos
308b2e5aaf hlsdemux: simplify next segment checking functions
Optimize loop by moving condition outside of it and reuse the
find_next_fragment function to check if there is next instead of
replicating the same loop
2015-01-08 17:55:33 -03:00
Thiago Santos
e21abb62e0 hlsdemux: cache total duration to avoid iterating at every query
Duration queries can be done a few times per second and would cause
the segment list to be traversed for every one. Caching the duration
prevents that.
2015-01-08 17:55:33 -03:00
Luis de Bethencourt
9dcf650a17 hlsdemux: g_return_if_fail in function with return type
Need to use g_return_val_if_fail() when the function returns a type, in this
case a gboolean
2015-01-08 15:54:18 +00:00
Thiago Santos
dd7cb8f632 hlsdemux: implement _has_next_fragment to avoid busy looping
It will allow the demuxer to wait for a fragment to be available instead
of busy looping polling the playlist for a new fragment
2015-01-08 09:59:01 -03:00
Luis de Bethencourt
1e287b6fd7 handdetect: remove unneeded check
Variable hands is already checked to contain a value previously at the beginning
of the current block (in line 504). There is no need to check again. This is
logically dead code.

CID 1197693
2015-01-07 16:32:49 +00:00
Thiago Santos
3a6c2b6b67 hlsdemux: remove duplicate call to uri_join 2015-01-07 10:23:31 -03:00
Thiago Santos
3e9b89111a hlsdemux: skip checking '#EXT-X-' token for all entries
Put this common check before to avoid repeating it for all possible
entries to save some cycles
2015-01-07 09:39:56 -03:00
Thiago Santos
c79e8a78ac hlsdemux: avoid using g_list_append for creating segments list
Use g_list_prepend and reverse it at the end to skip traversing the
same list for every new segment
2015-01-07 09:30:40 -03:00
Thomas Bluemel
cd6069f5af hlsdemux: Don't use approximate duration for fragment buffer pts
The duration values in playlists are approximate only, and for
playlist versions 2 and older they are only rounded integer values.
They cannot be used to timestamp buffers.  This resulted in playback
gaps and skips because the actual duration of fragments is slightly
different.  The solution is to only set the pts of the very first
buffer processed, not for each fragment.
2015-01-07 09:30:40 -03:00
Rajat Verma
de246c6741 mssdemux: fix crash while setting bitrate in caps structure
q->bitrate is a guint64, but G_TYPE_INT may read fewer bits
off the stack, and if we pass more then the NULL sentinel
may not be found at the right place, which in turn might
lead to crashes.

https://bugzilla.gnome.org/show_bug.cgi?id=741751
2015-01-07 10:08:20 +00:00
Alex Ashley
50b5d94b2a hlsdemux: Implement live seeking
hlsdemux assumes that seeking is not allowed for live streams,
however seek is possible if there are sufficient fragments in the
manifest. For example the BBC have live streams that contain 2 hours
of fragments.

The seek code for both live and on-demand is common code. The
difference between them is that an offset has to be calculated
for the timecode of the first fragment in the live playlist.

When hlsdemux starts to play a live stream, the possible seek range
is between 0 and A seconds. After some time has passed, the beginning of
the stream will no longer be available in the playlist and the seek
range is between B and C seconds.

Seek range:
start          0 ........... A
later               B ........... C

This commit adds code to keep a note of the B and C values
and the highest sequence number it has seen. Every time it updates the
media playlist, it walks the list of fragments, seeing if there is a
fragment with sequence number > highest_seen_sequence. If so, the values
of B and C are updated. The value of B is used when timestamping
buffers.

It also makes sure the seek range is never closer than three fragments
from the end of the playlist - see 6.3.3. "Playing the Playlist file"
of the HLS draft.

https://bugzilla.gnome.org/show_bug.cgi?id=725435
2015-01-05 17:59:08 -03:00
Tim-Philipp Müller
4e6f8a76f0 glmixer, glvideomixer: update for GstAggregatorPadForeachFunc change 2014-12-30 19:43:43 +00:00
Tim-Philipp Müller
de5604483f glmixer: update for aggregator start/stop vfunc change 2014-12-30 19:26:47 +00:00
Thiago Santos
104bd7cf02 hlsdemux: only typefind when we have a minimum amount of data
For small amounts some data might be mistyped and it would cause
the pipeline to fail. For example if you have AAC inside mpegts,
for small amounts, the AAC samples would cause the typefinder to
think it is AAC and not mpegts.

https://bugzilla.gnome.org/show_bug.cgi?id=736061
2014-12-30 08:35:21 -03:00
Thiago Santos
afc392c47b dashdemux: do not try to ref null pointer
Playlists might be missing the availability start time, so check for
it before trying to ref the object
2014-12-29 11:39:22 -03:00
Thiago Santos
a862ba4b45 dashdemux: run gst-indent on mpdparser
Run gst-indent on mpdparser to have it stop complaining on every
commit
2014-12-29 11:39:22 -03:00
Nirbheek Chauhan
888b531940 glvideomixer: Point to compositor for the pad properties documentation 2014-12-27 11:05:17 +00:00
Vijay Jayaraman
68e77265a0 hlsdemux: typefind might fail if first buffer is too short
If typefind fails, check to see if the buffer is too short for typefind. If this is the case,
prepend the decrypted buffer to the pending buffer and try again the next time around.

https://bugzilla.gnome.org/show_bug.cgi?id=740458
2014-12-23 10:08:57 -03:00
Thiago Santos
1e9ce11efd hlsdemux: port to adaptive base class
Conflicts:
	ext/hls/gsthlsdemux.c
	ext/hls/gsthlsdemux.h
2014-12-23 10:08:57 -03:00
Nicolas Dufresne
9954de1ccd gl: Add support for GstVideoAlignment
This allow saving a copy with libav video decoders or decoders with
similar padding requirement.

https://bugzilla.gnome.org/show_bug.cgi?id=740900
2014-12-19 12:11:08 -05:00
Branko Subasic
f00d21aec5 curlsmtpsink: add final boundary to all multipart emails
Corrected the final boundary mechanism so that a final boundary is
added to each mail with multipart content that is sent,
not just to the last one.

https://bugzilla.gnome.org/show_bug.cgi?id=741553
2014-12-19 13:16:43 +00:00
Thiago Santos
77388f9d83 x265enc: reuse the gstvideo proxy getcaps
The caps query is implementing the same logic as the default
handler from the base class. Reuse it to simplify code.
2014-12-17 22:13:17 -03:00
Thiago Santos
4c883e4ad2 opusenc: plug ref leak of template caps
the pad template caps is already a new ref. No need to copy.
2014-12-17 22:13:17 -03:00
Wim Taymans
87f5574e39 rectangle: clear rectangle struct before use 2014-12-16 13:35:14 +01:00
Vincent Penquerc'h
79b56ebcc9 opusparse: fix frame size determination
https://bugzilla.gnome.org/show_bug.cgi?id=741321
2014-12-15 15:23:35 +00:00
Tim-Philipp Müller
329f0ccba1 Revert "openh264: fix to work with released versions and master of upstream"
This reverts commit 15394aa705.

The latest release (v1.1) does not have pkg-config support
yet, so this plugin won't be built with the latest release.
Cerbero uses the latest release, so this makes cerbero
builds fail, which expect the plugin to be built.

We can re-commit this once there's a release that includes
pkg-config support.
2014-12-12 20:58:49 +00:00
Zaheer Abbas Merali
15394aa705 openh264: fix to work with released versions and master of upstream 2014-12-12 10:05:23 -08:00
Matthew Waters
15fc4b9bbe glfiltercube: use a shader everywhere 2014-12-11 19:41:23 +11:00
Matthew Waters
f021549294 gl: fixup vao and vbo usage for legacy GL 2014-12-11 19:41:23 +11:00
Matthew Waters
1d324e259a gleffects: don't abort when setting the effect to 0,1,2 2014-12-11 19:41:23 +11:00
David Waring
1c0c6b6f48 dashdemux: Change period when setting by period id.
Make gst_mpd_client_set_period_id set the current period index when it finds a
period with a matching period id.

https://bugzilla.gnome.org/show_bug.cgi?id=741322
2014-12-10 16:22:31 -03:00
Thiago Santos
8b63a16af0 mssdemux: fix reverse playback fragment tracking
Rework reverse fragment traversing with repetition fields to prevent
NULL pointer deref and avoid never advancing a fragment as the variable
is unsigned and would always be non-negative.

CID #1257627
CID #1257628
2014-12-10 15:27:49 -03:00
David Waring
b03acbf584 dashdemux: Find current segment in the streams that have just been setup
Using demux->streams will just skip the whole loop as demux->streams will
always be NULL at that point

https://bugzilla.gnome.org/show_bug.cgi?id=741285
2014-12-09 21:08:10 -03:00
Thiago Santos
8c49c79d7e mssdemux: add live support
Implement the functions of adaptivedemux to have live support
enabled. This allows mssdemux to refresh the Manifest periodically
2014-12-04 19:52:33 -03:00
Thiago Santos
a105af22f2 mssdemux: fix getting current position in segments when after last one
For live streams this makes a difference when resyncing after a
Manifest refresh, otherwise it doesn't know where to restart
2014-12-04 14:28:25 -03:00
Thiago Santos
a2c31e38d1 mssdemux: support manifests with repetition fragments
Read the "r" attribute from fragments to support fragments nodes
that use repetition to have a shorter Manifest xml.

Instead of doing:
<c d="100" />
<c d="100" />

You can use:
<c d="100" r="2" />
2014-12-04 14:24:42 -03:00
Thiago Santos
b418c88b26 mssdemux: port to adaptivedemux base class 2014-12-04 14:24:42 -03:00
Flávio Ribeiro
c306e0dfa7 hlssink: remove unnecessary title on EXTINF tag
According to the HLS spec the remainder of the line following
the comma on EXTINF tag is not required. This patch removes
the fake title and saves some bytes on the playlist.

https://bugzilla.gnome.org/show_bug.cgi?id=741096
2014-12-04 17:52:08 +01:00
Ramprakash Jelari
26d99a6f3e gl: Rename gst-launch-0.10 to gst-launch-1.0 in docs 2014-12-04 16:25:57 +01:00
Thiago Santos
f48fa7e763 dashdemux: fix double unref of object
the datetime is already released by the end of the function
2014-12-02 15:52:54 -03:00
David Waring
95c3fdc193 dashdemux: Find the current period in a live stream
Start from the correct period on a live stream

https://bugzilla.gnome.org/show_bug.cgi?id=737421
2014-12-02 14:22:09 -03:00
David Waring
306ca0cdf6 dashdemux: Fix period selection for live streams
Fix period selection and properly error out when update cannot be done

https://bugzilla.gnome.org/show_bug.cgi?id=725298
2014-12-02 13:24:52 -03:00
Jürgen Slowack
c89844ec1e x265enc: add qp property
QP property enables CQP mode and sets the QP for P slices.
2014-12-01 12:14:20 +01:00
Thiago Santos
f04d351cd9 dashdemux: replace the streams with the new mpd client's streams
Otherwise it won't update with the new segment info from the playlist
update
2014-11-30 21:56:25 -03:00
Thiago Santos
28d66ea589 dashdemux: when updating the manifest, set the uri
This will allow dashdemux to create the correct full path URIs to
continue downloading fragments
2014-11-30 21:56:25 -03:00
Thiago Santos
58a1b0d058 dashdemux: port to adaptive demux 2014-11-30 21:56:25 -03:00
Matthew Waters
6361df77e8 glimagesink: properly handle the !opengl3 case
https://bugzilla.gnome.org/show_bug.cgi?id=740012
2014-11-30 00:44:46 +11:00
Tim-Philipp Müller
5299d683ee glfilterapp: fix unused variable compiler warning
When GST_GL_HAVE_OPENGL is 0 or unset.
2014-11-28 16:04:54 +00:00
Matthew Waters
26fc4e2bd5 glfilterapp is now available on gles2 as well so build it 2014-11-28 14:08:40 +11:00
Matthew Waters
820162f84c gl: fix typo in #if
GST_GL_API_HAVE_OPENGL doesn't exist
2014-11-28 11:04:22 +11:00
Matthew Waters
57898fec2a gl: fix various build errors without desktop gl 2014-11-28 10:59:46 +11:00
Matthew Waters
3c1e77eb31 gldisplay: implement runtime GL api filtering
Needed so that the pipeline/application can limit the choice of GL api
to what it supports
2014-11-28 09:14:26 +11:00
Matthew Waters
6bd1150ca8 gl: remove the use of glu 2014-11-28 09:14:26 +11:00
Matthew Waters
f2af65ee2d gl: add a sync meta for synchronizing across GL contexts
A context can create a GLsync object that can be waited on in order
to ensure that GL resources created in one context are able to be
used in another shared context without any chance of reading invalid
data.

This meta would be placed on buffers that are known to cross from
one context to another.  The receiving element would then wait
on the sync object to ensure that the data to be used is complete.
2014-11-28 09:14:25 +11:00
Matthew Waters
18ae2d35e9 glfilterapp: port to gles2 and gl3 2014-11-28 09:14:25 +11:00
Matthew Waters
1331cbc54e gloverlay: support gl3 2014-11-28 09:14:25 +11:00
Matthew Waters
45ac7be402 glvideomixer: add support for gl3 2014-11-28 09:14:25 +11:00
Matthew Waters
d661fb959e glfiltercube: add a gl3 code path 2014-11-28 09:14:25 +11:00
Matthew Waters
67762e8d58 glfiltershader: support gl3 2014-11-28 09:14:25 +11:00
Matthew Waters
3772c83f94 gltransformation: support gl3 2014-11-28 09:14:25 +11:00
Matthew Waters
dd80a40604 gleffects: support gl3 whereever gles2 is supported 2014-11-28 09:14:25 +11:00
Matthew Waters
f2d1f7dd0f glcolorscale: support gl3 2014-11-28 09:14:25 +11:00
Matthew Waters
f0d2346c52 glimagesink: use vbo's and vao's for gl3 2014-11-28 09:14:25 +11:00
Thibault Saunier
9d8055186d videoaggregator: Expose vmethods to set converters and prepare/clean frames
This gives more flexibility to the subclasses and permits to remove the
GstVideoAggregatorClass->disable_frame_conversion ugly API.

WARNING: This breaks the API as it removes the disable_frame_conversion
field

API:
  + GstVideoAggregatorClass->find_best_format
  + GstVideoAggregatorPadClass->set_format
  + GstVideoAggregatorPadClass->prepare_frame
  + GstVideoAggregatorPadClass->clean_frame

  - GstVideoAggregatorClass->disable_frame_conversion

https://bugzilla.gnome.org/show_bug.cgi?id=740768
2014-11-27 19:10:58 +01:00
Matthew Waters
a7ce611970 glimagesink: only attempt a resize when the window has already resized
fixes a black startup screen on wayland
2014-11-27 13:03:21 +11:00
Sebastian Dröge
9e700adf83 openh264enc: Use a fixed number of slices by default 2014-11-24 19:21:29 +01:00
Sebastian Dröge
c43b9aad66 openh264enc: Add some more encoding properties
Merged from https://github.com/EricssonResearch/openwebrtc-gst-plugins
based on a patchset by Robert Swain <robert.swain@ericsson.com>
2014-11-24 19:16:20 +01:00
Matthew Waters
810d38c29f glupload: rearchitecture for non GLMemory inputs/outputs
Allows other memory types to be implemented/returned/used by the caller.
2014-11-23 17:13:36 +11:00
Aleix Conchillo Flaqué
086cc58952 srtpdec: fix rtp/rtcp sink event memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=740451
2014-11-20 13:32:39 -05:00
Vineeth T M
47f3a1954e glimagesink: critical error while seek playback-test(stop state)
If we seek when media is in stop state, playback-test gives
critical error, since context of glimagesink is destroyed during stop.
But since context is not present, we need not handle send_event in glimagesink
Hence adding a condition to check if context is valid.

https://bugzilla.gnome.org/show_bug.cgi?id=740305
2014-11-20 15:39:42 +11:00
Matthew Waters
df12001781 glmixer: add read-only context property 2014-11-17 18:50:04 +11:00
Vincent Penquerc'h
cf9c73367d faad: set channel positions using the appropriate API
https://bugzilla.gnome.org/show_bug.cgi?id=731038
2014-11-12 14:23:10 +00:00
Sebastian Dröge
354fa3f2c9 openh264enc: Add new enable-frame-skip property and disable it by default
Otherwise e.g. videotestsrc ! openh264enc ! ... will drop every second frame
because otherwise the target bitrate can't be reached without loosing too
much quality.
2014-11-12 11:54:09 +01:00
Matthew Waters
5c48440c9a glimagesink: don't set the upload to NULL on the drain query
https://bugzilla.gnome.org/show_bug.cgi?id=732694
2014-11-12 11:44:43 +11:00
Julien Isorce
004a414b4a glimagesink: release stored buffers on drain query
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732694
2014-11-12 00:08:04 +00:00
Matthew Waters
36ade75f4a gl: remove the width/height fields from the caps to support frame resizing
It was previously only occuring with sysmem caps features

https://bugzilla.gnome.org/show_bug.cgi?id=739334
2014-11-11 14:23:55 +11:00
Matthieu Bouron
1d733eacf7 dashdemux: do not override last known stream error
https://bugzilla.gnome.org/show_bug.cgi?id=736141
2014-11-07 19:52:00 -03:00
Thiago Santos
613b110b25 mssdemux: seeks in the manifest never fail
Set void as the return and remove error handling as it could
never fail
2014-11-07 19:30:18 -03:00
Thiago Santos
39ba21619e dashdemux: make sure flushes have the same seqnum as the seek event
They are part of the same operation and should preserve the seqnum
2014-11-07 19:16:47 -03:00
Thiago Santos
e60bdc553c dashdemux: simplify seek to eos handling
Remove redundant flush stop pushing and remove a goto to make
the code flow simpler
2014-11-07 19:09:15 -03:00
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
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
Ognyan Tonchev
8b0030d044 waylandsink: do not leak buffer pool in error case
https://bugzilla.gnome.org/show_bug.cgi?id=736735
2014-09-17 09:43:58 +03:00
Ognyan Tonchev
66967bb203 gltestsrc: do not leak pool in error cases
https://bugzilla.gnome.org/show_bug.cgi?id=736730
2014-09-16 12:48:43 +03:00
Ognyan Tonchev
984bab0bd0 openni2src: do not leak pool
https://bugzilla.gnome.org/show_bug.cgi?id=736731
2014-09-16 12:48:25 +03:00
Ognyan Tonchev
31703f9ac3 glmixer: do not leak pool in error cases
https://bugzilla.gnome.org/show_bug.cgi?id=736729
2014-09-16 12:48:01 +03:00
Sebastian Dröge
6fc64ebf5d webpdec: Remove unused variable 2014-09-16 11:24:37 +03:00
Vineeth T M
3480f16e72 webpdec: modify wrong packetized mode logic
packetized mode is being set when framerate is being set
which is not correct. Changing the same by checking the
input segement format. If input segment is in TIME it is
Packetized, and if it is in BYTES it is not.

https://bugzilla.gnome.org/show_bug.cgi?id=736252
2014-09-16 11:24:18 +03:00
Sebastian Dröge
775c5600c9 hlsdemux: Also refetch the playlist after the first fragment failure
Previously we only refetched the playlist if downloading a fragment
has failed once. We should also do that if it failed a second or third time,
chances are that the playlist was updated now and contains new URIs.
2014-09-15 13:33:45 +03:00
Sebastian Dröge
1ce7d89868 dash: Actually retry 3 times as advertised instead of 2 2014-09-15 11:59:49 +03:00
Sebastian Dröge
d4a53a16dd hls: Actually retry 3 times as advertised instead of 2 2014-09-15 11:59:46 +03:00
Matthieu Bouron
bce21e7398 mssdemux: improve position detection when a download restart
Query other src pads before falling back to the position of the last
known pushed segment (which can be far ahead in time).

https://bugzilla.gnome.org/show_bug.cgi?id=736421
2014-09-11 18:25:19 -03:00
Matthieu Bouron
4ed7c7919a dashdemux: improve position detection when a download restart
Query other src pads before falling back to the position of the last
known pushed segment (which can be far ahead in time).

https://bugzilla.gnome.org/show_bug.cgi?id=736421
2014-09-11 18:25:19 -03:00
Tim-Philipp Müller
7b8bd35d18 Fix up one-element lists in template caps 2014-09-10 17:24:39 +01:00
Nicola Murino
3a0a4a8d70 facedetect: Add new property min-stddev
face detection will be performed only if image standard deviation is
greater that min-stddev. Default min-stddev is 0 for backward
compatibility. This property will avoid to perform face detection on
images with little changes improving cpu usage and reducing false
positives

https://bugzilla.gnome.org/show_bug.cgi?id=730510
2014-09-05 10:38:32 +03:00
Lubosz Sarnecki
f1b026c480 gltransformation: fix issues and expose mvp matrix
* aspect should not be 0 on init
* rename fovy to fov
* add mvp to properties as boxed graphene type
* fix transformation order. scale first
* clear color with 1.0 alpha

https://bugzilla.gnome.org/show_bug.cgi?id=734223
2014-09-05 09:39:34 +10:00
Sebastian Dröge
bda4eae1cc mssdemux: Don't send flush events to deactivated pads
https://bugzilla.gnome.org/show_bug.cgi?id=736012
2014-09-04 18:21:38 +03:00
Sebastian Dröge
51a9e13bf2 dashdemux: Don't send flush events to deactivated pads
https://bugzilla.gnome.org/show_bug.cgi?id=736012
2014-09-04 18:21:25 +03:00
Sebastian Dröge
f6c6d9c280 hlsdemux: Don't send flush events to deactivated pads
https://bugzilla.gnome.org/show_bug.cgi?id=736012
2014-09-04 18:20:58 +03:00
Sebastian Dröge
46b0310acd hlsdemux: Properly assign offsets to the files if we accumulate them instead of reading from the playlist 2014-09-04 17:49:23 +03:00
Tim-Philipp Müller
cd325defca assrender: remove code that can't be reached
If this code could ever be reached, it would leak
memory (CID 1231979), but gst_caps_get_features()
never returns NULL, so that can't happen.
2014-08-29 19:26:40 +01:00
Sebastian Dröge
e4b084acd9 glimagesink: Add missing break to switch
CID 1232801
2014-08-28 16:42:30 +03:00
Thomas Bluemel
04ca723461 hlsdemux: Support OpenSSL for AES decryption of HLS fragments
https://bugzilla.gnome.org//show_bug.cgi?id=735248
2014-08-28 10:34:55 +03:00
Tim-Philipp Müller
8a7079dda9 sndfile: don't decode formats that are better handled by other elements
In particular: flac, ogg, pcm, au, aiff, wav.

https://bugzilla.gnome.org/show_bug.cgi?id=722316
2014-08-25 12:22:44 +01:00
Youness Alaoui
3c80396424 srtpdec: Add support for RTP/RTCP mixing if data arrives on RTCP pad
https://bugzilla.gnome.org/show_bug.cgi?id=734321
2014-08-21 18:45:19 -04:00
Tim-Philipp Müller
334a71506c dashdemux: fix abort in error code path with newer glib
Don't forget to unlock mpd client again when erroring out.
Fixes abort when g_mutex_clear() is called on a locked mutex.
2014-08-21 16:25:55 +01:00
Lubosz Sarnecki
ddaaff3376 glimagesink: expose context
* expose context in draw / reshape callbacks
* add context property

https://bugzilla.gnome.org/show_bug.cgi?id=734482
2014-08-21 17:38:57 +10:00
Thiago Santos
1cabb3b5a5 dashdemux: unref pad reference when removing internal source in error
Avoids leaking the pad in error situations
2014-08-19 17:17:33 -03:00
Thiago Santos
4afa05e567 dashdemux: read language from ContentComponent node as a fallback
If the language is not specified in the AdaptationSet, use the ContentComponent
node to get it. We only get it if there is only a single ContentComponent as
it doesn't seem clear on what to do if there are multiple entries

https://bugzilla.gnome.org/show_bug.cgi?id=732237
2014-08-19 16:02:52 -03:00
Matthieu Bouron
82fdb3aefc dashdemux: push language code tag
Language code tag is retrieved from the AdaptationSet language
property.

https://bugzilla.gnome.org/show_bug.cgi?id=732237
2014-08-19 15:34:01 -03:00
Matthew Waters
30ddb384ab glmixer: unref the GstGLUpload in the pad if freed while running
Dynamic pipelines that get and release the sink pads will finalize
the pad without going through gst_gl_mixer_stop() which is where the
upload object is usually freed.  Don't leak objects in such case.
2014-08-19 17:01:36 +10:00
Wang Xin-yu (王昕宇)
98152017b7 glvideomixer: avoid gl resource race condition between different thread
https://bugzilla.gnome.org/show_bug.cgi?id=734830
2014-08-19 17:00:58 +10:00
Matthew Waters
0b0c116327 glvideomixer: don't clobber unnecessary GstVideoInfo fields
otherwise we might clobber other important fields such as the frame rate.
2014-08-19 14:44:29 +10:00
Matthew Waters
510a016c88 glvideomixer: get the attribute from the correct shader 2014-08-19 14:43:42 +10:00
Matthew Waters
c6706adfcc glimagesink: unref the window on navigation event
plugs a memory leak
2014-08-19 14:24:02 +10:00
Thibault Saunier
16201cec34 hlsdemux: Do not switch playlist on trick modes
Instead always use the low bandwith playlist making things go smoother
as the current heuristic is rather set for normal playback, and
currently it does not behave properly.

https://bugzilla.gnome.org/show_bug.cgi?id=734445
2014-08-13 17:49:12 +02:00
Thibault Saunier
123953d429 hlsdemux: No need to have a I-Frame list to do trick modes
It just works cleanly without any index and there is no real reason for
that limitation. Also, there are very few stream with that feature.

https://bugzilla.gnome.org/show_bug.cgi?id=734445
2014-08-13 17:49:05 +02:00
Valentin PONS
03b70aecec facedetect: Use NULL to disable eyes/nose/mouth
Without printing a warning about it

https://bugzilla.gnome.org/show_bug.cgi?id=734623
2014-08-13 12:31:17 -03:00
Thiago Santos
7863be66ed assrender: save a few ref/unref pairs
The event/query functions already have a reference to the element, avoid
ref/unref in the functions handling caps queries and events.
2014-08-11 12:32:04 -03:00
Thiago Santos
0b67f872dc assrender: remove obsolete fixme 2014-08-11 12:31:17 -03:00
Thiago Santos
33c2372ae3 assrender: improve negotiation
Check if downstream supports overlay meta, if possible use it and
if not fallback to no-overlay caps

https://bugzilla.gnome.org/show_bug.cgi?id=733916
2014-08-11 12:22:44 -03:00
Thiago Santos
7895d88369 assrender: always intersect with the filter caps
Avoids returning values that peers can't use

https://bugzilla.gnome.org/show_bug.cgi?id=733916
2014-08-11 12:21:28 -03:00
Sreerenj Balachandran
b9105792da webenc: Add WebP image encoder
https://bugzilla.gnome.org/show_bug.cgi?id=733087
2014-08-11 16:24:48 +03:00
Sebastian Rasmussen
4482ce3423 sbcenc: Unref output caps in error cases
gst_caps_intersect() returns a reference to a caps object which in
the normal case is consumed, but in error cases must be unreferenced.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734521
2014-08-11 15:32:28 +03:00
Sebastian Rasmussen
a9493a3985 opusenc: Unref pad template caps after usage
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734517
2014-08-11 15:31:45 +03:00
Tim-Philipp Müller
c81a2d1c6c opengl: update element docs for 1.x 2014-08-10 18:07:28 +01:00
Sebastian Rasmussen
b53433fbbf openal: Unref pad template caps after usage
https://bugzilla.gnome.org/show_bug.cgi?id=734520
2014-08-10 12:38:57 +01:00
Tim-Philipp Müller
2f8e528f37 ladspa: fix up broken patch merge
Sorry, should've been commit --amend
2014-08-10 12:29:04 +01:00
Sebastian Rasmussen
4dde567480 ladspa: Unref pad template caps after usage
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734519
2014-08-10 11:49:53 +01:00
Sebastian Rasmussen
9b7314cb6c ladspa: Unref pad template caps after usage
https://bugzilla.gnome.org/show_bug.cgi?id=734519
2014-08-10 11:47:17 +01:00
Sebastian Rasmussen
1b56e80147 dfbvideosink: Unref pad template caps after usage
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734518
2014-08-10 11:45:30 +01:00
Sebastian Rasmussen
961a704a74 gstgsmenc: Unref caps object after usage
gst_audio_encoder_set_output_format() does not consume caps, so
unreference that object instead.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734544
2014-08-10 11:26:51 +01:00
Sebastian Rasmussen
e30f4a2851 opus: Improve annotation of internal function
https://bugzilla.gnome.org/show_bug.cgi?id=734543
2014-08-10 11:26:17 +01:00
George Kiagiadakis
ea90ceac01 dashdemux: support downloading segments in reverse order
When a seek with a negative rate is requested, find the target
segment where gstsegment.stop belongs in and then download from
this segment backwards until the first segment.

This allows proper reverse playback.
2014-08-07 16:52:37 +03:00
Matthew Waters
dab074899e glvideomixer: add a background property
That's compatible with the compositor/videomixer property

https://bugzilla.gnome.org/show_bug.cgi?id=731954
2014-08-07 19:21:02 +10:00
Thibault Saunier
0e67c13d2f ext:faad: Set rank to SECONDARY as the libav decoder is concidered better
https://bugzilla.gnome.org/show_bug.cgi?id=676131
2014-08-07 09:23:41 +02:00
Vasilis Liaskovitis
4dacc4ba55 GstGLWindow, GstGLImagesink, x11: Scale navigation events on resized windows
If window is resized, GstStructure pointer values have to be rescaled to
original geometry. A get_surface_dimensions GLWindow class method is added for
this purpose and used in the navigation send_event function.

https://bugzilla.gnome.org/show_bug.cgi?id=703486
2014-08-07 13:55:02 +10:00
Thiago Santos
24815a5feb dashdemux: return the error to the source immediately to stop faster
When flushing, this will prevent dashdemux from trying to download more
fragments or more chunks of the same fragment before stopping.

Also improves the error handling to not transform everything non-ok into
an error.

https://bugzilla.gnome.org/show_bug.cgi?id=734014
2014-08-01 10:37:15 -03:00
Matthew Waters
707cb58004 gl: document GST_GL_* environment variables
https://bugzilla.gnome.org/show_bug.cgi?id=733245
2014-08-01 16:43:47 +10:00
Robert Jobbagy
bd3cefeecc faceblur: facedetect: add properties to faceblur
Makes faceblur have the same properties as facedetect. Also improves
the standard defaults and makes them the same in the 2 elements
2014-07-30 16:43:10 -03:00
Robert Jobbagy
43a4498569 faceblur: post message when profile loading fails 2014-07-30 16:43:10 -03:00
Robert Jobbagy
555d29681b facedetect: faceblur: update launch line examples
Reflect 1.0 and more useful examples
2014-07-30 16:43:10 -03:00
Matthew Waters
13960f0043 glimagesink: keep the uploaded buffer around on successful redisplay
We might need it later to perform a redisplay.  GstGLUpload will take
of releasing the previous buffer when it receives a new buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=733726
2014-07-29 13:25:22 +10:00
David Rothlisberger
f5992a6cdd opencv templatematch: Set caps to BGR order
templatematch operates on BGR data. In fact, OpenCV's IplImage always
stores color image data in BGR order -- this isn't documented at all in
the OpenCV source code, but there are hints around the web (see for
example
http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html#SECTION00041000000000000000
and http://www.comp.leeds.ac.uk/vision/opencv/iplimage.html ).

gst_templatematch_load_template loads the template (the image to find)
from disk using OpenCV's cvLoadImage, so it is stored in an IplImage in
BGR order. But in gst_templatematch_chain, no OpenCV conversion
functions are used: the imageData pointer of the IplImage for the video
frame (the image to search in) is just set to point to the raw buffer
data. Without this fix, that raw data is in RGB order, so the call to
cvMatchTemplate ends up comparing the template's Blue channel against
the frame's Red channel, producing very poor results.
2014-07-28 14:22:27 -03:00
Thiago Santos
aa5e25820b templatematch: mark pads as proxy caps
Allows negotiation to happen properly
2014-07-28 14:18:02 -03:00
William Manley
1b5483eef9 templatematch: Produce a warning message if we can't load a template image 2014-07-28 14:18:02 -03:00
William Manley
88cb33a1dc templatematch: Match rectangle grows redder with increased match certainty
This is useful for debugging your matches as it indicates how certain the
match was in addition to its position.
2014-07-28 14:18:02 -03:00
William Manley
b608767288 templatematch: Allow changing template property on the fly
Previously changing the template property resulted in an exception
thrown from cvMatchTemplate, because "dist_image" (the intermediate
match-certainty-distribution) was the wrong size (because the
template image size had changed).

Locking has also been added to allow changing the properties (e.g. the
pattern to match) while the pipeline is playing.

 * gst_element_post_message is moved outside of the lock, because it will
   call into arbitrary user code (otherwise, if that user code calls into
   gst_templatematch_set_property on this same thread it would deadlock).

 * gst_template_match_load_template: If we fail to load the new template
   we still unload the previous template, so this element becomes a no-op
   in the pipeline. The alternative would be to keep the previous template;
   I believe unloading the previous template is a better choice, because it
   is consistent with the state this element would be in if it fails to
   load the very first template at start-up.

Thanks to Will Manley for the bulk of this work; any errors are probably
mine.
2014-07-28 14:18:01 -03:00
David Rothlisberger
c77808055d templatematch: Pass video through when nothing to match against
The early return was bypassing the call to gst_pad_push. With no
filter->template (and thus no filter->cvTemplateImage) the rest of this
function is essentially a no-op (except for the call to gst_pad_push).

This (plus the previous commit) allows templatematch to be
enabled/disabled without removing it entirely from the pipeline, by
setting/unsetting the template property.
2014-07-28 14:17:28 -03:00
William Manley
056d652b92 templatematch: Remove no-op call to gst_templatematch_load_template
We have just set filter->template to NULL, so
gst_templatematch_load_template did nothing.
2014-07-28 11:26:13 -03:00
Matthew Waters
13c63154b0 glimagesink: silence gsignal warning
instance '0xblah' has no handler with id '13'
2014-07-27 13:27:10 +10:00
Matthew Waters
5291ba37d9 glimagesink: remove extra argument from debug call 2014-07-24 13:05:00 +10:00
Vasilis Liaskovitis
90a4444609 glimagesink: Add navigation interface and callbacks for GstGLWindow mouse/key signals
https://bugzilla.gnome.org/show_bug.cgi?id=703486
2014-07-24 12:48:57 +10:00
Wang Xin-yu (王昕宇)
1adb0a77d6 gl: fix multi gl object leaks
1. fix FBO leaks in decide_allocation
2. fix texture leaks in decide_allocation and reset
3. fix texture leaks in FBO incomplete error path
2014-07-24 11:46:56 +10:00
Nicola Murino
bd4ae18938 facedetect: improve enum GstFaceDetectUpdates descriptions
https://bugzilla.gnome.org/show_bug.cgi?id=730509
2014-07-22 06:39:21 -03:00
Nicola Murino
3896dd8413 facedetect: make updates on_change works as expected
https://bugzilla.gnome.org/show_bug.cgi?id=730509
2014-07-22 06:39:21 -03:00
Thiago Santos
e26e112e80 katedec: handle segment event earlier
Delaying the segment event to when caps are decided can cause issues as
the first thing katedec does on its chain function it doing a segment clip.
It will lead to an assertion if the segment format is undefined

https://bugzilla.gnome.org/show_bug.cgi?id=733226
2014-07-21 12:36:19 -03:00
Thiago Santos
b0e63bbb9b katedec: handle streamheaders in caps
Properly handle the caps event by configuring the kate decoding lib using the
available streamheaders. This makes it possible to decode kate subtitles when
the stream is seeked before katedec gets the initial buffers that are usually
the streamheaders.

https://bugzilla.gnome.org/show_bug.cgi?id=733226
2014-07-21 12:36:19 -03:00
Sebastian Dröge
c42595cc69 openni2src: Fix unitialized variable compiler warning
gstopenni2src.cpp:721:14: error: variable 'oni_ts' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
  } else if (src->color->isValid () && src->sourcetype == SOURCETYPE_COLOR) {
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gstopenni2src.cpp:752:26: note: uninitialized use occurs here
  GST_BUFFER_PTS (buf) = oni_ts - src->oni_start_ts;
                         ^~~~~~
gstopenni2src.cpp:721:10: note: remove the 'if' if its condition is always true
  } else if (src->color->isValid () && src->sourcetype == SOURCETYPE_COLOR) {
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gstopenni2src.cpp:721:14: error: variable 'oni_ts' is used uninitialized whenever '&&' condition is false [-Werror,-Wsometimes-uninitialized]
  } else if (src->color->isValid () && src->sourcetype == SOURCETYPE_COLOR) {
             ^~~~~~~~~~~~~~~~~~~~~~
gstopenni2src.cpp:752:26: note: uninitialized use occurs here
  GST_BUFFER_PTS (buf) = oni_ts - src->oni_start_ts;
                         ^~~~~~
gstopenni2src.cpp:721:14: note: remove the '&&' if its condition is always true
  } else if (src->color->isValid () && src->sourcetype == SOURCETYPE_COLOR) {
             ^~~~~~~~~~~~~~~~~~~~~~~~~
gstopenni2src.cpp:642:18: note: initialize the variable 'oni_ts' to silence this warning
  uint64_t oni_ts;
                 ^
                  = 0
2014-07-21 10:14:17 +02:00
Sebastian Dröge
429f20531f hlsdemux: Make statistics message more generic for other adaptive streaming demuxers to reuse
https://bugzilla.gnome.org/show_bug.cgi?id=725828
2014-07-21 09:37:51 +02:00
Alexander Zallesov
7f4f9f09e3 hlsdemux: Provide statistics about time to download playlists and fragments
https://bugzilla.gnome.org/show_bug.cgi?id=725828
2014-07-21 09:37:51 +02:00
Sebastian Dröge
a7e243b32e curlsshsink: Include gst.h and other stuff before anything else 2014-07-11 21:16:26 +02:00
Sebastian Dröge
1934847981 gl: Always build gstglmixer, not only when full OpenGL support is enabled 2014-07-11 13:58:55 +02:00
Sebastian Dröge
198d8dd5f1 curl: Use winsock2 instead and the GLib macro for checking if we're on Windows 2014-07-11 13:25:57 +02:00
Sebastian Dröge
0ea13d7a65 motioncells: Use no network API if not required 2014-07-11 13:25:18 +02:00
Alexey Pavlov
365d0cfb32 ext: Include winsock.h on Windows when required
https://bugzilla.gnome.org/show_bug.cgi?id=733052
2014-07-11 13:21:21 +02:00
Sebastian Dröge
acb1d5afc3 gl: Link to all required libraries but not more 2014-07-11 12:06:48 +02:00
Sebastian Dröge
92d00d0233 gl: Move GstGLMixer to the plugin for now
It depends on GstAggregator and we don't want to install headers
for that yet.

https://bugzilla.gnome.org/show_bug.cgi?id=732207
2014-07-11 09:41:05 +02:00
Philip Withnall
c57500a7f4 opus: Fix a double-unref in the Opus header code
The headers were never getting reffed when being added to the headers
list, which is later unreffed-and-freed by the caller (e.g.
gst_opus_parse_parse_frame()).

https://bugzilla.gnome.org/show_bug.cgi?id=733013
2014-07-11 09:05:32 +02:00
Nicolas Dufresne
ab29217726 glimagesink: Keep aspect ratio by default
The expected default behaviour for video sink is to maintain the
aspect ratio. Fix the default value to reflect this. The property
default was already TRUE, but the value was not initially TRUE.
2014-07-09 15:03:53 -04:00
Nicolas Dufresne
25c289f6c4 facedetect: Make cascades dir a little more portable 2014-07-04 21:13:49 -04:00
Nicolas Dufresne
09fc19b83f handdetect: Use already mapped image
No need to map again the image, it's already handled by the base class.
2014-07-04 21:13:49 -04:00
Nicolas Dufresne
efde572cec handdetect: Move size warning in set_caps so it's called once 2014-07-04 21:13:49 -04:00
Nicolas Dufresne
34e23c2e21 faceblur: Port to OpencvVideoFilter base class
This fixes issue whit black frames when special memory, like GlMemory is
in used.

https://bugzilla.gnome.org/show_bug.cgi?id=732756
2014-07-04 21:13:49 -04:00
Nicolas Dufresne
42a83d2c64 cvvideofilter: Don't try to make buffer writable
First this is handle by base transform, hence this is a no-op, and if it wasn't it
would lead to a buffer copy being leaked, and then an unreffed buffer being
pushed downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=732756
2014-07-04 21:13:11 -04:00
Nicolas Dufresne
2acdb2ecf2 cvvideofilter: Check buffer_map return value
Check the resturn value and cleanly fail if we could not mapped the buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=732756
2014-07-04 21:12:38 -04:00
Sebastian Rasmussen
77905f632e mimdec: Print invalid fourcc in error message in hex
Previously this was printed as characters which caused later processing
of the error message to sometimes warn about non-UTF-8 characters.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732715
2014-07-04 17:48:14 +01:00
Arun Raghavan
652f0b4fd2 openni2src: Add proper clean up of OpenNI2 objects
https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
46a7f258a1 openni2src: Don't embed C++ objects in our GObject
Since C++ objects shoudl be properly constructed, we keep only pointers
to them and manually construct them on the heap.

https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
357298c84f openni2src: Close device when stopping the stream
https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
0b6eae66df openni2src: Fix timestamping
OpenNI2 makes no guarantees of timestamp starting from zero, just that
it will be a millisecond timestamp. Make timestamps start from zero
manually so things work correctly.

https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
6c4269c0e5 openni2src: Make the location property not be mandatory
Our calls to device open already handle the unset location case (by
opening any available device).

https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
7afb4a386a openni2src: Open device on NULL->READY
https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
b6e07e77c2 openni2src: Fix deadlock when _get_caps() is called before READY
The object lock was not being dropped in the empty case. Restructured
the code a bit to make this sort of error less likely.

https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
65bddd1e0c openni2src: Mark element as a live source
https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Jan Alexander Steffens (heftig)
86080cb5cc rtmpsrc: Report limited bandwidth
Makes uridecodebin treat this source as a stream source,
allowing timeshifting.

https://bugzilla.gnome.org/show_bug.cgi?id=732335
2014-07-01 15:02:37 +02:00
Thiago Santos
f2400d7f16 faceblur: release the haar cascade 2014-06-30 11:54:41 -03:00
Sebastian Dröge
e77a93f6a8 segmentation: Release memory storage in finalize 2014-06-30 00:22:22 +02:00
Sebastian Dröge
d5e7c7bffe textoverlay: Release memory storage and resize image when caps change 2014-06-30 00:18:20 +02:00
Sebastian Dröge
2683c87863 templatematch: Release cvImages when reloading templates are changing caps 2014-06-30 00:15:38 +02:00
Sebastian Dröge
7e0503ca89 pyramidsegment: Release image when changing caps or reusing the element 2014-06-30 00:12:26 +02:00
Sebastian Dröge
e1366c29be handdetect: Release memory storage 2014-06-30 00:09:28 +02:00
Sebastian Dröge
ae1027297c faceblur: Release memory storage
And also release cvImages and memory storage when changing caps or reusing the
element.
2014-06-30 00:07:22 +02:00
Sebastian Dröge
48e95f3d6f edgedetect: Don't leak cvImages when caps are changing or the element is reused 2014-06-30 00:05:53 +02:00
Sebastian Dröge
45ac4ba663 pyramidsegment: Release memory storage when finalizing 2014-06-29 23:43:07 +02:00
Sebastian Dröge
7b63bd6348 schroenc: Remove obsolete FIXME comment 2014-06-29 23:33:20 +02:00
Sebastian Dröge
b4ef216f0b schroenc: Don't leak all input buffers 2014-06-29 23:31:50 +02:00
Sebastian Dröge
dcccabfe22 textoverlay: Free text buffer in finalize 2014-06-29 22:30:56 +02:00
Sebastian Dröge
a84320be50 glimagesink: Chain up to the parent class' finalize function 2014-06-29 22:26:47 +02:00
Sebastian Dröge
f068b64285 glimagesink: Make sure to always unref the display
Even if we didn't create a context yet.
2014-06-29 22:25:43 +02:00
Sebastian Dröge
7f7793ef79 assrender: Make static caps actually static
Otherwise we leak once caps instance on every function call.
2014-06-29 21:05:27 +02:00
Sebastian Dröge
64160a1392 kate: Use G_GSIZE_FORMAT instead of unportable %zu 2014-06-28 23:26:23 +02:00
Thiago Santos
cf76aa2a1d kate: unref events when freeing events list
Instead of just feeing the queue structs
2014-06-27 17:00:03 -03:00
Thiago Santos
c2ebc2349f kateenc: fix segment event leak
gst_event_replace increments the refcount
2014-06-27 16:59:58 -03:00
Matthew Waters
7797b15de7 glshader: enable glshader on GLES2 2014-06-25 18:26:13 +10:00
Julien Isorce
13023f2975 glcolorscale: do passthrough on same caps
See https://bugzilla.gnome.org/show_bug.cgi?id=732178
2014-06-25 06:56:43 +01:00
Julien Isorce
6f45d00a9b gl: enable glvideomixer on GLES2 2014-06-25 06:55:11 +01:00
Matthew Waters
c37ace1844 glvideomixer: bas output width/height on the pad properties
Allows automatic negotiation of the size in the following case:
gst-launch-1.0 glvideomixer name=m sink_0::xpos=0 sink_1::xpos=320 ! glimagesink \
    videotestsrc ! m. \
    videotestsrc pattern=1 ! m.

https://bugzilla.gnome.org/show_bug.cgi?id=731878
2014-06-25 12:00:34 +10:00
Matthew Waters
4c02c4f004 glvideomixer: don't clobber already allocated shader 2014-06-25 10:19:42 +10:00
Sebastian Rasmussen
96c78695f9 curls?ftpsink: Fix memory leaks due to new error handling
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732174
2014-06-24 19:05:34 +02:00
Matthew Waters
5409a3ea2f gl: XInitThreads when env variable is set
This is too allow gst-launch debugging with multiple GL contexts as
well as avoiding segfaulting innocent gtk+ apps that have not called
XInitThreads.

https://bugzilla.gnome.org/show_bug.cgi?id=731525
2014-06-24 23:51:24 +10:00
Koop Mast
386e5774a7 modplug: don't hardcode c++ standard library
Fixes build with llvm on FreeBSD.

https://bugzilla.gnome.org//show_bug.cgi?id=731930
2014-06-22 21:51:21 +01:00
Sebastian Dröge
8a18ac76e1 gl: Need to link to new badvideo library for the video aggregator base class 2014-06-22 18:58:51 +02:00
Thomas Bluemel
b1fac8c781 hlsdemux: Fix decrypting fragments
Only reset the decryption engine on the first buffer of a fragment,
not again for the second buffer.  This fixes corrupting the second
buffer of a fragment.

https://bugzilla.gnome.org/show_bug.cgi?id=731968
2014-06-22 14:21:35 +02:00
Sebastian Dröge
902a9a56d0 waylandsink: Fix compiler warning
gstwaylandsink.c:480:14: error: comparison of constant -1 with expression of
      type 'enum wl_shm_format' is always false
      [-Werror,-Wtautological-constant-out-of-range-compare]
  if (format == -1)
      ~~~~~~ ^  ~~
2014-06-21 16:57:18 +02:00
Thibault Saunier
d516c951e7 gl:glvideomixer: Add the Compositor in the element metadata class
So it is possible to pick one compositing element from the registry
2014-06-20 19:53:33 +02:00
Thibault Saunier
4ce8b409cc gl: Port glmixer to the GstVideoAggregator baseclass
https://bugzilla.gnome.org/show_bug.cgi?id=731921
2014-06-20 19:53:33 +02:00
Sebastian Dröge
95404609c0 hlsdemux: Include the debug string in the error messages we propagate from the
source
2014-06-19 18:34:05 +02:00
Sebastian Dröge
48987fd5a1 hlsdemux: Include a more descriptive error message 2014-06-19 18:34:05 +02:00
Sebastian Dröge
1e795ccce1 hlsdemux: Propagate error messages from the source element up in the hierarchy
Instead of inventing our own generic error strings which are mostly useless.
2014-06-19 18:34:05 +02:00
Sebastian Dröge
213883eb51 hlsdemux: Directly convert GErrors to error messages
This will make sure that we don't leak debug information into the actual
error message string and keep it behind the debug string.
2014-06-19 18:34:05 +02:00
Miguel París Díaz
bf003caf9d gstsrtpenc: unref event when needed
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=731768
2014-06-18 15:54:08 +02:00
Wim Taymans
52d4b7de07 srtpenc: improve property comments
Add a Note to the allow-repeat-tx property because it is potentially
insecure when used incorrectly.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=731714
2014-06-18 15:37:23 +02:00
Miguel París Díaz
c1052066e8 gstsrtpenc: add allow-repeat-tx property 2014-06-18 15:33:00 +02:00
Lubosz Sarnecki
053252ccc6 opengl: add element for transforming video geometry
* add graphene as soft dependency for linear algebra
2014-06-18 20:41:03 +10:00
Matthew Waters
19e8dbd6ac glfiltershader: port to GLES2
Provide a time variable
2014-06-17 23:21:15 +10:00
George Kiagiadakis
0badc1f5fb waylandsink/wldisplay: verify that all the required interfaces have been found on the compositor
This allows waylandsink to fail gracefully before going to READY
in case one of the required interfaces does not exist. Not all
interfaces are necessary for all modes of operation, but it is
better imho to fail before going to READY if at least one feature
is not supported, than to fail and/or crash at some later point.

In the future we may want to relax this restriction and allow certain
interfaces not to be present under certain circumstances, for example
if there is an alternative similar interface available (for instance,
xdg_shell instead of wl_shell), but for now let's require them all.
Weston supports them all, which is enough for us now. Other compositors
should really implement them if they don't already. I don't like the
idea of supporting many different compositors with different sets of
interfaces implemented. wl_subcompositor, wl_shm and wl_scaler are
really essential for having a nice video sink. Enough said.
2014-06-17 13:51:30 +02:00
George Kiagiadakis
c4616a550a waylandsink: remove the buffer from the surface when going PAUSED -> READY
This essentially hides the video and allows the application to
potentially draw a black background or whatever else it wants.
This allows to differentiate the "paused" and "stopped" modes
from the user's point of view.

Also reworded a comment there to make my thinking more clear,
since the "reason for keeping the display around" is not really
the exposed() calls, as there is no buffer shown in READY/NULL
anymore.
2014-06-17 13:51:30 +02:00
George Kiagiadakis
e5334a1f8b waylandsink/wlwindow: do not commit a resize when it happens due to a video info change
1) We know that gst_wayland_sink_render() will commit the surface
   in the same thread a little later, as gst_wl_window_set_video_info()
   is always called from there, so we can save the compositor from
   some extra calculations.
2) We should not commit a resize with the new video info while we are still
   showing the buffer of the previous video, with the old caps, as that
   would probably be a visible resize glitch.
2014-06-17 13:51:30 +02:00
George Kiagiadakis
04b0e54838 waylandsink/wlwindow: take into account the video aspect ratio when determining the size of the surface 2014-06-17 13:51:30 +02:00
George Kiagiadakis
bda600ed92 waylandsink: improve the way the video size is passed to wlwindow and also improve the code for window creation 2014-06-17 13:51:29 +02:00
George Kiagiadakis
86930cab13 waylandsink: rename pause/resume_rendering to begin/end_geometry_change and update their documentation 2014-06-17 13:51:28 +02:00
George Kiagiadakis
06639dd727 waylandsink: remove the manual synchronization from pause/resume_rendering and use subsurface sync/desync
Previously, in order to change the surface size we had to let the pipeline
redraw it, which at first also involved re-negotiating caps, etc, so a
synchronization with the pipeline was absolutely necessary.

At the moment, we are using wl_viewport, which separates the surface size
from the buffer size and it also allows us to commit a surface resize without
attaching a new buffer, so it is enough to just do:

gst_wayland_video_pause_rendering():
	wl_subsurface_set_sync()
gst_video_overlay_set_render_rectangle():
	wl_subsurface_set_position()
	wl_viewport_set_destination()
	wl_surface_damage()
	wl_surface_commit()
... commit the parent surface ...
gst_wayland_video_resume_rendering():
	wl_subsurface_set_desync()

This is enough to synchronize a surface resize and the pipeline can continue
drawing independently. Now of course, the names pause/resume_rendering are
bad. I will rename them in another commit.
2014-06-17 13:51:28 +02:00
George Kiagiadakis
c17521c096 waylandsink: protect access to properties with the OBJECT_LOCK 2014-06-17 13:51:28 +02:00
George Kiagiadakis
d4d46fa43a waylandsink: protect access to the display with a new display_lock
Access is protected only for setting/creating/destroying the display
handle. set_caps() for example is not protected because it cannot be
called before changing state to READY, at which point there will be
a display handle available and which cannot change by any thread at
that point
2014-06-17 13:51:28 +02:00
George Kiagiadakis
c323171dc1 waylandsink: remove the OBJECT_LOCK from set_caps()
It's not really necessary, this method is protected from GstBaseSink with the PREROLL_LOCK
2014-06-17 13:51:28 +02:00
George Kiagiadakis
db8caa9da4 waylandsink: Replace the OBJECT_LOCK with a private render_lock to lock render operations
This is because:
* GST_ELEMENT_WARNING/ERROR do lock the OBJECT_LOCK and we deadlock instantly
* In future commits I want to make use of GstBaseSink functions that also
  lock the OBJECT_LOCK inside this code
2014-06-17 13:51:28 +02:00
George Kiagiadakis
cffb38993d waylandsink: move surface resizing logic to the GstWlWindow and make it be called from the main thread 2014-06-17 13:51:28 +02:00
George Kiagiadakis
61e077155b waylandsink: cleanup GstWlWindow a bit after the overlaying semantics change
* own_surface is not needed anymore
* gst_wl_window_from_surface is not used externally anymore
* many initializations to 0 are not needed (GObject does them)
2014-06-17 13:51:27 +02:00
George Kiagiadakis
07f671fcaf waylandsink: create and maintain the subsurface inside the sink
This means that the given surface in set_window_handle can now be
the window's top-level surface on top of which waylandsink creates
its own subsurface for rendering the video.

This has many advantages:
* We can maintain aspect ratio by overlaying the subsurface in
  the center of the given area and fill the parent surface's area
  black in case we need to draw borders (instead of adding another
  subsurface inside the subsurface given from the application,
  so, less subsurfaces)
* We can more easily support toolkits without subsurfaces (see gtk)
* We can get properly use gst_video_overlay_set_render_rectangle
  as our api to set the video area size from the application and
  therefore remove gst_wayland_video_set_surface_size.
2014-06-17 13:51:27 +02:00
George Kiagiadakis
b806313396 wayland: add public API for creating & using the display handle GstContext 2014-06-17 13:51:27 +02:00
George Kiagiadakis
c62ec6f815 waylandsink: get the external display handle using GstContext
This drops the ugly GstWaylandWindowHandle structure and is much
more elegant because we can now request the display separately
from the window handle. Therefore the window handle can be requested
in render(), i.e. when it is really needed and we can still open
the correct display for getting caps and creating the pool earlier.

This change also separates setting the wl_surface from setting its size.
Applications should do that by calling two functions in sequence:

  gst_video_overlay_set_window_handle (overlay, surface);
  gst_wayland_video_set_surface_size (overlay, w, h);
2014-06-17 13:51:27 +02:00
George Kiagiadakis
bd5ad17e58 waylandsink: drop width/height arguments from gst_wl_window_new_from_surface() 2014-06-17 13:51:27 +02:00
George Kiagiadakis
0187be8e0c waylandsink: add G_BEGIN/END_DECLS on all headers for consistency 2014-06-17 13:51:27 +02:00
George Kiagiadakis
882e1dd240 waylandsink: fix assertion failure when stopping immediately after starting, without displaying anything
This was triggered in scenarios like
filesrc location=nonexistent_file ! decodebin ! waylandsink
2014-06-17 13:51:27 +02:00
George Kiagiadakis
a543aef5ee waylandsink: Update wl_scaler to version 2 2014-06-17 13:51:26 +02:00
George Kiagiadakis
c86906d76c waylandsink/Makefile.am: Fix scaler-client-protocol.h generation 2014-06-17 13:51:26 +02:00
George Kiagiadakis
87949dcb07 waylandsink: remove unused functions 2014-06-17 13:51:26 +02:00
George Kiagiadakis
2f45d91ccd waylandsink: Add myself to the authors list 2014-06-17 13:51:26 +02:00
George Kiagiadakis
ec18fe8965 waylandsink/wldisplay: bind to the latest available wl_compositor version 2014-06-17 13:51:26 +02:00
George Kiagiadakis
c015a96dda waylandsink: create/destroy the display when entering/leaving the READY state instead of PAUSED
This is the only way to get the negotiation working with the dynamic
detection of formats from the display, because the pipeline needs
to know the supported formats in the READY state and the supported
formats can only be known if we open the display.

Unfortunately,in wayland we cannot have a separate connection to
the display from the rest of the application, so we need to ask for a
window handle when going to READY in order to get the display from it.

And since it's too early to create a top level window from the state
change to READY, create it in render() when there is no other window.

This also changes set_window_handle() to not support window handle
changes in PAUSED/PLAYING (because it's complex to handle and useless
in practice) and make sure that there is always a valid display pointer
around in the READY state.
2014-06-17 13:51:26 +02:00
George Kiagiadakis
f6e824ecba waylandsink: Support all video formats supported by the display 2014-06-17 13:51:26 +02:00
George Kiagiadakis
de15c21413 waylandsink: fix crash in case there is no pool because of a caps negotiation error 2014-06-17 13:51:25 +02:00
George Kiagiadakis
162dbd412c waylandsink: set an empty input region on the video surface 2014-06-17 13:51:25 +02:00
George Kiagiadakis
94d02288d0 waylandsink/wlwindow: reuse code between the two constructors 2014-06-17 13:51:25 +02:00
George Kiagiadakis
a98f589aef waylandsink: increase debug messages 2014-06-17 13:51:25 +02:00
George Kiagiadakis
5bb889a3df waylandsink: Use a boolean in combination with render_cond to comply with GCond's usage documentation 2014-06-17 13:51:25 +02:00
George Kiagiadakis
66f8c1389b waylandsink: Implement expose() and handle resizing properly in non-PLAYING states 2014-06-17 13:51:25 +02:00
George Kiagiadakis
086ac4ee81 waylandsink: Use wl_scaler/wl_viewport to scale the surface in the compositor/hardware 2014-06-17 13:51:25 +02:00
George Kiagiadakis
1cbfba5034 waylandsink: Build bindings for the unstable wl_scaler spec 2014-06-17 13:51:24 +02:00
George Kiagiadakis
12444ec84e waylandsink: Set external surfaces and their child objects to use our own event queue
This fixes weird freezes because of frame_redraw_callback() not being
called from the main thread when it should with weston's toy toolkit.

It's also safer to know that frame_redraw_callback() will always be
called from our display thread... Otherwise it could be called after
the sink has been destroyed for example.
2014-06-17 13:51:24 +02:00
George Kiagiadakis
fabc5305be waylandsink: Wait for the frame_cb to redraw and drop frames meanwhile
We are not supposed to redraw until we receive a frame callback and this
is especially useful to avoid allocating too many buffers while the
window is not visible, because the compositor may not call wl_buffer.release
until the window becomes visible (ok, this is a wayland bug, but...).
2014-06-17 13:51:24 +02:00
George Kiagiadakis
51a2c694ad waylandsink: Handle wl_buffer::release and don't reuse buffers that are not released
This is achieved by adding an extra reference on the buffers, which does
not allow them to return to the pool. When they are released, this reference
is dropped.

The rest complexity of this patch (hash table, mutex, flag, explicit release calls)
merely exists to allow a safe, guaranteed and deadlock-free destruction sequence.
See the added comment on gstwaylandsink.c for details.
2014-06-17 13:51:24 +02:00
George Kiagiadakis
4b2d76873d waylandsink/waylandpool: remove useless munmap call
This data pointer is part of a bigger mmap'ed region,
it has not been returned from mmap itself.
2014-06-17 13:51:24 +02:00
George Kiagiadakis
bf2232c999 waylandsink/waylandpool: call the start/stop methods of the parent class
start() makes sure that the minimum ammount of buffers requested is allocated.

stop() makes sure that buffers are actually destroyed and prevents
filling the file system when resizing the surface a lot, because the
wayland-shm-* files will stay on the file system as long as the wl_buffers
created out of them are alive.
2014-06-17 13:51:24 +02:00
George Kiagiadakis
bf19d792d0 waylandsink/waylandpool: unlink mmaped shm files so that they don't remain on the file system 2014-06-17 13:51:24 +02:00
George Kiagiadakis
e56f305274 waylandsink: implement the GstVideoOverlay & GstWaylandVideo interfaces
This is the initial implementation, without the GstVideoOverlay.expose()
method. It only implements using an external (sub)surface and resizing
it with GstWaylandVideo.
2014-06-17 13:51:24 +02:00
George Kiagiadakis
68133361ec waylandsink: implement with stubs the GstWaylandVideo & GstVideoOverlay interfaces 2014-06-17 13:51:23 +02:00
George Kiagiadakis
26ce7f2344 waylandsink: handle the list of supported formats properly
enum wl_shm_format is not a flags enum, as it may have been in the past,
so multiple formats cannot be stored in a bitfield. Use an array instead.
2014-06-17 13:51:23 +02:00
George Kiagiadakis
873671f2b6 waylandsink/wlvideoformat: add mappings for many common formats 2014-06-17 13:51:23 +02:00
George Kiagiadakis
f800e2b4fa waylandsink: unref the buffer pool 2014-06-17 13:51:23 +02:00
George Kiagiadakis
a67b08cdd0 waylandsink/waylandpool: ref the display instead of the sink to avoid cyclic references
The reference to the sink is not really needed anyway in waylandpool,
what matters basically is that the display is active as long as the
pool is active, so we really want to reference the display object
instead of the sink.
2014-06-17 13:51:23 +02:00
George Kiagiadakis
253eafd4ef waylandsink: make the display property useful
Let the display property control the name of the display,
like in x(v)imagesink.
2014-06-17 13:51:23 +02:00
George Kiagiadakis
e7650117af waylandsink: access sink->pool in a more atomic fashion 2014-06-17 13:51:22 +02:00
George Kiagiadakis
58a4d247b3 waylandsink: remove the useless wayland_lock 2014-06-17 13:51:22 +02:00
George Kiagiadakis
350d919719 waylandsink: apply the same debug category to all the subobjects 2014-06-17 13:51:22 +02:00