Commit graph

596 commits

Author SHA1 Message Date
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
Sebastian Dröge
93b32882ee tags: Use to_glib_none() to convert &str to a C string instead of as_ptr()
The latter does not necessarily give us a NUL-terminated string.

Fixes https://github.com/sdroege/gstreamer-rs/issues/122
2018-07-23 10:17:38 +03:00
Sebastian Dröge
694bcaa697 Fix all clippy warnings
Or silence the ones we don't care about.
2018-07-20 10:28:20 +03:00
Sebastian Dröge
fc79b4c4c8 Update CHANGELOG.md for 0.11.4 2018-07-19 18:52:30 +03:00
François Laignel
02a8e9faa0 Tags: more and better getters/adder factorizations 2018-07-12 07:22:39 +02:00
François Laignel
7ca54cf1c5 Tags: factorize get_index unsafe code 2018-07-12 07:22:39 +02:00
François Laignel
0b9edee8d7 Tags: use SendValue for generic getters and iterator 2018-07-12 07:22:39 +02:00
François Laignel
be9ef0d152 Tags: implement generic iterators
This is the continuation of PR #107 by @ystreet
2018-07-12 07:22:39 +02:00
Matthew Waters
2e1f1eadac tags: add dynamic tag retrieval based on string's and Value's
The rust compiler won't complain if you use the wrong types with the
dynamic getter/adder however GStreamer itself does.
2018-07-12 07:22:39 +02:00
Matthew Waters
fa054fe3b0 gst/tags: combine the static tag references into the impl_tag macro
There's no real reason to have them separate when there's already a
macro making types for different tags.
2018-07-12 07:22:39 +02:00
Sebastian Dröge
73a5b26638 Use ParamSpec for the deep-notify signal callback instead of just the name
And allow filtering by property-name via the signal details
2018-07-09 19:47:15 +02:00
Sebastian Dröge
dc32d338ef Let various Caps operations take &CapsRef instead of &Caps 2018-07-06 17:58:54 +02:00
Sebastian Dröge
480d373fbc Caps::subtract() does not take ownership of the arguments and can be implemented for CapsRef 2018-07-06 17:56:55 +02:00
Sebastian Dröge
8c268ecd06 Gracefully return None in Caps::get_structure() if the index is too high 2018-07-06 10:36:00 +02:00
Sebastian Dröge
75acd7ea95 Fix typefind test if typefind factories without caps are available 2018-07-06 10:35:57 +02:00
Sebastian Dröge
e88017f914 Ensure that miniobjects are writable before creating a mutable borrow 2018-07-06 10:29:09 +02:00
Sebastian Dröge
a3dffc2faa Switch from futures to futures-preview crates
Fixes https://github.com/sdroege/gstreamer-rs/issues/118
2018-06-29 07:43:29 +02:00
Sebastian Dröge
e0972ae1e5 Get rid of manual usage of callback_guard! 2018-06-24 14:52:50 +03:00
Sebastian Dröge
2085d170be Get rid of callback_guard! as unwinding through FFI is defined behaviour now and aborts 2018-06-24 14:42:11 +03:00
Sebastian Dröge
bd1fb746de Update to num-rational 0.2 2018-06-22 10:27:14 +03:00
JohanGoversTech
db3fe69415 Change return type of add_probe to support removing (#116)
* Change return type of add_probe to support 0 PadProbeId

* use from_glib for the conversion of the PadProbeId
2018-06-14 15:45:54 +03:00
François Laignel
f4d57a6652 Fix memory issue building a Sample with an info Structure
The following code in a `[test]`:
``` rust
let info = Structure::builder("sample.info")
    .field("f3", &123i32)
    .build();
let sample = Sample:🆕:<GenericFormattedValue>(
        None,
        None,
        None,
        Some(info.as_ref())
    );
```

generates one of the followings executing `cargo test`:
```
- segmentation fault
- signal: 6, SIGABRT: process abort signal
- signal: 11, SIGSEGV: invalid memory reference
```

This is due to `ffi::gst_sample_new` expecting to take ownership of the `info`
`Structure`.
2018-06-12 00:23:10 +03:00
Sebastian Dröge
d2272fefa7 Update CHANGELOG.md for 0.11.3 2018-06-08 10:27:24 +03:00
Sebastian Dröge
1192a027b4 Regenerated with latest GIR and GIR files 2018-05-21 11:55:19 +03:00
Sebastian Dröge
4692806b00 Add Bus::remove_watch()
It was accidentially ignored before
2018-05-19 10:37:09 +03:00
Sebastian Dröge
da6b04abfd Bus::create_watch() can't return None, change it to return no Option 2018-05-19 10:36:15 +03:00
Thibault Saunier
2962f186f7 Print pointer value when formatting debug strings 2018-05-14 09:22:25 +03:00
Sebastian Dröge
be646e78d9 Update to muldiv 0.2 2018-05-11 10:37:19 +03:00
Sebastian Dröge
7429138274 Update CHANGELOG.md for 0.11.2 2018-05-09 12:48:33 +03:00
Sebastian Dröge
c31921e093 Further work-arounds for floating reference handling changes between 1.12 and 1.14
This fixes various memory-safety issues caused by broken reference
counting. We have to handle pre-1.14 and post-1.14 differently in
constructors.

See https://bugzilla.gnome.org/show_bug.cgi?id=743062#c30
2018-05-09 12:20:59 +03:00
Sebastian Dröge
2cefd9aea6 Re-run everything through rustfmt 2018-04-25 11:13:14 +03:00
Sebastian Dröge
46d27e3e75 Regenerate everything with latest GIR 2018-04-23 20:45:15 +03:00
Sebastian Dröge
a276c226fd Port BusStream to futures 0.2 2018-04-23 20:27:17 +03:00
Sebastian Dröge
5dd17d6248 Update CHANGELOG.md for 0.11.1 2018-04-07 20:32:28 +03:00
Sebastian Dröge
03055f4e84 Change Structure/StructureRef to_string() to the minimal required fix
And add a comment to why we need it. No other struct with a to_string()
function is affected.

https://github.com/sdroege/gstreamer-rs/issues/101
2018-04-07 13:37:44 +03:00
Sebastian Dröge
ce9b98f338 Add Display impl for StructureRef too 2018-04-06 13:22:08 +03:00
Sebastian Dröge
f346d57b4f Fix infinite recursion in Structure::to_string()
Instead of StructureRef's to_string(), we were calling
ToString::to_string() in the Display impl. Which then called into itself
again.

Fixes https://github.com/sdroege/gstreamer-rs/issues/101
2018-04-06 13:22:08 +03:00
Guillaume Desmottes
c5617f6a47 WIP: test Structure string conversions 2018-04-06 13:22:08 +03:00