compressed header size

Asked by Friedrich

Hi Didier,

I have two questions about the compressed header sizes obtained from V1.5.1 and V1.3.1.

1)
In my running of V1.5.1, the first four packets are at IR state, then the compressed header size of the rest packets keeps constant at 3 bytes. But in the running of V1.3.1 with the same setup, only the first THREE packets are at IR state. Do you know the reason why V1.5.1 needs one more IR header packet than V1.3.1 does?

V1.5.1: (timestamp_msec:size_bytes) 1263:38 1283:40 1303:40 1323:40 1343:3 1363:3 1383:3
V1.3.1: (timestamp_msec:size_bytes) 1263:38 1283:40 1303:40 1323:3 1343:3 1363:3 1383:3
(note: RTP packets are sent every 20ms in a talkspurt.)

Logs:
V1.5.1: http://pastebin.com/m53vp9Q4
V1.3.1: http://pastebin.com/2He9pUmy

2)
Also under the same setup, the packets at the following timestamps perform different between V1.5.1 and V1.3.1. V1.5.1 has larger compressed header sizes. What reasons may result in the difference?

V1.5.1: (timestamp_msec:size_bytes) 1463:12 1623:13 1783:13 1883:12 1903:12 1923:12 1943:12
V1.3.1: (timestamp_msec:size_bytes) 1463:4 1623:4 1783:4 1883:4 1903:3 1923:3 1943:3
(note: RTP packets are sent every 20ms in a talkspurt.)

Logs:
V1.5.1: http://pastebin.com/m53vp9Q4
V1.3.1: http://pastebin.com/2He9pUmy

Thanks!

Question information

Language:
English Edit question
Status:
Solved
For:
rohc Edit question
Assignee:
No assignee Edit question
Solved by:
Friedrich
Solved:
Last query:
Last reply:
Revision history for this message
Didier Barvaux (didier-barvaux) said :
#1

Friedrich,

> In my running of V1.5.1, the first four packets are at IR state,
> then the compressed header size of the rest packets keeps
> constant at 3 bytes. But in the running of V1.3.1 with the same
> setup, only the first THREE packets are at IR state. Do you know
> the reason why V1.5.1 needs one more IR header packet than
> V1.3.1 does?

Yes, it is expected at the very beginning of a stream. It was required to fix a problem with the initialization of TS_STRIDE.

> Also under the same setup, the packets at the following timestamps
> perform different between V1.5.1 and V1.3.1. V1.5.1 has larger
> compressed header sizes. What reasons may result in the difference?

The RTP TimeStamp (TS) of the stream is not regular (or it is but you lost one or more packets). You can see this in logs:

/common/ts_sc_comp.c:98 c_add_ts()] Timestamp = 1463
/common/ts_sc_comp.c:110 c_add_ts()] TS delta = 60
/common/ts_sc_comp.c:169 c_add_ts()] state SEND_SCALED
/common/ts_sc_comp.c:193 c_add_ts()] ts_stride calculated = 60
/common/ts_sc_comp.c:194 c_add_ts()] previous ts_stride = 20
/common/ts_sc_comp.c:221 c_add_ts()] /!\ TS delta changed but is a multiple of previous TS_STRIDE, so do not change TS_STRIDE, but retransmit it several times along all TS bits (probably a RTP TS jump at source)

To cope with TS irregularity (or packet loss) the ROHC compressor has to transmit more bits of TS. It is not performed in versions 1.3.x, but it was not robust enough. If you lose some packets with some specific patterns, the compressor and decompressor could lose sync. See https://bugs.launchpad.net/rohc/+bug/1080035

Regards,
Didier

Revision history for this message
Friedrich (hitlbs) said :
#2

Thanks, Didier.