public void visit()

in src/main/java/com/aws/iot/edgeconnectorforkvs/videouploader/visitors/MergeFragmentVisitor.java [227:270]


        public void visit(MkvEndMasterElement endMasterElement) throws MkvElementVisitException {
            final EBMLTypeInfo ebmlTypeInfo = endMasterElement.getElementMetaData().getTypeInfo();
            log.debug("-name=" + ebmlTypeInfo.getName() + ", level=" + ebmlTypeInfo.getLevel());
            switch (state) {
                case NEW:
                    throw new IllegalArgumentException("NEW state should not start with MkvEndMasterElement "
                            + endMasterElement);
                case BUFFERING_SEGMENT:
                    if (MkvTypeInfos.SEGMENT.equals(ebmlTypeInfo)) {
                        log.trace("state: BUFFERING_SEGMENT -> NEW");
                        state = MergeState.NEW;
                        nextFragmentTimecodeOffsetMs = -1;
                        bufferingSegmentStream.reset();
                        bufferingSegmentChannel = Channels.newChannel(bufferingSegmentStream);
                        isSegmentVerified = false;
                    } else if (MkvTypeInfos.TRACKS.equals(ebmlTypeInfo)) {
                        isIgnoreTracksElements = false;
                    }
                    break;
                case BUFFERING_CLUSTER:
                    if (MkvTypeInfos.CLUSTER.equals(ebmlTypeInfo)) {
                        sortClusters();
                        emitCluster(previousCluster);
                        previousCluster = currentCluster;
                        currentCluster = null;
                        if (isPausable) {
                            log.trace("state: BUFFERING_CLUSTER -> PAUSE");
                            state = MergeState.PAUSE;
                        } else {
                            log.trace("state: BUFFERING_CLUSTER -> BUFFERING_SEGMENT");
                            state = MergeState.BUFFERING_SEGMENT;
                        }
                    }
                    break;
                case BUFFERING_TAG:
                    if (MkvTypeInfos.TAGS.equals(ebmlTypeInfo)) {
                        log.trace("state: BUFFERING_TAG -> BUFFERING_SEGMENT");
                        state = MergeState.BUFFERING_SEGMENT;
                    }
                    break;
                default:
                    throw new MkvTracksException("Unknown state " + state);
            }
        }