ladybird/Libraries/LibMedia
Zaggy1024 786bc63aaa LibMedia: Don't try to decode after destroying suspended data providers
If a data provider enters the suspended state, then is requested to
exit its thread, it could exit handle_suspension() without creating a
decoder. After this, we weren't checking if we should continue handling
seeks/data decoding. Thus, we got to push_data_and_decode_some_frames()
without a decoder and crashed.

Instead, always skip an iteration of the thread loop when the suspend
finishes, so that the loop has a change to exit.
2026-02-09 09:04:21 +01:00
..
Audio Everywhere: Move the thread name parameter for Thread constructors 2026-01-26 15:51:46 -06:00
Color LibMedia: Remove default_code_points_if_unspecified() 2026-01-27 11:34:24 -06:00
Containers/Matroska LibMedia: Clear Matroska::SampleIterator's last timestamp at EOS 2026-02-06 13:28:09 +01:00
FFmpeg LibMedia: Dispose FFmpegDemuxer's tracks' format contexts 2026-01-30 16:40:21 -06:00
PlaybackStates LibMedia: Dispose future media data and flush decoders when idle 2026-01-26 15:49:07 -06:00
Providers LibMedia: Don't try to decode after destroying suspended data providers 2026-02-09 09:04:21 +01:00
Sinks LibMedia: Skip DisplayingVideoSink::update() if the provider is null 2026-01-30 16:58:38 +01:00
AudioBlock.h LibMedia: Create a channel map for audio blocks from decoders 2025-12-13 08:58:26 +01:00
AudioDecoder.h LibMedia: Allow signalling of EOF to decoders 2025-11-05 18:40:02 +01:00
CMakeLists.txt LibMedia: Dispose future media data and flush decoders when idle 2026-01-26 15:49:07 -06: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: Abort blocking reads for ongoing seek if it's replaced 2025-12-16 02:42:48 -06:00
Demuxer.h LibMedia: Only pass Demuxer to the data providers 2026-01-30 10:02:00 -06:00
Forward.h LibMedia: Abstract the interface of IncrementallyPopulatedStream 2026-01-30 10:02:00 -06:00
FrameFlags.h LibMedia: Store whether a CodedFrame is a keyframe 2025-10-27 17:28:49 -07:00
IncrementallyPopulatedStream.cpp LibMedia: Abstract the interface of IncrementallyPopulatedStream 2026-01-30 10:02:00 -06:00
IncrementallyPopulatedStream.h LibMedia: Abstract the interface of IncrementallyPopulatedStream 2026-01-30 10:02:00 -06:00
MediaStream.h LibMedia: Abstract the interface of IncrementallyPopulatedStream 2026-01-30 10:02:00 -06:00
PlaybackManager.cpp LibMedia: Only pass Demuxer to the data providers 2026-01-30 10:02:00 -06:00
PlaybackManager.h LibMedia: Dispose future media data and flush decoders when idle 2026-01-26 15:49:07 -06: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
TimedImage.cpp LibGfx+LibMedia: Send video frames to Skia as subsampled YUV 2026-01-22 19:44:36 +01:00
TimedImage.h LibGfx+LibMedia: Send video frames to Skia as subsampled YUV 2026-01-22 19:44:36 +01:00
Track.h LibMedia: Store a SampleSpecification in Track 2025-12-15 18:03:03 -06:00
TrackType.h LibMedia: Set Matroska "complex" tracks' types based on the codec 2025-11-21 16:51:58 -06:00
VideoDecoder.h LibGfx+LibMedia: Send video frames to Skia as subsampled YUV 2026-01-22 19:44:36 +01:00
VideoFrame.cpp LibGfx+LibMedia: Send video frames to Skia as subsampled YUV 2026-01-22 19:44:36 +01:00
VideoFrame.h LibGfx+LibMedia: Send video frames to Skia as subsampled YUV 2026-01-22 19:44:36 +01:00