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
Sebastian Dröge
d58cf01e3a
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:25:19 +01:00
Sebastian Dröge
2f88dc6576
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-09 21:37:03 +02:00
Sebastian Dröge
cddccf9502
gstreamer/promise: Add Future constructor for Promise
...
This returns a tuple that basically works like a oneshot channel: the
Promise acts as the "sender" and once the promise resolves the
"receiver" contains the result.
2020-02-09 19:08:41 +02:00
Valmir Pretto
6263922b6d
gstreamer: BusStream tests
2020-02-04 10:33:34 -03:00
Valmir Pretto
7663589d94
gstreamer: BusStream cleanup
...
A few small readability changes
2020-02-04 10:33:25 -03:00
Sebastian Dröge
8b3049d098
impl Clone for BufferPoolConfig and PlayerConfig
2020-01-30 23:10:26 +02:00
Sebastian Dröge
5102bfd324
Update CHANGELOG.md for 0.15.2
2020-01-30 00:40:56 +02:00
Sebastian Dröge
fe4f074e90
bus: Don't use the bus sync handler in the bus Stream to notify about messages being available
...
This is racy and can cause the consumer of the messages to never be
woken up anymore:
1. Waker is stored because no message on the bus
2. Sync handler is called, waker is woken up
3. Bus is polled again and no message is on it (yet),
new waker is registered
4. Bus stores the message from 2. in its queue (after
the sync handler has returned BusSyncReply::Pass)
5. No new message ever appears on the bus because all
this happened for the very last message
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/235
2020-01-28 23:39:36 +02:00
Sebastian Dröge
63a8afafa5
gstreamer: Use more accurate types for Seqnum, GroupId and MetaSeqnum
...
For the latter introduce an actual opaque type that allows using them
for comparison purposes but is not just a plain u64.
For the former represent them as opaque type around an NonZeroU32. 0 is
the invalid case and does not happen in the majority of functions. Where
it can happen, represent this case by using an Option<_> instead.
This makes it harder to mis-use these types.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/209
2020-01-25 00:07:36 +02:00
Sebastian Dröge
0bd2903896
Update CHANGELOG.md for 0.15.1
2020-01-23 08:28:19 +02:00
Sebastian Dröge
7230aee069
Switch everything from lazy_static to once_cell::Lazy
...
Fewer macros, faster compile-time and the Lazy type will likely end up
in the standard library in a similar form to this.
2020-01-22 19:57:41 +02:00
Sebastian Dröge
2b5f16391d
gstreamer/childproxy: Fix unused variable compiler warnings
2020-01-22 19:57:41 +02:00
Sebastian Dröge
196a9891cb
Regenerate with latest gir
...
This switches the RTP constant strings over to once_cell::Lazy
2020-01-22 19:57:41 +02:00
Sebastian Dröge
d3c77f400d
Don't derive Debug impls for generic types where the type parameters don't have to impl Debug themselves
...
This allows to use MappedBuffer and similar types to be properly
debug-printed.
Also change VideoFrame/VideoFrameRef/RTPBuffer from a tuple struct to a
struct with proper field names to make the code easier to understand.
2020-01-22 19:10:04 +02:00
Sebastian Dröge
280fe38fe4
gstreamer/childproxy: Don't require implementing child_added/removed() signal vfuncs
...
Most implementers will not care about default handlers for these signals
so requiring to implement them is only unnecessarily verbose.
2020-01-22 17:14:38 +02:00
Sebastian Dröge
b17f04e866
bus: Make bus Stream private and add functions on the bus directly for it
...
Also add a helper function that allows filtering the stream directly.
2020-01-22 10:05:36 +02:00
Sebastian Dröge
217bbc3e94
bus: Take the mutex before popping messages for the bus stream
...
Otherwise a message might arrive between popping, getting None and
locking the mutex for storing the waker. In that case we would never
be woken up.
2020-01-22 09:21:10 +02:00
Sebastian Dröge
aa29567171
gstreamer/element: Add call_async_future() that returns a future
...
The future would resolve into the return value of the closure that is
called asynchronously on the thread pool, and allows asynchronous
awaiting for it to finish.
let res = element.call_async(|element| {
element.set_state(gst::State::Playing)
}).await;
assert_eq!(res, Ok(gst::StateChangeSuccess::Success))
2020-01-20 12:03:59 +02:00
Guillaume Desmottes
01c4d08501
gstreamer: use thiserror crate
...
Make code simpler and fix deprecated warning when building on nightly as
Error::description is being deprecated.
2020-01-10 18:54:50 +05:30
Guillaume Desmottes
e151ee75f8
gstreamer: error: add tests
2020-01-10 18:54:50 +05:30
Guillaume Desmottes
1f79bf3e02
gstreamer: caps: Builder: prevent re-adding features
...
Rework the API to statically prevent users re-adding features or
adding features if any_features() has been previously called.
2020-01-10 15:09:06 +05:30
Guillaume Desmottes
fe5ebd82cc
gstreamer: caps: BuilderFull: prevent adding features if using any
...
Rework the API to statically prevent users adding extra features if the
builder has been created with builder_full_with_any_features(). It
doesn't make sense to add extra features if all are already included.
2020-01-10 14:21:23 +05:30
Guillaume Desmottes
a9adac85aa
gstreamer: pad: fix build on Windows
...
GstPadProbeInfo.id is a gulong which are 32 bits on Windows.
2020-01-09 10:14:21 +00:00
Guillaume Desmottes
38db96859b
gstreamer: add Caps::builder_full()
...
API to create a caps containing multiple structures.
Fix #231
2020-01-09 15:01:18 +05:30
Sebastian Dröge
775c5bfe27
gstreamer: Add getters/setters for BinFlags and fix flags API for PadFlags
...
The BinFlags API was accidentally used for PadFlags, allowing to set
BinFlags on pads which is not very useful.
2020-01-06 17:23:39 +02:00
Sebastian Dröge
8aac047af5
Use NonZeroU64/U32 for PadProbeId, NotifyId and DeviceMonitorFilterId
...
This allows for some further optimizations.
2020-01-05 11:09:46 +02:00
Guillaume Desmottes
c298577139
gstreamer: add MemoryRef::dump()
2019-12-24 09:15:34 +05:30
Sebastian Dröge
69be1ce2fc
Fix various new clippy warnings from 1.40
2019-12-22 12:10:27 +02:00
Sebastian Dröge
d26ffc2c21
Update version to 0.16.0
2019-12-19 00:48:08 +02:00
Sebastian Dröge
bb321f7fa8
Update CHANGELOG.md for 0.15.0
2019-12-18 19:15:21 +02:00
Sebastian Dröge
2ba5105b80
Implement Sync/Send for more types and don't implement Send for TypeFind
...
They can actually be shared with multiple threads at the same time
safely as all functions requiring an immutable reference are
thread-safe.
OTOH TypeFind can't be shared safely between different threads as not
all implementations of the TypeFind struct are thread-safe.
2019-12-18 18:37:44 +02:00
Sebastian Dröge
be3c378f28
Use Results instead of Options where they signal an error instead of just a missing value
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/issues/216
2019-12-17 22:21:28 +02:00
Sebastian Dröge
eaafbd14f7
Regenerate
2019-12-15 12:19:33 +02:00
Sebastian Dröge
f417d68820
Remove usage of glib_floating_reference_guard!()
...
It's not needed anymore.
2019-12-07 23:05:14 +02:00
Sebastian Dröge
2375c9da59
gstreamer/element: Don't steal floating references passed into release_pad()
...
They are apparently not part of this element so we can directly return
here instead of stealing the reference.
2019-12-07 22:58:26 +02:00
Sebastian Dröge
802fa4fcb4
gstreamer/bin: Take a strong reference of the element passed into remove_element()
...
It might be gone once we called into the parent class' implementation so
we need to keep a strong reference around here. Also we need to ensure
that we don't accidentally steal a floating reference from the caller
here: if the element is still floating it is apparently not part of this
bin and we can directly return FALSE.
2019-12-07 22:56:11 +02:00
Sebastian Dröge
bef1143df3
gstreamer/device: Preserve floating reference flag from create_element() parent class' implementation
2019-12-07 22:51:57 +02:00
Sebastian Dröge
84ac2ef073
bin: Use from_glib_none() in Bin::add() for subclasses
...
This way we take ownership of any floating references passed in here, as
required by the GstBin API, instead of just borrowing the reference and
having someone else sink it or not.
2019-12-04 18:49:12 +02:00
François Laignel
fd6bbf5929
Fully qualify glib_bool_error! in gst_loggable_error!
2019-11-21 19:18:01 +01:00
Sebastian Dröge
175863668d
Regenerate everything with latest gir
2019-11-21 09:52:51 +02:00
François Laignel
dc7937a8d4
Don't leak missing Safety doc clippy warnings
...
With rustc 1.40.0, clippy checks that the `unsafe` functions come with
a `Safety` section. When running clippy on a downstream crate, the
macros such as `gst_plugin_define!` leak the clippy warnings for the
unsafe functions.
Silence the warnings for now.
2019-11-18 10:25:06 +01:00
Sebastian Dröge
9f121b1f12
gstreamer/sample: Silence clippy warning
...
warning: methods called `new` usually return `Self`
--> gstreamer/src/sample.rs:107:5
|
107 | / pub fn new<'a>() -> SampleBuilder<'a> {
| |_____^
2019-11-14 12:11:10 +00:00
Sebastian Dröge
0c944cb26e
gstreamer: Add documentation to gst::deinit() about when it's safe to be called
2019-11-14 12:11:10 +00:00
Sebastian Dröge
8b687ab4a7
Remove header from the README.md about the move from github to gitlab
...
At this point everybody should've noticed.
2019-11-14 10:21:02 +00:00
Guillaume Desmottes
1206dc5b15
gstreamer: typefind: add binding for gst_type_find_get_length()
2019-11-14 09:33:29 +00:00
Sebastian Dröge
043af60126
iterator: Fix leak of the closure in Iterator::filter()
2019-11-13 12:18:21 +01:00
Sebastian Dröge
3d1b3211bf
promise: Add unit test for change func handling
2019-11-13 12:13:14 +01:00
Sebastian Dröge
d69e8e237f
promise: Remove unneeded feature gates
2019-11-13 12:05:25 +01:00
Sebastian Dröge
cd55f02e20
promise: Change change_func to get the actual reply of the promise passed
2019-11-13 11:40:41 +01:00
Sebastian Dröge
77c6741ae0
Update to futures 0.3 and require Rust 1.39
...
Also use async/await in the futures examples.
2019-11-11 12:18:49 +01:00
Guillaume Gomez
9e30687d8e
Fix glib reexports
2019-11-11 11:34:09 +01:00
Guillaume Gomez
a58cd4b5bc
Manual code fixes
2019-11-11 11:34:09 +01:00
Guillaume Gomez
457ac9118b
Regenerate with latest gir
2019-11-11 11:34:09 +01:00
Sebastian Dröge
8dcf3fec20
gstreamer: Change Sample constructor to the builder pattern
...
Simplifies construction of Samples considerably.
2019-10-23 09:55:56 +03:00
Sebastian Dröge
2d2459ed52
Export traits from the crate level and ensure that all traits are in the preludes
2019-10-17 13:30:35 +03:00
Sebastian Dröge
132eb891ed
Fix dox feature and docs.rs Cargo.toml metadata
2019-10-05 00:13:29 +03:00
Sebastian Dröge
991f2e1576
Update and regenerate everything with latest gir
2019-10-05 00:03:57 +03:00
Fernando Jimenez Moreno
591468f53b
gstreamer/log: Use non-panicking UTF8 conversion in log handler
...
Make sure that `log_handler` and `DebugMessage::get` do not panic while
processing non-UTF8 characters by using lossy instead of strict UTF8
string conversion.
2019-10-04 09:03:28 +00:00
Sebastian Dröge
06cfcd57fc
Move to_string() methods into the Display trait or rename to to_str(), move from_string() into the FromStr trait
...
Fixes clippy warnings, prevents confusing errors and is more consistent.
The Display trait provides a to_string() method by itself and FromStr
provides from_str().
2019-10-04 11:01:55 +03:00
Sebastian Dröge
861f5c1e1a
Re-run cargo fmt
...
Minor changes in the latest version.
2019-10-04 08:19:24 +03:00
Sebastian Dröge
19b3427909
clock: Move wake_id() from ClockId to ClockImpl
...
This shouldn't really be called on anything outside a Clock
implementation.
2019-09-26 11:25:52 +03:00
Sebastian Dröge
6abb0d3506
gstreamer: Add support for subclassing gst::SystemClock
2019-09-25 17:22:15 +03:00
Sebastian Dröge
bacf4998ce
clock: Add some more ClockId API for being able to implement clock subclasses
2019-09-25 17:22:15 +03:00
Sebastian Dröge
4e60a0aea4
clock: Add support for setting/getting/unsetting clock flags
2019-09-25 17:22:15 +03:00
Sebastian Dröge
1faf41986b
gstreamer: Add bindings for ClockEntryType and ClockFlags
2019-09-25 17:22:15 +03:00
Sebastian Dröge
1c8b2c671b
gstreamer: Add support for subclassing gst::Clock
2019-09-25 17:22:15 +03:00
Sebastian Dröge
74b05f0272
gstreamer: Add support for implementing gst::TagSetter interface
2019-09-25 17:22:11 +03:00
Sebastian Dröge
eda3539330
gstreamer: Add support for implementing gst::Preset interface
2019-09-25 16:11:54 +03:00
Jan Alexander Steffens (heftig)
29710d9970
gstreamer: Assert that FromValueOptional works as expected
...
Fails without the preceding patch.
2019-09-24 10:34:44 +00:00
Jan Alexander Steffens (heftig)
dca2cc1c5d
gstreamer: Remove bad asserts in two impl FromValueOptional
...
These prevented actually getting a None out of a Value which contains a
NULL.
2019-09-24 10:34:44 +00:00
Jan Alexander Steffens (heftig)
eaacee49de
iterator: Simplify StdIterator a bit
2019-09-24 11:31:28 +02:00
Sebastian Dröge
79d3888c3d
Update CHANGELOG.md for 0.14.5
2019-09-17 15:41:12 +03:00
Fernando Jimenez Moreno
de7a9dee1e
Fix Windows build
2019-09-13 09:55:32 +02:00
Sebastian Dröge
7868018abb
gstreamer/element: Add support for ElementClass::add_metadata()
2019-09-12 10:18:23 +03:00
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 Type
s
...
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 Buffer
s
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 FormattedSegment
s 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
Sebastian Dröge
9a3ef2e9f1
Regenerate with latest GIR and update for the non-bitflags flags in -sys now
2018-04-04 10:47:12 +03:00
Sebastian Dröge
492c3d656c
Run everything through rustfmt again
2018-04-01 11:57:58 +03:00
Sebastian Dröge
fca0287dec
Use ptr::NonNull in various places
2018-04-01 11:29:55 +03:00
Sebastian Dröge
15116d0f98
Update CHANGELOG.md for 0.11.0
2018-03-20 12:47:58 +02:00
Sebastian Dröge
6d5f7337fc
Update version to 0.12.0
2018-03-20 12:37:24 +02:00
Sebastian Dröge
68ba4d23bb
Update to using the master branch of gstreamer-sys again
2018-03-20 12:04:16 +02:00
Sebastian Dröge
a33fd41d02
Regenerate everything with latest gir
2018-03-20 11:52:29 +02:00
François Laignel
cd56d60352
Bus::get_pollfd generate doc for both unix & windows
...
There are different implementations and signatures for `get_pollfd` depending
on whether the target platform is unix or windows. When generating the doc,
we need both implementations to appear regardless of the target platform. This
commit is inspired by the way Rust `std` library deals with `process::Command`
OS dependent variants
(https://doc.rust-lang.org/std/process/struct.Command.html#impl-CommandExt ).
Documentation can't be accurate though as we can't use the`std::os::windows`
on `unix` and vice versa. As a workaround a fake fd class matching the other
platform is declared.
This could be further enhanced once `#[doc(cfg(...))]` is stabilized
(https://github.com/rust-lang/rust/issues/43781 ) by declaring `#[doc(cfg(unix))]`
or `#[doc(cfg(windows))]` instead of the hard coded comments `This is supported
on **Windows/Unix** only`. Unfortunately, these comments disappear when
generating will `--all-features` because they are not part of the documentation
in the gir file.
2018-03-19 13:48:59 +02:00
François Laignel
406eb119d3
message: add test_other_fields
...
Fixes https://github.com/sdroege/gstreamer-rs/pull/93
2018-03-19 10:32:07 +02:00
Sebastian Dröge
3a755219f4
Add Promise bindings
2018-03-19 10:32:07 +02:00
Sebastian Dröge
0112d22804
Various manual 1.14 API additions and remove deprecated functions
2018-03-19 10:32:07 +02:00
Sebastian Dröge
4864a1e089
Fix build
2018-03-19 10:32:07 +02:00
Sebastian Dröge
7f479b0e14
Use correct gstreamer-sys branch
2018-03-19 10:32:07 +02:00
Sebastian Dröge
1abe9cbeb9
Update gstreamer
2018-03-19 10:32:07 +02:00
François Laignel
88a68dff3e
Fix futures
crate not being pulled with feature dox
...
When feature `dox` is selected but not `futures`, the `futures` crate is not
available as a dependency leading to a "can't find crate for `futures`" error.
2018-03-19 10:31:41 +02:00
François Laignel
93442e94dd
element: add feature gate for test_call_async
...
Fixes https://github.com/sdroege/gstreamer-rs/pull/92
2018-03-16 17:51:56 +02:00
Sebastian Dröge
11c974a55e
Fix some unused import compiler warnings if using < v1_10
2018-03-16 12:28:20 +02:00
Sebastian Dröge
fc7cda4522
Directly dereference DebugCategory struct to read the threshold and #[inline]
...
This should improve logging performance if the threshold is not high
enough.
2018-03-16 12:27:36 +02:00
Sebastian Dröge
c38af51bf0
Add Element::call_async() bindings
2018-03-14 15:42:17 +02:00
Sebastian Dröge
de8f4694f5
Add initial BufferPool bindings
2018-03-07 11:08:21 +02:00
Sebastian Dröge
a3b294f0f2
Add back callback guards
2018-03-02 21:34:29 +02:00
Sebastian Dröge
808ff293ec
Regenerate everything with latest gir
2018-03-02 21:34:29 +02:00
Sebastian Dröge
4117c01ff2
Run everything through latest rustfmt-nightly
2018-02-22 11:18:37 +01:00
François Laignel
84e4546f72
Toc: implement Debug trait
2018-02-20 19:29:26 +01:00
Sebastian Dröge
f92f0a99e8
Update CHANGELOG.md for 0.10.2
2018-02-18 23:25:11 +01:00
Sebastian Dröge
f1426c82ba
Remove callback guards
...
Since Rust 1.24 it is safe to let panics go to the FFI boundary
2018-02-17 19:58:41 +02:00
François Laignel
c971727193
Query: allow concrete query instantiation
...
Allow instantiating and dereferencing concrete queries. The motivation
for this proposal is to allow the following usability enhancements:
- Concrete queries mutability guaranteed by the borrow checker,
including for generic functions:
``` rust
let mut p = Query::new_position(::Format::Time);
p.get_mut_structure().set("check_mut", &true);
```
- Concrete queries functions available in place:
``` rust
let mut q = gst::Query::new_duration(gst::Format::Time);
let duration = if pipeline.query(&mut q) {
Some(q.get_result())
} else {
None
};
```
2018-02-16 10:33:40 +02:00
Sebastian Dröge
6d0d7a3df8
Regenerate everything with latest GIR
2018-02-06 16:42:34 +02:00
François Laignel
ac31688fbd
Value: use new union for GValue_data
2018-02-05 05:28:09 +01:00
fengalin
da924e5d4d
Event & Message: factorize common attributes in generic builders
...
Concrete events and messages share common attributes which can be factorized in generic builder `struct`s. This reduces noise in the concrete implementations.
2018-01-29 17:33:49 +02:00
fengalin
2d1218e6d6
Event, Message & Query: allow dereferencing concrete types to access generic type methods
...
Implement `deref` for concrete derivatives of `Event`, `Message` and `Query`. This allows accessing generic methods such as `is_sticky` for events, `get_seqnum` for messages or `is_serialized` for queries and `get_structure` for all.
2018-01-29 17:33:49 +02:00
fengalin
86812c1a53
MessageBuilder: comment out other_fields related methods until GStreamer v1.14 is released
...
These methods are commented out in order to maintain consistency between messages with and without arguments. It will be restored and conditioned to feature "v1_14" when GStreamer v1.14 is released.
2018-01-29 10:07:42 +02:00
fengalin
3c65a50076
Fix building argument-less messages
...
Building an argument-less message such as eos yields an assertion failure due to the inner structure being null. The short term solution consists in checking that the inner `structure` is not `null` before attempting to insert `other_fields`. The consequence is that `others_fields` defined for argument-less messages will be ignored. A correction will be applied when GStreamer 1.14 is released thank to the introduction of `gst_message_writable_structure` (see https://bugzilla.gnome.org/show_bug.cgi?id=792928 ). Due to the dependency on GStreamer 1.14, the correction will be only available under the activation of a feature "v1_14".
Events are not affected as the build method the availability of `gst_event_writable_structure` and this function "will never return NULL". However, we can avoid a `structure` allocation for argument-less messages without `other_fields`.
2018-01-29 10:07:42 +02:00
Sebastian Dröge
ad219dd171
Remove PAD_PROBE_ID_INVALID and Default impls for PadProbeId and NotifyWatchId
...
These should never ever be 0, and passing 0 to any of the functions
using them will result in assertions.
2018-01-25 21:06:39 +02:00
Sebastian Dröge
98290bcc55
Update CHANGELOG.md for 0.10.1
2018-01-03 17:08:46 +02:00
Sebastian Dröge
65468c1fc8
Add Sample::get_info() and deprecate get_structure()
...
For consistency with the C API naming.
2017-12-30 12:03:03 +02:00
Sebastian Dröge
4a9cb50670
Add Sample::with_buffer_list() constructor
2017-12-30 12:02:48 +02:00
Sebastian Dröge
f47b30b8d1
Add Debug impl for Sample
2017-12-30 12:02:33 +02:00
Sebastian Dröge
755982bb38
Correctly mark Stream and StreamType as requiring version 1.10 at least
...
Should fix https://github.com/sdroege/gstreamer-rs/issues/68
2017-12-26 18:13:15 +01:00
Sebastian Dröge
c56251d673
Don't require a mutable self for TagSetterExtManual::add()
...
Like all GObjects, mutation works through interior mutability.
2017-12-23 11:43:09 +02:00
Sebastian Dröge
4a5987d03d
Update versions to 0.11.0
2017-12-22 15:06:06 +02:00
Sebastian Dröge
95562b8d22
Update CHANGELOG.md for 0.10.0
2017-12-22 14:44:24 +02:00
Sebastian Dröge
9b6efb2339
Fix various clippy warnings
2017-12-20 21:46:58 +02:00
Sebastian Dröge
15ea81e473
Derive Clone on ErrorMessage
2017-12-20 20:08:00 +02:00
Sebastian Dröge
9066cf0634
Add ErrorMessage type
...
This can be used to propagate an element error via a Result until the
place where it can be actually posted on an element.
2017-12-20 20:00:05 +02:00
Sebastian Dröge
e0dc84c10a
Run everything through rustfmt again
2017-12-20 19:30:14 +02:00
Sebastian Dröge
f439f14ec3
SystemClock::set_default() can accept None
2017-12-20 18:57:16 +02:00
Sebastian Dröge
95c9f92549
Add StreamCollection::iter()
2017-12-20 18:54:56 +02:00
Sebastian Dröge
67a46b3bf5
Most Preset functions that return a bool signal an error with this, use a Result
2017-12-20 18:47:04 +02:00
Sebastian Dröge
f2729fb730
Preset::set_app_dir() returning false is an error, make it a Result
2017-12-20 18:44:57 +02:00
Sebastian Dröge
d182584c25
Object::set_name() should not accept NULL
2017-12-20 18:35:41 +02:00
Sebastian Dröge
55c8cf69f3
update_registry() returning false is not an error
...
It means that there were no changes.
2017-12-20 18:22:30 +02:00
Sebastian Dröge
e34212d517
parse_bin_from_description() return value is not nullable, except for errors
2017-12-20 18:22:30 +02:00
Sebastian Dröge
210119d9aa
Element::set_clock() allows None for the clock parameter
2017-12-20 18:22:30 +02:00
Sebastian Dröge
6d7acd200d
Element::set_bus() allows None for the bus parameter
2017-12-20 18:10:50 +02:00
Sebastian Dröge
241bb823d5
Element::link_pads_full() should return a Result instead of a bool
2017-12-20 18:07:55 +02:00
Sebastian Dröge
e2970db84c
Failure to post a message is an error, so return a Result instead of a bool
2017-12-20 18:07:28 +02:00
Sebastian Dröge
6d8cfa5de0
Add support for TypeFind and implement Ord on Rank and TypeFindProbability
...
Fixes https://github.com/sdroege/gstreamer-rs/issues/11
2017-12-19 19:14:12 +02:00
Sebastian Dröge
12ee7358e3
Add bindings for TypeFindFactory
2017-12-18 09:53:08 +02:00
Sebastian Dröge
5dd89d01e2
DeviceMonitor/Provider::start() should return a Result
2017-12-18 09:49:15 +02:00
Sebastian Dröge
48958d381e
Implement Sync for DateTime
...
It's immutable.
2017-12-18 09:42:27 +02:00
Sebastian Dröge
9223386750
Remove clock parameter from Clock::(un)adjust_with_calibration()
...
It's useless and not used.
2017-12-18 09:39:37 +02:00
Sebastian Dröge
9a7ede1dcc
Bus::add_signal_watch_full() should take a Priority, not u32 for the priority
2017-12-18 09:39:14 +02:00
Sebastian Dröge
49627b8de7
Various nullability fixes everywhere and hide enum->string functions
2017-12-17 18:29:22 +02:00
Sebastian Dröge
5108c941ed
Various nullability fixes to plugin bindings, and add add_dependency() API
...
Also fix structure ownership for the cache data API
2017-12-17 14:26:17 +02:00
Sebastian Dröge
4b2fd0e593
Require SendValue for value::Array and value::List
2017-12-17 14:06:22 +02:00
Sebastian Dröge
2035bba437
Make value of Bitmask public
2017-12-17 11:57:37 +02:00
Sebastian Dröge
1f6fd3def7
Structure intersection can return None
2017-12-17 11:52:52 +02:00
Sebastian Dröge
dfdae187a3
Filter in caps queries can be None, and there could be no resulting caps
2017-12-17 11:32:01 +02:00
Sebastian Dröge
ffb5869dd1
Use the correct pad type for the proxy/ghost pad default pad functions
2017-12-17 11:24:03 +02:00
Sebastian Dröge
62058ab1c3
Use &ToSendValue for the stream-status stream_object in the builder
2017-12-16 18:39:50 +02:00
Sebastian Dröge
ccf6c1a632
Owner of structure-change and stream-status messages is mandatory
2017-12-16 18:39:33 +02:00
Sebastian Dröge
bcf6b34c1b
Code/text of progress messages is mandatory
2017-12-16 18:38:53 +02:00
Sebastian Dröge
974e681a5d
Move optional taglist/entry_struct fields into the Redirect builder from the constructor
2017-12-16 18:13:25 +02:00
Sebastian Dröge
7bc1fce97d
Move value for PropertyNotification message into the builder instead of constructor
2017-12-16 18:10:10 +02:00
Sebastian Dröge
c2f075ed8d
Description of debug categories is optional
...
Also add a getter for the description of a debug category
2017-12-16 17:56:23 +02:00
Sebastian Dröge
f7c971874d
Implement Display and Error for IteratorError
2017-12-16 17:48:38 +02:00
Sebastian Dröge
7065d1d884
Add constants for COPY_ALL and COPY_METADATA buffer copy flags
2017-12-16 17:40:47 +02:00
Sebastian Dröge
fa05ee7b08
Various fixes for nullability in the event bindings
...
The origin in protection events is optional, the stream id in
stream-start events is not.
Also return a segment reference instead of a segment copy when parsing a
segment event.
2017-12-16 17:30:50 +02:00
Sebastian Dröge
9608ef52ec
Mark Segment as #[repr(C)]
2017-12-16 17:30:37 +02:00
Sebastian Dröge
b9c4e4cd6e
Allow no value for the PropertyNotify message
...
It can contain no value.
Also use &ToSendValue instead of an actual value for building the
message.
2017-12-16 15:37:06 +02:00
Sebastian Dröge
52ca97e7e6
Let ChildProxy::set_child_property() take a &ToValue instead of an actual Value
2017-12-16 15:24:18 +02:00
Sebastian Dröge
3de73d89f2
Add Buffer::copy_into() and add flags parameter to ::copy_region()
...
Also ::copy_deep() can fail, return an Option<_>
2017-12-16 15:15:42 +02:00
Sebastian Dröge
18f99073c1
Use from_glib_none/full directly on potential NULL pointers if Option<_> is returned
...
The implementation for Option<_> is doing exactly what we did manually
here.
2017-12-16 15:07:26 +02:00
Sebastian Dröge
8a2c6a3246
Implement AsRef<[u8]>, AsMut, Deref, DerefMut, PartialEq, Eq and Debug for BufferMap too
2017-12-13 11:00:29 +02:00
Sebastian Dröge
e37c3d684c
Fix PartialEq for MappedBuffer
...
No need to map the buffer again, we can just compare the slice directly.
2017-12-13 11:00:02 +02:00
Sebastian Dröge
5dff6026be
Also implement Deref/DerefMut for MappedBuffer for &[u8]
2017-12-13 10:55:26 +02:00
Sebastian Dröge
85fdc8bf13
Implement AsRef<[u8]>, AsMut, Debug, PartialEq and Eq for MappedBuffer
2017-12-13 09:58:41 +02:00
Sebastian Dröge
298cb754c9
Fix precision handling in ClockTime Display impl
2017-12-10 12:31:41 +02:00
Sebastian Dröge
5065bc76ee
Rename FormattedValue::from_glib/to_glib to from_raw/to_raw_value
...
Otherwise we conflict with GLib translation traits, which causes some
annoyances.
2017-12-10 12:10:25 +02:00
Sebastian Dröge
c99928d030
Change FormatValue related API to be more convenient to use
...
FormatValue is now renamed to GenericFormattedValue and the API slightly
changed. In addition there is now a FormattedValue trait, and a
SpecificFormattedValue trait plus types for Bytes, Buffers and the
existing ClockTime.
This allows to create functions like
Pad::query_duration<F: SpecificFormattedValue>() -> Option<F>
and doesn't require the caller to unwrap the generic value anymore,
which is completely unneeded in these cases.
In addition, Segment became FormattedSegment<T> with API to
upcast/downcast between the specific formatted values and the generic
formatted value. This greatly simplifies usage of Segments.
2017-12-09 19:45:18 +02:00
Sebastian Dröge
520a9bb879
Use downcast_unchecked() for sender in deep-notify signal handler
...
This is guaranteed to be of the correct type.
2017-12-09 18:08:57 +02:00
Sebastian Dröge
963557b79f
Query::get_structure() can also return NULL
2017-12-06 13:43:37 +02:00
Sebastian Dröge
1f80df493a
Let the glib::Value destructor clean up our values instead of doing so manually
2017-12-06 11:17:59 +02:00
Sebastian Dröge
ad7b21ba55
Use unwrap_or_else() for the default value in the DateTime Display impl
2017-12-05 23:20:10 +02:00
Sebastian Dröge
05c51dd778
Change all values in Segment to FormatValue
2017-12-05 23:16:12 +02:00
Sebastian Dröge
e6da3554ee
Use ClockTime for the Duration tag
...
And implement the Value traits for ClockTime
2017-12-05 22:54:03 +02:00
Sebastian Dröge
f1c6c4fd06
Change various integers to FormatValue and ClockTime in events/queries/messages
2017-12-05 22:43:37 +02:00
Sebastian Dröge
801a7ed43c
Use ClockTime instead of u64 for the Gap event
2017-12-05 21:36:56 +02:00
Sebastian Dröge
55f044dd83
Add newtype wrappers and INVALID constants for event/message GroupId and Seqnum
2017-12-05 21:33:04 +02:00
Sebastian Dröge
97b786a0c7
Regenerate element bindings for gst_element_remove_pad() annotation fix
2017-12-04 18:12:55 +02:00
Sebastian Dröge
c965422410
Update to lazy_static 1.0
2017-12-04 11:11:26 +02:00
Sebastian Dröge
88ff4289d1
Add Event::set_running_time_offset()
2017-12-03 17:13:46 +02:00