1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//! # dextreamer: A Sleek Gstreamer Wrapper
//!
//! `dextreamer` is a sleek and simple wrapper around gstreamer that allows you to handle video streams easily in Rust.
//! It was originally developed as part of the Deko UI framework, but it's completely independent and can be used on its own.
//!
//! Note that while `dextreamer` provides a more user-friendly interface than the base gstreamer library, it might not offer the full functionality of gstreamer.
//!
//! ## Installation
//! Before you can use `dextreamer`, you need to have gstreamer installed on your system.
//! Follow the gstreamer installation instructions in the [gstreamer bindings README](https://crates.io/crates/gstreamer) for guidance.
//!
//! ## Usage
//! Add `dextreamer` to your `Cargo.toml` dependencies and run `cargo build`.
//! Here is an example of how to open a video:
//!
//! ```no_run
//! use std::sync::mpsc;
//! use dextreamer;
//!
//! struct VideoFrameLoader;
//!
//! impl dextreamer::FrameHandler for VideoFrameLoader {
//! fn handle_new_frame(&self, frame_data: &[u8], frame_size: (u32, u32)) {
//! println!("New frame: {:?}", frame_size);
//! }
//!
//! }
//!
//! // open a video
//! let (sender, receiver) = dextreamer::open_video("file:///home/user/my_video.mkv", VideoFrameLoader);
//!
//! // Send a play action to the video thread
//! sender.send(dextreamer::VideoStreamAction::SetPlay).unwrap();
//!
//! // Receive events from the video thread
//! match receiver.recv().unwrap() {
//! dextreamer::VideoStreamEvent::VideoLoaded(info) => println!("Video loaded: {:?}", info),
//! dextreamer::VideoStreamEvent::NewFrame => println!("New frame"),
//! _ => (),
//! }
//! ```
//!
//! Make sure to replace `"my_video.mkv"` with the actual path to your video file.
//!
//! See the [dextreamer documentation](https://docs.rs/dextreamer) for more detailed usage examples.
//!
//! ## License
//! This library is distributed under the terms of the MIT license.
//! See [LICENSE](LICENSE) for details.
pub use *;
pub use *;
pub use *;