Commit graph

833 commits

Author SHA1 Message Date
Sebastian Dröge 6dcd255815 gstreamer/deviceprovider: Add support for subclassing gst::DeviceProvider 2019-09-12 10:18:23 +03:00
Sebastian Dröge 9df56faf48 gstreamer/device: Add support for creating gst::Device subclasses 2019-09-11 22:46:15 +03:00
Sebastian Dröge 8208ee0891 gstreamer/device: Device::create_element() is transfer floating, not transfer full
See https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/444
2019-09-11 22:41:59 +03:00
Sebastian Dröge 52509b4b95 Remove subclassing feature and make it the default 2019-09-09 11:51:07 +03:00
Sebastian Dröge ea367bac14 Fix or ignore various clippy warnings
And ignore some common warnings we don't care about in general, while
also making clippy errors fail the build.
2019-09-07 19:39:19 +03:00
Jan Alexander Steffens (heftig) 105412b5a0
Iterator: Test that Iterator can be used in a for loop
`for x in foo` depends on foo implementing IntoIterator.
2019-09-05 11:01:16 +02:00
Jan Alexander Steffens (heftig) 7a12c4d5e1
Iterator: Replace ad-hoc fn iter with impl IntoIterator
std has a trait for converting things into Iterators. Make use of it.
2019-09-05 10:33:54 +02:00
Jan Alexander Steffens (heftig) a30935ad1f
Iterator: Add a wrapper implementing std's Iterator
Transposing the item type lets us be a std-compatible Iterator.

The iterator is automatically resynced when resuming iteration after
yielding Resync. This lets some combinators like `collect` and `find`
work properly.
2019-09-04 14:34:05 +02:00
Jan Alexander Steffens (heftig) db61ec4a6b
Iterator: Manually implement Debug
The derived implementation is restricted to `where T: Debug`, but the
iterator doesn't actually contain a value of type T.
2019-09-04 14:34:04 +02:00
Jan Alexander Steffens (heftig) 8db9926107
log_handler test: Ignore unknown categories
Tests run parallel in multiple threads. This makes the log_handler test
flaky because it may see log messages triggered by other threads. Make
the handler ignore all messages not in the category we care about.
2019-09-04 14:02:55 +02:00
Vivia Nikolaidou 6488c42890 element: Added num_pads, num_src_pads, num_sink_pads
Exposing the corresponding struct element in GstElement
2019-09-03 17:14:47 +03:00
François Laignel 8af1da1a4e Fully qualify inner macros for exported macros...
... otherwise they can't be resolved in dependent crates compiled
for edition 2018.
2019-09-02 09:06:29 +00:00
Mathieu Duponchelle d3d503cea6 subclass/element: expose set_clock and provide_clock vmethods 2019-08-31 02:05:21 +02:00
François Laignel 1367becfaf DateTime: manual impl for PartialOrd, PartialEq and Debug
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/217
2019-08-21 12:34:15 +02:00
François Laignel ced522ed08 Implement ser / de for Date Values, Structure fields and Tags 2019-08-19 15:51:42 +02:00
François Laignel c74eef374a Fix serde for Values with optional Types
Attention: these changes induce breaking changes for the serde
representation of some types.

Serialization of `Value`s used to rely on the `get` function
followed by an `unwrap`. This means that optional types couldn't
be serialized when they were `None`.

This commit distinguishes between the optional `Value` `Types` and
the ones that always return some value.

The `Value`s, `Structure` fields and `Tag`s with following types are
now represented as `Option`s:

- `Buffer`
- `DateTime`
- `Sample` (note: this type is used for `Tag` images)
- `String` (except for `Tag`s - see the comment in `tags_serde.rs`).

The representations for these `Type`s remain unchanged when they are
used in-place (not as part of a `Value`).

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/215
2019-08-19 15:34:24 +02:00
François Laignel 26423a069c structure::tests: use error constructors 2019-08-16 15:04:01 +02:00
Sebastian Dröge f050750b5e Update CHANGELOG.md for 0.14.4 2019-08-14 22:48:16 +03:00
Sebastian Dröge e00781309b gstreamer/element: Use from_glib_none() for the release_pad() trampoline
The reference to the pad we get passed is not guaranteed to be valid for
the whole scope of release_pad(). It might be the last reference as
owned by GstElement, and gst_element_remove_pad() would destroy it then.
2019-08-14 11:58:05 +03:00
Sebastian Dröge 2829c7ee2f gstreamer: Add StructureRef::get_optional()
This only returns Err on type mismatches. If the field does not exist or
None it returns None, otherwise the value.

StructureRef::get() returns Err also if the field does not exist.
2019-08-13 18:30:40 +03:00
Sebastian Dröge 1b860825ee Update feature flags of all dependencies to include the same version as for the crate itself
This improves build times as it allows cargo to reuse more previous
build results when building crates separately.

Also remove the serde-pickle dependency. It was only used in a single
test and caused pulling in of quite a few dependencies.
2019-08-13 16:46:08 +03:00
François Laignel 514a05accd Manual update for new Value::get signature 2019-08-13 10:57:32 +02:00
François Laignel 5d012945df Regen 2019-08-11 10:43:30 +02:00
François Laignel 26fda95a54 Fix functions unit tests for v < 1_12 2019-08-08 19:38:42 +02:00
Josh Matthews 0e36ac5205 Add high level bindings for adding new log handlers and removing the default handler. 2019-07-22 16:06:41 +00:00
Sebastian Dröge fcc361f920 gstreamer: Add bindings for gst::calculate_linear_regression() 2019-07-17 00:24:13 +03:00
Sebastian Dröge eb59456ae3 Update CHANGELOG.md for 0.14.3 2019-07-16 12:47:15 +03:00
Sebastian Dröge 007f80ca32 buffer: Allow setting/unsetting buffer flags
As there are extension flags types, we need separate setter/unsetter
functions for the flags, or otherwise we would always clear the
extension flags types (e.g. GstVideoBufferFlags).
2019-07-16 11:51:23 +03:00
Sebastian Dröge 36b0cafc5e Update CHANGELOG.md for 0.14.2 2019-07-15 20:03:48 +03:00
Sebastian Dröge ae58a469d1 meta: Add support for ReferenceTimestampMeta 2019-07-14 22:32:10 +03:00
Sebastian Dröge d8325212f4 Fix various clippy warnings 2019-07-11 22:02:01 +03:00
Sebastian Dröge f63d50546a Don't use ONCE_INIT anymore now that Once::new() is const 2019-07-11 17:56:50 +03:00
Sebastian Dröge 424a87efbf Use MaybeUninit::zeroed() everywhere possible instead of mem::zeroed() 2019-07-11 17:56:50 +03:00
Sebastian Dröge 3a8d05075d Switch everything from mem::uninitialized() to MaybeUninit or mem::zeroed()
And also fix a few cases where mem::uninitialized() was simply wrong to
use.
2019-07-11 17:56:50 +03:00
Sebastian Dröge bde6a04780 Regenerate everything with latest gir 2019-07-10 11:21:28 +03:00
Sebastian Dröge dcbf68e9e7 Update CHANGELOG.md for 0.14.1 2019-07-06 23:57:28 +03:00
Sebastian Dröge 9a3e7d0aa9 gstreamer/format: Fix serde serialization unit test
Regression from fdb95f0033
2019-07-06 10:19:03 +03:00
Sebastian Dröge 28a24a4fc0 Update versions to 0.15.0 2019-06-24 20:53:05 +03:00
Sebastian Dröge fa6cb789cd Update CHANGELOG.md for 0.14.0 2019-06-24 20:52:03 +03:00
Sebastian Dröge 47f0940b44 Regenerate everything with latest gir 2019-06-24 20:52:03 +03:00
Guillaume Desmottes 24d9dc6209 gstreamer: tags: make call to to_string() explicit
This one was actually working but better to be safe as it may be
ambigious.
2019-06-18 17:11:24 +05:30
Guillaume Desmottes 40d2db7095 gstreamer: caps: make call to to_string() explicit
This one was actually working but better to be safe as it may be
ambigious.
2019-06-18 17:11:24 +05:30
Sebastian Dröge b87ffa17bb Run rustfmt also over all the generated code 2019-06-18 13:12:00 +03:00
Sebastian Dröge e5aa6f59f9 Regenerate everything 2019-06-18 13:10:46 +03:00
Sebastian Dröge 4f024af7d6 gstreamer/serde: Fix compilation with serde feature enabled 2019-06-06 09:25:19 +03:00
Sebastian Dröge d1e562b9f6 Explicitly add dyn keyword to trait objects
Trait objects without are deprecated with the latest nightly and this
makes it more clear that we're doing dynamic dispatch anyway.
2019-06-06 09:09:34 +03:00
Guillaume Desmottes 7a69a1137c gstreamer: plugin_feature: use Rank enum 2019-06-04 12:56:18 +03:00
Guillaume Desmottes 1cd733fb0b gstreamer: allow to register using Rank enum directly
Prevent user to have to cast to a u32 manually.
2019-06-04 12:50:43 +03:00
Sebastian Dröge 2c31baaa0c gstreamer: Implement Add<u32> for gst::TypeFindProbability and fix comparison
While the enum is a signed integer, all operations inside GStreamer
(especially comparison) is based on unsigned integers.
2019-06-04 12:45:56 +03:00
Sebastian Dröge 620a9b2a95 gstreamer: Implement Add<u32> for gst::Rank and fix comparison
While the enum is a signed integer, all operations inside GStreamer
(especially comparison) is based on unsigned integers.
2019-06-04 12:45:56 +03:00
Sebastian Dröge d44c293753 Use TryFrom/TryInto traits where it makes sense instead of our previous ad-hoc solutions 2019-06-03 18:42:34 +03:00
Sebastian Dröge fdb95f0033 gstreamer/format: Implement formatted value arithmetic with overflow checks
We have a value to represent invalid/overflow anyway, so let's make sure
that all operations are actually not overflowing and if they do we
assigned that value to the result.
2019-06-03 08:25:43 +00:00
Sebastian Dröge fbcdf90386 gstreamer/format: Add various other arithmetic operation impls for the different formatted values
This includes gst::ClockTime.
2019-06-03 08:25:43 +00:00
Sebastian Dröge b2ffe98d59 gstreamer/fraction: Add impls for various other arithmetic operations on fractions
Any arithmetic operation on plain values or references in any order
should be possible now, and on fractions with i32.
2019-06-03 08:25:43 +00:00
Sebastian Dröge 37071c9d60 gstreamer: Fix build with serde feature enabled 2019-05-28 04:35:12 +02:00
Sebastian Dröge 004ce5d392 gstreamer: Re-export the paste crate for the gst_plugin_define! macro
And only depend on the paste crate if the subclass feature is requested.
2019-05-27 22:46:26 +02:00
Sebastian Dröge faa6467d7a gstreamer: Export new 1.14+ plugin symbols if configured for 1.14+
This is also needed for static linking on Android to work correctly.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/154
2019-05-27 20:22:05 +00:00
Arun Raghavan 61b1822c95 gstreamer: Fix URIHander::set_uri annotation
We don't actually accept a NULL uri, so it doesn't need to be an Option,
and using &str instead of String is more efficient.
2019-05-25 19:12:42 +02:00
Vivia Nikolaidou 6461a3abaa buffer_pool: Add {get,set}_allocator bindings 2019-05-24 10:32:57 +00:00
Vivia Nikolaidou 32e1d68d36 allocator: Expose GstAllocator 2019-05-24 10:32:57 +00:00
Vivia Nikolaidou 922af1d606 Add GstMemory bindings
Part of https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/12
2019-05-24 10:32:57 +00:00
Vivia Nikolaidou 044d931d01 flags: Expose GstMemoryFlags 2019-05-24 10:32:57 +00:00
Sebastian Dröge b5dcbe3897 gstreamer/proxypad: Move default functions to extension trait 2019-05-24 10:04:16 +00:00
Sebastian Dröge 86e969d964 Remove various Into<Option<_>> trait bounds from functions
In autogenerated code these were already replaced but some manual code
still kept them.
2019-05-24 10:04:16 +00:00
Sebastian Dröge 6cef32a4dd Change various mini object references to references to the refcounted object
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/204
2019-05-24 10:04:16 +00:00
Sebastian Dröge e6f65a5032 gstreamer/miniobject: ToOwned::to_owned() on references has to create a copy
Otherwise it's possible to create a new owned reference from a mutable
reference, and then there is a mutable and immutable reference to the
same data at the same time, which is simply not allowed.

https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/204
2019-05-24 10:04:16 +00:00
Sebastian Dröge a986914bad Use Option<&T> instead of &Option<T> everywhere
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/203
2019-05-22 23:27:13 +03:00
Jan Alexander Steffens (heftig) 5398a80a73
gstreamer/pad: Add a probe test 2019-05-16 18:17:15 +02:00
Jan Alexander Steffens (heftig) d470881ac2
gstreamer/pad: Handle PadProbeReturn::Handled more correctly
If the probe returns Handled and the data was a Buffer we need to ensure
it was consumed. Queries need to be returned. The behavior of Handled
for other probes is not clear.
2019-05-16 16:55:02 +02:00
Jan Alexander Steffens (heftig) d5317cccdd
gstreamer/pad: Expose the flow_ret value in PadProbeInfo
This is present since GStreamer 1.5.90 so no feature flags needed.
2019-05-16 16:55:02 +02:00
Jan Alexander Steffens (heftig) 061683af7b
gstreamer/pad: Assert post-probe data did not become None
GStreamer does not allow the probe to consume the reference here.
2019-05-16 16:55:02 +02:00
Guillaume Desmottes 94d4c5b42d buffer: display metas in Debug
Fix #201
2019-05-16 14:45:55 +02:00
Vivia Nikolaidou 496fc61873 pipeline: Add to lib.rs 2019-05-12 16:41:18 +03:00
Sebastian Dröge 698120c620 Add tests for pad and element subclassing 2019-05-11 13:45:09 +00:00
Sebastian Dröge c282f34c74 bus: Fix naming for filtered pop functions 2019-05-11 13:45:09 +00:00
Vivia Nikolaidou 1a65c674a9 Add unset_*_flags functions
Implemented for element, object, pad, and pipeline

https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/104
2019-05-11 15:51:33 +03:00
Vivia Nikolaidou 6403c06990 Add API for setting/getting object flags
Implemented for Object, Pipeline, Bin, Element, Plugin.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/104
2019-05-11 13:13:33 +03:00
Vivia Nikolaidou 9067b500c8 enums: Removed MessageType::Any 2019-05-11 11:45:12 +03:00
Vivia Nikolaidou 05d936fcee gstreamer: Add binding for GstMessageType and gst_bus_timed_pop_filtered
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/168
2019-05-10 19:35:13 +03:00
Guillaume Desmottes 05519219ef buffer_pool: use to_glib_none() to cast BufferPoolAcquireParams 2019-05-07 13:30:00 +05:30
Guillaume Desmottes fca4441a72 buffer_pool: implement ToGlibPtr and ToGlibPtrMut for BufferPoolAcquireParams
I'll use them to bind
gst_video_decoder_allocate_output_frame_with_params()
2019-05-07 10:28:25 +05:30
Sebastian Dröge 5f1a50026d Update futures code to futures 0.3
Also clean it up a bit.
2019-05-02 21:35:12 +03:00
François Laignel bf96e264c9 gstreamer: Fix test for toc serialization
Ron changed the way it outputs empty arrays with version `0.5`.
2019-04-24 19:04:40 +03:00
Sebastian Dröge 044e3985a3 Update dependencies 2019-04-24 09:45:56 +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 54705f959a message: DeviceAdded/Removed getters are transfer full 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 5c32a0d1d3 Update manual code and configuration for 1.16 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 5af54b8d94 Use the slice::windows() iterator instead of zipping twice for Element::link_many() and unlink_many()
Has the same effect but is easier to read and more efficient.
2019-04-10 16:30:26 +03:00
François Laignel 9a01bd6202 TagList: handle scope in serde
These changes break compatibility for the serde representations of
`TagList` and `Toc`. Previous representation for the `TagList` was
a sequence. We now have to rely on a struct representation in order
to add `scope`.
2019-03-20 13:58:28 +00:00
François Laignel bec3d84627 TagList: add TagScope {get, set} 2019-03-20 13:58:28 +00: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 631eee13da gstreamer/pad: Use the correct type for destroying the pad task closure data
It's a Box<RefCell<_>> and not a plain Box<_> like for the other pad
functions, and doing this wrong causes crashes at runtime.
2019-03-01 19:49:27 +02:00
Sebastian Dröge 490004d9c5 Remove empty lines from CHANGELOG.md as that breaks the GitLab rendering
... if it's between items in a list.
2019-02-22 17:50:59 +02:00
Sebastian Dröge 32e961d418 Update versions to 0.14.0 2019-02-22 13:04:56 +02:00
Sebastian Dröge 0f6850d6a9 Update CHANGELOG.md for 0.13.0 2019-02-22 11:55:16 +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 53c98db711 gstreamer: Don't implement ClockId's Ord/etc based on the compare function
It is only comparing the times, and two clock ids with the same time are
obviously not the same.
2019-02-21 18:48:57 +02:00
Sebastian Dröge a5a016557f bus: add_watch() can fail as there can only be one watch at a time
Return an Option<SourceId> because of that.
2019-02-15 13:30:05 +02:00
François Laignel fb99f1abad gstreamer: subclassing: move parent fn in dedicated trait (!231) 2019-02-13 11:53:14 +00:00
Sebastian Dröge 09ad177315 Add Bus::add_watch_local() without Send bound on the closure
This panics if not called from the thread that owns the main context.
2019-02-10 11:43:55 +02:00
François Laignel fcb46ee5bf gstreamer: add parent_xxx impl for all vfunc 2019-02-03 08:41:20 +00:00
François Laignel 56c00d9250 gstreamer: fix parent vfunc invocations when needed
Fixes #180
2019-02-03 08:41:20 +00:00
Sebastian Dröge 354f9fbfe4 Fix compilation of tests without features="v1_14" 2019-01-30 13:02:41 +00: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 1adb063fbc Don't box closures twice for signal callback closures 2019-01-29 19:24:26 +02:00
Sebastian Dröge 49c5fa33ba Add tests for Element::foreach_pad() and Bus::set_sync_handler() 2019-01-29 16:45:35 +02:00
Sebastian Dröge 5625a75b1b Pad::new_from_static_pad_template_with_gtype() can return None 2019-01-29 16:28:51 +02:00
Sebastian Dröge 00cbd49923 Regenerate with latest gir 2019-01-29 16:28:51 +02:00
Sebastian Dröge 2b2c3bbade Make sure to initialize GStreamer in all Structure tests 2019-01-27 03:02:11 +02:00
François Laignel a88918dd5f Use glib_result_from_gboolean! where applicable 2019-01-26 12:46:37 +01:00
François Laignel f59e35d0a3 Use LoggableError in user defined functions and callbacks
`LoggableError` ensures an error in a user defined function is always
logged. This commit changes eligible function signatures accordingly.
2019-01-26 11:58:30 +01:00
François Laignel c5f0bab614 Add LoggableError
... an auto-loggable `Error` return type, to make sure user errors
get logged.

To be used via the associated macros.

See discussion in #175.
2019-01-26 11:58:27 +01:00
Sebastian Dröge ca791ae4fa Use an empty enum for the custom tag in the test
There's no point in allowing to have values of it, it's only a marker
type.
2019-01-23 16:11:52 +02:00
Sebastian Dröge 9d79280929 Add some more functions for generically handling tags 2019-01-23 15:54:00 +02:00
Sebastian Dröge 598e012568 Add bindings for gst::tags::register() 2019-01-23 15:52:51 +02:00
Sebastian Dröge bd0cbe99b3 Add more Debug impls to everything possible 2019-01-22 17:46:08 +02:00
Sebastian Dröge cc3c3876ab Implement Debug for EventView and MessageView 2019-01-22 16:55:59 +02:00
Sebastian Dröge ad24ab9638 Regenerate everything with latest gir 2019-01-21 22:00:48 +02:00
François Laignel 84ba2d7971 Use dedicated type DeviceMonitorFilterId
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/174
2019-01-19 14:52:15 +01:00
François Laignel b20e4454f1 Return () instead of bool for some functions
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/171
2019-01-17 23:49:35 +01:00
François Laignel 333d71f92b Update functions returning bool to use Result<(), glib::BoolError>
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/171
2019-01-17 23:13:44 +01:00
François Laignel a254a8ed29 Declare Gst defined Debug Categories and add one for Rust binding 2019-01-16 17:07:57 +01:00
Sebastian Dröge 3fcbf3fba4 Use default instead of default-features in Cargo.toml 2019-01-16 17:10:01 +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 43ec33a1db Remove some code that is nowadays generated by the glib_wrapper! macro 2019-01-16 15:23:53 +02:00
Sebastian Dröge 58ccf666a6 Change some const raw pointers to mutable
We cast them to a mutable pointer of another type right afterwards
anyway.
2019-01-16 13:52:56 +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 948fb2ae4b Replace XXXReturn with Result<XXXSuccess, XXXError>
... in function signatures.

These breaking changes aim at improving usability by allowing users
to take advantage of Rust error management features sur as `ok_or`,
`map_err`, `expect` and the `?` operator. See the `examples` and
`tutorials` to get an idea of the impacts.
2019-01-11 18:33:04 +01: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
Sami Jaktholm 6f867443c9 tags: fix album tag definition
The Album tag should be defined using the GST_TAG_ALBUM constant instead
of GST_TAG_ARTIST_SORTNAME.
2018-12-28 19:51:28 +02:00
Sebastian Dröge 69af6a5975 bus: Add iter() and iter_timed() that return Iterators around the corresponding pop() functions
And make use of them in the examples where it makes sense.
2018-12-28 00:06:03 +02:00
Sebastian Dröge 005f436631 Buffer::from_slice() / from_mut_slice() can't possibly return None 2018-12-26 12:13:23 +01:00
Bastian Köcher d257ece388 Make Value serialize/deserialize Buffers 2018-12-25 01:40:17 +01:00
Sebastian Dröge 93d1349d78 Use new GLib API for generically implementing GObject interfaces 2018-12-19 13:15:20 +02:00
Sebastian Dröge 11db200dd6 Remove some historical cruft from the README.md 2018-12-13 19:46:57 +02:00
Sebastian Dröge 654d98b269 Update README.md to mention that this also allows writing GStreamer plugins
And clarify that gst-plugins-rs only contains various plugins.
2018-12-13 19:41:07 +02:00
Sebastian Dröge d780b92f21 Use an extension trait instead of a custom type for the GStreamer param specs
This way they can simply be created via glib::ParamSpec::fraction() for
example.
2018-12-11 12:37:15 +02: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 fa988fe73d Make gst_define_mini_object_wrapper! macro work stand-alone without requiring specific names in scope 2018-12-08 12:53:10 +02:00
François Laignel 8c3df63b95 URIHandler: rename get_type
Avoid a conflict with the `get_type` function declared by the
`glib_object_subclass!` macro.
2018-12-03 20:47:58 +01:00
Sebastian Dröge 1515707655 Add bindings for the array/fraction param spec constructors 2018-11-29 19:18:45 +00:00
Sebastian Dröge 3febc42628 Update for glib-rs API changes 2018-11-28 21:55:21 +02:00
Sebastian Dröge 12c3d1e911 Update CHANGELOG.md for 0.12.2 2018-11-26 16:16:57 +01:00
Sebastian Dröge 8c9d1abe9d Remove GitLab badge
It only works for gitlab.com currently
2018-11-26 16:16:26 +01:00
Sebastian Dröge 6629d1b3f6 Update documentation to GitLab pages 2018-11-26 16:15:53 +01:00
Sebastian Dröge b41517234d Various fixes for the README.md of the separate crates 2018-11-26 11:40:55 +01:00
Sebastian Dröge 5df964435c Update README.md with changes from the main one 2018-11-26 11:36:48 +01:00
Sebastian Dröge dad32c16c4 Update gst-plugin-rs link to gst-plugins-rs 2018-11-26 11:34:47 +01:00
Víctor Manuel Jáquez Leal ec8727c3ca Make rustfmt in CI happy 2018-11-23 15:32:05 +01:00
Sebastian Dröge d2b911a629 Port GhostPad subclassing 2018-11-21 16:14:06 +02:00
Sebastian Dröge ec2a0635ca Port Pad subclassing 2018-11-21 16:14:06 +02:00
Sebastian Dröge 97211e869b Port Pipeline subclassing 2018-11-21 16:14:06 +02:00
Sebastian Dröge 55dac7eeb4 Port Bin subclassing 2018-11-21 16:14:06 +02:00
Sebastian Dröge 0a8d34bc23 Port ChildProxy subclassing 2018-11-21 16:14:06 +02:00
Sebastian Dröge a0d2f0e98f Port URIHandler subclassing 2018-11-21 16:14:06 +02:00
Sebastian Dröge d2f00ca1e0 Allow passing normal strings to gst_plugin_define!() without explicit \0 at the end
See https://gitlab.freedesktop.org/gstreamer/gst-plugin-rs/issues/38
2018-11-21 16:14:06 +02:00
Sebastian Dröge 9ff906eb8e Declare correct major/minor plugin versions based on bindings configuration
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugin-rs/issues/37
2018-11-21 16:14:06 +02:00
Sebastian Dröge 56319f9294 Move subclassing infrastructure into the main bindings
And port Element bindings to the new infrastructure.
2018-11-21 16:14:06 +02:00
Sebastian Dröge d6ce094cfd Check for successful typefind registration in typefind unit test 2018-11-20 11:15:03 +02:00
Sebastian Dröge d7157a4279 Add the to-dot-file functions to the gst::Bin trait
This allows directly calling them on bins instead of using a global
function.
2018-11-11 10:14:43 +02: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
Thijs Vermeir 25e0baf483 update autogenerated files 2018-11-04 19:14:35 +01:00
Thijs Vermeir ba22a36cdb use BoolError for {Element,TypeFind,DeviceProvider}::register 2018-11-04 19:14:35 +01:00
Sebastian Dröge fb0178a4f2 Call gst::init() in message::test_other_fields() test at the beginning 2018-11-03 20:15:27 +02:00
Sebastian Dröge f4a6aa4481 Change all references from GitHub to freedesktop.org GitLab 2018-11-03 20:08:42 +02:00
Víctor Manuel Jáquez Leal 60c9cdfda1 Update autogenerated code with latest gir 2018-10-31 17:33:15 +02:00
Arun Raghavan f4685c4629 Use FlowError instead of FlowReturn as error part of Result
This prevents the possibility of a Result that is an Err(Ok), which
would not be meaningful.
2018-10-29 14:40:39 +00:00
Arun Raghavan a4f25df045 enums: Implement the From trait for error/success
This implements the From trait for all *Error/*Success enums to the
corresponding *Return enum.
2018-10-28 18:41:27 +00:00
Sebastian Dröge 6325e0fcce Fix build with ser_de feature enabled 2018-10-28 17:48:42 +00:00
Sebastian Dröge 9f8ec3b35b Rename TagList::iter_tag_list() to TagList::iter_generic() and ::iter_tag_list_simple() to ::iter()
It's the generic iterator for going over values, and the simple one is
the one you usually want.

Also rename iterator types, but those are internal anyway.
2018-10-28 17:30:25 +00:00
Sebastian Dröge 8a6bcbcedb Run through rustfmt once again 2018-10-28 13:47:02 +00:00
Sebastian Dröge 54d8065dd3 Add TagList::iter_tag_list_simple() for getting a single value per tag 2018-10-28 13:46:28 +00:00
Sebastian Dröge 0947c8f087 Rename gst::Bin traits from BinExt to GstBinExt to prevent conflicts with gtk::Bin 2018-10-28 11:30:41 +00:00
Sebastian Dröge 7189a6a7c1 Replace various transmutes in meta code with pointer casts 2018-10-11 11:58:01 +03:00
Sebastian Dröge e2950749e8 Remove some unneeded lifetime annotations 2018-10-11 11:58:01 +03:00
Sebastian Dröge d19c70694a Use ? operator instead of explictly propagating None 2018-10-11 11:58:01 +03:00
Sebastian Dröge fa29872863 Fix various clippy warnings in the serde code 2018-10-11 11:58:01 +03:00
Sebastian Dröge 5d9a3b4272 Use ptr::add(i) instead of ptr::offset(i as isize) 2018-10-11 11:58:01 +03:00
Sebastian Dröge eb0a804a50 Run everything through latest rustfmt 2018-10-08 15:02:23 +03:00
Sebastian Dröge c56e9ddfea Also implement copy() returning the wrapper miniobject on the reference type
This way CapsRef::copy() will return a Caps, and not a GstRc<CapsRef>.
2018-10-05 16:36:15 +03:00
Sebastian Dröge 30b9527112 Implement ::copy() directly on miniobject wrapper types
This provides the additional wrapping as the one via get via deref will
only give back a GstRc<T> without the additional wrapping.
2018-10-03 16:54:00 +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 0f704646f6 Add more complete bindings for allocation query
Everything apart from allocators are covered now.
2018-10-01 22:56:32 +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 7270a837d1 Fix namespace error in previous commit 2018-09-29 12:19:47 +03:00
Sebastian Dröge cb23d20270 Implement support for buffer Metas
Fixes https://github.com/sdroege/gstreamer-rs/issues/103
2018-09-29 11:44:55 +03:00
Sebastian Dröge ad62d08d65 Implement Display for Caps and TagList 2018-09-28 19:14:35 +03:00
Sebastian Dröge 6fd0ed4cb3 Move all minobjects to newtype wrapper types
For consistency with external crates and to help rustdoc, which gets
confused on impl blocks for type aliases.
2018-09-28 18:11:46 +03:00
Sebastian Dröge 26ee546d1a Always derive Clone for miniobject wrappers 2018-09-28 17:42:52 +03:00
Sebastian Dröge 74024447fe Add macro to define newtype wrappers around MiniObjects
To allow implementing them in a meaningful way in external crates.
2018-09-28 17:37:27 +03:00
Sebastian Dröge a43c78f2c5 Run everything through rustfmt 2018-09-28 13:15:18 +03:00
Sebastian Dröge 564f9faf84 Add support for CapsFeatures
Fixes https://github.com/sdroege/gstreamer-rs/issues/13
2018-09-28 13:15:18 +03:00
Sebastian Dröge 857ed8609c Structure is Sync, and StructureRef is Send+Sync 2018-09-22 11:00:17 +03:00
Sebastian Dröge 05b591c709 Update CHANGELOG.md for 0.12.1 2018-09-21 11:43:01 +03:00
Sebastian Dröge 0ddab16801 Update versions to 0.13.0 2018-09-10 01:54:25 +03:00
Sebastian Dröge a2a7eac8a8 Update CHANGELOG.md for 0.12.0 2018-09-10 01:54:07 +03:00
Sebastian Dröge 08dcd9f22e Update ron dependency (for tests) to 0.4 2018-09-06 14:10:30 +03:00
Sebastian Dröge 2e139bd202 Update CHANGELOG.md for 0.11.6 2018-08-27 10:04:16 +03:00
Sebastian Dröge 3c900e6102 Regenerate with latest gir 2018-08-18 00:25:12 +03:00
Sebastian Dröge a6d9fe4b0a Remove std::iter::Iterator impl from gst::Iterator
It does not work well with possibly errors during iteration and
requiring to possibly resync.
2018-08-13 20:35:28 +03:00
Sebastian Dröge 0d70950821 Implement Pad::sticky_events_foreach() 2018-08-13 19:58:30 +03:00
Sebastian Dröge 999c84f0a0 Implement ValueExt::compare() around std::cmp::Ordering and implement an eq() function
No need for a custom enum
2018-08-10 14:22:15 +03:00
Sebastian Dröge dba110e8ad Fix build with two-phase-borrows/NLL 2018-08-08 09:16:18 +02:00
Sebastian Dröge cf9e875878 Implement Ord/PartialOrd on Seqnum 2018-08-06 11:25:44 +03:00
Philippe Normand 58741b7ea2 gstreamer: Implement deinit() function
This function is especially usefull when using the leaks tracer. It was removed
in commit e7a0543c.
2018-08-04 18:39:53 +03:00
Sebastian Dröge ccca8248c3 Add getter for the current pad mode 2018-08-01 19:28:57 +03:00
François Laignel 0eb6bcf0c0 serde: restrain unneeded visibilities 2018-07-30 23:18:30 +03:00
François Laignel 68263ffc7d Buffer: serde: add a TODO for a future better design attempt
Serialization and deserialization are asymetrical: ser uses string literals
and de uses a dedicated `struct`, leading to possible inconsistencies.

The idea is to rely on a single `struct` for both ser and de. The only
problem is that, in order to avoid unneeded copies, `buffer` requires an owned
`ByteBuf` for de and a borrowed `Bytes` for ser. `Either` could help adapting
to both situations.
2018-07-30 23:18:30 +03:00
François Laignel 3ed7257da9 DateTime: serde: use an enum 2018-07-30 23:18:30 +03:00
François Laignel 9fd5392a16 value: serde: use stringify for types 2018-07-30 23:18:30 +03:00
François Laignel 6bda3ef174 serde: add roundtrip tests
This allows making sure serialization and deserialization are in sync for
types with asymetrical implementations.
2018-07-30 23:18:30 +03:00
François Laignel 64ea419839 Caps: serde as an enum
`Caps` can be `any`, `empty` or matching a list of `Structures`.
2018-07-30 23:18:30 +03:00
François Laignel 9f2f684188 format: serde: avoid redundant () for some types 2018-07-30 23:18:30 +03:00
François Laignel dfc961679f segment: serde FormattedSegments too
... and use the same `struct` for serialization and deserialization so
that fields mapping consistency is ensured at compilation time.
2018-07-30 23:18:30 +03:00
François Laignel ab9cd29bd6 serde: fmt pass
Note: clippy didn't raise any warning
2018-07-30 23:18:30 +03:00
François Laignel d4fb10ef4c Toc: serde: rename loop_ to loop 2018-07-30 23:18:30 +03:00
François Laignel 0aac055727 Caps: serde: use a placeholder for CapsFeature
`CapsFeature` is not available in `gstreamer-rs` yet. Use a placeholder
with a `None` value for now.
2018-07-30 23:18:30 +03:00
François Laignel fd0c3f4464 Structure: de: pass the new Structure to the Visitor
Use a `DeserializeSeed` to pass the newly created and named `Structure`.
2018-07-30 23:18:30 +03:00
François Laignel 23307a4795 Tags: ser/de: gather tags with the same name together 2018-07-30 23:18:30 +03:00
François Laignel d856fedf06 Buffer: ser: don't panick if not readable 2018-07-30 23:18:30 +03:00
François Laignel 693121bc55 Buffer: fix instanstiation during deserialization 2018-07-30 23:18:30 +03:00
François Laignel 90b046fbcf serde: separate serde impl and tests from base module
+ fix erroneous `datetime` instead of `buffer` in `BufferRef::serialize`
+ remove ser/de for `Value`s with types `ULong` & `ILong`
2018-07-30 23:18:30 +03:00
François Laignel 3f0cd6fb87 Toc: serde impl 2018-07-30 23:18:30 +03:00
François Laignel 20834e475b Tags: serde impl 2018-07-30 23:18:30 +03:00
François Laignel 4f948e2cce Sample: serde impl 2018-07-30 23:18:30 +03:00
François Laignel 5e6f80cc32 Segment: serde impl 2018-07-30 23:18:30 +03:00
François Laignel a2c4e78f70 GenericFormattedValue: serde impl 2018-07-30 23:18:30 +03:00
François Laignel 0f1d3bea89 BufferList: serde impl 2018-07-30 23:18:30 +03:00
François Laignel 862afe5cc7 Buffer: serde impl 2018-07-30 23:18:30 +03:00
François Laignel 138a0fb18c ClockTime: serde impl 2018-07-30 23:18:30 +03:00
François Laignel 49d3ee29e9 Caps: serde impl 2018-07-30 23:18:30 +03:00
François Laignel 1ef83c24b8 Structure: serde impl 2018-07-30 23:18:30 +03:00
François Laignel 778e11742f value: serde impl 2018-07-30 23:18:30 +03:00
François Laignel 0d65b7f1ed DateTime: serde impl 2018-07-30 23:18:30 +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 ec8b55ec30 Stream-line pad probe code
Don't take another reference of the data passed through the pad probes,
i.e. keeping buffers writable if they're writable.
2018-07-26 03:14:04 +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 26d9d304c4 Update CHANGELOG.md for 0.11.5 2018-07-24 15:55:07 +03:00
Sebastian Dröge af5470a8b0 Unref the message in sync bus handlers if Drop is returned 2018-07-24 15:35:26 +03:00