Commit graph

1281 commits

Author SHA1 Message Date
Sebastian Dröge c35a7caf42 video: Add bindings for calculate_display_ratio() 2020-05-27 14:51:21 +03:00
Sebastian Dröge b9d1669c0d gstreamer/event: Add setter/getter for the gst::Stream in the stream-start event 2020-05-27 14:51:21 +03:00
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