I think in H264NalConsumingTrack.consumeNal the assignment
sliceNalUnitHeader = nalUnitHeader; should be after the call to createSample:
FirstVclNalDetector current = new FirstVclNalDetector(nal,
nalUnitHeader.nal_ref_idc, nalUnitHeader.nal_unit_type);
// sliceNalUnitHeader = nalUnitHeader; // <-- this causes wrong nal unit header to be used in createSample
if (fvnd != null && fvnd.isFirstInNew(current)) {
LOG.debug("Wrapping up cause of first vcl nal is found");
pushSample(createSample(buffered, fvnd.sliceHeader, sliceNalUnitHeader), false, false);
buffered.clear();
}
sliceNalUnitHeader = nalUnitHeader; // <--
fvnd = current;
I think in H264NalConsumingTrack.consumeNal the assignment
sliceNalUnitHeader = nalUnitHeader;
should be after the call tocreateSample
: