platform/upstream/gst-plugins-base.git
9 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

9 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.

9 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

9 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.

9 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.

9 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.

9 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

9 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

9 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

9 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

10 years agovideoaggregator: don't clobber already heap allocated video frame
Matthew Waters [Mon, 23 Jun 2014 12:40:23 +0000 (22:40 +1000)]
videoaggregator: don't clobber already heap allocated video frame

CID # 1223440

10 years agovideoaggregator: fix up the parent chaining for dispose and finalize
Matthew Waters [Mon, 23 Jun 2014 12:36:23 +0000 (22:36 +1000)]
videoaggregator: fix up the parent chaining for dispose and finalize

10 years agoRelease 1.3.3
Sebastian Dröge [Sun, 22 Jun 2014 17:22:28 +0000 (19:22 +0200)]
Release 1.3.3

10 years agolibs:video: Properly declare APIs as UNSTABLE
Thibault Saunier [Sat, 21 Jun 2014 14:52:51 +0000 (16:52 +0200)]
libs:video: Properly declare APIs as UNSTABLE

10 years agolibs: videoaggregato: Do not import videoconvert.h in gstvideoaggregatorpad.h
Thibault Saunier [Fri, 20 Jun 2014 20:02:07 +0000 (22:02 +0200)]
libs: videoaggregato: Do not import videoconvert.h in gstvideoaggregatorpad.h

+ Add a Private structure to the GstVideoAggregatorPad
+ Add some padding

10 years agogl:glvideomixer: Add the Compositor in the element metadata class
Thibault Saunier [Fri, 20 Jun 2014 09:10:45 +0000 (11:10 +0200)]
gl:glvideomixer: Add the Compositor in the element metadata class

So it is possible to pick one compositing element from the registry

10 years agocompositor: Add a new compositor based on the new GstVideoAggregator base class
Mathieu Duponchelle [Thu, 22 May 2014 17:46:02 +0000 (19:46 +0200)]
compositor: Add a new compositor based on the new GstVideoAggregator base class

It is a replacement for videomixer with a similare API

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>

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

10 years agogl: Port glmixer to the GstVideoAggregator baseclass
Thibault Saunier [Tue, 10 Jun 2014 09:26:53 +0000 (11:26 +0200)]
gl: Port glmixer to the GstVideoAggregator baseclass

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

10 years agovideoaggregator: Create a new GstVideoAggregator baseclass
Mathieu Duponchelle [Tue, 3 Jun 2014 17:00:34 +0000 (19:00 +0200)]
videoaggregator: Create a new GstVideoAggregator baseclass

This base class has been added to a newly created libgstbadvideo library

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>

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

10 years agoglvideomixer: silence incorrect number of arguments in format warning
Matthew Waters [Sun, 15 Jun 2014 05:18:46 +0000 (15:18 +1000)]
glvideomixer: silence incorrect number of arguments in format warning

10 years agoglvideomixer: wire up the alpha pad property
Matthew Waters [Sun, 15 Jun 2014 03:59:07 +0000 (13:59 +1000)]
glvideomixer: wire up the alpha pad property

10 years agoglvideomixer: support input frame scaling
Matthew Waters [Sun, 15 Jun 2014 03:44:04 +0000 (13:44 +1000)]
glvideomixer: support input frame scaling

10 years agoglvideomixer: add positioning of input streams
Matthew Waters [Sun, 15 Jun 2014 02:26:21 +0000 (12:26 +1000)]
glvideomixer: add positioning of input streams

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

10 years agogl: test for frame NULLness before dereferencing it
Vincent Penquerc'h [Tue, 8 Apr 2014 15:23:50 +0000 (16:23 +0100)]
gl: test for frame NULLness before dereferencing it

Coverity 1195172, 1195171

10 years agogl: fix array initialization
Matthew Waters [Wed, 2 Apr 2014 12:05:11 +0000 (23:05 +1100)]
gl: fix array initialization

10 years agogl: fix assignment of temporary variables
Matthew Waters [Wed, 2 Apr 2014 11:43:41 +0000 (22:43 +1100)]
gl: fix assignment of temporary variables

10 years agomove gl elements to ext subdirectory
Matthew Waters [Sun, 16 Mar 2014 10:23:16 +0000 (11:23 +0100)]
move gl elements to ext subdirectory