Program: 110175
Project: 110175
Buggy source:
/** 
 * @param flags Flags that control the extractor's behavior.
 * @param timestampAdjuster Adjusts sample timestamps. May be null if no adjustment is needed.
 * @param sideloadedTrack Sideloaded track information, in the case that the extractor will notreceive a moov box in the input data. Null if a moov box is expected.
 * @param sideloadedDrmInitData The {@link DrmInitData} to use for encrypted tracks. If null, thepssh boxes (if present) will be used.
 * @param closedCaptionFormats For tracks that contain SEI messages, the formats of the closedcaption channels to expose.
 * @param additionalEmsgTrackOutput An extra track output that will receive all emsg messagestargeting the player, even if  {@link #FLAG_ENABLE_EMSG_TRACK} is not set. Null if specialhandling of emsg messages for players is not required.
 */
public FragmentedMp4Extractor(@Flags int flags,@Nullable TimestampAdjuster timestampAdjuster,@Nullable Track sideloadedTrack,@Nullable DrmInitData sideloadedDrmInitData,List<Format> closedCaptionFormats,@Nullable TrackOutput additionalEmsgTrackOutput){
  this.flags=flags | (sideloadedTrack != null ? FLAG_SIDELOADED : 0);
  this.timestampAdjuster=timestampAdjuster;
  this.sideloadedTrack=sideloadedTrack;
  this.sideloadedDrmInitData=sideloadedDrmInitData;
  this.closedCaptionFormats=Collections.unmodifiableList(closedCaptionFormats);
  this.additionalEmsgTrackOutput=additionalEmsgTrackOutput;
  atomHeader=new ParsableByteArray(Atom.LONG_HEADER_SIZE);
  nalStartCode=new ParsableByteArray(NalUnitUtil.NAL_START_CODE);
  nalPrefix=new ParsableByteArray(5);
  nalBuffer=new ParsableByteArray();
  extendedTypeScratch=new byte[16];
  containerAtoms=new Stack<>();
  pendingMetadataSampleInfos=new ArrayDeque<>();
  trackBundles=new SparseArray<>();
  durationUs=C.TIME_UNSET;
  pendingSeekTimeUs=C.TIME_UNSET;
  segmentIndexEarliestPresentationTimeUs=C.TIME_UNSET;
  enterReadingAtomHeaderState();
}

Fixed version (ground truth):
/** 
 * @param flags Flags that control the extractor's behavior.
 * @param timestampAdjuster Adjusts sample timestamps. May be null if no adjustment is needed.
 * @param sideloadedTrack Sideloaded track information, in the case that the extractor will notreceive a moov box in the input data. Null if a moov box is expected.
 * @param sideloadedDrmInitData The {@link DrmInitData} to use for encrypted tracks. If null, thepssh boxes (if present) will be used.
 * @param closedCaptionFormats For tracks that contain SEI messages, the formats of the closedcaption channels to expose.
 * @param additionalEmsgTrackOutput An extra track output that will receive all emsg messagestargeting the player, even if  {@link #FLAG_ENABLE_EMSG_TRACK} is not set. Null if specialhandling of emsg messages for players is not required.
 */
public FragmentedMp4Extractor(@Flags int flags,@Nullable TimestampAdjuster timestampAdjuster,@Nullable Track sideloadedTrack,@Nullable DrmInitData sideloadedDrmInitData,List<Format> closedCaptionFormats,@Nullable TrackOutput additionalEmsgTrackOutput){
  this.flags=flags | (sideloadedTrack != null ? FLAG_SIDELOADED : 0);
  this.timestampAdjuster=timestampAdjuster;
  this.sideloadedTrack=sideloadedTrack;
  this.sideloadedDrmInitData=sideloadedDrmInitData;
  this.closedCaptionFormats=Collections.unmodifiableList(closedCaptionFormats);
  this.additionalEmsgTrackOutput=additionalEmsgTrackOutput;
  atomHeader=new ParsableByteArray(Atom.LONG_HEADER_SIZE);
  nalStartCode=new ParsableByteArray(NalUnitUtil.NAL_START_CODE);
  nalPrefix=new ParsableByteArray(5);
  nalBuffer=new ParsableByteArray();
  extendedTypeScratch=new byte[16];
  containerAtoms=new ArrayDeque<>();
  pendingMetadataSampleInfos=new ArrayDeque<>();
  trackBundles=new SparseArray<>();
  durationUs=C.TIME_UNSET;
  pendingSeekTimeUs=C.TIME_UNSET;
  segmentIndexEarliestPresentationTimeUs=C.TIME_UNSET;
  enterReadingAtomHeaderState();
}