Re: [rohc] The discussion on slope(s)

Carsten Bormann <cabo@tzi.org> Thu, 02 December 2004 23:24 UTC

Received: from ietf-mx.ietf.org (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id SAA13597 for <rohc-web-archive@ietf.org>; Thu, 2 Dec 2004 18:24:00 -0500 (EST)
Received: from megatron.ietf.org ([132.151.6.71]) by ietf-mx.ietf.org with esmtp (Exim 4.33) id 1Ca0OT-0002J5-A1 for rohc-web-archive@ietf.org; Thu, 02 Dec 2004 18:29:52 -0500
Received: from localhost.localdomain ([127.0.0.1] helo=megatron.ietf.org) by megatron.ietf.org with esmtp (Exim 4.32) id 1CZyyj-0001ye-GK; Thu, 02 Dec 2004 16:59:09 -0500
Received: from odin.ietf.org ([132.151.1.176] helo=ietf.org) by megatron.ietf.org with esmtp (Exim 4.32) id 1CZyT5-00040g-TV for rohc@megatron.ietf.org; Thu, 02 Dec 2004 16:26:27 -0500
Received: from ietf-mx.ietf.org (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id QAA00817 for <rohc@ietf.org>; Thu, 2 Dec 2004 16:26:25 -0500 (EST)
Received: from imh.informatik.uni-bremen.de ([134.102.224.4] helo=informatik.uni-bremen.de) by ietf-mx.ietf.org with esmtp (Exim 4.33) id 1CZyYe-0007aB-91 for rohc@ietf.org; Thu, 02 Dec 2004 16:32:15 -0500
Received: from [IPv6:::1] (imh [134.102.224.4]) by informatik.uni-bremen.de (8.12.11/8.12.11) with ESMTP id iB2LQDvL022452; Thu, 2 Dec 2004 22:26:14 +0100 (MET)
In-Reply-To: <7B5AF06E216CB74DA8A5960A3181B5B82891B7@ajebe001.americas.nokia.com>
References: <7B5AF06E216CB74DA8A5960A3181B5B82891B7@ajebe001.americas.nokia.com>
Mime-Version: 1.0 (Apple Message framework v619)
Content-Type: text/plain; charset="US-ASCII"; format="flowed"
Message-Id: <CB699B02-44A8-11D9-951E-000A95DC4DB6@tzi.org>
Content-Transfer-Encoding: 7bit
From: Carsten Bormann <cabo@tzi.org>
Subject: Re: [rohc] The discussion on slope(s)
Date: Thu, 02 Dec 2004 22:26:14 +0100
To: zhigang.c.liu@nokia.com
X-Mailer: Apple Mail (2.619)
X-Virus-Scanned: by AMaViS/Sophos at informatik.uni-bremen.de
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 287c806b254c6353fcb09ee0e53bbc5e
Content-Transfer-Encoding: 7bit
Cc: Carsten Bormann <cabo@tzi.org>, rohc@ietf.org, ghyslain.pelletier@ericsson.com, lars-erik.jonsson@ericsson.com
X-BeenThere: rohc@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Robust Header Compression <rohc.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/rohc>, <mailto:rohc-request@ietf.org?subject=unsubscribe>
List-Post: <mailto:rohc@ietf.org>
List-Help: <mailto:rohc-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/rohc>, <mailto:rohc-request@ietf.org?subject=subscribe>
Sender: rohc-bounces@ietf.org
Errors-To: rohc-bounces@ietf.org
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 36c793b20164cfe75332aa66ddb21196
Content-Transfer-Encoding: 7bit

> As it is described in section 4.5.3 and other places in RFC
> 3095, TS_STRIDE is the factor by which an RTP Timestamp is
> downscaled before compression. Obviously, it cannot be 0 (zero).

Well, zero is not exactly prohibited, but then you couldn't send any 
other value than TS_OFFSET, which wouldn't be too useful.

> The wording of TS_STRIDE definition in section 2 is confusing
> and may be incorrectly interpreted as TS_STRIDE is always equal
> to the increase in TS value between two RTP packets with
> consecutive sequence number. This is not the intent of the
> specification. It is the compressor that decides whether TS
> scaling should be used and if yes, what is the best value of
> TS_STRIDE. See section 4.5.3 for information. How this is done
> is an implementation issue. However, an implementation must follow
> section 4.5.3, 4.5.6 and 5.7 on how to initialize, encode, and
> synchronize TS_STRIDE between the compressor and decompressor.

I hope we are all in agreement about this.

> Note: TS_STRIDE is not the same as slope described in section
> 5.5.1.2 and 5.7. Here, slope has the general meaning in mathematics.
> Namely, slope(X) equals the change of a non-SN field X between
> two packets divided by the change of SN field between the same
> two packets. It is one of the two parameters (the other one
> being offset) that define a linear function from SN to field X.
> The concept can also be visualized as a line, with SN being
> the horizontal coordinate and the field X being the vertical
> coordinate. For TS, this applies regardless whether it is scaled
> or not. In case the TS is scaled, the linear function (or equivalently
> its slope and offset) is from SN to the TS_SCALED.

This is the msg934 dynamic slope.

In 3095, some of this shines through in the description of R-mode, but 
in no other place.

I believe we are split between:
-- This is a mistake in the R-mode text
-- msg934 slopes only apply to R-mode (one quite logical conclusion 
from the text of 3095)
-- msg934 slopes apply to all headers that do not send a timestamp.

In the latter two cases some text from msg934 or equivalent would need 
to be retrofitted to the standard.

> Note: it should be clear from section 4.5.3 that when scale is
> used for TS, two steps are involved: 1) downscale of the
> original TS to TS_SCALED; and 2) compression of TS_SCALED.

Again, I hope we all agree on this part.

> The decompressor follows the reverse procedure with two steps.
> Following are two examples to further illustrate this.
>
> Example 1 (audio stream with TS_STRIDE = 160):
>
>             <------ String 1 ------>    <-- String 2 --->
> SN           11  12  13  14 ...   60    61    62    63 ...
> TS          200 360 420 580 ... 8040 16040 16200 16360 ...
> TS_SCALED     1   2   3   4 ...   50   100   101   102 ...
> TS_OFFSET    40  40  40  40       40    40    40    40 ...
> slope       <--------  1 ---------->    <----- 1 ------->
> offset      <-------- (-10)-------->    <----- (39) ---->

The problem with this picture is that it does not identify which of the 
packets are context-updating.
The way I read msg934, the intention of this proposal was to only 
compute slope from the points created by CRC-checked packets.

> Example 2 (video stream with TS_STRIDE = 3000):
>
>             <------ String 1 ------>  <-- String 2 --->
> SN            11   12   13 ...    25   26   27   28 ...
> TS          4000 4000 4000 ...  4000 7000 7000 7000 ...
> TS_SCALED      1    1    1 ...     1    2    2    2 ...
> TS_OFFSET   1000 1000 1000 ...  1000 1000 1000 1000 ...
> slope       <--------  0 ---------->  <----- 0 ------->
> offset      <--------- 1 ---------->  <----- 2 ------->
>
> Note: the default-slope(X) specified in section 5.7 is to be used
> by the compressor and decompressor to initialize the slope of the
> linear function from SN to field X. This is an optimization to
> save synchronization overhead at the beginning of an RTP packet
> stream. Namely, if the actual slope of X in the first string matches
> the default-slope(X), the compressor can enter SO state and send
> Type 0 packets once it is confident that one - instead of two in
> the normal case - packet carrying field(X) has been correctly
> decompressed by the decompressor. This is enough for the decompressor
> to determine the other parameter, i.e. offset, for the linear function
> from SN to X. After the fist string, the decompressor will update the
> linear function from SN to X depending on how many packets carrying
> field(X) have been correctly decompressed.

I'm not sure I understand this sentence.

After SN-60 and SN-61 (assuming both are context-updating), the msg934 
slope is 50.
(If SN-60 is not context-updating and SN-59 and SN-61 are 
context-updating, the slope is 25.
If neither SN-59 nor SN-60 is context-updating and SN-58 and SN-61 are 
context-updating, there is no msg934 slope and you cannot send -0 
headers if you assume msg934.)
Since you don't really know which of these actually arrived (even in 
R-mode, you must wait for the ACKs to arrive, and some these might even 
be lost), it will take a while before it is one again.
This is one of the reasons I'm not a great fan of msg934 slopes.

Gruesse, Carsten


_______________________________________________
Rohc mailing list
Rohc@ietf.org
https://www1.ietf.org/mailman/listinfo/rohc