UNPKG

shaka-player

Version:
212 lines (178 loc) 4.89 kB
/*! @license * Shaka Player * Copyright 2016 Google LLC * SPDX-License-Identifier: Apache-2.0 */ /** * @fileoverview Externs for mux.js library. * @externs */ /** * @typedef {{ * mp4: typeof muxjs.mp4 * }} * @const */ var muxjs = {}; /** @const */ muxjs.mp4 = {}; /** @const */ muxjs.mp4.probe = class { /** * Parses an MP4 initialization segment and extracts the timescale * values for any declared tracks. * * @param {Uint8Array} init The bytes of the init segment * @return {!Object.<number, number>} a hash of track ids to timescale * values or null if the init segment is malformed. */ static timescale(init) {} /** * Find the trackIds of the video tracks in this source. * Found by parsing the Handler Reference and Track Header Boxes: * * @param {Uint8Array} init The bytes of the init segment for this source * @return {!Array.<number>} A list of trackIds **/ static videoTrackIds(init) {} }; muxjs.mp4.Transmuxer = class { /** @param {Object=} options */ constructor(options) {} /** @param {number} time */ setBaseMediaDecodeTime(time) {} /** @param {!Uint8Array} data */ push(data) {} flush() {} /** * Add a handler for a specified event type. * @param {string} type Event name * @param {Function} listener The callback to be invoked */ on(type, listener) {} /** * Remove a handler for a specified event type. * @param {string} type Event name * @param {Function} listener The callback to be removed */ off(type, listener) {} /** Remove all handlers and clean up. */ dispose() {} }; /** * @typedef {{ * initSegment: !Uint8Array, * data: !Uint8Array, * captions: !Array, * metadata: !Array * }} * * @description Transmuxed data from mux.js. * @property {!Uint8Array} initSegment * @property {!Uint8Array} data * @property {!Array} captions * @property {!Array} metadata * @exportDoc */ muxjs.mp4.Transmuxer.Segment; muxjs.mp4.CaptionParser = class { /** * Parser for CEA closed captions embedded in video streams for Dash. * @constructor * @struct */ constructor() {} /** Initializes the closed caption parser. */ init() {} /** * Return true if a new video track is selected or if the timescale is * changed. * @param {!Array.<number>} videoTrackIds A list of video tracks found in the * init segment. * @param {!Object.<number, number>} timescales The map of track Ids and the * tracks' timescales in the init segment. * @return {boolean} */ isNewInit(videoTrackIds, timescales) {} /** * Parses embedded CEA closed captions and interacts with the underlying * CaptionStream, and return the parsed captions. * @param {!Uint8Array} segment The fmp4 segment containing embedded captions * @param {!Array.<number>} videoTrackIds A list of video tracks found in the * init segment. * @param {!Object.<number, number>} timescales The timescales found in the * init segment. * @return {muxjs.mp4.ParsedClosedCaptions} */ parse(segment, videoTrackIds, timescales) {} /** Clear the parsed closed captions data for new data. */ clearParsedCaptions() {} /** Reset the captions stream. */ resetCaptionStream() {} }; /** * @typedef {{ * captionStreams: Object.<string, boolean>, * captions: !Array.<muxjs.mp4.ClosedCaption> * }} * * @description closed captions data parsed from mux.js caption parser. * @property {Object.<string, boolean>} captionStreams * @property {Array.<muxjs.mp4.ClosedCaption>} captions */ muxjs.mp4.ParsedClosedCaptions; /** * @typedef {{ * startPts: number, * endPts: number, * startTime: number, * endTime: number, * stream: string, * text: string * }} * * @description closed caption parsed from mux.js caption parser. * @property {number} startPts * @property {number} endPts * @property {number} startTime * @property {number} endTime * @property {string} stream The channel id of the closed caption. * @property {string} text The content of the closed caption. */ muxjs.mp4.ClosedCaption; /** * @typedef {{ * cueTime: number, * data: !Uint8Array, * dispatchType: string, * dts: number, * frames: !Array.<muxjs.mp4.MetadataFrame>, * pts: number * }} * * @description metadata parsed from mux.js. * @property {number} cueTime * @property {number} data * @property {number} dispatchType * @property {number} dts * @property {string} frames * @property {string} pts */ muxjs.mp4.Metadata; /** * @typedef {{ * data: string, * description: string, * id: string, * key: string, * value: string * }} * * @description metadata parsed from mux.js. * @property {number} data * @property {number} description * @property {number} id * @property {number} key * @property {string} value */ muxjs.mp4.MetadataFrame;