/**
 * @file hv_res_OsdUserdata.h
 * @brief Auto Generate by HiView OSD Designer, Do Not Edit Manually !
 * @author HiView SoC Software Team
 * @version 1.0.0
 * @date 2023-11-09
 * @copyright Copyright(c),2023-11, HiView Software. All rights reserved.
 * @par History:
 * <table>
 * <tr><th>Author         <th>Date        <th>Change Description
 * <tr><td>OSD Group      <td>2023-11-09<td>create
 * </table>
 */

#ifndef __HV_RES_OSDUSERDATA_H__
#define __HV_RES_OSDUSERDATA_H__

#include "hv_comm_DataType.h"
#include "hv_comm_Define.h"

typedef struct _OsdUserdataParam
{
    UCHAR8 ucBrightness;
    UCHAR8 ucContrast;
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_DCR)
    UCHAR8 ucDcr;
#endif
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_VARIABLEBACKLIGHT)
    UCHAR8 ucVariableBackLight;
#endif
    UCHAR8 ucDisplayMode;
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_DARK_STABILIZER)
    UCHAR8 ucBlackGain;
#endif
    UCHAR8 ucHdr;
    UCHAR8 ucSaturation;
    UCHAR8 ucHue;
    UCHAR8 ucGamma;
    UCHAR8 ucSharpness;
    UCHAR8 ucDisplaySize;
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_OSD_ROTATION)
    UCHAR8 ucRotation;
#endif
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_LDR)
    UCHAR8 ucLdr;
#endif
    UCHAR8 ucColorSpace;
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_COLOR_FILTER)
    UCHAR8 ucColorFilter;
#endif
    UCHAR8 ucColorTemp;
    UCHAR8 ucRed;
    UCHAR8 ucGreen;
    UCHAR8 ucBlue;
    UCHAR8 ucLowBlueLight;
    UCHAR8 ucLanguage;
    UCHAR8 ucMenuHPos;
    UCHAR8 ucMenuVPos;
    UCHAR8 ucOsdTime;
    UCHAR8 ucOsdTrans;
    UCHAR8 ucOsdLock;
    UCHAR8 ucVideoSource;
    UCHAR8 ucAutoSelect;
    UCHAR8 ucResponseTime;
    UCHAR8 ucMute;
    UCHAR8 ucVolume;
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_AUDIO_SETTING)
    UCHAR8 ucTimeDelay;
#endif
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_MPRT)
    UCHAR8 ucMprt;
#endif
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_FREESYNC)
    UCHAR8 ucFreesync;
#endif
    UCHAR8 ucCrosshair;
    UCHAR8 ucDynCrosshair;
    UCHAR8 ucRefreshRate;
    UCHAR8 ucTimerCounter;
    UCHAR8 ucMagnifyGlass;
    UCHAR8 ucPowerLed;
    UCHAR8 ucHdmiFormat;
    UCHAR8 ucCustomKey1;
    UCHAR8 ucCustomKey2;
    UCHAR8 ucCustomKey3;
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_PXP)
    UCHAR8 ucPxpMode;
#endif
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_PXP)
    UCHAR8 ucPxpVideosource;
#endif
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_PXP)
    UCHAR8 ucPxpSwitch;
#endif
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_AUDIO_SETTING)
    UCHAR8 ucAudioSource;
#endif
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_PXP)
    UCHAR8 ucPipPosition;
#endif
#if (HV_CONFIG_ON == HV_PROJECT_CONFIG_PXP)
    UCHAR8 ucPipSize;
#endif
} OsdUserdataParam;

/********* Userdata enum define *********/
typedef enum
{
    E_USERDATA_NONE,
    E_USERDATA_BRIGHTNESS,
    E_USERDATA_CONTRAST,
    E_USERDATA_DCR,
    E_USERDATA_VARIABLEBACKLIGHT,
    E_USERDATA_DISPLAY_MODE,
    E_USERDATA_DARKSTABILIZER,
    E_USERDATA_HDR,
    E_USERDATA_SATURATION,
    E_USERDATA_HUE,
    E_USERDATA_GAMMA,
    E_USERDATA_SHARPNESS,
    E_USERDATA_PROPORTION,
    E_USERDATA_ROTATION,
    E_USERDATA_LDR,
    E_USERDATA_COLOR_SPACE,
    E_USERDATA_COLOR_FILTER,
    E_USERDATA_COLOR_TEMP,
    E_USERDATA_RED,
    E_USERDATA_GREEN,
    E_USERDATA_BLUE,
    E_USERDATA_LOW_BLUE_LIGHT,
    E_USERDATA_LANGUAGE,
    E_USERDATA_MENUX,
    E_USERDATA_MENUY,
    E_USERDATA_MENUTIMER,
    E_USERDATA_MENUTRANSPARENCY,
    E_USERDATA_MENULOCK,
    E_USERDATA_VIDEOSOURCE,
    E_USERDATA_AUTOSOURCE,
    E_USERDATA_RESPONSETIME,
    E_USERDATA_MUTE,
    E_USERDATA_VOLUME,
    E_USERDATA_TIME_DELAY,
    E_USERDATA_MPRT,
    E_USERDATA_FREESYNC,
    E_USERDATA_CROSSHAIR,
    E_USERDATA_DYN_CROSSHAIR,
    E_USERDATA_REFRESH_RATE,
    E_USERDATA_TIME_COUNTER,
    E_USERDATA_MAGNIFY_GLASS,
    E_USERDATA_LIGHT_EFFECT,
    E_USERDATA_HDMI_FORMAT,
    E_USERDATA_CUSTOM_KEY1,
    E_USERDATA_CUSTOM_KEY2,
    E_USERDATA_CUSTOM_KEY3,
    E_USERDATA_PXPMODE,
    E_USERDATA_PXPVIDEOSOURCE,
    E_USERDATA_PXP_SWITCH,
    E_USERDATA_AUDIO_SOURCE,
    E_USERDATA_PIP_POSITION,
    E_USERDATA_PIP_SIZE,
    E_USERDATA_MAX,
}UserdataId;

/********* Userdata prop & value define *********/
/********* E_USERDATA_BRIGHTNESS *********/
#define USERDATA_BRIGHTNESS_MIN        (0)
#define USERDATA_BRIGHTNESS_MAX        (100)
#define USERDATA_BRIGHTNESS_CIRCLE     (HV_FALSE)

/********* E_USERDATA_CONTRAST *********/
#define USERDATA_CONTRAST_MIN        (0)
#define USERDATA_CONTRAST_MAX        (100)
#define USERDATA_CONTRAST_CIRCLE     (HV_FALSE)

/********* E_USERDATA_DCR *********/
typedef enum
{
    UD_DCR_V_OFF,
    UD_DCR_V_ON,
    UD_DCR_V_NUM,
}UserdataValueDcr;
#define USERDATA_DCR_MIN        (UD_DCR_V_OFF)
#define USERDATA_DCR_MAX        (UD_DCR_V_ON)
#define USERDATA_DCR_CIRCLE     (HV_TRUE)

/********* E_USERDATA_VARIABLEBACKLIGHT *********/
typedef enum
{
    UD_VARIABLEBACKLIGHT_V_OFF,
    UD_VARIABLEBACKLIGHT_V_ON,
    UD_VARIABLEBACKLIGHT_V_NUM,
}UserdataValueVariableBackLight;
#define USERDATA_VARIABLEBACKLIGHT_MIN        (UD_VARIABLEBACKLIGHT_V_OFF)
#define USERDATA_VARIABLEBACKLIGHT_MAX        (UD_VARIABLEBACKLIGHT_V_ON)
#define USERDATA_VARIABLEBACKLIGHT_CIRCLE     (HV_TRUE)

/********* E_USERDATA_DISPLAY_MODE *********/
typedef enum
{
    UD_DISPLAY_MODE_V_GAME,
    UD_DISPLAY_MODE_V_MOVIE,
    UD_DISPLAY_MODE_V_OFFICE,
    UD_DISPLAY_MODE_V_STANDARD,
    UD_DISPLAY_MODE_V_CUSTOM,
    UD_DISPLAY_MODE_V_NUM,
}UserdataValueDisplayMode;
#define USERDATA_DISPLAY_MODE_MIN        (UD_DISPLAY_MODE_V_GAME)
#define USERDATA_DISPLAY_MODE_MAX        (UD_DISPLAY_MODE_V_CUSTOM)
#define USERDATA_DISPLAY_MODE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_DARKSTABILIZER *********/
#define USERDATA_DARKSTABILIZER_MIN        (0)
#define USERDATA_DARKSTABILIZER_MAX        (20)
#define USERDATA_DARKSTABILIZER_CIRCLE     (HV_FALSE)

/********* E_USERDATA_HDR *********/
typedef enum
{
    UD_HDR_V_OFF,
    UD_HDR_V_AUTO,
    UD_HDR_V_NUM,
}UserdataValueHdr;
#define USERDATA_HDR_MIN        (UD_HDR_V_OFF)
#define USERDATA_HDR_MAX        (UD_HDR_V_AUTO)
#define USERDATA_HDR_CIRCLE     (HV_TRUE)

/********* E_USERDATA_SATURATION *********/
#define USERDATA_SATURATION_MIN        (0)
#define USERDATA_SATURATION_MAX        (100)
#define USERDATA_SATURATION_CIRCLE     (HV_FALSE)

/********* E_USERDATA_HUE *********/
#define USERDATA_HUE_MIN        (0)
#define USERDATA_HUE_MAX        (100)
#define USERDATA_HUE_CIRCLE     (HV_FALSE)

/********* E_USERDATA_GAMMA *********/
typedef enum
{
    UD_GAMMA_V_1_6,
    UD_GAMMA_V_1_8,
    UD_GAMMA_V_2_0,
    UD_GAMMA_V_2_2,
    UD_GAMMA_V_2_4,
    UD_GAMMA_V_2_6,
    UD_GAMMA_V_NUM,
}UserdataValueGamma;
#define USERDATA_GAMMA_MIN        (UD_GAMMA_V_1_6)
#define USERDATA_GAMMA_MAX        (UD_GAMMA_V_2_6)
#define USERDATA_GAMMA_CIRCLE     (HV_TRUE)

/********* E_USERDATA_SHARPNESS *********/
#define USERDATA_SHARPNESS_MIN        (0)
#define USERDATA_SHARPNESS_MAX        (20)
#define USERDATA_SHARPNESS_CIRCLE     (HV_FALSE)

/********* E_USERDATA_PROPORTION *********/
typedef enum
{
    UD_PROPORTION_V_AUTO,
    UD_PROPORTION_V_16_9,
    UD_PROPORTION_V_4_3,
    UD_PROPORTION_V_21_9,
    UD_PROPORTION_V_NUM,
}UserdataValueDisplaySize;
#define USERDATA_PROPORTION_MIN        (UD_PROPORTION_V_AUTO)
#define USERDATA_PROPORTION_MAX        (UD_PROPORTION_V_21_9)
#define USERDATA_PROPORTION_CIRCLE     (HV_TRUE)

/********* E_USERDATA_ROTATION *********/
typedef enum
{
    UD_ROTATION_V_OFF,
    UD_ROTATION_V_90,
    UD_ROTATION_V_180,
    UD_ROTATION_V_270,
    UD_ROTATION_V_NUM,
}UserdataValueRotation;
#define USERDATA_ROTATION_MIN        (UD_ROTATION_V_OFF)
#define USERDATA_ROTATION_MAX        (UD_ROTATION_V_270)
#define USERDATA_ROTATION_CIRCLE     (HV_TRUE)

/********* E_USERDATA_LDR *********/
typedef enum
{
    UD_LDR_V_AUTO,
    UD_LDR_V_FULL,
    UD_LDR_V_LIMIT,
    UD_LDR_V_NUM,
}UserdataValueLdr;
#define USERDATA_LDR_MIN        (UD_LDR_V_AUTO)
#define USERDATA_LDR_MAX        (UD_LDR_V_LIMIT)
#define USERDATA_LDR_CIRCLE     (HV_TRUE)

/********* E_USERDATA_COLOR_SPACE *********/
typedef enum
{
    UD_COLOR_SPACE_V_SRGB,
    UD_COLOR_SPACE_V_BT709,
    UD_COLOR_SPACE_V_DCIP3,
    UD_COLOR_SPACE_V_NATIVE,
    UD_COLOR_SPACE_V_ADOBERGB,
    UD_COLOR_SPACE_V_NUM,
}UserdataValueColorSpace;
#define USERDATA_COLOR_SPACE_MIN        (UD_COLOR_SPACE_V_SRGB)
#define USERDATA_COLOR_SPACE_MAX        (UD_COLOR_SPACE_V_ADOBERGB)
#define USERDATA_COLOR_SPACE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_COLOR_FILTER *********/
typedef enum
{
    UD_COLOR_FILTER_V_NONE,
    UD_COLOR_FILTER_V_INVERT,
    UD_COLOR_FILTER_V_GRAY,
    UD_COLOR_FILTER_V_PROTANOPIA,
    UD_COLOR_FILTER_V_DEUTERANOPIA,
    UD_COLOR_FILTER_V_TRIANOPIA,
    UD_COLOR_FILTER_V_NUM,
}UserdataValueColorFilter;
#define USERDATA_COLOR_FILTER_MIN        (UD_COLOR_FILTER_V_NONE)
#define USERDATA_COLOR_FILTER_MAX        (UD_COLOR_FILTER_V_TRIANOPIA)
#define USERDATA_COLOR_FILTER_CIRCLE     (HV_TRUE)

/********* E_USERDATA_COLOR_TEMP *********/
typedef enum
{
    UD_COLOR_TEMP_V_COOL,
    UD_COLOR_TEMP_V_STANDARD,
    UD_COLOR_TEMP_V_WARM,
    UD_COLOR_TEMP_V_CUSTOM,
    UD_COLOR_TEMP_V_NUM,
}UserdataValueColorTemp;
#define USERDATA_COLOR_TEMP_MIN        (UD_COLOR_TEMP_V_COOL)
#define USERDATA_COLOR_TEMP_MAX        (UD_COLOR_TEMP_V_CUSTOM)
#define USERDATA_COLOR_TEMP_CIRCLE     (HV_TRUE)

/********* E_USERDATA_RED *********/
#define USERDATA_RED_MIN        (0)
#define USERDATA_RED_MAX        (100)
#define USERDATA_RED_CIRCLE     (HV_FALSE)

/********* E_USERDATA_GREEN *********/
#define USERDATA_GREEN_MIN        (0)
#define USERDATA_GREEN_MAX        (100)
#define USERDATA_GREEN_CIRCLE     (HV_FALSE)

/********* E_USERDATA_BLUE *********/
#define USERDATA_BLUE_MIN        (0)
#define USERDATA_BLUE_MAX        (100)
#define USERDATA_BLUE_CIRCLE     (HV_FALSE)

/********* E_USERDATA_LOW_BLUE_LIGHT *********/
typedef enum
{
    UD_LOW_BLUE_LIGHT_V_LEVEL_0,
    UD_LOW_BLUE_LIGHT_V_LEVEL_1,
    UD_LOW_BLUE_LIGHT_V_LEVEL_2,
    UD_LOW_BLUE_LIGHT_V_LEVEL_3,
    UD_LOW_BLUE_LIGHT_V_LEVEL_4,
    UD_LOW_BLUE_LIGHT_V_NUM,
}UserdataValueLowBlueLight;
#define USERDATA_LOW_BLUE_LIGHT_MIN        (UD_LOW_BLUE_LIGHT_V_LEVEL_0)
#define USERDATA_LOW_BLUE_LIGHT_MAX        (UD_LOW_BLUE_LIGHT_V_LEVEL_4)
#define USERDATA_LOW_BLUE_LIGHT_CIRCLE     (HV_TRUE)

/********* E_USERDATA_LANGUAGE *********/
typedef enum
{
    UD_LANGUAGE_V_CN,
    UD_LANGUAGE_V_EN,
    UD_LANGUAGE_V_NUM,
}UserdataValueLanguage;
#define USERDATA_LANGUAGE_MIN        (UD_LANGUAGE_V_CN)
#define USERDATA_LANGUAGE_MAX        (UD_LANGUAGE_V_EN)
#define USERDATA_LANGUAGE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_MENUX *********/
#define USERDATA_MENUX_MIN        (0)
#define USERDATA_MENUX_MAX        (100)
#define USERDATA_MENUX_CIRCLE     (HV_FALSE)

/********* E_USERDATA_MENUY *********/
#define USERDATA_MENUY_MIN        (0)
#define USERDATA_MENUY_MAX        (100)
#define USERDATA_MENUY_CIRCLE     (HV_FALSE)

/********* E_USERDATA_MENUTIMER *********/
#define USERDATA_MENUTIMER_MIN        (5)
#define USERDATA_MENUTIMER_MAX        (120)
#define USERDATA_MENUTIMER_CIRCLE     (HV_FALSE)

/********* E_USERDATA_MENUTRANSPARENCY *********/
#define USERDATA_MENUTRANSPARENCY_MIN        (0)
#define USERDATA_MENUTRANSPARENCY_MAX        (10)
#define USERDATA_MENUTRANSPARENCY_CIRCLE     (HV_FALSE)
#define USERDATA_MENUTRANSPARENCY_REAL_MIN   (128)
#define USERDATA_MENUTRANSPARENCY_REAL_MAX   (255)

/********* E_USERDATA_MENULOCK *********/
typedef enum
{
    UD_MENULOCK_V_OFF,
    UD_MENULOCK_V_ON,
    UD_MENULOCK_V_NUM,
}UserdataValueOsdLock;
#define USERDATA_MENULOCK_MIN        (UD_MENULOCK_V_OFF)
#define USERDATA_MENULOCK_MAX        (UD_MENULOCK_V_ON)
#define USERDATA_MENULOCK_CIRCLE     (HV_TRUE)

/********* E_USERDATA_VIDEOSOURCE *********/
typedef enum
{
    UD_VIDEOSOURCE_V_HDMI1,
    UD_VIDEOSOURCE_V_HDMI2,
    UD_VIDEOSOURCE_V_USB_C,
    UD_VIDEOSOURCE_V_DP,
    UD_VIDEOSOURCE_V_NUM,
}UserdataValueVideoSource;
#define USERDATA_VIDEOSOURCE_MIN        (UD_VIDEOSOURCE_V_HDMI1)
#define USERDATA_VIDEOSOURCE_MAX        (UD_VIDEOSOURCE_V_DP)
#define USERDATA_VIDEOSOURCE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_AUTOSOURCE *********/
typedef enum
{
    UD_AUTOSOURCE_V_OFF,
    UD_AUTOSOURCE_V_ON,
    UD_AUTOSOURCE_V_NUM,
}UserdataValueAutoSelect;
#define USERDATA_AUTOSOURCE_MIN        (UD_AUTOSOURCE_V_OFF)
#define USERDATA_AUTOSOURCE_MAX        (UD_AUTOSOURCE_V_ON)
#define USERDATA_AUTOSOURCE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_RESPONSETIME *********/
typedef enum
{
    UD_RESPONSETIME_V_LOW,
    UD_RESPONSETIME_V_MIDDLE,
    UD_RESPONSETIME_V_HIGH,
    UD_RESPONSETIME_V_NUM,
}UserdataValueResponseTime;
#define USERDATA_RESPONSETIME_MIN        (UD_RESPONSETIME_V_LOW)
#define USERDATA_RESPONSETIME_MAX        (UD_RESPONSETIME_V_HIGH)
#define USERDATA_RESPONSETIME_CIRCLE     (HV_TRUE)

/********* E_USERDATA_MUTE *********/
typedef enum
{
    UD_MUTE_V_OFF,
    UD_MUTE_V_ON,
    UD_MUTE_V_NUM,
}UserdataValueMute;
#define USERDATA_MUTE_MIN        (UD_MUTE_V_OFF)
#define USERDATA_MUTE_MAX        (UD_MUTE_V_ON)
#define USERDATA_MUTE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_VOLUME *********/
#define USERDATA_VOLUME_MIN        (0)
#define USERDATA_VOLUME_MAX        (100)
#define USERDATA_VOLUME_CIRCLE     (HV_FALSE)

/********* E_USERDATA_TIME_DELAY *********/
#define USERDATA_TIME_DELAY_MIN        (0)
#define USERDATA_TIME_DELAY_MAX        (500)
#define USERDATA_TIME_DELAY_CIRCLE     (HV_FALSE)

/********* E_USERDATA_MPRT *********/
typedef enum
{
    UD_MPRT_V_OFF,
    UD_MPRT_V_ON,
    UD_MPRT_V_NUM,
}UserdataValueMprt;
#define USERDATA_MPRT_MIN        (UD_MPRT_V_OFF)
#define USERDATA_MPRT_MAX        (UD_MPRT_V_ON)
#define USERDATA_MPRT_CIRCLE     (HV_TRUE)

/********* E_USERDATA_FREESYNC *********/
typedef enum
{
    UD_FREESYNC_V_OFF,
    UD_FREESYNC_V_ON,
    UD_FREESYNC_V_NUM,
}UserdataValueFreesync;
#define USERDATA_FREESYNC_MIN        (UD_FREESYNC_V_OFF)
#define USERDATA_FREESYNC_MAX        (UD_FREESYNC_V_ON)
#define USERDATA_FREESYNC_CIRCLE     (HV_TRUE)

/********* E_USERDATA_CROSSHAIR *********/
typedef enum
{
    UD_CROSSHAIR_V_STYLE1,
    UD_CROSSHAIR_V_STYLE2,
    UD_CROSSHAIR_V_STYLE3,
    UD_CROSSHAIR_V_NONE,
    UD_CROSSHAIR_V_NUM,
}UserdataValueCrosshair;
#define USERDATA_CROSSHAIR_MIN        (UD_CROSSHAIR_V_STYLE1)
#define USERDATA_CROSSHAIR_MAX        (UD_CROSSHAIR_V_NONE)
#define USERDATA_CROSSHAIR_CIRCLE     (HV_TRUE)

/********* E_USERDATA_DYN_CROSSHAIR *********/
typedef enum
{
    UD_DYN_CROSSHAIR_V_OFF,
    UD_DYN_CROSSHAIR_V_ON,
    UD_DYN_CROSSHAIR_V_NUM,
}UserdataValueDynCrosshair;
#define USERDATA_DYN_CROSSHAIR_MIN        (UD_DYN_CROSSHAIR_V_OFF)
#define USERDATA_DYN_CROSSHAIR_MAX        (UD_DYN_CROSSHAIR_V_ON)
#define USERDATA_DYN_CROSSHAIR_CIRCLE     (HV_TRUE)

/********* E_USERDATA_REFRESH_RATE *********/
typedef enum
{
    UD_REFRESH_RATE_V_OFF,
    UD_REFRESH_RATE_V_ON,
    UD_REFRESH_RATE_V_NUM,
}UserdataValueRefreshRate;
#define USERDATA_REFRESH_RATE_MIN        (UD_REFRESH_RATE_V_OFF)
#define USERDATA_REFRESH_RATE_MAX        (UD_REFRESH_RATE_V_ON)
#define USERDATA_REFRESH_RATE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_TIME_COUNTER *********/
typedef enum
{
    UD_TIME_COUNTER_V_OFF,
    UD_TIME_COUNTER_V_10,
    UD_TIME_COUNTER_V_30,
    UD_TIME_COUNTER_V_60,
    UD_TIME_COUNTER_V_90,
    UD_TIME_COUNTER_V_NUM,
}UserdataValueTimerCounter;
#define USERDATA_TIME_COUNTER_MIN        (UD_TIME_COUNTER_V_OFF)
#define USERDATA_TIME_COUNTER_MAX        (UD_TIME_COUNTER_V_90)
#define USERDATA_TIME_COUNTER_CIRCLE     (HV_TRUE)

/********* E_USERDATA_MAGNIFY_GLASS *********/
typedef enum
{
    UD_MAGNIFY_GLASS_V_OFF,
    UD_MAGNIFY_GLASS_V_ON,
    UD_MAGNIFY_GLASS_V_NUM,
}UserdataValueMagnifyGlass;
#define USERDATA_MAGNIFY_GLASS_MIN        (UD_MAGNIFY_GLASS_V_OFF)
#define USERDATA_MAGNIFY_GLASS_MAX        (UD_MAGNIFY_GLASS_V_ON)
#define USERDATA_MAGNIFY_GLASS_CIRCLE     (HV_TRUE)

/********* E_USERDATA_LIGHT_EFFECT *********/
typedef enum
{
    UD_LIGHT_EFFECT_V_OFF,
    UD_LIGHT_EFFECT_V_ON,
    UD_LIGHT_EFFECT_V_NUM,
}UserdataValuePowerLed;
#define USERDATA_LIGHT_EFFECT_MIN        (UD_LIGHT_EFFECT_V_OFF)
#define USERDATA_LIGHT_EFFECT_MAX        (UD_LIGHT_EFFECT_V_ON)
#define USERDATA_LIGHT_EFFECT_CIRCLE     (HV_TRUE)

/********* E_USERDATA_HDMI_FORMAT *********/
typedef enum
{
    UD_HDMI_FORMAT_V_STANDARD,
    UD_HDMI_FORMAT_V_ENHANCE,
    UD_HDMI_FORMAT_V_NUM,
}UserdataValueHdmiFormat;
#define USERDATA_HDMI_FORMAT_MIN        (UD_HDMI_FORMAT_V_STANDARD)
#define USERDATA_HDMI_FORMAT_MAX        (UD_HDMI_FORMAT_V_ENHANCE)
#define USERDATA_HDMI_FORMAT_CIRCLE     (HV_TRUE)

/********* E_USERDATA_CUSTOM_KEY1 *********/
typedef enum
{
    UD_CUSTOM_KEY1_V_INPUT,
    UD_CUSTOM_KEY1_V_MODE,
    UD_CUSTOM_KEY1_V_BRIGHTNESS,
    UD_CUSTOM_KEY1_V_CONTRAST,
    UD_CUSTOM_KEY1_V_VOLUME,
    UD_CUSTOM_KEY1_V_NUM,
}UserdataValueCustomKey1;
#define USERDATA_CUSTOM_KEY1_MIN        (UD_CUSTOM_KEY1_V_INPUT)
#define USERDATA_CUSTOM_KEY1_MAX        (UD_CUSTOM_KEY1_V_VOLUME)
#define USERDATA_CUSTOM_KEY1_CIRCLE     (HV_TRUE)

/********* E_USERDATA_CUSTOM_KEY2 *********/
typedef enum
{
    UD_CUSTOM_KEY2_V_INPUT,
    UD_CUSTOM_KEY2_V_MODE,
    UD_CUSTOM_KEY2_V_BRIGHTNESS,
    UD_CUSTOM_KEY2_V_CONTRAST,
    UD_CUSTOM_KEY2_V_VOLUME,
    UD_CUSTOM_KEY2_V_NUM,
}UserdataValueCustomKey2;
#define USERDATA_CUSTOM_KEY2_MIN        (UD_CUSTOM_KEY2_V_INPUT)
#define USERDATA_CUSTOM_KEY2_MAX        (UD_CUSTOM_KEY2_V_VOLUME)
#define USERDATA_CUSTOM_KEY2_CIRCLE     (HV_TRUE)

/********* E_USERDATA_CUSTOM_KEY3 *********/
typedef enum
{
    UD_CUSTOM_KEY3_V_INPUT,
    UD_CUSTOM_KEY3_V_MODE,
    UD_CUSTOM_KEY3_V_BRIGHTNESS,
    UD_CUSTOM_KEY3_V_CONTRAST,
    UD_CUSTOM_KEY3_V_VOLUME,
    UD_CUSTOM_KEY3_V_NUM,
}UserdataValueCustomKey3;
#define USERDATA_CUSTOM_KEY3_MIN        (UD_CUSTOM_KEY3_V_INPUT)
#define USERDATA_CUSTOM_KEY3_MAX        (UD_CUSTOM_KEY3_V_VOLUME)
#define USERDATA_CUSTOM_KEY3_CIRCLE     (HV_TRUE)

/********* E_USERDATA_PXPMODE *********/
typedef enum
{
    UD_PXPMODE_V_OFF,
    UD_PXPMODE_V_PIP,
    UD_PXPMODE_V_PBP,
    UD_PXPMODE_V_NUM,
}UserdataValuePxpMode;
#define USERDATA_PXPMODE_MIN        (UD_PXPMODE_V_OFF)
#define USERDATA_PXPMODE_MAX        (UD_PXPMODE_V_PBP)
#define USERDATA_PXPMODE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_PXPVIDEOSOURCE *********/
typedef enum
{
    UD_PXPVIDEOSOURCE_V_HDMI1,
    UD_PXPVIDEOSOURCE_V_HDMI2,
    UD_PXPVIDEOSOURCE_V_USB_C,
    UD_PXPVIDEOSOURCE_V_DP,
    UD_PXPVIDEOSOURCE_V_NUM,
}UserdataValuePxpVideosource;
#define USERDATA_PXPVIDEOSOURCE_MIN        (UD_PXPVIDEOSOURCE_V_HDMI1)
#define USERDATA_PXPVIDEOSOURCE_MAX        (UD_PXPVIDEOSOURCE_V_DP)
#define USERDATA_PXPVIDEOSOURCE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_PXP_SWITCH *********/
typedef enum
{
    UD_PXP_SWITCH_V_OFF,
    UD_PXP_SWITCH_V_ON,
    UD_PXP_SWITCH_V_NUM,
}UserdataValuePxpSwitch;
#define USERDATA_PXP_SWITCH_MIN        (UD_PXP_SWITCH_V_OFF)
#define USERDATA_PXP_SWITCH_MAX        (UD_PXP_SWITCH_V_ON)
#define USERDATA_PXP_SWITCH_CIRCLE     (HV_TRUE)

/********* E_USERDATA_AUDIO_SOURCE *********/
typedef enum
{
    UD_AUDIO_SOURCE_V_MAIN,
    UD_AUDIO_SOURCE_V_SUB,
    UD_AUDIO_SOURCE_V_NUM,
}UserdataValueAudioSource;
#define USERDATA_AUDIO_SOURCE_MIN        (UD_AUDIO_SOURCE_V_MAIN)
#define USERDATA_AUDIO_SOURCE_MAX        (UD_AUDIO_SOURCE_V_SUB)
#define USERDATA_AUDIO_SOURCE_CIRCLE     (HV_TRUE)

/********* E_USERDATA_PIP_POSITION *********/
typedef enum
{
    UD_PIP_POSITION_V_LEFTTOP,
    UD_PIP_POSITION_V_LEFTBOTTOM,
    UD_PIP_POSITION_V_RIGHTTOP,
    UD_PIP_POSITION_V_RIGHTBOTTOM,
    UD_PIP_POSITION_V_NUM,
}UserdataValuePipPosition;
#define USERDATA_PIP_POSITION_MIN        (UD_PIP_POSITION_V_LEFTTOP)
#define USERDATA_PIP_POSITION_MAX        (UD_PIP_POSITION_V_RIGHTBOTTOM)
#define USERDATA_PIP_POSITION_CIRCLE     (HV_TRUE)

/********* E_USERDATA_PIP_SIZE *********/
typedef enum
{
    UD_PIP_SIZE_V_SMALL,
    UD_PIP_SIZE_V_BIG,
    UD_PIP_SIZE_V_NUM,
}UserdataValuePipSize;
#define USERDATA_PIP_SIZE_MIN        (UD_PIP_SIZE_V_SMALL)
#define USERDATA_PIP_SIZE_MAX        (UD_PIP_SIZE_V_BIG)
#define USERDATA_PIP_SIZE_CIRCLE     (HV_TRUE)

/* Userdata prop struct define */
typedef enum _UserdataMapType
{
    E_NO_MAP,
    E_ENUM_MAP,
    E_LINEAR_MAP,
    E_LINEAR_REVERT_MAP,
} UserdataMapType;

typedef struct _UserdataLinerMap
{
    SHORT16 sRealMinValue;
    SHORT16 sRealMaxValue;
} UserdataLinerMap;

typedef struct _UserdataEnumMap
{
    const SHORT16 *asRealValueMapTable;
    USHORT16 usCount;
} UserdataEnumMap;

typedef struct _UserdataProp
{
    UserdataId enUserdata;
    SHORT16 sOsdValue;
    SHORT16 sMinValue;
    SHORT16 sMaxValue;
    BOOL bCircle;

    /* for real value mapping */
    UserdataMapType enMappingType;
    UserdataLinerMap stLinerMap;
    UserdataEnumMap stEnumMap;
    SHORT16 sRealValue;
    SHORT16 sRealDefaultValue;
} UserdataProp;

/**
 * @brief 获取userdata的名称
 * @param[in] enWhichData userdata的id
 * @UCHAR8* userdata的名称
 */
const CHAR8* Hv_App_GetUserdataName(UserdataId enWhichData);

/**
 * @brief 设置userdata的值
 * @param[in] enWhichData userdata的id
 * @param[in] sValue 要设置的值
 */
VOID Hv_App_OsdSetUserdata(UserdataId enWhichData, SHORT16 sValue);

/**
 * @brief 获取userdata的属性
 * @param[in] enWhichData userdata的id
 * @param[in] pstProp userdata的属性数据
 */
VOID Hv_App_OsdGetUserdata(UserdataId enWhichData, UserdataProp* pstProp);

#endif
