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