diff options
21 files changed, 56 insertions, 47 deletions
diff --git a/services/camera/libcameraservice/CameraFlashlight.cpp b/services/camera/libcameraservice/CameraFlashlight.cpp index 8613ac6..280bb9d 100644 --- a/services/camera/libcameraservice/CameraFlashlight.cpp +++ b/services/camera/libcameraservice/CameraFlashlight.cpp @@ -359,7 +359,7 @@ CameraDeviceClientFlashControl::~CameraDeviceClientFlashControl() { delete mMetadata; } - mAnw.clear(); + mSurface.clear(); mSurfaceTexture.clear(); mProducer.clear(); mConsumer.clear(); @@ -395,11 +395,11 @@ status_t CameraDeviceClientFlashControl::initializeSurface( return res; } - mAnw = new Surface(mProducer, /*useAsync*/ true); - if (mAnw == NULL) { + mSurface = new Surface(mProducer, /*useAsync*/ true); + if (mSurface == NULL) { return NO_MEMORY; } - res = device->createStream(mAnw, width, height, format, + res = device->createStream(mSurface, width, height, format, HAL_DATASPACE_UNKNOWN, CAMERA3_STREAM_ROTATION_0, &mStreamId); if (res) { return res; @@ -653,7 +653,7 @@ CameraHardwareInterfaceFlashControl::CameraHardwareInterfaceFlashControl( CameraHardwareInterfaceFlashControl::~CameraHardwareInterfaceFlashControl() { disconnectCameraDevice(); - mAnw.clear(); + mSurface.clear(); mSurfaceTexture.clear(); mProducer.clear(); mConsumer.clear(); @@ -810,18 +810,18 @@ status_t CameraHardwareInterfaceFlashControl::initializePreviewWindow( return res; } - mAnw = new Surface(mProducer, /*useAsync*/ true); - if (mAnw == NULL) { + mSurface = new Surface(mProducer, /*useAsync*/ true); + if (mSurface == NULL) { return NO_MEMORY; } - res = native_window_api_connect(mAnw.get(), NATIVE_WINDOW_API_CAMERA); + res = native_window_api_connect(mSurface.get(), NATIVE_WINDOW_API_CAMERA); if (res) { ALOGE("%s: Unable to connect to native window", __FUNCTION__); return res; } - return device->setPreviewWindow(mAnw); + return device->setPreviewWindow(mSurface); } status_t CameraHardwareInterfaceFlashControl::connectCameraDevice( @@ -870,7 +870,7 @@ status_t CameraHardwareInterfaceFlashControl::disconnectCameraDevice() { CameraParameters::FLASH_MODE_OFF); mDevice->setParameters(mParameters); mDevice->stopPreview(); - status_t res = native_window_api_disconnect(mAnw.get(), + status_t res = native_window_api_disconnect(mSurface.get(), NATIVE_WINDOW_API_CAMERA); if (res) { ALOGW("%s: native_window_api_disconnect failed: %s (%d)", diff --git a/services/camera/libcameraservice/CameraFlashlight.h b/services/camera/libcameraservice/CameraFlashlight.h index 30f01f0..4d5fe8d 100644 --- a/services/camera/libcameraservice/CameraFlashlight.h +++ b/services/camera/libcameraservice/CameraFlashlight.h @@ -166,7 +166,7 @@ class CameraDeviceClientFlashControl : public FlashControlBase { sp<IGraphicBufferProducer> mProducer; sp<IGraphicBufferConsumer> mConsumer; sp<GLConsumer> mSurfaceTexture; - sp<ANativeWindow> mAnw; + sp<Surface> mSurface; int32_t mStreamId; Mutex mLock; @@ -215,7 +215,7 @@ class CameraHardwareInterfaceFlashControl : public FlashControlBase { sp<IGraphicBufferProducer> mProducer; sp<IGraphicBufferConsumer> mConsumer; sp<GLConsumer> mSurfaceTexture; - sp<ANativeWindow> mAnw; + sp<Surface> mSurface; Mutex mLock; }; diff --git a/services/camera/libcameraservice/api1/Camera2Client.cpp b/services/camera/libcameraservice/api1/Camera2Client.cpp index ca14cdb..e109595 100644 --- a/services/camera/libcameraservice/api1/Camera2Client.cpp +++ b/services/camera/libcameraservice/api1/Camera2Client.cpp @@ -529,7 +529,7 @@ status_t Camera2Client::setPreviewTarget( if ( (res = checkPid(__FUNCTION__) ) != OK) return res; sp<IBinder> binder; - sp<ANativeWindow> window; + sp<Surface> window; if (bufferProducer != 0) { binder = IInterface::asBinder(bufferProducer); // Using controlledByApp flag to ensure that the buffer queue remains in @@ -541,7 +541,7 @@ status_t Camera2Client::setPreviewTarget( } status_t Camera2Client::setPreviewWindowL(const sp<IBinder>& binder, - sp<ANativeWindow> window) { + sp<Surface> window) { ATRACE_CALL(); status_t res; @@ -666,7 +666,7 @@ status_t Camera2Client::setPreviewCallbackTarget( status_t res; if ( (res = checkPid(__FUNCTION__) ) != OK) return res; - sp<ANativeWindow> window; + sp<Surface> window; if (callbackProducer != 0) { window = new Surface(callbackProducer); } diff --git a/services/camera/libcameraservice/api1/Camera2Client.h b/services/camera/libcameraservice/api1/Camera2Client.h index c6df228..c288313 100644 --- a/services/camera/libcameraservice/api1/Camera2Client.h +++ b/services/camera/libcameraservice/api1/Camera2Client.h @@ -150,7 +150,7 @@ private: typedef camera2::Parameters Parameters; status_t setPreviewWindowL(const sp<IBinder>& binder, - sp<ANativeWindow> window); + sp<Surface> window); status_t startPreviewL(Parameters ¶ms, bool restart); void stopPreviewL(); status_t startRecordingL(Parameters ¶ms, bool restart); diff --git a/services/camera/libcameraservice/api1/client2/CallbackProcessor.cpp b/services/camera/libcameraservice/api1/client2/CallbackProcessor.cpp index 143cc61..5f4fb22 100644 --- a/services/camera/libcameraservice/api1/client2/CallbackProcessor.cpp +++ b/services/camera/libcameraservice/api1/client2/CallbackProcessor.cpp @@ -55,7 +55,7 @@ void CallbackProcessor::onFrameAvailable(const BufferItem& /*item*/) { } status_t CallbackProcessor::setCallbackWindow( - sp<ANativeWindow> callbackWindow) { + sp<Surface> callbackWindow) { ATRACE_CALL(); status_t res; @@ -115,7 +115,7 @@ status_t CallbackProcessor::updateStream(const Parameters ¶ms) { BufferQueue::createBufferQueue(&producer, &consumer); mCallbackConsumer = new CpuConsumer(consumer, kCallbackHeapCount); mCallbackConsumer->setFrameAvailableListener(this); - mCallbackConsumer->setName(String8("Camera2Client::CallbackConsumer")); + mCallbackConsumer->setName(String8("Camera2-CallbackConsumer")); mCallbackWindow = new Surface(producer); } diff --git a/services/camera/libcameraservice/api1/client2/CallbackProcessor.h b/services/camera/libcameraservice/api1/client2/CallbackProcessor.h index 7fdc329..a290536 100644 --- a/services/camera/libcameraservice/api1/client2/CallbackProcessor.h +++ b/services/camera/libcameraservice/api1/client2/CallbackProcessor.h @@ -47,7 +47,7 @@ class CallbackProcessor: void onFrameAvailable(const BufferItem& item); // Set to NULL to disable the direct-to-app callback window - status_t setCallbackWindow(sp<ANativeWindow> callbackWindow); + status_t setCallbackWindow(sp<Surface> callbackWindow); status_t updateStream(const Parameters ¶ms); status_t deleteStream(); int getStreamId() const; @@ -73,7 +73,7 @@ class CallbackProcessor: int mCallbackStreamId; static const size_t kCallbackHeapCount = 6; sp<CpuConsumer> mCallbackConsumer; - sp<ANativeWindow> mCallbackWindow; + sp<Surface> mCallbackWindow; sp<Camera2Heap> mCallbackHeap; int mCallbackHeapId; size_t mCallbackHeapHead, mCallbackHeapFree; diff --git a/services/camera/libcameraservice/api1/client2/JpegProcessor.cpp b/services/camera/libcameraservice/api1/client2/JpegProcessor.cpp index 88987f9..bd9786f 100644 --- a/services/camera/libcameraservice/api1/client2/JpegProcessor.cpp +++ b/services/camera/libcameraservice/api1/client2/JpegProcessor.cpp @@ -87,7 +87,7 @@ status_t JpegProcessor::updateStream(const Parameters ¶ms) { BufferQueue::createBufferQueue(&producer, &consumer); mCaptureConsumer = new CpuConsumer(consumer, 1); mCaptureConsumer->setFrameAvailableListener(this); - mCaptureConsumer->setName(String8("Camera2Client::CaptureConsumer")); + mCaptureConsumer->setName(String8("Camera2-JpegConsumer")); mCaptureWindow = new Surface(producer); } diff --git a/services/camera/libcameraservice/api1/client2/JpegProcessor.h b/services/camera/libcameraservice/api1/client2/JpegProcessor.h index 2040b30..fbdae11 100644 --- a/services/camera/libcameraservice/api1/client2/JpegProcessor.h +++ b/services/camera/libcameraservice/api1/client2/JpegProcessor.h @@ -70,8 +70,8 @@ class JpegProcessor: int mCaptureStreamId; sp<CpuConsumer> mCaptureConsumer; - sp<ANativeWindow> mCaptureWindow; - sp<MemoryHeapBase> mCaptureHeap; + sp<Surface> mCaptureWindow; + sp<MemoryHeapBase> mCaptureHeap; virtual bool threadLoop(); diff --git a/services/camera/libcameraservice/api1/client2/StreamingProcessor.cpp b/services/camera/libcameraservice/api1/client2/StreamingProcessor.cpp index 36d143b..66d7b00 100644 --- a/services/camera/libcameraservice/api1/client2/StreamingProcessor.cpp +++ b/services/camera/libcameraservice/api1/client2/StreamingProcessor.cpp @@ -64,7 +64,7 @@ StreamingProcessor::~StreamingProcessor() { deleteRecordingStream(); } -status_t StreamingProcessor::setPreviewWindow(sp<ANativeWindow> window) { +status_t StreamingProcessor::setPreviewWindow(sp<Surface> window) { ATRACE_CALL(); status_t res; diff --git a/services/camera/libcameraservice/api1/client2/StreamingProcessor.h b/services/camera/libcameraservice/api1/client2/StreamingProcessor.h index 42e9e7a..e0cad3a 100644 --- a/services/camera/libcameraservice/api1/client2/StreamingProcessor.h +++ b/services/camera/libcameraservice/api1/client2/StreamingProcessor.h @@ -43,7 +43,7 @@ class StreamingProcessor: StreamingProcessor(sp<Camera2Client> client); ~StreamingProcessor(); - status_t setPreviewWindow(sp<ANativeWindow> window); + status_t setPreviewWindow(sp<Surface> window); bool haveValidPreviewWindow() const; @@ -108,7 +108,7 @@ class StreamingProcessor: int32_t mPreviewRequestId; int mPreviewStreamId; CameraMetadata mPreviewRequest; - sp<ANativeWindow> mPreviewWindow; + sp<Surface> mPreviewWindow; // Recording-related members static const nsecs_t kWaitDuration = 50000000; // 50 ms @@ -117,7 +117,7 @@ class StreamingProcessor: int mRecordingStreamId; int mRecordingFrameCount; sp<BufferItemConsumer> mRecordingConsumer; - sp<ANativeWindow> mRecordingWindow; + sp<Surface> mRecordingWindow; CameraMetadata mRecordingRequest; sp<camera2::Camera2Heap> mRecordingHeap; diff --git a/services/camera/libcameraservice/api1/client2/ZslProcessor.cpp b/services/camera/libcameraservice/api1/client2/ZslProcessor.cpp index d8500df..0b79b31 100644 --- a/services/camera/libcameraservice/api1/client2/ZslProcessor.cpp +++ b/services/camera/libcameraservice/api1/client2/ZslProcessor.cpp @@ -139,7 +139,7 @@ status_t ZslProcessor::updateStream(const Parameters ¶ms) { GRALLOC_USAGE_HW_CAMERA_ZSL, kZslBufferDepth); mZslConsumer->setFrameAvailableListener(this); - mZslConsumer->setName(String8("Camera2Client::ZslConsumer")); + mZslConsumer->setName(String8("Camera2-ZslConsumer")); mZslWindow = new Surface(producer); } diff --git a/services/camera/libcameraservice/api1/client2/ZslProcessor.h b/services/camera/libcameraservice/api1/client2/ZslProcessor.h index 5f50d7b..5870bd3 100644 --- a/services/camera/libcameraservice/api1/client2/ZslProcessor.h +++ b/services/camera/libcameraservice/api1/client2/ZslProcessor.h @@ -101,7 +101,7 @@ class ZslProcessor: int mZslStreamId; int mZslReprocessStreamId; sp<BufferItemConsumer> mZslConsumer; - sp<ANativeWindow> mZslWindow; + sp<Surface> mZslWindow; struct ZslPair { BufferItem buffer; diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp index 4d276be..3b83f63 100644 --- a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp +++ b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp @@ -411,27 +411,28 @@ status_t CameraDeviceClient::createStream(const OutputConfiguration &outputConfi (consumerUsage & allowedFlags) != 0; sp<IBinder> binder = IInterface::asBinder(bufferProducer); - sp<ANativeWindow> anw = new Surface(bufferProducer, useAsync); + sp<Surface> surface = new Surface(bufferProducer, useAsync); + ANativeWindow *anw = surface.get(); int width, height, format; android_dataspace dataSpace; - if ((res = anw->query(anw.get(), NATIVE_WINDOW_WIDTH, &width)) != OK) { + if ((res = anw->query(anw, NATIVE_WINDOW_WIDTH, &width)) != OK) { ALOGE("%s: Camera %d: Failed to query Surface width", __FUNCTION__, mCameraId); return res; } - if ((res = anw->query(anw.get(), NATIVE_WINDOW_HEIGHT, &height)) != OK) { + if ((res = anw->query(anw, NATIVE_WINDOW_HEIGHT, &height)) != OK) { ALOGE("%s: Camera %d: Failed to query Surface height", __FUNCTION__, mCameraId); return res; } - if ((res = anw->query(anw.get(), NATIVE_WINDOW_FORMAT, &format)) != OK) { + if ((res = anw->query(anw, NATIVE_WINDOW_FORMAT, &format)) != OK) { ALOGE("%s: Camera %d: Failed to query Surface format", __FUNCTION__, mCameraId); return res; } - if ((res = anw->query(anw.get(), NATIVE_WINDOW_DEFAULT_DATASPACE, + if ((res = anw->query(anw, NATIVE_WINDOW_DEFAULT_DATASPACE, reinterpret_cast<int*>(&dataSpace))) != OK) { ALOGE("%s: Camera %d: Failed to query Surface dataSpace", __FUNCTION__, mCameraId); @@ -456,7 +457,7 @@ status_t CameraDeviceClient::createStream(const OutputConfiguration &outputConfi } int streamId = -1; - res = mDevice->createStream(anw, width, height, format, dataSpace, + res = mDevice->createStream(surface, width, height, format, dataSpace, static_cast<camera3_stream_rotation_t> (outputConfiguration.getRotation()), &streamId); diff --git a/services/camera/libcameraservice/common/CameraDeviceBase.h b/services/camera/libcameraservice/common/CameraDeviceBase.h index 27c33a3..06177e3 100644 --- a/services/camera/libcameraservice/common/CameraDeviceBase.h +++ b/services/camera/libcameraservice/common/CameraDeviceBase.h @@ -106,7 +106,7 @@ class CameraDeviceBase : public virtual RefBase { * For HAL_PIXEL_FORMAT_BLOB formats, the width and height should be the * logical dimensions of the buffer, not the number of bytes. */ - virtual status_t createStream(sp<ANativeWindow> consumer, + virtual status_t createStream(sp<Surface> consumer, uint32_t width, uint32_t height, int format, android_dataspace dataSpace, camera3_stream_rotation_t rotation, int *id) = 0; diff --git a/services/camera/libcameraservice/device2/Camera2Device.cpp b/services/camera/libcameraservice/device2/Camera2Device.cpp index 88f555b..dfe5565 100644 --- a/services/camera/libcameraservice/device2/Camera2Device.cpp +++ b/services/camera/libcameraservice/device2/Camera2Device.cpp @@ -240,7 +240,7 @@ status_t Camera2Device::waitUntilRequestReceived(int32_t requestId, nsecs_t time return mRequestQueue.waitForDequeue(requestId, timeout); } -status_t Camera2Device::createStream(sp<ANativeWindow> consumer, +status_t Camera2Device::createStream(sp<Surface> consumer, uint32_t width, uint32_t height, int format, android_dataspace /*dataSpace*/, camera3_stream_rotation_t rotation, int *id) { ATRACE_CALL(); diff --git a/services/camera/libcameraservice/device2/Camera2Device.h b/services/camera/libcameraservice/device2/Camera2Device.h index a001a91..c9f3a2c 100644 --- a/services/camera/libcameraservice/device2/Camera2Device.h +++ b/services/camera/libcameraservice/device2/Camera2Device.h @@ -56,7 +56,7 @@ class Camera2Device: public CameraDeviceBase { int64_t *lastFrameNumber = NULL); virtual status_t clearStreamingRequest(int64_t *lastFrameNumber = NULL); virtual status_t waitUntilRequestReceived(int32_t requestId, nsecs_t timeout); - virtual status_t createStream(sp<ANativeWindow> consumer, + virtual status_t createStream(sp<Surface> consumer, uint32_t width, uint32_t height, int format, android_dataspace dataSpace, camera3_stream_rotation_t rotation, int *id); virtual status_t createInputStream( diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp index b16b881..c28a57e 100644 --- a/services/camera/libcameraservice/device3/Camera3Device.cpp +++ b/services/camera/libcameraservice/device3/Camera3Device.cpp @@ -817,7 +817,7 @@ status_t Camera3Device::createZslStream( return OK; } -status_t Camera3Device::createStream(sp<ANativeWindow> consumer, +status_t Camera3Device::createStream(sp<Surface> consumer, uint32_t width, uint32_t height, int format, android_dataspace dataSpace, camera3_stream_rotation_t rotation, int *id) { ATRACE_CALL(); diff --git a/services/camera/libcameraservice/device3/Camera3Device.h b/services/camera/libcameraservice/device3/Camera3Device.h index 180b1f8..e2fd8d4 100644 --- a/services/camera/libcameraservice/device3/Camera3Device.h +++ b/services/camera/libcameraservice/device3/Camera3Device.h @@ -94,7 +94,7 @@ class Camera3Device : // Actual stream creation/deletion is delayed until first request is submitted // If adding streams while actively capturing, will pause device before adding // stream, reconfiguring device, and unpausing. - virtual status_t createStream(sp<ANativeWindow> consumer, + virtual status_t createStream(sp<Surface> consumer, uint32_t width, uint32_t height, int format, android_dataspace dataSpace, camera3_stream_rotation_t rotation, int *id); virtual status_t createInputStream( diff --git a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp index 7a0331b..8c611d5 100644 --- a/services/camera/libcameraservice/device3/Camera3OutputStream.cpp +++ b/services/camera/libcameraservice/device3/Camera3OutputStream.cpp @@ -32,7 +32,7 @@ namespace android { namespace camera3 { Camera3OutputStream::Camera3OutputStream(int id, - sp<ANativeWindow> consumer, + sp<Surface> consumer, uint32_t width, uint32_t height, int format, android_dataspace dataSpace, camera3_stream_rotation_t rotation) : Camera3IOStreamBase(id, CAMERA3_STREAM_OUTPUT, width, height, @@ -48,7 +48,7 @@ Camera3OutputStream::Camera3OutputStream(int id, } Camera3OutputStream::Camera3OutputStream(int id, - sp<ANativeWindow> consumer, + sp<Surface> consumer, uint32_t width, uint32_t height, size_t maxSize, int format, android_dataspace dataSpace, camera3_stream_rotation_t rotation) : Camera3IOStreamBase(id, CAMERA3_STREAM_OUTPUT, width, height, maxSize, @@ -229,6 +229,7 @@ void Camera3OutputStream::dump(int fd, const Vector<String16> &args) const { (void) args; String8 lines; lines.appendFormat(" Stream[%d]: Output\n", mId); + lines.appendFormat(" Consumer name: %s\n", mConsumerName.string()); write(fd, lines.string(), lines.size()); Camera3IOStreamBase::dump(fd, args); @@ -278,6 +279,8 @@ status_t Camera3OutputStream::configureQueueLocked() { return res; } + mConsumerName = mConsumer->getConsumerName(); + res = native_window_set_usage(mConsumer.get(), camera3_stream::usage); if (res != OK) { ALOGE("%s: Unable to configure usage %08x for stream %d", @@ -326,7 +329,8 @@ status_t Camera3OutputStream::configureQueueLocked() { } int maxConsumerBuffers; - res = mConsumer->query(mConsumer.get(), + res = static_cast<ANativeWindow*>(mConsumer.get())->query( + mConsumer.get(), NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS, &maxConsumerBuffers); if (res != OK) { ALOGE("%s: Unable to query consumer undequeued" @@ -401,7 +405,7 @@ status_t Camera3OutputStream::getEndpointUsage(uint32_t *usage) const { status_t res; int32_t u = 0; - res = mConsumer->query(mConsumer.get(), + res = static_cast<ANativeWindow*>(mConsumer.get())->query(mConsumer.get(), NATIVE_WINDOW_CONSUMER_USAGE_BITS, &u); // If an opaque output stream's endpoint is ImageReader, add diff --git a/services/camera/libcameraservice/device3/Camera3OutputStream.h b/services/camera/libcameraservice/device3/Camera3OutputStream.h index 513b695..941d693 100644 --- a/services/camera/libcameraservice/device3/Camera3OutputStream.h +++ b/services/camera/libcameraservice/device3/Camera3OutputStream.h @@ -38,7 +38,7 @@ class Camera3OutputStream : /** * Set up a stream for formats that have 2 dimensions, such as RAW and YUV. */ - Camera3OutputStream(int id, sp<ANativeWindow> consumer, + Camera3OutputStream(int id, sp<Surface> consumer, uint32_t width, uint32_t height, int format, android_dataspace dataSpace, camera3_stream_rotation_t rotation); @@ -46,7 +46,7 @@ class Camera3OutputStream : * Set up a stream for formats that have a variable buffer size for the same * dimensions, such as compressed JPEG. */ - Camera3OutputStream(int id, sp<ANativeWindow> consumer, + Camera3OutputStream(int id, sp<Surface> consumer, uint32_t width, uint32_t height, size_t maxSize, int format, android_dataspace dataSpace, camera3_stream_rotation_t rotation); @@ -81,7 +81,7 @@ class Camera3OutputStream : virtual status_t disconnectLocked(); - sp<ANativeWindow> mConsumer; + sp<Surface> mConsumer; private: int mTransform; @@ -89,6 +89,9 @@ class Camera3OutputStream : bool mTraceFirstBuffer; + // Name of Surface consumer + String8 mConsumerName; + /** * Internal Camera3Stream interface */ diff --git a/services/camera/libcameraservice/device3/Camera3ZslStream.cpp b/services/camera/libcameraservice/device3/Camera3ZslStream.cpp index 10d7f2e..eefcb44 100644 --- a/services/camera/libcameraservice/device3/Camera3ZslStream.cpp +++ b/services/camera/libcameraservice/device3/Camera3ZslStream.cpp @@ -122,6 +122,7 @@ Camera3ZslStream::Camera3ZslStream(int id, uint32_t width, uint32_t height, sp<IGraphicBufferConsumer> consumer; BufferQueue::createBufferQueue(&producer, &consumer); mProducer = new RingBufferConsumer(consumer, GRALLOC_USAGE_HW_CAMERA_ZSL, bufferCount); + mProducer->setName(String8("Camera2-ZslRingBufferConsumer")); mConsumer = new Surface(producer); } |