diff options
author | Alex Ray <aray@google.com> | 2013-10-21 00:46:44 -0700 |
---|---|---|
committer | Alex Ray <aray@google.com> | 2013-10-21 12:21:08 -0700 |
commit | 69f1f9166adea3579353fd3bc14b6a23c43de024 (patch) | |
tree | afd261e4f3f536b3e3e90ad2379007e5e36a01f8 /modules/camera | |
parent | 7915e97d637df3ebbdb9fda542a2657236361e14 (diff) | |
download | hardware_libhardware-69f1f9166adea3579353fd3bc14b6a23c43de024.zip hardware_libhardware-69f1f9166adea3579353fd3bc14b6a23c43de024.tar.gz hardware_libhardware-69f1f9166adea3579353fd3bc14b6a23c43de024.tar.bz2 |
modules: camera: dump device and stream state
Change-Id: Iae3badba71f13784dfdd65d6e77b20283437935a
Diffstat (limited to 'modules/camera')
-rw-r--r-- | modules/camera/Camera.cpp | 17 | ||||
-rw-r--r-- | modules/camera/Stream.cpp | 88 | ||||
-rw-r--r-- | modules/camera/Stream.h | 3 |
3 files changed, 101 insertions, 7 deletions
diff --git a/modules/camera/Camera.cpp b/modules/camera/Camera.cpp index 4e9c18d..c7ca64a 100644 --- a/modules/camera/Camera.cpp +++ b/modules/camera/Camera.cpp @@ -16,6 +16,7 @@ #include <cstdlib> #include <pthread.h> +#include <stdio.h> #include <hardware/camera3.h> #include <sync/sync.h> #include <system/camera_metadata.h> @@ -491,7 +492,21 @@ void Camera::getMetadataVendorTagOps(vendor_tag_query_ops_t *ops) void Camera::dump(int fd) { ALOGV("%s:%d: Dumping to fd %d", __func__, mId, fd); - // TODO: dprintf all relevant state to fd + + pthread_mutex_lock(&mMutex); + + fdprintf(fd, "Camera ID: %d (Busy: %d)\n", mId, mBusy); + + // TODO: dump all settings + fdprintf(fd, "Most Recent Settings: (%p)\n", mSettings); + + fdprintf(fd, "Number of streams: %d\n", mNumStreams); + for (int i = 0; i < mNumStreams; i++) { + fdprintf(fd, "Stream %d/%d:\n", i, mNumStreams); + mStreams[i]->dump(fd); + } + + pthread_mutex_unlock(&mMutex); } void Camera::setTemplate(int type, camera_metadata_t *settings) diff --git a/modules/camera/Stream.cpp b/modules/camera/Stream.cpp index 9c5c5b5..7703910 100644 --- a/modules/camera/Stream.cpp +++ b/modules/camera/Stream.cpp @@ -15,6 +15,7 @@ */ #include <pthread.h> +#include <stdio.h> #include <hardware/camera3.h> #include <hardware/gralloc.h> #include <system/graphics.h> @@ -94,6 +95,61 @@ bool Stream::isOutputType() mType == CAMERA3_STREAM_BIDIRECTIONAL; } +const char* Stream::typeToString(int type) +{ + switch (type) { + case CAMERA3_STREAM_INPUT: + return "CAMERA3_STREAM_INPUT"; + case CAMERA3_STREAM_OUTPUT: + return "CAMERA3_STREAM_OUTPUT"; + case CAMERA3_STREAM_BIDIRECTIONAL: + return "CAMERA3_STREAM_BIDIRECTIONAL"; + } + return "Invalid stream type!"; +} + +const char* Stream::formatToString(int format) +{ + // See <system/graphics.h> for full list + switch (format) { + case HAL_PIXEL_FORMAT_BGRA_8888: + return "BGRA 8888"; + case HAL_PIXEL_FORMAT_RGBA_8888: + return "RGBA 8888"; + case HAL_PIXEL_FORMAT_RGBX_8888: + return "RGBX 8888"; + case HAL_PIXEL_FORMAT_RGB_888: + return "RGB 888"; + case HAL_PIXEL_FORMAT_RGB_565: + return "RGB 565"; + case HAL_PIXEL_FORMAT_sRGB_A_8888: + return "sRGB A 8888"; + case HAL_PIXEL_FORMAT_sRGB_X_8888: + return "sRGB B 8888"; + case HAL_PIXEL_FORMAT_Y8: + return "Y8"; + case HAL_PIXEL_FORMAT_Y16: + return "Y16"; + case HAL_PIXEL_FORMAT_YV12: + return "YV12"; + case HAL_PIXEL_FORMAT_YCbCr_422_SP: + return "NV16"; + case HAL_PIXEL_FORMAT_YCrCb_420_SP: + return "NV21"; + case HAL_PIXEL_FORMAT_YCbCr_422_I: + return "YUY2"; + case HAL_PIXEL_FORMAT_RAW_SENSOR: + return "RAW SENSOR"; + case HAL_PIXEL_FORMAT_BLOB: + return "BLOB"; + case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: + return "IMPLEMENTATION DEFINED"; + case HAL_PIXEL_FORMAT_YCbCr_420_888: + return "FLEXIBLE YCbCr 420 888"; + } + return "Invalid stream format!"; +} + bool Stream::isRegistered() { return mRegistered; @@ -112,15 +168,15 @@ bool Stream::isValidReuseStream(int id, camera3_stream_t *s) return false; } if (s->stream_type != mType) { - // TODO: prettyprint type string - ALOGE("%s:%d: Mismatched type in reused stream. Got %d expect %d", - __func__, mId, s->stream_type, mType); + ALOGE("%s:%d: Mismatched type in reused stream. Got %s(%d) " + "expect %s(%d)", __func__, mId, typeToString(s->stream_type), + s->stream_type, typeToString(mType), mType); return false; } if (s->format != mFormat) { - // TODO: prettyprint format string - ALOGE("%s:%d: Mismatched format in reused stream. Got %d expect %d", - __func__, mId, s->format, mFormat); + ALOGE("%s:%d: Mismatched format in reused stream. Got %s(%d) " + "expect %s(%d)", __func__, mId, formatToString(s->format), + s->format, formatToString(mFormat), mFormat); return false; } if (s->width != mWidth) { @@ -173,4 +229,24 @@ void Stream::unregisterBuffers_L() // TODO: unregister buffers from hw } +void Stream::dump(int fd) +{ + pthread_mutex_lock(&mMutex); + + fdprintf(fd, "Stream ID: %d (%p)\n", mId, mStream); + fdprintf(fd, "Stream Type: %s (%d)\n", typeToString(mType), mType); + fdprintf(fd, "Width: %u Height: %u\n", mWidth, mHeight); + fdprintf(fd, "Stream Format: %s (%d)", formatToString(mFormat), mFormat); + // ToDo: prettyprint usage mask flags + fdprintf(fd, "Gralloc Usage Mask: 0x%x\n", mUsage); + fdprintf(fd, "Max Buffer Count: %d\n", mMaxBuffers); + fdprintf(fd, "Buffers Registered: %s\n", mRegistered ? "true" : "false"); + fdprintf(fd, "Number of Buffers: %d\n", mNumBuffers); + for (int i = 0; i < mNumBuffers; i++) { + fdprintf(fd, "Buffer %d/%d: %p\n", i, mNumBuffers, mBuffers[i]); + } + + pthread_mutex_unlock(&mMutex); +} + } // namespace default_camera_hal diff --git a/modules/camera/Stream.h b/modules/camera/Stream.h index 34abd95..b62114e 100644 --- a/modules/camera/Stream.h +++ b/modules/camera/Stream.h @@ -41,6 +41,9 @@ class Stream { bool isInputType(); bool isOutputType(); bool isRegistered(); + const char* typeToString(int type); + const char* formatToString(int format); + void dump(int fd); // This stream is being reused. Used in stream configuration passes bool mReuse; |