| /* |
| * 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. |
| */ |
| #ifndef CMRTLIB_AGNOSTIC_SHARE_CM_DEF_H_ |
| #define CMRTLIB_AGNOSTIC_SHARE_CM_DEF_H_ |
| |
| #include "cm_include.h" |
| #include "cm_def_os.h" |
| |
| //CM runtime version returning to user |
| #define CM_1_0 100 |
| #define CM_2_0 200 |
| #define CM_2_1 201 |
| #define CM_2_2 202 |
| #define CM_2_3 203 |
| #define CM_2_4 204 |
| #define CM_3_0 300 |
| #define CM_4_0 400 |
| #define CM_5_0 500 |
| #define CM_6_0 600 |
| #define CM_7_0 700 |
| #define CM_7_2 702 //for MDFRT API refreshment. |
| #define CURRENT_CM_VERSION (CM_7_2) |
| |
| //CM DDI version in UMD layer |
| #define CM_DDI_1_0 100 |
| #define CM_DDI_1_1 101 |
| #define CM_DDI_1_2 102 |
| #define CM_DDI_1_3 103 |
| #define CM_DDI_1_4 104 |
| #define CM_DDI_2_0 200 |
| #define CM_DDI_2_1 201 |
| #define CM_DDI_2_2 202 |
| #define CM_DDI_2_3 203 |
| #define CM_DDI_2_4 204 |
| #define CM_DDI_3_0 300 |
| #define CM_DDI_4_0 400 |
| #define CM_DDI_5_0 500 |
| #define CM_DDI_6_0 600 |
| #define CM_DDI_7_0 700 |
| #define CM_DDI_7_2 702 //for MDFRT API refreshment. |
| |
| //Error code definition |
| typedef enum _CM_RETURN_CODE |
| { |
| CM_SUCCESS = 0, |
| /* |
| * RANGE -1 ~ -9999 FOR EXTERNAL ERROR CODE |
| */ |
| CM_FAILURE = -1, |
| CM_NOT_IMPLEMENTED = -2, |
| CM_SURFACE_ALLOCATION_FAILURE = -3, |
| CM_OUT_OF_HOST_MEMORY = -4, |
| CM_SURFACE_FORMAT_NOT_SUPPORTED = -5, |
| CM_EXCEED_SURFACE_AMOUNT = -6, |
| CM_EXCEED_KERNEL_ARG_AMOUNT = -7, |
| CM_EXCEED_KERNEL_ARG_SIZE_IN_BYTE = -8, |
| CM_INVALID_ARG_INDEX = -9, |
| CM_INVALID_ARG_VALUE = -10, |
| CM_INVALID_ARG_SIZE = -11, |
| CM_INVALID_THREAD_INDEX = -12, |
| CM_INVALID_WIDTH = -13, |
| CM_INVALID_HEIGHT = -14, |
| CM_INVALID_DEPTH = -15, |
| CM_INVALID_COMMON_ISA = -16, |
| CM_OPEN_VIDEO_DEVICE_FAILURE = -17, |
| CM_VIDEO_DEVICE_LOCKED = -18, // Video device is already locked. |
| CM_LOCK_VIDEO_DEVICE_FAILURE = -19, // Video device is not locked but can't be locked. |
| CM_EXCEED_SAMPLER_AMOUNT = -20, |
| CM_EXCEED_MAX_KERNEL_PER_ENQUEUE = -21, |
| CM_EXCEED_MAX_KERNEL_SIZE_IN_BYTE = -22, |
| CM_EXCEED_MAX_THREAD_AMOUNT_PER_ENQUEUE = -23, |
| CM_EXCEED_VME_STATE_G6_AMOUNT = -24, |
| CM_INVALID_THREAD_SPACE = -25, |
| CM_EXCEED_MAX_TIMEOUT = -26, |
| CM_JITDLL_LOAD_FAILURE = -27, |
| CM_JIT_COMPILE_FAILURE = -28, |
| CM_JIT_COMPILESIM_FAILURE = -29, |
| CM_INVALID_THREAD_GROUP_SPACE = -30, |
| CM_THREAD_ARG_NOT_ALLOWED = -31, |
| CM_INVALID_GLOBAL_BUFFER_INDEX = -32, |
| CM_INVALID_BUFFER_HANDLER = -33, |
| CM_EXCEED_MAX_SLM_SIZE = -34, |
| CM_JITDLL_OLDER_THAN_ISA = -35, |
| CM_INVALID_HARDWARE_THREAD_NUMBER = -36, |
| CM_GTPIN_INVOKE_FAILURE = -37, |
| CM_INVALIDE_L3_CONFIGURATION = -38, |
| CM_INVALID_TEXTURE2D_USAGE = -39, |
| CM_INTEL_GFX_NOTFOUND = -40, |
| CM_GPUCOPY_INVALID_SYSMEM = -41, |
| CM_GPUCOPY_INVALID_WIDTH = -42, |
| CM_GPUCOPY_INVALID_STRIDE = -43, |
| CM_EVENT_DRIVEN_FAILURE = -44, |
| CM_LOCK_SURFACE_FAIL = -45, // Lock surface failed |
| CM_INVALID_GENX_BINARY = -46, |
| CM_FEATURE_NOT_SUPPORTED_IN_DRIVER = -47, // driver out-of-sync |
| CM_QUERY_DLL_VERSION_FAILURE = -48, //Fail in getting DLL file version |
| CM_KERNELPAYLOAD_PERTHREADARG_MUTEX_FAIL = -49, |
| CM_KERNELPAYLOAD_PERKERNELARG_MUTEX_FAIL = -50, |
| CM_KERNELPAYLOAD_SETTING_FAILURE = -51, |
| CM_KERNELPAYLOAD_SURFACE_INVALID_BTINDEX = -52, |
| CM_NOT_SET_KERNEL_ARGUMENT = -53, |
| CM_GPUCOPY_INVALID_SURFACES = -54, |
| CM_GPUCOPY_INVALID_SIZE = -55, |
| CM_GPUCOPY_OUT_OF_RESOURCE = -56, |
| CM_INVALID_VIDEO_DEVICE = -57, |
| CM_SURFACE_DELAY_DESTROY = -58, |
| CM_INVALID_VEBOX_STATE = -59, |
| CM_INVALID_VEBOX_SURFACE = -60, |
| CM_FEATURE_NOT_SUPPORTED_BY_HARDWARE = -61, |
| CM_RESOURCE_USAGE_NOT_SUPPORT_READWRITE = -62, |
| CM_MULTIPLE_MIPLEVELS_NOT_SUPPORTED = -63, |
| CM_INVALID_UMD_CONTEXT = -64, |
| CM_INVALID_LIBVA_SURFACE = -65, |
| CM_INVALID_LIBVA_INITIALIZE = -66, |
| CM_KERNEL_THREADSPACE_NOT_SET = -67, |
| CM_INVALID_KERNEL_THREADSPACE = -68, |
| CM_KERNEL_THREADSPACE_THREADS_NOT_ASSOCIATED= -69, |
| CM_KERNEL_THREADSPACE_INTEGRITY_FAILED = -70, |
| CM_INVALID_USERPROVIDED_GENBINARY = -71, |
| CM_INVALID_PRIVATE_DATA = -72, |
| CM_INVALID_MOS_RESOURCE_HANDLE = -73, |
| CM_SURFACE_CACHED = -74, |
| CM_SURFACE_IN_USE = -75, |
| CM_INVALID_GPUCOPY_KERNEL = -76, |
| CM_INVALID_DEPENDENCY_WITH_WALKING_PATTERN = -77, |
| CM_INVALID_MEDIA_WALKING_PATTERN = -78, |
| CM_FAILED_TO_ALLOCATE_SVM_BUFFER = -79, |
| CM_EXCEED_MAX_POWER_OPTION_FOR_PLATFORM = -80, |
| CM_INVALID_KERNEL_THREADGROUPSPACE = -81, |
| CM_INVALID_KERNEL_SPILL_CODE = -82, |
| CM_UMD_DRIVER_NOT_SUPPORTED = -83, |
| CM_INVALID_GPU_FREQUENCY_VALUE = -84, |
| CM_SYSTEM_MEMORY_NOT_4KPAGE_ALIGNED = -85, |
| CM_KERNEL_ARG_SETTING_FAILED = -86, |
| CM_NO_AVAILABLE_SURFACE = -87, |
| CM_VA_SURFACE_NOT_SUPPORTED = -88, |
| CM_TOO_MUCH_THREADS = -89, |
| CM_NULL_POINTER = -90, |
| CM_EXCEED_MAX_NUM_2D_ALIASES = -91, |
| CM_INVALID_PARAM_SIZE = -92, |
| CM_GT_UNSUPPORTED = -93, |
| CM_GTPIN_FLAG_NO_LONGER_SUPPORTED = -94, |
| CM_PLATFORM_UNSUPPORTED_FOR_API = -95, |
| CM_TASK_MEDIA_RESET = -96, |
| CM_KERNELPAYLOAD_SAMPLER_INVALID_BTINDEX = -97, |
| CM_EXCEED_MAX_NUM_BUFFER_ALIASES = -98, |
| CM_SYSTEM_MEMORY_NOT_4PIXELS_ALIGNED = -99, |
| CM_FAILED_TO_CREATE_CURBE_SURFACE = -100, |
| CM_INVALID_CAP_NAME = -101, |
| CM_INVALID_PARAM_FOR_CREATE_QUEUE_EX = -102, |
| CM_INVALID_CREATE_OPTION_FOR_BUFFER_STATELESS = -103, |
| CM_INVALID_KERNEL_ARG_POINTER = -104, |
| CM_LOAD_LIBRARY_FAILED = -105, |
| CM_NO_SUPPORTED_ADAPTER = -106, |
| |
| /* |
| * RANGE -10000 ~ -19999 FOR INTERNAL ERROR CODE |
| */ |
| CM_INTERNAL_ERROR_CODE_OFFSET = -10000, |
| |
| /* |
| * RANGE <=-20000 AREAD FOR MOST STATUS CONVERSION |
| */ |
| CM_MOS_STATUS_CONVERTED_CODE_OFFSET = -20000 |
| } CM_RETURN_CODE; |
| |
| #define __CODEGEN_UNIQUE(name) _NAME_LABEL_(name, __LINE__) |
| #define BITFIELD_RANGE( startbit, endbit ) ((endbit)-(startbit)+1) |
| #define BITFIELD_BIT(bit) 1 |
| |
| #define CM_MIN_SURF_WIDTH 1 |
| #define CM_MIN_SURF_HEIGHT 1 |
| #define CM_MIN_SURF_DEPTH 2 |
| #define CM_MAX_1D_SURF_WIDTH 0x80000000 // 2^31 2 GB |
| |
| #define CM_MAX_3D_SURF_WIDTH 2048 |
| #define CM_MAX_3D_SURF_HEIGHT 2048 |
| #define CM_MAX_3D_SURF_DEPTH 2048 |
| |
| // hard ceiling |
| #define CM_MAX_OPTION_SIZE_IN_BYTE 512 |
| #define CM_MAX_KERNEL_NAME_SIZE_IN_BYTE 256 |
| #define CM_MAX_ISA_FILE_NAME_SIZE_IN_BYTE 256 |
| |
| #define CM_BUFFER_STATELESS_CREATE_OPTION_GFX_MEM 0 |
| #define CM_BUFFER_STATELESS_CREATE_OPTION_SYS_MEM 1 |
| #define CM_BUFFER_STATELESS_CREATE_OPTION_DEGAULT CM_BUFFER_STATELESS_CREATE_OPTION_GFX_MEM |
| |
| struct CM_HAL_MAX_VALUES |
| { |
| uint32_t maxTasks; // [in] Max Tasks |
| uint32_t maxKernelsPerTask; // [in] Max kernels per task |
| uint32_t maxKernelBinarySize; // [in] Max kernel binary size |
| uint32_t maxSpillSizePerHwThread; // [in] Max spill size per thread |
| uint32_t maxSamplerTableSize; // [in] Max sampler table size |
| uint32_t maxBufferTableSize; // [in] Buffer table Size |
| uint32_t max2DSurfaceTableSize; // [in] Buffer table Size |
| uint32_t max3DSurfaceTableSize; // [in] Buffer table Size |
| uint32_t maxArgsPerKernel; // [in] Max arguments per kernel |
| uint32_t maxArgByteSizePerKernel; // [in] Max argument size in byte per kernel |
| uint32_t maxSurfacesPerKernel; // [in] Max Surfaces Per Kernel |
| uint32_t maxSamplersPerKernel; // [in] Max Samplers per kernel |
| uint32_t maxHwThreads; // [in] Max HW threads |
| uint32_t maxUserThreadsPerTask; // [in] Max user threads per task |
| uint32_t maxUserThreadsPerTaskNoThreadArg; // [in] Max user threads per task without a thread arg |
| }; |
| typedef CM_HAL_MAX_VALUES *PCM_HAL_MAX_VALUES; |
| |
| //--------------------------------------------------------------------------- |
| //! HAL CM Max Values extention which has more entries which are not included |
| //! in CM_HAL_MAX_VALUES |
| //--------------------------------------------------------------------------- |
| struct CM_HAL_MAX_VALUES_EX |
| { |
| uint32_t max2DUPSurfaceTableSize; // [in] Max 2D UP surface table Size |
| uint32_t maxSampler8x8TableSize; // [in] Max sampler 8x8 table size |
| uint32_t maxCURBESizePerKernel; // [in] Max CURBE size per kernel |
| uint32_t maxCURBESizePerTask; // [in] Max CURBE size per task |
| uint32_t maxIndirectDataSizePerKernel; // [in] Max indirect data size per kernel |
| uint32_t maxUserThreadsPerMediaWalker; // [in] Max user threads per media walker |
| uint32_t maxUserThreadsPerThreadGroup; // [in] Max user threads per thread group |
| }; |
| typedef CM_HAL_MAX_VALUES_EX *PCM_HAL_MAX_VALUES_EX; |
| |
| class CLock |
| { |
| public: |
| CLock(CSync &refSync) : m_refSync(refSync) { Lock(); } |
| ~CLock() { Unlock(); } |
| |
| private: |
| CSync &m_refSync; // Synchronization object |
| |
| CLock(const CLock &refcSource); |
| CLock &operator=(const CLock &refcSource); |
| void Lock() { m_refSync.Acquire(); } |
| void Unlock() { m_refSync.Release(); } |
| }; |
| |
| typedef struct _CM_SAMPLER_STATE |
| { |
| CM_TEXTURE_FILTER_TYPE minFilterType; |
| CM_TEXTURE_FILTER_TYPE magFilterType; |
| CM_TEXTURE_ADDRESS_TYPE addressU; |
| CM_TEXTURE_ADDRESS_TYPE addressV; |
| CM_TEXTURE_ADDRESS_TYPE addressW; |
| } CM_SAMPLER_STATE; |
| |
| typedef enum _CM_PIXEL_TYPE |
| { |
| CM_PIXEL_UINT, |
| CM_PIXEL_SINT, |
| CM_PIXEL_OTHER |
| } CM_PIXEL_TYPE; |
| |
| typedef struct _CM_SAMPLER_STATE_EX |
| { |
| CM_TEXTURE_FILTER_TYPE minFilterType; |
| CM_TEXTURE_FILTER_TYPE magFilterType; |
| CM_TEXTURE_ADDRESS_TYPE addressU; |
| CM_TEXTURE_ADDRESS_TYPE addressV; |
| CM_TEXTURE_ADDRESS_TYPE addressW; |
| |
| CM_PIXEL_TYPE surfaceFormat; |
| union |
| { |
| uint32_t borderColorRedU; |
| int32_t borderColorRedS; |
| float borderColorRedF; |
| }; |
| union |
| { |
| uint32_t borderColorGreenU; |
| int32_t borderColorGreenS; |
| float borderColorGreenF; |
| }; |
| union |
| { |
| uint32_t borderColorBlueU; |
| int32_t borderColorBlueS; |
| float borderColorBlueF; |
| }; |
| union |
| { |
| uint32_t borderColorAlphaU; |
| int32_t borderColorAlphaS; |
| float borderColorAlphaF; |
| }; |
| } CM_SAMPLER_STATE_EX; |
| |
| //struct used by both CmDevice and CmSampler8x8 |
| typedef struct _CM_AVS_COEFF_TABLE |
| { |
| float filterCoeff_0_0; |
| float filterCoeff_0_1; |
| float filterCoeff_0_2; |
| float filterCoeff_0_3; |
| float filterCoeff_0_4; |
| float filterCoeff_0_5; |
| float filterCoeff_0_6; |
| float filterCoeff_0_7; |
| } CM_AVS_COEFF_TABLE; |
| |
| #define CM_NUM_COEFF_ROWS 17 |
| #define CM_NUM_COEFF_ROWS_SKL 32 |
| typedef struct _CM_AVS_NONPIPLINED_STATE |
| { |
| bool bypassXAF; |
| bool bypassYAF; |
| uint8_t defaultSharpLvl; |
| uint8_t maxDerivative4Pixels; |
| uint8_t maxDerivative8Pixels; |
| uint8_t transitionArea4Pixels; |
| uint8_t transitionArea8Pixels; |
| CM_AVS_COEFF_TABLE Tbl0X[ CM_NUM_COEFF_ROWS_SKL ]; |
| CM_AVS_COEFF_TABLE Tbl0Y[ CM_NUM_COEFF_ROWS_SKL ]; |
| CM_AVS_COEFF_TABLE Tbl1X[ CM_NUM_COEFF_ROWS_SKL ]; |
| CM_AVS_COEFF_TABLE Tbl1Y[ CM_NUM_COEFF_ROWS_SKL ]; |
| bool enableRgbAdaptive; |
| bool adaptiveFilterAllChannels; |
| } CM_AVS_NONPIPLINED_STATE; |
| |
| enum CM_SAMPLER_STATE_TYPE { |
| CM_SAMPLER8X8_AVS = 0, |
| CM_SAMPLER8X8_CONV = 1, |
| CM_SAMPLER8X8_MISC = 3, |
| CM_SAMPLER8X8_CONV1DH = 4, |
| CM_SAMPLER8X8_CONV1DV = 5, |
| CM_SAMPLER8X8_AVS_EX = 6, |
| CM_SAMPLER8X8_NONE |
| }; |
| |
| typedef struct _CM_AVS_STATE_MSG |
| { |
| bool avsType; //true nearest, false adaptive |
| bool eightTapAFEnable; //HSW+ |
| bool bypassIEF; //ignored for BWL, moved to sampler8x8 payload. |
| bool shuffleOutputWriteback; //SKL mode only to be set when AVS msg sequence is 4x4 or 8x4 |
| bool hdcDirectWriteEnable; |
| unsigned short gainFactor; |
| unsigned char globalNoiseEstm; |
| unsigned char strongEdgeThr; |
| unsigned char weakEdgeThr; |
| unsigned char strongEdgeWght; |
| unsigned char regularWght; |
| unsigned char nonEdgeWght; |
| unsigned short r3xCoefficient; |
| unsigned short r3cCoefficient; |
| unsigned short r5xCoefficient; |
| unsigned short r5cxCoefficient; |
| unsigned short r5cCoefficient; |
| //For Non-piplined states |
| unsigned short stateID; |
| CM_AVS_NONPIPLINED_STATE * avsState; |
| } CM_AVS_STATE_MSG; |
| |
| //*----------------------------------------------------------------------------- |
| //| CM Convolve type for SKL+ |
| //*----------------------------------------------------------------------------- |
| typedef enum _CM_CONVOLVE_SKL_TYPE |
| { |
| CM_CONVOLVE_SKL_TYPE_2D = 0, |
| CM_CONVOLVE_SKL_TYPE_1D = 1, |
| CM_CONVOLVE_SKL_TYPE_1P = 2 |
| } CM_CONVOLVE_SKL_TYPE; |
| |
| typedef struct _CM_CONVOLVE_COEFF_TABLE |
| { |
| float filterCoeff_0_0; |
| float filterCoeff_0_1; |
| float filterCoeff_0_2; |
| float filterCoeff_0_3; |
| float filterCoeff_0_4; |
| float filterCoeff_0_5; |
| float filterCoeff_0_6; |
| float filterCoeff_0_7; |
| float filterCoeff_0_8; |
| float filterCoeff_0_9; |
| float filterCoeff_0_10; |
| float filterCoeff_0_11; |
| float filterCoeff_0_12; |
| float filterCoeff_0_13; |
| float filterCoeff_0_14; |
| float filterCoeff_0_15; |
| float filterCoeff_0_16; |
| float filterCoeff_0_17; |
| float filterCoeff_0_18; |
| float filterCoeff_0_19; |
| float filterCoeff_0_20; |
| float filterCoeff_0_21; |
| float filterCoeff_0_22; |
| float filterCoeff_0_23; |
| float filterCoeff_0_24; |
| float filterCoeff_0_25; |
| float filterCoeff_0_26; |
| float filterCoeff_0_27; |
| float filterCoeff_0_28; |
| float filterCoeff_0_29; |
| float filterCoeff_0_30; |
| float filterCoeff_0_31; |
| } CM_CONVOLVE_COEFF_TABLE; |
| |
| #define CM_NUM_CONVOLVE_ROWS 16 |
| #define CM_NUM_CONVOLVE_ROWS_SKL 32 |
| typedef struct _CM_CONVOLVE_STATE_MSG |
| { |
| bool coeffSize; //true 16-bit, false 8-bit |
| int8_t sclDwnValue; //Scale down value |
| int8_t width; //Kernel Width |
| int8_t height; //Kernel Height |
| //SKL mode |
| bool isVertical32Mode; |
| bool isHorizontal32Mode; |
| CM_CONVOLVE_SKL_TYPE nConvolveType; |
| CM_CONVOLVE_COEFF_TABLE table[CM_NUM_CONVOLVE_ROWS_SKL]; |
| } CM_CONVOLVE_STATE_MSG; |
| |
| struct CM_AVS_STATE_MSG_EX |
| { |
| CM_RT_API CM_AVS_STATE_MSG_EX(); |
| |
| bool enableAllChannelAdaptiveFilter; // adaptive filter for all channels. validValues => [true..false] |
| bool enableRgbAdaptiveFilter; // adaptive filter for all channels. validValues => [true..false] |
| bool enable8TapAdaptiveFilter; // enable 8-tap filter. validValues => [true..false] |
| bool enableUV8TapFilter; // enable 8-tap filter on UV/RB channels. validValues => [true..false] |
| bool writebackFormat; // true sampleunorm, false standard. validValues => [true..false] |
| bool writebackMode; // true avs, false ief. validValues => [true..false] |
| uint8_t stateSelection; // 0=>first,1=>second scaler8x8 state. validValues => [0..1] |
| |
| // Image enhancement filter settings. |
| bool enableIef; // image enhancement filter enable. validValues => [true..false] |
| bool iefType; // true "basic" or false "advanced". validValues => [true..false] |
| bool enableIefSmooth; // true based on 3x3, false based on 5x5 validValues => [true..false] |
| float r3cCoefficient; // smoothing coeffient. Valid values => [0.0..0.96875] |
| float r3xCoefficient; // smoothing coeffient. Valid values => [0.0..0.96875] |
| float r5cCoefficient; // smoothing coeffient. validValues => [0.0..0.96875] |
| float r5cxCoefficient; // smoothing coeffient. validValues => [0.0..0.96875] |
| float r5xCoefficient; // smoothing coeffient. validValues => [0.0..0.96875] |
| |
| // Edge processing settings. |
| uint8_t strongEdgeThreshold; // validValues => [0..64] |
| uint8_t strongEdgeWeight; // Sharpening strength when a strong edge. validValues => [0..7] |
| uint8_t weakEdgeThreshold; // validValues => [0..64] |
| uint8_t regularEdgeWeight; // Sharpening strength when a weak edge. validValues => [0..7] |
| uint8_t nonEdgeWeight; // Sharpening strength when no edge. validValues => [0..7] |
| |
| // Chroma key. |
| bool enableChromaKey; // Chroma keying be performed. validValues => [true..false] |
| uint8_t chromaKeyIndex; // ChromaKey Table entry. validValues => [0..3] |
| |
| // Skin tone settings. |
| bool enableSkinTone; // SkinToneTunedIEF_Enable. validValues => [true..false] |
| bool enableVySkinToneDetection; // Enables STD in the VY subspace. validValues => [true..false] |
| bool skinDetailFactor; // validValues => [true..false] |
| uint8_t skinTypesMargin; // validValues => [0..255] |
| uint8_t skinTypesThreshold; // validValues => [0..255] |
| |
| // Miscellaneous settings. |
| uint8_t gainFactor; // validValues => [0..63] |
| uint8_t globalNoiseEstimation; // validValues => [0..255] |
| bool mrBoost; // validValues => [true..false] |
| uint8_t mrSmoothThreshold; // validValues => [0..3] |
| uint8_t mrThreshold; |
| bool steepnessBoost; // validValues => [true..false] |
| uint8_t steepnessThreshold; // validValues => [0..15] |
| bool textureCoordinateMode; // true: clamp, false: mirror. validValues => [true..false] |
| uint8_t maxHue; // Rectangle half width. validValued => [0..63] |
| uint8_t maxSaturation; // Rectangle half length. validValued => [0..63] |
| int angles; // validValued => [0..360] |
| uint8_t diamondMargin ; // validValues => [0..7] |
| char diamondDu; // Rhombus center shift in the sat-direction. validValues => [-64..63] |
| char diamondDv; // Rhombus center shift in the hue-direction. validValues => [-64..63] |
| float diamondAlpha; // validValues => [0.0..4.0] |
| uint8_t diamondThreshold; // validValues => [0..63] |
| uint8_t rectangleMargin; // validValues => [0..7] |
| uint8_t rectangleMidpoint[2]; // validValues => [[0..255, 0..255]] |
| float vyInverseMargin[2]; // validValues => [[0.0..1.0, 0.0..1.0]] |
| |
| // Piecewise linear function settings. |
| uint8_t piecewiseLinearYPoints[4]; // validValues => [[0..255, 0..255, 0..255, 0..255]] |
| float piecewiseLinearYSlopes[2]; // validValues => [[-4.0...4.0, -4.0...4.0]] |
| uint8_t piecewiseLinearPointsLower[4]; // validValues => [[0..255, 0..255, 0..255, 0..255]] |
| uint8_t piecewiseLinearPointsUpper[4]; // validValues => [[0..255, 0..255, 0..255, 0..255]] |
| float piecewiseLinearSlopesLower[4]; // validValues => [[-4.0...4.0, -4.0...4.0, -4.0...4.0, -4.0...4.0]] |
| float piecewiseLinearSlopesUpper[4]; // validValues => [[-4.0...4.0, -4.0...4.0, -4.0...4.0, -4.0...4.0]] |
| uint8_t piecewiseLinearBiasesLower[4]; // validValues => [[0..255, 0..255, 0..255, 0..255]] |
| uint8_t piecewiseLinearBiasesUpper[4]; // validValues => [[0..255, 0..255, 0..255, 0..255]] |
| |
| // AVS non-pipelined states. |
| uint8_t defaultSharpnessLevel; // default coefficient between smooth and sharp filtering. validValues => [0..255] |
| bool enableXAdaptiveFilter; // validValues => [true, false] |
| bool enableYAdaptiveFilter; // validValues => [true, false] |
| uint8_t maxDerivative4Pixels; // lower boundary of the smooth 4 pixel area. validValues => [0..255] |
| uint8_t maxDerivative8Pixels; // lower boundary of the smooth 8 pixel area. validValues => [0..255] |
| uint8_t transitionArea4Pixels; // used in adaptive filtering to specify the width of the transition area for the 4 pixel calculation. validValues => [0..8] |
| uint8_t transitionArea8Pixels; // Used in adaptive filtering to specify the width of the transition area for the 8 pixel calculation. validValues => [0..8] |
| CM_AVS_COEFF_TABLE table0X[CM_NUM_COEFF_ROWS_SKL]; |
| CM_AVS_COEFF_TABLE table0Y[CM_NUM_COEFF_ROWS_SKL]; |
| CM_AVS_COEFF_TABLE table1X[CM_NUM_COEFF_ROWS_SKL]; |
| CM_AVS_COEFF_TABLE table1Y[CM_NUM_COEFF_ROWS_SKL]; |
| }; |
| |
| /* |
| * MISC SAMPLER8x8 State |
| */ |
| typedef struct _CM_MISC_STATE |
| { |
| //uint32_t 1 |
| union |
| { |
| struct |
| { |
| uint32_t Row0 : 16; |
| uint32_t Reserved : 8; |
| uint32_t Width : 4; |
| uint32_t Height : 4; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW0; |
| |
| //uint32_t 1 |
| union |
| { |
| struct |
| { |
| uint32_t Row1 : 16; |
| uint32_t Row2 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW1; |
| |
| //uint32_t 2 |
| union |
| { |
| struct |
| { |
| uint32_t Row3 : 16; |
| uint32_t Row4 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW2; |
| |
| //uint32_t 3 |
| union |
| { |
| struct |
| { |
| uint32_t Row5 : 16; |
| uint32_t Row6 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW3; |
| |
| //uint32_t 4 |
| union |
| { |
| struct |
| { |
| uint32_t Row7 : 16; |
| uint32_t Row8 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW4; |
| |
| //uint32_t 5 |
| union |
| { |
| struct |
| { |
| uint32_t Row9 : 16; |
| uint32_t Row10 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW5; |
| |
| //uint32_t 6 |
| union |
| { |
| struct |
| { |
| uint32_t Row11 : 16; |
| uint32_t Row12 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW6; |
| |
| //uint32_t 7 |
| union |
| { |
| struct |
| { |
| uint32_t Row13 : 16; |
| uint32_t Row14 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW7; |
| } CM_MISC_STATE; |
| |
| /* |
| * CONVOLVE STATE DATA STRUCTURES |
| */ |
| typedef struct _CM_MISC_STATE_MSG |
| { |
| //uint32_t 0 |
| union |
| { |
| struct |
| { |
| uint32_t Row0 : 16; |
| uint32_t Reserved : 8; |
| uint32_t Width : 4; |
| uint32_t Height : 4; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| }DW0; |
| |
| //uint32_t 1 |
| union |
| { |
| struct |
| { |
| uint32_t Row1 : 16; |
| uint32_t Row2 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW1; |
| |
| //uint32_t 2 |
| union |
| { |
| struct |
| { |
| uint32_t Row3 : 16; |
| uint32_t Row4 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW2; |
| |
| //uint32_t 3 |
| union |
| { |
| struct |
| { |
| uint32_t Row5 : 16; |
| uint32_t Row6 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW3; |
| |
| //uint32_t 4 |
| union |
| { |
| struct |
| { |
| uint32_t Row7 : 16; |
| uint32_t Row8 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW4; |
| |
| //uint32_t 5 |
| union |
| { |
| struct |
| { |
| uint32_t Row9 : 16; |
| uint32_t Row10 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW5; |
| |
| //uint32_t 6 |
| union |
| { |
| struct |
| { |
| uint32_t Row11 : 16; |
| uint32_t Row12 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW6; |
| |
| //uint32_t 7 |
| union |
| { |
| struct |
| { |
| uint32_t Row13 : 16; |
| uint32_t Row14 : 16; |
| }; |
| struct |
| { |
| uint32_t value; |
| }; |
| } DW7; |
| } CM_MISC_STATE_MSG; |
| |
| struct CM_SAMPLER_8X8_DESCR |
| { |
| CM_SAMPLER_STATE_TYPE stateType; |
| union |
| { |
| CM_AVS_STATE_MSG *avs; |
| CM_AVS_STATE_MSG_EX *avsEx; |
| CM_CONVOLVE_STATE_MSG *conv; |
| CM_MISC_STATE_MSG *misc; //ERODE/DILATE/MINMAX |
| }; |
| }; |
| #endif // #ifndef CMRTLIB_AGNOSTIC_SHARE_CM_DEF_H_ |