[Bug 712645] New: Quering basesink with negative rate less then -1.0 returns invalid value
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Mon Nov 18 17:01:25 PST 2013
https://bugzilla.gnome.org/show_bug.cgi?id=712645
GStreamer | gstreamer (core) | 0.10.36
Summary: Quering basesink with negative rate less then -1.0
returns invalid value
Classification: Platform
Product: GStreamer
Version: 0.10.36
OS/Version: Linux
Status: UNCONFIRMED
Severity: major
Priority: Normal
Component: gstreamer (core)
AssignedTo: gstreamer-bugs at lists.freedesktop.org
ReportedBy: dmitri at toubelis.org
QAContact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
I'm working on a player application and it implements the following logic: it
stops the pipeline, queries current position and uses the position in the
following seek. I noticed that it works fine for most scenarios however, if I
do this query when pipeline is playing in reverse with -2.0 or lower rate
(-4.0, -8.0, etc.) then the query returns a bizarre value. For example: let's
assume that the duration of the stream is 10 and the pipeline is playing on a
segment from 3 to 0. If I perform position query at around 2 the query will
return 7. I tested the pipeline with a xvimagesink and fakesink - both are
exerting the same behavior. I did not have a chance to test this at rate -1.0.
I work with 0.10.36 release of GStreamer but I looked at the commit log in 0.10
branch of the repository and I couldn't see anything that may be relevant to
this issue in post release.
I also looked through the source code of gstbasesink.c and this code on lines
4718..4721 looks somewhat suspicious:
...
/* for negative rates we need to count back from the segment
* duration. */
if (rate < 0.0)
time += duration;
...
It is hard for me to grasp the entire position querying logic, so I wonder if
someone more knowledgeable could look at this issue.
--
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- 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