Commit graph

3181 commits

Author SHA1 Message Date
Sebastian Dröge 9e53c0a926 Simplify state handling
This is not too nice now as we have None values to unwrap, but the code
is at least less convoluted.
2016-12-23 17:36:14 +02:00
Sebastian Dröge 62d24efc04 WIP demuxer 2016-12-23 17:35:57 +02:00
Sebastian Dröge ed2bcf875a Use reqwest 0.2 release
It has the needed changes now
2016-12-23 17:35:31 +02:00
Sebastian Dröge 9e2c25653f Simplify some more code 2016-11-29 20:44:35 +02:00
Sebastian Dröge cef8d28974 Some minor buffer changes 2016-11-29 20:44:34 +02:00
Сухарик 1751b5c400 Improve readability of the code a little 2016-11-25 14:54:46 +02:00
Sebastian Dröge eac466040e Move duplicated code into a function 2016-11-23 22:09:51 +02:00
Sebastian Dröge 20a2c7bd33 Refactor code a bit to keep amount of unsafe code to a minimum 2016-11-23 22:09:51 +02:00
Sebastian Dröge f7148bd910 Port HTTP source from hyper to reqwest 2016-11-14 20:57:54 +02:00
Sebastian Dröge 2408edf1bf Add initial implementation of a buffer adapter 2016-09-18 10:23:14 -04:00
Sebastian Dröge b23385e88f Add some more Buffer API and use explicit bitflags instead of magic numbers 2016-09-18 10:23:14 -04:00
Sebastian Dröge 1ef938b6ec Make ScopedBuffer a bit safer and explicit 2016-09-12 19:18:36 +02:00
Sebastian Dröge 61b5420102 Add wrapper around GstBuffer and use it in the source/sink 2016-09-12 15:00:28 +02:00
Sebastian Dröge a2ff32d0be Update README.md with the follow-up blogpost 2016-09-08 11:49:56 +03:00
Sebastian Dröge f9adac5f7e Never let panics propagate to C and instead convert them to error messages 2016-09-04 00:27:04 +03:00
Sebastian Dröge 95dd469fbf Make more pointers const 2016-09-03 23:49:54 +03:00
Sebastian Dröge 245d576159 Don't lock the URI mutex all the time while {Sink,Source}::{start,stop} is called but only when needed 2016-09-03 17:37:51 +03:00
Sebastian Dröge fa855ec2b2 Move sink_render() to a more logical place 2016-09-02 01:03:31 +03:00
Sebastian Dröge eee2653b76 Use None instead of u64::MAX for unknown/unspecified size/stop 2016-09-02 01:01:25 +03:00
Sebastian Dröge 4afdd2c985 Move thread-handling out of the actual Source/Sink implementation 2016-09-02 00:52:28 +03:00
Sebastian Dröge af6d6f80b4 Remove local macro definition 2016-08-27 11:26:04 +03:00
Sebastian Dröge b47d7df776 Move some extern C functions into the place where they're used 2016-08-27 11:22:55 +03:00
Sebastian Dröge 742515aac1 Properly report error / error messages and make the trait APIs more Rust-like 2016-08-27 11:16:17 +03:00
Sebastian Dröge f7fd92750c Derive some more traits for enums 2016-08-25 00:48:53 +03:00
Sebastian Dröge 9ae934e48a Make the UriError a bit nicer 2016-08-25 00:47:56 +03:00
Sebastian Dröge df50617c87 Add trait functions for getting back the controller 2016-08-25 00:08:06 +03:00
Sebastian Dröge 82c29d369d Properly report errors when setting the URI fails 2016-08-23 00:07:44 +03:00
Sebastian Dröge 3d83de761f Switch to cdylib crate type 2016-08-22 23:03:45 +03:00
Sebastian Dröge 6f6e56a5e3 Various further cleanups 2016-08-22 23:03:06 +03:00
Sebastian Dröge bb8072c4d8 Various cleanups 2016-08-22 22:35:16 +03:00
Sebastian Dröge 086ec5b68d Fix up mutability
Rust assumes that there can only be a single mutable reference at any time, as
such make use of interior mutability with a mutex for all state of the
elements.
2016-08-22 22:25:58 +03:00
Sebastian Dröge c7c2676e67 WIP 2016-08-22 21:08:26 +03:00
Sebastian Dröge 53cb35f991 Fix typo in function name between C and Rust 2016-08-10 18:31:59 +02:00
Sebastian Dröge 4eb3d879de Move FFI usage out of actual Sink/Source implementations 2016-08-10 18:27:38 +02:00
Sebastian Dröge e1d2751fc2 Pass native GStreamer element pointer to functions
This will later be used to catch panics, convert them to GStreamer errors and
invalidate the native instance.
2016-07-20 21:06:17 +03:00
Sebastian Dröge 4e053cd6bc Add new controller objects to Source/Sink
These store a pointer to the native GstElement and will allow calling back
into it later.
2016-07-20 14:50:35 +03:00
Sebastian Dröge 8b313a752a Run C code through gst-indent 2016-07-20 11:29:27 +03:00
Sebastian Dröge 31fd26b982 Run everything through rustfmt 2016-07-20 11:28:58 +03:00
Sebastian Dröge 3db8882ce8 Pass Urls directly to the Source/Sink implementations instead of having them handle strings 2016-05-24 23:24:05 +03:00
Sebastian Dröge 84c0d4c74c Use an AtomicBool for the seekable variable as is_seekable() can be called at any time from any thread 2016-05-23 21:38:54 +03:00
Sebastian Dröge 5cc890cc04 Add comments about which Source/Sink methods are called from which threads
Source::get_size() / ::is_seekable() implementations need to be made
thread-safe still.
2016-05-23 21:35:03 +03:00
Sebastian Dröge 8514d46092 Use a Mutex to protect the URI storage
get_uri()/set_uri() can be called at any time from any thread, only
all other methods of Source/Sink are guaranteed to be called by only
a single thread at a time.
2016-05-23 20:29:01 +03:00
Jon Nordby 2d4dd7a218 README.md: Add minimal info and links 2016-05-23 20:02:12 +03:00
Sebastian Dröge 5673201400 Remove pointless cloning of URI in ::get_uri() 2016-05-22 16:29:25 +03:00
Sebastian Dröge ca4fa82ffe Make it an requirement to implement Source::do_seek() 2016-05-22 16:23:43 +03:00
Sebastian Dröge 872e9a8ab1 Free CString memory in Rust
Using g_free() on it will likely not work.
2016-05-19 10:47:31 +03:00
Sebastian Dröge acc7d2ea26 Use Option<&str> instead of &Option<&str> for set_uri()
This seems more ergonomic to use, and is more common in other libraries.
2016-05-18 11:39:37 +03:00
Sebastian Dröge b8a031c29b Use Option<&str> instead of Option<String> for set_uri()
There is no reason to require a heap-allocated String here.
2016-05-18 11:29:57 +03:00
Sebastian Dröge 546d67fa5a Add license and copyright notices 2016-05-15 18:54:09 +03:00
Sebastian Dröge ae9f292278 Add FIXME comment 2016-05-15 18:39:22 +03:00