Crate mp4parse_capi
source ·Expand description
C API for mp4parse module.
Parses ISO Base Media Format aka video/mp4 streams.
Examples
use std::io::Read;
extern fn buf_read(buf: *mut u8, size: usize, userdata: *mut std::os::raw::c_void) -> isize {
let mut input: &mut std::fs::File = unsafe { &mut *(userdata as *mut _) };
let mut buf = unsafe { std::slice::from_raw_parts_mut(buf, size) };
match input.read(&mut buf) {
Ok(n) => n as isize,
Err(_) => -1,
}
}
let capi_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap();
let mut file = std::fs::File::open(capi_dir + "/../mp4parse/tests/minimal.mp4").unwrap();
let io = mp4parse_capi::Mp4parseIo {
read: Some(buf_read),
userdata: &mut file as *mut _ as *mut std::os::raw::c_void
};
let mut parser = std::ptr::null_mut();
unsafe {
let rv = mp4parse_capi::mp4parse_new(&io, &mut parser);
assert_eq!(rv, mp4parse_capi::Mp4parseStatus::Ok);
assert!(!parser.is_null());
mp4parse_capi::mp4parse_free(parser);
}
Structs
Enums
- The return value to the C API Any detail that needs to be communicated to the caller must be encoded here since the
Error
type’s associated data is part of the FFI.
Functions
- Free an
Mp4parseAvifParser*
allocated bymp4parse_avif_new()
. - Return a pointer to the primary item parsed by previous
mp4parse_avif_new()
call. - Fill the supplied
Mp4parseByteData
with index information fromtrack
. - Return a struct containing meta information read by previous
mp4parse_avif_new()
call. - Allocate an
Mp4parseAvifParser*
to read from the suppliedMp4parseIo
. - Free an
Mp4parseParser*
allocated bymp4parse_new()
. - Fill the supplied
Mp4parseFragmentInfo
with metadata from fragmented file. - Fill the supplied
Mp4parseByteData
with index information fromtrack
. - Get ‘pssh’ system id and ‘pssh’ box content for eme playback.
- Fill the supplied
Mp4parseTrackAudioInfo
with metadata fortrack
. - Return the number of tracks parsed by previous
mp4parse_read()
call. - Fill the supplied
Mp4parseTrackInfo
with metadata fortrack
. - Fill the supplied
Mp4parseTrackVideoInfo
with metadata fortrack
. - Determine if an mp4 file is fragmented. A fragmented file needs mvex table and contains no data in stts, stsc, and stco boxes.
- Allocate an
Mp4parseParser*
to read from the suppliedMp4parseIo
and parse the content from theMp4parseIo
argument until EOF or error.