summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorVladimir Petrov <vppetrov@mm-sol.com>2012-04-03 13:21:25 +0300
committerDaniel Levin <dendy@ti.com>2012-07-25 08:55:46 -0500
commit9fb564cfb66259837541da07947732d9adc008fa (patch)
treeb0940707c0c87b560bd98154ed37f5f524cf53fe /test
parent4cf92ded8eab5f5057ef266168f1dcbe6e169b7b (diff)
downloadhardware_ti_omap4-9fb564cfb66259837541da07947732d9adc008fa.zip
hardware_ti_omap4-9fb564cfb66259837541da07947732d9adc008fa.tar.gz
hardware_ti_omap4-9fb564cfb66259837541da07947732d9adc008fa.tar.bz2
camera_test: Add RAW Burst and Exp/Gain Bracketing
The native Android camera parameter is used to set the BAYER RAW image format (PIXEL_FORMAT_BAYER_RGGB) instead of the non-standard "raw". Uses a custom camera parameter "exp-gain-bracketing-range" to set the vector with exposure/gain pair values. Sets the default burst frames count to "9". Fill the shot parameters in Exp/Gain bracketing mode. Adds a method to set custom Exp/Gain vector. The user can simply paste a string with his/her vector in the application screen and then press "Enter". To set custom Exp/Gain vectors in test scripts, lines in following format can be added: ? (33000,10),(0,70),(33000,100) Change-Id: I6f4ee2eea6be82d33b875cf86c074e53333207f4 Signed-off-by: Tyler Luu <tluu@ti.com> Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
Diffstat (limited to 'test')
-rw-r--r--test/CameraHal/camera_test.h3
-rw-r--r--test/CameraHal/camera_test_menu.cpp77
-rw-r--r--test/CameraHal/camera_test_script.cpp7
3 files changed, 65 insertions, 22 deletions
diff --git a/test/CameraHal/camera_test.h b/test/CameraHal/camera_test.h
index bab8d2b..cd6ef0b 100644
--- a/test/CameraHal/camera_test.h
+++ b/test/CameraHal/camera_test.h
@@ -28,6 +28,7 @@
#define KEY_AUTOCONVERGENCE "auto-convergence-mode"
#define KEY_MANUAL_CONVERGENCE "manual-convergence"
#define KEY_EXP_BRACKETING_RANGE "exp-bracketing-range"
+#define KEY_EXP_GAIN_BRACKETING_RANGE "exp-gain-bracketing-range"
#define KEY_TEMP_BRACKETING "temporal-bracketing"
#define KEY_TEMP_BRACKETING_POS "temporal-bracketing-range-positive"
#define KEY_TEMP_BRACKETING_NEG "temporal-bracketing-range-negative"
@@ -170,6 +171,8 @@ status_t dump_mem_status();
int openCamera();
int closeCamera();
void initDefaults();
+void initDefaultExpGainPairsPreset();
+void setExpGainPairsPreset(const char *input, bool force);
int startPreview();
void stopPreview();
int startRecording();
diff --git a/test/CameraHal/camera_test_menu.cpp b/test/CameraHal/camera_test_menu.cpp
index f2cc013..243ea2c 100644
--- a/test/CameraHal/camera_test_menu.cpp
+++ b/test/CameraHal/camera_test_menu.cpp
@@ -80,7 +80,7 @@ int audioCodecIDX = 0;
int outputFormatIDX = 0;
int contrast = 0;
int brightness = 0;
-unsigned int burst = 0;
+unsigned int burst = 9;
int sharpness = 0;
int iso_mode = 0;
int capture_mode = 0;
@@ -197,8 +197,8 @@ char images_dir_path[256 + 8];
const char *cameras[] = {"Primary Camera", "Secondary Camera 1", "Stereo Camera"};
const char *measurement[] = {"disable", "enable"};
-const char *expBracketing[] = {"disable", "enable"};
-const char *expBracketingRange[] = {"", "-30,0,30,0,-30"};
+const char *expBracketing[] = {"disable", "relative", "absolute-exposure-gain"};
+const char *expBracketingRange[] = {"", "-30,0,30,0,-30", "(33000,10),(0,70),(33000,100),(0,130),(33000,160),(0,180),(33000,200),(0,130),(33000,200)"};
const char *tempBracketing[] = {"disable", "enable"};
const char *faceDetection[] = {"disable", "enable"};
const char *afTimeout[] = {"enable", "disable" };
@@ -416,7 +416,7 @@ pixel_format pixelformat[] = {
{ HAL_PIXEL_FORMAT_YCrCb_420_SP, CameraParameters::PIXEL_FORMAT_YUV420SP },
{ HAL_PIXEL_FORMAT_RGB_565, CameraParameters::PIXEL_FORMAT_RGB565 },
{ -1, CameraParameters::PIXEL_FORMAT_JPEG },
- { -1, "raw" },
+ { -1, CameraParameters::PIXEL_FORMAT_BAYER_RGGB },
};
const char *gbce[] = {"disable", "enable"};
@@ -713,7 +713,7 @@ void CameraHandler::postData(int32_t msgType,
if ( msgType & CAMERA_MSG_PREVIEW_FRAME )
my_preview_callback(dataPtr);
- if ( msgType & CAMERA_MSG_RAW_IMAGE ) {
+ if ( msgType & (CAMERA_MSG_RAW_IMAGE | CAMERA_MSG_RAW_BURST)) {
printf("RAW done in %llu us\n", timeval_delay(&picture_start));
my_raw_callback(dataPtr);
}
@@ -737,8 +737,6 @@ void CameraHandler::postData(int32_t msgType,
void CameraHandler::postDataTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& dataPtr)
{
- printf("Recording cb: %d %lld %p\n", msgType, timestamp, dataPtr.get());
-
static uint32_t count = 0;
//if(count==100)
@@ -748,9 +746,14 @@ void CameraHandler::postDataTimestamp(nsecs_t timestamp, int32_t msgType, const
uint8_t *ptr = (uint8_t*) dataPtr->pointer();
- printf("VID_CB: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x", ptr[0], ptr[1], ptr[2], ptr[3], ptr[4], ptr[5], ptr[6], ptr[7], ptr[8], ptr[9]);
-
- camera->releaseRecordingFrame(dataPtr);
+ if ( msgType & CAMERA_MSG_RAW_BURST) {
+ printf("RAW done timestamp: %llu\n", timestamp);
+ my_raw_callback(dataPtr);
+ } else {
+ printf("Recording cb: %d %lld %p\n", msgType, timestamp, dataPtr.get());
+ printf("VID_CB: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x", ptr[0], ptr[1], ptr[2], ptr[3], ptr[4], ptr[5], ptr[6], ptr[7], ptr[8], ptr[9]);
+ camera->releaseRecordingFrame(dataPtr);
+ }
}
int createPreviewSurface(unsigned int width, unsigned int height, int32_t pixFormat) {
@@ -1184,15 +1187,13 @@ int startPreview() {
camera->setParameters(params.flatten());
camera->setPreviewDisplay(previewSurface);
+ }
- if(hardwareActive) prevcnt = 0;
-
- camera->startPreview();
-
- previewRunning = true;
- reSizePreview = false;
+ if(hardwareActive) prevcnt = 0;
+ camera->startPreview();
+ previewRunning = true;
+ reSizePreview = false;
- }
return 0;
}
@@ -1953,8 +1954,36 @@ void initDefaults() {
params.set(KEY_STEREO_CAMERA, "false");
params.set(KEY_EXIF_MODEL, MODEL);
params.set(KEY_EXIF_MAKE, MAKE);
+
+ initDefaultExpGainPairsPreset();
+}
+
+void initDefaultExpGainPairsPreset() {
+ setExpGainPairsPreset(expBracketingRange[expBracketIdx], false);
}
+void setExpGainPairsPreset(const char *input, bool force) {
+ const char *startPtr = NULL;
+ size_t i = 0;
+
+ if (force || strcmp(expBracketing[expBracketIdx], "absolute-exposure-gain") == 0) {
+ printf("\nabsolute-exposure-gain input: %s\n", input);
+ shotParams.set(ShotParameters::KEY_EXP_GAIN_PAIRS, input);
+
+ // parse for the number of inputs (count the number of '(')
+ startPtr = strchr(input, '(');
+ while (startPtr != NULL) {
+ i++;
+ startPtr = strchr(startPtr + 1, '(');
+ }
+ printf("number of brackets: %d\n", i);
+ burst = i;
+ shotParams.set(ShotParameters::KEY_BURST, burst);
+ } else {
+ shotParams.remove(ShotParameters::KEY_EXP_GAIN_PAIRS);
+ shotParams.remove(ShotParameters::KEY_BURST);
+ }
+}
int menu_gps() {
char ch;
@@ -2746,14 +2775,18 @@ int functional_menu() {
case 'H':
expBracketIdx++;
expBracketIdx %= ARRAY_SIZE(expBracketing);
-
- params.set(KEY_EXP_BRACKETING_RANGE, expBracketingRange[expBracketIdx]);
-
- if ( hardwareActive )
- camera->setParameters(params.flatten());
+ initDefaultExpGainPairsPreset();
break;
+ case '(':
+ {
+ char input[256];
+ input[0] = ch;
+ scanf("%254s", input+1);
+ setExpGainPairsPreset(input, true);
+ break;
+ }
case 'W':
tempBracketRange++;
tempBracketRange %= TEMP_BRACKETING_MAX_RANGE;
diff --git a/test/CameraHal/camera_test_script.cpp b/test/CameraHal/camera_test_script.cpp
index 17c5496..c9bfd4d 100644
--- a/test/CameraHal/camera_test_script.cpp
+++ b/test/CameraHal/camera_test_script.cpp
@@ -306,6 +306,7 @@ int execute_functional_script(char *script) {
} else {
stopPreview();
}
+ printf("%dx%d", captureSize[i].width, captureSize[i].height);
break;
@@ -722,6 +723,12 @@ int execute_functional_script(char *script) {
break;
+ case '?':
+
+ setExpGainPairsPreset(cmd + 1, true);
+
+ break;
+
case 'W':
tempBracketRange = atoi(cmd + 1);