diff options
author | Vladimir Petrov <vppetrov@mm-sol.com> | 2012-04-03 13:21:25 +0300 |
---|---|---|
committer | Daniel Levin <dendy@ti.com> | 2012-07-25 08:55:46 -0500 |
commit | 9fb564cfb66259837541da07947732d9adc008fa (patch) | |
tree | b0940707c0c87b560bd98154ed37f5f524cf53fe /test | |
parent | 4cf92ded8eab5f5057ef266168f1dcbe6e169b7b (diff) | |
download | hardware_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.h | 3 | ||||
-rw-r--r-- | test/CameraHal/camera_test_menu.cpp | 77 | ||||
-rw-r--r-- | test/CameraHal/camera_test_script.cpp | 7 |
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); |