Comments (5)
Here's what I wrote back to Jeremy:
Aha, interesting. I thought it was more like a "flush" -- write now rather than buffering longer, but I did not think it caused more in total to be written.
Here's my proposal: let's not do it by default, designate ImageSpec metadata "oiio:checkpoint" (when nonzero) to indicate that an output ought to frequently checkpoint if possible, and have the TIFF driver do so when that is found. Actually, let's make it so that the integer is the number of scanlines between checkpoints, with 0 meaning not to checkpoint at all.
Sound sane to you?
from oiio.
Ah, I've learned something. You were right, it is like a flush, where it re-writes header data and new buckets.
The issue is that the code,
write_tile(...)
if (y % m_spec.tile_height) == 0)
// Checkpoint
on an 8K tiled texture run checkpoint 21824 times! So the 6.6 GB was the header being overwritten tens of thousands of time.
I've tested checkpointing with the new timer, "oiio:CheckpointInterval" and seen that it is indeed really cheap. Maybe we should default it to 'on' (1s interval?) to match the intent of current practice?
from oiio.
Do we need an option at all? Maybe instead of "every N scanlines or buckets, checkpoint" it should simply be "every N scanlines or buckets, checkpoint if you haven't done so in T seconds". Set T=60 and call it a day? That wastes no time/bytes checkpointing for fast-writing frames, or even slow-writing frames. Checkpointing only would happen for glacial frames.
Does it even need the option, or would that give reasonable behavior?
from oiio.
Yah, if we pick a large number (like 60s) it seems unobjectionable. I'll do that and get rid of the option.
from oiio.
Fixed in db01f0e
from oiio.
Related Issues (20)
- [DOC] ImageOutput: Writing Images wrong Python example code HOT 4
- [BUG] thread_pool shutdown dead lock HOT 8
- [BUG] python3.10 spec.get_string_attribute() throws a runtime exception with non-utf-8 string headers HOT 1
- [BUG] HEIF from Sony ILCE-7M4 opens incorrectly
- [FEATURE REQUEST] ImageOutput.supports("quality") HOT 2
- [BUG] converting to half with oiiotool actually converts to float HOT 6
- [BUG] Converting to cv::Mat causes segmentation fault HOT 3
- [BUG] Heap-buffer-overflow in function ICOInput::readimg in file src/ico.imageio/icoinput.cpp HOT 5
- [FEATURE REQUEST] Add `ImageBufAlgo::normalize` implementation HOT 6
- [BUG] Jpeg2000 32bit buffer write as a 8bit int instead of 16bit. HOT 1
- [FEATURE REQUEST] RAW: Expose max_raw_memory_mb setting HOT 1
- [BUG] 0.0f is raw:Exposure invalid value. range 0.25f - 8.0f HOT 4
- ctest -j16 failed about [email protected] on centos8 HOT 20
- [BUG] openImageIO/2.4.12.0/src/build-scripts/build_llvm.bash has bad pull URL HOT 1
- [BUG] 16-bit psd files saved from photoshop not showing subimages
- [FEATURE REQUEST] Support for JPEG XL HOT 1
- [BUG] neon support is disabled on macOS arm HOT 3
- memory leak in ustring
- [FEATURE REQUEST] Print build-time warnings for LGPL gotchas
- [BUG] Loosing colors when alpha=0 for png HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from oiio.