static probe(data, offset) {
    // look for the ac-3 sync bytes
    if (data[offset] === 0x0b &&
      data[offset + 1] === 0x77) {
      // check the bsid (bitStreamIdentification) to confirm ac-3
      let bsid = 0;
      let numBits = 5;
      offset += numBits;
      /** @type {?number} */
      let temp = null;
      /** @type {?number} */
      let mask = null;
      /** @type {?number} */
      let byte = null;
      while (numBits > 0) {
        byte = data[offset];
        // read remaining bits, upto 8 bits at a time
        const bits = Math.min(numBits, 8);
        const shift = 8 - bits;
        mask = (0xff000000 >>> (24 + shift)) << shift;
        temp = (byte & mask) >> shift;
        bsid = !bsid ? temp : (bsid << bits) | temp;
        offset += 1;
        numBits -= bits;
      }
      if (bsid < 16) {
        return true;
      }
    }
    return false;
  }
@param {!Uint8Array} data
@param {!number} offset
@return {boolean}