| /* |
| * 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; |
| }//------ |