server-side reverse playback issue i am facing

Fateh SABAH sabah.fateh at gmail.com
Thu Jul 16 04:58:14 PDT 2015


Hi,

In my current implementation of an gstreamer demuxer plugin i am facing
some trickmode support issues

I red Sebastain Dröge gstreamer trick mode support power-point document and
also gstreamer design part-trickmodes.txt, part-synchronisation.txt and
implemented things as said there but still have a problem only with reverse
playback mode.

when the seek event is received, my element asks the server to switch to
reverse playback with the given segment.rate.
because the server do the actual job and sends only Key Frames with
increasing timestamps going from 0 to, let say, 10s in order to be played
at x1 (normal playback). and as indicated in part-trickmodes.txt for server
side trick modes, I tried the following:

Segment event:
a segment event is created using  *SEGMENT.applied_rate* set to the actual
rate and *SEGMENT.rate* set to 1.0 and is sent before start sending buffers
in the same thread (streaming thread).

Media buffers:
then I tried to to modify buffers timestamps as follow:
 1 - the received timestamps are transformed to go backward starting from
segment.stop to segment.start
 2-  the received timestamps are transformed to go forward starting from
segment.stop

the result is that the video freezes and the stream position (stream time)
continue forward! as said in part-trickmodes.txt stream position should go
back to SEGMENT.start

for fastforward, setting segment.applied_rate set to the rate and
segment.rate set to 1.0 and translating timestamps to start from
segment.start  allowed to play successfully the scaled stream

is there anything else to set. when setting segment.applied_rate to the
server rate and segment.rate to 1.0, should I update the other fields ?
from where timestamps should start and stop.

*in part-synchronisation.txt it is said that:*

running time:

B.running_time = (B.timestamp - (S.start + S.offset)) / ABS (S.rate) + S.base


stream time:

stream_time = (B.timestamp - S.start) * ABS (S.applied_rate) + S.time


but for server side trick mode when setting S.rate == 1.0 and S.applied_rate
== -2,  B.running_time is going backward! since B.timestamp

is going backward from S.stop to S.start

could you confirm

also, is there any possible workaround or any other maner to get this working?



Thanks a lot for your help

Fateh,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20150716/fbaf4820/attachment-0001.html>


More information about the gstreamer-devel mailing list