Skip to content

Add port of unpack_and_2bcompress

Description

This MR vectorizes in NEON the functions below by porting the SSE4.1 version of the same algorithms:

  • svt_compressed_packmsb_c
  • svt_enc_msb_pack2_d
  • svt_unpack_and_2bcompress_c

The datasets for the 8 bit files can be sourced from:

wget http://ultravideo.fi/video/Bosphorus_3840x2160_120fps_420_8bit_YUV_Y4M.7z
wget http://ultravideo.fi/video/Bosphorus_1920x1080_120fps_420_8bit_YUV_Y4M.7z
wget https://ultravideo.fi/video/Bosphorus_3840x2160_120fps_420_10bit_YUV_RAW.7z

7za e Bosphorus_*.7z

chmod 0444 *
rm Bosphorus_Copyright* Bosphorus_*.7z

8bit-4k:

SvtAv1EncApp -i Bosphorus_3840x2160.y4m --output Bosphorus_3840x2160.mkv --tile-columns 1 --tile-rows 1

8bit-1080:

SvtAv1EncApp -i Bosphorus_1920x1080.y4m --output Bosphorus_1920x1080.mkv

10bit-4k-bare:

SvtAv1EncApp -i Bosphorus_3840x2160_120fps_420_10bit_YUV.yuv --output Bosphorus_3840x2160_120fps_420_10bit_YUV.mkv --input-depth 10 --width 3840 --height 2160 --tile-columns 1 --tile-rows 1 --frames 200

Performance improvement

filename preset crf e2e 3x encoding time
After Before Improvement
Bosphorus_3840x2160.y4m' 4 30 145.98 145.47 -0.35%
Bosphorus_3840x2160.y4m' 6 30 51.14 50.85 -0.57%
Bosphorus_3840x2160.y4m' 8 30 24.39 24.41 0.08%
Bosphorus_3840x2160.y4m' 10 30 11.28 11.25 -0.27%
Bosphorus_3840x2160.y4m' 12 30 7.50 7.53 0.40%
Bosphorus_3840x2160.y4m' 13 30 7.50 7.58 1.07%
Bosphorus_1920x1080.y4m' 4 30 69.80 69.94 0.20%
Bosphorus_1920x1080.y4m' 6 30 25.70 25.62 -0.31%
Bosphorus_1920x1080.y4m' 8 30 13.02 12.99 -0.23%
Bosphorus_1920x1080.y4m' 10 30 5.74 5.68 -1.05%
Bosphorus_1920x1080.y4m' 12 30 2.87 2.87 0.00%
Bosphorus_1920x1080.y4m' 13 30 2.41 2.41 0.00%
Bosphorus_1920x1080_120fps_420_8bit_YUV.y4m 4 30 179.72 181.45 0.96%
Bosphorus_1920x1080_120fps_420_8bit_YUV.y4m 6 30 46.41 45.88 -1.14%
Bosphorus_1920x1080_120fps_420_8bit_YUV.y4m 8 30 22.07 22.76 3.13%
Bosphorus_1920x1080_120fps_420_8bit_YUV.y4m 10 30 10.36 10.65 2.80%
Bosphorus_1920x1080_120fps_420_8bit_YUV.y4m 12 30 7.13 7.36 3.23%
Bosphorus_1920x1080_120fps_420_8bit_YUV.y4m 13 30 7.14 7.37 3.22%

Author(s)

@glpuga @rjcausarano

Performance impact

  • quality
  • memory
  • speed
  • 8 bit
  • 10 bit
  • N/A

Test set

  • obj-1-fast can be found here
  • other
  • N/A

Merge method

  • Allow the maintainer to squash and merge when PR is ready to create a 1-commit to the master branch. The maintainer will be able to fix typos / combine commit messages to create a more readable 1-commit message or use whatever is stated in the 'Description' section
  • I will clean up my commits and the maintainer shall use 'rebase and merge' to the master branch
Edited by Rodrigo Causarano

Merge request reports