Releases: wolfpld/vv
vv 3.2
JPEG color management
This release correctly applies color profiles to JPEG files (see https://regex.info/blog/photo-tech/color-spaces-page1 for source image).
Before | After |
---|---|
![]() |
![]() |
OpenEXR view windows
EXR images with more complex data and display windows are now loaded correctly.
Before | After |
---|---|
![]() |
![]() |
AgX tone mapping operator
The tone mapping operator for viewing HDR images can be selected with the new command line option -t
. In addition to the previously available PBR Neutral operator, the AgX operator is now supported, with two optional looks (golden and punchy).
PBR Neutral | AgX | AgX golden | AgX punchy |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Support for CMYK in JPEG
With this release, vv is now able to load and properly display CMYK JPEG images (see https://en.wikipedia.org/wiki/File:Channel_digital_image_CMYK_color.jpg for source image).
gwenview | vv 3.2 |
---|---|
![]() |
![]() |
JPEG rotation
Image rotation metadata is now properly read and applied to JPEG files.
Before | After |
---|---|
![]() |
![]() |
Alpha channel in sixel mode and block mode
Both sixel and block mode do not support transparency, which was not accounted for before. The alpha channel is now replaced by a solid background when these modes are active.
Before | After |
---|---|
![]() |
![]() |
Sixel compatibility
Image data emitted in sixel mode is now compatible with a much wider variety of terminal emulators, at the expense of lower image quality. Terminal capability checks have been extended to include more terminals with sixel support.
Before | After |
---|---|
![]() |
![]() |
JPEG library compatibility
Previously, vv required libjpeg-turbo to build and run. This release adds support for the classic libjpeg library.
vv 3.1
This release introduces a number of optimizations that take advantage of modern hardware capabilities. This includes multi-core processing and SIMD code in three variants:
- SSE4.1 + FMA,
- AVX2,
- AVX512.
Note that FMA is typically provided together with AVX2, so the SSE4.1 code path won't be of much use to anyone (it's still needed to process the data if the number of pixels in the image is not divisible by two, which is an extreme edge case).
Since the x64 baseline only mandates SSE2 support, vv is now built with the -march=native
option by default. This enables compiler-level support for all the SIMD features your CPU supports. It also makes the resulting executable less portable, which can be a problem in some use cases. You can use the MARCH_NATIVE
CMake option to turn this off.
The optimizations make loading EXR, HEIF and AVIF files significantly faster. One of the test AVIF HDR image files that took 8+ seconds to load with vv 3.0 now loads in 0.8 seconds on my machine.
This release also introduces a new option, -w file.png
, which saves the decoded image to a file instead of printing it to the screen.
vv 3.0.1
vv 3.0
Color management
This release introduces proper handling of color profiles embedded in image files. This is an important feature in today's world where things are no longer exclusively sRGB. Color management is implemented in this release for OpenEXR, JPEG XL, HEIF, and AVIF images.
Image type | Before | After |
---|---|---|
EXR | ![]() |
![]() |
EXR | ![]() |
![]() |
AVIF | ![]() |
![]() |
High dynamic range
The HDR tone mapping pipeline previously available for OpenEXR images has been generalized for use with other image types that can carry HDR data. HDR processing currently supports OpenEXR, HEIF, AVIF, JPEG XL, and RGBE images.
Image type | Before | After |
---|---|---|
AVIF | ![]() |
![]() |
AVIF | ![]() |
![]() |
JPEG XL | ![]() |
![]() |
JPEG XL | ![]() |
![]() |
Animation support
Added playback of animations contained in WebP images. This is generally available on all terminals with the text-only fallback mode. Animation playback via the Kitty graphics protocol has very limited support in terminal emulators at the moment, but is also available. Images displayed via the Kitty protocol will continue to animate even after vv has stopped running, as shown in the video below.