1 /* 2 * Copyright(c) 2019 Intel Corporation 3 * Copyright (c) 2019, Alliance for Open Media. All rights reserved 4 * 5 * This source code is subject to the terms of the BSD 2 Clause License and 6 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License 7 * was not distributed with this source code in the LICENSE file, you can 8 * obtain it at https://www.aomedia.org/license/software-license. If the Alliance for Open 9 * Media Patent License 1.0 was not distributed with this source code in the 10 * PATENTS file, you can obtain it at https://www.aomedia.org/license/patent-license. 11 */ 12 13 #ifndef EbEntropyCodingProcess_h 14 #define EbEntropyCodingProcess_h 15 16 #include "EbDefinitions.h" 17 #include "EbSyntaxElements.h" 18 19 #include "EbSystemResourceManager.h" 20 #include "EbPictureBufferDesc.h" 21 #include "EbEncInterPrediction.h" 22 #include "EbEntropyCoding.h" 23 #include "EbTransQuantBuffers.h" 24 #include "EbCodingUnit.h" 25 #include "EbObject.h" 26 27 /************************************** 28 * Enc Dec Context 29 **************************************/ 30 typedef struct EntropyCodingContext { 31 EbDctor dctor; 32 EbFifo * enc_dec_input_fifo_ptr; 33 EbFifo * entropy_coding_output_fifo_ptr; // to packetization 34 EbFifo * rate_control_output_fifo_ptr; // feedback to rate control 35 uint32_t sb_total_count; 36 // Coding Unit Workspace--------------------------- 37 EbPictureBufferDesc *coeff_buffer_sb; //Used to hold quantized coeff for one TB in EncPass. 38 39 // Context Variables--------------------------------- 40 BlkStruct *blk_ptr; 41 //const CodedBlockStats *cu_stats; 42 uint32_t blk_index; 43 uint8_t cu_depth; 44 uint32_t cu_size; 45 uint32_t sb_sz; 46 uint32_t cu_size_log2; 47 uint32_t blk_origin_x; 48 uint32_t blk_origin_y; 49 uint32_t sb_origin_x; 50 uint32_t sb_origin_y; 51 uint32_t pu_itr; 52 PredictionUnit *pu_ptr; 53 uint32_t pu_origin_x; 54 uint32_t pu_origin_y; 55 uint32_t pu_width; 56 uint32_t pu_height; 57 MvUnit mv_unit; 58 59 uint32_t txb_itr; 60 uint32_t txb_origin_x; 61 uint32_t txb_origin_y; 62 uint32_t txb_size; 63 64 // MCP Context 65 EbBool is_16bit; //enable 10 bit encode in CL 66 int32_t coded_area_sb; 67 int32_t coded_area_sb_uv; 68 TOKENEXTRA *tok; 69 } EntropyCodingContext; 70 71 /************************************** 72 * Extern Function Declarations 73 **************************************/ 74 extern EbErrorType entropy_coding_context_ctor(EbThreadContext * thread_context_ptr, 75 const EbEncHandle *enc_handle_ptr, int index, 76 int rate_control_index); 77 78 extern void *entropy_coding_kernel(void *input_ptr); 79 80 #endif // EbEntropyCodingProcess_h 81