diff options
author | Vladimir Petrov <vppetrov@mm-sol.com> | 2012-08-14 19:06:24 +0300 |
---|---|---|
committer | Daniel Levin <dendy@ti.com> | 2012-11-26 20:05:28 +0200 |
commit | 602fb4e4e64f43577a5aff516a0e2d8bf400738f (patch) | |
tree | 45113cfdf0f81949df5ee1ee4764d0c3c3863055 /test/CameraHal/camera_test_menu.cpp | |
parent | fcc59393c2711ba35dfc09da2ec5d746b5ce621e (diff) | |
download | hardware_ti_omap4-602fb4e4e64f43577a5aff516a0e2d8bf400738f.zip hardware_ti_omap4-602fb4e4e64f43577a5aff516a0e2d8bf400738f.tar.gz hardware_ti_omap4-602fb4e4e64f43577a5aff516a0e2d8bf400738f.tar.bz2 |
Camera_test: Re-arrange creation of buffer sources
- The buffer source adapters should be re-created
if changed some parameters.
Change-Id: Ifd9e2c406adf8fbab11dcb530b87a8d01e490341
Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
Diffstat (limited to 'test/CameraHal/camera_test_menu.cpp')
-rw-r--r-- | test/CameraHal/camera_test_menu.cpp | 69 |
1 files changed, 45 insertions, 24 deletions
diff --git a/test/CameraHal/camera_test_menu.cpp b/test/CameraHal/camera_test_menu.cpp index c286e74..b5f2293 100644 --- a/test/CameraHal/camera_test_menu.cpp +++ b/test/CameraHal/camera_test_menu.cpp @@ -534,6 +534,10 @@ int algoSharpeningIDX = 1; int algoThreeLinColorMapIDX = 1; int algoGICIDX = 1; +/** Buffer source reset */ +bool bufferSourceInputReset = false; +bool bufferSourceOutputReset = false; + /** Calculate delay from a reference time */ unsigned long long timeval_delay(const timeval *ref) { unsigned long long st, end, delay; @@ -1183,6 +1187,8 @@ int openCamera() { layoutstr = new char[256]; capturelayoutstr = new char[256]; + requestBufferSourceReset(); + printf("openCamera(camera_index=%d)\n", camera_index); camera = Camera::connect(camera_index); @@ -1231,6 +1237,10 @@ int closeCamera() { } void createBufferOutputSource() { + if(bufferSourceOutputThread.get() && bufferSourceOutputReset) { + bufferSourceOutputThread->requestExit(); + bufferSourceOutputThread.clear(); + } if(!bufferSourceOutputThread.get()) { #ifdef ANDROID_API_JB_OR_LATER bufferSourceOutputThread = new BQ_BufferSourceThread(123, camera); @@ -1239,6 +1249,27 @@ void createBufferOutputSource() { #endif bufferSourceOutputThread->run(); } + bufferSourceOutputReset = false; +} + +void createBufferInputSource() { + if (bufferSourceInput.get() && bufferSourceInputReset) { + bufferSourceInput.clear(); + } + if (!bufferSourceInput.get()) { +#ifdef ANDROID_API_JB_OR_LATER + bufferSourceInput = new BQ_BufferSourceInput(1234, camera); +#else + bufferSourceInput = new ST_BufferSourceInput(1234, camera); +#endif + bufferSourceInput->init(); + } + bufferSourceInputReset = false; +} + +void requestBufferSourceReset() { + bufferSourceInputReset = true; + bufferSourceOutputReset = true; } int startPreview() { @@ -1337,14 +1368,7 @@ int startPreview() { const char *format = params.getPictureFormat(); if((NULL != format) && isRawPixelFormat(format)) { createBufferOutputSource(); - if (!bufferSourceInput.get()) { -#ifdef ANDROID_API_JB_OR_LATER - bufferSourceInput = new BQ_BufferSourceInput(1234, camera); -#else - bufferSourceInput = new ST_BufferSourceInput(1234, camera); -#endif - bufferSourceInput->init(); - } + createBufferInputSource(); } return 0; @@ -2021,10 +2045,14 @@ int deleteAllocatedMemory() { delete [] layoutstr; delete [] capturelayoutstr; + // Release buffer sources if any if (bufferSourceOutputThread.get()) { bufferSourceOutputThread->requestExit(); bufferSourceOutputThread.clear(); } + if ( bufferSourceInput.get() ) { + bufferSourceInput.clear(); + } return 0; } @@ -2713,13 +2741,7 @@ int functional_menu() { } else { stopPreview(); } - if (bufferSourceOutputThread.get()) { - bufferSourceOutputThread->requestExit(); - bufferSourceOutputThread.clear(); - } - if ( bufferSourceInput.get() ) { - bufferSourceInput.clear(); - } + break; case '3': @@ -2766,6 +2788,9 @@ int functional_menu() { if ( hardwareActive ) camera->setParameters(params.flatten()); + + requestBufferSourceReset(); + break; case 'l': @@ -3017,6 +3042,8 @@ int functional_menu() { if ( hardwareActive ) camera->setParameters(params.flatten()); + requestBufferSourceReset(); + break; case 'K': @@ -3144,6 +3171,8 @@ int functional_menu() { camera->setParameters(params.flatten()); } + requestBufferSourceReset(); + break; case 'U': @@ -3514,15 +3543,7 @@ int functional_menu() { ShotParameters reprocParams; gettimeofday(&picture_start, 0); - if (!bufferSourceInput.get()) { -#ifdef ANDROID_API_JB_OR_LATER - bufferSourceInput = new BQ_BufferSourceInput(1234, camera); -#else - bufferSourceInput = new ST_BufferSourceInput(1234, camera); -#endif - bufferSourceInput->init(); - } - + createBufferInputSource(); if (bufferSourceOutputThread.get() && bufferSourceOutputThread->hasBuffer()) { |