Commit graph

343 commits

Author SHA1 Message Date
Sebastian Dröge
36bcb5630a Remove various unused use statements 2018-12-08 14:58:14 +02:00
Sebastian Dröge
6bba3d8518 Add 'static trait bound to all ExtManual traits and get rid of trait bounds for their impls 2018-12-08 14:58:14 +02:00
Sebastian Dröge
5c93e134a7 Regenerate everything with new version of gir 2018-12-08 14:58:14 +02:00
Sebastian Dröge
e7b4bafa60 Ignore false clippy warning about casting and pointer alignment in videometa
error: casting from `*mut ffi::GstVideoOverlayComposition` to a more-strictly-aligned pointer (`*mut gst_ffi::GstMiniObject`)
   --> gstreamer-video/src/video_meta.rs:158:44
    |
158 |             gst_ffi::gst_mini_object_unref(self.0.overlay as *mut _);
    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: #[deny(clippy::cast_ptr_alignment)] on by default
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment

error: casting from `*mut ffi::GstVideoOverlayComposition` to a more-strictly-aligned pointer (`*mut gst_ffi::GstMiniObject`)
   --> gstreamer-video/src/video_meta.rs:159:59
    |
159 |             self.0.overlay = gst_ffi::gst_mini_object_ref(overlay.as_mut_ptr() as *mut _) as *mut _;
    |                                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_ptr_alignment
2018-12-04 10:51:50 +02:00
Sebastian Dröge
aea6f79ef9 Implement Send/Sync for VideoFrame
Closes #153
2018-11-26 11:13:13 +01:00
Víctor Manuel Jáquez Leal
284992d83a Add VideoFrame::from_glib_full() constructor
Thus it would be possible to instantiate gst_video::VideoFrame from
FFI's VideoFrame created outside of gstreamer_video's crate.

Fixes #152
2018-11-16 11:45:38 +01:00
Sebastian Dröge
f31827f194 Regenerate with latest gir
Gets rid of some unneeded property notification functions in GES
2018-11-05 11:18:31 +02:00
Víctor Manuel Jáquez Leal
60c9cdfda1 Update autogenerated code with latest gir 2018-10-31 17:33:15 +02:00
Sebastian Dröge
e4ecc88825 Remove some unneeded lifetime annotations from video meta code and pass more parameters by reference 2018-10-11 11:58:01 +03:00
Sebastian Dröge
9265cc8232 Correctly generate VideoOverlayFormatFlags as flags 2018-10-04 11:39:15 +03:00
Sebastian Dröge
8f71a81cb5 Regenerate with latest gir to get rid of unneeded notify signal connectors for construct-only properties 2018-10-03 13:57:07 +03:00
Sebastian Dröge
35353445de VideoOverlayComposition is supposed to be immutable
So remove the add() function and instead require an
IntoIterator<Item=&VideoOverlayRetangle> in the constructor, and require
at least one item in the iterator or return None.
2018-10-01 14:52:31 +03:00
Sebastian Dröge
6d5bded7b3 Get rid of lifetime for the Meta structs
The structs themselves don't reference the buffer, the reference to
these structs is borrowed from the buffer.
2018-09-30 01:17:12 +03:00
Sebastian Dröge
62074ba1ed Add bindings for VideoMeta and VideoOverlayCompositionMeta 2018-09-29 12:01:26 +03:00
Sebastian Dröge
2b029bcdd4 Remove unused imports 2018-09-28 18:15:29 +03:00
Sebastian Dröge
0b58bf5c2f Add bindings for VideoOverlayComposition and VideoOverlayRectangle
... the missing file.
2018-09-28 17:42:45 +03:00
Sebastian Dröge
cfe1bd452f Add bindings for VideoOverlayComposition and VideoOverlayRectangle 2018-09-28 17:37:27 +03:00
Sebastian Dröge
bc8da095c3 Add functions to get the FFI pointer behind a VideoFrame/VideoFrameRef 2018-09-28 17:35:48 +03:00
Sebastian Dröge
255243c16a Implement Sync for VideoInfo and AudioInfo
They are immutable on the Rust side after all.
2018-09-22 10:56:25 +03:00
Sebastian Dröge
0628961c94 Add bindings for is_video_overlay_prepare_window_handle_message() 2018-09-13 22:56:47 +03:00
Sebastian Dröge
6cf34b1b39 Add VideoOverlay::prepare_window_handle() and got_window_handle() 2018-09-13 22:53:13 +03:00
Sebastian Dröge
3c900e6102 Regenerate with latest gir 2018-08-18 00:25:12 +03:00
Sebastian Dröge
2240ef109f Regenerate with latest GIR and update for the glib::Quark changes 2018-07-30 11:46:40 +03:00
Sebastian Dröge
33a6aab6d7 Run everything through latest rustfmt 2018-07-27 13:36:40 +03:00
Sebastian Dröge
632d5f4c57 Change some empty structs to empty enums
These should only really exist at the type-level.
2018-07-25 10:07:20 +03:00
Sebastian Dröge
694bcaa697 Fix all clippy warnings
Or silence the ones we don't care about.
2018-07-20 10:28:20 +03:00
Sebastian Dröge
e0972ae1e5 Get rid of manual usage of callback_guard! 2018-06-24 14:52:50 +03:00
Sebastian Dröge
2085d170be Get rid of callback_guard! as unwinding through FFI is defined behaviour now and aborts 2018-06-24 14:42:11 +03:00
Sebastian Dröge
c2ee8d226c Print more fields in the VideoInfo fmt::Debug impl 2018-06-08 10:19:25 +03:00
Sebastian Dröge
1192a027b4 Regenerated with latest GIR and GIR files 2018-05-21 11:55:19 +03:00
Thibault Saunier
a10532c379 video_info: Implement fmt::Debug 2018-05-14 09:22:25 +03:00
Sebastian Dröge
2cefd9aea6 Re-run everything through rustfmt 2018-04-25 11:13:14 +03:00
Sebastian Dröge
46d27e3e75 Regenerate everything with latest GIR 2018-04-23 20:45:15 +03:00
Sebastian Dröge
9a3ef2e9f1 Regenerate with latest GIR and update for the non-bitflags flags in -sys now 2018-04-04 10:47:12 +03:00
Sebastian Dröge
492c3d656c Run everything through rustfmt again 2018-04-01 11:57:58 +03:00
Sebastian Dröge
a33fd41d02 Regenerate everything with latest gir 2018-03-20 11:52:29 +02:00
Sebastian Dröge
6bd63ec8e7 Update gstreamer-video 2018-03-19 10:32:07 +02:00
Sebastian Dröge
a3b294f0f2 Add back callback guards 2018-03-02 21:34:29 +02:00
Sebastian Dröge
808ff293ec Regenerate everything with latest gir 2018-03-02 21:34:29 +02:00
Sebastian Dröge
4117c01ff2 Run everything through latest rustfmt-nightly 2018-02-22 11:18:37 +01:00
Sebastian Dröge
f1426c82ba Remove callback guards
Since Rust 1.24 it is safe to let panics go to the FFI boundary
2018-02-17 19:58:41 +02:00
Sebastian Dröge
2f179a832c Fix compilation after gstreamer-sys regeneration with unions 2018-02-07 18:53:12 +02:00
Sebastian Dröge
6d0d7a3df8 Regenerate everything with latest GIR 2018-02-06 16:42:34 +02:00
Sebastian Dröge
fc4ad81777 Change VideoFrameRef::copy_to() and ::copy_plane() to take VideoFrameRefs instead of VideoFrames
VideoFrames can always be converted to a VideoFrameRef if needed.
2018-01-16 18:59:04 +02:00
Sebastian Dröge
4297f8f5c5 Don't implement Copy for VideoRectangle and pass by reference to center_video_rectangle() 2018-01-03 17:38:22 +02:00
Sebastian Dröge
899be5e2c3 Add VideoFrameRef API
This is like VideoFrame, but can work on gst::BufferRefs and borrows
from it. VideoFrames can be converted into this by borrowing.
2018-01-01 13:47:07 +02:00
Sebastian Dröge
38bd880a74 Add GstVideoFilter bindings
Not very useful, but will be useful for gst-plugin-rs
2017-12-30 15:34:41 +02:00
Sebastian Dröge
6083fb63c2 Add unit test for gst_video::convert_sample_async() 2017-12-30 12:08:48 +02:00
Sebastian Dröge
c52da3639a Fix memory leak for gst_video::convert_sample_async()
Values are passed owned to the callback
2017-12-30 12:08:26 +02:00
Sebastian Dröge
d44869711a Run video_rectangle.rs through rustfmt 2017-12-26 18:18:13 +01:00
Philippe Normand
1722b047bd gstreamer-video: VideoRectangle bindings 2017-12-26 18:17:30 +01:00
Sebastian Dröge
25a8ce4f8d Add bindings for gst_video::convert_sample() and ::convert_sample_async() 2017-12-24 14:30:38 +02:00
Sebastian Dröge
e0dc84c10a Run everything through rustfmt again 2017-12-20 19:30:14 +02:00
Sebastian Dröge
70688fd6a9 Clean-up VideoFrame API
There's a buffer() for immutable references on all types now, and a
buffer_mut() for getting a mutable reference on the writable videoframe

Also some minor other cleanup
2017-12-16 11:41:48 +02:00
Sebastian Dröge
70e031b729 VideoInfo/AudioInfo are not Sync, only Send 2017-12-16 11:40:36 +02:00
Sebastian Dröge
d3b03de9ff Nullability fix for VideoFormat::to_string() in case Unknown is passed 2017-12-16 10:58:10 +02:00
Sebastian Dröge
5fb6ce77ee Add VideoMultiviewFramePacking enum and minor code cleanup 2017-12-16 10:56:19 +02:00
Sebastian Dröge
f2eabaddf7 Make all fields of the force-keyunit events optional in the builder 2017-12-10 22:43:28 +02:00
Sebastian Dröge
580fc603e0 Use builders for the key-unit and still-frame events too 2017-12-10 12:26:16 +02:00
Sebastian Dröge
5065bc76ee Rename FormattedValue::from_glib/to_glib to from_raw/to_raw_value
Otherwise we conflict with GLib translation traits, which causes some
annoyances.
2017-12-10 12:10:25 +02:00
Sebastian Dröge
d55e08a6a4 Add bindings for force-keyunit and still-frame events 2017-12-10 11:57:11 +02:00
Sebastian Dröge
c99928d030 Change FormatValue related API to be more convenient to use
FormatValue is now renamed to GenericFormattedValue and the API slightly
changed. In addition there is now a FormattedValue trait, and a
SpecificFormattedValue trait plus types for Bytes, Buffers and the
existing ClockTime.

This allows to create functions like
  Pad::query_duration<F: SpecificFormattedValue>() -> Option<F>
and doesn't require the caller to unwrap the generic value anymore,
which is completely unneeded in these cases.

In addition, Segment became FormattedSegment<T> with API to
upcast/downcast between the specific formatted values and the generic
formatted value. This greatly simplifies usage of Segments.
2017-12-09 19:45:18 +02:00
Sebastian Dröge
411f54afed Run everything to rustfmt again 2017-12-01 19:02:53 +02:00
Sebastian Dröge
8a2e78e586 Regenerate with latest GIR to fix various issues with property getters
Get rid of unneeded transmutes and actually initialize flags/enum
GValues with the correct type instead of using integers.
2017-11-27 19:16:34 +02:00
Sebastian Dröge
3c9b7a395b Get rid of some unneeded transmute() in VideoInfo 2017-11-27 14:03:33 +02:00
Sebastian Dröge
34f70ee0d7 Derive more useful traits for various enums 2017-11-27 14:03:30 +02:00
Sebastian Dröge
7eb8429046 Run everything through latest rustfmt-nightly again 2017-11-15 22:33:51 +02:00
Sebastian Dröge
d4bd1c2d76 Add dox feature to everything as needed 2017-11-12 13:33:02 +01:00
Sebastian Dröge
c39c0c7264 Implement ClockTime as ClockTime(Option<u64>)
And also implement a FormatValue type that holds a value together with
its format to make usage of the positions/durations/seek positions/etc
more convenient and safe.

Fixes https://github.com/sdroege/gstreamer-rs/issues/3
2017-11-11 11:57:29 +01:00
Sebastian Dröge
5d266bf31b Regenerate with latest GIR
Which gives us mappings between instance and class struct for now.
2017-11-09 13:33:40 +02:00
Sebastian Dröge
3179806f01 Regenerate everything with latest GIR
And fix-up manual code
2017-11-05 19:08:39 +02:00
Sebastian Dröge
e1d134c4be Run everything through latest rustfmt-nightly 2017-10-17 12:06:51 +03:00
Sebastian Dröge
92e0b525ad Fix build of unit tests 2017-10-01 16:02:29 +02:00
Sebastian Dröge
19c5556239 Regenerate with latest GIR 2017-10-01 15:52:15 +02:00
Sebastian Dröge
b4cb81cd56 Run everything through latest rustfmt-nightly 2017-09-10 15:21:26 +03:00
Sebastian Dröge
a0ba290d4d Fix various clippy warnings in gstreamer-video 2017-09-10 15:21:26 +03:00
Sebastian Dröge
3b0e6843e2 Regenerate everything with latest GIR 2017-09-09 16:35:01 +03:00
Sebastian Dröge
380fb319ba Don't return &'static references from functions but give them a generic lifetime
https://github.com/rust-lang/rust/pull/42417#issue-233404573
2017-09-01 11:40:32 +03:00
Sebastian Dröge
52c013b834 Regenerate everything with latest GIR 2017-08-30 14:45:25 +03:00
Sebastian Dröge
f0935d7e1e Add remaining gst_init() assertions 2017-08-30 14:39:09 +03:00
Sebastian Dröge
f05df73088 Add various gst_init() assertions to video/app bindings
audio and core should come next.

Also print something more meaningful than using assert_eq!().
2017-08-30 12:48:01 +03:00
Sebastian Dröge
f751afc0fb Add prelude modules to all cratest that only re-export the traits
And use those in the examples instead of blanket * imports
2017-08-17 18:02:25 +03:00
Sebastian Dröge
767bd0537e Only re-export traits once 2017-08-17 16:32:17 +03:00
Sebastian Dröge
1cb1cf9936 Implement Send+Sync for VideoInfo too
It's also immutable here.
2017-08-15 17:34:32 +03:00
Sebastian Dröge
b0307f9108 Fix build with --all-features and run it on travis 2017-08-15 13:46:16 +03:00
Sebastian Dröge
e66bcf8a5d Allow any Into<Fraction> for VideoInfo::fps() and VideoInfo::par() 2017-08-14 09:54:32 +03:00
Sebastian Dröge
59af28e508 Simplify VideoFrame impl 2017-08-11 15:20:56 +03:00
Sebastian Dröge
4b24ca1823 Add VideoOverlay bindings 2017-08-11 15:03:16 +03:00
Sebastian Dröge
cb8ca2c00e Add VideoFrame bindings 2017-08-11 14:55:31 +03:00
Sebastian Dröge
18871110cd Add VideoInfo::convert() 2017-08-11 12:54:01 +03:00
Sebastian Dröge
b08980cd5e Add some more VideoInfo convenience API 2017-08-11 12:51:27 +03:00
Sebastian Dröge
830f0b7d83 Add VideoInfo and related bindings 2017-08-11 12:42:59 +03:00
Sebastian Dröge
3a50ca61e3 Add initial libgstvideo bindings
Only VideoFormat and VideoFormatInfo and related API for now.

https://github.com/sdroege/gstreamer-rs/issues/5
2017-08-11 00:41:55 +03:00