Sebastian Dröge
122ccafd1a
gstreamer/gstreamer-app: Don't store strong references in futures Stream/Sink adapters
...
This applies to the ones of the appsink, appsrc and bus. If we would
store a strong reference then they would keep alive the underlying
object forever even if their pipeline disappeared in the meantime.
Like this e.g. the bus stream would start returning None once the bus
was destroyed, similar to how other channels are working in Rust.
2020-05-27 14:51:21 +03:00
Sebastian Dröge
215dbe53c6
video: Assert if caption data passed when adding caption metas is empty
...
It will cause a critical warning otherwise.
2020-05-27 14:51:21 +03:00
Guillaume Desmottes
605898277f
gstreamer: caps: add new_from_iter(_with_features)()
2020-05-27 14:51:21 +03:00
Guillaume Desmottes
b724e0c46c
gstreamer: structure: add new_from_iter()
...
Allow to easily create a new Structure from an iterator.
Fix #250
2020-05-27 13:28:42 +03:00
Sebastian Dröge
d623bcdce5
gstreamer: Add Stream::debug() and StreamCollection::debug()
...
These provide more helpful debug output than just the pointer when
printing.
2020-05-27 13:28:22 +03:00
Sebastian Dröge
43e7f9f589
Update version to 0.15.5
2020-05-03 09:52:04 +03:00
Sebastian Dröge
4a8b904c6c
Update CHANGELOG.md for 0.15.5
2020-05-03 09:51:01 +03:00
Sebastian Dröge
a1fbb359ea
rtsp-server: Use log() instead of log_with_object() for now in the 0.15 branch
...
See 8077b7ac82
2020-04-30 11:22:11 +03:00
Sebastian Dröge
451c198cec
Run everything through cargo fmt again
2020-04-30 11:01:25 +03:00
Guillaume Desmottes
ef012b9445
rtp: add dox feature
2020-04-30 10:59:16 +03:00
alleynb
923daa04b9
tutorials/tutorial-6: Improve caps output
...
Fixed printing of pad capabilites in tutorial6.
Output now displays the capability lists eg:
layout:{ (string)interleaved, (string)non-interleaved }
The origional broken output was being displayed as:
layout:SendValue(Value(GString(Foreign(0x557140c99d00, 40))))
2020-04-30 10:58:52 +03:00
Sebastian Dröge
774281a0c9
gstreamer: Add some API to calculate the next state convert state changes into their component states and back
2020-04-30 10:58:34 +03:00
Guillaume Gomez
fdf56b1235
gstreamer*: Add missing manual traits
2020-04-30 10:57:26 +03:00
Sebastian Dröge
d23d313b39
gstreamer: Add Element::get_current_clock_time() and ::get_current_running_time()
...
This was added in GStreamer 1.18 but we can easily implement it
ourselves here for the time being and for older versions.
2020-04-30 10:57:12 +03:00
Sebastian Dröge
c8ac89ec2b
gstreamer-audio: Simplify audio clipping meta test a bit
2020-04-30 10:57:03 +03:00
Sebastian Dröge
96c83bc0e6
gstreamer: Add bindings for Plugin::get_plugin_name()
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/248
2020-04-30 10:57:03 +03:00
Sebastian Dröge
26beed7277
gstreamer-audio: Follow-up commit for updating audio clipping meta tests
2020-04-30 10:57:03 +03:00
Andrew Eikum
d9a06b31de
gstreamer-audio: Add support for GstAudioClippingMeta
2020-04-30 10:57:03 +03:00
Sebastian Dröge
5479b23eb9
Use mem::ManuallyDrop instead of mem::forget() everywhere
...
It makes the intentions clearer and potentially results in simpler
assembly, at least in debug builds.
2020-04-30 10:56:38 +03:00
Sebastian Dröge
973ac7344e
gstreamer/buffer: Add tests for various memory related buffer API
2020-04-30 10:56:20 +03:00
Sebastian Dröge
2bbfbb5842
gstreamer/buffer: Add iterators for iterating over the memories inside a buffer
...
With immutable, mutable and owned variant.
2020-04-30 10:56:13 +03:00
Sebastian Dröge
0749250743
gstreamer/buffer: Add BufferRef::peek_memory_mut() function
...
This gives a mutable reference to the given memory and fails if the
memory is not actually writable.
2020-04-30 10:56:02 +03:00
Sebastian Dröge
e8c5f5fb6b
gstreamer/log: Replace % with %% in the debug message
...
Otherwise gst_debug_log() will look for further arguments that don't
exist, and will likely crash or worse.
2020-04-30 10:54:09 +03:00
Sebastian Dröge
8077b7ac82
Revert "gstreamer/log: Allow any glib::Object as target for logging"
...
This reverts commit 67e6afc628
.
Unfortunately this breaks the API due to how subclassing is modeled in
the GObject bindings.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/251
2020-04-30 10:19:55 +03:00
Sebastian Dröge
ef77a5ae92
Update versions to 0.15.4
2020-03-09 23:01:42 +02:00
Sebastian Dröge
079095b55c
Update CHANGELOG.md for 0.15.4
2020-03-09 23:01:42 +02:00
Sebastian Dröge
2599acc681
gstreamer/caps: Assert on ANY caps in fixate() and work around bug in handling EMPTY caps
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/388
2020-03-09 23:01:42 +02:00
Sebastian Dröge
671605d8ac
Minor cleanup in various places
2020-03-09 22:49:51 +02:00
Sebastian Dröge
01da01c9e6
app: Handle panicking callbacks by converting into an error message
...
And never calling the callbacks again but instead just failing.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/241
2020-03-09 22:49:51 +02:00
Sebastian Dröge
4e30798ac7
Add #[must_use] attribute to mutex guards / stream lock
...
It's usually a mistake if creating one of these and immediately dropping
them again as that would immediately unlock the mutex again.
2020-03-09 22:49:51 +02:00
Sebastian Dröge
ed80467ff6
Make sure to hold MutexGuard for the remainder of the function in various places
...
Not assigning it to a variable would cause it to be dropped immediately
and the lock to be released again immediately.
2020-03-09 22:49:50 +02:00
Sebastian Dröge
19295f75b5
rtsp_server: Add example making use of subclassing RTSPMediaFactory and RTSPMedia
2020-03-09 22:49:50 +02:00
Sebastian Dröge
e02ec7a8c9
rtsp_server: Add support for subclassing RTSPServer and RTSPClient
2020-03-09 22:49:50 +02:00
Sebastian Dröge
21ffeb5e82
rtsp_server: Add subclassing support for MediaFactory and Media
2020-03-09 22:49:50 +02:00
Sebastian Dröge
aa86c804bd
rtsp_server/media: Implement take_pipeline() manually
...
Because of floating reference problems in the API that have to be worked
around.
2020-03-09 22:42:49 +02:00
Sebastian Dröge
38071f1897
rtsp-server: Add bindings for RTSPThread
2020-03-09 22:42:42 +02:00
Sebastian Dröge
d429fad50d
gstreamer/base_transform: Add support for implementing prepare_output_buffer()
...
This requires some acrobatics due to inconsistent ownership handling of
the buffers on the C side.
2020-03-09 22:42:35 +02:00
Sebastian Dröge
67e6afc628
gstreamer/log: Allow any glib::Object as target for logging
...
gst::Object is not actually required. For plain glib::Objects only the
pointer address is printed instead of a name but it works fine.
2020-03-09 22:42:26 +02:00
Sebastian Dröge
0e69898faf
Update version to 0.15.3
2020-02-15 10:46:41 +01:00
Sebastian Dröge
45b7676d02
Update CHANGELOG.md for 0.15.3
2020-02-15 10:46:14 +01:00
Sebastian Dröge
315a59e47d
Allow changing bus sync handler and appsink/src callbacks when running with 1.16.3 or newer
...
Previously it was not thread-safe to change them and could lead to
crashes but with 1.16.3 it is now.
Unsetting the bus sync handler before 1.16.3 will have no effect at all,
setting a new bus sync handler or appsink/src callbacks will panic.
This partially reverts 2f88dc6576
2020-02-15 10:35:35 +01:00
Sebastian Dröge
3b56f470e5
Only allow setting Bus sync handler and AppSrc/Sink callbacks once
...
Re-setting them is not thread-safe and can cause segfaults or worse.
See https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/506
and https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/729
2020-02-15 10:33:53 +01:00
Valmir Pretto
0d34e70e3e
gstreamer-app: AppSink futures adapter
...
An adapter for AppSink that adds futures capabilities to it in the form of a Stream.
2020-02-15 10:29:56 +01:00
Valmir Pretto
7a05ff52af
gstreamer-app: AppSrc futures adapter
...
An adapter for AppSrc that adds futures capabilities to it in the form of a Sink.
2020-02-15 10:29:49 +01:00
Valmir Pretto
66338881e8
gstreamer: BusStream tests
2020-02-15 10:29:43 +01:00
Valmir Pretto
5beb871419
gstreamer: BusStream cleanup
...
A few small readability changes
2020-02-15 10:29:38 +01:00
Sebastian Dröge
462f4ac3b8
video/video-info: Don't use bool return of gst_video_info_set_format()/align() when running with GStreamer < 1.11.1
...
The bool return value was added in 1.11.1 and using the return value
with older versions gives a random value that might be true or false,
and then causes spurious errors.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/236#note_399872
2020-02-15 10:15:03 +01:00
Sebastian Dröge
a61c50c21a
base/base_transform: Fix minor clippy warning
...
warning: called `map(f)` on an Option value where `f` is a unit closure
--> gstreamer-base/src/subclass/base_transform.rs:683:13
|
683 | / (*parent_class)
684 | | .before_transform
685 | | .map(|f| f(element.to_glib_none().0, inbuf.as_ptr() as *mut _));
| |_______________________________________________________________________________^
|
= note: `#[warn(clippy::option_map_unit_fn)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn
2020-02-15 10:14:54 +01:00
Sebastian Dröge
e6d3ac4e4b
base/base_transform: Add before_transform/copy_metadata/transform_meta support for subclasses
2020-02-15 10:14:46 +01:00
Sebastian Dröge
89b9dc80dc
base/base_transform: Add submit_input_buffer/generate_output support for subclasses
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/155
2020-02-15 10:14:41 +01:00