A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
1use std::ffi::{c_uchar, CStr, CString};
2
3use crate::{types::mp3_entry::Mp3Entry, ProgressFunc};
4
5pub fn get_metadata(fd: i32, trackname: &str) -> Mp3Entry {
6 let trackname = CString::new(trackname).unwrap();
7 let id3 = unsafe { crate::rb_get_metadata(fd, trackname.as_ptr()) };
8 id3.into()
9}
10
11pub fn get_codec_string(codectype: i32) -> String {
12 let res = unsafe { crate::get_codec_string(codectype) };
13 let codec_string = unsafe { CStr::from_ptr(res) };
14 codec_string.to_str().unwrap().to_string()
15}
16
17pub fn count_mp3_frames(
18 fd: i32,
19 startpos: i32,
20 filesize: i32,
21 progressfunc: ProgressFunc,
22 buf: *mut c_uchar,
23 buflen: usize,
24) -> i32 {
25 unsafe { crate::count_mp3_frames(fd, startpos, filesize, progressfunc, buf, buflen) }
26}
27
28pub fn create_xing_header(
29 fd: i32,
30 startpos: i64,
31 filesize: i64,
32 buf: *mut c_uchar,
33 num_frames: u64,
34 rec_time: u64,
35 header_template: u64,
36 progressfunc: ProgressFunc,
37 generate_toc: bool,
38 tempbuf: *mut c_uchar,
39 tembuf_len: usize,
40) -> i32 {
41 let generate_toc = if generate_toc { 1 } else { 0 };
42 unsafe {
43 crate::create_xing_header(
44 fd,
45 startpos,
46 filesize,
47 buf,
48 num_frames,
49 rec_time,
50 header_template,
51 progressfunc,
52 generate_toc,
53 tempbuf,
54 tembuf_len,
55 )
56 }
57}