AOMediaCodec / libavif

libavif - Library for encoding and decoding .avif files
Other
1.53k stars 195 forks source link

test library libweb2/libavif/aom SIMD #1142

Closed Jamaika1 closed 1 year ago

Jamaika1 commented 2 years ago

The topic may not be interesting because everything can be downloaded ffmpeg. However, something interests me.

I couldn't create SIMD libraries because aom codec didn't work for me. Recent fixes to the aom and libavif codec made it only work with gcc 11.3.0. I also found that for _WIN32_WINNT = 0x0602 and I had to delete NOMINMAX everywhere. The cpuinfo exception. I had a problem with AOM_USAGE_GOOD_QUALITY. I replaced it with AOM_USAGE_ALL_INTRA in libwebp2.

Test: echo test AVIF image avifenc.exe -c aom -l -d 8 -y 444 -r full -s 8 -j 4 image_21447_24bit.png image_21447_24bita1.avif avifenc.exe -c aom -l -d 8 -y 444 -r full -j 4 image_21447_24bit.png image_21447_24bita2.avif avifenc.exe -c aom -l -d 8 -y 444 -r full -s 5 -j 4 image_21447_24bit.png image_21447_24bita3.avif avifenc.exe -c aom -d 8 -y 420 -r limited -s 5 -j 4 image_21447_24bit.jpg image_21447_24bita_jpg.avif avifenc.exe -c aom -d 8 -y 420 -r limited -s 5 -j 4 image_21447_24bit.y4m image_21447_24bita_y4m.avif avifenc.exe -c svt -d 8 -y 420 -r limited -s 5 -j 4 image_21447_24bit.jpg image_21447_24bita_svt.avif

echo test AVIF SIMD image avifenc_avx.exe -c aom -l -d 8 -y 444 -r full -s 8 -j 4 image_21447_24bit.png image_21447_24bita1_avx.avif avifenc_avx.exe -c aom -l -d 8 -y 444 -r full -j 4 image_21447_24bit.png image_21447_24bita2_avx.avif avifenc_avx.exe -c aom -l -d 8 -y 444 -r full -s 5 -j 4 image_21447_24bit.png image_21447_24bita3_avx.avif avifenc_avx.exe -c aom -d 8 -y 420 -r limited -s 5 -j 4 image_21447_24bit.jpg image_21447_24bita_jpg_avx.avif avifenc_avx.exe -c aom -d 8 -y 420 -r limited -s 5 -j 4 image_21447_24bit.y4m image_21447_24bita_y4m_avx.avif avifenc_avx.exe -c svt -d 8 -y 420 -r limited -s 5 -j 4 image_21447_24bit.jpg image_21447_24bita_svt_avx.avif

Inquiries: Why is libavif not working with aom when adding JPG and Y4M files for SIMD? How to create codecs in GCC 12.2.0 and above? What new features have been added? https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106962 https://www.sendspace.com/file/p7hv05

jzern commented 2 years ago

Thanks for the report. There seem to be a couple issues here: 1) Windows compilation, maybe some defines are missing 2) Issues with SIMD builds.

Are you seeing a crash with binaries built with gcc 12.2.0 in libaom or libavif? Are you building with an msys2 environment or something else?

Jamaika1 commented 2 years ago

I don't see anything disturbing. The libavif SIMD library is created.

reconintra.c: In function 'av1_upsample_intra_edge_c':
reconintra.c:1097:14: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
 1097 |   in[sz + 2] = p[sz - 1];
      |   ~~~~~~~~~~~^~~~~~~~~~~
reconintra.c:1090:11: note: at offset 19 into destination object 'in' of size 19
 1090 |   uint8_t in[MAX_UPSAMPLE_SZ + 3];
      |           ^~
decodeframe.c: In function 'decode_partition':
decodeframe.c:1252:30: warning: array subscript 22 is above array bounds of 'const uint8_t[22]' 
{aka 'const unsigned char[22]'} [-Warray-bounds]
 1252 |   const int bw = mi_size_wide[bsize];
      |                  ~~~~~~~~~~~~^~~~~~~
In file included from c:\gcc1300\x86_64-w64-mingw32\include\av1\common\blockd.h:21,
                 from c:\gcc1300\x86_64-w64-mingw32\include\config\aom_dsp_rtcd.h:18,
                 from decodeframe.c:16:
c:\gcc1300\x86_64-w64-mingw32\include\av1\common\common_data.h:35:22: note: while referencing 'mi_size_wide'
   35 | static const uint8_t mi_size_wide[BLOCK_SIZES_ALL] = {
      |                      ^~~~~~~~~~~~
detokenize.c: In function 'av1_decode_palette_tokens':
detokenize.c:70:68: warning: array subscript [0, 1] is outside array bounds of 'uint16_t[2]' 
{aka 'short unsigned int[2]'} [-Warray-bounds]
   70 |       xd->plane[plane].color_index_map + xd->color_index_map_offset[plane];
      |                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
In file included from detokenize.c:16:
c:\gcc1300\x86_64-w64-mingw32\include\av1\common\blockd.h:909:12: note: while referencing 'color_index_map_offset'
  909 |   uint16_t color_index_map_offset[2];
      |            ^~~~~~~~~~~~~~~~~~~~~~
encodemb.c: In function 'encode_block_inter':
encodemb.c:525:44: warning: array subscript 19 is above array bounds of 'const TX_SIZE[19]' 
{aka 'const unsigned char[19]'} [-Warray-bounds]
  525 |     const TX_SIZE sub_txs = sub_tx_size_map[tx_size];
      |                             ~~~~~~~~~~~~~~~^~~~~~~~~
In file included from c:\gcc1300\x86_64-w64-mingw32\include\av1\common\blockd.h:21,
                 from c:\gcc1300\x86_64-w64-mingw32\include\av1\common\av1_txfm.h:22,
                 from c:\gcc1300\x86_64-w64-mingw32\include\config\av1_rtcd.h:18,
                 from encodemb.c:13:
c:\gcc1300\x86_64-w64-mingw32\include\av1\common\common_data.h:165:22: note: while referencing 'sub_tx_size_map'
  165 | static const TX_SIZE sub_tx_size_map[TX_SIZES_ALL] = {
      |                      ^~~~~~~~~~~~~~~
partition_search.c: In function 'encode_sb.constprop':
partition_search.c:1567:31: warning: array subscript 22 is above array bounds of 'const uint8_t[22]' 
{aka 'const unsigned char[22]'} [-Warray-bounds]
 1567 |   const int hbs = mi_size_wide[bsize] / 2;
      |                   ~~~~~~~~~~~~^~~~~~~
In file included from c:\gcc1300\x86_64-w64-mingw32\include\av1\common\blockd.h:21,
                 from c:\gcc1300\x86_64-w64-mingw32\include\av1\common\av1_txfm.h:22,
                 from c:\gcc1300\x86_64-w64-mingw32\include\config\av1_rtcd.h:18,
                 from c:\gcc1300\x86_64-w64-mingw32\include\av1\common\av1_common_int.h:16,
                 from partition_search.c:14:
c:\gcc1300\x86_64-w64-mingw32\include\av1\common\common_data.h:35:22: note: while referencing 'mi_size_wide'
   35 | static const uint8_t mi_size_wide[BLOCK_SIZES_ALL] = {
      |                      ^~~~~~~~~~~~
In file included from txb_rdopt.c:13:
In function 'get_coeff_cost_eob',
    inlined from 'av1_optimize_txb' at txb_rdopt.c:376:9:
c:\gcc1300\x86_64-w64-mingw32\include\av1\encoder\txb_rdopt_utils.h:150:46: 
warning: array subscript -1 is below array bounds of 'const int[3]' [-Warray-bounds]
  150 |   cost += txb_costs->base_eob_cost[coeff_ctx][AOMMIN(abs_qc, 3) - 1];
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
In file included from c:\gcc1300\x86_64-w64-mingw32\include\av1\encoder\aq_cyclicrefresh.h:16,
                 from c:\gcc1300\x86_64-w64-mingw32\include\av1\encoder\encoder.h:35,
                 from c:\gcc1300\x86_64-w64-mingw32\include\av1\encoder\txb_rdopt.h:17,
                 from txb_rdopt.c:12:
c:\gcc1300\x86_64-w64-mingw32\include\av1\encoder\block.h: In function 'av1_optimize_txb':
c:\gcc1300\x86_64-w64-mingw32\include\av1\encoder\block.h:151:7: note: while referencing 'base_eob_cost'
  151 |   int base_eob_cost[SIG_COEF_CONTEXTS_EOB][3];
      |       ^~~~~~~~~~~~~
tx_search.c: In function 'select_tx_block.constprop':
tx_search.c:2642:36: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
 2642 |         mbmi->inter_tx_size[index] = tx_size;
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
In file included from c:\gcc1300\x86_64-w64-mingw32\include\av1\common\av1_txfm.h:22,
                 from c:\gcc1300\x86_64-w64-mingw32\include\config\av1_rtcd.h:18,
                 from c:\gcc1300\x86_64-w64-mingw32\include\av1\common\av1_common_int.h:16,
                 from c:\gcc1300\x86_64-w64-mingw32\include\av1\common\cfl.h:15,
                 from tx_search.c:12:
c:\gcc1300\x86_64-w64-mingw32\include\av1\common\blockd.h:292:11: 
note: at offset 16 into destination object 'inter_tx_size' of size 16
  292 |   TX_SIZE inter_tx_size[INTER_TX_SIZE_BUF_LEN];
      |           ^~~~~~~~~~~~~

Libjpeg-turbo SIMD works with svt-av1 SIMD AVX. I know the svt-av1 codec has SIMD support only for SSE2, AVX2. So only SSE2 is displayed for me. I added the codecs above. AVX2 will not test. In libheif I'm wondering about defined INLINE for libjpeg-turbo and aom. I made a joint for STATIC otherwise there is redefinition. #define INLINE inline __attribute__ ((always_inline)) I use in test gcc only x86_64bit: http://msystem.waw.pl/x265/mingw-gcc1131-20220924.7z http://msystem.waw.pl/x265/mingw-gcc1221-20220924.7z http://msystem.waw.pl/x265/mingw-gcc1300-20220927.7z

jzern commented 2 years ago

I don't see anything disturbing. The libavif SIMD library is created.

Most, if not all, of those warnings should be fixed in the latest libaom.

I added the codecs above. AVX2 will not test.

Do you mean you see a crash or other test failures with AVX2 enabled? Can you give a sample command line?

I'm wondering about defined INLINE for libjpeg-turbo and aom. I made a joint for STATIC otherwise there is redefinition. #define INLINE inline __attribute__ ((always_inline))

Everything in libaom should be marked static INLINE. Do you have an example of the redefinition errors you were seeing?

Jamaika1 commented 1 year ago

I have sandybridge processor. I added the latest libjpeg-turbo fixes and the bugs are gone. I split the inline definitions for aom and libjpeg-turbo. I created in gcc 11.3.0 codecs again. Unfortunately no improvement. My knowledge ends here.

I have question about the ssim.o file in aom. Why is it possible to make codec without this file? I do add it but gcc treats it as an addon.

jzern commented 1 year ago

I have sandybridge processor. I added the latest libjpeg-turbo fixes and the bugs are gone.

Do you have a pointer to those? Was that just changing things to force inline?

I split the inline definitions for aom and libjpeg-turbo. I created in gcc 11.3.0 codecs again. Unfortunately no improvement. My knowledge ends here.

So you're seeing a crash in libaom on this platform? Do you have an example command line?

I have question about the ssim.o file in aom. Why is it possible to make codec without this file? I do add it but gcc treats it as an addon.

The functions in ssim.c are only used in the encoder when CONFIG_INTERNAL_STATS is defined. Otherwise only some tests use these functions. It might be possible to rework the dependency in libaom's cmake to avoid this.

Jamaika1 commented 1 year ago

I define CONFIG_INTERNAL_STATS equal 0. Does it mean? Codec doesn't have tune simm. My aom config: https://www.sendspace.com/filegroup/nh%2FIxQA%2BgRGkNrrP7HVVXC6siI337ZOBG8hZUnCW%2FG0

set_aom_config_var(CONFIG_INTERNAL_STATS 0 "Enables internal encoder stats.")

I use command in DOS/Windows10 processor SandyBridge.

echo off
set PATH=C:\gcc1130\bin;%PATH%
rem echo %PATH%
rem cd "C:\gcc1130\bin"

cd libpng
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DPNG_DEBUG=1 -DZLIB_WINAPI -DPNG_DLL_EXPORT=/"/" -c %%f -o %%~nf.o
cd ..
cd libjpeg
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DUSE_WINDOWS_MESSAGEBOX=1 -DBITS_IN_JSAMPLE=8 -DINLINE="inline __attribute__((always_inline))" -DLOCAL(type)="static type" -DWITH_SIMD=1 -c %%f -o %%~nf.o
cd ..
cd libjpeg\x86_64
for %%f in ("%~dp1*.asm") do nasm.exe -f win64 -O3 -DWIN64=1 -D__x86_64__=1 -DPIC=1 -Xgnu %%f -o %%~nf.o
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DUSE_WINDOWS_MESSAGEBOX=1 -DBITS_IN_JSAMPLE=8 -DINLINE="inline __attribute__((always_inline))" -DLOCAL(type)="static type" -DWITH_SIMD=1 -c %%f -o %%~nf.o
cd ..\..
cd zlib
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DZLIB_DEBUG=1 -DZLIB_WINAPI -c %%f -o %%~nf.o
cd ..

cd avif
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DCONFIG_AV1_ENCODER=1 -DCONFIG_AV1_DECODER=0 -DCONFIG_ACCOUNTING=0 -DCONFIG_INSPECTION=0 -DHAVE_SIMD=1 -DARCH_X86_64=1 -DAVIF_CODEC_AOM -DNAVIF_CODEC_AOM_DECODE -DAVIF_CODEC_AOM_ENCODE -DAVIF_CODEC_SVT -c %%f -o %%~nf.o
cd ..
cd avif\shared
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DCONFIG_AV1_ENCODER=1 -DCONFIG_AV1_DECODER=0 -DCONFIG_ACCOUNTING=0 -DCONFIG_INSPECTION=0 -DAVIF_CODEC_AOM -DNAVIF_CODEC_AOM_DECODE -DAVIF_CODEC_AOM_ENCODE -DAVIF_CODEC_SVT -DUSE_WINDOWS_MESSAGEBOX -DBITS_IN_JSAMPLE=8 -DINLINE="inline __attribute__((always_inline))" -DLOCAL(type)="static type" -DWITH_SIMD=1 -DPNG_DLL_EXPORT=/"/" -c %%f -o %%~nf.o
cd ..\..

cd aom
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DCONFIG_AV1_ENCODER=1 -DCONFIG_AV1_DECODER=0 -DCONFIG_ACCOUNTING=0 -DCONFIG_INSPECTION=0 -DHAVE_SIMD=1 -c %%f -o %%~nf.o
cd ..
cd av1c
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DCONFIG_AV1_ENCODER=1 -DCONFIG_AV1_DECODER=0 -DCONFIG_ACCOUNTING=0 -DCONFIG_INSPECTION=0 -DHAVE_SIMD=1 -c %%f -o %%~nf.o
cd ..
cd av1c\x86
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DCONFIG_AV1_ENCODER=1 -DCONFIG_AV1_DECODER=0 -DCONFIG_ACCOUNTING=0 -DCONFIG_INSPECTION=0 -DHAVE_SIMD=1 -c %%f -o %%~nf.o
cd ..\..
cd av1dsp
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DCONFIG_AV1_ENCODER=1 -DCONFIG_AV1_DECODER=0 -DCONFIG_ACCOUNTING=0 -DCONFIG_INSPECTION=0 -DHAVE_SIMD=1 -c %%f -o %%~nf.o
cd ..
cd av1dsp\x86
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DCONFIG_AV1_ENCODER=1 -DCONFIG_AV1_DECODER=0 -DCONFIG_ACCOUNTING=0 -DCONFIG_INSPECTION=0 -DHAVE_SIMD=1 -c %%f -o %%~nf.o
for %%f in ("%~dp1*.asm") do nasm.exe -f win64 -O3 -DARCH_X86_64=1 -DCONFIG_PIC=1 -DCONFIG_AV1_ENCODER=1 -DNCONFIG_AV1_DECODER=0 -Xgnu %%f -o %%~nf.o
cd ..\..
cd av1e
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DCONFIG_AV1_ENCODER=1 -DCONFIG_AV1_DECODER=0 -DCONFIG_ACCOUNTING=0 -DCONFIG_INSPECTION=0 -DHAVE_SIMD=1 -c %%f -o %%~nf.o
cd ..
cd av1e\x86
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DCONFIG_AV1_ENCODER=1 -DCONFIG_AV1_DECODER=0 -DCONFIG_ACCOUNTING=0 -DCONFIG_INSPECTION=0 -DHAVE_SIMD=1 -c %%f -o %%~nf.o
cd ..\..

cd svt-av1
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DNCONFIG_ACCOUNTING -DARCH_X86_64=1 -c %%f -o %%~nf.o
cd ..
cd svt-av1\ASM_SSE2 
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DNCONFIG_ACCOUNTING -DARCH_X86_64=1 -c %%f -o %%~nf.o
for %%f in ("%~dp1*.asm") do nasm.exe -f win64 -O3 -DARCH_X86_64=1 -DCONFIG_PIC=1 -DCONFIG_AV1_ENCODER=1 -DNCONFIG_AV1_DECODER=0 -Xgnu %%f -o %%~nf.o
cd ..\..
cd svt-av1\ASM_SSSE3
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DNCONFIG_ACCOUNTING -DARCH_X86_64=1 -c %%f -o %%~nf.o
for %%f in ("%~dp1*.asm") do nasm.exe -f win64 -O3 -DARCH_X86_64=1 -DCONFIG_PIC=1 -DCONFIG_AV1_ENCODER=1 -DNCONFIG_AV1_DECODER=0 -Xgnu %%f -o %%~nf.o
cd ..\..
cd svt-av1\ASM_SSE4_1
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DNCONFIG_ACCOUNTING -DARCH_X86_64=1 -c %%f -o %%~nf.o
cd ..\..
cd svt-av1\cpuinfo
for %%f in ("%~dp1*.c") do gcc.exe -std=gnu11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -DWINVER=0x0602 -D_WIN32_WINNT=0x0602 -DWIN32_LEAN_AND_MEAN=/"/" -DNOMINMAX -DNCONFIG_ACCOUNTING -DARCH_X86_64=1 -DCPUINFO_MOCK=1 -c %%f -o %%~nf.o
cd ..\..

g++.exe -std=gnu++11 -march=x86-64-v2 -ftree-vectorize -g0 -O3 -fPIC -mavx -mxsave -mpclmul -maes -Wall -Wextra -o avifenc_avx.exe avif\avifenc.o avif\shared\avifjpeg.o avif\shared\avifpng.o avif\shared\avifutil.o avif\shared\iccjpeg.o avif\shared\y4m.o aom\arg_defs.o aom\args_helper.o aom\vector.o aom\aom_codec.o aom\aom_decoder.o aom\aom_encoder.o aom\aom_image.o aom\aom_integer.o aom\aom_mem.o aom\aom_scale.o aom\aom_scale_rtcd.o aom\aom_thread.o aom\av1_cx_iface.o aom\fast.o aom\fast_9.o aom\gen_scalers.o aom\ivfdec.o aom\nonmax.o aom\tools_common.o aom\yv12config.o aom\yv12extend.o av1c\alloccommon.o av1c\av1_inv_txfm1d.o av1c\av1_inv_txfm2d.o av1c\av1_loopfilter.o av1c\av1_txfm.o av1c\blockd.o av1c\cdef.o av1c\cdef_block.o av1c\cfl.o av1c\convolve.o av1c\debugmodes.o av1c\entropy.o av1c\av1_rtcd.o av1c\entropymode.o av1c\entropymv.o av1c\frame_buffers.o av1c\idct.o av1c\mvref_common.o av1c\obu_util.o av1c\pred_common.o av1c\quant_common.o av1c\reconinter.o av1c\reconintra.o av1c\resize.o av1c\restoration.o av1c\scale.o av1c\scan.o av1c\seg_common.o av1c\thread_common.o av1c\tile_common.o av1c\timing.o av1c\txb_common.o av1c\warped_motion.o av1dsp\aom_convolve.o av1dsp\avg.o av1dsp\binary_codes_reader.o av1dsp\binary_codes_writer.o av1dsp\bitreader.o av1dsp\bitreader_buffer.o av1dsp\bitwriter.o av1dsp\bitwriter_buffer.o av1dsp\aom_dsp_rtcd.o av1dsp\blend_a64_hmask.o av1dsp\blend_a64_mask.o av1dsp\blend_a64_vmask.o av1dsp\blk_sse_sum.o av1dsp\entcode.o av1dsp\entdec.o av1dsp\entenc.o av1dsp\fastssim.o av1dsp\fft.o av1dsp\fwd_txfm.o av1dsp\grain_table.o av1dsp\intrapred.o av1dsp\loopfilter.o av1dsp\noise_model.o av1dsp\noise_util.o av1dsp\odintrin.o av1dsp\psnr.o av1dsp\psnrhvs.o av1dsp\quantize.o av1dsp\sad.o av1dsp\sad_av1.o av1dsp\sse.o av1dsp\ssim.o av1dsp\subtract.o av1dsp\sum_squares.o av1dsp\variance.o av1e\allintra_vis.o av1e\aq_complexity.o av1e\aq_cyclicrefresh.o av1e\aq_variance.o av1e\av1_fwd_txfm1d.o av1e\av1_fwd_txfm2d.o av1e\av1_noise_estimate.o av1e\av1_quantize.o av1e\bitstream.o av1e\blockiness.o av1e\cnn.o av1e\compound_type.o av1e\context_tree.o av1e\corner_detect.o av1e\corner_match.o av1e\cost.o av1e\dwt.o av1e\encode_strategy.o av1e\encodeframe.o av1e\encodeframe_utils.o av1e\encodemb.o av1e\encodemv.o av1e\encoder.o av1e\encoder_utils.o av1e\encodetxb.o av1e\ethread.o av1e\extend.o av1e\external_partition.o av1e\firstpass.o av1e\global_motion.o av1e\global_motion_facade.o av1e\gop_structure.o av1e\hash.o av1e\hash_motion.o av1e\hybrid_fwd_txfm.o av1e\interp_search.o av1e\intra_mode_search.o av1e\level.o av1e\lookahead.o av1e\mcomp.o av1e\ml.o av1e\motion_search_facade.o av1e\mv_prec.o av1e\nonrd_pickmode.o av1e\optical_flow.o av1e\palette.o av1e\partition_search.o av1e\partition_strategy.o av1e\pass2_strategy.o av1e\pickcdef.o av1e\picklpf.o av1e\pickrst.o av1e\ransac.o av1e\ratectrl.o av1e\rd.o av1e\rdopt.o av1e\reconinter_enc.o av1e\segmentation.o av1e\sparse_linear_solver.o av1e\speed_features.o av1e\superres_scale.o av1e\svc_layercontext.o av1e\temporal_filter.o av1e\thirdpass.o av1e\tokenize.o av1e\tpl_model.o av1e\tx_search.o av1e\txb_rdopt.o av1e\var_based_part.o av1e\wedge_utils.o avif\avif.o avif\alpha.o avif\codec_aom.o avif\codec_svt.o avif\colr.o avif\diag.o avif\exif.o avif\io.o avif\mem.o avif\obu.o avif\rawdata.o avif\read.o avif\reformat.o avif\reformat_libsharpyuv.o avif\reformat_libyuv.o avif\scale.o avif\stream.o avif\utils.o avif\write.o libpng\png.o libpng\pngerror.o libpng\pngget.o libpng\pngmem.o libpng\pngpread.o libpng\pngread.o libpng\pngrio.o libpng\pngrtran.o libpng\pngrutil.o libpng\pngset.o libpng\pngtrans.o libpng\pngwio.o libpng\pngwrite.o libpng\pngwtran.o libpng\pngwutil.o zlib\adler32.o zlib\compress.o zlib\crc32.o zlib\deflate.o zlib\gzclose.o zlib\gzlib.o zlib\gzread.o zlib\gzwrite.o zlib\infback.o zlib\inffast.o zlib\inflate.o zlib\inftrees.o zlib\trees.o zlib\uncompr.o zlib\zutil.o libjpeg\jaricom.o libjpeg\jcapimin.o libjpeg\jcapistd.o libjpeg\jcarith.o libjpeg\jccoefct.o libjpeg\jccolor.o libjpeg\jcdctmgr.o libjpeg\jchuff.o libjpeg\jcinit.o libjpeg\jcmainct.o libjpeg\jcmarker.o libjpeg\jcmaster.o libjpeg\jcomapi.o libjpeg\jcparam.o libjpeg\jcphuff.o libjpeg\jcprepct.o libjpeg\jcsample.o libjpeg\jdapimin.o libjpeg\jdapistd.o libjpeg\jdarith.o libjpeg\jdcoefct.o libjpeg\jdcolor.o libjpeg\jddctmgr.o libjpeg\jdhuff.o libjpeg\jdinput.o libjpeg\jdmainct.o libjpeg\jdmarker.o libjpeg\jdmaster.o libjpeg\jdmerge.o libjpeg\jdphuff.o libjpeg\jdpostct.o libjpeg\jdsample.o libjpeg\jerror.o libjpeg\jfdctflt.o libjpeg\jfdctfst.o libjpeg\jfdctint.o libjpeg\jidctflt.o libjpeg\jidctfst.o libjpeg\jidctint.o libjpeg\jmemmgr.o libjpeg\jmemnobs.o libjpeg\jquant1.o libjpeg\jquant2.o libjpeg\jutils.o libjpeg\jctrans.o libjpeg\jdtrans.o libjpeg\jdatasrc.o libjpeg\jdatadst.o libjpeg\jidctred.o libjpeg\x86_64\jccolor-avx2.o libjpeg\x86_64\jccolor-sse2.o libjpeg\x86_64\jcgray-avx2.o libjpeg\x86_64\jcgray-sse2.o libjpeg\x86_64\jchuff-sse2.o libjpeg\x86_64\jcphuff-sse2.o libjpeg\x86_64\jcsample-avx2.o libjpeg\x86_64\jcsample-sse2.o libjpeg\x86_64\jdcolor-avx2.o libjpeg\x86_64\jdcolor-sse2.o libjpeg\x86_64\jdmerge-avx2.o libjpeg\x86_64\jdmerge-sse2.o libjpeg\x86_64\jdsample-avx2.o libjpeg\x86_64\jdsample-sse2.o libjpeg\x86_64\jfdctflt-sse.o libjpeg\x86_64\jfdctfst-sse2.o libjpeg\x86_64\jfdctint-avx2.o libjpeg\x86_64\jfdctint-sse2.o libjpeg\x86_64\jidctflt-sse2.o libjpeg\x86_64\jidctfst-sse2.o libjpeg\x86_64\jidctint-avx2.o libjpeg\x86_64\jidctint-sse2.o libjpeg\x86_64\jidctred-sse2.o libjpeg\x86_64\jquantf-sse2.o libjpeg\x86_64\jquanti-avx2.o libjpeg\x86_64\jquanti-sse2.o libjpeg\x86_64\jsimd.o libjpeg\x86_64\jsimdcpu.o svt-av1\aom_dsp_rtcd.o svt-av1\av1me.o svt-av1\cfl_c.o svt-av1\common_dsp_rtcd.o svt-av1\convolve.o svt-av1\corner_detect.o svt-av1\corner_match.o svt-av1\dwt.o svt-av1\EbAdaptiveMotionVectorPrediction.o svt-av1\EbBitstreamUnit.o svt-av1\EbBlend_a64_mask.o svt-av1\EbBlend_a64_mask_c.o svt-av1\EbBlockStructures.o svt-av1\EbCabacContextModel.o svt-av1\EbCdef.o svt-av1\EbCdefProcess.o svt-av1\EbCodingLoop.o svt-av1\EbCodingUnit.o svt-av1\EbComputeSAD_c.o svt-av1\EbDeblockingCommon.o svt-av1\EbDeblockingFilter.o svt-av1\EbDlfProcess.o svt-av1\EbEncCdef.o svt-av1\EbEncDecProcess.o svt-av1\EbEncDecResults.o svt-av1\EbEncDecSegments.o svt-av1\EbEncDecTasks.o svt-av1\EbEncHandle.o svt-av1\EbEncInterPrediction.o svt-av1\EbEncIntraPrediction.o svt-av1\EbEncodeContext.o svt-av1\EbEncSettings.o svt-av1\EbEncWarpedMotion.o svt-av1\EbEntropyCoding.o svt-av1\EbEntropyCodingProcess.o svt-av1\EbEntropyCodingResults.o svt-av1\EbFullLoop.o svt-av1\EbGlobalMotionEstimation.o svt-av1\EbGlobalMotionEstimationCost.o svt-av1\EbInitialRateControlProcess.o svt-av1\EbInitialRateControlReorderQueue.o svt-av1\EbInitialRateControlResults.o svt-av1\EbInterPrediction.o svt-av1\EbInterPrediction_c.o svt-av1\EbIntraPrediction.o svt-av1\EbIntraPrediction_c.o svt-av1\EbInvTransforms.o svt-av1\EbLog.o svt-av1\EbMalloc.o svt-av1\EbMcp.o svt-av1\EbMdRateEstimation.o svt-av1\EbMeSadCalculation.o svt-av1\EbMetadataHandle.o svt-av1\EbModeDecision.o svt-av1\EbModeDecisionConfigurationProcess.o svt-av1\EbModeDecisionProcess.o svt-av1\EbMotionEstimation.o svt-av1\EbMotionEstimationContext.o svt-av1\EbMotionEstimationProcess.o svt-av1\EbMotionEstimationResults.o svt-av1\EbNeighborArrays.o svt-av1\EbPacketizationProcess.o svt-av1\EbPacketizationReorderQueue.o svt-av1\EbPackUnPack_c.o svt-av1\EbPictureAnalysisProcess.o svt-av1\EbPictureAnalysisResults.o svt-av1\EbPictureBufferDesc.o svt-av1\EbPictureControlSet.o svt-av1\EbPictureDecisionProcess.o svt-av1\EbPictureDecisionQueue.o svt-av1\EbPictureDecisionReorderQueue.o svt-av1\EbPictureDecisionResults.o svt-av1\EbPictureDemuxResults.o svt-av1\EbPictureManagerProcess.o svt-av1\EbPictureManagerQueue.o svt-av1\EbPictureOperators.o svt-av1\EbPictureOperators_c.o svt-av1\EbPredictionStructure.o svt-av1\EbProductCodingLoop.o svt-av1\EbPsnr.o svt-av1\EbRateControlProcess.o svt-av1\EbRateControlResults.o svt-av1\EbRateControlTables.o svt-av1\EbRateControlTasks.o svt-av1\EbRateDistortionCost.o svt-av1\EbReferenceObject.o svt-av1\EbResize.o svt-av1\EbResourceCoordinationProcess.o svt-av1\EbResourceCoordinationResults.o svt-av1\EbRestoration.o svt-av1\EbRestorationPick.o svt-av1\EbRestProcess.o svt-av1\EbSegmentation.o svt-av1\EbSegmentationParams.o svt-av1\EbSequenceControlSet.o svt-av1\EbSourceBasedOperationsProcess.o svt-av1\EbSuperRes.o svt-av1\EbSystemResourceManager.o svt-av1\EbTemporalFiltering.o svt-av1\EbThreads.o svt-av1\EbTime.o svt-av1\EbTransforms.o svt-av1\EbTransQuantBuffers.o svt-av1\EbUtility.o svt-av1\EbWarpedMotion.o svt-av1\EncodeTxbRef_c.o svt-av1\fast.o svt-av1\fast_9.o svt-av1\nonmax.o svt-av1\filterintra_c.o svt-av1\fft.o svt-av1\firstpass.o svt-av1\global_motion.o svt-av1\grainSynthesis.o svt-av1\hash.o svt-av1\hash_motion.o svt-av1\level.o svt-av1\mcomp.o svt-av1\noise_model.o svt-av1\noise_util.o svt-av1\palette.o svt-av1\pass2_strategy.o svt-av1\ransac.o svt-av1\sad_av1.o svt-av1\variance.o svt-av1\vector.o svt-av1\ASM_SSE2\convolve_2d_sse2.o svt-av1\ASM_SSE2\convolve_sse2.o svt-av1\ASM_SSE2\EbAvcStyleMcp_Intrinsic_SSE2.o svt-av1\ASM_SSE2\EbComputeMean_Intrinsic_SSE2.o svt-av1\ASM_SSE2\EbDeblockingFilter_Intrinsic_SSE2.o svt-av1\ASM_SSE2\EbIntraPrediction_AV1_Intrinsic_SSE2.o svt-av1\ASM_SSE2\EbMeSadCalculation_Intrinsic_SSE2.o svt-av1\ASM_SSE2\EbPackUnPack_Intrinsic_SSE2.o svt-av1\ASM_SSE2\EbPictureOperators_Intrinsic_SSE2.o svt-av1\ASM_SSE2\EbPictureOperators_SSE2.o svt-av1\ASM_SSE2\encodetxb_sse2.o svt-av1\ASM_SSE2\fft_sse2.o svt-av1\ASM_SSE2\intrapred_sse2.o svt-av1\ASM_SSE2\highbd_intrapred_sse2.o svt-av1\ASM_SSE2\highbd_intrapred_sse2_.o svt-av1\ASM_SSE2\highbd_subtract_sse2.o svt-av1\ASM_SSE2\highbd_variance_sse2.o svt-av1\ASM_SSE2\highbd_variance_impl_sse2.o svt-av1\ASM_SSE2\jnt_convolve_2d_sse2.o svt-av1\ASM_SSE2\jnt_convolve_sse2.o svt-av1\ASM_SSE2\subpel_variance_sse2.o svt-av1\ASM_SSE2\variance_sse2.o svt-av1\ASM_SSE2\wiener_convolve_sse2.o svt-av1\ASM_SSE2\x64RegisterUtil.o svt-av1\ASM_SSSE3\aom_subpixel_8t_ssse3.o svt-av1\ASM_SSSE3\aom_subpixel_8t_intrin_ssse3.o svt-av1\ASM_SSSE3\aom_subpixel_bilinear_ssse3.o svt-av1\ASM_SSSE3\av1_inv_txfm_ssse3.o svt-av1\ASM_SSSE3\EbHighbdIntraPrediction_Intrinsic_SSSE3.o svt-av1\ASM_SSSE3\highbd_convolve_2d_ssse3.o svt-av1\ASM_SSSE3\highbd_convolve_ssse3.o svt-av1\ASM_SSSE3\highbd_wiener_convolve_ssse3.o svt-av1\ASM_SSSE3\intrapred_ssse3.o svt-av1\ASM_SSSE3\jnt_convolve_ssse3.o svt-av1\ASM_SSSE3\reconinter_ssse3.o svt-av1\ASM_SSSE3\subpel_variance_ssse3.o svt-av1\ASM_SSSE3\variance_impl_ssse3.o svt-av1\ASM_SSE4_1\av1_convolve_scale_sse4.o svt-av1\ASM_SSE4_1\av1_quantize_sse4_1.o svt-av1\ASM_SSE4_1\cdef_block_sse4_1.o svt-av1\ASM_SSE4_1\corner_match_sse4.o svt-av1\ASM_SSE4_1\EbBlend_a64_mask_sse4.o svt-av1\ASM_SSE4_1\EbCdef_sse4.o svt-av1\ASM_SSE4_1\EbComputeSAD_Intrinsic_SSE4_1.o svt-av1\ASM_SSE4_1\EbIntraPrediction16bit_Intrinsic_SSE4_1.o svt-av1\ASM_SSE4_1\EbPictureOperators_Intrinsic_SSE4_1.o svt-av1\ASM_SSE4_1\EbTemporalFiltering_SSE4_1.o svt-av1\ASM_SSE4_1\encodetxb_sse4.o svt-av1\ASM_SSE4_1\filterintra_sse4.o svt-av1\ASM_SSE4_1\highbd_convolve_2d_sse4.o svt-av1\ASM_SSE4_1\highbd_fwd_txfm_sse4.o svt-av1\ASM_SSE4_1\highbd_inv_txfm_sse4.o svt-av1\ASM_SSE4_1\highbd_jnt_convolve_sse4.o svt-av1\ASM_SSE4_1\obmc_variance_sse4.o svt-av1\ASM_SSE4_1\pickrst_sse4.o svt-av1\ASM_SSE4_1\reconinter_sse4.o svt-av1\ASM_SSE4_1\selfguided_sse4.o svt-av1\ASM_SSE4_1\warp_plane_sse4.o svt-av1\cpuinfo\api.o svt-av1\cpuinfo\cache.o svt-av1\cpuinfo\clog.o svt-av1\cpuinfo\descriptor.o svt-av1\cpuinfo\deterministic.o svt-av1\cpuinfo\info.o svt-av1\cpuinfo\init.o svt-av1\cpuinfo\init_cache.o svt-av1\cpuinfo\init_win.o svt-av1\cpuinfo\init_x86.o svt-av1\cpuinfo\isa.o svt-av1\cpuinfo\mockcpuid.o svt-av1\cpuinfo\name.o svt-av1\cpuinfo\topology.o svt-av1\cpuinfo\uarch.o svt-av1\cpuinfo\vendor.o av1dsp\x86\adaptive_quantize_sse2.o av1dsp\x86\aom_asm_stubs.o av1dsp\x86\aom_convolve_copy_sse2.o av1dsp\x86\aom_high_subpixel_8t_sse2.o av1dsp\x86\aom_high_subpixel_bilinear_sse2.o av1dsp\x86\aom_subpixel_8t_intrin_sse2.o av1dsp\x86\aom_subpixel_8t_sse2.o av1dsp\x86\aom_subpixel_bilinear_sse2.o av1dsp\x86\avg_intrin_sse2.o av1dsp\x86\blk_sse_sum_sse2.o av1dsp\x86\dct_sse2.o av1dsp\x86\error_sse2.o av1dsp\x86\fft_sse2.o av1dsp\x86\fwd_txfm_sse2.o av1dsp\x86\highbd_adaptive_quantize_sse2.o av1dsp\x86\highbd_convolve_sse2.o av1dsp\x86\highbd_intrapred_asm_sse2.o av1dsp\x86\highbd_intrapred_sse2.o av1dsp\x86\highbd_loopfilter_sse2.o av1dsp\x86\highbd_quantize_intrin_sse2.o av1dsp\x86\highbd_subtract_sse2.o av1dsp\x86\highbd_subpel_variance_impl_sse2.o av1dsp\x86\highbd_variance_impl_sse2.o av1dsp\x86\highbd_variance_sse2.o av1dsp\x86\intrapred_asm_sse2.o av1dsp\x86\intrapred_sse2.o av1dsp\x86\loopfilter_sse2.o av1dsp\x86\quantize_sse2.o av1dsp\x86\sad_sse2.o av1dsp\x86\ssim_sse2_x86_64.o av1dsp\x86\subpel_variance_sse2.o av1dsp\x86\sum_squares_sse2.o av1dsp\x86\subtract_sse2.o av1dsp\x86\variance_sse2.o av1dsp\x86\av1_quantize_ssse3_x86_64.o av1dsp\x86\aom_subpixel_8t_intrin_ssse3.o av1dsp\x86\aom_subpixel_bilinear_ssse3.o av1dsp\x86\aom_subpixel_8t_ssse3.o av1dsp\x86\fwd_txfm_ssse3_x86_64.o av1dsp\x86\highbd_convolve_ssse3.o av1dsp\x86\intrapred_ssse3.o av1dsp\x86\jnt_sad_ssse3.o av1dsp\x86\masked_sad_intrin_ssse3.o av1dsp\x86\masked_sad4d_ssse3.o av1dsp\x86\quantize_ssse3.o av1dsp\x86\quantize_ssse3_x86_64.o av1dsp\x86\variance_impl_ssse3.o av1dsp\x86\avg_intrin_sse4.o av1dsp\x86\blend_a64_hmask_sse4.o av1dsp\x86\blend_a64_mask_sse4.o av1dsp\x86\blend_a64_vmask_sse4.o av1dsp\x86\highbd_variance_sse4.o av1dsp\x86\intrapred_sse4.o av1dsp\x86\obmc_sad_sse4.o av1dsp\x86\obmc_variance_sse4.o av1dsp\x86\sse_sse4.o av1dsp\x86\aom_quantize_avx.o av1e\x86\av1_fwd_txfm_sse2.o av1e\x86\av1_k_means_sse2.o av1e\x86\av1_quantize_sse2.o av1e\x86\encodetxb_sse2.o av1e\x86\error_intrin_sse2.o av1e\x86\highbd_block_error_intrin_sse2.o av1e\x86\highbd_temporal_filter_sse2.o av1e\x86\reconinter_enc_sse2.o av1e\x86\temporal_filter_sse2.o av1e\x86\ml_sse3.o av1e\x86\wedge_utils_sse2.o av1e\x86\reconinter_enc_ssse3.o av1e\x86\corner_match_sse4.o av1e\x86\encodetxb_sse4.o av1e\x86\av1_fwd_txfm1d_sse4.o av1e\x86\av1_highbd_quantize_sse4.o av1e\x86\highbd_fwd_txfm_sse4.o av1e\x86\av1_fwd_txfm2d_sse4.o av1e\x86\pickrst_sse4.o av1e\x86\rdopt_sse4.o av1e\x86\hash_sse42.o av1c\x86\cdef_block_sse2.o av1c\x86\cfl_sse2.o av1c\x86\convolve_sse2.o av1c\x86\convolve_2d_sse2.o av1c\x86\jnt_convolve_sse2.o av1c\x86\wiener_convolve_sse2.o av1c\x86\warp_plane_sse2.o av1c\x86\av1_inv_txfm_ssse3.o av1c\x86\cdef_block_ssse3.o av1c\x86\cfl_ssse3.o av1c\x86\highbd_convolve_2d_ssse3.o av1c\x86\highbd_wiener_convolve_ssse3.o av1c\x86\jnt_convolve_ssse3.o av1c\x86\reconinter_ssse3.o av1c\x86\resize_ssse3.o av1c\x86\av1_convolve_horiz_rs_sse4.o av1c\x86\av1_convolve_scale_sse4.o av1c\x86\av1_txfm_sse4.o av1c\x86\cdef_block_sse4.o av1c\x86\filterintra_sse4.o av1c\x86\highbd_convolve_2d_sse4.o av1c\x86\highbd_inv_txfm_sse4.o av1c\x86\highbd_jnt_convolve_sse4.o av1c\x86\highbd_warp_plane_sse4.o av1c\x86\intra_edge_sse4.o av1c\x86\reconinter_sse4.o av1c\x86\selfguided_sse4.o av1c\x86\warp_plane_sse4.o 
pause
jzern commented 1 year ago

Does using cmake and the .cmd files included in the project produce a working build?

I had some earlier questions about the encode command line and what behavior you were seeing, a crash? Does the windows report indicate it was due to an illegal instruction?

Jamaika1 commented 1 year ago

I don't know what illegal instruction means. I know you can use cmake. I am surprised that libjpeg-turbo, dav1d, libgav1, x265, libde265, openexr, svt-av1, openhtj2k, openjph work, while aom doesn't work in SIMD. https://github.com/libjpeg-turbo/libjpeg-turbo/commit/eb0a024af2d84467b22484a89e98e25b3c38025a https://github.com/glennrp/libpng/commit/0a158f3506502dfa23edfc42790dfaed82efba17 https://github.com/madler/zlib/commit/723abd54d897d899c0a2d8c249251c13511d5bd5 https://github.com/AOMediaCodec/libavif/commit/9ea5ac8d6a5752bd5b1e9d0cd83a7370ef1b2eee * minus https://github.com/AOMediaCodec/libavif/commit/6aaea1143de08b4e4a0429b47ad5c71b27019806 https://github.com/jbeich/aom/commit/e25f1caf5c685f9e40c2db66b2915616f876eee5 https://gitlab.com/AOMediaCodec/SVT-AV1/-/tree/aaf943394cc9818ea062b93ff5a7d386bddd2031 What am I doing wrong or what other functions does aom have in gcc? For PNG avifenc_avx.exe -c aom -l -d 8 -y 444 -r full -s 5 -j 4 image_21447_24bit.png image_21447_24bita.avif

Successfully loaded: image_21447_24bit.png
AVIF to be written: (Lossless)
 * Resolution     : 4000x3000
 * Bit Depth      : 8
 * Format         : YUV444
 * Alpha          : Not premultiplied
 * Range          : Full
 * Color Primaries: 1
 * Transfer Char. : 13
 * Matrix Coeffs. : 0
 * ICC Profile    : Absent
 * XMP Metadata   : Absent
 * Exif Metadata  : Absent
 * Transformations: None
 * Progressive    : Unavailable
Encoding with AV1 codec 'aom' speed [5], color QP [0 (Lossless) <-> 0 (Lossless)], alpha QP [0 (Lossless) <-> 0 (Lossless)], tileRowsLog2 [0], tileColsLog2 [0], 4 worker thread(s), please wait...
Encoded successfully.
 * Color AV1 total size: 17937018 bytes
 * Alpha AV1 total size: 0 bytes
Wrote AVIF: image_21447_24bita.avif

For JPEG avifenc_avx.exe -c aom -d 8 -y 420 -r limited -s 5 -j 4 image_21447_24bit.jpg image_21447_24bita_jpg.avif

Successfully loaded: image_21447_24bit.jpg
AVIF to be written: (Lossy)
 * Resolution     : 4000x3000
 * Bit Depth      : 8
 * Format         : YUV420
 * Chroma Sam. Pos: 0
 * Alpha          : Absent
 * Range          : Limited
 * Color Primaries: 1
 * Transfer Char. : 13
 * Matrix Coeffs. : 6
 * ICC Profile    : Absent
 * XMP Metadata   : Absent
 * Exif Metadata  : Absent
 * Transformations: None
 * Progressive    : Unavailable
Encoding with AV1 codec 'aom' speed [5], color QP [24 (Medium) <-> 26 (Medium)], alpha QP [0 (Lossless) <-> 0 (Lossless)], tileRowsLog2 [0], tileColsLog2 [0], 4 worker thread(s), please wait...

Here is DOS. No error messages are available. For libheif PNG

heifenc_avx.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
Encoders (AVIF is default):
- aom = AOMedia Project AV1 Encoder 3.5.0-7f32eb3

Library encoder:  libavif  HDR  1.13.0  8_12bit c++ [23 Sep 2022] {mingw}
                     aom        3.5.0   8_12bit c   [07 Oct 2022]
                  jpegxl        0.8.0           c++ [07 Oct 2022] {butteraugli}
                  highway       1.0.1           c++ [30 Sep 2022]
                  brotli        1.0.9           c   [06 Dec 2021]
                  libyuv        1.8.45          c++ [05 Oct 2022]
                  libJPEG-turbo 2.1.4      8bit c   [04 Oct 2022] {assembler SIMD}
                  libPNG        1.6.38          c   [14 Sep 2022] {zlib}
                    zlib        1.2.12.1        c   [23 Aug 2022]
Compiled by Jamaika

For libheif JPEG heifenc_avx.exe image_21447_24bit.jpg -v -q 90 --avif --no-alpha -p speed=5 -p chroma=420 -p tune=ssim --matrix_coefficients=6 --full_range_flag=0 -o image_21447_24bit_jpg.avif

Encoders (AVIF is default):
- aom = AOMedia Project AV1 Encoder 3.5.0-7f32eb3

Library encoder:  libavif  HDR  1.13.0  8_12bit c++ [23 Sep 2022] {mingw}
                     aom        3.5.0   8_12bit c   [07 Oct 2022]
                  jpegxl        0.8.0           c++ [07 Oct 2022] {butteraugli}
                  highway       1.0.1           c++ [30 Sep 2022]
                  brotli        1.0.9           c   [06 Dec 2021]
                  libyuv        1.8.45          c++ [05 Oct 2022]
                  libJPEG-turbo 2.1.4      8bit c   [04 Oct 2022] {assembler SIMD}
                  libPNG        1.6.38          c   [14 Sep 2022] {zlib}
                    zlib        1.2.12.1        c   [23 Aug 2022]
Compiled by Jamaika

Here is DOS. No error messages are available. For libheif JPEG

heifenc_avx.exe image_21447_24bit.jpg -v -q 90 --no-alpha -p preset=placebo -p chroma=420 -p tune=ssim --matrix_coefficients=6 --full_range_flag=0 -o image_21447_24bit_jpg.avif
Encoders (HEIF is default):
- x265 = x265 HEVC encoder (3.5+41-0b75c44)

Library encoder:  libheif  HDR  1.13.0  8_12bit c++ [23 Sep 2022] {mingw}
                  libJPEG-turbo 2.1.4      8bit c   [04 Oct 2022] {assembler SIMD}
                  libPNG        1.6.38          c   [14 Sep 2022] {zlib}
                    zlib        1.2.12.1        c   [23 Aug 2022]
Compiled by Jamaika

x265 [info]: HEVC encoder version 3.5+41-0b75c44
x265 [info]: build info [Windows][GCC 11.3.1][64 bit] 8bit+10bit+12bit
x265 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
x265 [info]: Main Still Picture profile, Level-6 (Main tier)
x265 [debug]: detected NUMA node 0 with 4 logical cores
x265 [debug]: NUMA node 0 may use 4 logical cores
x265 [debug]: NUMA node 1 may use 0 logical cores
x265 [info]: Thread pool created using 4 threads
x265 [info]: Slices                              : 1
x265 [info]: frame threads / pool features       : 2 / wpp(47 rows)
x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
x265 [info]: Residual QT: max TU size, max depth : 32 / 4 inter / 2 intra
x265 [info]: ME / range / subpel / merge         : star / 92 / 5 / 5
x265 [info]: Lookahead / bframes / badapt        : 0 / 0 / 0
x265 [info]: b-pyramid / weightp / weightb       : 0 / 0 / 0
x265 [info]: References / ref-limit  cu / depth  : 1 / off / off
x265 [info]: AQ: mode / str / qg-size / cu-tree  : 1 / 1.0 / 32 / 0
x265 [info]: Rate Control / qCompress            : CRF-5.0 / 0.60
x265 [info]: tools: rect amp rd=6 psy-rd=1.00 rdoq=2 psy-rdoq=1.00 tskip
x265 [info]: tools: signhide tmvp b-intra strong-intra-smoothing deblock sao
x265 [info]: frame I:      1, Avg QP:0.87  kb/s: 12318.52
x265 [info]: consecutive B-frames: 100.0%

encoded 1 frames in 8.85s (0.11 fps), 12318.52 kb/s, Avg QP:0.87

Photo has been created.

jzern commented 1 year ago

I define CONFIG_INTERNAL_STATS equal 0. Does it mean? Codec doesn't have tune simm.

No, they aren't related. CONFIG_INTERNAL_STATS is meant for use during codec development.

Here is DOS. No error messages are available.

There's no pop up or anything? I would start by removing some of the compiler flags you're using for libaom and trying the build using aom.cmd to see if it makes any difference. The instructions you're enabling should be available for SandyBridge, but starting with the defaults will give us an idea of where to look next.

Jamaika1 commented 1 year ago

https://forum.doom9.org/showthread.php?p=1978264#post1978264