Configure Advantech Vega-accelerated encoding for Wowza Streaming Engine on Linux

Wowza Streaming Engine 4.7.8 or later supports hardware-accelerated encoding on Advantech Vega cards. With this workflow, you can encode both H.264/AVC and H.265/HEVC content. This article describes how to use the ServerListenerAdvantechVega server listener and the advantechVegaDeviceModes property to configure Wowza Streaming Engine to use an Advantech Vega 3310 card. 

Notes:
  • Wowza Streaming Engine version 4.7.8 or later is required.
  • Wowza Streaming Engine must be installed on Linux server to support the Advantech Vega cards.
  • The current implementation only supports hardware-accelerated encoding with Advantech Vega cards. All decoding and scaling must be performed on other hardware (if available) or in software.
  • We've only tested the Advantech Vega 3310 card with Wowza Streaming Engine 4.7.8. It's possible that other Advantech Vega 331x-series cards will also work, but support is unconfirmed.

Make the Advantech Vega card accessible to Wowza Streaming Engine

  1. On the server with the Advantech Vega cards, install the Advantech Vega driver and update the Advantech card's BIOS as needed.
  2. Download and install the Linux 64-bit installer for Wowza Streaming Engine 4.7.8 (or later).
  3. Download the Advantech Vega components, unzip the package, and then copy and paste the files into the Wowza Streaming Engine [install-dir]/lib
  4. Copy the contents of lib-native/linux64 and paste them into the Wowza Streaming Engine [install-dir]/lib-native/linux64.

Configure Wowza Streaming Engine to use the Advantech Vega card

  1. Add the ServerListenerAdvantechVega server listener. 
    This server listener includes a transcoder load balancer that maps transcoded streams to the M30 device channels. Note that the transcoder load balancer always tries to map a given transcoder stream to the smallest available device channel. If the load balancer encounters a transcoder stream for which there is no available channel, it will disable the video for that stream. All activity of acquiring and releasing device channels for encoding is logged.
    To add the server listener, in the [install-dir]/conf directory, open the Server.xml file in a text editor. Add the ServerListenerAdvantechVega server listener to the bottom of the <ServerListeners> container. 
    <ServerListener>
    	<BaseClass>com.wowza.wms.plugin.advantechvega.serverlistener.ServerListenerAdvantechVega</BaseClass>
    </ServerListener>

  2. Add the advantechVegaDecideModes property.
    This property specifies the modes, in a pipe-separated ( | ) list,  to use for each M30 device in your media server. However, you don't have to specify a mode for each device. For example, if you want to use the same mode for all of your M30 devices or you want to specify unique modes for a couple of devices and then use another mode for the rest, you can specify only one or two modes. The last mode in the list is used for all cards in excess of the number of modes specified.
    Notes: Each Advantech Vega card has two M30 devices. When using this property, you are specifying the mode to use for each device, not each card. That means for a single card, you may want to list two modes.
    Add the advantechVegaDeviceModes property to the <Properties> container at the bottom of the Server.xml file, using a pipe ( | ) to delineate each mode specified.
    <Property>
        <Name>advantechVegaDeviceModes</Name>
        <Type>string</Type>
        <Value>16CH-SEQUENCE|8CH-720P|4CH-1080P</Value>
    </Property>

    The following mode values are valid:

    • 1CH-4K2K - Maximum resolution is 4096x2160, 60fps. Only 1 channel is allowed.
    • 4CH-1080P - Maximum resolution is 1920x1080, 60fps. A maximum of 4 channels allowed.
    • 8CH-720P - Maximum resolution is 1280x720, 60fps. A maximum of 8 channels allowed.
    • 8CH-MIXING - Maximum resolution is 1920x1080 30fps in progressive or 60fps in interlace. A maximum of 8 channels allowed.
    • 16CH-SD - Maximum resolution is standard definition. A maximum of 16 channels allowed.
    • 16CH-SEQUENCE - Maximum resolutions are ordered in a sequence from large to small (CH0-CH3:1080P, CH4-CH7:720P, CH8-CH15:SD). A maximum of 16 channels allowed.
    • 16CH-720P-MIXING - Maximum resolution is 1280x720, 30fps. A maximum of 16 channels allowed.
    In the example above, there are at least two cards installed in the media server, and the M30 devices are set as follows. 
    • Card 0 device 0: 16CH-SEQUENCE
    • Card 0 device 1: 8CH-720P
    • Card 1 device 0: 4CH-1080P
    • Card 1 device 1: 4CH-1080P
    In this case, any additional devices would also be set to 4CH-1080P because it's the last mode specified in the list.
  3. Save your changes to the Server.xml file.
  4. Restart Wowza Streaming Engine for your changes to take effect.