#ifndef GET_SCENE_PARAM_VIDEOMODE_H
#define GET_SCENE_PARAM_VIDEOMODE_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <limits.h>
#include <securec.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

// Set `g_scene_exit` to 1 to exit the `set_scene_param` function.
extern bool g_scene_exit;


enum PROJECT_TYPE{
	B061_GC5603 = 1,
	
};

static int sg_type = B061_GC5603;


#define B061_WIDTH				2960
#define B061_HIGH				1664
#define B061_ISPversion			6



enum CMDID_e{
	FaceAE_EN		= 0x01,
	FaceAE_XY_WH 	= 0x02,

	LUM_CMD			= 0x21,	
	CONTRAST_CMD 	= 0x22,	
	SATURATION_CMD 	= 0x23,	
	HUE_CMD			= 0x24,	
	SHARPNESS_CMD	= 0x25,

	VERSION_CMD		= 0x81,

	INTERNAL_CMD	= 0x99,
};

typedef struct _SCENEAUTO_Cmd {
	int commandID;
	int faceFlag;
	int commandData[4];
} SceneAuto_Cmd;		   

typedef struct _RWISPPARAM
{
	unsigned int FaceAEEn;  

	unsigned int ISP_Lum;
	unsigned int ISP_Contrast;
	unsigned int ISP_Saturation;
	unsigned int ISP_Hue;
	unsigned int ISP_Sharpness;

}RWISPParam;

extern RWISPParam uRWISPParam;

typedef struct  FACERECT_INFO_S
{
	int  bFlag;
	int  nX;
	int  nY;  
	int  nWidth; 
	int  nHeight;
}FACERECT_S;

// To start the `set_scene_param` function, there is no need to assign a value to `g_scene_exit`.
//int set_scene_param(const FACEAE_PARAMETERS *faceAE_param);
void *SetSceneParam_ThreadFunction(void *arg);

int RWISP_SceneAuto_init(void);
int RWISP_SetSceneAuto(SceneAuto_Cmd *llisp);
int RWISP_GetSceneAuto(SceneAuto_Cmd *llisp);
int RWISP_SceneAuto_deinit(void);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif // GET_SCENE_PARAM_VIDEOMODE_H
