static parseInfo(nalus) {
    const H265 = shaka.transmuxer.H265;
    if (!nalus.length) {
      return null;
    }
    const vpsNalu = nalus.find((nalu) => {
      return nalu.type == H265.NALU_TYPE_VPS_;
    });
    const spsNalu = nalus.find((nalu) => {
      return nalu.type == H265.NALU_TYPE_SPS_;
    });
    const ppsNalu = nalus.find((nalu) => {
      return nalu.type == H265.NALU_TYPE_PPS_;
    });
    if (!vpsNalu || !spsNalu || !ppsNalu) {
      return null;
    }

    const vpsConfiguration = H265.parseVPS_(vpsNalu.fullData);
    const spsConfiguration = H265.parseSPS_(spsNalu.fullData);
    const ppsConfiguration = H265.parsePPS_(ppsNalu.fullData);

    /** @type {shaka.transmuxer.H265.DecoderConfigurationRecordType} */
    const detail = {
      numTemporalLayers: vpsConfiguration.numTemporalLayers,
      temporalIdNested: vpsConfiguration.temporalIdNested,
      generalProfileSpace: spsConfiguration.generalProfileSpace,
      generalTierFlag: spsConfiguration.generalTierFlag,
      generalLevelIdc: spsConfiguration.generalLevelIdc,
      generalProfileIdc: spsConfiguration.generalProfileIdc,
      generalProfileCompatibilityFlags1:
          spsConfiguration.generalProfileCompatibilityFlags1,
      generalProfileCompatibilityFlags2:
          spsConfiguration.generalProfileCompatibilityFlags2,
      generalProfileCompatibilityFlags3:
          spsConfiguration.generalProfileCompatibilityFlags3,
      generalProfileCompatibilityFlags4:
          spsConfiguration.generalProfileCompatibilityFlags4,
      generalConstraintIndicatorFlags1:
          spsConfiguration.generalConstraintIndicatorFlags1,
      generalConstraintIndicatorFlags2:
          spsConfiguration.generalConstraintIndicatorFlags2,
      generalConstraintIndicatorFlags3:
          spsConfiguration.generalConstraintIndicatorFlags3,
      generalConstraintIndicatorFlags4:
          spsConfiguration.generalConstraintIndicatorFlags4,
      generalConstraintIndicatorFlags5:
          spsConfiguration.generalConstraintIndicatorFlags5,
      generalConstraintIndicatorFlags6:
          spsConfiguration.generalConstraintIndicatorFlags6,
      constantFrameRate: spsConfiguration.constantFrameRate,
      minSpatialSegmentationIdc: spsConfiguration.minSpatialSegmentationIdc,
      chromaFormatIdc: spsConfiguration.chromaFormatIdc,
      bitDepthLumaMinus8: spsConfiguration.bitDepthLumaMinus8,
      bitDepthChromaMinus8: spsConfiguration.bitDepthChromaMinus8,
      parallelismType: ppsConfiguration.parallelismType,
    };

    const videoConfig = H265.getVideoConfiguration_(
        vpsNalu.fullData, spsNalu.fullData, ppsNalu.fullData, detail);

    return {
      height: spsConfiguration.height,
      width: spsConfiguration.width,
      videoConfig,
      hSpacing: spsConfiguration.sarWidth,
      vSpacing: spsConfiguration.sarHeight,
    };
  }
Read a sequence parameter set and return some interesting video
properties. A sequence parameter set is the H265 metadata that
describes the properties of upcoming video frames.

@param {!Array<shaka.extern.VideoNalu>} nalus
@return {?{height: number, width: number, videoConfig: !Uint8Array,
           hSpacing: number, vSpacing: number}}