Commit graph

2947 commits

Author SHA1 Message Date
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
Sebastian Dröge 6a3a42717f Add a Rust struct and store/use it in the C code 2016-05-13 17:35:09 +03:00
Sebastian Dröge 9bb2d32c75 Initial commit 2016-05-13 16:35:48 +03:00