static parseESDS(reader) {
    let codec = 'mp4a';
    let tag;
    let oti;
    while (reader.hasMoreData()) {
      tag = reader.readUint8();
      let byteRead = reader.readUint8();
      while (byteRead & 0x80) {
        byteRead = reader.readUint8();
      }
      if (tag == 0x03) {
        reader.readUint16();
        const flags = reader.readUint8();
        if (flags & 0x80) {
          reader.readUint16();
        }
        if (flags & 0x40) {
          reader.skip(reader.readUint8());
        }
        if (flags & 0x20) {
          reader.readUint16();
        }
      } else if (tag == 0x04) {
        oti = reader.readUint8();
        reader.skip(12);
      } else if (tag == 0x05) {
        break;
      }
    }
    if (oti) {
      codec += '.' + shaka.util.Mp4BoxParsers.toHex_(oti);
      if (tag == 0x05 && reader.hasMoreData()) {
        const firstData = reader.readUint8();
        let audioObjectType = (firstData & 0xF8) >> 3;
        if (audioObjectType === 31 && reader.hasMoreData()) {
          audioObjectType = 32 + ((firstData & 0x7) << 3) +
              ((reader.readUint8() & 0xE0) >> 5);
        }
        codec += '.' + audioObjectType;
      }
    }
    return {codec};
  }
Parses a ESDS box.
@param {!shaka.util.DataViewReader} reader
@return {!shaka.util.ParsedESDSBox}