LateAndDecode

Also throw packets away before decoding them, when the decoder cannot keep up.

Everything LateOnly does, plus this: when a packet's timestamp is already half a second behind the clock, it and every packet after it are dropped UNDECODED until the next keyframe. That is the only drop with a clean edge, because every other frame in a group of pictures references its neighbours: dropping one alone would leave the decoder producing garbage rather than saving work.

The cost is visible and is the reason this is not the default: the picture holds on its last decoded frame until that keyframe arrives, which on a file with distant keyframes can be a second or more. The gain is that a decoder losing the race stops losing it. Worth it for 4K on weak hardware, not worth it otherwise.

A keyframe is never dropped, and neither is a packet a precise seek still needs. PlaybackStats.droppedFramesDecode counts what went.

Properties

Link copied to clipboard
expect val name: String
Link copied to clipboard
expect val ordinal: Int