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 > Programming and Hacking > Development

Reply
 
Thread Tools Search this Thread Display Modes
Old 1st March 2023, 19:14   #1  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 665
New additions to ffmpeg evc, vvc, htj2k

New additions to ffmpeg evc, vvc, htj2k
After month I managed to create ffmpeg converter. SIMD AVX2
This is the beginning of the implementation of evc, vvc, htj2k.
Added extras:

libaom_x64.dll libaribb24_x64.dll libavcodec_x64.dll libavformat_x64.dll libavutil_x64.dll libcairo_pixman_x64.dll libcelt_opus_silk_x64.dll libcelt_x64.dll libcodec2_x64.dll libdav1d_x64.dll libdavs2_x64.dll libgsmfr_x64.dll libharfbuzz_x64.dll libiconv_x64.dll libjxl_x64.dll libkvazaar_x64.dll liblcms2_x64.dll libmp3lame_x64.dll libogg_x64.dll libopenh264_x64.dll libopenjpeg_x64.dll libpng_x64.dll libpthread_win32.dll librsvg_x64.dll libsdl2_x64.dll libshine_x64.dll libsnappy_x64.dll libspeex_x64.dll libsvtav1_x64.dll libswresample_x64.dll libswscale_x64.dll libtheora_x64.dll libtwolame_x64.dll libuavs3d_x64.dll libuavs3e_x64.dll libvorbis_x64.dll libvpx_x64.dll libwebp_x64.dll libx264_0810bit_x64.dll libx265_081012bit_x64.dll libxavs_x64.dll libxavs2_x64.dll libxevd_x64.dll libxeve_x64.dll libxml2_x64.dll libxvid_x64.dll zlib_x64.dll libuvg266


If I have time my dump is github.
https://github.com/Jamaika1/plugins_...tj2k/tree/main
Perhaps on the forum there are other converters and players evc/vvc/htj2k/jpegxs/heif.
Not all additions have been added.
https://www.sendspace.com/file/iwahqb

Edit:
Problems encountered:
Add-ons to ffmpeg can have the same functionality. In static compilation, problems with similar functions come out and the functions should be changed.
In a static build, it is important that add-ins are not in WINAPI, i.e. contain int DLLmain functions.
Problems with libintl.h, iconv.h and pthread.h functions under Win64.
To add or not to add such additives?
Problems with libcelt and libcelt2. Doesn't libcelt2 support libcelt? What was the old plug for?
Is librsvg under Windows 64bit and what is this decoder for?
"This is librsvg - A small library to render Scalable Vector Graphics (SVG), associated with the GNOME Project. It renders SVG files to Cairo surfaces. Cairo is the 2D, antialiased drawing library that GNOME uses to draw things to the screen or to generate output for printing."
This is not a small library. A lot of add-ons and should all of them be added, e.g. fonts?
Should add-ons contain glib, cairo, fonttype include callbacks?

Edit:
After many trials and tests, there is success. Unfortunately, it ended up in the trash of librsvg. FFmpeg is unstable with it.
It's time to start testing.
Code:
Compiled: INTEL, flags: MMX SSE SSE2 SSE3 SSSE3 SSE41 SSE42 AVX
Detected: INTEL, flags: MMX SSE SSE2 SSE3 SSSE3 SSE41 SSE42 AVX
Available: sse2(2) sse41(7)
In use: sse2(1) sse41(7)
--owf=auto value set to 2.
--threads=auto value set to 4.
Output #0, vvc, to 'output_uvg266.vvc':
Output #0, evc, to 'output_xeve.evc':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf59.35.100
  Stream #0:0(und): Video: vvc, yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 3000 kb/s, 29.97 fps, 29.97 tbn (default)
  Stream #0:0(und): Video: evc, yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 3000 kb/s, 29.97 fps, 29.97 tbn (default)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc. Created on: 02/14/2019.
      vendor_id       : [0][0][0][0]
      encoder         : Lavc59.56.100 libuvg266
      encoder         : Lavc59.56.100 libxeve
frame=  100 fps=3.6 q=42.0 Lsize=    1184kB time=00:00:03.30 bitrate=2937.2kbits/s speed=0.118x
https://www.sendspace.com/file/xwzg8l

Edit:
A few fixes I decided to add. It doesn't matter which ones.
The EVC codec can be converted to a mov container. It has a special plug added.
I failed to compile aac fixed correctly.
I added XAVS2/UAVS3 10bit decoder. The encoders are underdeveloped. Bitrate problem.
Successfully compiled X264 with asm 10bit.
I was able to compile ac3 fixed correctly.
I don't know how to decode HTJ2K.
I don't know how to configure SDL2 under ffplay.

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

Edit:
I added few fixes.
News:
https://github.com/strukturag/libhei...14dc23aba7e743

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

Edit:
Several improvements
I added ffplay. I thought that in gcc nothing would come of it but miracle happened. I replaced the libxml2 libraries and it works.
Delete -> https://github.com/GNOME/libxml2
Add -> https://github.com/GerHobbelt/libxml2

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

Test of the latest gcc 13.0.1 isn't recommended.
http://msystem.waw.pl/x265/mingw-gcc1301-20230322.7z

Edit:
I added few extras:
https://github.com/freetype/freetype
https://gitlab.freedesktop.org/fontconfig/fontconfig
https://github.com/fribidi/fribidi
https://gitlab.freedesktop.org/cairo/cairo
https://github.com/harfbuzz/harfbuzz
-> plus new fixes for vvc
https://github.com/ffvvc/FFmpeg/tree...ea47feb91a0b21
Unresolved GNOME atomic function C/C++ problem.
https://gitlab.gnome.org/GNOME/glib/-/issues/600

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

Edit:
Test codec audio AVX
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libx264 -vb 3000k -c:a libopus -ac 2 -ar 48000 -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_opus.mp4 OK
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libx264 -vb 3000k -c:a libspeex -ac 2 -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_speex.mov OK
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libx264 -vb 3000k -c:a libtwolame -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_twolame.mov OK
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libx264 -vb 3000k -c:a libvorbis -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_vorbis.mov OK
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libx264 -vb 3000k -c:a libshine -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_shine.mov OK
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libx264 -vb 3000k -c:a libsnappy -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_snappy.mov OK
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libx264 -vb 3000k -c:a libmp3lame -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_mp3lame.mov OK
ffmpeg.exe -i "iphone6s_4k.mov" -y -c:a libcodec2 -vn -mode 3200 -frames:v 100 output_codec2.c2 OK

Test codec video AVX
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libkvazaar -vb 3000k -c:a ac3 -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_kvazaar.mov OK
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libxvid -vb 3000k -c:a ac3 -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_xvid.mov {not retained bitrates}
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libx264 -vb 3000k -c:a ac3 -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_x264.mov OK
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libopenh264 -vb 3000k -c:a ac3 -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_openh264.mov OK
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libx265 -vb 3000k -c:a ac3 -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_x265.mov OK
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libxavs -vb 3000k -c:a ac3 -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_xavs.mkv {doesn't like the mov container, not retained bitrates, cavs decoder not working, abandoned project}
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libxavs2 -vb 3000k -c:a ac3 -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_xavs2.mkv {doesn't like the mov container, not retained bitrates, recommended installation of 10bit decoder, abandoned project}
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libuavs3 -vb 3000k -c:a ac3 -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_uavs3.mov {problem DTS, abandoned project}
I don't know if there is avs4.
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libxeve -vb 3000k -c:a ac3 -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_xeve.mov {encoder/decoder drops frames}
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libuvg266 -vb 3000k -c:a ac3 -ac 2 -ar 48000 -ab 128k -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_uvg266.mts {vvc decoder not working}
ffmpeg.exe -i "iphone6s_4k.mov" -c:v libtheora -q:v 20 -c:a libvorbis -q:a 20 -s 1920x1080 -frames:v 100 -pix_fmt yuv420p output_theora.ogv {encoder not working, abandoned project(2010}

Creating ffmpeg converter in AVX2. There is currently no way to do this in nasm and gcc. These libraries are not written. I can only add fma3.
Test of Elecard films in the first versions of VVC. I can only open I frames.
Code:
Input #0, vvc, from 'NovosobornayaSquare_1920x1080.bin': 0B f=0/0
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: vvc (Main), yuv420p, 1920x1080, 59.94 fps, 25 tbr, 1200k tbn
[vvc @ 00000275747fe190] Skipping NAL unit 23
    Last message repeated 3 times
[vvc @ 00000275747fe190] Skipping NAL unit 2342KB sq=    0B f=0/0
    Last message repeated 1 times
[vvc @ 00000275747fe190] Skipping NAL unit 2333KB sq=    0B f=0/0
    Last message repeated 1 times
[vvc @ 00000275747fe190] Skipping NAL unit 2371KB sq=    0B f=0/0
[vvc @ 00000275747fe190] Skipping NAL unit 2370KB sq=    0B f=0/0
    Last message repeated 2 times
[vvc @ 00000275747fe190] Skipping NAL unit 2389KB sq=    0B f=0/0
    Last message repeated 2 times
News.
Free intoPIX JPEG XS codecs included. Advertised successor to JPEG2000. Unfortunately, I didn't find plugins for ffmpeg and I don't know how to use the codec.

My created AVX / AVX2 codecs.
https://www.sendspace.com/file/09luu5

Edit:
I had to delete some previous content. I have problem with the ar.exe file in mingw.
https://www.gnu.org/software/binutils/
For amateurs I remind you that there is file needed to merge libraries into larger projects.
The problem is that created .a libraries aren't created only patches are overwritten. Redundant information may remain with any changes.

Edit:
Latest FFmpeg GCC 13.0.1 20230423/NASM 2.17rc0 20230220 converter test AVX.
https://github.com/FFmpeg/FFmpeg/com...fd3a96d77ecc6b

HTjpeg2000 decoder has been completely rebuilt. Now it works.
AOM codec doesn't like the new GCC. I don't know. Is it better to use AOM or AVM?
Theora codec has problems. Blurred frames.
The mov container doesn't like to decode CAVS, AVS2, AVS3.
Problem with AAC encoder float

It seems FFmpeg with GCC/NASM won't work any better. My knowledge of creating FFmpeg ends.
https://github.com/Jamaika1/plugins_...de5edb9cf2418d
https://www.sendspace.com/file/6jpbi2

Edit:
Added updates in May:
Added ffmpeg FFmpeg/FFmpeg@41dd50ad
Added xevc mpeg5/ffevc@8ca6b5f
Added vvc dec ffvvc/FFmpeg@b1c8bd1
Added x265 multicoreware/x265_git@3dae0c3
Added dav1d videolan/dav1d@6afabf8
Added LittleCMS2 mm2/Little-CMS@2dec684
Added libwebp webmproject/libwebp@761f49c
Added harfbuzz harfbuzz/harfbuzz@afd432d
Added freetype freedesktop/freetype@36a086b
Added aom jbeich/aom@578a0b3
Added lzma tukaani-project/xz@2cf5ae5
Added zlib madler/zlib@6658868
Added bzip2 bzip2/bzip2@2d83939
Added libxml2 GNOME/libxml2@e07f765

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

News plus new video codec samples:
Added svt-av1 AOMediaCodec/SVT-AV1@ea296ef
Added aom jbeich/aom@51b883e
Added mstorsjo/fdk-aac@3f864cc ??? https://github.com/schreibfaul1/FDK-AAC-DECODER-in-C
Added cpuinfo pytorch/cpuinfo@b16eacd
Added jpegxl libjxl/libjxl@466e243
Change davs2 xatabhk/davs2-10bit@6b944dc

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

And after the May weekend.
News plus new video codec samples:
https://github.com/FFmpeg/FFmpeg@2dd9b407
https://github.com/ffvvc/FFmpeg@580a67f9
https://github.com/jbeich/aom@6009df0
https://github.com/videolan/dav1d@8af8244
https://github.com/harfbuzz/harfbuzz@5ec0cca
https://github.com/GNOME/libxml2@3463063
https://gitlab.freedesktop.org/freet...etype@8fe50c2a
https://github.com/tukaani-project/xz@c247d06
Fix name libcelt, libvorbis, libspeex, libcodec2

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

Test fortran gcc-14-20230507-64
News plus new video codec samples:
https://github.com/FFmpeg/FFmpeg@8564b4a
https://github.com/ffvvc/FFmpeg@4a0266b
https://github.com/mpeg5/ffevc@ba38046
https://github.com/drowe67/codec2@f68a2fe
https://github.com/videolan/dav1d@8a104cf
https://bitbucket.org/multicoreware/x265_git@34532bd
https://github.com/harfbuzz/harfbuzz@5d543d6
https://github.com/GNOME/libxml2@687a2b7
https://gitlab.freedesktop.org/freet...etype@3af4772d
https://github.com/GNOME/glib@fde0683 + libgnuintl 0.21.0 + valgrind-3.21.0 delete failed attempt

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

News ffmpeg plus new video codec samples:
https://github.com/FFmpeg/FFmpeg/com...2727f12af5c535
https://github.com/mpeg5/ffevc/commi...9cb6a65531faef
https://github.com/harfbuzz/harfbuzz...910a105536f8c2
https://gitlab.freedesktop.org/freet...7e9e47fc84c6eb
https://gitlab.freedesktop.org/cairo...43890b440e9a80
https://github.com/GNOME/libxml2/com...4bb42a63caeeea
https://github.com/xiph/speex/commit...9825b9f79b686c

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

Last edited by Jamaika; 28th May 2023 at 11:34.
Jamaika is offline   Reply With Quote
Old 28th May 2023, 11:35   #2  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 665
News ffmpeg plus new video codec samples:
https://github.com/FFmpeg/FFmpeg/com...f5274b1f986729
https://github.com/mpeg5/ffevc/commi...12e2524e2d7888
https://github.com/videolan/dav1d/co...673acb649577fb
https://github.com/harfbuzz/harfbuzz...d02f8dbe2a84cf
https://gitlab.freedesktop.org/freet...329bd2fb2a85ef
https://gitlab.freedesktop.org/cairo...0d97845a0c727f
https://github.com/GNOME/libxml2/com...7528274efebe44
https://github.com/tukaani-project/x...a15838a0d00878
https://github.com/mm2/Little-CMS/co...03a79ca908b5a4
https://github.com/libass/libass/com...8603edb87da2fd
https://github.com/webmproject/libwe...7242ceaa6eaf75
https://github.com/google/highway/co...4a2369f2f2480a
https://gitlab.com/AOMediaCodec/SVT-...4748b6633975ec
https://github.com/libjxl/libjxl/com...bc1b3b8973bb3d
https://github.com/jbeich/aom/commit...ff0bf167e24df3

Problem playing cavs, xvid, xeve, webm
Problem creating xeve
Could my ffmpeg contain errors? They can be, this is manually assembled ffmpeg.
Adding the https://github.com/FFmpeg/FFmpeg/com...591d8ca7f6c1de patch to gcc 11.3.1 causes aac encoder to suddenly work.
Code:
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> vvc (libuvg266))
  Stream #0:1 -> #0:1 (aac (aac_fixed) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
Compiled: INTEL, flags: MMX SSE SSE2 SSE3 SSSE3 SSE41 SSE42 AVX
Detected: INTEL, flags: MMX SSE SSE2 SSE3 SSSE3 SSE41 SSE42 AVX
Available: sse2(2) sse41(7)
In use: sse2(1) sse41(7)
--owf=auto value set to 2.
--threads=auto value set to 4.
Output #0, avi, to 'output_uvg266.avi':
https://www.sendspace.com/file/28e0ga
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 05:44.


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