Topic: Digiface AVB: Presentation Time Offset

Hi all,

while I was working with a Digiface AVB and an M32-DA Pro sending audio from the Digiface to the M32 DA Pro, I wanted to adjust the Presentation Time Offset to 0.5 ms. I didn't look close enough at the dialog in the RME AVB Controller (which states nanoseconds as unit) and set it to 500 (assuming the unit was microseconds). This is of course way too short. I think, what somehow confused me were the "," used as digit group separator.

After changing the presentation time offset to this value neither the Digiface nor the M32 DA Pro complained. Audio was playing, but only every now and then I would hear some audio artifacts on the speakers connected to the M32 DA Pro. Neither the Digiface nor the M32 DA pro showed any error. Only after looking at Hive I was able to find the issue.

I found it interesting, that the M32 DA Pro kept playing audio, although all packets were too late. If the M32 DA pro would have refused to play audio after I made the change, I would have a clear indication, that I did something wrong. The intermittent audio artifacts had colleagues already telling me, that AVB would obviously not be as good as Dante, when it wasn't possible to operate it safely in such a situation. :-( This is bullsh*t, of course, but they had a point there.

Although this is clearly a user error (won't happen to me again), I would like to suggest a few changes to the dialog in the RME AVB Controller, to make it more robust and prevent such types of user errors:

  • the digit grouping separator should adhere to the system's locale.

  • let the user choose from a set of presets in a dropdown plus an option to set it manually.

  • show the entered value in milliseconds next to the input text field. Most audio folks probably are familiar with milliseconds for delays and such things.

  • This is probably controversial, but don't accept values below a certain value. Due to AVB's observation window, values smaller than 125 000 ns only work when two devices are connected directly to each other without a switch and when the aren't too many streams around. This would need really careful tuning and a user running Hive on the computer where the Digiface is connected to. When a switch comes into play, this value is increased by 0.125 ms per switch hop. With a switch in the path, MSRP accumulated latency is closer to 300 000 ns, e.g. Digiface AVB to Meyer Sound Galaxy 816 with an Extreme Networks X440-G2 is 287401 ns. By the way: when connecting the Digiface AVB directly to the GALAXY 816, the GALAXY reports an MSRP accumulated latency of 150 000 ns.

  • It might be helpful for users, that they can select, whether they are operating with two devices connected directly or through a switch and limit the selection in the dropdown accordingly.

Thanks
Arno

Re: Digiface AVB: Presentation Time Offset

Hello,

two things didn't work here.

You shouldn't have changed the value while the stream was running. The device should have returned an error -> "Stream running".

The device shouldn't have accepted the value because it cannot guarantee this time due to its structure. The stream would then not have come about. The packages are not immediately late. They are sent by the talker, the problem is that the route and the device itself cannot process the stream at this time.

The value is specified in the standard with nano seconds and it makes no sense to use a different scaling. They cannot increase the value indefinitely either. Otherwise the buffers will overflow or undercut if the value is too low.

Therefore, this value must not be changed while the stream is running. The stream must then be rebuilt to test the route whether this time is even possible.

Re: Digiface AVB: Presentation Time Offset

I would like to continue the thought again. The presentation time is not, as you might think, the one digital way of transmission. It is the time until the sample appears at the output.

This can differ between the devices with the same samplerate and stream format. To compensate for this, you can use the parameter to compensate within certain limits. With the talker, this can be influenced by the buffer length.

The time around which the time can be realized depends on the SRP. The switch decides whether a stream with these parameters is possible. The SRP implementation in the switch may be faulty.

Of course, the devices should not accept unrealizable parameters. Also, this parameter must never be changed while the stream is running!

In the IEEE 1722.1 there is a max_transit_time parameter, so you can set the maximum allowed time.

Re: Digiface AVB: Presentation Time Offset

Hi Arno,

thanks for reporting this!

arnog wrote:
  • the digit grouping separator should adhere to the system's locale.

  • let the user choose from a set of presets in a dropdown plus an option to set it manually.

  • show the entered value in milliseconds next to the input text field. Most audio folks probably are familiar with milliseconds for delays and such things.

  • This is probably controversial, but don't accept values below a certain value. Due to AVB's observation window, values smaller than 125 000 ns only work when two devices are connected directly to each other without a switch and when the aren't too many streams around. This would need really careful tuning and a user running Hive on the computer where the Digiface is connected to. When a switch comes into play, this value is increased by 0.125 ms per switch hop. With a switch in the path, MSRP accumulated latency is closer to 300 000 ns, e.g. Digiface AVB to Meyer Sound Galaxy 816 with an Extreme Networks X440-G2 is 287401 ns. By the way: when connecting the Digiface AVB directly to the GALAXY 816, the GALAXY reports an MSRP accumulated latency of 150 000 ns.

  • It might be helpful for users, that they can select, whether they are operating with two devices connected directly or through a switch and limit the selection in the dropdown accordingly.

All good and valid points! Indeed, we had the same thoughts a while ago and put some of it in the upcoming 12Mic/AVB Tool/M1610/M32 firmwares.
In the according web interface dialog, you will be able to select a unit of choice (including samples!), while the raw value will be shown for information next to it.

I agree that there is more we can do, especially since SRP (...and 1722.1 as a "proxy") already reports the maximum transit time (a thing which IP-based networks like Dante are not able to by design!).
We thought about the dropdown with 1-x switches as well but decided to leave it out for now, probably in favor for an auto-set function. Happy to hear your thoughts about that!

As soon as we have some feedback on these improvements we can probably migrate it to the Digiface UI as well.

Best regards
Marc

Re: Digiface AVB: Presentation Time Offset

Hi Marc,

thanks for your reply. Any indication to the user, that something probably won't work, is always good. :-)

Using the SRP transit time might be difficult to pull off, since this is "only" the transit time. As far as I know, this doesn't take into account how long it takes to process the frames on egress and ingress. This would probably need some kind of safety margin.

I will take a look at the implementation in the AVB Tool and report back.

Thanks
Arno

Re: Digiface AVB: Presentation Time Offset

All good and valid points! Indeed, we had the same thoughts a while ago and put some of it in the upcoming 12Mic/AVB Tool/M1610/M32 firmwares.
In the according web interface dialog, you will be able to select a unit of choice (including samples!), while the raw value will be shown for information next to it.

Just a quick note that the firmware Marc mentioned is now available as Release Candidate to test.

https://forum.rme-audio.de/viewtopic.php?pid=194220