Xilinx is now part ofAMDUpdated Privacy Policy
v-nova-tile

V-Nova LCEVC XSA – Throughput and Quality Enhanced Video Encoder

V-Nova LCEVC-XSA employs the MPEG-5 Part 2 Low-complexity enhancement video coding standard (LCEVC), a unique video encoding approach that significantly enhances the quality and throughput of any standard codec such as AVC/H.264, HEVC, VP8, VP9 and AV1.

Vendor: V-Nova

Last Update: March 22, 2021

Size: 1 GB

Container Version:

Alveo U50 vnova_lcevc_xsa_onprem_gpl_u50_20201:3.1.0.2
Alveo U200 vnova_lcevc_xsa_onprem_gpl_u200_20201:3.1.0.1
Alveo U250 vnova_lcevc_xsa_onprem_gpl_u250_20201:3.1.0.1

Try or Buy

Obtain an entitlement to evaluate or purchase this product.


Begin a free trial and run the application example below.

View and purchase available pricing plans for this application.


Deployment Options

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

On Premises
Alveo U50
View & Buy Product
  • Xilinx Runtime: 202010.2.6.655
  •   Target Platform: xilinx_u50_gen3x16_xdma_201920_3
Alveo U200
View & Buy Product
  • Xilinx Runtime: 202010.2.6.655
  • Target Platform: xdma-201830.2
Alveo U250
View & Buy Product
  • Xilinx Runtime: 202010.2.6.655
  • Target Platform: xdma-201830.2

Start Evaluation

Follow the instructions based on your deployment method.

Alveo U200/U250/U50

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 2020.1 -p alveo-u50
./host_setup.sh -v 2020.1 -p alveo-u200
./host_setup.sh -v 2020.1 -p alveo-u250

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 (U50/U200/U250)

    docker pull xilinxpartners/vnova_lcevc_xsa_onprem_gpl:alveo_u50_20201_3.1.0.2
docker pull xilinxpartners/vnova_lcevc_xsa_onprem_gpl:alveo_u200_20201_3.1.0.11
docker pull xilinxpartners/vnova_lcevc_xsa_onprem_gpl:alveo_u250_20201_3.1.0.1

3.3 FFmpeg distribution

GPL Licensing:

FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata. The FFmpeg distribution for LCEVC-XSA is GPL Licensed and the corresponding Linux binaries and libraries can be downloaded from: Contact V-Nova.


3.4 Run the Docker Image (Basic Mode)

Note:

Please ensure <path-to-ffmpeg-dir> contains the ffmpeg_lcevc executable before proceeding.

Please ensure <path-to-cred.json> contains your cred.json file before proceeding.

3.4.1. U50

    docker run -it --rm $XILINX_DOCKER_DEVICES -v <path-to-ffmpeg-dir>:/ffmpeg_dist:Z -v /dev/shm:/io:Z -v <path-to-cred.json>:/vnova_lcevc/cred.json:Z xilinxpartners/vnova_lcevc_xsa_onprem_gpl:alveo_u50_20201_3.1.0.2 x265 3840 2160 8000 1 1

3.4.2. U200

    docker run -it --rm $XILINX_DOCKER_DEVICES -v <path-to-ffmpeg-dir>:/ffmpeg_dist:Z -v /dev/shm:/io:Z -v <path-to-cred.json>:/vnova_lcevc/cred.json:Z xilinxpartners/vnova_lcevc_xsa_onprem_gpl:alveo_u200_20201_3.1.0.1 x265 3840 2160 8000 1 1

3.4.2. U250

    docker run -it --rm $XILINX_DOCKER_DEVICES -v <path-to-ffmpeg-dir>:/ffmpeg_dist:Z -v /dev/shm:/io:Z -v <path-to-cred.json>:/vnova_lcevc/cred.json:Z xilinxpartners/vnova_lcevc_xsa_onprem_gpl:alveo_u250_20201_3.1.0.1 x265 3840 2160 8000 1 1



Description of command arguments:

  • -v <path-to-cred.json>:/vnova_lcevc/cred.json:Z - Map local cred.json file : container cred.json file
  • -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
  • -it --rm - Run Docker in interactive mode and delete container after execution has completed (this allows execution exit when ‘q’ is pressed)
  • docker run ......... [codec] [width] [height] [bitrate] [use-lcevc-flag] [loop]
  • codec options => [x264, x265, qsv_h264, qsv_hevc, vp8, vp9, av1] 
  • e.g .docker run ...... x265 3840 2160 8000 1 -1 [loop input file indefinitely] 

3.5 Run the Docker Image (Advanced Mode)

Note:

Please ensure <path-to-ffmpeg-dir> contains the ffmpeg_lcevc executable before proceeding.

Please ensure <path-to-cred.json> contains your cred.json file before proceeding.

Please ensure /dev/shm contains your input video <some-video-file.yuv> before proceeding.

3.5.1. U50

    docker run -it --rm $XILINX_DOCKER_DEVICES -v <path-to-ffmpeg-dir>:/ffmpeg_dist:Z -v /dev/shm:/io:Z -v <path-to-cred.json>:/vnova_lcevc/cred.json:Z xilinxpartners/vnova_lcevc_xsa_onprem_gpl:alveo_u50_20201_3.1.0.2 -y -s 3840x2160 -pix_fmt yuv420p -vcodec rawvideo -r 60 -stream_loop 1 -i /io/<some-video-file.yuv> -c:v lcevc_hevc -base_encoder x265 -eil_params "accel_type=xilinx_xma;encoding_transform_type=dd;api_mode=asynchronous;baseEncType=x265;encoding_upsample=stergy;rate_control_mode=adaptiveratio;rc_bucket_duration_ms=4000;rc_bitrate_max_base_prop=0.875;rc_bitrate_base_prop=0.875;encoding_downsample_luma=lanczos3;encoding_downsample_chroma=larea3;rc_max_pcrf=35;rc_pcrf_base_prop=0.8;rc_pcrf_gop_length=120;rc_pcrf_min_bitrate=2000;rc_pcrf_base_rc_mode=cbr;encoding_step_width_loq_1_min=32767;bframes=3;preset=medium;encoding_mode=enhanced;residual_mode_priority_enabled=0;temporal_sw_modifier=-2;temporal_use_priority_map=0;temporal_cq_sw_multiplier=0;temporal_use_new_cost=0;temporal_use_temporal_type=0;encoding_adaptive_deadzone_enabled=1;lcevc_tune=disabled" -b:v 8000k -vsync 0 "/io/lcevc_x265_fpga.ts"

3.5.2. U200

    docker run -it --rm $XILINX_DOCKER_DEVICES -v <path-to-ffmpeg-dir>:/ffmpeg_dist:Z -v /dev/shm:/io:Z -v <path-to-cred.json>:/vnova_lcevc/cred.json:Z xilinxpartners/vnova_lcevc_xsa_onprem_gpl:alveo_u200_20201_3.1.0.1 -y -s 3840x2160 -pix_fmt yuv420p -vcodec rawvideo -r 60 -stream_loop 1 -i /io/<some-video-file.yuv> -c:v lcevc_hevc -base_encoder x265 -eil_params "accel_type=xilinx_xma;encoding_transform_type=dd;api_mode=asynchronous;baseEncType=x265;encoding_upsample=stergy;rate_control_mode=adaptiveratio;rc_bucket_duration_ms=4000;rc_bitrate_max_base_prop=0.875;rc_bitrate_base_prop=0.875;encoding_downsample_luma=lanczos3;encoding_downsample_chroma=larea3;rc_max_pcrf=35;rc_pcrf_base_prop=0.8;rc_pcrf_gop_length=120;rc_pcrf_min_bitrate=2000;rc_pcrf_base_rc_mode=cbr;encoding_step_width_loq_1_min=32767;bframes=3;preset=medium;encoding_mode=enhanced;residual_mode_priority_enabled=0;temporal_sw_modifier=-2;temporal_use_priority_map=0;temporal_cq_sw_multiplier=0;temporal_use_new_cost=0;temporal_use_temporal_type=0;encoding_adaptive_deadzone_enabled=1;lcevc_tune=disabled" -b:v 8000k -vsync 0 "/io/lcevc_x265_fpga.ts"

3.5.3. U250

    docker run -it --rm $XILINX_DOCKER_DEVICES -v <path-to-ffmpeg-dir>:/ffmpeg_dist:Z -v /dev/shm:/io:Z -v <path-to-cred.json>:/vnova_lcevc/cred.json:Z xilinxpartners/vnova_lcevc_xsa_onprem_gpl:alveo_u250_20201_3.1.0.1 -y -s 3840x2160 -pix_fmt yuv420p -vcodec rawvideo -r 60 -stream_loop 1 -i /io/<some-video-file.yuv> -c:v lcevc_hevc -base_encoder x265 -eil_params "accel_type=xilinx_xma;encoding_transform_type=dd;api_mode=asynchronous;baseEncType=x265;encoding_upsample=stergy;rate_control_mode=adaptiveratio;rc_bucket_duration_ms=4000;rc_bitrate_max_base_prop=0.875;rc_bitrate_base_prop=0.875;encoding_downsample_luma=lanczos3;encoding_downsample_chroma=larea3;rc_max_pcrf=35;rc_pcrf_base_prop=0.8;rc_pcrf_gop_length=120;rc_pcrf_min_bitrate=2000;rc_pcrf_base_rc_mode=cbr;encoding_step_width_loq_1_min=32767;bframes=3;preset=medium;encoding_mode=enhanced;residual_mode_priority_enabled=0;temporal_sw_modifier=-2;temporal_use_priority_map=0;temporal_cq_sw_multiplier=0;temporal_use_new_cost=0;temporal_use_temporal_type=0;encoding_adaptive_deadzone_enabled=1;lcevc_tune=disabled" -b:v 8000k -vsync 0 "/io/lcevc_x265_fpga.ts"

Description of command arguments:

  • -v <path-to-cred.json>:/vnova_lcevc/cred.json:Z - Map local cred.json file : container cred.json file
  • -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
  • -it --rm - Run Docker in interactive mode and delete container after execution has completed (this allows execution exit when ‘q’ is pressed)
  • -y - Overwrite output files without asking
  • -s WxH - Resolution of input
  • -pix_fmt - Pixel format of input file (yuv420p)
  • -c:v codec - FFmpeg LCEVC plugin used for encoding (options are, lcevc_h264, lcevc_hevc, lcevc_vp8, lcevc_vp9, lcevc_av1, which specifies LCEVC with a base codec)
  • -base_encoder codec - Host driver base encoder plugin (options are x264, x265, qsv_h264, qsv_hevc, vpx, av1)
  • -baseEncType codec - FPGA specific variable (options are x264, x265, vpx, av1) and must match codec specified above [e.g -c:v lcevc_h264 -base_encoder qsv_h264 -eil_params “baseEncType=x264”]. All three variables should be consistent in definition.
  • -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
  • -eil_params "params" - Prefix option for defining LCEVC encoder specific parameters
  • preset=value - eil_params Target quality, options are veryslow, slow, medium, fast, veryfast, ultrafast [x264, x265 and QSV codecs only]
  • quality=value  - eil_params Target quality, options are best, good, realtime [VP8, VP9, AV1 only (‘best’ option not supported for AV1)]
  • -b:v  - Specifies the encoding bit rate, e.g 4500k will encode at 4.5mbps
Note: See user guide for an extended description of LCEVC parameters

4.

Results

Once your job is complete, an “lcevc_x265_fpga.ts” 4K encoded sample will be available in "/dev/shm". You can use The LCEVC decoder on Microsoft Windows 10 to display it (H.264 and HEVC only). For VPx or AV1 please contact V-Nova.  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 LCEVC Decoder

https://www.microsoft.com/store/productId/9N9C2Z21XHL9

When running in Basic mode:

  • Copying/Hard link your file to "/dev/shm/input.yuv"
  • Note: Basic mode assumes the input file is named ‘input.yuv’

When running in Advanced mode:

  • Copying/Hard link your video file to “/dev/shm/<name of file>
  • Then specify on the command line by using the  -i option i.e. “-i /io/<name of file>