A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
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}