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