DecoderCounters


@UnstableApi
class DecoderCounters


Maintains decoder event counts, for debugging purposes only.

Counters should be written from the playback thread only. Counters may be read from any thread. To ensure that the counter values are made visible across threads, users of this class should invoke ensureUpdated prior to reading and after writing.

Summary

Public constructors

Public functions

Unit
addVideoFrameProcessingOffset(processingOffsetUs: Long)

Adds a video frame processing offset to totalVideoFrameProcessingOffsetUs and increases videoFrameProcessingOffsetCount by one.

synchronized Unit

Should be called to ensure counter values are made visible across threads.

Unit

Merges the counts from other into this instance.

String!

Public properties

Int

The number of times a decoder has been initialized.

Int

The number of times a decoder has been released.

Int

The number of dropped buffers.

Int

The number of input buffers dropped.

Int

The number of times all buffers to a keyframe were dropped.

Int

The maximum number of dropped buffers without an interleaving rendered output buffer.

Int

The number of input buffers queued to the decoder.

Int

The number of rendered output buffers.

Int

The number of skipped input buffers.

Int

The number of skipped output buffers.

Long

The sum of the video frame processing offsets in microseconds.

Int

The number of video frame processing offsets added.

Public constructors

DecoderCounters

DecoderCounters()

Public functions

addVideoFrameProcessingOffset

fun addVideoFrameProcessingOffset(processingOffsetUs: Long): Unit

Adds a video frame processing offset to totalVideoFrameProcessingOffsetUs and increases videoFrameProcessingOffsetCount by one.

Convenience method to ensure both fields are updated when adding a single offset.

Parameters
processingOffsetUs: Long

The video frame processing offset in microseconds.

ensureUpdated

synchronized fun ensureUpdated(): Unit

Should be called to ensure counter values are made visible across threads. The playback thread should call this method after updating the counter values. Any other thread should call this method before reading the counters.

merge

fun merge(other: DecoderCounters!): Unit

Merges the counts from other into this instance.

Parameters
other: DecoderCounters!

The DecoderCounters to merge into this instance.

toString

fun toString(): String!

Public properties

decoderInitCount

val decoderInitCountInt

The number of times a decoder has been initialized.

decoderReleaseCount

val decoderReleaseCountInt

The number of times a decoder has been released.

droppedBufferCount

val droppedBufferCountInt

The number of dropped buffers.

A dropped buffer is a buffer that was supposed to be decoded/rendered, but was instead dropped because it could not be rendered in time.

This includes all of droppedInputBufferCount in addition to buffers dropped after being queued to the decoder.

droppedInputBufferCount

val droppedInputBufferCountInt

The number of input buffers dropped.

A dropped input buffer is a buffer that was not queued to the decoder because it would not be rendered in time.

droppedToKeyframeCount

val droppedToKeyframeCountInt

The number of times all buffers to a keyframe were dropped.

Each time buffers to a keyframe are dropped:

  • This counter is incremented by one.
  • droppedInputBufferCount is incremented by the number of buffers dropped from the source to advance to the keyframe.
  • droppedBufferCount is incremented by the sum of the number of buffers dropped from the source to advance to the keyframe and the number of buffers 'inside' the decoder.

maxConsecutiveDroppedBufferCount

val maxConsecutiveDroppedBufferCountInt

The maximum number of dropped buffers without an interleaving rendered output buffer.

Skipped buffers are ignored for the purposes of calculating this value.

queuedInputBufferCount

val queuedInputBufferCountInt

The number of input buffers queued to the decoder.

renderedOutputBufferCount

val renderedOutputBufferCountInt

The number of rendered output buffers.

skippedInputBufferCount

val skippedInputBufferCountInt

The number of skipped input buffers.

A skipped input buffer is an input buffer that was deliberately not queued to the decoder.

skippedOutputBufferCount

val skippedOutputBufferCountInt

The number of skipped output buffers.

A skipped output buffer is an output buffer that was deliberately not rendered. This includes buffers that were never dequeued from the decoder and instead skipped while 'inside' the codec due to a flush.

totalVideoFrameProcessingOffsetUs

val totalVideoFrameProcessingOffsetUsLong

The sum of the video frame processing offsets in microseconds.

The processing offset for a video frame is the difference between the time at which the frame became available to render, and the time at which it was scheduled to be rendered. A positive value indicates the frame became available early enough, whereas a negative value indicates that the frame wasn't available until after the time at which it should have been rendered.

Note: Use addVideoFrameProcessingOffset to update this field instead of updating it directly.

videoFrameProcessingOffsetCount

val videoFrameProcessingOffsetCountInt

The number of video frame processing offsets added.

Note: Use addVideoFrameProcessingOffset to update this field instead of updating it directly.