parser-java/kvs-archived-media-parallel-processing-image-rekognition-sample/src/main/java/com/amazonaws/kinesisvideo/utilities/H264FrameLabelDetector.java [44:81]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    @Override
    public void process(Frame frame, MkvTrackMetadata trackMetadata, Optional<FragmentMetadata> fragmentMetadata,
                        Optional<FragmentMetadataVisitor.MkvTagProcessor> tagProcessor) throws FrameProcessException {

        boolean isKeyFrame = frame.isKeyFrame();
        BufferedImage bufferedImage = decodeH264Frame(frame, trackMetadata);

        /* Only send key frames to Rekognition */
        if (sampleRate == 0) {
            if (frame.isKeyFrame()) {
                sendFrameToRekognition(bufferedImage);
            }
        } else {
            /* Only send to Rekognition every N frames */
            if ((frameNumber % sampleRate) == 0) {
                sendFrameToRekognition(bufferedImage);
            }
            frameNumber++;
        }

    }

    public void sendFrameToRekognition(BufferedImage bufferedImage) {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

        try {
            ImageIO.write(bufferedImage, "png", outputStream);
            ByteBuffer imageBytes = ByteBuffer.wrap(outputStream.toByteArray());
            long startTime = System.nanoTime();
            detectLabels(imageBytes);  // Label Detection
            //detectFaces(imageBytes);    // Face Detection
            //recognizeCelebrities(imageBytes); // Celebrity Detection
            //detectText(imageBytes); // Text Detection
            long endTime = System.nanoTime();
            long totalTime = endTime - startTime;
            double seconds = (double) totalTime / 1_000_000_000.0;
            log.info("Time to Rekognize frame: " + seconds + " seconds");
            log.info("----------------------");
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



parser-java/kvs-archived-media-rekognition-label-detection-sample/src/main/java/com/amazonaws/kinesisvideo/utilities/H264FrameLabelDetector.java [43:80]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    @Override
    public void process(Frame frame, MkvTrackMetadata trackMetadata, Optional<FragmentMetadata> fragmentMetadata,
                        Optional<FragmentMetadataVisitor.MkvTagProcessor> tagProcessor) throws FrameProcessException {

        boolean isKeyFrame = frame.isKeyFrame();
        BufferedImage bufferedImage = decodeH264Frame(frame, trackMetadata);

        /* Only send key frames to Rekognition */
        if (sampleRate == 0) {
            if (frame.isKeyFrame()) {
                sendFrameToRekognition(bufferedImage);
            }
        } else {
            /* Only send to Rekognition every N frames */
            if ((frameNumber % sampleRate) == 0) {
                sendFrameToRekognition(bufferedImage);
            }
            frameNumber++;
        }

    }

    public void sendFrameToRekognition(BufferedImage bufferedImage) {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

        try {
            ImageIO.write(bufferedImage, "png", outputStream);
            ByteBuffer imageBytes = ByteBuffer.wrap(outputStream.toByteArray());
            long startTime = System.nanoTime();
            detectLabels(imageBytes);  // Label Detection
            //detectFaces(imageBytes);    // Face Detection
            //recognizeCelebrities(imageBytes); // Celebrity Detection
            //detectText(imageBytes); // Text Detection
            long endTime = System.nanoTime();
            long totalTime = endTime - startTime;
            double seconds = (double) totalTime / 1_000_000_000.0;
            log.info("Time to Rekognize frame: " + seconds + " seconds");
            log.info("----------------------");
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



