General Specialist

2006-11-12

Avoiding the "After Effects error: could not create image buffer"

Here's a few tips on how to avoid the dreaded image buffer error. But first a little background on why it happens...

Unlike many other compositing and 3D programs, After Effects doesn't use a scanline renderer. Instead it renders each layer and then stacks it on top of the previously rendered layers. While this gives great performance for layers that can be cached and use several times without re-rendering, it can spell disaster when you are trying to work with bigger sources and output resolutions.

While you can use Shake to zoom in on a giant 30.000 by 30.000 pixel image on an old machine, doing the same thing in After Effects takes a bit of imagination, plus a knowledge of how to tweak AE's memory settings. Basically, it comes down to the memory being to fragmented for AE to be able to hold the entire frame/layer in one contiguous piece of RAM. Here's how you avoid that from happening:

1. Set Your Preferences Correctly
Start out by making sure you have set After Effects to use the optimal settings. These should always be your default values, and you should reset them according to these settings once you have gotten around the image buffer errors!
Maximum Memory Usage: 120%
Maximum RAM Cache Size: 60%
Enable Disk Cache: On
Maximum Disk Cache Size: At least 2 GB (I use 8-12 GB, typically)
Prevent DLL Address Space Fragmentation: On

The Maximum Memory Usage tells AE how much of the total amount of installed RAM it can use as a maximum. Why 120% Maximum Memory Usage you might ask, why not 100% or even a sensible 95%? Well, since running slow sure beats running out of memory, that's why! If you set it over 100%, AE will use the harddisk as virtual memory (slow but sometimes necessary.)

The Maximum RAM Cache Size is the amount of RAM (set in "Maximum Memory Usage") that After Effects uses to load sources, render effects and composites into, plus to store already rendered frames in. The setting of 60% is a moderate one that over time has proven to work optimally for most projects. Lowering this value will slow down your rendering and previewing speed, but it is sometimes necessary in order to render large layers/comps.

The Disk Cache is where AE can off-load already rendered images/frames/layers/comps onto your harddrive instead of throwing them away when you are running short on RAM. Note that AE will only use the Disk Cache if it is faster to read a frame from the Disk Cache than it is to re-render it.
If possible, put the Disk Cache on a fast harddrive, preferably not the same as your operating system or your source material (the above screen shot was taken on my laptop, where you seldom have the luxury of three drives.)

If you're on Windows, make sure you check Prevent DLL Address Space Fragmentation, as AE will then try to keep more of the memory in larger chunks. It should be left on, unless it is causing an extremely rare crash (the reason it is not enabled by default.)

Make sure you turn off multi-processing in After Effects CS3 (and Nucleo / Nucleo Pro if you have that plugin.)

As a final step, avoid OpenGL previews, instead use Adaptive Resolution.

OK, with these settings, try to see if you can preview/render the problematic comp. If not, continue with the next step...


2. Lower the Number of Undos
Every operation that AE has to be able to Undo takes up valuable memory space. Try to Purge Undos from the Edit menu. If that doesn't help, go into the Preferences and lower the number of Undos to just a few, or even just one step. (Remember to set it back to somewhere between 20 and 32 when you've gotten the renders done.)

Still having trouble? Then let's try the next remedy...


3. Lower the Image Cache: Maximum RAM Cache Size
Even though the Image Cache will speed up renders (by avoiding having to re-render stuff) it leaves less memory to be used for other things, which can lead to the fragmentation of the memory.
Here's how Michael Natkin of the Adobe After Effects team explains it:
"Yep, it is counterintuitive, isn't it! Here's the reason. Just like a
hard drive, your address space can get fragmented. So if you have the cache percentage set high, AE will try to use a lot of RAM and though you may have enough left for the next image buffer, it may be so fragmented that there is no place to put it. So by lowering the cache percentage, you reduce the fragmentation and paradoxically are able to fit that frame.
Lower the Image Cache bit by bit, until the error goes away. If you have it as low as it will go (10%,) there's only one option left...


4. Chop Up Your Sources
Split the source image up into several layers (somewhere around 2.048 by 2.048 pixels each) in Photoshop, then import the PSD file as Composition Cropped Layers. Press your Caps Lock key on the keyboard (to prevent AE from trying to render a preview) and then change the preview mode to Wireframe. Open up the composition, select all layers and change their mode to Alpha Add. Finally copy all layers and paste them into a comp with the size of your final output.


It has worked for me with 16-bit images over 24.000 by 24.000 pixels.

- Jonas

Labels: , ,

27 Comments:

  • "It has worked for me with 16-bit images over 24.000 by 24.000 pixels."

    and on which machine?Specs?

    By Anonymous Anonymous, at Tuesday, November 14, 2006  

  • I created all the satellite image fly-overs for The Planet which was shown in cinemas in Sweden during September 2006 and is right now showing in four one-hour episodes in SD and HD on Swedish TV.

    All-in-all I delivered over 17 minutes of animation in 1920x1080, 25 progressive frames per second in 16-bit uncompressed format, which added up to around 400 GB of TIFF sequences.

    All this was created on my trusty PC I built a couple of years ago when I clearly had too much time since I built my own water-cooling into a standard chassis. By today's standard it isn't a real screamer, but it still works OK.

    I have a single AMD Athlon XP 3200+ (2.4 GHz I believe), 2.5 GB of Corsair PC3200 DDR RAM (CAS 2.0 timing), an Abit "NF7-S2" nForce2-based motherboard, an 80 GB Seagate 7200.7 IDE as system disk and two 80 GB Seagate Barracuda V SATA drives striped to RAID 0 configuration via the RAID controller on the motherboard. To top things off, I have one of the first-generation nVidia GeForce 6800 cards with 128 MB of VRAM.

    As you can see, you can get a faster Dell system today for around $1.200...

    By Blogger Jonas Hummelstrand, at Tuesday, November 14, 2006  

  • I got around the errors by using Gridiron Nucleo (I am currently using Nucleo Pro). Gives faster renders, and no errors at all.

    By Anonymous Anonymous, at Wednesday, December 13, 2006  

  • Since both Nucleo and Nucleo Pro is just a bridge between your After Effects user interface and hidden AE instances that render frames in the background and then push these frames into your main application, you should look at your memory settings, since it is AE that can't create the image buffer, not the plugin.

    By Blogger Jonas Hummelstrand, at Wednesday, December 13, 2006  

  • Tack! Finally I can do renders over night without worrying over render errors in the morning!

    By Anonymous Andreas, at Sunday, March 11, 2007  

  • Hi, thanks for the article. I have one question, i'm work on amd3200+ with 160gb of hard disk and 1gb of Ram, when i try to save the "preview RAM" After Effects crash and close. some idea about this?. thanks.

    By Anonymous Anonymous, at Sunday, March 18, 2007  

  • I forgot, when i'm going to File >> export >> Adobe Premiere Pro, the type list (*.proproj) contain some
    stranger chars. (my version it's AF7). Thanks again.

    By Anonymous Anonymous, at Sunday, March 18, 2007  

  • See, the strange thing for me is that my 2160x480 comp is rendering fine on the iMac G5 with 1.5GB of RAM, but when I "Collect Files" and head over to the Intel Mac Pro w/ 4GB of RAM, it gives me this error abour 1/5 of the way through.

    Does that make any sense? Both are default installs of AE7.0 with no preferences touched.

    By Blogger Allen, at Wednesday, April 04, 2007  

  • Allen,

    That makes perfect sense! After Effects 7.0 is not "Intel native" meaning it runs in emulation mode on Intel-Macs. This emulation is called "Rosetta" and limits the amount of RAM used to 1 GB.

    Here's more info on how to best use AE7 on Intel Macs until AE CS3 is released sometime this fall.

    http://tinyurl.com/2sm54n

    http://tinyurl.com/yudxjp

    - Jonas

    By Blogger Jonas Hummelstrand, at Wednesday, April 04, 2007  

  • Jonas,

    Thank you immensely for this. It was invaluable information.

    By Blogger b. Touch, at Friday, April 20, 2007  

  • The tiling thing works a treat, I have been up all night trying to do it for my uni project, I am making a huge floor for a forest
    fantastic
    thankyou very very much indeed

    By Anonymous Anonymous, at Thursday, May 10, 2007  

  • (somewhere around 2.048 by 2.048 pixels each)

    can you clarify? is this supposed to be inches? Even if 2.048 was a solid integer, it seems awfully small.

    By Anonymous Anonymous, at Wednesday, August 15, 2007  

  • Ah, the joys of international punctuation. :-/
    I meant "two thousand forty-eight" pixels.

    Inches have nothing to do with video, as I recently posted.

    By Blogger Jonas Hummelstrand, at Wednesday, August 15, 2007  

  • Thanks alot! Step 3 worked for me!

    Cheers ;D

    By Anonymous Anonymous, at Tuesday, September 11, 2007  

  • This post has been removed by the author.

    By Blogger ricardo, at Saturday, September 22, 2007  

  • hahah!!
    finally i found the problems.. thanks a lot man..the step 3!!
    all the best..

    By Blogger ricardo, at Saturday, September 22, 2007  

  • ricardo,

    If you have an Intel-Mac, make sure you run AE CS3. Previous versions aren't Intel-native and will only get access to 1 GB of RAM under APple's "Rosetta" emulation.

    By Blogger Jonas Hummelstrand, at Saturday, September 22, 2007  

  • You truly are a hero, thank God for people like you and the medium of the internet otherwise i would have been arrested and reported to the RSPCC, the royal society for the protection of computers. I was about to throw it out the window. Ha ha.

    By Anonymous Anonymous, at Tuesday, October 02, 2007  

  • Thanks a lot, i have resolve my problem with step 1, and now i haven't any more this error

    By Anonymous Ivailo, at Friday, October 19, 2007  

  • excellent help. it appears step 3 fixed my problem. much thanks

    By Anonymous alex, at Monday, January 07, 2008  

  • Thanks, you saved my project! Just in time too. :)

    By Anonymous Anonymous, at Wednesday, February 13, 2008  

  • excellent help... but i have a project where i used a cc cylinder in a comp of 8000x1000, it is have 7 videos (720x480) side by side... i create a virtual set with a cc cylinder in this comp... so, the comp spin and a camera move around the comp... 30 seconds have the animation....
    I heve a Mac G5, dual ppc.... 2.5gb of ram... after cs3....
    I cant apply your step 4.... becase my comp have videos and not images...
    how i apply split or fragmentation in this case???

    SORRY BY MY ENGLISH!!!
    TANK YOU VERY MUCH!!!

    please...send me the ansewr in my e-mail as well...ok?
    hcmush@gmail.com

    MARCO...BRAZIL

    By Anonymous Anonymous, at Wednesday, February 20, 2008  

  • I checked another online resource and they had different ideas on the disk cache size- increasing to 8000MB seemed to do the trick.

    thanks again

    Nate,OakBrook IL

    By Anonymous Nate Boe, at Wednesday, February 20, 2008  

  • Nate,

    Glad you got it working.

    If you look again, I say "at least 2 GB" and I even have it set to 8 GB in the screen shot.

    By Blogger Jonas Hummelstrand, at Thursday, February 21, 2008  

  • Marco,

    It's the size of your 8000x1000 composition that is causing the problem. Do you have to show each of the seven videos in full resolution? If not, you could create a smaller composition since you won't need all that resolution.

    Make sure you turn off multi-processing in CS3 (and Nucleo/ Nucleo Pro if you have that plugin.)

    By Blogger Jonas Hummelstrand, at Thursday, February 21, 2008  

  • Jonas... You are a LEGEND !!! :)

    By Anonymous Ashika Bracher, at Friday, March 14, 2008  

  • Worked great. Thanks for your help.

    By Anonymous Anonymous, at Monday, April 07, 2008  

Post a Comment

<< Home