Guillaume Desmottes
47121fe9d6
gstreamer-video: VideoDecoder bindings
...
The VideoCodecFrame and VideoCodecState is C API is unfortunatelly unsafe
by design. So we workarounded it by ensuring the decoder stream lock was
hold while user has a writable reference on those objects.
Based on previous work from Thibault Saunier and Philippe Normand.
Fixes #161
2019-05-22 20:40:57 +00:00
Víctor Manuel Jáquez Leal
32d7f42d67
Remove unused extern crates
...
Latest versions of nightly rust compiler can detect unused extern
crates, and this commit removes those marked as unused.
2019-05-17 09:34:46 +00:00
Sebastian Dröge
6071c68ab6
video: Add support for VideoCaptionMeta
2019-05-16 00:35:19 +03:00
Sebastian Dröge
b2b8bfab52
Add manual implementations for various new 1.16 functions
2019-04-23 20:45:39 +03:00
Sebastian Dröge
88dcb82c8d
Regenerate everything for 1.16.0
2019-04-23 19:15:53 +03:00
Sebastian Dröge
e7898c1b24
Update manual code
2019-04-15 19:19:19 +03:00
Sebastian Dröge
24305a19e8
Regenerate everything with latest gir
2019-04-15 18:38:05 +03:00
Sebastian Dröge
86a31b4139
Silence/fix various clippy warnings
2019-03-07 14:05:35 +02:00
Sebastian Dröge
8c39da4e5b
Update to Rust 1.31 linter-specific attributes
2019-03-04 15:16:01 +02:00
Sebastian Dröge
8754e4220e
Regenerate everything with latest gir
2019-02-22 11:55:16 +02:00
Sebastian Dröge
95f6844702
Fix various minor clippy warnings
2019-02-21 19:56:23 +02:00
Sebastian Dröge
0a96e0a80b
gstreamer-video: Don't take a &mut self in the constructor of VideoTimeCodeInterval
2019-02-21 19:29:47 +02:00
Sebastian Dröge
e6992345cc
Add gst_video::convert_frame_async_local() without Send bound on the closure
2019-02-10 11:47:48 +02:00
Sebastian Dröge
42a8b9e505
Get rid of double-boxing for some other closures
2019-01-30 13:02:41 +00:00
Sebastian Dröge
00cbd49923
Regenerate with latest gir
2019-01-29 16:28:51 +02:00
Pete Johanson
b62e2f154d
Add getters to VideColorimetry.
2019-01-27 00:21:50 +00:00
Sebastian Dröge
bd0cbe99b3
Add more Debug impls to everything possible
2019-01-22 17:46:08 +02:00
Sebastian Dröge
ad24ab9638
Regenerate everything with latest gir
2019-01-21 22:00:48 +02:00
Sebastian Dröge
bfcdec782e
Switch to stable rustfmt and add skip annotations for the generated code to the lib.rs
2019-01-16 17:10:01 +02:00
Sebastian Dröge
931c485150
Update manual code for glib API changes
2019-01-16 13:52:56 +02:00
Sebastian Dröge
6da0a9d169
Regenerate everything with latest gir
2019-01-16 13:32:39 +02:00
François Laignel
226070d216
BoolError: update to new build macros
...
See https://github.com/gtk-rs/glib/pull/419
2019-01-04 16:02:40 +01:00
François Laignel
3200574d31
Update to latest gir
...
See https://github.com/gtk-rs/gir/pull/687
2019-01-04 16:02:40 +01:00
Philippe Normand
9534416760
Regenerate and fix manual bindings for GString support
2019-01-03 22:01:41 +00:00
Sebastian Dröge
b9d3a5a852
video: Fix compilation with features=v1_10
2018-12-29 00:05:22 +02:00
Sebastian Dröge
89d69b0dea
gstreamer-video: Remove unused use statement
2018-12-19 13:14:32 +02:00
Sebastian Dröge
86673009df
video: Add support for VideoTimeCodeMeta
2018-12-17 17:40:41 +02:00
Sebastian Dröge
a753c65d33
video: Add VideoTimeCode bindings
...
There's a VideoTimeCode type that represents any kind of timecodes,
including invalid ones, and which allows to change each field
individually. And ValidVideoTimeCode that has all fields
validated and that can be used with most of the API.
In C, validation of the timecodes is left to the user and most functions
assert on getting passed valid timecodes.
2018-12-17 17:40:41 +02:00
Sebastian Dröge
43f5a10f9c
Add API for mapping GL buffers as VideoFrameRef in addition to a full VideoFrame
2018-12-08 18:59:14 +00:00
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