613 lines
11 KiB
C
Executable File
613 lines
11 KiB
C
Executable File
|
|
#include "kwrap/type.h"
|
|
#include "ImageApp/ImageApp_Photo.h"
|
|
#include "WiFiIpc/nvtwifi.h"
|
|
#include "UIWnd/UIFlow.h"
|
|
#include "Mode/UIMode.h"
|
|
#include "UIWnd/UIFlow.h"
|
|
#include "ImageApp/ImageApp_Photo_CapInfor.h"
|
|
#include "vendor_isp.h"
|
|
|
|
|
|
|
|
|
|
#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
#define __MODULE__ UIPhotoMapping
|
|
#define __DBGLVL__ ((THIS_DBGLVL>=PRJ_DBG_LVL)?THIS_DBGLVL:PRJ_DBG_LVL)
|
|
#define __DBGFLT__ "*" //*=All, [mark]=CustomClass
|
|
|
|
#include <kwrap/debug.h>
|
|
|
|
typedef struct {
|
|
UINT32 uiWidth;
|
|
UINT32 uiHeight;
|
|
UINT32 uiImageRatio;
|
|
const CHAR *String;
|
|
} PHOTO_SIZE_PARAM;
|
|
|
|
static PHOTO_SIZE_PARAM g_PhotoCapSizeTable[PHOTO_SIZE_ID_MAX + 2] = {
|
|
{4032, 3024, IMAGERATIO_4_3, "12M"}, //12M
|
|
{3648, 2736, IMAGERATIO_4_3, "10M"}, //10M
|
|
{3264, 2448, IMAGERATIO_4_3, "8M"}, // 8M
|
|
{2992, 1696, IMAGERATIO_16_9, "5M"}, // 5M
|
|
{2048, 1536, IMAGERATIO_4_3, "3M"}, // 3M
|
|
{640, 480, IMAGERATIO_4_3, "VGA"}, // VGA
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
// +2 mode (only for internel test!!!)
|
|
{1280, 960, IMAGERATIO_4_3, "1.3M"}, // 1.3M
|
|
{1920, 1080, IMAGERATIO_16_9, "2MHD"}, // 2MHD
|
|
};
|
|
|
|
const CHAR *Get_SizeString(UINT32 uiIndex)
|
|
{
|
|
if (uiIndex < PHOTO_SIZE_ID_MAX) {
|
|
return g_PhotoCapSizeTable[uiIndex].String;
|
|
} else {
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
UINT32 GetPhotoSizeWidth(UINT32 ubIndex)
|
|
{
|
|
return g_PhotoCapSizeTable[ubIndex].uiWidth;
|
|
}
|
|
|
|
UINT32 GetPhotoSizeHeight(UINT32 ubIndex)
|
|
{
|
|
return g_PhotoCapSizeTable[ubIndex].uiHeight;
|
|
}
|
|
|
|
UINT32 GetPhotoSizeRatio(UINT32 ubIndex)
|
|
{
|
|
return g_PhotoCapSizeTable[ubIndex].uiImageRatio;
|
|
}
|
|
|
|
/*************************************************
|
|
Dzoom string handling
|
|
**************************************************/
|
|
// DZoom string
|
|
#define MAX_DZOOM_STR_LEN 16
|
|
static CHAR g_cDZoomRatioStr[MAX_DZOOM_STR_LEN] = {0};
|
|
|
|
CHAR *Get_DZoomRatioString(void)
|
|
{
|
|
UINT32 m, n;
|
|
UINT32 DzoomIndx =0;
|
|
#if(PHOTO_MODE==ENABLE)
|
|
#if (DZOOM_FUNC)
|
|
DzoomIndx = DZOOM_IDX_GET();
|
|
#else
|
|
DzoomIndx = 0;
|
|
#endif
|
|
#endif
|
|
m = (DzoomIndx + 10) / 10;
|
|
n = DzoomIndx % 10;
|
|
snprintf(g_cDZoomRatioStr, sizeof(g_cDZoomRatioStr), "x%ld.%ld", m, n);
|
|
return g_cDZoomRatioStr;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
UINT32 Get_MacroIndexFromValue(UINT32 value)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (value) {
|
|
case AF_F_MACRO:
|
|
return MACRO_ON;
|
|
case AF_F_AUTO:
|
|
return MACRO_OFF;
|
|
default:
|
|
DBG_ERR("value=%d\r\n", value);
|
|
return MACRO_OFF;
|
|
}
|
|
#else
|
|
return MACRO_OFF;
|
|
#endif
|
|
}
|
|
|
|
UINT32 Get_MacroValue(UINT32 uhIndex)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (uhIndex) {
|
|
case MACRO_ON:
|
|
return AF_F_MACRO;
|
|
case MACRO_OFF:
|
|
return AF_F_AUTO;
|
|
default:
|
|
DBG_ERR("uhIndex=%d\r\n", uhIndex);
|
|
return AF_F_AUTO;
|
|
}
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
UINT32 Get_FlashValue(UINT32 uiIndex)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (uiIndex) {
|
|
case FLASH_AUTO:
|
|
return AE_FLASH_AUTO;
|
|
case FLASH_RED_EYE:
|
|
return AE_FLASH_AUTOREDEYE;
|
|
case FLASH_OFF:
|
|
return AE_FLASH_FORCEOFF;
|
|
case FLASH_ON:
|
|
return AE_FLASH_FORCEON;
|
|
default:
|
|
DBG_ERR("uiIndex=%d\r\n", uiIndex);
|
|
return 0;
|
|
}
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
UINT32 Get_FlashIndexFromValue(UINT32 value)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (value) {
|
|
case AE_FLASH_FORCEON:
|
|
return FLASH_ON;
|
|
case AE_FLASH_AUTO:
|
|
return FLASH_AUTO;
|
|
case AE_FLASH_AUTOREDEYE:
|
|
return FLASH_RED_EYE;
|
|
case AE_FLASH_FORCEOFF:
|
|
return FLASH_OFF;
|
|
default:
|
|
DBG_ERR("value=%d\r\n", value);
|
|
return FLASH_OFF;
|
|
}
|
|
#else
|
|
return FLASH_OFF;
|
|
#endif
|
|
}
|
|
|
|
UINT32 Get_EVValue(UINT32 uhIndex)
|
|
{
|
|
|
|
switch (uhIndex) {
|
|
case EV_N20:
|
|
return AE_EV_N2;
|
|
case EV_N16:
|
|
return AE_EV_N5_3;
|
|
case EV_N13:
|
|
return AE_EV_N4_3;
|
|
case EV_N10:
|
|
return AE_EV_N1;
|
|
case EV_N06:
|
|
return AE_EV_N2_3;
|
|
case EV_N03:
|
|
return AE_EV_N1_3;
|
|
case EV_00:
|
|
return AE_EV_00;
|
|
case EV_P03:
|
|
return AE_EV_P1_3;
|
|
case EV_P06:
|
|
return AE_EV_P2_3;
|
|
case EV_P10:
|
|
return AE_EV_P1;
|
|
case EV_P13:
|
|
return AE_EV_P4_3;
|
|
case EV_P16:
|
|
return AE_EV_P5_3;
|
|
case EV_P20:
|
|
return AE_EV_P2;
|
|
default:
|
|
DBG_ERR("uhIndex=%d\r\n", uhIndex);
|
|
return AE_EV_00;
|
|
}
|
|
|
|
}
|
|
|
|
UINT32 Get_EVIndexFromValue(UINT32 value)
|
|
{
|
|
|
|
switch (value) {
|
|
case AE_EV_N2:
|
|
return EV_N20;
|
|
case AE_EV_N5_3:
|
|
return EV_N16;
|
|
case AE_EV_N4_3:
|
|
return EV_N13;
|
|
case AE_EV_N1:
|
|
return EV_N10;
|
|
case AE_EV_N2_3:
|
|
return EV_N06;
|
|
case AE_EV_N1_3:
|
|
return EV_N03;
|
|
case AE_EV_00:
|
|
return EV_00;
|
|
case AE_EV_P1_3:
|
|
return EV_P03;
|
|
case AE_EV_P2_3:
|
|
return EV_P06;
|
|
case AE_EV_P1:
|
|
return EV_P10;
|
|
case AE_EV_P4_3:
|
|
return EV_P13;
|
|
case AE_EV_P5_3:
|
|
return EV_P16;
|
|
case AE_EV_P2:
|
|
return EV_P20;
|
|
default:
|
|
DBG_ERR("value=%d\r\n", value);
|
|
return EV_00;
|
|
|
|
}
|
|
}
|
|
|
|
UINT32 Get_QualityValue(UINT32 uhIndex)
|
|
{
|
|
switch (uhIndex) {
|
|
case QUALITY_FINE:
|
|
return 95;
|
|
case QUALITY_NORMAL:
|
|
return 87;
|
|
case QUALITY_ECONOMY:
|
|
return 80;
|
|
default:
|
|
DBG_ERR("uhIndex=%d\r\n", uhIndex);
|
|
return 80;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
UINT32 Get_WBValue(UINT32 uhIndex)
|
|
{
|
|
|
|
switch (uhIndex) {
|
|
case WB_AUTO:
|
|
return AWB_SCENE_AUTO;
|
|
case WB_DAYLIGHT:
|
|
return AWB_SCENE_DAYLIGHT;
|
|
case WB_CLOUDY:
|
|
return AWB_SCENE_CLOUDY;
|
|
case WB_TUNGSTEN:
|
|
return AWB_SCENE_TUNGSTEN;
|
|
case WB_FLUORESCENT:
|
|
return AWB_SCENE_CUSTOMER1;
|
|
default:
|
|
DBG_ERR("uhIndex=%d\r\n", uhIndex);
|
|
return AWB_SCENE_AUTO;
|
|
}
|
|
}
|
|
|
|
UINT32 Get_WBIndexFromValue(UINT32 value)
|
|
{
|
|
switch (value) {
|
|
case AWB_SCENE_AUTO:
|
|
return WB_AUTO;
|
|
case AWB_SCENE_DAYLIGHT:
|
|
return WB_DAYLIGHT;
|
|
case AWB_SCENE_CLOUDY:
|
|
return WB_CLOUDY;
|
|
case AWB_SCENE_CUSTOMER1:
|
|
return WB_FLUORESCENT;
|
|
default:
|
|
DBG_ERR("value=%d\r\n", value);
|
|
return WB_AUTO;
|
|
}
|
|
}
|
|
|
|
UINT32 Get_ColorValue(UINT32 uhIndex)
|
|
{
|
|
|
|
switch (uhIndex) {
|
|
case COLOR_EFFECT_STANDARD:
|
|
return IQ_UI_IMAGEEFFECT_OFF;
|
|
case COLOR_EFFECT_MONOCHROME:
|
|
return IQ_UI_IMAGEEFFECT_BW;
|
|
case COLOR_EFFECT_SEPIA:
|
|
return IQ_UI_IMAGEEFFECT_SEPIA;
|
|
default:
|
|
DBG_ERR("uhIndex=%d\r\n", uhIndex);
|
|
return IQ_UI_IMAGEEFFECT_OFF;
|
|
}
|
|
}
|
|
|
|
UINT32 Get_NRValue(UINT32 uhIndex)
|
|
{
|
|
|
|
switch (uhIndex) {
|
|
case MOVIE_NR_LV_N1:
|
|
return IQ_UI_NR_LV_N1;
|
|
case MOVIE_NR_LV_NORMAL:
|
|
return IQ_UI_NR_LV_NORMAL;
|
|
case MOVIE_NR_LV_P1:
|
|
return IQ_UI_NR_LV_P1;
|
|
default:
|
|
DBG_ERR("uhIndex=%d\r\n", uhIndex);
|
|
return IQ_UI_NR_LV_NORMAL;
|
|
}
|
|
}
|
|
|
|
UINT32 Get_ISOValue(UINT32 uhIndex)
|
|
{
|
|
|
|
switch (uhIndex) {
|
|
case ISO_AUTO:
|
|
return AE_ISO_AUTO;
|
|
case ISO_100:
|
|
return AE_ISO_100;
|
|
case ISO_200:
|
|
return AE_ISO_200;
|
|
case ISO_400:
|
|
return AE_ISO_400;
|
|
case ISO_800:
|
|
return AE_ISO_800;
|
|
case ISO_1600:
|
|
return AE_ISO_1600;
|
|
|
|
default:
|
|
DBG_ERR("uhIndex=%d\r\n", uhIndex);
|
|
return AE_ISO_AUTO;
|
|
}
|
|
}
|
|
|
|
UINT32 Get_SceneModeValue(UINT32 uhIndex)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (uhIndex) {
|
|
case SCENE_LANDSCAPE:
|
|
return AE_SCENE_LANDSCAPE;
|
|
|
|
case SCENE_PORTRAIT:
|
|
return AE_SCENE_POTRAIT;
|
|
|
|
case SCENE_AUTO:
|
|
return AE_SCENE_AUTO;
|
|
|
|
default:
|
|
DBG_ERR("=%d\r\n", uhIndex);
|
|
return AE_SCENE_AUTO;
|
|
}
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
UINT32 Get_SceneModeIndexFromValue(UINT32 uhIndex)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (uhIndex) {
|
|
case AE_SCENE_LANDSCAPE:
|
|
return SCENE_LANDSCAPE;
|
|
case AE_SCENE_POTRAIT:
|
|
return SCENE_PORTRAIT;
|
|
case AE_SCENE_AUTO:
|
|
return SCENE_AUTO;
|
|
default:
|
|
DBG_ERR("=%d\r\n", uhIndex);
|
|
return SCENE_AUTO;
|
|
}
|
|
#else
|
|
return SCENE_AUTO;
|
|
#endif
|
|
}
|
|
|
|
UINT32 Get_MeteringValue(UINT32 uhIndex)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (uhIndex) {
|
|
case METERING_SPOT:
|
|
return AE_METER_SPOT;
|
|
case METERING_CENTER:
|
|
return AE_METER_CENTERWEIGHTED;
|
|
case METERING_AIAE:
|
|
default:
|
|
return AE_METER_USERDEFINE;
|
|
}
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
UINT32 Get_AFWindowIndexFromValue(UINT32 value)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (value) {
|
|
case AF_WINDOW_CENTER:
|
|
return AFWINDOW_SINGLE;
|
|
case AF_WINDOW_AUTO:
|
|
return AFWINDOW_MULTI;
|
|
default:
|
|
DBG_ERR("value=%d\r\n", value);
|
|
return AFWINDOW_SINGLE;
|
|
}
|
|
#else
|
|
return AFWINDOW_SINGLE;
|
|
#endif
|
|
}
|
|
UINT32 Get_AFWindowValue(UINT32 uhIndex)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (uhIndex) {
|
|
case AFWINDOW_SINGLE:
|
|
return AF_WINDOW_CENTER;
|
|
case AFWINDOW_MULTI:
|
|
return AF_WINDOW_AUTO;
|
|
default:
|
|
DBG_ERR("uhIndex=%d\r\n", uhIndex);
|
|
return AF_WINDOW_CENTER;
|
|
}
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
UINT32 Get_FDImageRatioValue(UINT32 value)
|
|
{
|
|
#if(PHOTO_MODE==ENABLE)
|
|
#if (IQ_FUNC)
|
|
switch (value) {
|
|
case IMAGERATIO_4_3:
|
|
return FD_IMAGERATIO_4_3;
|
|
case IMAGERATIO_3_2:
|
|
return FD_IMAGERATIO_3_2;
|
|
case IMAGERATIO_16_9:
|
|
return FD_IMAGERATIO_16_9;
|
|
default:
|
|
DBG_ERR("value=%d\r\n", value);
|
|
return FD_IMAGERATIO_4_3;
|
|
}
|
|
#else
|
|
return 0;
|
|
#endif
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
UINT32 Get_DatePrintValue(UINT32 value)
|
|
{
|
|
#if 1//(IQ_FUNC)
|
|
switch (value) {
|
|
case DATE_STAMP_OFF:
|
|
return SEL_DATASTAMP_OFF;
|
|
case DATE_STAMP_DATE:
|
|
case DATE_STAMP_DATE_TIME:
|
|
return SEL_DATASTAMP_ON;
|
|
default:
|
|
DBG_ERR("value=%d\r\n", value);
|
|
return SEL_DATASTAMP_OFF;
|
|
}
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
UINT32 Get_SharpnessValue(UINT32 value)
|
|
{
|
|
|
|
switch (value) {
|
|
case SHARPNESS_SHARP:
|
|
return IQ_UI_SHARPNESS_LV_P1;
|
|
case SHARPNESS_NORMAL:
|
|
return IQ_UI_SHARPNESS_LV_NORMAL;
|
|
case SHARPNESS_SOFT:
|
|
return IQ_UI_SHARPNESS_LV_N1;
|
|
|
|
default:
|
|
DBG_ERR("value=%d\r\n", value);
|
|
return IQ_UI_SHARPNESS_LV_NORMAL;
|
|
}
|
|
}
|
|
|
|
UINT32 Get_SaturationValue(UINT32 value)
|
|
{
|
|
|
|
switch (value) {
|
|
case SATURATION_HIGH:
|
|
return IQ_UI_SATURATION_LV_P1;
|
|
case SATURATION_NORMAL:
|
|
return IQ_UI_SATURATION_LV_NORMAL;
|
|
case SATURATION_LOW:
|
|
return IQ_UI_SATURATION_LV_N1;
|
|
default:
|
|
DBG_ERR("value=%d\r\n", value);
|
|
return IQ_UI_SATURATION_LV_NORMAL;
|
|
}
|
|
}
|
|
|
|
UINT32 Get_ImageEffectValue(UINT32 value)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (value) {
|
|
case IMAGEEFFECT_SKETCH:
|
|
return IQ_IMAGEEFFECT_SKETCH;
|
|
|
|
case IMAGEEFFECT_FISHEYE:
|
|
return IQ_IMAGEEFFECT_FISHEYE;
|
|
|
|
case IMAGEEFFECT_COLORPENCIL:
|
|
return IQ_IMAGEEFFECT_COLORPENCIL;
|
|
|
|
case IMAGEEFFECT_ANTISHAKE:
|
|
return IQ_IMAGEEFFECT_OFF;
|
|
|
|
case IMAGEEFFECT_HDR:
|
|
return IQ_IMAGEEFFECT_OFF;
|
|
|
|
default:
|
|
DBG_ERR("value=%d\r\n", value);
|
|
return IQ_IMAGEEFFECT_OFF;
|
|
}
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
UINT32 Get_SHDRValue(UINT32 uhIndex)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (uhIndex) {
|
|
case SHDR_ON:
|
|
return SEL_SHDR_ON;
|
|
case SHDR_OFF:
|
|
return SEL_SHDR_OFF;
|
|
default:
|
|
DBG_ERR("uhIndex=%d\r\n", uhIndex);
|
|
return SEL_SHDR_ON;
|
|
}
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
|
|
UINT32 Get_WDRValue(UINT32 uhIndex)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (uhIndex) {
|
|
case WDR_ON:
|
|
return SEL_WDR_AUTO;
|
|
case WDR_OFF:
|
|
return SEL_WDR_OFF;
|
|
default:
|
|
DBG_ERR("uhIndex=%d\r\n", uhIndex);
|
|
return SEL_WDR_AUTO;
|
|
}
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
|
|
UINT32 Get_AntishakeValue(UINT32 uhIndex)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (uhIndex) {
|
|
case ANTISHAKE_ON:
|
|
return AE_ANTISHAKE_LV1;
|
|
case ANTISHAKE_OFF:
|
|
return AE_ANTISHAKE_LV0;
|
|
default:
|
|
DBG_ERR("uhIndex=%d\r\n", uhIndex);
|
|
return AE_ANTISHAKE_LV0;
|
|
}
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
UINT32 Get_DefogValue(UINT32 uhIndex)
|
|
{
|
|
#if (IQ_FUNC)
|
|
switch (uhIndex) {
|
|
case DEFOG_ON:
|
|
return SEL_DEFOG_ON;
|
|
case DEFOG_OFF:
|
|
return SEL_DEFOG_OFF;
|
|
default:
|
|
DBG_ERR("uhIndex=%d\r\n", uhIndex);
|
|
return SEL_DEFOG_ON;
|
|
}
|
|
#else
|
|
return 0;
|
|
#endif
|
|
}
|
|
|
|
|
|
|