diff options
Diffstat (limited to 'libmpv2/examples/protocol.rs')
-rw-r--r-- | libmpv2/examples/protocol.rs | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/libmpv2/examples/protocol.rs b/libmpv2/examples/protocol.rs deleted file mode 100644 index 46702d6..0000000 --- a/libmpv2/examples/protocol.rs +++ /dev/null @@ -1,87 +0,0 @@ -// yt - A fully featured command line YouTube client -// -// Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de> -// SPDX-License-Identifier: GPL-3.0-or-later -// -// This file is part of Yt. -// -// You should have received a copy of the License along with this program. -// If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. - -use std::{ - env, - fs::File, - io::{Read, Seek, SeekFrom}, - mem, thread, - time::Duration, -}; - -#[cfg(all(not(test), not(feature = "protocols")))] -compile_error!("The feature `protocols` needs to be enabled for this example`"); - -#[cfg(feature = "protocols")] -fn main() { - use libmpv2::{protocol::*, *}; - - let path = format!( - "filereader://{}", - env::args() - .nth(1) - .expect("Expected path to local media as argument, found nil.") - ); - - let protocol = unsafe { - Protocol::new( - "filereader".into(), - (), - open, - close, - read, - Some(seek), - Some(size), - ) - }; - - let mpv = Mpv::new().unwrap(); - mpv.set_property("volume", 25).unwrap(); - - let proto_ctx = mpv.create_protocol_context(); - proto_ctx.register(protocol).unwrap(); - - mpv.command("loadfile", &[&path, "append-play"]).unwrap(); - - thread::sleep(Duration::from_secs(10)); - - mpv.command("seek", &["15"]).unwrap(); - - thread::sleep(Duration::from_secs(5)); -} - -fn open(_: &mut (), uri: &str) -> File { - // Open the file, and strip the `filereader://` part - let ret = File::open(&uri[13..]).unwrap(); - - println!("Opened file[{}], ready for orders o7", &uri[13..]); - ret -} - -fn close(_: Box<File>) { - println!("Closing file, bye bye~~"); -} - -fn read(cookie: &mut File, buf: &mut [i8]) -> i64 { - unsafe { - let forbidden_magic = mem::transmute::<&mut [i8], &mut [u8]>(buf); - - cookie.read(forbidden_magic).unwrap() as _ - } -} - -fn seek(cookie: &mut File, offset: i64) -> i64 { - println!("Seeking to byte {}", offset); - cookie.seek(SeekFrom::Start(offset as u64)).unwrap() as _ -} - -fn size(cookie: &mut File) -> i64 { - cookie.metadata().unwrap().len() as _ -} |