-rw-r--r-- | Android.mk | 2 | ||||
-rwxr-xr-x | AppCallbackNotifier.cpp | 21 | ||||
-rwxr-xr-x | CameraHal.cpp | 25 | ||||
-rwxr-xr-x | CameraHal_Module.cpp | 2 | ||||
-rwxr-xr-x | ExCameraParameters.cpp | 11 | ||||
-rwxr-xr-x | V4LCameraAdapter/V4LCameraAdapter.cpp | 88 | ||||
-rwxr-xr-x | inc/CameraHal.h | 20 | ||||
-rwxr-xr-x | inc/ExCameraParameters.h | 8 | ||||
-rwxr-xr-x | inc/V4LCameraAdapter/V4LCameraAdapter.h | 5 | ||||
-rwxr-xr-x | utils/util.cpp | 1 |
10 files changed, 176 insertions, 7 deletions
diff --git a/AppCallbackNotifier.cpp b/AppCallbackNotifier.cpp index c3ba65c..4b30494 100755 --- a/AppCallbackNotifier.cpp +++ b/AppCallbackNotifier.cpp @@ -727,6 +727,18 @@ void AppCallbackNotifier::copyAndSendPreviewFrame(CameraFrame* frame, int32_t ms if ( NULL != dest ) { // data sync frames don't need conversion +#ifdef METADATA_MODE_FOR_PREVIEW_CALLBACK + if (mUseMetaDataBufferMode) { + unsigned int *format_ptr; + video_metadata_t *videoMetadataBuffer = (video_metadata_t *)dest; + videoMetadataBuffer->metadataBufferType = frame->metadataBufferType; + videoMetadataBuffer->handle = (void*)frame->mBuffer; + videoMetadataBuffer->canvas = frame->mCanvas; + format_ptr = (unsigned int *)(dest + sizeof(video_metadata_t)); + *format_ptr = frame->mColorFormat; + CAMHAL_LOGDB("copyAndSendPreviewFrame Metadata mode, canvas:0x%x", videoMetadataBuffer->canvas); + }else +#endif if (CameraFrame::FRAME_DATA_SYNC == frame->mFrameType) { if ( (mPreviewMemory->size / MAX_BUFFERS) >= frame->mLength ) { memcpy(dest, (void*) src, frame->mLength); @@ -1063,13 +1075,13 @@ void AppCallbackNotifier::notifyFrame() VT_resizeFrame_Video_opt2_lp(&input, &output, NULL, 0); mapper.unlock((buffer_handle_t)vBuf); - videoMetadataBuffer->metadataBufferType = kMetadataBufferTypeCanvasSource; + videoMetadataBuffer->metadataBufferType = kMetadataBufferTypeGrallocSource; videoMetadataBuffer->handle= (void *)vBuf; videoMetadataBuffer->canvas = 0; } else { - videoMetadataBuffer->metadataBufferType = kMetadataBufferTypeCanvasSource; + videoMetadataBuffer->metadataBufferType = frame->metadataBufferType; videoMetadataBuffer->handle = (void*)frame->mBuffer; videoMetadataBuffer->canvas = frame->mCanvas; } @@ -1515,6 +1527,11 @@ status_t AppCallbackNotifier::startPreviewCallbacks(CameraParameters ¶ms, vo mPreviewPixelFormat = CameraParameters::PIXEL_FORMAT_RGB565; } +#ifdef METADATA_MODE_FOR_PREVIEW_CALLBACK + if (mUseMetaDataBufferMode) + size = sizeof(video_metadata_t) + 4; +#endif + mPreviewMemory = mRequestMemory(-1, size, AppCallbackNotifier::MAX_BUFFERS, NULL); if (!mPreviewMemory) { return NO_MEMORY; |