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 658846 - Playbin2 pipeline stuck while prerolling if decoder is missing
Playbin2 pipeline stuck while prerolling if decoder is missing
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal blocker
: 0.10.36
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2011-09-12 17:42 UTC by Josep Torra Valles
Modified: 2011-09-19 09:55 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
play*:5 gstreamer log (19.51 KB, text/x-log)
2011-09-12 17:42 UTC, Josep Torra Valles
  Details
GStreamer debug log *:5 (284.26 KB, application/octet-stream)
2011-09-12 21:17 UTC, Josep Torra Valles
  Details
Patch the partially fixes the issue (3.80 KB, patch)
2011-09-15 11:16 UTC, Josep Torra Valles
rejected Details | Review

Description Josep Torra Valles 2011-09-12 17:42:14 UTC
Created attachment 196289 [details]
play*:5 gstreamer log

Using latest git in gst-uninstalled with core, base, good, bad, ugly,no ffmpeg and faad plugin available and no h264 decoder

gst-launch-0.10 playbin2 uri=file:///..myclip.mp4

Where clip is quicktime, one h264 and one aac streams

The pipeline doesn't finish preroll.
Comment 1 Tim-Philipp Müller 2011-09-12 17:49:34 UTC
In cases like this, please just make *:5 logs and let people grep for themselves, much easier for everyone involved :)
Comment 2 Josep Torra Valles 2011-09-12 21:17:58 UTC
Created attachment 196310 [details]
GStreamer debug log *:5

Here it is. Sorry I need more practice submitting bugs.
Comment 3 Josep Torra Valles 2011-09-13 22:16:10 UTC
Changed state back to unconfirmed.
Comment 4 Tim-Philipp Müller 2011-09-13 22:41:38 UTC
Can reproduce, marking as blocker for now, since it looks like a regression.
Comment 5 Josep Torra Valles 2011-09-15 11:16:04 UTC
Created attachment 196607 [details] [review]
Patch the partially fixes the issue

The attached patch partially fixes the issue as it now moves to playing.

But it doesn't post the message for the missing decoder as h264parse src pads are not fixed and it just discards the stream. I'm not sure on how properly fix this part.

The factory list filtering part should replace the code in connect_pad that was used to avoid connecting 2 parsers in a row. But maybe it should just check with the last added element to the chain and I'm not sure if only considering parsers.
Comment 6 Sebastian Dröge (slomo) 2011-09-15 11:41:47 UTC
Can you explain why this fixes this problem and what exactly was the cause for not prerolling?
Comment 7 Josep Torra Valles 2011-09-15 12:50:51 UTC
When at connect_pad the h264parse was trying to be skipped it was the only element on the factory list.

I moved the code to avoid connecting two elements in a row to the analyze_pad part by filtering the candidate factories.

Which in the second attempt to plug h264parse will generate an empty factory list that will be handled by the code following the filtered list.

I've added a check for !fixed caps in order to post or not the message due a critical but I'm not sure on which is the desired behavior in this case.

My patch is just an starting point don't take it as written in stone, but I've the gut feeling that checking for already existing factory in the chain early in the analize_pad should be better than later in connect_pad.

I've also noticed that the return value of connect_pad is not checked which maybe should be.
Comment 8 Sebastian Dröge (slomo) 2011-09-19 09:55:06 UTC
commit 936e87cdcfe766c4ebf9186f722de1278dae950c
Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
Date:   Mon Sep 19 11:53:02 2011 +0200

    decodebin2: Fix non-prerolling pipelines and not-linked errors if a parser is available but no decoder
    
    Fixes bug #658846.