Commit graph

188 commits

Author SHA1 Message Date
Sebastian Dröge
a0a01f3013 Fix BaseSrc::unlock_stop() calling unlock(), and BaseSink 2018-02-12 17:44:33 +02:00
Sebastian Dröge
2996eaf287 Add tutorial to README.md 2018-02-05 10:29:48 +02:00
Sebastian Dröge
d98c666bd9 Catch panics during plugin initialization and log them 2018-01-18 18:54:15 +02:00
Sebastian Dröge
9375503296 Update CHANGELOG.md for 0.1.3 2018-01-15 10:45:39 +02:00
Sebastian Dröge
3f8adff757 Add BaseTransform::transform_ip_passthrough()
This is called with an immutable BufferRef if we're running in
passthrough mode and the element was configured to pass passthrough
buffers to transform_ip.

Previously we would've gotten a mutable reference, that then would fail
all mutable operations.
2018-01-15 10:35:18 +02:00
Sebastian Dröge
e7cd12bf8a Also update version in the plugin metadata to 1.8 2018-01-15 10:29:08 +02:00
Sebastian Dröge
714301d584 Don't require GStreamer 1.10
We're working just fine with 1.8 too
2018-01-15 09:34:53 +02:00
Sebastian Dröge
fc5e2ae03a Update CHANGELOG.md for 0.1.2 2018-01-03 17:51:15 +02:00
Sebastian Dröge
b9f6d9dc34 Pass caps by reference to BaseTransform::transform_caps() 2018-01-03 17:49:46 +02:00
Sebastian Dröge
8a41656f40 Also the default BaseTransform::transform_caps() should not take the caps parameter owned 2018-01-03 17:48:59 +02:00
Sebastian Dröge
8df8b68555 Update CHANGELOG.md for 0.1.1 2018-01-03 17:13:26 +02:00
Sebastian Dröge
3aa3d826c3 Add CHANGELOG.md to gst-plugin 2018-01-03 17:13:17 +02:00
Sebastian Dröge
43d38d0951 Caps in BaseTransform::transform_caps() are not owned 2018-01-02 19:28:43 +02:00
Aleksey Ivanov
67edf375f3 [Close #24] Update repository link 2017-12-22 23:39:22 +02:00
Sebastian Dröge
000da42b5c Fix documentation URL 2017-12-22 16:29:51 +02:00
Sebastian Dröge
2decd553d7 Update README.md and include it in the gst-plugin crate too 2017-12-22 15:56:48 +02:00
Sebastian Dröge
723409e05a Update gst-plugin Cargo.toml with lots of metadata 2017-12-22 15:41:24 +02:00
Sebastian Dröge
3fe6e1ab18 Add support for adding signals/action-signals 2017-12-20 22:22:19 +02:00
Sebastian Dröge
c1ca7902f1 Don't panic when getting a property failed 2017-12-20 21:57:25 +02:00
Sebastian Dröge
bda421d218 Move more things into gst-plugin-simple 2017-12-20 21:53:43 +02:00
Sebastian Dröge
22c5f93d3b Fix various clippy warnings 2017-12-20 21:36:50 +02:00
Sebastian Dröge
07ce2d64b8 Use the Into trait instead of custom into_*() functions 2017-12-20 20:13:31 +02:00
Sebastian Dröge
80a2c5033f Use ErrorMessage from gstreamer bindings 2017-12-20 20:05:04 +02:00
Sebastian Dröge
cbfb30c7b5 Run everything through rustfmt again 2017-12-20 19:30:32 +02:00
Sebastian Dröge
8e1428c047 Implement Error/Display for AdapterError 2017-12-20 19:18:32 +02:00
Sebastian Dröge
a99522150b Remove unused utils module 2017-12-20 19:16:14 +02:00
Sebastian Dröge
841252c5f7 Fix compilation after gstreamer-rs API changes 2017-12-16 17:42:32 +02:00
Sebastian Dröge
cea5d4d03e Require fallback value in Element::catch_panic() to be given as closure 2017-12-04 21:49:27 +02:00
Sebastian Dröge
ac09ae7d73 Never fail downwards state changes
This causes bugs in GStreamer and leads to crashes and deadlocks
2017-12-04 21:45:03 +02:00
Sebastian Dröge
083371866a Add helper function that allows to catch panics and poison the element 2017-12-04 21:30:10 +02:00
Sebastian Dröge
b3725312c4 Update to lazy_static 1.0 2017-12-04 11:12:32 +02:00
Sebastian Dröge
2fb3952aa2 Element::request_new_pad() is (transfer none) in the return value
Which is effectively unsafe, but nothing we can do about that right now
without leaking all pads.

https://bugzilla.gnome.org/show_bug.cgi?id=791193
2017-12-04 11:08:16 +02:00
Sebastian Dröge
a271b18c09 Take ownership of any floating references in Bin::add/remove_element() 2017-11-27 17:26:43 +02:00
Sebastian Dröge
3f1eb96da9 Add support for creating Pipeline subclasses 2017-11-27 15:08:24 +02:00
Sebastian Dröge
b55a24c929 Add support for creating Bin subclasses 2017-11-27 15:08:24 +02:00
Sebastian Dröge
22ab56895d Remove Rs prefix from everything
We have proper namespaces in Rust
2017-11-20 13:23:30 +02:00
Sebastian Dröge
656dc990f8 Require a get_type() function for boxed/object properties
Otherwise storing the properties in a static array is not possible
2017-11-20 12:30:21 +02:00
Sebastian Dröge
768b68f94a Fix up Adapter's WouldBlock error message
With the correct values of requested and available bytes.
2017-11-06 23:25:09 +02:00
Thibault Saunier
9158c2c8e1 adapter: Implement the Read trait 2017-11-06 11:51:04 +02:00
Sebastian Dröge
176e07bf0a Move properties code to a separate file 2017-10-19 11:06:19 +02:00
Sebastian Dröge
443abffa73 Run everything through latest rustfmt-nightly 2017-10-17 12:21:53 +03:00
Sebastian Dröge
4b97d56949 Fix compilation after GstRc<T>::get_mut() API fixes in gstreamer-rs 2017-10-12 18:03:06 +03:00
Sebastian Dröge
393cd6236a Move simple Source/Sink/Demuxer traits to a separate crate
Fixes https://github.com/sdroege/gst-plugin-rs/issues/20
2017-10-11 13:32:44 +03:00
Sebastian Dröge
20f1666bc9 Run everything through rustfmt again 2017-10-07 05:01:04 +03:00
Sebastian Dröge
c241a65555 Add BaseTransform support 2017-10-05 18:08:15 +03:00
Sebastian Dröge
2c0388b06d Fix BaseSink::event() signature
The event's ownership is transfered to the function, not only borrowed.
In BaseSrc::event() it is borrowed.
2017-10-05 10:23:47 +02:00
Sebastian Dröge
dda3b5ff1a Fix build with latest gstreamer-rs 2017-10-01 16:19:43 +02:00
Sebastian Dröge
6a7da572f0 Use our own reimplementation of mopa for our use cases
We had to replicate the mopafy! macro already anyway and poke into the
internals of the mopa implementation.
2017-09-26 13:54:55 +03:00
Sebastian Dröge
e97f4fb8c1 Fix some unused parameter warnings 2017-09-26 13:45:19 +03:00
Sebastian Dröge
60e25bcc91 Add lots more virtual method for basesrc 2017-09-26 13:39:34 +03:00
Sebastian Dröge
dc231937d7 Add more virtual methods to ElementImpl 2017-09-26 13:11:52 +03:00
Sebastian Dröge
91df8f991e Add lots of missing virtual methods to BaseSink 2017-09-26 11:58:26 +03:00
Sebastian Dröge
cba662934c Get rid of various clippy warnings 2017-09-26 01:58:19 +03:00
Sebastian Dröge
515f58da02 Remove obsolete FIXME comment 2017-09-26 01:52:35 +03:00
Sebastian Dröge
ec1903a571 Make overriding of vfuncs safer
It can only be called from the correct class_init() now
2017-09-26 01:50:56 +03:00
Sebastian Dröge
41d6343682 Make calls into the parent class struct safer and use more useful object wrapper type (T) for virtual methods 2017-09-26 01:43:56 +03:00
Sebastian Dröge
a354116336 Make ObjectImpl and subtraits generic over T: ObjectType 2017-09-26 00:25:03 +03:00
Sebastian Dröge
f45723c04e Remove redundant ObjectType::RsType associated type
It's supposed to be the same as Self
2017-09-25 23:40:17 +03:00
Sebastian Dröge
5e9f42e7f8 Remove some more boilerplate 2017-09-25 15:35:27 +03:00
Sebastian Dröge
b25e612458 Remove some boilerplate 2017-09-25 15:29:39 +03:00
Sebastian Dröge
f322395918 Rename ObjectClassStruct to ObjectClass 2017-09-25 13:49:53 +03:00
Sebastian Dröge
cd23c993ae Rename panic_to_error2() to panic_to_error()
No usage of the other one left.
2017-09-24 23:22:58 +03:00
Sebastian Dröge
0423264fea Hack around floating references
By unsetting the floating flag in our virtual method trampolines if it
was set, and resetting it at the end of the function again if it was
set.

Otherwise we can't safely use any bindings, as the assumptions about
floating references are invalid then and things just crash.
2017-09-24 23:21:15 +03:00
Sebastian Dröge
395a002f4a Store type ids in a static BTreeMap
static variables inside generic functions are shared between all
instances of the function, we can't use that for storing our generated
type id.
2017-09-24 22:47:14 +03:00
Sebastian Dröge
1260dc42bb Port sink over to new infrastructure 2017-09-24 22:28:28 +03:00
Sebastian Dröge
6e1c89d1df Add GstBaseSink bindings 2017-09-24 22:22:20 +03:00
Sebastian Dröge
1f880caee1 Port Source over to the new infrastructure 2017-09-24 22:18:12 +03:00
Sebastian Dröge
540011a4a0 Add some more boilerplate for impl trait inheritance
This needs some macros added.
2017-09-23 19:58:18 +03:00
Sebastian Dröge
b7c396d70b Complete basesrc subclassing infrastructure 2017-09-23 19:54:36 +03:00
Sebastian Dröge
a0bac4a722 Add interface infrastructure and GstURIHandler support 2017-09-23 19:20:23 +03:00
Sebastian Dröge
4ee8b12e66 Add infrastructure for installing various kinds of properties
From both the subclass and the implementation
2017-09-23 12:57:15 +03:00
Sebastian Dröge
1c997c171d Make some unnecessarily mutable variables immutable 2017-09-22 14:37:15 +03:00
Sebastian Dröge
950a7d5b0d Mark the abstract base types as actually abstract
Without implementation they can't be instantiated
2017-09-22 14:08:45 +03:00
Sebastian Dröge
0d22579297 Get rid of demuxer wrapper
It was just an unneeded layer of indirection now after all the
refactoring
2017-09-22 13:49:19 +03:00
Sebastian Dröge
cda23d5c41 Implement generic object subclass creation in a more... generic... way
That actually works for subclasses of subclasses too without too much
boilerplate, and also keeps the GObject boilerplate in a single file
instead of having it for every single subclass.
2017-09-22 13:35:17 +03:00
Sebastian Dröge
8d253fd46a Minor cleanup 2017-09-19 16:05:21 +03:00
Sebastian Dröge
62a237ff0c Implement a generic Element implementation infrastructure
And implement the Demuxer base class on top of that, with no unsafe code
left whatsoever
2017-09-19 14:56:04 +03:00
Sebastian Dröge
2781e0b3d8 Port demuxer to plain Rust 2017-09-18 21:29:42 +03:00
Sebastian Dröge
7e7433037d Port everything over to gstreamer-rs
And remove all unneeded code and unused external crates.
2017-09-16 20:35:01 +03:00
Sebastian Dröge
5ae66e191c Run everything through latest rustfmt-nightly 2017-09-15 11:54:38 +03:00
Sebastian Dröge
71dcb979c7 Fix various compiler warnings in demuxer C code 2017-09-10 14:02:46 +03:00
Sebastian Dröge
338f2dcb92 Remove versions of git dependencies 2017-09-09 00:51:19 +03:00
Sebastian Dröge
d68effa8e4 Update all kinds of dependencies 2017-08-18 12:52:17 +03:00
Sebastian Dröge
dd5af12ebe Rename used crates (gst -> gst_ffi, etc) and import gstreamer code 2017-07-31 23:26:52 +01:00
Sebastian Dröge
6f04ddf797 Run everything through rustfmt-nightly 2017-07-31 14:36:35 +01:00
Sebastian Dröge
94016c39b0 Update to nom 3.0, bitflags 0.9 2017-06-06 13:29:19 +03:00
Sebastian Dröge
d962acc8c3 Update to released versions of glib-sys/gstreamer-sys 2017-05-10 11:25:17 +02:00
Sebastian Dröge
52981968f6 Use raw pointers instead of &'static references
&'static is wrong here is the pointers are only valid for the lifetime
of the surrounding struct.

Also place a PhantomData<T> inside the structs as conceptually we own a
T, see std::ptr::Unique and
https://github.com/rust-lang/rfcs/blob/master/text/0769-sound-generic-drop.md#phantom-data

Need to add the PhantomData<T> elsewhere too.
2017-04-27 12:33:28 +03:00
Sebastian Dröge
c6addbfe48 Remove From<&T> impls for GstRc<T>
Instead of this, ToOwned should be used.
2017-04-24 17:28:26 +03:00
Sebastian Dröge
139c9be958 Minor cleanup 2017-04-24 10:13:32 +01:00
Sebastian Dröge
9b593136da Rewrite MiniObject bindings
These now use references were applicable and GstRef became useless
2017-04-24 10:06:38 +01:00
Sebastian Dröge
2232af41b6 Refactor Structure bindings and allow getting Structures from Caps 2017-04-21 22:04:08 +01:00
Sebastian Dröge
df51424631 Structure/Caps API improvements 2017-04-21 12:18:41 +01:00
Sebastian Dröge
757d7532c1 Fix various clippy warnings 2017-04-20 20:37:08 +01:00
Sebastian Dröge
154e996e2d Implement Iterator::size_hint(), ExactSizeIterator and DoubleEndedIterator for our iterators 2017-04-20 20:28:03 +01:00
Sebastian Dröge
deef22cd28 Add bindings for GstStructure 2017-04-19 20:57:33 +01:00
Sebastian Dröge
8ea9e66797 Add Tag iterator for iterating one specific tag 2017-04-19 12:26:33 +01:00
Sebastian Dröge
e45ff7241e Remove some unneeded trait bounds in the taglist bindings 2017-04-19 12:11:31 +01:00
Sebastian Dröge
1bf20bfea4 Implement ValueRef and TypedValueRef for wrapping around a unowned GValue pointer without copying
Also rename new_from*() functions to from*() for consistency.
2017-04-19 11:59:44 +01:00
Sebastian Dröge
2d97baaf96 Rewrite GValue bindings 2017-04-18 20:42:23 +01:00