Commit graph

256 commits

Author SHA1 Message Date
Sebastian Dröge fdd21b9a2a video/timecode: Fix compilation of tests with target API < 1.16 2021-02-13 13:35:55 +02:00
Sebastian Dröge 50cffb0f7a video/timecode: Use mem::ManuallyDrop to prevent a double unref of the daily jam
As ffi::GstVideoTimeCode implements Copy, assignments don't move it out
of the passed in value but just copy it. This doesn't increase the
reference count of the daily jam, still runs the Drop impl of the passed
in value to decrease the daily jam and then causes a second unref of it
later when the returned value is dropped.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/310
2021-02-13 13:35:55 +02:00
Marijn Suijten ae51a2f49c video/time_code_interval: Correct set_frames parameter name
Aesthetics.
2020-12-20 19:56:06 +02:00
Marijn Suijten 26bfd5b98c video/time_code_interval: Ord cmp minutes to other.minutes, not hours
Same mistake as the previous commit. Clipppy didn't find this one though
:)
2020-12-20 19:55:59 +02:00
Marijn Suijten 4157bb6c16 video/time_code_interval: Do not compare minutes to hours in PartialEq
Clippy nightly is becoming surprisingly smart these days:

    warning: This sequence of operators looks suspiciously like a bug.
      --> gstreamer-video/src/video_time_code_interval.rs:66:16
       |
    66 |             && self.0.minutes == other.0.hours
       |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: I think you meant: `self.0.minutes == other.0.minutes`
       |
       = note: `#[warn(clippy::suspicious_operation_groupings)]` on by default
       = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_operation_groupings
2020-12-20 19:55:44 +02:00
Guillaume Desmottes 409608a7fb video: implement Eq and PartialEq on VideoAlignment 2020-12-20 19:53:53 +02:00
Guillaume Desmottes 18af63beac video: add alignment API to VideoMeta 2020-12-20 19:53:53 +02:00
Guillaume Desmottes 87dc92ff4a video: add VideoInfo::align_full() 2020-12-20 19:51:43 +02:00
Guillaume Desmottes b7bfcb2094 video: add VideoMeta::get_plane_{height,size}
Fix #299
2020-12-20 19:49:42 +02:00
Sebastian Dröge 7d8f95971c video/timecode: Use stringify!($name) instead of "$name" in Debug impl
Otherwise it would output a literal "$name" string.
2020-11-23 12:22:01 +02:00
Sebastian Dröge 8c4ebdec1e Use repr(transparent) where it is more correct and get rid of some unneeded repr(C) 2020-11-23 12:22:01 +02:00
Sebastian Dröge 5f63ee9912 Remove unneeded PhantomData markers
And as a side-effect also get rid of the lifetime parameter of
gst::TypeFind that was completely unused anyway.
2020-11-23 12:22:01 +02:00
Sebastian Dröge b32fc568da gstreamer/audio/video: Correctly implement ExactSizeIterator
len() is optional but size_hint() must return the correct values. Also
this shouldn't return the overall length but the remaining length.
2020-10-09 12:03:21 +03:00
Sebastian Dröge 68c2b19680 video: Rename VideoTransferFunction functions 2020-09-08 17:14:37 +03:00
Sebastian Dröge 6b6fae51cd Regenerate everything 2020-09-08 17:14:37 +03:00
Sebastian Dröge a6253a1f77 video/video_frame: Allow getting an owned buffer from readable video frames
In all other variations this is not possible as it would allow to
circumvent the mini object writability rules.
2020-08-11 13:36:54 +03:00
Sebastian Dröge a0887f197f Add various new 1.18 APIs 2020-08-11 12:43:57 +03:00
Sebastian Dröge 2624e2a6d1 Regenerate everything 2020-08-11 12:43:57 +03:00
Sebastian Dröge 448c1e10a0 Regenerate 2020-07-06 13:01:57 +03:00
Sebastian Dröge e3667fd8d2 video/video_info: Add field_height() function 2020-07-03 13:10:28 +03:00
Sebastian Dröge 5845038a63 video: Use correct version for interlaced caps feature 2020-07-03 13:00:07 +03:00
Sebastian Dröge 2db7b8ebcc video: Use correct versions of primaries/transfer function enums 2020-07-03 12:23:32 +03:00
Sebastian Dröge 9cc99b27e0 gstreamer/element: Let post_message() and post_error_message() take ownership of the message
This is more in line with the C API and simplifies callers in Rust.
2020-06-30 23:55:02 +03:00
Sebastian Dröge 911bb34dc2 Don't generate LAST/NONE variants of flags types
Those are automatically provided already.
2020-06-30 11:35:49 +03:00
Sebastian Dröge 45402b5e95 Add specific version configurations for various enum/flags values
gobject-introspection does not support this yet so we have to do that
manually.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/271
2020-06-30 11:23:37 +03:00
Sebastian Dröge af01f1bc67 gstreamer: Simplify MiniObject bindings by removing one layer of abstraction
And instead directly implementing this via the macro on the target
types.
2020-06-30 11:06:02 +03:00
Sebastian Dröge 947ac8db5c Name functions returning a builder builder(), not new()
And also make the video event API more consistent with the normal event
API.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/269
2020-06-25 19:42:33 +03:00
Guillaume Desmottes 2f1b3306de video: properly version VideoFormat members
The C API is not safe when called on unknown formats.

Need to do this manually until gir gives us the version info:
https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues/348

Fix #267
2020-06-24 14:55:27 +02:00
Guillaume Desmottes 2afcdfe79f video: remove 1.18 formats from VIDEO_FORMATS_ALL
This array is a fallback when using gst < 1.18 so it makes no sense
to include formats which have been introduced in 1.18
2020-06-24 14:14:45 +02:00
Guillaume Desmottes 03a240cf3f video: format: check for Nv12 instead of P016Be
The latter has been introduced in 1.18 making the test fail with older
gst.
2020-06-24 10:01:31 +02:00
Guillaume Desmottes ac47c7bc1d video format:: disable sorting test with gst < 1.18
This test relies on a 1.18 specific fix
( 8e3c4a5d5a )
and is meant to check that future updates won't break the ordering.
2020-06-24 10:01:20 +02:00
Sebastian Dröge 8dfbc9e811 Regenerate 2020-06-19 13:09:11 +03:00
François Laignel 04875f3bff video: Add bindings for VideoSink 2020-06-15 11:47:15 +02:00
Guillaume Desmottes a954c03bc0 functions: rename constructors in manual API
The idiomatic way for Rust constructors is to be named from_XXX()
instead of new_from_XXX() and with_XXX() instead of new_with_XXX().

Fix #460
2020-06-11 12:33:52 +02:00
Guillaume Desmottes 7b2fe31cc1 update gir generator and regenerate 2020-06-11 12:33:49 +02:00
Guillaume Desmottes 6cd711cfdf subclass: clean up subclassing prelude/re-exports
Use re-export pattern from glib.

Fix #255
2020-06-09 14:36:37 +02:00
Guillaume Desmottes 1d886727d9 video: sort VIDEO_FORMATS_ALL
Test also ensures that the formats list returned by
gst_video_formats_raw() is properly sorted when running with feature
1.18.
2020-06-09 09:26:32 +02:00
Guillaume Desmottes ae57524502 video: manually order VideoFormat and VideoFormatInfo 2020-06-09 09:26:32 +02:00
Sebastian Dröge 30d51f0ca6 video: Don't panic when passing an invalid video info to VideoMeta::add()
Instead return an error that can be handled by the caller.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/259
2020-06-07 18:58:54 +03:00
Sebastian Dröge 926ed2f53d video: Don't unmap VideoFrameRef created from a VideoFrame
Otherwise we're going to unmap it twice. Also add a test for the
different interactions.
2020-06-07 15:22:33 +00:00
Sebastian Dröge 4f5aceaa5a video: Check that the passed in video info is valid when creating a VideoFrame 2020-06-07 15:22:33 +00:00
Sebastian Dröge 6ed505401f video: Add VideoInfo::is_valid() and guard against finfo being NULL when retrieving the video format 2020-06-07 15:22:33 +00:00
Mathieu Duponchelle 9f422c25d9 audio / video: export new formats iterators in preludes 2020-06-03 21:38:16 +02:00
Guillaume Desmottes 972002ceb2 video: implement Iterator on VideoFormat
Also add VIDEO_FORMATS_ALL as public API.
2020-06-03 21:11:00 +03:00
Guillaume Desmottes 9754147a30 video: add API to build raw video caps 2020-06-03 21:11:00 +03:00
Guillaume Desmottes 1b0a20e52f regenerate 2020-06-03 20:04:18 +03:00
Sebastian Dröge 9236ace284 video: Add VideoAffineTransformationMeta, CropMeta and RegionOfInterestMeta
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/218
2020-06-02 16:05:01 +03:00
Sebastian Dröge 5eb1dbd93e video/videoinfo: Use a proper error type in the TryFrom<VideoMultiviewMode> impl for VideoMultiviewFramePacking 2020-05-26 19:26:35 +03:00
Sebastian Dröge f0e12bbf24 video/videoconverter: Add TryFrom<Structure> and inverse From impl for VideoConverterConfig
Allows converting between both types interchangebly.
2020-05-26 19:26:35 +03:00
Mathieu Duponchelle 02a43819a7 gstreamer-video: expose caps features 2020-05-22 21:31:45 +02:00