A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 57 lines 1.4 kB view raw
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}