in src/main/java/com/amazonaws/kinesisvideo/parser/utilities/OutputSegmentMerger.java [456:476]
private void bufferAndCollect(final MkvStartMasterElement startMasterElement)
throws IOException, MkvElementVisitException {
Validate.isTrue(state == MergeState.BUFFERING_SEGMENT || state == MergeState.BUFFERING_CLUSTER_START,
"Trying to buffer in wrong state " + state);
//Buffer and collect
if (MergeState.BUFFERING_SEGMENT == state) {
if (!collectorStates.isEmpty() && MkvTypeInfos.SEGMENT.equals(startMasterElement.getElementMetaData()
.getTypeInfo()) && !startMasterElement.isUnknownLength()) {
//if the start master element belongs to a segment that has a defined length,
//change it to one with an unknown length since we will be changing the length of the segment
//element.
SEGMENT_ELEMENT_WITH_UNKNOWN_LENGTH.rewind();
bufferingSegmentChannel.write(SEGMENT_ELEMENT_WITH_UNKNOWN_LENGTH);
} else {
startMasterElement.writeToChannel(bufferingSegmentChannel);
}
} else {
startMasterElement.writeToChannel(bufferingClusterChannel);
}
this.sendElementToAllCollectors(startMasterElement);
}