Split ABR Encoding

Sept 2018

Note

As of v11 (v11.0.1.4 is what is being used in this document) it is possible to do Split ABR Encoding using both IP TS and SDI inputs.

Overview

When encoding ABR Profiles, there can be times when the number and complexity of profiles exceeds the capabilities of a single server, for example:

3840x2160p50@20Mbs
1920x1080p50@6Mbs
1920x1080p50@3Mbs
1280x720p50@2Mbs
1280x720p50@1.5Mbs
720x576p50@1Mbs
544x576p50@800Kbs
384x576P50@300Kbs

This profile list could not be produced by a single server (at the time of writing) and so two or three servers might be required, but as this is ABR, and all the profiles need to be I-Frame aligned, we need a way to achieve this.
To overcome this we can use Split ABR encoding, where we can use several servers to encode different parts of the profile list, but still aligned in time. For this to work we need the following:

Requirements

Servers must be time synchronised

A multicast is used for synchronisation, if using the MGMT port the MGMT switch must support multicasts.

Interfaces on all servers must be identical in name and operation (so if eth1 is the IP input, all servers must use the name eth1 for the interface, and it must be the input interface)

While it is possible to do this on appliances, it is much simpler to do this on a distributed system with a centralised Controller

This guide assumes you know how to create a standard ABR output service.

Create an ABR service as normal, but don't assign any servers to the configuration.

Once created, edit the configuration, and on the General Tab, add a Variant
for each server you will use (so if you require 3 servers to cover all your
profiles, add three variants)

While on the General Tab, under Synchronisation, click the Activate check box,
and fill out the multicast details:
Mode: All
Network Interface: (up to you, I use eth0)
Address: Use a unique Multicast
Port: Multicast Port

Navigate to the OUTPUTS page, where you created the streams for each multicast output

Edit the first output, and add the Variant name for this output. Depending on how you will
group your outputs, you will add a Variant for that server, so if your first three outputs
will be encoded by the first server, you will add the Variant name for that server.

Lets say I create three Variant names, because I have three servers, and I call them
UHD, HD, SubHD.Then I would use the following table to split my profiles across the three
servers.
3840x2160p50@20Mbs UHD
1920x1080p50@6Mbs HD
1920x1080p50@3Mbs HD
1280x720p50@2Mbs HD
1280x720p50@1.5Mbs HD
720x576p50@1Mbs SubHD
544x576p50@800Kbs SubHD
384x576P50@300Kbs SubHD
Note, this does not assign the server, you do that somewhere else.

Once all of the profiles have been assigned a Variant, you will see that Variants are
listed in all of the outputs.

Navigate back to the Service level, where you normally assign a server, and from here
each Server can be assigned to each Variant. Remember, a Variant may cover several
profiles, so your Variant list will only be as long as the number of servers that
are being used.

In the following example, I have two Servers, a G6 and a G8. The G8 will do a single UHD
Profile, and the G6 will do my HD Profiles. Two Servers means I only need two Variants.
All I have to do is map the right server to the right Variant.

Sync Alarm

If you see this alarm, or similar
Timestamps synchronization messages are not being received or are not synchronize for service=2f73015aa94040ceb39b3cbffa37d2e3;;sdt=SplitABRTest
If everything is configured okay, and you are using SDI input, SDI sync is not supported before around v10.3, so check your Encoding Live version.