1 /* 2 * Copyright(c) 2018 Intel Corporation 3 * SPDX - License - Identifier: BSD - 2 - Clause - Patent 4 */ 5 6 #ifndef EbEntropyCodingProcess_h 7 #define EbEntropyCodingProcess_h 8 9 #include "EbDefinitions.h" 10 #include "EbSyntaxElements.h" 11 12 #include "EbSystemResourceManager.h" 13 #include "EbPictureBufferDesc.h" 14 #include "EbModeDecision.h" 15 #include "EbInterPrediction.h" 16 #include "EbEntropyCoding.h" 17 #include "EbTransQuantBuffers.h" 18 #include "EbReferenceObject.h" 19 #include "EbNeighborArrays.h" 20 #include "EbCodingUnit.h" 21 #include "EbObject.h" 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 /************************************** 27 * Enc Dec Context 28 **************************************/ 29 typedef struct EntropyCodingContext_s 30 { 31 EbDctor dctor; 32 EbFifo_t *encDecInputFifoPtr; 33 EbFifo_t *entropyCodingOutputFifoPtr; // to packetization 34 EbFifo_t *rateControlOutputFifoPtr; // feedback to rate control 35 36 EB_U32 lcuTotalCount; 37 // Lambda 38 EB_U8 qp; 39 EB_U8 chromaQp; 40 // Coding Unit Workspace--------------------------- 41 EbPictureBufferDesc_t *coeffBufferTB; //Used to hold quantized coeff for one TB in EncPass. 42 43 // Context Variables--------------------------------- 44 EB_U32 cuItr; 45 CodingUnit_t *cuPtr; 46 const CodedUnitStats_t *cuStats; 47 EB_U32 cuIndex; 48 EB_U8 cuDepth; 49 EB_U32 cuSize; 50 EB_U32 lcuSize; 51 EB_U32 lcuChromaSize; 52 EB_U32 cuSizeLog2; 53 EB_U32 cuOriginX; 54 EB_U32 cuOriginY; 55 EB_U32 cuChromaOriginX; 56 EB_U32 cuChromaOriginY; 57 58 EB_U32 puItr; 59 PredictionUnit_t *puPtr; 60 const PredictionUnitStats_t *puStats; 61 EB_U32 puOriginX; 62 EB_U32 puOriginY; 63 EB_U32 puWidth; 64 EB_U32 puHeight; 65 MvUnit_t mvUnit; 66 EB_U32 mergeCandidateCount; 67 MvMergeCandidate_t mergeCandidateArray[MAX_NUM_OF_MV_MERGE_CANDIDATE]; 68 EB_U32 amvpCandidateCountRefList0; 69 EB_S32 xMvAmvpCandidateArrayList0[MAX_NUM_OF_AMVP_CANDIDATES]; 70 EB_S32 yMvAmvpCandidateArrayList0[MAX_NUM_OF_AMVP_CANDIDATES]; 71 EB_U32 amvpCandidateCountRefList1; 72 EB_S32 xMvAmvpCandidateArrayList1[MAX_NUM_OF_AMVP_CANDIDATES]; 73 EB_S32 yMvAmvpCandidateArrayList1[MAX_NUM_OF_AMVP_CANDIDATES]; 74 75 EB_U32 tuItr; 76 EB_U32 tuArea; 77 EB_U32 tuTotalArea; 78 TransformUnit_t *tuPtr; 79 const TransformUnitStats_t *tuStats; 80 EB_U32 tuOriginX; 81 EB_U32 tuOriginY; 82 EB_U32 tuSize; 83 EB_U32 tuSizeChroma; 84 85 // MCP Context 86 EB_BOOL is16bit; //enable 10 bit encode in CL 87 88 } EntropyCodingContext_t; 89 90 /************************************** 91 * Extern Function Declarations 92 **************************************/ 93 extern EB_ERRORTYPE EntropyCodingContextCtor( 94 EntropyCodingContext_t *contextPtr, 95 EbFifo_t *encDecInputFifoPtr, 96 EbFifo_t *packetizationOutputFifoPtr, 97 EbFifo_t *rateControlOutputFifoPtr, 98 EB_BOOL is16bit); 99 100 extern void* EntropyCodingKernel(void *inputPtr); 101 102 #ifdef __cplusplus 103 } 104 #endif 105 #endif // EbEntropyCodingProcess_h 106