1 /*
2 * Copyright (c) 2017, Intel Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included
12 * in all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22 //!
23 //! \file     CMRTKernel_I_Kernel_def.h
24 //! \brief    HEVC FEI I parameter definition for GEN9 SKL.
25 //!
26 
27 #ifndef _CMRTKERNEL_I_KERNEL_DEF_
28 #define _CMRTKERNEL_I_KERNEL_DEF_
29 
30 #include "HevcEncFei_I_gen9.h"
31 
32 #define NUM_MBENC_I_32x32_SURFACES                10
33 #define NUM_MBENC_I_16x16_SAD_SURFACES             6
34 #define NUM_MBENC_I_16X16_MODE_SURFACES           12
35 #define NUM_MBENC_I_8x8_PU_SURFACES                9
36 #define NUM_MBENC_I_8X8_PU_MODE_LCU_SURFACES      15
37 
38 #define CURBEDATA_SIZE_I_32X32_PU_MODE_DECISION   32
39 #define CURBEDATA_SIZE_I_16X16_SAD_COMPUTE        32
40 #define CURBEDATA_SIZE_I_16X16_MODE_DECISION      64
41 #define CURBEDATA_SIZE_I_8X8_PU                   32
42 #define CURBEDATA_SIZE_I_8X8_PU_MODE_LCU          64
43 
44 #define HEVCENCKERNELNAME_I_32x32                 "Hevc_LCUEnc_I_32x32_PU_ModeDecision"
45 #define HEVCENCKERNELNAME_I_16x16SAD              "HEVC_LCUEnc_I_16x16_PU_SADComputation"
46 #define HEVCENCKERNELNAME_I_16x16MODE             "HEVC_LCUEnc_I_16x16_PU_ModeDecision"
47 #define HEVCENCKERNELNAME_I_8x8                   "Hevc_LCUEnc_I_8x8_PU"
48 #define HEVCENCKERNELNAME_I_8x8MODE               "Hevc_LCUEnc_I_8x8_PU_FMode_inLCU"
49 
50 typedef struct
51 {
52     void     *m_cmSurfPer32x32PUDataOut;
53     void     *m_cmSurfCurrY;
54     void     *m_cmSurfCurrY2;
55     void     *m_cmSurfSliceMap;
56     void     *m_cmSurfCombinedQP;
57     void     *m_cmLCUQPSurf;
58     void     *m_cmBRCConstSurf;
59     void     *m_cmSurfSAD16x16;
60     void     *m_cmSurfSIF;
61     void     *m_cmSurfPOCDbuf;
62     void     *m_cmSurfVMEMode;
63     void     *m_cmSurfMode;
64     void     *m_cmSurfIntraDist;
65     void     *m_cmSurfHaarDist;
66     void     *m_cmSurfFrameStats;
67     void     *m_cmSurfStats;
68     uint32_t  m_bufSize;
69     uint32_t  m_bufOffset;
70 } IFrameKernelParams;
71 
72 #endif
73