Matthew Waters
e03e983e90
videoaggregator: don't do caps processing that is not overridable
...
Allows the subclass to completely override the chosen src caps.
This is needed as videoaggregator generally has no idea exactly
what operation is being performed.
- Adds a fixate_caps vfunc for fixation
- Merges gst_video_aggregator_update_converters() into
gst_videoaggregator_update_src_caps() as we need some of its info
for proper caps handling.
- Pass the downstream caps to the update_caps vfunc
https://bugzilla.gnome.org/show_bug.cgi?id=756207
2017-12-09 19:32:15 +00:00
Matthew Waters
2cef90184e
gl: move control binding proxy implementation from glvideomixer
...
Other elements may need to use it's functionality
2017-12-09 19:32:15 +00:00
Matthew Waters
1d55ce912b
glvideomixer: implement glBlendFunc and glBlendEquation
...
Allows more blending options than just A over B
e.g. frame comparisons are now possible.
glvideomixer name=m
sink_0::zorder=0
sink_1::zorder=1
sink_1::blend-equation-rgb={subtract,reverse-subtract}
sink_1::blend-function-src-rgb=src-color
sink_1::blend-function-dst-rgb=dst-color
! glimagesinkelement
videotestsrc pattern=checkers-4 ! m.sink_0
videotestsrc pattern=checkers-8 ! m.sink_1
2017-12-09 19:32:14 +00:00
Nirbheek Chauhan
5890c51bd3
glvideomixer: Proxy the ignore-eos videoaggregator property as well
...
Identical to how the z-order property is proxied
2017-12-09 19:32:09 +00:00
Matthew Waters
dec64d9036
glvideomixer: swap control binding proxy
...
The ref_object and object parameters were the wrong way around.
For the typical use case where an application is setting a
GstControlBinding on the returned ghost pad:
1. our control binding would be removed when the new one was set
2. sync_values calls were not being forwarded from the internal
pad to the ghost pad.
If an application attempts to perform other control binding
operations (get_* family of functions) on the internal pad, they
will also be forwarded to the ghost pad where a possible
GstControlBinding will provide the necessary values.
2017-12-09 19:32:07 +00:00
Olivier Crête
f59948c5c0
glvideomixer: Add GstControlBinding proxy
...
This is used to proxy GstControlBinding to the pad on the
parent object. This avoid having to sync the values in the proxy pad,
this is too early if you have a queue between the pad and the actual
aggregation operation.
https://bugzilla.gnome.org/show_bug.cgi?id=734060
2017-12-09 19:32:06 +00:00
Olivier Crête
1c99bc92ca
glvideomixer, glmixer: Add description and klass
2017-12-09 19:32:05 +00:00
Sebastian Dröge
5503937337
compositor/glvideomixer: Don't calculate PAR/DAR with unset GstVideoInfos
...
Otherwise we divide by zero.
2017-12-09 19:32:02 +00:00
Matthew Waters
44153e637b
compositor/glvideomixer: fix up par handling
...
We were using the wrong formula
https://bugzilla.gnome.org/show_bug.cgi?id=749634
2017-12-09 19:32:01 +00:00
Matthew Waters
72993f54fa
gl: remove useless gl{En,Dis}able (GL_TEXTURE_*) calls
...
We are using shaders everywhere and so they are not needed
2017-12-09 19:32:01 +00:00
Matthew Waters
65c57b77ff
gl: element buffers are part of vao state
...
Use them as such. They are also required for GL3 core profile support
with glDrawElements on OS X.
2017-12-09 19:32:01 +00:00
Matthew Waters
06cbb3389b
glvideomixer: implement par handling
...
We were previously ignoring it completely
2017-12-09 19:32:01 +00:00
Matthew Waters
5d3dd13433
glvideomixer: don't upload the vertex data every frame
...
Add the missing cache tracking statement.
2017-12-09 19:32:01 +00:00
Sebastian Dröge
3d6031b75c
Revert "Revert "glvideomixer: implement with glmixerbin""
...
This reverts commit b4bd11f2f3
.
2017-12-09 19:32:00 +00:00
Matthew Waters
eb5d578a95
Revert "glvideomixer: implement with glmixerbin"
...
This reverts commit 0fb56738a1
.
2017-12-09 19:32:00 +00:00
Edward Hervey
36419f2f79
glvideomixer: Don't use context if not present
...
Avoids assertions at runtime
2017-12-09 19:31:58 +00:00
Matthew Waters
92f0aa9bd8
gl: get the context from basemixer/basefilter
2017-12-09 19:31:57 +00:00
Matthew Waters
b42e4ba079
glvideomixer: implement with glmixerbin
...
The relevant properties are forwarded to/from the containing bin
and sink pads.
2017-12-09 19:31:57 +00:00
Matthew Waters
02fdc64844
glvideomixer: don't upload if alpha <= 0
...
Implemented using a upload_buffer vfunc within GstGLMixer allowing
NULL uploaded buffers.
2017-12-09 19:31:52 +00:00
Tim-Philipp Müller
3c3ca1c842
glmixer, glvideomixer: update for GstAggregatorPadForeachFunc change
2017-12-09 19:31:52 +00:00
Nirbheek Chauhan
c1b1f546d5
glvideomixer: Point to compositor for the pad properties documentation
2017-12-09 19:31:52 +00:00
Matthew Waters
ba3a3cd783
gl: fixup vao and vbo usage for legacy GL
2017-12-09 19:31:52 +00:00
Matthew Waters
4bd62ebb03
gldisplay: implement runtime GL api filtering
...
Needed so that the pipeline/application can limit the choice of GL api
to what it supports
2017-12-09 19:31:51 +00:00
Matthew Waters
65c89e07fb
glvideomixer: add support for gl3
2017-12-09 19:31:51 +00:00
Matthew Waters
3cccd77d5d
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
2017-12-09 19:31:48 +00:00
Matthew Waters
d30a476c1c
glvideomixer: update element documentation
2017-12-09 19:31:47 +00:00
Matthew Waters
f5006bdf09
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).
2017-12-09 19:31:46 +00:00
Matthew Waters
07489f7b76
glvideomixer: skip input frames with an alpha of 0
2017-12-09 19:31:46 +00:00
Matthew Waters
c9d63878dd
glvideomixer: don't clobber unnecessary GstVideoInfo fields
...
otherwise we might clobber other important fields such as the frame rate.
2017-12-09 19:31:45 +00:00
Matthew Waters
fc1b2298d6
glvideomixer: get the attribute from the correct shader
2017-12-09 19:31:45 +00:00
Tim-Philipp Müller
6bbcefe029
opengl: update element docs for 1.x
2017-12-09 19:31:45 +00:00
Matthew Waters
e18905d057
glvideomixer: add a background property
...
That's compatible with the compositor/videomixer property
https://bugzilla.gnome.org/show_bug.cgi?id=731954
2017-12-09 19:31:45 +00:00
Julien Isorce
c18a109b42
gl: enable glvideomixer on GLES2
2017-12-09 19:31:43 +00:00
Matthew Waters
d86208e6ad
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
2017-12-09 19:31:43 +00:00
Matthew Waters
dc4f9575b1
glvideomixer: don't clobber already allocated shader
2017-12-09 19:31:43 +00:00
Thibault Saunier
097373ed19
gl:glvideomixer: Add the Compositor in the element metadata class
...
So it is possible to pick one compositing element from the registry
2017-12-09 19:31:43 +00:00
Thibault Saunier
30a9ef3768
gl: Port glmixer to the GstVideoAggregator baseclass
...
https://bugzilla.gnome.org/show_bug.cgi?id=731921
2017-12-09 19:31:43 +00:00
Matthew Waters
21c0eed027
glvideomixer: silence incorrect number of arguments in format warning
2017-12-09 19:31:43 +00:00
Matthew Waters
b1e3630974
glvideomixer: wire up the alpha pad property
2017-12-09 19:31:43 +00:00
Matthew Waters
8226bb24cc
glvideomixer: support input frame scaling
2017-12-09 19:31:43 +00:00
Matthew Waters
fc45211a9d
glvideomixer: add positioning of input streams
...
https://bugzilla.gnome.org/show_bug.cgi?id=729798
2017-12-09 19:31:43 +00:00
Vincent Penquerc'h
07565d0ff7
gl: test for frame NULLness before dereferencing it
...
Coverity 1195172, 1195171
2017-12-09 19:31:36 +00:00
Matthew Waters
173b234ed2
gl: fix array initialization
2017-12-09 19:31:35 +00:00
Matthew Waters
b70069bc61
gl: fix assignment of temporary variables
2017-12-09 19:31:35 +00:00
Matthew Waters
a884d6feee
move gl elements to ext subdirectory
2017-12-09 19:31:34 +00:00