* heifsave: make it possible to use a specific encoder
* argument label: switch to leading capital letter
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>
* add VipsForeignHeifEncoder enum
* correct type
* implement reviewer feedback
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>
* nsgifload: avoid minimise after mapping
Not reliable on Windows.
* nsgifload: prefer use of `VIPS_FREEF` macro
* Improve `test_descriptors.c`
* Only build `test_descriptors` when targeting Linux
* compiles
* note changelog
and switch to FATSTRIP (much quicker)
* don't duplicate header fields in fitssave
be careful not to set records twice in save
see https://github.com/libvips/libvips/issues/3113
* tiny polish
* libnsgif: update script: Fix to handle dir with no patches
* libnsgif: Update to latest upstream
Fixes loading of broken gifs with truncated final frame.
* nsgifload: Call nsgif_data_complete after data scan
This allows libnsgif to distinguish between awaiting more
data, and a broken truncated GIF. In the latter case we
can display what we have.
* reimplement threadpool
just a set of threads that get recycled
"ninja test" passes and dzsave seems to work, though pytest fails for
some reason
* clean up threading code a bit
move base stuff into thread.c, so we have a simple
thread -> threadset -> threadpool
layering
* start trying to revert g_threadpool
based on the original commit
* working!
nice low systime again
still need to repply cnages to threadpool.c since 80e0cc3d1
* reapply fixes from master
so threadpool.c is now up to date
* rename VipsThread as VipsWorker
a bit less confusing
* use a semaphore to count workers in a pool
* tidy up
* formatting
* dynamic threadpool sizing
based on counting the number of blocked threads in each pool
it works, but the improvement is not great :(
* add "concurrency" metadata item
so operators can hint threadpool size (dzsave especially)
* don't use thinstrip for small images
* add RGB mode to openslide
since flatten was taking 20% of CPU time for dzsave
* fix up rgb mode
now actually works
* make the tile buffer per thread
in the new openslideload rgb mode
* fix dynamic pool downsize
* mild refactoring
* fix the buffer system
oops, turned it off by mistake
* all done!
* revise changelog
* Update libvips/iofuncs/threadset.c
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>
* Update libvips/iofuncs/threadset.c
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>
* LSan: add libMagickCore to suppression file
* Revert "Remove mutex lock for VipsThreadStartFn"
This reverts commit 41440491.
* add VIPS_MAX_THREADS
to set a hard limit on the threadset size
* Revert "Revert "Remove mutex lock for VipsThreadStartFn""
This reverts commit 77e8520966ba79194fff3b4e648bbd295cd5c260.
* remove sslock from sink.c
* move fixed threadpool build to init
not first use
* add some doc comments
* revert test suite threshold change
* add a test for MAX_THREADS
and move the test tmp/ area into the builddir
* limit VIPS_MAX_THREADS to sane values
* use tabs rather than spaces
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>
* spngsave: ensure quantisation occurs last
i.e. after setting the metadata and phyiscal pixel dimensions,
since quantisation will overwrite the image.
* spngsave: avoid over-allocation of temporary buffer
For low-bitdepth write and palette-based output.
* Inverted order of TIFF tag writing when saving multi-page subifd pyramids to ensure that subifd pyramid layers are correctly tagged as reduced-image subfile type and not as pages
* Use if-else clause to avoid tag overwriting