Bumping again.... I have the same issue... Looking at the JNI-layer both the picturetaken and previewframe callbacks seem to end up running
JNICameraContext::copyAndPost And that uses the size and buffer set by the call to addCallbackBuffer.... Setting a large enough buffer able to hold both preview-frames and encoded pictures solves the problem.... You will only see the problem if the preview-frames are smaller than an encoded picture... In my case I have a preview of 640x480 and 16bpp --> 614400bytes.... the encoded pictures are roughly 1Mb ... --> No callback! Since one can never know how big the encoded pictures are (you can only calculate an upper limit, if you expect the encoded image to be smaller than RAW format)... So if you have a picture size of 8MPixels and 24bit colors, you need to actually have 24MiB buffers allocated to be sure.... overkill! I really think that we should have two different methods to set preview callback buffers and picture callback buffers. i.e. add: addPreviewCallbackBuffer and addPictureCallbackBuffer deprecate: addCallbackBuffer I also think that if the buffers are too small the JNI layer should fallback to the old allocation-mode, print a warning, and return the buffer anyway! Not discard it. Regards // Robert On Dec 14 2010, 11:14 pm, Stephen Lebed <srle...@gmail.com> wrote: > In the app I'm working on, I'm using Camera.addCallbackBuffer and > Camera.setPreviewCallbackWithBuffer to control the camera preview. > BTW, this has been one of the best fixes in Froyo yet! No more GC > anymore! > > I'm trying to take a picture, and sometimes it works, saving the image > to the sd card, and sometimes it doesn't. When it doesn't work, the > preview is frozen, but the app is still running. For instance, I can > still call up the menu. So its not locking up the app at all. I've > tracked it down to a memory allocation issue I believe. It seems that > the camera is using the buffers from the preview to store the picture > data. I could be wrong about this. I've upped the memory buffers > used in the addCallbackBuffer, and it seems it fix the problem, but > shouldn't there be a seperate buffer for the snapped picture data? > > Is there a way to allocate a buffer for the Camera.takePictureCallback > routine to store the data into? > Is there a better way to make sure the Camera has enough memory to use > the addCallbackBuffers and take a full size photo? > Is anyone else experiencing this problem using the camera preview > buffers and taking a full size picture? > > Any help is greatly appreciated. > > Best, > Stephen Lebed > Developer of 'On The Level' and 'SL DigiSlate' -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en