Changeset 534 in 3DVCSoftware
- Timestamp:
- 13 Jul 2013, 10:26:41 (12 years ago)
- Location:
- branches/HTM-DEV-0.3-dev2
- Files:
-
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-0.3-dev2/cfg/3D-HEVC/baseCfg_2view+depth.cfg
r532 r534 26 26 LayerIdInNuh : 0 # Layer Id in NAL unit header, (0: no explicit signalling ) (m) 27 27 SplittingFlag : 0 # Splitting Flag 28 29 #======== VPS/ Layer sets ================ 30 VpsNumLayerSets : 3 # Number of layer sets 31 LayerIdsInSet_0 : 0 # LayerIds in vps of layer set 32 LayerIdsInSet_1 : 0 1 # LayerIds in vps of layer set 33 LayerIdsInSet_2 : 0 1 2 3 # LayerIds in vps of layer set 34 35 DefaultOneTargetOutputLayerFlag: 0 # Output highest layer of layer sets by default 36 OutputLayerSetIdx : 2 # Indices of layer sets used as additional output layer sets 37 LayerIdsInAddOutputLayerSet_0 : 2 3 # LayerIds in vps of additional output layers 38 ProfileLevelTierIdx : 0 0 0 0 # Indices to profile level tier (TBD) 39 40 #======== VPS / Dependencies ================ 41 DirectRefLayers_1 : # LayerIds in vps of direct reference layers 42 DirectRefLayers_2 : 0 # LayerIds in vps of direct reference layers 43 DirectRefLayers_3 : 1 # LayerIds in vps of direct reference layers 44 45 DependencyTypes_1 : # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 46 DependencyTypes_2 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 47 DependencyTypes_3 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 28 48 29 49 #========== Camera parameters ========== … … 46 66 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CDR, 2:IDR 47 67 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 68 69 # QPfactor betaOffsetDiv2 #ref_pics_active reference pictures deltaRPS reference idcs ilPredLayerIdc refLayerPicPosIl_L1 70 # Type POC QPoffset tcOffsetDiv2 temporal_id #ref_pics predict #ref_idcs #ActiveRefLayerPics refLayerPicPosIl_L0 collocatedRefLayerIdx 48 71 Frame1: B 8 1 0.442 0 0 0 4 4 -8 -10 -12 -16 0 0 49 72 Frame2: B 4 2 0.3536 0 0 0 2 3 -4 -6 4 1 4 5 1 1 0 0 1 0 … … 65 88 Frame8_l1: B 7 4 0.68 0 0 0 2 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 0 66 89 67 FrameI_l2: P 0 3 0.442 0 0 0 1 0 0 1 -2 0-168 Frame1_l2: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -2 1-169 Frame2_l2: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -2 1-170 Frame3_l2: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -2 1-171 Frame4_l2: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -2 1-172 Frame5_l2: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -2 2-173 Frame6_l2: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -2 2-174 Frame7_l2: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -2 2-175 Frame8_l2: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -2 2-176 77 FrameI_l3: P 0 3 0.442 0 0 0 1 0 0 1 -2 0-178 Frame1_l3: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -2 1-179 Frame2_l3: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -2 1-180 Frame3_l3: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -2 1-181 Frame4_l3: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -2 1-182 Frame5_l3: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -2 2-183 Frame6_l3: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -2 2-184 Frame7_l3: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -2 2-185 Frame8_l3: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -2 2-190 FrameI_l2: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 91 Frame1_l2: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 92 Frame2_l2: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 93 Frame3_l2: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 94 Frame4_l2: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 95 Frame5_l2: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 96 Frame6_l2: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 97 Frame7_l2: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 98 Frame8_l2: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 99 100 FrameI_l3: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 101 Frame1_l3: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 102 Frame2_l3: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 103 Frame3_l3: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 104 Frame4_l3: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 105 Frame5_l3: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 106 Frame6_l3: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 107 Frame7_l3: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 108 Frame8_l3: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 86 109 87 110 #=========== Motion Search ============= -
branches/HTM-DEV-0.3-dev2/cfg/3D-HEVC/baseCfg_2view.cfg
r532 r534 23 23 SplittingFlag : 0 # Splitting Flag 24 24 25 #======== VPS/ Layer sets ================ 26 VpsNumLayerSets : 2 # Number of layer sets 27 LayerIdsInSet_0 : 0 # LayerIds in vps of layer set 28 LayerIdsInSet_1 : 0 1 # LayerIds in vps of layer set 29 30 DefaultOneTargetOutputLayerFlag: 0 # Output highest layer of layer sets by default 31 OutputLayerSetIdx : 1 # Indices of layer sets used as additional output layer sets 32 LayerIdsInAddOutputLayerSet_0 : 1 # LayerIds in vps of additional output layers 33 ProfileLevelTierIdx : 0 0 0 # Indices to profile level tier (TBD) per output layer set 34 35 #======== VPS / Dependencies ================ 36 DirectRefLayers_1 : 0 # LayerIds in vps of direct reference layers 37 DependencyTypes_1 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 25 38 26 39 #========== Camera parameters ========== … … 43 56 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CDR, 2:IDR 44 57 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 45 # Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs #IL_ref_pics IL reference pics IL ref list pos L0 L1 58 59 60 # QPfactor betaOffsetDiv2 #ref_pics_active reference pictures deltaRPS reference idcs ilPredLayerIdc refLayerPicPosIl_L1 61 # Type POC QPoffset tcOffsetDiv2 temporal_id #ref_pics predict #ref_idcs #ActiveRefLayerPics refLayerPicPosIl_L0 collocatedRefLayerIdx 46 62 Frame1: B 8 1 0.442 0 0 0 4 4 -8 -10 -12 -16 0 0 47 63 Frame2: B 4 2 0.3536 0 0 0 2 3 -4 -6 4 1 4 5 1 1 0 0 1 0 … … 53 69 Frame8: B 7 4 0.68 0 0 0 2 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 0 54 70 55 FrameI_l1: P 0 3 0.442 0 0 0 1 0 0 1 -1 0-156 Frame1_l1: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -1 1-157 Frame2_l1: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -1 1-158 Frame3_l1: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -1 1-159 Frame4_l1: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -1 1-160 Frame5_l1: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -1 2-161 Frame6_l1: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -1 2-162 Frame7_l1: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -1 2-163 Frame8_l1: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -1 2-171 FrameI_l1: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 72 Frame1_l1: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 73 Frame2_l1: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 74 Frame3_l1: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 75 Frame4_l1: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 76 Frame5_l1: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 77 Frame6_l1: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 78 Frame7_l1: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 79 Frame8_l1: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 64 80 65 81 #=========== Motion Search ============= -
branches/HTM-DEV-0.3-dev2/cfg/3D-HEVC/baseCfg_3view+depth.cfg
r532 r534 30 30 LayerIdInNuh : 0 # Layer Id in NAL unit header, (0: no explicit signalling ) (m) 31 31 SplittingFlag : 0 # Splitting Flag 32 33 #======== VPS/ Layer sets ================ 34 VpsNumLayerSets : 5 # Number of layer sets 35 LayerIdsInSet_0 : 0 # LayerIds in vps of layer set 36 LayerIdsInSet_1 : 0 1 # LayerIds in vps of layer set 37 LayerIdsInSet_2 : 0 1 2 3 # LayerIds in vps of layer set 38 LayerIdsInSet_3 : 0 1 4 5 # LayerIds in vps of layer set 39 LayerIdsInSet_4 : 0 1 2 3 4 5 # LayerIds in vps of layer set 40 41 DefaultOneTargetOutputLayerFlag: 0 # Output highest layer of layer sets by default 42 OutputLayerSetIdx : 2 3 # Indices of layer sets used as additional output layer sets 43 LayerIdsInAddOutputLayerSet_0 : 2 3 # LayerIds of additional output layers 44 LayerIdsInAddOutputLayerSet_1 : 4 5 # LayerIds of additional output layers 45 ProfileLevelTierIdx : 0 0 0 0 0 0 0 0 # Indices to profile level tier (TBD) 46 47 #======== VPS / Dependencies ================ 48 DirectRefLayers_1 : # LayerIds in vps of direct reference layers 49 DirectRefLayers_2 : 0 # LayerIds in vps of direct reference layers 50 DirectRefLayers_3 : 1 # LayerIds in vps of direct reference layers 51 DirectRefLayers_4 : 0 # LayerIds in vps of direct reference layers 52 DirectRefLayers_5 : 1 # LayerIds in vps of direct reference layers 53 54 DependencyTypes_1 : # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 55 DependencyTypes_2 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 56 DependencyTypes_3 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 57 DependencyTypes_4 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 58 DependencyTypes_5 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 32 59 33 60 #========== Camera parameters ========== … … 50 77 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CDR, 2:IDR 51 78 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 79 80 # QPfactor betaOffsetDiv2 #ref_pics_active reference pictures deltaRPS reference idcs ilPredLayerIdc refLayerPicPosIl_L1 81 # Type POC QPoffset tcOffsetDiv2 temporal_id #ref_pics predict #ref_idcs #ActiveRefLayerPics refLayerPicPosIl_L0 collocatedRefLayerIdx 52 82 Frame1: B 8 1 0.442 0 0 0 4 4 -8 -10 -12 -16 0 0 53 83 Frame2: B 4 2 0.3536 0 0 0 2 3 -4 -6 4 1 4 5 1 1 0 0 1 0 … … 69 99 Frame8_l1: B 7 4 0.68 0 0 0 2 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 0 70 100 71 FrameI_l2: P 0 3 0.442 0 0 0 1 0 0 1 -2 0-172 Frame1_l2: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -2 1-173 Frame2_l2: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -2 1-174 Frame3_l2: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -2 1-175 Frame4_l2: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -2 1-176 Frame5_l2: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -2 2-177 Frame6_l2: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -2 2-178 Frame7_l2: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -2 2-179 Frame8_l2: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -2 2-180 81 FrameI_l3: P 0 3 0.442 0 0 0 1 0 0 1 -2 0-182 Frame1_l3: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -2 1-183 Frame2_l3: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -2 1-184 Frame3_l3: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -2 1-185 Frame4_l3: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -2 1-186 Frame5_l3: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -2 2-187 Frame6_l3: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -2 2-188 Frame7_l3: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -2 2-189 Frame8_l3: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -2 2-190 91 FrameI_l4: P 0 3 0.442 0 0 0 1 0 0 1 -4 0-192 Frame1_l4: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -4 1-193 Frame2_l4: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -4 1-194 Frame3_l4: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -4 1-195 Frame4_l4: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -4 1-196 Frame5_l4: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -4 2-197 Frame6_l4: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -4 2-198 Frame7_l4: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -4 2-199 Frame8_l4: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -4 2-1100 101 FrameI_l5: P 0 3 0.442 0 0 0 1 0 0 1 -4 0-1102 Frame1_l5: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -4 1-1103 Frame2_l5: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -4 1-1104 Frame3_l5: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -4 1-1105 Frame4_l5: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -4 1-1106 Frame5_l5: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -4 2-1107 Frame6_l5: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -4 2-1108 Frame7_l5: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -4 2-1109 Frame8_l5: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -4 2-1101 FrameI_l2: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 102 Frame1_l2: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 103 Frame2_l2: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 104 Frame3_l2: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 105 Frame4_l2: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 106 Frame5_l2: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 107 Frame6_l2: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 108 Frame7_l2: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 109 Frame8_l2: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 110 111 FrameI_l3: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 112 Frame1_l3: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 113 Frame2_l3: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 114 Frame3_l3: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 115 Frame4_l3: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 116 Frame5_l3: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 117 Frame6_l3: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 118 Frame7_l3: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 119 Frame8_l3: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 120 121 FrameI_l4: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 122 Frame1_l4: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 123 Frame2_l4: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 124 Frame3_l4: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 125 Frame4_l4: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 126 Frame5_l4: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 127 Frame6_l4: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 128 Frame7_l4: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 129 Frame8_l4: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 130 131 FrameI_l5: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 132 Frame1_l5: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 133 Frame2_l5: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 134 Frame3_l5: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 135 Frame4_l5: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 136 Frame5_l5: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 137 Frame6_l5: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 138 Frame7_l5: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 139 Frame8_l5: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 110 140 111 141 #=========== Motion Search ============= -
branches/HTM-DEV-0.3-dev2/cfg/3D-HEVC/baseCfg_3view.cfg
r532 r534 24 24 SplittingFlag : 0 # Splitting Flag 25 25 26 #======== VPS / Layer sets ================ 27 VpsNumLayerSets : 4 # Number of layer sets 28 LayerIdsInSet_0 : 0 # LayerIds in vps of layer set 29 LayerIdsInSet_1 : 0 1 # LayerIds in vps of layer set 30 LayerIdsInSet_2 : 0 2 # LayerIds in vps of layer set 31 LayerIdsInSet_3 : 0 1 2 # LayerIds in vps of layer set 32 33 DefaultOneTargetOutputLayerFlag: 0 # Output highest layer of layer sets by default 34 OutputLayerSetIdx : 1 2 # Indices of layer sets used as additional output layer sets 35 LayerIdsInAddOutputLayerSet_0 : 1 # LayerIds in vps of additional output layers 36 LayerIdsInAddOutputLayerSet_1 : 2 # LayerIds in vps of additional output layers 37 ProfileLevelTierIdx : 0 0 0 0 0 0 # Indices to profile level tier (TBD) 38 39 #======== VPS / Dependencies ================ 40 DirectRefLayers_1 : 0 # LayerIds in vps of direct reference layers 41 DirectRefLayers_2 : 0 # LayerIds in vps of direct reference layers 42 DependencyTypes_1 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 43 DependencyTypes_2 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 44 26 45 #========== Camera parameters ========== 27 46 CameraParameterFile : cam_pars.txt # camera parameter file … … 43 62 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CDR, 2:IDR 44 63 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 45 # Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs #IL_ref_pics IL reference pics IL ref list pos L0 L1 64 65 # QPfactor betaOffsetDiv2 #ref_pics_active reference pictures deltaRPS reference idcs ilPredLayerIdc refLayerPicPosIl_L1 66 # Type POC QPoffset tcOffsetDiv2 temporal_id #ref_pics predict #ref_idcs #ActiveRefLayerPics refLayerPicPosIl_L0 collocatedRefLayerIdx 67 46 68 Frame1: B 8 1 0.442 0 0 0 4 4 -8 -10 -12 -16 0 0 47 69 Frame2: B 4 2 0.3536 0 0 0 2 3 -4 -6 4 1 4 5 1 1 0 0 1 0 … … 53 75 Frame8: B 7 4 0.68 0 0 0 2 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 0 54 76 55 FrameI_l1: P 0 3 0.442 0 0 0 1 0 0 1 -1 0-156 Frame1_l1: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -1 1-157 Frame2_l1: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -1 1-158 Frame3_l1: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -1 1-159 Frame4_l1: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -1 1-160 Frame5_l1: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -1 2-161 Frame6_l1: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -1 2-162 Frame7_l1: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -1 2-163 Frame8_l1: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -1 2-177 FrameI_l1: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 78 Frame1_l1: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 79 Frame2_l1: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 80 Frame3_l1: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 81 Frame4_l1: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 82 Frame5_l1: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 83 Frame6_l1: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 84 Frame7_l1: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 85 Frame8_l1: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 64 86 65 FrameI_l2: P 0 3 0.442 0 0 0 1 0 0 1 -2 0-166 Frame1_l2: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -2 1-167 Frame2_l2: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -2 1-168 Frame3_l2: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -2 1-169 Frame4_l2: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -2 1-170 Frame5_l2: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -2 2-171 Frame6_l2: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -2 2-172 Frame7_l2: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -2 2-173 Frame8_l2: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -2 2-187 FrameI_l2: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 88 Frame1_l2: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 89 Frame2_l2: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 90 Frame3_l2: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 91 Frame4_l2: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 92 Frame5_l2: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 93 Frame6_l2: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 94 Frame7_l2: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 95 Frame8_l2: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 74 96 75 97 #=========== Motion Search ============= -
branches/HTM-DEV-0.3-dev2/cfg/3D-HEVC/fullCfg.cfg
r532 r534 34 34 LayerIdInNuh : 0 # Layer Id in NAL unit header, (0: no explicit signalling ) (m) 35 35 SplittingFlag : 0 # Splitting Flag 36 37 #======== VPS/ Layer sets ================ 38 VpsNumLayerSets : 5 # Number of layer sets 39 LayerIdsInSet_0 : 0 # LayerIds in vps of layer set 40 LayerIdsInSet_1 : 0 1 # LayerIds in vps of layer set 41 LayerIdsInSet_2 : 0 1 2 3 # LayerIds in vps of layer set 42 LayerIdsInSet_3 : 0 1 4 5 # LayerIds in vps of layer set 43 LayerIdsInSet_4 : 0 1 2 3 4 5 # LayerIds in vps of layer set 44 45 DefaultOneTargetOutputLayerFlag: 0 # Output highest layer of layer sets by default 46 OutputLayerSetIdx : 2 3 # Indices of layer sets used as additional output layer sets 47 LayerIdsInAddOutputLayerSet_0 : 2 3 # LayerIds of additional output layers 48 LayerIdsInAddOutputLayerSet_1 : 4 5 # LayerIds of additional output layers 49 ProfileLevelTierIdx : 0 0 0 0 0 0 # Indices to profile level tier (TBD) 50 51 #======== VPS / Dependencies ================ 52 DirectRefLayers_1 : # LayerIds in vps of direct reference layers 53 DirectRefLayers_2 : 0 # LayerIds in vps of direct reference layers 54 DirectRefLayers_3 : 1 # LayerIds in vps of direct reference layers 55 DirectRefLayers_4 : 0 # LayerIds in vps of direct reference layers 56 DirectRefLayers_5 : 1 # LayerIds in vps of direct reference layers 57 58 DependencyTypes_1 : # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 59 DependencyTypes_2 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 60 DependencyTypes_3 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 61 DependencyTypes_4 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 62 DependencyTypes_5 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 36 63 37 64 #========== Camera parameters ========== … … 55 82 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CDR, 2:IDR 56 83 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 84 85 # QPfactor betaOffsetDiv2 #ref_pics_active reference pictures deltaRPS reference idcs ilPredLayerIdc refLayerPicPosIl_L1 86 # Type POC QPoffset tcOffsetDiv2 temporal_id #ref_pics predict #ref_idcs #ActiveRefLayerPics refLayerPicPosIl_L0 collocatedRefLayerIdx 57 87 Frame1: B 8 1 0.442 0 0 0 4 4 -8 -10 -12 -16 0 0 58 88 Frame2: B 4 2 0.3536 0 0 0 2 3 -4 -6 4 1 4 5 1 1 0 0 1 0 … … 74 104 Frame8_l1: B 7 4 0.68 0 0 0 2 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 0 75 105 76 FrameI_l2: P 0 3 0.442 0 0 0 1 0 0 1 -2 0-177 Frame1_l2: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -2 1-178 Frame2_l2: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -2 1-179 Frame3_l2: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -2 1-180 Frame4_l2: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -2 1-181 Frame5_l2: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -2 2-182 Frame6_l2: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -2 2-183 Frame7_l2: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -2 2-184 Frame8_l2: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -2 2-185 86 FrameI_l3: P 0 3 0.442 0 0 0 1 0 0 1 -2 0-187 Frame1_l3: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -2 1-188 Frame2_l3: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -2 1-189 Frame3_l3: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -2 1-190 Frame4_l3: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -2 1-191 Frame5_l3: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -2 2-192 Frame6_l3: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -2 2-193 Frame7_l3: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -2 2-194 Frame8_l3: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -2 2-195 96 FrameI_l4: P 0 3 0.442 0 0 0 1 0 0 1 -4 0-197 Frame1_l4: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -4 1-198 Frame2_l4: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -4 1-199 Frame3_l4: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -4 1-1100 Frame4_l4: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -4 1-1101 Frame5_l4: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -4 2-1102 Frame6_l4: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -4 2-1103 Frame7_l4: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -4 2-1104 Frame8_l4: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -4 2-1105 106 FrameI_l5: P 0 3 0.442 0 0 0 1 0 0 1 -4 0-1107 Frame1_l5: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -4 1-1108 Frame2_l5: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -4 1-1109 Frame3_l5: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -4 1-1110 Frame4_l5: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -4 1-1111 Frame5_l5: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -4 2-1112 Frame6_l5: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -4 2-1113 Frame7_l5: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -4 2-1114 Frame8_l5: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -4 2-1106 FrameI_l2: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 107 Frame1_l2: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 108 Frame2_l2: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 109 Frame3_l2: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 110 Frame4_l2: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 111 Frame5_l2: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 112 Frame6_l2: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 113 Frame7_l2: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 114 Frame8_l2: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 115 116 FrameI_l3: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 117 Frame1_l3: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 118 Frame2_l3: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 119 Frame3_l3: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 120 Frame4_l3: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 121 Frame5_l3: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 122 Frame6_l3: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 123 Frame7_l3: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 124 Frame8_l3: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 125 126 FrameI_l4: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 127 Frame1_l4: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 128 Frame2_l4: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 129 Frame3_l4: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 130 Frame4_l4: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 131 Frame5_l4: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 132 Frame6_l4: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 133 Frame7_l4: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 134 Frame8_l4: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 135 136 FrameI_l5: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 137 Frame1_l5: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 138 Frame2_l5: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 139 Frame3_l5: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 140 Frame4_l5: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 141 Frame5_l5: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 142 Frame6_l5: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 143 Frame7_l5: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 144 Frame8_l5: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 115 145 116 146 #=========== Motion Search ============= -
branches/HTM-DEV-0.3-dev2/cfg/MV-HEVC/baseCfg_2view.cfg
r446 r534 22 22 SplittingFlag : 0 # Splitting Flag 23 23 24 #======== VPS/ Layer sets ================ 25 VpsNumLayerSets : 2 # Number of layer sets 26 LayerIdsInSet_0 : 0 # LayerIds in vps of Layer set 27 LayerIdsInSet_1 : 0 1 # LayerIds in vps of Layer set 28 29 DefaultOneTargetOutputLayerFlag: 0 # Output highest layer of layer sets by default 30 OutputLayerSetIdx : 1 # Indices of layer sets used as additional output layer sets 31 LayerIdsInAddOutputLayerSet_0 : 1 # LayerIds in vps of additional output layers 32 ProfileLevelTierIdx : 0 0 0 # Indices to profile level tier (TBD) 33 34 #======== VPS / Dependencies ================ 35 DirectRefLayers_1 : 0 # LayerIds in vps of direct reference layers 36 DependencyTypes_1 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 37 24 38 #======== Unit definition ================ 25 39 MaxCUWidth : 64 # Maximum coding unit width in pixel … … 37 51 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CDR, 2:IDR 38 52 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 39 # Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs #IL_ref_pics IL reference pics IL ref list pos L0 L1 53 54 # QPfactor betaOffsetDiv2 #ref_pics_active reference pictures deltaRPS reference idcs ilPredLayerIdc refLayerPicPosIl_L1 55 # Type POC QPoffset tcOffsetDiv2 temporal_id #ref_pics predict #ref_idcs #ActiveRefLayerPics refLayerPicPosIl_L0 collocatedRefLayerIdx 40 56 Frame1: B 8 1 0.442 0 0 0 4 4 -8 -10 -12 -16 0 0 41 57 Frame2: B 4 2 0.3536 0 0 0 2 3 -4 -6 4 1 4 5 1 1 0 0 1 0 … … 47 63 Frame8: B 7 4 0.68 0 0 0 2 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 0 48 64 49 FrameI_l1: P 0 3 0.442 0 0 0 1 0 0 1 -1 0-150 Frame1_l1: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -1 1-151 Frame2_l1: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -1 1-152 Frame3_l1: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -1 1-153 Frame4_l1: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -1 1-154 Frame5_l1: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -1 2-155 Frame6_l1: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -1 2-156 Frame7_l1: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -1 2-157 Frame8_l1: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -1 2-165 FrameI_l1: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 66 Frame1_l1: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 67 Frame2_l1: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 68 Frame3_l1: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 69 Frame4_l1: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 70 Frame5_l1: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 71 Frame6_l1: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 72 Frame7_l1: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 73 Frame8_l1: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 58 74 59 75 #=========== Motion Search ============= -
branches/HTM-DEV-0.3-dev2/cfg/MV-HEVC/baseCfg_3view.cfg
r446 r534 24 24 SplittingFlag : 0 # Splitting Flag 25 25 26 #======== VPS / Layer sets ================ 27 VpsNumLayerSets : 4 # Number of layer sets 28 LayerIdsInSet_0 : 0 # LayerIds in vps of layer set 29 LayerIdsInSet_1 : 0 1 # LayerIds in vps of layer set 30 LayerIdsInSet_2 : 0 2 # LayerIds in vps of layer set 31 LayerIdsInSet_3 : 0 1 2 # LayerIds in vps of layer set 32 33 DefaultOneTargetOutputLayerFlag: 0 # Output highest layer of layer sets by default 34 OutputLayerSetIdx : 1 2 # Indices of layer sets used as additional output layer sets 35 LayerIdsInAddOutputLayerSet_0 : 1 # LayerIds in vps of additional output layers 36 LayerIdsInAddOutputLayerSet_1 : 2 # LayerIds in vps of additional output layers 37 ProfileLevelTierIdx : 0 0 0 0 0 0 # Indices to profile level tier (TBD) 38 39 #======== VPS / Dependencies ================ 40 DirectRefLayers_1 : 0 # LayerIds in vps of direct reference layers 41 DirectRefLayers_2 : 0 # LayerIds in vps of direct reference layers 42 DependencyTypes_1 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 43 DependencyTypes_2 : 2 # Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion 44 26 45 #======== Unit definition ================ 27 46 MaxCUWidth : 64 # Maximum coding unit width in pixel … … 39 58 DecodingRefreshType : 1 # Random Accesss 0:none, 1:CDR, 2:IDR 40 59 GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) 41 # Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures predict deltaRPS #ref_idcs reference idcs #IL_ref_pics IL reference pics IL ref list pos L0 L1 60 61 # QPfactor betaOffsetDiv2 #ref_pics_active reference pictures deltaRPS reference idcs ilPredLayerIdc refLayerPicPosIl_L1 62 # Type POC QPoffset tcOffsetDiv2 temporal_id #ref_pics predict #ref_idcs #ActiveRefLayerPics refLayerPicPosIl_L0 collocatedRefLayerIdx 63 42 64 Frame1: B 8 1 0.442 0 0 0 4 4 -8 -10 -12 -16 0 0 43 65 Frame2: B 4 2 0.3536 0 0 0 2 3 -4 -6 4 1 4 5 1 1 0 0 1 0 … … 49 71 Frame8: B 7 4 0.68 0 0 0 2 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 0 50 72 51 FrameI_l1: P 0 3 0.442 0 0 0 1 0 0 1 -1 0-152 Frame1_l1: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -1 1-153 Frame2_l1: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -1 1-154 Frame3_l1: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -1 1-155 Frame4_l1: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -1 1-156 Frame5_l1: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -1 2-157 Frame6_l1: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -1 2-158 Frame7_l1: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -1 2-159 Frame8_l1: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -1 2-173 FrameI_l1: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 74 Frame1_l1: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 75 Frame2_l1: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 76 Frame3_l1: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 77 Frame4_l1: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 78 Frame5_l1: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 79 Frame6_l1: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 80 Frame7_l1: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 81 Frame8_l1: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 60 82 61 FrameI_l2: P 0 3 0.442 0 0 0 1 0 0 1 -2 0-162 Frame1_l2: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 -2 1-163 Frame2_l2: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 -2 1-164 Frame3_l2: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 -2 1-165 Frame4_l2: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 -2 1-166 Frame5_l2: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 -2 2-167 Frame6_l2: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 -2 2-168 Frame7_l2: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 -2 2-169 Frame8_l2: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 -2 2-183 FrameI_l2: P 0 3 0.442 0 0 0 1 0 0 1 0 0 -1 -1 84 Frame1_l2: B 8 4 0.442 0 0 0 4 4 -8 -10 -12 -16 0 1 0 1 -1 -1 85 Frame2_l2: B 4 5 0.3536 0 0 0 3 3 -4 -6 4 1 4 5 1 1 0 0 1 1 0 1 -1 -1 86 Frame3_l2: B 2 6 0.3536 0 0 0 3 4 -2 -4 2 6 1 2 4 1 1 1 1 1 0 1 -1 -1 87 Frame4_l2: B 1 7 0.68 0 0 0 3 4 -1 1 3 7 1 1 5 1 0 1 1 1 1 0 1 -1 -1 88 Frame5_l2: B 3 7 0.68 0 0 0 3 4 -1 -3 1 5 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 89 Frame6_l2: B 6 6 0.3536 0 0 0 3 4 -2 -4 -6 2 1 -3 5 1 1 1 1 0 1 0 2 -1 -1 90 Frame7_l2: B 5 7 0.68 0 0 0 3 4 -1 -5 1 3 1 1 5 1 0 1 1 1 1 0 2 -1 -1 91 Frame8_l2: B 7 7 0.68 0 0 0 3 4 -1 -3 -7 1 1 -2 5 1 1 1 1 0 1 0 2 -1 -1 70 92 71 93 #=========== Motion Search ============= -
branches/HTM-DEV-0.3-dev2/cfg/MV-HEVC/fullCfg.cfg
r446 r534 27 27 LayerIdInNuh : 0 # Layer Id in NAL unit header, (0: no explicit signalling ) (m) 28 28 SplittingFlag : 0 # Splitting Flag 29 30 #======== VPS/ Layer sets ================ 31 VpsNumLayerSets : 4 # Number of layer sets 32 LayerIdsInSet_0 : 0 # LayerIds of Layer set 33 LayerIdsInSet_1 : 0 1 # LayerIds of Layer set 34 LayerIdsInSet_2 : 0 2 # LayerIds of Layer set 35 LayerIdsInSet_3 : 0 1 2 # LayerIds of Layer set 36 37 DefaultOneTargetOutputLayerFlag: 0 # Output highest layer of layer sets by default 38 OutputLayerSetIdx : 1 2 # Indices of layer sets used as additional output layer sets 39 LayerIdsInAddOutputLayerSet_0 : 1 # LayerIds of additional output layers 40 LayerIdsInAddOutputLayerSet_0 : 1 # LayerIds of additional output layers 41 ProfileLevelTierIdx : 0 0 0 0 # Indices to profile level tier (TBD) 29 42 30 43 #======== Unit definition ================ -
branches/HTM-DEV-0.3-dev2/source/App/TAppDecoder/TAppDecTop.cpp
r531 r534 150 150 Bool recon_opened = false; // reconstruction file not yet opened. (must be performed after SPS is seen) 151 151 #else 152 #if H_3D 152 153 Int pocCurrPic = -MAX_INT; 153 154 Int pocLastPic = -MAX_INT; 155 #endif 154 156 155 157 Int layerIdCurrPic = 0; … … 187 189 Bool newSliceDiffPoc = false; 188 190 Bool newSliceDiffLayer = false; 191 #if H_3D 189 192 Bool allLayersDecoded = false; 193 #endif 190 194 #endif 191 195 if (nalUnit.empty()) … … 222 226 { 223 227 layerIdCurrPic = nalu.m_layerId; 228 #if H_3D 224 229 pocCurrPic = m_tDecTop[decIdx]->getCurrPoc(); 230 #endif 225 231 decIdxCurrPic = decIdx; 226 232 firstSlice = false; … … 230 236 { 231 237 layerIdCurrPic = nalu.m_layerId; 232 238 #if H_3D 233 239 pocLastPic = pocCurrPic; 234 240 pocCurrPic = m_tDecTop[decIdx]->getCurrPoc(); 235 241 #endif 236 242 decIdxLastPic = decIdxCurrPic; 237 243 decIdxCurrPic = decIdx; 238 244 #if H_3D 239 245 allLayersDecoded = ( pocCurrPic != pocLastPic ); 246 #endif 240 247 } 241 248 -
branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.cpp
r532 r534 215 215 #endif 216 216 #if H_MV 217 in>>entry.m_num InterViewRefPics;218 for( Int i = 0; i < entry.m_num InterViewRefPics; i++ )219 { 220 in>>entry.m_inter ViewRefs[i];221 } 222 for( Int i = 0; i < entry.m_num InterViewRefPics; i++ )217 in>>entry.m_numActiveRefLayerPics; 218 for( Int i = 0; i < entry.m_numActiveRefLayerPics; i++ ) 219 { 220 in>>entry.m_interLayerPredLayerIdc[i]; 221 } 222 for( Int i = 0; i < entry.m_numActiveRefLayerPics; i++ ) 223 223 { 224 224 in>>entry.m_interViewRefPosL[0][i]; 225 225 } 226 for( Int i = 0; i < entry.m_num InterViewRefPics; i++ )226 for( Int i = 0; i < entry.m_numActiveRefLayerPics; i++ ) 227 227 { 228 228 in>>entry.m_interViewRefPosL[1][i]; 229 } 230 if (entry.m_numActiveRefLayerPics > 0 ) 231 { 232 in>>entry.m_collocatedRefLayerIdx; 229 233 } 230 234 #endif … … 398 402 ("LayerIdInNuh", m_layerIdInNuh , std::vector<Int>(1,0), "LayerId in Nuh") 399 403 ("SplittingFlag", m_splittingFlag , false , "Splitting Flag") 404 405 // Layer Sets + Output Layer Sets + Profile Tier Level 406 ("VpsNumLayerSets", m_vpsNumLayerSets , 1 , "Number of layer sets") 407 ("LayerIdsInSet_%d", m_layerIdsInSets , std::vector<Int>(1,0), MAX_VPS_OP_SETS_PLUS1 ,"LayerIds of Layer set") 408 ("DefaultOneTargetOutputLayerFlag", m_defaultOneTargetOutputLayerFlag, false , "Output highest layer of layer sets by default") 409 ("OutputLayerSetIdx", m_outputLayerSetIdx , std::vector<Int>(0,0), "Indices of layer sets used as additional output layer sets") 410 ("LayerIdsInAddOutputLayerSet_%d", m_layerIdsInAddOutputLayerSet , std::vector<Int>(1,0), MAX_VPS_ADD_OUTPUT_LAYER_SETS, "LayerIds of additional output layers") 411 ("ProfileLevelTierIdx", m_profileLevelTierIdx, std::vector<Int>(1,0), "Indices to profile level tier") 412 413 // Layer dependencies 414 ("DirectRefLayers_%d", m_directRefLayers , std::vector<Int>(0,0), MAX_NUM_LAYERS, "LayerIds of direct reference layers") 415 ("DependencyTypes_%d", m_dependencyTypes , std::vector<Int>(0,0), MAX_NUM_LAYERS, "Dependency types of direct reference layers, 0: Sample 1: Motion 2: Sample+Motion") 400 416 #endif 401 417 ("SourceWidth,-wdt", m_iSourceWidth, 0, "Source picture width") … … 756 772 cOSS<<"Frame"<<i; 757 773 opts.addOptions()( cOSS.str(), m_GOPListMvc[k][i-1], GOPEntry() ); 774 if ( i != 1 ) 775 { 776 opts.opt_list.back()->opt->opt_duplicate = true; 777 } 758 778 } 759 779 } … … 762 782 std::ostringstream cOSS1; 763 783 cOSS1<<"FrameI"<<"_l"<<k; 784 764 785 opts.addOptions()(cOSS1.str(), m_GOPListMvc[k][MAX_GOP], GOPEntry()); 786 if ( k > 1 ) 787 { 788 opts.opt_list.back()->opt->opt_duplicate = true; 789 } 790 765 791 766 792 for( Int i = 1; i < MAX_GOP + 1; i++ ) … … 769 795 cOSS2<<"Frame"<<i<<"_l"<<k; 770 796 opts.addOptions()(cOSS2.str(), m_GOPListMvc[k][i-1], GOPEntry()); 797 if ( i != 1 || k > 0 ) 798 { 799 opts.opt_list.back()->opt->opt_duplicate = true; 800 } 771 801 } 772 802 } … … 1311 1341 #endif 1312 1342 1313 xConfirmPara( m_dimensionIdLen.size() < m_dimIds.size(), "DimensionIdLen must be given for all dimensions. " ); 1314 1315 for( Int dim = 0; dim < m_dimIds.size(); dim++ ) 1343 xConfirmPara( m_dimensionIdLen.size() < m_dimIds.size(), "DimensionIdLen must be given for all dimensions. " ); Int dimBitOffset[MAX_NUM_SCALABILITY_TYPES+1]; 1344 1345 dimBitOffset[ 0 ] = 0; 1346 for (Int j = 1; j <= ((Int) m_dimIds.size() - m_splittingFlag ? 1 : 0); j++ ) 1316 1347 { 1317 xConfirmPara( m_dimIds[dim].size() < m_numberOfLayers, "DimensionId must be given for all layers and all dimensions. "); 1318 xConfirmPara( ( dim != viewDimPosition ) && (m_dimIds[dim][0] != 0), "DimensionId of layer 0 must be 0. " ); 1319 xConfirmPara( m_dimensionIdLen[dim] < 1 || m_dimensionIdLen[dim] > 8, "DimensionIdLen must be greater than 0 and less than 9 in all dimensions. " ); 1348 dimBitOffset[ j ] = dimBitOffset[ j - 1 ] + m_dimensionIdLen[ j - 1]; 1349 } 1350 1351 if ( m_splittingFlag ) 1352 { 1353 dimBitOffset[ (Int) m_dimIds.size() ] = 6; 1354 } 1355 1356 for( Int j = 0; j < m_dimIds.size(); j++ ) 1357 { 1358 xConfirmPara( m_dimIds[j].size() < m_numberOfLayers, "DimensionId must be given for all layers and all dimensions. "); 1359 xConfirmPara( ( j != viewDimPosition ) && (m_dimIds[j][0] != 0), "DimensionId of layer 0 must be 0. " ); 1360 xConfirmPara( m_dimensionIdLen[j] < 1 || m_dimensionIdLen[j] > 8, "DimensionIdLen must be greater than 0 and less than 9 in all dimensions. " ); 1361 1362 1320 1363 for( Int i = 1; i < m_numberOfLayers; i++ ) 1321 1364 { 1322 xConfirmPara( ( m_dimIds[dim][i] < 0 ) || ( m_dimIds[dim][i] > ( ( 1 << m_dimensionIdLen[dim] ) - 1 ) ) , "DimensionId shall be in the range of 0 to 2^DimensionIdLen - 1. " ); 1365 xConfirmPara( ( m_dimIds[j][i] < 0 ) || ( m_dimIds[j][i] > ( ( 1 << m_dimensionIdLen[j] ) - 1 ) ) , "DimensionId shall be in the range of 0 to 2^DimensionIdLen - 1. " ); 1366 if ( m_splittingFlag ) 1367 { 1368 Int layerIdInNuh = (m_layerIdInNuh.size()!=1) ? m_layerIdInNuh[i] : i; 1369 xConfirmPara( ( ( layerIdInNuh & ( (1 << dimBitOffset[ j + 1 ] ) - 1) ) >> dimBitOffset[ j ] ) != m_dimIds[j][ i ] , "When Splitting Flag is equal to 1 dimension ids shall match values derived from layer ids. "); 1370 } 1323 1371 } 1324 1372 } … … 1361 1409 } 1362 1410 1411 /// Layer sets 1412 xConfirmPara( m_vpsNumLayerSets < 0 || m_vpsNumLayerSets > 1024, "VpsNumLayerSets must be greater than 0 and less than 1025") ; 1413 for( Int lsIdx = 0; lsIdx < m_vpsNumLayerSets; lsIdx++ ) 1414 { 1415 if (lsIdx == 0) 1416 { 1417 xConfirmPara( m_layerIdsInSets[lsIdx].size() != 1 || m_layerIdsInSets[lsIdx][0] != 0 , "0-th layer shall only include layer 0. "); 1418 } 1419 for ( Int i = 0; i < m_layerIdsInSets[lsIdx].size(); i++ ) 1420 { 1421 xConfirmPara( m_layerIdsInSets[lsIdx][i] < 0 || m_layerIdsInSets[lsIdx].size() >= MAX_NUM_LAYER_IDS, "LayerIdsInSet must be greater than and less than 64" ); 1422 } 1423 } 1424 1425 // Output layer sets 1426 xConfirmPara( m_outputLayerSetIdx.size() > 1024, "The number of output layer set indices must be less than 1025.") ; 1427 for (Int lsIdx = 0; lsIdx < m_outputLayerSetIdx.size(); lsIdx++) 1428 { 1429 Int refLayerSetIdx = m_outputLayerSetIdx[ lsIdx ]; 1430 xConfirmPara( refLayerSetIdx < 0 || refLayerSetIdx >= m_vpsNumLayerSets, "Output layer set idx must be greater or equal to 0 and less than the VpsNumLayerSets." ); 1431 1432 for (Int i = 0; i < m_layerIdsInAddOutputLayerSet[ lsIdx ].size(); i++) 1433 { 1434 Bool isAlsoInLayerSet = false; 1435 for (Int j = 0; j < m_layerIdsInSets[ refLayerSetIdx ].size(); j++ ) 1436 { 1437 if ( m_layerIdsInSets[ refLayerSetIdx ][ j ] == m_layerIdsInAddOutputLayerSet[ lsIdx ][ i ] ) 1438 { 1439 isAlsoInLayerSet = true; 1440 break; 1441 } 1442 } 1443 xConfirmPara( !isAlsoInLayerSet, "All output layers of a output layer set be included in corresponding layer set."); 1444 } 1445 } 1446 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" ); 1447 1448 // Layer Dependencies 1449 for (Int i = 0; i < m_numberOfLayers; i++ ) 1450 { 1451 xConfirmPara( (i == 0) && m_directRefLayers[0].size() != 0, "Layer 0 shall not have reference layers." ); 1452 xConfirmPara( m_directRefLayers[i].size() != m_dependencyTypes[ i ].size(), "Each reference layer shall have a reference type." ); 1453 for (Int j = 0; j < m_directRefLayers[i].size(); j++) 1454 { 1455 xConfirmPara( m_directRefLayers[i][j] < 0 || m_directRefLayers[i][j] >= i , "Reference layer id shall be greater than or equal to 0 and less than dependent layer id"); 1456 xConfirmPara( m_dependencyTypes[i][j] < 0 || m_dependencyTypes[i][j] > 2 , "Dependency type shall be greater than or equal to 0 and less than 3"); 1457 } 1458 } 1363 1459 #endif 1364 1460 xConfirmPara( m_iGOPSize < 1 , "GOP Size must be greater or equal to 1" ); … … 1518 1614 for( Int i = 0; i < MAX_GOP; i++ ) 1519 1615 { 1520 if( m_GOPListMvc[0][i].m_num InterViewRefPics != 0 )1616 if( m_GOPListMvc[0][i].m_numActiveRefLayerPics != 0 ) 1521 1617 { 1522 1618 printf( "\nError: Frame%d inter_layer refs not available in layer 0\n", i ); … … 1530 1626 if( m_numberOfLayers > 1 ) 1531 1627 { 1532 for( Int k = 1; k < m_numberOfLayers; k++ )1628 for( Int layer = 1; layer < m_numberOfLayers; layer++ ) 1533 1629 { 1534 1630 for( Int i = 0; i < MAX_GOP+1; i++ ) 1535 1631 { 1536 for( Int j = 0; j < m_GOPListMvc[k][i].m_numInterViewRefPics; j++ ) 1632 GOPEntry gopEntry = m_GOPListMvc[layer][i]; 1633 for( Int j = 0; j < gopEntry.m_numActiveRefLayerPics; j++ ) 1537 1634 { 1538 Int i AbsViewId = m_GOPListMvc[k][i].m_interViewRefs[j] + k;1539 if( i AbsViewId < 0 || iAbsViewId >= k)1635 Int ilPredLayerIdc = gopEntry.m_interLayerPredLayerIdc[j]; 1636 if( ilPredLayerIdc < 0 || ilPredLayerIdc >= m_directRefLayers[layer].size() ) 1540 1637 { 1541 printf( "\nError: inter-layer ref pic %d is not available for Frame%d_l%d\n", m_GOPListMvc[k][i].m_interViewRefs[j], i, k);1638 printf( "\nError: inter-layer ref idc %d is not available for Frame%d_l%d\n", gopEntry.m_interLayerPredLayerIdc[j], i, layer ); 1542 1639 bErrorIvpEnhV = true; 1543 1640 } 1544 if( m_GOPListMvc[k][i].m_interViewRefPosL[0][j] < -1 || m_GOPListMvc[k][i].m_interViewRefPosL[0][j] > m_GOPListMvc[k][i].m_numRefPicsActive )1641 if( gopEntry.m_interViewRefPosL[0][j] < -1 || gopEntry.m_interViewRefPosL[0][j] > gopEntry.m_numRefPicsActive ) 1545 1642 { 1546 printf( "\nError: inter-layer ref pos %d on L0 is not available for Frame%d_l%d\n", m_GOPListMvc[k][i].m_interViewRefPosL[0][j], i, k);1643 printf( "\nError: inter-layer ref pos %d on L0 is not available for Frame%d_l%d\n", gopEntry.m_interViewRefPosL[0][j], i, layer ); 1547 1644 bErrorIvpEnhV = true; 1548 1645 } 1549 if( m_GOPListMvc[k][i].m_interViewRefPosL[1][j] < -1 || m_GOPListMvc[k][i].m_interViewRefPosL[1][j] > m_GOPListMvc[k][i].m_numRefPicsActive )1646 if( gopEntry.m_interViewRefPosL[1][j] < -1 || gopEntry.m_interViewRefPosL[1][j] > gopEntry.m_numRefPicsActive ) 1550 1647 { 1551 printf( "\nError: inter-layer ref pos %d on L1 is not available for Frame%d_l%d\n", m_GOPListMvc[k][i].m_interViewRefPosL[1][j], i, k);1648 printf( "\nError: inter-layer ref pos %d on L1 is not available for Frame%d_l%d\n", gopEntry.m_interViewRefPosL[1][j], i, layer ); 1552 1649 bErrorIvpEnhV = true; 1553 1650 } … … 1555 1652 if( i == MAX_GOP ) // inter-view refs at I pic position in base view 1556 1653 { 1557 if( m_GOPListMvc[k][MAX_GOP].m_sliceType != 'B' && m_GOPListMvc[k][MAX_GOP].m_sliceType != 'P' && m_GOPListMvc[k][MAX_GOP].m_sliceType != 'I' )1654 if( gopEntry.m_sliceType != 'B' && gopEntry.m_sliceType != 'P' && gopEntry.m_sliceType != 'I' ) 1558 1655 { 1559 printf( "\nError: slice type of FrameI_l%d must be equal to B or P or I\n", k);1656 printf( "\nError: slice type of FrameI_l%d must be equal to B or P or I\n", layer ); 1560 1657 bErrorIvpEnhV = true; 1561 1658 } 1562 1659 1563 if( m_GOPListMvc[k][MAX_GOP].m_POC != 0 )1660 if( gopEntry.m_POC != 0 ) 1564 1661 { 1565 printf( "\nError: POC %d not possible for FrameI_l%d, must be 0\n", m_GOPListMvc[k][MAX_GOP].m_POC, k);1662 printf( "\nError: POC %d not possible for FrameI_l%d, must be 0\n", gopEntry.m_POC, layer ); 1566 1663 bErrorIvpEnhV = true; 1567 1664 } 1568 1665 1569 if( m_GOPListMvc[k][MAX_GOP].m_temporalId != 0 )1666 if( gopEntry.m_temporalId != 0 ) 1570 1667 { 1571 printf( "\nWarning: Temporal id of FrameI_l%d must be 0 (cp. I-frame in base layer)\n", k);1572 m_GOPListMvc[k][MAX_GOP].m_temporalId = 0;1668 printf( "\nWarning: Temporal id of FrameI_l%d must be 0 (cp. I-frame in base layer)\n", layer ); 1669 gopEntry.m_temporalId = 0; 1573 1670 } 1574 1671 1575 if( m_GOPListMvc[k][MAX_GOP].m_numRefPics != 0 )1672 if( gopEntry.m_numRefPics != 0 ) 1576 1673 { 1577 printf( "\nWarning: temporal references not possible for FrameI_l%d\n", k);1578 for( Int j = 0; j < m_GOPListMvc[ k][MAX_GOP].m_numRefPics; j++ )1674 printf( "\nWarning: temporal references not possible for FrameI_l%d\n", layer ); 1675 for( Int j = 0; j < m_GOPListMvc[layer][MAX_GOP].m_numRefPics; j++ ) 1579 1676 { 1580 m_GOPListMvc[k][MAX_GOP].m_referencePics[j] = 0;1677 gopEntry.m_referencePics[j] = 0; 1581 1678 } 1582 m_GOPListMvc[k][MAX_GOP].m_numRefPics = 0;1679 gopEntry.m_numRefPics = 0; 1583 1680 } 1584 1681 1585 if( m_GOPListMvc[k][MAX_GOP].m_interRPSPrediction )1682 if( gopEntry.m_interRPSPrediction ) 1586 1683 { 1587 printf( "\nError: inter RPS prediction not possible for FrameI_l%d, must be 0\n", k);1684 printf( "\nError: inter RPS prediction not possible for FrameI_l%d, must be 0\n", layer ); 1588 1685 bErrorIvpEnhV = true; 1589 1686 } 1590 1687 1591 if( m_GOPListMvc[k][MAX_GOP].m_sliceType == 'I' && m_GOPListMvc[k][MAX_GOP].m_numInterViewRefPics != 0 )1688 if( gopEntry.m_sliceType == 'I' && gopEntry.m_numActiveRefLayerPics != 0 ) 1592 1689 { 1593 printf( "\nError: inter-layer prediction not possible for FrameI_l%d with slice type I, #IL_ref_pics must be 0\n", k);1690 printf( "\nError: inter-layer prediction not possible for FrameI_l%d with slice type I, #IL_ref_pics must be 0\n", layer ); 1594 1691 bErrorIvpEnhV = true; 1595 1692 } 1596 1693 1597 if( m_GOPListMvc[k][MAX_GOP].m_numRefPicsActive > m_GOPListMvc[k][MAX_GOP].m_numInterViewRefPics )1694 if( gopEntry.m_numRefPicsActive > gopEntry.m_numActiveRefLayerPics ) 1598 1695 { 1599 m_GOPListMvc[k][MAX_GOP].m_numRefPicsActive = m_GOPListMvc[k][MAX_GOP].m_numInterViewRefPics;1696 gopEntry.m_numRefPicsActive = gopEntry.m_numActiveRefLayerPics; 1600 1697 } 1601 1698 1602 if( m_GOPListMvc[k][MAX_GOP].m_sliceType == 'P' )1699 if( gopEntry.m_sliceType == 'P' ) 1603 1700 { 1604 if( m_GOPListMvc[k][MAX_GOP].m_numInterViewRefPics < 1 )1701 if( gopEntry.m_numActiveRefLayerPics < 1 ) 1605 1702 { 1606 printf( "\nError: #IL_ref_pics must be at least one for FrameI_l%d with slice type P\n", k);1703 printf( "\nError: #IL_ref_pics must be at least one for FrameI_l%d with slice type P\n", layer ); 1607 1704 bErrorIvpEnhV = true; 1608 1705 } 1609 1706 else 1610 1707 { 1611 for( Int j = 0; j < m_GOPListMvc[k][MAX_GOP].m_numInterViewRefPics; j++ )1708 for( Int j = 0; j < gopEntry.m_numActiveRefLayerPics; j++ ) 1612 1709 { 1613 if( m_GOPListMvc[k][MAX_GOP].m_interViewRefPosL[1][j] != -1 )1710 if( gopEntry.m_interViewRefPosL[1][j] != -1 ) 1614 1711 { 1615 printf( "\nError: inter-layer ref pos %d on L1 not possible for FrameI_l%d with slice type P\n", m_GOPListMvc[k][MAX_GOP].m_interViewRefPosL[1][j], k);1712 printf( "\nError: inter-layer ref pos %d on L1 not possible for FrameI_l%d with slice type P\n", gopEntry.m_interViewRefPosL[1][j], layer ); 1616 1713 bErrorIvpEnhV = true; 1617 1714 } … … 1620 1717 } 1621 1718 1622 if( m_GOPListMvc[k][MAX_GOP].m_sliceType == 'B' && m_GOPListMvc[k][MAX_GOP].m_numInterViewRefPics < 1 )1719 if( gopEntry.m_sliceType == 'B' && gopEntry.m_numActiveRefLayerPics < 1 ) 1623 1720 { 1624 printf( "\nError: #IL_ref_pics must be at least one for FrameI_l%d with slice type B\n", k);1721 printf( "\nError: #IL_ref_pics must be at least one for FrameI_l%d with slice type B\n", layer ); 1625 1722 bErrorIvpEnhV = true; 1626 1723 } -
branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.h
r532 r534 86 86 Int m_scalabilityMask; ///< Mask indicating scalabilities, 1: texture; 3: texture + depth 87 87 std::vector<Int> m_dimensionIdLen; ///< Length of scalability dimension s 88 89 // layer sets 90 Int m_vpsNumLayerSets; ///< Number of layer sets 91 std::vector< std::vector<Int> > m_layerIdsInSets; ///< LayerIds in vps of layer set 92 Bool m_defaultOneTargetOutputLayerFlag; ///< Output highest layer of layer sets by default 93 std::vector<Int> m_outputLayerSetIdx; ///< Indices of layer sets used as additional output layer sets 94 std::vector< std::vector<Int> > m_layerIdsInAddOutputLayerSet; ///< LayerIds in vps of additional output layers 95 std::vector<Int> m_profileLevelTierIdx; ///< Indices of of profile level tier 96 97 // Dependencies 98 std::vector< std::vector<Int> > m_directRefLayers; ///< LayerIds of direct reference layers 99 std::vector< std::vector<Int> > m_dependencyTypes; ///< Dependency types of direct reference layers 100 88 101 #if H_3D_IV_MERGE 89 102 Bool m_ivMvPredFlag; ///< Interview motion vector prediction -
branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.cpp
r532 r534 118 118 xSetLayerIds ( vps ); 119 119 xSetDimensionIdAndLength ( vps ); 120 xSetDirectDependencyFlags( vps ); 120 xSetDependencies( vps ); 121 xSetProfileTierLevel ( vps ); 122 xSetLayerSets ( vps ); 121 123 #if H_3D 122 124 vps.initViewIndex(); … … 1079 1081 } 1080 1082 1081 Void TAppEncTop::xSetDirectDependencyFlags( TComVPS& vps ) 1082 { 1083 for( Int layer = 0; layer < m_numberOfLayers; layer++ ) 1084 { 1085 if( m_GOPListMvc[layer][MAX_GOP].m_POC == -1 ) 1086 { 1087 continue; 1088 } 1089 for( Int i = 0; i < getGOPSize()+1; i++ ) 1090 { 1091 GOPEntry ge = ( i < getGOPSize() ) ? m_GOPListMvc[layer][i] : m_GOPListMvc[layer][MAX_GOP]; 1092 for( Int j = 0; j < ge.m_numInterViewRefPics; j++ ) 1083 Void TAppEncTop::xSetDependencies( TComVPS& vps ) 1084 { 1085 // Direct dependency flags + dependency types 1086 for( Int depLayer = 1; depLayer < MAX_NUM_LAYERS; depLayer++ ) 1087 { 1088 for( Int refLayer = 0; refLayer < MAX_NUM_LAYERS; refLayer++ ) 1089 { 1090 vps.setDirectDependencyFlag( depLayer, refLayer, false); 1091 vps.setDirectDependencyType( depLayer, refLayer, -1 ); 1092 } 1093 } 1094 for( Int depLayer = 1; depLayer < m_numberOfLayers; depLayer++ ) 1095 { 1096 Int numRefLayers = (Int) m_directRefLayers[depLayer].size(); 1097 assert( numRefLayers == (Int) m_dependencyTypes[depLayer].size() ); 1098 for( Int i = 0; i < numRefLayers; i++ ) 1099 { 1100 Int refLayer = m_directRefLayers[depLayer][i]; 1101 vps.setDirectDependencyFlag( depLayer, refLayer, true); 1102 vps.setDirectDependencyType( depLayer, refLayer,m_dependencyTypes[depLayer][i]); 1103 } 1104 } 1105 1106 // Max temporal id for inter layer reference pictures 1107 for ( Int refLayerIdInVps = 0; refLayerIdInVps < m_numberOfLayers; refLayerIdInVps++) 1108 { 1109 Int maxTid = -1; 1110 for ( Int curLayerIdInVps = 1; curLayerIdInVps < m_numberOfLayers; curLayerIdInVps++) 1093 1111 { 1094 Int interLayerRef = layer + ge.m_interViewRefs[j]; 1095 vps.setDirectDependencyFlag( layer, interLayerRef, true ); 1112 for( Int i = 0; i < getGOPSize(); i++ ) 1113 { 1114 GOPEntry geCur = m_GOPListMvc[curLayerIdInVps][i]; 1115 GOPEntry geRef = m_GOPListMvc[refLayerIdInVps][i]; 1116 1117 for (Int j = 0; j < geCur.m_numActiveRefLayerPics; j++) 1118 { 1119 if ( m_directRefLayers[ curLayerIdInVps ][ geCur.m_interLayerPredLayerIdc[ j ]] == refLayerIdInVps ) 1120 { 1121 maxTid = std::max( maxTid, geRef.m_temporalId ); 1122 } 1123 } 1096 1124 } 1097 1125 } 1098 } 1099 1100 vps.checkVPSExtensionSyntax(); 1101 vps.calcIvRefLayers(); 1102 } 1126 vps.setMaxTidIlRefPicPlus1( refLayerIdInVps, maxTid + 1 ); 1127 } 1128 1129 // Max one active ref layer flag 1130 Bool maxOneActiveRefLayerFlag = true; 1131 for ( Int currLayerIdInVps = 1; currLayerIdInVps < m_numberOfLayers && maxOneActiveRefLayerFlag; currLayerIdInVps++) 1132 { 1133 for( Int i = 0; i < ( getGOPSize() + 1) && maxOneActiveRefLayerFlag; i++ ) 1134 { 1135 GOPEntry ge = m_GOPListMvc[currLayerIdInVps][ ( i < getGOPSize() ? i : MAX_GOP ) ]; 1136 maxOneActiveRefLayerFlag = maxOneActiveRefLayerFlag && (ge.m_numActiveRefLayerPics <= 1); 1137 } 1138 } 1139 1140 vps.setMaxOneActiveRefLayerFlag( maxOneActiveRefLayerFlag ); 1141 vps.setRefLayers(); 1142 }; 1103 1143 1104 1144 Void TAppEncTop::xSetLayerIds( TComVPS& vps ) … … 1109 1149 Int maxNuhLayerId = nuhLayerIdPresentFlag ? xGetMax( m_layerIdInNuh ) : ( m_numberOfLayers - 1 ) ; 1110 1150 1111 vps.set MaxNuhLayerId( maxNuhLayerId );1151 vps.setVpsMaxLayerId( maxNuhLayerId ); 1112 1152 vps.setVpsNuhLayerIdPresentFlag( nuhLayerIdPresentFlag ); 1113 1153 … … 1125 1165 maxVec = max( vec[i], maxVec ); 1126 1166 return maxVec; 1167 } 1168 1169 Void TAppEncTop::xSetProfileTierLevel( TComVPS& vps ) 1170 { 1171 const Int vpsNumProfileTierLevelMinus1 = 0; //TBD 1172 vps.setVpsNumProfileTierLevelMinus1( vpsNumProfileTierLevelMinus1 ); 1173 1174 for (Int i = 0; i <= vps.getVpsNumProfileTierLevelMinus1(); i++ ) 1175 { 1176 vps.setVpsProfilePresentFlag( i, true ); 1177 } 1178 } 1179 1180 1181 Void TAppEncTop::xSetLayerSets( TComVPS& vps ) 1182 { 1183 // Layer sets 1184 vps.setVpsNumLayerSetsMinus1 ( m_vpsNumLayerSets - 1 ); 1185 vps.setVpsNumberLayerSetsMinus1( vps.getVpsNumLayerSetsMinus1() ); 1186 1187 for (Int lsIdx = 0; lsIdx < m_vpsNumLayerSets; lsIdx++ ) 1188 { 1189 for( Int layerId = 0; layerId < MAX_NUM_LAYER_IDS; layerId++ ) 1190 { 1191 vps.setLayerIdIncludedFlag( false, lsIdx, layerId ); 1192 } 1193 for ( Int i = 0; i < m_layerIdsInSets[lsIdx].size(); i++) 1194 { 1195 vps.setLayerIdIncludedFlag( true, lsIdx, vps.getLayerIdInNuh( m_layerIdsInSets[lsIdx][i] ) ); 1196 } 1197 } 1198 1199 Int numAddOuputLayerSets = (Int) m_outputLayerSetIdx.size(); 1200 // Additional output layer sets + profileLevelTierIdx 1201 vps.setDefaultOneTargetOutputLayerFlag ( m_defaultOneTargetOutputLayerFlag ); 1202 vps.setMoreOutputLayerSetsThanDefaultFlag( numAddOuputLayerSets != 0 ); 1203 vps.setNumAddOutputLayerSetsMinus1 ( numAddOuputLayerSets - 1 ); 1204 1205 for (Int lsIdx = 1; lsIdx < m_vpsNumLayerSets; lsIdx++) 1206 { 1207 vps.setProfileLevelTierIdx( lsIdx, m_profileLevelTierIdx[ lsIdx ] ); 1208 } 1209 1210 for (Int addOutLs = 0; addOutLs < numAddOuputLayerSets; addOutLs++ ) 1211 { 1212 vps.setProfileLevelTierIdx( m_vpsNumLayerSets + addOutLs, m_profileLevelTierIdx[ addOutLs ] ); 1213 1214 Int refLayerSetIdx = m_outputLayerSetIdx[ addOutLs ]; 1215 vps.setOutputLayerSetIdxMinus1( m_vpsNumLayerSets + addOutLs, refLayerSetIdx - 1 ); 1216 1217 for (Int i = 0; i < m_layerIdsInSets[ refLayerSetIdx].size(); i++ ) 1218 { 1219 Bool outputLayerFlag = false; 1220 for (Int j = 0; j < m_layerIdsInAddOutputLayerSet[ addOutLs ].size(); j++ ) 1221 { 1222 if ( m_layerIdsInAddOutputLayerSet[addOutLs][ j ] == m_layerIdsInSets[ refLayerSetIdx][ i ] ) 1223 { 1224 outputLayerFlag = true; 1225 break; 1226 } 1227 } 1228 vps.setOutputLayerFlag( m_vpsNumLayerSets + addOutLs, i, outputLayerFlag ); 1229 } 1230 } 1127 1231 } 1128 1232 #endif -
branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.h
r531 r534 118 118 Void xSetLayerIds ( TComVPS& vps ); 119 119 Void xSetDimensionIdAndLength ( TComVPS& vps ); 120 Void xSetDirectDependencyFlags ( TComVPS& vps ); 120 Void xSetDependencies ( TComVPS& vps ); 121 Void xSetLayerSets ( TComVPS& vps ); 122 Void xSetProfileTierLevel ( TComVPS& vps ); 121 123 Int xGetMax( std::vector<Int>& vec); 122 124 #endif -
branches/HTM-DEV-0.3-dev2/source/Lib/TAppCommon/program_options_lite.cpp
r324 r534 39 39 #include <map> 40 40 #include "program_options_lite.h" 41 41 #include "../TLibCommon/TypeDef.h" 42 42 using namespace std; 43 43 … … 146 146 for(Options::NamesPtrList::iterator it = opts.opt_list.begin(); it != opts.opt_list.end(); it++) 147 147 { 148 #if H_MV 149 if ( (*it)->opt->opt_duplicate ) continue; 150 #endif 148 151 ostringstream line(ios_base::out); 149 152 doHelpOpt(line, **it, pad_short); … … 161 164 for(Options::NamesPtrList::iterator it = opts.opt_list.begin(); it != opts.opt_list.end(); it++) 162 165 { 166 #if H_MV 167 if ( (*it)->opt->opt_duplicate ) continue; 168 #endif 163 169 ostringstream line(ios_base::out); 164 170 line << " "; -
branches/HTM-DEV-0.3-dev2/source/Lib/TAppCommon/program_options_lite.h
r446 r534 36 36 #include <list> 37 37 #include <map> 38 #include "../TLibCommon/TypeDef.h" 38 39 39 40 #if H_MV … … 85 86 struct OptionBase 86 87 { 88 #if H_MV 89 OptionBase(const std::string& name, const std::string& desc, bool duplicate = false) 90 : opt_string(name), opt_desc(desc), opt_duplicate(duplicate) 91 #else 87 92 OptionBase(const std::string& name, const std::string& desc) 88 93 : opt_string(name), opt_desc(desc) 94 #endif 89 95 {}; 90 96 … … 98 104 std::string opt_string; 99 105 std::string opt_desc; 106 #if H_MV 107 bool opt_duplicate; 108 #endif 100 109 }; 101 110 … … 104 113 struct Option : public OptionBase 105 114 { 115 #if H_MV 116 Option(const std::string& name, T& storage, T default_val, const std::string& desc, bool duplicate = false) 117 : OptionBase(name, desc, duplicate), opt_storage(storage), opt_default_val(default_val) 118 #else 106 119 Option(const std::string& name, T& storage, T default_val, const std::string& desc) 107 120 : OptionBase(name, desc), opt_storage(storage), opt_default_val(default_val) 121 #endif 108 122 {} 109 123 … … 362 376 { 363 377 std::string cNameBuffer; 364 std::string cDesc riptionBuffer;378 std::string cDescBuffer; 365 379 366 380 cNameBuffer .resize( name.size() + 10 ); 367 cDesc riptionBuffer.resize( desc.size() + 10 );381 cDescBuffer.resize( desc.size() + 10 ); 368 382 369 383 storage.resize(uiMaxNum); 370 384 for ( unsigned int uiK = 0; uiK < uiMaxNum; uiK++ ) 371 385 { 386 Bool duplicate = (uiK != 0); 372 387 // isn't there are sprintf function for string?? 373 388 sprintf((char*) cNameBuffer.c_str() ,name.c_str(),uiK,uiK); 374 sprintf((char*) cDescriptionBuffer.c_str(),desc.c_str(),uiK,uiK); 375 376 parent.addOption(new Option<T>( cNameBuffer, (storage[uiK]), default_val, cDescriptionBuffer )); 389 390 if ( !duplicate ) 391 { 392 sprintf((char*) cDescBuffer.c_str(),desc.c_str(),uiK,uiK); 393 } 394 395 cNameBuffer.resize( std::strlen(cNameBuffer.c_str()) ); 396 cDescBuffer.resize( std::strlen(cDescBuffer.c_str()) ); 397 398 399 parent.addOption(new Option<T>( cNameBuffer, (storage[uiK]), default_val, cDescBuffer, duplicate )); 377 400 } 378 401 -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComDataCU.cpp
r532 r534 4321 4321 4322 4322 // use coldir. 4323 #if H_MV 4324 TComPic *pColPic; 4325 if (getSlice()->getAltCollocatedIndicationFlag() ) 4326 { 4327 pColPic = getSlice()->getPicFromRefPicSetInterLayer( getSlice()->getActiveMotionPredRefLayerId( getSlice()->getCollocatedRefLayerIdx() )); 4328 } 4329 else 4330 { 4331 pColPic = getSlice()->getRefPic( RefPicList(getSlice()->isInterB() ? 1-getSlice()->getColFromL0Flag() : 0), getSlice()->getColRefIdx()); 4332 } 4333 #else 4323 4334 TComPic *pColPic = getSlice()->getRefPic( RefPicList(getSlice()->isInterB() ? 1-getSlice()->getColFromL0Flag() : 0), getSlice()->getColRefIdx()); 4335 #endif 4324 4336 TComDataCU *pColCU = pColPic->getCU( uiCUAddr ); 4325 4337 if(pColCU->getPic()==0||pColCU->getPartitionSize(uiPartUnitIdx)==SIZE_NONE) -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.cpp
r532 r534 108 108 , m_enableTMVPFlag ( true ) 109 109 #if H_MV 110 , m_refPicSetInterLayer ( NULL ) 110 111 , m_layerId (0) 111 112 , m_viewId (0) … … 114 115 , m_isDepth (false) 115 116 #endif 117 , m_discardableFlag (false) 118 , m_interLayerPredEnabledFlag (false) 119 , m_numInterLayerRefPicsMinus1 (0) 120 , m_interLayerSamplePredOnlyFlag (false) 121 , m_altCollocatedIndicationFlag (0) 122 , m_collocatedRefLayerIdx (0) 116 123 #if H_3D_IC 117 124 , m_bApplyIC ( false ) … … 162 169 initWpAcDcParam(); 163 170 m_saoEnabledFlag = false; 171 #if H_MV 172 for (Int i = 0; i < MAX_NUM_LAYERS; i++ ) 173 { 174 m_interLayerPredLayerIdc[ i ] = 0; 175 } 176 #endif 164 177 } 165 178 … … 492 505 UInt NumPocStCurr1 = 0; 493 506 UInt NumPocLtCurr = 0; 494 #if H_MV495 Int numDirectRefLayers = getVPS()->getNumDirectRefLayers( getLayerIdInVps() );496 assert( numDirectRefLayers == refPicSetInterLayer.size() );497 #endif498 507 Int i; 499 508 for(i=0; i < m_pcRPS->getNumberOfNegativePictures(); i++) … … 544 553 TComPic* rpsCurrList1[MAX_NUM_REF+1]; 545 554 #if H_MV 546 Int numPocTotalCurr = NumPocStCurr0 + NumPocStCurr1 + NumPocLtCurr + numDirectRefLayers; 555 Int numPocInterCurr = NumPocStCurr0 + NumPocStCurr1 + NumPocLtCurr; 556 assert( numPocInterCurr == 0 || getInterRefEnabledInRPLFlag() ); 557 Int numPocTotalCurr = numPocInterCurr + getNumActiveRefLayerPics( ); 547 558 assert( numPocTotalCurr == getNumRpsCurrTempList() ); 548 559 #else … … 582 593 583 594 Int cIdx = 0; 595 #if H_MV 596 if ( getInterRefEnabledInRPLFlag() ) 597 { 598 #endif 584 599 for ( i=0; i<NumPocStCurr0; i++, cIdx++) 585 600 { … … 595 610 } 596 611 #if H_MV 597 for ( i=0; i<numDirectRefLayers; i++, cIdx++)598 {599 if( cIdx <= MAX_NUM_REF )600 {612 } 613 for ( i=0; i < getNumActiveRefLayerPics( ); i++, cIdx++) 614 { 615 assert( cIdx < MAX_NUM_REF ); 601 616 rpsCurrList0[cIdx] = refPicSetInterLayer[i]; 602 617 } 603 }604 618 #endif 605 619 … … 607 621 { 608 622 cIdx = 0; 623 #if H_MV 624 if ( getInterRefEnabledInRPLFlag() ) 625 { 626 #endif 609 627 for ( i=0; i<NumPocStCurr1; i++, cIdx++) 610 628 { … … 620 638 } 621 639 #if H_MV 622 for ( i=0; i<numDirectRefLayers; i++, cIdx++)623 {624 if( cIdx <= MAX_NUM_REF )625 {640 } 641 for ( i=0; i < getNumActiveRefLayerPics( ); i++, cIdx++) 642 { 643 assert( cIdx < MAX_NUM_REF ); 626 644 rpsCurrList1[cIdx] = refPicSetInterLayer[i]; 627 645 } 628 }629 646 #endif 630 647 } 631 648 632 649 ::memset(m_bIsUsedAsLongTerm, 0, sizeof(m_bIsUsedAsLongTerm)); 650 651 #if H_MV 652 Int numPocSt = NumPocStCurr0 + NumPocStCurr1; 653 assert( getInterRefEnabledInRPLFlag( ) || numPocSt == 0 ); 654 655 for (Int li = 0; li < 2; li++) 656 { 657 if ( m_eSliceType == P_SLICE && li == 1 ) 658 { 659 m_aiNumRefIdx[1] = 0; 660 ::memset( m_apcRefPicList[1], 0, sizeof(m_apcRefPicList[1])); 661 } 662 else 663 { 664 for (Int rIdx = 0; rIdx <= (m_aiNumRefIdx[ li ] - 1 ); rIdx ++) 665 { 666 Bool listModified = m_RefPicListModification.getRefPicListModificationFlagL( li ); 667 Int orgIdx = listModified ? m_RefPicListModification.getRefPicSetIdxL(li, rIdx) : (rIdx % numPocTotalCurr); 668 669 m_apcRefPicList [li][rIdx] = ( li == 0 ) ? rpsCurrList0[ orgIdx ] : rpsCurrList1[ orgIdx ]; 670 m_bIsUsedAsLongTerm[li][rIdx] = ( orgIdx >= numPocSt ) ; 671 } 672 } 673 } 674 #else 633 675 634 676 for (Int rIdx = 0; rIdx <= (m_aiNumRefIdx[0]-1); rIdx ++) … … 652 694 } 653 695 } 696 #endif 654 697 } 655 698 … … 687 730 } 688 731 #if H_MV 689 numRpsCurrTempList = numRpsCurrTempList + getVPS()->getNumDirectRefLayers( getLayerIdInVps() ); 732 assert( ( numRpsCurrTempList == 0 ) || getInterRefEnabledInRPLFlag() ); 733 numRpsCurrTempList = numRpsCurrTempList + getNumActiveRefLayerPics(); 690 734 #endif 691 735 return numRpsCurrTempList; … … 1022 1066 m_enableTMVPFlag = pSrc->m_enableTMVPFlag; 1023 1067 m_maxNumMergeCand = pSrc->m_maxNumMergeCand; 1068 1069 #if H_MV 1070 // Additional slice header syntax elements 1071 m_discardableFlag = pSrc->m_discardableFlag; 1072 m_interLayerPredEnabledFlag = pSrc->m_interLayerPredEnabledFlag; 1073 m_numInterLayerRefPicsMinus1 = pSrc->m_numInterLayerRefPicsMinus1; 1074 1075 for (Int layer = 0; layer < MAX_NUM_LAYERS; layer++ ) 1076 { 1077 m_interLayerPredLayerIdc[ layer ] = pSrc->m_interLayerPredLayerIdc[ layer ]; 1078 } 1079 1080 m_interLayerSamplePredOnlyFlag = pSrc->m_interLayerSamplePredOnlyFlag; 1081 m_altCollocatedIndicationFlag = pSrc->m_altCollocatedIndicationFlag ; 1082 m_collocatedRefLayerIdx = pSrc->m_collocatedRefLayerIdx ; 1083 m_numActiveMotionPredRefLayers = pSrc->m_numActiveMotionPredRefLayers; 1084 1085 for (Int layer = 0; layer < MAX_NUM_LAYER_IDS; layer++) 1086 { 1087 m_interLayerPredLayerIdc[layer] = pSrc->m_interLayerPredLayerIdc[layer]; 1088 } 1089 #endif 1024 1090 #if H_3D_IC 1025 1091 m_bApplyIC = pSrc->m_bApplyIC; … … 1489 1555 , m_numHrdParameters ( 0) 1490 1556 #if H_MV 1491 , m_max NuhLayerId ( 0)1557 , m_maxLayerId ( 0) 1492 1558 #else 1493 1559 , m_maxNuhReservedZeroLayerId ( 0) … … 1508 1574 } 1509 1575 #if H_MV 1576 for (Int lsIdx = 0; lsIdx < MAX_VPS_OP_SETS_PLUS1; lsIdx++ ) 1577 { 1578 for( Int layerId = 0; layerId < MAX_VPS_NUH_LAYER_ID_PLUS1; layerId++ ) 1579 { 1580 m_layerIdIncludedFlag[lsIdx][layerId] = false; 1581 } 1582 } 1583 1584 m_vpsNumberLayerSetsMinus1 = -1; 1585 m_vpsNumProfileTierLevelMinus1 = -1; 1586 1587 for ( Int i = 0; i < MAX_VPS_PROFILE_TIER_LEVEL; i++) 1588 { 1589 m_profileRefMinus1[ i ] = -1; 1590 } 1591 1592 m_moreOutputLayerSetsThanDefaultFlag = false; 1593 m_numAddOutputLayerSetsMinus1 = -1; 1594 m_defaultOneTargetOutputLayerFlag = false; 1595 1596 for ( Int i = 0; i < MAX_VPS_OUTPUTLAYER_SETS; i++) 1597 { 1598 m_outputLayerSetIdxMinus1[i] = -1; 1599 m_profileLevelTierIdx[i] = 0; 1600 for ( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++) 1601 { 1602 m_outputLayerFlag[i][j] = false; 1603 } 1604 } 1605 1606 m_maxOneActiveRefLayerFlag = false; 1607 m_directDepTypeLenMinus2 = 0; 1608 1609 1510 1610 m_avcBaseLayerFlag = false; 1511 1611 m_splittingFlag = false; … … 1518 1618 1519 1619 m_vpsNuhLayerIdPresentFlag = false; 1520 m_numOutputLayerSets = 0;1521 1620 1522 1621 for( Int i = 0; i < MAX_VPS_OP_SETS_PLUS1; i++ ) 1523 1622 { 1524 1623 m_vpsProfilePresentFlag [i] = false; 1525 m_profile LayerSetRefMinus1[i] = 0;1526 m_outputLayerSetIdx [i] = 0;1624 m_profileRefMinus1[i] = 0; 1625 m_outputLayerSetIdxMinus1 [i] = 0; 1527 1626 for( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++ ) 1528 1627 { … … 1540 1639 m_layerIdInNuh [i] = ( i == 0 ) ? 0 : -1; 1541 1640 m_numDirectRefLayers[i] = 0; 1641 m_maxTidIlRefPicPlus1[i] = -1; 1542 1642 #if H_3D 1543 1643 m_viewIndex [i] = -1; … … 1566 1666 { 1567 1667 m_directDependencyFlag[i][j] = false; 1668 m_directDependencyType[i][j] = -1; 1568 1669 m_refLayerId[i][j] = -1; 1569 1670 } … … 1686 1787 Bool TComVPS::checkVPSExtensionSyntax() 1687 1788 { 1688 // check splitting flag constraint1689 if ( getSplittingFlag() )1690 {1691 // Derive dimBitOffset[j]1692 Int dimBitOffset[MAX_NUM_SCALABILITY_TYPES+1];1693 Int numScalabilityTypes = getNumScalabilityTypes();1694 dimBitOffset[0] = 0;1695 1696 for (Int type = 1; type <= numScalabilityTypes; type++ )1697 {1698 dimBitOffset[ type ] = 0;1699 for (Int dimIdx = 0; dimIdx <= type - 1; dimIdx++)1700 dimBitOffset[ type ] += ( getDimensionIdLen( dimIdx ) );1701 }1702 1703 for (Int type = 0; type < getNumScalabilityTypes(); type++ )1704 {1705 for( Int layer = 1; layer < getMaxLayers(); layer++ )1706 {1707 assert( getDimensionId( layer, type ) == ( ( getLayerIdInNuh( layer ) & ( (1 << dimBitOffset[ type + 1 ] ) - 1) ) >> dimBitOffset[ type ] ) );1708 };1709 };1710 }1711 1712 1789 for( Int layer = 1; layer < getMaxLayers(); layer++ ) 1713 1790 { … … 1737 1814 } 1738 1815 1739 1740 1741 1816 Void TComVPS::setScalabilityMask( UInt val ) 1742 1817 { … … 1745 1820 } 1746 1821 1747 Void TComVPS:: calcIvRefLayers()1748 { 1749 for( Int i = 1; i <= getMaxLayers(); i++ )1822 Void TComVPS::setRefLayers() 1823 { 1824 for( Int i = 0; i < MAX_NUM_LAYERS; i++ ) 1750 1825 { 1826 m_numSamplePredRefLayers[ i ] = 0; 1827 m_numMotionPredRefLayers[ i ] = 0; 1751 1828 m_numDirectRefLayers[ i ] = 0; 1829 for( Int j = 0; j < MAX_NUM_LAYERS; j++ ) { 1830 m_samplePredEnabledFlag[ i ][ j ] = 0; 1831 m_motionPredEnabledFlag[ i ][ j ] = 0; 1832 m_refLayerId[ i ][ j ] = 0; 1833 m_samplePredRefLayerId[ i ][ j ] = 0; 1834 m_motionPredRefLayerId[ i ][ j ] = 0; 1835 } 1836 } 1837 1838 for( Int i = 1; i <= getMaxLayers()- 1; i++ ) 1839 { 1840 for( Int j = 0; j < i; j++ ) 1841 { 1842 if( getDirectDependencyFlag(i,j) ) 1843 { 1844 m_refLayerId[ i ][m_numDirectRefLayers[ i ]++ ] = getLayerIdInNuh( j ); 1845 1846 m_samplePredEnabledFlag [ i ][ j ] = ( ( getDirectDependencyType( i , j ) + 1 ) & 1 ) == 1; 1847 m_numSamplePredRefLayers[ i ] += m_samplePredEnabledFlag [ i ][ j ] ? 1 : 0; 1848 m_motionPredEnabledFlag [ i ][ j ] = ( ( ( getDirectDependencyType( i , j ) + 1 ) & 2 ) >> 1 ) == 1; 1849 m_numMotionPredRefLayers[ i ] += m_motionPredEnabledFlag [ i][ j ] ? 1 : 0; 1850 } 1851 } 1852 } 1853 1854 for( Int i = 1, mIdx = 0, sIdx = 0; i <= getMaxLayers()- 1; i++ ) 1855 { 1752 1856 for( Int j = 0 ; j < i; j++ ) 1753 if( m_directDependencyFlag[ i ][ j ]) 1754 m_refLayerId[ i ][ m_numDirectRefLayers[ i ]++ ] = m_layerIdInNuh[ j ]; 1857 { 1858 if( m_motionPredEnabledFlag[ i ][ j ] ) 1859 { 1860 m_motionPredRefLayerId[ i ][ mIdx++ ] = getLayerIdInNuh( j ); 1861 } 1862 1863 if( m_samplePredEnabledFlag[ i ][ j ] ) 1864 { 1865 m_samplePredRefLayerId[ i ][ sIdx++ ] = getLayerIdInNuh( j ); 1866 } 1867 } 1755 1868 } 1756 1869 } … … 1814 1927 return getLayerIdInNuh( foundlayerId ); 1815 1928 } 1929 1816 1930 #endif // H_3D 1931 1932 Int TComVPS::xCeilLog2( Int val ) 1933 { 1934 assert( val > 0 ); 1935 Int ceilLog2 = 0; 1936 while( val > ( 1 << ceilLog2 ) ) ceilLog2++; 1937 return ceilLog2; 1938 } 1939 1940 1941 Int TComVPS::xGetDimBitOffset( Int j ) 1942 { 1943 Int dimBitOffset = 0; 1944 if ( getSplittingFlag() && j == getNumScalabilityTypes() ) 1945 { 1946 dimBitOffset = 6; 1947 } 1948 else 1949 { 1950 for (Int dimIdx = 0; dimIdx <= j-1; dimIdx++) 1951 { 1952 dimBitOffset += getDimensionIdLen( dimIdx ); 1953 } 1954 } 1955 return dimBitOffset; 1956 } 1957 1958 Int TComVPS::inferDimensionId( Int i, Int j ) 1959 { 1960 return ( ( getLayerIdInNuh( i ) & ( (1 << xGetDimBitOffset( j + 1 ) ) - 1) ) >> xGetDimBitOffset( j ) ); 1961 } 1962 1963 Int TComVPS::inferLastDimsionIdLenMinus1() 1964 { 1965 return ( 5 - xGetDimBitOffset( getNumScalabilityTypes() - 1 ) ); 1966 } 1967 1968 Int TComVPS::getNumLayersInIdList( Int lsIdx ) 1969 { 1970 assert( lsIdx >= 0 ); 1971 assert( lsIdx <= getVpsNumLayerSetsMinus1() ); 1972 Int numLayersInIdList = 0; 1973 for (Int layerId = 0; layerId < getVpsMaxLayerId(); layerId++ ) 1974 { 1975 numLayersInIdList += ( getLayerIdIncludedFlag( lsIdx, layerId ) ); 1976 } 1977 return numLayersInIdList; 1978 } 1817 1979 #endif // H_MV 1818 1980 … … 1865 2027 #if H_MV 1866 2028 , m_interViewMvVertConstraintFlag (false) 2029 , m_numIlpRestrictedRefLayers ( 0 ) 2030 1867 2031 #endif 1868 2032 #if H_3D … … 1883 2047 ::memset(m_ltRefPicPocLsbSps, 0, sizeof(m_ltRefPicPocLsbSps)); 1884 2048 ::memset(m_usedByCurrPicLtSPSFlag, 0, sizeof(m_usedByCurrPicLtSPSFlag)); 2049 #if H_MV 2050 for (Int i = 0; i < MAX_NUM_LAYERS; i++ ) 2051 { 2052 m_minSpatialSegmentOffsetPlus1[ i ] = 0; 2053 m_ctuBasedOffsetEnabledFlag [ i ] = false; 2054 m_minHorizontalCtuOffsetPlus1 [ i ] = 0; 2055 } 2056 #endif 1885 2057 } 1886 2058 … … 2361 2533 refPicSetInterLayer.clear(); 2362 2534 2363 for( Int i = 0; i < get VPS()->getNumDirectRefLayers( getLayerIdInVps()); i++ )2364 { 2365 Int layerIdRef = get VPS()->getRefLayerId( getLayerIdInVps(),i );2535 for( Int i = 0; i < getNumActiveRefLayerPics(); i++ ) 2536 { 2537 Int layerIdRef = getRefPicLayerId( i ); 2366 2538 TComPic* picRef = ivPicLists->getPic( layerIdRef, getPOC() ) ; 2367 2539 assert ( picRef != 0 ); … … 2371 2543 picRef->getSlice(0)->setReferenced( true ); 2372 2544 2545 // Consider to check here: 2546 // "If the current picture is a RADL picture, there shall be no entry in the RefPicSetInterLayer that is a RASL picture. " 2373 2547 refPicSetInterLayer.push_back( picRef ); 2374 2548 } … … 2441 2615 } 2442 2616 } 2617 } 2618 Int TComSlice::xCeilLog2( Int val ) 2619 { 2620 assert( val > 0 ); 2621 Int ceilLog2 = 0; 2622 while( val > ( 1 << ceilLog2 ) ) ceilLog2++; 2623 return ceilLog2; 2624 } 2625 2626 Void TComSlice::markCurrPic( TComPic* currPic ) 2627 { 2628 if ( !currPic->getSlice(0)->getDiscardableFlag() ) 2629 { 2630 currPic->getSlice(0)->setReferenced( true ) ; 2631 currPic->setIsLongTerm( false ); 2632 } 2633 else 2634 { 2635 currPic->getSlice(0)->setReferenced( false ) ; 2636 } 2637 } 2638 2639 Void TComSlice::setRefPicSetInterLayer( std::vector<TComPic*>* refPicSetInterLayer ) 2640 { 2641 m_refPicSetInterLayer = refPicSetInterLayer; 2642 } 2643 2644 TComPic* TComSlice::getPicFromRefPicSetInterLayer( Int layerId ) 2645 { 2646 assert( m_refPicSetInterLayer != 0 ); 2647 assert( (*m_refPicSetInterLayer).size() == getNumActiveRefLayerPics() ); 2648 TComPic* pcPic = NULL; 2649 for ( Int i = 0; i < getNumActiveRefLayerPics(); i++ ) 2650 { 2651 if ((*m_refPicSetInterLayer)[ i ]->getLayerId() == layerId) 2652 { 2653 pcPic = (*m_refPicSetInterLayer)[ i ]; 2654 } 2655 } 2656 assert(pcPic != NULL); 2657 return pcPic; 2658 } 2659 2660 Int TComSlice::getNumActiveRefLayerPics() 2661 { 2662 Int numActiveRefLayerPics; 2663 2664 if( getLayerId() == 0 || getVPS()->getNumDirectRefLayers( getLayerIdInVps() ) == 0 || !getInterLayerPredEnabledFlag() ) 2665 { 2666 numActiveRefLayerPics = 0; 2667 } 2668 else if( getVPS()->getMaxOneActiveRefLayerFlag() || getVPS()->getNumDirectRefLayers( getLayerIdInVps() ) == 1 ) 2669 { 2670 numActiveRefLayerPics = 1; 2671 } 2672 else 2673 { 2674 numActiveRefLayerPics = getNumInterLayerRefPicsMinus1() + 1; 2675 } 2676 return numActiveRefLayerPics; 2677 } 2678 2679 Int TComSlice::getRefPicLayerId( Int i ) 2680 { 2681 return getVPS()->getRefLayerId( getLayerIdInVps(), getInterLayerPredLayerIdc( i ) ); 2682 } 2683 2684 Void TComSlice::setActiveMotionPredRefLayers() 2685 { 2686 Int j = 0; 2687 for( Int i = 0; i < getNumActiveRefLayerPics(); i++) 2688 { 2689 if( getVPS()->getMotionPredEnabledFlag( getLayerIdInVps(), getInterLayerPredLayerIdc( i )) ) 2690 { 2691 m_activeMotionPredRefLayerId[ j++ ] = getVPS()->getRefLayerId( getLayerIdInVps(), i ); 2692 } 2693 } 2694 m_numActiveMotionPredRefLayers = j; 2695 2696 // Consider incorporating bitstream conformance tests on derived variables here. 2697 } 2698 2699 Bool TComSlice::getInterRefEnabledInRPLFlag() 2700 { 2701 Bool interRefEnabledInRPLFlag; 2702 if ( getVPS()->getNumSamplePredRefLayers( getLayerIdInVps() ) > 0 && getNumActiveRefLayerPics() > 0 ) 2703 { 2704 interRefEnabledInRPLFlag = !getInterLayerSamplePredOnlyFlag(); 2705 } 2706 else 2707 { 2708 interRefEnabledInRPLFlag = 1; 2709 } 2710 return interRefEnabledInRPLFlag; 2443 2711 } 2444 2712 #if H_3D_ARP -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.h
r532 r534 487 487 UInt m_numHrdParameters; 488 488 #if H_MV 489 UInt m_max NuhLayerId;489 UInt m_maxLayerId; 490 490 #else 491 491 UInt m_maxNuhReservedZeroLayerId; … … 494 494 UInt* m_hrdOpSetIdx; 495 495 Bool* m_cprmsPresentFlag; 496 UInt m_numOpSets; 497 #if H_MV 496 #if H_MV 497 UInt m_vpsNumLayerSetsMinus1; 498 498 Bool m_layerIdIncludedFlag[MAX_VPS_OP_SETS_PLUS1][MAX_VPS_NUH_LAYER_ID_PLUS1]; 499 499 #else 500 UInt m_numOpSets; 500 501 Bool m_layerIdIncludedFlag[MAX_VPS_OP_SETS_PLUS1][MAX_VPS_NUH_RESERVED_ZERO_LAYER_ID_PLUS1]; 501 502 #endif … … 514 515 515 516 #if H_MV 517 /// VPS EXTENSION SYNTAX ELEMENTS 516 518 Bool m_avcBaseLayerFlag; 517 519 Bool m_splittingFlag; … … 520 522 Bool m_vpsNuhLayerIdPresentFlag; 521 523 Int m_layerIdInNuh [MAX_NUM_LAYER_IDS]; 524 Int m_dimensionId [MAX_NUM_LAYER_IDS][MAX_NUM_SCALABILITY_TYPES]; 525 Bool m_directDependencyFlag [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS]; 526 Int m_maxTidIlRefPicPlus1 [MAX_NUM_LAYERS]; 527 Int m_vpsNumberLayerSetsMinus1; 528 Int m_vpsNumProfileTierLevelMinus1; 529 Bool m_vpsProfilePresentFlag [MAX_VPS_OP_SETS_PLUS1]; 530 Int m_profileRefMinus1 [MAX_VPS_PROFILE_TIER_LEVEL]; 531 Bool m_moreOutputLayerSetsThanDefaultFlag; 532 Int m_numAddOutputLayerSetsMinus1; 533 Bool m_defaultOneTargetOutputLayerFlag; 534 Int m_outputLayerSetIdxMinus1 [MAX_VPS_OUTPUTLAYER_SETS]; 535 Bool m_outputLayerFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1]; 536 Int m_profileLevelTierIdx [MAX_VPS_OUTPUTLAYER_SETS ]; 537 Bool m_maxOneActiveRefLayerFlag; 538 Int m_directDepTypeLenMinus2; 539 Int m_directDependencyType [MAX_NUM_LAYERS] [MAX_NUM_LAYERS]; 540 541 // VPS EXTENSION SEMANTICS VARIABLES 522 542 Int m_layerIdInVps [MAX_NUM_LAYERS ]; 523 Int m_dimensionId [MAX_NUM_LAYER_IDS][MAX_NUM_SCALABILITY_TYPES]; 543 544 Int m_numDirectRefLayers [MAX_NUM_LAYERS]; 545 Int m_refLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 546 547 Int m_numSamplePredRefLayers [MAX_NUM_LAYERS]; 548 Bool m_samplePredEnabledFlag [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 549 Int m_samplePredRefLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 550 551 Int m_numMotionPredRefLayers [MAX_NUM_LAYERS]; 552 Bool m_motionPredEnabledFlag [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 553 Int m_motionPredRefLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 524 554 #if H_3D 525 555 Int m_viewIndex [MAX_NUM_LAYERS ]; 556 #endif 557 558 Int xCeilLog2 ( Int val ); 559 Int xGetDimBitOffset( Int j ); 560 526 561 #if H_3D_ARP 527 562 UInt m_uiUseAdvResPred [MAX_NUM_LAYERS ]; … … 549 584 Bool m_ivMvScalingFlag; 550 585 #endif 551 552 #endif553 554 555 Bool m_vpsProfilePresentFlag [MAX_VPS_OP_SETS_PLUS1];556 Int m_profileLayerSetRefMinus1 [MAX_VPS_OP_SETS_PLUS1];557 Int m_numOutputLayerSets;558 Int m_outputLayerSetIdx [MAX_VPS_OP_SETS_PLUS1];559 Bool m_outputLayerFlag [MAX_VPS_OP_SETS_PLUS1][MAX_VPS_NUH_LAYER_ID_PLUS1];560 Bool m_directDependencyFlag [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS];561 562 Int m_numDirectRefLayers [ MAX_NUM_LAYERS ];563 Int m_refLayerId [ MAX_NUM_LAYERS ][MAX_NUM_LAYERS];564 586 565 587 #endif … … 606 628 607 629 #if H_MV 608 UInt getMaxNuhLayerId() { return m_maxNuhLayerId; } 609 Void setMaxNuhLayerId(UInt v) { m_maxNuhLayerId = v; } 630 UInt getVpsMaxLayerId() { return m_maxLayerId; } 631 Void setVpsMaxLayerId(UInt v) { m_maxLayerId = v; } 632 633 UInt getVpsNumLayerSetsMinus1() { return m_vpsNumLayerSetsMinus1; } 634 Void setVpsNumLayerSetsMinus1(UInt v) { m_vpsNumLayerSetsMinus1 = v; } 610 635 #else 611 636 UInt getMaxNuhReservedZeroLayerId() { return m_maxNuhReservedZeroLayerId; } 612 637 Void setMaxNuhReservedZeroLayerId(UInt v) { m_maxNuhReservedZeroLayerId = v; } 613 #endif614 638 615 639 UInt getMaxOpSets() { return m_numOpSets; } 616 640 Void setMaxOpSets(UInt v) { m_numOpSets = v; } 641 #endif 617 642 Bool getLayerIdIncludedFlag(UInt opsIdx, UInt id) { return m_layerIdIncludedFlag[opsIdx][id]; } 618 643 Void setLayerIdIncludedFlag(Bool v, UInt opsIdx, UInt id) { m_layerIdIncludedFlag[opsIdx][id] = v; } … … 652 677 Int getLayerIdInNuh( Int layerIdInVps ) { assert( m_layerIdInNuh[layerIdInVps] >= 0 ); return m_layerIdInNuh[layerIdInVps]; } 653 678 679 Bool nuhLayerIdIncluded( Int layerIdinNuh ) { return ( m_layerIdInVps[ layerIdinNuh ] > 0 ); } 680 681 Void setDimensionId( Int layerIdInVps, Int scalIdx, Int val ) { m_dimensionId[layerIdInVps][scalIdx] = val; } 682 Int getDimensionId( Int layerIdInVps, Int scalIdx ) { return m_dimensionId[layerIdInVps][scalIdx]; } 683 684 Void setDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Bool val ) { m_directDependencyFlag[depLayeridInVps][refLayeridInVps] = val; } 685 Bool getDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps ) { return m_directDependencyFlag[depLayeridInVps][refLayeridInVps]; } 686 687 Void setMaxTidIlRefPicPlus1( Int layerIdInVps, Int val ) { m_maxTidIlRefPicPlus1[ layerIdInVps ] = val; } 688 Int getMaxTidIlRefPicPlus1( Int layerIdInVps ) { return m_maxTidIlRefPicPlus1[ layerIdInVps ]; } 689 690 Void setVpsNumberLayerSetsMinus1( Int val ) { m_vpsNumberLayerSetsMinus1 = val; } 691 Int getVpsNumberLayerSetsMinus1( ) { return m_vpsNumberLayerSetsMinus1; } 692 693 Void setVpsNumProfileTierLevelMinus1( Int val ) { m_vpsNumProfileTierLevelMinus1 = val; } 694 Int getVpsNumProfileTierLevelMinus1( ) { return m_vpsNumProfileTierLevelMinus1; } 695 696 Void setVpsProfilePresentFlag( Int idx, Bool val ) { m_vpsProfilePresentFlag[idx] = val; } 697 Bool getVpsProfilePresentFlag( Int idx ) { return m_vpsProfilePresentFlag[idx]; } 698 699 Void setProfileRefMinus1( Int profileTierLevelIdx, Int val ) { m_profileRefMinus1[ profileTierLevelIdx ] = val; } 700 Int getProfileRefMinus1( Int profileTierLevelIdx ) { return m_profileRefMinus1[ profileTierLevelIdx ]; } 701 702 Void setMoreOutputLayerSetsThanDefaultFlag( Bool flag ) { m_moreOutputLayerSetsThanDefaultFlag = flag; } 703 Bool getMoreOutputLayerSetsThanDefaultFlag() { return m_moreOutputLayerSetsThanDefaultFlag; } 704 705 Void setNumAddOutputLayerSetsMinus1( Int val ) { m_numAddOutputLayerSetsMinus1 = val; } 706 Int getNumAddOutputLayerSetsMinus1( ) { return m_numAddOutputLayerSetsMinus1; } 707 708 Void setDefaultOneTargetOutputLayerFlag( Bool flag ) { m_defaultOneTargetOutputLayerFlag = flag; } 709 Bool getDefaultOneTargetOutputLayerFlag( ) { return m_defaultOneTargetOutputLayerFlag; } 710 711 Void setOutputLayerSetIdxMinus1( Int outLayerSetIdx, Int val ) { m_outputLayerSetIdxMinus1[ outLayerSetIdx ] = val; } 712 Int getOutputLayerSetIdxMinus1( Int outLayerSetIdx ) { return m_outputLayerSetIdxMinus1[ outLayerSetIdx ]; } 713 714 Void setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag ) { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; } 715 Bool getOutputLayerFlag( Int outLayerSetIdx, Int i ) { return m_outputLayerFlag[ outLayerSetIdx ][ i ]; } 716 717 Void setProfileLevelTierIdx( Int outLayerSetIdx, Int val ) { m_profileLevelTierIdx[ outLayerSetIdx = val ]; } 718 Int getProfileLevelTierIdx( Int outLayerSetIdx ) { return m_profileLevelTierIdx[ outLayerSetIdx ]; } 719 720 Void setMaxOneActiveRefLayerFlag( Bool flag) { m_maxOneActiveRefLayerFlag = flag; } 721 Bool getMaxOneActiveRefLayerFlag( ) { return m_maxOneActiveRefLayerFlag; } 722 723 Void setDirectDepTypeLenMinus2( Int val) { m_directDepTypeLenMinus2 = val; } 724 Int getDirectDepTypeLenMinus2( ) { return m_directDepTypeLenMinus2; } 725 726 Void setDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps, Int val) { m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ] = val; } 727 Int getDirectDependencyType( Int depLayeridInVps, Int refLayeridInVps) { return m_directDependencyType[ depLayeridInVps ][ refLayeridInVps ]; } 728 729 730 // VPS EXTENSION SEMANTICS VARIABLES 654 731 Void setLayerIdInVps( Int layerIdInNuh, Int val ) { m_layerIdInVps[layerIdInNuh] = val; } 655 732 Int getLayerIdInVps( Int layerIdInNuh ) { assert( m_layerIdInVps[layerIdInNuh] >= 0 ); return m_layerIdInVps[layerIdInNuh]; } 656 733 657 Bool nuhLayerIdIncluded( Int layerIdinNuh ) { return ( m_layerIdInVps[ layerIdinNuh ] > 0 ); }658 659 Void setDimensionId( Int layerIdInVps, Int scalIdx, Int val ) { m_dimensionId[layerIdInVps][scalIdx] = val; }660 Int getDimensionId( Int layerIdInVps, Int scalIdx ) { return m_dimensionId[layerIdInVps][scalIdx]; }661 662 734 Int getScalabilityId ( Int layerIdInVps, ScalabilityType scalType ); 663 664 735 Int getViewId ( Int layerIdInVps ) { return getScalabilityId( layerIdInVps, VIEW_ID ); } 736 737 Void setRefLayers(); 738 739 Int getNumDirectRefLayers( Int layerIdInVps ) { return m_numDirectRefLayers[ layerIdInVps ]; }; 740 Int getRefLayerId ( Int layerIdInVps, Int idx );; 741 742 Int getNumSamplePredRefLayers( Int layerIdInVps ) { return m_numSamplePredRefLayers[layerIdInVps]; } 743 Bool getSamplePredEnabledFlag ( Int layerIdInVps, Int idx ) { return m_samplePredEnabledFlag [layerIdInVps][idx]; } 744 Int getSamplePredRefLayerId ( Int layerIdInVps, Int idx ) { return m_samplePredRefLayerId [layerIdInVps][idx]; } 745 746 Int getNumMotionPredRefLayers( Int layerIdInVps ) { return m_numMotionPredRefLayers[layerIdInVps]; } 747 Bool getMotionPredEnabledFlag ( Int layerIdInVps, Int idx ) { return m_motionPredEnabledFlag [layerIdInVps][idx]; } 748 Int getMotionPredRefLayerId ( Int layerIdInVps, Int idx ) { return m_motionPredRefLayerId [layerIdInVps][idx]; } 749 750 Bool checkVPSExtensionSyntax(); 751 Int scalTypeToScalIdx ( ScalabilityType scalType ); 752 753 Int getProfileLevelTierIdxLen() { return xCeilLog2( getVpsNumProfileTierLevelMinus1() + 1 ); }; 754 Int getNumLayersInIdList ( Int lsIdx );; 755 756 // inference 757 Int inferDimensionId ( Int i, Int j ); 758 Int inferLastDimsionIdLenMinus1(); 759 665 760 #if H_3D 666 761 Void initViewIndex(); 667 762 Int getViewIndex ( Int layerIdInVps ) { return m_viewIndex[ layerIdInVps ]; } 668 763 Int getDepthId ( Int layerIdInVps ) { return getScalabilityId( layerIdInVps, DEPTH_ID ); } 669 Int getLayerIdInNuh( Int viewIndex, Bool depthFlag ); 764 Int getLayerIdInNuh( Int viewIndex, Bool depthFlag ); 765 670 766 #if H_3D_ARP 671 767 UInt getUseAdvRP ( Int layerIdInVps ) { return m_uiUseAdvResPred[layerIdInVps]; } … … 703 799 Void setIvMvScalingFlag ( Bool b ) { m_ivMvScalingFlag = b; } 704 800 #endif 705 #endif 706 707 Void setVpsProfilePresentFlag( Int layerSet, Bool val ) { m_vpsProfilePresentFlag[layerSet] = val; } 708 Bool getVpsProfilePresentFlag( Int layerSet ) { return m_vpsProfilePresentFlag[layerSet]; } 709 710 Void setProfileLayerSetRefMinus1( Int layerSet, Int val ) { m_profileLayerSetRefMinus1[layerSet] = val; } 711 Bool getProfileLayerSetRefMinus1( Int layerSet ) { return m_profileLayerSetRefMinus1[layerSet]; } 712 713 Void setNumOutputLayerSets( Int val ) { m_numOutputLayerSets = val; } 714 Int getNumOutputLayerSets() { return m_numOutputLayerSets; } 715 716 Void setOutputLayerSetIdx( Int layerSet, Int val ) { m_outputLayerSetIdx[layerSet] = val; } 717 Int getOutputLayerSetIdx( Int layerSet ) { return m_outputLayerSetIdx[layerSet]; } 718 719 Void setOutputLayerFlag( Int layerSet, Int layer, Bool val ) { m_outputLayerFlag[layerSet][layer] = val; } 720 Bool getOutputLayerFlag( Int layerSet, Int layer ) { return m_outputLayerFlag[layerSet][layer]; } 721 722 Void setDirectDependencyFlag( Int layerHigh, Int layerLow, Bool val ) { m_directDependencyFlag[layerHigh][layerLow] = val; } 723 Bool getDirectDependencyFlag( Int layerHigh, Int layerLow ) { return m_directDependencyFlag[layerHigh][layerLow]; } 724 725 Void calcIvRefLayers(); 726 727 Int getNumDirectRefLayers( Int layerIdInVps ) { return m_numDirectRefLayers[ layerIdInVps ]; }; 728 Int getRefLayerId ( Int layerIdInVps, Int idx );; 729 730 Bool checkVPSExtensionSyntax(); 731 Int scalTypeToScalIdx ( ScalabilityType scalType ); 801 802 #endif 732 803 #endif 733 804 }; … … 813 884 Int m_numTicksPocDiffOneMinus1; 814 885 #endif 815 886 #if H_MV 887 Bool m_tileBoundariesAlignedFlag; 888 #endif 816 889 public: 817 890 TComVUI() … … 849 922 ,m_numTicksPocDiffOneMinus1(0) 850 923 #endif 924 #if H_MV 925 ,m_tileBoundariesAlignedFlag(true) 926 #endif 851 927 {} 852 928 … … 950 1026 Int getNumTicksPocDiffOneMinus1() {return m_numTicksPocDiffOneMinus1;} 951 1027 Void setNumTicksPocDiffOneMinus1(Int x) { m_numTicksPocDiffOneMinus1 = x;} 1028 #endif 1029 #if H_MV 1030 Bool getTileBoundariesAlignedFlag( ) { return m_tileBoundariesAlignedFlag; } 1031 Void setTileBoundariesAlignedFlag( Bool flag ) { m_tileBoundariesAlignedFlag = flag; } 952 1032 #endif 953 1033 }; … … 1035 1115 #if H_MV 1036 1116 Bool m_interViewMvVertConstraintFlag; 1117 Int m_numIlpRestrictedRefLayers ; 1118 Int m_minSpatialSegmentOffsetPlus1[MAX_NUM_LAYERS]; 1119 Bool m_ctuBasedOffsetEnabledFlag [MAX_NUM_LAYERS]; 1120 Int m_minHorizontalCtuOffsetPlus1 [MAX_NUM_LAYERS]; 1037 1121 #endif 1038 1122 #if H_3D … … 1041 1125 Int m_aaiCodedScale [2][MAX_NUM_LAYERS]; 1042 1126 Int m_aaiCodedOffset[2][MAX_NUM_LAYERS]; 1127 #endif 1128 #if H_MV 1129 Int m_layerId; 1043 1130 #endif 1044 1131 public: … … 1175 1262 Void setInterViewMvVertConstraintFlag(Bool val) { m_interViewMvVertConstraintFlag = val; } 1176 1263 Bool getInterViewMvVertConstraintFlag() { return m_interViewMvVertConstraintFlag;} 1264 1265 //// sps_extension_vui_parameters( ) 1266 Void setNumIlpRestrictedRefLayers ( Int val ) { m_numIlpRestrictedRefLayers = val;} 1267 Int getNumIlpRestrictedRefLayers ( ) { return m_numIlpRestrictedRefLayers ;} 1268 1269 Void setMinSpatialSegmentOffsetPlus1( Int i, Int val ) { m_minSpatialSegmentOffsetPlus1[ i ] = val;} 1270 Int getMinSpatialSegmentOffsetPlus1( Int i ) { return m_minSpatialSegmentOffsetPlus1[ i ];} 1271 1272 Void setCtuBasedOffsetEnabledFlag ( Int i, Bool flag ) { m_ctuBasedOffsetEnabledFlag [ i ] = flag;} 1273 Bool getCtuBasedOffsetEnabledFlag ( Int i ) { return m_ctuBasedOffsetEnabledFlag [ i ];} 1274 1275 Void setMinHorizontalCtuOffsetPlus1 ( Int i, Int val ) { m_minHorizontalCtuOffsetPlus1 [ i ] = val;} 1276 Int getMinHorizontalCtuOffsetPlus1 ( Int i ) { return m_minHorizontalCtuOffsetPlus1 [ i ];} 1177 1277 #endif 1178 1278 #if H_3D … … 1185 1285 Int* getInvCodedOffset () { return m_aaiCodedOffset[1]; } 1186 1286 #endif 1287 #if H_MV 1288 Int getLayerId () { return m_layerId; } 1289 Void setLayerId ( Int val ) { m_layerId = val; } 1290 #endif 1291 1187 1292 }; 1188 1293 … … 1213 1318 #if H_MV 1214 1319 // Why not an listIdx for all members, would avoid code duplication?? 1215 Void setRefPicSetIdxL(UInt li, UInt idx, UInt refPicSetIdx) {( li==0 ? m_RefPicSetIdxL0[idx] : m_RefPicSetIdxL1[idx] ) = refPicSetIdx; }; 1216 Void setRefPicListModificationFlagL(UInt li, Bool flag) { ( li==0 ? m_bRefPicListModificationFlagL0 : m_bRefPicListModificationFlagL1 ) = flag; }; 1320 Void setRefPicSetIdxL(UInt li, UInt idx, UInt refPicSetIdx) {( li==0 ? m_RefPicSetIdxL0[idx] : m_RefPicSetIdxL1[idx] ) = refPicSetIdx; } 1321 UInt getRefPicSetIdxL(UInt li, UInt idx ) { return ( li == 0 ) ? m_RefPicSetIdxL0[idx] : m_RefPicSetIdxL1[idx] ; } 1322 Void setRefPicListModificationFlagL(UInt li, Bool flag) { ( li==0 ? m_bRefPicListModificationFlagL0 : m_bRefPicListModificationFlagL1 ) = flag; } 1323 Bool getRefPicListModificationFlagL(UInt li ) { return ( li== 0) ? m_bRefPicListModificationFlagL0 : m_bRefPicListModificationFlagL1; } 1217 1324 #endif 1218 1325 }; … … 1539 1646 Bool m_enableTMVPFlag; 1540 1647 #if H_MV 1648 std::vector<TComPic*>* m_refPicSetInterLayer; 1541 1649 Int m_layerId; 1542 1650 Int m_viewId; … … 1565 1673 #endif 1566 1674 #endif 1675 #if H_MV 1676 // Additional slice header syntax elements 1677 Bool m_discardableFlag; 1678 Bool m_interLayerPredEnabledFlag; 1679 Int m_numInterLayerRefPicsMinus1; 1680 Int m_interLayerPredLayerIdc [MAX_NUM_LAYERS]; 1681 Bool m_interLayerSamplePredOnlyFlag; 1682 Bool m_altCollocatedIndicationFlag; 1683 Int m_collocatedRefLayerIdx; 1684 // Additional slice header semantics variables 1685 Int m_numActiveMotionPredRefLayers; 1686 Int m_activeMotionPredRefLayerId [ MAX_NUM_LAYER_IDS ]; 1687 1688 #endif 1689 1567 1690 public: 1568 1691 TComSlice(); … … 1757 1880 Void createAndApplyIvReferencePictureSet( TComPicLists* ivPicLists, std::vector<TComPic*>& refPicSetInterLayer ); 1758 1881 static Void markIvRefPicsAsShortTerm ( std::vector<TComPic*> refPicSetInterLayer ); 1882 static Void markCurrPic ( TComPic* currPic );; 1759 1883 static Void markIvRefPicsAsUnused ( TComPicLists* ivPicLists, std::vector<Int> targetDecLayerIdSet, TComVPS* vps, Int curLayerId, Int curPoc ); 1760 1884 … … 1873 1997 1874 1998 #endif 1999 #if H_MV 2000 // Additional slice header syntax elements 2001 Void setDiscardableFlag( Bool flag ) { m_discardableFlag = flag; } 2002 Bool getDiscardableFlag( ) { return m_discardableFlag; } 2003 2004 Void setInterLayerPredEnabledFlag( Bool flag ) { m_interLayerPredEnabledFlag = flag; } 2005 Bool getInterLayerPredEnabledFlag( ) { return m_interLayerPredEnabledFlag; } 2006 2007 Void setNumInterLayerRefPicsMinus1( Int val ) { m_numInterLayerRefPicsMinus1 = val; } 2008 Int getNumInterLayerRefPicsMinus1( ) { return m_numInterLayerRefPicsMinus1; } 2009 2010 Void setInterLayerPredLayerIdc( Int i, Int val ) { m_interLayerPredLayerIdc[i] = val; } 2011 Int getInterLayerPredLayerIdc( Int i ) { return m_interLayerPredLayerIdc[i]; } 2012 2013 Void setInterLayerSamplePredOnlyFlag( Bool flag ) { m_interLayerSamplePredOnlyFlag = flag; } 2014 Bool getInterLayerSamplePredOnlyFlag( ) { return m_interLayerSamplePredOnlyFlag; } 2015 2016 Void setAltCollocatedIndicationFlag( Bool flag ) { m_altCollocatedIndicationFlag = flag; } 2017 Bool getAltCollocatedIndicationFlag( ) { return m_altCollocatedIndicationFlag; } 2018 2019 Void setCollocatedRefLayerIdx( Int val ) { m_collocatedRefLayerIdx = val; } 2020 Int getCollocatedRefLayerIdx( ) { return m_collocatedRefLayerIdx; } 2021 2022 // Additional variables derived in slice header semantics 2023 Int getNumInterLayerRefPicsMinus1Len( ) { return xCeilLog2( getVPS()->getNumDirectRefLayers( getLayerIdInVps() )); } 2024 Int getInterLayerPredLayerIdcLen ( ) { return xCeilLog2( getVPS()->getNumDirectRefLayers( getLayerIdInVps() )); } 2025 2026 Int getNumActiveRefLayerPics( ); 2027 Int getRefPicLayerId ( Int i ); 2028 2029 Void setActiveMotionPredRefLayers ( ); 2030 2031 Int getNumActiveMotionPredRefLayers( ) { return m_numActiveMotionPredRefLayers; } 2032 Int getActiveMotionPredRefLayerId ( Int i ) { return m_activeMotionPredRefLayerId[i]; } 2033 2034 Bool getInterRefEnabledInRPLFlag( ); 2035 2036 Void setRefPicSetInterLayer ( std::vector<TComPic*>* m_refPicSetInterLayer ); 2037 TComPic* getPicFromRefPicSetInterLayer( Int layerId ); 2038 2039 #endif 1875 2040 1876 2041 protected: … … 1879 2044 TComPic* xGetLongTermRefPic(TComList<TComPic*>& rcListPic, Int poc, Bool pocHasMsb); 1880 2045 #if H_MV 2046 Int xCeilLog2( Int val ); 1881 2047 TComPic* xGetInterLayerRefPic( std::vector<TComPic*>& rcListIlPic, Int layerId ); 1882 2048 #endif -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TypeDef.h
r532 r534 260 260 #if H_MV 261 261 #define MAX_NUM_LAYERS 64 262 #define MAX_VPS_PROFILE_TIER_LEVEL 64 263 #define MAX_VPS_ADD_OUTPUT_LAYER_SETS 1024 264 #define MAX_VPS_OUTPUTLAYER_SETS ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 ) 262 265 #endif 263 266 -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecCAVLC.cpp
r532 r534 456 456 { 457 457 READ_FLAG( uiCode, "tiles_fixed_structure_flag"); pcVUI->setTilesFixedStructureFlag(uiCode); 458 #if H_MV 459 if ( pcSPS->getLayerId() > 0 ) 460 { 461 READ_FLAG( uiCode, "tile_boundaries_aligned_flag" ); pcVUI->setTileBoundariesAlignedFlag( uiCode == 1 ); 462 } 463 #endif 458 464 READ_FLAG( uiCode, "motion_vectors_over_pic_boundaries_flag"); pcVUI->setMotionVectorsOverPicBoundariesFlag(uiCode); 459 465 READ_FLAG( uiCode, "restricted_ref_pic_lists_flag"); pcVUI->setRestrictedRefPicListsFlag(uiCode); … … 577 583 UInt uiCode; 578 584 READ_CODE( 4, uiCode, "sps_video_parameter_set_id"); pcSPS->setVPSId ( uiCode ); 585 #if H_MV 586 if ( pcSPS->getLayerId() == 0 ) 587 { 588 #endif 579 589 READ_CODE( 3, uiCode, "sps_max_sub_layers_minus1" ); pcSPS->setMaxTLayers ( uiCode+1 ); 580 590 READ_FLAG( uiCode, "sps_temporal_id_nesting_flag" ); pcSPS->setTemporalIdNestingFlag ( uiCode > 0 ? true : false ); … … 584 594 assert( uiCode == 1 ); 585 595 } 586 587 596 parsePTL(pcSPS->getPTL(), 1, pcSPS->getMaxTLayers() - 1); 597 #if H_MV 598 } 599 #endif 588 600 READ_UVLC( uiCode, "sps_seq_parameter_set_id" ); pcSPS->setSPSId( uiCode ); 589 601 READ_UVLC( uiCode, "chroma_format_idc" ); pcSPS->setChromaFormatIdc( uiCode ); … … 743 755 #else 744 756 READ_FLAG( uiCode, "inter_view_mv_vert_constraint_flag" ); pcSPS->setInterViewMvVertConstraintFlag(uiCode == 1 ? true : false); 757 //// sps_extension_vui_parameters( ) 758 if( pcSPS->getVuiParameters()->getBitstreamRestrictionFlag() ) 759 { 760 READ_UVLC( uiCode, "num_ilp_restricted_ref_layers" ); pcSPS->setNumIlpRestrictedRefLayers( uiCode ); 761 for( Int i = 0; i < pcSPS->getNumIlpRestrictedRefLayers( ); i++ ) 762 { 763 READ_UVLC( uiCode, "min_spatial_segment_offset_plus1" ); pcSPS->setMinSpatialSegmentOffsetPlus1( i, uiCode ); 764 if( pcSPS->getMinSpatialSegmentOffsetPlus1( i ) > 0 ) 765 { 766 READ_FLAG( uiCode, "ctu_based_offset_enabled_flag[ i ]"); pcSPS->setCtuBasedOffsetEnabledFlag(i, uiCode == 1 ); 767 if( pcSPS->getCtuBasedOffsetEnabledFlag( i ) ) 768 { 769 READ_UVLC( uiCode, "min_horizontal_ctu_offset_plus1[ i ]"); pcSPS->setMinHorizontalCtuOffsetPlus1( i, uiCode ); 770 } 771 } 772 } 773 } 774 775 //// sps_extension_vui_parameters( ) END 776 READ_UVLC( uiCode, "sps_shvc_reserved_zero_idc" ); 745 777 READ_FLAG( uiCode, "sps_extension2_flag"); 746 778 if ( uiCode ) … … 752 784 } 753 785 #else 786 754 787 UInt uiCamParPrecision = 0; 755 788 Bool bCamParSlice = false; … … 834 867 assert( pcVPS->getNumHrdParameters() < MAX_VPS_OP_SETS_PLUS1 ); 835 868 #if H_MV 836 assert( pcVPS->getMaxNuhLayerId() < MAX_VPS_NUH_LAYER_ID_PLUS1 ); 837 READ_CODE( 6, uiCode, "vps_max_nuh_layer_id" ); pcVPS->setMaxNuhLayerId( uiCode ); 869 assert( pcVPS->getVpsMaxLayerId() < MAX_VPS_NUH_LAYER_ID_PLUS1 ); 870 READ_CODE( 6, uiCode, "vps_max_layer_id" ); pcVPS->setVpsMaxLayerId( uiCode ); 871 872 READ_UVLC( uiCode, "vps_max_num_layer_sets_minus1" ); pcVPS->setVpsNumLayerSetsMinus1( uiCode ); 873 for( UInt opsIdx = 1; opsIdx <= pcVPS->getVpsNumLayerSetsMinus1(); opsIdx ++ ) 874 { 875 for( UInt i = 0; i <= pcVPS->getVpsMaxLayerId(); i ++ ) 838 876 #else 839 877 assert( pcVPS->getMaxNuhReservedZeroLayerId() < MAX_VPS_NUH_RESERVED_ZERO_LAYER_ID_PLUS1 ); 840 878 READ_CODE( 6, uiCode, "vps_max_nuh_reserved_zero_layer_id" ); pcVPS->setMaxNuhReservedZeroLayerId( uiCode ); 841 #endif 879 842 880 READ_UVLC( uiCode, "vps_max_op_sets_minus1" ); pcVPS->setMaxOpSets( uiCode + 1 ); 843 881 for( UInt opsIdx = 1; opsIdx <= ( pcVPS->getMaxOpSets() - 1 ); opsIdx ++ ) 844 882 { 845 883 // Operation point set 846 #if H_MV847 for( UInt i = 0; i <= pcVPS->getMaxNuhLayerId(); i ++ )848 #else849 884 for( UInt i = 0; i <= pcVPS->getMaxNuhReservedZeroLayerId(); i ++ ) 850 885 #endif … … 893 928 READ_FLAG( uiCode, "splitting_flag" ); pcVPS->setSplittingFlag( uiCode == 1 ? true : false ); 894 929 895 // Parse scalability_mask[i]896 930 for( Int sIdx = 0; sIdx < MAX_NUM_SCALABILITY_TYPES; sIdx++ ) 897 931 { … … 899 933 } 900 934 901 Int numScalabilityTypes = pcVPS->getNumScalabilityTypes(); 902 903 // Parse dimension_id_len_minus1[j] 904 for( Int sIdx = 0; sIdx < numScalabilityTypes; sIdx++ ) 935 for( Int sIdx = 0; sIdx < pcVPS->getNumScalabilityTypes( ) - ( pcVPS->getSplittingFlag() ? 1 : 0 ); sIdx++ ) 905 936 { 906 937 READ_CODE( 3, uiCode, "dimension_id_len_minus1[j]" ); pcVPS->setDimensionIdLen( sIdx, uiCode + 1 ); 907 938 } 908 939 909 // vps_nuh_layer_id_present_flag 940 if ( pcVPS->getSplittingFlag() ) 941 { 942 pcVPS->setDimensionIdLen( pcVPS->getNumScalabilityTypes( ) - 1, pcVPS->inferLastDimsionIdLenMinus1() ); 943 } 944 910 945 READ_FLAG( uiCode, "vps_nuh_layer_id_present_flag" ); pcVPS->setVpsNuhLayerIdPresentFlag( uiCode == 1 ? true : false ); 911 946 912 // parse layer_id_in_nuh[i] and derive LayerIdInVps 913 // already updated to JCT3V-D0220 914 for( Int layer = 0; layer <= pcVPS->getMaxLayers() - 1; layer++ ) 915 { 916 UInt layerIdInNuh; 917 if ( pcVPS->getVpsNuhLayerIdPresentFlag() && ( layer != 0 ) ) 918 { 919 READ_CODE( 6, uiCode, "layer_id_in_nuh[i]" ); layerIdInNuh = uiCode; 947 for( Int i = 0; i <= pcVPS->getMaxLayers() - 1; i++ ) 948 { 949 if ( pcVPS->getVpsNuhLayerIdPresentFlag() && ( i > 0 ) ) 950 { 951 READ_CODE( 6, uiCode, "layer_id_in_nuh[i]" ); pcVPS->setLayerIdInNuh( i, uiCode ); 920 952 } 921 953 else 922 954 { 923 layerIdInNuh = layer; 924 } 925 926 pcVPS->setLayerIdInNuh( layer, layerIdInNuh ); 927 pcVPS->setLayerIdInVps( layerIdInNuh, layer ); 928 929 // parse dimension_id[i][j] 930 for( Int sIdx = 0; sIdx < numScalabilityTypes; sIdx++ ) 931 { 932 READ_CODE( pcVPS->getDimensionIdLen( sIdx ), uiCode, "dimension_id[i][j]" ); pcVPS->setDimensionId( layer, sIdx, uiCode ); 933 } 934 } 935 936 for( Int layerSet = 1; layerSet <= pcVPS->getMaxOpSets() - 1; layerSet++ ) 937 { 938 READ_FLAG( uiCode, "vps_profile_present_flag[lsIdx]" ); pcVPS->setVpsProfilePresentFlag( layerSet, uiCode == 1 ? true : false ); 939 if( pcVPS->getVpsProfilePresentFlag( layerSet ) == false ) 940 { 941 READ_UVLC( uiCode, "profile_layer_set_ref_minus1[lsIdx]" ); pcVPS->setProfileLayerSetRefMinus1( layerSet, uiCode ); 942 } 943 944 parsePTL ( pcVPS->getPTL( layerSet ), pcVPS->getVpsProfilePresentFlag( layerSet ), pcVPS->getMaxTLayers()-1); 945 if( pcVPS->getVpsProfilePresentFlag( layerSet ) == false ) 946 { 947 TComPTL temp = *pcVPS->getPTL( layerSet ); 948 *pcVPS->getPTL( layerSet ) = *pcVPS->getPTL( pcVPS->getProfileLayerSetRefMinus1( layerSet ) + 1 ); 949 pcVPS->getPTL( layerSet )->copyLevelFrom( &temp ); 950 } 951 } 952 953 READ_UVLC( uiCode, "num_output_layer_sets" ); pcVPS->setNumOutputLayerSets( uiCode ); 955 pcVPS->setLayerIdInNuh( i, i );; 956 } 957 958 pcVPS->setLayerIdInVps( pcVPS->getLayerIdInNuh( i ), i ); 954 959 955 for( Int layerSet = 0; layerSet < pcVPS->getNumOutputLayerSets(); layerSet++ ) 956 { 957 READ_UVLC( uiCode, "output_layer_set_idx[i]" ); pcVPS->setOutputLayerSetIdx( layerSet, uiCode ); 958 for( Int layer = 0; layer <= pcVPS->getMaxNuhLayerId(); layer++ ) 959 { 960 if( pcVPS->getLayerIdIncludedFlag( pcVPS->getOutputLayerSetIdx( layerSet ), layer ) == true ) 961 { 962 READ_FLAG( uiCode, "output_layer_flag" ); pcVPS->setOutputLayerFlag( layerSet, layer, uiCode == 1 ? true : false ); 963 } 964 } 965 } 960 for( Int j = 0; j < pcVPS->getNumScalabilityTypes() ; j++ ) 961 { 962 if ( !pcVPS->getSplittingFlag() ) 963 { 964 READ_CODE( pcVPS->getDimensionIdLen( j ), uiCode, "dimension_id[i][j]" ); pcVPS->setDimensionId( i, j, uiCode ); 965 } 966 else 967 { 968 pcVPS->setDimensionId( i, j, pcVPS->inferDimensionId( i, j) ); 969 } 970 } 971 } 972 966 973 967 974 for( Int i = 1; i <= pcVPS->getMaxLayers() - 1; i++ ) … … 972 979 } 973 980 } 974 981 982 for( Int i = 0; i < pcVPS->getMaxLayers() - 1; i++ ) 983 { 984 READ_CODE( 3, uiCode, "max_tid_il_ref_pics_plus1[i]" ); pcVPS->setMaxTidIlRefPicPlus1( i , uiCode ); 985 } 986 987 READ_CODE( 10, uiCode, "vps_number_layer_sets_minus1" ); pcVPS->setVpsNumberLayerSetsMinus1 ( uiCode ); 988 READ_CODE( 6, uiCode, "vps_num_profile_tier_level_minus1" ); pcVPS->setVpsNumProfileTierLevelMinus1( uiCode ); 989 990 for( Int i = 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ ) 991 { 992 READ_FLAG( uiCode, "vps_profile_present_flag[i]" ); pcVPS->setVpsProfilePresentFlag( i, uiCode == 1 ); 993 if( !pcVPS->getVpsProfilePresentFlag( i ) ) 994 { 995 READ_CODE( 6, uiCode, "profile_ref_minus1[i]" ); pcVPS->setProfileRefMinus1( i, uiCode ); 996 } 997 parsePTL ( pcVPS->getPTL( i ), pcVPS->getVpsProfilePresentFlag( i ), pcVPS->getMaxTLayers()-1); 998 if( !pcVPS->getVpsProfilePresentFlag( i ) ) 999 { 1000 TComPTL temp = *pcVPS->getPTL( i ); 1001 *pcVPS->getPTL( i ) = *pcVPS->getPTL( pcVPS->getProfileRefMinus1( i ) + 1 ); 1002 pcVPS->getPTL( i )->copyLevelFrom( &temp ); 1003 } 1004 } 1005 1006 Int numOutputLayerSets = pcVPS->getVpsNumberLayerSetsMinus1( ) + 1; 1007 1008 READ_FLAG( uiCode, "more_output_layer_sets_than_default_flag" ); pcVPS->setMoreOutputLayerSetsThanDefaultFlag( uiCode == 1 ); 1009 1010 if ( pcVPS->getMoreOutputLayerSetsThanDefaultFlag( ) ) 1011 { 1012 READ_CODE( 10, uiCode, "num_add_output_layer_sets_minus1" ); pcVPS->setNumAddOutputLayerSetsMinus1( uiCode ); 1013 numOutputLayerSets += ( pcVPS->getNumAddOutputLayerSetsMinus1( ) + 1); 1014 } 1015 1016 if( numOutputLayerSets > 1) 1017 { 1018 READ_FLAG( uiCode, "default_one_target_output_layer_flag" ); pcVPS->setDefaultOneTargetOutputLayerFlag( uiCode == 1); 1019 } 1020 1021 for( Int i = 1; i < numOutputLayerSets; i++ ) 1022 { 1023 if( i > pcVPS->getVpsNumberLayerSetsMinus1( ) ) 1024 { 1025 READ_UVLC( uiCode, "output_layer_set_idx_minus1[i]" ); pcVPS->setOutputLayerSetIdxMinus1( i, uiCode ); 1026 for( Int j = 0; j < pcVPS->getNumLayersInIdList( j ) - 1; j++ ) 1027 { 1028 READ_FLAG( uiCode, "output_layer_flag" ); pcVPS->setOutputLayerFlag( i, j, uiCode == 1 ); 1029 } 1030 } 1031 if ( pcVPS->getProfileLevelTierIdxLen() > 0 ) 1032 { 1033 READ_CODE( pcVPS->getProfileLevelTierIdxLen(), uiCode,"profile_level_tier_idx[ i ]" ); pcVPS->setProfileLevelTierIdx( i , uiCode ); 1034 } 1035 } 1036 1037 READ_FLAG( uiCode , "max_one_active_ref_layer_flag" ); pcVPS->setMaxOneActiveRefLayerFlag( uiCode == 1 ); 1038 READ_UVLC( uiCode, "direct_dep_type_len_minus2"); pcVPS->setDirectDepTypeLenMinus2 ( uiCode ); 1039 1040 for( Int i = 1; i <= pcVPS->getMaxLayers() - 1; i++ ) 1041 { 1042 for( Int j = 0; j < i; j++ ) 1043 { 1044 if (pcVPS->getDirectDependencyFlag( i, j) ) 1045 { 1046 READ_CODE( pcVPS->getDirectDepTypeLenMinus2( ) + 2, uiCode, "direct_dependency_type[i][j]" ); pcVPS->setDirectDependencyType( i, j , uiCode); 1047 } 1048 } 1049 } 1050 1051 READ_FLAG ( uiCode, "vps_shvc_reserved_zero_flag" ); 1052 1053 #if H_3D 975 1054 READ_FLAG( uiCode, "vps_extension2_flag" ); 976 1055 if (uiCode) 977 1056 { 978 #if H_3D979 1057 m_pcBitstream->readOutTrailingBits(); 980 1058 … … 1039 1117 } 1040 1118 READ_FLAG( uiCode, "iv_mv_scaling_flag"); pcVPS->setIvMvScalingFlag( uiCode == 1 ? true : false ); 1041 #else1042 while ( xMoreRbspData() )1043 {1044 READ_FLAG( uiCode, "vps_extension2_data_flag");1045 }1046 1119 #endif 1047 1120 } … … 1049 1122 pcVPS->checkVPSExtensionSyntax(); 1050 1123 1051 pcVPS-> calcIvRefLayers();1124 pcVPS->setRefLayers(); 1052 1125 1053 1126 #else … … 1147 1220 if(!rpcSlice->getDependentSliceSegmentFlag()) 1148 1221 { 1222 #if H_MV 1223 if ( rpcSlice->getPPS()->getNumExtraSliceHeaderBits() > 0 ) 1224 { 1225 READ_FLAG( uiCode, "discardable_flag" ); rpcSlice->setDiscardableFlag( uiCode == 1 ); 1226 } 1227 1228 for (Int i = 1; i < rpcSlice->getPPS()->getNumExtraSliceHeaderBits(); i++) 1229 #else 1149 1230 for (Int i = 0; i < rpcSlice->getPPS()->getNumExtraSliceHeaderBits(); i++) 1231 #endif 1150 1232 { 1151 1233 READ_FLAG(uiCode, "slice_reserved_undetermined_flag[]"); // ignored … … 1175 1257 rps->setNumberOfPictures(0); 1176 1258 rpcSlice->setRPS(rps); 1259 #if H_MV 1260 rpcSlice->setEnableTMVPFlag(false); 1261 #endif 1177 1262 } 1178 1263 else … … 1332 1417 } 1333 1418 } 1419 #if H_MV 1420 Int layerIdInVps = rpcSlice->getLayerIdInVps(); 1421 if( rpcSlice->getLayerId() > 0 && vps->getNumDirectRefLayers( layerIdInVps ) > 0 ) 1422 { 1423 READ_FLAG( uiCode, "inter_layer_pred_enabled_flag" ); rpcSlice->setInterLayerPredEnabledFlag( uiCode == 1 ); 1424 if( rpcSlice->getInterLayerPredEnabledFlag() && vps->getNumDirectRefLayers( layerIdInVps ) > 1 ) 1425 { 1426 if( !vps->getMaxOneActiveRefLayerFlag()) 1427 { 1428 READ_CODE( rpcSlice->getNumInterLayerRefPicsMinus1Len( ), uiCode, "num_inter_layer_ref_pics_minus1" ); rpcSlice->setNumInterLayerRefPicsMinus1( uiCode ); 1429 } 1430 for( Int i = 0; i < rpcSlice->getNumActiveRefLayerPics(); i++ ) 1431 { 1432 READ_CODE( rpcSlice->getInterLayerPredLayerIdcLen( ), uiCode, "inter_layer_pred_layer_idc" ); rpcSlice->setInterLayerPredLayerIdc( i, uiCode ); 1433 } 1434 } 1435 } 1436 1437 rpcSlice->setActiveMotionPredRefLayers( ); 1438 1439 if( vps->getNumSamplePredRefLayers( layerIdInVps ) > 0 && rpcSlice->getNumActiveRefLayerPics() > 0 ) 1440 { 1441 READ_FLAG( uiCode, "inter_layer_sample_pred_only_flag" ); rpcSlice->setInterLayerSamplePredOnlyFlag( uiCode == 1 ); 1442 } 1443 1444 #endif 1334 1445 if(sps->getUseSAO()) 1335 1446 { … … 1472 1583 if ( rpcSlice->getEnableTMVPFlag() ) 1473 1584 { 1585 #if H_MV 1586 if( rpcSlice->getLayerId() > 0 && rpcSlice->getNumActiveMotionPredRefLayers() > 0 ) 1587 { 1588 READ_FLAG( uiCode, "alt_collocated_indication_flag" ); rpcSlice->setAltCollocatedIndicationFlag( uiCode == 1 ); 1589 } 1590 1591 if( rpcSlice->getAltCollocatedIndicationFlag() && rpcSlice->getNumActiveMotionPredRefLayers() > 1 ) 1592 { 1593 READ_UVLC( uiCode, "collocated_ref_layer_idx" ); rpcSlice->setCollocatedRefLayerIdx( uiCode ); 1594 } 1595 else 1596 { 1597 #endif 1474 1598 if ( rpcSlice->getSliceType() == B_SLICE ) 1475 1599 { … … 1493 1617 rpcSlice->setColRefIdx(0); 1494 1618 } 1619 #if H_MV 1620 } 1621 #endif 1495 1622 } 1496 1623 if ( (pps->getUseWP() && rpcSlice->getSliceType()==P_SLICE) || (pps->getWPBiPred() && rpcSlice->getSliceType()==B_SLICE) ) -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecTop.cpp
r532 r534 52 52 m_aaiCodedScale = new Int* [ MAX_NUM_LAYERS ]; 53 53 m_aiViewId = new Int [ MAX_NUM_LAYERS ]; 54 #if !H_3D_FIX55 m_aiLayerIdx = new Int [ MAX_NUM_LAYERS ];56 #endif57 54 58 55 m_bViewReceived = new Bool [ MAX_NUM_LAYERS ]; … … 520 517 #if H_MV 521 518 TComSlice::markIvRefPicsAsShortTerm( m_refPicSetInterLayer ); 519 TComSlice::markCurrPic( pcPic ); 522 520 TComSlice::markIvRefPicsAsUnused ( m_ivPicLists, targetDecLayerIdSet, m_parameterSetManagerDecoder.getActiveVPS(), m_layerId, poc ); 523 521 #endif … … 675 673 676 674 #if H_MV 675 m_apcSlicePilot->setRefPicSetInterLayer( & m_refPicSetInterLayer ); 677 676 m_apcSlicePilot->setLayerId( nalu.m_layerId ); 678 677 #endif … … 1036 1035 { 1037 1036 TComSPS* sps = new TComSPS(); 1037 #if H_MV 1038 sps->setLayerId( getLayerId() ); 1039 #endif 1038 1040 #if H_3D 1039 1041 // Preliminary fix. assuming that all sps refer to the same SPS. -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCavlc.cpp
r533 r534 338 338 { 339 339 WRITE_FLAG(pcVUI->getTilesFixedStructureFlag(), "tiles_fixed_structure_flag"); 340 #if H_MV 341 if ( pcSPS->getLayerId() > 0 ) 342 { 343 WRITE_FLAG( pcVUI->getTileBoundariesAlignedFlag( ) ? 1 : 0 , "tile_boundaries_aligned_flag" ); 344 } 345 #endif 340 346 WRITE_FLAG(pcVUI->getMotionVectorsOverPicBoundariesFlag(), "motion_vectors_over_pic_boundaries_flag"); 341 347 WRITE_FLAG(pcVUI->getRestrictedRefPicListsFlag(), "restricted_ref_pic_lists_flag"); … … 452 458 #endif 453 459 WRITE_CODE( pcSPS->getVPSId (), 4, "sps_video_parameter_set_id" ); 460 #if H_MV 461 if ( pcSPS->getLayerId() == 0 ) 462 { 463 #endif 454 464 WRITE_CODE( pcSPS->getMaxTLayers() - 1, 3, "sps_max_sub_layers_minus1" ); 455 465 WRITE_FLAG( pcSPS->getTemporalIdNestingFlag() ? 1 : 0, "sps_temporal_id_nesting_flag" ); 456 466 codePTL(pcSPS->getPTL(), 1, pcSPS->getMaxTLayers() - 1); 467 #if H_MV 468 } 469 #endif 457 470 WRITE_UVLC( pcSPS->getSPSId (), "sps_seq_parameter_set_id" ); 458 471 WRITE_UVLC( pcSPS->getChromaFormatIdc (), "chroma_format_idc" ); … … 565 578 WRITE_FLAG( 1, "sps_extension_flag" ); 566 579 WRITE_FLAG( pcSPS->getInterViewMvVertConstraintFlag() ? 1 : 0, "inter_view_mv_vert_constraint_flag" ); 580 //// sps_extension_vui_parameters( ) 581 if( pcSPS->getVuiParameters()->getBitstreamRestrictionFlag() ) 582 { 583 WRITE_UVLC( pcSPS->getNumIlpRestrictedRefLayers( ), "num_ilp_restricted_ref_layers" ); 584 for( Int i = 0; i < pcSPS->getNumIlpRestrictedRefLayers( ); i++ ) 585 { 586 WRITE_UVLC( pcSPS->getMinSpatialSegmentOffsetPlus1( i ), "min_spatial_segment_offset_plus1" ); 587 if( pcSPS->getMinSpatialSegmentOffsetPlus1( i ) > 0 ) 588 { 589 WRITE_FLAG( pcSPS->getCtuBasedOffsetEnabledFlag( i ), "ctu_based_offset_enabled_flag[ i ]"); 590 if( pcSPS->getCtuBasedOffsetEnabledFlag( i ) ) 591 { 592 WRITE_UVLC( pcSPS->getMinHorizontalCtuOffsetPlus1( i ), "min_horizontal_ctu_offset_plus1[ i ]"); 593 } 594 } 595 } 596 } 597 //// sps_extension_vui_parameters( ) END 598 WRITE_UVLC( 0, "sps_shvc_reserved_zero_idc" ); 567 599 #if !H_3D 568 600 WRITE_FLAG( 0, "sps_extension2_flag" ); … … 632 664 assert( pcVPS->getNumHrdParameters() <= MAX_VPS_NUM_HRD_PARAMETERS ); 633 665 #if H_MV 634 assert( pcVPS->getMaxNuhLayerId() < MAX_VPS_NUH_LAYER_ID_PLUS1 ); 635 WRITE_CODE( pcVPS->getMaxNuhLayerId(), 6, "vps_max_nuh_layer_id" ); 666 assert( pcVPS->getVpsMaxLayerId() < MAX_VPS_NUH_LAYER_ID_PLUS1 ); 667 WRITE_CODE( pcVPS->getVpsMaxLayerId(), 6, "vps_max_layer_id" ); 668 669 WRITE_UVLC( pcVPS->getVpsNumLayerSetsMinus1(), "vps_max_num_layer_sets_minus1" ); 670 for( UInt opsIdx = 1; opsIdx <= pcVPS->getVpsNumLayerSetsMinus1(); opsIdx ++ ) 671 { 672 // Operation point set 673 for( UInt i = 0; i <= pcVPS->getVpsMaxLayerId(); i ++ ) 674 { 636 675 #else 637 676 assert( pcVPS->getMaxNuhReservedZeroLayerId() < MAX_VPS_NUH_RESERVED_ZERO_LAYER_ID_PLUS1 ); 638 677 WRITE_CODE( pcVPS->getMaxNuhReservedZeroLayerId(), 6, "vps_max_nuh_reserved_zero_layer_id" ); 639 #endif 678 640 679 pcVPS->setMaxOpSets(1); 641 680 WRITE_UVLC( pcVPS->getMaxOpSets() - 1, "vps_max_op_sets_minus1" ); … … 643 682 { 644 683 // Operation point set 645 #if H_MV646 for( UInt i = 0; i <= pcVPS->getMaxNuhLayerId(); i ++ )647 #else648 684 for( UInt i = 0; i <= pcVPS->getMaxNuhReservedZeroLayerId(); i ++ ) 649 #endif650 685 { 651 686 // Only applicable for version 1 652 687 pcVPS->setLayerIdIncludedFlag( true, opsIdx, i ); 688 #endif 653 689 WRITE_FLAG( pcVPS->getLayerIdIncludedFlag( opsIdx, i ) ? 1 : 0, "layer_id_included_flag[opsIdx][i]" ); 654 690 } … … 701 737 } 702 738 703 for( Int sIdx = 0; sIdx < pcVPS->getNumScalabilityTypes( ) ; sIdx++ )739 for( Int sIdx = 0; sIdx < pcVPS->getNumScalabilityTypes( ) - ( pcVPS->getSplittingFlag() ? 1 : 0 ); sIdx++ ) 704 740 { 705 741 WRITE_CODE( pcVPS->getDimensionIdLen( sIdx ) - 1 , 3, "dimension_id_len_minus1[j]"); 706 742 } 707 743 744 if ( pcVPS->getSplittingFlag() ) 745 { // Ignore old dimension id length 746 pcVPS->setDimensionIdLen( pcVPS->getNumScalabilityTypes( ) - 1 ,pcVPS->inferLastDimsionIdLenMinus1() + 1 ); 747 } 748 749 708 750 WRITE_FLAG( pcVPS->getVpsNuhLayerIdPresentFlag() ? 1 : 0, "vps_nuh_layer_id_present_flag"); 709 751 710 // already updated to JCT3V-D0220 711 for( Int layer = 0; layer <= pcVPS->getMaxLayers() - 1; layer++ ) 712 { 713 if ( ( layer != 0 ) && pcVPS->getVpsNuhLayerIdPresentFlag() ) 714 WRITE_CODE( pcVPS->getLayerIdInNuh( layer ), 6, "layer_id_in_nuh[i]"); 715 for( Int sIdx = 0; sIdx < pcVPS->getNumScalabilityTypes() ; sIdx++ ) 752 for( Int i = 0; i <= pcVPS->getMaxLayers() - 1; i++ ) 753 { 754 if ( pcVPS->getVpsNuhLayerIdPresentFlag() && ( i > 0 ) ) 716 755 { 717 WRITE_CODE( pcVPS->getDimensionId( layer, sIdx ), pcVPS->getDimensionIdLen( sIdx ), "dimension_id[i][j]"); 718 } 719 } 720 721 for( Int layerSet = 1; layerSet <= pcVPS->getMaxOpSets() - 1; layerSet++ ) 722 { 723 WRITE_FLAG( pcVPS->getVpsProfilePresentFlag( layerSet ) ? 1 : 0, "vps_profile_present_flag[lsIdx]" ); 724 if( pcVPS->getVpsProfilePresentFlag( layerSet ) == false ) 725 { 726 WRITE_UVLC( pcVPS->getProfileLayerSetRefMinus1( layerSet ), "profile_layer_set_ref_minus1[lsIdx]" ); 727 } 728 codePTL( pcVPS->getPTL( layerSet ), pcVPS->getVpsProfilePresentFlag( layerSet ), pcVPS->getMaxTLayers() - 1 ); 729 } 730 731 WRITE_UVLC( pcVPS->getNumOutputLayerSets(), "num_output_layer_sets" ); 732 733 for( Int layerSet = 0; layerSet < pcVPS->getNumOutputLayerSets(); layerSet++ ) 734 { 735 WRITE_UVLC( pcVPS->getOutputLayerSetIdx( layerSet ), "output_layer_set_idx[i]" ); 736 for( Int layer = 0; layer <= pcVPS->getMaxNuhLayerId(); layer++ ) 737 { 738 if( pcVPS->getLayerIdIncludedFlag( pcVPS->getOutputLayerSetIdx( layerSet ), layer ) == true ) 739 { 740 WRITE_FLAG( pcVPS->getOutputLayerFlag( layerSet, layer ) ? 1 : 0, "output_layer_flag" ); 756 WRITE_CODE( pcVPS->getLayerIdInNuh( i ), 6, "layer_id_in_nuh[i]"); 757 } 758 else 759 { 760 assert( pcVPS->getLayerIdInNuh( i ) == i ); 761 } 762 763 assert( pcVPS->getLayerIdInVps( pcVPS->getLayerIdInNuh( i ) ) == i ); 764 765 for( Int j = 0; j < pcVPS->getNumScalabilityTypes() ; j++ ) 766 { 767 if ( !pcVPS->getSplittingFlag() ) 768 { 769 WRITE_CODE( pcVPS->getDimensionId( i, j ), pcVPS->getDimensionIdLen( j ), "dimension_id[i][j]"); 770 } 771 else 772 { 773 assert( pcVPS->getDimensionId( i, j ) == pcVPS->inferDimensionId( i, j ) ); 741 774 } 742 775 } … … 750 783 } 751 784 } 785 786 for( Int i = 0; i < pcVPS->getMaxLayers() - 1; i++ ) 787 { 788 WRITE_CODE( pcVPS->getMaxTidIlRefPicPlus1( i ), 3, "max_tid_il_ref_pics_plus1[i]" ); 789 } 790 791 WRITE_CODE( pcVPS->getVpsNumberLayerSetsMinus1( ) , 10, "vps_number_layer_sets_minus1" ); 792 WRITE_CODE( pcVPS->getVpsNumProfileTierLevelMinus1( ), 6, "vps_num_profile_tier_level_minus1" ); 793 794 for( Int i = 1; i <= pcVPS->getVpsNumProfileTierLevelMinus1(); i++ ) 795 { 796 WRITE_FLAG( pcVPS->getVpsProfilePresentFlag( i ) ? 1 : 0, "vps_profile_present_flag[i]" ); 797 if( !pcVPS->getVpsProfilePresentFlag( i ) ) 798 { 799 WRITE_CODE( pcVPS->getProfileRefMinus1( i ), 6, "profile_ref_minus1[i]" ); 800 } 801 codePTL( pcVPS->getPTL( i ), pcVPS->getVpsProfilePresentFlag( i ), pcVPS->getMaxTLayers() - 1 ); 802 } 803 804 Int numOutputLayerSets = pcVPS->getVpsNumberLayerSetsMinus1( ) + 1; 805 806 WRITE_FLAG( pcVPS->getMoreOutputLayerSetsThanDefaultFlag( ) ? 1 : 0, "more_output_layer_sets_than_default_flag" ); 807 808 if ( pcVPS->getMoreOutputLayerSetsThanDefaultFlag( ) ) 809 { 810 WRITE_CODE( pcVPS->getNumAddOutputLayerSetsMinus1( ) , 10, "num_add_output_layer_sets_minus1" ); 811 numOutputLayerSets += ( pcVPS->getNumAddOutputLayerSetsMinus1( ) + 1 ); 812 } 813 814 if( numOutputLayerSets > 1) 815 { 816 WRITE_FLAG( pcVPS->getDefaultOneTargetOutputLayerFlag( ) ? 1 : 0, "default_one_target_output_layer_flag" ); 817 } 818 819 for( Int i = 1; i < numOutputLayerSets; i++ ) 820 { 821 if( i > pcVPS->getVpsNumberLayerSetsMinus1( ) ) 822 { 823 WRITE_UVLC( pcVPS->getOutputLayerSetIdxMinus1( i ), "output_layer_set_idx_minus1[i]" ); 824 for( Int j = 0; j < pcVPS->getNumLayersInIdList( j ) - 1 ; j++ ) 825 { 826 WRITE_FLAG( pcVPS->getOutputLayerFlag( i, j) ? 1 : 0, "output_layer_flag" ); 827 } 828 } 829 if ( pcVPS->getProfileLevelTierIdxLen() > 0 ) 830 { 831 WRITE_CODE( pcVPS->getProfileLevelTierIdx( i ), pcVPS->getProfileLevelTierIdxLen() ,"profile_level_tier_idx[ i ]" ); 832 } 833 } 834 835 WRITE_FLAG( pcVPS->getMaxOneActiveRefLayerFlag( ) ? 1 : 0, "max_one_active_ref_layer_flag" ); 836 WRITE_UVLC( pcVPS->getDirectDepTypeLenMinus2 ( ), "direct_dep_type_len_minus2"); 837 838 for( Int i = 1; i <= pcVPS->getMaxLayers() - 1; i++ ) 839 { 840 for( Int j = 0; j < i; j++ ) 841 { 842 if (pcVPS->getDirectDependencyFlag( i, j) ) 843 { 844 assert ( pcVPS->getDirectDependencyType( i, j ) != -1 ); 845 WRITE_CODE( pcVPS->getDirectDependencyType( i, j ),pcVPS->getDirectDepTypeLenMinus2( ) + 2, "direct_dependency_type[i][j]" ); 846 } 847 } 848 } 849 850 WRITE_FLAG ( 0, "vps_shvc_reserved_zero_flag" ); 851 752 852 #if H_3D_GEN 753 853 WRITE_FLAG( 1, "vps_extension2_flag" ); … … 811 911 Void TEncCavlc::codeSliceHeader ( TComSlice* pcSlice ) 812 912 { 913 #if H_MV 914 TComVPS* vps = pcSlice->getVPS(); 915 #endif 813 916 #if ENC_DEC_TRACE 814 917 xTraceSliceHeader (pcSlice); … … 853 956 if ( !pcSlice->getDependentSliceSegmentFlag() ) 854 957 { 958 #if H_MV 959 if ( pcSlice->getPPS()->getNumExtraSliceHeaderBits() > 0 ) 960 { 961 WRITE_FLAG( pcSlice->getDiscardableFlag( ) ? 1 : 0 , "discardable_flag" ); 962 } 963 964 for (Int i = 1; i < pcSlice->getPPS()->getNumExtraSliceHeaderBits(); i++) 965 #else 855 966 for (Int i = 0; i < pcSlice->getPPS()->getNumExtraSliceHeaderBits(); i++) 967 #endif 856 968 { 857 969 assert(!!"slice_reserved_undetermined_flag[]"); … … 1016 1128 } 1017 1129 } 1130 #if H_MV 1131 Int layerIdInVps = pcSlice->getLayerIdInVps(); 1132 if( pcSlice->getLayerId() > 0 && vps->getNumDirectRefLayers( layerIdInVps ) > 0 ) 1133 { 1134 WRITE_FLAG( pcSlice->getInterLayerPredEnabledFlag( ) ? 1 : 0 , "inter_layer_pred_enabled_flag" ); 1135 if( pcSlice->getInterLayerPredEnabledFlag() && vps->getNumDirectRefLayers( layerIdInVps ) > 1 ) 1136 { 1137 if( !vps->getMaxOneActiveRefLayerFlag()) 1138 { 1139 WRITE_CODE( pcSlice->getNumInterLayerRefPicsMinus1( ), pcSlice->getNumInterLayerRefPicsMinus1Len( ), "num_inter_layer_ref_pics_minus1" ); 1140 } 1141 for( Int i = 0; i < pcSlice->getNumActiveRefLayerPics(); i++ ) 1142 { 1143 WRITE_CODE( pcSlice->getInterLayerPredLayerIdc( i ), pcSlice->getInterLayerPredLayerIdcLen( ), "inter_layer_pred_layer_idc" ); 1144 } 1145 } 1146 } 1147 1148 if( vps->getNumSamplePredRefLayers( layerIdInVps ) > 0 && pcSlice->getNumActiveRefLayerPics() > 0 ) 1149 { 1150 WRITE_FLAG( pcSlice->getInterLayerSamplePredOnlyFlag( ) ? 1 : 0 , "inter_layer_sample_pred_only_flag" ); 1151 } 1152 1153 #endif 1018 1154 if(pcSlice->getSPS()->getUseSAO()) 1019 1155 { … … 1123 1259 if ( pcSlice->getEnableTMVPFlag() ) 1124 1260 { 1261 #if H_MV 1262 if( pcSlice->getLayerId() > 0 && pcSlice->getNumActiveMotionPredRefLayers() > 0 ) 1263 { 1264 WRITE_FLAG( pcSlice->getAltCollocatedIndicationFlag( ) ? 1 : 0 , "alt_collocated_indication_flag" ); 1265 } 1266 if( pcSlice->getAltCollocatedIndicationFlag() && pcSlice->getNumActiveMotionPredRefLayers() > 1 ) 1267 { 1268 WRITE_UVLC( pcSlice->getCollocatedRefLayerIdx( ), "collocated_ref_layer_idx" ); 1269 } 1270 else 1271 { 1272 #endif 1125 1273 if ( pcSlice->getSliceType() == B_SLICE ) 1126 1274 { … … 1135 1283 } 1136 1284 } 1285 #if H_MV 1286 } 1287 #endif 1137 1288 if ( (pcSlice->getPPS()->getUseWP() && pcSlice->getSliceType()==P_SLICE) || (pcSlice->getPPS()->getWPBiPred() && pcSlice->getSliceType()==B_SLICE) ) 1138 1289 { -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCfg.h
r532 r534 74 74 Int m_refIdc[MAX_NUM_REF_PICS+1]; 75 75 #if H_MV 76 Int m_num InterViewRefPics;77 Int m_inter ViewRefs[MAX_NUM_REF_PICS];76 Int m_numActiveRefLayerPics; 77 Int m_interLayerPredLayerIdc [MAX_NUM_REF_PICS]; 78 78 Int m_interViewRefPosL[2][MAX_NUM_REF_PICS]; 79 Int m_collocatedRefLayerIdx; 79 80 #endif 80 81 GOPEntry() … … 93 94 , m_numRefIdc(0) 94 95 #if H_MV 95 , m_numInterViewRefPics(0) 96 , m_numActiveRefLayerPics(0) 97 , m_collocatedRefLayerIdx(-1) 96 98 #endif 97 99 { … … 100 102 ::memset( m_refIdc, 0, sizeof(m_refIdc) ); 101 103 #if H_MV 102 ::memset( m_inter ViewRefs, 0, sizeof(m_interViewRefs) );104 ::memset( m_interLayerPredLayerIdc, 0, sizeof(m_interLayerPredLayerIdc) ); 103 105 ::memset( m_interViewRefPosL[0], -1, sizeof(m_interViewRefPosL[0]) ); 104 106 ::memset( m_interViewRefPosL[1], -1, sizeof(m_interViewRefPosL[1]) ); … … 429 431 , m_viewIndex(-1) 430 432 , m_isDepth(false) 433 , m_bUseVSO(false) 431 434 #endif 432 435 #endif -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncGOP.cpp
r532 r534 502 502 pcSlice->setSliceIdx(0); 503 503 #if H_MV 504 pcSlice->setRefPicSetInterLayer ( &m_refPicSetInterLayer ); 504 505 pcPic ->setLayerId ( getLayerId() ); 505 506 pcPic ->setViewId ( getViewId() ); … … 669 670 refPicListModification->setRefPicListModificationFlagL1(0); 670 671 #if H_MV 672 if ( pcSlice->getPPS()->getNumExtraSliceHeaderBits() > 0 ) 673 { 674 pcSlice->setDiscardableFlag ( false ); 675 } 676 677 TComVPS* vps = pcSlice->getVPS(); 678 Int layerIdInVps = vps ->getLayerIdInVps( getLayerId()); 679 Int numDirectRefLayers = vps ->getNumDirectRefLayers( layerIdInVps ); 680 GOPEntry gopEntry = m_pcCfg->getGOPEntry( (pcSlice->getRapPicFlag() && getLayerId() > 0) ? MAX_GOP : iGOPid ); 681 682 if ( getLayerId() > 0 && numDirectRefLayers > 0 ) 683 { 684 pcSlice->setInterLayerPredEnabledFlag ( gopEntry.m_numActiveRefLayerPics > 0 ); 685 if ( pcSlice->getInterLayerPredEnabledFlag() && numDirectRefLayers > 1 ) 686 { 687 if ( !vps->getMaxOneActiveRefLayerFlag() ) 688 { 689 pcSlice->setNumInterLayerRefPicsMinus1( gopEntry.m_numActiveRefLayerPics - 1 ); 690 } 691 for (Int i = 0; i < gopEntry.m_numActiveRefLayerPics; i++ ) 692 { 693 pcSlice->setInterLayerPredLayerIdc( i, gopEntry.m_interLayerPredLayerIdc[ i ] ); 694 } 695 } 696 } 697 assert( pcSlice->getNumActiveRefLayerPics() == gopEntry.m_numActiveRefLayerPics ); 698 699 if ( vps->getNumSamplePredRefLayers( layerIdInVps ) > 0 && pcSlice->getNumActiveRefLayerPics() > 0) 700 { 701 pcSlice->setInterLayerSamplePredOnlyFlag( gopEntry.m_numRefPics == 0 ); 702 } 703 671 704 pcSlice->createAndApplyIvReferencePictureSet( m_ivPicLists, m_refPicSetInterLayer ); 672 pcSlice->setNumRefIdx(REF_PIC_LIST_0,min(m_pcCfg->getGOPEntry( (pcSlice->getRapPicFlag() && getLayerId() > 0) ? MAX_GOP : iGOPid ).m_numRefPicsActive,( pcSlice->getRPS()->getNumberOfPictures() + (Int) m_refPicSetInterLayer.size() ) ) ); 673 pcSlice->setNumRefIdx(REF_PIC_LIST_1,min(m_pcCfg->getGOPEntry( (pcSlice->getRapPicFlag() && getLayerId() > 0) ? MAX_GOP : iGOPid ).m_numRefPicsActive,( pcSlice->getRPS()->getNumberOfPictures() + (Int) m_refPicSetInterLayer.size() ) ) ); 674 xSetRefPicListModificationsMvc( pcSlice, pocCurr, iGOPid ); 705 pcSlice->setNumRefIdx(REF_PIC_LIST_0,min(gopEntry.m_numRefPicsActive,( pcSlice->getRPS()->getNumberOfPictures() + (Int) m_refPicSetInterLayer.size() ) ) ); 706 pcSlice->setNumRefIdx(REF_PIC_LIST_1,min(gopEntry.m_numRefPicsActive,( pcSlice->getRPS()->getNumberOfPictures() + (Int) m_refPicSetInterLayer.size() ) ) ); 707 708 xSetRefPicListModificationsMv( pcSlice, iGOPid ); 709 710 pcSlice->setActiveMotionPredRefLayers( ); 711 712 if ( getLayerId() > 0 && pcSlice->getNumActiveMotionPredRefLayers() > 0 && pcSlice->getEnableTMVPFlag() && 713 ( pcSlice->getSliceType() == B_SLICE || pcSlice->getSliceType() == P_SLICE )) 714 { 715 pcSlice->setAltCollocatedIndicationFlag( gopEntry.m_collocatedRefLayerIdx >= 0 ); 716 if ( pcSlice->getNumActiveRefLayerPics() && pcSlice->getNumActiveMotionPredRefLayers() > 0 ) 717 { 718 pcSlice->setCollocatedRefLayerIdx( gopEntry.m_collocatedRefLayerIdx ); 719 } 720 } 721 675 722 #else 676 723 pcSlice->setNumRefIdx(REF_PIC_LIST_0,min(m_pcCfg->getGOPEntry(iGOPid).m_numRefPicsActive,pcSlice->getRPS()->getNumberOfPictures())); … … 827 874 pcSlice->setEnableTMVPFlag(0); 828 875 } 829 830 876 #if H_MV 831 877 if( pcSlice->getIdrPicFlag() ) … … 2120 2166 TComSlice::markIvRefPicsAsShortTerm( m_refPicSetInterLayer ); 2121 2167 std::vector<Int> temp; 2168 TComSlice::markCurrPic( pcPic ); 2122 2169 TComSlice::markIvRefPicsAsUnused ( m_ivPicLists, temp, pcPic->getSlice(0)->getVPS(), m_layerId, pcPic->getPOC() ); 2123 2170 #endif … … 2950 2997 #endif 2951 2998 #if H_MV 2952 Void TEncGOP::xSetRefPicListModificationsMv c( TComSlice* pcSlice, UInt uiPOCCurr, UInt iGOPid )2999 Void TEncGOP::xSetRefPicListModificationsMv( TComSlice* pcSlice, UInt iGOPid ) 2953 3000 { 2954 TComVPS* vps = pcSlice->getVPS();2955 3001 Int layer = pcSlice->getLayerIdInVps( ); 2956 3002 2957 if( pcSlice->getSliceType() == I_SLICE || !(pcSlice->getPPS()->getListsModificationPresentFlag()) || vps->getNumDirectRefLayers( layer) == 0 )3003 if( pcSlice->getSliceType() == I_SLICE || !(pcSlice->getPPS()->getListsModificationPresentFlag()) || pcSlice->getNumActiveRefLayerPics() == 0 ) 2958 3004 { 2959 3005 return; … … 2962 3008 // analyze inter-view modifications 2963 3009 GOPEntry ge = m_pcCfg->getGOPEntry( (pcSlice->getRapPicFlag() && ( layer > 0) ) ? MAX_GOP : iGOPid ); 2964 2965 TComRefPicListModification* refPicListModification = pcSlice->getRefPicListModification(); 3010 assert( ge.m_numActiveRefLayerPics == pcSlice->getNumActiveRefLayerPics() ); 2966 3011 2967 3012 Int maxRefListSize = pcSlice->getNumRpsCurrTempList(); 2968 Int numTemporalRefs = maxRefListSize - vps->getNumDirectRefLayers( layer ); 2969 3013 Int numTemporalRefs = maxRefListSize - pcSlice->getNumActiveRefLayerPics(); 2970 3014 2971 3015 for (Int li = 0; li < 2; li ++) // Loop over lists L0 and L1 2972 3016 { 2973 Int numModifications = 0; 2974 2975 for( Int k = 0; k < ge.m_numInterViewRefPics; k++ ) 2976 { 2977 numModifications += ( ge.m_interViewRefPosL[li][k] >= 0 ) ? 1 : 0; 2978 } 2979 2980 // set inter-view modifications 3017 // set inter-view modifications 3018 Int tempList[16]; 3019 for( Int k = 0; k < 16; k++ ) 3020 { 3021 tempList[ k ] = -1; 3022 } 3023 2981 3024 Bool isModified = false; 2982 Int tempList[16]; 2983 for( Int k = 0; k < 16; k++ ) { tempList[k] = -1; } 2984 2985 if( (maxRefListSize > 1) && (numModifications > 0) ) 2986 { 2987 for( Int k = 0; k < ge.m_numInterViewRefPics; k++ ) 2988 { 2989 if( ge.m_interViewRefPosL[li][k] >= 0 ) 2990 { 2991 Int orgIdx = numTemporalRefs; 3025 if ( maxRefListSize > 1 ) 3026 { 3027 for( Int k = 0, orgIdx = numTemporalRefs; k < ge.m_numActiveRefLayerPics; k++, orgIdx++ ) 3028 { 2992 3029 Int targetIdx = ge.m_interViewRefPosL[ li ][ k ]; 2993 for( Int idx = 0; idx < vps->getNumDirectRefLayers( layer ); idx++ ) 2994 { 2995 Int refLayer = vps->getLayerIdInVps( vps->getRefLayerId( layer, idx ) ); 2996 if( ( layer + ge.m_interViewRefs[ k ]) == refLayer ) 3030 3031 isModified = ( targetIdx != orgIdx ) && ( targetIdx >= 0 ); 3032 if ( isModified ) 2997 3033 { 3034 assert( tempList[ targetIdx ] == -1 ); // Assert when two inter layer reference pictures are sorted to the same position 2998 3035 tempList[ targetIdx ] = orgIdx; 2999 isModified = ( targetIdx != orgIdx ); 3000 } 3001 orgIdx++; 3002 } 3003 } 3004 } 3005 } 3006 3036 } 3037 } 3038 } 3039 3040 TComRefPicListModification* refPicListModification = pcSlice->getRefPicListModification(); 3007 3041 refPicListModification->setRefPicListModificationFlagL( li, isModified ); 3008 3042 -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncGOP.h
r479 r534 221 221 #endif 222 222 #if H_MV 223 Void xSetRefPicListModificationsMv c( TComSlice* pcSlice, UInt uiPOCCurr, UInt iGOPid );223 Void xSetRefPicListModificationsMv( TComSlice* pcSlice, UInt iGOPid ); 224 224 #endif 225 225 #if L0386_DB_METRIC -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncTop.cpp
r532 r534 525 525 #if H_MV 526 526 m_cSPS.setSPSId( getLayerIdInVps() ); 527 m_cSPS.setLayerId( getLayerId() ); 527 528 #endif 528 529 ProfileTierLevel& profileTierLevel = *m_cSPS.getPTL()->getGeneralPTL(); … … 746 747 m_cPPS.setWPBiPred( m_useWeightedBiPred ); 747 748 m_cPPS.setOutputFlagPresentFlag( false ); 749 #if H_MV 750 m_cPPS.setNumExtraSliceHeaderBits( 1 ); 751 #endif 748 752 m_cPPS.setSignHideFlag(getSignHideFlag()); 749 753 #if L0386_DB_METRIC -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibExtractor/TExtrTop.cpp
r499 r534 101 101 { 102 102 rcVpsInfoHandle << "MaxLayers = " << m_cVPS.getMaxLayers() << std::endl; 103 rcVpsInfoHandle << "MaxNuhLayerId = " << m_cVPS.get MaxNuhLayerId() << std::endl;103 rcVpsInfoHandle << "MaxNuhLayerId = " << m_cVPS.getVpsMaxLayerId() << std::endl; 104 104 105 105 for ( Int layerIdxInVps = 0; layerIdxInVps < m_cVPS.getMaxLayers(); layerIdxInVps++ )
Note: See TracChangeset for help on using the changeset viewer.