1 /*
2 * Copyright (c) 2017, Intel Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included
12 * in all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22 //!
23 //! \file vphal_render_vebox_ste.cpp
24 //! \brief VPHAL VEBOX IECP Skin Tone Detect & Enhancement (STD/E) interfaces
25 //! \details VPHAL VEBOX IECP Skin Tone Detect & Enhancement (STD/E) interfaces
26 //!
27
28 #include "vphal_render_vebox_ste.h"
29
30 #if VPHAL_RENDER_VEBOX_STE_ENABLE
31
32 #define MHW_STE_FACTOR_MAX 9 // STE factor is 0 ~ 9
33
34 const uint32_t satP1[MHW_STE_FACTOR_MAX + 1] = {
35 0x00000000, 0xfffffffe, 0xfffffffc, 0xfffffffa, 0xfffffff6, 0xfffffff4, 0xfffffff2, 0xfffffff0, 0xffffffee, 0xffffffec };
36
37 const uint32_t satS0[MHW_STE_FACTOR_MAX + 1] = {
38 0x000000ef, 0x00000100, 0x00000113, 0x00000129, 0x0000017a, 0x000001a2, 0x000001d3, 0x00000211, 0x00000262, 0x000002d1 };
39
40 const uint32_t satS1[MHW_STE_FACTOR_MAX + 1] = {
41 0x000000ab, 0x00000080, 0x00000066, 0x00000055, 0x000000c2, 0x000000b9, 0x000000b0, 0x000000a9, 0x000000a2, 0x0000009c };
42
43 //!
44 //! \brief Vebox set IECP parameter
45 //! \details Set Vebox IECP state parameter
46 //! \param [in] pSrcSurface
47 //! Pointer to input surface of Vebox
48 //! \param [in,out] pRenderData
49 //! Pointer to Vebox Render Data
50 //! \return void
51 //!
SetParams(PVPHAL_SURFACE pSrcSurface,PVPHAL_VEBOX_RENDER_DATA pRenderData)52 void VPHAL_VEBOX_IECP_STE::SetParams(
53 PVPHAL_SURFACE pSrcSurface,
54 PVPHAL_VEBOX_RENDER_DATA pRenderData)
55 {
56 PVPHAL_VEBOX_IECP_PARAMS pVphalVeboxIecpParams;
57
58 pVphalVeboxIecpParams = pRenderData->GetVeboxIECPParams();
59
60 if (pSrcSurface->pColorPipeParams && pRenderData->bColorPipe)
61 {
62 pVphalVeboxIecpParams->pColorPipeParams = pSrcSurface->pColorPipeParams;
63
64 pRenderData->GetVeboxStateParams()->pVphalVeboxIecpParams = pVphalVeboxIecpParams;
65 }
66 }
67
68 //!
69 //! \brief Init Vebox IECP parameter
70 //! \param [in] pVphalVeboxIecpParams
71 //! Pointer to input Vphal Iecp parameters
72 //! \param [in,out] pMhwVeboxIecpParams
73 //! Pointer to Mhw Iecp parameters
74 //! \return void
75 //!
InitParams(PVPHAL_VEBOX_IECP_PARAMS pVphalVeboxIecpParams,PMHW_VEBOX_IECP_PARAMS pMhwVeboxIecpParams)76 void VPHAL_VEBOX_IECP_STE::InitParams(
77 PVPHAL_VEBOX_IECP_PARAMS pVphalVeboxIecpParams,
78 PMHW_VEBOX_IECP_PARAMS pMhwVeboxIecpParams)
79 {
80 PVPHAL_COLORPIPE_PARAMS pVpHalColorPipeParams;
81 PMHW_COLORPIPE_PARAMS pMhwColorPipeParams;
82
83 pVpHalColorPipeParams = pVphalVeboxIecpParams->pColorPipeParams;
84 pMhwColorPipeParams = &pMhwVeboxIecpParams->ColorPipeParams;
85 if (pVpHalColorPipeParams)
86 {
87 if (pVpHalColorPipeParams->SteParams.dwSTEFactor > MHW_STE_FACTOR_MAX)
88 {
89 pVpHalColorPipeParams->SteParams.dwSTEFactor = MHW_STE_FACTOR_MAX;
90 }
91
92 pMhwColorPipeParams->bActive = true;
93 pMhwColorPipeParams->bEnableSTE = pVpHalColorPipeParams->bEnableSTE;
94 pMhwColorPipeParams->SteParams.dwSTEFactor = pVpHalColorPipeParams->SteParams.dwSTEFactor;
95 pMhwColorPipeParams->SteParams.satP1 = satP1[pVpHalColorPipeParams->SteParams.dwSTEFactor];
96 pMhwColorPipeParams->SteParams.satS0 = satS0[pVpHalColorPipeParams->SteParams.dwSTEFactor];
97 pMhwColorPipeParams->SteParams.satS1 = satS1[pVpHalColorPipeParams->SteParams.dwSTEFactor];
98 }
99 }
100
101 #endif // VPHAL_RENDER_VEBOX_STE_ENABLE