Пример #1
0
 update: wrapUpdate(function (license, sessionId) {
   if (this._key.indexOf("clearkey") >= 0) {
     const json = JSON.parse(bytesToStr(license));
     const key = strToBytes(atob(json.keys[0].k));
     const kid = strToBytes(atob(json.keys[0].kid));
     this._vid.webkitAddKey(this._key, key, kid, sessionId);
   } else {
     this._vid.webkitAddKey(this._key, license, null, sessionId);
   }
   this.sessionId = sessionId;
 }),
Пример #2
0
function boxName(str) {
  if (boxNamesMem[str]) {
    return boxNamesMem[str];
  }

  const nameInBytes = strToBytes(str);
  boxNamesMem[str] = nameInBytes;
  return nameInBytes;
}
Пример #3
0
   * {Uint8Array} avcc (Uint8Array representing the avcC atom)
   * {Uint8Array} sinf (Uint8Array representing the sinf atom, only if name == "encv")
   */
  avc1encv(name, drefIdx, width, height, hRes, vRes, encName, colorDepth, avcc, sinf) {
    if (__DEV__) {
      assert(name === "avc1" || name === "encv", "should be avc1 or encv atom");
    }
    return Atom(name, concat(
      6,                      // 6 bytes reserved
      itobe2(drefIdx), 16,    // drefIdx + QuickTime reserved, zeroes
      itobe2(width),          // size 2 w
      itobe2(height),         // size 2 h
      itobe2(hRes), 2,        // reso 4 h
      itobe2(vRes), 2 + 4,    // reso 4 v + QuickTime reserved, zeroes
      [0, 1, encName.length], // frame count (default 1)
      strToBytes(encName),    // 1byte len + encoder name str
      (31 - encName.length),  // + padding
      itobe2(colorDepth),     // color depth
      [0xFF, 0xFF],           // reserved ones
      avcc,                   // avcc atom,
      (name === "encv") ? sinf : []
    ));
  },

  /**
   * {String} spsHex
   * {String} ppsHex
   * {Number} nalLen (NAL Unit length: 1, 2 or 4 bytes)
   * eg: avcc(0x4d, 0x40, 0x0d, 4, 0xe1, "674d400d96560c0efcb80a70505050a0", 1, "68ef3880")
   */
  avcc(sps, pps, nalLen) {