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 707238 - videomixer: Broken EOS handling
videomixer: Broken EOS handling
Status: RESOLVED WONTFIX
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-09-01 17:34 UTC by Mathieu Duponchelle
Modified: 2016-01-17 17:31 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
First patch addressing the bug (893 bytes, patch)
2013-09-03 22:30 UTC, Mathieu Duponchelle
none Details | Review
Updates the patch (908 bytes, patch)
2013-09-03 22:43 UTC, Mathieu Duponchelle
committed Details | Review

Description Mathieu Duponchelle 2013-09-01 17:34:34 UTC
According to Sebastian on irc, videomixer was supposed to fill until the segment stop when all collectpads were EOS.

The problem is there is no hint of such a code in videomixer, which makes me wonder if somebody removed that or what. The code in fill_queues seems needlessly complicated, and videomixer doesn't even realize all its collectpads are EOS in certain cases.

I could fix it if I knew what we actually wanted. From my point of view, if we decide that we want videomixer to "fill the void", we should at least have a property to either disable that, or tell it to use the last computed frame instead of the background. Our use case (editing) really doesn't work well with black frames :)

I'll wait for opinions before further development.
Comment 1 Sebastian Dröge (slomo) 2013-09-02 11:08:39 UTC
Indeed there is no code that "fills the void". Instead it goes EOS as soon as all pads are EOS or if we're beyond segment.stop. What's the case where it doesn't do this for you?


I think the default behaviour should be to fill the segment until the end. If segment.stop is -1 it should stop as soon as all streams are EOS. Having a property to optionally EOS as soon as possible if all streams are EOS instead of waiting for the segment to end sounds ok too.


So few things to do here:
1) Fix the bug you noticed
2) Let videomixer fill the segment
3) Have property to disable that
Comment 2 Mathieu Duponchelle 2013-09-02 11:18:06 UTC
OK I'll do that thanks :)
Comment 3 Mathieu Duponchelle 2013-09-03 22:30:22 UTC
Created attachment 254022 [details] [review]
First patch addressing the bug

It doesn't make sense, if the pad is indeed EOS, to set EOS to FALSE in that part of the loop.
Comment 4 Mathieu Duponchelle 2013-09-03 22:43:00 UTC
Created attachment 254023 [details] [review]
Updates the patch

Ooops I was on friend's computer, here is the real commit sorry :)
Comment 5 Sebastian Dröge (slomo) 2013-09-04 09:09:38 UTC
Comment on attachment 254023 [details] [review]
Updates the patch

True, now this just leaves the other problem(s) mentioned in this bug
Comment 6 Tim-Philipp Müller 2016-01-16 17:44:54 UTC
Does any of this apply to videoaggregator/compositor as well?

If not, I'd suggest to resolve as WONTFIX or OBSOLETE.
Comment 7 Mathieu Duponchelle 2016-01-17 17:31:51 UTC
We can close this yes, I'll close as WONTFIX as the bug still exists in videomixer2, anyone reading this should consider using compositor if they have thread safety issues with videomixer2 (or even if they don't)