I've written a video player in C++ (Qt 4.8.4) which uses Gstreamer 0.10 and the Freescale aiurdemux plugin 3.0.7. It's running on Timesys' BSP for the Nitrogen6X board, Linux version 3.0.35-ts-armv7l. CPU: i.MX6Q, 1GB RAM. Videos are being played from an attached 1TB SATA 2.5" drive. The video format I'm using is MPEG-2 TS (transport stream) and encoded using H.264.
I'm trying to add fast-forward and rewind functions to the player and notice some strange intermittent behavior. When I increase the playback speed to 4 (fast-forward) or -4 (rewind), much of the time the player works fine. But sometimes I get the following error from Gstreamer:
GStreamer-CRITICAL **: gst_segment_set_seek: assertion `start <= stop' failed
This is happening when I'm trying to return to the normal playback speed of 1. I've checked my start and stop values and they are fine so I shouldn't be seeing this assertion error. When I get this error, the video continues at its current playback speed of 4 or -4. After repeated attempts of changing the playback speed, Gstreamer will eventually return to a rate of 1.
My code for changing playback speed is based on this Gstreamer tutorial: http://docs.gstreamer.com/display/GstSDK/Basic+tutorial+13%3A+Playback+speed
I've looked through the Gstreamer mailing list and someone mentioned this error is a bug but that was back in 2011. I would think it has been fixed by now...
Any ideas why this happens and how to fix it?