GNOME Bugzilla – Bug 601853
identity: sync=true ignores pipeline latency and does not present itself as live element
Last modified: 2015-04-27 16:30:47 UTC
identify sync=true should take into account the latency from previous elements. So it should implement the latency query and remember what went through there.
There is much wrong with sync in identity. When it syncs it should present itself as a live element (NO_PREROLL) then only sync in playing (and block data in paused). Then it could interecept the latency event and use it.
Created attachment 302037 [details] [review] identity: Handle PTS and DTS separately I'm not sure if this is correct for the single-segment handling, but I'm pretty sure sync should happen on the DTS if possible.
Created attachment 302038 [details] [review] identity: Take upstream latency into account for sync=1
Created attachment 302039 [details] [review] identity: With sync=true, don't pre-roll To act like a real live element, block the streaming when paused, and return NO_PREROLL.
Created attachment 302040 [details] [review] identity: Also synchronize GAP events in sync=1
Looks fine at first glance. I'd say put it in. Should the query func take 'ret' from chaining up into account? Obligatory bikeshedding: call the func _do_sync() like basesink? :)
Created attachment 302267 [details] [review] identity: Take upstream latency into account for sync=1 Now check if the upstream query worked, ignore the values if it didn't and claim that it now did.
Created attachment 302268 [details] [review] identity: Also synchronize GAP events in sync=1 Now with more _do_sync!
Comment on attachment 302039 [details] [review] identity: With sync=true, don't pre-roll g_cond_signal() would be enough here, no need to broadcast ;)
commit d1620f1c2edd6e4f9803f327c1d12a46e8be2bbf Author: Olivier Crête <olivier.crete@collabora.com> Date: Mon Apr 20 20:02:51 2015 -0400 identity: Also synchronize GAP events in sync=1 https://bugzilla.gnome.org/show_bug.cgi?id=601853 commit 5ea338907c2038111e3a731003282937450ab208 Author: Olivier Crête <olivier.crete@collabora.com> Date: Mon Apr 20 19:31:37 2015 -0400 identity: With sync=true, don't pre-roll To act like a real live element, block the streaming when paused, and return NO_PREROLL. https://bugzilla.gnome.org/show_bug.cgi?id=601853 commit 7807296afd2a8a77d2a734386263789fe39358f2 Author: Olivier Crête <olivier.crete@collabora.com> Date: Mon Apr 20 19:24:45 2015 -0400 identity: Take upstream latency into account for sync=1 https://bugzilla.gnome.org/show_bug.cgi?id=601853 commit f2992654ca82d85dd5a1b2249abf76b5a2fc446f Author: Olivier Crête <olivier.crete@collabora.com> Date: Mon Apr 20 19:07:27 2015 -0400 identity: Handle PTS and DTS separately https://bugzilla.gnome.org/show_bug.cgi?id=601853