diff options
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/CameraSource.cpp | 29 |
1 files changed, 5 insertions, 24 deletions
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 @@ CameraSource::~CameraSource() { } } -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 @@ status_t CameraSource::start(MetaData *) { 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 @@ status_t CameraSource::read( 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()); |