summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Petrov <vppetrov@mm-sol.com>2012-08-14 19:06:24 +0300
committerJason Simmons <jsimmons@google.com>2012-11-07 14:36:32 -0800
commit2de5412b5a9ba7af4d18381e0c9b516e4a06fffe (patch)
tree315b6f961262ccacabd38f0dd187aa6591a5bcf5
parentfa5a022a051ae01a1d8610dd1a95da60975cdcb3 (diff)
downloadomap4-aah-2de5412b5a9ba7af4d18381e0c9b516e4a06fffe.tar.gz
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>
-rw-r--r--test/CameraHal/camera_test.h2
-rw-r--r--test/CameraHal/camera_test_menu.cpp69
-rw-r--r--test/CameraHal/camera_test_script.cpp25
3 files changed, 60 insertions, 36 deletions
diff --git a/test/CameraHal/camera_test.h b/test/CameraHal/camera_test.h
index 6dc1a7c..f5d7faf 100644
--- a/test/CameraHal/camera_test.h
+++ b/test/CameraHal/camera_test.h
@@ -237,6 +237,8 @@ status_t dump_mem_status();
int openCamera();
int closeCamera();
void createBufferOutputSource();
+void createBufferInputSource();
+void requestBufferSourceReset();
void initDefaults();
void setDefaultExpGainPreset(ShotParameters &params, int idx);
void setSingleExpGainPreset(ShotParameters &params, int idx, int exp, int gain);
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())
{
diff --git a/test/CameraHal/camera_test_script.cpp b/test/CameraHal/camera_test_script.cpp
index 64ced44..4a017bc 100644
--- a/test/CameraHal/camera_test_script.cpp
+++ b/test/CameraHal/camera_test_script.cpp
@@ -171,6 +171,10 @@ extern int manualConvMax ;
extern bool faceDetectToggle;
extern unsigned int burstCount;
+/** Buffer source reset */
+extern bool bufferSourceInputReset;
+extern bool bufferSourceOutputReset;
+
void trim_script_cmd(char *cmd) {
char *nl, *cr;
@@ -351,10 +355,6 @@ int execute_functional_script(char *script) {
} else {
stopPreview();
}
- if (bufferSourceOutputThread.get()) {
- bufferSourceOutputThread->requestExit();
- bufferSourceOutputThread.clear();
- }
break;
@@ -436,6 +436,9 @@ int execute_functional_script(char *script) {
camera->setParameters(params.flatten());
}
}
+
+ requestBufferSourceReset();
+
break;
case '6':
@@ -720,6 +723,8 @@ int execute_functional_script(char *script) {
if ( hardwareActive )
camera->setParameters(params.flatten());
+ requestBufferSourceReset();
+
break;
case 'K':
@@ -810,6 +815,8 @@ int execute_functional_script(char *script) {
camera->setParameters(params.flatten());
}
+ requestBufferSourceReset();
+
break;
case 'U':
@@ -1252,14 +1259,8 @@ int execute_functional_script(char *script) {
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())