Power Core - Stream Tuning
This topic describes what happens when a RAVENNA stream is connected to a receiver and how to adjust the stream tuning.
It may help to open the RAVENNA → Stream Destinations tab in the Power Core Web UI and the "System -> Definition → RAVENNA" parameters in the ON-AIR Designer. The Web UI page is shown below.
Overview
Each time a stream connects it goes through an automatic "tuning" process whereby a Time Offset is applied to compensate for network latency and jitter.
The Time Offset is calculated as follows:
Time Offset = Samples per Frame (packet size) + Path Delay + Jitter Reserve
where the Jitter Reserve is determined by the following ON-AIR Designer parameters:
Jitter Reserve = Time-Offset Base Margin + Time Offset Addition (for the Jitter Class) + Time Offset Addition (for the Path Delay Class)
Power Core supports five jitter classes, where Class 1 is for low-jitter devices (such as a Power Core), and Class 5 is for high-jitter devices (such as a R3LAY PC with a RAVENNA virtual sound card).
Similarly, there are five path delay classes, where Class 1 is for close network nodes (connected to the same switch), and Class 5 is for distant network nodes (passing through several switches or routers). The class allocation is dependent on the Jitter and Path Delay values measured by the receiver (and shown in the Stream Destinations Statistics area in the Web UI).
The resultant Jitter Class, Path Delay Class, Jitter Reserve and Time Offset values are all shown in the Stream Destinations List (in the Web UI).
Time Offset Example
The screenshots below illustrate the following example:
Time Offset (57) = Samples per Frame (48) + Path Delay (6) + Jitter Reserve (3)
The parameters are defined using the "System → Definition" (RAVENNA tab) in the ON-AIR Designer.
The resultant values in the Stream Destinations List look like this.
High Time Offset values mean high latency which may affect stream performance.
Retuning Streams
If changes are made to the network infrastructure after the initial tuning process, then the Jitter Class, Path Delay Class and Time Offset values may no longer be correct. In this instance, audio from the RAVENNA streams may be degraded or inaudible, and you should manually retune the streams. This can be done using the buttons on the right of the RAVENNA → Stream Destinations page:
- Retune - select this button to individually retune a stream.
- Retune All - select this button to retune all streams.
- Set Time Offset - this button allows manual entry of a Time Offset for a single selected stream. This is an advanced function which should only be used when instructed by Lawo Support personnel. Values entered using this button are cleared after every reboot.
The retuning process goes through three phases which are displayed on-screen (via the FSM column in the Stream Destinations Statistics area). The full sequence is described in the table below.
If audio on a selected stream was not previously present, it should be restored immediately. Once a value of 8 has been reached, retuning is complete and the stream's new Time Offset value is shown in the Stream Destinations List.
FSM value | Meaning |
---|---|
0 | RAV_RTCP_TUNE_INIT = 0 |
1 | RAV_RTCP_TUNE_WAIT |
2 | RAV_RTCP_TUNE_COARSE |
3 | RAV_RTCP_TUNE_FINE |
4 | RAV_RTCP_TUNE_CHECK_1, -> check results stage 1 |
5 | RAV_RTCP_TUNE_STATS_ACQ -> acquire |
6 | RAV_RTCP_TUNE_STATS_EVAL, -> evaluate |
7 | RAV_RTCP_TUNE_CHECK_2, -> check results stage 2 |
8 | RAV_RTCP_TUNE_FINISHED -> tuning value stored / finished |
If Power Core is NOT set to slave only in the PTP engine, then streams are retuned on every reconnect
Stream Tuning Options
The following options are supported by the ON-AIR Designer: defining a fixed Time Offset and defining Jitter in the SDP.
Defining a Fixed Time Offset
By configuring a "Logic → RAVENNA Static Stream" element, it is possible to define a fixed Time Offset using the Fixed Jitter Reserve field.
Once a non-zero value is entered, a fixed Time Offset is applied (instead of automatic or manual tuning). The value entered must include the path delay and desired minimum buffer margin as follows:
Fixed Jitter Reserve = Path Delay + minimum Buffer Margin.
The resulting Time Offset is then calculated from the configured value and the packet size of the incoming stream:
Time Offset = Samples per Frame (packet size) + Fixed Jitter Reserve
If you want to define a fixed playout time, you have to subtract the packet size from the fixed jitter reserve.
The screenshot below shows an example.
In the Stream Destinations List (in the Web UI), the Path Delay is displayed as 0 (as there is no measurement) and is included in the displayed Jitter Reserve.
You can tell whether a fixed Time Offset has been defined by the configuration or Web UI by looking at the Path Delay and Jitter Reserve fields.
- Path Delay = 0 and Jitter Reserve > 0 indicates that the ON-AIR Designer Fixed Jitter Reserve field is active (> 0).
- Path Delay = 0 and Jitter Reserve = 0 indicates that the Web UI Set Time Offset button has been used to set the offset.
If the Time Offset of a stream with a Fixed Jitter Reserve is changed via the Web UI, then it will be reset to the configured value (instead of automatic tuning) if late packets arrive repeatedly at the receiver.
Defining Jitter in the SDP Information
If the parameters "lawo-delay" and "lawo-jitter" are contained in a stream's SDP information, then Power Core measures only the Path Delay and not the Jitter. This allows you to keep the Time Offset Addition values low (for the Jitter Classes), while still connecting computer-based stream sources (such as R3LAY).
Start by measuring the jitter on the sending device (using a third-party tool), and enter the following parameters into the stream's SDP information:
a = lawo-delay: 2080
a = lawo-jitter: 4160
The SDP parameters must be defined in microseconds. The screenshot below shows an example.
In R3LAY the values can be configured using the ".ini" file as follows.
[DEBUG]
StreamLawoDelayMicrosecs = 2080
StreamLawoJitterMicrosecs = 4160
If Power Core receives a stream containing this SDP information, then only the Path Delay is measured and the Jitter Class is set to 0. This results in a single Time Offset Addition (for the Path Delay Class). In this instance, the Jitter Reserve is calculated as follows:
Jitter Reserve = lawo-delay (from SDP) + lawo-jitter (from SDP) + Time Offset Addition (for Path Delay Class)
The Time Offset is then calculated in the usual manner:
Time Offset = Samples per Frame (packet size) + Path Delay + Jitter Reserve
Streams that have been tuned using the new parameters are marked with a Jitter Class of 0 in the Stream Destinations List (in the Web UI).