Skip to content

Instantly share code, notes, and snippets.

View peaBerberian's full-sized avatar

Paul Berberian peaBerberian

View GitHub Profile
// example ten seconds content
const manifest = {
version: "1.0", // MAJOR.MINOR
// MAJOR = previous parser should not parse it
// MINOR = retro-compatible
duration: 10e3, // total duration of the content
// add timescale?
period: [{
/**
* Find the right box in an isobmff file from its hexa-encoded name.
* @param {Uint8Array} buf - the isobmff
* @param {Number} boxName - the 'name' of the box (e.g. 'sidx' or 'moov'),
* hexa encoded
* @returns {Number} - offset where the corresponding box is (starting with its
* size), -1 if not found.
*/
function findBox(buf, boxName) {
const length = buf.length;
const playListGenerator = function(
original_playlist, // in format [{url, duration}, ...]
baseTime, // in format timestamp e.g 1516961850
occurences // number of loops to reproduce
){
function loopGeneration(datas, times){
const arrayContents = [];
const overlays = [];
const durations = datas
.map((data) => data.endTime - data.startTime);
const playListGenerator = function(
original_playlist, // in format [{url, duration}, ...]
baseTime, // in format timestamp e.g 1516961850
occurences // number of loops to reproduce
){
function loopGeneration(datas, times){
const arrayContents = [];
const overlays = [];
const durations = datas
.map((data) => data.endTime - data.startTime);
getConfiguration: [],
load: [],
remove: [],
requestMediaKeySystemAccess: [],
setMediaKeys: [],
setServerCertificate: [],
update: [],
};
/**
/**
* Store information about every EME Calls stubbed in this file.
* @type {Object}
*/
const EME_CALLS = {
close: [],
createMediaKeys: [],
createSession: [],
generateRequest: [],
getConfiguration: [],
/**
* Store information about every EME Calls stubbed in this file.
* @type {Object}
*/
const EME_CALLS = {
close: [],
createMediaKeys: [],
createSession: [],
generateRequest: [],
getConfiguration: [],
/**
* Store information about every EME Calls stubbed in this file.
* @type {Object}
*/
const EME_CALLS = {
requestMediaKeySystemAccess: [],
update: [],
load: [],
close: [],
remove: [],
<!DOCTYPE html>
<html>
<head>
<title>Player+</title>
<meta charset="utf-8" />
<link rel="shortcut icon" type="image/vnd.microsoft.icon" href="/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="nuviplayer/css/nuviplayer.css" media="all"/><script>var PLAYER5_ID = 'standard';</script></head>
<body>
<script>
var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(b,e,a){if(a.get||a.set)throw new TypeError("ES3 does not support getters and setters.");b!=Array.prototype&&b!=Object.prototype&&(b[e]=a.value)};$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(b,e,a){if(a.get||a.set)throw new TypeError("ES3 does not support getters and setters.");b!=Array.prototype&&b!=Object.prototype&&(b[e]=a.value)};$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(b){return $jscomp.SYMBOL_PREFIX+(b||"")+$jscomp.symbolCounter_++};
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var b=$jscomp.global.Symbol.iterator;b||(b=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[b]&&$jscomp.defineProperty(Array.prototype,b,{configurable:!0,writable:!0,value:function(){return $jscomp.ar