Coder Social home page Coder Social logo

Comments (10)

BradLarson avatar BradLarson commented on July 23, 2024

Is this a Release or Debug build? When you run this under the Allocations instrument and mark generations, where do you see the accumulation?

from gpuimage2.

dgsmith avatar dgsmith commented on July 23, 2024

I get this in debug and release builds. When I profile under release, looks like a lot of the memory is of the category Malloc 1.17 MiB, last few calls in the stack trace are:

swift_slowAlloc
specialized static UnsafeMutablePointer.alloc(Int) -> UnsafeMutablePointer<A>
specialized PictureOutput.cgImageFromFramebuffer(Framebuffer) -> CGImage
specialized PictureOutput.newFramebufferAvailable(Framebuffer, fromSourceIndex : UInt) -> ()

So it looks to be happening when the PictureOutput creates the CGImage, the memory just never gets released?

Let me know if I can provide any more info!

from gpuimage2.

BradLarson avatar BradLarson commented on July 23, 2024

It's possible that the data provider release callback isn't being triggered, for some reason. Try putting a print statement within the dataProviderReleaseCallback() function at the very bottom of PictureOutput.swift and see if that ever gets triggered. It did in my tests, but maybe there's something about the extraction of JPEG-encoded data that I didn't account for.

from gpuimage2.

dgsmith avatar dgsmith commented on July 23, 2024

Just tried that, it is actually getting called.

from gpuimage2.

dgsmith avatar dgsmith commented on July 23, 2024

Should I just switch to using .png's for now?

Edit: I get the same error with .png's

from gpuimage2.

BradLarson avatar BradLarson commented on July 23, 2024

I think I might have tracked down the source of this. Check out the latest commit, which should properly deallocate the memory being used by still images. The parameters were swapped in my C callback function and the correct memory was never being deallocated.

from gpuimage2.

dgsmith avatar dgsmith commented on July 23, 2024

Yep, that fixed it. Thanks!

from gpuimage2.

dgsmith avatar dgsmith commented on July 23, 2024

Hey Brad, I'm actually getting this exact same problem again with the latest updates. It seems that this time the dataProviderReleaseCallback(_:data:size:) isn't being called at all...

Still the same code as above, just writing the data to disk.

Thanks!

from gpuimage2.

spongemook avatar spongemook commented on July 23, 2024

Did you fix this problem? @dgsmith
I'm having the same problem.

from gpuimage2.

dgsmith avatar dgsmith commented on July 23, 2024

Unfortunately, I think it requires a bit more in depth knowledge than I can provide haha. Since this time, the callback doesn't seem to be getting called...leading me to think the data is not being freed properly somewhere down the line? Perhaps some change to the Swift handling of Unsafe stuff has messed with this?

from gpuimage2.

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.