[Bug 745539] New: Applying ts-offset to deadline timer can result in a stalled jitterbuffer.
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Tue Mar 3 07:59:37 PST 2015
https://bugzilla.gnome.org/show_bug.cgi?id=745539
Bug ID: 745539
Summary: Applying ts-offset to deadline timer can result in a
stalled jitterbuffer.
Classification: Platform
Product: GStreamer
Version: 1.4.1
OS: Linux
Status: NEW
Severity: normal
Priority: Normal
Component: gst-plugins-good
Assignee: gstreamer-bugs at lists.freedesktop.org
Reporter: jlitzinger at control4.com
QA Contact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Discovered in 1.4.1 but, based on code inspection, I see no reason it won't
happen in master.
Two scenarios illustrate the issue (assume no lost packets for simplicity),
retransmissions enabled.
1. Simple case: No upstream timestamping, so no expected timers are queued.
- First packet comes in, dts zero, deadline timer timeout is equal to the
latency. Because there are no expected timers, this is the only timer.
- wait_next_timeout() syncs on the deadline timer.
- SR comes in, resulting in a modification to ts-offset.
- Sync completes, wait_next_timeout() returns to the top of the loop and 'now =
latency'.
- When get_timeout() is called for the timer that was just used for sync, the
timeout value is now different (and wrong) because ts-offset is added.
- timer_timeout !< now (even though we just sync'd on this timer)
stuck
2. Upstream timestamping, expected timers are queued.
- First packet comes in, dts zero, deadline timer timeout is equal to the
latency. Because there are no expected timers, this is the only timer.
- wait_next_timeout() syncs on the deadline timer.
- Next packet comes in, sync on deadline is unscheduled. Best timer is now the
expected timer for the next packet (ok because latency has not been exceeded
yet).
- SR comes in, resulting in adjustment to ts-offset.
>From this point forward, EXPECTED timers will outrank the deadline timer until
the DTS on incoming packets exceeds the deadline timer's timeout (pretty sure
until ts-offset elapses).
--
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