Giter VIP home page Giter VIP logo

Comments (10)

joedrago avatar joedrago commented on May 26, 2024 1

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.

joedrago avatar joedrago commented on May 26, 2024 1

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.

joedrago avatar joedrago commented on May 26, 2024 1

Yes.

from libavif.

HappySeaFox avatar HappySeaFox commented on May 26, 2024

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.

monken avatar monken commented on May 26, 2024

@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.

wantehchang avatar wantehchang commented on May 26, 2024

@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.

monken avatar monken commented on May 26, 2024

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.

joedrago avatar joedrago commented on May 26, 2024

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.

HappySeaFox avatar HappySeaFox commented on May 26, 2024

It looks like the recently added avifIO functionality fixes the issue?

from libavif.

HappySeaFox avatar HappySeaFox commented on May 26, 2024

Great! :) I guess this issue could be closed then.

from libavif.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.