Currently, videocrop, only negotiates raw caps (system memory) because
it's the type of memory it can modify. Nonetheless, it's also possible
for the element to handle non-raw caps when only adding the crop meta
is possible, in other words, when downstream buffer pools expose the
crop API.
This patch enable non-raw caps negotiation. If downstream doesn't
expose crop API and negotiated caps are featured, the negotiation
fails.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/915>
- Refactored the planar transform method to support all video formats
that are stored planar, independent of the used subsampling
- Added support for Y444
When in-place, running an allocation is not useful since videocrop
is not implicated in the allocation. So only force the allocation
query for the case it was in passthrough. This is needed since the
change in the crop region will likely pull us out of this mode. For the
case we where neither in passthrough or in-place, the allocation query
is already ran by the baseclass, so nothing special is needed.
This fixes performance issues when changing the crop region per frame.
This was reproduced using videocrop2-test.
Since "basetransform: Fix caps equality check" commit a7f357,
set_info() will not be called anymore if crop didn't change
the caps. This is fixed by setting "need_update" boolean when
cropping properties has been changed, and then applying these
if they where not applied before rendering the next frame. This
patch also fixed the locking, dropping un-needed custom lock,
and no holding needless lock while doing the operation as we
already hold the streaming lock.
https://bugzilla.gnome.org/show_bug.cgi?id=740787
This change enable automatic cropping using -1 set to left, top, right or
bottom property. In the case both side are set to automatic cropping, the
croping will be done equally on both side (in the odd case, right and
bottom cropping will be 1 pixel more).
https://bugzilla.gnome.org/show_bug.cgi?id=687761
Link to properties. Correct titles for examples. Document a few trivial cases. Keep lists in section file and docs/plugins/Makefile.am alphabetically ordered.
Original commit message from CVS:
Patch by: Luotao Fu <l dot fu at pengutronix dot de>
* gst/videocrop/gstvideocrop.c:
(gst_video_crop_get_image_details_from_caps):
Add 8bit grayscale support to videocrop plugin. Fixes#567952.
Original commit message from CVS:
* gst/videocrop/gstvideocrop.c: (gst_video_crop_init),
(gst_video_crop_transform), (gst_video_crop_transform_caps),
(gst_video_crop_set_caps), (gst_video_crop_set_property):
* gst/videocrop/gstvideocrop.h:
Fix renegotiation when changing properties using the new basetransform
features. Fixes#561502.
* tests/icles/Makefile.am:
* tests/icles/videocrop2-test.c: (make_pipeline), (main):
Add crazy interactive test unit for dynamically changing properties.
Original commit message from CVS:
* gst/videocrop/gstvideocrop.c:
(gst_video_crop_get_image_details_from_caps),
(gst_video_crop_transform_packed_complex):
Fix cropping for packed 4:2:2 formats YUYV/YUY2 and UYVY.
* tests/icles/videocrop-test.c: (check_bus_for_errors),
(test_with_caps), (main):
Block streaming thread before changing filter caps while the
pipeline is running so that we don't get random not-negotiated
errors just because GStreamer can't handle that yet.
Original commit message from CVS:
* configure.ac:
Bump requirements of -base (videocrop test case needs this).
* gst/videocrop/gstvideocrop.c:
Document sloppy handling of subsampled chroma planes if
left/top cropping is an odd number.
* tests/check/elements/videocrop.c: (handoff_cb),
(videocrop_test_cropping_init_context),
(videocrop_test_cropping_deinit_context),
(videocrop_test_cropping), (check_1x1_buffer), (GST_START_TEST),
(videocrop_suite), (main):
Add another unit test that crops the input to 1x1 (and checks
that that pixel has the expected values in a number of formats).
Original commit message from CVS:
* gst/videocrop/Makefile.am:
* gst/videocrop/gstvideocrop.c: (gst_video_crop_class_init),
(gst_video_crop_transform_packed),
(gst_video_crop_transform_planar):
Some quick tests indicate that it doesn't make a great deal
of sense to use liboil here, at least not for the memcpy()s
we do, so remove liboil usage until there is clear evidence
it actually makes a positive difference somewhere.
Original commit message from CVS:
* configure.ac:
* gst/videocrop/Makefile.am:
* gst/videocrop/gstvideocrop.c: (gst_video_crop_base_init),
(gst_video_crop_class_init), (gst_video_crop_init),
(gst_video_crop_get_image_details_from_caps),
(gst_video_crop_get_unit_size), (gst_video_crop_transform_packed),
(gst_video_crop_transform_planar), (gst_video_crop_transform),
(gst_video_crop_transform_dimension),
(gst_video_crop_transform_dimension_value),
(gst_video_crop_transform_caps), (gst_video_crop_set_caps),
(gst_video_crop_set_property), (gst_video_crop_get_property),
(plugin_init):
Port/rewrite videocrop from scratch for GStreamer-0.10, and make
it support all formats videoscale supports (#345653).