V-Nova LCEVC XDE/XSA

v-nova-tile

V-Nova LCEVC XDE/XSA

V-Nova LCEVC XDE/XSA is the industry’s first highly optimized software library for encoding and decoding enhanced video streams with MPEG-5 Part 2, low-complexity enhancement video coding.

Vendor: V-Nova

Last Update: January 23, 2020

Size: 942 MB

Container Version: pplus_u200_v1.0

Try or Buy

Obtain an entitlement to evaluate or purchase this product.


Begin a free trial and run the application example below.


Deployment Options

This application is containerized and can be easily run in a few minutes in the cloud, or on-premises.

On Premises
Alveo U200
View & Buy Product
  • Xilinx Runtime: 2019.1
  • Target Platform: xdma-201830.2

Start Evaluation

Follow the instructions based on your deployment method.

Alveo U200

1.

Obtain an Account Access Key

An access key is required to authenticate a user and grant them access to the application based on their entitlements.  To obtain your account access key, follow these steps:

  • Login to the Xilinx App Store Portal
  • Click the button labeled "Manage Account" to view entitlements.
  • Click the "Access Key" link on the left side menu
  • Click the "Create an Access Key" button.
  • Download the resulting file "cred.json" to the location ABC

Note:  The resulting access key will enable all entitlements within your account.  If you have not yet obtained entitlements from the "TRY OR BUY" section above, you must do so before following these steps for generating your access key.


2.

Host Setup

The Xilinx Runtime (XRT) host application is supported on Ubuntu 16.04 /18.04 and CentOS 7.x.  With sudo access, use the following command to download and run the setup script:


2.1 Clone GitHub Repository for Xilinx Base Runtime

    git clone https://github.com/Xilinx/Xilinx_Base_Runtime.git && cd Xilinx_Base_Runtime

2.2 Run the Host Setup Script

    ./host_setup.sh -v 2019.1 -p alveo-u200

Note:

  • Please wait for the installation to complete.  During this time you may need press [Y] to continue the host setup.
  • If you choose to flash the FPGA, you will need to cold reboot the local machine after the installation is completed to load the new image on the FPGA.
  • The script for host setup can be used to setup other versions XRT and shell. Please check https://github.com/Xilinx/Xilinx_Base_Runtime for more details.

Install Docker (If not installed yet)

With sudo access, use the following command to run the utility script to install docker.


2.3 Go to Xilinx_Base_Runtime utilities directory

    cd Xilinx_Base_Runtime/utilities

2.4 Run the Docker installation script

    ./docker_install.sh

3.

Application Execution

Enter the following commands in a terminal window to run the application:

3.1 Setup Environment Variables by script from Xilinx_Base_Runtime

    source Xilinx_Base_Runtime/utilities/xilinx_docker_setup.sh

3.2 Pull the Docker Image

    docker pull hubxilinx/vnova_pplus_alveo_u200:ppxde-demo

3.3 Run the Docker Image

    docker run -v /tmp/cred.json:/vnova_pplus/cred.json:Z -v /dev/shm:/io:Z $XILINX_DOCKER_DEVICES hubxilinx/vnova_pplus_alveo_u200:ppxde-demo -y -s 3840x2160 -pix_fmt yuv420p -vcodec rawvideo -stream_loop 3 -r 60 -i /samples/sample_3840x2160_8bit_P420.yuv -c:v pplusenc_hevc -base_encoder ngcodec_sdx_hevc -eil_params "accel_type=xilinx_xma;encoding_transform_type=dd;temporal_enabled=0;temporal_use_refresh=0;api_mode=asynchronous;baseEncType=ngcodec;xclbinHasNGC=1;encoding_downsample_luma=area;encoding_upsample=cubic;rate_control_mode=variableratio;rc_bucket_duration_ms=2000;encoding_step_width_model=v1;encoding_step_width_min_qp=41;bitrate_max_base_prop=0.8;bitrate_base_prop=0.8;perseus_mode=robust;qp_min=30;xma_config=/vnova_pplus/SystemCfg_194.yaml" -b:v 8000k "/io/output.ts"

Description of command arguments:

  • -v /tmp/cred.json:/vnova_pplus/cred.json:Z - Map local cred.json dir : container dir
  • -v /dev/shm:/io:Z - Map the local dir : container dir for input &  output file
  • $XILINX_DOCKER_DEVICES - Environment variable set by the host setup script
  • -y  - Overwrite output files without asking
  • -s WxH - Resolution of input
  • -pix_fmt - Pixel format of input file (yuv420p)
  • -c:v codec - Codec used for encoding (For this demo, pplusenc_hevc, which specifies LCEVC with a HEVC base codec)
  • -base_encoder codec  - Code used for the base (ngcodec_sdx_hevc specifies the HEVC encoder from Xilinx-NGCodec running on the FPGA)
  • -stream_loop - Specifies the number of times to loop over the input file during encodes, set to -1 for infinite
  • -i  -  Location of input file to be encoded
  • -b:v  - Specifies the encoding bit rate, e.g 4500k will encode at 4.5mbps

 


4.

Results

Once your job is complete, an “output.ts” 4K HEVC encoded sample will be available in "/dev/shm". You can use The Perseus decoder on Microsoft Windows 10 to display it.  You will need to install these 2 apps:

  • HEVC extension app: 

https://www.microsoft.com/en-us/store/p/hevc-video-extension/9n4wgh0z6vhq

  • V-Nova Perseus Decoder: 

https://vnovaltd.sharepoint.com/:f:/s/CustomerSuccess/CSMPublic/EgV4kmFWu7VOjltA7Eg-iPQBx4jOEyZ_Dl9IGXf6aCWf6Q?e=Tv7tpE

Password: Vnova@UWP

You can now use your own input video file by:

  • Copying your file in "/dev/shm/{YourFileName}"
  • Replacing "-i /samples/sample_3840x2160_8bit_P420.yuv" with "-i /data/{YourFileName}" in the docker run command