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 9th July 2022, 09:16   #481  |  Link
richardpl
Registered User
 
Join Date: Jan 2012
Posts: 220
Why you compile stuff heavy modified and with SIMD disabled?
richardpl is offline   Reply With Quote
Old 9th July 2022, 12:12   #482  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 918
I have old computer so I create without SIMD.
I can compile e.g. gcc with mavx2, but it isn't known for old computers whether codecs are broken, virused or new generation because they don't open for SSE2.
Codecs based on highway JPEGXL type can be created supposedly with all functions of noSIMD, SSE3, SSE4, AVX2, AVX3. I don't guess how to connect these functions for JPEG XL.
The disadvantage of this solution. How do I create codecs for the highway and mavx2 linked libraries?
Jamaika is offline   Reply With Quote
Old 9th July 2022, 20:43   #483  |  Link
richardpl
Registered User
 
Join Date: Jan 2012
Posts: 220
Quote:
Originally Posted by Jamaika View Post
Unfinished ffmpeg projects:
https://github.com/etemesi254/ffmpeg-ht {HTJ2K}
Why you list GSoC work in progress code under unfinished? This is very
richardpl is offline   Reply With Quote
Old 10th July 2022, 05:32   #484  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 918
It isn't accepted in the ffmpeg library. A strange situation today each ffmpeg with different addons.
Is it working properly? I don't know. I don't think anyone is wasting their time and looking for on the side libraries. Exceptions, program add-ons.

Last edited by Jamaika; 10th July 2022 at 05:36.
Jamaika is offline   Reply With Quote
Old 10th July 2022, 06:42   #485  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 918
SIMD AVX2 compilation. I emphasize that I can make mistakes. Unable to run SIMD codecs.
Added functions for GCC 11.3.1 (mavx2, mpclmul, maes, mbmi2, mfma, mf16c). Recommendations on google highway.
JPEGXL has been created.
XEVE/XEVD has been created.
OPENVVC has been created. My guess is that functions x86 SIMD must be defined (-DBITDEPTH=10).
UVG266 doesn't has been created. My guess is that functions must be defined (-DUVG_CRYPTO_TRANSF_COEFF_SIGNS=1 -DUVG_CRYPTO_TRANSF_COEFFS=1).
OPENHTJ2K doesn't has been created.
Code:
encode_coding_tree-avx2.c: In function 'uvg_encode_coeff_nxn_avx2':
encode_coding_tree-avx2.c:285:85: warning: pointer type mismatch in conditional expression
  285 |   cabac_ctx_t *baseCtx           = (type == 0) ? &(cabac->ctx.cu_sig_model_luma[0]) :
      |                                                                                     ^
encode_coding_tree-avx2.c:365:68: warning: pointer type mismatch in conditional expression
  365 |     cabac->cur_ctx = (type == 0) ? &(cabac->ctx.cu_sig_model_luma) : &(cabac->ctx.cu_sig_model_chroma);
      |                                                                    ^
encode_coding_tree-avx2.c:416:33: warning: implicit declaration of function 'uvg_context_calc_pattern_sig_ctx' [-Wimplicit-function-declaration]
  416 |       int32_t pattern_sig_ctx = uvg_context_calc_pattern_sig_ctx(sig_coeffgroup_nzs,
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
encode_coding_tree-avx2.c:499:85: warning: pointer type mismatch in conditional expression
  499 |       base_ctx_mod     = (type == 0) ? &(cabac->ctx.cu_sig_model_luma[4 * ctx_set]) :
      |                                                                                     ^
encode_coding_tree-avx2.c:529:79: warning: pointer type mismatch in conditional expression
  529 |         base_ctx_mod = (type == 0) ? &(cabac->ctx.cu_sig_model_luma[ctx_set]) :
      |                                                                               ^
encode_coding_tree-avx2.c:542:25: error: 'uvg_config' has no member named 'crypto_features'
  542 |         if (encoder->cfg.crypto_features & UVG_CRYPTO_TRANSF_COEFF_SIGNS) {
      |                         ^
encode_coding_tree-avx2.c:543:26: warning: implicit declaration of function 'uvg_crypto_get_key' [-Wimplicit-function-declaration]
  543 |           coeff_signs ^= uvg_crypto_get_key(state->crypto_hdl, nnz);
      |                          ^~~~~~~~~~~~~~~~~~
encode_coding_tree-avx2.c:543:50: error: 'encoder_state_t' {aka 'struct encoder_state_t'} has no member named 'crypto_hdl'
  543 |           coeff_signs ^= uvg_crypto_get_key(state->crypto_hdl, nnz);
      |                                                  ^~
encode_coding_tree-avx2.c:585:52: error: 'uvg_config' has no member named 'crypto_features'
  585 |             if (!cabac->only_count && (encoder->cfg.crypto_features & UVG_CRYPTO_TRANSF_COEFFS)) {
      |                                                    ^
encode_coding_tree-avx2.c:586:15: warning: implicit declaration of function 'uvg_cabac_write_coeff_remain_encry'; did you mean 'uvg_cabac_write_coeff_remain'? [-Wimplicit-function-declaration]
  586 |               uvg_cabac_write_coeff_remain_encry(state, cabac, level_diff, go_rice_param, base_level);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |               uvg_cabac_write_coeff_remain
encode_coding_tree-avx2.c:588:23: error: too few arguments to function 'uvg_cabac_write_coeff_remain'
  588 |               bits += uvg_cabac_write_coeff_remain(cabac, level_diff, go_rice_param);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../encoderstate.h:42,
                 from ../inter.h:42,
                 from ../strategies-picture.h:42,
                 from ../strategyselector.h:104,
                 from encode_coding_tree-avx2.c:33:
../cabac.h:143:5: note: declared here
  143 | int uvg_cabac_write_coeff_remain(cabac_data_t *cabac, uint32_t symbol,
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\x86gprintrin.h:59,
                 from c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\immintrin.h:27,
                 from quant-avx2.c:40:
avx2_common_functions.h: In function 'get_first_last_nz_int16':
c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\lzcntintrin.h:51:1: error: inlining failed in call to 'always_inline' '_lzcnt_u32': target specific option mismatch
   51 | _lzcnt_u32 (unsigned int __X)
      | ^~~~~~~~~~
In file included from quant-avx2.c:43:
avx2_common_functions.h:167:26: note: called from here
  167 |   *last = (31 - (int32_t)_lzcnt_u32(nonzero_bytes)) >> 1;
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\x86gprintrin.h:41,
                 from c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\immintrin.h:27,
                 from quant-avx2.c:40:
c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\bmiintrin.h:104:1: error: inlining failed in call to 'always_inline' '_tzcnt_u32': target specific option mismatch
  104 | _tzcnt_u32 (unsigned int __X)
      | ^~~~~~~~~~
In file included from quant-avx2.c:43:
avx2_common_functions.h:166:26: note: called from here
  166 |   *first = (    (int32_t)_tzcnt_u32(nonzero_bytes)) >> 1;
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\x86gprintrin.h:59,
                 from c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\immintrin.h:27,
                 from quant-avx2.c:40:
c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\lzcntintrin.h:51:1: error: inlining failed in call to 'always_inline' '_lzcnt_u32': target specific option mismatch
   51 | _lzcnt_u32 (unsigned int __X)
      | ^~~~~~~~~~
In file included from quant-avx2.c:43:
avx2_common_functions.h:167:26: note: called from here
  167 |   *last = (31 - (int32_t)_lzcnt_u32(nonzero_bytes)) >> 1;
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\x86gprintrin.h:41,
                 from c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\immintrin.h:27,
                 from quant-avx2.c:40:
c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\bmiintrin.h:104:1: error: inlining failed in call to 'always_inline' '_tzcnt_u32': target specific option mismatch
  104 | _tzcnt_u32 (unsigned int __X)
      | ^~~~~~~~~~
In file included from quant-avx2.c:43:
avx2_common_functions.h:166:26: note: called from here
  166 |   *first = (    (int32_t)_tzcnt_u32(nonzero_bytes)) >> 1;
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~
In function 'search_intra_rough',
    inlined from 'uvg_search_cu_intra' at search_intra.c:1848:43:
search_intra.c:1197:46: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
 1197 |         modes_to_check[num_modes_to_check++] = 1;
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
search_intra.c: In function 'uvg_search_cu_intra':
search_intra.c:1183:14: note: at offset 12 into destination object 'modes_to_check' of size 12
 1183 |       int8_t modes_to_check[12];
      |              ^~~~~~~~~~~~~~
Code:
In file included from c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\x86gprintrin.h:59,
                 from c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\x86intrin.h:27,
                 from c:\msys1131\x86_64-w64-mingw32\include\intrin.h:69,
                 from utils.hpp:47,
                 from codestream.hpp:37,
                 from j2kmarkers.hpp:34,
                 from coding_units.hpp:31,
                 from ht_block_encoding.cpp:30:
c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\lzcntintrin.h: In function 'uint32_t count_leading_zeros(uint32_t)':
c:\msys1131\lib\gcc\x86_64-w64-mingw32\11.3.1\include\lzcntintrin.h:51:1: error: inlining failed in call to 'always_inline' 'unsigned int _lzcnt_u32(unsigned int)': target specific option mismatch
   51 | _lzcnt_u32 (unsigned int __X)
      | ^~~~~~~~~~
In file included from codestream.hpp:37,
                 from j2kmarkers.hpp:34,
                 from coding_units.hpp:31,
                 from ht_block_encoding.cpp:30:
utils.hpp:140:25: note: called from here
  140 |   y         = _lzcnt_u32(x);
      |               ~~~~~~~~~~^~~
I suppose codecs made in c++ won't work for AVX2.
Files added
https://www.sendspace.com/filegroup/...7jljyOhI5GmO7Q

Last edited by Jamaika; 10th July 2022 at 15:40.
Jamaika is offline   Reply With Quote
Old 10th July 2022, 08:46   #486  |  Link
nevcairiel
Registered Developer
 
Join Date: Mar 2010
Location: Hamburg/Germany
Posts: 10,239
Quote:
Originally Posted by Jamaika View Post
It isn't accepted in the ffmpeg library. A strange situation today each ffmpeg with different addons.
Thats because its not finished. Its a Google Summer of Code project, and will be adopted into the main library once its actually done.

People are allowed to work on things without magically snipping them into existance in a finished state. In fact thats how development usually works.
__________________
LAV Filters - open source ffmpeg based media splitter and decoders
nevcairiel is offline   Reply With Quote
Old 17th July 2022, 08:10   #487  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 918
The Jamaiki's Investigations
Recently I wrote that HEIF isn't under VVC.
I will answer yes. I think it is already but paid. No player will play it but the network already has files.
A year ago they appeared on Nokia VVC HEIF github but how is it used? I don't know.
https://github.com/nokiatech/heif/tree/VVC_MP4
LibHEIF isn't interested in VVC / EVC.

How to create HEIF VVC?
MP4Box -add-image "image_21447_24bit.266":time=-1:@@reframer:frames=1,201,522 -ab heic "image.heic"
Track Importing VVC - Width 1563 Height 1558 FPS 25000/1000
VVC Import results: 1 samples (5 NALUs) - Slices: 1 I 0 P 0 B - 0 SEI - 1 IDR - 0 CRA
Adding sample at time 0.000 as item 3

Saving image.heic: 0.500 secs Interleaving
The problem is that the demuxer doesn't have decoder VVC.
Jamaika is offline   Reply With Quote
Old 27th July 2022, 20:18   #488  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 918
Codecs during the holidays.
As usual, there are changes sometimes.
A swap of function descriptions in jpegxl might surprise you.
HTJ2K grok tries to add all functions into one file.
https://github.com/Jamaika1/grok/tree/new_codec_htj2k
Not everything has to be compatible.

Library encoder: av1enc 0.0.1 8_12bit C⁺⁺11/17 [02 May 2022] {boost, mingw} modified
avifenc 0.10.1 C [26 Jul 2022]
aom 3.4.0 C [26 Jul 2022]
svt-av1 1.1.0 C [26 Jul 2022]*{work only win64}
libavif 0.10.1 C [26 Jul 2022]
libgav1 0.18.0 8_12bit C⁺⁺11/17 [27 Jun 2022]
dav1d 1.0.0 8_16bit C [25 Jul 2022] {assembler SIMD SSE2}

Library encoder: libJPEGXL 0.7.0 C⁺⁺11 [27 Jul 2022] {mingw, highway, butteraugli, brunsli, brotli}
brotli 1.0.9 C [06 Dec 2021] {addition google}
brunsli JXL C⁺⁺ [16 May 2021] {addition google}
butteraugli JXL C⁺⁺ [10 Dec 2021] {addition google}
highway 0.17.0 C⁺⁺11/20 [27 Jul 2022] {addition google}
libyuv 1.8.32 C⁺⁺ [29 Jun 2022] {addition google}

Library encoder: libWebP2 8bit C⁺⁺11/17 [02 May 2022]
libWebP 1.2.3 C [21 Jul 2022]

Library encoder: grok_jpeg2000 9.7.8 8bit C⁺⁺20 [26 Jul 2022] {mingw, perl5, tclap, spdlog, taskflow, highway} {don't decode}
OpenJPH 0.9.1 C⁺⁺ [17 Jun 2022]
OpenHTJ2K C⁺⁺11/14/17 [26 Jul 2022] {modified for gcc}
OpenJPEG 2.5.0 C [12 Jul 2022] {decode only OpenJPH}
JPEGXT C⁺⁺11 [26 Jun 2022]
JPEGLS 2.3.4 C⁺⁺11/14/17 [17 Jun 2022]

libJPEG-turbo 2.1.4 8bit C [27 May 2022] {assembler SIMD SSE2}
libPNG 1.6.38 C [12 Mar 2021] {zlib}
libTIFF 4.4.0 C [21 Jul 2022] {zlib, lerc, libdeflate, zstd}
littleCMS2 2.14.1 C [26 Jul 2022]
giflib 5.2.1 C [24 Jun 2019]
libsJPEG 0.1.0 C⁺⁺ [23 Mar 2021] {addition google}
openexr 3.1.5 C⁺⁺ [01 Jun 2022] {zlib} {instead TIFF, Adobe DNG}
Imath 3.1.5 C⁺⁺11/14/17/20 [02 Jun 2022] {addition openexr}
json 3.10.5 C⁺⁺11/14/17/20/23 [03 Jun 2022]
boost 1.79.0 C⁺⁺11/14/17/20 [06 Apr 2022]
perl5 5.37.2 C [04 Jul 2022] {modified for grok}
tclap 1.4.0 C⁺⁺ [24 May 2022]
spdlog 1.10.0 C⁺⁺11/14/17/20 [25 Jul 2022]
taskflow 3.5.0 C⁺⁺17 [22 Jul 2022]
lerclib 4.0.0 C⁺⁺17 [03 Jun 2021]*{inactive libtiff}
libdeflate 1.12.0 C [05 Jul 2022]*{inactive libtiff}
zstd 1.5.3 C [29 Jun 2022]*{active only GROK}
zlib 1.2.12.1 C [27 Jun 2022]

https://www.sendspace.com/filegroup/...A8BSPjw2L6DD7G

Last edited by Jamaika; 27th July 2022 at 20:43.
Jamaika is offline   Reply With Quote
Old 30th July 2022, 13:36   #489  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 918
New avif, jpegxl and openEXR functions in ffmpeg.
https://www.gyan.dev/ffmpeg/builds/p...-full_build.7z
It is interesting that heif isn't supported.
What aom containers can be displayed, e.g. av1


WARNING: CPU supports 1800 but software requires 2000000000000000
Input #0, jpegxl_pipe, from 'image_21447_24bit.jxl':= 0B f=0/0
Duration: N/A, bitrate: N/A
Stream #0:0: Video: jpegxl, rgb24(pc, gbr/bt709/iec61966-2-1), 4000x3000, 25 fps, 25 tbr, 25 tbn
7.38 M-V: -0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0

Testing ffmpeg 4K
ffmpeg.exe -i image_21447_24bit.av1 -c:v copy image_21447_24bit_ff.avif
libavutil 57. 30.100 / 57. 30.100
libavcodec 59. 39.100 / 59. 39.100
libavformat 59. 29.100 / 59. 29.100
libavdevice 59. 8.101 / 59. 8.101
libavfilter 8. 46.100 / 8. 46.100
libswscale 6. 8.101 / 6. 8.101
libswresample 4. 8.100 / 4. 8.100
libpostproc 56. 7.100 / 56. 7.100
[libdav1d @ 00000228f31a3a00] libdav1d 1.0.0-44-g0b7a0a2
Input #0, obu, from 'image_21447_24bit.av1':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: av1 (High), yuv444p(tv), 4000x3000 [SAR 1:1 DAR 4:3], 25 tbr, 1200k tbn
Output #0, avif, to 'image_21447_24bit_ff.avif':
Metadata:
encoder : Lavf59.29.100
Stream #0:0: Video: av1 (High) (av01 / 0x31307661), yuv444p(tv), 4000x3000 [SAR 1:1 DAR 4:3], q=2-31, 25 tbr, 12800 tbn (default)
Stream mapping:
Stream #0:0 -> #0:0 (copy)


FFmpeg can open JpegXL
ffmpeg.exe -i image_21447_24bit.av1 image_21447_24bit_ff.jxl
Stream mapping:
Stream #0:0 -> #0:0 (av1 (libdav1d) -> jpegxl (libjxl))
Press [q] to stop, [?] for help
Output #0, image2, to 'image_21447_24bit_ff.jxl':
Metadata:
encoder : Lavf59.29.100
Stream #0:0: Video: jpegxl, rgb24(pc, gbr/unknown/unknown, progressive), 4000x3000 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 25 fps, 25 tbn
Metadata:
encoder : Lavc59.39.100 libjxl
[libjxl @ 000001f1caa50b00] Unknown transfer function, assuming IEC61966-2-1/sRGB. Colors may be wrong.
[libjxl @ 000001f1caa50b00] Unknown primaries, assuming BT.709/sRGB. Colors may be wrong.
WARNING: CPU supports 1800 but software requires 2000000000000000
[image2 @ 000001f1c7709d40] The specified filename 'image_21447_24bit_ff.jxl' does not contain an image sequence pattern or a pattern is invalid.
[image2 @ 000001f1c7709d40] Use a pattern such as %03d for an image sequence or use the -update option (with -frames:v 1 if needed) to write a single image.


I don't know if there is tune buteraugli and what functions it has. Lossless JPEG copying. How 10bit HDR works.

Incompatibilities:
heifenc.exe image_21447_24bit.png -v -L -q 100 --avif --no-alpha -p chroma=444 -p threads=4 -p speed=5 --matrix_coefficients=0 --full_range_flag=1 -o image_21447_24bit.avif
Stream #0:0[0x1]: Video: av1 (High), yuv444p(pc, smpte170m/unknown/unknown), 4000x3000 [SAR 1:1 DAR 4:3], 1 fps, 1 tbr, 1 tbn
[libdav1d @ 000001713d4000c0] libdav1d 1.0.0-44-g0b7a0a2

heifenc.exe image_21447_32bit.png -v -L -q 100 --avif -p chroma=444 -p speed=5 -p threads=4 -p speed=5 --matrix_coefficients=0 --full_range_flag=1 --enable-two-colr-boxes -o image_21447_32bit.avif
Stream #0:0[0x1]: Video: av1 (High), yuv444p(pc, smpte170m/unknown/unknown), 4000x3000 [SAR 1:1 DAR 4:3], 1 fps, 1 tbr, 1 tbn
[libdav1d @ 000001713d4000c0] libdav1d 1.0.0-44-g0b7a0a2

heifenc.exe image_21447_48bit.png -v -L -q 100 --avif -b 12 --no-alpha -p chroma=444 -p speed=5 -p threads=4 --matrix_coefficients=0 --full_range_flag=1 -o image_21447_36bit.avif
Stream #0:0[0x1]: Video: av1 (Professional), yuv444p12le(pc, smpte170m/unknown/unknown), 4000x3000 [SAR 1:1 DAR 4:3], 1 fps, 1 tbr, 1 tbn
[libdav1d @ 000001713d4000c0] libdav1d 1.0.0-44-g0b7a0a2

heifenc.exe image_21447_24bit.jpg -v --avif -b 8 -q 75 --no-alpha -p chroma=420 -p speed=5 -p threads=4 -p tune=butteraugli --matrix_coefficients=1 --full_range_flag=0 -o heifenc_24bit_butteraugli.avif
Stream #0:0[0x1]: Video: av1 (Main), yuv420p(pc), 4000x3000 [SAR 1:1 DAR 4:3], 1 fps, 1 tbr, 1 tbn
[libdav1d @ 00000214b52e2100] libdav1d 1.0.0-44-g0b7a0a2

avifenc.exe -c aom -l -d 8 -y 444 -r full -s 5 -j 4 image_21447_24bit.png image_21447_24bita.avif
Stream #0:0[0x1]: Video: av1 (High), gbrp(pc, gbr/bt709/iec61966-2-1), 4000x3000 [SAR 1:1 DAR 4:3], 1 fps, 1 tbr, 1 tbn
[libdav1d @ 00000259ebc000c0] libdav1d 1.0.0-44-g0b7a0a2

avifenc.exe -c aom -l -d 8 -y 420 -r limited -s 5 -j 4 image_21447_24bit.jpg image_21447_24bita_jpg.avif
Stream #0:0[0x1]: Video: av1 (Main), yuv420p(tv, smpte170m/bt709/iec61966-2-1), 4000x3000 [SAR 1:1 DAR 4:3], 1 fps, 1 tbr, 1 tbn
[libdav1d @ 00000259ebc000c0] libdav1d 1.0.0-44-g0b7a0a2

avifenc.exe -c aom -l -d 8 -y 420 -r limited -s 5 -j 4 image_21447_24bit.y4m image_21447_24bita_y4m.avif
Stream #0:0[0x1]: Video: av1 (High), yuv444p(pc, smpte170m/bt709/iec61966-2-1), 4000x3000 [SAR 1:1 DAR 4:3], 1 fps, 1 tbr, 1 tbn
[libdav1d @ 00000259ebc000c0] libdav1d 1.0.0-44-g0b7a0a2
libavif problems

avifenc.exe -c svt -d 8 -y 420 -r limited -s 5 -j 4 image_21447_24bit.jpg image_21447_24bita_svt.avif
Stream #0:0[0x1]: Video: av1 (Main), yuv420p(tv), 4000x3000 [SAR 1:1 DAR 4:3], 1 fps, 1 tbr, 1 tbn
[libdav1d @ 00000259ebc000c0] libdav1d 1.0.0-44-g0b7a0a2

av1enc.exe -q 75 -420 -size 4000x3000 -effort 5 -thread 4 -tune butteraugli image_21447_24bit.jpg -d image_21447_24bitw.av1
Stream #0:0: Video: av1 (Main), yuv420p(tv), 4000x3000 [SAR 1:1 DAR 4:3], 25 tbr, 1200k tbn
[libdav1d @ 00000259ebc000c0] libdav1d 1.0.0-44-g0b7a0a2
aom default jpg range limited

av1enc.exe -avif -q 100 -444 -size 4000x3000 -effort 5 -thread 4 image_21447_48bit.png -d image_21447_36bitw.avif
Stream #0:0[0x1]: Video: av1 (High), yuv444p(pc), 4000x3000 [SAR 1:1 DAR 4:3], 1 fps, 1 tbr, 1 tbn
libdav1d @ 00000259ebc000c0] libdav1d 1.0.0-44-g0b7a0a2
aom default png range full

cjxl.exe image_21447_24bit.png image_21447_24bit.jxl -v -p -m 1 -q 100 -e 5 -C 6 --num_threads=4
Stream #0:0: Video: jpegxl, rgb24(pc, gbr/bt709/iec61966-2-1), 4000x3000, 25 fps, 25 tbr, 25 tbn

It's time to finish this thread. The add-ons are in ffmpeg.
I tried to get users interested in programming with GCC under Windows and try my hand as amateur. It took long time and I ran into errors at times.
Many consider GCC on github as inferior software.
I can't compile in SIMD. My files don't work in AVX. I see that in MSYS2 the codecs from SCALAR to AVX3 automatically select the processor. I have not been able to create the codecs in GCC itself.
Compiling my codecs was an interest in new codec capabilities.
How to program in MSYS2? It exceeded my programming skills.
https://stackoverflow.com/questions/...x2-mavx512f-do
Code built with -mavx usually can't be run on CPUs without AVX, even if auto-vectorization wasn't enabled and you didn't use any AVX intrinsics; it makes GCC use the VEX encoding instead of legacy SSE for every SIMD instruction. AVX2, on the other hand, doesn't usually get used except when actually auto-vectorizing a loop. It's not relevant for just copying data around, or for scalar FP math. GCC will use scalar FMA instructions if -mfma is enabled, though.
How is it, gentlemen, that I run on the Intel (R) Core (TM) i5-2500K CPU @ 3.30GHz, 3301 MHz, thread 4 codecs LigH AVX2.
-m options do not enable auto-vectorization; -ftree-vectorize does that. It's on at -O3 and higher. (Or at -O2 with GCC12 and later, like with clang.)
I use
Code:
-march=native -ftree-vectorize -g0 -O3 -fPIC -mavx2 -mpclmul -maes -mlzcnt -mbmi2 -mfma -mf16c
.

EDIT:
How to use compiler switches?
For the layman, the first thought is to add the default x86-64 bit processor. The problem is that this default processor isn't the default at all.
It has different names for different generations of processors.
x86-64 no-SIMD
x86-64-v2 max SSE42
x86-64-v3 max AVX2
x86-64-v4 AVX3 (AVX512)
Misspelled names create nonsense.
Another thing are the first AVX processors that are actually not supported. They do not belong to the group of x86-64-v2 scalar 128bit or x86-64-v3 scalar 256bit. So-called technologine junk today.
Problem with names. What switches does the mavx include? Basic.
Extra for mavx you have to manually add POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL and not to be confused with the functions for mavx2.
Unusual way of google highway. SSE4 & PCLMUL & AES from the gcc AVX2 specification produces SSE4.
GCC won't show you anything, it just automatically adds mavx2.
How do VVC or JPEGXL codecs with AVX 128bit scalar behave? If you don't add x86-64-v2 it will be AVX2.
What to do with VEX functions? In OpenEXR or david add only for AVX2 / AVX3.
Why does X265 work for me with AVX? Because codec is AVX 128bit scalar.

My codec SIMD
NOSIMD SSE2 {codec aom/svt-av1 is MMX)
AVX/XSAVE/PCLMUL/AES
AVX2/BMI2/FMA/F16C/AES + VEX(AVX 256 scalar)
AVX3/AVX512DQ/AVX512BW/AVX512VL + VEX(AVX 256 scalar)
https://www.sendspace.com/filegroup/...oNX1L8b9WbLYTQ

Last edited by Jamaika; 7th August 2022 at 11:43.
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 23:41.


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