diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/CameraSource.cpp
index 87d7ebb..476b36d 100644
--- a/media/libstagefright/CameraSource.cpp
+++ b/media/libstagefright/CameraSource.cpp
@@ -119,23 +119,6 @@
     }
 }
 
-static int bytesPerPixelTimes10(const char *colorFormat) {
-    LOGI("color format: %s", colorFormat);
-    return 20;
-#if 0
-    // XXX: Fix Camera Hal bug?
-    // On sholes, it returns CameraParameters::PIXEL_FORMAT_YUV420SP???
-    if (!strcmp(colorFormat, CameraParameters::PIXEL_FORMAT_YUV422SP) ||
-        !strcmp(colorFormat, CameraParameters::PIXEL_FORMAT_YUV422I)  ||
-        !strcmp(colorFormat, CameraParameters::PIXEL_FORMAT_RGB565)) {
-        return 20;
-    } else if (!strcmp(colorFormat, CameraParameters::PIXEL_FORMAT_YUV420SP)) {
-        return 15;
-    }
-    CHECK_EQ(0, "Unknown color format");
-#endif
-}
-
 status_t CameraSource::start(MetaData *) {
     LOGV("start");
     CHECK(!mStarted);
@@ -144,13 +127,6 @@
     CHECK_EQ(OK, mCamera->startRecording());
 
     mStarted = true;
-    mBufferGroup = new MediaBufferGroup();
-    String8 s = mCamera->getParameters();
-    CameraParameters params(s);
-    const char *colorFormat = params.getPreviewFormat();
-    const int size = (mWidth * mHeight * bytesPerPixelTimes10(colorFormat))/10;
-    mBufferGroup->add_buffer(new MediaBuffer(size));
-
     return OK;
 }
 
@@ -222,6 +198,11 @@
         mFrameTimes.erase(mFrameTimes.begin());
         ++mNumFramesEncoded;
     }
+    if (mBufferGroup == NULL) {
+        mBufferGroup = new MediaBufferGroup();
+        CHECK(mBufferGroup != NULL);
+        mBufferGroup->add_buffer(new MediaBuffer(frame->size()));
+    }
 
     mBufferGroup->acquire_buffer(buffer);
     memcpy((*buffer)->data(), frame->pointer(), frame->size());
