More intelligent handling of the thumbnail cache
When I'm browsing through a large stack of images, Darktable often ends up generating thumbnails for images I'm interested in only when I first view them. It would be nice if it could handle its thumbnail cache more intelligently.
My typical workflow is that I'll copy the photos off my camera and into a directory on my NAS. From there I'll have a quick look at what I have and sort them into subdirectories e.g. "Morning photo shoot", "Bride and groom", "Evening dance", and so on. Once I have a fairly well sorted "shoot" directory, I'll import those subdirectories one-by-one into Darktable and start going through the photos to find the ones worth processing further. Often, I'll have enough in a directory that Darktable can't cache all the thumbnails at once. The end result is that I scroll around the Lighttable view and end up waiting several minutes for thumbnails to generate.
Curiously it never seems to generate a thumbnail until it's actually requested, so I'm always waiting for something. I have to switch back to the Lighttable and scroll around to make DT generate the thumbs.
Could Darktable pre-generate thumbnails for images after the one I'm working on in the filmstrip? So I might be working on IMG_1234, but while I'm doing that, Darktable is generating thumbs for (say) IMG_1235 thru IMG_1260, even though I can only see IMG_1235 thru IMG_1245 on the filmstrip?
It would be even nicer if DT could do something like:
- Generate as many thumbnails as can be held in the cache, centred around the currently selected image (use the sort order of the lighttable / filmstrip as a reference for what to generate) -- don't just generate them when they're needed.
- If the cache fills, keep thumbnails from the image I'm currently looking at in the Filmstrip, and the 50% in front and behind in the filmstrip. That is to say, if the cache can hold 100 thumbs, then 50 of these could be for images before the current image in the Filmstrip, and 50 after. It might be nice to have this as a configurable option - 50%, 33% (one-third old, two-thirds new), or play around.
Does DT have a thumbnail cache on disk, or just a RAM cache? I was looking at the settings page and wasn't quite sure, as it talks about JPEG files on disk in places, and then goes on to talk about the thumbnail buffer.
I really wouldn't mind if DT used a relatively large amount of disk (say 2-4GB) for cached thumbnails, then only pulled the ones it was using into RAM. For managing the disk cache, last-accessed-time (delete the oldest thumbs) would be enough.
I think the thing that's annoying me the most is the wait for thumbs to be generated while I scroll around -- I used to use AfterShot, which had much nicer thumbnail handling, but much worse image handling. Darktable wins over AShot in highlight recovery and image quality, and that's the reason I switched.
#3 Updated by Tobias Ellinghaus over 2 years ago
Yes. 2.0 will store all the thumbnails it once created on the disk and load them when needed. About prefetching, dt already does that, maybe it's not fast enough for you to notice. In the future there will also be a way to force the generation of thumbnails for all images in the db, no need to scroll around for hours.