Comments (10)
I thought a lot about this, and it might not be too awful to hook up. The plan (for read) would be to leave the memory streams and parsing code intact, but add in a layer specifically for avifParse()
and the sample gathering code. Seeing as avifParse()
simply skips over the largest part of the file (mdat
) and the other top-level boxes are "small", a little bit of cleverness at the toplevel parse function should buy quite a lot.
I'd probably make the reader/writer API itself responsible for the buffer it returns to libavif, to facilitate the avifROStream mechanisms that exist, and to allow the current fully-in-memory path to exist. It should be as simple as Dale suggests (please give me x bytes from offset y).
from libavif.
Writing will be trickier, as the current flow requires that I know all of the final sample sizes and offsets in order to generate the correct meta
box. It'd be easy to put in a writer API, but without any kind of significant memory savings, it'd just be "for show". I'll have to think about that one.
from libavif.
Yes.
from libavif.
It would be great if libavif provides API allowing to pass our own reading/writing/seeking i/o functions. Like it does libpng (png_set_read_fn, png_set_write_fn) or libtiff (TIFFClientOpen).
from libavif.
@joedrago I'm less concerned about the output AVIF buffer but would prefer a way to stream the input file (which is uncompressed) into the decoder. Is this already possible?
from libavif.
@joedrago I'm less concerned about the output AVIF buffer but would prefer a way to stream the input file (which is uncompressed) into the decoder. Is this already possible?
Hi Moritz: Did you mean the input file is compressed or uncompressed? The input to the decoder should be a compressed image file.
from libavif.
Right, but let's say I have a 10MB PNG file then preferably I'd be able to feed it to the encoder in chunks instead of loading the image in memory and passing it to the encoder. I assume that's problematic because we also have to go through the RGB -> YUV conversion.
from libavif.
libavif itself has no PNG support; only the command line tool avifenc does. If your goal is to read in a non-AVIF and give it to libavif in your own tool, you can read the image in however you want. I don't see how streaming PNG input is relevant to libavif?
from libavif.
It looks like the recently added avifIO
functionality fixes the issue?
from libavif.
Great! :) I guess this issue could be closed then.
from libavif.
Related Issues (20)
- ci-windows failure "unknown file: error: SEH exception with code 0xc000001d thrown in the test body" HOT 4
- Sample HDR AVIF decoded to JPG shows incorrect colors HOT 8
- How to build a dynamic library that statically links all dependencies? HOT 1
- Ignore and skip FullBoxes with an unrecognized version
- How to build the.A use of iOS platform? HOT 2
- Make libyuv package-friendly dependency HOT 2
- Roll YCgCo-R out HOT 1
- Add Homebrew install instructions and avifdec/avifenc examples to README HOT 6
- autoconf etc. HOT 1
- avifImageRGBToYUV should set color space to default values HOT 2
- Findrav1e.cmake ignores library dependencies listed in the generated pkgconfig file HOT 5
- [Function Request] avifenc supports svt and rav1e encoder options key-value HOT 2
- MSYS/MinGW32: Linking error, undefined references to Nt file functions HOT 2
- Noticeable color shift HOT 6
- Does CVE-2024-1580 affect libavif with dav1d decoder? HOT 1
- Static build issues on MSYS2 HOT 4
- sharpyuv conversion failed HOT 2
- libavif.a should not be a combined archive library HOT 5
- Not able to build static build on amazon linux 2023 HOT 9
- GIF encodes with wrong frame rate HOT 14
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 libavif.