1 /*
2 * Copyright(c) 2019 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 "EbDefinitions.h"
11 #include "EbPictureControlSet.h"
12 
13 typedef struct EbReferenceObject
14 {
15     EbPictureBufferDesc *reference_picture;
16     EbPictureBufferDesc *reference_picture16bit;
17     EbPictureBufferDesc *ref_den_src_picture;
18 
19     uint64_t             ref_poc;
20 
21     uint8_t              qp;
22     EB_SLICE             slice_type;
23 
24     uint32_t             non_moving_index_array[MAX_NUMBER_OF_TREEBLOCKS_PER_PICTURE];//array to hold non-moving blocks in reference frames
25 
26     uint8_t              tmp_layer_idx;
27     EB_BOOL              is_scene_change;
28     uint16_t             pic_avg_variance;
29     uint8_t              average_intensity;
30 
31 } EbReferenceObject;
32 
33 typedef struct EbReferenceObjectDescInitData {
34     EbPictureBufferDescInitData reference_picture_desc_init_data;
35 } EbReferenceObjectDescInitData;
36 
37 typedef struct EbPaReferenceObject
38 {
39     EbPictureBufferDesc      *input_padded_picture_ptr;
40     EbPictureBufferDesc      *quarter_decimated_picture_ptr;
41     EbPictureBufferDesc      *sixteenth_decimated_picture_ptr;
42     uint16_t                  variance[MAX_NUMBER_OF_TREEBLOCKS_PER_PICTURE];
43     uint8_t                   y_mean[MAX_NUMBER_OF_TREEBLOCKS_PER_PICTURE];
44     EB_SLICE                  slice_type;
45     uint32_t                  dependent_pictures_count; //number of pic using this reference frame
46     PictureParentControlSet  *p_pcs_ptr;
47 
48 } EbPaReferenceObject;
49 
50 typedef struct EbPaReferenceObjectDescInitData
51 {
52     EbPictureBufferDescInitData reference_picture_desc_init_data;
53     EbPictureBufferDescInitData quarter_picture_desc_init_data;
54     EbPictureBufferDescInitData sixteenth_picture_desc_init_data;
55 } EbPaReferenceObjectDescInitData;
56 
57 /**************************************
58  * Extern Function Declarations
59  **************************************/
60 extern EbErrorType eb_vp9_reference_object_ctor(
61     EbPtr *object_dbl_ptr,
62     EbPtr  object_init_data_ptr);
63 
64 extern EbErrorType eb_vp9_pa_reference_object_ctor(
65     EbPtr *object_dbl_ptr,
66     EbPtr  object_init_data_ptr);
67 
68 #endif //EbReferenceObject_h
69