Because the fullscreen video sink (autovideosink) takes the whole screen estate anyway and it doesn't make much sense to have the webkitvideosink rolling if it's not visible
The current video sink pipeline is essentially like: ----- webkitvideosink tee --| ----- fullscreenvideosink right? So there are two possibilities here. Either you only link in the required sink when it's required or you add a "do nothing" mode to the sinks where they get the buffers but don't display them. Linking only when required is probably the cleaner and better solution but requires some work. You have to add an element before the tee (or a data/event probe on the tee's sinkpad) to keep track of the currently configured segment, running time, etc. And then when linking in the new sink you have to tell the sink about the segment and the running time via multiple newsegment events (details follow when you need them). Also you have to use pad-blocks for the re-linking, otherwise stuff will explode because the tee is not linked anywhere.
I had some success adding identity before webkitvideosink and dropping the buffers when required. So the video appears paused in the webkitvideosink while autovideosink in fullscreen works fine. When I close the fullscreen window I configure identity to let buffers pass through again. I agree this is probably not the best solution though ;)
(In reply to comment #1) > The current video sink pipeline is essentially like: > > ----- webkitvideosink > tee --| > ----- fullscreenvideosink > > right? > Well I add the fullscreen videosink (autovideosink) only when required (enterFullscreen) and I remove it during exitFullscreen().
(In reply to comment #3) > Well I add the fullscreen videosink (autovideosink) only when required (enterFullscreen) and I remove it during exitFullscreen(). And you don't get any interesting problems with QoS or A/V sync or warnings about missing newsegment events?
(In reply to comment #4) > (In reply to comment #3) > > Well I add the fullscreen videosink (autovideosink) only when required (enterFullscreen) and I remove it during exitFullscreen(). > > And you don't get any interesting problems with QoS or A/V sync or warnings about missing newsegment events? In enterFullscreen() I get the current position, format, rate, start/stop values and create a new-segment event that I push to the new tee srcpad. Haven't noticed issues yet, IIRC you reviewed that code :)
Created attachment 72660 [details] proposed patch
Comment on attachment 72660 [details] proposed patch I tested that patch and it works like a charm.
Comment on attachment 72660 [details] proposed patch Seems reasonable.
Committed r72679: <http://trac.webkit.org/changeset/72679>
I meant http://trac.webkit.org/changeset/72680 :)