A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 95 lines 1.7 kB view raw
1use crate::types::{audio_status::AudioStatus, file_position::FilePosition, mp3_entry::Mp3Entry}; 2 3pub fn pause() { 4 unsafe { 5 crate::audio_pause(); 6 } 7} 8 9pub fn play(elapsed: i64, offset: i64) { 10 unsafe { 11 crate::audio_play(elapsed, offset); 12 } 13} 14 15pub fn resume() { 16 unsafe { 17 crate::audio_resume(); 18 } 19} 20 21pub fn next() { 22 unsafe { 23 crate::audio_next(); 24 } 25} 26 27pub fn prev() { 28 unsafe { 29 crate::audio_prev(); 30 } 31} 32 33pub fn ff_rewind(newtime: i32) { 34 unsafe { 35 crate::audio_ff_rewind(newtime); 36 } 37} 38 39pub fn next_track() -> Option<Mp3Entry> { 40 let track = unsafe { crate::audio_next_track() }; 41 42 if track.is_null() { 43 return None; 44 } 45 46 let track = unsafe { track.as_ref() }; 47 48 match track { 49 Some(track) => Some((*track).into()), 50 None => None, 51 } 52} 53 54pub fn status() -> AudioStatus { 55 let status = unsafe { crate::audio_status() }; 56 return AudioStatus { status }; 57} 58 59pub fn current_track() -> Option<Mp3Entry> { 60 let track = unsafe { crate::audio_current_track() }; 61 62 if track.is_null() { 63 return None; 64 } 65 66 let track = unsafe { track.as_ref() }; 67 68 match track { 69 Some(track) => Some((*track).into()), 70 None => None, 71 } 72} 73 74pub fn flush_and_reload_tracks() { 75 unsafe { 76 crate::audio_flush_and_reload_tracks(); 77 } 78} 79 80pub fn get_file_pos() -> FilePosition { 81 let position = unsafe { crate::audio_get_file_pos() }; 82 FilePosition { position } 83} 84 85pub fn hard_stop() { 86 unsafe { 87 crate::audio_hard_stop(); 88 } 89} 90 91pub fn set_repeat_mode(mode: i32) { 92 unsafe { 93 crate::set_repeat_mode(mode); 94 } 95}