Matthew Waters
8bf53a1226
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
a7e86751bf
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
aa25d0ab4c
videoaggregator: Hide some more fields from the API
...
+ Add some documentation
2014-12-12 11:49:42 +01:00
Sebastian Dröge
8a8444ebe7
videoaggregator: Failure to map a video frame is not just a warning
2014-11-28 10:22:44 +01:00
Sebastian Dröge
1200f2f94b
videoaggregator: Minor cleanup
2014-11-27 21:23:36 +01:00
Sebastian Dröge
fbf7595ca8
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
b301cb1fc9
videoaggregator: Directly use the converters video-info instead of recalculating it
2014-11-27 20:25:29 +01:00
Sebastian Dröge
11740d78b1
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
a61d2e4e07
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
9d8055186d
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
c7b7f98df2
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
3d38dff076
videoaggregator: Also sync pad properties to the controller if conversion is disabled
2014-11-26 13:06:21 +01:00
Sebastian Dröge
6c0d01ce17
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
f4a10c64c8
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
Sebastian Dröge
9f09b6ff0b
videoaggregator: Swap source/destination parameters of gst_video_converter_frame()
2014-11-03 16:13:23 +01:00
Luis de Bethencourt
0df9279026
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
75413ae9aa
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
f0caf04ad6
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
Matthew Waters
b9db635f48
aggregator: add latency query handling
2014-10-09 23:52:11 +11:00
Matthew Waters
8a3993913f
videoaggregator: support unresponsive pads
...
Render unresponsive pads with the last video frame received.
2014-10-09 23:52:11 +11:00
Matthew Waters
c23cd9c3be
videoaggregator: remove the use of the queued buffer on sink pads
...
That data is now held by the aggregator class
2014-10-09 23:52:11 +11:00
Thibault Saunier
7091b0418d
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.
2014-10-06 18:57:28 +02:00
Thibault Saunier
b812bd454d
videoaggregator: Make sure not to unref a NULL pointer
2014-10-06 18:57:28 +02:00
Sebastian Dröge
58e186fe2b
videoaggregator: Unmap and free GstVideoFrames as needed after conversion and errors
2014-10-06 10:11:47 +03:00
Thibault Saunier
3637296ee9
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
2014-10-03 13:18:05 +02:00
Sebastian Dröge
03a5bc82db
videoaggregator: Also copy over the chroma siting and colorimetry when deciding on a conversion
2014-10-01 17:22:59 +03:00
Sebastian Dröge
f2af838837
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.
2014-10-01 17:18:05 +03:00
Sebastian Dröge
154eb9b508
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
2014-10-01 17:11:16 +03:00
Josep Torra
5b79423416
video: fix build in gst-uninstalled setup
...
Include the base video lib appropriately and resort all of them as
thaytan suggested.
2014-09-28 18:03:09 +02:00
Matthew Waters
2043def155
videoaggregator: don't create converters when the subclass doesn't want them
...
fixes a critical with glvideomixer after
35bd1969f9
CRITICAL **: gst_video_converter_new: assertion 'in_info->width == out_info->width' failed
2014-09-28 16:58:42 +10:00
Wim Taymans
35bd1969f9
video: use video lib conversion code instead of copy
2014-09-24 16:55:49 +02:00
Matthew Waters
7c016752d7
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
2014-08-11 23:36:27 +10:00
Sebastian Rasmussen
ee09d332bd
videoaggregator: Unref allowed caps after usage
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734522
2014-08-10 11:55:09 +01:00
Sebastian Dröge
f6f1c0ac34
video: Properly include headers in Makefile.am
...
and don't set noinst_HEADERS twice.
2014-07-11 12:01:12 +02:00
Sebastian Dröge
f701aa29b9
libs: Don't install headers and pc files for libgstwayland/badvideo/badbase
...
These will disappear after 1.4.0 and it would be rather annoying if
people started depending on them.
https://bugzilla.gnome.org/show_bug.cgi?id=732207
2014-07-11 09:33:57 +02:00
Thibault Saunier
e4b07ee51d
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
2014-07-06 23:36:10 +02:00
Tim-Philipp Müller
341dc8aecf
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
2014-07-06 22:16:48 +01:00
Vincent Penquerc'h
2a7c05592d
videoaggregator: reset QoS on segment event
...
https://bugzilla.gnome.org/show_bug.cgi?id=732540
2014-07-01 16:35:42 +01:00
Sebastian Dröge
ace64ca3e5
badvideo: Update dist generated ORC files
2014-06-28 17:03:19 +02:00
Sebastian Dröge
286a80ab18
badvideo: Rename videoconvert functions to prevent conflicts with static linking
...
https://bugzilla.gnome.org/show_bug.cgi?id=728443
2014-06-28 17:03:19 +02:00
Matthew Waters
2e83aca728
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.
2014-06-27 00:14:03 +10:00
Matthew Waters
8f716555ba
videoaggregator: don't clobber already heap allocated video frame
...
CID # 1223440
2014-06-23 22:40:23 +10:00
Matthew Waters
5d1efa193f
videoaggregator: fix up the parent chaining for dispose and finalize
2014-06-23 22:36:23 +10:00
Sebastian Dröge
6d3d06c91f
Release 1.3.3
2014-06-22 19:22:28 +02:00
Sebastian Dröge
f5356dc697
video: Link with $(LIBM) for rint() and others
2014-06-22 18:52:54 +02:00
Thibault Saunier
bc5e230040
libs:video: Properly declare APIs as UNSTABLE
2014-06-21 17:02:50 +02:00
Thibault Saunier
f9ff8cd7c8
libs:video: Add -I$(top_srcdir)/gst-libs to fix distcheck
2014-06-21 15:40:58 +02:00
Thibault Saunier
1bfee113c4
libs: videoaggregato: Do not import videoconvert.h in gstvideoaggregatorpad.h
...
+ Add a Private structure to the GstVideoAggregatorPad
+ Add some padding
2014-06-20 22:14:25 +02:00
Thibault Saunier
32d64d1863
Final fix compilation
2014-06-20 21:28:12 +02:00
Thibault Saunier
b4799dd17b
libs:video:Fix compilation
2014-06-20 20:35:45 +02:00