blob: ba08e349a3cf8ffd5f554ac5fbba6b7493de73e9 [file] [log] [blame]
/*
* Copyright (c) 2018, Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
//!
//! \file vphal_common_hdr.h
//! \brief vphal HDR interface clarification
//! \details vphal HDR interface clarification inlcuding:
//! some marcro, enum, structure, function
//!
#ifndef __VPHAL_COMMON_HDR_H__
#define __VPHAL_COMMON_HDR_H__
#define VPHAL_HDR_MODE_3DLUT_MASK 0x10
#define VPHAL_HDR_MODE_VEBOX_3DLUT_MASK 0x20
#define VPHAL_HDR_MODE_VEBOX_3DLUT33_MASK 0x30
#define VPHAL_HDR_MODE_VEBOX_1DLUT_MASK 0x40
#define VPHAL_HDR_MODE_VEBOX_1DLUT_3DLUT_MASK 0x50
#define HDR_DEFAULT_MAXCLL 4000
#define HDR_DEFAULT_MAXFALL 400
//!
//! \brief HDR mode enum
//!
typedef enum _VPHAL_HDR_MODE
{
VPHAL_HDR_MODE_NONE = 0,
VPHAL_HDR_MODE_TONE_MAPPING,
VPHAL_HDR_MODE_INVERSE_TONE_MAPPING,
VPHAL_HDR_MODE_H2H,
VPHAL_HDR_MODE_S2S,
VPHAL_HDR_MODE_BT1886_DEGAMMA,
VPHAL_HDR_MODE_TONE_MAPPING_AUTO_MODE,
VPHAL_HDR_MODE_H2H_AUTO_MODE,
VPHAL_HDR_MODE_TONE_MAPPING_3DLUT = VPHAL_HDR_MODE_TONE_MAPPING | VPHAL_HDR_MODE_3DLUT_MASK,
VPHAL_HDR_MODE_INVERSE_TONE_MAPPING_3DLUT = VPHAL_HDR_MODE_INVERSE_TONE_MAPPING | VPHAL_HDR_MODE_3DLUT_MASK,
VPHAL_HDR_MODE_H2H_3DLUT = VPHAL_HDR_MODE_H2H | VPHAL_HDR_MODE_3DLUT_MASK,
VPHAL_HDR_MODE_BT1886_DEGAMMA_3DLUT = VPHAL_HDR_MODE_BT1886_DEGAMMA | VPHAL_HDR_MODE_3DLUT_MASK,
VPHAL_HDR_MODE_TONE_MAPPING_AUTO_MODE_3DLUT = VPHAL_HDR_MODE_TONE_MAPPING_AUTO_MODE | VPHAL_HDR_MODE_3DLUT_MASK,
VPHAL_HDR_MODE_H2H_VEBOX_3DLUT = VPHAL_HDR_MODE_H2H | VPHAL_HDR_MODE_VEBOX_3DLUT_MASK,
VPHAL_HDR_MODE_TONE_MAPPING_VEBOX_3DLUT = VPHAL_HDR_MODE_TONE_MAPPING | VPHAL_HDR_MODE_VEBOX_3DLUT_MASK,
VPHAL_HDR_MODE_H2H_VEBOX_3DLUT33 = VPHAL_HDR_MODE_H2H | VPHAL_HDR_MODE_VEBOX_3DLUT33_MASK,
VPHAL_HDR_MODE_TONE_MAPPING_VEBOX_3DLUT33 = VPHAL_HDR_MODE_TONE_MAPPING | VPHAL_HDR_MODE_VEBOX_3DLUT33_MASK,
VPHAL_HDR_MODE_H2H_VEBOX_1DLUT = VPHAL_HDR_MODE_H2H | VPHAL_HDR_MODE_VEBOX_1DLUT_MASK,
VPHAL_HDR_MODE_TONE_MAPPING_VEBOX_1DLUT = VPHAL_HDR_MODE_TONE_MAPPING | VPHAL_HDR_MODE_VEBOX_1DLUT_MASK,
VPHAL_HDR_MODE_TONE_MAPPING_VEBOX_1DLUT_3DLUT = VPHAL_HDR_MODE_VEBOX_1DLUT_3DLUT_MASK,
} VPHAL_HDR_MODE;
//!
//! \brief HDR LUT mode enum
//!
typedef enum _VPHAL_HDR_LUT_MODE
{
VPHAL_HDR_LUT_MODE_NONE,
VPHAL_HDR_LUT_MODE_2D,
VPHAL_HDR_LUT_MODE_3D,
VPHAL_HDR_LUT_MODE_NUM
} VPHAL_HDR_LUT_MODE;
C_ASSERT(VPHAL_HDR_LUT_MODE_NUM == 3);
//!
//! Structure VPHAL_EOTF_TYPE
//! \brief Electronic-Optimal Transfer Function type
//!
typedef enum _VPHAL_HDR_EOTF_TYPE
{
VPHAL_HDR_EOTF_INVALID = -1,
VPHAL_HDR_EOTF_TRADITIONAL_GAMMA_SDR = 0,
VPHAL_HDR_EOTF_TRADITIONAL_GAMMA_HDR,
VPHAL_HDR_EOTF_SMPTE_ST2084,
VPHAL_HDR_EOTF_BT1886,
VPHAL_HDR_EOTF_FUTURE_EOTF
} VPHAL_HDR_EOTF_TYPE;
//!
//! Structure VPHAL_CCM_TYPE
//! \brief Color Correction Matrix Type
//!
typedef enum _VPHAL_HDR_CCM_TYPE
{
VPHAL_HDR_CCM_NONE = 0,
VPHAL_HDR_CCM_BT2020_TO_BT601_BT709_MATRIX,
VPHAL_HDR_CCM_BT601_BT709_TO_BT2020_MATRIX,
VPHAL_HDR_CCM_BT2020_TO_MONITOR_MATRIX,
VPHAL_HDR_CCM_MONITOR_TO_BT2020_MATRIX,
VPHAL_HDR_CCM_MONITOR_TO_BT709_MATRIX
} VPHAL_HDR_CCM_TYPE;
//!
//! Structure VPHAL_CSC_TYPE
//! \brief Color Space Coversion Type
//!
typedef enum _VPHAL_HDR_CSC_TYPE
{
VPHAL_HDR_CSC_NONE = 0,
VPHAL_HDR_CSC_YUV_TO_RGB_BT601,
VPHAL_HDR_CSC_YUV_TO_RGB_BT709,
VPHAL_HDR_CSC_YUV_TO_RGB_BT2020,
VPHAL_HDR_CSC_RGB_TO_YUV_BT601,
VPHAL_HDR_CSC_RGB_TO_YUV_BT709,
VPHAL_HDR_CSC_RGB_TO_YUV_BT709_FULLRANGE,
VPHAL_HDR_CSC_RGB_TO_YUV_BT2020
} VPHAL_HDR_CSC_TYPE;
//!
//! Structure VPHAL_HDR_PARAMS
//! \brief High Dynamic Range parameters
//!
typedef struct _VPHAL_HDR_PARAMS
{
VPHAL_HDR_EOTF_TYPE EOTF; //!< Electronic-Optimal Transfer Function
uint16_t display_primaries_x[3]; //!< Display Primaries X chromaticity coordinates
uint16_t display_primaries_y[3]; //!< Display Primaries Y chromaticity coordinates
uint16_t white_point_x; //!< X Chromaticity coordinate of White Point
uint16_t white_point_y; //!< Y Chromaticity coordinate of White Point
uint16_t max_display_mastering_luminance; //!< The nominal maximum display luminance of the mastering display
uint16_t min_display_mastering_luminance; //!< The nominal minimum display luminance of the mastering display
uint16_t MaxCLL; //!< Max Content Light Level
uint16_t MaxFALL; //!< Max Frame Average Light Level
bool bAutoMode; //!< Hdr auto mode.
bool bPathKernel; //!< Hdr path config to use kernel
} VPHAL_HDR_PARAMS, *PVPHAL_HDR_PARAMS;
#endif // __VPHAL_COMMON_HDR_H__