summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
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.
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
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.
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
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
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.
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
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.
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.
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.
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
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
Matthew Waters [Mon, 17 Nov 2014 07:50:04 +0000 (18:50 +1100)]
glmixer: add read-only context property
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
Sebastian Dröge [Mon, 3 Nov 2014 15:13:23 +0000 (16:13 +0100)]
videoaggregator: Swap source/destination parameters of gst_video_converter_frame()
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
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.
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.
Wang Xin-yu (王昕宇) [Wed, 29 Oct 2014 00:27:57 +0000 (08:27 +0800)]
glmixer:fix incorrect parameter passed to handle_set_context
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.
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.
Matthew Waters [Thu, 14 Aug 2014 13:29:00 +0000 (23:29 +1000)]
gl: propogate other-context using GstContext
Matthew Waters [Mon, 20 Oct 2014 19:04:10 +0000 (06:04 +1100)]
glmixer: fixup eglimage include path
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.
Matthew Waters [Sat, 18 Oct 2014 08:03:43 +0000 (10:03 +0200)]
glbufferpool: add the GstVideoGLTextureUploadMeta buffer pool option
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
Sebastian Dröge [Mon, 13 Oct 2014 11:27:55 +0000 (13:27 +0200)]
glmixer: Call the pad's parent class finalize method
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.
Sebastian Dröge [Mon, 13 Oct 2014 09:53:47 +0000 (11:53 +0200)]
glmixer: Add other-context property
Matthew Waters [Mon, 6 Oct 2014 10:46:24 +0000 (21:46 +1100)]
aggregator: add latency query handling
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.
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
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.
Thibault Saunier [Wed, 30 Jul 2014 09:57:46 +0000 (11:57 +0200)]
videoaggregator: Make sure not to unref a NULL pointer
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
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
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
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.
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
Matthew Waters [Tue, 30 Sep 2014 10:39:36 +0000 (20:39 +1000)]
glvideomixer: update element documentation
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
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).
Wim Taymans [Wed, 24 Sep 2014 14:55:49 +0000 (16:55 +0200)]
video: use video lib conversion code instead of copy
Matthew Waters [Wed, 24 Sep 2014 04:29:37 +0000 (14:29 +1000)]
glvideomixer: skip input frames with an alpha of 0
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
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
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
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
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.
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
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.
Matthew Waters [Tue, 19 Aug 2014 04:43:42 +0000 (14:43 +1000)]
glvideomixer: get the attribute from the correct shader
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
Tim-Philipp Müller [Sun, 10 Aug 2014 17:07:28 +0000 (18:07 +0100)]
opengl: update element docs for 1.x
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
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
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
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
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
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
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
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
Thiago Santos [Sat, 28 Jun 2014 12:43:48 +0000 (09:43 -0300)]
compositor: tests: Fix pad leak
Remember to unref requested pad
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.
Julien Isorce [Sun, 22 Jun 2014 12:14:27 +0000 (13:14 +0100)]
gl: enable glvideomixer on GLES2
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
Matthew Waters [Wed, 25 Jun 2014 00:18:48 +0000 (10:18 +1000)]
glvideomixer: don't clobber already allocated shader
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
Matthew Waters [Mon, 23 Jun 2014 12:40:23 +0000 (22:40 +1000)]
videoaggregator: don't clobber already heap allocated video frame
CID # 1223440
Matthew Waters [Mon, 23 Jun 2014 12:36:23 +0000 (22:36 +1000)]
videoaggregator: fix up the parent chaining for dispose and finalize
Sebastian Dröge [Sun, 22 Jun 2014 17:22:28 +0000 (19:22 +0200)]
Release 1.3.3
Thibault Saunier [Sat, 21 Jun 2014 14:52:51 +0000 (16:52 +0200)]
libs:video: Properly declare APIs as UNSTABLE
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
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
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
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
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
Matthew Waters [Sun, 15 Jun 2014 05:18:46 +0000 (15:18 +1000)]
glvideomixer: silence incorrect number of arguments in format warning
Matthew Waters [Sun, 15 Jun 2014 03:59:07 +0000 (13:59 +1000)]
glvideomixer: wire up the alpha pad property
Matthew Waters [Sun, 15 Jun 2014 03:44:04 +0000 (13:44 +1000)]
glvideomixer: support input frame scaling
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
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
Matthew Waters [Wed, 2 Apr 2014 12:05:11 +0000 (23:05 +1100)]
gl: fix array initialization
Matthew Waters [Wed, 2 Apr 2014 11:43:41 +0000 (22:43 +1100)]
gl: fix assignment of temporary variables
Matthew Waters [Sun, 16 Mar 2014 10:23:16 +0000 (11:23 +0100)]
move gl elements to ext subdirectory