private void removeMasterElementsBasedOnLevel()

in src/main/java/com/amazonaws/kinesisvideo/parser/ebml/EBMLParser.java [206:228]


    private void removeMasterElementsBasedOnLevel() {
        if (!currentElement.isKnownType()) {
            return;
        }
        if (!currentElement.getTypeInfo().isGlobal()) {
            while (!masterElements.isEmpty()) {
                EBMLParserInternalElement top = masterElements.peek();
                //For handling master elements with the wrong size (such as segments)
                //We should finish master elements of known size is another element of the same or
                //lower level is found.

                Validate.isTrue(currentElement.getElementCount() != top.getElementCount());
                if (currentElement.getTypeInfo().getLevel() <= top.getTypeInfo().getLevel()) {
                    log.debug("Removing master element {} based on level of current element {}", top, currentElement);
                    masterElements.pop();
                    invokeOnEndElementCallback(top);
                } else {
                    break;
                }

            }
        }
    }