Sebastian Dröge
fb412d0cfb
gstreamer/log: Handle compiled out GStreamer debug system properly
...
By mirroring the no-op behaviour of the C code instead of failing
because of a NULL debug category.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/306
2021-02-13 12:51:47 +02:00
Zeeshan Ali
bad30dbbda
Add get_current_state & get_pending_state to ElementExtManual
...
Convenient API to simply get the current or pending state of the
element.
2021-02-13 12:47:50 +02:00
Sebastian Dröge
aa79e8603f
gstreamer: Fix plugin version for v1_18
2020-11-23 12:22:01 +02:00
François Laignel
6d30078c89
Event: impl structure_mut getter
2020-11-23 12:22:01 +02:00
François Laignel
3e8ecf4806
Pad: allow handling Events in PadProbes
2020-11-23 12:22:01 +02:00
François Laignel
3bf946ed11
Use fully qualified path for plugin_desc in gst_plugin_define
...
This is required when gst_plugin_define is used from a a submodule
mod.rs (not from the crate's lib.rs).
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
François Laignel
59dbed69ad
gstreamer/message: enhance Debug impl for Message[Ref]
...
When "{:?}" printing a Message[Ref], the following issues lower the
experience:
- If the Message seqnum is GST_SEQNUM_INVALID (0), a panic occurs due
to an assertion failure in MessageRef::get_seqnum.
- The src of the Message displays the GString address.
Origin issue for an occurrence of the first case above fixed in
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/860
2020-11-23 12:06:17 +02:00
François Laignel
fac1234351
message: get_seqnum: return next seqnum if Message seqnum is invalid
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/601
2020-11-23 12:06:01 +02:00
Marijn Suijten
e6a0063165
gstreamer: plugin: Prefix glib:: with $crate:: in gst_plugin_define
...
Crates using gst_plugin_define might not (need to) import `glib`
directly into their scope; use the one imported in `gstreamer`s root
to make this macro more portable.
Besides, `glib` is prefixed with `$crate::` just below.
2020-11-23 12:05:22 +02:00
Marijn Suijten
787954eab9
gstreamer: error: Prefix gst_error_msg with $crate
...
This macro might not have been imported in the surrounding scope where
gst_panic_to_error is used, thus reference it directly by the full
namespace.
2020-11-23 12:05:10 +02:00
Sebastian Dröge
b7b29ee55a
gstreamer/meta: Don't collect iterators just to check their length in the tests
2020-10-09 12:03:21 +03:00
Sebastian Dröge
f5752546fd
gstreamer/buffer: Don't implement ExactSizeIterator on meta iterator
...
We don't actually know the number of items and using the trait would
panic.
2020-10-09 12:03:21 +03:00
Sebastian Dröge
2b87e5f51d
gstreamer/clock: Unschedule clock ID when the receiver end of the channel is disconnected
2020-10-09 12:03:21 +03:00
Sebastian Dröge
b4e8ace192
gstreamer/clock_time: Add From/TryFrom impls to convert between ClockTime and std::time::Duration
2020-10-09 12:03:21 +03:00
Sebastian Dröge
5d80372dd3
gstreamer/clock: Add ClockID::wait_async_stream()
...
This provides an async stream with the values of each timeout.
2020-10-09 12:03:21 +03:00
Sebastian Dröge
6b6fae51cd
Regenerate everything
2020-09-08 17:14:37 +03:00
Sebastian Dröge
080f6a3906
gstreamer/log: Fix debug_remove_default_log_function() to actually work
...
We have to pass `NULL` / `None` instead of the actual default log
function as because of `-Bsymbolic` or how DLLs work on Windows the
external function pointer is different to the internal one.
2020-09-07 14:26:08 +03:00
Ruben Gonzalez
c68b68f37f
gstreamer: Delete duplicated assert_initialized_main_thread
2020-09-07 14:25:05 +03:00
Sebastian Dröge
272022bdac
gstreamer/pad: Factor out PadProbeInfo handling from pad probe trampoline into separate functions
...
This makes that part of the code non-generic and thus allows the
compiler to not put a copy of it into every caller with a different
closure.
For a test with 3 pad probes this overall reduced the number of LLVM IR
lines needed for the pad probes to about 8.5% of what it was before
(4485 -> 381 lines).
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
4afd47a8a8
gstreamer: Add parse_bin_from_description_with_name_full()
...
The non-full variant existed already.
2020-07-27 11:14:01 +03:00
Philippe Normand
4e9ee99c88
functions: Add new parse_bin_from_description_with_name utility
...
This is basically `parse_bin_from_description()` but additionally the returned
bin has the passed name. It is sometimes convenient to name those bins so they
can later be easily retrieved by name from the pipeline they belong to.
2020-07-27 11:13:48 +03:00
Sebastian Dröge
7517a50834
gstreamer/ghost_pad: Add convenience constructors with target pad
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/275
2020-07-21 09:37:28 +02:00
Sebastian Dröge
af15dafc14
gstreamer/ghost_pad: Move GhostPad specific code into the ghost_pad module
2020-07-21 09:37:21 +02:00
Jan Alexander Steffens (heftig)
7e7d74af1e
log: Allow calling DebugCategory::new before gstreamer::init
...
This is safe.
2020-07-10 10:18:20 +03:00
Sebastian Dröge
448c1e10a0
Regenerate
2020-07-06 13:01:57 +03:00
Sebastian Dröge
3bf5215872
Update configuration for new API
2020-07-06 12:08:36 +03:00
Sebastian Dröge
01eaf76b31
gstreamer/buffer: Add bindings for foreach_meta() and foreach_meta_mut()
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/268
2020-07-03 10:28:59 +03:00
Sebastian Dröge
f01b590a0c
gstreamer/bufferlist: Add bindings for foreach() and foreach_mut()
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/273
2020-07-03 10:28:47 +03:00
François Laignel
275d93e3d2
memory: fix typo
2020-07-02 17:46:20 +02:00
Sebastian Dröge
0cc32a02cc
gstreamer/element: Don't catch panics in post_message() vfunc
...
Otherwise we would post a message, which calls into this code again and
then does the whole thing recursively forever.
2020-07-01 01:36:16 +03:00
Sebastian Dröge
4fbbf48622
gstreamer/element: Change post_message() vfunc return type to bool
...
It regularly fails in normal situations, e.g. when the element is not
inside a bin and has no bus, and we don't really want to log errors for
that.
2020-07-01 01:15:57 +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
5b3d6418f0
gstreamer/element: Add support for overriding post_message vfunc
2020-06-30 23:46:51 +03:00
Sebastian Dröge
dbc76f1053
gstreamer/miniobject: Remove DerefMut and AsMut impls
...
They were side-stepping the miniobject writability mechanism.
2020-06-30 15:23:50 +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
François Laignel
ddd3bbbf84
query: remove unused Jitter & Rate
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/532#note_548884
2020-06-25 10:48:25 +02:00
François Laignel
c94baa4fe8
query: add constructor on target types
...
... and deprecate the `Query::new_*` forms.
2020-06-25 10:48:25 +02:00
François Laignel
884e5e4e4a
event: add constructor on target types
...
... and deprecate the `Event::new_*` forms.
2020-06-25 10:48:25 +02:00
François Laignel
f421d878b6
message: add constructor on target types
...
... and deprecate the `Message::new_*` forms.
2020-06-25 10:48:20 +02:00
Sebastian Dröge
07e786b44f
gstreamer/pad: Add support for setting proxy pad functions on a ghost pad during construction
2020-06-22 21:20:20 +00:00
Sebastian Dröge
a80471747c
gstreamer/pad: Borrow the pad when taking the stream lock
...
Instead of taking a new reference to the pad.
2020-06-22 11:48:56 +03:00
Sebastian Dröge
79c457c8c4
gstreamer/pad: Rename Pad::builder_from_template() to builder_with_template()
...
Sounds more natural as it creates a build that is initialized *with* a
template.
But keep Pad::from_template() as it creates a new pad *from* a template.
2020-06-22 11:26:24 +03:00
Sebastian Dröge
0c0d671922
gstreamer/pad: Don't provide constructors anymore but instead a builder
...
This handles safely setting the pad functions during construction and
also has special support for ghost pads.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/247
2020-06-22 10:55:24 +03:00
Sebastian Dröge
750f8f5bb5
gstreamer/pad: Don't allow changing a pad's template after construction
...
That's generally not a good idea and not safe to do.
2020-06-21 20:02:52 +03:00