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 795561 - Playbin3 pipeline is pending during prerolling
Playbin3 pipeline is pending during prerolling
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
1.14.0
Other Linux
: Normal major
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2018-04-26 05:02 UTC by HoonHee Lee
Modified: 2018-11-03 12:06 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
decodebin3: Send GAP event to downstream when it is not in ALL EOS state (3.22 KB, patch)
2018-04-26 05:06 UTC, HoonHee Lee
none Details | Review
Test Stream (3.50 MB, application/octet-stream)
2018-05-21 00:00 UTC, HoonHee Lee
  Details
Test Stream 2 (3.50 MB, application/octet-stream)
2018-05-21 00:01 UTC, HoonHee Lee
  Details
Test Stream 3 (3.50 MB, application/octet-stream)
2018-05-21 00:01 UTC, HoonHee Lee
  Details
Test Stream 4 (3.50 MB, application/octet-stream)
2018-05-21 00:02 UTC, HoonHee Lee
  Details
Test Stream 5 (3.50 MB, application/octet-stream)
2018-05-21 00:02 UTC, HoonHee Lee
  Details
Test Stream 6 (3.10 MB, application/octet-stream)
2018-05-21 00:02 UTC, HoonHee Lee
  Details
playbin3: Send GAP event to finish preroll when playsink is in asynchronous state (7.20 KB, patch)
2018-05-21 00:40 UTC, HoonHee Lee
none Details | Review

Description HoonHee Lee 2018-04-26 05:02:09 UTC
Dear All
 
Playbin3 pipeline is pending during trick play (flush seeking) with -2x.
 
All buffers come to decoder but, it is not pushed out to downstream even if EOS comes. And pipeline does not complete preroll state (seek-done).
   
I think below commit affects this symptom.
==> ce65017 decodebin3/urisourcebin: Switch to actual EOS events internally
Comment 1 HoonHee Lee 2018-04-26 05:06:15 UTC
Created attachment 371410 [details] [review]
decodebin3: Send GAP event to downstream when it is not in ALL EOS state
Comment 2 HoonHee Lee 2018-04-26 05:06:53 UTC
Dear All
 
To avoid this symptom, send GAP event to decoder.
 
Please review may patch.
 
Thanks.
Comment 3 Edward Hervey 2018-05-19 09:09:26 UTC
Do you have a test file that could reproduce this ? Or it happens with all sources/files ?
Comment 4 HoonHee Lee 2018-05-21 00:00:45 UTC
Created attachment 372256 [details]
Test Stream
Comment 5 HoonHee Lee 2018-05-21 00:01:17 UTC
Created attachment 372257 [details]
Test Stream 2
Comment 6 HoonHee Lee 2018-05-21 00:01:38 UTC
Created attachment 372258 [details]
Test Stream 3
Comment 7 HoonHee Lee 2018-05-21 00:02:04 UTC
Created attachment 372259 [details]
Test Stream 4
Comment 8 HoonHee Lee 2018-05-21 00:02:40 UTC
Created attachment 372260 [details]
Test Stream 5
Comment 9 HoonHee Lee 2018-05-21 00:02:56 UTC
Created attachment 372261 [details]
Test Stream 6
Comment 10 HoonHee Lee 2018-05-21 00:06:08 UTC
(In reply to Edward Hervey from comment #3)
> Do you have a test file that could reproduce this ? Or it happens with all
> sources/files ?

Hello Edward Hervery
Please attached test streams.
They are played without video in VLC and GStreamer v1.12.
I mean below patch is merged before.
==> ce65017 decodebin3/urisourcebin: Switch to actual EOS events internally
 
Thanks.
Comment 11 HoonHee Lee 2018-05-21 00:40:38 UTC
Created attachment 372262 [details] [review]
playbin3: Send GAP event to finish preroll when playsink is in asynchronous state
Comment 12 HoonHee Lee 2018-05-21 00:45:18 UTC
Hello Edward Hervery
 
It is not easy to detect when async-done should be finished for initial load, pause/resume, seek and trick.
 
This patch is temporary and to send gap event when async-start/done can not be finished under 250 ms.
 
Thanks.
Comment 13 Edward Hervey 2018-05-21 06:04:50 UTC
All those files you provided have MPEG-4 Video, and that seems to be the root cause. mpeg4videoparse never seems to get a proper config, and therefore drops everything without pushing anything.

I would much prefer we detect (and fix) such root cause issues instead of adding workarounds in decodebin3 (which as you realized isn't easy either :D ).

We definitely shouldn't hang like this. What should happen is that mpeg4videoparse (or baseparse) should detect that it isn't producing data and pushing GAP events downstream which ... then brings us to the other baseparse bug  : https://bugzilla.gnome.org/show_bug.cgi?id=791584
Comment 14 GStreamer system administrator 2018-11-03 12:06:20 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/444.