xgplayer-dash
Version:
xgplayer plugin for MPEG-DASH
139 lines (138 loc) • 4.38 kB
JavaScript
var util = {};
util.ArrayBufferToString = function(arr) {
var str = "";
var view = new Uint8Array(arr);
for (var i = 0; i < view.length; i++) {
str += String.fromCharCode(view[i]);
}
return str;
};
util.StringToArrayBuffer = function(str) {
var arr = new ArrayBuffer(str.length);
var view = new Uint8Array(arr);
for (var i = 0; i < str.length; i++) {
view[i] = str.charCodeAt(i);
}
return arr;
};
util.Base64ToHex = function(str) {
var bin = window.atob(str.replace(/-/g, "+").replace(/_/g, "/"));
var res = "";
for (var i = 0; i < bin.length; i++) {
res += ("0" + bin.charCodeAt(i).toString(16)).substr(-2);
}
return res;
};
util.HexToBase64 = function(hex) {
var bin = "";
for (var i = 0; i < hex.length; i += 2) {
bin += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
}
return window.btoa(bin).replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
};
util.findBox = function(root, type) {
var result = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
if (root.type !== type) {
if (root && root.subBox) {
var box = root.subBox.filter(function(item) {
return item.type === type;
});
if (box.length) {
box.forEach(function(item) {
return result.push(item);
});
} else {
root.subBox.forEach(function(item) {
return util.findBox(item, type, result);
});
}
}
} else {
result.push(root);
}
result = [].concat(result);
return result.length > 1 ? result : result[0];
};
util.padStart = function(str, length, pad) {
var charstr = String(pad);
var len = length >> 0;
var maxlen = Math.ceil(len / charstr.length);
var chars = [];
var r = String(str);
while (maxlen--) {
chars.push(charstr);
}
return chars.join("").substring(0, len - r.length) + r;
};
util.durationConvert = function(value) {
var Hours = 0;
var Minutes = 0;
var Seconds = 0;
value = value.slice(value.indexOf("PT") + 2);
if (value.indexOf("H") > -1 && value.indexOf("M") > -1 && value.indexOf("S") > -1) {
Hours = parseFloat(value.slice(0, value.indexOf("H")));
Minutes = parseFloat(value.slice(value.indexOf("H") + 1, value.indexOf("M")));
Seconds = parseFloat(value.slice(value.indexOf("M") + 1, value.indexOf("S")));
} else if (value.indexOf("H") < 0 && value.indexOf("M") > 0 && value.indexOf("S") > -1) {
Minutes = parseFloat(value.slice(0, value.indexOf("M")));
Seconds = parseFloat(value.slice(value.indexOf("M") + 1, value.indexOf("S")));
} else if (value.indexOf("H") < 0 && value.indexOf("M") < 0 && value.indexOf("S") > -1) {
Seconds = parseFloat(value.slice(0, value.indexOf("S")));
}
return Hours * 3600 + Minutes * 60 + Seconds;
};
util.preFixInterge = function(num, n) {
return (Array(n).join(0) + num).slice(-n);
};
util.toHex = function() {
var hex = [];
for (var _len = arguments.length, value = new Array(_len), _key = 0; _key < _len; _key++) {
value[_key] = arguments[_key];
}
value.forEach(function(item) {
hex.push(util.padStart(Number(item).toString(16), 2, 0));
});
return hex;
};
util.sum = function() {
var count = 0;
for (var _len2 = arguments.length, rst = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
rst[_key2] = arguments[_key2];
}
rst.forEach(function(item) {
count += item;
});
return count;
};
util.toUTF8 = function(str) {
var encoded = encodeURIComponent(str);
var utf8 = unescape(encoded);
var result = new Uint8Array(utf8.length);
for (var i = 0; i < utf8.length; ++i) {
result[i] = utf8.charCodeAt(i);
}
return result.buffer;
};
util.fromHex = function(str) {
var arr = new Uint8Array(str.length / 2);
for (var i = 0; i < str.length; i += 2) {
arr[i / 2] = window.parseInt(str.substr(i, 2), 16);
}
return arr;
};
util.fromCharCode = function(array) {
var max = 16e3;
var ret = "";
for (var i = 0; i < array.length; i += max) {
var subArray = array.subarray(i, i + max);
ret += String.fromCharCode.apply(null, subArray);
}
return ret;
};
util.toBase64 = function(arr, padding) {
var bytes = util.fromCharCode(arr);
padding = padding === void 0 ? true : padding;
var base64 = window.btoa(bytes).replace(/\+/g, "-").replace(/\//g, "_");
return padding ? base64 : base64.replace(/=*$/, "");
};
export { util as default };