[Bug 765049] pad: Offset handling inconsistencies
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Thu Jul 7 10:39:18 UTC 2016
https://bugzilla.gnome.org/show_bug.cgi?id=765049
--- Comment #9 from Sebastian Dröge (slomo) <slomo at coaxion.net> ---
This commit fixes the failing test:
commit 528fbfe7c10fa63142a42d3f62dcd9d694527a17
Author: Sebastian Dröge <sebastian at centricular.com>
Date: Thu Jul 7 13:15:51 2016 +0300
funnel: Only forward sticky events on GAP events if needed
That is, if the active pad changed and if forwarding of sticky events is
requested at all. We otherwise forward events too often.
However it actually uncovered a problem in your patch. The problem is that in
gst_pad_push_event_unchecked() you always create a copy of the event (also only
do that if there is actually a pad offset). This means that every time the same
event goes through there, a new copy is made. And store_sticky_event() (on the
sink pad, the peer) then has gst_event_replace() return TRUE (it compares
pointers, which are different now), which then causes the
GST_PAD_FLAG_PENDING_EVENTS to be set.
Now the next time sticky events are sent, they are all sent because of that
flag. Which in the case of funnel meant on every GAP event for example.
(Also the apply_pad_offset() is not only for SEGMENT events but also for
others)
We could now either store the original and modified events all the time (and
invalidate the modified ones in various situations)... or somehow improve the
event comparison to not just look at the to-be-replaced pointer.
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list