Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Video Encoding > New and alternative video codecs

Reply
 
Thread Tools Search this Thread Display Modes
Old 28th January 2021, 08:05   #381  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
Problem with TIFF_DISABLE_DEPRECATED
Code:
tiffdec.cc: In member function 'WP2Status {anonymous}::TIFFData::Alloc(tsize_t, WP2::LogLevel)':
tiffdec.cc:127:20: warning: 'uint32' is deprecated [-Wdeprecated-declarations]
  127 |     bytes = (uint32*)_TIFFmalloc((tsize_t)size);
      |                    ^
In file included from ../libtiff/tiffio.h:32,
                 from tiffdec.cc:30:
../libtiff/tiff.h:84:38: note: declared here
   84 | typedef TIFF_MSC_DEPRECATED uint32_t uint32 TIFF_GCC_DEPRECATED;
      |                                      ^~~~~~

Last edited by Jamaika; 28th January 2021 at 09:38.
Jamaika is offline   Reply With Quote
Old 29th January 2021, 22:08   #382  |  Link
skal
Registered User
 
Join Date: Jun 2003
Posts: 126
Quote:
Originally Posted by Jamaika View Post
Problem with TIFF_DISABLE_DEPRECATED
Code:
tiffdec.cc: In member function 'WP2Status {anonymous}::TIFFData::Alloc(tsize_t, WP2::LogLevel)':
tiffdec.cc:127:20: warning: 'uint32' is deprecated [-Wdeprecated-declarations]
  127 |     bytes = (uint32*)_TIFFmalloc((tsize_t)size);
      |                    ^
In file included from ../libtiff/tiffio.h:32,
                 from tiffdec.cc:30:
../libtiff/tiff.h:84:38: note: declared here
   84 | typedef TIFF_MSC_DEPRECATED uint32_t uint32 TIFF_GCC_DEPRECATED;
      |                                      ^~~~~~
Thanks for noticing, it should (hopefully) be fixed in 9533dae
skal is offline   Reply With Quote
Old 30th January 2021, 11:16   #383  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
Code:
]tiffdec.cc: In member function 'virtual WP2Status WP2::ImageReaderTIFF::ReadFrame(bool*, uint32_t*)':
tiffdec.cc:165:39: error: cannot convert '{anonymous}::MyData*' to 'thandle_t' {aka 'thandle_t__*'}
  165 |         TIFFClientOpen("Memory", "r", &my_data, MyRead, MyRead, MySeek, MyClose,
      |                                       ^~~~~~~~
      |                                       |
      |                                       {anonymous}::MyData*
In file included from tiffdec.cc:30:
../libtiff/tiffio.h:452:13: note:   initializing argument 3 of 'TIFF* TIFFClientOpen(const char*, const char*, thandle_t, TIFFReadWriteProc, TIFFReadWriteProc, TIFFSeekProc, TIFFCloseProc, TIFFSizeProc, TIFFMapFileProc, TIFFUnmapFileProc)'
  452 |             thandle_t,
      |             ^~~~~~~~~
libwebp2-9533dae
libtiff-2dc86648
Jamaika is offline   Reply With Quote
Old 2nd February 2021, 08:31   #384  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
New codecs Febuary 2021
https://github.com/libjpeg-turbo/lib...0b9e267f1cf2f6
https://gitlab.com/wg1/jpeg-xl/-/com...e6a2dab40ec0b8
https://github.com/google/brotli/com...84de1c653e39e2
https://github.com/google/highway/co...744a50b96aaaca
https://chromium.googlesource.com/co...99c78a14cd7315
https://chromium.googlesource.com/we...87ac78244f0b57
https://skia.googlesource.com/skcms/...cf2f331ca2057f
https://github.com/webmproject/sjpeg...642a6fdc401382
https://aomedia.googlesource.com/aom...cfd645093395b1
https://chromium.googlesource.com/co...d3927a2bb8aa8a
https://github.com/videolan/dav1d/co...a1b2671067faca
https://github.com/AOMediaCodec/liba...6b4869847bab72
https://github.com/glennrp/libpng/co...4b0666549b18e6
https://github.com/madler/zlib/commi...44df991c499252
https://gitlab.com/libtiff/libtiff/-...baacb646cb9044
https://github.com/lvandeve/lodepng/...79b1d9f0d12292
https://github.com/meganz/mingw-std-...12d7b1cc8a470d
https://github.com/AcademySoftwareFo...bbde8f91870fa0
https://github.com/AcademySoftwareFo...e33c7a0952ba5d
https://github.com/strukturag/libhei...dcfc5a911c3807
https://github.com/strukturag/libde2...afa8eccb4b4e9a
https://bitbucket.org/multicoreware/...4eee4caa472878
https://gitlab.com/standards/HDRTool...aac7f18f449a8a
https://vcgit.hhi.fraunhofer.de/jvet...6e2f63d85a0efc

https://www.sendspace.com/file/uiywkd

av1enc.exe -q 100 -444 -size 1563x1558 -effort 5 -thread 4 image_21447_24bit.png -d image_21447_24bitw.av1
Code:
Assertion failed: cm->lf.lfm != NULL, file loopfiltermask.c, line 392
My mistake #define CONFIG_LPF_MASK 1

Last edited by Jamaika; 2nd February 2021 at 20:06.
Jamaika is offline   Reply With Quote
Old 2nd February 2021, 15:40   #385  |  Link
skal
Registered User
 
Join Date: Jun 2003
Posts: 126
Quote:
Originally Posted by Jamaika View Post
[code]]tiffdec.cc: In member function 'virtual WP2Status WP2::ImageReaderTIFF::ReadFrame(bool*, uint32_t*)':
tiffdec.cc:165:39: error: cannot convert '{anonymous}::MyData*' to 'thandle_t' {aka 'thandle_t__*'}
(...)
Thanks for the report, should be fixed in cf5abfa3
skal is offline   Reply With Quote
Old 2nd February 2021, 20:00   #386  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
Quote:
Originally Posted by skal View Post
Thanks for the report, should be fixed in cf5abfa3
Thanks. Let's say almost okay.

Hi skal
How do I set up the proper decode and add definitions from libgav1?
Can libgav1 be added together with libaom?
Code:
#ifdef WP2_HAVE_AOM
#include "aom/aom_decoder.h" // CONFIG_AV1_DECODER
#include "aom/aom_encoder.h" // CONFIG_AV1_ENCODER 
#include "aom/aomcx.h" // CONFIG_AV1_ENCODER
#include "aom/aomdx.h" // CONFIG_AV1_DECODER

#if defined(WP2_HAVE_AOM_DBG)
#include "aom/aomstats.h"
// to benefit from these, one should build libaom using the config:
//  cmake ../ -DCONFIG_ACCOUNTING=1 -DCONFIG_INSPECTION=1
#include "av1/common/common_data.h"
#include "av1/decoder/accounting.h"
#include "av1/decoder/inspection.h"
#endif  // defined(WP2_HAVE_AOM_DBG)

// libgav1 can be used as decoder instead of libaom
#if defined(WP2_HAVE_LIBGAV1)
#include "gav1/gav1/decoder.h"
#include "gav1/gav1/status_code.h"
#endif  // defined(WP2_HAVE_LIBGAV1)

#include "stopwatch.h"

#if !defined(WP2_HAVE_WEBP)
#error "WEBP support is required by WP2_HAVE_AOM"
#else
#include "libwebp/webp/decode.h"
#include "libwebp/webp/encode.h"
#endif  // !defined(WP2_HAVE_WEBP)

#endif  // WP2_HAVE_AOM
Code:
#ifndef AOM_CONFIG_H_
#define AOM_CONFIG_H_
#define ARCH_ARM 0
#define ARCH_MIPS 0
#define ARCH_PPC 0
#define ARCH_X86 0
#define ARCH_X86_64 1
#define CONFIG_ACCOUNTING 1
#define CONFIG_ANALYZER 0
#define CONFIG_AV1_DECODER 0
#define CONFIG_AV1_ENCODER 1
#define CONFIG_AV1_HIGHBITDEPTH 1
#define CONFIG_AV1_TEMPORAL_DENOISING 0  // cmake encoder av1_temporal_denoiser.c
#define CONFIG_BIG_ENDIAN 0
#define CONFIG_BITSTREAM_DEBUG 0
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0 // error info printf
#define CONFIG_COLLECT_COMPONENT_TIMING 0
#define CONFIG_COLLECT_PARTITION_STATS 0
#define CONFIG_COLLECT_RD_STATS 0
#define CONFIG_DEBUG 0 // info printf
#define CONFIG_DENOISE 0 // cmake encoder
#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 0  // cmake
#define CONFIG_DIST_8X8 0
#define CONFIG_ENTROPY_STATS 0
#define CONFIG_GCC 0
#define CONFIG_GCOV 0
#define CONFIG_GPROF 0
#define CONFIG_INSPECTION 1
#define CONFIG_INTERNAL_STATS 0
#define CONFIG_INTER_STATS_ONLY 0
#define CONFIG_LIBYUV 0
#define CONFIG_LPF_MASK 0 // cmake common loopfiltermask.c, error with libwebp2
#define CONFIG_MAX_DECODE_PROFILE 2
#define CONFIG_MISMATCH_DEBUG 0
#define CONFIG_MULTITHREAD 1
#define CONFIG_NN_V2 0
#define CONFIG_NORMAL_TILE_MODE 0 // cmake decoder obu.c
#define CONFIG_OPTICAL_FLOW_API 0
#define CONFIG_OS_SUPPORT 0
#define CONFIG_PIC 0
#define CONFIG_RD_DEBUG 0
#define CONFIG_REALTIME_ONLY 0
#define CONFIG_RT_ML_PARTITIONING 0
#define CONFIG_RUNTIME_CPU_DETECT 0
#define CONFIG_SHARED 0
#define CONFIG_SHARP_SETTINGS 0
#define CONFIG_SIZE_LIMIT 1
#define CONFIG_SPATIAL_RESAMPLING 0 // cmake
#define CONFIG_SPEED_STATS 0
#define CONFIG_TUNE_VMAF 0
#define CONFIG_USE_VMAF_RC 0
#define CONFIG_WEBM_IO 0
#define DECODE_HEIGHT_LIMIT 16384
#define DECODE_WIDTH_LIMIT 16384
#define FORCE_HIGHBITDEPTH_DECODING 0
#define HAVE_AVX 0
#define HAVE_AVX2 0
#define HAVE_DSPR2 0
#define HAVE_FEXCEPT 0
#define HAVE_MIPS32 0
#define HAVE_MIPS64 0
#define HAVE_MMX 0
#define HAVE_MSA 0
#define HAVE_NEON 0
#define HAVE_PTHREAD_H 0
#define HAVE_SSE 0
#define HAVE_SSE2 0
#define HAVE_SSE3 0
#define HAVE_SSE4_1 0
#define HAVE_SSE4_2 0
#define HAVE_SSSE3 0
#define HAVE_UNISTD_H 0
#define HAVE_VSX 0
#define HAVE_WXWIDGETS 0
#define INLINE inline __attribute__((always_inline))
#endif  // AOM_CONFIG_H_
-DWP2_HAVE_JPEG -DWP2_HAVE_GIF -DWP2_HAVE_PNG -DWP2_HAVE_TIFF -DWP2_HAVE_WEBP -DWP2_HAVE_AVIF -DWP2_HAVE_AOM -DWP2_HAVE_AOM_DBG -DWP2_HAVE_LIBGAV1
-DAVIF_CODEC_AOM -DNAVIF_CODEC_AOM_DECODE -DAVIF_CODEC_AOM_ENCODE -DAVIF_CODEC_LIBGAV1
-DLIBGAV1_THREADPOOL_USE_STD_MUTEX=1 -DLIBGAV1_MAX_BITDEPTH=10

https://chromium.googlesource.com/co...c5d55693394ae3
https://aomedia.googlesource.com/aom...ca487c9366281f

https://www.sendspace.com/file/9j76wv

New Nokia Heif codec

https://github.com/nokiatech/heif/co...1a5db116b863ab
https://github.com/jamestut/heif-dec...61ba45b3e6610c
https://github.com/kane601/heic2jpg/...1f12d11f9cde7c
https://github.com/yohhoy/heic2hevc/...2afc193b5c4408
https://github.com/crb912/heic2jpeg/...24123892394f2c

Nokia Heif codecs, just like Cineform, are just plug-ins with which an amateur can't do much.
Speaking of cineform, it is included in ffmpeg, but nokia heif has no decoders for Windows.
We can compile, but it won't work.

Last edited by Jamaika; 8th February 2021 at 07:41.
Jamaika is offline   Reply With Quote
Old 9th February 2021, 10:33   #387  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
https://github.com/libjpeg-turbo/lib...0b9e267f1cf2f6
https://gitlab.com/wg1/jpeg-xl/-/com...e6a2dab40ec0b8
https://github.com/google/brotli/com...84de1c653e39e2
https://github.com/google/highway/co...744a50b96aaaca
https://chromium.googlesource.com/co...3c2ed1c65e728b
https://chromium.googlesource.com/we...d404aba2b9d8b5
https://skia.googlesource.com/skcms/...cf2f331ca2057f
https://github.com/webmproject/sjpeg...642a6fdc401382
https://aomedia.googlesource.com/aom...89a27c461cc879
https://chromium.googlesource.com/co...7e6aae8038f217
https://github.com/videolan/dav1d/co...59da1b27170b28
https://github.com/AOMediaCodec/liba...99f05bcba7a87e
https://github.com/glennrp/libpng/co...4b0666549b18e6
https://github.com/madler/zlib/commi...44df991c499252
https://gitlab.com/libtiff/libtiff/-...761c37055ac28d
https://github.com/lvandeve/lodepng/...79b1d9f0d12292
https://github.com/meganz/mingw-std-...12d7b1cc8a470d
https://github.com/AcademySoftwareFo...dbe910a84d85d5
https://github.com/AcademySoftwareFo...53af365f230d9d
https://github.com/strukturag/libhei...dcfc5a911c3807
https://github.com/strukturag/libde2...afa8eccb4b4e9a
https://bitbucket.org/multicoreware/...f2f11ea69e8460
https://gitlab.com/standards/HDRTool...ac6d9e997bb354
https://vcgit.hhi.fraunhofer.de/jvet...62b9da0206ecb2

https://www.sendspace.com/file/608jor

Don't use:
av1enc.exe -avif -q 100 -alpha_q 100 -444 -size 1563x1558 -effort 5 -thread 4 image_21447_32bit.png -d image_21447_32bitw.avif
ewp2.exe image_21447_48bit.png -v -depth 12 -q 100 -nometadata -effort 5 -444 -csp 0 -o image_21448_48bit.wp2
av1enc.exe -libgav1 image_21447_24bitw.av1 -d image_21448_24bit.wp2

Last edited by Jamaika; 9th February 2021 at 10:35.
Jamaika is offline   Reply With Quote
Old 9th February 2021, 10:58   #388  |  Link
skal
Registered User
 
Join Date: Jun 2003
Posts: 126
Quote:
Originally Posted by Jamaika View Post
Thanks. Let's say almost okay.

Hi skal
How do I set up the proper decode and add definitions from libgav1?
Can libgav1 be added together with libaom?

(...)
You can define these (for instance: -DWP2_HAVE_AOM_DBG -DWP2_HAVE_AOM -I/path/to/aom -I/path/to/aom/build -L/path/to/aom/build ...), but they are only used by the tool 'rd_curve' which compares codecs.

The rest of the library doesn't need them, so there's no real need to try to make them compile (esp. since you need a specially compiled libaom with the slow diagnostic tools activated...).

Thanks for building the binaries, btw!
skal is offline   Reply With Quote
Old 9th February 2021, 15:40   #389  |  Link
skal
Registered User
 
Join Date: Jun 2003
Posts: 126
Quote:
Originally Posted by Jamaika View Post
(...)
Don't use:
ewp2.exe image_21447_48bit.png -v -depth 12 -q 100 -nometadata -effort 5 -444 -csp 0 -o image_21448_48bit.wp2
(...)
The misunderstanding here (it seems) is that -depth, -444 and -420 only apply when generating a y4m file (not a .wp2).

This has been clarified at e6a5b3ac22, where these options have been explicitly renamed '-y4m_depth', etc. There's only a warning now if they are misused...
skal is offline   Reply With Quote
Old 9th February 2021, 20:24   #390  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
Thanks for update
I thought these were the downscaling options for PNG. Y4M files don't need size or color space information. I think it should be YUV (rawvideo).
libheif can convert 48bit PNG to 10/12bit SDR

Problem with quality
cwp2.exe image_21447_24bit.png -summary -q 100 -nometadata -mt -effort 5 -uv_mode 2 -csp 0 -o image_21448_24bit.wp2
Why is viewer info showing quality 75?

Decoding dav1d 16bit not recommended (SDR)
16bit PNG -> 12bit HEIF -> 8bit input DAV1D -> 16bit PNG

heifenc.exe image_21447_48bit.png -v -L -q 100 -b 12 --no-alpha -p preset=placebo --matrix_coefficients=0 -p chroma=444 --full_range_flag=1 -o image_21447_36bit.heic
heifdec_16bit.exe image_21447_36bit.avif image_21447_48bita.png

Last edited by Jamaika; 10th February 2021 at 10:23.
Jamaika is offline   Reply With Quote
Old 11th February 2021, 22:06   #391  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
Test GIMP 2.99.4 decoding

Problem with decoding heif/avif
av1enc.exe -avif -q 100 -444 -size 1563x1558 -effort 5 -thread 4 image_21447_24bit.png -d image_21447_24bitw.avif
color range limited 24bit
av1enc.exe -avif -q 100 -alpha_q 100 -444 -size 1563x1558 -effort 5 -thread 4 image_21447_32bit.png -d image_21447_32bitw.avif
color range limited 24bit
av1enc.exe -avif -q 100 -444 -size 1563x1558 -effort 5 -thread 4 image_21447_48bit.png -d image_21447_36bitw.avif
color range limited 24bit

Last edited by Jamaika; 11th February 2021 at 22:13.
Jamaika is offline   Reply With Quote
Old 12th February 2021, 16:08   #392  |  Link
skal
Registered User
 
Join Date: Jun 2003
Posts: 126
Quote:
Originally Posted by Jamaika View Post
to 10/12bit SDR

Problem with quality
cwp2.exe image_21447_24bit.png -summary -q 100 -nometadata -mt -effort 5 -uv_mode 2 -csp 0 -o image_21448_24bit.wp2
Why is viewer info showing quality 75?
vwp2 will recompress the input by default (even if it's already a wp2).

You can use the '-d' option to just display a wp2 input, without the recompression tools.

(vwp2 -d image_21448_24bit.wp2)

I've made the message clearer in vwp2 at 416b4898c1
skal is offline   Reply With Quote
Old 13th February 2021, 10:40   #393  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
Some codec bugs fixed.
I did not find the players jpegxl, webp2, avif, heif, htjpeg2000 codecs correctly playing.
I think now we should see what these projects will be next year.
https://www.sendspace.com/file/4hqsxi
Jamaika is offline   Reply With Quote
Old 14th February 2021, 13:17   #394  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
WIC viewer programs that cann't be compiled into gcc.
https://github.com/webmproject/webp-wic-codec
https://github.com/team-charls/jpegls-wic-codec
https://github.com/mirillis151/jpegxl-wic
Jamaika is offline   Reply With Quote
Old 19th February 2021, 08:14   #395  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
Open source for amateurs 19022021
https://www.sendspace.com/file/glk2vm

New codecs 20022021
https://www.sendspace.com/filegroup/...nDcMFIgKB%2BJm

Last edited by Jamaika; 20th February 2021 at 11:58.
Jamaika is offline   Reply With Quote
Old 25th February 2021, 21:46   #396  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
New codec Jpeg XL 0.3.2-5175d117
https://www.sendspace.com/file/tw58ui

Only with Jamaika. Library libheif/avif with new aom 2.0.2-8de6aba + tune butteraugli for jpeg + integrated jpegxl.

heifenc.exe image_21447_420.jpg -v -A -L -q 100 --no-alpha -p chroma=420 -p tune=butteraugli -p speed=5 --full_range_flag=0 -o image_21447_24bit.avif

https://www.sendspace.com/file/vkvwzp

Last edited by Jamaika; 26th February 2021 at 09:49.
Jamaika is offline   Reply With Quote
Old 1st March 2021, 09:40   #397  |  Link
Marsu42
Huba Huba
 
Marsu42's Avatar
 
Join Date: Aug 2005
Location: Palumbian Jungle
Posts: 80
Quote:
Originally Posted by Jamaika View Post
Only with Jamaika
Thanks for keeping us updated with binaries!

Edit: Could you please prefix the zip archives with a date like 210228_jpegxl-whatever.zip? Otherwiese it's easy to get confused because sometimes you release entire packs, sometimes only specific encoders.
__________________
"The innocent have nothing to fear" :stupid:

Last edited by Marsu42; 1st March 2021 at 09:43.
Marsu42 is offline   Reply With Quote
Old 2nd March 2021, 08:52   #398  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
New codec 02032021

Jpeg XL 5175d117 NONE / SSE4.1 / AVX2 / AVX3
https://www.sendspace.com/file/et42nq


VVEncoderApp 0.3.0-0f0f08f
https://www.sendspace.com/file/eo7vvt

Last edited by Jamaika; 2nd March 2021 at 21:58.
Jamaika is offline   Reply With Quote
Old 2nd March 2021, 18:04   #399  |  Link
Balling
Registered User
 
Join Date: Feb 2020
Posts: 12
These patches will add ICtCp/Y′D′ZD′X to avif and also YCgCo. We in Chromium fixed limited range YCgCo in videos and photos, so it will be great soon if interoperabilty with SW overlays will be done.

https://github.com/tongyuantongyu/li...s/matrix_ictcp

We need to do something with libopenjpeg defaults in ffmpeg. Lossless encoding with -c:v libopenjpeg is at least 1.8 times worse than in opj_compress. It is ridiculous. I suppose it is one of those: https://github.com/uclouvain/openjpe...efault-options (and suppose 64x64, to be presise).

Last edited by Balling; 2nd March 2021 at 18:10.
Balling is offline   Reply With Quote
Old 2nd March 2021, 19:42   #400  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 791
Quote:
Originally Posted by Balling View Post
We need to do something with libopenjpeg defaults in ffmpeg. Lossless encoding with -c:v libopenjpeg is at least 1.8 times worse than in opj_compress. It is ridiculous. I suppose it is one of those: https://github.com/uclouvain/openjpe...efault-options (and suppose 64x64, to be presise).
We already have HTJPEG2000. This part 16 codec is reportedly already integrated with heif. My guess is also avif. The codecs will be replaced by JPEG XS.

JPEG 2000 C++17

https://github.com/GrokImageCompression/grok

libheif / avif f5a3d8e NONE
https://www.sendspace.com/file/m35grt

libwebp2 f319d08 NONE / SSE4.2 / AVX2 with YCgCo ICtCp Y′D′ZD′X BT2020
https://www.sendspace.com/file/sz1ur5

Last edited by Jamaika; 2nd March 2021 at 22:09.
Jamaika is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 14:42.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, vBulletin Solutions Inc.