blob: 482fa6d381b4e67c290557c2d5a6e3c3b3bd01b0 [file] [log] [blame]
/*
* Copyright (c) 2017, 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.
*/
#include "cm_def.h"
CM_AVS_STATE_MSG_EX::CM_AVS_STATE_MSG_EX():
enableAllChannelAdaptiveFilter(false),
enableRgbAdaptiveFilter(false),
enable8TapAdaptiveFilter(false),
enableUV8TapFilter(false),
writebackFormat(true), // Results are returned in "sampleunorm" format.
writebackMode(true), // AVS mode.
stateSelection(0), // scaler8x8 state 0 is used.
enableIef(false), // No image enhancement filtering.
iefType(false),
enableIefSmooth(false),
r3cCoefficient(0.46875f),
r3xCoefficient(0.1875f),
r5cCoefficient(0.09375f),
r5cxCoefficient(0.25f),
r5xCoefficient(0.28125f),
strongEdgeThreshold(8),
strongEdgeWeight(6),
weakEdgeThreshold(1),
regularEdgeWeight(3),
nonEdgeWeight(2),
enableChromaKey(false),
chromaKeyIndex(0),
enableSkinTone(false),
enableVySkinToneDetection(false),
skinDetailFactor(false),
skinTypesMargin(20),
skinTypesThreshold(120),
gainFactor(32),
globalNoiseEstimation(0),
mrBoost(false),
mrSmoothThreshold(2),
mrThreshold(5),
steepnessBoost(false),
steepnessThreshold(0),
textureCoordinateMode(true), // Clamps to edge.
maxHue(14),
maxSaturation(31),
angles(52),
diamondMargin(4),
diamondDu(0),
diamondDv(0),
diamondAlpha(1.5625f),
diamondThreshold(35),
rectangleMargin(3),
defaultSharpnessLevel(255),
enableXAdaptiveFilter(true),
enableYAdaptiveFilter(true),
maxDerivative4Pixels(0),
maxDerivative8Pixels(20),
transitionArea4Pixels(3),
transitionArea8Pixels(5)
{
rectangleMidpoint[0] = 110;
rectangleMidpoint[1] = 154;
vyInverseMargin[0] = 3300.0f/65536.0f;
vyInverseMargin[1] = 1600.0f/65536.0f;
piecewiseLinearYPoints[0] = 46;
piecewiseLinearYPoints[1] = 47;
piecewiseLinearYPoints[2] = 254;
piecewiseLinearYPoints[3] = 255;
piecewiseLinearYSlopes[0] = 31.0f/8.0f;
piecewiseLinearYSlopes[1] = 31.0f/8.0f;
piecewiseLinearPointsLower[0] = 46;
piecewiseLinearPointsLower[1] = 216;
piecewiseLinearPointsLower[2] = 236;
piecewiseLinearPointsLower[3] = 236;
piecewiseLinearPointsUpper[0] = 46;
piecewiseLinearPointsUpper[1] = 66;
piecewiseLinearPointsUpper[2] = 150;
piecewiseLinearPointsUpper[3] = 236;
piecewiseLinearSlopesLower[0] = -5.0f/256.0f;
piecewiseLinearSlopesLower[1] = piecewiseLinearSlopesLower[2]
= piecewiseLinearSlopesLower[3] = 0;
piecewiseLinearSlopesUpper[0] = 1.0f;
piecewiseLinearSlopesUpper[1] = 113.0f/256.0f;
piecewiseLinearSlopesUpper[2] = -179.0f/256.0f;
piecewiseLinearSlopesUpper[3] = 0;
piecewiseLinearBiasesLower[0] = 133;
piecewiseLinearBiasesLower[1] = piecewiseLinearBiasesLower[2]
= piecewiseLinearBiasesLower[3] = 130;
piecewiseLinearBiasesUpper[0] = 143;
piecewiseLinearBiasesUpper[1] = 163;
piecewiseLinearBiasesUpper[2] = 200;
piecewiseLinearBiasesUpper[3] = 140;
for (int i = 0; i < CM_NUM_COEFF_ROWS_SKL; ++i) {
// Y horizontal
table0X[i].filterCoeff_0_0 = table0X[i].filterCoeff_0_1
= table0X[i].filterCoeff_0_2 = table0X[i].filterCoeff_0_3
= table0X[i].filterCoeff_0_4 = table0X[i].filterCoeff_0_5
= table0X[i].filterCoeff_0_6 = table0X[i].filterCoeff_0_7 = 0.125f;
// Y vertical
table0Y[i].filterCoeff_0_0 = table0Y[i].filterCoeff_0_1
= table0Y[i].filterCoeff_0_2 = table0Y[i].filterCoeff_0_3
= table0Y[i].filterCoeff_0_4 = table0Y[i].filterCoeff_0_5
= table0Y[i].filterCoeff_0_6 = table0Y[i].filterCoeff_0_7 = 0.125f;
// UV horizontal
table1X[i].filterCoeff_0_0 = table1X[i].filterCoeff_0_1
= table1X[i].filterCoeff_0_2 = table1X[i].filterCoeff_0_3
= table1X[i].filterCoeff_0_4 = table1X[i].filterCoeff_0_5
= table1X[i].filterCoeff_0_6 = table1X[i].filterCoeff_0_7 = 0.125f;
// UV vertical
table1Y[i].filterCoeff_0_0 = table1Y[i].filterCoeff_0_1
= table1Y[i].filterCoeff_0_2 = table1Y[i].filterCoeff_0_3
= table1Y[i].filterCoeff_0_4 = table1Y[i].filterCoeff_0_5
= table1Y[i].filterCoeff_0_6 = table1Y[i].filterCoeff_0_7 = 0.125f;
}
return;
}//------