@svta/common-media-library
Version:
A common library for media playback in JavaScript
33 lines • 1.06 kB
JavaScript
import { createIsoView } from './createIsoView.js';
function filter(iterator, fn, recursive, result) {
for (const box of iterator) {
if (fn(box)) {
result.push(box);
}
const { boxes } = box;
if (recursive && Array.isArray(boxes)) {
filter(boxes, fn, recursive, result);
}
}
return result;
}
/**
* Filters boxes based on the given filter function.
*
* @param raw - The raw boxes to filter.
* @param config - The box parser configuration.
* @param fn - The filter function.
* @returns The filtered boxes.
*
* @group ISOBMFF
* @beta
*/
export function filterBoxes(raw, fn, config) {
var _a;
if (raw instanceof DataView || raw instanceof Uint8Array || raw instanceof ArrayBuffer) {
raw = createIsoView(raw, { ...config, recursive: false });
}
const recursive = (_a = config === null || config === void 0 ? void 0 : config.recursive) !== null && _a !== void 0 ? _a : true;
return filter(raw, fn, recursive, []);
}
//# sourceMappingURL=filterBoxes.js.map