After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 622807 - [decodebin2] Doesn't recover properly after an error
[decodebin2] Doesn't recover properly after an error
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal major
: 0.10.30
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2010-06-26 15:54 UTC by Edward Hervey
Modified: 2010-06-26 17:04 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
decodebin2: Properly clean DecodeChain after errors. (1.35 KB, patch)
2010-06-26 15:57 UTC, Edward Hervey
committed Details | Review

Description Edward Hervey 2010-06-26 15:54:57 UTC
If an error happens while pre-rolling decodebin2 will never reach the PAUSED state.

If someone re-uses decodebin2/uridecodebin/playbin to play multiple files (like totem does), this will cause the READY=>PAUSED code-path to never be called after an error... and therefore the decode chain never being freed, and the following time it will re-use the existing demuxer/decoder (which obviously fails completely).
Comment 1 Edward Hervey 2010-06-26 15:57:25 UTC
Created attachment 164687 [details] [review]
decodebin2: Properly clean DecodeChain after errors.

If an error happens, the PAUSED state will never be reached. If an
application re-uses decodebin2 (like totem) where one would normally
set to READY between each file, the cleanup that normally happens in
the PAUSED=>READY codepath will never be called, resulting in the
following file to re-use the previous demuxer/decoder/...
Comment 2 Sebastian Dröge (slomo) 2010-06-26 16:07:39 UTC
Yes, that should go in
Comment 3 Edward Hervey 2010-06-26 17:02:49 UTC
Attachment 164687 [details] pushed as ec63758 - decodebin2: Properly clean DecodeChain after errors.