common.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // reduce buffer size, avoiding mem copy
  2. export function shrinkBuf (buf, size) {
  3. if (buf.length === size) { return buf; }
  4. if (buf.subarray) { return buf.subarray(0, size); }
  5. buf.length = size;
  6. return buf;
  7. };
  8. export function arraySet (dest, src, src_offs, len, dest_offs) {
  9. if (src.subarray && dest.subarray) {
  10. dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
  11. return;
  12. }
  13. // Fallback to ordinary array
  14. for (var i = 0; i < len; i++) {
  15. dest[dest_offs + i] = src[src_offs + i];
  16. }
  17. }
  18. // Join array of chunks to single array.
  19. export function flattenChunks (chunks) {
  20. var i, l, len, pos, chunk, result;
  21. // calculate data length
  22. len = 0;
  23. for (i = 0, l = chunks.length; i < l; i++) {
  24. len += chunks[i].length;
  25. }
  26. // join chunks
  27. result = new Uint8Array(len);
  28. pos = 0;
  29. for (i = 0, l = chunks.length; i < l; i++) {
  30. chunk = chunks[i];
  31. result.set(chunk, pos);
  32. pos += chunk.length;
  33. }
  34. return result;
  35. }
  36. export var Buf8 = Uint8Array;
  37. export var Buf16 = Uint16Array;
  38. export var Buf32 = Int32Array;