Changeset 1084 in 3DVCSoftware
- Timestamp:
- 24 Oct 2014, 11:44:58 (10 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 76 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/cfg/3D-HEVC/NonCTC/allintra/baseCfg_2view+depth_AllIntra.cfg
r1066 r1084 77 77 #======== Coding Structure ============= 78 78 IntraPeriod : 1 # Period of I-Frame ( -1 = only first) 79 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR79 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 80 80 GOPSize : 1 # GOP Size (number of B slice = GOPSize-1) 81 81 Frame1 : B 1 1 0.442 0 0 0 4 0 0 0 … … 142 142 143 143 #============ Tiles ================ 144 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array144 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 145 145 # 1: the column and row boundaries are distributed uniformly 146 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1147 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)148 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1149 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)146 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 147 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 148 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 149 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 150 150 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. 151 151 # 0:not across, 1: across -
trunk/cfg/3D-HEVC/NonCTC/allintra/baseCfg_2view_AllIntra.cfg
r1066 r1084 65 65 #======== Coding Structure ============= 66 66 IntraPeriod : 1 # Period of I-Frame ( -1 = only first) 67 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR67 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 68 68 GOPSize : 1 # GOP Size (number of B slice = GOPSize-1) 69 69 Frame1 : B 1 1 0.442 0 0 0 4 0 0 0 … … 127 127 128 128 #============ Tiles ================ 129 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array129 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 130 130 # 1: the column and row boundaries are distributed uniformly 131 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1132 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)133 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1134 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)131 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 132 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 133 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 134 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 135 135 136 136 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/3D-HEVC/NonCTC/allintra/baseCfg_3view+depth_AllIntra.cfg
r1066 r1084 91 91 #======== Coding Structure ============= 92 92 IntraPeriod : 1 # Period of I-Frame ( -1 = only first) 93 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR93 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 94 94 GOPSize : 1 # GOP Size (number of B slice = GOPSize-1) 95 95 … … 160 160 161 161 #============ Tiles ================ 162 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array162 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 163 163 # 1: the column and row boundaries are distributed uniformly 164 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1165 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)166 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1167 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)164 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 165 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 166 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 167 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 168 168 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. 169 169 # 0:not across, 1: across -
trunk/cfg/3D-HEVC/NonCTC/allintra/baseCfg_3view_AllIntra.cfg
r1066 r1084 76 76 #======== Coding Structure ============= 77 77 IntraPeriod : 1 # Period of I-Frame ( -1 = only first) 78 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR78 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 79 79 GOPSize : 1 # GOP Size (number of B slice = GOPSize-1) 80 80 Frame1 : B 1 1 0.442 0 0 0 4 0 0 0 … … 139 139 140 140 #============ Tiles ================ 141 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array141 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 142 142 # 1: the column and row boundaries are distributed uniformly 143 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1144 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)145 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1146 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)143 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 144 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 145 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 146 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 147 147 148 148 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/3D-HEVC/NonCTC/fco/baseCfg_3view+depth.cfg
r1066 r1084 91 91 #======== Coding Structure ============= 92 92 IntraPeriod : 24 # Period of I-Frame ( -1 = only first) 93 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR93 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 94 94 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 95 95 … … 209 209 210 210 #============ Tiles ================ 211 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array211 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 212 212 # 1: the column and row boundaries are distributed uniformly 213 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1214 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)215 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1216 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)213 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 214 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 215 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 216 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 217 217 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. 218 218 # 0:not across, 1: across -
trunk/cfg/3D-HEVC/NonCTC/rc/baseCfg_3view+depth_rate_control.cfg
r1066 r1084 91 91 #======== Coding Structure ============= 92 92 IntraPeriod : 24 # Period of I-Frame ( -1 = only first) 93 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR93 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 94 94 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 95 95 … … 209 209 210 210 #============ Tiles ================ 211 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array211 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 212 212 # 1: the column and row boundaries are distributed uniformly 213 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1214 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)215 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1216 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)213 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 214 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 215 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 216 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 217 217 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. 218 218 # 0:not across, 1: across -
trunk/cfg/3D-HEVC/baseCfg_2view+depth.cfg
r1066 r1084 77 77 #======== Coding Structure ============= 78 78 IntraPeriod : 24 # Period of I-Frame ( -1 = only first) 79 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR79 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 80 80 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 81 81 … … 176 176 177 177 #============ Tiles ================ 178 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array178 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 179 179 # 1: the column and row boundaries are distributed uniformly 180 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1181 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)182 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1183 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)180 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 181 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 182 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 183 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 184 184 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. 185 185 # 0:not across, 1: across -
trunk/cfg/3D-HEVC/baseCfg_2view.cfg
r1066 r1084 65 65 #======== Coding Structure ============= 66 66 IntraPeriod : 24 # Period of I-Frame ( -1 = only first) 67 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR67 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 68 68 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 69 69 … … 146 146 147 147 #============ Tiles ================ 148 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array148 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 149 149 # 1: the column and row boundaries are distributed uniformly 150 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1151 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)152 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1153 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)150 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 151 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 152 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 153 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 154 154 155 155 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/3D-HEVC/baseCfg_3view+depth.cfg
r1066 r1084 91 91 #======== Coding Structure ============= 92 92 IntraPeriod : 24 # Period of I-Frame ( -1 = only first) 93 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR93 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 94 94 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 95 95 … … 209 209 210 210 #============ Tiles ================ 211 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array211 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 212 212 # 1: the column and row boundaries are distributed uniformly 213 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1214 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)215 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1216 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)213 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 214 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 215 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 216 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 217 217 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. 218 218 # 0:not across, 1: across -
trunk/cfg/3D-HEVC/baseCfg_3view.cfg
r1066 r1084 76 76 #======== Coding Structure ============= 77 77 IntraPeriod : 24 # Period of I-Frame ( -1 = only first) 78 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR78 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 79 79 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 80 80 … … 166 166 167 167 #============ Tiles ================ 168 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array168 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 169 169 # 1: the column and row boundaries are distributed uniformly 170 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1171 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)172 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1173 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)170 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 171 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 172 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 173 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 174 174 175 175 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/3D-HEVC/fullCfg.cfg
r1066 r1084 155 155 #======== Coding Structure ============= 156 156 IntraPeriod : 24 # Period of I-Frame ( -1 = only first) 157 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR157 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 158 158 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 159 159 … … 274 274 275 275 #============ Tiles ================ 276 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array276 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 277 277 # 1: the column and row boundaries are distributed uniformly 278 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1279 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)280 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1281 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)278 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 279 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 280 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 281 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 282 282 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. 283 283 # 0:not across, 1: across -
trunk/cfg/HEVC/HM/encoder_intra_main.cfg
r872 r1084 19 19 #======== Coding Structure ============= 20 20 IntraPeriod : 1 # Period of I-Frame ( -1 = only first) 21 DecodingRefreshType : 0 # Random Accesss 0:none, 1:C DR, 2:IDR21 DecodingRefreshType : 0 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 22 22 GOPSize : 1 # GOP Size (number of B slice = GOPSize-1) 23 23 # Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures … … 77 77 78 78 #============ Tiles ================ 79 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array79 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 80 80 # 1: the column and row boundaries are distributed uniformly 81 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 182 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)83 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 184 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)81 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 82 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 83 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 84 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 85 85 86 86 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/HEVC/HM/encoder_intra_main10.cfg
r872 r1084 19 19 #======== Coding Structure ============= 20 20 IntraPeriod : 1 # Period of I-Frame ( -1 = only first) 21 DecodingRefreshType : 0 # Random Accesss 0:none, 1:C DR, 2:IDR21 DecodingRefreshType : 0 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 22 22 GOPSize : 1 # GOP Size (number of B slice = GOPSize-1) 23 23 # Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures … … 77 77 78 78 #============ Tiles ================ 79 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array79 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 80 80 # 1: the column and row boundaries are distributed uniformly 81 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 182 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)83 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 184 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)81 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 82 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 83 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 84 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 85 85 86 86 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/HEVC/HM/encoder_lowdelay_P_main.cfg
r872 r1084 19 19 #======== Coding Structure ============= 20 20 IntraPeriod : -1 # Period of I-Frame ( -1 = only first) 21 DecodingRefreshType : 0 # Random Accesss 0:none, 1:C DR, 2:IDR21 DecodingRefreshType : 0 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 22 22 GOPSize : 4 # GOP Size (number of B slice = GOPSize-1) 23 23 # Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs … … 82 82 83 83 #============ Tiles ================ 84 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array84 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 85 85 # 1: the column and row boundaries are distributed uniformly 86 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 187 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)88 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 189 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)86 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 87 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 88 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 89 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 90 90 91 91 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/HEVC/HM/encoder_lowdelay_P_main10.cfg
r872 r1084 19 19 #======== Coding Structure ============= 20 20 IntraPeriod : -1 # Period of I-Frame ( -1 = only first) 21 DecodingRefreshType : 0 # Random Accesss 0:none, 1:C DR, 2:IDR21 DecodingRefreshType : 0 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 22 22 GOPSize : 4 # GOP Size (number of B slice = GOPSize-1) 23 23 # Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs … … 82 82 83 83 #============ Tiles ================ 84 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array84 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 85 85 # 1: the column and row boundaries are distributed uniformly 86 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 187 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)88 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 189 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)86 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 87 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 88 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 89 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 90 90 91 91 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/HEVC/HM/encoder_lowdelay_main.cfg
r872 r1084 19 19 #======== Coding Structure ============= 20 20 IntraPeriod : -1 # Period of I-Frame ( -1 = only first) 21 DecodingRefreshType : 0 # Random Accesss 0:none, 1:C DR, 2:IDR21 DecodingRefreshType : 0 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 22 22 GOPSize : 4 # GOP Size (number of B slice = GOPSize-1) 23 23 # Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs … … 82 82 83 83 #============ Tiles ================ 84 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array84 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 85 85 # 1: the column and row boundaries are distributed uniformly 86 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 187 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)88 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 189 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)86 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 87 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 88 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 89 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 90 90 91 91 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/HEVC/HM/encoder_lowdelay_main10.cfg
r872 r1084 19 19 #======== Coding Structure ============= 20 20 IntraPeriod : -1 # Period of I-Frame ( -1 = only first) 21 DecodingRefreshType : 0 # Random Accesss 0:none, 1:C DR, 2:IDR21 DecodingRefreshType : 0 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 22 22 GOPSize : 4 # GOP Size (number of B slice = GOPSize-1) 23 23 # Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs … … 82 82 83 83 #============ Tiles ================ 84 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array84 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 85 85 # 1: the column and row boundaries are distributed uniformly 86 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 187 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)88 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 189 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)86 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 87 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 88 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 89 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 90 90 91 91 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/HEVC/HM/encoder_randomaccess_main.cfg
r872 r1084 19 19 #======== Coding Structure ============= 20 20 IntraPeriod : 32 # Period of I-Frame ( -1 = only first) 21 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR21 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 22 22 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 23 23 # Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs … … 25 25 Frame2: B 4 2 0.3536 0 0 0 2 3 -4 -6 4 1 4 5 1 1 0 0 1 26 26 Frame3: B 2 3 0.3536 0 0 0 2 4 -2 -4 2 6 1 2 4 1 1 1 1 27 Frame4: B 1 4 0.68 0 0 02 4 -1 1 3 7 1 1 5 1 0 1 1 128 Frame5: B 3 4 0.68 0 0 02 4 -1 -3 1 5 1 -2 5 1 1 1 1 027 Frame4: B 1 4 0.68 0 0 1 2 4 -1 1 3 7 1 1 5 1 0 1 1 1 28 Frame5: B 3 4 0.68 0 0 1 2 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 29 29 Frame6: B 6 3 0.3536 0 0 0 2 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 30 Frame7: B 5 4 0.68 0 0 02 4 -1 -5 1 3 1 1 5 1 0 1 1 131 Frame8: B 7 4 0.68 0 0 02 4 -1 -3 -7 1 1 -2 5 1 1 1 1 030 Frame7: B 5 4 0.68 0 0 1 2 4 -1 -5 1 3 1 1 5 1 0 1 1 1 31 Frame8: B 7 4 0.68 0 0 1 2 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 32 32 33 33 #=========== Motion Search ============= … … 86 86 87 87 #============ Tiles ================ 88 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array88 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 89 89 # 1: the column and row boundaries are distributed uniformly 90 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 191 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)92 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 193 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)90 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 91 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 92 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 93 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 94 94 95 95 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/HEVC/HM/encoder_randomaccess_main10.cfg
r872 r1084 19 19 #======== Coding Structure ============= 20 20 IntraPeriod : 32 # Period of I-Frame ( -1 = only first) 21 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR21 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 22 22 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 23 23 # Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs … … 25 25 Frame2: B 4 2 0.3536 0 0 0 2 3 -4 -6 4 1 4 5 1 1 0 0 1 26 26 Frame3: B 2 3 0.3536 0 0 0 2 4 -2 -4 2 6 1 2 4 1 1 1 1 27 Frame4: B 1 4 0.68 0 0 02 4 -1 1 3 7 1 1 5 1 0 1 1 128 Frame5: B 3 4 0.68 0 0 02 4 -1 -3 1 5 1 -2 5 1 1 1 1 027 Frame4: B 1 4 0.68 0 0 1 2 4 -1 1 3 7 1 1 5 1 0 1 1 1 28 Frame5: B 3 4 0.68 0 0 1 2 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 29 29 Frame6: B 6 3 0.3536 0 0 0 2 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 30 Frame7: B 5 4 0.68 0 0 02 4 -1 -5 1 3 1 1 5 1 0 1 1 131 Frame8: B 7 4 0.68 0 0 02 4 -1 -3 -7 1 1 -2 5 1 1 1 1 030 Frame7: B 5 4 0.68 0 0 1 2 4 -1 -5 1 3 1 1 5 1 0 1 1 1 31 Frame8: B 7 4 0.68 0 0 1 2 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 32 32 33 33 #=========== Motion Search ============= … … 86 86 87 87 #============ Tiles ================ 88 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array88 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 89 89 # 1: the column and row boundaries are distributed uniformly 90 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 191 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)92 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 193 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)90 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 91 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 92 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 93 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 94 94 95 95 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/HEVC/HM/misc/encoder_randomaccess_field_coding.cfg
r872 r1084 36 36 #======== Coding Structure ============= 37 37 IntraPeriod : 32 # Period of I-Frame ( -1 = only first) 38 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR38 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 39 39 GOPSize : 16 # GOP Size (number of B slice = GOPSize-1) 40 40 … … 113 113 114 114 #============ Tiles ================ 115 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array115 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 116 116 # 1: the column and row boundaries are distributed uniformly 117 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1118 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)119 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1120 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)117 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 118 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 119 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 120 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 121 121 122 122 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/MV-HEVC/NonCTC/layerwise_startup_IBP_3view.cfg
r1066 r1084 44 44 #======== Coding Structure ============= 45 45 IntraPeriod : 8 16 12 # Period of I-Frame ( -1 = only first) 46 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR// Currently only working for CDR46 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI // Currently only working for CDR 47 47 GOPSize : 4 # GOP Size (number of B slice = GOPSize-1) 48 48 # QPfactor betaOffsetDiv2 #ref_pics_active reference pictures deltaRPS reference idcs ilPredLayerIdc refLayerPicPosIl_L1 -
trunk/cfg/MV-HEVC/baseCfg_2view.cfg
r1066 r1084 63 63 #======== Coding Structure ============= 64 64 IntraPeriod : 24 # Period of I-Frame ( -1 = only first) 65 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR65 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 66 66 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 67 67 … … 143 143 144 144 #============ Tiles ================ 145 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array145 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 146 146 # 1: the column and row boundaries are distributed uniformly 147 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1148 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)149 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1150 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)147 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 148 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 149 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 150 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 151 151 152 152 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/MV-HEVC/baseCfg_3view.cfg
r1066 r1084 78 78 #======== Coding Structure ============= 79 79 IntraPeriod : 24 # Period of I-Frame ( -1 = only first) 80 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR80 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 81 81 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 82 82 … … 168 168 169 169 #============ Tiles ================ 170 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array170 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 171 171 # 1: the column and row boundaries are distributed uniformly 172 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1173 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)174 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1175 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)172 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 173 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 174 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 175 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 176 176 177 177 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/cfg/MV-HEVC/fullCfg.cfg
r1066 r1084 153 153 #======== Coding Structure ============= 154 154 IntraPeriod : 24 # Period of I-Frame ( -1 = only first) 155 DecodingRefreshType : 1 # Random Accesss 0:none, 1:C DR, 2:IDR155 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI 156 156 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 157 157 … … 274 274 275 275 #============ Tiles ================ 276 UniformSpacingIdc : 0 # 0: the column boundaries are indicated by ColumnWidth array, the row boundaries are indicated byRowHeight array276 TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array 277 277 # 1: the column and row boundaries are distributed uniformly 278 NumTileColumnsMinus1 : 0 # Number of columns in a picture minus 1279 ColumnWidthArray : 2 3 # Array containing ColumnWidth values in units of LCU (from left to right in picture)280 NumTileRowsMinus1 : 0 # Number of rows in a picture minus 1281 RowHeightArray : 2 # Array containing RowHeight values in units of LCU (from top to bottom in picture)278 NumTileColumnsMinus1 : 0 # Number of tile columns in a picture minus 1 279 TileColumnWidthArray : 2 3 # Array containing tile column width values in units of CTU (from left to right in picture) 280 NumTileRowsMinus1 : 0 # Number of tile rows in a picture minus 1 281 TileRowHeightArray : 2 # Array containing tile row height values in units of CTU (from top to bottom in picture) 282 282 283 283 LFCrossTileBoundaryFlag : 1 # In-loop filtering is across or not across tile boundary. -
trunk/source/App/TAppDecoder/TAppDecCfg.cpp
r1066 r1084 95 95 ("RespectDefDispWindow,w", m_respectDefDispWindow, 0, "Only output content inside the default display window\n") 96 96 #if H_MV 97 #if H_MV_HLS10_GEN_FIX98 97 ("OutputVpsInfo,v", m_outputVpsInfo, false, "Output information about the layer dependencies and layer sets") 99 #endif100 98 #endif 101 99 ; -
trunk/source/App/TAppDecoder/TAppDecCfg.h
r1066 r1084 80 80 81 81 #if H_MV 82 #if H_MV_HLS10_GEN_FIX83 82 Bool m_outputVpsInfo; ///< Output VPS information 84 #endif85 83 Void xAppendToFileNameEnd( Char* pchInputFileName, const Char* pchStringToAppend, Char*& rpchOutputFileName); ///< create filenames 86 84 #endif -
trunk/source/App/TAppDecoder/TAppDecTop.cpp
r1066 r1084 257 257 m_targetDecLayerIdSet = vps->getTargetDecLayerIdList( m_targetOptLayerSetIdx ); 258 258 } 259 #if H_MV_HLS10_GEN_FIX260 259 if (m_outputVpsInfo ) 261 260 { 262 #if H_MV_HLS10_AUX263 261 m_vps->printScalabilityId(); 264 #endif265 262 m_vps->printLayerDependencies(); 266 263 m_vps->printLayerSets(); 267 264 m_vps->printPTL(); 268 265 } 269 #endif270 266 } 271 267 #if H_3D … … 580 576 Int dpbFullness = 0; 581 577 #if H_MV 582 #if H_MV_HLS10_ADD_LAYERSETS583 578 TComSPS* activeSPS = m_tDecTop[ decIdx ]->getActiveSPS(); 584 #else585 // preliminary fix586 TComSPS* activeSPS = m_tDecTop[0]->getActiveSPS();587 #endif588 579 #else 589 580 TComSPS* activeSPS = m_cTDecTop.getActiveSPS(); … … 1155 1146 Int curLayerId = m_tDecTop[dIdx]->getLayerId(); 1156 1147 Int curLayerIdxInVps = m_vps->getLayerIdInNuh( curLayerId ); 1157 #if H_MV_HLS10_REF_PRED_LAYERS1158 1148 if ( m_vps->getDependencyFlag(optLayerIdxInVps, curLayerIdxInVps ) ) 1159 #else1160 if ( m_vps->getInDirectDependencyFlag(optLayerIdxInVps, curLayerIdxInVps ) )1161 #endif1162 1149 { 1163 1150 TComPic* curPic = m_ivPicLists.getPic( curLayerId, pocLastPic ); -
trunk/source/App/TAppEncoder/TAppEncCfg.cpp
r1066 r1084 72 72 #endif 73 73 , m_pchdQPFile() 74 , m_pColumnWidth()75 , m_pRowHeight()76 74 , m_scalingListFile() 77 75 { … … 139 137 #endif 140 138 free(m_pchdQPFile); 141 free(m_pColumnWidth);142 free(m_pRowHeight);143 139 free(m_scalingListFile); 144 140 #if H_MV … … 241 237 {"main-still-picture", Profile::MAINSTILLPICTURE}, 242 238 #if H_MV 243 #if H_MV_HLS10_PTL244 239 {"multiview-main", Profile::MULTIVIEWMAIN}, 245 240 #if H_3D … … 247 242 #endif 248 243 249 #else250 {"main-stereo", Profile::MAINSTEREO},251 {"main-multiview", Profile::MAINMULTIVIEW},252 #if H_3D253 {"main-3d" , Profile::MAIN3D},254 #endif255 #endif256 244 #endif 257 245 }; … … 341 329 #if H_MV 342 330 vector<Int> cfg_dimensionLength; 343 #if H_MV_HLS10_PTL344 331 string cfg_profiles; 345 332 string cfg_levels; 346 333 string cfg_tiers; 347 #endif348 334 #if H_3D 349 335 cfg_dimensionLength.push_back( 2 ); // depth … … 354 340 #endif 355 341 string cfg_dQPFile; 356 string cfg _ColumnWidth;357 string cfg _RowHeight;342 string cfgColumnWidth; 343 string cfgRowHeight; 358 344 string cfg_ScalingListFile; 359 345 string cfg_startOfCodedInterval; … … 380 366 ("NumberOfLayers", m_numberOfLayers , 1, "Number of layers") 381 367 #if !H_3D 382 #if H_MV_HLS10_AUX383 368 ("ScalabilityMask", m_scalabilityMask , 2 , "Scalability Mask: 2: Multiview, 8: Auxiliary, 10: Multiview + Auxiliary") 384 #else385 ("ScalabilityMask", m_scalabilityMask , 2 , "Scalability Mask")386 #endif387 369 #else 388 370 ("ScalabilityMask", m_scalabilityMask , 3 , "Scalability Mask, 1: Texture 3: Texture + Depth ") … … 391 373 ("ViewOrderIndex", m_viewOrderIndex , std::vector<Int>(1,0), "View Order Index per layer") 392 374 ("ViewId", m_viewId , std::vector<Int>(1,0), "View Id per View Order Index") 393 #if H_MV_HLS10_AUX394 375 ("AuxId", m_auxId , std::vector<Int>(1,0), "AuxId per layer") 395 #endif396 376 #if H_3D 397 377 ("DepthFlag", m_depthFlag , std::vector<Int>(1,0), "Depth Flag") 398 378 #if H_3D_DIM 399 379 ("DMM", m_useDMM, true, "Depth intra model modes") 400 #if SEPARATE_FLAG_I0085401 380 ("IVP", m_useIVP, true, "intra-view prediction") 402 #endif403 381 ("SDC", m_useSDC, true, "Simplified depth coding") 404 382 ("DLT", m_useDLT, true, "Depth lookup table") 405 383 #endif 406 #if MTK_SINGLE_DEPTH_MODE_I0095384 #if H_3D 407 385 ("SingleDepthMode", m_useSingleDepthMode, true, "Single depth mode") 408 386 #endif 409 387 #endif 410 #if H_MV_HLS10_GEN_FIX411 388 ("TargetEncLayerIdList", m_targetEncLayerIdList, std::vector<Int>(0,0), "LayerIds in Nuh to be encoded") 412 #endif413 389 ("LayerIdInNuh", m_layerIdInNuh , std::vector<Int>(1,0), "LayerId in Nuh") 414 390 ("SplittingFlag", m_splittingFlag , false , "Splitting Flag") … … 417 393 ("VpsNumLayerSets", m_vpsNumLayerSets , 1 , "Number of layer sets") 418 394 ("LayerIdsInSet_%d", m_layerIdsInSets , std::vector<Int>(1,0), MAX_VPS_OP_SETS_PLUS1 ,"LayerIds of Layer set") 419 #if H_MV_HLS10_ADD_LAYERSETS420 395 ("NumAddLayerSets" , m_numAddLayerSets , 0 , "NumAddLayerSets ") 421 396 ("HighestLayerIdxPlus1_%d", m_highestLayerIdxPlus1, std::vector< Int >(0,0) ,MAX_VPS_NUM_ADD_LAYER_SETS, "HighestLayerIdxPlus1") 422 #endif423 397 ("DefaultTargetOutputLayerIdc" , m_defaultOutputLayerIdc , 0, "Specifies output layers of layer sets, 0: output all layers, 1: output highest layer, 2: specified by LayerIdsInDefOutputLayerSet") 424 398 ("OutputLayerSetIdx", m_outputLayerSetIdx , std::vector<Int>(0,0), "Indices of layer sets used as additional output layer sets") … … 428 402 ("AltOutputLayerFlag", m_altOutputLayerFlag , std::vector<Bool>(1,0), "Alt output layer flag") 429 403 430 #if H_MV_HLS10_PTL431 404 ("ProfileTierLevelIdx_%d", m_profileTierLevelIdx, std::vector<Int>(0), MAX_NUM_LAYERS, "Indices to profile level tier for ols") 432 #else433 ("ProfileLevelTierIdx", m_profileLevelTierIdx, std::vector<Int>(1,0), "Indices to profile level tier")434 #endif435 405 // Layer dependencies 436 406 ("DirectRefLayers_%d", m_directRefLayers , std::vector<Int>(0,0), MAX_NUM_LAYERS, "LayerIds of direct reference layers") … … 446 416 ("OutputBitDepthC", m_outputBitDepthC, 0, "As per OutputBitDepth but for chroma component. (default:InternalBitDepthC)") 447 417 ("InternalBitDepthC", m_internalBitDepthC, 0, "As per InternalBitDepth but for chroma component. (default:IntrenalBitDepth)") 448 ("ConformanceMode", m_conformanceMode, 0, "Window conformance mode (0: no window, 1:automatic padding, 2:padding, 3:conformance") 418 ("ConformanceMode", m_conformanceWindowMode, 0, "Deprecated alias of ConformanceWindowMode") 419 ("ConformanceWindowMode", m_conformanceWindowMode, 0, "Window conformance mode (0: no window, 1:automatic padding, 2:padding, 3:conformance") 449 420 ("HorizontalPadding,-pdx",m_aiPad[0], 0, "Horizontal source padding for conformance window mode 2") 450 421 ("VerticalPadding,-pdy", m_aiPad[1], 0, "Vertical source padding for conformance window mode 2") 451 ("ConfLeft", m_confLeft, 0, "Left offset for window conformance mode 3") 452 ("ConfRight", m_confRight, 0, "Right offset for window conformance mode 3") 453 ("ConfTop", m_confTop, 0, "Top offset for window conformance mode 3") 454 ("ConfBottom", m_confBottom, 0, "Bottom offset for window conformance mode 3") 422 ("ConfLeft", m_confWinLeft, 0, "Deprecated alias of ConfWinLeft") 423 ("ConfRight", m_confWinRight, 0, "Deprecated alias of ConfWinRight") 424 ("ConfTop", m_confWinTop, 0, "Deprecated alias of ConfWinTop") 425 ("ConfBottom", m_confWinBottom, 0, "Deprecated alias of ConfWinBottom") 426 ("ConfWinLeft", m_confWinLeft, 0, "Left offset for window conformance mode 3") 427 ("ConfWinRight", m_confWinRight, 0, "Right offset for window conformance mode 3") 428 ("ConfWinTop", m_confWinTop, 0, "Top offset for window conformance mode 3") 429 ("ConfWinBottom", m_confWinBottom, 0, "Bottom offset for window conformance mode 3") 455 430 ("FrameRate,-fr", m_iFrameRate, 0, "Frame rate") 456 431 ("FrameSkip,-fs", m_FrameSkip, 0u, "Number of frames to skip at start of input YUV") … … 462 437 463 438 // Profile and level 464 #if H_MV _HLS10_PTL439 #if H_MV 465 440 ("Profile", cfg_profiles, string(""), "Profile in VpsProfileTierLevel (Indication only)") 466 441 ("Level", cfg_levels , string(""), "Level indication in VpsProfileTierLevel (Indication only)") … … 609 584 ("WeightedPredB,-wpB", m_useWeightedBiPred, false, "Use weighted (bidirectional) prediction in B slices") 610 585 ("Log2ParallelMergeLevel", m_log2ParallelMergeLevel, 2u, "Parallel merge estimation region") 611 ("UniformSpacingIdc", m_iUniformSpacingIdr, 0, "Indicates if the column and row boundaries are distributed uniformly") 612 ("NumTileColumnsMinus1", m_iNumColumnsMinus1, 0, "Number of columns in a picture minus 1") 613 ("ColumnWidthArray", cfg_ColumnWidth, string(""), "Array containing ColumnWidth values in units of LCU") 614 ("NumTileRowsMinus1", m_iNumRowsMinus1, 0, "Number of rows in a picture minus 1") 615 ("RowHeightArray", cfg_RowHeight, string(""), "Array containing RowHeight values in units of LCU") 586 587 //deprecated copies of renamed tile parameters 588 ("UniformSpacingIdc", m_tileUniformSpacingFlag, false, "deprecated alias of TileUniformSpacing") 589 ("ColumnWidthArray", cfgColumnWidth, string(""), "deprecated alias of TileColumnWidthArray") 590 ("RowHeightArray", cfgRowHeight, string(""), "deprecated alias of TileRowHeightArray") 591 592 ("TileUniformSpacing", m_tileUniformSpacingFlag, false, "Indicates that tile columns and rows are distributed uniformly") 593 ("NumTileColumnsMinus1", m_numTileColumnsMinus1, 0, "Number of tile columns in a picture minus 1") 594 ("NumTileRowsMinus1", m_numTileRowsMinus1, 0, "Number of rows in a picture minus 1") 595 ("TileColumnWidthArray", cfgColumnWidth, string(""), "Array containing tile column width values in units of LCU") 596 ("TileRowHeightArray", cfgRowHeight, string(""), "Array containing tile row height values in units of LCU") 616 597 ("LFCrossTileBoundaryFlag", m_bLFCrossTileBoundaryFlag, true, "1: cross-tile-boundary loop filtering. 0:non-cross-tile-boundary loop filtering") 617 598 ("WaveFrontSynchro", m_iWaveFrontSynchro, 0, "0: no synchro; 1 synchro with TR; 2 TRR etc") … … 650 631 #endif 651 632 #if H_MV 652 #if H_MV_HLS10_GEN_FIX653 633 // A lot of this stuff could should actually be derived by the encoder. 654 #endif // H_MV_HLS10_GEN655 634 // VPS VUI 656 635 ("VpsVuiPresentFlag" , m_vpsVuiPresentFlag , false , "VpsVuiPresentFlag ") … … 676 655 ("CtuBasedOffsetEnabledFlag" , m_ctuBasedOffsetEnabledFlag , std::vector< Bool >(1,0) ,MAX_NUM_LAYERS , "CtuBasedOffsetEnabledFlag per direct reference for the N-th layer") 677 656 ("MinHorizontalCtuOffsetPlus1" , m_minHorizontalCtuOffsetPlus1 , std::vector< Int >(1,0) ,MAX_NUM_LAYERS , "MinHorizontalCtuOffsetPlus1 per direct reference for the N-th layer") 678 #if H_MV_HLS10_VPS_VUI679 657 ("SingleLayerForNonIrapFlag", m_singleLayerForNonIrapFlag, false , "SingleLayerForNonIrapFlag") 680 658 ("HigherLayerIrapSkipFlag" , m_higherLayerIrapSkipFlag , false , "HigherLayerIrapSkipFlag ") 681 #endif682 659 #endif 683 660 … … 699 676 ("ColourDescriptionPresent", m_colourDescriptionPresentFlag, false, "Signals whether colour_primaries, transfer_characteristics and matrix_coefficients are present") 700 677 ("ColourPrimaries", m_colourPrimaries, 2, "Indicates chromaticity coordinates of the source primaries") 701 ("TransferChara teristics",m_transferCharacteristics, 2, "Indicates the opto-electronic transfer characteristics of the source")678 ("TransferCharacteristics", m_transferCharacteristics, 2, "Indicates the opto-electronic transfer characteristics of the source") 702 679 ("MatrixCoefficients", m_matrixCoefficients, 2, "Describes the matrix coefficients used in deriving luma and chroma from RGB primaries") 703 680 ("ChromaLocInfoPresent", m_chromaLocInfoPresentFlag, false, "Signals whether chroma_sample_loc_type_top_field and chroma_sample_loc_type_bottom_field are present") … … 786 763 ("SEISubBitstreamMaxBitRate", m_sbPropMaxBitRate, std::vector< Int >(1,0) ,"Specifies maximum bit rate of the i-th sub-bitstream") 787 764 788 #if H_MV_HLS10_GEN_FIX789 765 ("OutputVpsInfo", m_outputVpsInfo, false ,"Output information about the layer dependencies and layer sets") 790 #endif791 766 #endif 792 767 #if H_3D … … 814 789 815 790 #endif //HHI_VSO 816 #if MTK_I0099_VPS_EX2791 #if H_3D_QTLPC 817 792 ("LimQtPredFlag", m_bLimQtPredFlag , true , "Use Predictive Coding with QTL" ) 818 #endif819 #if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX820 #if H_3D_QTLPC821 793 ("QTL", m_bUseQTL , true , "Use depth Quadtree Limitation" ) 822 #if !MTK_I0099_VPS_EX2823 ("PC", m_bUsePC , true , "Use Predictive Coding with QTL" )824 #endif825 #endif826 794 #endif 827 795 #if H_3D_IV_MERGE … … 928 896 m_pchdQPFile = cfg_dQPFile.empty() ? NULL : strdup(cfg_dQPFile.c_str()); 929 897 930 Char* pColumnWidth = cfg_ColumnWidth.empty() ? NULL: strdup(cfg_ColumnWidth.c_str()); 931 Char* pRowHeight = cfg_RowHeight.empty() ? NULL : strdup(cfg_RowHeight.c_str()); 932 if( m_iUniformSpacingIdr == 0 && m_iNumColumnsMinus1 > 0 ) 933 { 934 char *columnWidth; 898 Char* pColumnWidth = cfgColumnWidth.empty() ? NULL: strdup(cfgColumnWidth.c_str()); 899 Char* pRowHeight = cfgRowHeight.empty() ? NULL : strdup(cfgRowHeight.c_str()); 900 901 if( !m_tileUniformSpacingFlag && m_numTileColumnsMinus1 > 0 ) 902 { 903 char *str; 935 904 int i=0; 936 m_ pColumnWidth = new UInt[m_iNumColumnsMinus1];937 columnWidth= strtok(pColumnWidth, " ,-");938 while( columnWidth!=NULL)939 { 940 if( i >=m_iNumColumnsMinus1 )905 m_tileColumnWidth.resize( m_numTileColumnsMinus1 ); 906 str = strtok(pColumnWidth, " ,-"); 907 while(str!=NULL) 908 { 909 if( i >= m_numTileColumnsMinus1 ) 941 910 { 942 911 printf( "The number of columns whose width are defined is larger than the allowed number of columns.\n" ); 943 912 exit( EXIT_FAILURE ); 944 913 } 945 *( m_pColumnWidth + i ) = atoi( columnWidth);946 columnWidth= strtok(NULL, " ,-");914 m_tileColumnWidth[i] = atoi( str ); 915 str = strtok(NULL, " ,-"); 947 916 i++; 948 917 } 949 if( i <m_iNumColumnsMinus1 )918 if( i < m_numTileColumnsMinus1 ) 950 919 { 951 920 printf( "The width of some columns is not defined.\n" ); … … 955 924 else 956 925 { 957 m_ pColumnWidth = NULL;958 } 959 960 if( m_iUniformSpacingIdr == 0 && m_iNumRowsMinus1 > 0 )961 { 962 char * rowHeight;926 m_tileColumnWidth.clear(); 927 } 928 929 if( !m_tileUniformSpacingFlag && m_numTileRowsMinus1 > 0 ) 930 { 931 char *str; 963 932 int i=0; 964 m_ pRowHeight = new UInt[m_iNumRowsMinus1];965 rowHeight= strtok(pRowHeight, " ,-");966 while( rowHeight!=NULL)967 { 968 if( i>=m_ iNumRowsMinus1 )933 m_tileRowHeight.resize(m_numTileRowsMinus1); 934 str = strtok(pRowHeight, " ,-"); 935 while(str!=NULL) 936 { 937 if( i>=m_numTileRowsMinus1 ) 969 938 { 970 939 printf( "The number of rows whose height are defined is larger than the allowed number of rows.\n" ); 971 940 exit( EXIT_FAILURE ); 972 941 } 973 *( m_pRowHeight + i ) = atoi( rowHeight);974 rowHeight= strtok(NULL, " ,-");942 m_tileRowHeight[i] = atoi( str ); 943 str = strtok(NULL, " ,-"); 975 944 i++; 976 945 } 977 if( i <m_iNumRowsMinus1 )946 if( i < m_numTileRowsMinus1 ) 978 947 { 979 948 printf( "The height of some rows is not defined.\n" ); … … 983 952 else 984 953 { 985 m_ pRowHeight = NULL;954 m_tileRowHeight.clear(); 986 955 } 987 956 #if H_MV … … 999 968 1000 969 // TODO:ChromaFmt assumes 4:2:0 below 1001 switch (m_conformance Mode)970 switch (m_conformanceWindowMode) 1002 971 { 1003 972 case 0: 1004 973 { 1005 974 // no conformance or padding 1006 m_conf Left = m_confRight = m_confTop = m_confBottom = 0;975 m_confWinLeft = m_confWinRight = m_confWinTop = m_confWinBottom = 0; 1007 976 m_aiPad[1] = m_aiPad[0] = 0; 1008 977 break; … … 1014 983 if (m_iSourceWidth % minCuSize) 1015 984 { 1016 m_aiPad[0] = m_conf Right = ((m_iSourceWidth / minCuSize) + 1) * minCuSize - m_iSourceWidth;1017 m_iSourceWidth += m_conf Right;985 m_aiPad[0] = m_confWinRight = ((m_iSourceWidth / minCuSize) + 1) * minCuSize - m_iSourceWidth; 986 m_iSourceWidth += m_confWinRight; 1018 987 } 1019 988 if (m_iSourceHeight % minCuSize) 1020 989 { 1021 m_aiPad[1] = m_conf Bottom = ((m_iSourceHeight / minCuSize) + 1) * minCuSize - m_iSourceHeight;1022 m_iSourceHeight += m_conf Bottom;990 m_aiPad[1] = m_confWinBottom = ((m_iSourceHeight / minCuSize) + 1) * minCuSize - m_iSourceHeight; 991 m_iSourceHeight += m_confWinBottom; 1023 992 if ( m_isField ) 1024 993 { 1025 m_iSourceHeightOrg += m_conf Bottom << 1;1026 m_aiPad[1] = m_conf Bottom << 1;994 m_iSourceHeightOrg += m_confWinBottom << 1; 995 m_aiPad[1] = m_confWinBottom << 1; 1027 996 } 1028 997 } … … 1044 1013 m_iSourceWidth += m_aiPad[0]; 1045 1014 m_iSourceHeight += m_aiPad[1]; 1046 m_conf Right = m_aiPad[0];1047 m_conf Bottom = m_aiPad[1];1015 m_confWinRight = m_aiPad[0]; 1016 m_confWinBottom = m_aiPad[1]; 1048 1017 break; 1049 1018 } … … 1051 1020 { 1052 1021 // conformance 1053 if ((m_conf Left == 0) && (m_confRight == 0) && (m_confTop == 0) && (m_confBottom == 0))1022 if ((m_confWinLeft == 0) && (m_confWinRight == 0) && (m_confWinTop == 0) && (m_confWinBottom == 0)) 1054 1023 { 1055 1024 fprintf(stderr, "Warning: Conformance window enabled, but all conformance window parameters set to zero\n"); … … 1082 1051 } 1083 1052 m_iNumberOfViews = (Int) uniqueViewOrderIndices.size(); 1084 #if H_MV_HLS10_AUX1085 1053 xResizeVector( m_auxId ); 1086 #endif1087 1054 1088 1055 #if H_3D … … 1118 1085 xResizeVector( m_wppInUseFlag ); 1119 1086 1120 #if H_MV_HLS10_ADD_LAYERSETS1121 1087 for (Int olsIdx = 0; olsIdx < m_vpsNumLayerSets + m_numAddLayerSets + (Int) m_outputLayerSetIdx.size(); olsIdx++) 1122 #else1123 for (Int olsIdx = 0; olsIdx < m_vpsNumLayerSets + (Int) m_outputLayerSetIdx.size(); olsIdx++)1124 #endif1125 1088 { 1126 1089 m_altOutputLayerFlag.push_back( false ); … … 1234 1197 1235 1198 #if H_MV 1236 #if H_MV_HLS10_PTL1237 1199 // parse PTL 1238 1200 Bool anyEmpty = false; … … 1281 1243 xReadStrToEnum( cfg_levels, m_level ); 1282 1244 xReadStrToEnum( cfg_tiers , m_levelTier ); 1283 #endif1284 1245 #endif 1285 1246 #if H_3D … … 1399 1360 1400 1361 1401 #if !H_MV _HLS10_PTL1362 #if !H_MV 1402 1363 if( m_profile==Profile::NONE ) 1403 1364 { … … 1431 1392 xConfirmPara( m_scalabilityMask != 2 && m_scalabilityMask != 3, "Scalability Mask must be equal to 2 or 3. "); 1432 1393 #else 1433 #if H_MV_HLS10_AUX1434 1394 xConfirmPara( m_scalabilityMask != 2 && m_scalabilityMask != 8 && m_scalabilityMask != 10, "Scalability Mask must be equal to 2, 8 or 10"); 1435 #else1436 xConfirmPara( m_scalabilityMask != 2 , "Scalability Mask must be equal to 2. ");1437 #endif1438 1395 #endif 1439 1396 … … 1446 1403 1447 1404 m_dimIds.push_back( m_viewOrderIndex ); 1448 #if H_MV_HLS10_AUX1449 1405 for (Int i = 0; i < m_auxId.size(); i++) 1450 1406 { … … 1455 1411 m_dimIds.push_back ( m_auxId ); 1456 1412 } 1457 #endif1458 1413 xConfirmPara( m_dimensionIdLen.size() < m_dimIds.size(), "DimensionIdLen must be given for all dimensions. " ); 1459 1414 Int dimBitOffset[MAX_NUM_SCALABILITY_TYPES+1]; … … 1540 1495 for ( Int i = 0; i < m_layerIdsInSets[lsIdx].size(); i++ ) 1541 1496 { 1542 #if FIX_TICKET_611543 1497 xConfirmPara( m_layerIdsInSets[lsIdx][i] < 0 || m_layerIdsInSets[lsIdx][i] >= MAX_NUM_LAYER_IDS, "LayerIdsInSet must be greater than 0 and less than MAX_NUM_LAYER_IDS" ); 1544 #else1545 xConfirmPara( m_layerIdsInSets[lsIdx][i] < 0 || m_layerIdsInSets[lsIdx].size() >= MAX_NUM_LAYER_IDS, "LayerIdsInSet must be greater than and less than MAX_NUM_LAYER_IDS" );1546 #endif1547 1498 } 1548 1499 } … … 1553 1504 { 1554 1505 Int refLayerSetIdx = m_outputLayerSetIdx[ lsIdx ]; 1555 #if H_MV_HLS10_ADD_LAYERSETS1556 1506 xConfirmPara( refLayerSetIdx < 0 || refLayerSetIdx >= m_vpsNumLayerSets + m_numAddLayerSets, "Output layer set idx must be greater or equal to 0 and less than the VpsNumLayerSets plus NumAddLayerSets." ); 1557 #else1558 xConfirmPara( refLayerSetIdx < 0 || refLayerSetIdx >= m_vpsNumLayerSets, "Output layer set idx must be greater or equal to 0 and less than the VpsNumLayerSets." );1559 #endif1560 #if !H_MV_HLS10_ADD_LAYERSETS1561 for (Int i = 0; i < m_layerIdsInAddOutputLayerSet[ lsIdx ].size(); i++)1562 {1563 Bool isAlsoInLayerSet = false;1564 for (Int j = 0; j < m_layerIdsInSets[ refLayerSetIdx ].size(); j++ )1565 {1566 if ( m_layerIdsInSets[ refLayerSetIdx ][ j ] == m_layerIdsInAddOutputLayerSet[ lsIdx ][ i ] )1567 {1568 isAlsoInLayerSet = true;1569 break;1570 }1571 }1572 xConfirmPara( !isAlsoInLayerSet, "All output layers of a output layer set be included in corresponding layer set.");1573 }1574 #endif1575 1507 } 1576 1508 … … 1584 1516 anyDefaultOutputFlag = anyDefaultOutputFlag || ( m_layerIdsInDefOutputLayerSet[lsIdx].size() != 0 ); 1585 1517 } 1586 #if H_MV_HLS10_ADD_LAYERSETS1587 1518 if ( anyDefaultOutputFlag ) 1588 1519 { 1589 1520 printf( "\nWarning: Ignoring LayerIdsInDefOutputLayerSet parameters, since defaultTargetOuputLayerIdc is not equal 2.\n" ); 1590 1521 } 1591 #else1592 printf( "\nWarning: Ignoring LayerIdsInDefOutputLayerSet parameters, since defaultTargetOuputLayerIdc is not equal 2.\n" );1593 #endif1594 1522 } 1595 1523 else … … 1613 1541 } 1614 1542 1615 #if H_MV_HLS10_ADD_LAYERSETS1616 1543 xConfirmPara( m_altOutputLayerFlag.size() < m_vpsNumLayerSets + m_numAddLayerSets + m_outputLayerSetIdx.size(), "The number of alt output layer flags must be equal to the number of layer set additional output layer sets plus the number of output layer set indices" ); 1617 #else1618 xConfirmPara( m_altOutputLayerFlag.size() < m_vpsNumLayerSets + m_outputLayerSetIdx.size(), "The number of Profile Level Tier indices must be equal to the number of layer set plus the number of output layer set indices" );1619 #endif1620 1544 1621 1545 // PTL 1622 #if H_MV_HLS10_PTL1623 1546 xConfirmPara( ( m_profile.size() != m_inblFlag.size() || m_profile.size() != m_level.size() || m_profile.size() != m_levelTier.size() ), "The number of Profiles, Levels, Tiers and InblFlags must be equal." ); 1624 1547 … … 1633 1556 } 1634 1557 } 1635 #else1636 xConfirmPara( m_profileLevelTierIdx.size() < m_vpsNumLayerSets + m_outputLayerSetIdx.size(), "The number of Profile Level Tier indices must be equal to the number of layer set plus the number of output layer set indices" );1637 #endif1638 1558 1639 1559 // Layer Dependencies … … 1768 1688 } 1769 1689 1770 Bool tileFlag = (m_ iNumColumnsMinus1 > 0 || m_iNumRowsMinus1 > 0 );1690 Bool tileFlag = (m_numTileColumnsMinus1 > 0 || m_numTileRowsMinus1 > 0 ); 1771 1691 xConfirmPara( tileFlag && m_iWaveFrontSynchro, "Tile and Wavefront can not be applied together"); 1772 1692 … … 1778 1698 xConfirmPara( m_aiPad[1] % TComSPS::getWinUnitY(CHROMA_420) != 0, "Vertical padding must be an integer multiple of the specified chroma subsampling"); 1779 1699 1780 xConfirmPara( m_confLeft % TComSPS::getWinUnitX(CHROMA_420) != 0, "Left conformance window offset must be an integer multiple of the specified chroma subsampling"); 1781 xConfirmPara( m_confRight % TComSPS::getWinUnitX(CHROMA_420) != 0, "Right conformance window offset must be an integer multiple of the specified chroma subsampling"); 1782 xConfirmPara( m_confTop % TComSPS::getWinUnitY(CHROMA_420) != 0, "Top conformance window offset must be an integer multiple of the specified chroma subsampling"); 1783 xConfirmPara( m_confBottom % TComSPS::getWinUnitY(CHROMA_420) != 0, "Bottom conformance window offset must be an integer multiple of the specified chroma subsampling"); 1700 xConfirmPara( m_confWinLeft % TComSPS::getWinUnitX(CHROMA_420) != 0, "Left conformance window offset must be an integer multiple of the specified chroma subsampling"); 1701 xConfirmPara( m_confWinRight % TComSPS::getWinUnitX(CHROMA_420) != 0, "Right conformance window offset must be an integer multiple of the specified chroma subsampling"); 1702 xConfirmPara( m_confWinTop % TComSPS::getWinUnitY(CHROMA_420) != 0, "Top conformance window offset must be an integer multiple of the specified chroma subsampling"); 1703 xConfirmPara( m_confWinBottom % TComSPS::getWinUnitY(CHROMA_420) != 0, "Bottom conformance window offset must be an integer multiple of the specified chroma subsampling"); 1704 1705 xConfirmPara( m_defaultDisplayWindowFlag && !m_vuiParametersPresentFlag, "VUI needs to be enabled for default display window"); 1706 1707 if (m_defaultDisplayWindowFlag) 1708 { 1709 xConfirmPara( m_defDispWinLeftOffset % TComSPS::getWinUnitX(CHROMA_420) != 0, "Left default display window offset must be an integer multiple of the specified chroma subsampling"); 1710 xConfirmPara( m_defDispWinRightOffset % TComSPS::getWinUnitX(CHROMA_420) != 0, "Right default display window offset must be an integer multiple of the specified chroma subsampling"); 1711 xConfirmPara( m_defDispWinTopOffset % TComSPS::getWinUnitY(CHROMA_420) != 0, "Top default display window offset must be an integer multiple of the specified chroma subsampling"); 1712 xConfirmPara( m_defDispWinBottomOffset % TComSPS::getWinUnitY(CHROMA_420) != 0, "Bottom default display window offset must be an integer multiple of the specified chroma subsampling"); 1713 } 1784 1714 1785 1715 #if H_3D … … 2301 2231 Int widthInCU = (m_iSourceWidth % m_uiMaxCUWidth) ? m_iSourceWidth/m_uiMaxCUWidth + 1: m_iSourceWidth/m_uiMaxCUWidth; 2302 2232 Int heightInCU = (m_iSourceHeight % m_uiMaxCUHeight) ? m_iSourceHeight/m_uiMaxCUHeight + 1: m_iSourceHeight/m_uiMaxCUHeight; 2303 if(m_ iUniformSpacingIdr)2304 { 2305 maxTileWidth = m_uiMaxCUWidth*((widthInCU+m_ iNumColumnsMinus1)/(m_iNumColumnsMinus1+1));2306 maxTileHeight = m_uiMaxCUHeight*((heightInCU+m_ iNumRowsMinus1)/(m_iNumRowsMinus1+1));2233 if(m_tileUniformSpacingFlag) 2234 { 2235 maxTileWidth = m_uiMaxCUWidth*((widthInCU+m_numTileColumnsMinus1)/(m_numTileColumnsMinus1+1)); 2236 maxTileHeight = m_uiMaxCUHeight*((heightInCU+m_numTileRowsMinus1)/(m_numTileRowsMinus1+1)); 2307 2237 // if only the last tile-row is one treeblock higher than the others 2308 2238 // the maxTileHeight becomes smaller if the last row of treeblocks has lower height than the others 2309 if(!((heightInCU-1)%(m_ iNumRowsMinus1+1)))2239 if(!((heightInCU-1)%(m_numTileRowsMinus1+1))) 2310 2240 { 2311 2241 maxTileHeight = maxTileHeight - m_uiMaxCUHeight + (m_iSourceHeight % m_uiMaxCUHeight); … … 2313 2243 // if only the last tile-column is one treeblock wider than the others 2314 2244 // the maxTileWidth becomes smaller if the last column of treeblocks has lower width than the others 2315 if(!((widthInCU-1)%(m_ iNumColumnsMinus1+1)))2245 if(!((widthInCU-1)%(m_numTileColumnsMinus1+1))) 2316 2246 { 2317 2247 maxTileWidth = maxTileWidth - m_uiMaxCUWidth + (m_iSourceWidth % m_uiMaxCUWidth); … … 2320 2250 else // not uniform spacing 2321 2251 { 2322 if(m_ iNumColumnsMinus1<1)2252 if(m_numTileColumnsMinus1<1) 2323 2253 { 2324 2254 maxTileWidth = m_iSourceWidth; … … 2327 2257 { 2328 2258 Int accColumnWidth = 0; 2329 for(Int col=0; col<(m_ iNumColumnsMinus1); col++)2259 for(Int col=0; col<(m_numTileColumnsMinus1); col++) 2330 2260 { 2331 maxTileWidth = m_ pColumnWidth[col]>maxTileWidth ? m_pColumnWidth[col]:maxTileWidth;2332 accColumnWidth += m_ pColumnWidth[col];2261 maxTileWidth = m_tileColumnWidth[col]>maxTileWidth ? m_tileColumnWidth[col]:maxTileWidth; 2262 accColumnWidth += m_tileColumnWidth[col]; 2333 2263 } 2334 2264 maxTileWidth = (widthInCU-accColumnWidth)>maxTileWidth ? m_uiMaxCUWidth*(widthInCU-accColumnWidth):m_uiMaxCUWidth*maxTileWidth; 2335 2265 } 2336 if(m_ iNumRowsMinus1<1)2266 if(m_numTileRowsMinus1<1) 2337 2267 { 2338 2268 maxTileHeight = m_iSourceHeight; … … 2341 2271 { 2342 2272 Int accRowHeight = 0; 2343 for(Int row=0; row<(m_ iNumRowsMinus1); row++)2273 for(Int row=0; row<(m_numTileRowsMinus1); row++) 2344 2274 { 2345 maxTileHeight = m_ pRowHeight[row]>maxTileHeight ? m_pRowHeight[row]:maxTileHeight;2346 accRowHeight += m_ pRowHeight[row];2275 maxTileHeight = m_tileRowHeight[row]>maxTileHeight ? m_tileRowHeight[row]:maxTileHeight; 2276 accRowHeight += m_tileRowHeight[row]; 2347 2277 } 2348 2278 maxTileHeight = (heightInCU-accRowHeight)>maxTileHeight ? m_uiMaxCUHeight*(heightInCU-accRowHeight):m_uiMaxCUHeight*maxTileHeight; … … 2499 2429 #endif 2500 2430 #if H_MV 2501 #if H_MV_HLS10_GEN_FIX2502 2431 xPrintParaVector( "NuhLayerId" , m_layerIdInNuh ); 2503 2432 if ( m_targetEncLayerIdList.size() > 0) … … 2505 2434 xPrintParaVector( "TargetEncLayerIdList" , m_targetEncLayerIdList ); 2506 2435 } 2507 #endif2508 2436 xPrintParaVector( "ViewIdVal" , m_viewId ); 2509 2437 xPrintParaVector( "ViewOrderIndex", m_viewOrderIndex ); 2510 #if H_MV_HLS10_AUX2511 2438 xPrintParaVector( "AuxId", m_auxId ); 2512 #endif2513 2439 #endif 2514 2440 #if H_3D … … 2521 2447 xPrintParaVector( "SAO" , m_bUseSAO ); 2522 2448 #endif 2523 printf("Real Format : %dx%d %dHz\n", m_iSourceWidth - m_conf Left - m_confRight, m_iSourceHeight - m_confTop - m_confBottom, m_iFrameRate );2449 printf("Real Format : %dx%d %dHz\n", m_iSourceWidth - m_confWinLeft - m_confWinRight, m_iSourceHeight - m_confWinTop - m_confWinBottom, m_iFrameRate ); 2524 2450 printf("Internal Format : %dx%d %dHz\n", m_iSourceWidth, m_iSourceHeight, m_iFrameRate ); 2525 2451 if (m_isField) … … 2676 2602 printf("WVSO:%d ", m_bUseWVSO ); 2677 2603 #endif 2678 #if MTK_I0099_VPS_EX22604 #if H_3D_QTLPC 2679 2605 printf("LimQtPredFlag:%d ", m_bLimQtPredFlag ? 1 : 0); 2680 #endif2681 #if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX2682 #if H_3D_QTLPC2683 2606 printf("QTL:%d ", m_bUseQTL); 2684 #if !MTK_I0099_VPS_EX22685 printf("PC:%d " , m_bUsePC );2686 #endif2687 #endif2688 2607 #endif 2689 2608 #if H_3D_IV_MERGE … … 2712 2631 #if H_3D_DIM 2713 2632 printf("DMM:%d ", m_useDMM ); 2714 #if SEPARATE_FLAG_I00852715 2633 printf("IVP:%d ", m_useIVP ); 2716 #endif2717 2634 printf("SDC:%d ", m_useSDC ); 2718 2635 printf("DLT:%d ", m_useDLT ); 2719 2636 #endif 2720 #if MTK_SINGLE_DEPTH_MODE_I00952637 #if H_3D 2721 2638 printf("SingleDepthMode:%d ", m_useSingleDepthMode); 2722 2639 #endif -
trunk/source/App/TAppEncoder/TAppEncCfg.h
r1066 r1084 43 43 #include "TLibEncoder/TEncCfg.h" 44 44 #include <sstream> 45 #include <vector> 45 46 #if H_3D 46 47 #include "TAppCommon/TAppComCamPara.h" … … 78 79 std::vector<Int> m_viewId; ///< view id 79 80 std::vector<Int> m_viewOrderIndex; ///< view order index 80 #if H_MV_HLS10_AUX81 81 std::vector<Int> m_auxId; ///< auxiliary id 82 #endif83 82 #if H_3D 84 83 std::vector<Int> m_depthFlag; ///< depth flag 85 84 #endif 86 #if H_MV_HLS10_GEN_FIX87 85 std::vector<Int> m_targetEncLayerIdList; ///< layer Ids in Nuh to be encoded 88 #endif89 86 std::vector<Int> m_layerIdInNuh; ///< layer Id in Nuh for each layer 90 87 Bool m_splittingFlag; ///< Splitting Flag … … 95 92 Int m_vpsNumLayerSets; ///< Number of layer sets 96 93 std::vector< std::vector<Int> > m_layerIdsInSets; ///< LayerIds in vps of layer set 97 #if H_MV_HLS10_ADD_LAYERSETS98 94 Int m_numAddLayerSets; ///< Number of additional layer sets 99 95 std::vector< std::vector<Int> > m_highestLayerIdxPlus1; ///< HighestLayerIdxPlus1 for each additional layer set and each independent layer (value with index 0 will be ignored) 100 #endif101 96 Int m_defaultOutputLayerIdc; ///< Specifies output layers of layer sets, 0: output all layers, 1: output highest layers, 2: specified by LayerIdsInDefOuputLayerSet 102 97 std::vector<Int> m_outputLayerSetIdx; ///< Indices of layer sets used as additional output layer sets 103 98 std::vector< std::vector<Int> > m_layerIdsInAddOutputLayerSet; ///< LayerIds in vps of additional output layers 104 99 std::vector< std::vector<Int> > m_layerIdsInDefOutputLayerSet; ///< Indices in vps of output layers in layer sets 105 #if H_MV_HLS10_ADD_LAYERSETS106 100 std::vector< std::vector< Int > > m_profileTierLevelIdx; ///< Indices of of profile, per layer in layer set 107 #else108 std::vector<Int> m_profileLevelTierIdx; ///< Indices of of profile level tier109 #endif110 101 std::vector<Bool> m_altOutputLayerFlag; ///< Alt output layer flag 111 102 … … 138 129 std::vector< std::vector<Bool > > m_ctuBasedOffsetEnabledFlag; 139 130 std::vector< std::vector<Int > > m_minHorizontalCtuOffsetPlus1; 140 #if H_MV_HLS10_VPS_VUI141 131 Bool m_singleLayerForNonIrapFlag; 142 132 Bool m_higherLayerIrapSkipFlag; 143 #endif // H_MV_HLS10_VPS_VUI144 133 145 134 … … 151 140 #endif 152 141 #endif 153 #if MTK_I0099_VPS_EX2142 #if H_3D_QTLPC 154 143 Bool m_bLimQtPredFlag; 155 144 #endif … … 184 173 bool m_isTopFieldFirst; 185 174 186 Int m_conformance Mode;187 Int m_conf Left;188 Int m_conf Right;189 Int m_conf Top;190 Int m_conf Bottom;175 Int m_conformanceWindowMode; 176 Int m_confWinLeft; 177 Int m_confWinRight; 178 Int m_confWinTop; 179 Int m_confWinBottom; 191 180 Int m_framesToBeEncoded; ///< number of encoded frames 192 181 Int m_aiPad[2]; ///< number of padded pixels for width and height 193 182 194 183 // profile/level 195 #if H_MV_HLS10_PTL196 184 #if H_MV 197 185 std::vector< Profile::Name > m_profile; … … 203 191 Level::Tier m_levelTier; 204 192 Level::Name m_level; 205 #endif206 193 #endif 207 194 … … 338 325 Bool m_bLFCrossSliceBoundaryFlag; ///< 1: filter across slice boundaries 0: do not filter across slice boundaries 339 326 Bool m_bLFCrossTileBoundaryFlag; ///< 1: filter across tile boundaries 0: do not filter across tile boundaries 340 Int m_iUniformSpacingIdr; 341 Int m_iNumColumnsMinus1; 342 Char* m_pchColumnWidth; 343 Int m_iNumRowsMinus1; 344 Char* m_pchRowHeight; 345 UInt* m_pColumnWidth; 346 UInt* m_pRowHeight; 327 Bool m_tileUniformSpacingFlag; 328 Int m_numTileColumnsMinus1; 329 Int m_numTileRowsMinus1; 330 std::vector<Int> m_tileColumnWidth; 331 std::vector<Int> m_tileRowHeight; 347 332 Int m_iWaveFrontSynchro; //< 0: no WPP. >= 1: WPP is enabled, the "Top right" from which inheritance occurs is this LCU offset in the line above the current. 348 333 Int m_iWaveFrontSubstreams; //< If iWaveFrontSynchro, this is the number of substreams per frame (dependent tiles) or per tile (independent tiles). … … 468 453 std::vector<Int> m_sbPropAvgBitRate; 469 454 std::vector<Int> m_sbPropMaxBitRate; 470 #if H_MV_HLS10_GEN_FIX471 455 Bool m_outputVpsInfo; 472 #endif473 456 #endif 474 457 #if H_3D … … 504 487 #if H_3D_DIM 505 488 Bool m_useDMM; ///< flag for using DMM 506 #if SEPARATE_FLAG_I0085507 489 Bool m_useIVP; 508 #endif509 490 Bool m_useSDC; ///< flag for using SDC 510 491 Bool m_useDLT; ///< flag for using DLT 511 492 #endif 512 #if MTK_SINGLE_DEPTH_MODE_I0095493 #if H_3D_SINGLE_DEPTH 513 494 Bool m_useSingleDepthMode; ///< flag for using single depth mode 514 495 #endif 515 #if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX516 496 #if H_3D_QTLPC 517 497 Bool m_bUseQTL; ///< flag for using depth QuadTree Limitation 518 #if !MTK_I0099_VPS_EX2519 Bool m_bUsePC; ///< flag for using Predictive Coding with QTL520 #endif521 #endif522 498 #endif 523 499 #if H_3D_INTER_SDC … … 538 514 #if H_MV 539 515 540 #if H_MV_HLS10_PTL541 516 template<typename T> 542 517 Void xReadStrToEnum(string in, std::vector<T> &val) … … 559 534 delete[] cString; 560 535 } 561 #endif562 536 563 537 -
trunk/source/App/TAppEncoder/TAppEncTop.cpp
r1066 r1084 144 144 xDeriveDltArray ( vps, dlt ); 145 145 #endif 146 #if H_MV_HLS10_GEN_FIX147 146 if ( m_targetEncLayerIdList.size() == 0 ) 148 147 { … … 166 165 } 167 166 } 168 #endif 169 170 #if H_MV_HLS10_ADD_LAYERSETS 167 171 168 if ( m_outputVpsInfo ) 172 169 { 173 #if H_MV_HLS10_AUX174 170 vps.printScalabilityId(); 175 #endif176 171 vps.printLayerDependencies(); 177 172 vps.printLayerSets(); 178 173 vps.printPTL(); 179 174 } 180 #endif181 175 182 176 for(Int layerIdInVps = 0; layerIdInVps < m_numberOfLayers; layerIdInVps++) … … 233 227 #if H_3D_DIM 234 228 m_cTEncTop.setUseDMM ( isDepth ? m_useDMM : false ); 235 #if SEPARATE_FLAG_I0085 236 #if LGE_FCO_I0116 229 #if H_3D_FCO 237 230 m_cTEncTop.setUseIVP ( vps.getViewIndex( layerId ) == 0 && isDepth ? m_useIVP : false ); 238 231 #else 239 232 m_cTEncTop.setUseIVP ( isDepth ? m_useIVP : false ); 240 #endif241 233 #endif 242 234 m_cTEncTop.setUseSDC ( isDepth ? m_useSDC : false ); 243 235 m_cTEncTop.setUseDLT ( isDepth ? m_useDLT : false ); 244 236 #endif 245 #if MTK_SINGLE_DEPTH_MODE_I0095237 #if H_3D_SINGLE_DEPTH 246 238 m_cTEncTop.setUseSingleDepthMode ( isDepth ? m_useSingleDepthMode : false ); 247 239 #endif 248 #if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX249 240 #if H_3D_QTLPC 250 #if LGE_FCO_I0116251 m_cTEncTop.setUseQTL ( vps.getViewIndex( layerId ) == 0 && isDepth ? m_bUseQTL : false );252 #else253 241 m_cTEncTop.setUseQTL ( isDepth ? m_bUseQTL : false ); 254 #endif255 #if !MTK_I0099_VPS_EX2256 m_cTEncTop.setUsePC ( isDepth ? m_bUsePC : false );257 #endif258 #endif259 242 #endif 260 243 //====== Depth Inter SDC ========= … … 266 249 #endif 267 250 #if H_3D_IV_MERGE 268 #if LGE_FCO_I0116251 #if H_3D_FCO 269 252 m_cTEncTop.setUseMPI ( vps.getViewIndex( layerId ) == 0 && isDepth ? m_bMPIFlag : false ); 270 253 #else … … 298 281 m_cTEncTop.setSourceWidth ( m_iSourceWidth ); 299 282 m_cTEncTop.setSourceHeight ( m_iSourceHeight ); 300 m_cTEncTop.setConformanceWindow ( m_conf Left, m_confRight, m_confTop, m_confBottom );283 m_cTEncTop.setConformanceWindow ( m_confWinLeft, m_confWinRight, m_confWinTop, m_confWinBottom ); 301 284 m_cTEncTop.setFramesToBeEncoded ( m_framesToBeEncoded ); 302 285 … … 506 489 } 507 490 #endif 508 m_cTEncTop.set UniformSpacingIdr ( m_iUniformSpacingIdr);509 m_cTEncTop.setNumColumnsMinus1 ( m_ iNumColumnsMinus1 );510 m_cTEncTop.setNumRowsMinus1 ( m_ iNumRowsMinus1 );511 if( m_iUniformSpacingIdr==0)512 { 513 m_cTEncTop.setColumnWidth ( m_ pColumnWidth );514 m_cTEncTop.setRowHeight ( m_ pRowHeight );491 m_cTEncTop.setTileUniformSpacingFlag ( m_tileUniformSpacingFlag ); 492 m_cTEncTop.setNumColumnsMinus1 ( m_numTileColumnsMinus1 ); 493 m_cTEncTop.setNumRowsMinus1 ( m_numTileRowsMinus1 ); 494 if(!m_tileUniformSpacingFlag) 495 { 496 m_cTEncTop.setColumnWidth ( m_tileColumnWidth ); 497 m_cTEncTop.setRowHeight ( m_tileRowHeight ); 515 498 } 516 499 m_cTEncTop.xCheckGSParameters(); 517 Int uiTilesCount = (m_ iNumRowsMinus1+1) * (m_iNumColumnsMinus1+1);500 Int uiTilesCount = (m_numTileRowsMinus1+1) * (m_numTileColumnsMinus1+1); 518 501 if(uiTilesCount == 1) 519 502 { … … 620 603 m_cTEncTop.setActiveParameterSetsSEIEnabled ( m_activeParameterSetsSEIEnabled ); 621 604 m_cTEncTop.setVuiParametersPresentFlag( m_vuiParametersPresentFlag ); 605 m_cTEncTop.setAspectRatioInfoPresentFlag( m_aspectRatioInfoPresentFlag); 622 606 m_cTEncTop.setAspectRatioIdc( m_aspectRatioIdc ); 623 607 m_cTEncTop.setSarWidth( m_sarWidth ); … … 840 824 841 825 #if H_MV 842 #if H_MV_HLS10_GEN_FIX843 826 while ( (m_targetEncLayerIdList.size() != 0 ) && !allEos ) 844 #else845 while ( !allEos )846 #endif847 827 { 848 828 for(Int layer=0; layer < m_numberOfLayers; layer++ ) 849 829 { 850 #if H_MV_HLS10_GEN_FIX851 830 if (!xLayerIdInTargetEncLayerIdList( m_vps->getLayerIdInNuh( layer ) )) 852 831 { 853 832 continue; 854 833 } 855 #endif856 834 857 835 Int frmCnt = 0; … … 894 872 for(Int layer=0; layer < m_numberOfLayers; layer++ ) 895 873 { 896 #if H_MV_HLS10_GEN_FIX897 874 if (!xLayerIdInTargetEncLayerIdList( m_vps->getLayerIdInNuh( layer ) )) 898 875 { 899 876 continue; 900 877 } 901 #endif902 878 903 879 #if H_3D_VSO … … 927 903 for(Int layer=0; layer < m_numberOfLayers; layer++ ) 928 904 { 929 #if H_MV_HLS10_GEN_FIX930 905 if (!xLayerIdInTargetEncLayerIdList( m_vps->getLayerIdInNuh( layer ) )) 931 906 { 932 907 continue; 933 908 } 934 #endif935 909 m_acTEncTopList[layer]->printSummary( m_acTEncTopList[layer]->getNumAllPicCoded(), m_isField ); 936 910 } … … 1114 1088 if (m_pchReconFileList[layerId]) 1115 1089 { 1090 #if H_MV_ALIGN_HM_15 1091 m_acTVideoIOYuvReconFileList[layerId]->write( pcPicYuvRecTop, pcPicYuvRecBottom, m_confWinLeft, m_confWinRight, m_confWinTop, m_confWinBottom, m_isTopFieldFirst ); 1092 #else 1116 1093 m_acTVideoIOYuvReconFileList[layerId]->write( pcPicYuvRecTop, pcPicYuvRecBottom, m_confLeft, m_confRight, m_confTop, m_confBottom, m_isTopFieldFirst ); 1094 #endif 1117 1095 } 1118 1096 } … … 1131 1109 if (m_pchReconFile) 1132 1110 { 1133 m_cTVideoIOYuvReconFile.write( pcPicYuvRecTop, pcPicYuvRecBottom, m_conf Left, m_confRight, m_confTop, m_confBottom, m_isTopFieldFirst );1111 m_cTVideoIOYuvReconFile.write( pcPicYuvRecTop, pcPicYuvRecBottom, m_confWinLeft, m_confWinRight, m_confWinTop, m_confWinBottom, m_isTopFieldFirst ); 1134 1112 } 1135 1113 … … 1167 1145 if (m_pchReconFileList[layerId]) 1168 1146 { 1147 #if H_MV_ALIGN_HM_15 1148 m_acTVideoIOYuvReconFileList[layerId]->write( pcPicYuvRec, m_confWinLeft, m_confWinRight, m_confWinTop, m_confWinBottom ); 1149 #else 1169 1150 m_acTVideoIOYuvReconFileList[layerId]->write( pcPicYuvRec, m_confLeft, m_confRight, m_confTop, m_confBottom ); 1151 #endif 1170 1152 } 1171 1153 } … … 1183 1165 if (m_pchReconFile) 1184 1166 { 1185 m_cTVideoIOYuvReconFile.write( pcPicYuvRec, m_conf Left, m_confRight, m_confTop, m_confBottom );1167 m_cTVideoIOYuvReconFile.write( pcPicYuvRec, m_confWinLeft, m_confWinRight, m_confWinTop, m_confWinBottom ); 1186 1168 } 1187 1169 … … 1396 1378 // Max sub layers, + presence flag 1397 1379 Bool subLayersMaxMinus1PresentFlag = false; 1398 #if !H_MV_FIX_SUB_LAYERS_MAX_MINUS11399 Int subLayersMaxMinus1 = -1;1400 #endif1401 1380 for (Int curLayerIdInVps = 0; curLayerIdInVps < m_numberOfLayers; curLayerIdInVps++ ) 1402 1381 { … … 1409 1388 1410 1389 vps.setSubLayersVpsMaxMinus1( curLayerIdInVps, curSubLayersMaxMinus1 ); 1411 #if !H_MV_FIX_SUB_LAYERS_MAX_MINUS11412 if ( subLayersMaxMinus1 == -1 )1413 {1414 subLayersMaxMinus1 = curSubLayersMaxMinus1;1415 }1416 else1417 {1418 subLayersMaxMinus1PresentFlag = subLayersMaxMinus1PresentFlag || ( curSubLayersMaxMinus1 != subLayersMaxMinus1 );1419 }1420 #else1421 1390 subLayersMaxMinus1PresentFlag = subLayersMaxMinus1PresentFlag || ( curSubLayersMaxMinus1 != vps.getMaxSubLayersMinus1() ); 1422 #endif1423 1391 } 1424 1392 … … 1433 1401 { 1434 1402 Int maxTid = -1; 1435 #if H_MV_FIX_LOOP_GOPSIZE1436 1403 for( Int i = 0; i < ( getGOPSize() + 1); i++ ) 1437 1404 { 1438 1405 GOPEntry geCur = m_GOPListMvc[curLayerIdInVps][( i < getGOPSize() ? i : MAX_GOP )]; 1439 1406 GOPEntry geRef = m_GOPListMvc[refLayerIdInVps][( i < getGOPSize() ? i : MAX_GOP )]; 1440 #else1441 for( Int i = 0; i < getGOPSize(); i++ )1442 {1443 GOPEntry geCur = m_GOPListMvc[curLayerIdInVps][i];1444 GOPEntry geRef = m_GOPListMvc[refLayerIdInVps][i];1445 #endif1446 1407 for (Int j = 0; j < geCur.m_numActiveRefLayerPics; j++) 1447 1408 { 1448 1409 if ( m_directRefLayers[ curLayerIdInVps ][ geCur.m_interLayerPredLayerIdc[ j ]] == refLayerIdInVps ) 1449 1410 { 1450 #if H_MV_FIX_LOOP_GOPSIZE1451 1411 Bool refAlwaysIntra = ( i == getGOPSize() ) && ( m_iIntraPeriod[ curLayerIdInVps ] % m_iIntraPeriod[ refLayerIdInVps ] == 0 ); 1452 1412 Bool refLayerZero = ( i == getGOPSize() ) && ( refLayerIdInVps == 0 ); 1453 1413 maxTid = std::max( maxTid, ( refAlwaysIntra || refLayerZero ) ? 0 : geRef.m_temporalId ); 1454 #else1455 maxTid = std::max( maxTid, geRef.m_temporalId );1456 #endif1457 1414 } 1458 1415 } … … 1580 1537 Void TAppEncTop::xSetProfileTierLevel( TComVPS& vps ) 1581 1538 { 1582 #if H_MV_HLS10_PTL1583 1539 1584 1540 // SET PTL … … 1598 1554 m_nonPackedConstraintFlag, m_frameOnlyConstraintFlag, m_inblFlag[ptlIdx] ); 1599 1555 } 1600 #else 1601 const Int vpsNumProfileTierLevelMinus1 = 0; //TBD 1602 vps.setVpsNumProfileTierLevelMinus1( vpsNumProfileTierLevelMinus1 ); 1603 1604 for (Int i = 0; i <= vps.getVpsNumProfileTierLevelMinus1(); i++ ) 1605 { 1606 vps.setVpsProfilePresentFlag( i, true ); 1607 } 1608 #endif 1609 } 1610 1611 #if H_MV_HLS10_PTL 1556 } 1557 1612 1558 Void TAppEncTop::xSetProfileTierLevel(TComVPS& vps, Int profileTierLevelIdx, Int subLayer, Profile::Name profile, Level::Name level, Level::Tier tier, Bool progressiveSourceFlag, Bool interlacedSourceFlag, Bool nonPackedConstraintFlag, Bool frameOnlyConstraintFlag, Bool inbldFlag) 1613 1559 { … … 1631 1577 ptl->setLevelIdc ( level ); 1632 1578 ptl->setProfileCompatibilityFlag( profile, true ); 1633 #if H_MV_HLS10_PTL_INBL_FIX1634 1579 ptl->setInbldFlag( inbldFlag ); 1635 #endif1636 1580 1637 1581 switch ( profile ) … … 1659 1603 } 1660 1604 } 1661 #endif1662 1605 1663 1606 Void TAppEncTop::xSetRepFormat( TComVPS& vps ) … … 1677 1620 //repFormat->setSeparateColourPlaneVpsFlag( ); 1678 1621 1679 #if H_MV_HLS10_GEN_VSP_CONF_WIN1680 1622 repFormat->setConformanceWindowVpsFlag( true ); 1623 #if H_MV_ALIGN_HM_15 1624 repFormat->setConfWinVpsLeftOffset ( m_confWinLeft / TComSPS::getWinUnitX( repFormat->getChromaFormatVpsIdc() ) ); 1625 repFormat->setConfWinVpsRightOffset ( m_confWinRight / TComSPS::getWinUnitX( repFormat->getChromaFormatVpsIdc() ) ); 1626 repFormat->setConfWinVpsTopOffset ( m_confWinTop / TComSPS::getWinUnitY( repFormat->getChromaFormatVpsIdc() ) ); 1627 repFormat->setConfWinVpsBottomOffset ( m_confWinBottom / TComSPS::getWinUnitY( repFormat->getChromaFormatVpsIdc() ) ); 1628 #else 1681 1629 repFormat->setConfWinVpsLeftOffset ( m_confLeft / TComSPS::getWinUnitX( repFormat->getChromaFormatVpsIdc() ) ); 1682 1630 repFormat->setConfWinVpsRightOffset ( m_confRight / TComSPS::getWinUnitX( repFormat->getChromaFormatVpsIdc() ) ); … … 1684 1632 repFormat->setConfWinVpsBottomOffset ( m_confBottom / TComSPS::getWinUnitY( repFormat->getChromaFormatVpsIdc() ) ); 1685 1633 #endif 1686 1687 1634 assert( vps.getRepFormat( 0 ) == NULL ); 1688 1635 vps.setRepFormat( 0 , repFormat ); … … 1700 1647 { 1701 1648 Int currLsIdx = vps.olsIdxToLsIdx( i ); 1702 #if !H_MV_HLS10_ADD_LAYERSETS1703 std::vector<Int> targetDecLayerIdList = vps.getTargetDecLayerIdList( i );1704 #endif1705 1649 Bool subLayerFlagInfoPresentFlag = false; 1706 1650 … … 1708 1652 { 1709 1653 Bool subLayerDpbInfoPresentFlag = false; 1710 #if !H_MV_HLS10_ADD_LAYERSETS1711 assert( vps.getNumLayersInIdList( currLsIdx ) == targetDecLayerIdList.size() );1712 #endif1713 1654 for( Int k = 0; k < vps.getNumLayersInIdList( currLsIdx ); k++ ) 1714 1655 { 1715 #if H_MV_HLS10_DBP_SIZE1716 1656 Int layerIdInVps = vps.getLayerIdInVps( vps.getLayerSetLayerIdList( currLsIdx, k ) ); 1717 1657 if ( vps.getNecessaryLayerFlag( i,k ) && ( vps.getVpsBaseLayerInternalFlag() || vps.getLayerSetLayerIdList( currLsIdx, k ) != 0 ) ) … … 1730 1670 } 1731 1671 } 1732 #else1733 Int layerIdInVps = vps.getLayerIdInVps( targetDecLayerIdList[k] );1734 dpbSize->setMaxVpsDecPicBufferingMinus1( i, k, j, m_maxDecPicBufferingMvc[ layerIdInVps ][ j ] - 1 );1735 1736 if ( j > 0 )1737 {1738 subLayerDpbInfoPresentFlag = subLayerDpbInfoPresentFlag || ( dpbSize->getMaxVpsDecPicBufferingMinus1( i, k, j ) != dpbSize->getMaxVpsDecPicBufferingMinus1( i, k, j - 1 ) );1739 }1740 #endif1741 1672 } 1742 1673 1743 1674 Int maxNumReorderPics = MIN_INT; 1744 #if H_MV_HLS10_DBP_SIZE1745 1675 for ( Int idx = 0; idx < vps.getNumLayersInIdList( currLsIdx ); idx++ ) 1746 1676 { … … 1751 1681 } 1752 1682 } 1753 #else1754 for ( Int idx = 0; idx < targetDecLayerIdList.size(); idx++ )1755 {1756 Int layerIdInVps = vps.getLayerIdInVps( targetDecLayerIdList[ idx ] );1757 maxNumReorderPics = std::max( maxNumReorderPics, m_numReorderPicsMvc[ layerIdInVps ][ j ] );1758 }1759 #endif1760 1683 assert( maxNumReorderPics != MIN_INT ); 1761 1684 … … 1804 1727 // Additional output layer sets + profileLevelTierIdx 1805 1728 vps.setDefaultOutputLayerIdc ( m_defaultOutputLayerIdc ); 1806 #if H_MV_HLS10_ADD_LAYERSETS1807 1729 if( vps.getNumIndependentLayers() == 0 && m_numAddLayerSets > 0 ) 1808 1730 { … … 1838 1760 } 1839 1761 } 1840 #else1841 vps.setNumAddLayerSets ( 0 );1842 #endif1843 1762 vps.setNumAddOlss ( numAddOuputLayerSets ); 1844 1763 vps.initTargetLayerIdLists(); 1845 1764 1846 #if H_MV_HLS10_ADD_LAYERSETS1847 1765 for (Int olsIdx = 0; olsIdx < vps.getNumLayerSets() + numAddOuputLayerSets; olsIdx++) 1848 1766 { 1849 1767 Int addOutLsIdx = olsIdx - vps.getNumLayerSets(); 1850 #else1851 for (Int olsIdx = 0; olsIdx < m_vpsNumLayerSets + numAddOuputLayerSets; olsIdx++)1852 {1853 Int addOutLsIdx = olsIdx - m_vpsNumLayerSets;1854 #endif1855 1768 vps.setLayerSetIdxForOlsMinus1( olsIdx, ( ( addOutLsIdx < 0 ) ? olsIdx : m_outputLayerSetIdx[ addOutLsIdx ] ) - 1 ); 1856 1769 1857 #if H_MV_HLS10_ADD_LAYERSETS1858 1770 Int lsIdx = vps.olsIdxToLsIdx( olsIdx ); 1859 #else1860 std::vector<Int>& layerIdList = m_layerIdsInSets[ vps.olsIdxToLsIdx( olsIdx ) ];1861 #endif1862 1771 if (vps.getDefaultOutputLayerIdc() == 2 || addOutLsIdx >= 0 ) 1863 1772 { 1864 #if H_MV_HLS10_ADD_LAYERSETS1865 1773 for ( Int i = 0; i < vps.getNumLayersInIdList( lsIdx ); i++) 1866 #else1867 for ( Int i = 0; i < layerIdList.size(); i++)1868 #endif1869 1774 { 1870 1775 vps.setOutputLayerFlag( olsIdx, i, ( olsIdx == 0 && i == 0 ) ? vps.inferOutputLayerFlag(olsIdx, i ) : false ); // This is a software only fix for a bug in the spec. In spec outputLayerFlag neither present nor inferred for this case ! … … 1876 1781 for (Int j = 0; j < outLayerIdList.size(); j++) 1877 1782 { 1878 #if H_MV_HLS10_ADD_LAYERSETS1879 1783 for ( Int i = 0; i < vps.getNumLayersInIdList( lsIdx ); i++) 1880 1784 { 1881 1785 if ( vps.getLayerSetLayerIdList( lsIdx, i ) == outLayerIdList[ j ] ) 1882 #else1883 for (Int i = 0; i < layerIdList.size(); i++ )1884 {1885 if ( layerIdList[ i ] == outLayerIdList[ j ] )1886 #endif1887 1786 { 1888 1787 vps.setOutputLayerFlag( olsIdx, i, true ); … … 1891 1790 } 1892 1791 } 1893 #if H_MV_HLS10_ADD_LAYERSETS1894 1792 if ( !outputLayerInLayerSetFlag ) 1895 1793 { … … 1897 1795 exit(EXIT_FAILURE); 1898 1796 } 1899 #else1900 assert( outputLayerInLayerSetFlag ); // The output layer is not in the layer set.1901 #endif1902 1797 } 1903 1798 } 1904 1799 else 1905 1800 { 1906 #if H_MV_HLS10_ADD_LAYERSETS1907 1801 for ( Int i = 0; i < vps.getNumLayersInIdList( lsIdx ); i++) 1908 #else1909 for ( Int i = 0; i < layerIdList.size(); i++)1910 #endif1911 1802 { 1912 1803 vps.setOutputLayerFlag( olsIdx, i, vps.inferOutputLayerFlag( olsIdx, i ) ); … … 1914 1805 } 1915 1806 1916 #if H_MV_HLS10_NESSECARY_LAYER1917 1807 vps.deriveNecessaryLayerFlags( olsIdx ); 1918 #endif1919 1808 vps.deriveTargetLayerIdList( olsIdx ); 1920 1809 1921 #if H_MV_HLS10_PTL1922 1810 // SET profile_tier_level_index. 1923 1811 if ( olsIdx == 0 ) … … 1936 1824 { 1937 1825 vps.setProfileTierLevelIdx(olsIdx, j, m_profileTierLevelIdx[olsIdx][j] ); 1938 #if H_MV_HLS10_PTL_FIX1939 1826 if( !vps.getNecessaryLayerFlag(olsIdx,j) && m_profileTierLevelIdx[ olsIdx ][ j ] != -1 ) 1940 1827 { … … 1943 1830 } 1944 1831 else if ( vps.getNecessaryLayerFlag(olsIdx,j) ) 1945 #else1946 }1947 else1948 #endif1949 1832 { 1950 1833 // setting default values … … 1962 1845 } 1963 1846 } 1964 #else1965 if ( olsIdx > 0 )1966 {1967 vps.setProfileLevelTierIdx( olsIdx, m_profileLevelTierIdx[ olsIdx ] );1968 }1969 #endif1970 1847 1971 1848 if ( vps.getNumOutputLayersInOutputLayerSet( olsIdx ) == 1 && … … 2005 1882 if( pcVPSVUI->getBitRatePresentVpsFlag( ) || pcVPSVUI->getPicRatePresentVpsFlag( ) ) 2006 1883 { 2007 #if H_MV_HLS10_VPS_VUI2008 1884 for( Int i = 0; i < vps.getNumLayerSets(); i++ ) 2009 #else2010 for( Int i = 0; i <= vps.getVpsNumLayerSetsMinus1(); i++ )2011 #endif2012 1885 { 2013 1886 for( Int j = 0; j <= vps.getMaxTLayers(); j++ ) … … 2058 1931 for( Int j = 0; j < vps.getNumDirectRefLayers( vps.getLayerIdInNuh( i ) ) ; j++ ) 2059 1932 { 2060 #if H_MV_HLS10_REF_PRED_LAYERS2061 1933 Int layerIdx = vps.getLayerIdInVps( vps.getIdDirectRefLayer(vps.getLayerIdInNuh( i ) , j )); 2062 #else2063 Int layerIdx = vps.getLayerIdInVps( vps.getRefLayerId(vps.getLayerIdInNuh( i ) , j ));2064 #endif2065 1934 if( pcVPSVUI->getTilesInUseFlag( i ) && pcVPSVUI->getTilesInUseFlag( layerIdx ) ) 2066 1935 { … … 2081 1950 } 2082 1951 2083 #if H_MV_HLS10_VPS_VUI2084 1952 pcVPSVUI->setSingleLayerForNonIrapFlag( m_singleLayerForNonIrapFlag ); 2085 1953 pcVPSVUI->setHigherLayerIrapSkipFlag( m_higherLayerIrapSkipFlag ); 2086 #endif2087 1954 2088 1955 pcVPSVUI->setIlpRestrictedRefLayersFlag( m_ilpRestrictedRefLayersFlag ); … … 2141 2008 } 2142 2009 } 2143 #if H_MV_HLS10_GEN_FIX2144 2010 Bool TAppEncTop::xLayerIdInTargetEncLayerIdList(Int nuhLayerId) 2145 2011 { 2146 2012 return ( std::find(m_targetEncLayerIdList.begin(), m_targetEncLayerIdList.end(), nuhLayerId) != m_targetEncLayerIdList.end()) ; 2147 2013 } 2148 #endif2149 2014 2150 2015 … … 2159 2024 Bool isDepth = ( vps.getDepthId( layer ) == 1 ) ; 2160 2025 Bool isLayerZero = ( layer == 0 ); 2161 #if LGE_FCO_I01162026 #if H_3D_FCO 2162 2027 Bool isDepthFirst = (layer > 1 ? true : false); 2163 2028 #endif … … 2171 2036 { 2172 2037 vps.setSubPULog2Size ( layer, (layer != 1) ? 6: 0 ); 2173 #if MTK_I0099_VPS_EX22174 2038 vps.setSubPUMPILog2Size ( layer, (!isLayerZero) ? m_iSubPUMPILog2Size: 0 ); 2175 #endif2176 2039 } 2177 2040 else … … 2183 2046 #if H_3D_DIM 2184 2047 vps.setVpsDepthModesFlag( layer, isDepth && !isLayerZero && (m_useDMM || m_useSDC || m_useDLT ) ); 2185 #if SEPARATE_FLAG_I0085 2186 #if LGE_FCO_I0116 2048 #if H_3D_FCO 2187 2049 vps.setIVPFlag ( layer, isDepth && !isLayerZero && m_useIVP && !isDepthFirst ); 2188 2050 #else 2189 2051 vps.setIVPFlag ( layer, isDepth && !isLayerZero && m_useIVP ); 2190 #endif2191 2052 #endif 2192 2053 #endif … … 2196 2057 { 2197 2058 vps.setIvMvPredFlag (layer, false); 2198 #if SEC_HLS_CLEANUP_I01002199 2059 vps.setIvMvScalingFlag (layer, false); 2200 #endif2201 2060 } 2202 2061 else … … 2210 2069 vps.setIvMvPredFlag ( layer, !isLayerZero && m_ivMvPredFlag[0] ); 2211 2070 } 2212 #if SEC_HLS_CLEANUP_I01002213 2071 vps.setIvMvScalingFlag (layer, m_ivMvScalingFlag); 2214 #endif 2215 } 2216 #endif 2217 #if MTK_I0099_VPS_EX2 2218 #if LGE_FCO_I0116 2072 } 2073 #endif 2074 #if H_3D_QTLPC 2075 #if H_3D_FCO 2219 2076 vps.setLimQtPredFlag ( layer, isDepth && m_bLimQtPredFlag && !isDepthFirst ); 2220 2077 #else … … 2235 2092 #endif 2236 2093 #if H_3D_IV_MERGE 2237 #if LGE_FCO_I01162094 #if H_3D_FCO 2238 2095 vps.setMPIFlag( layer, !isLayerZero && isDepth && m_bMPIFlag && !isDepthFirst ); 2239 2096 #else … … 2242 2099 #endif 2243 2100 } 2244 #if !MTK_I0099_VPS_EX22245 #if H_3D_SPIVMP2246 vps.setSubPUMPILog2Size( m_iSubPUMPILog2Size );2247 #endif2248 #endif2249 #if H_3D2250 #if !SEC_HLS_CLEANUP_I01002251 vps.setIvMvScalingFlag( m_ivMvScalingFlag );2252 #endif2253 #endif2254 2101 } 2255 2102 … … 2273 2120 xAnalyzeInputBaseDepth(layer, max(m_iIntraPeriod[layer], 24), &vps, &dlt); 2274 2121 bDltPresentFlag = bDltPresentFlag || dlt.getUseDLTFlag(layer); 2275 #if H_3D_DELTA_DLT2276 2122 dlt.setInterViewDltPredEnableFlag(layer, (dlt.getUseDLTFlag(layer) && (layer>1))); 2277 #endif2278 2123 } 2279 2124 } -
trunk/source/App/TAppEncoder/TAppEncTop.h
r1066 r1084 133 133 Void xSetProfileTierLevel ( TComVPS& vps ); 134 134 135 #if H_MV_HLS10_PTL136 135 Void xSetProfileTierLevel( TComVPS& vps, Int profileTierLevelIdx, Int subLayer, 137 136 Profile::Name profile, Level::Name level, Level::Tier tier, … … 139 138 Bool nonPackedConstraintFlag, Bool frameOnlyConstraintFlag, 140 139 Bool inbldFlag ); 141 #endif142 140 Void xSetRepFormat ( TComVPS& vps ); 143 141 Void xSetDpbSize ( TComVPS& vps ); … … 145 143 GOPEntry* xGetGopEntry( Int layerIdInVps, Int poc ); 146 144 Int xGetMax( std::vector<Int>& vec); 147 #if H_MV_HLS10_GEN_FIX148 145 Bool xLayerIdInTargetEncLayerIdList( Int nuhLayerId ); 149 #endif150 146 #endif 151 147 #if H_3D -
trunk/source/Lib/TAppCommon/program_options_lite.h
r1039 r1084 378 378 std::string cDescBuffer; 379 379 380 #if !FIX_TICKET_62381 cNameBuffer .resize( name.size() + 10 );382 cDescBuffer.resize( desc.size() + 10 );383 #endif384 385 380 storage.resize(uiMaxNum); 386 381 for ( unsigned int uiK = 0; uiK < uiMaxNum; uiK++ ) 387 382 { 388 389 #if FIX_TICKET_62390 383 cNameBuffer .resize( name.size() + 10 ); 391 384 cDescBuffer.resize( desc.size() + 10 ); 392 #endif393 385 394 386 Bool duplicate = (uiK != 0); -
trunk/source/Lib/TLibCommon/CommonDef.h
r1067 r1084 61 61 #if H_MV 62 62 #define NV_VERSION "12.1" ///< Current software version 63 #define HM_VERSION "1 4.0" ///<63 #define HM_VERSION "15.0" ///< 64 64 #else 65 65 #define NV_VERSION "14.0" ///< Current software version -
trunk/source/Lib/TLibCommon/ContextTables.h
r1039 r1084 51 51 #define NUM_SPLIT_FLAG_CTX 3 ///< number of context models for split flag 52 52 #define NUM_SKIP_FLAG_CTX 3 ///< number of context models for skip flag 53 #if MTK_SINGLE_DEPTH_MODE_I009553 #if H_3D_SINGLE_DEPTH 54 54 #define NUM_SINGLEDEPTH_FLAG_CTX 1 55 55 #define NUM_SINGLE_DEPTH_VALUE_DATA_CTX 1 … … 153 153 { CNU, CNU, CNU, }, 154 154 }; 155 #if MTK_SINGLE_DEPTH_MODE_I0095155 #if H_3D_SINGLE_DEPTH 156 156 static const UChar 157 157 INIT_SINGLEDEPTH_FLAG[3][NUM_SINGLEDEPTH_FLAG_CTX] = … … 450 450 static const UChar INIT_DBBP_FLAG[3][DBBP_NUM_FLAG_CTX] = 451 451 { 452 #if SEC_DBBP_EXPLICIT_SIG_I0077 453 { CNU }, 454 { CNU }, 455 { CNU }, 456 #else 457 { 161 }, 458 { 161 }, 459 { 161 }, 460 #endif 461 }; 462 #endif 463 464 #endif 452 { CNU }, 453 { CNU }, 454 { CNU }, 455 }; 456 #endif 457 458 #endif -
trunk/source/Lib/TLibCommon/SEI.h
r964 r1084 161 161 UInt m_bpSeqParameterSetId; 162 162 Bool m_rapCpbParamsPresentFlag; 163 Boolm_cpbDelayOffset;164 Boolm_dpbDelayOffset;163 UInt m_cpbDelayOffset; 164 UInt m_dpbDelayOffset; 165 165 UInt m_initialCpbRemovalDelay [MAX_CPB_CNT][2]; 166 166 UInt m_initialCpbRemovalDelayOffset [MAX_CPB_CNT][2]; -
trunk/source/Lib/TLibCommon/TComDataCU.cpp
r1066 r1084 60 60 61 61 m_skipFlag = NULL; 62 #if MTK_SINGLE_DEPTH_MODE_I009562 #if H_3D_SINGLE_DEPTH 63 63 m_singleDepthFlag = NULL; 64 64 m_apSingleDepthValue = NULL; … … 185 185 186 186 m_skipFlag = new Bool[ uiNumPartition ]; 187 #if MTK_SINGLE_DEPTH_MODE_I0095187 #if H_3D_SINGLE_DEPTH 188 188 m_singleDepthFlag = new Bool[ uiNumPartition ]; 189 189 m_apSingleDepthValue = (Pel*)xMalloc(Pel, uiNumPartition); … … 335 335 336 336 if ( m_skipFlag ) { delete[] m_skipFlag; m_skipFlag = NULL; } 337 #if MTK_SINGLE_DEPTH_MODE_I0095337 #if H_3D_SINGLE_DEPTH 338 338 if ( m_singleDepthFlag ) { delete[] m_singleDepthFlag; m_singleDepthFlag = NULL; } 339 339 if ( m_apSingleDepthValue ) { xFree(m_apSingleDepthValue); m_apSingleDepthValue = NULL; } … … 503 503 TComDataCU * pcFrom = pcPic->getCU(getAddr()); 504 504 m_skipFlag[ui] = pcFrom->getSkipFlag(ui); 505 #if MTK_SINGLE_DEPTH_MODE_I0095505 #if H_3D_SINGLE_DEPTH 506 506 m_singleDepthFlag[ui] = pcFrom->getSingleDepthFlag(ui); 507 507 m_apSingleDepthValue[ui] = pcFrom->getSingleDepthValue(ui); … … 563 563 { 564 564 memset( m_skipFlag + firstElement, false, numElements * sizeof( *m_skipFlag ) ); 565 #if MTK_SINGLE_DEPTH_MODE_I0095565 #if H_3D_SINGLE_DEPTH 566 566 memset( m_singleDepthFlag + firstElement, false, numElements * sizeof( *m_singleDepthFlag ) ); 567 567 memset( m_apSingleDepthValue + firstElement, 0, numElements * sizeof( *m_apSingleDepthValue ) ); … … 754 754 m_puhTransformSkip[2][ui] = 0; 755 755 m_skipFlag[ui] = false; 756 #if MTK_SINGLE_DEPTH_MODE_I0095756 #if H_3D_SINGLE_DEPTH 757 757 m_singleDepthFlag[ui] = false; 758 758 m_apSingleDepthValue[ui] = 0; … … 933 933 { 934 934 m_skipFlag[ui] = false; 935 #if MTK_SINGLE_DEPTH_MODE_I0095935 #if H_3D_SINGLE_DEPTH 936 936 m_singleDepthFlag[ui] = false; 937 937 m_apSingleDepthValue[ui]= 0; … … 958 958 m_puhTransformSkip[2][ui] = pcCU->getTransformSkip(uiPartOffset+ui,TEXT_CHROMA_V); 959 959 m_skipFlag[ui] = pcCU->getSkipFlag(uiPartOffset+ui); 960 #if MTK_SINGLE_DEPTH_MODE_I0095960 #if H_3D_SINGLE_DEPTH 961 961 m_singleDepthFlag[ui] = pcCU->getSingleDepthFlag(uiPartOffset+ui); 962 962 m_apSingleDepthValue[ui] = pcCU->getSingleDepthValue(uiPartOffset+ui); … … 1111 1111 1112 1112 m_skipFlag=pcCU->getSkipFlag() + uiPart; 1113 #if MTK_SINGLE_DEPTH_MODE_I00951113 #if H_3D_SINGLE_DEPTH 1114 1114 m_singleDepthFlag = pcCU->getSingleDepthFlag() + uiPart; 1115 1115 m_apSingleDepthValue = pcCU->getSingleDepthValue() + uiPart; … … 1252 1252 1253 1253 m_skipFlag = pcCU->getSkipFlag () + uiAbsPartIdx; 1254 #if MTK_SINGLE_DEPTH_MODE_I00951254 #if H_3D_SINGLE_DEPTH 1255 1255 m_singleDepthFlag = pcCU->getSingleDepthFlag () + uiAbsPartIdx; 1256 1256 m_apSingleDepthValue = pcCU->getSingleDepthValue () + uiAbsPartIdx; … … 1331 1331 Int sizeInChar = sizeof( Char ) * uiNumPartition; 1332 1332 memcpy( m_skipFlag + uiOffset, pcCU->getSkipFlag(), sizeof( *m_skipFlag ) * uiNumPartition ); 1333 #if MTK_SINGLE_DEPTH_MODE_I00951333 #if H_3D_SINGLE_DEPTH 1334 1334 memcpy( m_singleDepthFlag + uiOffset, pcCU->getSingleDepthFlag(), sizeof( *m_singleDepthFlag ) * uiNumPartition ); 1335 1335 memcpy( m_apSingleDepthValue + uiOffset, pcCU->getSingleDepthValue(), sizeof( *m_apSingleDepthValue ) * uiNumPartition); … … 1455 1455 1456 1456 memcpy( rpcCU->getSkipFlag() + m_uiAbsIdxInLCU, m_skipFlag, sizeof( *m_skipFlag ) * m_uiNumPartition ); 1457 #if MTK_SINGLE_DEPTH_MODE_I00951457 #if H_3D_SINGLE_DEPTH 1458 1458 memcpy( rpcCU->getSingleDepthFlag() + m_uiAbsIdxInLCU, m_singleDepthFlag, sizeof( *m_singleDepthFlag ) * m_uiNumPartition ); 1459 1459 memcpy( rpcCU->getSingleDepthValue() + m_uiAbsIdxInLCU, m_apSingleDepthValue, sizeof( *m_apSingleDepthValue ) * m_uiNumPartition); … … 1574 1574 Int sizeInChar = sizeof( Char ) * uiQNumPart; 1575 1575 memcpy( rpcCU->getSkipFlag() + uiPartOffset, m_skipFlag, sizeof( *m_skipFlag ) * uiQNumPart ); 1576 #if MTK_SINGLE_DEPTH_MODE_I00951576 #if H_3D_SINGLE_DEPTH 1577 1577 memcpy( rpcCU->getSingleDepthFlag() + uiPartOffset, m_singleDepthFlag, sizeof( *m_singleDepthFlag ) * uiQNumPart ); 1578 1578 memcpy( rpcCU->getSingleDepthValue() + uiPartOffset, m_apSingleDepthValue, sizeof( *m_apSingleDepthValue ) * uiQNumPart); … … 2497 2497 memset( m_skipFlag + absPartIdx, skip, m_pcPic->getNumPartInCU() >> ( 2 * depth ) ); 2498 2498 } 2499 #if MTK_SINGLE_DEPTH_MODE_I00952499 #if H_3D_SINGLE_DEPTH 2500 2500 Void TComDataCU::setSingleDepthFlagSubParts( Bool singleDepth, UInt absPartIdx, UInt depth ) 2501 2501 { … … 2677 2677 } 2678 2678 2679 #if HS_DMM_SIGNALLING_I01202680 2679 if( isDimMode( getLumaIntraDir( uiAbsPartIdx ) ) ) 2681 #else2682 if( isDimMode( getLumaIntraDir( uiAbsPartIdx ) ) && !isDimDeltaDC( getLumaIntraDir( uiAbsPartIdx ) ) )2683 #endif2684 2680 { 2685 2681 return true; … … 2694 2690 // check prediction mode 2695 2691 UInt uiLumaPredMode = getLumaIntraDir( uiAbsPartIdx ); 2696 #if HS_DMM_SIGNALLING_I01202697 2692 if( uiLumaPredMode == PLANAR_IDX || ( getDimType( uiLumaPredMode ) == DMM1_IDX ) ) 2698 #else2699 if( uiLumaPredMode == PLANAR_IDX || ( getDimType( uiLumaPredMode ) == DMM1_IDX && !isDimDeltaDC( uiLumaPredMode ) ) )2700 #endif2701 2693 return true; 2702 2694 … … 3373 3365 for(Int iLoop = 0; iLoop < 2; iLoop ++ ) 3374 3366 { 3375 #if !SEC_SIMP_SHIFTED_DV_I00863376 // IvDcShift (Derived from spatial Iv neighboring blocks)3377 if( iLoop == 1 )3378 {3379 Int iFirDispCand = -1;3380 TComMvField mvIvDcShift[2];3381 UChar dirIvDcShift;3382 3383 if (xGetPosFirstAvailDmvCand(MRG_IVSHIFT, iFirDispCand))3384 {3385 TComMv cMv;3386 cMv = m_mergCands[iFirDispCand].m_cMvField[0].getMv();3387 cMv.setHor(cMv.getHor()+4);3388 if(m_pcSlice->getVPS()->getViewSynthesisPredFlag(m_pcSlice->getLayerIdInVps()))3389 {3390 cMv.setVer(0);3391 }3392 #if !(NTT_BUG_FIX_TK54)3393 clipMv( cMv );3394 #endif3395 3396 dirIvDcShift = m_mergCands[iFirDispCand].m_uDir;3397 mvIvDcShift[0].setMvField(cMv, m_mergCands[iFirDispCand].m_cMvField[0].getRefIdx() );3398 mvIvDcShift[1].setMvField(m_mergCands[iFirDispCand].m_cMvField[1].getMv(), m_mergCands[iFirDispCand].m_cMvField[1].getRefIdx() );3399 m_mergCands[MRG_IVSHIFT].setCand(mvIvDcShift, dirIvDcShift, false, false);3400 3401 if( mrgCandIdx == iCount )3402 {3403 return true;3404 }3405 iCount++;3406 break;3407 }3408 }3409 #endif3410 3411 3367 /// iLoop = 0 --> IvMCShift 3412 3368 /// iLoop = 1 --> IvDCShift (Derived from IvDC) … … 3455 3411 } 3456 3412 3457 #if !SEC_SIMP_SHIFTED_DV_I00863458 inline Bool TComDataCU::xGetPosFirstAvailDmvCand(Int iCount, Int& posFirstAvailDmvCand )3459 {3460 for ( Int currListPos = 0; currListPos < iCount; currListPos++ )3461 {3462 if ( !m_mergCands[currListPos].m_bAvailable || ( currListPos == MRG_IVMC ) || ( currListPos == MRG_IVDC ) || ( m_mergCands[currListPos].m_iVspFlag != 0 ))3463 {3464 continue;3465 }3466 else if((m_mergCands[currListPos].m_bAvailable) && (m_mergCands[currListPos].m_cMvField[0].getRefIdx() != -1 ) && (getSlice()->getViewIndex() != getSlice()->getRefPic(RefPicList(0), m_mergCands[currListPos].m_cMvField[0].getRefIdx())->getViewIndex()))3467 {3468 posFirstAvailDmvCand = currListPos;3469 return true;3470 }3471 }3472 return false;3473 }3474 #endif3475 3476 3413 #endif 3477 3414 … … 3921 3858 Void TComDataCU::getInterMergeCandidates( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMvFieldNeighbours, UChar* puhInterDirNeighbours 3922 3859 #endif 3923 #if H_3D_VSP && !FIX_TICKET_793924 , InheritedVSPDisInfo* inheritedVSPDisInfo3925 #endif3926 3860 #if H_3D_SPIVMP 3927 3861 , TComMvField* pcMvFieldSP, UChar* puhInterDirSP … … 3951 3885 ////////////////////////////////// 3952 3886 DisInfo cDisInfo = getDvInfo(uiAbsPartIdx); 3953 #if !FIX_TICKET_793954 for(Int i = 0; i < MRG_MAX_NUM_CANDS_MEM; i++)3955 {3956 inheritedVSPDisInfo[i].m_acDvInfo = cDisInfo; // To prevent run-time error, this code must be executed always for merging process.3957 }3958 #endif3959 3887 m_cDefaultDisInfo = cDisInfo; 3960 3888 … … 4177 4105 TComPic * pcTexPic = m_pcSlice->getTexturePic(); 4178 4106 #if H_3D_FCO 4179 #if LGE_FCO_I01164107 #if H_3D_FCO 4180 4108 if (pcTexPic && pcTexPic->getReconMark()) 4181 4109 #else … … 4251 4179 TComMv cMv = cDefaultMvField.getMv() + cMvRounding; 4252 4180 cMv >>= 2; 4253 #if !FIX_TICKET_684254 clipMv( cMv );4255 #endif4256 4181 cMvFieldSaved[eCurrRefPicList].setMvField(cMv, iRefPicList) ; 4257 4182 break; … … 5325 5250 #endif 5326 5251 5327 #if !FIX_TICKET_765328 #if H_3D_VSP5329 inline Void TComDataCU::xInheritVSPDisInfo(TComDataCU* pcCURef, UInt uiAbsPartIdx, Int iCount, InheritedVSPDisInfo* inheritedVSPDisInfo)5330 {5331 inheritedVSPDisInfo[iCount].m_acDvInfo.m_acNBDV = pcCURef->getDvInfo(uiAbsPartIdx).m_acNBDV;5332 inheritedVSPDisInfo[iCount].m_acDvInfo.m_aVIdxCan = pcCURef->getDvInfo(uiAbsPartIdx).m_aVIdxCan;5333 }5334 #endif5335 #endif5336 5252 /** Check whether the current PU and a spatial neighboring PU are in a same ME region. 5337 5253 * \param xN, xN location of the upper-left corner pixel of a neighboring PU … … 5976 5892 Int iColRefViewId = pColCU->getSlice()->getRefPic( eColRefPicList, pColCU->getCUMvField(eColRefPicList)->getRefIdx(uiAbsPartAddr))->getViewIndex(); 5977 5893 iScale = xGetDistScaleFactor( iCurrViewId, iCurrRefViewId, iColViewId, iColRefViewId ); 5978 #if SEC_HLS_CLEANUP_I0100 5894 5979 5895 if ( iScale != 4096 && m_pcSlice->getVPS()->getIvMvScalingFlag(getSlice()->getLayerIdInVps()) ) 5980 #else5981 if ( iScale != 4096 && m_pcSlice->getVPS()->getIvMvScalingFlag() )5982 #endif5983 5896 { 5984 5897 rcMv = cColMv.scaleMv( iScale ); … … 6164 6077 TComMv cMv; 6165 6078 #if MTK_I0093 6166 #if H_3D_FIX_64BIT_SHIFT6167 6079 Int iDisp = getSlice()->getDepthToDisparityB( 0 )[ (Int64) (1 << ( getSlice()->getSPS()->getBitDepthY() - 1 )) ]; 6168 #else6169 Int iDisp = getSlice()->getDepthToDisparityB( 0 )[ 1 << ( getSlice()->getSPS()->getBitDepthY() - 1 ) ];6170 #endif6171 6080 #else 6172 6081 Int iDisp = getSlice()->getDepthToDisparityB( 0 )[ 128 ]; … … 6181 6090 #endif 6182 6091 6183 #if MTK_SINGLE_DEPTH_MODE_I00956092 #if H_3D_SINGLE_DEPTH 6184 6093 Bool TComDataCU::getNeighDepth (UInt uiPartIdx, UInt uiPartAddr, Pel* pNeighDepth, Int index) 6185 6094 { … … 6795 6704 if( getSlice()->getIsDepth() ) 6796 6705 { 6797 #if MTK_I0099_VPS_EX26798 6706 iSubPUSize = 1<<getSlice()->getVPS()->getSubPUMPILog2Size(getSlice()->getLayerId()); 6799 #else6800 iSubPUSize = 1 << getSlice()->getVPS()->getSubPUMPILog2Size();6801 #endif6802 6707 } 6803 6708 -
trunk/source/Lib/TLibCommon/TComDataCU.h
r1039 r1084 110 110 // ------------------------------------------------------------------------------------------------------------------- 111 111 Bool* m_skipFlag; ///< array of skip flags 112 #if MTK_SINGLE_DEPTH_MODE_I0095112 #if H_3D_SINGLE_DEPTH 113 113 Bool* m_singleDepthFlag; ///< array of single depth flags 114 114 Pel* m_apSingleDepthValue; … … 250 250 #if H_3D_IV_MERGE 251 251 Bool xAddIvMRGCand( Int mrgCandIdx, Int& iCount, Int* ivCandDir, TComMv* ivCandMv, Int* ivCandRefIdx ); 252 #if! SEC_SIMP_SHIFTED_DV_I0086253 Bool xGetPosFirstAvailDmvCand( Int iCount, Int& iFirDispCand );254 #endif255 252 #endif 256 253 … … 353 350 Void setSkipFlag ( UInt idx, Bool skip) { m_skipFlag[idx] = skip; } 354 351 Void setSkipFlagSubParts ( Bool skip, UInt absPartIdx, UInt depth ); 355 #if MTK_SINGLE_DEPTH_MODE_I0095352 #if H_3D_SINGLE_DEPTH 356 353 Bool* getSingleDepthFlag () { return m_singleDepthFlag; } 357 354 Bool getSingleDepthFlag (UInt idx) { return m_singleDepthFlag[idx]; } … … 505 502 Bool getDispMvPredCan(UInt uiPartIdx, RefPicList eRefPicList, Int iRefIdx, Int* paiPdmRefIdx, TComMv* pacPdmMv, DisInfo* pDis, Int* iPdm ); 506 503 #endif 507 #if MTK_SINGLE_DEPTH_MODE_I0095504 #if H_3D_SINGLE_DEPTH 508 505 Bool getNeighDepth (UInt uiPartIdx, UInt uiPartAddr, Pel* pNeighDepth, Int index); 509 506 #endif … … 670 667 Void getInterMergeCandidates ( UInt uiAbsPartIdx, UInt uiPUIdx, TComMvField* pcMFieldNeighbours, UChar* puhInterDirNeighbours 671 668 #endif 672 #if H_3D_VSP && !FIX_TICKET_79673 , InheritedVSPDisInfo* inheritedVSPDisInfo674 #endif675 669 #if H_3D_SPIVMP 676 670 , TComMvField* pcMvFieldSP, UChar* puhInterDirSP … … 680 674 681 675 #if H_3D_VSP 682 #if !FIX_TICKET_76683 inline Void xInheritVSPDisInfo(TComDataCU* pcCURef, UInt uiAbsPartIdx, Int iCount, InheritedVSPDisInfo* inheritedVSPDisInfo);684 #endif685 686 676 #if H_3D_SPIVMP 687 677 Bool* getSPIVMPFlag () { return m_pbSPIVMPFlag; } … … 771 761 #endif 772 762 773 #if SHARP_DMM1_I0110763 #if H_3D_DIM 774 764 Bool isDMM1UpscaleMode ( UInt uiWidth ){ Bool bDMM1UpsampleModeFlag = true; UInt uiBaseWidth = 16; if( uiBaseWidth >= uiWidth ){ bDMM1UpsampleModeFlag = false; } return bDMM1UpsampleModeFlag; }; 775 765 UInt getDMM1BasePatternWidth ( UInt uiWidth ){ UInt uiBaseWidth = 16; if( uiBaseWidth >= uiWidth ){ uiBaseWidth = uiWidth; } return uiBaseWidth; } -
trunk/source/Lib/TLibCommon/TComMotionInfo.h
r1039 r1084 79 79 } IDVInfo; 80 80 #endif 81 #if H_3D_VSP && !FIX_TICKET_79 82 typedef struct _InheritedVSPDisCand 83 { 84 DisInfo m_acDvInfo; 85 } InheritedVSPDisInfo; 86 #endif 81 87 82 // ==================================================================================================================== 88 83 // Class definition -
trunk/source/Lib/TLibCommon/TComPicSym.cpp
r872 r1084 38 38 #include "TComPicSym.h" 39 39 #include "TComSampleAdaptiveOffset.h" 40 #include "TComSlice.h" 40 41 41 42 //! \ingroup TLibCommon … … 63 64 ,m_iNumColumnsMinus1 (0) 64 65 ,m_iNumRowsMinus1(0) 65 ,m_apcTComTile(NULL)66 66 ,m_puiCUOrderMap(0) 67 67 ,m_puiTileIdxMap(NULL) … … 101 101 delete [] m_apcTComSlice; 102 102 } 103 m_apcTComSlice = new TComSlice*[m_uiNumCUsInFrame *m_uiNumPartitions];103 m_apcTComSlice = new TComSlice*[m_uiNumCUsInFrame]; 104 104 m_apcTComSlice[0] = new TComSlice; 105 105 m_uiNumAllocatedSlice = 1; … … 148 148 m_apcTComDataCU = NULL; 149 149 150 for(Int i = 0; i < (m_iNumColumnsMinus1+1)*(m_iNumRowsMinus1+1); i++ )151 {152 delete m_apcTComTile[i];153 }154 delete [] m_apcTComTile;155 156 m_apcTComTile = NULL;157 158 150 delete [] m_puiCUOrderMap; 159 151 m_puiCUOrderMap = NULL; … … 173 165 Void TComPicSym::allocateNewSlice() 174 166 { 167 assert ((m_uiNumAllocatedSlice + 1) <= m_uiNumCUsInFrame); 175 168 m_apcTComSlice[m_uiNumAllocatedSlice ++] = new TComSlice; 176 169 if (m_uiNumAllocatedSlice>=2) … … 201 194 } 202 195 203 Void TComPicSym::xCreateTComTileArray() 204 { 205 m_apcTComTile = new TComTile*[(m_iNumColumnsMinus1+1)*(m_iNumRowsMinus1+1)]; 206 for( UInt i=0; i<(m_iNumColumnsMinus1+1)*(m_iNumRowsMinus1+1); i++ ) 207 { 208 m_apcTComTile[i] = new TComTile; 209 } 210 } 211 212 Void TComPicSym::xInitTiles() 213 { 214 UInt uiTileIdx; 215 UInt uiColumnIdx = 0; 216 UInt uiRowIdx = 0; 217 UInt uiRightEdgePosInCU; 218 UInt uiBottomEdgePosInCU; 219 Int i, j; 196 Void TComPicSym::initTiles(TComPPS *pps) 197 { 198 //set NumColumnsMinus1 and NumRowsMinus1 199 setNumColumnsMinus1( pps->getNumTileColumnsMinus1() ); 200 setNumRowsMinus1( pps->getTileNumRowsMinus1() ); 201 202 const Int numCols = pps->getNumTileColumnsMinus1() + 1; 203 const Int numRows = pps->getTileNumRowsMinus1() + 1; 204 const Int numTiles = numRows * numCols; 205 206 // allocate memory for tile parameters 207 m_tileParameters.resize(numTiles); 208 209 if( pps->getTileUniformSpacingFlag() ) 210 { 211 //set width and height for each (uniform) tile 212 for(Int row=0; row < numRows; row++) 213 { 214 for(Int col=0; col < numCols; col++) 215 { 216 const Int tileIdx = row * numCols + col; 217 m_tileParameters[tileIdx].setTileWidth( (col+1)*getFrameWidthInCU()/numCols 218 - (col*getFrameWidthInCU())/numCols ); 219 m_tileParameters[tileIdx].setTileHeight( (row+1)*getFrameHeightInCU()/numRows 220 - (row*getFrameHeightInCU())/numRows ); 221 } 222 } 223 } 224 else 225 { 226 //set the width for each tile 227 for(Int row=0; row < numRows; row++) 228 { 229 Int cumulativeTileWidth = 0; 230 for(Int col=0; col < getNumColumnsMinus1(); col++) 231 { 232 m_tileParameters[row * numCols + col].setTileWidth( pps->getTileColumnWidth(col) ); 233 cumulativeTileWidth += pps->getTileColumnWidth(col); 234 } 235 m_tileParameters[row * numCols + getNumColumnsMinus1()].setTileWidth( getFrameWidthInCU()-cumulativeTileWidth ); 236 } 237 238 //set the height for each tile 239 for(Int col=0; col < numCols; col++) 240 { 241 Int cumulativeTileHeight = 0; 242 for(Int row=0; row < getNumRowsMinus1(); row++) 243 { 244 m_tileParameters[row * numCols + col].setTileHeight( pps->getTileRowHeight(row) ); 245 cumulativeTileHeight += pps->getTileRowHeight(row); 246 } 247 m_tileParameters[getNumRowsMinus1() * numCols + col].setTileHeight( getFrameHeightInCU()-cumulativeTileHeight ); 248 } 249 } 250 251 #if TILE_SIZE_CHECK 252 Int minWidth = 1; 253 Int minHeight = 1; 254 const Int profileIdc = pps->getSPS()->getPTL()->getGeneralPTL()->getProfileIdc(); 255 if ( profileIdc == Profile::MAIN || profileIdc == Profile::MAIN10) 256 { 257 if (pps->getTilesEnabledFlag()) 258 { 259 minHeight = 64 / g_uiMaxCUHeight; 260 minWidth = 256 / g_uiMaxCUWidth; 261 } 262 } 263 for(Int row=0; row < numRows; row++) 264 { 265 for(Int col=0; col < numCols; col++) 266 { 267 const Int tileIdx = row * numCols + col; 268 assert (m_tileParameters[tileIdx].getTileWidth() >= minWidth); 269 assert (m_tileParameters[tileIdx].getTileHeight() >= minHeight); 270 } 271 } 272 #endif 220 273 221 274 //initialize each tile of the current picture 222 for( uiRowIdx=0; uiRowIdx < m_iNumRowsMinus1+1; uiRowIdx++ )223 { 224 for( uiColumnIdx=0; uiColumnIdx < m_iNumColumnsMinus1+1; uiColumnIdx++ )225 { 226 uiTileIdx = uiRowIdx * (m_iNumColumnsMinus1+1) + uiColumnIdx;275 for( Int row=0; row < numRows; row++ ) 276 { 277 for( Int col=0; col < numCols; col++ ) 278 { 279 const Int tileIdx = row * numCols + col; 227 280 228 281 //initialize the RightEdgePosInCU for each tile 229 uiRightEdgePosInCU = 0;230 for( i=0; i <= uiColumnIdx; i++ )231 { 232 uiRightEdgePosInCU += this->getTComTile(uiRowIdx * (m_iNumColumnsMinus1+1) + i)->getTileWidth();233 } 234 this->getTComTile(uiTileIdx)->setRightEdgePosInCU(uiRightEdgePosInCU-1);282 Int rightEdgePosInCTU = 0; 283 for( Int i=0; i <= col; i++ ) 284 { 285 rightEdgePosInCTU += m_tileParameters[row * numCols + i].getTileWidth(); 286 } 287 m_tileParameters[tileIdx].setRightEdgePosInCU(rightEdgePosInCTU-1); 235 288 236 289 //initialize the BottomEdgePosInCU for each tile 237 uiBottomEdgePosInCU = 0;238 for( i=0; i <= uiRowIdx; i++ )239 { 240 uiBottomEdgePosInCU += this->getTComTile(i * (m_iNumColumnsMinus1+1) + uiColumnIdx)->getTileHeight();241 } 242 this->getTComTile(uiTileIdx)->setBottomEdgePosInCU(uiBottomEdgePosInCU-1);290 Int bottomEdgePosInCTU = 0; 291 for( Int i=0; i <= row; i++ ) 292 { 293 bottomEdgePosInCTU += m_tileParameters[i * numCols + col].getTileHeight(); 294 } 295 m_tileParameters[tileIdx].setBottomEdgePosInCU(bottomEdgePosInCTU-1); 243 296 244 297 //initialize the FirstCUAddr for each tile 245 this->getTComTile(uiTileIdx)->setFirstCUAddr( (this->getTComTile(uiTileIdx)->getBottomEdgePosInCU() - this->getTComTile(uiTileIdx)->getTileHeight() +1)*m_uiWidthInCU + 246 this->getTComTile(uiTileIdx)->getRightEdgePosInCU() - this->getTComTile(uiTileIdx)->getTileWidth() + 1); 247 } 248 } 298 m_tileParameters[tileIdx].setFirstCUAddr( (m_tileParameters[tileIdx].getBottomEdgePosInCU() - m_tileParameters[tileIdx].getTileHeight() + 1) * getFrameWidthInCU() + 299 m_tileParameters[tileIdx].getRightEdgePosInCU() - m_tileParameters[tileIdx].getTileWidth() + 1); 300 } 301 } 302 303 Int columnIdx = 0; 304 Int rowIdx = 0; 249 305 250 306 //initialize the TileIdxMap 251 for( i=0; i<m_uiNumCUsInFrame; i++)252 { 253 for( j=0; j < m_iNumColumnsMinus1+1; j++)254 { 255 if(i % m_uiWidthInCU <= this->getTComTile(j)->getRightEdgePosInCU())256 { 257 uiColumnIdx = j;258 j = m_iNumColumnsMinus1+1;259 } 260 } 261 for( j=0; j < m_iNumRowsMinus1+1; j++)262 { 263 if(i /m_uiWidthInCU <= this->getTComTile(j*(m_iNumColumnsMinus1 + 1))->getBottomEdgePosInCU())264 { 265 uiRowIdx = j;266 j = m_iNumRowsMinus1 + 1;267 } 268 } 269 m_puiTileIdxMap[i] = uiRowIdx * (m_iNumColumnsMinus1 + 1) + uiColumnIdx;307 for( Int i=0; i<m_uiNumCUsInFrame; i++) 308 { 309 for( Int col=0; col < numCols; col++) 310 { 311 if(i % getFrameWidthInCU() <= m_tileParameters[col].getRightEdgePosInCU()) 312 { 313 columnIdx = col; 314 break; 315 } 316 } 317 for(Int row=0; row < numRows; row++) 318 { 319 if(i / getFrameWidthInCU() <= m_tileParameters[row*numCols].getBottomEdgePosInCU()) 320 { 321 rowIdx = row; 322 break; 323 } 324 } 325 m_puiTileIdxMap[i] = rowIdx * numCols + columnIdx; 270 326 } 271 327 … … 417 473 418 474 TComTile::TComTile() 475 : m_uiTileWidth (0) 476 , m_uiTileHeight (0) 477 , m_uiRightEdgePosInCU (0) 478 , m_uiBottomEdgePosInCU (0) 479 , m_uiFirstCUAddr (0) 480 419 481 { 420 482 } -
trunk/source/Lib/TLibCommon/TComPicSym.h
r872 r1084 45 45 #include "TComDataCU.h" 46 46 class TComSampleAdaptiveOffset; 47 class TComPPS; 47 48 48 49 //! \ingroup TLibCommon … … 102 103 Int m_iNumColumnsMinus1; 103 104 Int m_iNumRowsMinus1; 104 TComTile** m_apcTComTile;105 std::vector<TComTile> m_tileParameters; 105 106 UInt* m_puiCUOrderMap; //the map of LCU raster scan address relative to LCU encoding order 106 107 UInt* m_puiTileIdxMap; //the map of the tile index relative to LCU raster scan address … … 133 134 Int getNumRowsMinus1() { return m_iNumRowsMinus1; } 134 135 Int getNumTiles() { return (m_iNumRowsMinus1+1)*(m_iNumColumnsMinus1+1); } 135 TComTile* getTComTile ( UInt tileIdx ) { return *(m_apcTComTile + tileIdx); }136 TComTile* getTComTile ( UInt tileIdx ) { return &(m_tileParameters[tileIdx]); } 136 137 Void setCUOrderMap( Int encCUOrder, Int cuAddr ) { *(m_puiCUOrderMap + encCUOrder) = cuAddr; } 137 138 UInt getCUOrderMap( Int encCUOrder ) { return *(m_puiCUOrderMap + (encCUOrder>=m_uiNumCUsInFrame ? m_uiNumCUsInFrame : encCUOrder)); } … … 141 142 UInt getPicSCUEncOrder( UInt SCUAddr ); 142 143 UInt getPicSCUAddr( UInt SCUEncOrder ); 143 Void xCreateTComTileArray(); 144 Void xInitTiles(); 144 Void initTiles(TComPPS *pps); 145 145 UInt xCalculateNxtCUAddr( UInt uiCurrCUAddr ); 146 146 SAOBlkParam* getSAOBlkParam() { return m_saoBlkParams;} -
trunk/source/Lib/TLibCommon/TComPrediction.cpp
r1039 r1084 423 423 424 424 UInt dimType = getDimType ( uiIntraMode ); 425 #if !HS_DMM_SIGNALLING_I0120426 Bool dimDeltaDC = isDimDeltaDC( uiIntraMode );427 #endif428 425 Bool isDmmMode = (dimType < DMM_NUM_TYPE); 429 426 … … 440 437 case( DMM1_IDX ): 441 438 { 442 #if SHARP_DMM1_I0110443 439 dmmSegmentation = pcCU->isDMM1UpscaleMode((UInt)iWidth) ? 444 440 &(g_dmmWedgeLists[ g_aucConvertToBit[pcCU->getDMM1BasePatternWidth((UInt)iWidth)] ][ pcCU->getDmmWedgeTabIdx( dimType, uiAbsPartIdx ) ]) : 445 441 &(g_dmmWedgeLists[ g_aucConvertToBit[iWidth] ][ pcCU->getDmmWedgeTabIdx( dimType, uiAbsPartIdx ) ]); 446 #else447 dmmSegmentation = &(g_dmmWedgeLists[ g_aucConvertToBit[iWidth] ][ pcCU->getDmmWedgeTabIdx( dimType, uiAbsPartIdx ) ]);448 #endif449 442 } break; 450 443 case( DMM4_IDX ): … … 464 457 } 465 458 assert( dmmSegmentation ); 466 #if SHARP_DMM1_I0110467 459 if( dimType == DMM1_IDX && pcCU->isDMM1UpscaleMode((UInt)iWidth) ) 468 460 { … … 475 467 patternStride = dmmSegmentation->getStride (); 476 468 } 477 #else478 biSegPattern = dmmSegmentation->getPattern();479 patternStride = dmmSegmentation->getStride ();480 #endif481 469 } 482 470 #endif … … 495 483 Pel segDC1 = 0; 496 484 Pel segDC2 = 0; 497 #if HS_DMM_SIGNALLING_I0120498 485 if( !pcCU->getSDCFlag( uiAbsPartIdx ) ) 499 #else500 if( dimDeltaDC )501 #endif502 486 { 503 487 Pel deltaDC1 = pcCU->getDimDeltaDC( dimType, 0, uiAbsPartIdx ); … … 568 552 pcCU->getSPAbsPartIdx(uiPartAddr, iSPWidth, iSPHeight, i, iNumSPInOneLine, uiSPAddr[i]); 569 553 } 570 #if SHARP_ARP_CHROMA_I0104571 554 if( pcCU->getARPW( uiPartAddr ) != 0 ) 572 555 { 573 556 return; 574 557 } 575 #endif 558 576 559 // horizontal sub-PU merge 577 560 for (Int i=0; i<iNumSP; i++) … … 745 728 Int uiMinDepth = MAX_INT; 746 729 Int uiMaxDepth = 0; 747 #if SEC_DBBP_DMM4_THRESHOLD_I0076 730 748 731 iSumDepth = pDepthPels[ 0 ]; 749 732 iSumDepth += pDepthPels[ uiWidth - 1 ]; … … 760 743 uiMaxDepth = std::max( uiMaxDepth, (Int)pDepthPels[ uiDepthStride * (uiHeight - 1) ]); 761 744 uiMaxDepth = std::max( uiMaxDepth, (Int)pDepthPels[ uiDepthStride * (uiHeight - 1) + uiWidth - 1 ]); 762 #else 763 for (Int y=0; y<uiHeight; y++) 764 { 765 for (Int x=0; x<uiWidth; x++) 766 { 767 Int depthPel = pDepthPels[x]; 768 iSumDepth += depthPel; 769 770 if( depthPel > uiMaxDepth ) 771 { 772 uiMaxDepth = depthPel; 773 } 774 if( depthPel < uiMinDepth ) 775 { 776 uiMinDepth = depthPel; 777 } 778 } 779 780 // next row 781 pDepthPels += uiDepthStride; 782 } 783 #endif 745 784 746 785 747 // don't generate mask for blocks with small depth range (encoder decision) … … 790 752 791 753 AOF(uiWidth==uiHeight); 792 #if SEC_DBBP_DMM4_THRESHOLD_I0076793 754 Int iMean = iSumDepth >> 2; 794 #else795 Int iSizeInBits = g_aucConvertToBit[uiWidth]+2;796 Int iMean = iSumDepth >> iSizeInBits*2; // iMean /= (uiWidth*uiHeight);797 #endif798 755 799 756 // start again for segmentation … … 842 799 } 843 800 844 #if SHARP_DBBP_SIMPLE_FLTER_I0109845 801 Void TComPrediction::combineSegmentsWithMask( TComYuv* pInYuv[2], TComYuv* pOutYuv, Bool* pMask, UInt uiWidth, UInt uiHeight, UInt uiPartAddr, UInt partSize ) 846 #else847 Void TComPrediction::combineSegmentsWithMask( TComYuv* pInYuv[2], TComYuv* pOutYuv, Bool* pMask, UInt uiWidth, UInt uiHeight, UInt uiPartAddr )848 #endif849 802 { 850 803 Pel* piSrc[2] = {pInYuv[0]->getLumaAddr(uiPartAddr), pInYuv[1]->getLumaAddr(uiPartAddr)}; … … 854 807 855 808 UInt uiMaskStride= MAX_CU_SIZE; 856 #if !SHARP_DBBP_SIMPLE_FLTER_I0109857 Pel filSrc = 0;858 #endif859 809 Pel* tmpTar = 0; 860 810 tmpTar = (Pel *)xMalloc(Pel, uiWidth*uiHeight); … … 880 830 } 881 831 882 #if SHARP_DBBP_SIMPLE_FLTER_I0109883 832 if (partSize == SIZE_Nx2N) 884 833 { … … 917 866 } 918 867 } 919 #else920 for (Int y=0; y<uiHeight; y++)921 {922 for (Int x=0; x<uiWidth; x++)923 {924 Bool t = (y==0)?pMaskStart[y*uiMaskStride+x]:pMaskStart[(y-1)*uiMaskStride+x];925 Bool l = (x==0)?pMaskStart[y*uiMaskStride+x]:pMaskStart[y*uiMaskStride+x-1];926 Bool b = (y==uiHeight-1)?pMaskStart[y*uiMaskStride+x]:pMaskStart[(y+1)*uiMaskStride+x];927 Bool r = (x==uiWidth-1)?pMaskStart[y*uiMaskStride+x]:pMaskStart[y*uiMaskStride+x+1];928 Bool c =pMaskStart[y*uiMaskStride+x];929 930 Pel left, right, top, bottom;931 left = (x==0) ? tmpTar[y*uiWidth+x] : tmpTar[y*uiWidth+x-1];932 right = (x==uiWidth-1) ? tmpTar[y*uiWidth+x] : tmpTar[y*uiWidth+x+1];933 top = (y==0) ? tmpTar[y*uiWidth+x] : tmpTar[(y-1)*uiWidth+x];934 bottom = (y==uiHeight-1) ? tmpTar[y*uiWidth+x] : tmpTar[(y+1)*uiWidth+x];935 936 if(!((l&&r&&c) || (!l&&!r&&!c)))937 {938 filSrc = Clip3( Pel( 0 ), Pel( 255 ), Pel(( left + (tmpTar[y*uiWidth+x] << 1) + right ) >> 2 ));939 }940 else941 {942 filSrc = tmpTar[y*uiWidth+x];943 }944 945 if(!((t&&b&&c) || (!t&&!b&&!c)))946 {947 filSrc = Clip3( Pel( 0 ), Pel( 255 ), Pel(( top + (filSrc << 1) + bottom ) >> 2 ));948 }949 piDst[x] = filSrc;950 }951 piDst += uiDstStride;952 }953 #endif954 868 955 869 if ( tmpTar ) { xFree(tmpTar); tmpTar = NULL; } … … 989 903 } 990 904 991 #if SHARP_DBBP_SIMPLE_FLTER_I0109992 905 if (partSize == SIZE_Nx2N) 993 906 { … … 1056 969 } 1057 970 } 1058 #else 1059 for (Int y=0; y<uiHeightC; y++) 1060 { 1061 for (Int x=0; x<uiWidthC; x++) 1062 { 1063 Bool t = (y==0)?pMaskStart[y*2*uiMaskStride+x*2]:pMaskStart[(y-1)*2*uiMaskStride+x*2]; 1064 Bool l = (x==0)?pMaskStart[y*2*uiMaskStride+x*2]:pMaskStart[y*2*uiMaskStride+(x-1)*2]; 1065 Bool b = (y==uiHeightC-1)?pMaskStart[y*2*uiMaskStride+x*2]:pMaskStart[(y+1)*2*uiMaskStride+x*2]; 1066 Bool r = (x==uiWidthC-1)?pMaskStart[y*2*uiMaskStride+x*2]:pMaskStart[y*2*uiMaskStride+(x+1)*2]; 1067 Bool c =pMaskStart[y*2*uiMaskStride+x*2]; 1068 1069 Pel leftU, rightU, topU, bottomU; 1070 leftU = (x==0) ? tmpTarU[y*uiWidthC+x] : tmpTarU[y*uiWidthC+x-1]; 1071 rightU = (x==uiWidthC-1) ? tmpTarU[y*uiWidthC+x] : tmpTarU[y*uiWidthC+x+1]; 1072 topU = (y==0) ? tmpTarU[y*uiWidthC+x] : tmpTarU[(y-1)*uiWidthC+x]; 1073 bottomU = (y==uiHeightC-1) ? tmpTarU[y*uiWidthC+x] : tmpTarU[(y+1)*uiWidthC+x]; 1074 1075 Pel leftV, rightV, topV, bottomV; 1076 leftV = (x==0) ? tmpTarV[y*uiWidthC+x] : tmpTarV[y*uiWidthC+x-1]; 1077 rightV = (x==uiWidthC-1) ? tmpTarV[y*uiWidthC+x] : tmpTarV[y*uiWidthC+x+1]; 1078 topV = (y==0) ? tmpTarV[y*uiWidthC+x] : tmpTarV[(y-1)*uiWidthC+x]; 1079 bottomV = (y==uiHeightC-1) ? tmpTarV[y*uiWidthC+x] : tmpTarV[(y+1)*uiWidthC+x]; 1080 1081 if(!((l&&r&&c) || (!l&&!r&&!c))) 1082 { 1083 filSrcU = Clip3( Pel( 0 ), Pel( 255 ), Pel(( leftU + (tmpTarU[y*uiWidthC+x] << 1) + rightU ) >> 2 )); 1084 filSrcV = Clip3( Pel( 0 ), Pel( 255 ), Pel(( leftV + (tmpTarV[y*uiWidthC+x] << 1) + rightV ) >> 2 )); 1085 } 1086 else 1087 { 1088 filSrcU = tmpTarU[y*uiWidthC+x]; 1089 filSrcV = tmpTarV[y*uiWidthC+x]; 1090 } 1091 1092 if(!((t&&b&&c) || (!t&&!b&&!c))) 1093 { 1094 filSrcU = Clip3( Pel( 0 ), Pel( 255 ), Pel(( topU + (filSrcU << 1) + bottomU ) >> 2 )); 1095 filSrcV = Clip3( Pel( 0 ), Pel( 255 ), Pel(( topV + (filSrcV << 1) + bottomV ) >> 2 )); 1096 } 1097 1098 piDstU[x] = filSrcU; 1099 piDstV[x] = filSrcV; 1100 } 1101 piDstU += uiDstStrideC; 1102 piDstV += uiDstStrideC; 1103 } 1104 #endif 971 1105 972 if ( tmpTarU ) { xFree(tmpTarU); tmpTarU = NULL; } 1106 973 if ( tmpTarV ) { xFree(tmpTarV); tmpTarV = NULL; } … … 1475 1342 pcCU->clipMv(cMv); 1476 1343 TComPicYuv* pcPicYuvRef = pcCU->getSlice()->getRefPic( eRefPicList, iRefIdx )->getPicYuvRec(); 1477 #if QC_I0129_ARP_FIX1478 1344 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi || ( dW > 0 ), true ); 1479 1345 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi || ( dW > 0 ), true ); 1480 #else 1481 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi, true ); 1482 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi, true ); 1483 #endif 1346 1484 1347 if( dW > 0 ) 1485 1348 { … … 1489 1352 TComMv cMVwithDisparity = cMv + cDistparity.m_acNBDV; 1490 1353 pcCU->clipMv(cMVwithDisparity); 1491 #if SHARP_ARP_CHROMA_I01041492 1354 if (iWidth <= 8) 1493 1355 { 1494 1356 pYuvB0->clear(); pYuvB1->clear(); 1495 1357 } 1496 #endif1497 1358 1498 1359 assert ( cDistparity.bDV ); 1499 1360 1500 #if NTT_BUG_FIX_TK541501 1361 TComMv cNBDV = cDistparity.m_acNBDV; 1502 1362 pcCU->clipMv( cNBDV ); 1503 1363 1504 1364 pcPicYuvRef = pcPicYuvBaseCol->getPicYuvRec(); 1505 #if QC_I0129_ARP_FIX1506 1365 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, true, true ); 1507 #if SHARP_ARP_CHROMA_I01041508 1366 if (iWidth > 8) 1509 #endif 1510 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, true, true ); 1511 #else 1512 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, bi, true ); 1513 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, bi, true ); 1514 #endif 1515 #else 1516 pcPicYuvRef = pcPicYuvBaseCol->getPicYuvRec(); 1517 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cDistparity.m_acNBDV, iWidth, iHeight, pYuvB0, bi, true ); 1518 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cDistparity.m_acNBDV, iWidth, iHeight, pYuvB0, bi, true ); 1519 #endif 1367 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cNBDV, iWidth, iHeight, pYuvB0, true, true ); 1520 1368 1521 1369 pcPicYuvRef = pcPicYuvBaseRef->getPicYuvRec(); 1522 #if QC_I0129_ARP_FIX1523 1370 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, true, true ); 1524 #if SHARP_ARP_CHROMA_I0104 1371 1525 1372 if (iWidth > 8) 1526 #endif 1527 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, true, true ); 1528 #else 1529 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, bi, true ); 1530 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, bi, true ); 1531 #endif 1373 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, true, true ); 1374 1532 1375 pYuvB0->subtractARP( pYuvB0 , pYuvB1 , uiPartAddr , iWidth , iHeight ); 1533 1376 … … 1540 1383 } 1541 1384 1542 #if QC_I0051_ARP_SIMP1543 1385 Bool TComPrediction::xCheckBiInterviewARP( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eBaseRefPicList, TComPic*& pcPicYuvCurrTRef, TComMv& cBaseTMV, Int& iCurrTRefPoc ) 1544 1386 { … … 1572 1414 Int iCurrRefPOC = pcPicYuvBaseTRef->getPOC(); 1573 1415 Int iCurrRef = pcCU->getSlice()->getFirstTRefIdx(eRefPicListCurr); 1574 #if MTK_I0072_IVARP_SCALING_FIX 1416 1575 1417 if( iCurrRef >= 0 && iCurrPOC != iCurrRefPOC) 1576 #else1577 if( iCurrRef >= 0)1578 #endif1579 1418 { 1580 1419 pcPicYuvCurrTRef = pcCU->getSlice()->getRefPic(eRefPicListCurr,iCurrRef); … … 1608 1447 return false; 1609 1448 } 1610 #endif1611 1449 1612 1450 Void TComPrediction::xPredInterUniARPviewRef( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Bool bi, TComMvField * pNewMvFiled ) … … 1643 1481 pcYuvBaseCol->getCUAddrAndPartIdx( irefPUX, irefPUY, uiLCUAddr, uiAbsPartAddr); 1644 1482 TComDataCU *pColCU = pcPicYuvBaseCol->getCU( uiLCUAddr ); 1645 #if QC_I0051_ARP_SIMP1646 1483 if( pcCU->getSlice()->isInterB() && !pcCU->getSlice()->getIsDepth() ) 1647 1484 { … … 1708 1545 1709 1546 if( !pColCU->isIntra( uiAbsPartAddr ) && !bTMVAvai ) 1710 #else1711 if(!pColCU->isIntra(uiAbsPartAddr))1712 #endif1713 1547 { 1714 1548 TComMvField puMVField; … … 1723 1557 Int iCurrRefPOC = pcPicYuvBaseTRef->getPOC(); 1724 1558 Int iCurrRef = pcCU->getSlice()->getFirstTRefIdx(eRefPicListCurr); 1725 #if MTK_I0072_IVARP_SCALING_FIX1726 1559 if (iCurrRef >= 0 && iCurrRefPOC != iCurrPOC) 1727 #else1728 if( iCurrRef >= 0)1729 #endif1730 1560 { 1731 1561 pcPicYuvCurrTRef = pcCU->getSlice()->getRefPic(eRefPicListCurr,iCurrRef); … … 1754 1584 pcPicYuvCurrTRef = pcCU->getSlice()->getRefPic (eRefPicList, pcCU->getSlice()->getFirstTRefIdx(eRefPicList)); 1755 1585 } 1756 #if QC_I0129_ARP_FIX 1586 1757 1587 xPredInterLumaBlk ( pcCU, pcYuvBaseCol, uiPartAddr, &cTempDMv, iWidth, iHeight, rpcYuvPred, bi || ( dW > 0 && bTMVAvai ), bTMVAvai); 1758 1588 xPredInterChromaBlk( pcCU, pcYuvBaseCol, uiPartAddr, &cTempDMv, iWidth, iHeight, rpcYuvPred, bi || ( dW > 0 && bTMVAvai ), bTMVAvai); 1759 #else 1760 xPredInterLumaBlk ( pcCU, pcYuvBaseCol, uiPartAddr, &cTempDMv, iWidth, iHeight, rpcYuvPred, bi, bTMVAvai); 1761 xPredInterChromaBlk( pcCU, pcYuvBaseCol, uiPartAddr, &cTempDMv, iWidth, iHeight, rpcYuvPred, bi, bTMVAvai); 1762 #endif 1589 1763 1590 if( dW > 0 && bTMVAvai ) 1764 1591 { … … 1771 1598 pcCU->clipMv(cBaseTMV); 1772 1599 pcCU->clipMv(cTempMv); 1773 #if SHARP_ARP_CHROMA_I0104 1600 1774 1601 if (iWidth <= 8) 1775 1602 { 1776 1603 pYuvCurrTRef->clear(); pYuvBaseTRef->clear(); 1777 1604 } 1778 #endif1779 #if QC_I0129_ARP_FIX1780 1605 xPredInterLumaBlk ( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, true, true); 1781 #if SHARP_ARP_CHROMA_I0104 1606 1782 1607 if (iWidth > 8) 1783 #endif 1784 xPredInterChromaBlk( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, true, true); 1608 xPredInterChromaBlk( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, true, true); 1609 1785 1610 xPredInterLumaBlk ( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv, iWidth, iHeight, pYuvBaseTRef, true, true); 1786 #if SHARP_ARP_CHROMA_I0104 1611 1787 1612 if (iWidth > 8) 1788 #endif 1789 xPredInterChromaBlk( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv, iWidth, iHeight, pYuvBaseTRef, true, true); 1790 #else 1791 xPredInterLumaBlk ( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, bi, true); 1792 xPredInterChromaBlk( pcCU, pcYuvCurrTref, uiPartAddr, &cBaseTMV, iWidth, iHeight, pYuvCurrTRef, bi, true); 1793 xPredInterLumaBlk ( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv, iWidth, iHeight, pYuvBaseTRef, bi, true); 1794 xPredInterChromaBlk( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv, iWidth, iHeight, pYuvBaseTRef, bi, true); 1795 1796 #endif 1613 xPredInterChromaBlk( pcCU, pcYuvBaseTref, uiPartAddr, &cTempMv, iWidth, iHeight, pYuvBaseTRef, true, true); 1614 1797 1615 pYuvCurrTRef->subtractARP( pYuvCurrTRef , pYuvBaseTRef , uiPartAddr , iWidth , iHeight ); 1798 1616 if(dW == 2) … … 1803 1621 } 1804 1622 } 1805 1806 1623 #endif 1807 1624 … … 2328 2145 Int iRecStride = ( eType == TEXT_LUMA ) ? pRecPic->getStride() : pRecPic->getCStride(); 2329 2146 Int iRefStride = ( eType == TEXT_LUMA ) ? pRefPic->getStride() : pRefPic->getCStride(); 2330 #if SEC_IC_NEIGHBOR_CLIP_I00802331 2147 Int iRefOffset, iHor, iVer; 2332 #else2333 Int iCUPelX, iCUPelY, iRefX, iRefY, iRefOffset, iHor, iVer;2334 2335 iCUPelX = pcCU->getCUPelX() + g_auiRasterToPelX[g_auiZscanToRaster[pcCU->getZorderIdxInCU()]];2336 iCUPelY = pcCU->getCUPelY() + g_auiRasterToPelY[g_auiZscanToRaster[pcCU->getZorderIdxInCU()]];2337 #endif2338 2148 iHor = pcCU->getSlice()->getIsDepth() ? pMv->getHor() : ( ( pMv->getHor() + 2 ) >> 2 ); 2339 2149 iVer = pcCU->getSlice()->getIsDepth() ? pMv->getVer() : ( ( pMv->getVer() + 2 ) >> 2 ); 2340 #if !SEC_IC_NEIGHBOR_CLIP_I00802341 iRefX = iCUPelX + iHor;2342 iRefY = iCUPelY + iVer;2343 #endif2344 2150 if( eType != TEXT_LUMA ) 2345 2151 { … … 2357 2163 Int precShift = std::max(0, (( eType == TEXT_LUMA ) ? g_bitDepthY : g_bitDepthC) - 12); 2358 2164 2359 #if SEC_IC_NEIGHBOR_CLIP_I00802360 2165 if( pcCU->getPUAbove( uiTmpPartIdx, pcCU->getZorderIdxInCU() ) ) 2361 #else2362 if( pcCU->getPUAbove( uiTmpPartIdx, pcCU->getZorderIdxInCU() ) && iCUPelY > 0 && iRefY > 0 )2363 #endif2364 2166 { 2365 2167 iRefOffset = iHor + iVer * iRefStride - iRefStride; … … 2391 2193 } 2392 2194 2393 #if SEC_IC_NEIGHBOR_CLIP_I00802394 2195 if( pcCU->getPULeft( uiTmpPartIdx, pcCU->getZorderIdxInCU() ) ) 2395 #else2396 if( pcCU->getPULeft( uiTmpPartIdx, pcCU->getZorderIdxInCU() ) && iCUPelX > 0 && iRefX > 0 )2397 #endif2398 2196 { 2399 2197 iRefOffset = iHor + iVer * iRefStride - 1; … … 2429 2227 } 2430 2228 2431 #if FIX_TICKET_712432 2229 if( iCountShift == 0 ) 2433 2230 { … … 2436 2233 return; 2437 2234 } 2438 #endif2439 2235 2440 2236 xy += xx >> IC_REG_COST_SHIFT; … … 2553 2349 // find contour for texture luma block 2554 2350 UInt iDC = 0; 2555 #if SEC_DBBP_DMM4_THRESHOLD_I0076 2351 2556 2352 iDC = piRefBlkY[ 0 ]; 2557 2353 iDC += piRefBlkY[ uiWidth - 1 ]; … … 2559 2355 iDC += piRefBlkY[ uiWidth * (uiHeight - 1) + uiWidth - 1 ]; 2560 2356 iDC = iDC >> 2; 2561 #else2562 for( UInt k = 0; k < (uiWidth*uiHeight); k++ )2563 {2564 iDC += piRefBlkY[k];2565 }2566 2567 Int cuMaxLog2Size = g_aucConvertToBit[g_uiMaxCUWidth]+2; //2568 iDC = iDC >> (cuMaxLog2Size - pcCU->getDepth(0))*2; // iDC /= (uiWidth*uiHeight);2569 #endif2570 2357 2571 2358 piRefBlkY = cTempYuv.getLumaAddr(); -
trunk/source/Lib/TLibCommon/TComPrediction.h
r1039 r1084 90 90 #if H_3D_ARP 91 91 Void xPredInterUniARP ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Bool bi=false, TComMvField * pNewMvFiled = NULL ); 92 #if QC_I0051_ARP_SIMP93 92 Bool xCheckBiInterviewARP ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eBaseRefPicList, TComPic*& pcPicYuvCurrTRef, TComMv& cBaseTMV, Int& iCurrTRefPoc ); 94 #endif95 93 Void xPredInterUniARPviewRef( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Bool bi, TComMvField * pNewMvFiled = NULL ); 96 94 #endif … … 179 177 PartSize getPartitionSizeFromDepth(Pel* pDepthPels, UInt uiDepthStride, UInt uiSize); 180 178 Bool getSegmentMaskFromDepth( Pel* pDepthPels, UInt uiDepthStride, UInt uiWidth, UInt uiHeight, Bool* pMask ); 181 #if SHARP_DBBP_SIMPLE_FLTER_I0109182 179 Void combineSegmentsWithMask( TComYuv* pInYuv[2], TComYuv* pOutYuv, Bool* pMask, UInt uiWidth, UInt uiHeight, UInt uiPartAddr, UInt partSize ); 183 #else184 Void combineSegmentsWithMask( TComYuv* pInYuv[2], TComYuv* pOutYuv, Bool* pMask, UInt uiWidth, UInt uiHeight, UInt uiPartAddr = 0 );185 #endif186 180 #endif 187 181 -
trunk/source/Lib/TLibCommon/TComRom.cpp
r1066 r1084 355 355 HALF_PEL, // 8x8 356 356 FULL_PEL, // 16x16 357 #if SHARP_DMM1_I0110358 357 FULL_PEL, // 32x32 359 358 FULL_PEL, // 64x64 360 359 FULL_PEL // 128x128 361 #else362 DOUBLE_PEL, // 32x32363 DOUBLE_PEL, // 64x64364 DOUBLE_PEL // 128x128365 #endif366 360 }; 367 361 … … 374 368 0, 4, 7, 8, 8, 0 }; 375 369 376 #if SHARP_DMM1_I0110377 370 Bool g_wedgePattern[32*32]; 378 #endif379 371 380 372 extern std::vector< std::vector<TComWedgelet> > g_dmmWedgeLists; … … 388 380 389 381 Char g_aucConvertToBit [ MAX_CU_SIZE+1 ]; 390 #if !MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX391 #if H_3D_IC392 UInt g_aICEnableCANDIDATE[10] = { 0, };393 UInt g_aICEnableNUM[ 10 ] = { 0, };394 Int g_lastlayer=0;395 #endif396 #endif397 382 #if ENC_DEC_TRACE 398 383 FILE* g_hTrace = NULL; … … 676 661 if( !g_dmmWedgeLists.empty() ) return; 677 662 678 #if SHARP_DMM1_I0110679 663 for( UInt ui = g_aucConvertToBit[DIM_MIN_SIZE]; ui < (g_aucConvertToBit[DIM_MAX_SIZE]); ui++ ) 680 #else681 for( UInt ui = g_aucConvertToBit[DIM_MIN_SIZE]; ui < (g_aucConvertToBit[DIM_MAX_SIZE]+1); ui++ )682 #endif683 664 { 684 665 UInt uiWedgeBlockSize = ((UInt)DIM_MIN_SIZE)<<ui; … … 764 745 switch( eWedgeRes ) 765 746 { 766 #if !SHARP_DMM1_I0110767 case( DOUBLE_PEL ): { uiBlockSize = (uiWidth>>1); break; }768 #endif769 747 case( FULL_PEL ): { uiBlockSize = uiWidth; break; } 770 748 case( HALF_PEL ): { uiBlockSize = (uiWidth<<1); break; } -
trunk/source/Lib/TLibCommon/TComRom.h
r1066 r1084 166 166 extern const UChar g_dmm3IntraTabIdxBits[6]; 167 167 168 #if SHARP_DMM1_I0110169 168 extern Bool g_wedgePattern[32*32]; 170 #endif171 169 172 170 extern std::vector< std::vector<TComWedgelet> > g_dmmWedgeLists; … … 230 228 231 229 extern Char g_aucConvertToBit [ MAX_CU_SIZE+1 ]; // from width to log2(width)-2 232 #if !MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX233 #if H_3D_IC234 extern UInt g_aICEnableCANDIDATE[10];235 extern UInt g_aICEnableNUM[ 10 ]; //10 layers236 extern Int g_lastlayer;237 #endif238 #endif239 230 240 231 #ifndef ENC_DEC_TRACE -
trunk/source/Lib/TLibCommon/TComSlice.cpp
r1066 r1084 103 103 , m_temporalLayerNonReferenceFlag ( false ) 104 104 , m_enableTMVPFlag ( true ) 105 #if I0044_SLICE_TMVP105 #if H_MV 106 106 , m_availableForTMVPRefFlag ( true ) 107 #endif108 #if H_MV109 107 , m_refPicSetInterLayer0 ( NULL ) 110 108 , m_refPicSetInterLayer1 ( NULL ) … … 142 140 , m_depthToDisparityF ( NULL ) 143 141 #endif 144 #if MTK_SINGLE_DEPTH_MODE_I0095142 #if H_3D_SINGLE_DEPTH 145 143 , m_bApplySingleDepthMode (false) 146 144 #endif … … 650 648 651 649 TComPic** refPicSetStCurr [2] = { RefPicSetStCurr0, RefPicSetStCurr1 }; 652 #if FIX_WARNING653 650 Int numPocStCurr[2] = { (Int)NumPocStCurr0, (Int)NumPocStCurr1 }; 654 #else655 Int numPocStCurr[2] = { NumPocStCurr0, NumPocStCurr1 };656 #endif657 651 658 652 for (Int li = 0; li < ((m_eSliceType==B_SLICE) ? 2 : 1); li++) … … 728 722 729 723 assert( rpsCurrList[li][ orgIdx ] != NULL ); 730 #if DISCARDABLE_PIC_RPS731 724 assert( rpsCurrList[li][ orgIdx ]->getSlice(0)->getDiscardableFlag() == 0 ); // Inter-layer RPS shall not contain picture with discardable_flag = 1. 732 #endif733 725 m_apcRefPicList [li][rIdx] = rpsCurrList [li][ orgIdx ]; 734 726 m_bIsUsedAsLongTerm[li][rIdx] = usedAsLongTerm [li][ orgIdx ] ; … … 1105 1097 } 1106 1098 #endif 1107 #if MTK_SINGLE_DEPTH_MODE_I00951099 #if H_3D_SINGLE_DEPTH 1108 1100 m_bApplySingleDepthMode = pSrc->m_bApplySingleDepthMode; 1109 1101 #endif … … 1881 1873 #if H_MV 1882 1874 m_vpsBaseLayerInternalFlag = true; 1883 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL1884 1875 m_vpsBaseLayerAvailableFlag = true; 1885 #endif1886 1876 #endif 1887 1877 … … 1909 1899 { 1910 1900 m_layerSetIdxForOlsMinus1[i] = -1; 1911 #if !H_MV_HLS10_PTL1912 m_profileLevelTierIdx[i] = 0;1913 #endif1914 1901 for ( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++) 1915 1902 { 1916 #if H_MV_HLS10_PTL1917 #if H_MV_HLS10_PTL_FIX1918 1903 m_profileTierLevelIdx[i][j] = -1; 1919 #else1920 m_profileTierLevelIdx[i][j] = false;1921 #endif1922 #endif1923 1904 m_outputLayerFlag[i][j] = false; 1924 1905 } … … 1970 1951 m_viewIndex [i] = -1; 1971 1952 m_vpsDepthModesFlag [i] = false; 1972 #if SEC_HLS_CLEANUP_I01001973 1953 m_ivMvScalingFlag[i] = true; 1974 #else1975 m_ivMvScalingFlag = true;1976 #endif1977 #if SEPARATE_FLAG_I00851978 1954 m_bIVPFlag [i] = false; 1979 #endif1980 1955 #endif 1981 1956 … … 1984 1959 m_directDependencyFlag[i][j] = false; 1985 1960 m_directDependencyType[i][j] = -1; 1986 #if H_MV_HLS10_REF_PRED_LAYERS1987 1961 m_dependencyFlag [i][j] = false; 1988 1962 m_idDirectRefLayer[i][j] = -1; 1989 1963 m_idPredictedLayer[i][j] = -1; 1990 1964 m_idRefLayer [i][j] = -1; 1991 #else1992 m_refLayerId[i][j] = -1;1993 #endif1994 1965 m_maxTidIlRefPicsPlus1[i][j] = 7; 1995 1966 } … … 2016 1987 #endif 2017 1988 #endif 2018 #if MTK_I0099_VPS_EX21989 #if H_3D_QTLPC 2019 1990 m_bLimQtPredFlag [ i ] = false; 2020 1991 #endif … … 2028 1999 m_bInterSDCFlag [ i ] = false; 2029 2000 #endif 2030 #if SEPARATE_FLAG_I00852001 #if H_3D 2031 2002 m_bIVPFlag [ i ] = false; 2032 2003 #endif … … 2075 2046 assert( getVpsNumRepFormatsMinus1() <= 255 ); 2076 2047 2077 #if H_MV_HLS10_ADD_LAYERSETS2078 2048 // The value of num_add_layer_sets shall be in the range of 0 to 1023, inclusive. 2079 2049 assert( getNumAddLayerSets() >= 0 && getNumAddLayerSets() <= 1023 ); 2080 #endif2081 2050 return true; 2082 2051 } … … 2111 2080 { 2112 2081 2113 #if H_MV_HLS10_REF_PRED_LAYERS2114 2082 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2115 2083 { … … 2181 2149 } 2182 2150 m_numIndependentLayers = k; 2183 #else // H_MV_HLS10_GEN 2184 2185 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2186 { 2187 Int iNuhLId = getLayerIdInNuh( i ); 2188 m_numDirectRefLayers[ iNuhLId ] = 0; 2189 for( Int j = 0; j < i; j++ ) 2190 { 2191 if( getDirectDependencyFlag(i , j) ) 2192 { 2193 m_refLayerId[ iNuhLId ][m_numDirectRefLayers[ iNuhLId ]++ ] = getLayerIdInNuh( j ); 2194 } 2195 } 2196 } 2197 2198 for (Int i = 0 ; i < MAX_NUM_LAYER_IDS; i++ ) 2199 { 2200 m_numRefLayers[i] = 0; 2201 } 2202 2203 for (Int currLayerId = 0; currLayerId <= 62; currLayerId++ ) 2204 { 2205 for (Int i = 0 ; i < MAX_NUM_LAYER_IDS; i++ ) 2206 { 2207 m_recursiveRefLayerFlag[currLayerId][i] = 0; 2208 } 2209 } 2210 2211 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2212 { 2213 Int iNuhLId = getLayerIdInNuh( i ); 2214 xSetRefLayerFlags( iNuhLId ); 2215 for( Int j = 0; j < 63; j++ ) 2216 { 2217 m_numRefLayers[ iNuhLId ] += m_recursiveRefLayerFlag[ iNuhLId ][ j ]; 2218 } 2219 } 2220 2221 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) // Bug in spec "<" instead of "<=" 2222 { 2223 Int iNuhLId = getLayerIdInNuh( i ); 2224 Int predIdx = 0; 2225 for( Int j = iNuhLId + 1; j < 63; j++ ) 2226 { 2227 if( m_recursiveRefLayerFlag[ j ][ iNuhLId ] ) 2228 { 2229 m_predictedLayerId[ iNuhLId ][ predIdx++ ] = j; 2230 } 2231 } 2232 m_numPredictedLayers[ iNuhLId ] = predIdx; 2233 } 2234 2235 Bool countedLayerIdxFlag[ MAX_NUM_LAYERS ]; 2236 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2237 { 2238 countedLayerIdxFlag[ i ] = 0; 2239 } 2240 for( Int i = 0, k = 0; i <= getMaxLayersMinus1(); i++ ) 2241 { 2242 Int iNuhLId = getLayerIdInNuh( i ); 2243 if( m_numDirectRefLayers[ iNuhLId ] == 0 ) 2244 { 2245 m_treePartitionLayerIdList[ k ][ 0 ] = iNuhLId; 2246 m_numLayersInTreePartition[ k ] = 1; 2247 2248 for( Int j = 0; j < m_numPredictedLayers[ iNuhLId ]; j++ ) 2249 { 2250 if( !countedLayerIdxFlag[ getLayerIdInVps( m_predictedLayerId[ iNuhLId ][ j ] ) ] ) 2251 { 2252 m_treePartitionLayerIdList[ k ][ m_numLayersInTreePartition[ k ] ] = m_predictedLayerId[ iNuhLId ][ j ]; 2253 m_numLayersInTreePartition[ k ]++; 2254 countedLayerIdxFlag[ getLayerIdInVps( m_predictedLayerId[ iNuhLId ][ j ] ) ] = 1; 2255 } 2256 } 2257 k++; 2258 2259 m_numIndependentLayers = k; 2260 } 2261 } 2262 #endif // H_MV_HLS10_GEN 2263 } 2264 2265 #if !H_MV_HLS10_REF_PRED_LAYERS 2266 Int TComVPS::getRefLayerId( Int layerIdInNuh, Int idx ) 2267 { 2268 assert( idx >= 0 && idx < m_numDirectRefLayers[layerIdInNuh] ); 2269 Int refLayerIdInNuh = m_refLayerId[ layerIdInNuh ][ idx ]; 2270 assert ( refLayerIdInNuh >= 0 ); 2271 return refLayerIdInNuh; 2272 } 2273 #endif 2151 } 2152 2274 2153 2275 2154 Int TComVPS::getScalabilityId( Int layerIdInVps, ScalabilityType scalType ) … … 2309 2188 for ( i = 0; i < iNumViews ; i++ ) 2310 2189 { 2311 #if H_3D_FIX_UNINIT2312 2190 m_bCamParPresent[i] = false; 2313 #endif2314 2191 m_bCamParInSliceHeader[i] = false; 2315 2192 m_aaaiCodedScale[i] = new Int*[ 2 ]; … … 2424 2301 { 2425 2302 assert( lsIdx >= 0 ); 2426 #if H_MV_HLS10_ADD_LAYERSETS2427 2303 assert( lsIdx <= getNumLayerSets() ); 2428 #else2429 assert( lsIdx <= getVpsNumLayerSetsMinus1() );2430 #endif2431 2304 return (Int) m_layerSetLayerIdList[ lsIdx ].size(); 2432 2305 } … … 2452 2325 } 2453 2326 2454 #if !H_MV_HLS10_REF_PRED_LAYERS2455 Bool TComVPS::getInDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Int depth /*= 0 */ )2456 {2457 #if H_MV_HLS10_REF_PRED_LAYERS2458 // TBD: Remove getInDirectDependencyFlag entirely.2459 return getDependencyFlag( depLayeridInVps, refLayeridInVps );2460 #else2461 assert( depth < 65 );2462 Bool dependentFlag = getDirectDependencyFlag( depLayeridInVps, refLayeridInVps );2463 2464 for( Int i = 0; i < depLayeridInVps && !dependentFlag; i++ )2465 {2466 if ( getDirectDependencyFlag( depLayeridInVps, i ) )2467 {2468 dependentFlag = getInDirectDependencyFlag( i, refLayeridInVps, depth++ );2469 }2470 }2471 return dependentFlag;2472 #endif2473 }2474 #endif2475 2327 2476 2328 Void TComVPS::deriveLayerSetLayerIdList() … … 2501 2353 for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ ) 2502 2354 { 2503 #if H_MV_HLS10_NESSECARY_LAYER2504 2355 if ( getNecessaryLayerFlag( i , j )) 2505 2356 { 2506 #endif2507 2357 m_targetDecLayerIdLists[i].push_back( m_layerSetLayerIdList[ lsIdx ][ j ] ); 2508 #if H_MV_HLS10_NESSECARY_LAYER 2509 } 2510 #endif 2358 } 2511 2359 2512 2360 if( getOutputLayerFlag( i, j )) … … 2557 2405 } 2558 2406 2559 #if !H_MV_HLS10_ADD_LAYERSETS2560 Void TComVPS::inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder )2561 {2562 for( Int j = 0; j <= getMaxSubLayersInLayerSetMinus1( 0 ); j++ )2563 {2564 Int maxDecPicBufferingMinus1 = sps->getMaxDecPicBuffering( j ) - 1;2565 Int numReorderPics = sps->getNumReorderPics ( j );2566 Int maxLatencyIncreasePlus1 = sps->getMaxLatencyIncrease( j );2567 2568 if ( encoder )2569 {2570 assert( getDpbSize()->getMaxVpsDecPicBufferingMinus1(0, 0, j ) == maxDecPicBufferingMinus1 );2571 assert( getDpbSize()->getMaxVpsNumReorderPics (0, j ) == numReorderPics );2572 assert( getDpbSize()->getMaxVpsLatencyIncreasePlus1 (0, j ) == maxLatencyIncreasePlus1 );2573 }2574 else2575 {2576 getDpbSize()->setMaxVpsDecPicBufferingMinus1(0, 0, j, maxDecPicBufferingMinus1 );2577 getDpbSize()->setMaxVpsNumReorderPics (0, j, numReorderPics );2578 getDpbSize()->setMaxVpsLatencyIncreasePlus1 (0, j, maxLatencyIncreasePlus1 );2579 }2580 }2581 }2582 #endif2583 2407 Bool TComVPS::getAltOutputLayerFlagVar( Int i ) 2584 2408 { … … 2594 2418 } 2595 2419 2596 #if !H_MV_HLS10_MAXNUMPICS 2597 Int TComVPS::getMaxNumPics( Int layerId ) 2598 { 2599 Int maxNumPics = MAX_INT; 2600 for( Int olsIdx = 0; olsIdx < getNumOutputLayerSets(); olsIdx++) 2601 { 2602 Int lsIdx = olsIdxToLsIdx( olsIdx ); 2603 for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ ) 2604 { 2605 if( getLayerSetLayerIdList(lsIdx, j ) == layerId ) 2606 { 2607 Int maxSL = getMaxSubLayersInLayerSetMinus1( lsIdx ); 2608 maxNumPics = std::min( maxNumPics, getDpbSize()->getMaxVpsDecPicBufferingMinus1( olsIdx , j, maxSL ) ); 2609 } 2610 } 2611 } 2612 assert( maxNumPics != MAX_INT ); 2613 return maxNumPics; 2614 } 2615 #endif 2616 2617 #if !H_MV_HLS10_REF_PRED_LAYERS 2618 Void TComVPS::xSetRefLayerFlags( Int currLayerId ) 2619 { 2620 for( Int j = 0; j < getNumDirectRefLayers( currLayerId ); j++ ) 2621 { 2622 Int refLayerId = m_refLayerId[ currLayerId ][ j ]; 2623 m_recursiveRefLayerFlag[ currLayerId ][ refLayerId ] = 1; 2624 for( Int k = 0; k < MAX_NUM_LAYER_IDS; k++ ) 2625 { 2626 m_recursiveRefLayerFlag[ currLayerId ][ k ] = m_recursiveRefLayerFlag[ currLayerId ][ k ] || m_recursiveRefLayerFlag[ refLayerId ][ k ]; 2627 } 2628 } 2629 } 2630 2631 #endif 2632 2633 #if H_MV_HLS10_PTL_FIX 2420 2421 2634 2422 Int TComVPS::inferProfileTierLevelIdx(Int i, Int j) 2635 2423 { … … 2651 2439 return ptlIdx; 2652 2440 } 2653 #endif 2654 2655 #if H_MV_HLS10_ADD_LAYERSETS 2441 2656 2442 Void TComVPS::deriveAddLayerSetLayerIdList(Int i) 2657 2443 { … … 2676 2462 } 2677 2463 2678 #endif 2679 2680 #if H_MV_HLS10_NESSECARY_LAYER 2464 2681 2465 Void TComVPS::deriveNecessaryLayerFlags(Int olsIdx) 2682 2466 { … … 2709 2493 } 2710 2494 } 2711 #endif 2712 2713 #if H_MV_HLS10_ADD_LAYERSETS 2495 2714 2496 Void TComVPS::printPTL() 2715 2497 { … … 2757 2539 #endif 2758 2540 2759 #if H_MV_HLS10_AUX2760 2541 vector<Int> viewOrderIndex; 2761 2542 vector<Int> auxId; 2762 2543 vector<Int> dependencyId; 2763 2544 vector<Int> viewId; 2764 #endif2765 2545 for (Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2766 2546 { 2767 2547 fullArray.push_back( getMaxLayersMinus1() + 1 ); 2768 2548 range.push_back( i ); 2769 #if H_MV_HLS10_AUX2770 2549 viewOrderIndex.push_back( getViewIndex ( i ) ); 2771 2550 dependencyId .push_back( getDependencyId( i ) ); … … 2774 2553 #if H_3D 2775 2554 depthId.push_back( getDepthId( i ) ); 2776 #endif2777 2555 #endif 2778 2556 } … … 2787 2565 } 2788 2566 2789 #if H_MV_HLS10_AUX2790 2567 Void TComVPS::printScalabilityId() 2791 2568 { … … 2825 2602 std::cout << std::endl; 2826 2603 } 2827 #endif2828 2604 2829 2605 Void TComVPS::printLayerSets() … … 2880 2656 } 2881 2657 2882 #endif2883 2658 2884 2659 #endif // H_MV … … 2910 2685 , m_pcmLog2MaxSize ( 5) 2911 2686 , m_uiPCMLog2MinSize ( 7) 2912 #if !MTK_I0099_VPS_EX22913 #if H_3D_QTLPC2914 , m_bUseQTL (false)2915 , m_bUsePC (false)2916 #endif2917 #endif2918 2687 , m_bitDepthY ( 8) 2919 2688 , m_bitDepthC ( 8) … … 2964 2733 #endif 2965 2734 2966 #if !H_MV_HLS10_PPS2967 m_numScaledRefLayerOffsets = 0;2968 2969 for (Int i = 0; i < MAX_NUM_SCALED_REF_LAYERS; i++ )2970 {2971 m_scaledRefLayerId [i] = -1;2972 }2973 2974 for (Int i = 0; i < MAX_NUM_LAYERS; i++ )2975 {2976 m_scaledRefLayerLeftOffset [i] = 0;2977 m_scaledRefLayerTopOffset [i] = 0;2978 m_scaledRefLayerRiFghtOffset [i] = 0;2979 m_scaledRefLayerBottomOffset [i] = 0;2980 }2981 #endif2982 2735 #endif 2983 2736 } … … 3120 2873 , m_entropyCodingSyncEnabledFlag (false) 3121 2874 , m_loopFilterAcrossTilesEnabledFlag (true) 3122 , m_uniformSpacingFlag (0) 3123 , m_iNumColumnsMinus1 (0) 3124 , m_puiColumnWidth (NULL) 3125 , m_iNumRowsMinus1 (0) 3126 , m_puiRowHeight (NULL) 3127 , m_iNumSubstreams (1) 2875 , m_uniformSpacingFlag (false) 2876 , m_numTileColumnsMinus1 (0) 2877 , m_numTileRowsMinus1 (0) 2878 , m_numSubstreams (1) 3128 2879 , m_signHideFlag(0) 3129 2880 , m_cabacInitPresentFlag (false) … … 3158 2909 TComPPS::~TComPPS() 3159 2910 { 3160 if( m_iNumColumnsMinus1 > 0 && m_uniformSpacingFlag == 0 )3161 {3162 if (m_puiColumnWidth) delete [] m_puiColumnWidth;3163 m_puiColumnWidth = NULL;3164 }3165 if( m_iNumRowsMinus1 > 0 && m_uniformSpacingFlag == 0 )3166 {3167 if (m_puiRowHeight) delete [] m_puiRowHeight;3168 m_puiRowHeight = NULL;3169 }3170 2911 delete m_scalingList; 3171 2912 } … … 3186 2927 // allocate some memory and initialize with default mapping 3187 2928 m_iNumDepthmapValues[i] = ((1 << m_uiDepthViewBitDepth)-1)+1; 3188 #if !FIX_TICKET_773189 m_iBitsPerDepthValue[i] = numBitsForValue(m_iNumDepthmapValues[i]);3190 #endif3191 2929 m_iDepthValue2Idx[i] = (Int*) xMalloc(Int, m_iNumDepthmapValues[i]); 3192 2930 m_iIdx2DepthValue[i] = (Int*) xMalloc(Int, m_iNumDepthmapValues[i]); … … 3277 3015 // update DLT variables 3278 3016 m_iNumDepthmapValues[layerIdInVps] = iNumDepthValues; 3279 #if !FIX_TICKET_77 3280 m_iBitsPerDepthValue[layerIdInVps] = numBitsForValue(m_iNumDepthmapValues[layerIdInVps]); 3281 #endif 3282 } 3283 3284 #if H_3D_DELTA_DLT 3017 } 3018 3285 3019 Void TComDLT::getDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTOut, UInt *puiDeltaDLTOutNum ) 3286 3020 { … … 3347 3081 setDepthLUTs(layerIdInVps, aiIdx2DepthValue, uiNumDepthValues); 3348 3082 } 3349 #endif3350 3083 3351 3084 #endif … … 3354 3087 Void TComSPS::inferRepFormat( TComVPS* vps, Int layerIdCurr ) 3355 3088 { 3356 #if H_MV_HLS10_MULTILAYERSPS3357 3089 if ( getMultiLayerExtSpsFlag() ) 3358 #else3359 if ( layerIdCurr > 0 )3360 #endif3361 3090 { 3362 3091 Int repFormatIdx = getUpdateRepFormatFlag() ? getSpsRepFormatIdx() : vps->getVpsRepFormatIdx( vps->getLayerIdInVps( layerIdCurr ) ) ; … … 3374 3103 setBitDepthC ( repFormat->getBitDepthVpsChromaMinus8() + 8 ); 3375 3104 setQpBDOffsetC ( (Int) (6* ( getBitDepthC() -8 ) ) ); 3376 #if H_MV_HLS10_GEN_VSP_CONF_WIN3377 3105 Window &spsConf = getConformanceWindow(); 3378 3106 … … 3383 3111 spsConf.setWindowTopOffset ( repFormat->getConfWinVpsTopOffset() ); 3384 3112 spsConf.setWindowBottomOffset( repFormat->getConfWinVpsBottomOffset() ); 3385 #endif 3386 3387 #if H_MV_HLS10_MULTILAYERSPS 3113 3388 3114 if ( getMultiLayerExtSpsFlag() && getUpdateRepFormatFlag() ) 3389 #else3390 if ( getLayerId() > 0 && getUpdateRepFormatFlag() )3391 #endif3392 3115 { 3393 3116 assert( getChromaFormatIdc() <= repFormat->getChromaFormatVpsIdc() ); … … 3423 3146 const std::vector<Int>& targetDecLayerIdList = vps->getTargetDecLayerIdList( vps->olsIdxToLsIdx( targetOptLayerSetIdx )); 3424 3147 3425 #if H_MV_HLS10_MULTILAYERSPS3426 3148 if ( getMultiLayerExtSpsFlag() ) 3427 #else3428 if (getLayerId() > 0 )3429 #endif3430 3149 { 3431 3150 Int layerIdx = 0; … … 3445 3164 Int maxDecPicBufferingMinus1 = vps->getDpbSize()->getMaxVpsDecPicBufferingMinus1( targetOptLayerSetIdx, layerIdx, i ) ; 3446 3165 3447 #if H_MV_HLS10_MULTILAYERSPS3448 3166 // This preliminary fix needs to be checked. 3449 3167 Int maxNumReorderPics = vps->getDpbSize()->getMaxVpsNumReorderPics( targetOptLayerSetIdx, i ); 3450 3168 Int maxLatencyIncreasePlus1 = vps->getDpbSize()->getMaxVpsLatencyIncreasePlus1( targetOptLayerSetIdx, i ); 3451 #endif3452 3169 if ( encoder ) 3453 3170 { 3454 3171 assert( getMaxDecPicBuffering( i ) - 1 == maxDecPicBufferingMinus1 ); 3455 #if H_MV_HLS10_MULTILAYERSPS3456 3172 // This preliminary fix needs to be checked. 3457 3173 assert( getNumReorderPics( i ) == maxNumReorderPics ); 3458 3174 assert( getMaxLatencyIncrease( i ) == maxLatencyIncreasePlus1 ); 3459 #endif3460 3175 3461 3176 } 3462 3177 else 3463 3178 { 3464 #if !H_MV_HLS10_MULTILAYERSPS3465 setMaxDecPicBuffering(i, maxDecPicBufferingMinus1 + 1 );3466 #else3467 3179 // This preliminary fix needs to be checked. 3468 3180 setMaxDecPicBuffering( maxDecPicBufferingMinus1 + 1 , i); 3469 3181 setNumReorderPics ( maxNumReorderPics, i ); 3470 3182 setMaxLatencyIncrease( maxLatencyIncreasePlus1 - 1 , i); 3471 #endif3472 3183 } 3473 3184 } … … 3477 3188 Void TComSPS::checkRpsMaxNumPics( TComVPS* vps, Int currLayerId ) 3478 3189 { 3479 #if !H_MV_HLS10_MAXNUMPICS3480 // In spec, when rps is in SPS, nuh_layer_id of SPS is used instead3481 // of nuh_layer_id of slice (currLayerId), this seems to be a bug.3482 #endif3483 3190 for (Int i = 0; i < getRPSList()->getNumberOfReferencePictureSets(); i++ ) 3484 3191 { … … 3486 3193 if ( !rps->getInterRPSPrediction() ) 3487 3194 { 3488 #if H_MV_HLS10_MAXNUMPICS3489 3195 rps->checkMaxNumPics( vps->getVpsExtensionFlag(), MAX_INT, getLayerId(), getMaxDecPicBuffering( getSpsMaxSubLayersMinus1() ) - 1 ); // INT_MAX to be replaced by DpbSize 3490 #else 3491 rps->checkMaxNumPics( vps->getVpsExtensionFlag(), vps->getMaxNumPics( currLayerId ), 3492 getLayerId(), getMaxDecPicBuffering( getSpsMaxSubLayersMinus1() ) - 1 ); 3493 #endif 3494 } 3495 } 3496 } 3497 3498 #if H_MV_HLS10_MULTILAYERSPS 3196 } 3197 } 3198 } 3199 3499 3200 Void TComSPS::inferSpsMaxSubLayersMinus1(Bool atPsActivation, TComVPS* vps) 3500 3201 { … … 3517 3218 } 3518 3219 } 3519 #endif3520 3220 #endif 3521 3221 … … 3880 3580 { 3881 3581 TComVPS* vps = getVPS(); 3882 #if H_MV_HLS10_REF_PRED_LAYERS3883 3582 Int refLayerIdx = vps->getLayerIdInVps( vps->getIdDirectRefLayer( getLayerId(), i ) ); 3884 #else3885 Int refLayerIdx = vps->getLayerIdInVps( vps->getRefLayerId( getLayerId(), i ) );3886 #endif3887 3583 3888 3584 Bool refLayerPicFlag = ( vps->getSubLayersVpsMaxMinus1( refLayerIdx ) >= getTLayer() ) && ( getTLayer() == 0 ) && … … 3955 3651 Int TComSlice::getRefPicLayerId( Int i ) 3956 3652 { 3957 #if H_MV_HLS10_REF_PRED_LAYERS3958 3653 return getVPS()->getIdDirectRefLayer( getLayerId(), getInterLayerPredLayerIdc( i ) ); 3959 #else3960 return getVPS()->getRefLayerId( getLayerId(), getInterLayerPredLayerIdc( i ) );3961 #endif3962 3654 } 3963 3655 … … 4065 3757 m_bApplyIC = true; 4066 3758 Int refLayer = curLayer-1; 4067 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 3759 4068 3760 Int ICEnableCandidate = getICEnableCandidate(refLayer); 4069 3761 Int ICEnableNum = getICEnableNum(refLayer); … … 4083 3775 setICEnableCandidate(curLayer, 0); 4084 3776 setICEnableNum(curLayer, 0); 4085 #else4086 if( (refLayer>=0) && (g_aICEnableCANDIDATE[refLayer]>0) )4087 {4088 Double ratio=Double(g_aICEnableNUM[refLayer])/Double(g_aICEnableCANDIDATE[refLayer]);4089 4090 if( ratio > IC_LOW_LATENCY_ENCODING_THRESHOLD)4091 {4092 m_bApplyIC=true;4093 }4094 else4095 {4096 m_bApplyIC=false;4097 }4098 }4099 g_aICEnableNUM[curLayer]=0;4100 g_aICEnableCANDIDATE[curLayer]=0;4101 g_lastlayer=getDepth();4102 #endif4103 3777 } 4104 3778 } … … 4210 3884 4211 3885 #if H_3D_DDD 4212 #if LGE_FCO_I01163886 #if H_3D_FCO 4213 3887 if( getIsDepth() && getViewIndex() > 0 && getVPS()->getMPIFlag(layerIdInVPS)) 4214 3888 #else … … 4696 4370 , m_nonPackedConstraintFlag(false) 4697 4371 , m_frameOnlyConstraintFlag(false) 4698 #if H_MV _HLS10_PTL4372 #if H_MV 4699 4373 , m_max12bitConstraintFlag ( false ) 4700 4374 , m_max10bitConstraintFlag ( false ) … … 4712 4386 } 4713 4387 4714 #if H_MV _HLS10_PTL_INFER_FIX4388 #if H_MV 4715 4389 Bool ProfileTierLevel::getV2ConstraintsPresentFlag() 4716 4390 { … … 4757 4431 copyV2ConstraintFlags ( ptlRef ); 4758 4432 } 4759 4760 4433 #endif 4761 4434 … … 4767 4440 4768 4441 #if H_MV 4769 #if !H_MV_HLS10_PTL_INFER_FIX4770 Void TComPTL::copyLevelFrom( TComPTL* source )4771 {4772 getGeneralPTL()->setLevelIdc( source->getGeneralPTL()->getLevelIdc() );4773 for( Int subLayer = 0; subLayer < 6; subLayer++ )4774 {4775 setSubLayerLevelPresentFlag( subLayer, source->getSubLayerLevelPresentFlag( subLayer ) );4776 getSubLayerPTL( subLayer )->setLevelIdc( source->getSubLayerPTL( subLayer )->getLevelIdc() );4777 }4778 }4779 #else4780 4442 Void TComPTL::inferGeneralValues(Bool profilePresentFlag, Int k, TComPTL* refPTL) 4781 4443 { … … 4865 4527 } 4866 4528 4867 #endif4868 4529 #endif 4869 4530 //! \} … … 4908 4569 4909 4570 m_vpsVuiBspHrdPresentFlag = false; 4910 #if H_MV_HLS10_VPS_VUI_BSP4911 4571 m_vpsVuiBspHrdParameters = NULL; 4912 #else4913 m_vpsVuiBspHrdParameters = new TComVpsVuiBspHrdParameters();4914 #endif4915 4572 } 4916 4573 … … 4958 4615 } 4959 4616 4960 #if !H_MV_HLS10_VPS_VUI_BSP 4961 Void TComVpsVuiBspHrdParameters::checkLayerInBspFlag( TComVPS* vps, Int h ) 4962 { 4963 // It is a requirement of bitstream conformance that bitstream partition with index j shall not include 4964 // direct or indirect reference layers of any layers in bitstream partition i for any values of i and j 4965 // in the range of 0 to num_bitstream_partitions[ h ] ?1, inclusive, such that i is less than j. 4966 4967 for ( Int partJ = 0; partJ < getNumBitstreamPartitions( h ); partJ++ ) 4968 { 4969 for ( Int partI = 0; partI < partJ; partI++ ) 4970 { 4971 for ( Int layerJ = 0; layerJ < vps->getMaxLayersMinus1(); layerJ++ ) 4972 { 4973 if ( m_layerInBspFlag[ h ][partJ][layerJ ] ) 4974 { 4975 for ( Int layerI = 0; layerI < vps->getMaxLayersMinus1(); layerI++ ) 4976 { 4977 if ( m_layerInBspFlag[ h ][partI][layerI] ) 4978 { 4979 assert( !vps->getInDirectDependencyFlag( layerI, layerJ ) ); 4980 } 4981 } 4982 } 4983 } 4984 } 4985 } 4986 4987 // --------------- 4988 // To be added: 4989 // When vps_base_layer_internal_flag is equal to 0 and layer_in_bsp_flag[ h ][ i ][ 0 ] is equal to 1 for any value of h in the 4990 // range of 1 to vps_num_layer_sets_minus1, inclusive, and any value of i in the range of 0 to num_bitstream_partitions[ h ] - 1, 4991 // inclusive, the value of layer_in_bsp_flag[ h ][ i ][ j ] for at least one value of j in the range of 1 to 4992 // NumLayersInIdList[ h ] - 1, inclusive, shall be equal to 1. 4993 // --------------- 4994 4995 4996 // When num_bitstream_partitions[ h ] is equal to 1 for any value of h in the range 1 to vps_num_layer_set_minus1, inclusive, 4997 // the value of layer_in_bsp_flag[ h ][ 0 ][ j ] should be equal to 0 for at least one value of j in the range 0 to 4998 // NumLayersInIdList[ h ] ? 1, inclusive. 4999 5000 5001 if ( getNumBitstreamPartitions( h ) == 1 ) 5002 { 5003 Bool atLeastOneZero = false; 5004 for ( Int j = 0; j <= vps->getNumLayersInIdList( h ) - 1; j++ ) 5005 { 5006 atLeastOneZero = atLeastOneZero || !getLayerInBspFlag( h, 0, j ); 5007 } 5008 assert( atLeastOneZero ); 5009 } 5010 5011 5012 // For any value of h in the range 1 to vps_num_layer_set_minus1, inclusive, the value of layer_in_bsp_flag[ h ][ i ][ j ] 5013 // shall be equal to 1 for at most one value of i in the range of 0 to num_bitstream_partitions[ h ] ? 1, inclusive. 5014 5015 for ( Int j = 0; j <= vps->getNumLayersInIdList( h ) - 1; j++ ) 5016 { 5017 Int numLayerInBsp = 0; 5018 for ( Int i = 0; i <= getNumBitstreamPartitions( h ) - 1; i++ ) 5019 { 5020 numLayerInBsp += ( getLayerInBspFlag( h, i, j ) ? 1 : 0 ); 5021 } 5022 assert( numLayerInBsp <= 1 ); 5023 } 5024 5025 } 5026 5027 Void TComVpsVuiBspHrdParameters::checkBspCombHrdAndShedIdx( TComVPS* vps, Int h, Int i, Int j ) 5028 { 5029 // bsp_comb_hrd_idx 5030 assert( getBspCombSchedIdx(h, i, j ) >= 0 ); 5031 assert( getBspCombSchedIdx(h, i, j ) <= getVpsNumBspHrdParametersMinus1() ); 5032 5033 // bsp_comb_sched_idx 5034 assert( getBspCombSchedIdx(h, i, j ) >= 0 ); 5035 5036 //* This check needs to activated, when HighestTid is available here 5037 // assert( getBspCombSchedIdx(h, i, j ) <= vps->getHrdParameters( getBspCombHrdIdx( h, i, j ) )->getCpbCntMinus1( highestTid ) ); 5038 } 5039 #endif 5040 5041 #if H_MV_HLS10_VPS_VUI_BSP 4617 5042 4618 5043 4619 TComVpsVuiBspHrdParameters::~TComVpsVuiBspHrdParameters() … … 5137 4713 } 5138 4714 5139 #endif5140 4715 5141 4716 Void TComVUI::inferVideoSignalInfo( TComVPS* vps, Int layerIdCurr ) … … 5173 4748 for (Int k = 0; k < MAX_NUM_LAYER_IDS; k++ ) 5174 4749 { 5175 #if H_MV_HLS10_ADD_LAYERSETS5176 4750 m_maxVpsDecPicBufferingMinus1[i][k][j] = MIN_INT; 5177 #else5178 m_maxVpsDecPicBufferingMinus1[i][k][j] = 0;5179 #endif5180 4751 } 5181 4752 } -
trunk/source/Lib/TLibCommon/TComSlice.h
r1066 r1084 45 45 #include "TComRom.h" 46 46 #include "TComList.h" 47 #if H_MV_HLS10_GEN_FIX48 47 #if H_MV 49 48 #include <ios> 50 49 #include <iostream> 51 50 #include <iomanip> 52 #endif53 51 #endif 54 52 //! \ingroup TLibCommon … … 207 205 Bool m_frameOnlyConstraintFlag; 208 206 209 #if H_MV_HLS10_PTL210 207 #if H_MV 211 208 Bool m_max12bitConstraintFlag; … … 220 217 Bool m_inbldFlag; 221 218 #endif 222 #endif223 219 public: 224 220 ProfileTierLevel(); … … 252 248 253 249 #if H_MV 254 #if H_MV_HLS10_PTL255 250 Void setMax12bitConstraintFlag( Bool flag ) { m_max12bitConstraintFlag = flag; } 256 251 Bool getMax12bitConstraintFlag( ) { return m_max12bitConstraintFlag; } … … 281 276 Void setInbldFlag( Bool flag ) { m_inbldFlag = flag; } 282 277 Bool getInbldFlag( ) { return m_inbldFlag; } 283 #endif284 #if H_MV_HLS10_PTL_INFER_FIX285 278 Bool getV2ConstraintsPresentFlag(); 286 279 Bool getInbldPresentFlag(); 287 280 Void copyV2ConstraintFlags( ProfileTierLevel* ptlRef ); 288 281 Void copyProfile( ProfileTierLevel* ptlRef ); 289 #endif290 282 #endif 291 283 }; … … 310 302 ProfileTierLevel* getSubLayerPTL(Int i) { return &m_subLayerPTL[i]; } 311 303 #if H_MV 312 #if H_MV_HLS10_PTL_INFER_FIX313 304 Void inferGeneralValues ( Bool profilePresentFlag , Int k, TComPTL* refPTL );; 314 305 Void inferSubLayerValues( Int maxNumSubLayersMinus1, Int k, TComPTL* refPTL );; 315 #else316 Void copyLevelFrom( TComPTL* source );317 #endif318 306 #endif 319 307 }; … … 501 489 class TComVpsVuiBspHrdParameters 502 490 { 503 #if H_MV_HLS10_VPS_VUI_BSP504 491 505 492 /* Not yet tested */ … … 563 550 Void setHrdParametermeters( Int k, TComHRD* val ) { *(m_hrdParameters + k ) = *val; }; 564 551 TComHRD* getHrdParametermeters( Int k ) { return m_hrdParameters + k; }; 565 #else566 private:567 Int m_vpsNumBspHrdParametersMinus1;568 Bool m_bspCprmsPresentFlag[MAX_NUM_BSP_HRD_PARAMETERS];569 Int m_numBitstreamPartitions[MAX_VPS_OP_SETS_PLUS1];570 Bool m_layerInBspFlag[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_LAYERS];571 Int m_numBspSchedCombinationsMinus1[MAX_VPS_OP_SETS_PLUS1];572 Int m_bspCombHrdIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION];573 Int m_bspCombSchedIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION];574 TComHRD* m_hrdParameters[MAX_NUM_BSP_HRD_PARAMETERS];575 public:576 577 Void setVpsNumBspHrdParametersMinus1( Int val ) { m_vpsNumBspHrdParametersMinus1 = val; }578 Int getVpsNumBspHrdParametersMinus1( ) { return m_vpsNumBspHrdParametersMinus1; }579 580 Void setBspCprmsPresentFlag( Int i, Bool flag ) { m_bspCprmsPresentFlag[i] = flag; }581 Bool getBspCprmsPresentFlag( Int i ) { return m_bspCprmsPresentFlag[i]; }582 583 Void setNumBitstreamPartitions( Int h, Int val ) { m_numBitstreamPartitions[h] = val; }584 Int getNumBitstreamPartitions( Int h ) { return m_numBitstreamPartitions[h]; }585 586 Void setLayerInBspFlag( Int h, Int i, Int j, Bool flag ) { m_layerInBspFlag[h][i][j] = flag; }587 Bool getLayerInBspFlag( Int h, Int i, Int j ) { return m_layerInBspFlag[h][i][j]; }588 Void checkLayerInBspFlag ( TComVPS* vps, Int h );589 590 Void setNumBspSchedCombinationsMinus1( Int h, Int val ) { m_numBspSchedCombinationsMinus1[h] = val; }591 Int getNumBspSchedCombinationsMinus1( Int h ) { return m_numBspSchedCombinationsMinus1[h]; }592 593 Void setBspCombHrdIdx( Int h, Int i, Int j, Int val ) { m_bspCombHrdIdx[h][i][j] = val; }594 Int getBspCombHrdIdx( Int h, Int i, Int j ) { return m_bspCombHrdIdx[h][i][j]; }595 Int getBspCombHrdIdxLen() { return gCeilLog2( getVpsNumBspHrdParametersMinus1() + 1); };596 597 598 Void setBspCombSchedIdx( Int h, Int i, Int j, Int val ) { m_bspCombSchedIdx[h][i][j] = val; }599 Int getBspCombSchedIdx( Int h, Int i, Int j ) { return m_bspCombSchedIdx[h][i][j]; }600 601 Void checkBspCombHrdAndShedIdx( TComVPS* vps, Int h, Int i, Int j );602 603 Void setHrdParametermeters( Int k, TComHRD* val ) { m_hrdParameters[k] = val; };604 TComHRD* getHrdParametermeters( Int k ) { return m_hrdParameters[k]; };605 #endif606 552 }; 607 553 … … 630 576 Bool m_wppNotInUseFlag; 631 577 Bool m_wppInUseFlag [MAX_NUM_LAYERS]; 632 #if H_MV_HLS10_VPS_VUI633 578 Bool m_singleLayerForNonIrapFlag; 634 579 Bool m_higherLayerIrapSkipFlag; 635 #endif636 580 Bool m_ilpRestrictedRefLayersFlag; 637 581 Int m_minSpatialSegmentOffsetPlus1[MAX_NUM_LAYERS][MAX_NUM_LAYERS]; … … 708 652 Bool getWppInUseFlag( Int i ) { return m_wppInUseFlag[i]; } 709 653 710 #if H_MV_HLS10_VPS_VUI711 654 Void setSingleLayerForNonIrapFlag( Bool flag ) { m_singleLayerForNonIrapFlag = flag; } 712 655 Bool getSingleLayerForNonIrapFlag( ) { return m_singleLayerForNonIrapFlag; } … … 714 657 Void setHigherLayerIrapSkipFlag( Bool flag ) { m_higherLayerIrapSkipFlag = flag; } 715 658 Bool getHigherLayerIrapSkipFlag( ) { return m_higherLayerIrapSkipFlag; } 716 #endif717 659 718 660 Void setIlpRestrictedRefLayersFlag( Bool flag ) { m_ilpRestrictedRefLayersFlag = flag; } … … 750 692 Int m_bitDepthVpsLumaMinus8; 751 693 Int m_bitDepthVpsChromaMinus8; 752 #if H_MV_HLS10_GEN_VSP_CONF_WIN753 694 Bool m_conformanceWindowVpsFlag; 754 695 Int m_confWinVpsLeftOffset; … … 756 697 Int m_confWinVpsTopOffset; 757 698 Int m_confWinVpsBottomOffset; 758 #endif759 699 760 700 public: 761 701 762 #if H_MV_HLS10_GEN_VSP_CONF_WIN763 702 TComRepFormat() 764 703 { … … 769 708 m_confWinVpsBottomOffset = 0; 770 709 }; 771 #else772 TComRepFormat() { };773 #endif774 710 775 711 Void setChromaAndBitDepthVpsPresentFlag( Bool flag ) { m_chromaAndBitDepthVpsPresentFlag = flag; } … … 796 732 Int getBitDepthVpsChromaMinus8( ) { return m_bitDepthVpsChromaMinus8; } 797 733 798 #if H_MV_HLS10_GEN_VSP_CONF_WIN799 734 Void setConformanceWindowVpsFlag( Bool flag ) { m_conformanceWindowVpsFlag = flag; } 800 735 Bool getConformanceWindowVpsFlag( ) { return m_conformanceWindowVpsFlag; } … … 811 746 Void setConfWinVpsBottomOffset( Int val ) { m_confWinVpsBottomOffset = val; } 812 747 Int getConfWinVpsBottomOffset( ) { return m_confWinVpsBottomOffset; } 813 #endif814 748 }; 815 749 … … 834 768 835 769 Void setMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j, Int val ) { m_maxVpsDecPicBufferingMinus1[i][k][j] = val; } 836 #if H_MV_HLS10_ADD_LAYERSETS837 770 Int getMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j ) { assert( m_maxVpsDecPicBufferingMinus1[i][k][j] >= 0 ); return m_maxVpsDecPicBufferingMinus1[i][k][j]; } 838 #else839 Int getMaxVpsDecPicBufferingMinus1( Int i, Int k, Int j ) { return m_maxVpsDecPicBufferingMinus1[i][k][j]; }840 #endif841 771 842 772 Void setMaxVpsNumReorderPics( Int i, Int j, Int val ) { m_maxVpsNumReorderPics[i][j] = val; } … … 853 783 #if H_MV 854 784 Bool m_vpsBaseLayerInternalFlag; 855 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL856 785 Bool m_vpsBaseLayerAvailableFlag; 857 #endif // H_MV_HLS10_GEN858 786 #endif 859 787 … … 925 853 Int m_layerSetIdxForOlsMinus1 [MAX_VPS_OUTPUTLAYER_SETS]; 926 854 Bool m_outputLayerFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1]; 927 #if H_MV_HLS10_PTL928 855 Int m_profileTierLevelIdx [MAX_VPS_OUTPUTLAYER_SETS ][MAX_NUM_LAYERS]; 929 #else930 Int m_profileLevelTierIdx [MAX_VPS_OUTPUTLAYER_SETS ];931 #endif932 856 Bool m_altOutputLayerFlag [MAX_VPS_OUTPUTLAYER_SETS]; 933 857 Bool m_repFormatIdxPresentFlag; … … 958 882 // VPS EXTENSION SEMANTICS VARIABLES 959 883 Int m_layerIdInVps [MAX_NUM_LAYERS ]; 960 #if H_MV_HLS10_REF_PRED_LAYERS961 884 Int m_dependencyFlag [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 962 #endif963 885 964 886 Int m_numDirectRefLayers [MAX_NUM_LAYERS]; 965 #if H_MV_HLS10_REF_PRED_LAYERS966 887 Int m_idDirectRefLayer [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 967 #else968 Int m_refLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYERS];969 #endif970 888 971 889 Int m_numRefLayers [MAX_NUM_LAYER_IDS]; 972 #if H_MV_HLS10_REF_PRED_LAYERS973 890 Int m_idRefLayer [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 974 #endif975 891 976 892 977 893 Int m_numPredictedLayers [MAX_NUM_LAYERS ]; 978 #if !H_MV_HLS10_REF_PRED_LAYERS979 Int m_predictedLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS];980 #else981 894 Int m_idPredictedLayer [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS]; 982 #endif983 895 Int m_numIndependentLayers; 984 896 Int m_numLayersInTreePartition [MAX_NUM_LAYER_IDS]; 985 897 Int m_treePartitionLayerIdList [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS]; 986 #if H_MV_HLS10_REF_PRED_LAYERS987 898 Bool m_recursiveRefLayerFlag [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS]; 988 #endif989 899 Int m_viewIndex [MAX_NUM_LAYERS ]; 990 900 … … 993 903 std::vector< std::vector< Int> > m_layerSetLayerIdList; 994 904 995 #if H_MV_HLS10_NESSECARY_LAYER996 905 Int m_numNecessaryLayers [MAX_VPS_OUTPUTLAYER_SETS]; 997 906 Bool m_necessaryLayerFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_NUM_LAYERS]; 998 #endif999 907 1000 908 Int xGetDimBitOffset( Int j ); 1001 #if H_MV_HLS10_REF_PRED_LAYERS1002 909 Void xSetRefLayerFlags( Int currLayerId ); 1003 #endif1004 910 // VPS EXTENSION 2 SYNTAX ELEMENTS 1005 911 #if H_3D_ARP … … 1009 915 #if H_3D_IV_MERGE 1010 916 Bool m_ivMvPredFlag [ MAX_NUM_LAYERS ]; 1011 #if SEC_HLS_CLEANUP_I01001012 917 Bool m_ivMvScalingFlag [ MAX_NUM_LAYERS ]; 1013 #endif1014 918 #if H_3D_SPIVMP 1015 919 Int m_iSubPULog2Size [MAX_NUM_LAYERS ]; 1016 #if MTK_I0099_VPS_EX21017 920 Int m_iSubPUMPILog2Size [MAX_NUM_LAYERS ]; 1018 #else 1019 Int m_iSubPUMPILog2Size; 1020 #endif 1021 #endif 1022 #endif 1023 #if MTK_I0099_VPS_EX2 921 #endif 922 #endif 923 #if H_3D_QTLPC 1024 924 Bool m_bLimQtPredFlag [ MAX_NUM_LAYERS ]; 1025 925 #endif … … 1031 931 #endif 1032 932 Bool m_vpsDepthModesFlag [MAX_NUM_LAYERS ]; 1033 #if SEPARATE_FLAG_I0085933 #if H_3D 1034 934 Bool m_bIVPFlag [MAX_NUM_LAYERS ]; 1035 935 #endif 1036 1037 936 #if H_3D 1038 937 UInt m_uiCamParPrecision; … … 1041 940 Int ***m_aaaiCodedScale ; 1042 941 Int ***m_aaaiCodedOffset; 1043 1044 #if !SEC_HLS_CLEANUP_I01001045 Bool m_ivMvScalingFlag;1046 #endif1047 1048 942 #endif 1049 943 #if H_3D_INTER_SDC … … 1081 975 Void setVpsBaseLayerInternalFlag( Bool flag ) { m_vpsBaseLayerInternalFlag = flag; } 1082 976 Bool getVpsBaseLayerInternalFlag( ) { return m_vpsBaseLayerInternalFlag; } 1083 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL1084 977 Void setVpsBaseLayerAvailableFlag( Bool flag ) { m_vpsBaseLayerAvailableFlag = flag; } 1085 978 Bool getVpsBaseLayerAvailableFlag( ) { return m_vpsBaseLayerAvailableFlag; } 1086 979 #endif 1087 #endif1088 980 1089 981 UInt getMaxTLayers () { return m_uiMaxTLayers; } … … 1092 984 #if H_MV 1093 985 UInt getMaxSubLayersMinus1() { return m_uiMaxTLayers - 1; } // For consistency with draft spec 1094 #if H_MV_HLS10_GEN_FIX1095 986 Void setMaxSubLayersMinus1(UInt val) { m_uiMaxTLayers = (val + 1); }; 1096 #endif1097 987 UInt getMaxLayersMinus1() { return m_uiMaxLayersMinus1; }; 1098 988 Void setMaxLayersMinus1(UInt l) { m_uiMaxLayersMinus1 = l; } … … 1134 1024 1135 1025 #if H_MV 1136 #if H_MV_HLS10_PTL1137 1026 TComPTL* getPTL( Int idx = 0 ) { return &m_pcPTL[idx]; } 1138 #else1139 TComPTL* getPTL( Int layerSet = 0 ) { return &m_pcPTL[layerSet]; }1140 #endif1141 1027 #else 1142 1028 TComPTL* getPTL() { return &m_pcPTL; } … … 1218 1104 Void setLayerSetIdxForOlsMinus1( Int outLayerSetIdx, Int val ) { m_layerSetIdxForOlsMinus1[ outLayerSetIdx ] = val; } 1219 1105 Int getLayerSetIdxForOlsMinus1( Int outLayerSetIdx ) { return m_layerSetIdxForOlsMinus1[ outLayerSetIdx ]; } 1220 #if VPS_MISC_UPDATES1221 1106 Int getLayerSetIdxForOlsMinus1Len( Int outLayerSetIdx ) { return gCeilLog2( getNumLayerSets() ); } 1222 #endif1223 1107 1224 1108 Void setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag ) { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; } … … 1227 1111 Bool inferOutputLayerFlag( Int i, Int j ); 1228 1112 1229 #if H_MV_HLS10_PTL1230 1113 Void setProfileTierLevelIdx( Int i, Int j, Int val ) { m_profileTierLevelIdx[ i ][ j ] = val; } 1231 1114 Int getProfileTierLevelIdx( Int i, Int j ) { return m_profileTierLevelIdx[ i ][ j ]; } 1232 #if H_MV_HLS10_PTL_FIX1233 1115 Int inferProfileTierLevelIdx( Int i, Int j ); 1234 #endif1235 #else1236 Void setProfileLevelTierIdx( Int outLayerSetIdx, Int val ) { m_profileLevelTierIdx[ outLayerSetIdx ] = val; }1237 Int getProfileLevelTierIdx( Int outLayerSetIdx ) { return m_profileLevelTierIdx[ outLayerSetIdx ]; }1238 #endif1239 1116 1240 1117 Void setAltOutputLayerFlag( Int i, Bool flag ) { m_altOutputLayerFlag[i] = flag; } … … 1266 1143 TComDpbSize* getDpbSize( ) { return m_dpbSize;} 1267 1144 1268 #if !H_MV_HLS10_ADD_LAYERSETS1269 Void inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder );1270 #endif1271 1145 1272 1146 Void setPocLsbNotPresentFlag( Int i, Bool flag ) { m_pocLsbNotPresentFlag[i] = flag; } … … 1299 1173 1300 1174 Int getViewIndex ( Int layerIdInNuh ) { return getScalabilityId( getLayerIdInVps(layerIdInNuh), VIEW_ORDER_INDEX ); } 1301 #if H_MV_HLS10_AUX1302 1175 Int getAuxId ( Int layerIdInNuh ) { return getScalabilityId( getLayerIdInVps(layerIdInNuh), AUX_ID ); } 1303 1176 Int getDependencyId ( Int layerIdInNuh ) { return getScalabilityId( getLayerIdInVps(layerIdInNuh), DEPENDENCY_ID ); } 1304 #endif1305 1177 Int getNumViews(); 1306 1178 1307 #if H_MV_HLS10_REF_PRED_LAYERS1308 1179 Bool getDependencyFlag( Int i, Int j ) { return m_dependencyFlag[i][j]; } 1309 #endif1310 1180 Int getNumDirectRefLayers( Int layerIdInNuh ) { return m_numDirectRefLayers[ layerIdInNuh ]; }; 1311 #if !H_MV_HLS10_REF_PRED_LAYERS1312 Int getRefLayerId ( Int layerIdInNuh, Int idx );;1313 #endif1314 1181 Int getNumRefLayers ( Int i ) { return m_numRefLayers[i]; } 1315 1182 Int getNumPredictedLayers ( Int i ) { return m_numPredictedLayers[i]; } 1316 1183 1317 #if !H_MV_HLS10_REF_PRED_LAYERS1318 Int getPredictedLayerId ( Int i, Int j ) { return m_predictedLayerId[i][j]; }1319 #else1320 1184 Int getIdRefLayer ( Int i, Int j ) { assert( j >= 0 && j < getNumRefLayers ( i )); return m_idRefLayer [i][j]; } 1321 1185 Int getIdPredictedLayer ( Int i, Int j ) { assert( j >= 0 && j < getNumPredictedLayers( i )); return m_idPredictedLayer[i][j]; } 1322 1186 Int getIdDirectRefLayer ( Int i, Int j ) { assert( j >= 0 && j < getNumDirectRefLayers( i )); return m_idDirectRefLayer[i][j]; } 1323 #endif1324 1187 Int getNumIndependentLayers ( ) { return m_numIndependentLayers; } 1325 1188 Int getNumLayersInTreePartition( Int i ) { return m_numLayersInTreePartition[i]; } … … 1328 1191 Int getNumLayerSets( ) { return getVpsNumLayerSetsMinus1() + 1 + getNumAddLayerSets(); }; 1329 1192 1330 #if H_MV_HLS10_ADD_LAYERSETS1331 1193 Int getFirstAddLayerSetIdx() { return getVpsNumLayerSetsMinus1() + 1; } 1332 1194 Int getLastAddLayerSetIdx() { return getFirstAddLayerSetIdx() + getNumAddLayerSets() - 1; } 1333 #endif1334 1195 Bool checkVPSExtensionSyntax(); 1335 1196 Int scalTypeToScalIdx ( ScalabilityType scalType ); 1336 1197 1337 #if H_MV_HLS10_PTL1338 1198 Int getProfileTierLevelIdxLen() { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); }; 1339 #else1340 Int getProfileLevelTierIdxLen() { return gCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); };1341 #endif1342 1199 Int getVpsRepFormatIdxLen() { return gCeilLog2( getVpsNumRepFormatsMinus1() + 1 ); }; 1343 1200 … … 1350 1207 Void deriveLayerSetLayerIdList(); 1351 1208 1352 #if H_MV_HLS10_ADD_LAYERSETS1353 1209 Int olsIdxToLsIdx( Int i ) { return ( i < getNumLayerSets() ) ? i : getLayerSetIdxForOlsMinus1( i ) + 1 ; }; 1354 #else1355 Int olsIdxToLsIdx( Int i ) { return ( i <= getVpsNumLayerSetsMinus1() ) ? i : getLayerSetIdxForOlsMinus1( i ) + 1 ; };1356 #endif1357 1210 Void initTargetLayerIdLists ( ); 1358 1211 Void deriveTargetLayerIdList ( Int i ); … … 1363 1216 Int getOlsHighestOutputLayerId( Int i ) { return getTargetOptLayerIdList( i ).back(); }; 1364 1217 1365 #if H_MV_HLS10_ADD_LAYERSETS1366 1218 Void deriveAddLayerSetLayerIdList( Int i ); 1367 #endif1368 #if H_MV_HLS10_NESSECARY_LAYER1369 1219 Void deriveNecessaryLayerFlags( Int olsIdx );; 1370 1220 Int getNecessaryLayerFlag( Int i, Int j ) { AOF( i >= 0 && i < getNumOutputLayerSets() ); AOF( j >= 0 && j < getNumLayersInIdList( olsIdxToLsIdx( i ) ) ); return m_necessaryLayerFlag[i][j]; }; 1371 #endif1372 1221 1373 1222 Int getMaxSubLayersInLayerSetMinus1( Int i ); … … 1380 1229 1381 1230 // helpers 1382 #if !H_MV_HLS10_REF_PRED_LAYERS1383 Bool getInDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Int depth = 0 );1384 #endif1385 #if !H_MV_HLS10_MAXNUMPICS1386 Int getMaxNumPics( Int layerId );1387 #endif1388 #if H_MV_HLS10_ADD_LAYERSETS1389 1231 Void printPTL(); 1390 1232 Void printLayerDependencies(); 1391 #if H_MV_HLS10_AUX1392 1233 Void printScalabilityId();; 1393 #endif1394 1234 Void printLayerSets();; 1395 1235 … … 1436 1276 xPrintArray( name, 1, idx2, numElemDim2, vec2, printNumber, false ); 1437 1277 } 1438 #endif1439 1278 1440 1279 … … 1470 1309 Int getSubPULog2Size(Int layerIdInVps) { return m_iSubPULog2Size[layerIdInVps]; } 1471 1310 Void setSubPULog2Size(Int layerIdInVps, Int u) { m_iSubPULog2Size[layerIdInVps] = u;} 1472 #if MTK_I0099_VPS_EX21473 1311 Int getSubPUMPILog2Size(Int layerIdInVps) { return m_iSubPUMPILog2Size[layerIdInVps]; } 1474 1312 Void setSubPUMPILog2Size(Int layerIdInVps, Int u) { m_iSubPUMPILog2Size[layerIdInVps] = u;} 1475 #else 1476 Int getSubPUMPILog2Size( ) { return m_iSubPUMPILog2Size; } 1477 Void setSubPUMPILog2Size( Int u ) { m_iSubPUMPILog2Size = u; } 1478 #endif 1479 #endif 1480 #endif 1481 #if MTK_I0099_VPS_EX2 1313 #endif 1314 #endif 1315 #if H_3D_QTLPC 1482 1316 Void setLimQtPredFlag ( Int layerIdInVps, Bool val ) { m_bLimQtPredFlag[ layerIdInVps ] = val; } 1483 1317 Bool getLimQtPredFlag ( Int layerIdInVps ) { return m_bLimQtPredFlag[layerIdInVps];} … … 1493 1327 Void setVpsDepthModesFlag( Int layerIdInVps, Bool val ) { m_vpsDepthModesFlag[ layerIdInVps ] = val; } 1494 1328 Bool getVpsDepthModesFlag( Int layerIdInVps ) { return m_vpsDepthModesFlag[ layerIdInVps ]; } 1495 #if SEPARATE_FLAG_I0085 1329 1496 1330 Void setIVPFlag( Int layerIdInVps, Bool val ) { m_bIVPFlag[ layerIdInVps ] = val; } 1497 1331 Bool getIVPFlag( Int layerIdInVps ) { return m_bIVPFlag[ layerIdInVps ]; } 1498 #endif 1499 1500 #if SEC_HLS_CLEANUP_I0100 1332 1501 1333 Bool getIvMvScalingFlag ( Int layerIdInVps ) { return m_ivMvScalingFlag[ layerIdInVps ]; } 1502 1334 Void setIvMvScalingFlag (Int layerIdInVps, Bool b ) { m_ivMvScalingFlag[ layerIdInVps ] = b; } 1503 #else1504 Bool getIvMvScalingFlag ( ) { return m_ivMvScalingFlag; }1505 Void setIvMvScalingFlag ( Bool b ) { m_ivMvScalingFlag = b; }1506 #endif1507 1335 1508 1336 #if H_3D_INTER_SDC … … 1530 1358 Bool m_bInterViewDltPredEnableFlag[ MAX_NUM_LAYERS ]; 1531 1359 1532 #if !FIX_TICKET_771533 Int m_iBitsPerDepthValue [ MAX_NUM_LAYERS ];1534 #endif1535 1360 Int m_iNumDepthmapValues [ MAX_NUM_LAYERS ]; 1536 1361 Int* m_iDepthValue2Idx [ MAX_NUM_LAYERS ]; … … 1559 1384 UInt getDepthViewBitDepth() { return m_uiDepthViewBitDepth; } 1560 1385 1561 #if !FIX_TICKET_771562 Int getBitsPerDepthValue( Int layerIdInVps ) { return getUseDLTFlag(layerIdInVps)?m_iBitsPerDepthValue[layerIdInVps]:g_bitDepthY; }1563 #endif1564 1386 Int getNumDepthValues( Int layerIdInVps ) { return getUseDLTFlag(layerIdInVps)?m_iNumDepthmapValues[layerIdInVps]:((1 << g_bitDepthY)-1); } 1565 1387 Int depthValue2idx( Int layerIdInVps, Pel value ) { return getUseDLTFlag(layerIdInVps)?m_iDepthValue2Idx[layerIdInVps][value]:value; } 1566 #if RWTH_DLT_CLIP_I00571567 1388 Pel idx2DepthValue( Int layerIdInVps, UInt uiIdx ) { return getUseDLTFlag(layerIdInVps)?m_iIdx2DepthValue[layerIdInVps][ClipY(uiIdx)]:uiIdx; } 1568 #else1569 Pel idx2DepthValue( Int layerIdInVps, UInt uiIdx ) { return getUseDLTFlag(layerIdInVps)?m_iIdx2DepthValue[layerIdInVps][uiIdx]:uiIdx; }1570 #endif1571 1389 Void setDepthLUTs( Int layerIdInVps, Int* idx2DepthValue = NULL, Int iNumDepthValues = 0 ); 1572 #if H_3D_DELTA_DLT1573 1390 Int* idx2DepthValue( Int layerIdInVps ) { return m_iIdx2DepthValue[layerIdInVps]; } 1574 1391 Void getDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTOut, UInt *puiDeltaDLTOutNum ); 1575 1392 Void setDeltaDLT( Int layerIdInVps, Int* piDLTInRef, UInt uiDLTInRefNum, Int* piDeltaDLTIn, UInt uiDeltaDLTInNum ); 1576 #endif1577 1393 }; 1578 1394 #endif … … 1833 1649 Bool m_useAMP; 1834 1650 1835 #if !MTK_I0099_VPS_EX21836 #if H_3D_QTLPC1837 Bool m_bUseQTL;1838 Bool m_bUsePC;1839 #endif1840 #endif1841 1651 // Parameter 1842 1652 Int m_bitDepthY; … … 1880 1690 TComVPS* m_pcVPS; 1881 1691 // SPS 1882 #if H_MV_HLS10_MULTILAYERSPS1883 1692 Int m_spsMaxSubLayersMinus1; 1884 1693 Int m_spsExtOrMaxSubLayersMinus1; 1885 #endif1886 1694 Bool m_spsExtensionPresentFlag; 1887 1695 … … 1901 1709 // SPS Extension 1902 1710 Bool m_interViewMvVertConstraintFlag; 1903 #if !H_MV_HLS10_PPS1904 Int m_numScaledRefLayerOffsets;1905 Int m_scaledRefLayerId [MAX_NUM_SCALED_REF_LAYERS];1906 Int m_scaledRefLayerLeftOffset [MAX_NUM_LAYERS];1907 Int m_scaledRefLayerTopOffset [MAX_NUM_LAYERS];1908 Int m_scaledRefLayerRightOffset [MAX_NUM_LAYERS];1909 Int m_scaledRefLayerBottomOffset[MAX_NUM_LAYERS];1910 #endif1911 1711 #endif 1912 1712 #if H_3D … … 2012 1812 #if H_MV 2013 1813 UInt getSpsMaxSubLayersMinus1() { return ( m_uiMaxTLayers - 1); } 2014 #if H_MV_HLS10_MULTILAYERSPS2015 1814 Void setSpsMaxSubLayersMinus1( UInt val ) { setMaxTLayers( val + 1 ); } 2016 #endif2017 1815 #endif 2018 1816 … … 2047 1845 TComPTL* getPTL() { return &m_pcPTL; } 2048 1846 #if H_MV 2049 #if H_MV_HLS10_MULTILAYERSPS2050 1847 Void setSpsExtOrMaxSubLayersMinus1( Int val ) { m_spsExtOrMaxSubLayersMinus1 = val; } 2051 1848 Int getSpsExtOrMaxSubLayersMinus1( ) { return m_spsExtOrMaxSubLayersMinus1; } … … 2053 1850 2054 1851 Bool getMultiLayerExtSpsFlag() { return ( getLayerId() != 0 && getSpsExtOrMaxSubLayersMinus1() == 7 ); } 2055 #endif2056 1852 Void inferSpsMaxDecPicBufferingMinus1( TComVPS* vps, Int targetOptLayerSetIdx, Int currLayerId, Bool encoder ); 2057 1853 … … 2092 1888 Bool getInterViewMvVertConstraintFlag() { return m_interViewMvVertConstraintFlag;} 2093 1889 2094 #if !H_MV_HLS10_PPS2095 Void setNumScaledRefLayerOffsets( Int val ) { m_numScaledRefLayerOffsets = val; }2096 Int getNumScaledRefLayerOffsets( ) { return m_numScaledRefLayerOffsets; }2097 2098 Void setScaledRefLayerId( Int i, Int val ) { m_scaledRefLayerId[i] = val; }2099 Int getScaledRefLayerId( Int i ) { return m_scaledRefLayerId[i]; }2100 2101 Void setScaledRefLayerLeftOffset( Int j, Int val ) { m_scaledRefLayerLeftOffset[j] = val; }2102 Int getScaledRefLayerLeftOffset( Int j ) { return m_scaledRefLayerLeftOffset[j]; }2103 2104 Void setScaledRefLayerTopOffset( Int j, Int val ) { m_scaledRefLayerTopOffset[j] = val; }2105 Int getScaledRefLayerTopOffset( Int j ) { return m_scaledRefLayerTopOffset[j]; }2106 2107 Void setScaledRefLayerRightOffset( Int j, Int val ) { m_scaledRefLayerRightOffset[j] = val; }2108 Int getScaledRefLayerRightOffset( Int j ) { return m_scaledRefLayerRightOffset[j]; }2109 2110 Void setScaledRefLayerBottomOffset( Int j, Int val ) { m_scaledRefLayerBottomOffset[j] = val; }2111 Int getScaledRefLayerBottomOffset( Int j ) { return m_scaledRefLayerBottomOffset[j]; }2112 #endif2113 1890 // Inference 2114 1891 … … 2119 1896 Void checkRpsMaxNumPics( TComVPS* vps, Int currLayerId ); 2120 1897 2121 #endif2122 #if !MTK_I0099_VPS_EX22123 #if H_3D_QTLPC2124 Void setUseQTL( Bool b ) { m_bUseQTL = b; }2125 Bool getUseQTL() { return m_bUseQTL; }2126 Void setUsePC ( Bool b ) { m_bUsePC = b; }2127 Bool getUsePC () { return m_bUsePC; }2128 #endif2129 1898 #endif 2130 1899 #if H_MV … … 2201 1970 2202 1971 Bool m_loopFilterAcrossTilesEnabledFlag; 2203 Intm_uniformSpacingFlag;2204 Int m_iNumColumnsMinus1;2205 UInt* m_puiColumnWidth;2206 Int m_iNumRowsMinus1;2207 UInt* m_puiRowHeight;2208 2209 Int m_ iNumSubstreams;1972 Bool m_uniformSpacingFlag; 1973 Int m_numTileColumnsMinus1; 1974 Int m_numTileRowsMinus1; 1975 std::vector<Int> m_tileColumnWidth; 1976 std::vector<Int> m_tileRowHeight; 1977 1978 Int m_numSubstreams; 2210 1979 2211 1980 Int m_signHideFlag; … … 2304 2073 Bool getDependentSliceSegmentsEnabledFlag() const { return m_dependentSliceSegmentsEnabledFlag; } 2305 2074 Void setDependentSliceSegmentsEnabledFlag(Bool val) { m_dependentSliceSegmentsEnabledFlag = val; } 2306 Bool getTilesEnabledFlag() const { return m_tilesEnabledFlag; }2307 Void setTilesEnabledFlag(Bool val) { m_tilesEnabledFlag = val; }2308 2075 Bool getEntropyCodingSyncEnabledFlag() const { return m_entropyCodingSyncEnabledFlag; } 2309 2076 Void setEntropyCodingSyncEnabledFlag(Bool val) { m_entropyCodingSyncEnabledFlag = val; } 2310 Void setUniformSpacingFlag ( Bool b ) { m_uniformSpacingFlag = b; } 2311 Bool getUniformSpacingFlag () { return m_uniformSpacingFlag; } 2312 Void setNumColumnsMinus1 ( Int i ) { m_iNumColumnsMinus1 = i; } 2313 Int getNumColumnsMinus1 () { return m_iNumColumnsMinus1; } 2314 Void setColumnWidth ( UInt* columnWidth ) 2315 { 2316 if( m_uniformSpacingFlag == 0 && m_iNumColumnsMinus1 > 0 ) 2317 { 2318 m_puiColumnWidth = new UInt[ m_iNumColumnsMinus1 ]; 2319 2320 for(Int i=0; i<m_iNumColumnsMinus1; i++) 2321 { 2322 m_puiColumnWidth[i] = columnWidth[i]; 2323 } 2324 } 2325 } 2326 UInt getColumnWidth (UInt columnIdx) { return *( m_puiColumnWidth + columnIdx ); } 2327 Void setNumRowsMinus1( Int i ) { m_iNumRowsMinus1 = i; } 2328 Int getNumRowsMinus1() { return m_iNumRowsMinus1; } 2329 Void setRowHeight ( UInt* rowHeight ) 2330 { 2331 if( m_uniformSpacingFlag == 0 && m_iNumRowsMinus1 > 0 ) 2332 { 2333 m_puiRowHeight = new UInt[ m_iNumRowsMinus1 ]; 2334 2335 for(Int i=0; i<m_iNumRowsMinus1; i++) 2336 { 2337 m_puiRowHeight[i] = rowHeight[i]; 2338 } 2339 } 2340 } 2341 UInt getRowHeight (UInt rowIdx) { return *( m_puiRowHeight + rowIdx ); } 2342 Void setNumSubstreams(Int iNumSubstreams) { m_iNumSubstreams = iNumSubstreams; } 2343 Int getNumSubstreams() { return m_iNumSubstreams; } 2077 2078 Void setTilesEnabledFlag (Bool val) { m_tilesEnabledFlag = val; } 2079 Bool getTilesEnabledFlag () const { return m_tilesEnabledFlag; } 2080 Void setTileUniformSpacingFlag (Bool b) { m_uniformSpacingFlag = b; } 2081 Bool getTileUniformSpacingFlag () const { return m_uniformSpacingFlag; } 2082 Void setNumTileColumnsMinus1 (Int i) { m_numTileColumnsMinus1 = i; } 2083 Int getNumTileColumnsMinus1 () const { return m_numTileColumnsMinus1; } 2084 Void setTileColumnWidth (const std::vector<Int>& columnWidth ) { m_tileColumnWidth = columnWidth; } 2085 UInt getTileColumnWidth (UInt columnIdx) const { return m_tileColumnWidth[columnIdx]; } 2086 Void setNumTileRowsMinus1 (Int i) { m_numTileRowsMinus1 = i; } 2087 Int getTileNumRowsMinus1 () const { return m_numTileRowsMinus1; } 2088 Void setTileRowHeight (const std::vector<Int>& rowHeight) { m_tileRowHeight = rowHeight; } 2089 UInt getTileRowHeight (UInt rowIdx) const { return m_tileRowHeight[rowIdx]; } 2090 2091 Void setNumSubstreams (Int numSubstreams) { m_numSubstreams = numSubstreams; } 2092 Int getNumSubstreams () { return m_numSubstreams; } 2344 2093 2345 2094 Void setSignHideFlag( Int signHideFlag ) { m_signHideFlag = signHideFlag; } … … 2537 2286 2538 2287 Bool m_enableTMVPFlag; 2539 #if I0044_SLICE_TMVP2288 #if H_MV 2540 2289 Bool m_availableForTMVPRefFlag; 2541 2290 #endif … … 2599 2348 UInt m_aiDDDShift [MAX_NUM_LAYERS]; 2600 2349 #endif 2601 #if MTK_SINGLE_DEPTH_MODE_I00952350 #if H_3D_SINGLE_DEPTH 2602 2351 Bool m_bApplySingleDepthMode; 2603 2352 #endif 2604 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX2353 #if H_3D_IC 2605 2354 Int *m_aICEnableCandidate; 2606 2355 Int *m_aICEnableNum; … … 2676 2425 TComPic* getTexturePic () { return m_ivPicsCurrPoc[0][ m_viewIndex ]; } 2677 2426 #endif 2678 #if MTK_SINGLE_DEPTH_MODE_I00952427 #if H_3D_SINGLE_DEPTH 2679 2428 Void setApplySingleDepthMode( Bool b ) { m_bApplySingleDepthMode = b; } 2680 2429 Bool getApplySingleDepthMode() { return m_bApplySingleDepthMode; } … … 2877 2626 Void setEnableTMVPFlag ( Bool b ) { m_enableTMVPFlag = b; } 2878 2627 Bool getEnableTMVPFlag () { return m_enableTMVPFlag;} 2879 #if I0044_SLICE_TMVP2628 #if H_MV 2880 2629 Void setAvailableForTMVPRefFlag ( Bool b ) { m_availableForTMVPRefFlag = b; } 2881 2630 Bool getAvailableForTMVPRefFlag () { return m_availableForTMVPRefFlag;} … … 2917 2666 Int* getDepthToDisparityF( Int refViewIdx ) { return m_depthToDisparityF[ refViewIdx ]; }; 2918 2667 Bool getVpsDepthModesFlag () { return getVPS()->getVpsDepthModesFlag( getVPS()->getLayerIdInVps( m_layerId ) ); } 2919 #if SEPARATE_FLAG_I00852920 2668 Bool getIVPFlag () { return getVPS()->getIVPFlag( getVPS()->getLayerIdInVps( m_layerId ) ); } 2921 2669 #endif 2922 #endif 2923 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 2670 #if H_3D_IC 2924 2671 Void setICEnableCandidate( Int* ICEnableCandidate) { m_aICEnableCandidate = ICEnableCandidate; }; 2925 2672 Void setICEnableNum( Int* ICEnableNum) { m_aICEnableNum = ICEnableNum; }; -
trunk/source/Lib/TLibCommon/TComWedgelet.cpp
r1039 r1084 68 68 m_uiHeight ( rcWedge.m_uiHeight ), 69 69 m_pbPattern( (Bool*)xMalloc( Bool, (m_uiWidth * m_uiHeight) ) ) 70 #if SHARP_DMM1_I011071 70 ,m_pbScaledPattern( g_wedgePattern ) 72 #endif73 71 { 74 72 ::memcpy( m_pbPattern, rcWedge.m_pbPattern, sizeof(Bool) * (m_uiWidth * m_uiHeight)); … … 88 86 89 87 m_pbPattern = (Bool*)xMalloc( Bool, (m_uiWidth * m_uiHeight) ); 90 #if SHARP_DMM1_I011091 88 m_pbScaledPattern = g_wedgePattern; 92 #endif93 89 } 94 90 … … 187 183 switch( m_eWedgeRes ) 188 184 { 189 #if !SHARP_DMM1_I0110190 case( DOUBLE_PEL ): { uiTempBlockSize = m_uiWidth; uhXs = (m_uhXs<<1); uhYs = (m_uhYs<<1); uhXe = (m_uhXe<<1); uhYe = (m_uhYe<<1); } break;191 #endif192 185 case( FULL_PEL ): { uiTempBlockSize = m_uiWidth; uhXs = m_uhXs; uhYs = m_uhYs; uhXe = m_uhXe; uhYe = m_uhYe; } break; 193 186 case( HALF_PEL ): { uiTempBlockSize = (m_uiWidth<<1); uhXs = m_uhXs; uhYs = m_uhYs; uhXe = m_uhXe; uhYe = m_uhYe; } break; 194 187 } 195 196 #if !SHARP_DMM1_I0110197 if( m_eWedgeRes == DOUBLE_PEL) // adjust line-end for DOUBLE_PEL resolution198 {199 if( m_uhOri == 1 ) { uhXs = uiTempBlockSize-1; }200 if( m_uhOri == 2 ) { uhXe = uiTempBlockSize-1; uhYs = uiTempBlockSize-1; }201 if( m_uhOri == 3 ) { uhYe = uiTempBlockSize-1; }202 if( m_uhOri == 4 ) { uhYe = uiTempBlockSize-1; }203 if( m_uhOri == 5 ) { uhXs = uiTempBlockSize-1; }204 }205 #endif206 188 207 189 Bool* pbTempPattern = new Bool[ (uiTempBlockSize * uiTempBlockSize) ]; … … 233 215 switch( m_eWedgeRes ) 234 216 { 235 #if !SHARP_DMM1_I0110236 case( DOUBLE_PEL ): { for( UInt k = 0; k < (m_uiWidth * m_uiHeight); k++ ) { m_pbPattern[k] = pbTempPattern[k]; }; } break;237 #endif238 217 case( FULL_PEL ): { for( UInt k = 0; k < (m_uiWidth * m_uiHeight); k++ ) { m_pbPattern[k] = pbTempPattern[k]; }; } break; 239 218 case( HALF_PEL ): // sub-sampling by factor 2 … … 327 306 } 328 307 329 #if SHARP_DMM1_I0110330 308 Bool* TComWedgelet::getScaledPattern(UInt uiDstSize) 331 309 { 332 Bool *pbSrcPat = this->getPattern(); 333 UInt uiSrcSize = this->getStride(); 334 335 Int scale = (g_aucConvertToBit[uiDstSize] - g_aucConvertToBit[uiSrcSize]); 336 assert(scale>=0); 337 for (Int y=0; y<uiDstSize; y++) 338 { 339 for (Int x=0; x<uiDstSize; x++) 340 { 341 Int srcX = x>>scale; 342 Int srcY = y>>scale; 343 m_pbScaledPattern[y*uiDstSize + x] = pbSrcPat[ srcY*uiSrcSize + srcX ]; 344 } 345 } 346 return m_pbScaledPattern; 347 } 348 #endif 310 Bool *pbSrcPat = this->getPattern(); 311 UInt uiSrcSize = this->getStride(); 312 313 Int scale = (g_aucConvertToBit[uiDstSize] - g_aucConvertToBit[uiSrcSize]); 314 assert(scale>=0); 315 for (Int y=0; y<uiDstSize; y++) 316 { 317 for (Int x=0; x<uiDstSize; x++) 318 { 319 Int srcX = x>>scale; 320 Int srcY = y>>scale; 321 m_pbScaledPattern[y*uiDstSize + x] = pbSrcPat[ srcY*uiSrcSize + srcX ]; 322 } 323 } 324 return m_pbScaledPattern; 325 } 349 326 350 327 TComWedgeNode::TComWedgeNode() -
trunk/source/Lib/TLibCommon/TComWedgelet.h
r1039 r1084 58 58 #define DIM_NO_IDX MAX_UINT 59 59 60 #if HS_DMM_SIGNALLING_I012061 60 __inline UInt getDimType ( Int intraMode ) 62 61 { … … 64 63 return (dimType >= 0 && dimType < DIM_NUM_TYPE) ? (UInt)dimType : DIM_NO_IDX; 65 64 } 66 #else67 __inline UInt getDimType ( Int intraMode ) { Int dimType = (intraMode-DIM_OFFSET)/2; return (dimType >= 0 && dimType < DIM_NUM_TYPE) ? (UInt)dimType : DIM_NO_IDX; }68 #endif69 65 __inline Bool isDimMode ( Int intraMode ) { return (getDimType( intraMode ) < DIM_NUM_TYPE); } 70 #if !HS_DMM_SIGNALLING_I012071 __inline Bool isDimDeltaDC( Int intraMode ) { return (isDimMode( intraMode ) && ((intraMode-DIM_OFFSET)%2) == 1); }72 #endif73 66 #endif 74 67 … … 79 72 enum WedgeResolution 80 73 { 81 #if !SHARP_DMM1_I011082 DOUBLE_PEL,83 #endif84 74 FULL_PEL, 85 75 HALF_PEL … … 106 96 107 97 Bool* m_pbPattern; 108 #if SHARP_DMM1_I0110109 98 Bool* m_pbScaledPattern; 110 #endif111 99 112 100 Void xGenerateWedgePattern(); … … 134 122 Bool getIsCoarse() { return m_bIsCoarse; } 135 123 UInt getAng () { return m_uiAng; } 136 #if SHARP_DMM1_I0110137 124 Bool* getScaledPattern(UInt uiWidth); 138 #endif139 125 140 126 Void setWedgelet( UChar uhXs, UChar uhYs, UChar uhXe, UChar uhYe, UChar uhOri, WedgeResolution eWedgeRes, Bool bIsCoarse = false ); -
trunk/source/Lib/TLibCommon/TComYuv.cpp
r1039 r1084 689 689 UInt iSrc1Stride = pcYuvSrc1->getStride(); 690 690 UInt iDstStride = getStride(); 691 #if QC_I0129_ARP_FIX692 691 Int iIFshift = IF_INTERNAL_PREC - g_bitDepthY; 693 692 Int iOffSet = ( 1 << ( iIFshift - 1 ) ) + IF_INTERNAL_OFFS; 694 #endif695 693 for ( y = uiHeight-1; y >= 0; y-- ) 696 694 { … … 700 698 if( bClip ) 701 699 { 702 #if QC_I0129_ARP_FIX703 700 pDst[x] = ClipY( ( pDst[x] + iOffSet ) >> iIFshift ); 704 #else705 pDst[x] = ClipY( pDst[x] );706 #endif707 701 } 708 702 } … … 727 721 UInt iSrc1Stride = pcYuvSrc1->getCStride(); 728 722 UInt iDstStride = getCStride(); 729 #if QC_I0129_ARP_FIX 723 730 724 Int iIFshift = IF_INTERNAL_PREC - g_bitDepthC; 731 725 Int iOffSet = ( 1 << ( iIFshift - 1 ) ) + IF_INTERNAL_OFFS; 732 #endif 726 733 727 for ( y = uiHeight-1; y >= 0; y-- ) 734 728 { … … 739 733 if( bClip ) 740 734 { 741 #if QC_I0129_ARP_FIX742 735 pDstU[x] = ClipC( ( pDstU[x] + iOffSet ) >> iIFshift ); 743 736 pDstV[x] = ClipC( ( pDstV[x] + iOffSet ) >> iIFshift ); 744 #else745 pDstU[x] = ClipC( pDstU[x] );746 pDstV[x] = ClipC( pDstV[x] );747 #endif748 737 } 749 738 } … … 761 750 { 762 751 subtractARPLuma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth , uiHeight ); 763 #if SHARP_ARP_CHROMA_I0104 752 764 753 if (uiWidth > 8) 765 #endif 766 subtractARPChroma( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1 , uiHeight>>1 ); 754 subtractARPChroma( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1 , uiHeight>>1 ); 767 755 } 768 756 … … 823 811 { 824 812 multiplyARPLuma( uiAbsPartIdx , uiWidth , uiHeight , dW ); 825 #if SHARP_ARP_CHROMA_I0104 813 826 814 if (uiWidth > 8) 827 #endif 828 multiplyARPChroma( uiAbsPartIdx , uiWidth >> 1 , uiHeight >> 1 , dW ); 815 multiplyARPChroma( uiAbsPartIdx , uiWidth >> 1 , uiHeight >> 1 , dW ); 829 816 } 830 817 -
trunk/source/Lib/TLibCommon/TypeDef.h
r1066 r1084 111 111 // MTK_ARP_REF_SELECTION_G0053 ARP Reference picture selection in JCT3V-G0053 112 112 // MTK_ALIGN_SW_WD_BI_PRED_ARP_H0085 Align the SW and WD for the bi-prediction ARP PUs by disallowing non-normative fast bi-prediction for ARP PUs, JCT3V-H0085 113 113 // QC_I0051_ARP_SIMP 114 // SHARP_ARP_CHROMA_I0104 115 // MTK_I0072_IVARP_SCALING_FIX 114 116 115 117 #define H_3D_IC 1 // Illumination Compensation, JCT3V-B0045, JCT3V-C0046, JCT3V-D0060 … … 123 125 // SEC_IC_ARP_SIG_G0072, Disabling IC when ARP is enabled, option 1 in JCT3V-G0072, part 2 in JCT3V-G0121 124 126 // MTK_LOW_LATENCY_IC_ENCODING_H0086 Low-latency IC encoding in JCT3V-H0086 125 126 #define MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 1 // Remove the global variables used in JCT3V-H0086 127 128 129 #define SEC_IC_NEIGHBOR_CLIP_I0080 1 // Clipping of neighboring sample position, JCT3V-I0080 130 127 // MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 1 // Remove the global variables used in JCT3V-H0086 128 // SEC_IC_NEIGHBOR_CLIP_I0080 // Clipping of neighboring sample position, JCT3V-I0080 131 129 132 130 #if H_3D_NBDV … … 177 175 // SHARP_SIMPLE_MERGE_H0062 Restrict 3D-HEVC merge cand in small PUs 178 176 // MTK_DIS_SPBIP8X4_H0205 Disable bi-prediction for 8x4 and 4x8 sub PU and remove the SPIVMP 2Nx2N restriction 179 // SEC_ADAPT_DISABLE_IVMP Disalbing IVMP merge candidates when IC is enabled, JCT3V-H0070 180 181 #define SEC_SIMP_SHIFTED_DV_I0086 1 // Simplification of Shifted DV candidate, JCT3V-I0086 177 // SEC_ADAPT_DISABLE_IVMP Disabling IVMP merge candidates when IC is enabled, JCT3V-H0070 178 // SEC_SIMP_SHIFTED_DV_I0086 Simplification of Shifted DV candidate, JCT3V-I0086 179 180 182 181 183 182 #define H_3D_TMVP 1 // QC_TMVP_C0047 … … 222 221 // SEC_NO_RESI_DLT_H0105 223 222 // MTK_DLT_CODING_FIX_H0091 224 225 #define MTK_SINGLE_DEPTH_MODE_I0095 1 // Single depth mode proposed in JCT3V-I0095 226 #if MTK_SINGLE_DEPTH_MODE_I0095 227 #define MTK_SINGLE_DEPTH_MODE_CANDIDATE_LIST_SIZE 2 // size of the sample candidate list 228 #endif 229 230 #define H_3D_FIX_UNINIT 1 // Fix uninitialized flag 223 // HS_DMM_SIGNALLING_I0120 224 // SHARP_DMM1_I0110 // LUT size reduction for DMM1 proposed in JCT3V-I0110 225 // FAST_SDC_OFFSET_DECISION_I0084 226 // SEPARATE_FLAG_I0085 227 // H_3D_DELTA_DLT 228 // RWTH_DLT_CLIP_I0057 1 229 230 231 232 #define H_3D_SINGLE_DEPTH 1 // Single depth mode proposed in JCT3V-I0095 233 234 231 235 #define H_3D_INTER_SDC 1 // INTER SDC, Inter simplified depth coding 232 236 // LGE_INTER_SDC_E0156 Enable inter SDC for depth coding … … 245 249 // MTK_DBBP_SIGNALING_H0094 246 250 // H_3D_FIX_DBBP_IVMP Fix . Enable IVMP is always disabled, when DBBP is enabled. The original intention is to disable Sub-PU IVMP when DBBP is enabled, not to disable IVMP itself. 247 248 #define SEC_DBBP_EXPLICIT_SIG_I0077 1 // Remove the partition derivation and signal dbbp_flag only when the partion mode is 2NxN/Nx2N, JCT3V-I0077 249 #define SEC_DBBP_DISALLOW_8x8_I0078 1 // Disallow DBBP in 8x8 CU, JCT3V-I0078 250 #define SHARP_DBBP_SIMPLE_FLTER_I0109 1 // Simple condition and one dimensional dilter for DBBP 251 #define SEC_DBBP_DMM4_THRESHOLD_I0076 1 // Simplification of threshold derivation for DBBP and DMM4, JCT3V-I0076 251 // SEC_DBBP_EXPLICIT_SIG_I0077 1 // Remove the partition derivation and signal dbbp_flag only when the partition mode is 2NxN/Nx2N, JCT3V-I0077 252 // Disallow DBBP in 8x8 CU, JCT3V-I0078 253 // SHARP_DBBP_SIMPLE_FLTER_I0109 1 // Simple condition and one dimensional filter for DBBP 254 // SEC_DBBP_DMM4_THRESHOLD_I0076 Simplification of threshold derivation for DBBP and DMM4, JCT3V-I0076 252 255 253 256 … … 256 259 #define H_3D_FCO 0 // Flexible coding order for 3D 257 260 #if H_3D_FCO 258 #define LGE_FCO_I01161259 #endif 260 261 #define SCU_HS_FAST_INTRA_SDC_I0123 1261 #define H_3D_FCO 1 262 #endif 263 264 #define H_3D_FAST_INTRA_SDC 1 // I0123 262 265 263 266 // OTHERS … … 271 274 #endif 272 275 273 #define MTK_I0099_VPS_EX2 1 ///< JCT3V-I0099, sub-PU size signaling and lim_qt_pred_flag in VPS extension 2274 #define MTK_I0099_FIX 1 ///< Fix the problem of removing encoder only QTL275 276 276 // Rate Control 277 277 #define KWU_FIX_URQ 1 278 278 #define KWU_RC_VIEWRC_E0227 0 ///< JCT3V-E0227, view-wise target bitrate allocation 279 279 #define KWU_RC_MADPRED_E0227 0 ///< JCT3V-E0227, inter-view MAD prediction 280 281 #define SEC_VPS_CLEANUP_I0090 1282 #define SEC_HLS_CLEANUP_I0100 1283 284 #define H_3D_FIX_64BIT_SHIFT 1285 280 #endif // H_3D 286 281 … … 292 287 293 288 // Fixes 294 #define FIX_TICKET_79 1 // Unused VSP code 295 #define FIX_TICKET_75 1 // Bi-pred restriction bug in VSP 296 #define FIX_TICKET_68 1 // MV clipping bug in the sub-PU MPI default MV generation 297 #define FIX_TICKET_71 1 // IC parameters is meaningless in HTM when no training samples are available 298 #define FIX_TICKET_77 1 // Unused variable m_iBitsPerDepthValue 299 #define FIX_TICKET_76 1 // unused functions 300 #define FIX_TICKET_62 1 // buffer overflow for print 301 #define FIX_TICKET_61 1 // layerIdsInSets size check 289 290 ///// ***** SINGLE DEPTH MODE ********* 291 #if H_3D_SINGLE_DEPTH 292 #define SINGLE_DEPTH_MODE_CAND_LIST_SIZE 2 // size of the sample candidate list 293 #endif 302 294 303 295 ///// ***** VIEW SYNTHESIS OPTIMIZAION ********* … … 308 300 #define H_3D_VSO_RM_ASSERTIONS 0 // Output VSO assertions 309 301 #define H_3D_VSO_SYNTH_DIST_OUT 0 // Output of synthesized view distortion instead of depth distortion in encoder output 310 #define H_3D_VSO_FIX 1 // This fix should be enabled after verification311 302 #endif 312 303 … … 321 312 #if H_3D_ARP 322 313 #define H_3D_ARP_WFNR 3 323 #define QC_I0129_ARP_FIX 1324 #define QC_I0051_ARP_SIMP 1325 #define SHARP_ARP_CHROMA_I0104 1326 #define MTK_I0072_IVARP_SCALING_FIX 1327 314 #endif 328 315 329 316 ///// ***** DEPTH INTRA MODES ********* 330 317 #if H_3D_DIM 318 // HHI_DMM4_ENC_I0066 331 319 #define H_3D_DIM_DMM 1 // Depth Modeling Modes 332 320 #define H_3D_DIM_SDC 1 // Simplified Depth Coding method 333 321 #define H_3D_DIM_DLT 1 // Depth Lookup Table 334 #define HS_DMM_SIGNALLING_I0120 1 335 #define SHARP_DMM1_I0110 1 // LUT size reduction for DMM1 proposed in JCT3V-I0110 336 #define FIX_WARNING 1 // fix narrowing conversion of NumPocStCurr0,NumPocStCurr1 at TComSlice.cpp 337 #define FAST_SDC_OFFSET_DECISION_I0084 1 338 #define SEPARATE_FLAG_I0085 1 339 340 #if H_3D_DIM_DLT 341 #define H_3D_DELTA_DLT 1 342 #define RWTH_DLT_CLIP_I0057 1 343 #endif 322 344 323 #define H_3D_DIM_ENC 1 // Depth Intra encoder optimizations, includes: 345 324 // HHI_DEPTH_INTRA_SEARCH_RAU_C0160 346 325 // LG_ZEROINTRADEPTHRESI_A0087 347 #define HHI_DMM4_ENC_I0066 1348 326 #endif 349 327 ///// ***** VIEW SYNTHESIS PREDICTION ********* … … 370 348 #if H_3D_DBBP 371 349 #define DBBP_INVALID_SHORT (-4) 372 #define RWTH_DBBP_PACK_MODE SIZE_2NxN350 #define DBBP_PACK_MODE SIZE_2NxN 373 351 #endif 374 352 … … 389 367 ///////////////////////////////////////////////////////////////////////////////// 390 368 // TBD: Check if integration is necessary. 391 392 393 394 //Added by Qualcomm for HLS 395 #define DISCARDABLE_PIC_RPS 1 ///< JCT3V-G0131: Inter-layer RPS and temporal RPS should not contain picture with discardable_flag equal to 1 396 #define VPS_MISC_UPDATES 1 ///< Misc updates:JCT3V-0240, 397 #define NON_REF_NAL_TYPE_DISCARDABLE 1 ///< JCT3V-G0031: If discardable picture is a non-IRAP, it must be a non-referenced sub-layer picture 398 #define INFERENCE_POC_MSB_VAL_PRESENT 1 ///< JCT3V-H0042: poc_msb_val_present_flag shall be equal to 0 when slice_header_extension_length is (inferred to be ) equal to 0 399 #define INFERENCE_POC_RESET_INFO_PRESENT 1 ///< JCT3V-H0042: Infer the value of poc_reset_info_present_flag to be equal to 0 when no pps extension / pps extension for multilayer. 400 #define I0044_SLICE_TMVP 1 ///< JCT3V-I0044: Regarding slice_temporal_mvp_enabled_flag 401 #define I0045_BR_PR_ADD_LAYER_SET 1 ///< JCT3V-I0045: Signalling of bit-rate and picture rate for additional layer set 402 #define I0045_VPS_VUI_VST_PARAMS 1 ///< JCT3V-I0045: Related to signalling of VST parameters of the base layer. 403 404 405 #define H_MV_HLS10_GEN 0 // General changes (not tested) 406 407 #define H_MV_HLS10_AUX 1 // Auxiliary pictures 408 #define H_MV_HLS10_GEN_FIX 1 409 #define H_MV_FIX_LOOP_GOPSIZE 1 410 #define H_MV_FIX_SUB_LAYERS_MAX_MINUS1 1 411 412 #define H_MV_HLS10_GEN_VSP_CONF_WIN 1 // VPS conformance window 413 #define H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL 1 // vps_base_layer_available 414 #define H_MV_HLS10_REF_PRED_LAYERS 1 // reference and predicted layer derivation 415 #define H_MV_HLS10_NESSECARY_LAYER 1 // necessary layers 416 #define H_MV_HLS10_ADD_LAYERSETS 1 // additional layer sets 417 #define H_MV_HLS10_DBP_SIZE 1 // dpb size syntax structure 418 #define H_MV_HLS10_MAXNUMPICS 1 // constraint on number of pictures in rps 419 #define H_MV_HLS10_PTL 1 // profile tier level 420 #define H_MV_HLS10_PTL_FIX 1 // profile tier level fix 421 #define H_MV_HLS10_PTL_INBL_FIX 1 // profile tier level fix 422 #define H_MV_HLS10_PTL_INFER_FIX 1 // fix inference ptl 423 #define H_MV_HLS10_MULTILAYERSPS 1 // multilayer SPS extension 424 #define H_MV_HLS10_VPS_VUI 1 // vsp vui 425 #define H_MV_HLS10_VPS_VUI_BSP 1 // vsp vui bsp 426 #define H_MV_HLS10_PPS 1 // PPS modifications 427 428 #define H_MV_HLS10_VPS_VUI_BSP_STORE 0 // Currently bsp vui bsp hrd parameters are not stored, some dynamic memory allocation with upper bounds is required. 429 430 369 #define H_MV_HLS_PTL_LIMITS 0 431 370 #define H_MV_HLS7_GEN 0 // General changes (not tested) 432 371 #define H_MV_ALIGN_HM_15 1 433 372 434 373 // POC … … 452 391 //#define H_MV_HLS_7_SEI_P0123_25 0 // (SEI/P0123/Alpha channel info) #25 Add alpha channel information SEI message Decision: Adopt. Constrain the bit depth indicated to be equal to the coded bit depth of the aux picture. 453 392 454 // Auxiliary picture related455 //#define H_MV_HLS_8_AUX_NODOC_40 0 // #40 (AUX /NODOC/primary pic) Clarify that an auxiliary picture can be associated with more than one primary picture. Consider if the language associating an alpha auxiliary picture with a primary picture in the semantics of dimension_id[ ][ ] near the AuxId derivation could be moved to the alpha SEI message.456 //#define H_MV_HLS_8_AUX_Q0081_2 0 // #2 (AUX /Q0081/primary) Decision: Remove the constraint that an alpha picture must be accompanied by a primary picture.457 //#define H_MV_HLS_8_AUX_Q0078_44 0 // #44 (AUX /Q0078/concepts Auxiliary picture concepts:458 //#define H_MV_HLS_8_AUX_Q0078_39 0 // #39 (AUX /Q0078/conformance): mechanism for signaling a profile/tier/level conformance point for auxiliary pictures459 460 // Profiles461 //#define H_MV_HLS_8_PRO_NODOC_50 0 // #50 (PROF /NODOC/Monochrome) Add Monochrome 8-bit profile462 //#define H_MV_HLS_8_PRO_NODOC_31 0 // #31 (PROF /NODOC/Profile constraint) Add a profile constraint to the Scalable Main, Scalable Main 10, and Stereo Main profiles against allowing layers with duplicate values of DependencyId (or ViewOrderIdx) when AuxId equal to 0.463 //#define H_MV_HLS_8_PRO_H0126_45 0 // #45 (PROF /H0126/Stereo main) Phrasing used in specifying the Stereo Main profile.464 //#define H_MV_HLS_8_PRO_Q0160_33 0 // #33 (PROF /Q0160/alt_output_flag) v2: Add constraint to stereo main profile that it must contain exactly two texture views, and add a note to state that the constraint implies a restriction that alt_output_flag equal to 0.465 466 393 // DPB 467 394 //#define H_MV_HLS_8_HRD_Q0102_09 0 // #9 (HRD /Q0102/NoOutputOfPriorPicsFlag) It was suggested that also the separate_colour_plane_flag should affect inference of NoOutputOfPriorPicsFlag. Decision (Ed.): Agreed (affects RExt text). … … 491 418 #define SAO_SGN_FUNC 1 492 419 420 #define TILE_SIZE_CHECK 1 421 493 422 #define FIX1172 1 ///< fix ticket #1172 494 423 … … 506 435 #define MAX_NESTING_NUM_LAYER 64 507 436 508 #if H_MV _HLS10_VPS_VUI_BSP437 #if H_MV 509 438 #define MAX_VPS_NUM_HRD_PARAMETERS 1024 439 #else 440 #define MAX_VPS_NUM_HRD_PARAMETERS 1 441 #endif 442 #if H_MV 510 443 #define MAX_NUM_SUB_LAYERS 7 511 444 #define MAX_NUM_SIGNALLED_PARTITIONING_SCHEMES 16 512 #else 513 #define MAX_VPS_NUM_HRD_PARAMETERS 1 514 #endif 515 445 #endif 516 446 #define MAX_VPS_OP_SETS_PLUS1 1024 517 447 #if H_MV 518 #if H_MV_HLS10_ADD_LAYERSETS519 448 #define MAX_VPS_NUM_ADD_LAYER_SETS 1024 520 #endif521 449 #define MAX_VPS_NUH_LAYER_ID_PLUS1 63 522 450 #define MAX_NUM_SCALABILITY_TYPES 16 … … 533 461 #define MAX_VPS_PROFILE_TIER_LEVEL 64 534 462 #define MAX_VPS_ADD_OUTPUT_LAYER_SETS 1024 535 #if H_MV_HLS10_ADD_LAYERSETS536 463 #define MAX_VPS_OUTPUTLAYER_SETS ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 + MAX_VPS_OP_SETS_PLUS1 ) 537 #else538 #define MAX_VPS_OUTPUTLAYER_SETS ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 )539 #endif540 464 #define MAX_NUM_VIDEO_SIGNAL_INFO 16 541 465 #define MAX_NUM_SCALED_REF_LAYERS MAX_NUM_LAYERS-1 542 #if !H_MV_HLS10_VPS_VUI_BSP543 #define MAX_NUM_BSP_HRD_PARAMETERS 100 ///< Maximum value is actually not specified544 #define MAX_NUM_BITSTREAM_PARTITIONS 100 ///< Maximum value is actually not specified545 #define MAX_NUM_BSP_SCHED_COMBINATION 100 ///< Maximum value is actually not specified546 #define MAX_SUB_STREAMS 1024547 #endif548 466 #else 549 467 #define MAX_NUM_LAYER_IDS 64 … … 1016 934 MAINSTILLPICTURE = 3, 1017 935 #if H_MV 1018 #if H_MV_HLS10_PTL1019 936 MULTIVIEWMAIN = 6, 1020 937 #if H_3D 1021 938 MAIN3D = 8, 1022 #endif1023 #else1024 MAINSTEREO = 4,1025 MAINMULTIVIEW = 5,1026 #if H_3D1027 MAIN3D = 6,1028 #endif1029 939 #endif 1030 940 #endif … … 1069 979 #endif 1070 980 VIEW_ORDER_INDEX = 1, 1071 #if H_MV_HLS10_AUX1072 981 DEPENDENCY_ID = 2, 1073 982 AUX_ID = 3, 1074 #endif1075 983 }; 1076 984 #endif -
trunk/source/Lib/TLibDecoder/TDecCAVLC.cpp
r1066 r1084 53 53 } 54 54 // To avoid mismatches 55 #if H_MV_HLS10_GEN_FIX56 55 fprintf( g_hTrace, "=========== Sequence Parameter Set LayerId: %d ===========\n", pSPS->getLayerId() ); 57 56 #else 58 fprintf( g_hTrace, "=========== Sequence Parameter Set ===========\n" );59 #endif60 #else61 57 fprintf( g_hTrace, "=========== Sequence Parameter Set ID: %d ===========\n", pSPS->getSPSId() ); 62 58 #endif … … 70 66 return; 71 67 } 72 #if H_MV_HLS10_GEN_FIX73 68 fprintf( g_hTrace, "=========== Picture Parameter Set LayerId: %d ===========\n", pPPS->getLayerId() ); 74 #else75 fprintf( g_hTrace, "=========== Picture Parameter Set ===========\n" );76 #endif77 69 #else 78 70 fprintf( g_hTrace, "=========== Picture Parameter Set ID: %d ===========\n", pPPS->getPPSId() ); … … 300 292 if( pcPPS->getTilesEnabledFlag() ) 301 293 { 302 READ_UVLC ( uiCode, "num_tile_columns_minus1" ); pcPPS->setNum ColumnsMinus1( uiCode );303 READ_UVLC ( uiCode, "num_tile_rows_minus1" ); pcPPS->setNum RowsMinus1( uiCode );304 READ_FLAG ( uiCode, "uniform_spacing_flag" ); pcPPS->set UniformSpacingFlag( uiCode);305 306 if( !pcPPS->get UniformSpacingFlag())307 { 308 UInt* columnWidth = (UInt*)malloc(pcPPS->getNumColumnsMinus1()*sizeof(UInt));309 for(UInt i=0; i<pcPPS->getNum ColumnsMinus1(); i++)294 READ_UVLC ( uiCode, "num_tile_columns_minus1" ); pcPPS->setNumTileColumnsMinus1( uiCode ); 295 READ_UVLC ( uiCode, "num_tile_rows_minus1" ); pcPPS->setNumTileRowsMinus1( uiCode ); 296 READ_FLAG ( uiCode, "uniform_spacing_flag" ); pcPPS->setTileUniformSpacingFlag( uiCode == 1 ); 297 298 if( !pcPPS->getTileUniformSpacingFlag()) 299 { 300 std::vector<Int> columnWidth(pcPPS->getNumTileColumnsMinus1()); 301 for(UInt i=0; i<pcPPS->getNumTileColumnsMinus1(); i++) 310 302 { 311 303 READ_UVLC( uiCode, "column_width_minus1" ); 312 304 columnWidth[i] = uiCode+1; 313 305 } 314 pcPPS->setColumnWidth(columnWidth); 315 free(columnWidth); 316 317 UInt* rowHeight = (UInt*)malloc(pcPPS->getNumRowsMinus1()*sizeof(UInt)); 318 for(UInt i=0; i<pcPPS->getNumRowsMinus1(); i++) 306 pcPPS->setTileColumnWidth(columnWidth); 307 308 std::vector<Int> rowHeight (pcPPS->getTileNumRowsMinus1()); 309 for(UInt i=0; i<pcPPS->getTileNumRowsMinus1(); i++) 319 310 { 320 311 READ_UVLC( uiCode, "row_height_minus1" ); 321 312 rowHeight[i] = uiCode + 1; 322 313 } 323 pcPPS->setRowHeight(rowHeight); 324 free(rowHeight); 325 } 326 327 if(pcPPS->getNumColumnsMinus1() !=0 || pcPPS->getNumRowsMinus1() !=0) 314 pcPPS->setTileRowHeight(rowHeight); 315 } 316 317 if(pcPPS->getNumTileColumnsMinus1() !=0 || pcPPS->getTileNumRowsMinus1() !=0) 328 318 { 329 319 READ_FLAG ( uiCode, "loop_filter_across_tiles_enabled_flag" ); pcPPS->setLoopFilterAcrossTilesEnabledFlag( uiCode ? true : false ); … … 342 332 } 343 333 } 344 #if !H_MV_HLS10_PPS345 #if H_MV346 if ( pcPPS->getLayerId() > 0 )347 {348 READ_FLAG( uiCode, "pps_infer_scaling_list_flag" ); pcPPS->setPpsInferScalingListFlag( uiCode == 1 );349 }350 351 if( pcPPS->getPpsInferScalingListFlag( ) )352 {353 READ_CODE( 6, uiCode, "pps_scaling_list_ref_layer_id" ); pcPPS->setPpsScalingListRefLayerId( uiCode );354 }355 else356 {357 #endif358 #endif359 334 READ_FLAG( uiCode, "pps_scaling_list_data_present_flag" ); pcPPS->setScalingListPresentFlag( uiCode ? true : false ); 360 335 if(pcPPS->getScalingListPresentFlag ()) … … 362 337 parseScalingList( pcPPS->getScalingList() ); 363 338 } 364 #if !H_MV_HLS10_PPS365 #if H_MV366 }367 #endif368 #endif369 339 READ_FLAG( uiCode, "lists_modification_present_flag"); 370 340 pcPPS->setListsModificationPresentFlag(uiCode); … … 400 370 if ( pcPPS->getPpsMultilayerExtensionFlag() ) 401 371 { 402 #if H_MV_HLS10_PPS403 372 parsePPSMultilayerExtension( pcPPS ); 404 #else405 READ_FLAG( uiCode, "poc_reset_info_present_flag" ); pcPPS->setPocResetInfoPresentFlag( uiCode == 1 );406 READ_FLAG( uiCode, "pps_extension_reserved_zero_flag" );407 #endif408 373 } 409 374 #if !H_3D … … 505 470 READ_CODE(8, uiNumDepthValues, "num_depth_values_in_dlt[i]"); // num_entry 506 471 507 #if !H_3D_DELTA_DLT508 if ( pcDLT->getInterViewDltPredEnableFlag( i ) == false ) // Single-view DLT Diff Coding509 #endif510 472 { 511 473 // The condition if( pcVPS->getNumDepthValues(i) > 0 ) is always true since for Single-view Diff Coding, there is at least one depth value in depth component. … … 555 517 } 556 518 557 #if H_3D_DELTA_DLT558 519 if( pcDLT->getInterViewDltPredEnableFlag( i ) ) 559 520 { … … 571 532 pcDLT->setDepthLUTs(i, aiIdx2DepthValue, uiNumDepthValues); 572 533 } 573 #else 574 // store final DLT 575 pcDLT->setDepthLUTs(i, aiIdx2DepthValue, uiNumDepthValues); 576 #endif 534 577 535 } 578 536 } … … 782 740 READ_CODE( 3, uiCode, "sps_max_sub_layers_minus1" ); pcSPS->setMaxTLayers ( uiCode+1 ); 783 741 assert(uiCode <= 6); 784 #if H_MV_HLS10_MULTILAYERSPS785 742 #if H_MV 786 743 } … … 793 750 { 794 751 #endif 795 #endif796 752 797 753 READ_FLAG( uiCode, "sps_temporal_id_nesting_flag" ); pcSPS->setTemporalIdNestingFlag ( uiCode > 0 ? true : false ); … … 803 759 804 760 parsePTL(pcSPS->getPTL(), 1, pcSPS->getMaxTLayers() - 1); 805 #if H_MV _HLS10_PTL_INFER_FIX761 #if H_MV 806 762 pcSPS->getPTL()->inferGeneralValues ( true, 0, NULL ); 807 763 pcSPS->getPTL()->inferSubLayerValues( pcSPS->getMaxTLayers() - 1, 0, NULL ); 808 #endif809 #if H_MV810 764 } 811 765 #endif … … 813 767 assert(uiCode <= 15); 814 768 #if H_MV 815 #if H_MV_HLS10_MULTILAYERSPS816 769 if ( pcSPS->getMultiLayerExtSpsFlag() ) 817 #else818 if ( pcSPS->getLayerId() > 0 )819 #endif820 770 { 821 771 READ_FLAG( uiCode, "update_rep_format_flag" ); pcSPS->setUpdateRepFormatFlag( uiCode == 1 ); … … 839 789 READ_UVLC ( uiCode, "pic_width_in_luma_samples" ); pcSPS->setPicWidthInLumaSamples ( uiCode ); 840 790 READ_UVLC ( uiCode, "pic_height_in_luma_samples" ); pcSPS->setPicHeightInLumaSamples( uiCode ); 841 #if !H_MV_HLS10_MULTILAYERSPS842 #if H_MV843 }844 #endif845 #endif846 791 READ_FLAG( uiCode, "conformance_window_flag"); 847 792 if (uiCode != 0) … … 855 800 READ_UVLC( uiCode, "conf_win_top_offset" ); conf.setWindowTopOffset ( uiCode ); 856 801 READ_UVLC( uiCode, "conf_win_bottom_offset" ); conf.setWindowBottomOffset( uiCode ); 857 #if H_MV_HLS10_MULTILAYERSPS 858 } 859 #endif 802 } 860 803 #else 861 804 READ_UVLC( uiCode, "conf_win_left_offset" ); conf.setWindowLeftOffset ( uiCode * TComSPS::getWinUnitX( pcSPS->getChromaFormatIdc() ) ); … … 867 810 868 811 #if H_MV 869 #if H_MV_HLS10_MULTILAYERSPS870 812 if ( !pcSPS->getMultiLayerExtSpsFlag() ) 871 #else // H_MV_HLS10_GEN872 if ( pcSPS->getLayerId() == 0 )873 #endif // H_MV_HLS10_GEN874 813 { 875 814 #endif … … 891 830 892 831 #if H_MV 893 #if H_MV_HLS10_MULTILAYERSPS894 832 if ( !pcSPS->getMultiLayerExtSpsFlag()) 895 #else896 if ( pcSPS->getLayerId() == 0 )897 #endif898 833 { 899 834 #endif … … 954 889 { 955 890 #if H_MV 956 #if H_MV_HLS10_MULTILAYERSPS957 891 if ( pcSPS->getMultiLayerExtSpsFlag() ) 958 #else959 if ( pcSPS->getLayerId() > 0 )960 #endif961 892 { 962 893 READ_FLAG( uiCode, "sps_infer_scaling_list_flag" ); pcSPS->setSpsInferScalingListFlag( uiCode == 1 ); … … 1086 1017 READ_FLAG( uiCode, "inter_view_mv_vert_constraint_flag" ); pcSPS->setInterViewMvVertConstraintFlag(uiCode == 1 ? true : false); 1087 1018 1088 #if !H_MV_HLS10_PPS1089 READ_UVLC( uiCode, "num_scaled_ref_layer_offsets" ); pcSPS->setNumScaledRefLayerOffsets( uiCode );1090 1091 for( Int i = 0; i < pcSPS->getNumScaledRefLayerOffsets( ); i++)1092 {1093 READ_CODE( 6, uiCode, "scaled_ref_layer_id" ); pcSPS->setScaledRefLayerId( i, uiCode );1094 1095 Int j = pcSPS->getScaledRefLayerId( i );1096 Int iCode;1097 READ_SVLC( iCode, "scaled_ref_layer_left_offset" ); pcSPS->setScaledRefLayerLeftOffset( j, iCode );1098 READ_SVLC( iCode, "scaled_ref_layer_top_offset" ); pcSPS->setScaledRefLayerTopOffset( j, iCode );1099 READ_SVLC( iCode, "scaled_ref_layer_right_offset" ); pcSPS->setScaledRefLayerRightOffset( j, iCode );1100 READ_SVLC( iCode, "scaled_ref_layer_bottom_offset" ); pcSPS->setScaledRefLayerBottomOffset( j, iCode );1101 READ_FLAG( uiCode, "sps_multilayer_ext_reserved_zero_flag[ i ]" );1102 }1103 #endif1104 1019 } 1105 1020 … … 1107 1022 Void TDecCavlc::parseSPSExtension2( TComSPS* pcSPS, Int viewIndex, Bool depthFlag ) 1108 1023 { 1109 #if !MTK_I0099_VPS_EX2 1110 UInt uiCode; 1111 #if H_3D_QTLPC 1112 //GT: This has to go to VPS 1113 if( depthFlag ) 1114 { 1115 READ_FLAG( uiCode, "use_qtl_flag" ); 1116 pcSPS->setUseQTL( uiCode ); 1117 READ_FLAG( uiCode, "use_pc_flag" ); 1118 pcSPS->setUsePC( uiCode ); 1119 } 1120 #endif 1121 #endif 1122 } 1123 #endif 1124 1125 #if H_MV_HLS10_PPS 1024 1025 } 1026 #endif 1027 1126 1028 Void TDecCavlc::parsePPSMultilayerExtension(TComPPS* pcPPS) 1127 1029 { … … 1134 1036 1135 1037 #endif 1136 #endif1137 1038 1138 1039 Void TDecCavlc::parseVPS(TComVPS* pcVPS) … … 1143 1044 #if H_MV 1144 1045 READ_FLAG( uiCode, "vps_base_layer_internal_flag" ); pcVPS->setVpsBaseLayerInternalFlag( uiCode == 1 ); 1145 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL1146 1046 READ_FLAG( uiCode, "vps_base_layer_available_flag" ); pcVPS->setVpsBaseLayerAvailableFlag( uiCode == 1 ); 1147 #else1148 READ_FLAG( uiCode, "vps_reserved_one_bit" ); assert( uiCode == 1 );1149 #endif1150 1047 #else 1151 1048 READ_CODE( 2, uiCode, "vps_reserved_three_2bits" ); assert(uiCode == 3); … … 1162 1059 READ_CODE( 16, uiCode, "vps_reserved_ffff_16bits" ); assert(uiCode == 0xffff); 1163 1060 parsePTL ( pcVPS->getPTL(), true, pcVPS->getMaxTLayers()-1); 1164 #if H_MV_HLS10_PTL_INFER_FIX1165 1061 #if H_MV 1166 1062 pcVPS->getPTL()->inferGeneralValues ( true, 0, NULL ); 1167 1063 pcVPS->getPTL()->inferSubLayerValues( pcVPS->getMaxTLayers() - 1, 0, NULL ); 1168 #endif1169 1064 #endif 1170 1065 UInt subLayerOrderingInfoPresentFlag; … … 1193 1088 READ_CODE( 6, uiCode, "vps_max_layer_id" ); pcVPS->setVpsMaxLayerId( uiCode ); 1194 1089 1195 #if H_MV_HLS10_GEN_FIX1196 1090 READ_UVLC( uiCode, "vps_num_layer_sets_minus1" ); pcVPS->setVpsNumLayerSetsMinus1( uiCode ); 1197 #else1198 READ_UVLC( uiCode, "vps_max_num_layer_sets_minus1" ); pcVPS->setVpsNumLayerSetsMinus1( uiCode );1199 #endif1200 1091 for( UInt opsIdx = 1; opsIdx <= pcVPS->getVpsNumLayerSetsMinus1(); opsIdx ++ ) 1201 1092 { … … 1241 1132 READ_FLAG( uiCode, "cprms_present_flag[i]" ); pcVPS->setCprmsPresentFlag( uiCode == 1 ? true : false, i ); 1242 1133 } 1134 else 1135 { 1136 pcVPS->setCprmsPresentFlag( true, i ); 1137 } 1138 1243 1139 parseHrdParameters(pcVPS->getHrdParameters(i), pcVPS->getCprmsPresentFlag( i ), pcVPS->getMaxTLayers() - 1); 1244 1140 } … … 1286 1182 UInt uiCode; 1287 1183 1288 #if H_MV_HLS10_PTL1289 1184 if( pcVPS->getMaxLayersMinus1() > 0 && pcVPS->getVpsBaseLayerInternalFlag() ) 1290 1185 { 1291 1186 parsePTL( pcVPS->getPTL( 1 ),0, pcVPS->getMaxSubLayersMinus1() ); 1292 1187 1293 #if !H_MV_HLS10_PTL_INFER_FIX1294 // Copy Profile info1295 TComPTL temp = *pcVPS->getPTL( 1 );1296 *pcVPS->getPTL( 1 ) = *pcVPS->getPTL( 0 );1297 pcVPS->getPTL( 1 )->copyLevelFrom( &temp );1298 #else1299 1188 pcVPS->getPTL( 1 )->inferGeneralValues ( false, 1, pcVPS->getPTL( 0 ) ); 1300 1189 pcVPS->getPTL( 1 )->inferSubLayerValues( pcVPS->getMaxSubLayersMinus1(), 1, pcVPS->getPTL( 0 ) ); 1301 #endif 1302 } 1303 #endif 1190 } 1304 1191 1305 1192 READ_FLAG( uiCode, "splitting_flag" ); pcVPS->setSplittingFlag( uiCode == 1 ? true : false ); … … 1375 1262 pcVPS->setRefLayers(); 1376 1263 1377 #if H_MV_HLS10_ADD_LAYERSETS1378 1264 if ( pcVPS->getNumIndependentLayers() > 1 ) 1379 1265 { … … 1388 1274 pcVPS->deriveAddLayerSetLayerIdList( i ); 1389 1275 } 1390 #endif1391 1276 1392 1277 READ_FLAG( uiCode, "vps_sub_layers_max_minus1_present_flag" ); pcVPS->setVpsSubLayersMaxMinus1PresentFlag( uiCode == 1 ); … … 1425 1310 READ_UVLC( uiCode, "vps_num_profile_tier_level_minus1" ); pcVPS->setVpsNumProfileTierLevelMinus1( uiCode ); 1426 1311 1427 #if H_MV_HLS10_PTL1428 1312 Int offsetVal = ( pcVPS->getMaxLayersMinus1() > 0 && pcVPS->getVpsBaseLayerInternalFlag() ) ? 2 : 1; 1429 1313 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 2 : 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ ) … … 1431 1315 READ_FLAG( uiCode, "vps_profile_present_flag[i]" ); pcVPS->setVpsProfilePresentFlag( i, uiCode == 1 ); 1432 1316 parsePTL ( pcVPS->getPTL( offsetVal ), pcVPS->getVpsProfilePresentFlag( i ), pcVPS->getMaxTLayers()-1); 1433 #if H_MV_HLS10_PTL_INFER_FIX1434 1317 pcVPS->getPTL( offsetVal )->inferGeneralValues ( pcVPS->getVpsProfilePresentFlag( i ), offsetVal, pcVPS->getPTL( offsetVal - 1 ) ); 1435 1318 pcVPS->getPTL( offsetVal )->inferSubLayerValues( pcVPS->getMaxSubLayersMinus1() , offsetVal, pcVPS->getPTL( offsetVal - 1 ) ); 1436 #else1437 if( !pcVPS->getVpsProfilePresentFlag( i ) )1438 {1439 TComPTL temp = *pcVPS->getPTL( offsetVal );1440 *pcVPS->getPTL( offsetVal ) = *pcVPS->getPTL( offsetVal - 1 );1441 pcVPS->getPTL( offsetVal )->copyLevelFrom( &temp );1442 }1443 #endif1444 1319 offsetVal++; 1445 1320 } 1446 #else 1447 for( Int i = 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ ) 1448 { 1449 READ_FLAG( uiCode, "vps_profile_present_flag[i]" ); pcVPS->setVpsProfilePresentFlag( i, uiCode == 1 ); 1450 parsePTL ( pcVPS->getPTL( i ), pcVPS->getVpsProfilePresentFlag( i ), pcVPS->getMaxTLayers()-1); 1451 if( !pcVPS->getVpsProfilePresentFlag( i ) ) 1452 { 1453 TComPTL temp = *pcVPS->getPTL( i ); 1454 *pcVPS->getPTL( i ) = *pcVPS->getPTL( i - 1 ); 1455 pcVPS->getPTL( i )->copyLevelFrom( &temp ); 1456 } 1457 } 1458 #endif 1459 1460 #if !H_MV_HLS10_ADD_LAYERSETS 1461 if ( pcVPS->getNumIndependentLayers() > 1 ) 1462 { 1463 READ_UVLC( uiCode, "num_add_layer_sets" ); pcVPS->setNumAddLayerSets( uiCode ); 1464 } 1465 for (Int i = 0; i < pcVPS->getNumAddLayerSets(); i++) 1466 { 1467 for (Int j = 0; j < pcVPS->getNumIndependentLayers(); j++) 1468 { 1469 READ_CODE( pcVPS->getHighestLayerIdxPlus1Len( j ) , uiCode, "highest_layer_idx_plus1" ); pcVPS->setHighestLayerIdxPlus1( i, j, uiCode ); 1470 } 1471 } 1472 #endif 1321 1473 1322 1474 1323 if (pcVPS->getNumLayerSets() > 1) … … 1484 1333 pcVPS->setLayerSetIdxForOlsMinus1(0, -1); 1485 1334 1486 #if H_MV_HLS10_NESSECARY_LAYER1487 1335 pcVPS->deriveNecessaryLayerFlags( 0 ); 1488 #endif1489 1336 pcVPS->deriveTargetLayerIdList( 0 ); 1490 1337 1491 #if H_MV_HLS10_PTL_FIX1492 1338 if (pcVPS->getVpsBaseLayerInternalFlag() ) 1493 1339 { 1494 1340 pcVPS->setProfileTierLevelIdx(0,0, pcVPS->inferProfileTierLevelIdx(0,0) ); 1495 1341 } 1496 #endif1497 1342 for( Int i = 1; i < pcVPS->getNumOutputLayerSets( ); i++ ) 1498 1343 { 1499 1344 if( i >= pcVPS->getNumLayerSets( ) ) 1500 1345 { 1501 #if !VPS_MISC_UPDATES1502 READ_UVLC( uiCode, "layer_set_idx_for_ols_minus1[i]" ); pcVPS->setLayerSetIdxForOlsMinus1( i, uiCode );1503 #else1504 1346 READ_CODE( pcVPS->getLayerSetIdxForOlsMinus1Len( i ), uiCode, "layer_set_idx_for_ols_minus1[i]" ); pcVPS->setLayerSetIdxForOlsMinus1( i, uiCode ); 1505 #endif1506 1347 } 1507 1348 … … 1520 1361 } 1521 1362 } 1522 #if H_MV_HLS10_NESSECARY_LAYER1523 1363 pcVPS->deriveNecessaryLayerFlags( i ); 1524 #endif1525 1364 pcVPS->deriveTargetLayerIdList( i ); 1526 1365 1527 #if H_MV_HLS10_PTL1528 1366 for ( Int j = 0; j < pcVPS->getNumLayersInIdList( pcVPS->olsIdxToLsIdx(i)); j++ ) 1529 1367 { … … 1532 1370 READ_CODE( pcVPS->getProfileTierLevelIdxLen(), uiCode,"profile_tier_level_idx[ i ][ j ]" ); pcVPS->setProfileTierLevelIdx( i, j, uiCode ); 1533 1371 } 1534 #if H_MV_HLS10_PTL_FIX1535 1372 if (pcVPS->getNecessaryLayerFlag( i, j ) && pcVPS->getVpsNumProfileTierLevelMinus1() == 0 ) 1536 1373 { 1537 1374 pcVPS->setProfileTierLevelIdx( i , j, pcVPS->inferProfileTierLevelIdx( i, j) ); 1538 1375 } 1539 #endif 1540 } 1541 #else 1542 if ( pcVPS->getProfileLevelTierIdxLen() > 0 ) 1543 { 1544 READ_CODE( pcVPS->getProfileLevelTierIdxLen(), uiCode,"profile_level_tier_idx[ i ]" ); pcVPS->setProfileLevelTierIdx( i , uiCode ); 1545 } 1546 #endif 1376 } 1547 1377 1548 1378 if( pcVPS->getNumOutputLayersInOutputLayerSet( i ) == 1 && pcVPS->getNumDirectRefLayers( pcVPS->getOlsHighestOutputLayerId( i ) ) > 0 ) … … 1594 1424 } 1595 1425 1596 #if !H_MV_HLS10_GEN_FIX1597 READ_FLAG( uiCode, "vps_reserved_zero_flag" );1598 #endif1599 1426 parseDpbSize( pcVPS ); 1600 1427 … … 1670 1497 pcRepFormat->inferChromaAndBitDepth(pcPrevRepFormat, false ); 1671 1498 } 1672 #if H_MV_HLS10_GEN_VSP_CONF_WIN1673 1499 READ_FLAG( uiCode, "conformance_window_vps_flag" ); pcRepFormat->setConformanceWindowVpsFlag( uiCode == 1 ); 1674 1500 if ( pcRepFormat->getConformanceWindowVpsFlag() ) … … 1679 1505 READ_UVLC( uiCode, "conf_win_vps_bottom_offset" ); pcRepFormat->setConfWinVpsBottomOffset( uiCode ); 1680 1506 } 1681 #endif1682 1507 } 1683 1508 … … 1705 1530 if( pcVPSVUI->getBitRatePresentVpsFlag( ) || pcVPSVUI->getPicRatePresentVpsFlag( ) ) 1706 1531 { 1707 #if H_MV_HLS10_VPS_VUI1708 1532 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1; i < pcVPS->getNumLayerSets(); i++ ) 1709 #else1710 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1; i <= pcVPS->getVpsNumLayerSetsMinus1(); i++ )1711 #endif1712 1533 { 1713 1534 for( Int j = 0; j <= pcVPS->getMaxSubLayersInLayerSetMinus1( i ); j++ ) … … 1742 1563 else 1743 1564 { 1744 #if H_MV_HLS10_VPS_VUI1745 1565 pcVPSVUI->setVpsNumVideoSignalInfoMinus1( pcVPS->getMaxLayersMinus1() - pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1 ); 1746 #else1747 pcVPSVUI->setVpsNumVideoSignalInfoMinus1( pcVPS->getMaxLayersMinus1() );1748 #endif1749 1566 } 1750 1567 … … 1757 1574 } 1758 1575 1759 #if I0045_VPS_VUI_VST_PARAMS1760 1576 if( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() && pcVPSVUI->getVpsNumVideoSignalInfoMinus1() > 0 ) 1761 1577 { … … 1779 1595 } 1780 1596 } 1781 #else 1782 if( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() && pcVPSVUI->getVpsNumVideoSignalInfoMinus1() > 0 ) 1783 { 1784 for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ ) 1785 { 1786 READ_CODE( 4, uiCode, "vps_video_signal_info_idx" ); pcVPSVUI->setVpsVideoSignalInfoIdx( i, uiCode ); 1787 assert( pcVPSVUI->getVpsVideoSignalInfoIdx( i ) >= 0 && pcVPSVUI->getVpsVideoSignalInfoIdx( i ) <= pcVPSVUI->getVpsNumVideoSignalInfoMinus1() ); 1788 } 1789 } 1790 else 1791 { 1792 for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ ) 1793 { 1794 pcVPSVUI->setVpsVideoSignalInfoIdx( i, pcVPSVUI->getVideoSignalInfoIdxPresentFlag() ? 0 : i ); 1795 } 1796 } 1797 #endif 1597 1798 1598 READ_FLAG( uiCode, "tiles_not_in_use_flag" ); pcVPSVUI->setTilesNotInUseFlag( uiCode == 1 ); 1799 1599 if( !pcVPSVUI->getTilesNotInUseFlag() ) … … 1811 1611 for( Int j = 0; j < pcVPS->getNumDirectRefLayers( pcVPS->getLayerIdInNuh( i ) ) ; j++ ) 1812 1612 { 1813 #if H_MV_HLS10_REF_PRED_LAYERS1814 1613 Int layerIdx = pcVPS->getLayerIdInVps(pcVPS->getIdDirectRefLayer(pcVPS->getLayerIdInNuh( i ) , j )); 1815 #else1816 Int layerIdx = pcVPS->getLayerIdInVps(pcVPS->getRefLayerId(pcVPS->getLayerIdInNuh( i ) , j ));1817 #endif1818 1614 if( pcVPSVUI->getTilesInUseFlag( i ) && pcVPSVUI->getTilesInUseFlag( layerIdx ) ) 1819 1615 { … … 1833 1629 } 1834 1630 } 1835 #if H_MV_HLS10_VPS_VUI1836 1631 READ_FLAG( uiCode, "single_layer_for_non_irap_flag" ); pcVPSVUI->setSingleLayerForNonIrapFlag( uiCode == 1 ); 1837 1632 READ_FLAG( uiCode, "higher_layer_irap_skip_flag" ); pcVPSVUI->setHigherLayerIrapSkipFlag( uiCode == 1 ); 1838 #else1839 READ_CODE( 3, uiCode, "vps_vui_reserved_zero_3bits" );1840 #endif1841 1633 READ_FLAG( uiCode, "ilp_restricted_ref_layers_flag" ); pcVPSVUI->setIlpRestrictedRefLayersFlag( uiCode == 1 ); 1842 1634 … … 1847 1639 for( Int j = 0; j < pcVPS->getNumDirectRefLayers( pcVPS->getLayerIdInNuh( i ) ); j++ ) 1848 1640 { 1849 #if H_MV_HLS10_REF_PRED_LAYERS1850 1641 if( pcVPS->getVpsBaseLayerInternalFlag() || pcVPS->getIdDirectRefLayer( pcVPS->getLayerIdInNuh( i ), j ) > 0 ) 1851 #else1852 if( pcVPS->getVpsBaseLayerInternalFlag() || pcVPS->getRefLayerId( pcVPS->getLayerIdInNuh( i ), j ) > 0 )1853 #endif1854 1642 { 1855 1643 READ_UVLC( uiCode, "min_spatial_segment_offset_plus1" ); pcVPSVUI->setMinSpatialSegmentOffsetPlus1( i, j, uiCode ); … … 1870 1658 if ( pcVPSVUI->getVpsVuiBspHrdPresentFlag( ) ) 1871 1659 { 1872 #if VPS_MISC_UPDATES1873 1660 assert(pcVPS->getTimingInfo()->getTimingInfoPresentFlag() == 1); 1874 #endif1875 1661 parseVpsVuiBspHrdParameters( pcVPS ); 1876 1662 } … … 1893 1679 1894 1680 TComVpsVuiBspHrdParameters* vpsVuiBspHrdP = pcVPSVUI->getVpsVuiBspHrdParameters(); 1895 #if H_MV_HLS10_VPS_VUI_BSP1896 1681 assert( vpsVuiBspHrdP == NULL ); 1897 1682 vpsVuiBspHrdP = new TComVpsVuiBspHrdParameters; 1898 1683 pcVPSVUI->setVpsVuiBspHrdParameters( vpsVuiBspHrdP ); 1899 #else1900 assert ( vpsVuiBspHrdP );1901 #endif1902 1684 UInt uiCode; 1903 #if H_MV_HLS10_VPS_VUI_BSP1904 1685 READ_UVLC( uiCode, "vps_num_add_hrd_params" ); vpsVuiBspHrdP->setVpsNumAddHrdParams( uiCode ); 1905 1686 vpsVuiBspHrdP->createAfterVpsNumAddHrdParams( pcVPS ); … … 1990 1771 } 1991 1772 } 1992 #else1993 READ_UVLC( uiCode, "vps_num_bsp_hrd_parameters_minus1" ); vpsVuiBspHrdP->setVpsNumBspHrdParametersMinus1( uiCode );1994 for( Int i = 0; i <= vpsVuiBspHrdP->getVpsNumBspHrdParametersMinus1( ); i++ )1995 {1996 if( i > 0 )1997 {1998 READ_FLAG( uiCode, "bsp_cprms_present_flag" ); vpsVuiBspHrdP->setBspCprmsPresentFlag( i, uiCode == 1 );1999 }2000 TComHRD* hrdParameters = vpsVuiBspHrdP->getHrdParametermeters( i );2001 parseHrdParameters( hrdParameters, vpsVuiBspHrdP->getBspCprmsPresentFlag( i ), pcVPS->getMaxSubLayersMinus1() );2002 }2003 for( Int h = 1; h <= pcVPS->getVpsNumLayerSetsMinus1(); h++ )2004 {2005 READ_UVLC( uiCode, "num_bitstream_partitions" ); vpsVuiBspHrdP->setNumBitstreamPartitions( h, uiCode );2006 for( Int i = 0; i < vpsVuiBspHrdP->getNumBitstreamPartitions( h ); i++ )2007 {2008 for( Int j = 0; j < pcVPS->getNumLayersInIdList( h ); j++ )2009 {2010 READ_FLAG( uiCode, "layer_in_bsp_flag" ); vpsVuiBspHrdP->setLayerInBspFlag( h, i, j, uiCode == 1 );2011 }2012 }2013 vpsVuiBspHrdP->checkLayerInBspFlag( pcVPS, h );2014 2015 if( vpsVuiBspHrdP->getNumBitstreamPartitions( h ) )2016 {2017 READ_UVLC( uiCode, "num_bsp_sched_combinations_minus1" ); vpsVuiBspHrdP->setNumBspSchedCombinationsMinus1( h, uiCode );2018 for( Int i = 0; i <= vpsVuiBspHrdP->getNumBspSchedCombinationsMinus1( h ); i++ )2019 {2020 for( Int j = 0; j < vpsVuiBspHrdP->getNumBitstreamPartitions( h ); j++ )2021 {2022 READ_CODE( vpsVuiBspHrdP->getBspCombHrdIdxLen(), uiCode, "bsp_comb_hrd_idx" ); vpsVuiBspHrdP->setBspCombHrdIdx( h, i, j, uiCode );2023 READ_UVLC( uiCode, "bsp_comb_sched_idx" ); vpsVuiBspHrdP->setBspCombSchedIdx( h, i, j, uiCode );2024 vpsVuiBspHrdP->checkBspCombHrdAndShedIdx( pcVPS, h, i, j );2025 }2026 }2027 }2028 }2029 #endif2030 1773 } 2031 1774 … … 2060 1803 for( Int k = 0; k < vps->getNumLayersInIdList( currLsIdx ); k++ ) 2061 1804 { 2062 #if H_MV_HLS10_DBP_SIZE2063 1805 if ( vps->getNecessaryLayerFlag( i, k ) && ( vps->getVpsBaseLayerInternalFlag() || ( vps->getLayerSetLayerIdList(vps->olsIdxToLsIdx(i),k) != 0 ) )) 2064 1806 { … … 2072 1814 } 2073 1815 } 2074 #else2075 READ_UVLC( uiCode, "max_vps_dec_pic_buffering_minus1" ); dpbSize->setMaxVpsDecPicBufferingMinus1( i, k, j, uiCode );2076 #endif2077 1816 } 2078 1817 READ_UVLC( uiCode, "max_vps_num_reorder_pics" ); dpbSize->setMaxVpsNumReorderPics( i, j, uiCode ); … … 2085 1824 for( Int k = 0; k < vps->getNumLayersInIdList( vps->olsIdxToLsIdx( i ) ); k++ ) 2086 1825 { 2087 #if H_MV_HLS10_DBP_SIZE2088 1826 if ( vps->getNecessaryLayerFlag(i, k ) ) 2089 1827 { 2090 #endif2091 1828 dpbSize->setMaxVpsDecPicBufferingMinus1( i, k, j, dpbSize->getMaxVpsDecPicBufferingMinus1( i,k, j - 1 ) ); 2092 #if H_MV_HLS10_DBP_SIZE2093 1829 } 2094 #endif2095 1830 } 2096 1831 dpbSize->setMaxVpsNumReorderPics ( i, j, dpbSize->getMaxVpsNumReorderPics ( i, j - 1 ) ); … … 2106 1841 { 2107 1842 UInt uiCode; 2108 #if SEC_VPS_CLEANUP_I00902109 1843 for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ ) 2110 #else2111 for( Int i = 0; i <= pcVPS->getMaxLayersMinus1(); i++ )2112 #endif2113 1844 { 2114 1845 #if H_3D_ARP … … 2119 1850 pcVPS->setSubPULog2Size(i, 0); 2120 1851 #endif 2121 #if !SEC_VPS_CLEANUP_I0090 2122 if ( i != 0 ) 2123 #endif 2124 { 2125 #if MTK_I0099_VPS_EX2 1852 { 1853 #if H_3D_IV_MERGE 2126 1854 READ_FLAG( uiCode, "iv_mv_pred_flag[i]"); pcVPS->setIvMvPredFlag ( i, uiCode == 1 ? true : false ); 2127 #if SEC_HLS_CLEANUP_I01002128 1855 READ_FLAG( uiCode, "iv_mv_scaling_flag[i]"); pcVPS->setIvMvScalingFlag ( i, uiCode == 1 ? true : false ); 2129 1856 #endif 2130 #endif2131 1857 if( !( pcVPS->getDepthId( i ) == 1 ) ) 2132 1858 { 2133 1859 #if H_3D_IV_MERGE 2134 #if !MTK_I0099_VPS_EX22135 READ_FLAG( uiCode, "iv_mv_pred_flag[i]"); pcVPS->setIvMvPredFlag ( i, uiCode == 1 ? true : false );2136 #endif2137 1860 if( !pcVPS->getNumDirectRefLayers(i) ) 2138 1861 { … … 2166 1889 else 2167 1890 { 2168 #if !MTK_I0099_VPS_EX22169 #if H_3D_IV_MERGE2170 if(i!=1)2171 {2172 READ_FLAG( uiCode, "iv_mv_pred_flag[i]"); pcVPS->setIvMvPredFlag ( i, uiCode == 1 ? true : false );2173 if( !pcVPS->getNumDirectRefLayers(i) )2174 {2175 assert( !uiCode );2176 }2177 }2178 #endif2179 #if H_3D_SPIVMP2180 if (i!=1)2181 {2182 READ_UVLC (uiCode, "log2_sub_PU_size_minus3[i]"); pcVPS->setSubPULog2Size(i, uiCode+3);2183 }2184 #endif2185 #endif2186 1891 #if H_3D_IV_MERGE 2187 1892 READ_FLAG( uiCode, "mpi_flag[i]" ); pcVPS->setMPIFlag( i, uiCode == 1 ? true : false ); 2188 #endif2189 #if MTK_I0099_VPS_EX22190 1893 READ_UVLC (uiCode, "log2_mpi_sub_PU_size_minus3[i]"); pcVPS->setSubPUMPILog2Size(i, uiCode+3); 2191 1894 #endif 2192 1895 READ_FLAG( uiCode, "vps_depth_modes_flag[i]" ); pcVPS->setVpsDepthModesFlag( i, uiCode == 1 ? true : false ); 2193 #if SEPARATE_FLAG_I00851896 #if H_3D 2194 1897 READ_FLAG( uiCode, "ivp_flag[i]" ); pcVPS->setIVPFlag( i, uiCode == 1 ? true : false ); 2195 1898 #endif 2196 #if MTK_I0099_VPS_EX21899 #if H_3D_QTLPC 2197 1900 READ_FLAG( uiCode, "lim_qt_pred_flag[i]"); pcVPS->setLimQtPredFlag ( i, uiCode == 1 ? true : false ); 2198 1901 #endif … … 2209 1912 2210 1913 READ_UVLC( uiCamParPrecision, "cp_precision" ); 2211 #if SEC_VPS_CLEANUP_I00902212 1914 for (UInt viewIndex=1; viewIndex<pcVPS->getNumViews(); viewIndex++) 2213 #else2214 for (UInt viewIndex=0; viewIndex<pcVPS->getNumViews(); viewIndex++)2215 #endif2216 1915 { 2217 1916 pcVPS->setCamParPresent ( viewIndex, false ); … … 2235 1934 } 2236 1935 } 2237 #if !MTK_I0099_VPS_EX22238 READ_UVLC (uiCode, "log2_sub_PU_MPI_size_minus3"); pcVPS->setSubPUMPILog2Size( uiCode + 3 );2239 #endif2240 #if !SEC_HLS_CLEANUP_I01002241 READ_FLAG( uiCode, "iv_mv_scaling_flag"); pcVPS->setIvMvScalingFlag( uiCode == 1 ? true : false );2242 #endif2243 1936 } 2244 1937 #endif … … 2288 1981 sps->inferScalingList( parameterSetManager->getActiveSPS( sps->getSpsScalingListRefLayerId() ) ); 2289 1982 sps->inferSpsMaxDecPicBufferingMinus1( vps, targetOlsIdx, rpcSlice->getLayerId(), false ); 2290 #if !H_MV_HLS10_ADD_LAYERSETS2291 vps->inferDbpSizeLayerSetZero( sps, false );2292 #endif2293 1983 2294 1984 if ( sps->getVuiParametersPresentFlag() ) … … 2358 2048 esb++; 2359 2049 READ_FLAG( uiCode, "discardable_flag" ); rpcSlice->setDiscardableFlag( uiCode == 1 ); 2360 #if NON_REF_NAL_TYPE_DISCARDABLE2361 2050 if ( uiCode == 1 ) 2362 2051 { … … 2367 2056 rpcSlice->getNalUnitType() != NAL_UNIT_CODED_SLICE_RASL_R); 2368 2057 } 2369 #endif2370 2058 } 2371 2059 … … 2515 2203 rps->checkMaxNumPics( 2516 2204 vps->getVpsExtensionFlag(), 2517 #if H_MV_HLS10_MAXNUMPICS2518 2205 MAX_INT, // To be replaced by MaxDbpSize 2519 #else2520 vps->getMaxNumPics( rpcSlice->getLayerId() ),2521 #endif2522 2206 rpcSlice->getLayerId(), 2523 2207 sps->getMaxDecPicBuffering( sps->getSpsMaxSubLayersMinus1() ) - 1 ); … … 2632 2316 rps->checkMaxNumPics( 2633 2317 vps->getVpsExtensionFlag(), 2634 #if H_MV_HLS10_MAXNUMPICS2635 2318 MAX_INT, // To be replaced by MaxDbpsize 2636 #else2637 vps->getMaxNumPics( rpcSlice->getLayerId() ),2638 #endif2639 2319 rpcSlice->getLayerId(), 2640 2320 sps->getMaxDecPicBuffering( sps->getSpsMaxSubLayersMinus1() ) - 1 ); … … 2655 2335 if (rpcSlice->getSPS()->getTMVPFlagsPresent()) 2656 2336 { 2657 #if I0044_SLICE_TMVP2337 #if H_MV 2658 2338 READ_FLAG( uiCode, "slice_temporal_mvp_enabled_flag" ); 2659 2339 #else … … 2865 2545 } 2866 2546 #if H_3D_IC 2867 #if SEC_HLS_CLEANUP_I01002868 2547 else if( rpcSlice->getViewIndex() && ( rpcSlice->getSliceType() == P_SLICE || rpcSlice->getSliceType() == B_SLICE ) && !rpcSlice->getIsDepth() && vps->getNumDirectRefLayers( layerId ) > 0 ) 2869 #else2870 else if( rpcSlice->getViewIndex() && ( rpcSlice->getSliceType() == P_SLICE || rpcSlice->getSliceType() == B_SLICE ) && !rpcSlice->getIsDepth())2871 #endif2872 2548 { 2873 2549 UInt uiCodeTmp = 0; … … 2883 2559 } 2884 2560 #endif 2885 #if MTK_SINGLE_DEPTH_MODE_I00952561 #if H_3D_SINGLE_DEPTH 2886 2562 if(rpcSlice->getIsDepth()) 2887 2563 { … … 3009 2685 3010 2686 #if H_3D 3011 #if LGE_FCO_I01162687 #if H_3D_FCO 3012 2688 if( rpcSlice->getVPS()->hasCamParInSliceHeader( rpcSlice->getViewIndex() ) && rpcSlice->getIsDepth() ) 3013 2689 #else … … 3090 2766 } 3091 2767 assert( ( m_pcBitstream->getNumBitsRead() - posFollSliceSegHeaderExtLen ) == rpcSlice->getSliceSegmentHeaderExtensionLength() * 8 ); 2768 } 3092 2769 #else 3093 2770 READ_UVLC( uiCode, "slice_header_extension_length" ); … … 3097 2774 READ_CODE(8,ignore,"slice_header_extension_data_byte"); 3098 2775 } 3099 #endif 3100 } 3101 #if INFERENCE_POC_MSB_VAL_PRESENT 3102 else 3103 { 3104 rpcSlice->setSliceSegmentHeaderExtensionLength( 0 ); 3105 rpcSlice->setPocMsbValPresentFlag( false ); 3106 } 3107 #endif 3108 3109 2776 } 2777 #endif 3110 2778 m_pcBitstream->readByteAlignment(); 3111 2779 … … 3198 2866 READ_FLAG( uiCode, "sub_layer_profile_present_flag[i]" ); rpcPTL->setSubLayerProfilePresentFlag(i, uiCode); 3199 2867 #if H_MV 3200 #if !H_MV_HLS10_PTL_INFER_FIX3201 rpcPTL->setSubLayerProfilePresentFlag( i, profilePresentFlag && rpcPTL->getSubLayerProfilePresentFlag(i) );3202 #else3203 2868 // When profilePresentFlag is equal to 0, sub_layer_profile_present_flag[ i ] shall be equal to 0. 3204 2869 assert( profilePresentFlag || !rpcPTL->getSubLayerProfilePresentFlag(i) ); 3205 #endif3206 2870 #else 3207 2871 } … … 3221 2885 for(Int i = 0; i < maxNumSubLayersMinus1; i++) 3222 2886 { 3223 #if H_MV_HLS10_PTL_INFER_FIX3224 2887 #if H_MV 3225 2888 if( rpcPTL->getSubLayerProfilePresentFlag(i) ) 3226 2889 #else 3227 2890 if( profilePresentFlag && rpcPTL->getSubLayerProfilePresentFlag(i) ) 3228 #endif3229 #else3230 if( profilePresentFlag && rpcPTL->getSubLayerProfilePresentFlag(i) )3231 2891 #endif 3232 2892 { … … 3262 2922 ptl->setFrameOnlyConstraintFlag(uiCode ? true : false); 3263 2923 3264 #if H_MV_HLS10_PTL 3265 #if H_MV_HLS10_PTL_INFER_FIX 2924 #if H_MV 3266 2925 if( ptl->getV2ConstraintsPresentFlag() ) 3267 #else3268 if( ptl->getProfileIdc( ) == 4 || ptl->getProfileCompatibilityFlag( 4 ) ||3269 ptl->getProfileIdc( ) == 5 || ptl->getProfileCompatibilityFlag( 5 ) ||3270 ptl->getProfileIdc( ) == 6 || ptl->getProfileCompatibilityFlag( 6 ) ||3271 ptl->getProfileIdc( ) == 7 || ptl->getProfileCompatibilityFlag( 7 ) )3272 #endif3273 2926 { 3274 2927 READ_FLAG( uiCode, "max_12bit_constraint_flag" ); ptl->setMax12bitConstraintFlag ( uiCode == 1 ); … … 3291 2944 READ_CODE(11, uiCode, "XXX_reserved_zero_43bits[32..42]"); 3292 2945 } 3293 #if H_MV_HLS10_PTL_INFER_FIX3294 2946 if( ptl->getInbldPresentFlag() ) 3295 #else3296 if( ( ptl->getProfileIdc() >= 1 && ptl->getProfileIdc() <= 5 ) ||3297 ptl->getProfileCompatibilityFlag( 1 ) || ptl->getProfileCompatibilityFlag( 2 ) ||3298 ptl->getProfileCompatibilityFlag( 3 ) || ptl->getProfileCompatibilityFlag( 4 ) ||3299 ptl->getProfileCompatibilityFlag( 5 ) )3300 #endif3301 2947 { 3302 2948 READ_FLAG( uiCode, "inbld_flag" ); ptl->setInbldFlag( uiCode == 1 ); … … 3331 2977 assert(0); 3332 2978 } 3333 #if MTK_SINGLE_DEPTH_MODE_I00952979 #if H_3D_SINGLE_DEPTH 3334 2980 Void TDecCavlc::parseSingleDepthMode( TComDataCU* /*pcCU*/, UInt /*uiAbsPartIdx*/, UInt /*uiDepth*/ ) 3335 2981 { -
trunk/source/Lib/TLibDecoder/TDecCAVLC.h
r1066 r1084 97 97 #endif 98 98 99 #if H_MV_HLS10_PPS100 99 #if H_MV 101 100 Void parsePPSMultilayerExtension( TComPPS* pcPPS ); 102 #endif103 101 #endif 104 102 … … 126 124 127 125 Void parseSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 128 #if MTK_SINGLE_DEPTH_MODE_I0095126 #if H_3D_SINGLE_DEPTH 129 127 Void parseSingleDepthMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 130 128 #endif -
trunk/source/Lib/TLibDecoder/TDecCu.cpp
r1066 r1084 420 420 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 421 421 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 422 #if !FIX_TICKET_79423 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];424 #endif425 422 #if H_3D_SPIVMP 426 423 Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM]; … … 434 431 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 435 432 m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours 436 #if !FIX_TICKET_79437 , inheritedVSPDisInfo438 #endif439 433 #if H_3D_SPIVMP 440 434 , pcMvFieldSP, puhInterDirSP … … 456 450 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 457 451 #endif 458 #endif459 #if H_3D_VSP && !FIX_TICKET_79460 if(vspFlag[uiMergeIndex])461 {462 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiAbsPartIdx, 0, uiDepth);463 }464 452 #endif 465 453 pcCU->setInterDirSubParts( uhInterDirNeighbours[uiMergeIndex], uiAbsPartIdx, 0, uiDepth ); … … 546 534 return; 547 535 } 548 #if MTK_SINGLE_DEPTH_MODE_I0095536 #if H_3D_SINGLE_DEPTH 549 537 m_pcEntropyDecoder->decodeSingleDepthMode( pcCU, uiAbsPartIdx, uiDepth ); 550 538 if(!pcCU->getSingleDepthFlag(uiAbsPartIdx)) … … 580 568 m_pcEntropyDecoder->decodeCoeff( pcCU, uiAbsPartIdx, uiDepth, uiCurrWidth, uiCurrHeight, bCodeDQP ); 581 569 setdQPFlag( bCodeDQP ); 582 #if MTK_SINGLE_DEPTH_MODE_I0095570 #if H_3D_SINGLE_DEPTH 583 571 } 584 572 #endif … … 682 670 break; 683 671 case MODE_INTRA: 684 #if MTK_SINGLE_DEPTH_MODE_I0095672 #if H_3D_SINGLE_DEPTH 685 673 if( m_ppcCU[uiDepth]->getSingleDepthFlag(0) ) 686 674 xReconIntraSingleDepth( m_ppcCU[uiDepth], 0, uiDepth ); … … 730 718 } 731 719 } 732 #if MTK_SINGLE_DEPTH_MODE_I0095720 #if H_3D_SINGLE_DEPTH 733 721 Void TDecCu::xReconIntraSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 734 722 { … … 749 737 Pel DepthNeighbours[5]; 750 738 Int index =0; 751 for( Int i = 0; (i < 5) && (index< MTK_SINGLE_DEPTH_MODE_CANDIDATE_LIST_SIZE) ; i++ )739 for( Int i = 0; (i < 5) && (index<SINGLE_DEPTH_MODE_CAND_LIST_SIZE) ; i++ ) 752 740 { 753 741 if(!pcCU->getNeighDepth (0, uiAbsPartIdx, &testDepth, i)) … … 859 847 // get collocated depth block 860 848 UInt uiDepthStride = 0; 861 #if LGE_FCO_I0116849 #if H_3D_FCO 862 850 Pel* pDepthPels = pcCU->getVirtualDepthBlock(pcCU->getZorderIdxInCU(), pcCU->getWidth(0), pcCU->getHeight(0), uiDepthStride); 863 851 #else … … 932 920 933 921 // reconstruct final prediction signal by combining both segments 934 #if SHARP_DBBP_SIMPLE_FLTER_I0109935 922 m_pcPrediction->combineSegmentsWithMask(apSegPredYuv, m_ppcYuvReco[uiDepth], pMask, pcCU->getWidth(0), pcCU->getHeight(0), 0, ePartSize); 936 #else 937 m_pcPrediction->combineSegmentsWithMask(apSegPredYuv, m_ppcYuvReco[uiDepth], pMask, pcCU->getWidth(0), pcCU->getHeight(0)); 938 #endif 939 923 940 924 // inter recon 941 925 xDecodeInterTexture( pcCU, 0, uiDepth ); … … 1311 1295 Int uiTabIdx = pcCU->getDmmWedgeTabIdx(DMM1_IDX, uiAbsPartIdx); 1312 1296 1313 #if SHARP_DMM1_I01101314 1297 WedgeList* pacWedgeList = pcCU->isDMM1UpscaleMode(uiWidth) ? &g_dmmWedgeLists[(g_aucConvertToBit[pcCU->getDMM1BasePatternWidth(uiWidth)])] : &g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])]; 1315 #else1316 WedgeList* pacWedgeList = &g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])];1317 #endif1318 1298 TComWedgelet* pcWedgelet = &(pacWedgeList->at( uiTabIdx )); 1319 1299 1320 1300 uiNumSegments = 2; 1321 1301 1322 #if SHARP_DMM1_I01101323 1302 pbMask = pcCU->isDMM1UpscaleMode( uiWidth ) ? pcWedgelet->getScaledPattern(uiWidth) : pcWedgelet->getPattern(); 1324 1303 uiMaskStride = pcCU->isDMM1UpscaleMode( uiWidth ) ? uiWidth : pcWedgelet->getStride(); 1325 #else1326 pbMask = pcWedgelet->getPattern();1327 uiMaskStride = pcWedgelet->getStride();1328 #endif1329 1304 } 1330 1305 if( getDimType( uiLumaPredMode ) == DMM4_IDX ) -
trunk/source/Lib/TLibDecoder/TDecCu.h
r1039 r1084 123 123 Void setdQPFlag ( Bool b ) { m_bDecodeDQP = b; } 124 124 Void xFillPCMBuffer (TComDataCU* pCU, UInt depth); 125 #if MTK_SINGLE_DEPTH_MODE_I0095125 #if H_3D_SINGLE_DEPTH 126 126 Void xReconIntraSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 127 127 #endif -
trunk/source/Lib/TLibDecoder/TDecEntropy.cpp
r1039 r1084 52 52 m_pcEntropyDecoderIf->parseSkipFlag( pcCU, uiAbsPartIdx, uiDepth ); 53 53 } 54 #if MTK_SINGLE_DEPTH_MODE_I009554 #if H_3D_SINGLE_DEPTH 55 55 Void TDecEntropy::decodeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 56 56 { … … 152 152 153 153 #if H_3D_DBBP 154 155 #if SEC_DBBP_EXPLICIT_SIG_I0077156 #if SEC_DBBP_DISALLOW_8x8_I0078157 154 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 ) 158 #else159 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) )160 #endif161 #else162 #if SEC_DBBP_DISALLOW_8x8_I0078163 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && pcCU->getWidth(uiAbsPartIdx) > 8 )164 #else165 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) )166 #endif167 #endif168 155 { 169 156 decodeDBBPFlag(pcCU, uiAbsPartIdx, uiDepth); 170 #if !SEC_DBBP_EXPLICIT_SIG_I0077171 if( pcCU->getDBBPFlag(uiAbsPartIdx) )172 {173 174 // get collocated depth block175 UInt uiDepthStride = 0;176 Pel* pDepthPels = NULL;177 pDepthPels = pcCU->getVirtualDepthBlock(uiAbsPartIdx, pcCU->getWidth(uiAbsPartIdx), pcCU->getHeight(uiAbsPartIdx), uiDepthStride);178 179 AOF( pDepthPels != NULL );180 AOF( uiDepthStride != 0 );181 182 // derive true partitioning for this CU based on depth183 // (needs to be done in parsing process as motion vector predictors are also derived during parsing)184 PartSize eVirtualPartSize = m_pcPrediction->getPartitionSizeFromDepth(pDepthPels, uiDepthStride, pcCU->getWidth(uiAbsPartIdx));185 AOF( eVirtualPartSize != SIZE_NONE );186 187 pcCU->setPartSizeSubParts(eVirtualPartSize, uiAbsPartIdx, uiDepth);188 189 // make sure that DBBP flag is set for both segments190 UInt uiPUOffset = ( g_auiPUOffset[UInt( eVirtualPartSize )] << ( ( pcCU->getSlice()->getSPS()->getMaxCUDepth() - uiDepth ) << 1 ) ) >> 4;191 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx, 0, uiDepth);192 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx+uiPUOffset, 1, uiDepth);193 }194 #endif195 157 } 196 158 #endif … … 311 273 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 312 274 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 313 #if !FIX_TICKET_79314 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];315 #endif316 275 #if H_3D_SPIVMP 317 276 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); … … 320 279 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand); 321 280 pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours 322 #if !FIX_TICKET_79323 , inheritedVSPDisInfo324 #endif325 281 #if H_3D_SPIVMP 326 282 , pcMvFieldSP, puhInterDirSP … … 334 290 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 335 291 336 #if !FIX_TICKET_79337 if(vspFlag[uiMergeIndex])338 {339 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiSubPartIdx, uiPartIdx, uiDepth);340 }341 #endif342 292 #else 343 293 #if H_3D … … 360 310 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 361 311 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 362 #if !FIX_TICKET_79363 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];364 #endif365 312 #if H_3D_SPIVMP 366 313 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); … … 369 316 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 370 317 pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours 371 #if !FIX_TICKET_79372 , inheritedVSPDisInfo373 #endif374 318 #if H_3D_SPIVMP 375 319 , pcMvFieldSP, puhInterDirSP … … 382 326 ,numValidMergeCand ); 383 327 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 384 #if !FIX_TICKET_79385 if(vspFlag[uiMergeIndex])386 {387 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiSubPartIdx, uiPartIdx, uiDepth);388 }389 #endif390 328 #else 391 329 #if H_3D … … 485 423 #endif 486 424 } 487 #if H_3D_VSP && !FIX_TICKET_75488 if ( (pcCU->getInterDir(uiSubPartIdx) == 3) && pcSubCU->isBipredRestriction(uiPartIdx) && (pcCU->getVSPFlag(uiSubPartIdx) == 0))489 #else490 425 if ( (pcCU->getInterDir(uiSubPartIdx) == 3) && pcSubCU->isBipredRestriction(uiPartIdx) ) 491 #endif492 426 { 493 427 pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMv( TComMv(0,0), ePartSize, uiSubPartIdx, uiDepth, uiPartIdx); -
trunk/source/Lib/TLibDecoder/TDecEntropy.h
r1039 r1084 89 89 public: 90 90 virtual Void parseSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 91 #if MTK_SINGLE_DEPTH_MODE_I009591 #if H_3D_SINGLE_DEPTH 92 92 virtual Void parseSingleDepthMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 93 93 #endif … … 132 132 virtual Void updateContextTables( SliceType eSliceType, Int iQp ) = 0; 133 133 134 virtual ~TDecEntropyIf() {} ;134 virtual ~TDecEntropyIf() {} 135 135 }; 136 136 … … 179 179 Void decodeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 180 180 Void decodeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 181 #if MTK_SINGLE_DEPTH_MODE_I0095181 #if H_3D_SINGLE_DEPTH 182 182 Void decodeSingleDepthMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) ; 183 183 #endif -
trunk/source/Lib/TLibDecoder/TDecGop.cpp
r976 r1084 248 248 calcAndPrintHashStatus(*rpcPic->getPicYuvRec(), hash); 249 249 } 250 #if !H_MV 251 #if SETTING_PIC_OUTPUT_MARK 252 rpcPic->setOutputMark(rpcPic->getSlice(0)->getPicOutputFlag() ? true : false); 253 #else 254 rpcPic->setOutputMark(true); 255 #endif 256 rpcPic->setReconMark(true); 257 #endif 250 258 } 251 259 -
trunk/source/Lib/TLibDecoder/TDecSbac.cpp
r1066 r1084 52 52 , m_cCUSplitFlagSCModel ( 1, 1, NUM_SPLIT_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels ) 53 53 , m_cCUSkipFlagSCModel ( 1, 1, NUM_SKIP_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 54 #if MTK_SINGLE_DEPTH_MODE_I009554 #if H_3D_SINGLE_DEPTH 55 55 , m_cCUSingleDepthFlagSCModel ( 1, 1, NUM_SINGLEDEPTH_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 56 56 , m_cSingleDepthValueSCModel ( 1, 1, NUM_SINGLE_DEPTH_VALUE_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) … … 136 136 m_cCUSplitFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SPLIT_FLAG ); 137 137 m_cCUSkipFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SKIP_FLAG ); 138 #if MTK_SINGLE_DEPTH_MODE_I0095138 #if H_3D_SINGLE_DEPTH 139 139 m_cCUSingleDepthFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 140 140 m_cSingleDepthValueSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); … … 207 207 m_cCUSplitFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SPLIT_FLAG ); 208 208 m_cCUSkipFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG ); 209 #if MTK_SINGLE_DEPTH_MODE_I0095209 #if H_3D_SINGLE_DEPTH 210 210 m_cCUSingleDepthFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 211 211 m_cSingleDepthValueSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); … … 432 432 #endif 433 433 434 #if !FIX_TICKET_76 435 #if H_3D_DIM_SDC 436 Void TDecSbac::xParseSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiSegment ) 437 { 438 assert( pcCU->getSlice()->getIsDepth() ); 439 assert( pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2Nx2N ); 440 assert( pcCU->getSDCFlag(uiAbsPartIdx) ); 441 assert( uiSegment < 2 ); 442 443 UInt uiResidual = 0; 444 UInt uiBit = 0; 445 UInt uiAbsIdx = 0; 446 UInt uiSign = 0; 447 Int iIdx = 0; 448 449 #if H_3D_DIM_DLT 450 UInt uiMaxResidualBits = pcCU->getSlice()->getPPS()->getDLT()->getBitsPerDepthValue( pcCU->getSlice()->getLayerIdInVps() ); 451 #else 452 UInt uiMaxResidualBits = g_bitDepthY; 453 #endif 454 assert( uiMaxResidualBits <= g_bitDepthY ); 455 456 m_pcTDecBinIf->decodeBin(uiResidual, m_cSDCResidualFlagSCModel.get( 0, 0, 0 ) ); 457 458 #if H_MV_ENC_DEC_TRAC 459 DTRACE_CU("sdc_residual_flag[i]", uiResidual) 460 #endif 461 462 if (uiResidual) 463 { 464 // decode residual sign bit 465 m_pcTDecBinIf->decodeBinEP(uiSign); 466 #if H_MV_ENC_DEC_TRAC 467 DTRACE_CU("sdc_residual_sign_flag[i]", uiSign) 468 #endif 469 470 // decode residual magnitude 471 // prefix part 472 UInt uiCount = 0; 473 #if H_3D_DIM_DLT 474 UInt uiNumDepthValues = pcCU->getSlice()->getPPS()->getDLT()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ); 475 #else 476 UInt uiNumDepthValues = ((1 << g_bitDepthY)-1); 477 #endif 478 UInt uiPrefixThreshold = ((uiNumDepthValues * 3) >> 2); 479 for ( UInt ui = 0; ui < uiPrefixThreshold; ui++) 480 { 481 m_pcTDecBinIf->decodeBin( uiBit, m_cSDCResidualSCModel.get(0, 0, 0) ); 482 if ( uiBit == 0 ) 483 break; 484 else 485 uiCount++; 486 } 487 // suffix part 488 if ( uiCount == uiPrefixThreshold ) 489 { 490 for ( UInt ui = 0; ui < numBitsForValue(uiNumDepthValues - uiPrefixThreshold); ui++ ) 491 { 492 m_pcTDecBinIf->decodeBinEP( uiBit ); 493 uiAbsIdx |= uiBit << ui; 494 } 495 uiAbsIdx += uiCount; 496 } 497 else 498 { 499 uiAbsIdx = uiCount; 500 } 501 502 #if H_MV_ENC_DEC_TRAC 503 DTRACE_CU("sdc_residual_abs_minus1[i]", uiAbsIdx) 504 #endif 505 506 uiAbsIdx += 1; 507 iIdx =(Int)(uiSign ? -1 : 1)*uiAbsIdx; 508 } 509 510 pcCU->setSDCSegmentDCOffset(iIdx, uiSegment, uiAbsPartIdx); 511 } 512 #endif 513 #endif 434 514 435 #endif 515 436 /** Parse I_PCM information. … … 649 570 #endif 650 571 } 651 #if MTK_SINGLE_DEPTH_MODE_I0095572 #if H_3D_SINGLE_DEPTH 652 573 Void TDecSbac::parseSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 653 574 { … … 671 592 672 593 UInt uiUnaryIdx = 0; 673 UInt uiNumCand = MTK_SINGLE_DEPTH_MODE_CANDIDATE_LIST_SIZE;594 UInt uiNumCand = SINGLE_DEPTH_MODE_CAND_LIST_SIZE; 674 595 if ( uiNumCand > 1 ) 675 596 { … … 781 702 Bool bParseSplitFlag = true; 782 703 783 #if MTK_I0099_VPS_EX2784 704 TComVPS *vps = pcCU->getPic()->getSlice(0)->getVPS(); 785 705 Bool bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId()); 786 #else787 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS();788 #endif789 706 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 790 707 Bool bDepthMapDetect = (pcTexture != NULL); … … 793 710 Bool rapPic = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA); 794 711 795 #if MTK_I0099_VPS_EX2 796 #if LGE_FCO_I0116 712 #if H_3D_FCO 797 713 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag && pcTexture->getReconMark()) 798 714 #else 799 715 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag) 800 #endif801 #else802 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC())803 716 #endif 804 717 { … … 843 756 #if H_3D_QTLPC 844 757 Bool bParsePartSize = true; 845 #if MTK_I0099_VPS_EX2846 758 TComVPS *vps = pcCU->getPic()->getSlice(0)->getVPS(); 847 759 Bool bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId()); 848 #else849 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS();850 #endif851 760 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 852 761 Bool bDepthMapDetect = (pcTexture != NULL); … … 857 766 Bool depthDependent = false; 858 767 UInt uiTexturePart = uiMode; 859 #if MTK_I0099_VPS_EX2 860 #if LGE_FCO_I0116768 769 #if H_3D_FCO 861 770 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag && pcTexture->getReconMark()) 862 771 #else 863 772 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFlag ) 864 #endif865 #else866 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC())867 773 #endif 868 774 { … … 1076 982 { 1077 983 #if H_3D_DIM 1078 #if SEPARATE_FLAG_I00851079 984 if( pcCU->getSlice()->getVpsDepthModesFlag() || pcCU->getSlice()->getIVPFlag() ) 1080 #else1081 if( pcCU->getSlice()->getVpsDepthModesFlag() )1082 #endif1083 985 { 1084 986 parseIntraDepth( pcCU, absPartIdx+partOffset*j, depth ); … … 1222 1124 if( uiIsDimMode ) 1223 1125 { 1224 #if SEPARATE_FLAG_I00851225 1126 if( pcCU->getSlice()->getVpsDepthModesFlag() && pcCU->getSlice()->getIVPFlag() ) 1226 1127 { … … 1228 1129 if( !uiSymbol ) 1229 1130 { 1230 #if HS_DMM_SIGNALLING_I01201231 1131 pcCU->setLumaIntraDirSubParts( DIM_OFFSET, absPartIdx, depth ); 1232 #else1233 pcCU->setLumaIntraDirSubParts( ( 2 * DMM1_IDX + DIM_OFFSET ), absPartIdx, depth );1234 #endif1235 1132 } 1236 1133 else 1237 1134 { 1238 #if HS_DMM_SIGNALLING_I01201239 1135 pcCU->setLumaIntraDirSubParts( ( 1+ DIM_OFFSET ), absPartIdx, depth ); 1240 #else1241 pcCU->setLumaIntraDirSubParts( ( 2 * DMM4_IDX + DIM_OFFSET ), absPartIdx, depth );1242 #endif1243 1136 } 1244 1137 } 1245 1138 else if ( pcCU->getSlice()->getVpsDepthModesFlag() ) 1246 1139 { 1247 #if HS_DMM_SIGNALLING_I01201248 1140 pcCU->setLumaIntraDirSubParts( DIM_OFFSET, absPartIdx, depth ); 1249 #else1250 pcCU->setLumaIntraDirSubParts( ( 2 * DMM1_IDX + DIM_OFFSET ), absPartIdx, depth );1251 #endif1252 1141 } 1253 1142 else if( pcCU->getSlice()->getIVPFlag() ) 1254 1143 { 1255 #if HS_DMM_SIGNALLING_I01201256 1144 pcCU->setLumaIntraDirSubParts( ( 1+ DIM_OFFSET ), absPartIdx, depth ); 1257 #else 1258 pcCU->setLumaIntraDirSubParts( ( 2 * DMM4_IDX + DIM_OFFSET ), absPartIdx, depth ); 1259 #endif 1260 } 1261 #else 1262 m_pcTDecBinIf->decodeBin( uiSymbol, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) ); 1263 if( !uiSymbol ) 1264 { 1265 #if HS_DMM_SIGNALLING_I0120 1266 pcCU->setLumaIntraDirSubParts( DIM_OFFSET, absPartIdx, depth ); 1267 #else 1268 pcCU->setLumaIntraDirSubParts( ( 2 * DMM1_IDX + DIM_OFFSET ), absPartIdx, depth ); 1269 #endif 1270 } 1271 else 1272 { 1273 #if HS_DMM_SIGNALLING_I0120 1274 pcCU->setLumaIntraDirSubParts( ( 1+ DIM_OFFSET ), absPartIdx, depth ); 1275 #else 1276 pcCU->setLumaIntraDirSubParts( ( 2 * DMM4_IDX + DIM_OFFSET ), absPartIdx, depth ); 1277 #endif 1278 } 1279 #endif 1145 } 1280 1146 } 1281 1147 } … … 2190 2056 } 2191 2057 2192 #if HS_DMM_SIGNALLING_I01202193 2058 UInt symbol = 1; 2194 2059 UInt uiNumSegments = isDimMode( pcCU->getLumaIntraDir( absPartIdx ) ) ? 2 : 1; 2195 #else 2196 UInt symbol = 0; 2197 UInt uiNumSegments = 0; 2198 #endif 2199 2200 #if HS_DMM_SIGNALLING_I0120 2060 2201 2061 if( pcCU->isIntra( absPartIdx ) && pcCU->getSDCFlag( absPartIdx )) 2202 2062 { 2203 #else 2204 if( pcCU->isIntra( absPartIdx ) ) 2205 { 2206 UInt dir = pcCU->getLumaIntraDir( absPartIdx ); 2207 uiNumSegments = isDimMode( dir ) ? 2 : 1; 2208 #endif 2063 2209 2064 m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get( 0, 0, 0 ) ); 2210 #if !HS_DMM_SIGNALLING_I01202211 if( pcCU->getSDCFlag( absPartIdx ) )2212 {2213 #endif2214 2065 assert( pcCU->getPartitionSize( absPartIdx ) == SIZE_2Nx2N ); 2215 2066 pcCU->setTrIdxSubParts( 0, absPartIdx, depth ); 2216 2067 pcCU->setCbfSubParts( 1, 1, 1, absPartIdx, depth ); 2217 2068 } 2218 #if !HS_DMM_SIGNALLING_I01202219 else2220 {2221 pcCU->setLumaIntraDirSubParts( dir + symbol, absPartIdx, depth );2222 }2223 }2224 else2225 {2226 uiNumSegments = 1;2227 symbol = 1;2228 }2229 #endif2230 2231 2069 2232 2070 for( UInt segment = 0; segment < uiNumSegments; segment++ ) … … 2289 2127 m_pcTDecBinIf->decodeBin( uiSymbol, m_cDBBPFlagSCModel.get( 0, 0, 0 ) ); 2290 2128 2291 #if SEC_DBBP_EXPLICIT_SIG_I00772292 2129 PartSize ePartSize = pcCU->getPartitionSize( uiAbsPartIdx ); 2293 2130 AOF( ePartSize == SIZE_2NxN || ePartSize == SIZE_Nx2N ); … … 2295 2132 pcCU->setDBBPFlagSubParts(uiSymbol, uiAbsPartIdx, 0, uiDepth); 2296 2133 pcCU->setDBBPFlagSubParts(uiSymbol, uiAbsPartIdx+uiPUOffset, 1, uiDepth); 2297 #else2298 if( uiSymbol )2299 {2300 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx, 0, uiDepth);2301 UInt uiCurrPartNumQ = (pcCU->getPic()->getNumPartInCU() >> (2 * uiDepth)) >> 2;2302 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx + 2*uiCurrPartNumQ, 1, uiDepth);2303 }2304 #endif2305 2134 } 2306 2135 #endif -
trunk/source/Lib/TLibDecoder/TDecSbac.h
r1039 r1084 129 129 130 130 Void parseSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 131 #if MTK_SINGLE_DEPTH_MODE_I0095131 #if H_3D_SINGLE_DEPTH 132 132 Void parseSingleDepthMode ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 133 133 #endif … … 182 182 ContextModel3DBuffer m_cCUSplitFlagSCModel; 183 183 ContextModel3DBuffer m_cCUSkipFlagSCModel; 184 #if MTK_SINGLE_DEPTH_MODE_I0095184 #if H_3D_SINGLE_DEPTH 185 185 ContextModel3DBuffer m_cCUSingleDepthFlagSCModel; 186 186 ContextModel3DBuffer m_cSingleDepthValueSCModel; -
trunk/source/Lib/TLibDecoder/TDecTop.cpp
r1066 r1084 229 229 } 230 230 231 #if ! LGE_FCO_I0116231 #if !H_3D_FCO 232 232 if ( pcSlice->getIsDepth()) 233 233 { … … 669 669 #if H_MV 670 670 sps->inferSpsMaxDecPicBufferingMinus1( vps, m_targetOptLayerSetIdx, getLayerId(), false ); 671 #if !H_MV_HLS10_ADD_LAYERSETS672 vps->inferDbpSizeLayerSetZero( sps, false );673 #endif674 671 // When the value of vps_num_rep_formats_minus1 in the active VPS is equal to 0 675 672 if ( vps->getVpsNumRepFormatsMinus1() == 0 ) … … 679 676 } 680 677 sps->checkRpsMaxNumPics( vps, getLayerId() ); 681 #if H_MV_HLS10_MULTILAYERSPS682 678 683 679 if( sps->getLayerId() != 0 ) … … 686 682 } 687 683 688 #if H_MV_HLS10_MULTILAYERSPS689 684 // It is a requirement of bitstream conformance that, when the SPS is referred to by 690 685 // any current picture that belongs to an independent non-base layer, the value of … … 695 690 assert( sps->getMultiLayerExtSpsFlag() == 0 ); 696 691 } 697 #endif698 692 699 693 if( sps->getMultiLayerExtSpsFlag() ) … … 701 695 sps->setTemporalIdNestingFlag( (sps->getMaxTLayers() > 1) ? vps->getTemporalNestingFlag() : true ); 702 696 } 703 #else704 if( m_layerId > 0 )705 {706 sps->setTemporalIdNestingFlag( (sps->getMaxTLayers() > 1) ? vps->getTemporalNestingFlag() : true );707 }708 #endif709 697 #endif 710 698 … … 730 718 #if H_MV 731 719 m_apcSlicePilot->setVPS(vps); 732 #if H_MV_HLS10_REF_PRED_LAYERS733 720 // The nuh_layer_id value of the NAL unit containing the PPS that is activated for a layer layerA with nuh_layer_id equal to nuhLayerIdA shall be equal to 0, or nuhLayerIdA, or the nuh_layer_id of a direct or indirect reference layer of layerA. 734 721 assert( pps->getLayerId() == m_layerId || pps->getLayerId( ) == 0 || vps->getDependencyFlag( m_layerId, pps->getLayerId() ) ); 735 722 // The nuh_layer_id value of the NAL unit containing the SPS that is activated for a layer layerA with nuh_layer_id equal to nuhLayerIdA shall be equal to 0, or nuhLayerIdA, or the nuh_layer_id of a direct or indirect reference layer of layerA. 736 723 assert( sps->getLayerId() == m_layerId || sps->getLayerId( ) == 0 || vps->getDependencyFlag( m_layerId, sps->getLayerId() ) ); 737 #else738 // The nuh_layer_id value of the NAL unit containing the PPS that is activated for a layer layerA with nuh_layer_id equal to nuhLayerIdA shall be equal to 0, or nuhLayerIdA, or the nuh_layer_id of a direct or indirect reference layer of layerA.739 assert( pps->getLayerId() == m_layerId || pps->getLayerId( ) == 0 || vps->getInDirectDependencyFlag( m_layerId, pps->getLayerId() ) );740 // The nuh_layer_id value of the NAL unit containing the SPS that is activated for a layer layerA with nuh_layer_id equal to nuhLayerIdA shall be equal to 0, or nuhLayerIdA, or the nuh_layer_id of a direct or indirect reference layer of layerA.741 assert( sps->getLayerId() == m_layerId || sps->getLayerId( ) == 0 || vps->getInDirectDependencyFlag( m_layerId, sps->getLayerId() ) );742 #endif743 724 sps->inferRepFormat ( vps , m_layerId ); 744 725 sps->inferScalingList( m_parameterSetManagerDecoder.getActiveSPS( sps->getSpsScalingListRefLayerId() ) ); … … 746 727 #endif 747 728 pps->setSPS(sps); 748 pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNum ColumnsMinus1() + 1) : 1);729 pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNumTileColumnsMinus1() + 1) : 1); 749 730 pps->setMinCuDQPSize( sps->getMaxCUWidth() >> ( pps->getMaxCuDQPDepth()) ); 750 731 … … 807 788 m_apcSlicePilot->setLayerId( nalu.m_layerId ); 808 789 m_cEntropyDecoder.decodeSliceHeader (m_apcSlicePilot, &m_parameterSetManagerDecoder, m_targetOptLayerSetIdx ); 790 #else 791 m_cEntropyDecoder.decodeSliceHeader (m_apcSlicePilot, &m_parameterSetManagerDecoder); 809 792 #endif 810 793 // set POC for dependent slices in skipped pictures … … 944 927 xResetPocInPicBuffer(); 945 928 } 946 #endif 947 948 #if I0044_SLICE_TMVP 949 if ( m_apcSlicePilot->getTLayer() == 0 && m_apcSlicePilot->getEnableTMVPFlag() == 0 ) 929 930 if ( m_apcSlicePilot->getTLayer() == 0 && m_apcSlicePilot->getEnableTMVPFlag() == 0 ) 950 931 { 951 932 //update all pics in the DPB such that they cannot be used for TMPV ref … … 1043 1024 Bool bNextSlice = pcSlice->isNextSlice(); 1044 1025 1045 UInt uiCummulativeTileWidth; 1046 UInt uiCummulativeTileHeight; 1047 UInt i, j, p; 1048 1049 //set NumColumnsMins1 and NumRowsMinus1 1050 pcPic->getPicSym()->setNumColumnsMinus1( pcSlice->getPPS()->getNumColumnsMinus1() ); 1051 pcPic->getPicSym()->setNumRowsMinus1( pcSlice->getPPS()->getNumRowsMinus1() ); 1052 1053 //create the TComTileArray 1054 pcPic->getPicSym()->xCreateTComTileArray(); 1055 1056 if( pcSlice->getPPS()->getUniformSpacingFlag() ) 1057 { 1058 //set the width for each tile 1059 for(j=0; j < pcPic->getPicSym()->getNumRowsMinus1()+1; j++) 1060 { 1061 for(p=0; p < pcPic->getPicSym()->getNumColumnsMinus1()+1; p++) 1062 { 1063 pcPic->getPicSym()->getTComTile( j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p )-> 1064 setTileWidth( (p+1)*pcPic->getPicSym()->getFrameWidthInCU()/(pcPic->getPicSym()->getNumColumnsMinus1()+1) 1065 - (p*pcPic->getPicSym()->getFrameWidthInCU())/(pcPic->getPicSym()->getNumColumnsMinus1()+1) ); 1066 } 1067 } 1068 1069 //set the height for each tile 1070 for(j=0; j < pcPic->getPicSym()->getNumColumnsMinus1()+1; j++) 1071 { 1072 for(p=0; p < pcPic->getPicSym()->getNumRowsMinus1()+1; p++) 1073 { 1074 pcPic->getPicSym()->getTComTile( p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j )-> 1075 setTileHeight( (p+1)*pcPic->getPicSym()->getFrameHeightInCU()/(pcPic->getPicSym()->getNumRowsMinus1()+1) 1076 - (p*pcPic->getPicSym()->getFrameHeightInCU())/(pcPic->getPicSym()->getNumRowsMinus1()+1) ); 1077 } 1078 } 1079 } 1080 else 1081 { 1082 //set the width for each tile 1083 for(j=0; j < pcSlice->getPPS()->getNumRowsMinus1()+1; j++) 1084 { 1085 uiCummulativeTileWidth = 0; 1086 for(i=0; i < pcSlice->getPPS()->getNumColumnsMinus1(); i++) 1087 { 1088 pcPic->getPicSym()->getTComTile(j * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + i)->setTileWidth( pcSlice->getPPS()->getColumnWidth(i) ); 1089 uiCummulativeTileWidth += pcSlice->getPPS()->getColumnWidth(i); 1090 } 1091 pcPic->getPicSym()->getTComTile(j * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + i)->setTileWidth( pcPic->getPicSym()->getFrameWidthInCU()-uiCummulativeTileWidth ); 1092 } 1093 1094 //set the height for each tile 1095 for(j=0; j < pcSlice->getPPS()->getNumColumnsMinus1()+1; j++) 1096 { 1097 uiCummulativeTileHeight = 0; 1098 for(i=0; i < pcSlice->getPPS()->getNumRowsMinus1(); i++) 1099 { 1100 pcPic->getPicSym()->getTComTile(i * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + j)->setTileHeight( pcSlice->getPPS()->getRowHeight(i) ); 1101 uiCummulativeTileHeight += pcSlice->getPPS()->getRowHeight(i); 1102 } 1103 pcPic->getPicSym()->getTComTile(i * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + j)->setTileHeight( pcPic->getPicSym()->getFrameHeightInCU()-uiCummulativeTileHeight ); 1104 } 1105 } 1106 1107 pcPic->getPicSym()->xInitTiles(); 1026 UInt i; 1027 pcPic->getPicSym()->initTiles(pcSlice->getPPS()); 1108 1028 1109 1029 //generate the Coding Order Map and Inverse Coding Order Map … … 1192 1112 #endif 1193 1113 #endif 1194 // For generalized B 1195 #if I0044_SLICE_TMVP 1114 #if H_MV 1196 1115 if( m_layerId > 0 && !pcSlice->isIntra() && pcSlice->getEnableTMVPFlag() ) 1197 1116 { … … 1272 1191 1273 1192 #if H_3D_IV_MERGE 1274 #if LGE_FCO_I01161193 #if H_3D_FCO 1275 1194 if( !pcSlice->getIsDepth() && m_pcCamParsCollector ) 1276 1195 #else … … 1727 1646 for (Int i = 0; i < vps->getNumDirectRefLayers( getLayerId() ); i++ ) 1728 1647 { 1729 #if H_MV_HLS10_REF_PRED_LAYERS1730 1648 Int refLayerId = vps->getIdDirectRefLayer( m_layerId, i ); 1731 #else1732 Int refLayerId = vps->getRefLayerId( m_layerId, i );1733 #endif1734 1649 allRefLayersInitilizedFlag = allRefLayersInitilizedFlag && m_layerInitilizedFlag[ refLayerId ]; 1735 1650 } -
trunk/source/Lib/TLibEncoder/TEncCavlc.cpp
r1066 r1084 49 49 { 50 50 #if H_MV_ENC_DEC_TRAC 51 #if H_MV_HLS10_GEN_FIX52 51 fprintf( g_hTrace, "=========== Sequence Parameter Set LayerId: %d ===========\n", pSPS->getLayerId() ); 53 52 #else 54 fprintf( g_hTrace, "=========== Sequence Parameter Set ===========\n" );55 #endif56 #else57 53 fprintf( g_hTrace, "=========== Sequence Parameter Set ID: %d ===========\n", pSPS->getSPSId() ); 58 54 #endif … … 62 58 { 63 59 #if H_MV_ENC_DEC_TRAC 64 #if H_MV_HLS10_GEN_FIX65 60 fprintf( g_hTrace, "=========== Picture Parameter Set LayerId: %d ===========\n", pPPS->getLayerId() ); 66 #else67 fprintf( g_hTrace, "=========== Picture Parameter Set ===========\n" );68 #endif69 61 #else 70 62 fprintf( g_hTrace, "=========== Picture Parameter Set ID: %d ===========\n", pPPS->getPPSId() ); … … 218 210 if( pcPPS->getTilesEnabledFlag() ) 219 211 { 220 WRITE_UVLC( pcPPS->getNum ColumnsMinus1(), "num_tile_columns_minus1" );221 WRITE_UVLC( pcPPS->get NumRowsMinus1(), "num_tile_rows_minus1" );222 WRITE_FLAG( pcPPS->get UniformSpacingFlag(), "uniform_spacing_flag" );223 if( pcPPS->getUniformSpacingFlag() == 0)224 { 225 for(UInt i=0; i<pcPPS->getNum ColumnsMinus1(); i++)226 { 227 WRITE_UVLC( pcPPS->get ColumnWidth(i)-1, "column_width_minus1" );228 } 229 for(UInt i=0; i<pcPPS->get NumRowsMinus1(); i++)230 { 231 WRITE_UVLC( pcPPS->get RowHeight(i)-1, "row_height_minus1" );232 } 233 } 234 if(pcPPS->getNum ColumnsMinus1() !=0 || pcPPS->getNumRowsMinus1() !=0)212 WRITE_UVLC( pcPPS->getNumTileColumnsMinus1(), "num_tile_columns_minus1" ); 213 WRITE_UVLC( pcPPS->getTileNumRowsMinus1(), "num_tile_rows_minus1" ); 214 WRITE_FLAG( pcPPS->getTileUniformSpacingFlag(), "uniform_spacing_flag" ); 215 if( !pcPPS->getTileUniformSpacingFlag() ) 216 { 217 for(UInt i=0; i<pcPPS->getNumTileColumnsMinus1(); i++) 218 { 219 WRITE_UVLC( pcPPS->getTileColumnWidth(i)-1, "column_width_minus1" ); 220 } 221 for(UInt i=0; i<pcPPS->getTileNumRowsMinus1(); i++) 222 { 223 WRITE_UVLC( pcPPS->getTileRowHeight(i)-1, "row_height_minus1" ); 224 } 225 } 226 if(pcPPS->getNumTileColumnsMinus1() !=0 || pcPPS->getTileNumRowsMinus1() !=0) 235 227 { 236 228 WRITE_FLAG( pcPPS->getLoopFilterAcrossTilesEnabledFlag()?1 : 0, "loop_filter_across_tiles_enabled_flag"); … … 249 241 } 250 242 } 251 #if !H_MV_HLS10_PPS252 #if H_MV253 if ( pcPPS->getLayerId() > 0 )254 {255 WRITE_FLAG( pcPPS->getPpsInferScalingListFlag( ) ? 1 : 0 , "pps_infer_scaling_list_flag" );256 }257 258 if( pcPPS->getPpsInferScalingListFlag( ) )259 {260 WRITE_CODE( pcPPS->getPpsScalingListRefLayerId( ), 6, "pps_scaling_list_ref_layer_id" );261 }262 else263 {264 #endif265 #endif266 243 WRITE_FLAG( pcPPS->getScalingListPresentFlag() ? 1 : 0, "pps_scaling_list_data_present_flag" ); 267 244 if( pcPPS->getScalingListPresentFlag() ) … … 269 246 codeScalingList( m_pcSlice->getScalingList() ); 270 247 } 271 #if !H_MV_HLS10_PPS272 #if H_MV273 }274 #endif275 #endif276 248 #if PPS_FIX_DEPTH 277 249 if( pcPPS->getSPS()->getVPS()->getDepthId(pcPPS->getSPS()->getLayerId()) ) … … 313 285 if ( pcPPS->getPpsMultilayerExtensionFlag() ) 314 286 { 315 #if H_MV_HLS10_PPS316 287 codePPSMultilayerExtension( pcPPS ); 317 #else318 WRITE_FLAG( pcPPS->getPocResetInfoPresentFlag( ) ? 1 : 0 , "poc_reset_info_present_flag" );319 WRITE_FLAG( 0, "pps_extension_reserved_zero_flag" );320 #endif321 288 } 322 289 … … 385 352 } 386 353 387 #if H_3D_DELTA_DLT388 354 if( pcDLT->getInterViewDltPredEnableFlag( i ) ) 389 355 { … … 395 361 pcDLT->getDeltaDLT(i, piRefDLT, uiRefNum, aiIdx2DepthValue_coded, &uiNumDepthValues_coded); 396 362 } 397 #endif398 363 399 364 if ( NULL == (puiDltDiffValues = (UInt *)calloc(uiNumDepthValues_coded, sizeof(UInt))) ) 400 365 { 366 // This should be changed to an assertion. 401 367 exit(-1); 402 368 } … … 477 443 { 478 444 WRITE_CODE(uiNumDepthValues_coded, 8, "num_depth_values_in_dlt[i]"); // num_entry 479 480 #if !H_3D_DELTA_DLT481 if ( pcDLT->getInterViewDltPredEnableFlag( i ) == false ) // Single-view DLT Diff Coding482 #endif483 445 { 484 446 // The condition if( uiNumDepthValues_coded > 0 ) is always true since for Single-view Diff Coding, there is at least one depth value in depth component. … … 566 528 if( defaultDisplayWindow.getWindowEnabledFlag() ) 567 529 { 568 WRITE_UVLC(defaultDisplayWindow.getWindowLeftOffset() ,"def_disp_win_left_offset");569 WRITE_UVLC(defaultDisplayWindow.getWindowRightOffset() ,"def_disp_win_right_offset");570 WRITE_UVLC(defaultDisplayWindow.getWindowTopOffset() ,"def_disp_win_top_offset");571 WRITE_UVLC(defaultDisplayWindow.getWindowBottomOffset() ,"def_disp_win_bottom_offset");530 WRITE_UVLC(defaultDisplayWindow.getWindowLeftOffset() / TComSPS::getWinUnitX(pcSPS->getChromaFormatIdc()), "def_disp_win_left_offset"); 531 WRITE_UVLC(defaultDisplayWindow.getWindowRightOffset() / TComSPS::getWinUnitX(pcSPS->getChromaFormatIdc()), "def_disp_win_right_offset"); 532 WRITE_UVLC(defaultDisplayWindow.getWindowTopOffset() / TComSPS::getWinUnitY(pcSPS->getChromaFormatIdc()), "def_disp_win_top_offset"); 533 WRITE_UVLC(defaultDisplayWindow.getWindowBottomOffset()/ TComSPS::getWinUnitY(pcSPS->getChromaFormatIdc()), "def_disp_win_bottom_offset"); 572 534 } 573 535 TimingInfo *timingInfo = pcVUI->getTimingInfo(); … … 691 653 #endif 692 654 WRITE_CODE( pcSPS->getMaxTLayers() - 1, 3, "sps_max_sub_layers_minus1" ); 693 #if H_MV_HLS10_MULTILAYERSPS694 655 #if H_MV 695 656 } … … 700 661 if ( !pcSPS->getMultiLayerExtSpsFlag() ) 701 662 { 702 #endif703 663 #endif 704 664 … … 710 670 WRITE_UVLC( pcSPS->getSPSId (), "sps_seq_parameter_set_id" ); 711 671 #if H_MV 712 #if H_MV_HLS10_MULTILAYERSPS713 672 if ( pcSPS->getMultiLayerExtSpsFlag() ) 714 #else715 if ( pcSPS->getLayerId() > 0 )716 #endif717 673 { 718 674 WRITE_FLAG( pcSPS->getUpdateRepFormatFlag( ) ? 1 : 0 , "update_rep_format_flag" ); … … 735 691 WRITE_UVLC( pcSPS->getPicWidthInLumaSamples (), "pic_width_in_luma_samples" ); 736 692 WRITE_UVLC( pcSPS->getPicHeightInLumaSamples(), "pic_height_in_luma_samples" ); 737 #if !H_MV_HLS10_MULTILAYERSPS738 #if H_MV739 }740 #endif741 #endif742 693 Window conf = pcSPS->getConformanceWindow(); 743 694 … … 750 701 WRITE_UVLC( conf.getWindowBottomOffset() / TComSPS::getWinUnitY(pcSPS->getChromaFormatIdc() ), "conf_win_bottom_offset" ); 751 702 } 752 #if H_MV_HLS10_MULTILAYERSPS753 703 #if H_MV 754 704 } 755 705 #endif 756 #endif757 706 758 707 #if H_MV 759 #if H_MV_HLS10_MULTILAYERSPS760 708 if ( !pcSPS->getMultiLayerExtSpsFlag() ) 761 #else762 if ( pcSPS->getLayerId() == 0 )763 #endif764 709 { 765 710 #endif … … 771 716 WRITE_UVLC( pcSPS->getBitsForPOC()-4, "log2_max_pic_order_cnt_lsb_minus4" ); 772 717 #if H_MV 773 #if H_MV_HLS10_MULTILAYERSPS774 718 if ( !pcSPS->getMultiLayerExtSpsFlag()) 775 #else776 if ( pcSPS->getLayerId() == 0 )777 #endif778 719 { 779 720 #endif … … 806 747 { 807 748 #if H_MV 808 #if H_MV_HLS10_MULTILAYERSPS809 749 if ( pcSPS->getMultiLayerExtSpsFlag() ) 810 #else811 if ( pcSPS->getLayerId() > 0 )812 #endif813 750 { 814 751 WRITE_FLAG( pcSPS->getSpsInferScalingListFlag( ) ? 1 : 0 , "sps_infer_scaling_list_flag" ); … … 917 854 { 918 855 WRITE_FLAG( pcSPS->getInterViewMvVertConstraintFlag() ? 1 : 0, "inter_view_mv_vert_constraint_flag" ); 919 #if !H_MV_HLS10_PPS 920 WRITE_UVLC( pcSPS->getNumScaledRefLayerOffsets( ), "num_scaled_ref_layer_offsets" ); 921 922 for( Int i = 0; i < pcSPS->getNumScaledRefLayerOffsets( ); i++) 923 { 924 WRITE_CODE( pcSPS->getScaledRefLayerId( i ), 6, "scaled_ref_layer_id" ); 925 926 Int j = pcSPS->getScaledRefLayerId( i ); 927 928 WRITE_SVLC( pcSPS->getScaledRefLayerLeftOffset( j ), "scaled_ref_layer_left_offset" ); 929 WRITE_SVLC( pcSPS->getScaledRefLayerTopOffset( j ), "scaled_ref_layer_top_offset" ); 930 WRITE_SVLC( pcSPS->getScaledRefLayerRightOffset( j ), "scaled_ref_layer_right_offset" ); 931 WRITE_SVLC( pcSPS->getScaledRefLayerBottomOffset( j ), "scaled_ref_layer_bottom_offset" ); 932 WRITE_FLAG( 0, "sps_multilayer_ext_reserved_zero_flag[ j ]" ); 933 } 934 #endif 935 } 936 937 938 #if H_MV_HLS10_PPS 856 } 857 858 939 859 Void TEncCavlc::codePPSMultilayerExtension(TComPPS* pcPPS) 940 860 { … … 944 864 WRITE_UVLC( 0, "num_ref_loc_offsets" ); 945 865 } 946 #endif947 866 948 867 #endif … … 951 870 Void TEncCavlc::codeSPSExtension2( TComSPS* pcSPS, Int viewIndex, Bool depthFlag ) 952 871 { 953 #if H_3D_QTLPC 954 #if !MTK_I0099_VPS_EX2 955 //GT: This has to go to VPS 956 if( depthFlag ) 957 { 958 WRITE_FLAG( pcSPS->getUseQTL() ? 1 : 0, "use_qtl_flag"); 959 WRITE_FLAG( pcSPS->getUsePC() ? 1 : 0, "use_pc_flag"); 960 } 961 #endif 962 #endif 963 } 964 965 872 873 } 966 874 #endif 967 875 … … 974 882 #if H_MV 975 883 WRITE_FLAG( pcVPS->getVpsBaseLayerInternalFlag( ) ? 1 : 0 , "vps_base_layer_internal_flag" ); 976 #if H_MV_HLS10_GEN_VSP_BASE_LAYER_AVAIL977 884 WRITE_FLAG( pcVPS->getVpsBaseLayerAvailableFlag( ) ? 1 : 0 , "vps_base_layer_available_flag" ); 978 #else // H_MV_HLS10_GEN979 WRITE_FLAG( 1 , "vps_reserved_one_bit" );980 #endif // H_MV_HLS10_GEN981 885 #else 982 886 WRITE_CODE( 3, 2, "vps_reserved_three_2bits" ); … … 1008 912 assert( pcVPS->getVpsMaxLayerId() < MAX_VPS_NUH_LAYER_ID_PLUS1 ); 1009 913 WRITE_CODE( pcVPS->getVpsMaxLayerId(), 6, "vps_max_layer_id" ); 1010 #if H_MV_HLS10_GEN_FIX1011 914 WRITE_UVLC( pcVPS->getVpsNumLayerSetsMinus1(), "vps_num_layer_sets_minus1" ); 1012 #else1013 WRITE_UVLC( pcVPS->getVpsNumLayerSetsMinus1(), "vps_max_num_layer_sets_minus1" );1014 #endif1015 915 for( UInt opsIdx = 1; opsIdx <= pcVPS->getVpsNumLayerSetsMinus1(); opsIdx ++ ) 1016 916 { … … 1089 989 Void TEncCavlc::codeVPSExtension( TComVPS *pcVPS ) 1090 990 { 1091 #if H_MV_HLS10_PTL1092 991 if( pcVPS->getMaxLayersMinus1() > 0 && pcVPS->getVpsBaseLayerInternalFlag() ) 1093 992 { 1094 993 codePTL( pcVPS->getPTL( 1 ),0, pcVPS->getMaxSubLayersMinus1() ); 1095 994 } 1096 #endif1097 995 1098 996 WRITE_FLAG( pcVPS->getSplittingFlag() ? 1 : 0, "splitting_flag" ); … … 1167 1065 } 1168 1066 1169 #if H_MV_HLS10_ADD_LAYERSETS1170 1067 if ( pcVPS->getNumIndependentLayers() > 1 ) 1171 1068 { … … 1180 1077 1181 1078 } 1182 #endif1183 1079 1184 1080 … … 1218 1114 WRITE_UVLC( pcVPS->getVpsNumProfileTierLevelMinus1( ), "vps_num_profile_tier_level_minus1" ); 1219 1115 1220 #if H_MV_HLS10_PTL1221 1116 Int offsetVal = ( pcVPS->getMaxLayersMinus1() > 0 && pcVPS->getVpsBaseLayerInternalFlag() ) ? 2 : 1; 1222 1117 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 2 : 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ ) … … 1226 1121 offsetVal++; 1227 1122 } 1228 #else 1229 for( Int i = 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ ) 1230 { 1231 WRITE_FLAG( pcVPS->getVpsProfilePresentFlag( i ) ? 1 : 0, "vps_profile_present_flag[i]" ); 1232 codePTL( pcVPS->getPTL( i ), pcVPS->getVpsProfilePresentFlag( i ), pcVPS->getMaxTLayers() - 1 ); 1233 } 1234 #endif 1235 1236 #if !H_MV_HLS10_ADD_LAYERSETS 1237 if ( pcVPS->getNumIndependentLayers() > 1 ) 1238 { 1239 WRITE_UVLC( pcVPS->getNumAddLayerSets( ), "num_add_layer_sets" ); 1240 } 1241 for (Int i = 0; i < pcVPS->getNumAddLayerSets(); i++) 1242 { 1243 for (Int j = 0; j < pcVPS->getNumIndependentLayers(); j++) 1244 { 1245 WRITE_CODE( pcVPS->getHighestLayerIdxPlus1( i, j ), pcVPS->getHighestLayerIdxPlus1Len( j ) , "highest_layer_idx_plus1" ); 1246 } 1247 } 1248 #endif 1123 1249 1124 1250 1125 if (pcVPS->getNumLayerSets() > 1) … … 1258 1133 1259 1134 1260 #if H_MV_HLS10_PTL_FIX1261 1135 if (pcVPS->getVpsBaseLayerInternalFlag() ) 1262 1136 { 1263 1137 assert( pcVPS->getProfileTierLevelIdx(0,0) == pcVPS->inferProfileTierLevelIdx(0,0) ); 1264 1138 } 1265 #endif1266 1139 1267 1140 … … 1270 1143 if( i >= pcVPS->getNumLayerSets( ) ) 1271 1144 { 1272 #if !VPS_MISC_UPDATES1273 WRITE_UVLC( pcVPS->getLayerSetIdxForOlsMinus1( i ), "layer_set_idx_for_ols_minus1[i]" );1274 #else1275 1145 WRITE_CODE( pcVPS->getLayerSetIdxForOlsMinus1( i ), pcVPS->getLayerSetIdxForOlsMinus1Len( i ) , "layer_set_idx_for_ols_minus1[i]" ); 1276 #endif1277 1146 } 1278 1147 … … 1292 1161 } 1293 1162 1294 #if H_MV_HLS10_PTL1295 1163 for ( Int j = 0; j < pcVPS->getNumLayersInIdList( pcVPS->olsIdxToLsIdx(i)); j++ ) 1296 1164 { … … 1299 1167 WRITE_CODE( pcVPS->getProfileTierLevelIdx( i, j ), pcVPS->getProfileTierLevelIdxLen() ,"profile_tier_level_idx[ i ][ j ]" ); 1300 1168 } 1301 #if H_MV_HLS10_PTL_FIX1302 1169 if (pcVPS->getNecessaryLayerFlag( i, j ) && pcVPS->getVpsNumProfileTierLevelMinus1() == 0 ) 1303 1170 { 1304 1171 assert( pcVPS->getProfileTierLevelIdx( i , j ) == pcVPS->inferProfileTierLevelIdx( i, j ) ); 1305 1172 } 1306 #endif 1307 1308 } 1309 #else 1310 if ( pcVPS->getProfileLevelTierIdxLen() > 0 ) 1311 { 1312 WRITE_CODE( pcVPS->getProfileLevelTierIdx( i ), pcVPS->getProfileLevelTierIdxLen() ,"profile_level_tier_idx[ i ]" ); 1313 } 1314 #endif 1173 1174 } 1315 1175 if( pcVPS->getNumOutputLayersInOutputLayerSet( i ) == 1 && pcVPS->getNumDirectRefLayers( pcVPS->getOlsHighestOutputLayerId( i ) ) > 0 ) 1316 1176 { … … 1362 1222 } 1363 1223 1364 #if !H_MV_HLS10_GEN_FIX1365 WRITE_FLAG( 0, "vps_reserved_zero_flag" );1366 #endif1367 1224 codeDpbSize( pcVPS ); 1368 1225 … … 1441 1298 for( Int k = 0; k < vps->getNumLayersInIdList( currLsIdx ); k++ ) 1442 1299 { 1443 #if H_MV_HLS10_DBP_SIZE1444 1300 if ( vps->getNecessaryLayerFlag( i, k ) && ( vps->getVpsBaseLayerInternalFlag() || ( vps->getLayerSetLayerIdList(vps->olsIdxToLsIdx(i),k) != 0 ) )) 1445 1301 { … … 1453 1309 } 1454 1310 } 1455 #else1456 WRITE_UVLC( dpbSize->getMaxVpsDecPicBufferingMinus1( i, k, j ), "max_vps_dec_pic_buffering_minus1" );1457 #endif1458 1311 } 1459 1312 WRITE_UVLC( dpbSize->getMaxVpsNumReorderPics( i, j ), "max_vps_num_reorder_pics" ); … … 1466 1319 for( Int k = 0; k < vps->getNumLayersInIdList( vps->olsIdxToLsIdx( i ) ); k++ ) 1467 1320 { 1468 #if H_MV_HLS10_DBP_SIZE1469 1321 if ( vps->getNecessaryLayerFlag(i, k ) ) 1470 1322 { 1471 #endif1472 1323 assert( dpbSize->getMaxVpsDecPicBufferingMinus1( i, k, j ) == dpbSize->getMaxVpsDecPicBufferingMinus1( i,k, j - 1 ) ); 1473 #if H_MV_HLS10_DBP_SIZE1474 1324 } 1475 #endif1476 1325 } 1477 1326 assert( dpbSize->getMaxVpsNumReorderPics ( i, j ) == dpbSize->getMaxVpsNumReorderPics ( i, j - 1 ) ); … … 1508 1357 pcRepFormat->inferChromaAndBitDepth(pcPrevRepFormat, true ); 1509 1358 } 1510 #if H_MV_HLS10_GEN_VSP_CONF_WIN1511 1359 WRITE_FLAG( pcRepFormat->getConformanceWindowVpsFlag( ) ? 1 : 0 , "conformance_window_vps_flag" ); 1512 1360 if ( pcRepFormat->getConformanceWindowVpsFlag() ) … … 1517 1365 WRITE_UVLC( pcRepFormat->getConfWinVpsBottomOffset( ), "conf_win_vps_bottom_offset" ); 1518 1366 } 1519 #endif1520 1367 } 1521 1368 … … 1542 1389 if( pcVPSVUI->getBitRatePresentVpsFlag( ) || pcVPSVUI->getPicRatePresentVpsFlag( ) ) 1543 1390 { 1544 #if H_MV_HLS10_VPS_VUI1545 1391 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1; i < pcVPS->getNumLayerSets(); i++ ) 1546 #else1547 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1; i <= pcVPS->getVpsNumLayerSetsMinus1(); i++ )1548 #endif1549 1392 { 1550 1393 for( Int j = 0; j <= pcVPS->getMaxSubLayersInLayerSetMinus1( i ); j++ ) … … 1579 1422 else 1580 1423 { 1581 #if H_MV_HLS10_VPS_VUI1582 1424 assert( pcVPSVUI->getVpsNumVideoSignalInfoMinus1() == pcVPS->getMaxLayersMinus1() - ( pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1) ); 1583 #else1584 pcVPSVUI->setVpsNumVideoSignalInfoMinus1( pcVPS->getMaxLayersMinus1() );1585 #endif1586 1425 } 1587 1426 … … 1596 1435 if( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() && pcVPSVUI->getVpsNumVideoSignalInfoMinus1() > 0 ) 1597 1436 { 1598 #if I0045_VPS_VUI_VST_PARAMS1599 1437 for( Int i = pcVPS->getVpsBaseLayerInternalFlag() ? 0 : 1; i <= pcVPS->getMaxLayersMinus1(); i++ ) 1600 1438 { 1601 1439 WRITE_CODE( pcVPSVUI->getVpsVideoSignalInfoIdx( i ), 4, "vps_video_signal_info_idx" ); 1602 1440 } 1603 #else1604 for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ )1605 {1606 WRITE_CODE( pcVPSVUI->getVpsVideoSignalInfoIdx( i ), 4, "vps_video_signal_info_idx" );1607 assert( pcVPSVUI->getVpsVideoSignalInfoIdx( i ) >= 0 && pcVPSVUI->getVpsVideoSignalInfoIdx( i ) <= pcVPSVUI->getVpsNumVideoSignalInfoMinus1() );1608 }1609 }1610 else1611 {1612 for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ )1613 {1614 assert( pcVPSVUI->getVpsVideoSignalInfoIdx( i ) == ( pcVPSVUI->getVideoSignalInfoIdxPresentFlag() ? 0 : i ) );1615 }1616 #endif1617 1441 } 1618 1442 WRITE_FLAG( pcVPSVUI->getTilesNotInUseFlag( ) ? 1 : 0 , "tiles_not_in_use_flag" ); … … 1631 1455 for( Int j = 0; j < pcVPS->getNumDirectRefLayers( pcVPS->getLayerIdInNuh( i ) ) ; j++ ) 1632 1456 { 1633 #if H_MV_HLS10_REF_PRED_LAYERS1634 1457 Int layerIdx = pcVPS->getLayerIdInVps(pcVPS->getIdRefLayer(pcVPS->getLayerIdInNuh( i ) , j )); 1635 #else1636 Int layerIdx = pcVPS->getLayerIdInVps(pcVPS->getRefLayerId(pcVPS->getLayerIdInNuh( i ) , j ));1637 #endif1638 1458 if( pcVPSVUI->getTilesInUseFlag( i ) && pcVPSVUI->getTilesInUseFlag( layerIdx ) ) 1639 1459 { … … 1653 1473 } 1654 1474 } 1655 #if H_MV_HLS10_VPS_VUI1656 1475 WRITE_FLAG( pcVPSVUI->getSingleLayerForNonIrapFlag( ) ? 1 : 0 , "single_layer_for_non_irap_flag" ); 1657 1476 WRITE_FLAG( pcVPSVUI->getHigherLayerIrapSkipFlag( ) ? 1 : 0 , "higher_layer_irap_skip_flag" ); 1658 #else1659 WRITE_CODE( 0, 3, "vps_vui_reserved_zero_3bits" );1660 #endif1661 1477 WRITE_FLAG( pcVPSVUI->getIlpRestrictedRefLayersFlag( ) ? 1 : 0 , "ilp_restricted_ref_layers_flag" ); 1662 1478 … … 1667 1483 for( Int j = 0; j < pcVPS->getNumDirectRefLayers( pcVPS->getLayerIdInNuh( i ) ); j++ ) 1668 1484 { 1669 #if H_MV_HLS10_REF_PRED_LAYERS1670 1485 if( pcVPS->getVpsBaseLayerInternalFlag() || pcVPS->getIdRefLayer( pcVPS->getLayerIdInNuh( i ), j ) > 0 ) 1671 #else1672 if( pcVPS->getVpsBaseLayerInternalFlag() || pcVPS->getRefLayerId( pcVPS->getLayerIdInNuh( i ), j ) > 0 )1673 #endif1674 1486 { 1675 1487 WRITE_UVLC( pcVPSVUI->getMinSpatialSegmentOffsetPlus1( i, j ), "min_spatial_segment_offset_plus1" ); … … 1714 1526 assert ( vpsVuiBspHrdP ); 1715 1527 1716 #if H_MV_HLS10_VPS_VUI_BSP1717 1528 WRITE_UVLC( vpsVuiBspHrdP->getVpsNumAddHrdParams( ), "vps_num_add_hrd_params" ); 1718 1529 … … 1760 1571 } 1761 1572 1762 #else // H_MV_HLS10_GEN1763 WRITE_UVLC( vpsVuiBspHrdP->getVpsNumBspHrdParametersMinus1( ), "vps_num_bsp_hrd_parameters_minus1" );1764 for( Int i = 0; i <= vpsVuiBspHrdP->getVpsNumBspHrdParametersMinus1( ); i++ )1765 {1766 if( i > 0 )1767 {1768 WRITE_FLAG( vpsVuiBspHrdP->getBspCprmsPresentFlag( i ) ? 1 : 0 , "bsp_cprms_present_flag" );1769 }1770 TComHRD* hrdParameters = vpsVuiBspHrdP->getHrdParametermeters( i );1771 codeHrdParameters( hrdParameters, vpsVuiBspHrdP->getBspCprmsPresentFlag( i ), pcVPS->getMaxSubLayersMinus1() );1772 }1773 for( Int h = 1; h <= pcVPS->getVpsNumLayerSetsMinus1(); h++ )1774 {1775 WRITE_UVLC( vpsVuiBspHrdP->getNumBitstreamPartitions( h ), "num_bitstream_partitions" );1776 for( Int i = 0; i < vpsVuiBspHrdP->getNumBitstreamPartitions( h ); i++ )1777 {1778 for( Int j = 0; j < pcVPS->getNumLayersInIdList( h ); j++ )1779 {1780 WRITE_FLAG( vpsVuiBspHrdP->getLayerInBspFlag( h, i, j ) ? 1 : 0 , "layer_in_bsp_flag" );1781 }1782 }1783 vpsVuiBspHrdP->checkLayerInBspFlag( pcVPS, h );1784 1785 if( vpsVuiBspHrdP->getNumBitstreamPartitions( h ) )1786 {1787 WRITE_UVLC( vpsVuiBspHrdP->getNumBspSchedCombinationsMinus1( h ), "num_bsp_sched_combinations_minus1" );1788 for( Int i = 0; i <= vpsVuiBspHrdP->getNumBspSchedCombinationsMinus1( h ); i++ )1789 {1790 for( Int j = 0; j < vpsVuiBspHrdP->getNumBitstreamPartitions( h ); j++ )1791 {1792 WRITE_CODE( vpsVuiBspHrdP->getBspCombHrdIdx( h, i, j ), vpsVuiBspHrdP->getBspCombHrdIdxLen(), "bsp_comb_hrd_idx" );1793 WRITE_UVLC( vpsVuiBspHrdP->getBspCombSchedIdx( h, i, j ), "bsp_comb_sched_idx" );1794 1795 vpsVuiBspHrdP->checkBspCombHrdAndShedIdx( pcVPS, h, i, j );1796 }1797 }1798 }1799 }1800 #endif1801 1573 } 1802 1574 #endif … … 1805 1577 Void TEncCavlc::codeVPSExtension2( TComVPS* pcVPS ) 1806 1578 { 1807 #if SEC_VPS_CLEANUP_I00901808 1579 for( Int i = 1; i <= pcVPS->getMaxLayersMinus1(); i++ ) 1809 #else 1810 for( Int i = 0; i <= pcVPS->getMaxLayersMinus1(); i++ ) 1811 #endif 1812 { 1813 #if !SEC_VPS_CLEANUP_I0090 1814 if (i!= 0) 1815 #endif 1816 { 1817 #if MTK_I0099_VPS_EX2 1580 { 1581 { 1818 1582 WRITE_FLAG( pcVPS->getIvMvPredFlag ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]"); 1819 #if SEC_HLS_CLEANUP_I01001820 1583 WRITE_FLAG( pcVPS->getIvMvScalingFlag( i ) ? 1 : 0 , "iv_mv_scaling_flag[i]" ); 1821 #endif 1822 1823 #endif 1584 1824 1585 if ( !( pcVPS->getDepthId( i ) == 1 ) ) 1825 1586 { 1826 1587 #if H_3D_IV_MERGE 1827 #if !MTK_I0099_VPS_EX21828 WRITE_FLAG( pcVPS->getIvMvPredFlag ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]");1829 #endif1830 1588 #if H_3D_SPIVMP 1831 1589 WRITE_UVLC( pcVPS->getSubPULog2Size(i)-3, "log2_sub_PU_size_minus3[i]"); … … 1847 1605 else 1848 1606 { 1849 #if !MTK_I0099_VPS_EX21850 if(i!=1)1851 {1852 WRITE_FLAG( pcVPS->getIvMvPredFlag ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]");1853 }1854 #if H_3D_SPIVMP1855 if (i!=1)1856 {1857 WRITE_UVLC( pcVPS->getSubPULog2Size(i)-3, "log2_sub_PU_size_minus3[i]");1858 }1859 #endif1860 #endif1861 1607 #if H_3D_IV_MERGE 1862 1608 WRITE_FLAG( pcVPS->getMPIFlag( i ) ? 1 : 0 , "mpi_flag[i]" ); 1863 1609 #endif 1864 #if MTK_I0099_VPS_EX21865 1610 WRITE_UVLC( pcVPS->getSubPUMPILog2Size(i)-3, "log2_mpi_sub_PU_size_minus3[i]"); 1866 #endif 1611 1867 1612 WRITE_FLAG( pcVPS->getVpsDepthModesFlag( i ) ? 1 : 0 , "vps_depth_modes_flag[i]" ); 1868 #if SEPARATE_FLAG_I00851613 #if H_3D 1869 1614 WRITE_FLAG( pcVPS->getIVPFlag( i ) ? 1 : 0 , "IVP_flag[i]" ); 1870 1615 #endif 1871 #if MTK_I0099_VPS_EX21872 1616 WRITE_FLAG( pcVPS->getLimQtPredFlag ( i ) ? 1 : 0 , "lim_qt_pred_flag[i]" ); 1873 #endif1874 1617 1875 1618 #if H_3D_INTER_SDC … … 1880 1623 } 1881 1624 WRITE_UVLC( pcVPS->getCamParPrecision(), "cp_precision" ); 1882 #if SEC_VPS_CLEANUP_I00901883 1625 for (UInt viewIndex=1; viewIndex<pcVPS->getNumViews(); viewIndex++) 1884 #else1885 for (UInt viewIndex=0; viewIndex<pcVPS->getNumViews(); viewIndex++)1886 #endif1887 1626 { 1888 1627 WRITE_FLAG( pcVPS->getCamParPresent(viewIndex) ? 1 : 0, "cp_present_flag[i]" ); … … 1902 1641 } 1903 1642 } 1904 #if !MTK_I0099_VPS_EX21905 WRITE_UVLC( pcVPS->getSubPUMPILog2Size( ) - 3, "log2_sub_PU_MPI_size_minus3");1906 #endif1907 #if H_3D_TMVP1908 #if !SEC_HLS_CLEANUP_I01001909 WRITE_FLAG( pcVPS->getIvMvScalingFlag( ) ? 1 : 0 , "iv_mv_scaling_flag" );1910 #endif1911 #endif1912 1643 } 1913 1644 #endif … … 1978 1709 esb++; 1979 1710 WRITE_FLAG( pcSlice->getDiscardableFlag( ) ? 1 : 0 , "discardable_flag" ); 1980 #if NON_REF_NAL_TYPE_DISCARDABLE1981 1711 if (pcSlice->getDiscardableFlag( )) 1982 1712 { … … 1987 1717 pcSlice->getNalUnitType() != NAL_UNIT_CODED_SLICE_RASL_R); 1988 1718 } 1989 #endif1990 1719 } 1991 1720 … … 2148 1877 if (pcSlice->getSPS()->getTMVPFlagsPresent()) 2149 1878 { 2150 #if I0044_SLICE_TMVP1879 #if H_MV 2151 1880 WRITE_FLAG( pcSlice->getEnableTMVPFlag() ? 1 : 0, "slice_temporal_mvp_enabled_flag" ); 2152 1881 #else … … 2308 2037 } 2309 2038 #if H_3D_IC 2310 #if SEC_HLS_CLEANUP_I01002311 2039 else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) && !pcSlice->getIsDepth() && vps->getNumDirectRefLayers( layerId ) > 0 ) 2312 #else2313 else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) && !pcSlice->getIsDepth())2314 #endif2315 2040 { 2316 2041 WRITE_FLAG( pcSlice->getApplyIC() ? 1 : 0, "slice_ic_enable_flag" ); … … 2321 2046 } 2322 2047 #endif 2323 #if MTK_SINGLE_DEPTH_MODE_I00952048 #if H_3D_SINGLE_DEPTH 2324 2049 if(pcSlice->getIsDepth()) 2325 2050 { … … 2385 2110 } 2386 2111 #if H_3D 2387 #if LGE_FCO_I01162112 #if H_3D_FCO 2388 2113 if( pcSlice->getVPS()->hasCamParInSliceHeader( pcSlice->getViewIndex() ) && pcSlice->getIsDepth() ) 2389 2114 #else … … 2575 2300 WRITE_FLAG(ptl->getFrameOnlyConstraintFlag(), "general_frame_only_constraint_flag"); 2576 2301 2577 #if H_MV_HLS10_PTL 2578 #if H_MV_HLS10_PTL_INFER_FIX 2302 #if H_MV 2579 2303 if( ptl->getV2ConstraintsPresentFlag() ) 2580 #else2581 if( ptl->getProfileIdc( ) == 4 || ptl->getProfileCompatibilityFlag( 4 ) ||2582 ptl->getProfileIdc( ) == 5 || ptl->getProfileCompatibilityFlag( 5 ) ||2583 ptl->getProfileIdc( ) == 6 || ptl->getProfileCompatibilityFlag( 6 ) ||2584 ptl->getProfileIdc( ) == 7 || ptl->getProfileCompatibilityFlag( 7 ) )2585 #endif2586 2304 { 2587 2305 WRITE_FLAG( ptl->getMax12bitConstraintFlag( ) ? 1 : 0 , "max_12bit_constraint_flag" ); … … 2604 2322 WRITE_CODE( 0, 11, "XXX_reserved_zero_43bits[32..42]"); 2605 2323 } 2606 #if H_MV_HLS10_PTL_INFER_FIX2607 2324 if( ptl->getInbldPresentFlag() ) 2608 #else2609 if( ( ptl->getProfileIdc() >= 1 && ptl->getProfileIdc() <= 5 ) ||2610 ptl->getProfileCompatibilityFlag( 1 ) || ptl->getProfileCompatibilityFlag( 2 ) ||2611 ptl->getProfileCompatibilityFlag( 3 ) || ptl->getProfileCompatibilityFlag( 4 ) ||2612 ptl->getProfileCompatibilityFlag( 5 ) )2613 #endif2614 2325 { 2615 2326 WRITE_FLAG( ptl->getInbldFlag( ) ? 1 : 0 , "inbld_flag" ); … … 2762 2473 assert(0); 2763 2474 } 2764 #if MTK_SINGLE_DEPTH_MODE_I00952475 #if H_3D_SINGLE_DEPTH 2765 2476 Void TEncCavlc::codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx ) 2766 2477 { -
trunk/source/Lib/TLibEncoder/TEncCavlc.h
r1066 r1084 107 107 Void codePPS ( TComPPS* pcPPS ); 108 108 109 #if H_MV_HLS10_PPS110 109 #if H_MV 111 110 Void codePPSMultilayerExtension( TComPPS* pcPPS ); 112 #endif113 111 #endif 114 112 … … 129 127 Void codeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ); 130 128 Void codeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 131 #if MTK_SINGLE_DEPTH_MODE_I0095129 #if H_3D_SINGLE_DEPTH 132 130 Void codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx ); 133 131 #endif -
trunk/source/Lib/TLibEncoder/TEncCfg.h
r1039 r1084 124 124 Int m_iSourceWidth; 125 125 Int m_iSourceHeight; 126 Int m_conformanceMode;127 126 Window m_conformanceWindow; 128 127 Int m_framesToBeEncoded; … … 229 228 Bool m_bPCMFilterDisableFlag; 230 229 Bool m_loopFilterAcrossTilesEnabledFlag; 231 Int m_iUniformSpacingIdr;230 Bool m_tileUniformSpacingFlag; 232 231 Int m_iNumColumnsMinus1; 233 UInt* m_puiColumnWidth;234 232 Int m_iNumRowsMinus1; 235 UInt* m_puiRowHeight; 233 std::vector<Int> m_tileColumnWidth; 234 std::vector<Int> m_tileRowHeight; 236 235 237 236 Int m_iWaveFrontSynchro; … … 414 413 #if H_3D_DIM 415 414 Bool m_useDMM; 416 #if SEPARATE_FLAG_I0085417 415 Bool m_useIVP; 418 #endif419 416 Bool m_useSDC; 420 417 Bool m_useDLT; 421 418 #endif 422 #if MTK_SINGLE_DEPTH_MODE_I0095419 #if H_3D_SINGLE_DEPTH 423 420 Bool m_useSingleDepthMode; 424 421 #endif … … 426 423 Bool m_useMPI; 427 424 #endif 428 #if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX429 425 #if H_3D_QTLPC 430 426 Bool m_bUseQTL; 431 #if !MTK_I0099_VPS_EX2432 Bool m_bUsePC;433 #endif434 #endif435 427 #endif 436 428 #endif 437 429 public: 438 430 TEncCfg() 439 : m_ puiColumnWidth()440 , m_ puiRowHeight()431 : m_tileColumnWidth() 432 , m_tileRowHeight() 441 433 #if H_MV 442 434 , m_layerId(-1) … … 452 444 453 445 virtual ~TEncCfg() 454 { 455 delete[] m_puiColumnWidth; 456 delete[] m_puiRowHeight; 457 } 446 {} 458 447 459 448 Void setProfile(Profile::Name profile) { m_profile = profile; } … … 678 667 Void setLFCrossTileBoundaryFlag ( Bool val ) { m_loopFilterAcrossTilesEnabledFlag = val; } 679 668 Bool getLFCrossTileBoundaryFlag () { return m_loopFilterAcrossTilesEnabledFlag; } 680 Void set UniformSpacingIdr ( Int i ) { m_iUniformSpacingIdr = i; }681 Int getUniformSpacingIdr () { return m_iUniformSpacingIdr; }669 Void setTileUniformSpacingFlag ( Bool b ) { m_tileUniformSpacingFlag = b; } 670 Bool getTileUniformSpacingFlag () { return m_tileUniformSpacingFlag; } 682 671 Void setNumColumnsMinus1 ( Int i ) { m_iNumColumnsMinus1 = i; } 683 672 Int getNumColumnsMinus1 () { return m_iNumColumnsMinus1; } 684 Void setColumnWidth ( UInt* columnWidth ) 685 { 686 if( m_iUniformSpacingIdr == 0 && m_iNumColumnsMinus1 > 0 ) 687 { 688 Int m_iWidthInCU = ( m_iSourceWidth%g_uiMaxCUWidth ) ? m_iSourceWidth/g_uiMaxCUWidth + 1 : m_iSourceWidth/g_uiMaxCUWidth; 689 m_puiColumnWidth = new UInt[ m_iNumColumnsMinus1 ]; 690 691 for(Int i=0; i<m_iNumColumnsMinus1; i++) 692 { 693 m_puiColumnWidth[i] = columnWidth[i]; 694 printf("col: m_iWidthInCU= %4d i=%4d width= %4d\n",m_iWidthInCU,i,m_puiColumnWidth[i]); //AFU 695 } 696 } 697 } 698 UInt getColumnWidth ( UInt columnidx ) { return *( m_puiColumnWidth + columnidx ); } 673 Void setColumnWidth ( const std::vector<Int>& columnWidth ) { m_tileColumnWidth = columnWidth; } 674 UInt getColumnWidth ( UInt columnIdx ) { return m_tileColumnWidth[columnIdx]; } 699 675 Void setNumRowsMinus1 ( Int i ) { m_iNumRowsMinus1 = i; } 700 676 Int getNumRowsMinus1 () { return m_iNumRowsMinus1; } 701 Void setRowHeight (UInt* rowHeight) 702 { 703 if( m_iUniformSpacingIdr == 0 && m_iNumRowsMinus1 > 0 ) 704 { 705 Int m_iHeightInCU = ( m_iSourceHeight%g_uiMaxCUHeight ) ? m_iSourceHeight/g_uiMaxCUHeight + 1 : m_iSourceHeight/g_uiMaxCUHeight; 706 m_puiRowHeight = new UInt[ m_iNumRowsMinus1 ]; 707 708 for(Int i=0; i<m_iNumRowsMinus1; i++) 709 { 710 m_puiRowHeight[i] = rowHeight[i]; 711 printf("row: m_iHeightInCU=%4d i=%4d height=%4d\n",m_iHeightInCU,i,m_puiRowHeight[i]); //AFU 712 } 713 } 714 } 715 UInt getRowHeight ( UInt rowIdx ) { return *( m_puiRowHeight + rowIdx ); } 677 Void setRowHeight ( const std::vector<Int>& rowHeight) { m_tileRowHeight = rowHeight; } 678 UInt getRowHeight ( UInt rowIdx ) { return m_tileRowHeight[rowIdx]; } 716 679 Void xCheckGSParameters(); 717 680 Void setWaveFrontSynchro(Int iWaveFrontSynchro) { m_iWaveFrontSynchro = iWaveFrontSynchro; } … … 1013 976 Bool getUseDMM () { return m_useDMM; } 1014 977 Void setUseDMM ( Bool b) { m_useDMM = b; } 1015 #if SEPARATE_FLAG_I00851016 978 Bool getUseIVP () { return m_useIVP; } 1017 979 Void setUseIVP ( Bool b) { m_useIVP = b; } 1018 #endif1019 980 Bool getUseSDC () { return m_useSDC; } 1020 981 Void setUseSDC ( Bool b) { m_useSDC = b; } … … 1022 983 Void setUseDLT ( Bool b) { m_useDLT = b; } 1023 984 #endif 1024 #if MTK_SINGLE_DEPTH_MODE_I0095985 #if H_3D_SINGLE_DEPTH 1025 986 Void setUseSingleDepthMode ( Bool bVal ) { m_useSingleDepthMode = bVal; } 1026 987 Bool getUseSingleDepthMode () { return m_useSingleDepthMode; } 1027 988 #endif 1028 #if !MTK_I0099_VPS_EX2 || MTK_I0099_FIX1029 989 #if H_3D_QTLPC 1030 990 Void setUseQTL ( Bool b ) { m_bUseQTL = b; } 1031 991 Bool getUseQTL () { return m_bUseQTL; } 1032 #if !MTK_I0099_VPS_EX21033 Void setUsePC ( Bool b ) { m_bUsePC = b; }1034 Bool getUsePC () { return m_bUsePC; }1035 #endif1036 #endif1037 992 #endif 1038 993 #if H_3D_IV_MERGE -
trunk/source/Lib/TLibEncoder/TEncCu.cpp
r1066 r1084 409 409 410 410 #if H_3D_QTLPC 411 #if MTK_I0099_VPS_EX2412 411 TComVPS *vps = pcPic->getSlice(0)->getVPS(); 413 412 Bool bLimQtPredFalg = vps->getLimQtPredFlag(pcPic->getSlice(0)->getLayerId()); 414 #else415 TComSPS *sps = pcPic->getSlice(0)->getSPS();416 #endif417 413 TComPic *pcTexture = rpcBestCU->getSlice()->getTexturePic(); 418 414 … … 535 531 #if H_3D_QTLPC 536 532 //logic for setting bTrySplit using the partition information that is stored of the texture colocated CU 537 538 #if MTK_I0099_VPS_EX2 539 #if MTK_I0099_FIX 540 #if LGE_FCO_I0116 533 #if H_3D_FCO 541 534 if(depthMapDetect && !bIntraSliceDetect && !rapPic && ( m_pcEncCfg->getUseQTL() || bLimQtPredFalg ) && pcTexture->getReconMark()) 542 535 #else 543 536 if(depthMapDetect && !bIntraSliceDetect && !rapPic && ( m_pcEncCfg->getUseQTL() || bLimQtPredFalg )) 544 #endif545 #else546 if(depthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFalg)547 #endif548 #else549 if(depthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL())550 537 #endif 551 538 { … … 702 689 703 690 #if H_3D_QTLPC 704 #if MTK_I0099_VPS_EX2705 #if MTK_I0099_FIX706 691 if(depthMapDetect && !bIntraSliceDetect && !rapPic && ( m_pcEncCfg->getUseQTL() || bLimQtPredFalg )) 707 #else708 if(depthMapDetect && !bIntraSliceDetect && !rapPic && bLimQtPredFalg)709 #endif710 #else711 if(depthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL())712 #endif713 692 { 714 693 bTrySplitDQP = bTrySplit; … … 734 713 } 735 714 #endif 736 #if MTK_SINGLE_DEPTH_MODE_I0095715 #if H_3D_SINGLE_DEPTH 737 716 rpcTempCU->initEstData( uiDepth, iMinQP, isAddLowestQP ); 738 717 if(rpcBestCU->getSlice()->getApplySingleDepthMode()) … … 1057 1036 rpcBestCU->getCbf( 0, TEXT_CHROMA_V ) != 0 1058 1037 #if H_3D_DIM_ENC 1059 #if HHI_DMM4_ENC_I00661060 1038 || rpcBestCU->getSlice()->getIsDepth() 1061 #else1062 || ( rpcBestCU->getSlice()->getIsDepth() && rpcBestCU->getSlice()->isIRAP() )1063 #endif1064 1039 #endif 1065 1040 ) // avoid very complex intra if it is unlikely 1066 1041 { 1067 #if H HI_DMM4_ENC_I00661042 #if H_3D_DIM 1068 1043 Bool bOnlyIVP = false; 1069 1044 if( rpcBestCU->getSlice()->getIsDepth() && !(rpcBestCU->getSlice()->isIRAP()) && … … 1098 1073 if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) ) 1099 1074 { 1100 #if H HI_DMM4_ENC_I00661075 #if H_3D_DIM 1101 1076 xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN, bOnlyIVP ); 1102 1077 #else … … 1590 1565 return; 1591 1566 } 1592 #if MTK_SINGLE_DEPTH_MODE_I00951567 #if H_3D_SINGLE_DEPTH 1593 1568 m_pcEntropyCoder->encodeSingleDepthMode( pcCU, uiAbsPartIdx ); 1594 1569 if(!pcCU->getSingleDepthFlag(uiAbsPartIdx)) … … 1627 1602 m_pcEntropyCoder->encodeCoeff( pcCU, uiAbsPartIdx, uiDepth, pcCU->getWidth (uiAbsPartIdx), pcCU->getHeight(uiAbsPartIdx), bCodeDQP ); 1628 1603 setdQPFlag( bCodeDQP ); 1629 #if MTK_SINGLE_DEPTH_MODE_I00951604 #if H_3D_SINGLE_DEPTH 1630 1605 } 1631 1606 #endif … … 1863 1838 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 1864 1839 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 1865 #if !FIX_TICKET_791866 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];1867 #endif1868 1840 #if H_3D_SPIVMP 1869 1841 Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM]; … … 1878 1850 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 1879 1851 rpcTempCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours 1880 #if !FIX_TICKET_791881 , inheritedVSPDisInfo1882 #endif1883 1852 #if H_3D_SPIVMP 1884 1853 , pcMvFieldSP, puhInterDirSP … … 1895 1864 1896 1865 #else 1897 #if FIX_TICKET_791898 1866 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag, numValidMergeCand ); 1899 #else1900 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, numValidMergeCand );1901 #endif1902 1867 #endif 1903 1868 … … 1942 1907 #if H_3D_VSP 1943 1908 rpcTempCU->setVSPFlagSubParts( vspFlag[uiMergeCand], 0, 0, uhDepth ); 1944 #if !FIX_TICKET_791945 rpcTempCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, 0, 0, uhDepth );1946 #endif1947 1909 #endif 1948 1910 #if H_3D_DDD … … 2043 2005 2044 2006 rpcTempCU->setSkipFlagSubParts( rpcTempCU->getQtRootCbf(0) == 0, 0, uhDepth ); 2045 #if MTK_SINGLE_DEPTH_MODE_I00952007 #if H_3D_SINGLE_DEPTH 2046 2008 rpcTempCU->setSingleDepthFlagSubParts( false, 0, uhDepth ); 2047 2009 #endif … … 2061 2023 if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) && rpcTempCU->getSlice()->getIsDepth() && !uiNoResidual ) 2062 2024 { 2063 #if FAST_SDC_OFFSET_DECISION_I00842064 2025 Double dOffsetCost[3] = {MAX_DOUBLE,MAX_DOUBLE,MAX_DOUBLE}; 2065 2026 for( Int uiOffest = 1 ; uiOffest <= 5 ; uiOffest++ ) 2066 #else2067 for( Int uiOffest = -2 ; uiOffest <= 2 ; uiOffest++ )2068 #endif2069 2027 { 2070 #if FAST_SDC_OFFSET_DECISION_I00842071 2028 if( uiOffest > 3) 2072 2029 { … … 2084 2041 } 2085 2042 } 2086 #endif2087 2043 if( rpcTempCU != rpcTempCUPre ) 2088 2044 { … … 2091 2047 } 2092 2048 rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth ); 2093 #if MTK_SINGLE_DEPTH_MODE_I00952049 #if H_3D_SINGLE_DEPTH 2094 2050 rpcTempCU->setSingleDepthFlagSubParts( false, 0, uhDepth ); 2095 2051 #endif … … 2106 2062 } 2107 2063 #endif 2108 #if FAST_SDC_OFFSET_DECISION_I00842109 2064 Int iSdcOffset = 0; 2110 2065 if(uiOffest % 2 == 0) … … 2127 2082 dOffsetCost [uiOffest -1] = rpcTempCU->getTotalCost(); 2128 2083 } 2129 #else2130 m_pcPredSearch->encodeResAndCalcRdInterSDCCU( rpcTempCU,2131 m_ppcOrigYuv[uhDepth],2132 ( rpcTempCU != rpcTempCUPre ) ? m_ppcPredYuvBest[uhDepth] : m_ppcPredYuvTemp[uhDepth],2133 m_ppcResiYuvTemp[uhDepth],2134 m_ppcRecoYuvTemp[uhDepth],2135 uiOffest,2136 uhDepth );2137 #endif2138 2084 2139 2085 xCheckDQP( rpcTempCU ); … … 2253 2199 2254 2200 rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth ); 2255 #if MTK_SINGLE_DEPTH_MODE_I00952201 #if H_3D_SINGLE_DEPTH 2256 2202 rpcTempCU->setSingleDepthFlagSubParts( false, 0, uhDepth ); 2257 2203 #endif … … 2326 2272 } 2327 2273 #endif 2328 2329 2274 #if H_3D_VSO // M4 2330 2275 if( m_pcRdCost->getUseLambdaScaleVSO() ) … … 2332 2277 else 2333 2278 #endif 2334 2335 2279 rpcTempCU->getTotalCost() = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() ); 2336 2280 #if H_3D_INTER_SDC … … 2342 2286 if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) && rpcTempCU->getSlice()->getIsDepth() && ePartSize == SIZE_2Nx2N) 2343 2287 { 2344 #if FAST_SDC_OFFSET_DECISION_I00842345 2288 Double dOffsetCost[3] = {MAX_DOUBLE,MAX_DOUBLE,MAX_DOUBLE}; 2346 2289 for( Int uiOffest = 1 ; uiOffest <= 5 ; uiOffest++ ) 2347 #else 2348 for( Int uiOffest = -2 ; uiOffest <= 2 ; uiOffest++ ) 2349 #endif 2350 { 2351 #if FAST_SDC_OFFSET_DECISION_I0084 2290 { 2352 2291 if( uiOffest > 3) 2353 2292 { … … 2365 2304 } 2366 2305 } 2367 #endif 2306 2368 2307 if( rpcTempCU != rpcTempCUPre ) 2369 2308 { … … 2373 2312 } 2374 2313 rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth ); 2375 #if MTK_SINGLE_DEPTH_MODE_I00952314 #if H_3D_SINGLE_DEPTH 2376 2315 rpcTempCU->setSingleDepthFlagSubParts( false, 0, uhDepth ); 2377 2316 #endif … … 2389 2328 #endif 2390 2329 2391 #if FAST_SDC_OFFSET_DECISION_I00842392 2330 Int iSdcOffset = 0; 2393 2331 if(uiOffest % 2 == 0) … … 2410 2348 dOffsetCost [uiOffest -1] = rpcTempCU->getTotalCost(); 2411 2349 } 2412 #else2413 m_pcPredSearch->encodeResAndCalcRdInterSDCCU( rpcTempCU,2414 m_ppcOrigYuv[uhDepth],2415 ( rpcTempCU != rpcTempCUPre ) ? m_ppcPredYuvBest[uhDepth] : m_ppcPredYuvTemp[uhDepth],2416 m_ppcResiYuvTemp[uhDepth],2417 m_ppcRecoYuvTemp[uhDepth],2418 uiOffest,2419 uhDepth );2420 #endif2421 2350 2422 2351 xCheckDQP( rpcTempCU ); … … 2493 2422 } 2494 2423 } 2495 #if MTK_SINGLE_DEPTH_MODE_I00952424 #if H_3D_SINGLE_DEPTH 2496 2425 Void TEncCu::xCheckRDCostSingleDepth( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize eSize ) 2497 2426 { … … 2560 2489 } 2561 2490 #endif 2491 2562 2492 Void TEncCu::xCheckRDCostInterDBBP( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, Bool bUseMRG ) 2563 2493 { … … 2581 2511 AOF( uiWidth == uiHeight ); 2582 2512 2583 #if SEC_DBBP_DISALLOW_8x8_I0078 2513 #if H_3D_DBBP 2514 // Is this correct here, was under the macro SEC_DBBP_DISALLOW_8x8_I0078, however the function is related to Single Depth Mode 2584 2515 if(uiWidth <= 8) 2585 2516 { … … 2592 2523 // fetch virtual depth block 2593 2524 UInt uiDepthStride = 0; 2594 #if LGE_FCO_I01162525 #if H_3D_FCO 2595 2526 Pel* pDepthPels = rpcTempCU->getVirtualDepthBlock(rpcTempCU->getZorderIdxInCU(), uiWidth, uiHeight, uiDepthStride); 2596 2527 #else … … 2688 2619 2689 2620 // reconstruct final prediction signal by combining both segments 2690 #if SHARP_DBBP_SIMPLE_FLTER_I01092691 2621 m_pcPredSearch->combineSegmentsWithMask(apPredYuv, m_ppcPredYuvTemp[uhDepth], pMask, uiWidth, uiHeight, 0, eVirtualPartSize); 2692 #else2693 m_pcPredSearch->combineSegmentsWithMask(apPredYuv, m_ppcPredYuvTemp[uhDepth], pMask, uiWidth, uiHeight);2694 #endif2695 2696 2622 m_pcPredSearch->encodeResAndCalcRdInterCU( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcResiYuvBest[uhDepth], m_ppcRecoYuvTemp[uhDepth], false ); 2697 2623 … … 2700 2626 } 2701 2627 #endif 2702 2703 #if HHI_DMM4_ENC_I0066 2628 #if H_3D_DIM 2704 2629 Void TEncCu::xCheckRDCostIntra( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize eSize, Bool bOnlyIVP ) 2705 2630 #else … … 2707 2632 #endif 2708 2633 { 2709 UInt uiDepth = rpcTempCU->getDepth( 0 ); 2710 2634 UInt uiDepth = rpcTempCU->getDepth( 0 ); 2711 2635 #if H_3D_VSO // M5 2712 2636 if( m_pcRdCost->getUseRenModel() ) … … 2721 2645 2722 2646 rpcTempCU->setSkipFlagSubParts( false, 0, uiDepth ); 2723 #if MTK_SINGLE_DEPTH_MODE_I00952647 #if H_3D_SINGLE_DEPTH 2724 2648 rpcTempCU->setSingleDepthFlagSubParts( false, 0, uiDepth ); 2725 2649 #endif … … 2733 2657 m_pcPredSearch->preestChromaPredMode( rpcTempCU, m_ppcOrigYuv[uiDepth], m_ppcPredYuvTemp[uiDepth] ); 2734 2658 } 2735 #if H HI_DMM4_ENC_I00662659 #if H_3D_DIM 2736 2660 m_pcPredSearch ->estIntraPredQT ( rpcTempCU, m_ppcOrigYuv[uiDepth], m_ppcPredYuvTemp[uiDepth], m_ppcResiYuvTemp[uiDepth], m_ppcRecoYuvTemp[uiDepth], uiPreCalcDistC, bSeparateLumaChroma, bOnlyIVP ); 2737 2661 #else … … 2751 2675 } 2752 2676 m_pcEntropyCoder->encodeSkipFlag ( rpcTempCU, 0, true ); 2753 #if MTK_SINGLE_DEPTH_MODE_I00952677 #if H_3D_SINGLE_DEPTH 2754 2678 m_pcEntropyCoder->encodeSingleDepthMode( rpcTempCU, 0, true ); 2755 2679 if(!rpcTempCU->getSingleDepthFlag(0)) … … 2768 2692 m_pcEntropyCoder->encodeCoeff( rpcTempCU, 0, uiDepth, rpcTempCU->getWidth (0), rpcTempCU->getHeight(0), bCodeDQP ); 2769 2693 setdQPFlag( bCodeDQP ); 2770 #if MTK_SINGLE_DEPTH_MODE_I00952694 #if H_3D_SINGLE_DEPTH 2771 2695 } 2772 2696 #endif … … 2798 2722 2799 2723 rpcTempCU->setSkipFlagSubParts( false, 0, uiDepth ); 2800 #if MTK_SINGLE_DEPTH_MODE_I00952724 #if H_3D_SINGLE_DEPTH 2801 2725 rpcTempCU->setSingleDepthFlagSubParts( false, 0, uiDepth ); 2802 2726 #endif … … 2817 2741 } 2818 2742 m_pcEntropyCoder->encodeSkipFlag ( rpcTempCU, 0, true ); 2819 #if MTK_SINGLE_DEPTH_MODE_I00952743 #if H_3D_SINGLE_DEPTH 2820 2744 m_pcEntropyCoder->encodeSingleDepthMode( rpcTempCU, 0, true ); 2821 2745 #endif -
trunk/source/Lib/TLibEncoder/TEncCu.h
r1039 r1084 159 159 Void xCheckRDCostInterDBBP( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, Bool bUseMRG = false ); 160 160 #endif 161 #if MTK_SINGLE_DEPTH_MODE_I0095161 #if H_3D_SINGLE_DEPTH 162 162 Void xCheckRDCostSingleDepth ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize ); 163 163 #endif 164 #if H HI_DMM4_ENC_I0066164 #if H_3D_DIM 165 165 Void xCheckRDCostIntra ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize, Bool bOnlyIVP ); 166 166 #else -
trunk/source/Lib/TLibEncoder/TEncEntropy.cpp
r1066 r1084 119 119 m_pcEntropyCoderIf->codeSkipFlag( pcCU, uiAbsPartIdx ); 120 120 } 121 #if MTK_SINGLE_DEPTH_MODE_I0095121 #if H_3D_SINGLE_DEPTH 122 122 Void TEncEntropy::encodeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD ) 123 123 { … … 185 185 else 186 186 { 187 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX188 187 Int ICEnableCandidate = pcCU->getSlice()->getICEnableCandidate(pcCU->getSlice()->getDepth()); 189 188 Int ICEnableNum = pcCU->getSlice()->getICEnableNum(pcCU->getSlice()->getDepth()); … … 195 194 pcCU->getSlice()->setICEnableCandidate(pcCU->getSlice()->getDepth(), ICEnableCandidate); 196 195 pcCU->getSlice()->setICEnableNum(pcCU->getSlice()->getDepth(), ICEnableNum); 197 #else198 g_aICEnableCANDIDATE[pcCU->getSlice()->getDepth()]++;199 if(pcCU->getICFlag(uiAbsPartIdx))200 {201 g_aICEnableNUM[pcCU->getSlice()->getDepth()]++;202 }203 #endif204 196 } 205 197 if( pcCU->isICFlagRequired( uiAbsPartIdx ) ) … … 273 265 } 274 266 267 m_pcEntropyCoderIf->codePartSize( pcCU, uiAbsPartIdx, uiDepth ); 268 275 269 #if H_3D_DBBP 276 #if! SEC_DBBP_EXPLICIT_SIG_I0077277 PartSize eVirtualPartSize = pcCU->getPartitionSize(uiAbsPartIdx);278 if( pcCU->getDBBPFlag(uiAbsPartIdx) )279 {280 AOF( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) );281 282 // temporarily change partition size for DBBP blocks283 pcCU->setPartSizeSubParts(RWTH_DBBP_PACK_MODE, uiAbsPartIdx, uiDepth);284 }285 #endif286 #endif287 288 m_pcEntropyCoderIf->codePartSize( pcCU, uiAbsPartIdx, uiDepth );289 290 #if H_3D_DBBP291 #if SEC_DBBP_EXPLICIT_SIG_I0077292 #if SEC_DBBP_DISALLOW_8x8_I0078293 270 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) && pcCU->getWidth(uiAbsPartIdx) > 8 ) 294 #else295 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && (pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2NxN || pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_Nx2N) )296 #endif297 #else298 #if SEC_DBBP_DISALLOW_8x8_I0078299 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && pcCU->getWidth(uiAbsPartIdx) > 8 )300 #else301 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) )302 #endif303 #endif304 271 { 305 272 encodeDBBPFlag(pcCU, uiAbsPartIdx, bRD); 306 #if !SEC_DBBP_EXPLICIT_SIG_I0077307 if( pcCU->getDBBPFlag(uiAbsPartIdx) )308 {309 // restore virtual partition size for DBBP blocks310 pcCU->setPartSizeSubParts(eVirtualPartSize, uiAbsPartIdx, uiDepth);311 }312 #endif313 273 } 314 274 #endif -
trunk/source/Lib/TLibEncoder/TEncEntropy.h
r1039 r1084 86 86 virtual Void codeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 87 87 virtual Void codeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 88 #if MTK_SINGLE_DEPTH_MODE_I009588 #if H_3D_SINGLE_DEPTH 89 89 virtual Void codeSingleDepthMode ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 90 90 #endif … … 174 174 Void encodeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); 175 175 Void encodeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); 176 #if MTK_SINGLE_DEPTH_MODE_I0095176 #if H_3D_SINGLE_DEPTH 177 177 Void encodeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD=false ); 178 178 #endif -
trunk/source/Lib/TLibEncoder/TEncGOP.cpp
r1066 r1084 160 160 #endif 161 161 #endif 162 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX163 m_aICEnableCandidate 164 m_aICEnableNum 162 #if H_3D_IC 163 m_aICEnableCandidate = pcTEncTop->getICEnableCandidate(); 164 m_aICEnableNum = pcTEncTop->getICEnableNum(); 165 165 #endif 166 166 #if KWU_FIX_URQ … … 395 395 Void TEncGOP::initGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, std::list<AccessUnit>& accessUnitsInGOP) 396 396 { 397 #if H_MV_ALIGN_HM_15 398 xInitGOP( iPOCLast, iNumPicRcvd, rcListPic, rcListPicYuvRecOut, false ); 399 #else 397 400 xInitGOP( iPOCLast, iNumPicRcvd, rcListPic, rcListPicYuvRecOut ); 401 #endif 398 402 m_iNumPicCoded = 0; 399 403 } … … 937 941 pcSlice->setRefPicList ( rcListPic ); 938 942 #endif 939 #if MTK_SINGLE_DEPTH_MODE_I0095943 #if H_3D_SINGLE_DEPTH 940 944 TEncTop* pcEncTop = (TEncTop*) m_pcCfg; 941 945 bool enableSingleDepthMode=false; … … 971 975 #endif 972 976 #endif 973 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX977 #if H_3D_IC 974 978 pcSlice->setICEnableCandidate( m_aICEnableCandidate ); 975 979 pcSlice->setICEnableNum( m_aICEnableNum ); … … 1228 1232 UInt uiRealEndAddress = uiExternalAddress*pcPic->getNumPartInCU()+uiInternalAddress; 1229 1233 1230 UInt uiCummulativeTileWidth;1231 UInt uiCummulativeTileHeight;1232 1234 Int p, j; 1233 1235 UInt uiEncCUAddr; 1234 1236 1235 //set NumColumnsMinus1 and NumRowsMinus1 1236 pcPic->getPicSym()->setNumColumnsMinus1( pcSlice->getPPS()->getNumColumnsMinus1() ); 1237 pcPic->getPicSym()->setNumRowsMinus1( pcSlice->getPPS()->getNumRowsMinus1() ); 1238 1239 //create the TComTileArray 1240 pcPic->getPicSym()->xCreateTComTileArray(); 1241 1242 if( pcSlice->getPPS()->getUniformSpacingFlag() == 1 ) 1243 { 1244 //set the width for each tile 1245 for(j=0; j < pcPic->getPicSym()->getNumRowsMinus1()+1; j++) 1246 { 1247 for(p=0; p < pcPic->getPicSym()->getNumColumnsMinus1()+1; p++) 1248 { 1249 pcPic->getPicSym()->getTComTile( j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p )-> 1250 setTileWidth( (p+1)*pcPic->getPicSym()->getFrameWidthInCU()/(pcPic->getPicSym()->getNumColumnsMinus1()+1) 1251 - (p*pcPic->getPicSym()->getFrameWidthInCU())/(pcPic->getPicSym()->getNumColumnsMinus1()+1) ); 1252 } 1253 } 1254 1255 //set the height for each tile 1256 for(j=0; j < pcPic->getPicSym()->getNumColumnsMinus1()+1; j++) 1257 { 1258 for(p=0; p < pcPic->getPicSym()->getNumRowsMinus1()+1; p++) 1259 { 1260 pcPic->getPicSym()->getTComTile( p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j )-> 1261 setTileHeight( (p+1)*pcPic->getPicSym()->getFrameHeightInCU()/(pcPic->getPicSym()->getNumRowsMinus1()+1) 1262 - (p*pcPic->getPicSym()->getFrameHeightInCU())/(pcPic->getPicSym()->getNumRowsMinus1()+1) ); 1263 } 1264 } 1265 } 1266 else 1267 { 1268 //set the width for each tile 1269 for(j=0; j < pcPic->getPicSym()->getNumRowsMinus1()+1; j++) 1270 { 1271 uiCummulativeTileWidth = 0; 1272 for(p=0; p < pcPic->getPicSym()->getNumColumnsMinus1(); p++) 1273 { 1274 pcPic->getPicSym()->getTComTile( j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p )->setTileWidth( pcSlice->getPPS()->getColumnWidth(p) ); 1275 uiCummulativeTileWidth += pcSlice->getPPS()->getColumnWidth(p); 1276 } 1277 pcPic->getPicSym()->getTComTile(j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p)->setTileWidth( pcPic->getPicSym()->getFrameWidthInCU()-uiCummulativeTileWidth ); 1278 } 1279 1280 //set the height for each tile 1281 for(j=0; j < pcPic->getPicSym()->getNumColumnsMinus1()+1; j++) 1282 { 1283 uiCummulativeTileHeight = 0; 1284 for(p=0; p < pcPic->getPicSym()->getNumRowsMinus1(); p++) 1285 { 1286 pcPic->getPicSym()->getTComTile( p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j )->setTileHeight( pcSlice->getPPS()->getRowHeight(p) ); 1287 uiCummulativeTileHeight += pcSlice->getPPS()->getRowHeight(p); 1288 } 1289 pcPic->getPicSym()->getTComTile(p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j)->setTileHeight( pcPic->getPicSym()->getFrameHeightInCU()-uiCummulativeTileHeight ); 1290 } 1291 } 1292 //intialize each tile of the current picture 1293 pcPic->getPicSym()->xInitTiles(); 1237 pcPic->getPicSym()->initTiles(pcSlice->getPPS()); 1294 1238 1295 1239 // Allocate some coders, now we know how many tiles there are. … … 1814 1758 1815 1759 #if SETTING_NO_OUT_PIC_PRIOR 1760 pcSlice->setNoRaslOutputFlag(false); 1816 1761 if (pcSlice->isIRAP()) 1817 1762 { … … 1821 1766 } 1822 1767 //the inference for NoOutputPriorPicsFlag 1768 // KJS: This cannot happen at the encoder 1823 1769 if (!m_bFirst && pcSlice->isIRAP() && pcSlice->getNoRaslOutputFlag()) 1824 1770 { … … 2492 2438 assert (m_iGopSize > 0); 2493 2439 2494 return;2495 }2496 2497 Void TEncGOP::xInitGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut )2498 {2499 assert( iNumPicRcvd > 0 );2500 // Exception for the first frame2501 if ( iPOCLast == 0 )2502 {2503 m_iGopSize = 1;2504 }2505 else2506 m_iGopSize = m_pcCfg->getGOPSize();2507 2508 assert (m_iGopSize > 0);2509 2510 2440 return; 2511 2441 } -
trunk/source/Lib/TLibEncoder/TEncGOP.h
r1066 r1084 116 116 #endif 117 117 #endif 118 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX119 Int *m_aICEnableCandidate;120 Int *m_aICEnableNum;118 #if H_3D_IC 119 Int* m_aICEnableCandidate; 120 Int* m_aICEnableNum; 121 121 #endif 122 122 //--Adaptive Loop filter … … 200 200 201 201 Void xInitGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, bool isField ); 202 Void xInitGOP ( Int iPOC, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut );203 202 Void xGetBuffer ( TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, Int iNumPicRcvd, Int iTimeOffset, TComPic*& rpcPic, TComPicYuv*& rpcPicYuvRecOut, Int pocCurr, bool isField ); 204 203 -
trunk/source/Lib/TLibEncoder/TEncSbac.cpp
r1066 r1084 58 58 , m_cCUSplitFlagSCModel ( 1, 1, NUM_SPLIT_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels ) 59 59 , m_cCUSkipFlagSCModel ( 1, 1, NUM_SKIP_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 60 #if MTK_SINGLE_DEPTH_MODE_I009560 #if H_3D_SINGLE_DEPTH 61 61 , m_cCUSingleDepthFlagSCModel ( 1, 1, NUM_SINGLEDEPTH_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 62 62 , m_cSingleDepthValueSCModel ( 1, 1, NUM_SINGLE_DEPTH_VALUE_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) … … 134 134 135 135 m_cCUSkipFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG ); 136 #if MTK_SINGLE_DEPTH_MODE_I0095136 #if H_3D_SINGLE_DEPTH 137 137 m_cCUSingleDepthFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 138 138 m_cSingleDepthValueSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); … … 214 214 curCost = m_cCUSplitFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SPLIT_FLAG ); 215 215 curCost += m_cCUSkipFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SKIP_FLAG ); 216 #if MTK_SINGLE_DEPTH_MODE_I0095216 #if H_3D_SINGLE_DEPTH 217 217 curCost += m_cCUSingleDepthFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 218 218 curCost += m_cSingleDepthValueSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); … … 255 255 curCost += m_CUTransquantBypassFlagSCModel.calcCost( curSliceType, qp, (UChar*)INIT_CU_TRANSQUANT_BYPASS_FLAG ); 256 256 #if H_3D_DIM 257 #if SEPARATE_FLAG_I0085258 257 if( m_pcSlice->getVpsDepthModesFlag() || m_pcSlice->getIVPFlag() ) 259 #else260 if( m_pcSlice->getVpsDepthModesFlag() )261 #endif262 258 { 263 259 curCost += m_cDepthIntraModeSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_DEPTH_INTRA_MODE ); … … 291 287 292 288 m_cCUSkipFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SKIP_FLAG ); 293 #if MTK_SINGLE_DEPTH_MODE_I0095289 #if H_3D_SINGLE_DEPTH 294 290 m_cCUSingleDepthFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLEDEPTH_FLAG ); 295 291 m_cSingleDepthValueSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_SINGLE_DEPTH_VALUE_DATA ); … … 454 450 m_pcBinIf->encodeBinsEP( bins, numBins ); 455 451 } 456 #if MTK_SINGLE_DEPTH_MODE_I0095452 #if H_3D_SINGLE_DEPTH 457 453 Void TEncSbac::codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx ) 458 454 { … … 462 458 { 463 459 UInt uiUnaryIdx = (UInt) pcCU->getSingleDepthValue(uiAbsPartIdx); 464 UInt uiNumCand = MTK_SINGLE_DEPTH_MODE_CANDIDATE_LIST_SIZE;460 UInt uiNumCand = SINGLE_DEPTH_MODE_CAND_LIST_SIZE; 465 461 if ( uiNumCand > 1 ) 466 462 { … … 563 559 564 560 #endif 565 566 #if !FIX_TICKET_76567 #if H_3D_DIM_SDC568 Void TEncSbac::xCodeSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiSegment )569 {570 assert( pcCU->getSlice()->getIsDepth() );571 assert( pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_2Nx2N );572 assert( pcCU->getSDCFlag(uiAbsPartIdx) );573 assert( uiSegment < 2 );574 575 Pel segmentDCOffset = pcCU->getSDCSegmentDCOffset(uiSegment, uiAbsPartIdx);576 577 UInt uiResidual = segmentDCOffset == 0 ? 0 : 1;578 UInt uiSign = segmentDCOffset < 0 ? 1 : 0;579 UInt uiAbsIdx = abs(segmentDCOffset);580 581 #if H_3D_DIM_DLT582 UInt uiMaxResidualBits = pcCU->getSlice()->getPPS()->getDLT()->getBitsPerDepthValue( pcCU->getSlice()->getLayerIdInVps() );583 #else584 UInt uiMaxResidualBits = g_bitDepthY;585 #endif586 assert( uiMaxResidualBits <= g_bitDepthY );587 588 // residual flag589 m_pcBinIf->encodeBin( uiResidual, m_cSDCResidualFlagSCModel.get( 0, 0, 0 ) );590 #if H_MV_ENC_DEC_TRAC591 DTRACE_CU("sdc_residual_flag[i]", uiResidual)592 #endif593 594 if (uiResidual)595 {596 // encode sign bit of residual597 m_pcBinIf->encodeBinEP( uiSign );598 #if H_MV_ENC_DEC_TRAC599 DTRACE_CU("sdc_residual_sign_flag[i]", uiSign)600 #endif601 #if H_3D_DIM_DLT602 UInt uiNumDepthValues = pcCU->getSlice()->getPPS()->getDLT()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() );603 #else604 UInt uiNumDepthValues = ((1 << g_bitDepthY)-1);605 #endif606 607 assert(uiAbsIdx <= uiNumDepthValues);608 609 // encode residual magnitude610 uiAbsIdx -= 1;611 612 #if H_MV_ENC_DEC_TRAC613 DTRACE_CU("sdc_residual_abs_minus1[i]", uiAbsIdx)614 #endif615 616 // prefix part617 if ( uiAbsIdx == 0 )618 {619 m_pcBinIf->encodeBin( 0, m_cSDCResidualSCModel.get(0, 0, 0) );620 }621 else622 {623 UInt l = uiAbsIdx;624 UInt k = 0;625 UInt uiPrefixThreshold = ((uiNumDepthValues * 3) >> 2);626 while ( l > 0 && k < uiPrefixThreshold )627 {628 m_pcBinIf->encodeBin( 1, m_cSDCResidualSCModel.get(0, 0, 0) );629 l--;630 k++;631 }632 if ( uiAbsIdx < uiPrefixThreshold )633 {634 m_pcBinIf->encodeBin( 0, m_cSDCResidualSCModel.get(0, 0, 0) );635 }636 else637 { // suffix part638 uiAbsIdx -= uiPrefixThreshold;639 UInt uiSuffixLength = numBitsForValue(uiNumDepthValues - uiPrefixThreshold);640 UInt uiBitInfo = 0;641 for ( Int i = 0; i < uiSuffixLength; i++)642 {643 uiBitInfo = ( uiAbsIdx & ( 1 << i ) ) >> i;644 m_pcBinIf->encodeBinEP( uiBitInfo);645 }646 }647 }648 649 }650 }651 #endif652 #endif653 561 #endif 654 562 … … 717 625 PartSize eSize = pcCU->getPartitionSize( uiAbsPartIdx ); 718 626 #if H_3D_QTLPC 719 #if MTK_I0099_VPS_EX2720 627 TComVPS *vps = pcCU->getPic()->getSlice(0)->getVPS(); 721 628 Bool bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId()); 722 #else723 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS();724 #endif725 629 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 726 630 Bool bDepthMapDetect = (pcTexture != NULL); … … 731 635 Bool depthDependent = false; 732 636 UInt uiTexturePart = eSize; 733 #if MTK_I0099_VPS_EX2 734 #if LGE_FCO_I0116637 638 #if H_3D_FCO 735 639 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag && pcTexture->getReconMark()) 736 640 #else 737 641 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag ) 738 #endif739 #else740 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC() )741 642 #endif 742 643 { … … 1097 998 Bool bCodeSplitFlag = true; 1098 999 1099 #if MTK_I0099_VPS_EX21100 1000 TComVPS *vps = pcCU->getPic()->getSlice(0)->getVPS(); 1101 1001 Bool bLimQtPredFlag = vps->getLimQtPredFlag(pcCU->getPic()->getSlice(0)->getLayerId()); 1102 #else1103 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS();1104 #endif1105 1002 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 1106 1003 Bool bDepthMapDetect = (pcTexture != NULL); … … 1109 1006 Bool rapPic = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA); 1110 1007 1111 #if MTK_I0099_VPS_EX2 1112 #if LGE_FCO_I0116 1008 #if H_3D_FCO 1113 1009 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag && pcTexture->getReconMark() ) 1114 1010 #else 1115 1011 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && bLimQtPredFlag ) 1116 #endif1117 #else1118 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC())1119 1012 #endif 1120 1013 { … … 1167 1060 dir[j] = pcCU->getLumaIntraDir( absPartIdx+partOffset*j ); 1168 1061 #if H_3D_DIM 1169 #if SEPARATE_FLAG_I00851170 1062 if( pcCU->getSlice()->getVpsDepthModesFlag() || pcCU->getSlice()->getIVPFlag() ) 1171 #else1172 if( pcCU->getSlice()->getVpsDepthModesFlag() )1173 #endif1174 1063 { 1175 1064 codeIntraDepth( pcCU, absPartIdx+partOffset*j ); … … 1317 1206 } 1318 1207 //mode coding 1319 #if SEPARATE_FLAG_I00851320 1208 if( pcCU->getSlice()->getVpsDepthModesFlag() && pcCU->getSlice()->getIVPFlag()) 1321 1209 { 1322 1210 m_pcBinIf->encodeBin( uiCodeIdx == 0 ? 0 : 1, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) ); 1323 1211 } 1324 #else1325 m_pcBinIf->encodeBin( uiCodeIdx == 0 ? 0 : 1, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) );1326 #endif1327 1212 } 1328 1213 } … … 2368 2253 } 2369 2254 2370 #if HS_DMM_SIGNALLING_I01202371 2255 UInt uiNumSegments = isDimMode( pcCU->getLumaIntraDir( absPartIdx ) ) ? 2 : 1; 2372 2256 UInt dimDeltaDC = 1; 2373 #else 2374 UInt uiNumSegments = 0; 2375 UInt dimDeltaDC = 0; 2376 #endif 2377 2378 #if HS_DMM_SIGNALLING_I0120 2257 2379 2258 if( pcCU->isIntra( absPartIdx ) && pcCU->getSDCFlag( absPartIdx )) 2380 2259 { 2381 #else2382 if( pcCU->isIntra( absPartIdx ) )2383 {2384 UInt dir = pcCU->getLumaIntraDir( absPartIdx );2385 uiNumSegments = isDimMode( dir ) ? 2 : 1;2386 2387 if( pcCU->getSDCFlag( absPartIdx ) )2388 {2389 #endif2390 2260 if( uiNumSegments == 1 ) 2391 2261 { … … 2396 2266 dimDeltaDC = ( pcCU->getSDCSegmentDCOffset( 0, absPartIdx ) || pcCU->getSDCSegmentDCOffset( 1, absPartIdx ) ) ? 1 : 0; 2397 2267 } 2398 #if !HS_DMM_SIGNALLING_I01202399 }2400 else2401 {2402 dimDeltaDC = isDimDeltaDC( dir );2403 }2404 #endif2405 2268 m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get( 0, 0, 0 ) ); 2406 2269 } 2407 #if !HS_DMM_SIGNALLING_I01202408 else //all-zero inter SDC is not allowed2409 {2410 uiNumSegments = 1;2411 dimDeltaDC = 1;2412 }2413 #endif2414 2270 2415 2271 if( dimDeltaDC ) … … 2447 2303 Void TEncSbac::codeDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ) 2448 2304 { 2449 #if SEC_DBBP_EXPLICIT_SIG_I00772450 2305 PartSize ePartSize = pcCU->getPartitionSize( uiAbsPartIdx ); 2451 2306 AOF( ePartSize == SIZE_2NxN || ePartSize == SIZE_Nx2N ); 2452 #endif2453 2307 AOF( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) ); 2454 2308 AOF( !pcCU->getSlice()->getIsDepth() ); -
trunk/source/Lib/TLibEncoder/TEncSbac.h
r1039 r1084 130 130 Void xCodeDmm1WedgeIdx ( UInt uiTabIdx, Int iNumBit ); 131 131 #endif 132 #if !FIX_TICKET_76133 #if H_3D_DIM_SDC134 Void xCodeSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiSegment );135 #endif136 #endif137 132 #endif 138 133 … … 155 150 Void codeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ); 156 151 Void codeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 157 #if MTK_SINGLE_DEPTH_MODE_I0095152 #if H_3D_SINGLE_DEPTH 158 153 Void codeSingleDepthMode( TComDataCU* pcCU, UInt uiAbsPartIdx ); 159 154 #endif … … 224 219 ContextModel3DBuffer m_cCUSplitFlagSCModel; 225 220 ContextModel3DBuffer m_cCUSkipFlagSCModel; 226 #if MTK_SINGLE_DEPTH_MODE_I0095221 #if H_3D_SINGLE_DEPTH 227 222 ContextModel3DBuffer m_cCUSingleDepthFlagSCModel; 228 223 ContextModel3DBuffer m_cSingleDepthValueSCModel; -
trunk/source/Lib/TLibEncoder/TEncSearch.cpp
r1066 r1084 915 915 } 916 916 m_pcEntropyCoder->encodeSkipFlag( pcCU, 0, true ); 917 #if MTK_SINGLE_DEPTH_MODE_I0095917 #if H_3D_SINGLE_DEPTH 918 918 m_pcEntropyCoder->encodeSingleDepthMode(pcCU, 0, true ); 919 919 if(!pcCU->getSingleDepthFlag(uiAbsPartIdx)) … … 921 921 m_pcEntropyCoder->encodePredMode( pcCU, 0, true ); 922 922 } 923 #if MTK_SINGLE_DEPTH_MODE_I0095923 #if H_3D_SINGLE_DEPTH 924 924 else 925 925 { … … 927 927 } 928 928 #endif 929 #if MTK_SINGLE_DEPTH_MODE_I0095929 #if H_3D_SINGLE_DEPTH 930 930 if(!pcCU->getSingleDepthFlag(uiAbsPartIdx)) 931 931 { … … 945 945 } 946 946 } 947 #if MTK_SINGLE_DEPTH_MODE_I0095948 } 949 #endif 950 } 951 #if MTK_SINGLE_DEPTH_MODE_I0095947 #if H_3D_SINGLE_DEPTH 948 } 949 #endif 950 } 951 #if H_3D_SINGLE_DEPTH 952 952 if(!pcCU->getSingleDepthFlag(uiAbsPartIdx)) 953 953 { … … 995 995 } 996 996 } 997 #if MTK_SINGLE_DEPTH_MODE_I0095997 #if H_3D_SINGLE_DEPTH 998 998 } 999 999 #endif … … 1859 1859 dRDCost += dSingleCost; 1860 1860 } 1861 #if MTK_SINGLE_DEPTH_MODE_I00951861 #if H_3D_SINGLE_DEPTH 1862 1862 Void TEncSearch::xIntraCodingSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, TComYuv* pcOrgYuv, TComYuv* pcPredYuv, Dist& ruiDist, Double& dRDCost, Int iTestDepthIdx, Pel *DepthNeighbor ) 1863 1863 { … … 1970 1970 UInt dimType = getDimType ( uiLumaPredMode ); 1971 1971 UInt patternID = pcCU->getDmmWedgeTabIdx(dimType, uiAbsPartIdx); 1972 #if SHARP_DMM1_I01101973 1972 UInt uiBaseWidth = pcCU->isDMM1UpscaleMode(uiWidth) ? pcCU->getDMM1BasePatternWidth(uiWidth) : uiWidth; 1974 1973 if ( patternID >= g_dmmWedgeLists[g_aucConvertToBit[uiBaseWidth]].size() && dimType == DMM1_IDX ) 1975 #else 1976 if ( patternID >= g_dmmWedgeLists[g_aucConvertToBit[uiWidth]].size() && dimType == DMM1_IDX ) 1977 #endif 1978 { 1979 #if SHARP_DMM1_I0110 1974 { 1980 1975 if (g_aucConvertToBit[uiBaseWidth] == 2) // Encoder method. Avoid DMM1 pattern list index exceeds the maximum DMM1 pattern number when SDC split is used. 1981 #else1982 if (g_aucConvertToBit[uiWidth] == 2) // Encoder method. Avoid DMM1 pattern list index exceeds the maximum DMM1 pattern number when SDC split is used.1983 #endif1984 1976 { 1985 1977 patternID = 1349; // Split 32x32 to 16x16. 1349: Maximum DMM1 pattern number when block size is 16x16 … … 2043 2035 Int uiTabIdx = pcCU->getDmmWedgeTabIdx(DMM1_IDX, uiAbsPartIdx); 2044 2036 2045 #if SHARP_DMM1_I01102046 2037 WedgeList* pacWedgeList = pcCU->isDMM1UpscaleMode( uiWidth ) ? &g_dmmWedgeLists[(g_aucConvertToBit[pcCU->getDMM1BasePatternWidth(uiWidth)])] : &g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])]; 2047 #else2048 WedgeList* pacWedgeList = &g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])];2049 #endif2050 2038 TComWedgelet* pcWedgelet = &(pacWedgeList->at( uiTabIdx )); 2051 2039 2052 2040 uiNumSegments = 2; 2053 #if SHARP_DMM1_I01102054 2041 pbMask = pcCU->isDMM1UpscaleMode( uiWidth ) ? pcWedgelet->getScaledPattern( uiWidth ) : pcWedgelet->getPattern(); 2055 2042 uiMaskStride = pcCU->isDMM1UpscaleMode( uiWidth ) ? uiWidth : pcWedgelet->getStride(); 2056 #else2057 pbMask = pcWedgelet->getPattern();2058 uiMaskStride = pcWedgelet->getStride();2059 #endif2060 2043 } 2061 2044 if( getDimType( uiLumaPredMode ) == DMM4_IDX ) … … 2878 2861 pcCU->setChromIntraDirSubParts( uiBestMode, 0, pcCU->getDepth( 0 ) ); 2879 2862 } 2880 #if MTK_SINGLE_DEPTH_MODE_I00952863 #if H_3D_SINGLE_DEPTH 2881 2864 Void 2882 2865 TEncSearch::estIntraPredSingleDepth( TComDataCU* pcCU, … … 2900 2883 Pel DepthNeighbours[5]; 2901 2884 //construction of depth candidates 2902 for( Int i = 0; (i < 5) && (index< MTK_SINGLE_DEPTH_MODE_CANDIDATE_LIST_SIZE) ; i++ )2885 for( Int i = 0; (i < 5) && (index<SINGLE_DEPTH_MODE_CAND_LIST_SIZE) ; i++ ) 2903 2886 { 2904 2887 if(!pcCU->getNeighDepth (0, 0, &testDepth, i)) … … 2983 2966 UInt& ruiDistC, 2984 2967 Bool bLumaOnly 2985 #if H HI_DMM4_ENC_I00662968 #if H_3D_DIM 2986 2969 , Bool bOnlyIVP 2987 2970 #endif … … 3032 3015 Int numModesForFullRD = g_aucIntraModeNumFast[ uiWidthBit ]; 3033 3016 3034 #if H HI_DMM4_ENC_I00663017 #if H_3D_DIM 3035 3018 if( bOnlyIVP ) 3036 3019 { … … 3080 3063 UInt iModeBits = xModeBitsIntra( pcCU, uiMode, uiPU, uiPartOffset, uiDepth, uiInitTrDepth ); 3081 3064 #if H_3D_VSO // M35 3082 #if H_3D_VSO_FIX // This fix should be enabled after verification3083 3065 Double dLambda; 3084 3066 if ( m_pcRdCost->getUseLambdaScaleVSO() ) … … 3092 3074 3093 3075 Double cost = (Double)uiSad + (Double)iModeBits * dLambda; 3094 #else3095 Double cost = (Double)uiSad + (Double)iModeBits * m_pcRdCost->getSqrtLambda();3096 #endif3097 3076 #else 3098 3077 Double cost = (Double)uiSad + (Double)iModeBits * m_pcRdCost->getSqrtLambda(); … … 3135 3114 } 3136 3115 } 3137 #if H HI_DMM4_ENC_I00663116 #if H_3D_DIM 3138 3117 } 3139 3118 #endif … … 3143 3122 if( m_pcEncCfg->getIsDepth() && uiWidth >= DIM_MIN_SIZE && uiWidth <= DIM_MAX_SIZE && uiWidth == uiHeight ) 3144 3123 { 3145 #if HHI_DMM4_ENC_I00663146 #if SEPARATE_FLAG_I00853147 3124 if( bOnlyIVP && m_pcEncCfg->getUseIVP() ) 3148 #else3149 if( bOnlyIVP )3150 #endif3151 3125 { 3152 3126 TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight ); … … 3158 3132 pcCU->setDimDeltaDC( DMM4_IDX, 1, uiPartOffset, deltaDC2 ); 3159 3133 3160 #if HS_DMM_SIGNALLING_I01203161 3134 uiRdModeList[ numModesForFullRD++ ] = (DMM4_IDX+DIM_OFFSET); 3162 #else3163 uiRdModeList[ numModesForFullRD++ ] = (2*DMM4_IDX +DIM_OFFSET);3164 if( deltaDC1 != 0 || deltaDC2 != 0 )3165 uiRdModeList[ numModesForFullRD++ ] = (2*DMM4_IDX+1+DIM_OFFSET);3166 #endif3167 3135 dmm4Segmentation->destroy(); delete dmm4Segmentation; 3168 3136 } 3169 3137 else 3170 3138 { 3171 #endif3172 3139 #if H_3D_FAST_DEPTH_INTRA 3173 3140 Int threshold = max(((pcCU->getQP(0))>>3)-1,3); … … 3177 3144 3178 3145 #if H_3D_DIM_DMM 3179 #if SEPARATE_FLAG_I00853180 3146 if( ( m_pcEncCfg->getUseDMM() || m_pcEncCfg->getUseIVP() ) 3181 #else3182 if( m_pcEncCfg->getUseDMM()3183 #endif3184 3147 #if H_3D_FAST_DEPTH_INTRA 3185 3148 && (uiRdModeList[0] != PLANAR_IDX || varCU >= varThreshold) … … 3187 3150 ) 3188 3151 { 3189 #if SEPARATE_FLAG_I00853190 3152 UInt uiStart, uiEnd; 3191 3153 if( m_pcEncCfg->getUseDMM() && m_pcEncCfg->getUseIVP() ) … … 3210 3172 } 3211 3173 for( UInt dmmType = uiStart; dmmType < uiEnd; dmmType++ ) 3212 #else3213 for( UInt dmmType = 0; dmmType < DMM_NUM_TYPE; dmmType++ )3214 #endif3215 3174 { 3216 3175 #if H_3D_FCO 3217 3176 TComPic* picTexture = pcCU->getSlice()->getIvPic(false, pcCU->getSlice()->getViewIndex() ); 3218 #if LGE_FCO_I01163177 #if H_3D_FCO 3219 3178 if ( !picTexture->getReconMark() && (DMM4_IDX == dmmType ) ) 3220 3179 #else … … 3234 3193 xSearchDmm1Wedge( pcCU, uiPartOffset, piOrg, uiStride, uiWidth, uiHeight, uiTabIdx ); 3235 3194 pcCU->setDmmWedgeTabIdxSubParts( uiTabIdx, dmmType, uiPartOffset, uiDepth + uiInitTrDepth ); 3236 #if SHARP_DMM1_I01103237 3195 biSegmentation = pcCU->isDMM1UpscaleMode( uiWidth ) ? 3238 3196 &(g_dmmWedgeLists[(g_aucConvertToBit[pcCU->getDMM1BasePatternWidth(uiWidth)])][uiTabIdx]) : &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]); 3239 #else3240 biSegmentation = &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]);3241 #endif3242 3197 } break; 3243 3198 … … 3254 3209 if( biSegmentation ) 3255 3210 { 3256 #if SHARP_DMM1_I01103257 3211 if( dmmType == DMM1_IDX && pcCU->isDMM1UpscaleMode( uiWidth ) ){ 3258 3212 xSearchDmmDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, biSegmentation->getScaledPattern(uiWidth), uiWidth, uiWidth, uiHeight, deltaDC1, deltaDC2 ); … … 3262 3216 xSearchDmmDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, biSegmentation->getPattern(), biSegmentation->getStride(), uiWidth, uiHeight, deltaDC1, deltaDC2 ); 3263 3217 } 3264 #else3265 xSearchDmmDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, biSegmentation->getPattern(), biSegmentation->getStride(), uiWidth, uiHeight, deltaDC1, deltaDC2 );3266 #endif3267 3218 pcCU->setDimDeltaDC( dmmType, 0, uiPartOffset, deltaDC1 ); 3268 3219 pcCU->setDimDeltaDC( dmmType, 1, uiPartOffset, deltaDC2 ); 3269 3220 3270 #if HS_DMM_SIGNALLING_I01203271 3221 uiRdModeList[ numModesForFullRD++ ] = (dmmType +DIM_OFFSET); 3272 #else3273 uiRdModeList[ numModesForFullRD++ ] = (2*dmmType +DIM_OFFSET);3274 #if HHI_DMM4_ENC_I00663275 if( deltaDC1 != 0 || deltaDC2 != 0 )3276 #endif3277 uiRdModeList[ numModesForFullRD++ ] = (2*dmmType+1+DIM_OFFSET);3278 #endif3279 3280 3222 if( DMM4_IDX == dmmType ) { biSegmentation->destroy(); delete biSegmentation; } 3281 3223 } 3282 3224 } 3283 3225 } 3284 #if H HI_DMM4_ENC_I00663226 #if H_3D_DIM 3285 3227 } 3286 3228 #endif … … 3295 3237 3296 3238 UInt uiBestPUMode = 0; 3297 #if SCU_HS_FAST_INTRA_SDC_I01233239 #if H_3D_FAST_INTRA_SDC 3298 3240 UInt uiBestPUModeConv = 0; 3299 3241 UInt uiSecondBestPUModeConv = 0; … … 3309 3251 Double dBestPUCost = MAX_DOUBLE; 3310 3252 3311 #if SCU_HS_FAST_INTRA_SDC_I01233253 #if H_3D_FAST_INTRA_SDC 3312 3254 Double dBestPUCostConv = MAX_DOUBLE; 3313 3255 UInt varCU = m_pcRdCost->calcVAR(piOrg, uiStride, uiWidth,uiHeight,pcCU->getDepth(0)); … … 3319 3261 Pel apBestDCOffsets[2] = {0,0}; 3320 3262 #endif 3321 #if SCU_HS_FAST_INTRA_SDC_I01233263 #if H_3D_FAST_INTRA_SDC 3322 3264 for( UInt uiMode = 0; uiMode < numModesForFullRD + rdSDC; uiMode++ ) 3323 3265 #else … … 3326 3268 { 3327 3269 // set luma prediction mode 3328 #if ! SCU_HS_FAST_INTRA_SDC_I01233270 #if !H_3D_FAST_INTRA_SDC 3329 3271 UInt uiOrgMode = uiRdModeList[uiMode]; 3330 3272 #endif 3331 3273 3332 #if SCU_HS_FAST_INTRA_SDC_I01233274 #if H_3D_FAST_INTRA_SDC 3333 3275 UInt uiOrgMode; 3334 3276 if (uiMode < numModesForFullRD) … … 3356 3298 3357 3299 #if H_3D_DIM_SDC 3358 #if SCU_HS_FAST_INTRA_SDC_I01233300 #if H_3D_FAST_INTRA_SDC 3359 3301 Bool bTestSDC = ( m_pcEncCfg->getUseSDC() && pcCU->getSDCAvailable(uiPartOffset) && uiMode >= numModesForFullRD); 3360 3302 #else … … 3364 3306 for( UInt uiSDC=0; uiSDC<=(bTestSDC?1:0); uiSDC++ ) 3365 3307 { 3366 #if SCU_HS_FAST_INTRA_SDC_I01233308 #if H_3D_FAST_INTRA_SDC 3367 3309 if (!uiSDC && uiMode >= numModesForFullRD) continue; 3368 3310 #endif 3369 3311 pcCU->setSDCFlagSubParts( (uiSDC != 0), uiPartOffset, uiDepth + uiInitTrDepth ); 3370 #if FAST_SDC_OFFSET_DECISION_I00843371 3312 Double dOffsetCost[3] = {MAX_DOUBLE,MAX_DOUBLE,MAX_DOUBLE}; 3372 3313 for( Int iOffset = 1; iOffset <= 5; iOffset++ ) 3373 #else 3374 for( Int iSDCDeltaResi = -2; iSDCDeltaResi <= 2; iSDCDeltaResi++ ) 3375 #endif 3376 { 3377 #if FAST_SDC_OFFSET_DECISION_I0084 3314 { 3378 3315 Int iSDCDeltaResi = 0; 3379 3316 if(iOffset % 2 == 0) … … 3385 3322 iSDCDeltaResi = -1 * (iOffset >> 1); 3386 3323 } 3387 #endif3388 3324 if( ( uiSDC == 0 ) && iSDCDeltaResi != 0 ) 3389 3325 { 3390 3326 continue; 3391 3327 } 3392 #if FAST_SDC_OFFSET_DECISION_I00843393 3328 if( iOffset > 3) 3394 3329 { … … 3407 3342 } 3408 3343 #endif 3409 #endif3410 3344 3411 3345 #if H_3D_DIM_ENC || H_3D_DIM_SDC … … 3452 3386 // start encoding with SDC 3453 3387 xIntraCodingSDC(pcCU, uiPartOffset, pcOrgYuv, pcPredYuv, uiPUDistY, dPUCost, ( testZeroResi != 0 ), iSDCDeltaResi ); 3454 #if FAST_SDC_OFFSET_DECISION_I00843455 3388 if ( testZeroResi == 0 && iOffset <= 3 ) 3456 3389 { 3457 3390 dOffsetCost [iOffset -1] = dPUCost; 3458 3391 } 3459 #endif3460 3392 } 3461 3393 else … … 3465 3397 #if H_3D_DIM_ENC 3466 3398 xRecurIntraCodingQT( pcCU, uiInitTrDepth, uiPartOffset, bLumaOnly, pcOrgYuv, pcPredYuv, pcResiYuv, uiPUDistY, uiPUDistC, true, dPUCost, (testZeroResi != 0) ); 3467 #if SCU_HS_FAST_INTRA_SDC_I01233399 #if H_3D_FAST_INTRA_SDC 3468 3400 if( dPUCost < dBestPUCostConv ) 3469 3401 { … … 4017 3949 #if H_3D_VSP 4018 3950 , Int* vspFlag 4019 #if !FIX_TICKET_794020 , InheritedVSPDisInfo* inheritedVSPDisInfo4021 #endif4022 3951 #endif 4023 3952 #if H_3D_SPIVMP … … 4079 4008 pcCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand); 4080 4009 pcCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours 4081 #if H_3D_VSP && !FIX_TICKET_794082 , inheritedVSPDisInfo4083 #endif4084 4010 #if H_3D_SPIVMP 4085 4011 , pcMvFieldSP, puhInterDirSP … … 4109 4035 pcCU->getInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand); 4110 4036 pcCU->xGetInterMergeCandidates( uiAbsPartIdx, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours 4111 #if H_3D_VSP && !FIX_TICKET_794112 , inheritedVSPDisInfo4113 #endif4114 4037 #if H_3D_SPIVMP 4115 4038 , pcMvFieldSP, puhInterDirSP … … 4132 4055 #endif 4133 4056 } 4134 #if H_3D_VSP && !FIX_TICKET_754135 xRestrictBipredMergeCand( pcCU, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours,vspFlag, numValidMergeCand );4136 #else4137 4057 xRestrictBipredMergeCand( pcCU, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 4138 #endif4139 4058 4140 4059 #if H_3D_DBBP … … 4164 4083 #if H_3D_VSP 4165 4084 pcCU->setVSPFlagSubParts( vspFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) ); 4166 #if !FIX_TICKET_794167 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) );4168 #endif4169 4085 #endif 4170 4086 … … 4266 4182 * \returns Void 4267 4183 */ 4268 #if H_3D_VSP && !FIX_TICKET_754269 Void TEncSearch::xRestrictBipredMergeCand( TComDataCU* pcCU, UInt puIdx, TComMvField* mvFieldNeighbours, UChar* interDirNeighbours, Int* vspFlag, Int numValidMergeCand )4270 #else4271 4184 Void TEncSearch::xRestrictBipredMergeCand( TComDataCU* pcCU, UInt puIdx, TComMvField* mvFieldNeighbours, UChar* interDirNeighbours, Int numValidMergeCand ) 4272 #endif4273 4185 { 4274 4186 if ( pcCU->isBipredRestriction(puIdx) ) … … 4276 4188 for( UInt mergeCand = 0; mergeCand < numValidMergeCand; ++mergeCand ) 4277 4189 { 4278 #if H_3D_VSP && !FIX_TICKET_754279 if ( (interDirNeighbours[mergeCand] == 3) && (vspFlag[mergeCand] == false) )4280 #else4281 4190 if ( interDirNeighbours[mergeCand] == 3 ) 4282 #endif4283 4191 { 4284 4192 interDirNeighbours[mergeCand] = 1; … … 4902 4810 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 4903 4811 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 4904 #if !FIX_TICKET_794905 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM];4906 #endif4907 4812 UInt uiAbsPartIdx = 0; 4908 4813 Int iWidth = 0; … … 4922 4827 #if H_3D_VSP 4923 4828 , vspFlag 4924 #if !FIX_TICKET_794925 , inheritedVSPDisInfo4926 #endif4927 4829 #endif 4928 4830 #if H_3D_SPIVMP … … 4938 4840 #if H_3D_VSP 4939 4841 pcCU->setVSPFlagSubParts( vspFlag[uiMRGIndex], uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4940 #if !FIX_TICKET_794941 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMRGIndex].m_acDvInfo, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) );4942 #endif4943 4842 #endif 4944 4843 #if H_3D_DDD … … 6430 6329 if( bCodeChroma ) 6431 6330 { 6331 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6332 m_pcEntropyCoder->resetBits(); 6432 6333 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_U, uiTrMode ); 6433 6334 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrU, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_U ); 6434 uiSingleBitsU = m_pcEntropyCoder->getNumberOfWrittenBits() - uiSingleBitsY;6335 uiSingleBitsU = m_pcEntropyCoder->getNumberOfWrittenBits(); 6435 6336 6337 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6338 m_pcEntropyCoder->resetBits(); 6436 6339 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_V, uiTrMode ); 6437 6340 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrV, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_V ); 6438 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits() - ( uiSingleBitsY + uiSingleBitsU );6341 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits(); 6439 6342 } 6440 6343 … … 6517 6420 const Double singleCostY = m_pcRdCost->calcRdCost( uiSingleBitsY, uiNonzeroDistY ); 6518 6421 #endif 6422 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6423 6519 6424 m_pcEntropyCoder->resetBits(); 6520 6425 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_LUMA, uiTrMode ); … … 6550 6455 else if( checkTransformSkipY ) 6551 6456 { 6457 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6552 6458 m_pcEntropyCoder->resetBits(); 6553 6459 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_LUMA, uiTrMode ); … … 6606 6512 { 6607 6513 const Double dSingleCostU = m_pcRdCost->calcRdCost( uiSingleBitsU, uiNonzeroDistU ); 6514 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6608 6515 m_pcEntropyCoder->resetBits(); 6609 6516 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_U, uiTrMode ); … … 6631 6538 else if( checkTransformSkipUV ) 6632 6539 { 6540 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6633 6541 m_pcEntropyCoder->resetBits(); 6634 6542 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_U, uiTrMode ); … … 6675 6583 { 6676 6584 const Double dSingleCostV = m_pcRdCost->calcRdCost( uiSingleBitsV, uiNonzeroDistV ); 6585 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6677 6586 m_pcEntropyCoder->resetBits(); 6678 6587 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_V, uiTrMode ); … … 6700 6609 else if( checkTransformSkipUV ) 6701 6610 { 6611 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6702 6612 m_pcEntropyCoder->resetBits(); 6703 6613 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_V, uiTrMode ); … … 6896 6806 pcCU->setCbfSubParts( uiAbsSumTransformSkipV ? uiSetCbf : 0, TEXT_CHROMA_V, uiAbsPartIdx, pcCU->getDepth(0)+uiTrModeC ); 6897 6807 6898 m_pcEntropyCoder->resetBits();6899 6808 uiSingleBitsU = 0; 6900 6809 uiSingleBitsV = 0; … … 6902 6811 if( uiAbsSumTransformSkipU ) 6903 6812 { 6813 m_pcEntropyCoder->resetBits(); 6904 6814 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_U, uiTrMode ); 6905 6815 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrU, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_U ); … … 6944 6854 if( uiAbsSumTransformSkipV ) 6945 6855 { 6856 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6857 m_pcEntropyCoder->resetBits(); 6946 6858 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_V, uiTrMode ); 6947 6859 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrV, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_V ); 6948 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits() - uiSingleBitsU;6860 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits(); 6949 6861 6950 6862 curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCrQpOffset() + pcCU->getSlice()->getSliceQpDeltaCr(); … … 7388 7300 } 7389 7301 m_pcEntropyCoder->encodeSkipFlag ( pcCU, 0, true ); 7390 #if MTK_SINGLE_DEPTH_MODE_I00957302 #if H_3D_SINGLE_DEPTH 7391 7303 m_pcEntropyCoder->encodeSingleDepthMode ( pcCU, 0, true ); 7392 7304 #endif … … 7845 7757 7846 7758 Pel refDC1 = 0; Pel refDC2 = 0; 7847 #if SHARP_DMM1_I01107848 7759 WedgeList* pacWedgeList = pcCU->isDMM1UpscaleMode( uiWidth ) ? &g_dmmWedgeLists[(g_aucConvertToBit[pcCU->getDMM1BasePatternWidth(uiWidth)])] : &g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])]; 7849 7760 WedgeNodeList* pacWedgeNodeList = pcCU->isDMM1UpscaleMode( uiWidth ) ? &g_dmmWedgeNodeLists[(g_aucConvertToBit[pcCU->getDMM1BasePatternWidth(uiWidth)])] : &g_dmmWedgeNodeLists[(g_aucConvertToBit[uiWidth])]; 7850 #else7851 WedgeList* pacWedgeList = &g_dmmWedgeLists [(g_aucConvertToBit[uiWidth])];7852 WedgeNodeList* pacWedgeNodeList = &g_dmmWedgeNodeLists[(g_aucConvertToBit[uiWidth])];7853 #endif7854 7761 7855 7762 // coarse wedge search … … 7859 7766 { 7860 7767 TComWedgelet* pcWedgelet = &(pacWedgeList->at(pacWedgeNodeList->at(uiNodeId).getPatternIdx())); 7861 #if SHARP_DMM1_I01107862 7768 Bool *pbPattern = pcCU->isDMM1UpscaleMode(uiWidth) ? pcWedgelet->getScaledPattern(uiWidth) : pcWedgelet->getPattern(); 7863 7769 UInt uiStride = pcCU->isDMM1UpscaleMode(uiWidth) ? uiWidth : pcWedgelet->getStride(); 7864 7770 xCalcBiSegDCs ( piRef, uiRefStride, pbPattern, uiStride, refDC1, refDC2 ); 7865 7771 xAssignBiSegDCs( piPred, uiPredStride, pbPattern, uiStride, refDC1, refDC2 ); 7866 #else7867 xCalcBiSegDCs ( piRef, uiRefStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 );7868 xAssignBiSegDCs( piPred, uiPredStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 );7869 #endif7870 7772 7871 7773 Dist uiActDist = RDO_DIST_MAX; … … 7903 7805 { 7904 7806 TComWedgelet* pcWedgelet = &(pacWedgeList->at(pacWedgeNodeList->at(uiBestNodeId).getRefineIdx( uiRefId ))); 7905 #if SHARP_DMM1_I01107906 7807 Bool *pbPattern = pcCU->isDMM1UpscaleMode(uiWidth) ? pcWedgelet->getScaledPattern(uiWidth) : pcWedgelet->getPattern(); 7907 7808 UInt uiStride = pcCU->isDMM1UpscaleMode(uiWidth) ? uiWidth : pcWedgelet->getStride(); 7908 7809 xCalcBiSegDCs ( piRef, uiRefStride, pbPattern, uiStride, refDC1, refDC2 ); 7909 7810 xAssignBiSegDCs( piPred, uiPredStride, pbPattern, uiStride, refDC1, refDC2 ); 7910 #else7911 xCalcBiSegDCs ( piRef, uiRefStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 );7912 xAssignBiSegDCs( piPred, uiPredStride, pcWedgelet->getPattern(), pcWedgelet->getStride(), refDC1, refDC2 );7913 #endif7914 7811 Dist uiActDist = RDO_DIST_MAX; 7915 7812 #if H_3D_VSO -
trunk/source/Lib/TLibEncoder/TEncSearch.h
r1039 r1084 181 181 UInt& ruiDistC, 182 182 Bool bLumaOnly 183 #if H HI_DMM4_ENC_I0066183 #if H_3D_DIM 184 184 , Bool bOnlyIVP 185 185 #endif … … 191 191 TComYuv* pcRecoYuv, 192 192 UInt uiPreCalcDistC ); 193 #if MTK_SINGLE_DEPTH_MODE_I0095193 #if H_3D_SINGLE_DEPTH 194 194 Void estIntraPredSingleDepth ( TComDataCU* pcCU, 195 195 TComYuv* pcOrgYuv, … … 354 354 UInt uiAbsPartIdx, 355 355 UInt stateU0V1Both2 ); 356 #if MTK_SINGLE_DEPTH_MODE_I0095356 #if H_3D_SINGLE_DEPTH 357 357 Void xIntraCodingSingleDepth( TComDataCU* pcCU, UInt uiAbsPartIdx, TComYuv* pcOrgYuv, TComYuv* pcPredYuv, Dist& ruiDist, Double& dRDCost, Int iTestDepthIdx, Pel * DepthNeighbor ); 358 358 #endif … … 429 429 #if H_3D_VSP 430 430 , Int* vspFlag 431 #if !FIX_TICKET_79432 , InheritedVSPDisInfo* inheritedVSPDisInfo433 #endif434 431 #endif 435 432 #if H_3D_SPIVMP … … 443 440 TComMvField* mvFieldNeighbours, 444 441 UChar* interDirNeighbours, 445 #if H_3D_VSP && !FIX_TICKET_75446 Int* vspFlag,447 #endif448 442 Int numValidMergeCand ); 449 443 -
trunk/source/Lib/TLibEncoder/TEncTop.cpp
r1066 r1084 72 72 ContextModel::buildNextStateTable(); 73 73 #endif 74 #if H_MV_HLS10_GEN_FIX75 74 #if H_MV 76 75 m_iNumSubstreams = 0; 77 #endif78 76 #endif 79 77 … … 89 87 m_ivPicLists = NULL; 90 88 #endif 91 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX89 #if H_3D_IC 92 90 m_aICEnableCandidate = NULL; 93 91 m_aICEnableNum = NULL; … … 236 234 for (Int iCIIdx = 0; iCIIdx < CI_NUM; iCIIdx ++ ) 237 235 { 238 #if H_MV_HLS10_GEN_FIX239 236 #if H_MV 240 237 xDelete( false, m_pppcRDSbacCoder, iDepth, iCIIdx); … … 244 241 delete m_pppcBinCoderCABAC[iDepth][iCIIdx]; 245 242 #endif 246 #endif247 243 } 248 244 } … … 250 246 for ( iDepth = 0; iDepth < g_uiMaxCUDepth+1; iDepth++ ) 251 247 { 252 #if H_MV_HLS10_GEN_FIX253 248 #if H_MV 254 249 xDelete( true, m_pppcRDSbacCoder , iDepth); … … 258 253 delete [] m_pppcBinCoderCABAC[iDepth]; 259 254 #endif 260 #endif 261 } 262 263 #if H_MV_HLS10_GEN_FIX 255 } 256 264 257 #if H_MV 265 258 xDelete( true, m_pppcRDSbacCoder ); … … 269 262 delete [] m_pppcBinCoderCABAC; 270 263 #endif 271 #endif272 264 for ( UInt ui = 0; ui < m_iNumSubstreams; ui++ ) 273 265 { … … 276 268 for (Int iCIIdx = 0; iCIIdx < CI_NUM; iCIIdx ++ ) 277 269 { 278 #if H_MV_HLS10_GEN_FIX279 270 #if H_MV 280 271 xDelete(false, m_ppppcRDSbacCoders ,ui, iDepth, iCIIdx); … … 284 275 delete m_ppppcBinCodersCABAC[ui][iDepth][iCIIdx]; 285 276 #endif 286 #endif287 277 } 288 278 } … … 290 280 for ( iDepth = 0; iDepth < g_uiMaxCUDepth+1; iDepth++ ) 291 281 { 292 #if H_MV_HLS10_GEN_FIX293 282 #if H_MV 294 283 xDelete(true, m_ppppcRDSbacCoders ,ui, iDepth); … … 298 287 delete [] m_ppppcBinCodersCABAC[ui][iDepth]; 299 288 #endif 300 #endif 301 } 302 303 304 #if H_MV_HLS10_GEN_FIX 289 } 290 291 305 292 #if H_MV 306 293 xDelete(true, m_ppppcRDSbacCoders, ui); … … 310 297 delete[] m_ppppcBinCodersCABAC[ui]; 311 298 #endif 312 #endif 313 } 314 #if H_MV_HLS10_GEN_FIX 299 } 315 300 #if H_MV 316 301 xDelete(true, m_ppppcRDSbacCoders ) ; … … 332 317 delete[] m_pcRdCosts; 333 318 #endif 334 #endif335 319 336 320 #if !H_MV … … 370 354 371 355 xInitPPSforTiles(); 372 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX356 #if H_3D_IC 373 357 m_aICEnableCandidate = new Int[ 10 ]; 374 358 m_aICEnableNum = new Int[ 10 ]; … … 769 753 #if H_MV 770 754 m_cSPS.setUpdateRepFormatFlag ( false ); 771 #if H_MV_HLS10_MULTILAYERSPS772 755 Bool multiLayerExtensionFlag = ( getLayerId() > 0 ) && ( m_cVPS->getNumRefLayers( getLayerId() ) > 0 ); 773 756 … … 778 761 m_cSPS.setSpsScalingListRefLayerId( m_cVPS->getIdRefLayer( getLayerId(), 0 ) ); 779 762 } 780 #else781 m_cSPS.setSpsInferScalingListFlag ( m_layerId > 0 && m_cVPS->getInDirectDependencyFlag( getLayerIdInVps(), 0 ) );782 m_cSPS.setSpsScalingListRefLayerId ( 0 );783 #endif784 763 m_cSPS.setSpsExtensionPresentFlag ( true ); 785 764 m_cSPS.setSpsMultilayerExtensionFlag ( true ); … … 829 808 m_cSPS.setUseAMP ( m_useAMP ); 830 809 831 #if !MTK_I0099_VPS_EX2832 #if H_3D_QTLPC833 m_cSPS.setUseQTL( m_bUseQTL );834 m_cSPS.setUsePC ( m_bUsePC );835 #endif836 #endif837 838 810 for (i = g_uiMaxCUDepth-g_uiAddCUDepth; i < g_uiMaxCUDepth; i++ ) 839 811 { … … 863 835 for( Int is = 0; is < targetDecLayerIdList.size(); is++ ) 864 836 { 865 #if H_MV_HLS10_ADD_LAYERSETS866 837 if ( m_cVPS->getNecessaryLayerFlag( ols, is ) ) 867 838 { 868 839 m_cSPS.inferSpsMaxDecPicBufferingMinus1( m_cVPS, ols, targetDecLayerIdList[is], true ); 869 840 } 870 #else 871 m_cSPS.inferSpsMaxDecPicBufferingMinus1( m_cVPS, ols, targetDecLayerIdList[is], true ); 872 #endif 873 } 874 } 875 #if !H_MV_HLS10_ADD_LAYERSETS 876 m_cVPS->inferDbpSizeLayerSetZero( &m_cSPS, true ); 877 #endif 841 } 842 } 878 843 #endif 879 844 m_cSPS.setPCMBitDepthLuma (g_uiPCMBitDepthLuma); … … 889 854 { 890 855 TComVUI* pcVUI = m_cSPS.getVuiParameters(); 891 pcVUI->setAspectRatioInfoPresentFlag(getAspectRatioI dc() != -1);856 pcVUI->setAspectRatioInfoPresentFlag(getAspectRatioInfoPresentFlag()); 892 857 pcVUI->setAspectRatioIdc(getAspectRatioIdc()); 893 858 pcVUI->setSarWidth(getSarWidth()); … … 1323 1288 Void TEncTop::xInitPPSforTiles() 1324 1289 { 1325 m_cPPS.set UniformSpacingFlag( m_iUniformSpacingIdr);1326 m_cPPS.setNum ColumnsMinus1( m_iNumColumnsMinus1 );1327 m_cPPS.setNum RowsMinus1( m_iNumRowsMinus1 );1328 if( m_iUniformSpacingIdr == 0)1329 { 1330 m_cPPS.set ColumnWidth( m_puiColumnWidth );1331 m_cPPS.set RowHeight( m_puiRowHeight );1290 m_cPPS.setTileUniformSpacingFlag( m_tileUniformSpacingFlag ); 1291 m_cPPS.setNumTileColumnsMinus1( m_iNumColumnsMinus1 ); 1292 m_cPPS.setNumTileRowsMinus1( m_iNumRowsMinus1 ); 1293 if( !m_tileUniformSpacingFlag ) 1294 { 1295 m_cPPS.setTileColumnWidth( m_tileColumnWidth ); 1296 m_cPPS.setTileRowHeight( m_tileRowHeight ); 1332 1297 } 1333 1298 m_cPPS.setLoopFilterAcrossTilesEnabledFlag( m_loopFilterAcrossTilesEnabledFlag ); 1334 1299 1335 1300 // # substreams is "per tile" when tiles are independent. 1336 if (m_iWaveFrontSynchro 1337 ) 1301 if (m_iWaveFrontSynchro ) 1338 1302 { 1339 1303 m_cPPS.setNumSubstreams(m_iWaveFrontSubstreams * (m_iNumColumnsMinus1+1)); … … 1361 1325 } 1362 1326 1363 if( m_iNumColumnsMinus1 && m_iUniformSpacingIdr==0)1327 if( m_iNumColumnsMinus1 && !m_tileUniformSpacingFlag ) 1364 1328 { 1365 1329 for(Int i=0; i<m_iNumColumnsMinus1; i++) 1366 1330 { 1367 uiCummulativeColumnWidth += m_ puiColumnWidth[i];1331 uiCummulativeColumnWidth += m_tileColumnWidth[i]; 1368 1332 } 1369 1333 … … 1388 1352 } 1389 1353 1390 if( m_iNumRowsMinus1 && m_iUniformSpacingIdr==0)1354 if( m_iNumRowsMinus1 && !m_tileUniformSpacingFlag ) 1391 1355 { 1392 1356 for(Int i=0; i<m_iNumRowsMinus1; i++) 1393 uiCummulativeRowHeight += m_ puiRowHeight[i];1357 uiCummulativeRowHeight += m_tileRowHeight[i]; 1394 1358 1395 1359 if( uiCummulativeRowHeight >= iHeightInCU ) -
trunk/source/Lib/TLibEncoder/TEncTop.h
r1066 r1084 80 80 TComPicLists* m_ivPicLists; ///< access to picture lists of other layers 81 81 #endif 82 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX82 #if H_3D_IC 83 83 Int *m_aICEnableCandidate; 84 84 Int *m_aICEnableNum; … … 150 150 Void xInitPPSforTiles (); 151 151 Void xInitRPS (Bool isFieldCoding); ///< initialize PPS from encoder options 152 #if H_MV_HLS10_GEN_FIX153 152 #if H_MV 154 153 … … 193 192 194 193 #endif 195 #endif196 194 public: 197 195 TEncTop(); … … 209 207 TComPicLists* getIvPicLists() { return m_ivPicLists; } 210 208 #endif 211 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX212 Int *getICEnableCandidate() { return m_aICEnableCandidate; }213 Int *getICEnableNum() { return m_aICEnableNum; }209 #if H_3D_IC 210 Int* getICEnableCandidate() { return m_aICEnableCandidate; } 211 Int* getICEnableNum() { return m_aICEnableNum; } 214 212 #endif 215 213 Void deletePicBuffer (); … … 272 270 Void setIvPicLists ( TComPicLists* picLists) { m_ivPicLists = picLists; } 273 271 #endif 274 #if MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX272 #if H_3D_IC 275 273 Void setICEnableCandidate ( Int* ICEnableCandidate) { m_aICEnableCandidate = ICEnableCandidate; } 276 274 Void setICEnableNum ( Int* ICEnableNum) { m_aICEnableNum = ICEnableNum; } -
trunk/source/Lib/TLibVideoIO/TVideoIOYuv.cpp
r872 r1084 470 470 Bool retval = true; 471 471 472 if ((width==0)||(height==0)) 473 { 474 printf ("\nWarning: writing %d x %d luma sample output picture!", width, height); 475 } 476 472 477 if (m_bitDepthShiftY != 0 || m_bitDepthShiftC != 0) 473 478 { … … 563 568 564 569 Bool retval = true; 570 571 if ((width==0)||(height==0)) 572 { 573 printf ("\nWarning: writing %d x %d luma sample output picture!", width, height); 574 } 565 575 566 576 if (m_bitDepthShiftY != 0 || m_bitDepthShiftC != 0)
Note: See TracChangeset for help on using the changeset viewer.