private void bufferAndCollect()

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);
    }