@svta/common-media-library
Version:
A common library for media playback in JavaScript
38 lines • 1.14 kB
JavaScript
import { createIsoView } from './createIsoView.js';
function find(iterator, recursive, fn) {
for (const box of iterator) {
if (fn(box)) {
return box;
}
const { boxes } = box;
if (recursive && Array.isArray(boxes)) {
const result = find(boxes, recursive, fn);
if (result) {
return result;
}
}
}
return null;
}
/**
* Find a box from an IsoView that matches a filter function
*
* @param raw - The raw ISO data
* @param config - The configuration for the IsoView
* @param fn - The filter function
*
* @returns The first box that matches the filter function
*
* @group ISOBMFF
*
* @beta
*/
export function findBox(raw, fn, config) {
var _a;
const recursive = (_a = config === null || config === void 0 ? void 0 : config.recursive) !== null && _a !== void 0 ? _a : true;
if (raw instanceof DataView || raw instanceof Uint8Array || raw instanceof ArrayBuffer) {
raw = createIsoView(raw, { ...config, recursive: false });
}
return find(raw, recursive, fn);
}
//# sourceMappingURL=findBox.js.map