public void onStartElement()

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