platform/upstream/gstreamer.git
9 years agovideoaggregator: Lock access to members of GstAggregatorPad
Olivier Crête [Wed, 14 Jan 2015 19:45:06 +0000 (14:45 -0500)]
videoaggregator: Lock access to members of GstAggregatorPad

Take the pad's object lock before accessing members of the
GstAggregatorPad structure.

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

9 years agovideoaggregator: If getting a timeout before having caps, just advance our position
Nirbheek Chauhan [Wed, 28 Jan 2015 20:58:38 +0000 (02:28 +0530)]
videoaggregator: If getting a timeout before having caps, just advance our position

This can happen if this is a live pipeline and no source produced any buffer
and sent no caps until an output buffer should've been produced according to the
latency.

This fix is similar in spirit to commit be7034d1 by Sebastian for audiomixer.

9 years agovideoaggregator: fix crash when receiving buffer without timestamps
Tim-Philipp Müller [Mon, 26 Jan 2015 09:22:23 +0000 (09:22 +0000)]
videoaggregator: fix crash when receiving buffer without timestamps

Unset out buffer in clip function when we unref the buffer to be
clipped, otherwise aggregator will continue to use the already-
freed buffer. Fixes crash when buffers without timestamps are
being fed to aggregator. Partly because aggregator ignores the
error flow return.

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

9 years agocompositor: fix illegal memory access in blend function with negative ypos
Vincent Penquerc'h [Mon, 19 Jan 2015 12:37:23 +0000 (12:37 +0000)]
compositor: fix illegal memory access in blend function with negative ypos

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

9 years agoglvideomixer: don't upload if alpha <= 0
Matthew Waters [Wed, 14 Jan 2015 22:47:45 +0000 (09:47 +1100)]
glvideomixer: don't upload if alpha <= 0

Implemented using a upload_buffer vfunc within GstGLMixer allowing
NULL uploaded buffers.

9 years agocompositor: Document the zorder pad property from gstvideoaggregator
Nirbheek Chauhan [Wed, 14 Jan 2015 18:18:16 +0000 (23:48 +0530)]
compositor: Document the zorder pad property from gstvideoaggregator

9 years agogl: split glcolorconvert usage from glupload
Matthew Waters [Wed, 14 Jan 2015 11:08:43 +0000 (22:08 +1100)]
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.

9 years agocompositor: Don't do any conversions if the pad is completely transparent anyway
Sebastian Dröge [Tue, 13 Jan 2015 13:54:26 +0000 (14:54 +0100)]
compositor: Don't do any conversions if the pad is completely transparent anyway

9 years agogitignore: ignore more files
Stefan Sauer [Mon, 12 Jan 2015 20:25:14 +0000 (21:25 +0100)]
gitignore: ignore more files

10 years agoglmixer, glvideomixer: update for GstAggregatorPadForeachFunc change
Tim-Philipp Müller [Tue, 30 Dec 2014 19:43:43 +0000 (19:43 +0000)]
glmixer, glvideomixer: update for GstAggregatorPadForeachFunc change

10 years agoglmixer: update for aggregator start/stop vfunc change
Tim-Philipp Müller [Tue, 30 Dec 2014 19:26:47 +0000 (19:26 +0000)]
glmixer: update for aggregator start/stop vfunc change

10 years agovideoaggregator: update for aggregator start/stop vfunc change
Tim-Philipp Müller [Tue, 30 Dec 2014 17:56:35 +0000 (17:56 +0000)]
videoaggregator: update for aggregator start/stop vfunc change

10 years agoaggregator: make padding larger
Tim-Philipp Müller [Sun, 28 Dec 2014 01:13:33 +0000 (01:13 +0000)]
aggregator: make padding larger

Esp. the class structures, can't have enough
spare space for virtual functions.

10 years agoglvideomixer: Point to compositor for the pad properties documentation
Nirbheek Chauhan [Sat, 27 Dec 2014 10:20:17 +0000 (15:50 +0530)]
glvideomixer: Point to compositor for the pad properties documentation

10 years agocompositor: Document the pad properties
Nirbheek Chauhan [Sat, 27 Dec 2014 10:19:47 +0000 (15:49 +0530)]
compositor: Document the pad properties

10 years agovideoaggregator: Use the src query implementation of aggregator as the default case
Sebastian Dröge [Mon, 22 Dec 2014 21:11:30 +0000 (22:11 +0100)]
videoaggregator: Use the src query implementation of aggregator as the default case

10 years agovideoaggregator: Don't try to map NULL buffers
Sebastian Dröge [Thu, 18 Dec 2014 21:04:38 +0000 (22:04 +0100)]
videoaggregator: Don't try to map NULL buffers

10 years agovideoaggregator: Make sure to always update the pad's videoinfo together with buffers
Sebastian Dröge [Thu, 18 Dec 2014 21:03:04 +0000 (22:03 +0100)]
videoaggregator: Make sure to always update the pad's videoinfo together with buffers

Otherwise the videoinfo and the buffer content can go out of sync.

10 years agocompositor: Fix memory leak when no buffer is available for a pad currently
Sebastian Dröge [Thu, 18 Dec 2014 10:48:37 +0000 (11:48 +0100)]
compositor: Fix memory leak when no buffer is available for a pad currently

CID 1258718

10 years agoaggregator: Add function to allow subclasses to set their own latency
Sebastian Dröge [Wed, 17 Dec 2014 18:51:32 +0000 (19:51 +0100)]
aggregator: Add function to allow subclasses to set their own latency

For audiomixer this is one blocksize, for videoaggregator this should
be the duration of one output frame.

10 years agoaggregator: Add a timeout parameter to ::aggregate()
Sebastian Dröge [Wed, 17 Dec 2014 16:54:09 +0000 (17:54 +0100)]
aggregator: Add a timeout parameter to ::aggregate()

When this is TRUE, we really have to produce output. This happens
in live mixing mode when we have to output something for the current
time, no matter if we have enough input or not.

10 years agoaggregator: make the src pad task drive the pipeline for live pipelines
Matthew Waters [Fri, 5 Dec 2014 07:19:54 +0000 (18:19 +1100)]
aggregator: make the src pad task drive the pipeline for live pipelines

This removes the uses of GAsyncQueue and replaces it with explicit
GMutex, GCond and wakeup count which is used for the non-live case.

For live pipelines, the aggregator waits on the clock until either
data arrives on all sink pads or the expected output buffer time
arrives plus the timeout/latency at which time, the subclass
produces a buffer.

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

10 years agovideoaggregator: always try to use newer buffers
Matthew Waters [Mon, 8 Dec 2014 04:18:25 +0000 (15:18 +1100)]
videoaggregator: always try to use newer buffers

instead of dropping them for being too old.  This ensures that
the newest buffer is always used for rendering

10 years agovideoaggregator: Hide some more fields from the API
Thibault Saunier [Thu, 27 Nov 2014 19:48:24 +0000 (20:48 +0100)]
videoaggregator: Hide some more fields from the API

+ Add some documentation

10 years agogl: fixup vao and vbo usage for legacy GL
Matthew Waters [Thu, 11 Dec 2014 07:15:02 +0000 (18:15 +1100)]
gl: fixup vao and vbo usage for legacy GL

10 years agocompositor: Failure to map a video frame is not just a warning
Sebastian Dröge [Fri, 28 Nov 2014 09:23:55 +0000 (10:23 +0100)]
compositor: Failure to map a video frame is not just a warning

Also add some warning debug output if mapping a output buffer fails

10 years agovideoaggregator: Failure to map a video frame is not just a warning
Sebastian Dröge [Fri, 28 Nov 2014 09:22:44 +0000 (10:22 +0100)]
videoaggregator: Failure to map a video frame is not just a warning

10 years agogldisplay: implement runtime GL api filtering
Matthew Waters [Thu, 27 Nov 2014 10:05:45 +0000 (21:05 +1100)]
gldisplay: implement runtime GL api filtering

Needed so that the pipeline/application can limit the choice of GL api
to what it supports

10 years agogl: add a sync meta for synchronizing across GL contexts
Matthew Waters [Fri, 17 Oct 2014 13:22:24 +0000 (15:22 +0200)]
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.

10 years agoglvideomixer: add support for gl3
Matthew Waters [Thu, 13 Nov 2014 13:20:10 +0000 (00:20 +1100)]
glvideomixer: add support for gl3

10 years agovideoaggregator: Minor cleanup
Sebastian Dröge [Thu, 27 Nov 2014 20:22:44 +0000 (21:22 +0100)]
videoaggregator: Minor cleanup

10 years agocompositor: Implement rescaling of the input via pad properties
Sebastian Dröge [Wed, 26 Nov 2014 14:02:14 +0000 (15:02 +0100)]
compositor: Implement rescaling of the input via pad properties

compositor has now the same interface as glvideomixer.

10 years agovideoaggregator: Copy over more fields from the relevant video-info
Sebastian Dröge [Thu, 27 Nov 2014 19:34:25 +0000 (20:34 +0100)]
videoaggregator: Copy over more fields from the relevant video-info

gst_video_info_set_format() will reset the complete video-info, but
we want to keep values like the PAR, colorimetry and chroma site.
Otherwise we risk setting different values on the srcpad caps than
what is actually inside the buffers.

10 years agovideoaggregator: Directly use the converters video-info instead of recalculating it
Sebastian Dröge [Thu, 27 Nov 2014 19:25:29 +0000 (20:25 +0100)]
videoaggregator: Directly use the converters video-info instead of recalculating it

10 years agovideoaggregator: Do source pad negotiation only from the aggregated function
Sebastian Dröge [Thu, 27 Nov 2014 18:52:20 +0000 (19:52 +0100)]
videoaggregator: Do source pad negotiation only from the aggregated function

Otherwise we might negotiate from the sinkpad streaming threads at
the same time as on the srcpad streaming thread, and then all kinds
of crazy bugs happen that don't make any sense at all.

10 years agovideoconvert: Hide all conversion related fields
Thibault Saunier [Thu, 27 Nov 2014 17:46:03 +0000 (18:46 +0100)]
videoconvert: Hide all conversion related fields

And do not delay the setting of the conversion_info

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

10 years agovideoaggregator: Expose vmethods to set converters and prepare/clean frames
Thibault Saunier [Wed, 26 Nov 2014 17:24:05 +0000 (18:24 +0100)]
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

10 years agovideoaggregator: Let a full renegotiation happen after removing the last pad
Thibault Saunier [Fri, 31 Oct 2014 10:01:47 +0000 (11:01 +0100)]
videoaggregator: Let a full renegotiation happen after removing the last pad

With the current code, we will end up setting the preferred downstream
format as the srcpad format, and it might not be accepted by the next
sinkpad to be added. We should instead let the next sinkpad reconfigure
everything.

10 years agovideoaggregator: Also sync pad properties to the controller if conversion is disabled
Sebastian Dröge [Wed, 26 Nov 2014 12:06:21 +0000 (13:06 +0100)]
videoaggregator: Also sync pad properties to the controller if conversion is disabled

10 years agocompositor: Remove unused zorder pad property
Sebastian Dröge [Wed, 26 Nov 2014 11:35:52 +0000 (12:35 +0100)]
compositor: Remove unused zorder pad property

It's handled in videoaggregator already.

10 years agocompositor: GstVideoMeta is supported just fine, tell upstream about that
Sebastian Dröge [Tue, 25 Nov 2014 17:53:55 +0000 (18:53 +0100)]
compositor: GstVideoMeta is supported just fine, tell upstream about that

Also provide a GstVideoBufferPool to upstream just in case.

10 years agoglupload: rearchitecture for non GLMemory inputs/outputs
Matthew Waters [Wed, 5 Nov 2014 09:18:06 +0000 (20:18 +1100)]
glupload: rearchitecture for non GLMemory inputs/outputs

Allows other memory types to be implemented/returned/used by the caller.

10 years agovideoaggregator: Don't output 0-duration buffers at the segment end
Sebastian Dröge [Wed, 19 Nov 2014 16:02:40 +0000 (17:02 +0100)]
videoaggregator: Don't output 0-duration buffers at the segment end

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

10 years agovideoaggregator: fix up QoS handling for live sources
Matthew Waters [Mon, 17 Nov 2014 03:05:01 +0000 (14:05 +1100)]
videoaggregator: fix up QoS handling for live sources

Only attempt adaptive drop when we are not live

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

10 years agoglmixer: add read-only context property
Matthew Waters [Mon, 17 Nov 2014 07:50:04 +0000 (18:50 +1100)]
glmixer: add read-only context property

10 years agogl: remove the width/height fields from the caps to support frame resizing
Matthew Waters [Tue, 11 Nov 2014 03:23:55 +0000 (14:23 +1100)]
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

10 years agovideoaggregator: Swap source/destination parameters of gst_video_converter_frame()
Sebastian Dröge [Mon, 3 Nov 2014 15:13:23 +0000 (16:13 +0100)]
videoaggregator: Swap source/destination parameters of gst_video_converter_frame()

10 years agoglmixer: advertise support for changing input caps mid-stream
Matthew Waters [Fri, 31 Oct 2014 01:52:07 +0000 (12:52 +1100)]
glmixer: advertise support for changing input caps mid-stream

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

10 years agovideoaggregator: remove storage of never used values
Luis de Bethencourt [Thu, 30 Oct 2014 14:49:05 +0000 (14:49 +0000)]
videoaggregator: remove storage of never used values

These two values are stored just before the function returns and they go out of
scope.

10 years agoglmixer: don't get the current caps from GstVideoInfo for the srcpad
Matthew Waters [Thu, 30 Oct 2014 12:08:00 +0000 (23:08 +1100)]
glmixer: don't get the current caps from GstVideoInfo for the srcpad

It's missing the caps features needed.

10 years agoglmixer:fix incorrect parameter passed to handle_set_context
Wang Xin-yu (王昕宇) [Wed, 29 Oct 2014 00:27:57 +0000 (08:27 +0800)]
glmixer:fix incorrect parameter passed to handle_set_context

10 years agoglmixer: override the caps query in order to 'convert' capsfeatures
Matthew Waters [Thu, 23 Oct 2014 13:35:22 +0000 (00:35 +1100)]
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.

10 years agoglmixer: override the accept caps query in order to 'convert' capsfeatures
Matthew Waters [Thu, 23 Oct 2014 12:55:48 +0000 (23:55 +1100)]
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.

10 years agogl: propogate other-context using GstContext
Matthew Waters [Thu, 14 Aug 2014 13:29:00 +0000 (23:29 +1000)]
gl: propogate other-context using GstContext

10 years agoglmixer: fixup eglimage include path
Matthew Waters [Mon, 20 Oct 2014 19:04:10 +0000 (06:04 +1100)]
glmixer: fixup eglimage include path

10 years agovideoaggregator: fixate the parts of the caps we don't know how to deal with
Matthew Waters [Mon, 20 Oct 2014 15:52:05 +0000 (02:52 +1100)]
videoaggregator: fixate the parts of the caps we don't know how to deal with

fixes glvideomixer with video/x-raw,width=foo i.e. no format field.

10 years agoglbufferpool: add the GstVideoGLTextureUploadMeta buffer pool option
Matthew Waters [Sat, 18 Oct 2014 08:03:43 +0000 (10:03 +0200)]
glbufferpool: add the GstVideoGLTextureUploadMeta buffer pool option

10 years agovideoaggregator: operate on caps rather than video info
Matthew Waters [Sun, 19 Oct 2014 23:34:27 +0000 (10:34 +1100)]
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

10 years agoglmixer: Call the pad's parent class finalize method
Sebastian Dröge [Mon, 13 Oct 2014 11:27:55 +0000 (13:27 +0200)]
glmixer: Call the pad's parent class finalize method

10 years agoglmixer: Only finalize the other context in finalize()
Sebastian Dröge [Mon, 13 Oct 2014 11:27:11 +0000 (13:27 +0200)]
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.

10 years agoglmixer: Add other-context property
Sebastian Dröge [Mon, 13 Oct 2014 09:53:47 +0000 (11:53 +0200)]
glmixer: Add other-context property

10 years agoaggregator: add latency query handling
Matthew Waters [Mon, 6 Oct 2014 10:46:24 +0000 (21:46 +1100)]
aggregator: add latency query handling

10 years agovideoaggregator: support unresponsive pads
Matthew Waters [Mon, 6 Oct 2014 07:33:52 +0000 (18:33 +1100)]
videoaggregator: support unresponsive pads

Render unresponsive pads with the last video frame received.

10 years agovideoaggregator: remove the use of the queued buffer on sink pads
Matthew Waters [Mon, 6 Oct 2014 07:10:38 +0000 (18:10 +1100)]
videoaggregator: remove the use of the queued buffer on sink pads

That data is now held by the aggregator class

10 years agovideoaggregator: Do not wrongly set the aggregator.segment
Thibault Saunier [Tue, 23 Sep 2014 13:59:10 +0000 (15:59 +0200)]
videoaggregator: Do not wrongly set the aggregator.segment

The aggregator.segment is not to be initialized by the subclasses but
by the aggregator itself. Moreover, initializing it on start would make
us loose the information coming from the initial seek.

10 years agovideoaggregator: Make sure not to unref a NULL pointer
Thibault Saunier [Wed, 30 Jul 2014 09:57:46 +0000 (11:57 +0200)]
videoaggregator: Make sure not to unref a NULL pointer

10 years agovideoaggregator: Unmap and free GstVideoFrames as needed after conversion and errors
Sebastian Dröge [Mon, 6 Oct 2014 07:11:47 +0000 (10:11 +0300)]
videoaggregator: Unmap and free GstVideoFrames as needed after conversion and errors

10 years agovideoaggregator: Do not to release VIDEO_AGGREGATOR_LOCK while setting format info
Thibault Saunier [Thu, 18 Sep 2014 15:14:22 +0000 (17:14 +0200)]
videoaggregator: Do not to release VIDEO_AGGREGATOR_LOCK while setting format info

We should be able to always keep the VIDEO_AGGREGATOR_LOCK while
negotiating caps, this patch introduce that change.

That also implies that we do not need the SETCAPS_LOCK anymore because
now VIDEO_AGGREGATOR_LOCK guarantees that setcaps is not called from
several threads and the gst_aggregator_set_caps method is now
protected.

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

10 years agovideoaggregator: Also copy over the chroma siting and colorimetry when deciding on...
Sebastian Dröge [Wed, 1 Oct 2014 14:22:59 +0000 (17:22 +0300)]
videoaggregator: Also copy over the chroma siting and colorimetry when deciding on a conversion

10 years agovideoaggregator: Revert the last commit and handle resolutions differences properly
Sebastian Dröge [Wed, 1 Oct 2014 14:18:05 +0000 (17:18 +0300)]
videoaggregator: Revert the last commit and handle resolutions differences properly

This is about converting the format, not about converting any widths and
heights. Subclasses are expected to handler different resolutions themselves,
like the videomixers already do properly.

10 years agovideoaggregator: GstVideoConverter currently can't rescale and will assert
Sebastian Dröge [Wed, 1 Oct 2014 14:11:16 +0000 (17:11 +0300)]
videoaggregator: GstVideoConverter currently can't rescale and will assert

Leads to ugly assertions instead of properly erroring out:
CRITICAL **: gst_video_converter_new: assertion 'in_info->width == out_info->width' failed

10 years agoglvideomixer: update element documentation
Matthew Waters [Tue, 30 Sep 2014 10:39:36 +0000 (20:39 +1000)]
glvideomixer: update element documentation

10 years agovideoaggregator: don't create converters when the subclass doesn't want them
Matthew Waters [Sun, 28 Sep 2014 06:58:42 +0000 (16:58 +1000)]
videoaggregator: don't create converters when the subclass doesn't want them

fixes a critical with glvideomixer after
35bd1969f912cecda0fb5df9595a005e6ddf4e7a

CRITICAL **: gst_video_converter_new: assertion 'in_info->width == out_info->width' failed

10 years agoglvideomixer: fix blending with low-alpha sources
Matthew Waters [Thu, 25 Sep 2014 15:34:54 +0000 (01:34 +1000)]
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).

10 years agovideo: use video lib conversion code instead of copy
Wim Taymans [Wed, 24 Sep 2014 14:55:49 +0000 (16:55 +0200)]
video: use video lib conversion code instead of copy

10 years agoglvideomixer: skip input frames with an alpha of 0
Matthew Waters [Wed, 24 Sep 2014 04:29:37 +0000 (14:29 +1000)]
glvideomixer: skip input frames with an alpha of 0

10 years agogl: download whenever we have sysmem capsfeatures
Matthew Waters [Wed, 24 Sep 2014 03:13:19 +0000 (13:13 +1000)]
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

10 years agoglupload: provide the output buffer that is rendered into
Matthew Waters [Sun, 21 Sep 2014 11:36:49 +0000 (21:36 +1000)]
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

10 years agogl: Removed unreachable break, unused variable
Sanjay NM [Fri, 19 Sep 2014 10:02:33 +0000 (15:32 +0530)]
gl: Removed unreachable break, unused variable

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

10 years agoglmixer: do not leak pool in error cases
Ognyan Tonchev [Tue, 16 Sep 2014 09:41:16 +0000 (11:41 +0200)]
glmixer: do not leak pool in error cases

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

10 years agoglmixer: unref the GstGLUpload in the pad if freed while running
Matthew Waters [Tue, 19 Aug 2014 07:01:36 +0000 (17:01 +1000)]
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.

10 years agoglvideomixer: avoid gl resource race condition between different thread
Wang Xin-yu (王昕宇) [Fri, 15 Aug 2014 03:51:21 +0000 (23:51 -0400)]
glvideomixer: avoid gl resource race condition between different thread

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

10 years agoglvideomixer: don't clobber unnecessary GstVideoInfo fields
Matthew Waters [Tue, 19 Aug 2014 04:44:29 +0000 (14:44 +1000)]
glvideomixer: don't clobber unnecessary GstVideoInfo fields

otherwise we might clobber other important fields such as the frame rate.

10 years agoglvideomixer: get the attribute from the correct shader
Matthew Waters [Tue, 19 Aug 2014 04:43:42 +0000 (14:43 +1000)]
glvideomixer: get the attribute from the correct shader

10 years agovideoaggregator: push the caps event as soon as we receive it
Matthew Waters [Thu, 7 Aug 2014 09:54:36 +0000 (19:54 +1000)]
videoaggregator: push the caps event as soon as we receive it

Along with the required mandatory dependent events.

Some elements need to perform an allocation query inside
::negotiated_caps().  Without the caps event being sent prior,
downstream elements will be unable to answer and will return
an error.

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

10 years agoopengl: update element docs for 1.x
Tim-Philipp Müller [Sun, 10 Aug 2014 17:07:28 +0000 (18:07 +0100)]
opengl: update element docs for 1.x

10 years agovideoaggregator: Unref allowed caps after usage
Sebastian Rasmussen [Sat, 9 Aug 2014 09:17:44 +0000 (11:17 +0200)]
videoaggregator: Unref allowed caps after usage

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

10 years agoglvideomixer: add a background property
Matthew Waters [Thu, 7 Aug 2014 09:18:49 +0000 (19:18 +1000)]
glvideomixer: add a background property

That's compatible with the compositor/videomixer property

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

10 years agogl: fix multi gl object leaks
Wang Xin-yu (王昕宇) [Wed, 23 Jul 2014 02:25:31 +0000 (10:25 +0800)]
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

10 years agogl: Move GstGLMixer to the plugin for now
Sebastian Dröge [Fri, 11 Jul 2014 07:41:05 +0000 (09:41 +0200)]
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

10 years agovideoaggregator: Fix some more the locking logic in update_src_caps
Thibault Saunier [Sun, 6 Jul 2014 21:30:53 +0000 (23:30 +0200)]
videoaggregator: Fix some more the locking logic in update_src_caps

We need the GST_OBJECT_LOCK only to iterate the sinkpads, nothing else.

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

10 years agovideoaggregator: fix broken locking in update_src_caps function
Tim-Philipp Müller [Sun, 6 Jul 2014 21:16:48 +0000 (22:16 +0100)]
videoaggregator: fix broken locking in update_src_caps function

We would unlock an already-unlocked mutex that we never re-locked.

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

10 years agovideoaggregator: reset QoS on segment event
Vincent Penquerc'h [Tue, 1 Jul 2014 11:52:39 +0000 (12:52 +0100)]
videoaggregator: reset QoS on segment event

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

10 years agobadvideo: Rename videoconvert functions to prevent conflicts with static linking
Sebastian Dröge [Sat, 28 Jun 2014 15:01:52 +0000 (17:01 +0200)]
badvideo: Rename videoconvert functions to prevent conflicts with static linking

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

10 years agocompositor: tests: Fix pad leak
Thiago Santos [Sat, 28 Jun 2014 12:43:48 +0000 (09:43 -0300)]
compositor: tests: Fix pad leak

Remember to unref requested pad

10 years agovideoaggregator: fix a refcount error when keeping the buffer
Matthew Waters [Thu, 26 Jun 2014 14:09:08 +0000 (00:09 +1000)]
videoaggregator: fix a refcount error when keeping the buffer

We take a ref on the pad's buffer at the beginning so we need to
unref when we are done in all cases.

10 years agogl: enable glvideomixer on GLES2
Julien Isorce [Sun, 22 Jun 2014 12:14:27 +0000 (13:14 +0100)]
gl: enable glvideomixer on GLES2

10 years agoglvideomixer: bas output width/height on the pad properties
Matthew Waters [Wed, 25 Jun 2014 02:00:34 +0000 (12:00 +1000)]
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

10 years agoglvideomixer: don't clobber already allocated shader
Matthew Waters [Wed, 25 Jun 2014 00:18:48 +0000 (10:18 +1000)]
glvideomixer: don't clobber already allocated shader

10 years agocompositor: Fix Makefile CFLAGS/LIBADD ordering
Edward Hervey [Tue, 24 Jun 2014 06:01:21 +0000 (08:01 +0200)]
compositor: Fix Makefile CFLAGS/LIBADD ordering

We want to use the libraries from -bad if/when present