1 /*
2 * Copyright(c) 2018 Intel Corporation
3 * SPDX - License - Identifier: BSD - 2 - Clause - Patent
4 */
5 
6 #ifndef EbReferenceObject_h
7 #define EbReferenceObject_h
8 
9 #include "EbDefinitions.h"
10 #include "EbAdaptiveMotionVectorPrediction.h"
11 #include "EbObject.h"
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 typedef struct EbReferenceObject_s {
17     EbDctor                         dctor;
18     EbPictureBufferDesc_t          *referencePicture;
19 	EbPictureBufferDesc_t		   *referencePicture16bit;
20     EbPictureBufferDesc_t          *refDenSrcPicture;
21 
22     TmvpUnit_t                     *tmvpMap;
23     EB_BOOL                         tmvpEnableFlag;
24     EB_U64                          refPOC;
25 
26     EB_U8                           qp;
27     EB_PICTURE                        sliceType;
28 
29 	EB_U8                          intraCodedArea;//percentage of intra coded area 0-100%
30 
31 	EB_U8                          intraCodedAreaLCU[MAX_NUMBER_OF_TREEBLOCKS_PER_PICTURE];//percentage of intra coded area 0-100%
32 	EB_U32                         nonMovingIndexArray[MAX_NUMBER_OF_TREEBLOCKS_PER_PICTURE];//array to hold non-moving blocks in reference frames
33 	EB_U32                         picSampleValue[MAX_NUMBER_OF_REGIONS_IN_WIDTH][MAX_NUMBER_OF_REGIONS_IN_HEIGHT][3];// [Y U V];
34 
35 	EB_BOOL                        penalizeSkipflag;
36 
37 	EB_U8                          tmpLayerIdx;
38 	EB_BOOL                        isSceneChange;
39 	EB_U16                         picAvgVariance;
40     EB_U8                          averageIntensity;
41 
42 } EbReferenceObject_t;
43 
44 typedef struct EbReferenceObjectDescInitData_s {
45     EbPictureBufferDescInitData_t   referencePictureDescInitData;
46 } EbReferenceObjectDescInitData_t;
47 
48 typedef struct EbPaReferenceObject_s {
49     EbDctor                         dctor;
50     EbPictureBufferDesc_t          *inputPaddedPicturePtr;
51     EbPictureBufferDesc_t          *quarterDecimatedPicturePtr;
52     EbPictureBufferDesc_t          *sixteenthDecimatedPicturePtr;
53 	EB_U16                         variance[MAX_NUMBER_OF_TREEBLOCKS_PER_PICTURE];
54 	EB_U8                          yMean[MAX_NUMBER_OF_TREEBLOCKS_PER_PICTURE];
55 	EB_PICTURE                       sliceType;
56 
57 	EB_S32 dependentPicturesCount; //number of pic using this reference frame
58     PictureParentControlSet_t       *pPcsPtr;
59 } EbPaReferenceObject_t;
60 
61 typedef struct EbPaReferenceObjectDescInitData_s {
62     EbPictureBufferDescInitData_t   referencePictureDescInitData;
63     EbPictureBufferDescInitData_t   quarterPictureDescInitData;
64     EbPictureBufferDescInitData_t   sixteenthPictureDescInitData;
65 } EbPaReferenceObjectDescInitData_t;
66 
67 /**************************************
68  * Extern Function Declarations
69  **************************************/
70 extern EB_ERRORTYPE EbReferenceObjectCreator(
71     EB_PTR *objectDblPtr,
72     EB_PTR objectInitDataPtr);
73 
74 extern EB_ERRORTYPE EbPaReferenceObjectCreator(
75     EB_PTR *objectDblPtr,
76     EB_PTR objectInitDataPtr);
77 
78 #ifdef __cplusplus
79 }
80 #endif
81 #endif //EbReferenceObject_h