Sebastian Dröge
89b0220e26
Build each component into its own GStreamer plugin
2016-12-23 19:04:32 +02:00
Sebastian Dröge
e25f644f30
Refactor plugin registration
2016-12-23 18:11:48 +02:00
Sebastian Dröge
19c8caee1e
Minor cleanup
2016-12-23 17:36:14 +02:00
Sebastian Dröge
78450a035d
Create GStreamer plugin from Rust and have the plugin entry point written in Rust
2016-12-23 17:36:14 +02:00
Sebastian Dröge
cc183ea92e
Properly convert the f64 framerate to a fraction
2016-12-23 17:36:14 +02:00
Sebastian Dröge
f9cd9e128d
Add support for more codecs
...
Only Speex, AAC and H264 are missing now, which require a little bit
more work.
2016-12-23 17:36:14 +02:00
Sebastian Dröge
7ef2679cb5
Implement metadata handling
2016-12-23 17:36:14 +02:00
Sebastian Dröge
d804590106
Further cleanup and refactoring of the FLV demuxer
2016-12-23 17:36:14 +02:00
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