nt9856x/code/application/source/cardv/SrcCode/UIWnd/SPORTCAM/UIInfo/UIPhotoMapping.c
2023-03-28 15:07:53 +08:00

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
}