summaryrefslogtreecommitdiff
authorsky.zhou <sky.zhou@droid04.amlogic.com>2011-12-08 12:23:51 (GMT)
committer sky.zhou <sky.zhou@droid04.amlogic.com>2011-12-08 12:23:51 (GMT)
commitaa622457ca74aabfd8d49be7a292e5163dd463fd (patch)
treecd06e06bb0e2ce39f57d88db44d37dad6c89495b
parente995eb1ae232a8c82b22e3756b86e73d06e6c6a4 (diff)
downloadcamera-aa622457ca74aabfd8d49be7a292e5163dd463fd.zip
camera-aa622457ca74aabfd8d49be7a292e5163dd463fd.tar.gz
camera-aa622457ca74aabfd8d49be7a292e5163dd463fd.tar.bz2
fix: 1, start autofocus twice will cause exception 2,Copy preview frame error
Diffstat
-rwxr-xr-x[-rw-r--r--]AppCallbackNotifier.cpp8
-rwxr-xr-x[-rw-r--r--]BaseCameraAdapter.cpp56
-rwxr-xr-xV4LCameraAdapter/V4LCameraAdapter.cpp4
3 files changed, 33 insertions, 35 deletions
diff --git a/AppCallbackNotifier.cpp b/AppCallbackNotifier.cpp
index d1d730e..4f21590 100644..100755
--- a/AppCallbackNotifier.cpp
+++ b/AppCallbackNotifier.cpp
@@ -452,8 +452,8 @@ static void copy2Dto1D(void *dst,
unsigned int *y_uv = (unsigned int *)src;
- CAMHAL_LOGVB("copy2Dto1D() y= %p ; uv=%p.",y_uv[0], y_uv[1]);
- CAMHAL_LOGVB("pixelFormat,= %d; offset=%d",*pixelFormat,offset);
+ CAMHAL_LOGDB("copy2Dto1D() y= %p ; uv=%p.",y_uv[0], y_uv[1]);
+ CAMHAL_LOGDB("pixelFormat,= %d; offset=%d; length=%d;width=%d,%d;stride=%d;",*pixelFormat,offset,length,width,height,stride);
if (pixelFormat!=NULL) {
if (strcmp(pixelFormat, CameraParameters::PIXEL_FORMAT_YUV422I) == 0) {
@@ -482,8 +482,8 @@ static void copy2Dto1D(void *dst,
}
}
- bufferSrc_UV = ( uint16_t * ) ((uint8_t*)y_uv[1] + (stride/2)*yOff + xOff);
-
+ // bufferSrc_UV = ( uint16_t * ) ((uint8_t*)y_uv[1] + (stride/2)*yOff + xOff);
+ bufferSrc_UV =( uint16_t * ) ( y_uv[0]+stride*height+ (stride/2)*yOff + xOff) ;
if (strcmp(pixelFormat, CameraParameters::PIXEL_FORMAT_YUV420SP) == 0) {
uint16_t *bufferDst_UV;
diff --git a/BaseCameraAdapter.cpp b/BaseCameraAdapter.cpp
index ba1f529..a6b6546 100644..100755
--- a/BaseCameraAdapter.cpp
+++ b/BaseCameraAdapter.cpp
@@ -233,7 +233,7 @@ void BaseCameraAdapter::addFramePointers(void *frameBuf, void *buf)
frame->mYuv[1] = pBuf[1];
mFrameQueue.add(frameBuf, frame);
- CAMHAL_LOGVB("Adding Frame=0x%x Y=0x%x UV=0x%x", frame->mBuffer, frame->mYuv[0], frame->mYuv[1]);
+ CAMHAL_LOGDB("Adding Frame=0x%x Y=0x%x UV=0x%x", frame->mBuffer, frame->mYuv[0], frame->mYuv[1]);
}
}
@@ -809,36 +809,34 @@ status_t BaseCameraAdapter::sendCommand(CameraCommands operation, int value1, in
}
case CameraAdapter::CAMERA_PERFORM_AUTOFOCUS:
-
+ if(getState() != AF_STATE)
+ {
#if PPM_INSTRUMENTATION || PPM_INSTRUMENTATION_ABS
-
- refTimestamp = ( struct timeval * ) value1;
- if ( NULL != refTimestamp )
- {
- memcpy( &mStartFocus, refTimestamp, sizeof( struct timeval ));
- }
-
+ refTimestamp = ( struct timeval * ) value1;
+ if ( NULL != refTimestamp )
+ {
+ memcpy( &mStartFocus, refTimestamp, sizeof( struct timeval ));
+ }
#endif
-
- if ( ret == NO_ERROR )
- {
- ret = setState(operation);
- }
-
- if ( ret == NO_ERROR )
- {
- ret = autoFocus();
- }
-
- if ( ret == NO_ERROR )
- {
- ret = commitState();
- }
- else
- {
- ret |= rollbackState();
- }
-
+ if ( ret == NO_ERROR )
+ {
+ ret = setState(operation);
+ }
+
+ if ( ret == NO_ERROR )
+ {
+ ret = autoFocus();
+ }
+
+ if ( ret == NO_ERROR )
+ {
+ ret = commitState();
+ }
+ else
+ {
+ ret |= rollbackState();
+ }
+ }
break;
case CameraAdapter::CAMERA_CANCEL_AUTOFOCUS:
diff --git a/V4LCameraAdapter/V4LCameraAdapter.cpp b/V4LCameraAdapter/V4LCameraAdapter.cpp
index 9d5cb6e..aa029f7 100755
--- a/V4LCameraAdapter/V4LCameraAdapter.cpp
+++ b/V4LCameraAdapter/V4LCameraAdapter.cpp
@@ -703,8 +703,8 @@ int V4LCameraAdapter::previewThread()
frame.mFrameMask |= CameraFrame::VIDEO_FRAME_SYNC;
}
frame.mBuffer = ptr; //dest
- frame.mLength = width*height*2;
- frame.mAlignment = width*2;
+ frame.mLength = width*height*3/2;
+ frame.mAlignment = width;
frame.mOffset = 0;
frame.mYuv[0] = NULL;
frame.mYuv[1] = NULL;