in src/main/java/com/amazonaws/kinesisvideo/internal/producer/jni/NativeKinesisVideoProducerStream.java [234:278]
public void putFrame(@Nonnull final KinesisVideoFrame kinesisVideoFrame) throws ProducerException {
Preconditions.checkNotNull(kinesisVideoFrame);
Preconditions.checkState(mStreamHandle != NativeKinesisVideoProducerJni.INVALID_STREAM_HANDLE_VALUE);
mLog.debug("PutFrame index: %s, pts: %s, dts: %s, duration: %s, keyFrame: %s, track: %s",
kinesisVideoFrame.getIndex(),
kinesisVideoFrame.getPresentationTs(),
kinesisVideoFrame.getDecodingTs(),
kinesisVideoFrame.getDuration(),
FrameFlags.isKeyFrame(kinesisVideoFrame.getFlags()),
kinesisVideoFrame.getTrackId());
// Print out metrics on every key-frame
if (FrameFlags.isKeyFrame(kinesisVideoFrame.getFlags())) {
final KinesisVideoMetrics kinesisVideoMetrics = mKinesisVideoProducerJni.getMetrics();
final KinesisVideoStreamMetrics streamMetrics = getMetrics();
mLog.debug("Kinesis Video client and stream metrics"
+ "\n\t>> Overall storage size: %s"
+ "\n\t>> Available storage size: %s"
+ "\n\t>> Allocated storage size: %s"
+ "\n\t>> Total view allocation size: %s"
+ "\n\t>> Total streams frame rate: %s"
+ "\n\t>> Total streams transfer rate: %s"
+ "\n\t>> Current view duration: %s"
+ "\n\t>> Overall view duration: %s"
+ "\n\t>> Current view size: %s"
+ "\n\t>> Overall view size: %s"
+ "\n\t>> Current frame rate: %s"
+ "\n\t>> Current transfer rate: %s",
kinesisVideoMetrics.getContentStoreSize(),
kinesisVideoMetrics.getContentStoreAvailableSize(),
kinesisVideoMetrics.getContentStoreAllocatedSize(),
kinesisVideoMetrics.getTotalContentViewSize(),
kinesisVideoMetrics.getTotalFrameRate(),
kinesisVideoMetrics.getTotalTransferRate(),
streamMetrics.getCurrentViewDurationInTimeUnits(),
streamMetrics.getOverallViewDurationInTimeUnits(),
streamMetrics.getCurrentViewSize(),
streamMetrics.getOverallViewSize(),
streamMetrics.getCurrentFrameRate(),
streamMetrics.getCurrentTransferRate());
}
mKinesisVideoProducerJni.putFrame(mStreamHandle, kinesisVideoFrame);
}