strukturag / libheif

libheif is an HEIF and AVIF file format decoder and encoder.
Other
1.61k stars 294 forks source link

Competition and trends in the github library. #1069

Open Jamaika1 opened 6 months ago

Jamaika1 commented 6 months ago

At the end of the year I look at what has changed. A new AV2 codec has arrived, and it is unknown what its future will be. The joke is that you can't install AOM and AVM together because they have the same function names. Is this a transitional version or maybe a new codec? Who knows that. webp2 changed practically nothing. Just added libjxl. It is no longer compatible with the new libavif. The VVC C++11 codec did not appear. There are either trial versions or in C++17 or higher.

HEIF example from the movie vvc MP4Box.exe -add-image output_uvg266.mp4:primary -ab heic -new image.heic HEIFinfo_avx.exe image_vvc.heif MIME type: image/heif main brand: mif1 compatible brands: mif1, heic

image: 1920x1080 (id=1), primary colorspace: YCbCr, unknown bit depth: 15,-1 No information about codec type.

JpegXS library is still in beta. https://jpeg.org/jpegxs/software.html libjpeg-turbo 8/12/16bit (losseless) codec appeared, but it is unknown whether jpegxt/ls was therefore discontinued and abandoned. How does this relate to heif. As for ffmpeg jpegls is compatible(charls), jpegxt is not. https://github.com/libjpeg-turbo/libjpeg-turbo/commit/be96fa0a403e5d084719757f7b8241d20393246d https://github.com/thorfdbg/libjpeg/commit/9e0cea29d7ba7a2c1e763865391bc94b336da25e https://github.com/team-charls/charls/commit/0f47e2bcbee813aeb1a3c20823a7ddccebe9438b libheif converts j2k,htj2k but can't import and export j2k/ht2k. There is no plugin in ffmpeg

cwp2_avx.exe image.jpg -info -q 100 -nometadata -mt -effort 7 -uv_mode 2 -csp 0 -o image.wp2 av1enc_avx.exe -q 100 -444 -size 280x420 -effort 7 -thread 4 -tune butteraugli image.wp2 -d image.av1 av2enc_avx.exe -q 100 -444 -size 280x420 -effort 7 -thread 4 -tune ssim image.wp2 -d image.av2 avifenc_aom_avx.exe -c aom -l -d 8 -y 444 -r full -s 7 -j 4 image.jpg image1.avif avifenc_avm_avx.exe -c avm -l -d 8 -y 444 -r full -s 7 -j 4 image.jpg image2.avif heifenc_avx.exe image.jpg --verbose --avif -L -q 100 -e aom --no-alpha -p speed=7 -p chroma=444 -p threads=4 -p tune=ssim --matrix_coefficients=0 --full_range_flag=1 -o image3.avif heifenc_avx.exe image.jpg --verbose -L -q 100 -e x265 --no-alpha -p chroma=444 -p tune=ssim --matrix_coefficients=0 --full_range_flag=1 -o image1.heif heifenc_avx.exe image.jpg --verbose -L -q 100 -e kvazaar --no-alpha --matrix_coefficients=0 --full_range_flag=1 -o image2.heif heifenc_avx.exe image.jpg --verbose --jpeg2000 -L -q 100 -e openjpeg --no-alpha --matrix_coefficients=0 --full_range_flag=1 -o image3.heif heifenc_avx.exe image.jpg --verbose --htj2k -L -q 100 -e openjph --no-alpha --matrix_coefficients=0 --full_range_flag=1 -o image4.heif

bradh commented 6 months ago

Possibly this should be a Discussion item (not an issue).

farindk commented 6 months ago

Possibly this should be a Discussion item (not an issue).

Yes, but @Jamaika1 thanks anyway for the collection of information.

A new AV2 codec has arrived, and it is unknown what its future will be. The joke is that you can't install AOM and AVM together because they have the same function names.

On the other hand, that seems to make the implementation simple if we can simply copy/paste the AOM plugin code to a large extent.

The VVC C++11 codec did not appear. There are either trial versions or in C++17 or higher.

Does that matter? I mean both, that it is C++17, and whether anyone uses VVC at all. I have never seen a valid VVC in HEIF file. That's why all development in libheif for that has stopped.

bradh commented 6 months ago

JpegXS library is still in beta. https://jpeg.org/jpegxs/software.html

While JPEG-XS can be wrapped in HEIF, its pretty pointless. The whole point of XS is very low latency - less than one frame. That goes away if you need a file wrapper.

bradh commented 6 months ago

libheif converts j2k,htj2k but can't import and export j2k/ht2k. There is no plugin in ffmpeg

To be fair, the convert (decode) and encode tools are examples.

You may be able to build gdal with a recent version of libheif to get conversion from JPEG-2000 to HEIF-with-JPEG2000, and other combinations like that.

Jamaika1 commented 1 week ago

Testing libheif https://forum.doom9.org/showthread.php?p=2003531#post2003531

New codec on github jpegxs. https://github.com/OpenVisualCloud/SVT-JPEG-XS