00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _MLO_ELEMENT_CCE_H_
00033 #define _MLO_ELEMENT_CCE_H_
00034
00035
00036
00037
00038 #include "MloSamplingFreq.h"
00039 #include "MloBitStream.h"
00040 #include "MloDefs.h"
00041 #include "MloIndivChnPool.h"
00042 #include "MloIndivChnStream.h"
00043 #include "MloTypes.h"
00044
00045
00046
00047
00048 enum { MLO_ELEMENT_CCE_MAX_NBR_TARGETS = (1<<3) + 1 };
00049 enum { MLO_ELEMENT_CCE_MAX_NBR_G_E_L = MLO_ELEMENT_CCE_MAX_NBR_TARGETS * 2 };
00050
00051
00052 enum { MLO_ELEMENT_CCE_POW2_RES_L2 = 3 };
00053 enum { MLO_ELEMENT_CCE_POW2_RES = 1 << MLO_ELEMENT_CCE_POW2_RES_L2 };
00054
00055
00056
00057
00058
00059 struct MLO_SyntacticElements;
00060
00061
00062
00063 typedef enum MLO_ElementCce_Stage
00064 {
00065 MLO_ELEMENT_CCE_STAGE_DEP_BEFORE_TNS = 0,
00066 MLO_ELEMENT_CCE_STAGE_DEP_AFTER_TNS,
00067 MLO_ELEMENT_CCE_STAGE_INDEP,
00068
00069 MLO_ELEMENT_CCE_STAGE_NBR_ELT
00070 } MLO_ElementCce_Stage;
00071
00072 typedef struct MLO_ElementCce_CcTarget
00073 {
00074 MLO_UInt8 is_cpe;
00075 MLO_UInt8 tag_select;
00076 MLO_UInt8 cc_l;
00077 MLO_UInt8 cc_r;
00078 } MLO_ElementCce_CcTarget;
00079
00080 typedef struct MLO_ElementCce_GainElementList
00081 {
00082 MLO_UInt8 cge_flag;
00083 MLO_UInt8 common_gain_element;
00084 MLO_UInt8 dpcm_gain_element [MLO_DEFS_MAX_NBR_WIN_GRP] [MLO_DEFS_MAX_NUM_SWB + 1];
00085 } MLO_ElementCce_GainElementList;
00086
00087 typedef struct MLO_ElementCce
00088 {
00089 int element_instance_tag;
00090 MLO_Boolean ind_sw_cce_flag;
00091 int num_coupled_elements;
00092 MLO_ElementCce_CcTarget
00093 cc_target_arr [MLO_ELEMENT_CCE_MAX_NBR_TARGETS];
00094 MLO_Boolean cc_domain;
00095 MLO_Boolean gain_element_sign;
00096 int gain_element_scale;
00097 int num_gain_element_lists;
00098 MLO_ElementCce_GainElementList
00099 gel_arr [MLO_ELEMENT_CCE_MAX_NBR_G_E_L];
00100 MLO_IndivChnStream *
00101 ics_ptr;
00102 } MLO_ElementCce;
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112 #ifdef __cplusplus
00113 extern "C" {
00114 #endif
00115
00116
00117
00118 MLO_Result MLO_ElementCce_Decode (MLO_ElementCce *cce_ptr, MLO_BitStream *bit_ptr, MLO_IndivChnPool *chn_pool_ptr, MLO_SamplingFreq_Index fs_index);
00119 MLO_Result MLO_ElementCce_Process (const MLO_ElementCce *cce_ptr, struct MLO_SyntacticElements *se_ptr, MLO_ElementCce_Stage stage);
00120
00121
00122
00123
00124 #ifdef __cplusplus
00125 }
00126 #endif
00127
00128
00129
00130 #endif