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