Commit graph

252 commits

Author SHA1 Message Date
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
Sebastian Dröge
2cbe76c64f Implement and require Sync+Send for sinks 2016-05-15 18:26:17 +03:00
Sebastian Dröge
29965fa8a7 Add finalizer for the sink to drop the instance 2016-05-15 17:47:38 +03:00
Sebastian Dröge
400696fbf8 Minor cleanup and make mutability more restricted 2016-05-15 17:43:13 +03:00
Sebastian Dröge
e43f247be3 Fix various compiler warnings 2016-05-15 17:34:13 +03:00
Luis de Bethencourt
d6d306f916 RsFileSink writes buffers to a file 2016-05-15 17:25:54 +03:00
Sebastian Dröge
87bd914cad Some minor cleanup 2016-05-15 16:16:55 +03:00
Luis de Bethencourt
aeefcefe09 Add skeleton for RsFileSink with the new structure
Doesn't write to a file yet, just prints out a message when a buffer is
received. All the skeleton is there to implement Sink children.
2016-05-15 14:07:06 +03:00
Sebastian Dröge
79aed66914 Require Sync and Send traits to be implemented for Sources 2016-05-15 11:55:52 +03:00
Sebastian Dröge
846f4775d9 Implement seeking in HTTP source 2016-05-15 11:48:54 +03:00
Sebastian Dröge
da1f869b47 Ignore errors when printing to stderr 2016-05-15 11:48:45 +03:00
Sebastian Dröge
fdab33f01b Map do_seek()
To be used in the HTTP source at some point
2016-05-14 17:57:25 +03:00
Sebastian Dröge
0f177d8de7 Properly use the length parameter of GstBaseSrc::fill() 2016-05-14 17:43:43 +03:00
Sebastian Dröge
45a146be26 Allow registering GstPushSrc based types 2016-05-14 17:41:41 +03:00
Sebastian Dröge
2298fc3353 Some more error handling in the HTTP source 2016-05-14 17:20:51 +03:00
Sebastian Dröge
b2b8332043 Add initial HTTP source based on Hyper
No seeking yet
2016-05-14 17:04:53 +03:00
Sebastian Dröge
ec01d11393 Register types from Rust and abstract the source to be able to handle other implementations too 2016-05-14 15:47:06 +03:00
Sebastian Dröge
4d989404b0 Move stuff around into different modules 2016-05-14 14:44:49 +03:00
Sebastian Dröge
35a7cfa032 Use a Source trait instead of directly working with FileSrc 2016-05-14 13:34:50 +03:00
Sebastian Dröge
15865ab86b Implement parsing of URIs in Rust 2016-05-14 12:34:50 +03:00
Sebastian Dröge
5b6a05b548 Implement some error handling and seek support
This now works as a proper replacement of filesrc.
2016-05-14 11:31:13 +03:00
Sebastian Dröge
98c015281e Implement GstURIHandler interface and handle short reads 2016-05-14 11:09:48 +03:00
Sebastian Dröge
924b105147 Implement get_size() 2016-05-13 19:06:06 +03:00
Sebastian Dröge
99070d0a9f Initial file reading without error handling, etc 2016-05-13 19:04:10 +03:00
Sebastian Dröge
8f3d49be31 Move everything into the FileSrc implementation 2016-05-13 18:54:06 +03:00
Sebastian Dröge
76a5226f79 Fill buffer from Rust code 2016-05-13 18:38:28 +03:00
Luis de Bethencourt
ca18a73253 Add skeleton of rsfilesink 2016-05-13 18:18:04 +03:00
Sebastian Dröge
d9657423a4 Add all other needed functions 2016-05-13 18:16:49 +03:00
Sebastian Dröge
0b67ffc9c7 Add location property handling 2016-05-13 18:02:19 +03:00
Sebastian Dröge
833148cef6 Use Box::from/into_raw() 2016-05-13 17:43:32 +03:00