Subject: RTSP, FastFoward and FastReverse

From: "Steven Levi (CSD)" <[email-masked]>
Date: Wed, 16 Oct 1996 13:08:39 -0700

Currently,  there is no way to do Fast Forward (FF) or Fast 
Reverse (FR) in RTSP. One simple way to do this would be to
add a signed 32-bit "rate" field to the play range message.

This feature would be very useful for video playback. 

A positive rate implies  forward:  From -> To 
A negative rate implies  reverse:  To -> From 

This same field should be used to vary the rate of playback.
Consider the following scenario:  A client requests that a server
play content with a rate of 10.  The content happens to contain a
video stream with one keyframe per second.  The server could 
attempt to fulfill this request by delivering each key frame at 
a rate of 10 persecond or it could deliver them more sparsely
(e.g. every other key frame at a rate of 5 per second) depending
on the size of the key frames and bandwidth constraints imposed 
upon the server and client (I believe this is different than 
what SET_SPEED is intended for).

If we want to allow for fractional speeds (e.g. 10.5) we could 
define the rate "tick" to be based on some divisor (implicit 
or explicit) 

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-------------------------------+-------------------------------+
|                         tag (PLAY_RANGE)                      |
+-------------------------------+-------------------------------+
|                          From (in ms)                         |
+-------------------------------+-------------------------------+
|                           To (in ms)                          |
+-------------------------------+-------------------------------+
|                              Rate                             |
>+-------------------------------+-------------------------------+

---

From: Anup Rao <[email-masked]>
Date: Fri, 18 Oct 1996 12:36:04 -0700

> This feature would be very useful for video playback.

Absolutely. However, (as you have also pointed out below), we believe
this is a media specific property i.e the media itself may or may not be
conducive to allow this (type of) subsampling or upsampling. Further,
the server may or may not be up to performing this operation at a given
time. We see this being accomplished via the SetParam mechanism, and we
avoided defining this for RTSP-audio since it does not have any meaning
meaning. Also, it is a good idea that the transmitted data rate not
change at all for this operation.

Our attempt has been to put all the core properties of the realtime
stream in the control, and anything that does not apply to *all* media
streams in the family specific parameters/properties. An example of how
we see this being done is :

Family RTSP-video = 2.
Parameter = 1 : Format descriptor
Parameter = 2 : Video annotations
Parameter = 3 : SetSampleRate(n) for  up, SetSampleRate(1/n) for
slowdown.(Fractional rates also to be considered)

Client                         Server
fetch    --->
         <---               stream header

SetParam(SetSampleRate(5)) -->

         <-----             Reply or Refuse

PlayRange() ---->
           <-----            Data

        If the transmitted bandwidth changes even slightly,(for eg by
transmitting I frames only), the client should be informed of it in the
Reply. (Would strongly recommend that this possible change of rate
should be avoided by regulation at the server end)

        One might argue that this should belong in a message such as
play_range, as you have proposed. The downside of this is for some media
this has no meaning. Also, it would be a good idea to be able to query
the possibility(again via GetParam). We believe this mechanism is
inherently
more extensible, yet satisfies the requirements.

> A negative rate implies  reverse:  To -> From
        This should work fine.

Thank you very much for the input. We should probably  explain
some of this in the draft.

-- 
-----------------------------------------------------------------
  Anup Rao                                                      
  Netscape Communications Corp.  -  LiveMedia                   
  email : [email-masked]         Phone : (415) 937 3129       
-----------------------------------------------------------------