Commit graph

225 commits

Author SHA1 Message Date
Matthew Waters
98249a57db gst: don't use volatile to mean atomic
volatile is not sufficient to provide atomic guarantees and real atomics
should be used instead.  GCC 11 has started warning about using volatile
with atomic operations.

https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719

Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1073>
2021-03-19 04:20:19 +00:00
Stéphane Cerveau
90f640d90d videoscale: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.

More details here:

https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1029>
2021-03-16 17:59:00 +00:00
Vivia Nikolaidou
b7b3ec6a6e videoscale: Support for alternate-field interlacing
Accept the negotiation, video-converter.c is aware of the half-height
already

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1027>
2021-02-04 18:28:54 +02:00
Marijn Suijten
abb026ec6a gl,video: Make ptrs to VideoInfo and (GL)AllocationParams immutable
These parameters are incorrectly regarded as mutable in G-IR making them
"incompatible" with languages that are explicit about mutability like
Rust. In order to clean up the code and expected API there, update the
signatures here, right at the source (instead of overriding them in
Gir.toml and hoping for the best).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1005>
2021-01-14 11:53:10 +00:00
Jan Alexander Steffens (heftig)
aa89ae8beb audio: video: Fix in/outbuf confusion of transform_meta
There are three instances where in- and outbuf have been swapped. This
didn't affect the correctness of the libs *filter code, but the
videoscale implementation swapped the arguments of meta->transform_func.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/853>
2020-10-08 18:30:39 +02:00
Tim-Philipp Müller
4f12ce6213 videoscale: make local quark vars static
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/802>
2020-08-28 12:30:43 +01:00
Sebastian Dröge
3edf390b4c videorate/videoscale/audioresample: Ensure that the caps returned from fixate_caps() are actually fixated
If there is some other field than the ones we care about left and not
fixated yet then basetransform will just error out. So instead just pass
the result through gst_caps_fixate() in the very end.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/799>
2020-08-26 09:10:29 +00:00
Sebastian Dröge
39dbbf1369 videoscale: Don't call NULL GstMeta transform function
It's optional and if it does not exist then no transformation is
possible.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/790>
2020-08-18 10:26:48 +03:00
Mathieu Duponchelle
cc516695b0 plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:41:17 +02:00
Mathieu Duponchelle
e666c9ec04 plugins: Use gst_type_mark_as_plugin_api() for all non-element plugin types 2020-06-03 22:44:23 -04:00
Michael Gruner
9a94b4cbc1 videoscale: reorder code to avoid indent missmatches
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/548>
2020-05-29 00:44:07 +00:00
Michael Gruner
c0ca12a3fb videoscale: transform size sensitive metas
Currently, videoscale just drops all metas that have other tags
besides video. However videoscale wont change the colorspace or
the orientation of the video so metas tagged as such may be
copied safely. Additionaly, given that videoscale will change
the frame size, we invoke the meta transform implementation
to give it the opportunity to scale accordingly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/548>
2020-05-29 00:44:07 +00:00
Jan Alexander Steffens (heftig)
8cffa72356 videoscale: Round when fixating to nearest ints to reduce error 2019-01-14 10:18:21 +00:00
Jan Alexander Steffens (heftig)
89519e8809 videoscale: Choose the best dimensions for fixed PAR
We might not get an exact match for width or height if stepped ranges
are involved.
2019-01-14 10:18:21 +00:00
Thibault Saunier
099ac9faf2 docs: Convert gtkdoc comments to markdown
Modernizing the documentation, making it simpler to read an
modify and allowing us to possibly switch to hotdoc in the
future.
2017-03-10 18:19:17 -03:00
Sebastian Dröge
49ac382b47 video-converter: Implement multi-threaded scaling/conversion
This adds a property to select the maximum number of threads to use for
conversion and scaling. During processing, each plane is split into
an equal number of consecutive lines that are then processed by each
thread.

During tests, this gave up to 1.8x speedup with 2 threads and up to 3.2x
speedup with 4 threads when converting e.g. 1080p to 4k in v210.

https://bugzilla.gnome.org/show_bug.cgi?id=778974
2017-02-23 21:55:29 +02:00
Tim-Philipp Müller
a62c7bd54c Fix use of undeclared core debug category symbols
libgstreamer currently exports some debug category
symbols GST_CAT_*, but those are not declared in any
public headers.

Some plugins and libgstvideo just use GST_DEBUG_CATEGORY_EXTERN()
to declare and use those, but that's just not right at
all, and it won't work on Windows with MSVC. Instead look
up the categories via the API.
2016-02-20 11:31:43 +00:00
Wim Taymans
3d733ad09f videoscale: fix gamma-decode option
We need to use the enum to configure the option now.
2015-09-03 17:56:05 +02:00
Wim Taymans
14083178b8 video: improve logging
Add logging categories for most video objects.
Remove some useless debug lines in video-info and videotestsrc.
Add a performance debug line in the video scaler.
2015-07-15 12:47:42 +02:00
Stefan Sauer
68c5adec38 videoscale: fix debug categories
Use a local category for the default category and fix the import for the
performance category.
2015-07-03 21:08:03 +02:00
Tim-Philipp Müller
ec5c93f169 docs: update element example pipelines
- gst-launch -> gst-launch-1.0
- use autoaudiosink and audiovideosink more often
- review pipeline examples and descriptions
2015-05-10 11:38:19 +01:00
Vivia Nikolaidou
c9cfd0196f video-converter: Change some implicit string enums to real enums
GST_VIDEO_CONVERTER_OPT_ALPHA_MODE, GST_VIDEO_CONVERTER_OPT_CHROMA_MODE,
GST_VIDEO_CONVERTER_OPT_MATRIX_MODE, GST_VIDEO_CONVERTER_OPT_GAMMA_MODE and
GST_VIDEO_CONVERTER_OPT_PRIMARIES_MODE were G_TYPE_STRING with only a few valid
options. Changed those to real enums.

https://bugzilla.gnome.org/show_bug.cgi?id=749104
2015-05-08 15:13:54 +02:00
Luis de Bethencourt
f85212ed4b videoscale: fix memory leak
In gst_video_scale_fixate_caps () it can goto done without freeing the memory
of the tmp GstStructure. This makes it go out of scope and leak.

CID #1265766
2015-02-04 12:09:45 +00:00
Wim Taymans
47bd6a138c videoscale: don't do dithering 2015-01-28 17:30:53 +01:00
Wim Taymans
3db8879f25 videoscale: disable chroma and matrix operations
Ignore chroma subsampling and color matrix transformations like the
old videoscale used to do. This is to make the performance like it was
before.

See https://bugzilla.gnome.org/show_bug.cgi?id=741987
2015-01-27 10:52:29 +01:00
Wim Taymans
9efbba8c1c videoscale: use old property name
Unbreak ABI by changing to the old property name again.

https://bugzilla.gnome.org/show_bug.cgi?id=740798
2014-11-27 09:47:41 +01:00
Wim Taymans
43f44d41dc videoscale: add property to do scaling after gamma-decode 2014-11-25 11:54:51 +01:00
Wim Taymans
724b83c5f5 videoscale: add more scaling filters
Adjust the filter parameters so that they use the same number of taps
and method as the old ones.
Add some new filters
2014-11-25 11:28:42 +01:00
Wim Taymans
835422b2ea videoscale: port to new API 2014-11-10 11:45:52 +01:00
Luis de Bethencourt
f638f3b32b videoscale: remove FIXME about NV21 support
NV21 is already supported so removing FIXME about adding support for it.
2014-10-08 16:50:52 +01:00
Ravi Kiran K N
f16cf75194 videoscale: support lanczos method for NV formats
Support lanczos scaling method for NV12 and NV21 formats.
Scale the 'Y' plane and scale 'NV' plane.
Implementation for submethods - int16, int32, float and double

https://bugzilla.gnome.org/show_bug.cgi?id=737400
2014-09-26 13:05:18 +01:00
Sanjay NM
6babe786f7 videoscale: Added NV support for 4Tap resize
https://bugzilla.gnome.org/show_bug.cgi?id=736845
2014-09-18 13:31:08 +03:00
Sanjay NM
8cab1ab5fc videoscale: Add NV21 support
https://bugzilla.gnome.org/show_bug.cgi?id=734650
2014-08-12 14:31:48 +03:00
Tim-Philipp Müller
bcb8068e27 docs: remove outdated and pointless 'Last reviewed' lines from docs
They are very confusing for people, and more often than not
also just not very accurate. Seeing 'last reviewed: 2005' in
your docs is not very confidence-inspiring. Let's just remove
those comments.
2014-04-26 23:28:57 +01:00
Antonio Ospite
fdfc6baf14 videoscale: fix adding borders when NV12 is used
When the frame buffer is NV12 the borders are not added at all, fix that
and fill them to black.

https://bugzilla.gnome.org/show_bug.cgi?id=711003
2013-10-30 18:38:21 +01:00
Sebastian Dröge
882677eb8e videoscale: Allow passthrough for ANY caps features 2013-04-08 08:30:38 +02:00
David Schleef
c07efdabd8 videoscale: set reasonable limits on properties
Properties sharpen, sharpness, and envelope are only useful
near their default values.  Decrease ranges to avoid brokenness.

https://bugzilla.gnome.org/show_bug.cgi?id=682171
2013-04-06 13:19:44 -07:00
Stefan Sauer
c2b34b05de videoscale: set min value to DBL_MIN to avoid a value of 0.0 that would crash 2013-04-05 22:39:43 +02:00
Sebastian Dröge
575f0640ed videoscale: Let the add-borders property default to TRUE
It's undesirable most of the time that the display aspect ratio
is changed.
2013-03-21 11:14:41 +01:00
Jan Schole
8e791d52aa videoscale: Correct DAR and border calculations
changed: gst_video_scale_set_info in gst/videoscale/gstvideoscale.c
DAR on sink side now calculated with PAR on sink side
ratio of output width/height now calculated with inverse PAR
additional condition that borders are 0:0 for passthrough mode

https://bugzilla.gnome.org/show_bug.cgi?id=696019
2013-03-21 11:13:49 +01:00
Wim Taymans
0085a77919 videoscale: scale each field in interlace mode
When we are dealing with interlaced content, scale each field intependently so
that we don't destroy the interlacing.

See https://bugzilla.gnome.org/show_bug.cgi?id=588535
2013-02-05 10:49:57 +01:00
Tim-Philipp Müller
5f59b4f7ee Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 23:05:09 +00:00
Wim Taymans
280e504ae5 videoscale: improve handling of navigation events
Only make the navigation event writable when we need to change it.
2012-09-11 10:56:43 +02:00
Tim-Philipp Müller
8d284f8387 videoscale: mark Lanczos method as experimental/unstable
It's known to crash in some circumstances.
2012-08-18 21:33:38 +01:00
Tim-Philipp Müller
d4f582edd6 tests: silence FIXMEs when running videoscale unit test 2012-08-05 17:21:31 +01:00
Tim-Philipp Müller
7892e1e22f videoscale: fix 4-tap scaling for 64-bpp formats
Fix invalid memory access caused by broken pointer arithmetic.

If we have a uint16_t *tmpbuf and add n * dest->stride to it, we
skip twice as much as we intended to because dest->stride is in
bytes and not in pixels. This made us write beyond the end of
our allocated temp buffer, and made the unit test crash.
2012-08-04 22:05:21 +01:00
Tim-Philipp Müller
e29098f8f0 videoscale: remove formats Y800 and Y16 which no longer exist from template caps
Should help with the unit test, which has been failing.
2012-07-17 00:27:17 +01:00
Wim Taymans
059a6ca673 video: update for removed formats 2012-05-29 17:52:06 +02:00
Tim-Philipp Müller
3c6a3ad629 Use new gst_element_class_set_static_metadata() 2012-04-10 00:45:16 +01:00
Sebastian Dröge
ad42b16375 gst: Update for GST_PLUGIN_DEFINE() API change 2012-04-05 15:11:05 +02:00