in src/main/java/com/amazonaws/kinesisvideo/parser/mkv/MkvStreamReaderCallback.java [53:82]
public void onStartElement(EBMLElementMetaData elementMetaData,
long elementDataSize,
ByteBuffer idAndSizeRawBytes,
ElementPathSupplier pathSupplier) {
Validate.isTrue(!currentMkvDataElementInfo.isPresent());
if(elementMetaData.isMaster()) {
log.debug("Start Master Element to return {} data size {} ", elementMetaData, elementDataSize);
addMkvElementToReturn(MkvStartMasterElement.builder().elementMetaData(elementMetaData)
.elementPath(getPath(pathSupplier))
.dataSize(elementDataSize)
.idAndSizeRawBytes(idAndSizeRawBytes).build());
} else {
if (elementDataSize > readBuffer.capacity()) {
int sizeToAllocate = ((int )Math.ceil((double )elementDataSize/MAX_BUFFER_SIZE))*MAX_BUFFER_SIZE;
log.debug("Resizing readBuffer to {}", sizeToAllocate);
readBuffer = ByteBuffer.allocate(sizeToAllocate);
}
readBuffer.clear();
if (elementFilter.test(elementMetaData.getTypeInfo())) {
log.debug("Data Element to start building {} data size {} ", elementMetaData, elementDataSize);
List<EBMLElementMetaData> elementPath = getPath(pathSupplier);
currentMkvDataElementInfo = Optional.of(new CurrentMkvDataElementInfo(elementMetaData,
elementDataSize,
elementPath,
idAndSizeRawBytes));
}
}
}