ladybird/Libraries/LibMedia
Zaggy1024 ae04222247 LibMedia: Don't display video frames that are late
Frames are considered late if the time is ahead by half their duration.
The fudging is necessary because Matroska (and perhaps other formats)
store their frame durations in different time units than their
timestamps.

Skipping these should make it clear when decoding is running behind,
instead of displaying the video in slow motion while audio runs at a
normal rate.

To give an accurate counting for video playback quality when it is
implemented, we'll most likely want to count all pulled frames in an
update as dropped if the last frame is dropped. Otherwise the frame
drop count will only increase at the display rate when decoding is
continually running behind.
2026-06-11 21:49:55 +02:00
..
Audio LibMedia: Implement audio time stretching with WSOLA 2026-06-06 19:58:17 -05:00
Codecs LibMedia: Implement buffered range scanning for Ogg 2026-05-28 10:30:20 -05:00
Color LibMedia: Remove reserved values from CICP enums 2026-04-18 01:25:00 -05:00
Containers LibMedia: Implement buffered range scanning for Ogg 2026-05-28 10:30:20 -05:00
FFmpeg LibMedia: Rename timing getters in AudioBlock 2026-06-06 19:58:17 -05:00
PlaybackStates LibMedia+LibWeb: End media element playback based on the pipeline EOS 2026-06-11 05:49:14 -05:00
Processors LibMedia: Implement audio time stretching with WSOLA 2026-06-06 19:58:17 -05:00
Producers LibMedia: Don't change pipeline state from Error outside seeks 2026-06-11 05:49:14 -05:00
Sinks LibMedia: Don't display video frames that are late 2026-06-11 21:49:55 +02:00
AudioBlock.h LibMedia: Move AudioBlock's timing info into a separate class 2026-06-06 19:58:17 -05:00
AudioBlockTiming.h LibMedia: Remap audio time based on block durations in media time 2026-06-06 19:58:17 -05:00
AudioBlockTimingRing.h LibMedia: Handle outputting silence after EOS in the audio sink 2026-06-06 19:58:17 -05:00
AudioDecoder.h LibMedia: Allow signalling of EOF to decoders 2025-11-05 18:40:02 +01:00
CMakeLists.txt LibMedia: Use a combined status to exit the seeking/buffering states 2026-06-11 05:49:14 -05:00
CodecID.h LibMedia: Add WAV PCM codecs to CodecID 2025-12-15 18:03:03 -06:00
CodedAudioFrameData.h LibMedia: Support coded audio frames in our demuxers 2025-10-27 17:28:49 -07:00
CodedFrame.h LibMedia: Store a duration in CodedFrame 2025-12-10 16:02:40 -06:00
CodedVideoFrameData.h LibMedia: Move CICP values from CodedFrame to Track 2025-11-05 18:40:02 +01:00
DecoderError.h LibMedia: Add a formatter for DecoderErrorCategory 2026-02-24 16:55:40 -06:00
Demuxer.h LibMedia+LibWeb: Speculatively find keyframes near fast seek targets 2026-05-13 02:05:35 -05:00
Forward.h LibMedia: Implement audio time stretching with WSOLA 2026-06-06 19:58:17 -05:00
FrameFlags.h LibMedia: Move the bitwise operators for FrameFlags to Media:: 2026-05-28 10:30:20 -05:00
GenericTimeProvider.cpp LibWeb+LibMedia: Wire up setting the pipeline's playback rate 2026-06-06 19:58:17 -05:00
GenericTimeProvider.h LibWeb+LibMedia: Wire up setting the pipeline's playback rate 2026-06-06 19:58:17 -05:00
IncrementallyPopulatedStream.cpp LibMedia: Actually adjust incremental stream's request positions 2026-05-28 10:30:20 -05:00
IncrementallyPopulatedStream.h LibMedia: Implement buffered ranges for MP3 2026-05-28 10:30:20 -05:00
MediaPipelineNode.h LibMedia: Remove WrapperTimeProvider in favor of diamond inheritance 2026-05-13 02:05:35 -05:00
MediaStream.h LibMedia: Implement buffered ranges for MP3 2026-05-28 10:30:20 -05:00
MediaTimeProvider.h LibWeb+LibMedia: Wire up setting the pipeline's playback rate 2026-06-06 19:58:17 -05:00
PipelineStatus.h LibMedia: Make PipelineStatus::Pending take precedence over HaveData 2026-06-11 05:49:14 -05:00
PlaybackManager.cpp LibMedia: Use a combined status to exit the seeking/buffering states 2026-06-11 05:49:14 -05:00
PlaybackManager.h LibMedia: Use a combined status to exit the seeking/buffering states 2026-06-11 05:49:14 -05:00
ReadonlyBytesCursor.h LibMedia: Allow MediaStreamCursor to never block on missing data 2026-05-28 10:30:20 -05:00
SeekMode.h LibMedia: Implement media seeking 2025-10-27 17:28:49 -07:00
Subsampling.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
TimeRanges.cpp LibMedia: Add a TimeRanges class to be used for buffered attributes 2026-04-01 02:54:22 -05:00
TimeRanges.h LibMedia: Add a TimeRanges class to be used for buffered attributes 2026-04-01 02:54:22 -05:00
Track.h LibMedia+LibWeb: Align Media::Track more to the web spec 2026-04-01 02:54:22 -05:00
TrackType.h LibMedia: Set Matroska "complex" tracks' types based on the codec 2025-11-21 16:51:58 -06:00
VideoDecoder.h LibMedia: Make video frames ref-counted 2026-05-05 14:39:17 -05:00
VideoFrame.cpp LibGfx+LibMedia: Add IPC serialization for VideoFrame 2026-05-21 11:45:06 +01:00
VideoFrame.h LibGfx+LibMedia: Add IPC serialization for VideoFrame 2026-05-21 11:45:06 +01:00