123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- /**
- * @file flash-transmuxer-worker.js
- */
- 'use strict';
- Object.defineProperty(exports, '__esModule', {
- value: true
- });
- var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
- var _globalWindow = require('global/window');
- var _globalWindow2 = _interopRequireDefault(_globalWindow);
- var _muxJsLibFlv = require('mux.js/lib/flv');
- var _muxJsLibFlv2 = _interopRequireDefault(_muxJsLibFlv);
- /**
- * Re-emits transmuxer events by converting them into messages to the
- * world outside the worker.
- *
- * @param {Object} transmuxer the transmuxer to wire events on
- * @private
- */
- var wireTransmuxerEvents = function wireTransmuxerEvents(transmuxer) {
- transmuxer.on('data', function (segment) {
- _globalWindow2['default'].postMessage({
- action: 'data',
- segment: segment
- });
- });
- transmuxer.on('done', function (data) {
- _globalWindow2['default'].postMessage({ action: 'done' });
- });
- };
- /**
- * All incoming messages route through this hash. If no function exists
- * to handle an incoming message, then we ignore the message.
- *
- * @class MessageHandlers
- * @param {Object} options the options to initialize with
- */
- var MessageHandlers = (function () {
- function MessageHandlers(options) {
- _classCallCheck(this, MessageHandlers);
- this.options = options || {};
- this.init();
- }
- /**
- * Our web wroker interface so that things can talk to mux.js
- * that will be running in a web worker. The scope is passed to this by
- * webworkify.
- *
- * @param {Object} self the scope for the web worker
- */
- /**
- * initialize our web worker and wire all the events.
- */
- _createClass(MessageHandlers, [{
- key: 'init',
- value: function init() {
- if (this.transmuxer) {
- this.transmuxer.dispose();
- }
- this.transmuxer = new _muxJsLibFlv2['default'].Transmuxer(this.options);
- wireTransmuxerEvents(this.transmuxer);
- }
- /**
- * Adds data (a ts segment) to the start of the transmuxer pipeline for
- * processing.
- *
- * @param {ArrayBuffer} data data to push into the muxer
- */
- }, {
- key: 'push',
- value: function push(data) {
- // Cast array buffer to correct type for transmuxer
- var segment = new Uint8Array(data.data, data.byteOffset, data.byteLength);
- this.transmuxer.push(segment);
- }
- /**
- * Recreate the transmuxer so that the next segment added via `push`
- * start with a fresh transmuxer.
- */
- }, {
- key: 'reset',
- value: function reset() {
- this.init();
- }
- /**
- * Forces the pipeline to finish processing the last segment and emit its
- * results.
- */
- }, {
- key: 'flush',
- value: function flush() {
- this.transmuxer.flush();
- }
- }, {
- key: 'resetCaptions',
- value: function resetCaptions() {
- this.transmuxer.resetCaptions();
- }
- }]);
- return MessageHandlers;
- })();
- var FlashTransmuxerWorker = function FlashTransmuxerWorker(self) {
- self.onmessage = function (event) {
- if (event.data.action === 'init' && event.data.options) {
- this.messageHandlers = new MessageHandlers(event.data.options);
- return;
- }
- if (!this.messageHandlers) {
- this.messageHandlers = new MessageHandlers();
- }
- if (event.data && event.data.action && event.data.action !== 'init') {
- if (this.messageHandlers[event.data.action]) {
- this.messageHandlers[event.data.action](event.data);
- }
- }
- };
- };
- exports['default'] = function (self) {
- return new FlashTransmuxerWorker(self);
- };
- module.exports = exports['default'];
|