private Consumer sendChunkEncodedMvkStream()

in src/main/java/com/amazonaws/kinesisvideo/client/PutMediaClient.java [104:144]


    private Consumer<OutputStream> sendChunkEncodedMvkStream(final int fragmentThrottle) {
        return new Consumer<OutputStream>() {
            @Override
            public void accept(final OutputStream rawOutputStream) {
                FileOutputStream outputFileStream = null;
                try {
                    final OutputStream throttledOutputStream = throttleAndMeasureOutput(rawOutputStream);
                    outputFileStream = createOutputFileStream();
                    final byte[] buffer = new byte[BUFFER_SIZE];
                    int mkvBytesRead;
                    long counter = 0;
                    boolean continueLoop = true;
                    while (continueLoop) {
                        mkvBytesRead = mBuilder.mMkvStream.read(buffer);
                        counter++;
                        if (counter % LOGGING_INTERVAL == 0) {
                            log.debug("Sending data, counter : " + counter);
                        }
                        if (mkvBytesRead == -1) {
                            log.info("End-of-stream is reported. Terminating...");
                            continueLoop = false;
                        } else {
                            throttledOutputStream.write(ChunkEncoder.encode(buffer, mkvBytesRead));
                            tryWriteToFile(outputFileStream, buffer, mkvBytesRead);
                            if (fragmentThrottle > 0) {
                                Thread.sleep(fragmentThrottle);
                            }
                        }
                    }
                    throttledOutputStream.write(ChunkEncoder.encode(buffer, 0));
                    rawOutputStream.flush();
                    log.debug("Data sent. counter : " + counter);
                } catch (final Exception e) {
                    log.debug("Exception while sending data.", e);
                    throw new RuntimeException("Exception while sending encoded chunk in MKV stream ! ", e);
                } finally {
                    tryCloseOutputFileStream(outputFileStream);
                }
            }
        };
    }