ogg-helpers.js 658 B

12345678910111213141516171819202122232425262728
  1. import { bytesMatch, toUint8 } from './byte-helpers';
  2. var SYNC_WORD = toUint8([0x4f, 0x67, 0x67, 0x53]);
  3. export var getPages = function getPages(bytes, start, end) {
  4. if (end === void 0) {
  5. end = Infinity;
  6. }
  7. bytes = toUint8(bytes);
  8. var pages = [];
  9. var i = 0;
  10. while (i < bytes.length && pages.length < end) {
  11. // we are unsynced,
  12. // find the next syncword
  13. if (!bytesMatch(bytes, SYNC_WORD, {
  14. offset: i
  15. })) {
  16. i++;
  17. continue;
  18. }
  19. var segmentLength = bytes[i + 27];
  20. pages.push(bytes.subarray(i, i + 28 + segmentLength));
  21. i += pages[pages.length - 1].length;
  22. }
  23. return pages.slice(start, end);
  24. };