| /* |
| * 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. |
| */ |
| //! |
| //! \file mhw_sfc_hwcmd_g10_X.h |
| //! \brief Auto-generated constructors for MHW and states. |
| //! \details This file may not be included outside of g10_X as other components |
| //! should use MHW interface to interact with MHW commands and states. |
| //! |
| #ifndef __MHW_SFC_HWCMD_G10_X_H__ |
| #define __MHW_SFC_HWCMD_G10_X_H__ |
| |
| #pragma once |
| #pragma pack(1) |
| |
| #include <cstdint> |
| #include <cstddef> |
| |
| class mhw_sfc_g10_X |
| { |
| public: |
| // Internal Macros |
| #define __CODEGEN_MAX(_a, _b) (((_a) > (_b)) ? (_a) : (_b)) |
| #define __CODEGEN_BITFIELD(l, h) (h) - (l) + 1 |
| #define __CODEGEN_OP_LENGTH_BIAS 2 |
| #define __CODEGEN_OP_LENGTH(x) (uint32_t)((__CODEGEN_MAX(x, __CODEGEN_OP_LENGTH_BIAS)) - __CODEGEN_OP_LENGTH_BIAS) |
| |
| static uint32_t GetOpLength(uint32_t uiLength) { return __CODEGEN_OP_LENGTH(uiLength); } |
| |
| //! |
| //! \brief SFC_AVS_STATE |
| //! \details |
| //! This command is sent from VDBOX/VEBOX to SFC pipeline at the start of |
| //! each frame once the lock request is granted. |
| //! |
| struct SFC_AVS_STATE_CMD |
| { |
| union |
| { |
| //!< DWORD 0 |
| struct |
| { |
| uint32_t DwordLength : __CODEGEN_BITFIELD( 0, 11) ; //!< DWORD_LENGTH |
| uint32_t Reserved12 : __CODEGEN_BITFIELD(12, 15) ; //!< Reserved |
| uint32_t Subopcodeb : __CODEGEN_BITFIELD(16, 20) ; //!< SUBOPCODEB |
| uint32_t Subopcodea : __CODEGEN_BITFIELD(21, 22) ; //!< SUBOPCODEA |
| uint32_t MediaCommandOpcode : __CODEGEN_BITFIELD(23, 26) ; //!< MEDIA_COMMAND_OPCODE |
| uint32_t Pipeline : __CODEGEN_BITFIELD(27, 28) ; //!< PIPELINE |
| uint32_t CommandType : __CODEGEN_BITFIELD(29, 31) ; //!< COMMAND_TYPE |
| }; |
| uint32_t Value; |
| } DW0; |
| union |
| { |
| //!< DWORD 1 |
| struct |
| { |
| uint32_t TransitionAreaWith8Pixels : __CODEGEN_BITFIELD( 0, 2) ; //!< Transition Area with 8 Pixels |
| uint32_t Reserved35 : __CODEGEN_BITFIELD( 3, 3) ; //!< Reserved |
| uint32_t TransitionAreaWith4Pixels : __CODEGEN_BITFIELD( 4, 6) ; //!< Transition Area with 4 Pixels |
| uint32_t Reserved39 : __CODEGEN_BITFIELD( 7, 23) ; //!< Reserved |
| uint32_t SharpnessLevel : __CODEGEN_BITFIELD(24, 31) ; //!< SHARPNESS_LEVEL |
| }; |
| uint32_t Value; |
| } DW1; |
| union |
| { |
| //!< DWORD 2 |
| struct |
| { |
| uint32_t MaxDerivativePoint8 : __CODEGEN_BITFIELD( 0, 7) ; //!< MAX Derivative Point 8 |
| uint32_t Reserved72 : __CODEGEN_BITFIELD( 8, 15) ; //!< Reserved |
| uint32_t MaxDerivative4Pixels : __CODEGEN_BITFIELD(16, 23) ; //!< Max Derivative 4 Pixels |
| uint32_t Reserved88 : __CODEGEN_BITFIELD(24, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW2; |
| |
| //! \name Local enumerations |
| |
| enum SUBOPCODEB |
| { |
| SUBOPCODEB_SFCAVSSTATE = 2, //!< No additional details |
| }; |
| |
| enum SUBOPCODEA |
| { |
| SUBOPCODEA_COMMON = 0, //!< No additional details |
| }; |
| |
| enum MEDIA_COMMAND_OPCODE |
| { |
| MEDIA_COMMAND_OPCODE_MEDIAMISC = 10, //!< No additional details |
| }; |
| |
| enum PIPELINE |
| { |
| PIPELINE_MEDIA = 2, //!< No additional details |
| }; |
| |
| enum COMMAND_TYPE |
| { |
| COMMAND_TYPE_PARALLELVIDEOPIPE = 3, //!< No additional details |
| }; |
| |
| //! \brief SHARPNESS_LEVEL |
| //! \details |
| //! When adaptive scaling is off, determines the balance between sharp and |
| //! smooth scalers. |
| enum SHARPNESS_LEVEL |
| { |
| SHARPNESS_LEVEL_UNNAMED0 = 0, //!< Contribute 1 from the smooth scalar |
| SHARPNESS_LEVEL_UNNAMED255 = 255, //!< Contribute 1 from the sharp scalar |
| }; |
| |
| //! \name Initializations |
| |
| //! \brief Explicit member initialization function |
| SFC_AVS_STATE_CMD(); |
| |
| static const size_t dwSize = 3; |
| static const size_t byteSize = 12; |
| }; |
| |
| //! |
| //! \brief SFC_IEF_STATE |
| //! \details |
| //! This command is sent from VDBOX/VEBOX to SFC pipeline at the start of |
| //! each frame once the lock request is granted. |
| //! |
| struct SFC_IEF_STATE_CMD |
| { |
| union |
| { |
| //!< DWORD 0 |
| struct |
| { |
| uint32_t DwordLength : __CODEGEN_BITFIELD( 0, 11) ; //!< DWORD_LENGTH |
| uint32_t Reserved12 : __CODEGEN_BITFIELD(12, 15) ; //!< Reserved |
| uint32_t Subopcodeb : __CODEGEN_BITFIELD(16, 20) ; //!< SUBOPCODEB |
| uint32_t Subopcodea : __CODEGEN_BITFIELD(21, 22) ; //!< SUBOPCODEA |
| uint32_t MediaCommandOpcode : __CODEGEN_BITFIELD(23, 26) ; //!< MEDIA_COMMAND_OPCODE |
| uint32_t Pipeline : __CODEGEN_BITFIELD(27, 28) ; //!< PIPELINE |
| uint32_t CommandType : __CODEGEN_BITFIELD(29, 31) ; //!< COMMAND_TYPE |
| }; |
| uint32_t Value; |
| } DW0; |
| union |
| { |
| //!< DWORD 1 |
| struct |
| { |
| uint32_t GainFactor : __CODEGEN_BITFIELD( 0, 5) ; //!< GAIN_FACTOR |
| uint32_t WeakEdgeThreshold : __CODEGEN_BITFIELD( 6, 11) ; //!< WEAK_EDGE_THRESHOLD |
| uint32_t StrongEdgeThreshold : __CODEGEN_BITFIELD(12, 17) ; //!< STRONG_EDGE_THRESHOLD |
| uint32_t R3XCoefficient : __CODEGEN_BITFIELD(18, 22) ; //!< R3X_COEFFICIENT |
| uint32_t R3CCoefficient : __CODEGEN_BITFIELD(23, 27) ; //!< R3C_COEFFICIENT |
| uint32_t Reserved60 : __CODEGEN_BITFIELD(28, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW1; |
| union |
| { |
| //!< DWORD 2 |
| struct |
| { |
| uint32_t GlobalNoiseEstimation : __CODEGEN_BITFIELD( 0, 7) ; //!< GLOBAL_NOISE_ESTIMATION |
| uint32_t NonEdgeWeight : __CODEGEN_BITFIELD( 8, 10) ; //!< NON_EDGE_WEIGHT |
| uint32_t RegularWeight : __CODEGEN_BITFIELD(11, 13) ; //!< REGULAR_WEIGHT |
| uint32_t StrongEdgeWeight : __CODEGEN_BITFIELD(14, 16) ; //!< STRONG_EDGE_WEIGHT |
| uint32_t R5XCoefficient : __CODEGEN_BITFIELD(17, 21) ; //!< R5X_COEFFICIENT |
| uint32_t R5CxCoefficient : __CODEGEN_BITFIELD(22, 26) ; //!< R5CX_COEFFICIENT |
| uint32_t R5CCoefficient : __CODEGEN_BITFIELD(27, 31) ; //!< R5C_COEFFICIENT |
| }; |
| uint32_t Value; |
| } DW2; |
| union |
| { |
| //!< DWORD 3 |
| struct |
| { |
| uint32_t StdSinAlpha : __CODEGEN_BITFIELD( 0, 7) ; //!< STD Sin(alpha) |
| uint32_t StdCosAlpha : __CODEGEN_BITFIELD( 8, 15) ; //!< STD Cos(alpha) |
| uint32_t SatMax : __CODEGEN_BITFIELD(16, 21) ; //!< SAT_MAX |
| uint32_t HueMax : __CODEGEN_BITFIELD(22, 27) ; //!< HUE_MAX |
| uint32_t Reserved124 : __CODEGEN_BITFIELD(28, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW3; |
| union |
| { |
| //!< DWORD 4 |
| struct |
| { |
| uint32_t S3U : __CODEGEN_BITFIELD( 0, 10) ; //!< S3U |
| uint32_t Reserved139 : __CODEGEN_BITFIELD(11, 11) ; //!< Reserved |
| uint32_t DiamondMargin : __CODEGEN_BITFIELD(12, 14) ; //!< DIAMOND_MARGIN |
| uint32_t VyStdEnable : __CODEGEN_BITFIELD(15, 15) ; //!< VY_STD_Enable |
| uint32_t UMid : __CODEGEN_BITFIELD(16, 23) ; //!< U_MID |
| uint32_t VMid : __CODEGEN_BITFIELD(24, 31) ; //!< V_MID |
| }; |
| uint32_t Value; |
| } DW4; |
| union |
| { |
| //!< DWORD 5 |
| struct |
| { |
| uint32_t DiamondDv : __CODEGEN_BITFIELD( 0, 6) ; //!< DIAMOND_DV |
| uint32_t DiamondTh : __CODEGEN_BITFIELD( 7, 12) ; //!< DIAMOND_TH |
| uint32_t DiamondAlpha : __CODEGEN_BITFIELD(13, 20) ; //!< Diamond_alpha |
| uint32_t HsMargin : __CODEGEN_BITFIELD(21, 23) ; //!< HS_MARGIN |
| uint32_t DiamondDu : __CODEGEN_BITFIELD(24, 30) ; //!< DIAMOND_DU |
| uint32_t SkinDetailFactor : __CODEGEN_BITFIELD(31, 31) ; //!< SKIN_DETAIL_FACTOR |
| }; |
| uint32_t Value; |
| } DW5; |
| union |
| { |
| //!< DWORD 6 |
| struct |
| { |
| uint32_t YPoint1 : __CODEGEN_BITFIELD( 0, 7) ; //!< Y_POINT_1 |
| uint32_t YPoint2 : __CODEGEN_BITFIELD( 8, 15) ; //!< Y_POINT_2 |
| uint32_t YPoint3 : __CODEGEN_BITFIELD(16, 23) ; //!< Y_POINT_3 |
| uint32_t YPoint4 : __CODEGEN_BITFIELD(24, 31) ; //!< Y_POINT_4 |
| }; |
| uint32_t Value; |
| } DW6; |
| union |
| { |
| //!< DWORD 7 |
| struct |
| { |
| uint32_t InvMarginVyl : __CODEGEN_BITFIELD( 0, 15) ; //!< INV_Margin_VYL |
| uint32_t Reserved240 : __CODEGEN_BITFIELD(16, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW7; |
| union |
| { |
| //!< DWORD 8 |
| struct |
| { |
| uint32_t InvMarginVyu : __CODEGEN_BITFIELD( 0, 15) ; //!< INV_Margin_VYU |
| uint32_t P0L : __CODEGEN_BITFIELD(16, 23) ; //!< P0L |
| uint32_t P1L : __CODEGEN_BITFIELD(24, 31) ; //!< P1L |
| }; |
| uint32_t Value; |
| } DW8; |
| union |
| { |
| //!< DWORD 9 |
| struct |
| { |
| uint32_t P2L : __CODEGEN_BITFIELD( 0, 7) ; //!< P2L |
| uint32_t P3L : __CODEGEN_BITFIELD( 8, 15) ; //!< P3L |
| uint32_t B0L : __CODEGEN_BITFIELD(16, 23) ; //!< B0L |
| uint32_t B1L : __CODEGEN_BITFIELD(24, 31) ; //!< B1L |
| }; |
| uint32_t Value; |
| } DW9; |
| union |
| { |
| //!< DWORD 10 |
| struct |
| { |
| uint32_t B2L : __CODEGEN_BITFIELD( 0, 7) ; //!< B2L |
| uint32_t B3L : __CODEGEN_BITFIELD( 8, 15) ; //!< B3L |
| uint32_t S0L : __CODEGEN_BITFIELD(16, 26) ; //!< S0L |
| uint32_t YSlope2 : __CODEGEN_BITFIELD(27, 31) ; //!< Y_Slope_2 |
| }; |
| uint32_t Value; |
| } DW10; |
| union |
| { |
| //!< DWORD 11 |
| struct |
| { |
| uint32_t S1L : __CODEGEN_BITFIELD( 0, 10) ; //!< S1L |
| uint32_t S2L : __CODEGEN_BITFIELD(11, 21) ; //!< S2L |
| uint32_t Reserved374 : __CODEGEN_BITFIELD(22, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW11; |
| union |
| { |
| //!< DWORD 12 |
| struct |
| { |
| uint32_t S3L : __CODEGEN_BITFIELD( 0, 10) ; //!< S3L |
| uint32_t P0U : __CODEGEN_BITFIELD(11, 18) ; //!< P0U |
| uint32_t P1U : __CODEGEN_BITFIELD(19, 26) ; //!< P1U |
| uint32_t YSlope1 : __CODEGEN_BITFIELD(27, 31) ; //!< Y_Slope1 |
| }; |
| uint32_t Value; |
| } DW12; |
| union |
| { |
| //!< DWORD 13 |
| struct |
| { |
| uint32_t P2U : __CODEGEN_BITFIELD( 0, 7) ; //!< P2U |
| uint32_t P3U : __CODEGEN_BITFIELD( 8, 15) ; //!< P3U |
| uint32_t B0U : __CODEGEN_BITFIELD(16, 23) ; //!< B0U |
| uint32_t B1U : __CODEGEN_BITFIELD(24, 31) ; //!< B1U |
| }; |
| uint32_t Value; |
| } DW13; |
| union |
| { |
| //!< DWORD 14 |
| struct |
| { |
| uint32_t B2U : __CODEGEN_BITFIELD( 0, 7) ; //!< B2U |
| uint32_t B3U : __CODEGEN_BITFIELD( 8, 15) ; //!< B3U |
| uint32_t S0U : __CODEGEN_BITFIELD(16, 26) ; //!< S0U |
| uint32_t Reserved475 : __CODEGEN_BITFIELD(27, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW14; |
| union |
| { |
| //!< DWORD 15 |
| struct |
| { |
| uint32_t S1U : __CODEGEN_BITFIELD( 0, 10) ; //!< S1U |
| uint32_t S2U : __CODEGEN_BITFIELD(11, 21) ; //!< S2U |
| uint32_t Reserved502 : __CODEGEN_BITFIELD(22, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW15; |
| union |
| { |
| //!< DWORD 16 |
| struct |
| { |
| uint32_t TransformEnable : __CODEGEN_BITFIELD( 0, 0) ; //!< Transform Enable |
| uint32_t YuvChannelSwap : __CODEGEN_BITFIELD( 1, 1) ; //!< YUV Channel Swap |
| uint32_t Reserved514 : __CODEGEN_BITFIELD( 2, 2) ; //!< Reserved |
| uint32_t C0 : __CODEGEN_BITFIELD( 3, 15) ; //!< C0 |
| uint32_t C1 : __CODEGEN_BITFIELD(16, 28) ; //!< C1 |
| uint32_t Reserved541 : __CODEGEN_BITFIELD(29, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW16; |
| union |
| { |
| //!< DWORD 17 |
| struct |
| { |
| uint32_t C2 : __CODEGEN_BITFIELD( 0, 12) ; //!< C2 |
| uint32_t C3 : __CODEGEN_BITFIELD(13, 25) ; //!< C3 |
| uint32_t Reserved570 : __CODEGEN_BITFIELD(26, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW17; |
| union |
| { |
| //!< DWORD 18 |
| struct |
| { |
| uint32_t C4 : __CODEGEN_BITFIELD( 0, 12) ; //!< C4 |
| uint32_t C5 : __CODEGEN_BITFIELD(13, 25) ; //!< C5 |
| uint32_t Reserved602 : __CODEGEN_BITFIELD(26, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW18; |
| union |
| { |
| //!< DWORD 19 |
| struct |
| { |
| uint32_t C6 : __CODEGEN_BITFIELD( 0, 12) ; //!< C6 |
| uint32_t C7 : __CODEGEN_BITFIELD(13, 25) ; //!< C7 |
| uint32_t Reserved634 : __CODEGEN_BITFIELD(26, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW19; |
| union |
| { |
| //!< DWORD 20 |
| struct |
| { |
| uint32_t C8 : __CODEGEN_BITFIELD( 0, 12) ; //!< C8 |
| uint32_t Reserved653 : __CODEGEN_BITFIELD(13, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW20; |
| union |
| { |
| //!< DWORD 21 |
| struct |
| { |
| uint32_t OffsetIn1 : __CODEGEN_BITFIELD( 0, 10) ; //!< OFFSET_IN_1 |
| uint32_t OffsetOut1 : __CODEGEN_BITFIELD(11, 21) ; //!< OFFSET_OUT_1 |
| uint32_t Reserved694 : __CODEGEN_BITFIELD(22, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW21; |
| union |
| { |
| //!< DWORD 22 |
| struct |
| { |
| uint32_t OffsetIn2 : __CODEGEN_BITFIELD( 0, 10) ; //!< OFFSET_IN_2 |
| uint32_t OffsetOut2 : __CODEGEN_BITFIELD(11, 21) ; //!< OFFSET_OUT_2 |
| uint32_t Reserved726 : __CODEGEN_BITFIELD(22, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW22; |
| union |
| { |
| //!< DWORD 23 |
| struct |
| { |
| uint32_t OffsetIn3 : __CODEGEN_BITFIELD( 0, 10) ; //!< OFFSET_IN_3 |
| uint32_t OffsetOut3 : __CODEGEN_BITFIELD(11, 21) ; //!< OFFSET_OUT_3 |
| uint32_t Reserved758 : __CODEGEN_BITFIELD(22, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW23; |
| |
| //! \name Local enumerations |
| |
| enum SUBOPCODEB |
| { |
| SUBOPCODEB_SFCIEFSTATE = 3, //!< No additional details |
| }; |
| |
| enum SUBOPCODEA |
| { |
| SUBOPCODEA_COMMON = 0, //!< No additional details |
| }; |
| |
| enum MEDIA_COMMAND_OPCODE |
| { |
| MEDIA_COMMAND_OPCODE_MEDIAMISC = 10, //!< No additional details |
| }; |
| |
| enum PIPELINE |
| { |
| PIPELINE_MEDIA = 2, //!< No additional details |
| }; |
| |
| enum COMMAND_TYPE |
| { |
| COMMAND_TYPE_PARALLELVIDEOPIPE = 3, //!< No additional details |
| }; |
| |
| //! \brief GAIN_FACTOR |
| //! \details |
| //! User control sharpening strength. |
| enum GAIN_FACTOR |
| { |
| GAIN_FACTOR_UNNAMED_4_4 = 44, //!< No additional details |
| }; |
| |
| //! \brief WEAK_EDGE_THRESHOLD |
| //! \details |
| //! If Strong Edge Threshold > EM > Weak Edge Threshold ? the basic |
| //! VSA detects a weak edge. |
| enum WEAK_EDGE_THRESHOLD |
| { |
| WEAK_EDGE_THRESHOLD_UNNAMED1 = 1, //!< No additional details |
| }; |
| |
| //! \brief STRONG_EDGE_THRESHOLD |
| //! \details |
| //! If EM > Strong Edge Threshold ? the basic VSA detects a strong edge. |
| enum STRONG_EDGE_THRESHOLD |
| { |
| STRONG_EDGE_THRESHOLD_UNNAMED8 = 8, //!< No additional details |
| }; |
| |
| //! \brief R3X_COEFFICIENT |
| //! \details |
| //! IEF smoothing coefficient, <i>see IEF map.</i> |
| enum R3X_COEFFICIENT |
| { |
| R3X_COEFFICIENT_UNNAMED5 = 5, //!< No additional details |
| }; |
| |
| //! \brief R3C_COEFFICIENT |
| //! \details |
| //! IEF smoothing coefficient, <i>see IEF map.</i> |
| enum R3C_COEFFICIENT |
| { |
| R3C_COEFFICIENT_UNNAMED5 = 5, //!< No additional details |
| }; |
| |
| //! \brief GLOBAL_NOISE_ESTIMATION |
| //! \details |
| //! Global noise estimation of previous frame. |
| enum GLOBAL_NOISE_ESTIMATION |
| { |
| GLOBAL_NOISE_ESTIMATION_UNNAMED255 = 255, //!< No additional details |
| }; |
| |
| //! \brief NON_EDGE_WEIGHT |
| //! \details |
| //! . Sharpening strength when <u>NO EDGE</u> is found in basic VSA. |
| enum NON_EDGE_WEIGHT |
| { |
| NON_EDGE_WEIGHT_UNNAMED1 = 1, //!< No additional details |
| }; |
| |
| //! \brief REGULAR_WEIGHT |
| //! \details |
| //! Sharpening strength when a <u>WEAK</u> edge is found in basic VSA. |
| enum REGULAR_WEIGHT |
| { |
| REGULAR_WEIGHT_UNNAMED2 = 2, //!< No additional details |
| }; |
| |
| //! \brief STRONG_EDGE_WEIGHT |
| //! \details |
| //! Sharpening strength when a <u>STRONG</u> edge is found in basic VSA. |
| enum STRONG_EDGE_WEIGHT |
| { |
| STRONG_EDGE_WEIGHT_UNNAMED7 = 7, //!< No additional details |
| }; |
| |
| //! \brief R5X_COEFFICIENT |
| //! \details |
| //! IEF smoothing coefficient, <i>see IEF map.</i> |
| enum R5X_COEFFICIENT |
| { |
| R5X_COEFFICIENT_UNNAMED7 = 7, //!< No additional details |
| }; |
| |
| //! \brief R5CX_COEFFICIENT |
| //! \details |
| //! IEF smoothing coefficient, <i>see IEF map.</i> |
| enum R5CX_COEFFICIENT |
| { |
| R5CX_COEFFICIENT_UNNAMED7 = 7, //!< No additional details |
| }; |
| |
| //! \brief R5C_COEFFICIENT |
| //! \details |
| //! IEF smoothing coefficient, <i>see IEF map.</i> |
| enum R5C_COEFFICIENT |
| { |
| R5C_COEFFICIENT_UNNAMED7 = 7, //!< No additional details |
| }; |
| |
| //! \brief SAT_MAX |
| //! \details |
| //! Rectangle half length. |
| enum SAT_MAX |
| { |
| SAT_MAX_UNNAMED31 = 31, //!< No additional details |
| }; |
| |
| //! \brief HUE_MAX |
| //! \details |
| //! Rectangle half width. |
| enum HUE_MAX |
| { |
| HUE_MAX_UNNAMED1_4 = 14, //!< No additional details |
| }; |
| |
| enum DIAMOND_MARGIN |
| { |
| DIAMOND_MARGIN_UNNAMED_4 = 4, //!< No additional details |
| }; |
| |
| //! \brief U_MID |
| //! \details |
| //! Rectangle middle-point U coordinate. |
| enum U_MID |
| { |
| U_MID_UNNAMED110 = 110, //!< No additional details |
| }; |
| |
| //! \brief V_MID |
| //! \details |
| //! Rectangle middle-point V coordinate. |
| enum V_MID |
| { |
| V_MID_UNNAMED15_4 = 154, //!< No additional details |
| }; |
| |
| //! \brief DIAMOND_DV |
| //! \details |
| //! Rhombus center shift in the hue-direction, relative to the rectangle |
| //! center. |
| enum DIAMOND_DV |
| { |
| DIAMOND_DV_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief DIAMOND_TH |
| //! \details |
| //! Half length of the rhombus axis in the sat-direction. |
| enum DIAMOND_TH |
| { |
| DIAMOND_TH_UNNAMED35 = 35, //!< No additional details |
| }; |
| |
| //! \brief HS_MARGIN |
| //! \details |
| //! Defines rectangle margin. |
| enum HS_MARGIN |
| { |
| HS_MARGIN_UNNAMED3 = 3, //!< No additional details |
| }; |
| |
| //! \brief DIAMOND_DU |
| //! \details |
| //! Rhombus center shift in the sat-direction, relative to the rectangle |
| //! center. |
| enum DIAMOND_DU |
| { |
| DIAMOND_DU_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief SKIN_DETAIL_FACTOR |
| //! \details |
| //! This flag bit is in operation only when one of the following conditions |
| //! exists: |
| //! <ul> |
| //! <li>when the control bit <b>SkinToneTunedIEF_Enable</b> is on. |
| //! </li> |
| //! <Li>When <b>SkinDetailFactor</b> is equal to 0, |
| //! sign(<b>SkinDetailFactor</b>) is equal to +1, and the content of the |
| //! detected skin tone area is detail revealed.</Li> |
| //! <li>When <b>SkinDetailFactor</b> is equal to 1, |
| //! sign(<b>SkinDetailFactor</b>) is equal to -1, and the content of the |
| //! detected skin tone area is not detail revealed.</li> |
| //! </ul> |
| enum SKIN_DETAIL_FACTOR |
| { |
| SKIN_DETAIL_FACTOR_DETAILREVEALED = 0, //!< No additional details |
| SKIN_DETAIL_FACTOR_NOTDETAILREVEALED = 1, //!< No additional details |
| }; |
| |
| //! \brief Y_POINT_1 |
| //! \details |
| //! First point of the Y piecewise linear membership function. |
| enum Y_POINT_1 |
| { |
| Y_POINT_1_UNNAMED_46 = 46, //!< No additional details |
| }; |
| |
| //! \brief Y_POINT_2 |
| //! \details |
| //! Second point of the Y piecewise linear membership function. |
| enum Y_POINT_2 |
| { |
| Y_POINT_2_UNNAMED_47 = 47, //!< No additional details |
| }; |
| |
| //! \brief Y_POINT_3 |
| //! \details |
| //! Third point of the Y piecewise linear membership function. |
| enum Y_POINT_3 |
| { |
| Y_POINT_3_UNNAMED25_4 = 254, //!< No additional details |
| }; |
| |
| //! \brief Y_POINT_4 |
| //! \details |
| //! Fourth point of the Y piecewise linear membership function. |
| enum Y_POINT_4 |
| { |
| Y_POINT_4_UNNAMED255 = 255, //!< No additional details |
| }; |
| |
| //! \brief P0L |
| //! \details |
| //! Y Point 0 of the lower part of the detection PWLF. |
| enum P0L |
| { |
| P0L_UNNAMED_46 = 46, //!< No additional details |
| }; |
| |
| //! \brief P1L |
| //! \details |
| //! Y Point 1 of the lower part of the detection PWLF. |
| enum P1L |
| { |
| P1L_UNNAMED216 = 216, //!< No additional details |
| }; |
| |
| //! \brief P2L |
| //! \details |
| //! Y Point 2 of the lower part of the detection PWLF. |
| enum P2L |
| { |
| P2L_UNNAMED236 = 236, //!< No additional details |
| }; |
| |
| //! \brief P3L |
| //! \details |
| //! Y Point 3 of the lower part of the detection PWLF. |
| enum P3L |
| { |
| P3L_UNNAMED236 = 236, //!< No additional details |
| }; |
| |
| //! \brief B0L |
| //! \details |
| //! V Bias 0 of the lower part of the detection PWLF. |
| enum B0L |
| { |
| B0L_UNNAMED133 = 133, //!< No additional details |
| }; |
| |
| //! \brief B1L |
| //! \details |
| //! V Bias 1 of the lower part of the detection PWLF. |
| enum B1L |
| { |
| B1L_UNNAMED130 = 130, //!< No additional details |
| }; |
| |
| //! \brief B2L |
| //! \details |
| //! V Bias 2 of the lower part of the detection PWLF. |
| enum B2L |
| { |
| B2L_UNNAMED130 = 130, //!< No additional details |
| }; |
| |
| //! \brief B3L |
| //! \details |
| //! V Bias 3 of the lower part of the detection PWLF. |
| enum B3L |
| { |
| B3L_UNNAMED130 = 130, //!< No additional details |
| }; |
| |
| //! \brief P0U |
| //! \details |
| //! Y Point 0 of the upper part of the detection PWLF. |
| enum P0U |
| { |
| P0U_UNNAMED_46 = 46, //!< No additional details |
| }; |
| |
| //! \brief P1U |
| //! \details |
| //! Y Point 1 of the upper part of the detection PWLF. |
| enum P1U |
| { |
| P1U_UNNAMED66 = 66, //!< No additional details |
| }; |
| |
| //! \brief P2U |
| //! \details |
| //! Y Point 2 of the upper part of the detection PWLF. |
| enum P2U |
| { |
| P2U_UNNAMED150 = 150, //!< No additional details |
| }; |
| |
| //! \brief P3U |
| //! \details |
| //! Y Point 3 of the upper part of the detection PWLF. |
| enum P3U |
| { |
| P3U_UNNAMED236 = 236, //!< No additional details |
| }; |
| |
| //! \brief B0U |
| //! \details |
| //! V Bias 0 of the upper part of the detection PWLF. |
| enum B0U |
| { |
| B0U_UNNAMED1_43 = 143, //!< No additional details |
| }; |
| |
| //! \brief B1U |
| //! \details |
| //! V Bias 1 of the upper part of the detection PWLF. |
| enum B1U |
| { |
| B1U_UNNAMED163 = 163, //!< No additional details |
| }; |
| |
| //! \brief B2U |
| //! \details |
| //! V Bias 2 of the upper part of the detection PWLF. |
| enum B2U |
| { |
| B2U_UNNAMED200 = 200, //!< No additional details |
| }; |
| |
| //! \brief B3U |
| //! \details |
| //! V Bias 3 of the upper part of the detection PWLF. |
| enum B3U |
| { |
| B3U_UNNAMED1_40 = 140, //!< No additional details |
| }; |
| |
| //! \brief C0 |
| //! \details |
| //! Transform coefficient |
| enum C0 |
| { |
| C0_UNNAMED102_4 = 1024, //!< No additional details |
| }; |
| |
| //! \brief C1 |
| //! \details |
| //! Transform coefficient |
| enum C1 |
| { |
| C1_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief C2 |
| //! \details |
| //! Transform coefficient |
| enum C2 |
| { |
| C2_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief C3 |
| //! \details |
| //! Transform coefficient |
| enum C3 |
| { |
| C3_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief C4 |
| //! \details |
| //! Transform coefficient |
| enum C4 |
| { |
| C4_UNNAMED102_4 = 1024, //!< No additional details |
| }; |
| |
| //! \brief C5 |
| //! \details |
| //! Transform coefficient |
| enum C5 |
| { |
| C5_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief C6 |
| //! \details |
| //! Transform coefficient |
| enum C6 |
| { |
| C6_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief C7 |
| //! \details |
| //! Transform coefficient |
| enum C7 |
| { |
| C7_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief C8 |
| //! \details |
| //! Transform coefficient |
| enum C8 |
| { |
| C8_UNNAMED102_4 = 1024, //!< No additional details |
| }; |
| |
| //! \brief OFFSET_IN_1 |
| //! \details |
| //! Offset in for Y/R. |
| enum OFFSET_IN_1 |
| { |
| OFFSET_IN_1_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief OFFSET_OUT_1 |
| //! \details |
| //! Offset out for Y/R. |
| enum OFFSET_OUT_1 |
| { |
| OFFSET_OUT_1_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief OFFSET_IN_2 |
| //! \details |
| //! Offset in for U/G. |
| enum OFFSET_IN_2 |
| { |
| OFFSET_IN_2_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief OFFSET_OUT_2 |
| //! \details |
| //! Offset out for U/G. |
| enum OFFSET_OUT_2 |
| { |
| OFFSET_OUT_2_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief OFFSET_IN_3 |
| //! \details |
| //! Offset in for V/B. |
| enum OFFSET_IN_3 |
| { |
| OFFSET_IN_3_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief OFFSET_OUT_3 |
| //! \details |
| //! Offset out for V/B. |
| enum OFFSET_OUT_3 |
| { |
| OFFSET_OUT_3_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \name Initializations |
| |
| //! \brief Explicit member initialization function |
| SFC_IEF_STATE_CMD(); |
| |
| static const size_t dwSize = 24; |
| static const size_t byteSize = 96; |
| }; |
| |
| //! |
| //! \brief SFC_FRAME_START |
| //! \details |
| //! This command is sent from VDBOX/VEBOX to SFC pipeline at the start of |
| //! each frame once the lock request is granted. |
| //! |
| struct SFC_FRAME_START_CMD |
| { |
| union |
| { |
| //!< DWORD 0 |
| struct |
| { |
| uint32_t DwordLength : __CODEGEN_BITFIELD( 0, 11) ; //!< DWORD_LENGTH |
| uint32_t Reserved12 : __CODEGEN_BITFIELD(12, 15) ; //!< Reserved |
| uint32_t Subopcodeb : __CODEGEN_BITFIELD(16, 20) ; //!< SUBOPCODEB |
| uint32_t Subopcodea : __CODEGEN_BITFIELD(21, 22) ; //!< SUBOPCODEA |
| uint32_t MediaCommandOpcode : __CODEGEN_BITFIELD(23, 26) ; //!< MEDIA_COMMAND_OPCODE |
| uint32_t Pipeline : __CODEGEN_BITFIELD(27, 28) ; //!< PIPELINE |
| uint32_t CommandType : __CODEGEN_BITFIELD(29, 31) ; //!< COMMAND_TYPE |
| }; |
| uint32_t Value; |
| } DW0; |
| union |
| { |
| //!< DWORD 1 |
| struct |
| { |
| uint32_t Reserved32 ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW1; |
| |
| //! \name Local enumerations |
| |
| enum SUBOPCODEB |
| { |
| SUBOPCODEB_SFCFRAMESTART = 4, //!< No additional details |
| }; |
| |
| enum SUBOPCODEA |
| { |
| SUBOPCODEA_COMMON = 0, //!< No additional details |
| }; |
| |
| enum MEDIA_COMMAND_OPCODE |
| { |
| MEDIA_COMMAND_OPCODE_MEDIAMISC = 10, //!< No additional details |
| }; |
| |
| enum PIPELINE |
| { |
| PIPELINE_MEDIA = 2, //!< No additional details |
| }; |
| |
| enum COMMAND_TYPE |
| { |
| COMMAND_TYPE_PARALLELVIDEOPIPE = 3, //!< No additional details |
| }; |
| |
| //! \name Initializations |
| |
| //! \brief Explicit member initialization function |
| SFC_FRAME_START_CMD(); |
| |
| static const size_t dwSize = 2; |
| static const size_t byteSize = 8; |
| }; |
| |
| //! |
| //! \brief SFC_LOCK |
| //! \details |
| //! |
| //! |
| struct SFC_LOCK_CMD |
| { |
| union |
| { |
| //!< DWORD 0 |
| struct |
| { |
| uint32_t DwordLength : __CODEGEN_BITFIELD( 0, 11) ; //!< DWORD_LENGTH |
| uint32_t Reserved12 : __CODEGEN_BITFIELD(12, 15) ; //!< Reserved |
| uint32_t Subopcodeb : __CODEGEN_BITFIELD(16, 20) ; //!< SUBOPCODEB |
| uint32_t Subopcodea : __CODEGEN_BITFIELD(21, 22) ; //!< SUBOPCODEA |
| uint32_t MediaCommandOpcode : __CODEGEN_BITFIELD(23, 26) ; //!< MEDIA_COMMAND_OPCODE |
| uint32_t Pipeline : __CODEGEN_BITFIELD(27, 28) ; //!< PIPELINE |
| uint32_t CommandType : __CODEGEN_BITFIELD(29, 31) ; //!< COMMAND_TYPE |
| }; |
| uint32_t Value; |
| } DW0; |
| union |
| { |
| //!< DWORD 1 |
| struct |
| { |
| uint32_t VeSfcPipeSelect : __CODEGEN_BITFIELD( 0, 0) ; //!< VE-SFC Pipe Select |
| uint32_t PreScaledOutputSurfaceOutputEnable : __CODEGEN_BITFIELD( 1, 1) ; //!< Pre-Scaled Output Surface Output Enable |
| uint32_t Reserved34 : __CODEGEN_BITFIELD( 2, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW1; |
| |
| //! \name Local enumerations |
| |
| enum SUBOPCODEB |
| { |
| SUBOPCODEB_SFCLOCK = 0, //!< No additional details |
| }; |
| |
| enum SUBOPCODEA |
| { |
| SUBOPCODEA_COMMON = 0, //!< No additional details |
| }; |
| |
| enum MEDIA_COMMAND_OPCODE |
| { |
| MEDIA_COMMAND_OPCODE_MEDIAMISC = 10, //!< No additional details |
| }; |
| |
| enum PIPELINE |
| { |
| PIPELINE_MEDIA = 2, //!< No additional details |
| }; |
| |
| enum COMMAND_TYPE |
| { |
| COMMAND_TYPE_PARALLELVIDEOPIPE = 3, //!< No additional details |
| }; |
| |
| //! \name Initializations |
| |
| //! \brief Explicit member initialization function |
| SFC_LOCK_CMD(); |
| |
| static const size_t dwSize = 2; |
| static const size_t byteSize = 8; |
| }; |
| |
| //! |
| //! \brief SFC_STATE |
| //! \details |
| //! This command is sent from VDBOX/VEBOX to SFC pipeline at the start of |
| //! each frame once the lock request is granted. |
| //! |
| struct SFC_STATE_CMD |
| { |
| union |
| { |
| //!< DWORD 0 |
| struct |
| { |
| uint32_t DwordLength : __CODEGEN_BITFIELD( 0, 11) ; //!< DWORD_LENGTH |
| uint32_t Reserved12 : __CODEGEN_BITFIELD(12, 15) ; //!< Reserved |
| uint32_t Subopcodeb : __CODEGEN_BITFIELD(16, 20) ; //!< SUBOPCODEB |
| uint32_t Subopcodea : __CODEGEN_BITFIELD(21, 22) ; //!< SUBOPCODEA |
| uint32_t MediaCommandOpcode : __CODEGEN_BITFIELD(23, 26) ; //!< MEDIA_COMMAND_OPCODE |
| uint32_t Pipeline : __CODEGEN_BITFIELD(27, 28) ; //!< PIPELINE |
| uint32_t CommandType : __CODEGEN_BITFIELD(29, 31) ; //!< COMMAND_TYPE |
| }; |
| uint32_t Value; |
| } DW0; |
| union |
| { |
| //!< DWORD 1 |
| struct |
| { |
| uint32_t SfcPipeMode : __CODEGEN_BITFIELD( 0, 3) ; //!< SFC_PIPE_MODE |
| uint32_t SfcInputChromaSubSampling : __CODEGEN_BITFIELD( 4, 7) ; //!< SFC_INPUT_CHROMA_SUB_SAMPLING |
| uint32_t VdVeInputOrderingMode : __CODEGEN_BITFIELD( 8, 10) ; //!< VDVE_INPUT_ORDERING_MODE |
| uint32_t Reserved43 : __CODEGEN_BITFIELD(11, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW1; |
| union |
| { |
| //!< DWORD 2 |
| struct |
| { |
| uint32_t InputFrameResolutionWidth : __CODEGEN_BITFIELD( 0, 11) ; //!< Input Frame Resolution Width |
| uint32_t Reserved76 : __CODEGEN_BITFIELD(12, 15) ; //!< Reserved |
| uint32_t InputFrameResolutionHeight : __CODEGEN_BITFIELD(16, 27) ; //!< Input Frame Resolution Height |
| uint32_t Reserved92 : __CODEGEN_BITFIELD(28, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW2; |
| union |
| { |
| //!< DWORD 3 |
| struct |
| { |
| uint32_t OutputSurfaceFormatType : __CODEGEN_BITFIELD( 0, 3) ; //!< OUTPUT_SURFACE_FORMAT_TYPE |
| uint32_t Reserved100 : __CODEGEN_BITFIELD( 4, 4) ; //!< Reserved |
| uint32_t RgbaChannelSwapEnable : __CODEGEN_BITFIELD( 5, 5) ; //!< RGBA_CHANNEL_SWAP_ENABLE |
| uint32_t PreAvsChromaDownsamplingEnable : __CODEGEN_BITFIELD( 6, 7) ; //!< Pre- AVS Chroma Downsampling Enable |
| uint32_t PreAvsChromaDownsamplingCoSitingPositionVerticalDirection : __CODEGEN_BITFIELD( 8, 10) ; //!< Pre-AVS Chroma Downsampling co-siting position Vertical Direction |
| uint32_t Reserved107 : __CODEGEN_BITFIELD(11, 11) ; //!< Reserved |
| uint32_t PreAvsChromaDownsamplingCoSitingPositionHorizontalDirection : __CODEGEN_BITFIELD(12, 14) ; //!< Pre-AVS Chroma Downsampling co-siting position Horizontal Direction |
| uint32_t Reserved111 : __CODEGEN_BITFIELD(15, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW3; |
| union |
| { |
| //!< DWORD 4 |
| struct |
| { |
| uint32_t IefEnable : __CODEGEN_BITFIELD( 0, 0) ; //!< IEF_ENABLE |
| uint32_t SkinToneTunedIefEnable : __CODEGEN_BITFIELD( 1, 1) ; //!< Skin Tone Tuned IEF_Enable |
| uint32_t Ief4SmoothEnable : __CODEGEN_BITFIELD( 2, 2) ; //!< IEF4SMOOTH_ENABLE_ |
| uint32_t Reserved131 : __CODEGEN_BITFIELD( 3, 3) ; //!< Reserved |
| uint32_t AvsFilterMode : __CODEGEN_BITFIELD( 4, 5) ; //!< AVS_FILTER_MODE |
| uint32_t AdaptiveFilterForAllChannels : __CODEGEN_BITFIELD( 6, 6) ; //!< ADAPTIVE_FILTER_FOR_ALL_CHANNELS |
| uint32_t AvsScalingEnable : __CODEGEN_BITFIELD( 7, 7) ; //!< AVS_SCALING_ENABLE |
| uint32_t BypassYAdaptiveFiltering : __CODEGEN_BITFIELD( 8, 8) ; //!< BYPASS_Y_ADAPTIVE_FILTERING |
| uint32_t BypassXAdaptiveFiltering : __CODEGEN_BITFIELD( 9, 9) ; //!< BYPASS_X_ADAPTIVE_FILTERING |
| uint32_t Reserved138 : __CODEGEN_BITFIELD(10, 11) ; //!< Reserved |
| uint32_t ChromaUpsamplingEnable : __CODEGEN_BITFIELD(12, 12) ; //!< Chroma Upsampling Enable |
| uint32_t Reserved141 : __CODEGEN_BITFIELD(13, 15) ; //!< Reserved |
| uint32_t RotationMode : __CODEGEN_BITFIELD(16, 17) ; //!< ROTATION_MODE |
| uint32_t ColorFillEnable : __CODEGEN_BITFIELD(18, 18) ; //!< Color Fill Enable |
| uint32_t CscEnable : __CODEGEN_BITFIELD(19, 19) ; //!< CSC Enable |
| uint32_t Reserved148 : __CODEGEN_BITFIELD(20, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW4; |
| union |
| { |
| //!< DWORD 5 |
| struct |
| { |
| uint32_t SourceRegionWidth : __CODEGEN_BITFIELD( 0, 11) ; //!< Source Region Width |
| uint32_t Reserved172 : __CODEGEN_BITFIELD(12, 15) ; //!< Reserved |
| uint32_t SourceRegionHeight : __CODEGEN_BITFIELD(16, 27) ; //!< Source Region Height |
| uint32_t Reserved188 : __CODEGEN_BITFIELD(28, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW5; |
| union |
| { |
| //!< DWORD 6 |
| struct |
| { |
| uint32_t SourceRegionHorizontalOffset : __CODEGEN_BITFIELD( 0, 11) ; //!< Source Region Horizontal Offset |
| uint32_t Reserved204 : __CODEGEN_BITFIELD(12, 15) ; //!< Reserved |
| uint32_t SourceRegionVerticalOffset : __CODEGEN_BITFIELD(16, 27) ; //!< Source Region Vertical Offset |
| uint32_t Reserved220 : __CODEGEN_BITFIELD(28, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW6; |
| union |
| { |
| //!< DWORD 7 |
| struct |
| { |
| uint32_t OutputFrameWidth : __CODEGEN_BITFIELD( 0, 11) ; //!< Output Frame Width |
| uint32_t Reserved236 : __CODEGEN_BITFIELD(12, 15) ; //!< Reserved |
| uint32_t OutputFrameHeight : __CODEGEN_BITFIELD(16, 27) ; //!< Output Frame Height |
| uint32_t Reserved252 : __CODEGEN_BITFIELD(28, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW7; |
| union |
| { |
| //!< DWORD 8 |
| struct |
| { |
| uint32_t ScaledRegionSizeWidth : __CODEGEN_BITFIELD( 0, 11) ; //!< Scaled Region Size Width |
| uint32_t Reserved268 : __CODEGEN_BITFIELD(12, 15) ; //!< Reserved |
| uint32_t ScaledRegionSizeHeight : __CODEGEN_BITFIELD(16, 27) ; //!< Scaled Region Size Height |
| uint32_t Reserved284 : __CODEGEN_BITFIELD(28, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW8; |
| union |
| { |
| //!< DWORD 9 |
| struct |
| { |
| uint32_t ScaledRegionHorizontalOffset : __CODEGEN_BITFIELD( 0, 12) ; //!< Scaled Region Horizontal Offset |
| uint32_t Reserved301 : __CODEGEN_BITFIELD(13, 15) ; //!< Reserved |
| uint32_t ScaledRegionVerticalOffset : __CODEGEN_BITFIELD(16, 28) ; //!< Scaled Region Vertical Offset |
| uint32_t Reserved317 : __CODEGEN_BITFIELD(29, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW9; |
| union |
| { |
| //!< DWORD 10 |
| struct |
| { |
| uint32_t GrayBarPixelUG : __CODEGEN_BITFIELD( 0, 9) ; //!< Gray Bar Pixel - U/G |
| uint32_t Reserved330 : __CODEGEN_BITFIELD(10, 15) ; //!< Reserved |
| uint32_t GrayBarPixelYR : __CODEGEN_BITFIELD(16, 25) ; //!< Gray Bar Pixel - Y/R |
| uint32_t Reserved346 : __CODEGEN_BITFIELD(26, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW10; |
| union |
| { |
| //!< DWORD 11 |
| struct |
| { |
| uint32_t GrayBarPixelA : __CODEGEN_BITFIELD( 0, 9) ; //!< Gray Bar Pixel - A |
| uint32_t Reserved362 : __CODEGEN_BITFIELD(10, 15) ; //!< Reserved |
| uint32_t GrayBarPixelVB : __CODEGEN_BITFIELD(16, 25) ; //!< Gray Bar Pixel - V/B |
| uint32_t Reserved378 : __CODEGEN_BITFIELD(26, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW11; |
| union |
| { |
| //!< DWORD 12 |
| struct |
| { |
| uint32_t UvDefaultValueForUChannelForMonoInputSupport : __CODEGEN_BITFIELD( 0, 9) ; //!< UV Default value for U channel (For Mono Input Support) |
| uint32_t Reserved394 : __CODEGEN_BITFIELD(10, 15) ; //!< Reserved |
| uint32_t UvDefaultValueForVChannelForMonoInputSupport : __CODEGEN_BITFIELD(16, 25) ; //!< UV Default value for V channel (For Mono Input Support) |
| uint32_t Reserved410 : __CODEGEN_BITFIELD(26, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW12; |
| union |
| { |
| //!< DWORD 13 |
| struct |
| { |
| uint32_t AlphaDefaultValue : __CODEGEN_BITFIELD( 0, 9) ; //!< Alpha Default Value |
| uint32_t Reserved426 : __CODEGEN_BITFIELD(10, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW13; |
| union |
| { |
| //!< DWORD 14 |
| struct |
| { |
| uint32_t ScalingFactorHeight : __CODEGEN_BITFIELD( 0, 20) ; //!< SCALING_FACTOR_HEIGHT |
| uint32_t Reserved469 : __CODEGEN_BITFIELD(21, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW14; |
| union |
| { |
| //!< DWORD 15 |
| struct |
| { |
| uint32_t ScalingFactorWidth : __CODEGEN_BITFIELD( 0, 20) ; //!< SCALING_FACTOR_WIDTH |
| uint32_t Reserved501 : __CODEGEN_BITFIELD(21, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW15; |
| union |
| { |
| //!< DWORD 16 |
| struct |
| { |
| uint32_t Reserved512 ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW16; |
| union |
| { |
| //!< DWORD 17 |
| struct |
| { |
| uint32_t Reserved544 : __CODEGEN_BITFIELD( 0, 11) ; //!< Reserved |
| uint32_t OutputFrameSurfaceBaseAddress : __CODEGEN_BITFIELD(12, 31) ; //!< Output Frame Surface Base Address |
| }; |
| uint32_t Value; |
| } DW17; |
| union |
| { |
| //!< DWORD 18 |
| struct |
| { |
| uint32_t OutputFrameSurfaceBaseAddressHigh : __CODEGEN_BITFIELD( 0, 15) ; //!< Output Frame Surface Base Address High |
| uint32_t Reserved592 : __CODEGEN_BITFIELD(16, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW18; |
| union |
| { |
| //!< DWORD 19 |
| struct |
| { |
| uint32_t Reserved608 : __CODEGEN_BITFIELD( 0, 0) ; //!< Reserved |
| uint32_t OutputFrameSurfaceBaseAddressIndexToMemoryObjectControlStateMocsTables : __CODEGEN_BITFIELD( 1, 6) ; //!< Output Frame Surface Base Address - Index to Memory Object Control State (MOCS) Tables |
| uint32_t OutputFrameSurfaceBaseAddressArbitrationPriorityControl : __CODEGEN_BITFIELD( 7, 8) ; //!< Output Frame Surface Base Address - Arbitration Priority Control |
| uint32_t OutputFrameSurfaceBaseAddressMemoryCompressionEnable : __CODEGEN_BITFIELD( 9, 9) ; //!< Output Frame Surface Base Address - Memory Compression Enable |
| uint32_t OutputFrameSurfaceBaseAddressMemoryCompressionMode : __CODEGEN_BITFIELD(10, 10) ; //!< OUTPUT_FRAME_SURFACE_BASE_ADDRESS__MEMORY_COMPRESSION_MODE |
| uint32_t Reserved619 : __CODEGEN_BITFIELD(11, 11) ; //!< Reserved |
| uint32_t OutputFrameSurfaceBaseAddressRowStoreScratchBufferCacheSelect : __CODEGEN_BITFIELD(12, 12) ; //!< OUTPUT_FRAME_SURFACE_BASE_ADDRESS__ROW_STORE_SCRATCH_BUFFER_CACHE_SELECT |
| uint32_t OutputSurfaceTiledMode : __CODEGEN_BITFIELD(13, 14) ; //!< OUTPUT_SURFACE_TILED_MODE |
| uint32_t Reserved623 : __CODEGEN_BITFIELD(15, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW19; |
| union |
| { |
| //!< DWORD 20 |
| struct |
| { |
| uint32_t Reserved640 : __CODEGEN_BITFIELD( 0, 11) ; //!< Reserved |
| uint32_t AvsLineBufferSurfaceBaseAddress : __CODEGEN_BITFIELD(12, 31) ; //!< AVS Line Buffer Surface Base Address |
| }; |
| uint32_t Value; |
| } DW20; |
| union |
| { |
| //!< DWORD 21 |
| struct |
| { |
| uint32_t AvsLineBufferSurfaceBaseAddressHigh : __CODEGEN_BITFIELD( 0, 15) ; //!< AVS Line Buffer Surface Base Address High |
| uint32_t Reserved688 : __CODEGEN_BITFIELD(16, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW21; |
| union |
| { |
| //!< DWORD 22 |
| struct |
| { |
| uint32_t Reserved704 : __CODEGEN_BITFIELD( 0, 0) ; //!< Reserved |
| uint32_t AvsLineBufferBaseAddressIndexToMemoryObjectControlStateMocsTables : __CODEGEN_BITFIELD( 1, 6) ; //!< AVS Line Buffer Base Address - Index to Memory Object Control State (MOCS) Tables |
| uint32_t AvsLineBufferBaseAddressArbitrationPriorityControl : __CODEGEN_BITFIELD( 7, 8) ; //!< AVS Line Buffer Base Address - Arbitration Priority Control |
| uint32_t AvsLineBufferBaseAddressMemoryCompressionEnable : __CODEGEN_BITFIELD( 9, 9) ; //!< AVS_LINE_BUFFER_BASE_ADDRESS__MEMORY_COMPRESSION_ENABLE |
| uint32_t AvsLineBufferBaseAddressMemoryCompressionMode : __CODEGEN_BITFIELD(10, 10) ; //!< AVS_LINE_BUFFER_BASE_ADDRESS__MEMORY_COMPRESSION_MODE |
| uint32_t Reserved715 : __CODEGEN_BITFIELD(11, 11) ; //!< Reserved |
| uint32_t AvsLineBufferBaseAddressRowStoreScratchBufferCacheSelect : __CODEGEN_BITFIELD(12, 12) ; //!< AVS_LINE_BUFFER_BASE_ADDRESS__ROW_STORE_SCRATCH_BUFFER_CACHE_SELECT |
| uint32_t AvsLineBufferTiledMode : __CODEGEN_BITFIELD(13, 14) ; //!< AVS_LINE_BUFFER_TILED_MODE |
| uint32_t Reserved719 : __CODEGEN_BITFIELD(15, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW22; |
| union |
| { |
| //!< DWORD 23 |
| struct |
| { |
| uint32_t Reserved736 : __CODEGEN_BITFIELD( 0, 11) ; //!< Reserved |
| uint32_t IefLineBufferSurfaceBaseAddress : __CODEGEN_BITFIELD(12, 31) ; //!< IEF Line Buffer Surface Base Address |
| }; |
| uint32_t Value; |
| } DW23; |
| union |
| { |
| //!< DWORD 24 |
| struct |
| { |
| uint32_t IefLineBufferSurfaceBaseAddressHigh : __CODEGEN_BITFIELD( 0, 15) ; //!< IEF Line Buffer Surface Base Address High |
| uint32_t Reserved784 : __CODEGEN_BITFIELD(16, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW24; |
| union |
| { |
| //!< DWORD 25 |
| struct |
| { |
| uint32_t Reserved800 : __CODEGEN_BITFIELD( 0, 0) ; //!< Reserved |
| uint32_t IefLineBufferBaseAddressIndexToMemoryObjectControlStateMocsTables : __CODEGEN_BITFIELD( 1, 6) ; //!< IEF Line Buffer Base Address - Index to Memory Object Control State (MOCS) Tables |
| uint32_t IefLineBufferBaseAddressArbitrationPriorityControl : __CODEGEN_BITFIELD( 7, 8) ; //!< IEF Line Buffer Base Address - Arbitration Priority Control |
| uint32_t IefLineBufferBaseAddressMemoryCompressionEnable : __CODEGEN_BITFIELD( 9, 9) ; //!< IEF_LINE_BUFFER_BASE_ADDRESS__MEMORY_COMPRESSION_ENABLE |
| uint32_t IefLineBufferBaseAddressMemoryCompressionMode : __CODEGEN_BITFIELD(10, 10) ; //!< IEF_LINE_BUFFER_BASE_ADDRESS__MEMORY_COMPRESSION_MODE |
| uint32_t Reserved811 : __CODEGEN_BITFIELD(11, 11) ; //!< Reserved |
| uint32_t IefLineBufferBaseAddressRowStoreScratchBufferCacheSelect : __CODEGEN_BITFIELD(12, 12) ; //!< IEF_LINE_BUFFER_BASE_ADDRESS__ROW_STORE_SCRATCH_BUFFER_CACHE_SELECT |
| uint32_t IefLineBufferTiledMode : __CODEGEN_BITFIELD(13, 14) ; //!< IEF_LINE_BUFFER_TILED_MODE |
| uint32_t Reserved815 : __CODEGEN_BITFIELD(15, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW25; |
| union |
| { |
| //!< DWORD 26 |
| struct |
| { |
| uint32_t Reserved832 ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW26; |
| union |
| { |
| //!< DWORD 27 |
| struct |
| { |
| uint32_t Reserved864 ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW27; |
| union |
| { |
| //!< DWORD 28 |
| struct |
| { |
| uint32_t Reserved896 ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW28; |
| union |
| { |
| //!< DWORD 29 |
| struct |
| { |
| uint32_t OutputSurfaceTileWalk : __CODEGEN_BITFIELD( 0, 0) ; //!< OUTPUT_SURFACE_TILE_WALK |
| uint32_t OutputSurfaceTiled : __CODEGEN_BITFIELD( 1, 1) ; //!< OUTPUT_SURFACE_TILED |
| uint32_t OutputSurfaceHalfPitchForChroma : __CODEGEN_BITFIELD( 2, 2) ; //!< Output Surface Half Pitch For Chroma |
| uint32_t OutputSurfacePitch : __CODEGEN_BITFIELD( 3, 19) ; //!< Output Surface Pitch |
| uint32_t Reserved948 : __CODEGEN_BITFIELD(20, 26) ; //!< Reserved |
| uint32_t OutputSurfaceInterleaveChromaEnable : __CODEGEN_BITFIELD(27, 27) ; //!< Output Surface Interleave Chroma Enable |
| uint32_t OutputSurfaceFormat : __CODEGEN_BITFIELD(28, 31) ; //!< Output Surface Format |
| }; |
| uint32_t Value; |
| } DW29; |
| union |
| { |
| //!< DWORD 30 |
| struct |
| { |
| uint32_t OutputSurfaceYOffsetForU : __CODEGEN_BITFIELD( 0, 13) ; //!< Output Surface Y Offset For U |
| uint32_t Reserved974 : __CODEGEN_BITFIELD(14, 15) ; //!< Reserved |
| uint32_t OutputSurfaceXOffsetForU : __CODEGEN_BITFIELD(16, 29) ; //!< Output Surface X Offset For U |
| uint32_t Reserved990 : __CODEGEN_BITFIELD(30, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW30; |
| union |
| { |
| //!< DWORD 31 |
| struct |
| { |
| uint32_t OutputSurfaceYOffsetForV : __CODEGEN_BITFIELD( 0, 13) ; //!< Output Surface Y Offset For V |
| uint32_t Reserved1006 : __CODEGEN_BITFIELD(14, 15) ; //!< Reserved |
| uint32_t OutputSurfaceXOffsetForV : __CODEGEN_BITFIELD(16, 29) ; //!< Output Surface X Offset For V |
| uint32_t Reserved1022 : __CODEGEN_BITFIELD(30, 31) ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW31; |
| union |
| { |
| //!< DWORD 32 |
| struct |
| { |
| uint32_t Reserved1024 ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW32; |
| union |
| { |
| //!< DWORD 33 |
| struct |
| { |
| uint32_t Reserved1056 ; //!< Reserved |
| }; |
| uint32_t Value; |
| } DW33; |
| |
| //! \name Local enumerations |
| |
| enum SUBOPCODEB |
| { |
| SUBOPCODEB_SFCSTATE = 1, //!< No additional details |
| }; |
| |
| enum SUBOPCODEA |
| { |
| SUBOPCODEA_COMMON = 0, //!< No additional details |
| }; |
| |
| enum MEDIA_COMMAND_OPCODE |
| { |
| MEDIA_COMMAND_OPCODE_MEDIAMISC = 10, //!< No additional details |
| }; |
| |
| enum PIPELINE |
| { |
| PIPELINE_MEDIA = 2, //!< No additional details |
| }; |
| |
| enum COMMAND_TYPE |
| { |
| COMMAND_TYPE_PARALLELVIDEOPIPE = 3, //!< No additional details |
| }; |
| |
| //! \brief SFC_PIPE_MODE |
| //! \details |
| //! Note: for SFC Pipe mode set to VE-to-SFC AVS mode. |
| //! IECP pipeline mode MUST be enabled. |
| //! However, each sub-IECP feature can be turned on/off independently. |
| enum SFC_PIPE_MODE |
| { |
| SFC_PIPE_MODE_UNNAMED0 = 0, //!< VD-to-SFC AVS |
| SFC_PIPE_MODE_UNNAMED1 = 1, //!< VE-to-SFC AVS + IEF + Rotation |
| SFC_PIPE_MODE_UNNAMED_4 = 4, //!< VE-to-SFC Integral Image |
| }; |
| |
| //! \brief SFC_INPUT_CHROMA_SUB_SAMPLING |
| //! \details |
| //! This field shall be programmed according to video modes used in VDBOX. |
| //! NOTE: SFC supports progressive input and output only (Interlaced/MBAFF |
| //! is not supported). |
| //! <table border="1"> |
| //! <tbody> |
| //! <tr> |
| //! <td>Video Mode</td> |
| //! <td>Surface Format</td> |
| //! <td>SFC Input Chroma Sub-Sampling</td> |
| //! <td>VD/VE Input Ordering Mode</td> |
| //! </tr> |
| //! <tr> |
| //! <td>VC1 w/o LF and w/o OS Note: VC1 LF applies for ILDB</td> |
| //! <td>420 (NV12)</td> |
| //! <td>1</td> |
| //! <td>0</td> |
| //! </tr> |
| //! <tr> |
| //! <td>VC1 w/ LF or w/ OS or w/ both Note: VC1 LF applies for ILDB</td> |
| //! <td></td> |
| //! <td>INVALID with SFC</td> |
| //! <td>INVALID with SFC</td> |
| //! </tr> |
| //! <tr> |
| //! <td>AVC w/o LF</td> |
| //! <td>Monochrome</td> |
| //! <td>0</td> |
| //! <td>0</td> |
| //! </tr> |
| //! <tr> |
| //! <td>AVC w/o LF</td> |
| //! <td>420 (NV12)</td> |
| //! <td>1</td> |
| //! <td>0</td> |
| //! </tr> |
| //! <tr> |
| //! <td>AVC with LF</td> |
| //! <td>Monochrome</td> |
| //! <td>0</td> |
| //! <td>1</td> |
| //! </tr> |
| //! <tr> |
| //! <td>AVC/VP8 with LF</td> |
| //! <td>420 (NV12)</td> |
| //! <td>1</td> |
| //! <td>1</td> |
| //! </tr> |
| //! <tr> |
| //! <td>VP8 w/o LF</td> |
| //! <td>420 (NV12)</td> |
| //! <td>1</td> |
| //! <td>4</td> |
| //! </tr> |
| //! <tr> |
| //! <td>JPEG (YUV Interleaved)</td> |
| //! <td>Monochrome</td> |
| //! <td>0</td> |
| //! <td>2</td> |
| //! </tr> |
| //! <tr> |
| //! <td>JPEG (YUV Interleaved)</td> |
| //! <td>420</td> |
| //! <td>1</td> |
| //! <td>3</td> |
| //! </tr> |
| //! <tr> |
| //! <td>JPEG (YUV Interleaved)</td> |
| //! <td>422H_2Y</td> |
| //! <td>2</td> |
| //! <td>2</td> |
| //! </tr> |
| //! <tr> |
| //! <td>JPEG (YUV Interleaved)</td> |
| //! <td>422H_4Y</td> |
| //! <td>2</td> |
| //! <td>3</td> |
| //! </tr> |
| //! <tr> |
| //! <td>JPEG (YUV Interleaved)</td> |
| //! <td>444</td> |
| //! <td>4</td> |
| //! <td>2</td> |
| //! </tr> |
| //! </tbody> |
| //! </table> |
| //! This field shall be programmed according to Image enhancement modes used |
| //! in VEBOX. |
| //! |
| //! <table border="1"> |
| //! <tbody> |
| //! <tr> |
| //! <td>VEBOX MODE</td> |
| //! <td>Surface Format</td> |
| //! <td>SFC Input Chroma Sub Sampling</td> |
| //! <td>VD/VE Input Ordering Mode</td> |
| //! </tr> |
| //! <tr> |
| //! <td>Legacy DN/DI/IECP features</td> |
| //! <td>Monochrome</td> |
| //! <td>0</td> |
| //! <td>0</td> |
| //! </tr> |
| //! <tr> |
| //! <td>Legacy DN/DI/IECP features</td> |
| //! <td>420 (NV12)</td> |
| //! <td>1</td> |
| //! <td>0</td> |
| //! </tr> |
| //! <tr> |
| //! <td>Legacy DN/DI/IECP features</td> |
| //! <td>422H</td> |
| //! <td>2</td> |
| //! <td>0</td> |
| //! </tr> |
| //! <tr> |
| //! <td>Legacy DN/DI/IECP features</td> |
| //! <td>444</td> |
| //! <td>4</td> |
| //! <td>0</td> |
| //! </tr> |
| //! <tr> |
| //! <td>Capture/Camera pipe enabled(Demosaic)</td> |
| //! <td>Monochrome</td> |
| //! <td>0</td> |
| //! <td>1</td> |
| //! </tr> |
| //! <tr> |
| //! <td>Capture/Camera pipe enabled(Demosaic)</td> |
| //! <td>420 (NV12)</td> |
| //! <td>1</td> |
| //! <td>1</td> |
| //! </tr> |
| //! <tr> |
| //! <td>Capture/Camera pipe enabled(Demosaic)</td> |
| //! <td>422H</td> |
| //! <td>2</td> |
| //! <td>1</td> |
| //! </tr> |
| //! <tr> |
| //! <td>Capture/Camera pipe enabled(Demosaic)</td> |
| //! <td>444</td> |
| //! <td>4</td> |
| //! <td>1</td> |
| //! </tr> |
| //! </tbody> |
| //! </table> |
| enum SFC_INPUT_CHROMA_SUB_SAMPLING |
| { |
| SFC_INPUT_CHROMA_SUB_SAMPLING_400 = 0, //!< SFC to insert UV channels |
| SFC_INPUT_CHROMA_SUB_SAMPLING_420 = 1, //!< No additional details |
| SFC_INPUT_CHROMA_SUB_SAMPLING_422HORIZONATAL = 2, //!< VD: 2:1:1 |
| SFC_INPUT_CHROMA_SUB_SAMPLING_4_4_4PROGRESSIVEINTERLEAVED = 4, //!< No additional details |
| }; |
| |
| //! \brief VDVE_INPUT_ORDERING_MODE |
| //! \details |
| //! <ul> |
| //! <li>VD mode: (SFC pipe mode set as "0")</li> |
| //! <li> VE mode: (pipe mode set as "1 and 4")</li> |
| //! </ul> |
| //! For values for each mode, please refer to the table below: |
| enum VDVE_INPUT_ORDERING_MODE |
| { |
| VDVE_INPUT_ORDERING_MODE_UNNAMED0 = 0, //!< 16x16 block z-scan order - no shift |
| //!< 8x4 block column order, 64 pixel column |
| VDVE_INPUT_ORDERING_MODE_UNNAMED1 = 1, //!< 16x16 block z-scan order - 4 pixels shift upward |
| //!< 4x4 block column order, 64 pixel column |
| VDVE_INPUT_ORDERING_MODE_UNNAMED2 = 2, //!< 8x8 block jpeg z-scan order |
| //!< 8x4 block column order, 128 pixel column |
| VDVE_INPUT_ORDERING_MODE_UNNAMED3 = 3, //!< 16x16 block jpeg z-scan order |
| //!< 4x4 block column order, 128 pixel column |
| VDVE_INPUT_ORDERING_MODE_UNNAMED_4 = 4, //!< 16x16 block VP8 row-scan order - no shift |
| }; |
| |
| //! \brief OUTPUT_SURFACE_FORMAT_TYPE |
| //! \details |
| //! SFC output surface format type. |
| enum OUTPUT_SURFACE_FORMAT_TYPE |
| { |
| OUTPUT_SURFACE_FORMAT_TYPE_AYUV = 0, //!< AYUV 4:4:4 (8:8:8:8 MSB-A:Y:U:V) |
| OUTPUT_SURFACE_FORMAT_TYPE_A8B8G8R8 = 1, //!< RGBA8 4:4:4:4 (8:8:8:8 MSB-A:B:G:R) |
| OUTPUT_SURFACE_FORMAT_TYPE_A2R10G10B10 = 2, //!< RGBA10 10:10:10:2 (2:10:10:10 MSB-A:R:G:B) |
| OUTPUT_SURFACE_FORMAT_TYPE_R5G6B5 = 3, //!< RGB 5:6:5 (5:6:5 MSB-R:G:B) |
| OUTPUT_SURFACE_FORMAT_TYPE_NV12 = 4, //!< Planar NV12 4:2:0 8-bit |
| OUTPUT_SURFACE_FORMAT_TYPE_YUYV = 5, //!< Packed YUYV 4:2:2 8-bit |
| OUTPUT_SURFACE_FORMAT_TYPE_UYVY = 6, //!< Packed UYVY 4:2:2 8-bit |
| OUTPUT_SURFACE_FORMAT_TYPE_INTEGRAL_32 = 7, //!< Packed integral Image 32-bit |
| OUTPUT_SURFACE_FORMAT_TYPE_INTEGRAL_64 = 8, //!< Packed integral Image 64-bit |
| }; |
| |
| //! \brief RGBA_CHANNEL_SWAP_ENABLE |
| //! \details |
| //! This bit should only be used with RGB output formats and CSC conversion |
| //! is turned on. When this bit is set, |
| //! the R and B channels are swapped into the output RGB channels as |
| //! shown in the following table: |
| //! <table> |
| //! <tr> |
| //! <th>Name</th> |
| //! <th>Bits</th> |
| //! <th>MSB Color Order</th> |
| //! <th>Swapped</th> |
| //! </tr> |
| //! <tr> |
| //! <td>RGBA8</td> |
| //! <td>8:8:8:8</td> |
| //! <td>A:B:G:R</td> |
| //! <td>A:R:G:B</td> |
| //! </tr> |
| //! <tr> |
| //! <td>RGBA10</td> |
| //! <td>2:10:10:10</td> |
| //! <td>A:R:G:B</td> |
| //! <td>A:B:G:R</td> |
| //! </tr> |
| //! <tr> |
| //! <td>RGB 5:6:5</td> |
| //! <td>5:6:5</td> |
| //! <td>R:G:B</td> |
| //! <td>B:G:R</td> |
| //! </tr> |
| //! </table> |
| enum RGBA_CHANNEL_SWAP_ENABLE |
| { |
| RGBA_CHANNEL_SWAP_ENABLE_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief IEF_ENABLE |
| //! \details |
| //! Restriction : For Integral Image Mode and VD Mode, this field is |
| //! Reserved and MBZ. |
| enum IEF_ENABLE |
| { |
| IEF_ENABLE_DISABLE = 0, //!< IEF Filter is Disabled |
| IEF_ENABLE_ENABLE = 1, //!< IEF Filter is Enabled |
| }; |
| |
| //! \brief IEF4SMOOTH_ENABLE_ |
| //! \details |
| //! Restriction : For Integral Image Mode, this field is Reserved and MBZ. |
| enum IEF4SMOOTH_ENABLE_ |
| { |
| IEF4SMOOTH_ENABLE_UNNAMED0 = 0, //!< IEF is operating as a content adaptive detail filter based on 5x5 region. |
| IEF4SMOOTH_ENABLE_UNNAMED1 = 1, //!< IEF is operating as a content adaptive smooth filter based on 3x3 region |
| }; |
| |
| //! \brief AVS_FILTER_MODE |
| //! \details |
| //! In VD-to-SFC mode, value of 1 is not allowed. |
| enum AVS_FILTER_MODE |
| { |
| AVS_FILTER_MODE_5X5POLY_PHASEFILTERBILINEAR_ADAPTIVE = 0, //!< No additional details |
| AVS_FILTER_MODE_8X8POLY_PHASEFILTERBILINEAR_ADAPTIVE = 1, //!< No additional details |
| AVS_FILTER_MODE_BILINEARFILTERONLY = 2, //!< No additional details |
| }; |
| |
| enum ADAPTIVE_FILTER_FOR_ALL_CHANNELS |
| { |
| ADAPTIVE_FILTER_FOR_ALL_CHANNELS_DISABLEADAPTIVEFILTERONUVRBCHANNELS = 0, //!< No additional details |
| ADAPTIVE_FILTER_FOR_ALL_CHANNELS_ENABLEADAPTIVEFILTERONUVRBCHANNELS = 1, //!< 8-tap Adaptive Filter Mode is on |
| }; |
| |
| enum AVS_SCALING_ENABLE |
| { |
| AVS_SCALING_ENABLE_DISABLE = 0, //!< The scaling factor is ignored and a scaling ratio of 1:1 is assumed. |
| AVS_SCALING_ENABLE_ENABLE = 1, //!< No additional details |
| }; |
| |
| enum BYPASS_Y_ADAPTIVE_FILTERING |
| { |
| BYPASS_Y_ADAPTIVE_FILTERING_ENABLEYADAPTIVEFILTERING = 0, //!< No additional details |
| BYPASS_Y_ADAPTIVE_FILTERING_DISABLEYADAPTIVEFILTERING = 1, //!< The Y direction will use Default Sharpness Level to blend between the smooth and sharp filters rather than the calculated value. |
| }; |
| |
| enum BYPASS_X_ADAPTIVE_FILTERING |
| { |
| BYPASS_X_ADAPTIVE_FILTERING_ENABLEXADAPTIVEFILTERING = 0, //!< No additional details |
| BYPASS_X_ADAPTIVE_FILTERING_DISABLEXADAPTIVEFILTERING = 1, //!< The X direction will use Default Sharpness Level to blend between the smooth and sharp filters rather than the calculated value. |
| }; |
| |
| //! \brief ROTATION_MODE |
| //! \details |
| //! <p>SFC rotation (90, 180 and 270) should be set only on VEBox input mode |
| //! and SFC output set to TileY.</p> |
| //! Restriction: |
| //! <ul> |
| //! <li>For Integral Image Mode, this field is Reserved and MBZ.</li> |
| //! <li>For VDBox Mode, this field is Reserved and MBZ.</li> |
| //! <li>For linear or TileX SFC output, this field is Reserved and |
| //! MBZ.</li> |
| //! </ul> |
| enum ROTATION_MODE |
| { |
| ROTATION_MODE_0_DEGREES = 0, //!< No additional details |
| ROTATION_MODE_90CLOCKWISE = 1, //!< No additional details |
| ROTATION_MODE_180CLOCKWISE = 2, //!< No additional details |
| ROTATION_MODE_270CLOCKWISE = 3, //!< No additional details |
| }; |
| |
| //! \brief SCALING_FACTOR_HEIGHT |
| //! \details |
| //! <p>This field specifies the scaling ratio of the vertical sizes between |
| //! the crop/source region and the scaled region. |
| //! The destination pixel coordinate, y-axis, is multiplied with this |
| //! scaling factor to mapping back to the source input pixel coordinate.</p> |
| //! <p>The field specifies the ratio of crop height resolution/ scaled |
| //! height resolution. This implies 1/<i>sf<sub>u</sub></i> in the |
| //! equation.</p> |
| enum SCALING_FACTOR_HEIGHT |
| { |
| SCALING_FACTOR_HEIGHT_UNNAMED0 = 0, //!< Reserved |
| }; |
| |
| //! \brief SCALING_FACTOR_WIDTH |
| //! \details |
| //! <p>This field specifies the scaling ratio of the horizontal sizes |
| //! between the crop/source region and the scaled region. |
| //! The destination pixel coordinate, x-axis, is multiplied with this |
| //! scaling factor to mapping back to the source input pixel coordinate. |
| //! </p> |
| //! <p>The field specifies the ratio of crop width resolution/ scaled |
| //! width resolution. This implies 1/<i>sf<sub>u</sub></i> in the equations |
| //! above.</p> |
| enum SCALING_FACTOR_WIDTH |
| { |
| SCALING_FACTOR_WIDTH_UNNAMED0 = 0, //!< Reserved |
| }; |
| |
| //! \brief OUTPUT_FRAME_SURFACE_BASE_ADDRESS__MEMORY_COMPRESSION_MODE |
| //! \details |
| //! <span style="color: rgb(35, 35, 35); font-family: Arial, sans-serif; |
| //! font-size: 13.3333330154419px; line-height: normal;">Distinguishes |
| //! vertical from horizontal compression. Please refer to vol1a</span><b |
| //! style="color: rgb(35, 35, 35); font-family: Arial, sans-serif; |
| //! font-size: 13.3333330154419px; line-height: normal;">Memory Data Formats |
| //! chapter - section</b><span style="color: rgb(35, 35, 35); font-family: |
| //! Arial, sans-serif; font-size: 13.3333330154419px; line-height: |
| //! normal;">media Memory Compression for more details.</span> |
| enum OUTPUT_FRAME_SURFACE_BASE_ADDRESS__MEMORY_COMPRESSION_MODE |
| { |
| OUTPUT_FRAME_SURFACE_BASE_ADDRESS_MEMORY_COMPRESSION_MODE_VERTICALCOMPRESSION = 0, //!< No additional details |
| OUTPUT_FRAME_SURFACE_BASE_ADDRESS_MEMORY_COMPRESSION_MODE_HORIZONTALCOMPRESSION = 1, //!< No additional details |
| }; |
| |
| //! \brief OUTPUT_FRAME_SURFACE_BASE_ADDRESS__ROW_STORE_SCRATCH_BUFFER_CACHE_SELECT |
| //! \details |
| //! This must be set to 0 |
| enum OUTPUT_FRAME_SURFACE_BASE_ADDRESS__ROW_STORE_SCRATCH_BUFFER_CACHE_SELECT |
| { |
| OUTPUT_FRAME_SURFACE_BASE_ADDRESS_ROW_STORE_SCRATCH_BUFFER_CACHE_SELECT_DISABLE = 0, //!< This field must be programmed to 0 |
| }; |
| |
| //! \brief OUTPUT_SURFACE_TILED_MODE |
| //! \details |
| //! <b>For Media Surfaces:</b> |
| //! This field specifies the tiled resource mode. |
| enum OUTPUT_SURFACE_TILED_MODE |
| { |
| OUTPUT_SURFACE_TILED_MODE_TRMODENONE = 0, //!< No tiled resource |
| OUTPUT_SURFACE_TILED_MODE_TRMODETILEYF = 1, //!< 4KB tiled resources |
| OUTPUT_SURFACE_TILED_MODE_TRMODETILEYS = 2, //!< 64KB tiled resources |
| }; |
| |
| //! \brief AVS_LINE_BUFFER_BASE_ADDRESS__MEMORY_COMPRESSION_ENABLE |
| //! \details |
| //! This bit control memory compression for this surface |
| enum AVS_LINE_BUFFER_BASE_ADDRESS__MEMORY_COMPRESSION_ENABLE |
| { |
| AVS_LINE_BUFFER_BASE_ADDRESS_MEMORY_COMPRESSION_ENABLE_DISABLE = 0, //!< No additional details |
| }; |
| |
| //! \brief AVS_LINE_BUFFER_BASE_ADDRESS__MEMORY_COMPRESSION_MODE |
| //! \details |
| //! <span style="color: rgb(35, 35, 35); font-family: Arial, sans-serif; |
| //! font-size: 13.3333330154419px; line-height: normal;">Distinguishes |
| //! vertical from horizontal compression. Please refer to vol1a </span><b |
| //! style="color: rgb(35, 35, 35); font-family: Arial, sans-serif; |
| //! font-size: 13.3333330154419px; line-height: normal;">Memory Data Formats |
| //! chapter - section</b><span style="color: rgb(35, 35, 35); font-family: |
| //! Arial, sans-serif; font-size: 13.3333330154419px; line-height: |
| //! normal;">Â media Memory Compression for more details.</span> |
| enum AVS_LINE_BUFFER_BASE_ADDRESS__MEMORY_COMPRESSION_MODE |
| { |
| AVS_LINE_BUFFER_BASE_ADDRESS_MEMORY_COMPRESSION_MODE_HORIZONTALCOMPRESSIONMODE = 0, //!< No additional details |
| }; |
| |
| //! \brief AVS_LINE_BUFFER_BASE_ADDRESS__ROW_STORE_SCRATCH_BUFFER_CACHE_SELECT |
| //! \details |
| //! <span style="color: rgb(35, 35, 35); font-family: Arial, sans-serif; |
| //! font-size: 13.3333330154419px; line-height: normal;">This field controls |
| //! if the Row Store is going to store inside Media Cache (rowstore cache) |
| //! or to LLC.</span> |
| enum AVS_LINE_BUFFER_BASE_ADDRESS__ROW_STORE_SCRATCH_BUFFER_CACHE_SELECT |
| { |
| AVS_LINE_BUFFER_BASE_ADDRESS_ROW_STORE_SCRATCH_BUFFER_CACHE_SELECT_LLC = 0, //!< Buffer going to LLC |
| }; |
| |
| //! \brief AVS_LINE_BUFFER_TILED_MODE |
| //! \details |
| //! <b>For Media Surfaces:</b> |
| //! This field specifies the tiled resource mode. |
| enum AVS_LINE_BUFFER_TILED_MODE |
| { |
| AVS_LINE_BUFFER_TILED_MODE_TRMODENONE = 0, //!< No tiled resource |
| AVS_LINE_BUFFER_TILED_MODE_TRMODETILEYF = 1, //!< 4KB tiled resources |
| AVS_LINE_BUFFER_TILED_MODE_TRMODETILEYS = 2, //!< 64KB tiled resources |
| }; |
| |
| //! \brief IEF_LINE_BUFFER_BASE_ADDRESS__MEMORY_COMPRESSION_ENABLE |
| //! \details |
| //! <p><span style="color: rgb(35, 35, 35); font-family: Arial, sans-serif; |
| //! font-size: 13.3333330154419px; line-height: normal;">Memory compression |
| //! is not supported for this surface</span></p> |
| //! <p><span style="color: rgb(35, 35, 35); font-family: Arial, sans-serif; |
| //! font-size: 13.3333330154419px; line-height: normal;">Must be |
| //! 0.</span></p> |
| //! <p></p> |
| enum IEF_LINE_BUFFER_BASE_ADDRESS__MEMORY_COMPRESSION_ENABLE |
| { |
| IEF_LINE_BUFFER_BASE_ADDRESS_MEMORY_COMPRESSION_ENABLE_DISABLE = 0, //!< No additional details |
| }; |
| |
| //! \brief IEF_LINE_BUFFER_BASE_ADDRESS__MEMORY_COMPRESSION_MODE |
| //! \details |
| //! <span style="color: rgb(35, 35, 35); font-family: Arial, sans-serif; |
| //! font-size: 13.3333330154419px; line-height: normal;">Distinguishes |
| //! vertical from horizontal compression. Please refer to vol1a </span><b |
| //! style="color: rgb(35, 35, 35); font-family: Arial, sans-serif; |
| //! font-size: 13.3333330154419px; line-height: normal;">Memory Data Formats |
| //! chapter - section</b><span style="color: rgb(35, 35, 35); font-family: |
| //! Arial, sans-serif; font-size: 13.3333330154419px; line-height: |
| //! normal;">Â media Memory Compression for more details.</span> |
| enum IEF_LINE_BUFFER_BASE_ADDRESS__MEMORY_COMPRESSION_MODE |
| { |
| IEF_LINE_BUFFER_BASE_ADDRESS_MEMORY_COMPRESSION_MODE_UNNAMED0 = 0, //!< No additional details |
| }; |
| |
| //! \brief IEF_LINE_BUFFER_BASE_ADDRESS__ROW_STORE_SCRATCH_BUFFER_CACHE_SELECT |
| //! \details |
| //! <span style="color: rgb(35, 35, 35); font-family: Arial, sans-serif; |
| //! font-size: 13.3333330154419px; line-height: normal;">This field controls |
| //! if the Row Store is going to store inside Media Cache (rowstore cache) |
| //! or to LLC.</span> |
| enum IEF_LINE_BUFFER_BASE_ADDRESS__ROW_STORE_SCRATCH_BUFFER_CACHE_SELECT |
| { |
| IEF_LINE_BUFFER_BASE_ADDRESS_ROW_STORE_SCRATCH_BUFFER_CACHE_SELECT_LLC = 0, //!< Buffer going to LLC |
| }; |
| |
| //! \brief IEF_LINE_BUFFER_TILED_MODE |
| //! \details |
| //! <b>For Media Surfaces:</b> |
| //! This field specifies the tiled resource mode. |
| enum IEF_LINE_BUFFER_TILED_MODE |
| { |
| IEF_LINE_BUFFER_TILED_MODE_TRMODENONE = 0, //!< No tiled resource |
| IEF_LINE_BUFFER_TILED_MODE_TRMODETILEYF = 1, //!< 4KB tiled resources |
| IEF_LINE_BUFFER_TILED_MODE_TRMODETILEYS = 2, //!< 64KB tiled resources |
| }; |
| |
| //! \brief OUTPUT_SURFACE_TILE_WALK |
| //! \details |
| //! This field specifies the type of memory tiling (XMajor or YMajor) |
| //! employed to tile this surface. See <i>Memory Interface Functions</i> for |
| //! details on memory tiling and restrictions. |
| enum OUTPUT_SURFACE_TILE_WALK |
| { |
| OUTPUT_SURFACE_TILE_WALK_TILEWALKXMAJOR = 0, //!< No additional details |
| OUTPUT_SURFACE_TILE_WALK_TILEWALKYMAJOR = 1, //!< No additional details |
| }; |
| |
| //! \brief OUTPUT_SURFACE_TILED |
| //! \details |
| //! This field specifies whether the surface is tiled. |
| enum OUTPUT_SURFACE_TILED |
| { |
| OUTPUT_SURFACE_TILED_FALSE = 0, //!< Linear |
| OUTPUT_SURFACE_TILED_TRUE = 1, //!< Tiled |
| }; |
| |
| //! \name Initializations |
| |
| //! \brief Explicit member initialization function |
| SFC_STATE_CMD(); |
| |
| static const size_t dwSize = 34; |
| static const size_t byteSize = 136; |
| }; |
| |
| //! |
| //! \brief SFC_AVS_LUMA_Coeff_Table |
| //! \details |
| //! This command is sent from VDBOX/VEBOX to SFC pipeline at the start of |
| //! each frame once the lock request is granted. |
| //! |
| struct SFC_AVS_LUMA_Coeff_Table_CMD |
| { |
| union |
| { |
| //!< DWORD 0 |
| struct |
| { |
| uint32_t DwordLength : __CODEGEN_BITFIELD( 0, 11) ; //!< DWORD_LENGTH |
| uint32_t Reserved12 : __CODEGEN_BITFIELD(12, 15) ; //!< Reserved |
| uint32_t Subopcodeb : __CODEGEN_BITFIELD(16, 20) ; //!< SUBOPCODEB |
| uint32_t Subopcodea : __CODEGEN_BITFIELD(21, 22) ; //!< SUBOPCODEA |
| uint32_t MediaCommandOpcode : __CODEGEN_BITFIELD(23, 26) ; //!< MEDIA_COMMAND_OPCODE |
| uint32_t Pipeline : __CODEGEN_BITFIELD(27, 28) ; //!< PIPELINE |
| uint32_t CommandType : __CODEGEN_BITFIELD(29, 31) ; //!< COMMAND_TYPE |
| }; |
| uint32_t Value; |
| } DW0; |
| union |
| { |
| //!< DWORD 1 |
| struct |
| { |
| uint32_t Table0XFilterCoefficientN0 : __CODEGEN_BITFIELD( 0, 7) ; //!< Table 0X Filter Coefficient[[n],0] |
| uint32_t Table0YFilterCoefficientN0 : __CODEGEN_BITFIELD( 8, 15) ; //!< Table 0Y Filter Coefficient[[n],0] |
| uint32_t Table0XFilterCoefficientN1 : __CODEGEN_BITFIELD(16, 23) ; //!< Table 0X Filter Coefficient[[n],1] |
| uint32_t Table0YFilterCoefficientN1 : __CODEGEN_BITFIELD(24, 31) ; //!< Table 0Y Filter Coefficient[[n],1] |
| }; |
| uint32_t Value; |
| } DW1; |
| union |
| { |
| //!< DWORD 2 |
| struct |
| { |
| uint32_t Table0XFilterCoefficientN2 : __CODEGEN_BITFIELD( 0, 7) ; //!< Table 0X Filter Coefficient[[n],2] |
| uint32_t Table0YFilterCoefficientN2 : __CODEGEN_BITFIELD( 8, 15) ; //!< Table 0Y Filter Coefficient[[n],2] |
| uint32_t Table0XFilterCoefficientN3 : __CODEGEN_BITFIELD(16, 23) ; //!< Table 0X Filter Coefficient[[n],3] |
| uint32_t Table0YFilterCoefficientN3 : __CODEGEN_BITFIELD(24, 31) ; //!< Table 0Y Filter Coefficient[[n],3] |
| }; |
| uint32_t Value; |
| } DW2; |
| union |
| { |
| //!< DWORD 3 |
| struct |
| { |
| uint32_t Table0XFilterCoefficientN4 : __CODEGEN_BITFIELD( 0, 7) ; //!< Table 0X Filter Coefficient[[n],4] |
| uint32_t Table0YFilterCoefficientN4 : __CODEGEN_BITFIELD( 8, 15) ; //!< Table 0Y Filter Coefficient[[n],4] |
| uint32_t Table0XFilterCoefficientN5 : __CODEGEN_BITFIELD(16, 23) ; //!< Table 0X Filter Coefficient[[n],5] |
| uint32_t Table0YFilterCoefficientN5 : __CODEGEN_BITFIELD(24, 31) ; //!< Table 0Y Filter Coefficient[[n],5] |
| }; |
| uint32_t Value; |
| } DW3; |
| union |
| { |
| //!< DWORD 4 |
| struct |
| { |
| uint32_t Table0XFilterCoefficientN6 : __CODEGEN_BITFIELD( 0, 7) ; //!< Table 0X Filter Coefficient[[n],6] |
| uint32_t Table0YFilterCoefficientN6 : __CODEGEN_BITFIELD( 8, 15) ; //!< Table 0Y Filter Coefficient[[n],6] |
| uint32_t Table0XFilterCoefficientN7 : __CODEGEN_BITFIELD(16, 23) ; //!< Table 0X Filter Coefficient[[n],7] |
| uint32_t Table0YFilterCoefficientN7 : __CODEGEN_BITFIELD(24, 31) ; //!< Table 0Y Filter Coefficient[[n],7] |
| }; |
| uint32_t Value; |
| } DW4; |
| |
| uint32_t FilterCoefficients[124]; //!< Filter Coefficients |
| |
| //! \name Local enumerations |
| |
| enum SUBOPCODEB |
| { |
| SUBOPCODEB_SFCAVSLUMACOEFFTABLE = 5, //!< No additional details |
| }; |
| |
| enum SUBOPCODEA |
| { |
| SUBOPCODEA_COMMON = 0, //!< No additional details |
| }; |
| |
| enum MEDIA_COMMAND_OPCODE |
| { |
| MEDIA_COMMAND_OPCODE_MEDIAMISC = 10, //!< No additional details |
| }; |
| |
| enum PIPELINE |
| { |
| PIPELINE_MEDIA = 2, //!< No additional details |
| }; |
| |
| enum COMMAND_TYPE |
| { |
| COMMAND_TYPE_PARALLELVIDEOPIPE = 3, //!< No additional details |
| }; |
| |
| //! \name Initializations |
| |
| //! \brief Explicit member initialization function |
| SFC_AVS_LUMA_Coeff_Table_CMD(); |
| |
| static const size_t dwSize = 129; |
| static const size_t byteSize = 516; |
| }; |
| |
| //! |
| //! \brief SFC_AVS_CHROMA_Coeff_Table |
| //! \details |
| //! This command is sent from VDBOX/VEBOX to SFC pipeline at the start of |
| //! each frame once the lock request is granted. |
| //! |
| struct SFC_AVS_CHROMA_Coeff_Table_CMD |
| { |
| union |
| { |
| //!< DWORD 0 |
| struct |
| { |
| uint32_t DwordLength : __CODEGEN_BITFIELD( 0, 11) ; //!< DWORD_LENGTH |
| uint32_t Reserved12 : __CODEGEN_BITFIELD(12, 15) ; //!< Reserved |
| uint32_t Subopcodeb : __CODEGEN_BITFIELD(16, 20) ; //!< SUBOPCODEB |
| uint32_t Subopcodea : __CODEGEN_BITFIELD(21, 22) ; //!< SUBOPCODEA |
| uint32_t MediaCommandOpcode : __CODEGEN_BITFIELD(23, 26) ; //!< MEDIA_COMMAND_OPCODE |
| uint32_t Pipeline : __CODEGEN_BITFIELD(27, 28) ; //!< PIPELINE |
| uint32_t CommandType : __CODEGEN_BITFIELD(29, 31) ; //!< COMMAND_TYPE |
| }; |
| uint32_t Value; |
| } DW0; |
| union |
| { |
| //!< DWORD 1 |
| struct |
| { |
| uint32_t Table1XFilterCoefficientN2 : __CODEGEN_BITFIELD( 0, 7) ; //!< Table 1X Filter Coefficient[[n],2] |
| uint32_t Table1YFilterCoefficientN2 : __CODEGEN_BITFIELD( 8, 15) ; //!< Table 1Y Filter Coefficient[[n],2] |
| uint32_t Table1XFilterCoefficientN3 : __CODEGEN_BITFIELD(16, 23) ; //!< Table 1X Filter Coefficient[[n],3] |
| uint32_t Table1YFilterCoefficientN3 : __CODEGEN_BITFIELD(24, 31) ; //!< Table 1Y Filter Coefficient[[n],3] |
| }; |
| uint32_t Value; |
| } DW1; |
| union |
| { |
| //!< DWORD 2 |
| struct |
| { |
| uint32_t Table1XFilterCoefficientN4 : __CODEGEN_BITFIELD( 0, 7) ; //!< Table 1X Filter Coefficient[[n],4] |
| uint32_t Table1YFilterCoefficientN4 : __CODEGEN_BITFIELD( 8, 15) ; //!< Table 1Y Filter Coefficient[[n],4] |
| uint32_t Table1XFilterCoefficientN5 : __CODEGEN_BITFIELD(16, 23) ; //!< Table 1X Filter Coefficient[[n],5] |
| uint32_t Table1YFilterCoefficientN5 : __CODEGEN_BITFIELD(24, 31) ; //!< Table 1Y Filter Coefficient[[n],5] |
| }; |
| uint32_t Value; |
| } DW2; |
| |
| uint32_t FilterCoefficients[62]; //!< Filter Coefficients |
| |
| //! \name Local enumerations |
| |
| enum SUBOPCODEB |
| { |
| SUBOPCODEB_SFCAVSCHROMACOEFFTABLE = 6, //!< No additional details |
| }; |
| |
| enum SUBOPCODEA |
| { |
| SUBOPCODEA_COMMON = 0, //!< No additional details |
| }; |
| |
| enum MEDIA_COMMAND_OPCODE |
| { |
| MEDIA_COMMAND_OPCODE_MEDIAMISC = 10, //!< No additional details |
| }; |
| |
| enum PIPELINE |
| { |
| PIPELINE_MEDIA = 2, //!< No additional details |
| }; |
| |
| enum COMMAND_TYPE |
| { |
| COMMAND_TYPE_PARALLELVIDEOPIPE = 3, //!< No additional details |
| }; |
| |
| //! \name Initializations |
| |
| //! \brief Explicit member initialization function |
| SFC_AVS_CHROMA_Coeff_Table_CMD(); |
| |
| static const size_t dwSize = 65; |
| static const size_t byteSize = 260; |
| }; |
| |
| }; |
| |
| #pragma pack() |
| |
| #endif // __MHW_SFC_HWCMD_G10_X_H__ |