Tim-Philipp Müller
b8e97659fe
videoaggregator: update for aggregator start/stop vfunc change
2014-12-30 17:56:35 +00:00
Tim-Philipp Müller
7d22da9510
aggregator: make padding larger
...
Esp. the class structures, can't have enough
spare space for virtual functions.
2014-12-28 01:13:33 +00:00
Nirbheek Chauhan
6351c0becc
glvideomixer: Point to compositor for the pad properties documentation
2014-12-27 11:05:17 +00:00
Nirbheek Chauhan
a27431c680
compositor: Document the pad properties
2014-12-27 11:04:52 +00:00
Sebastian Dröge
b9312fe9a2
videoaggregator: Use the src query implementation of aggregator as the default case
2014-12-22 22:12:02 +01:00
Sebastian Dröge
5c9472f78c
videoaggregator: Don't try to map NULL buffers
2014-12-18 22:04:38 +01:00
Sebastian Dröge
ccd24a3577
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.
2014-12-18 22:03:04 +01:00
Sebastian Dröge
a64445e543
compositor: Fix memory leak when no buffer is available for a pad currently
...
CID 1258718
2014-12-18 11:49:09 +01:00
Sebastian Dröge
6f0eb92d72
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.
2014-12-17 19:51:32 +01:00
Sebastian Dröge
26d1a22e90
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.
2014-12-17 18:41:41 +01:00
Matthew Waters
e354149436
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
2014-12-16 16:58:57 +01:00
Matthew Waters
8fe8510d80
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
2014-12-16 16:49:49 +01:00
Thibault Saunier
e8fda3a28a
videoaggregator: Hide some more fields from the API
...
+ Add some documentation
2014-12-12 11:49:42 +01:00
Matthew Waters
85febbbafb
gl: fixup vao and vbo usage for legacy GL
2014-12-11 19:41:23 +11:00
Sebastian Dröge
b212aca601
compositor: Failure to map a video frame is not just a warning
...
Also add some warning debug output if mapping a output buffer fails
2014-11-28 10:23:55 +01:00
Sebastian Dröge
6354e0235a
videoaggregator: Failure to map a video frame is not just a warning
2014-11-28 10:22:44 +01:00
Matthew Waters
c90f7001b1
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
8f86923b00
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
ad77f0392f
glvideomixer: add support for gl3
2014-11-28 09:14:25 +11:00
Sebastian Dröge
0b73de023c
videoaggregator: Minor cleanup
2014-11-27 21:23:36 +01:00
Sebastian Dröge
3e9b001013
compositor: Implement rescaling of the input via pad properties
...
compositor has now the same interface as glvideomixer.
2014-11-27 21:23:04 +01:00
Sebastian Dröge
fdc87a52f2
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.
2014-11-27 20:34:25 +01:00
Sebastian Dröge
4233ba4ca4
videoaggregator: Directly use the converters video-info instead of recalculating it
2014-11-27 20:25:29 +01:00
Sebastian Dröge
00880b5830
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.
2014-11-27 19:54:10 +01:00
Thibault Saunier
ec45cbda22
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
2014-11-27 19:10:58 +01:00
Thibault Saunier
8cc214fdb8
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
Thibault Saunier
a806b40135
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.
2014-11-27 19:10:58 +01:00
Sebastian Dröge
fc593bd2ca
videoaggregator: Also sync pad properties to the controller if conversion is disabled
2014-11-26 13:06:21 +01:00
Sebastian Dröge
dbadc6c8a5
compositor: Remove unused zorder pad property
...
It's handled in videoaggregator already.
2014-11-26 12:42:24 +01:00
Sebastian Dröge
170def9d43
compositor: GstVideoMeta is supported just fine, tell upstream about that
...
Also provide a GstVideoBufferPool to upstream just in case.
2014-11-25 19:03:21 +01:00
Matthew Waters
c337aab991
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
Sebastian Dröge
f2364cb398
videoaggregator: Don't output 0-duration buffers at the segment end
...
https://bugzilla.gnome.org/show_bug.cgi?id=740376
2014-11-19 17:06:52 +01:00
Matthew Waters
0ec9bf6140
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
2014-11-17 22:39:07 +11:00
Matthew Waters
d28854a625
glmixer: add read-only context property
2014-11-17 18:50:04 +11:00
Matthew Waters
f9c8268247
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
Sebastian Dröge
22825010c3
videoaggregator: Swap source/destination parameters of gst_video_converter_frame()
2014-11-03 16:13:23 +01:00
Matthew Waters
83c34503af
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
Luis de Bethencourt
2bf4a94179
videoaggregator: remove storage of never used values
...
These two values are stored just before the function returns and they go out of
scope.
2014-10-30 14:52:13 +00:00
Matthew Waters
eb11906f01
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
Wang Xin-yu (王昕宇)
b151f564c2
glmixer:fix incorrect parameter passed to handle_set_context
2014-10-29 20:43:31 +11:00
Matthew Waters
33584480b5
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
6687d39734
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
340542edc7
gl: propogate other-context using GstContext
2014-10-23 23:58:33 +11:00
Matthew Waters
be214eac0f
glmixer: fixup eglimage include path
2014-10-21 06:04:10 +11:00
Matthew Waters
165cdd20a7
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.
2014-10-21 02:53:02 +11:00
Matthew Waters
7b4db67f6c
glbufferpool: add the GstVideoGLTextureUploadMeta buffer pool option
2014-10-21 02:00:09 +11:00
Matthew Waters
8bf2acba1d
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
318b55e3ae
glmixer: Call the pad's parent class finalize method
2014-10-13 13:27:55 +02:00
Sebastian Dröge
21275caae5
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
a92ffca745
glmixer: Add other-context property
2014-10-13 11:57:22 +02:00