mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
804f65e6db
The problem that happens is the following: * A packet with multiple payloads comes in * Those payloads get handled one by one * The first payload contains the first audio payload with timestamp A * The second payload contains the first video (key)frame with timestamp V (where V < A) With the previous code, the following would happen: * the first payload gets processed, then passed to queue_for_stream * queue_for_stream detects it's the first valid timestamp received and stores first_ts = A * the second payload gets processed, then pass to queue_for_stream * queue_for_stream detects the timestamp is lower than first_ts... and discards it... resulting in losing the first keyframe of the video stream We've been having this issue for *ages*... it's just that nobody noticed it that much with playbin. But with playbin2's aggresive multiqueue handling, this will result in multiqueue not being able to preroll (because the video decoder will be dropping a ton of buffers before (maybe) receiving the next keyframe). Tested with over 200 asf files, and they all play the first frame correctly now, even the most braindead ones. |
||
---|---|---|
.. | ||
ac3parse | ||
asfdemux | ||
dvdlpcmdec | ||
dvdsub | ||
iec958 | ||
mpegaudioparse | ||
mpegstream | ||
realmedia | ||
synaesthesia | ||
Makefile.am |