Commit graph

757 commits

Author SHA1 Message Date
Guillaume Desmottes a6c20922ff update documentation links 2020-04-28 11:17:24 +02:00
Sebastian Dröge 6e431ce060 Run everything through rustfmt again
It got some improvements for applying consistent formatting to code
blocks in macros.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/468>
2020-04-24 12:46:16 +03:00
Sebastian Dröge 834b6d8d69 gstreamer/proxypad: Convert default pad functions to plain functions on ProxyPad instead of a trait
This allows to use them properly when overriding these functions.
2020-04-23 15:37:18 +03:00
Guillaume Desmottes 6a72f65b3b gstreamer: ignore cognitive_complexity warnings
Those are just long tests.
2020-04-21 10:17:46 +02:00
Guillaume Desmottes a12b51abd6 gstreamer: stream_collection: ignore new_ret_no_self clippy warning 2020-04-21 09:00:35 +02:00
Guillaume Desmottes 872024c372 fix option_as_ref_deref clippy warnings 2020-04-21 09:00:35 +02:00
Guillaume Desmottes 932c940102 gstreamer: caps: add new_from_iter(_with_features)() 2020-04-20 17:12:24 +02:00
Guillaume Desmottes 97026d7f86 gstreamer: structure: add new_from_iter()
Allow to easily create a new Structure from an iterator.

Fix #250
2020-04-20 15:53:28 +02:00
Sebastian Dröge caae679d6f gstreamer: Add some API to calculate the next state convert state changes into their component states and back 2020-04-18 09:23:08 +03:00
Sebastian Dröge ada06502b5 gstreamer: Remove redundant stream/stream collection property getters
There are also actual functions for these and we had both enabled
because the properties are missing the "Since: 1.10" markers.
2020-04-15 14:40:37 +03:00
Sebastian Dröge aea43c428c gstreamer: Add Stream::debug() and StreamCollection::debug()
These provide more helpful debug output than just the pointer when
printing.
2020-04-14 17:31:54 +00:00
Sebastian Dröge 2ef7d70ba3 gstreamer: Enforce that stream collections are immutable after creation by using the builder pattern 2020-04-14 17:31:54 +00:00
Sebastian Dröge 185eb188ca Fix various signal handler trampoline usages 2020-04-13 19:24:04 +03:00
Sebastian Dröge 5021994237 Regenerate everything 2020-04-13 19:11:33 +03:00
Sebastian Dröge 76a0410d41 Replace unneeded transmute calls with a safer alternative 2020-04-12 19:47:49 +03:00
Sebastian Dröge d1665b8114 Regenerate with latest gir 2020-04-12 18:55:06 +03:00
Guillaume Gomez 1ef3bf52d2 gstreamer: Add missing init calls in tests 2020-04-12 17:25:54 +03:00
Guillaume Gomez c07fe14191 gstreamer*: Add missing init checks 2020-04-12 17:25:54 +03:00
Sebastian Dröge 62e9af58c6 Fix some clippy warnings 2020-04-11 21:18:18 +03:00
Sebastian Dröge d7ed8d1e35 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-11 21:12:03 +03:00
Sebastian Dröge 94ace06883 Remove deprecated std::error::Error::description() impls 2020-04-11 19:39:04 +03:00
Sebastian Dröge d05f8cace8 gstreamer: Add bindings for Plugin::get_plugin_name()
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/248
2020-04-11 19:33:34 +03:00
Sebastian Dröge 62c0f5ef42 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-09 16:57:06 +03:00
Sebastian Dröge 9f96c5e573 gstreamer/buffer: Unmap memory in flush() of the Write impl of the buffer cursor
This makes sure that any remaining data is actually written out as part
of the unmapping, which might be necessary depending on the memory type.
2020-04-07 13:47:04 +03:00
Sebastian Dröge 2fbb10ec92 gstreamer/buffer: Only unmap memory in buffer cursor seek impl if we have to move to a different memory
Prevents some unnecessary unmaps.
2020-04-07 13:45:36 +03:00
Sebastian Dröge 35f7c910a9 gstreamer/buffer: Refactor buffer cursor implementation with macros to reduce code duplication 2020-04-07 13:45:36 +03:00
Sebastian Dröge 42d09c2834 gstreamer/buffer: Move BufferCursor/BufferRefCursor into its own module
It's quite a bit of code and can be kept nicely separate.
2020-04-07 12:59:24 +03:00
Sebastian Dröge 5fc68e252d gstreamer: Add missing BufferCursorRef re-export 2020-04-06 21:00:42 +03:00
Sebastian Dröge ee3a8caa7d gstreamer/buffer: Add various tests for the BufferCursor / BufferCursorRef 2020-04-06 20:15:51 +03:00
Sebastian Dröge a884a419db gstreamer/buffer: Add a BufferCursor / BufferCursorRef helper structs
This implements Read/Seek or Write/Seek and allows to read/write/seek
into the buffer without merging the memories inside.

The writer also only maps the memory write-only as compared to all other
ways of accessing the buffer/memory data in a writable way, which have
to map it read-write.

See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/425
for a similar API proposal for GStreamer core.
2020-04-06 20:15:35 +03:00
Sebastian Dröge 9b782b4dfa gstreamer/buffer: Add tests for various memory related buffer API 2020-04-06 19:29:19 +03:00
Sebastian Dröge 9e0c980a49 gstreamer/buffer: Add iterators for iterating over the memories inside a buffer
With immutable, mutable and owned variant.
2020-04-06 19:28:28 +03:00
Sebastian Dröge 2b70db3a9e 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-06 19:27:40 +03:00
Sebastian Dröge 019afd54f9 Update for new from_glib_borrow signature
See https://github.com/gtk-rs/glib/pull/605
2020-04-05 18:48:48 +03:00
Sebastian Dröge 7120d54a46 gstreamer/pad: Add tests for getrange functions 2020-04-02 19:58:15 +03:00
Sebastian Dröge d7e6c2e37f gstreamer/pad: Add support for filling the passed in buffer in the getrange function
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/242
2020-04-02 19:58:09 +03:00
Sebastian Dröge 7c2f3bafa0 gstreamer/pad: Add get_range_fill() and pull_range_fill() functions
These allow providing an already allocated, writable buffer.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/242
2020-04-02 19:57:28 +03:00
Sebastian Dröge 962da8a63d gstreamer/datetime: Add TryFrom impls for converting between glib::DateTime and gst::DateTime 2020-03-22 14:01:32 +02:00
Sebastian Dröge 7dd0404927 gstreamer/datetime: new_from_g_date_time() can actually return NULL
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/411
2020-03-22 14:01:32 +02:00
Sebastian Dröge d0bfdda97f examples: Update for new GLib boxed deriving API 2020-03-19 14:20:52 +02:00
Sebastian Dröge 8bb64bb825 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-03-18 23:54:46 +02:00
Jan Alexander Steffens (heftig) af27d73e5c
gstreamer: Return &'static str from StructureRef
The names are backed by Quarks and thus eternally valid.
2020-03-12 19:25:12 +01:00
Sebastian Dröge 755ef9da33 Update CHANGELOG.md for 0.15.4 2020-03-10 10:57:33 +02:00
Sebastian Dröge 8e038572cb 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 13:02:20 +02:00
Sebastian Dröge 8d0fa62275 Minor cleanup in various places 2020-03-09 12:55:14 +02:00
Sebastian Dröge 9d5ae8ed14 gstreamer: Don't take mini objects by value for append() and similar operations
Compared to
  let foo = Foo::bar(foo);
the new form is easier to follow
  foo.bar();
2020-03-07 00:31:30 +02:00
Sebastian Dröge b21f576430 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-02-28 16:29:48 +02:00
Sebastian Dröge 98ecef7153 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-02-27 12:10:14 +02:00
Sebastian Dröge 71497e77de 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-02-22 18:42:02 +02:00
Sebastian Dröge e585b37923 Update CHANGELOG.md for 0.15.3 2020-02-15 15:23:12 +01:00