diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2012-07-25 16:09:34 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-07-25 16:09:34 -0700 |
commit | 28567defef0ba95cb38f2d80eba30b01db207a77 (patch) | |
tree | 4a8ca4bafe5e754fe76266c0a947de84624d94f7 /services | |
parent | 82f517ba654ca4891b82ebe604dbd004b66a7b2d (diff) | |
parent | 803cbf6190f16f7b2c43cbc51d0df21ec888abdd (diff) | |
download | frameworks_av-28567defef0ba95cb38f2d80eba30b01db207a77.zip frameworks_av-28567defef0ba95cb38f2d80eba30b01db207a77.tar.gz frameworks_av-28567defef0ba95cb38f2d80eba30b01db207a77.tar.bz2 |
Merge "Camera2: Use more buffers for video encoding."
Diffstat (limited to 'services')
-rw-r--r-- | services/camera/libcameraservice/Camera2Client.cpp | 6 | ||||
-rw-r--r-- | services/camera/libcameraservice/Camera2Client.h | 5 |
2 files changed, 6 insertions, 5 deletions
diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp index 2e1940a..47d1588 100644 --- a/services/camera/libcameraservice/Camera2Client.cpp +++ b/services/camera/libcameraservice/Camera2Client.cpp @@ -769,7 +769,7 @@ void Camera2Client::releaseRecordingFrame(const sp<IMemory>& mem) { } buffer_handle_t imgBuffer = *(buffer_handle_t*)(data + 4); ALOGV("%s: Camera %d: Freeing buffer_handle_t %p", __FUNCTION__, mCameraId, - imgBuffer, *(uint32_t*)(data + 4)); + imgBuffer); res = mRecordingConsumer->freeBuffer(imgBuffer); if (res != OK) { ALOGE("%s: Camera %d: Unable to free recording frame (buffer_handle_t: %p):" @@ -1623,7 +1623,7 @@ void Camera2Client::onRecordingFrameAvailable() { memcpy(data, &type, 4); memcpy(data + 4, &imgBuffer, sizeof(buffer_handle_t)); ALOGV("%s: Camera %d: Sending out buffer_handle_t %p", - __FUNCTION__, mCameraId, imgBuffer, *(uint32_t*)(data + 4)); + __FUNCTION__, mCameraId, imgBuffer); currentClient = mCameraClient; } // Call outside mICameraLock to allow re-entrancy from notification @@ -2615,7 +2615,7 @@ status_t Camera2Client::updateRecordingStream() { if (mRecordingConsumer == 0) { // Create CPU buffer queue endpoint - mRecordingConsumer = new MediaConsumer(4); + mRecordingConsumer = new MediaConsumer(kRecordingHeapCount); mRecordingConsumer->setFrameAvailableListener(new RecordingWaiter(this)); mRecordingConsumer->setName(String8("Camera2Client::RecordingConsumer")); mRecordingWindow = new SurfaceTextureClient( diff --git a/services/camera/libcameraservice/Camera2Client.h b/services/camera/libcameraservice/Camera2Client.h index d7836ca..83fe94e 100644 --- a/services/camera/libcameraservice/Camera2Client.h +++ b/services/camera/libcameraservice/Camera2Client.h @@ -238,8 +238,9 @@ private: sp<Camera2Heap> mRecordingHeap; // TODO: This needs to be queried from somewhere, or the BufferQueue needs - // to be passed all the way to stagefright - static const size_t kRecordingHeapCount = 4; + // to be passed all the way to stagefright. Right now, set to a large number + // to avoid starvation of the video encoders. + static const size_t kRecordingHeapCount = 8; size_t mRecordingHeapHead, mRecordingHeapFree; // Handle new recording image buffers void onRecordingFrameAvailable(); |