From 0ebe625decc5a52c5534bedc5ed31da332f42f80 Mon Sep 17 00:00:00 2001 From: Kyle Repinski Date: Wed, 7 Jan 2015 17:12:43 -0600 Subject: camera: Fix more tuna issues, spruce up debugging. - Move very verbose logs under new CAMERAHAL_SUPERVERBOSE and co. - Add back 'default focal length', as tuna just reports '.' when trying to auto-fetch it. - Hardcode camera facing values in insertFacing (sensor ID 305 is rear, the other (306) is front). - ifdef out more things that will cause tuna to... lose its gills. - 'Fix' preview resolutions not being inserted. - Enable a few built-in workarounds that were under the 'CAMERAHAL_TUNA' define. At this point, a few intelligent camera apps can handle the camera 'OK'. AF is very spotty. Signed-off-by: Kyle Repinski --- camera/ANativeWindowDisplayAdapter.cpp | 2 +- camera/Android.mk | 2 +- camera/AppCallbackNotifier.cpp | 4 ++-- camera/BaseCameraAdapter.cpp | 6 +++--- camera/BufferSourceAdapter.cpp | 2 +- camera/CameraHal.cpp | 8 +++++--- camera/OMXCameraAdapter/OMX3A.cpp | 2 ++ camera/OMXCameraAdapter/OMXCameraAdapter.cpp | 8 ++++---- camera/OMXCameraAdapter/OMXCapabilities.cpp | 26 +++++++++++++++++++++++--- camera/OMXCameraAdapter/OMXDefaults.cpp | 12 ++++++++++++ camera/OMXCameraAdapter/OMXFocus.cpp | 2 +- camera/SensorListener.cpp | 14 +++++++------- camera/inc/Common.h | 12 ++++++++++++ camera/inc/OMXCameraAdapter/OMXCameraAdapter.h | 6 ++++++ 14 files changed, 80 insertions(+), 26 deletions(-) (limited to 'camera') diff --git a/camera/ANativeWindowDisplayAdapter.cpp b/camera/ANativeWindowDisplayAdapter.cpp index 45f7ba0..f144327 100644 --- a/camera/ANativeWindowDisplayAdapter.cpp +++ b/camera/ANativeWindowDisplayAdapter.cpp @@ -1296,7 +1296,7 @@ bool ANativeWindowDisplayAdapter::handleFrameReturn() mFramesType.removeItem((int) mBuffers[i].opaque); } - CAMHAL_LOGVB("handleFrameReturn: found graphic buffer %d of %d", i, mBufferCount-1); + CAMHAL_LOGSVB("handleFrameReturn: found graphic buffer %d of %d", i, mBufferCount-1); mFrameProvider->returnFrame(&mBuffers[i], frameType); return true; diff --git a/camera/Android.mk b/camera/Android.mk index 4bc4d35..d1943cd 100644 --- a/camera/Android.mk +++ b/camera/Android.mk @@ -2,7 +2,7 @@ LOCAL_PATH:= $(call my-dir) TI_CAMERAHAL_DEBUG_ENABLED := true TI_CAMERAHAL_VERBOSE_DEBUG_ENABLED := true -TI_CAMERAHAL_DEBUG_FUNCTION_NAMES := true +#TI_CAMERAHAL_DEBUG_FUNCTION_NAMES := true TI_CAMERAHAL_DONT_USE_RAW_IMAGE_SAVING := true OMAP4_CAMERA_HAL_USES:= OMX diff --git a/camera/AppCallbackNotifier.cpp b/camera/AppCallbackNotifier.cpp index a4ac224..064310f 100644 --- a/camera/AppCallbackNotifier.cpp +++ b/camera/AppCallbackNotifier.cpp @@ -301,13 +301,13 @@ bool AppCallbackNotifier::notificationThread() if(mEventQ.hasMsg()) { ///Received an event from one of the event providers - CAMHAL_LOGDA("Notification Thread received an event from event provider (CameraAdapter)"); + CAMHAL_LOGSVA("Notification Thread received an event from event provider (CameraAdapter)"); notifyEvent(); } if(mFrameQ.hasMsg()) { ///Received a frame from one of the frame providers - //CAMHAL_LOGDA("Notification Thread received a frame from frame provider (CameraAdapter)"); + CAMHAL_LOGSVA("Notification Thread received a frame from frame provider (CameraAdapter)"); notifyFrame(); } diff --git a/camera/BaseCameraAdapter.cpp b/camera/BaseCameraAdapter.cpp index 4e315b6..ad56691 100644 --- a/camera/BaseCameraAdapter.cpp +++ b/camera/BaseCameraAdapter.cpp @@ -382,7 +382,7 @@ void BaseCameraAdapter::returnFrame(CameraBuffer * frameBuf, CameraFrame::FrameT } } - CAMHAL_LOGVB("REFCOUNT 0x%x %d", frameBuf, refCount); + CAMHAL_LOGSVB("REFCOUNT 0x%x %d", frameBuf, refCount); if ( NO_ERROR == res ) { @@ -395,7 +395,7 @@ void BaseCameraAdapter::returnFrame(CameraBuffer * frameBuf, CameraFrame::FrameT (CameraFrame::SNAPSHOT_FRAME == frameType))) { CAMHAL_LOGE("Buffer already with Ducati!! 0x%x", frameBuf); - for(int i=0;imFrameType, ( uint32_t ) frame->mBuffer, refCount); diff --git a/camera/BufferSourceAdapter.cpp b/camera/BufferSourceAdapter.cpp index d63b117..7a57b4b 100644 --- a/camera/BufferSourceAdapter.cpp +++ b/camera/BufferSourceAdapter.cpp @@ -791,7 +791,7 @@ bool BufferSourceAdapter::handleFrameReturn() mFramesWithCameraAdapterMap.add((buffer_handle_t *) mBuffers[i].opaque, i); - CAMHAL_LOGVB("handleFrameReturn: found graphic buffer %d of %d", i, mBufferCount - 1); + CAMHAL_LOGSVB("handleFrameReturn: found graphic buffer %d of %d", i, mBufferCount - 1); mFrameProvider->returnFrame(&mBuffers[i], formatToOutputFrameType(mPixelFormat)); return true; diff --git a/camera/CameraHal.cpp b/camera/CameraHal.cpp index 71ba1bb..a345e64 100644 --- a/camera/CameraHal.cpp +++ b/camera/CameraHal.cpp @@ -1108,6 +1108,7 @@ int CameraHal::setParameters(const android::CameraParameters& params) mParameters.set(TICameraParameters::RAW_HEIGHT, valstr); } +#ifndef OMAP_TUNA //TI extensions for enable/disable algos if( (valstr = params.get(TICameraParameters::KEY_ALGO_FIXED_GAMMA)) != NULL ) { @@ -1144,6 +1145,7 @@ int CameraHal::setParameters(const android::CameraParameters& params) CAMHAL_LOGDB("Green Inballance Correction set %s", valstr); mParameters.set(TICameraParameters::KEY_ALGO_GIC, valstr); } +#endif android::CameraParameters adapterParams = mParameters; @@ -4287,16 +4289,16 @@ void CameraHal::resetPreviewRes(android::CameraParameters *params) void * camera_buffer_get_omx_ptr (CameraBuffer *buffer) { - CAMHAL_LOGV("buffer_type %d opaque %p", buffer->type, buffer->opaque); + CAMHAL_LOGSV("buffer_type %d opaque %p", buffer->type, buffer->opaque); if (buffer->type == CAMERA_BUFFER_ANW) { buffer_handle_t *handle = (buffer_handle_t *)buffer->opaque; - CAMHAL_LOGV("anw %08x", *handle); + CAMHAL_LOGSV("anw %08x", *handle); return (void *)*handle; } else if (buffer->type == CAMERA_BUFFER_ION) { return (void *)buffer->fd; } else { - CAMHAL_LOGV("other %08x", buffer->opaque); + CAMHAL_LOGSV("other %08x", buffer->opaque); return (void *)buffer->opaque; } } diff --git a/camera/OMXCameraAdapter/OMX3A.cpp b/camera/OMXCameraAdapter/OMX3A.cpp index e7171f6..fbef828 100644 --- a/camera/OMXCameraAdapter/OMX3A.cpp +++ b/camera/OMXCameraAdapter/OMX3A.cpp @@ -388,6 +388,7 @@ status_t OMXCameraAdapter::setParameters3A(const android::CameraParameters ¶ } // TI extensions for enable/disable algos +#ifndef OMAP_TUNA declareParameter3ABool(params, TICameraParameters::KEY_ALGO_FIXED_GAMMA, mParameters3A.AlgoFixedGamma, SetAlgoFixedGamma, "Fixed Gamma"); declareParameter3ABool(params, TICameraParameters::KEY_ALGO_NSF1, @@ -399,6 +400,7 @@ status_t OMXCameraAdapter::setParameters3A(const android::CameraParameters ¶ declareParameter3ABool(params, TICameraParameters::KEY_ALGO_THREELINCOLORMAP, mParameters3A.AlgoThreeLinColorMap, SetAlgoThreeLinColorMap, "ThreeLinColorMap"); declareParameter3ABool(params, TICameraParameters::KEY_ALGO_GIC, mParameters3A.AlgoGIC, SetAlgoGIC, "GIC"); +#endif LOG_FUNCTION_NAME_EXIT; diff --git a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp index ac5ec47..c97ce61 100644 --- a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp +++ b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp @@ -2990,7 +2990,7 @@ void OMXCameraAdapter::onOrientationEvent(uint32_t orientation, uint32_t tilt) // restart face detection with new rotation setFaceDetectionOrientation(mDeviceOrientation); } - CAMHAL_LOGVB("orientation = %d tilt = %d device_orientation = %d", orientation, tilt, mDeviceOrientation); + CAMHAL_LOGSVB("orientation = %d tilt = %d device_orientation = %d", orientation, tilt, mDeviceOrientation); LOG_FUNCTION_NAME_EXIT; } @@ -3546,7 +3546,7 @@ OMX_ERRORTYPE OMXCameraAdapter::OMXCameraAdapterFillBufferDone(OMX_IN OMX_HANDLE if(mBuffersWithDucati.indexOfKey((uint32_t)pBuffHeader->pBuffer)<0) { CAMHAL_LOGE("Buffer was never with Ducati!! %p", pBuffHeader->pBuffer); - for(unsigned int i=0;ipBuffer); #endif @@ -3884,7 +3884,7 @@ status_t OMXCameraAdapter::sendCallBacks(CameraFrame frame, OMX_IN OMX_BUFFERHEA ret = sendFrameToSubscribers(&frame); } - CAMHAL_LOGVB("B 0x%x T %llu", frame.mBuffer, pBuffHeader->nTimeStamp); + CAMHAL_LOGSVB("B 0x%x T %llu", frame.mBuffer, pBuffHeader->nTimeStamp); LOG_FUNCTION_NAME_EXIT; @@ -4042,7 +4042,7 @@ status_t OMXCameraAdapter::setExtraData(bool enable, OMX_U32 nPortIndex, OMX_EXT extraDataControl.nPortIndex = nPortIndex; extraDataControl.eExtraDataType = eType; -#ifdef CAMERAHAL_TUNA +#ifdef OMAP_TUNA extraDataControl.eCameraView = OMX_2D; #endif diff --git a/camera/OMXCameraAdapter/OMXCapabilities.cpp b/camera/OMXCameraAdapter/OMXCapabilities.cpp index 79b90b3..a21cc20 100644 --- a/camera/OMXCameraAdapter/OMXCapabilities.cpp +++ b/camera/OMXCameraAdapter/OMXCapabilities.cpp @@ -337,7 +337,10 @@ const LUTtype OMXCameraAdapter::mBracketingModesLUT = { // values for supported camera facing direction const CapU32 OMXCameraAdapter::mFacing [] = { -#ifndef OMAP_TUNA +#ifdef OMAP_TUNA + { 1, TICameraParameters::FACING_BACK }, + { 0, TICameraParameters::FACING_FRONT}, +#else { OMX_TI_SENFACING_BACK , TICameraParameters::FACING_BACK }, { OMX_TI_SENFACING_FRONT, TICameraParameters::FACING_FRONT}, #endif @@ -762,13 +765,13 @@ status_t OMXCameraAdapter::insertPreviewSizes(CameraProperties::Properties* para ARRAY_SIZE(mPreviewPortraitRes), supported, MAX_PROP_VALUE_LENGTH); +#endif if ( NO_ERROR != ret ) { CAMHAL_LOGEB("Error inserting supported Potrait preview sizes 0x%x", ret); } else { params->set(CameraProperties::SUPPORTED_PREVIEW_SIZES, supported); } -#endif } else // 3d mode { @@ -1623,7 +1626,13 @@ status_t OMXCameraAdapter::insertFacing(CameraProperties::Properties* params, OM memset(supported, '\0', sizeof(supported)); -#ifndef OMAP_TUNA +#ifdef OMAP_TUNA + if(caps.tSenMounting.nSenId == 305) { + i = 0; + } else { + i = 1; + } +#else for (i = 0; i < ARRAY_SIZE(mFacing); i++) { if((OMX_TI_SENFACING_TYPE)mFacing[i].num == caps.tSenMounting.eFacing) { break; @@ -1643,6 +1652,7 @@ status_t OMXCameraAdapter::insertFacing(CameraProperties::Properties* params, OM return ret; } +#ifndef OMAP_TUNA status_t OMXCameraAdapter::insertFocalLength(CameraProperties::Properties* params, OMX_TI_CAPTYPE &caps) { status_t ret = NO_ERROR; @@ -1666,6 +1676,7 @@ status_t OMXCameraAdapter::insertFocalLength(CameraProperties::Properties* param return ret; } +#endif status_t OMXCameraAdapter::insertAutoConvergenceModes(CameraProperties::Properties* params, OMX_TI_CAPTYPE &caps) { @@ -2039,6 +2050,13 @@ status_t OMXCameraAdapter::insertDefaults(CameraProperties::Properties* params, params->set(CameraProperties::MAX_FD_SW_FACES, DEFAULT_MAX_FD_SW_FACES); params->set(CameraProperties::AUTO_EXPOSURE_LOCK, DEFAULT_AE_LOCK); params->set(CameraProperties::AUTO_WHITEBALANCE_LOCK, DEFAULT_AWB_LOCK); +#ifdef OMAP_TUNA + if(caps.tSenMounting.nSenId == 305) { + params->set(CameraProperties::FOCAL_LENGTH, DEFAULT_FOCAL_LENGTH_PRIMARY); + } else { + params->set(CameraProperties::FOCAL_LENGTH, DEFAULT_FOCAL_LENGTH_SECONDARY); + } +#endif params->set(CameraProperties::HOR_ANGLE, DEFAULT_HOR_ANGLE); params->set(CameraProperties::VER_ANGLE, DEFAULT_VER_ANGLE); params->set(CameraProperties::VIDEO_SIZE, DEFAULT_VIDEO_SIZE); @@ -2158,9 +2176,11 @@ status_t OMXCameraAdapter::insertCapabilities(CameraProperties::Properties* para ret = insertFacing(params, caps); } +#ifndef OMAP_TUNA if ( NO_ERROR == ret) { ret = insertFocalLength(params, caps); } +#endif if ( NO_ERROR == ret) { ret = insertAutoConvergenceModes(params, caps); diff --git a/camera/OMXCameraAdapter/OMXDefaults.cpp b/camera/OMXCameraAdapter/OMXDefaults.cpp index 2928573..b05d5ad 100644 --- a/camera/OMXCameraAdapter/OMXDefaults.cpp +++ b/camera/OMXCameraAdapter/OMXDefaults.cpp @@ -47,7 +47,11 @@ const char OMXCameraAdapter::DEFAULT_THUMBNAIL_QUALITY[] = "60"; const char OMXCameraAdapter::DEFAULT_THUMBNAIL_SIZE[] = "160x120"; const char OMXCameraAdapter::DEFAULT_PICTURE_FORMAT[] = "jpeg"; const char OMXCameraAdapter::DEFAULT_S3D_PICTURE_LAYOUT[] = "tb-full"; +#ifdef OMAP_TUNA +const char OMXCameraAdapter::DEFAULT_PICTURE_SIZE[] = "2592x1944"; +#else const char OMXCameraAdapter::DEFAULT_PICTURE_SIZE[] = "320x240"; +#endif const char OMXCameraAdapter::DEFAULT_PICTURE_SS_SIZE[] = "640x240"; const char OMXCameraAdapter::DEFAULT_PICTURE_TB_SIZE[] = "320x480"; const char OMXCameraAdapter::DEFAULT_PREVIEW_FORMAT[] = "yuv420sp"; @@ -67,6 +71,10 @@ const char OMXCameraAdapter::DEFAULT_WB[] = "auto"; const char OMXCameraAdapter::DEFAULT_ZOOM[] = "0"; const char OMXCameraAdapter::DEFAULT_MAX_FD_HW_FACES[] = __STRINGIFY(MAX_NUM_FACES_SUPPORTED); const char OMXCameraAdapter::DEFAULT_MAX_FD_SW_FACES[] = "0"; +#ifdef OMAP_TUNA +const char OMXCameraAdapter::DEFAULT_FOCAL_LENGTH_PRIMARY[] = "3.43"; +const char OMXCameraAdapter::DEFAULT_FOCAL_LENGTH_SECONDARY[] = "1.95"; +#endif const char OMXCameraAdapter::DEFAULT_HOR_ANGLE[] = "54.8"; const char OMXCameraAdapter::DEFAULT_VER_ANGLE[] = "42.5"; const char * OMXCameraAdapter::DEFAULT_AE_LOCK = android::CameraParameters::FALSE; @@ -75,7 +83,11 @@ const char OMXCameraAdapter::DEFAULT_VIDEO_SIZE[] = "1920x1080"; const char OMXCameraAdapter::DEFAULT_SENSOR_ORIENTATION[] = "0"; const char OMXCameraAdapter::DEFAULT_AUTOCONVERGENCE_MODE[] = "frame"; const char OMXCameraAdapter::DEFAULT_MANUAL_CONVERGENCE[] = "0"; +#ifdef OMAP_TUNA +const char * OMXCameraAdapter::DEFAULT_MECHANICAL_MISALIGNMENT_CORRECTION_MODE = android::CameraParameters::FALSE; +#else const char * OMXCameraAdapter::DEFAULT_MECHANICAL_MISALIGNMENT_CORRECTION_MODE = android::CameraParameters::TRUE; +#endif const char OMXCameraAdapter::DEFAULT_EXIF_MAKE[] = "default_make"; const char OMXCameraAdapter::DEFAULT_EXIF_MODEL[] = "default_model"; diff --git a/camera/OMXCameraAdapter/OMXFocus.cpp b/camera/OMXCameraAdapter/OMXFocus.cpp index 65577a5..db03f7d 100644 --- a/camera/OMXCameraAdapter/OMXFocus.cpp +++ b/camera/OMXCameraAdapter/OMXFocus.cpp @@ -266,7 +266,7 @@ status_t OMXCameraAdapter::stopAutoFocus() CAMHAL_LOGEB("Error while stopping focus 0x%x", eError); return Utils::ErrorUtils::omxToAndroidError(eError); } -#ifdef CAMERAHAL_TUNA +#ifdef OMAP_TUNA else { // This is a WA. Usually the OMX Camera component should // generate AF status change OMX event fairly quickly diff --git a/camera/SensorListener.cpp b/camera/SensorListener.cpp index 45a278b..c86e867 100644 --- a/camera/SensorListener.cpp +++ b/camera/SensorListener.cpp @@ -51,11 +51,11 @@ static int sensor_events_listener(int fd, int events, void* data) float radius = 0; int tilt = 0, orient = 0; - CAMHAL_LOGVA("ACCELEROMETER EVENT"); - CAMHAL_LOGVB(" azimuth = %f pitch = %f roll = %f", - sen_events[i].vector.azimuth, - sen_events[i].vector.pitch, - sen_events[i].vector.roll); + CAMHAL_LOGSVA("ACCELEROMETER EVENT"); + CAMHAL_LOGSVB(" azimuth = %f pitch = %f roll = %f", + sen_events[i].vector.azimuth, + sen_events[i].vector.pitch, + sen_events[i].vector.roll); // see http://en.wikipedia.org/wiki/Spherical_coordinate_system#Cartesian_coordinates // about conversion from cartesian to spherical for orientation calculations radius = (float) sqrt(x * x + y * y + z * z); @@ -76,9 +76,9 @@ static int sensor_events_listener(int fd, int events, void* data) orient = 0; } listener->handleOrientation(orient, tilt); - CAMHAL_LOGVB(" tilt = %d orientation = %d", tilt, orient); + CAMHAL_LOGSVB(" tilt = %d orientation = %d", tilt, orient); } else if (sen_events[i].type == android::Sensor::TYPE_GYROSCOPE) { - CAMHAL_LOGVA("GYROSCOPE EVENT"); + CAMHAL_LOGSVA("GYROSCOPE EVENT"); } } } diff --git a/camera/inc/Common.h b/camera/inc/Common.h index b369e65..690fce7 100644 --- a/camera/inc/Common.h +++ b/camera/inc/Common.h @@ -29,6 +29,15 @@ # define CAMHAL_LOGD DBGUTILS_LOGD # define CAMHAL_LOGDA DBGUTILS_LOGDA # define CAMHAL_LOGDB DBGUTILS_LOGDB +# ifdef CAMERAHAL_SUPERVERBOSE +# define CAMHAL_LOGSV DBGUTILS_LOGV +# define CAMHAL_LOGSVA DBGUTILS_LOGVA +# define CAMHAL_LOGSVB DBGUTILS_LOGVB +# else +# define CAMHAL_LOGSV(...) +# define CAMHAL_LOGSVA(str) +# define CAMHAL_LOGSVB(str, ...) +# endif # ifdef CAMERAHAL_DEBUG_VERBOSE # define CAMHAL_LOGV DBGUTILS_LOGV # define CAMHAL_LOGVA DBGUTILS_LOGVA @@ -42,6 +51,9 @@ # define CAMHAL_LOGD(...) # define CAMHAL_LOGDA(str) # define CAMHAL_LOGDB(str, ...) +# define CAMHAL_LOGSV(...) +# define CAMHAL_LOGSVA(str) +# define CAMHAL_LOGSVB(str, ...) # define CAMHAL_LOGV(...) # define CAMHAL_LOGVA(str) # define CAMHAL_LOGVB(str, ...) diff --git a/camera/inc/OMXCameraAdapter/OMXCameraAdapter.h b/camera/inc/OMXCameraAdapter/OMXCameraAdapter.h index 3d9d788..83969d1 100644 --- a/camera/inc/OMXCameraAdapter/OMXCameraAdapter.h +++ b/camera/inc/OMXCameraAdapter/OMXCameraAdapter.h @@ -702,7 +702,9 @@ private: static status_t insertCaptureModes(CameraProperties::Properties*, OMX_TI_CAPTYPE&); static status_t insertVideoSizes(CameraProperties::Properties*, OMX_TI_CAPTYPE&); static status_t insertFacing(CameraProperties::Properties*, OMX_TI_CAPTYPE&); +#ifndef OMAP_TUNA static status_t insertFocalLength(CameraProperties::Properties*, OMX_TI_CAPTYPE&); +#endif static status_t insertAutoConvergenceModes(CameraProperties::Properties*, OMX_TI_CAPTYPE&); static status_t insertManualConvergenceRange(CameraProperties::Properties*, OMX_TI_CAPTYPE&); static status_t insertLayout(CameraProperties::Properties*, OMX_TI_CAPTYPE&); @@ -969,6 +971,10 @@ private: static const char DEFAULT_MAX_FD_SW_FACES[]; static const char * DEFAULT_AE_LOCK; static const char * DEFAULT_AWB_LOCK; +#ifdef OMAP_TUNA + static const char DEFAULT_FOCAL_LENGTH_PRIMARY[]; + static const char DEFAULT_FOCAL_LENGTH_SECONDARY[]; +#endif static const char DEFAULT_HOR_ANGLE[]; static const char DEFAULT_VER_ANGLE[]; static const char DEFAULT_VIDEO_SIZE[]; -- cgit v1.1