silence.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. "use strict";
  2. /**
  3. * mux.js
  4. *
  5. * Copyright (c) Brightcove
  6. * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE
  7. */
  8. var highPrefix = [33, 16, 5, 32, 164, 27];
  9. var lowPrefix = [33, 65, 108, 84, 1, 2, 4, 8, 168, 2, 4, 8, 17, 191, 252];
  10. var zeroFill = function zeroFill(count) {
  11. var a = [];
  12. while (count--) {
  13. a.push(0);
  14. }
  15. return a;
  16. };
  17. var makeTable = function makeTable(metaTable) {
  18. return Object.keys(metaTable).reduce(function (obj, key) {
  19. obj[key] = new Uint8Array(metaTable[key].reduce(function (arr, part) {
  20. return arr.concat(part);
  21. }, []));
  22. return obj;
  23. }, {});
  24. };
  25. var silence;
  26. module.exports = function () {
  27. if (!silence) {
  28. // Frames-of-silence to use for filling in missing AAC frames
  29. var coneOfSilence = {
  30. 96000: [highPrefix, [227, 64], zeroFill(154), [56]],
  31. 88200: [highPrefix, [231], zeroFill(170), [56]],
  32. 64000: [highPrefix, [248, 192], zeroFill(240), [56]],
  33. 48000: [highPrefix, [255, 192], zeroFill(268), [55, 148, 128], zeroFill(54), [112]],
  34. 44100: [highPrefix, [255, 192], zeroFill(268), [55, 163, 128], zeroFill(84), [112]],
  35. 32000: [highPrefix, [255, 192], zeroFill(268), [55, 234], zeroFill(226), [112]],
  36. 24000: [highPrefix, [255, 192], zeroFill(268), [55, 255, 128], zeroFill(268), [111, 112], zeroFill(126), [224]],
  37. 16000: [highPrefix, [255, 192], zeroFill(268), [55, 255, 128], zeroFill(268), [111, 255], zeroFill(269), [223, 108], zeroFill(195), [1, 192]],
  38. 12000: [lowPrefix, zeroFill(268), [3, 127, 248], zeroFill(268), [6, 255, 240], zeroFill(268), [13, 255, 224], zeroFill(268), [27, 253, 128], zeroFill(259), [56]],
  39. 11025: [lowPrefix, zeroFill(268), [3, 127, 248], zeroFill(268), [6, 255, 240], zeroFill(268), [13, 255, 224], zeroFill(268), [27, 255, 192], zeroFill(268), [55, 175, 128], zeroFill(108), [112]],
  40. 8000: [lowPrefix, zeroFill(268), [3, 121, 16], zeroFill(47), [7]]
  41. };
  42. silence = makeTable(coneOfSilence);
  43. }
  44. return silence;
  45. };