use crate::providers::shared::bmff::{BoxHeader, BoxType};
pub fn _find_boxes<'borrow, 'types, 'input: 'borrow>(
input: &'borrow mut &'input [u8],
types: &'types [BoxType],
) -> Vec<(BoxHeader, &'input [u8])> {
let mut boxes: Vec<(BoxHeader, &[u8])> = Vec::new();
while !input.is_empty() {
let Ok(box_header) = BoxHeader::new(input)
.inspect_err(|e| log::warn!("Failed to construct box header from input. err: {e}"))
else {
break;
};
if types.contains(&box_header.box_type) {
let Some(box_payload) = box_header.payload(input) else {
break;
};
boxes.push((box_header, box_payload));
} else {
let Some(()) = box_header.eat_payload(input) else {
break;
};
}
}
boxes
}