Changeset 42 in 3DVCSoftware
- Timestamp:
- 26 Mar 2012, 18:05:40 (13 years ago)
- Location:
- trunk
- Files:
-
- 17 added
- 35 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/CommonTestConditionsCfgs/baseCfg_2view+depth.cfg
r18 r42 56 56 TemporalLayerQPOffset_L6 : 6 # QP offset for temporal layer 6 57 57 TemporalLayerQPOffset_L7 : 7 # QP offset for temporal layer 7 58 58 FCO : 0 # flexible coding order (0:off, 1:on) 59 CodingOrder : T0D0D1T1 # coding order 59 60 60 61 #========== encoder control /motion search ========== … … 114 115 MVI : 1 # motion parameter inheritance 115 116 117 #========== view synthesis optimization (VSO) ========== 118 VSOConfig : [cx0 B(cc1) I(s0.5)][cx1 B(oo0) I(s0.5)] # VSO configuration string 119 #VSOConfig : [ox0 B(cc1) I(s0.5)][cx1 B(oo0) I(s0.5)] # VSO configuration string for FCO=1 and CodingOrder=T0D0D1T1 116 120 117 #========== view synthesis optimization (VSO) ==========118 VSOConfig : [cx0 B(cc1) I(s0.5)][cx1 B(oo0) I(s0.5)]119 # VSO configuration string120 121 122 -
trunk/CommonTestConditionsCfgs/baseCfg_3view+depth.cfg
r18 r42 1 2 1 3 2 #========== file i/o ========== … … 19 18 20 19 BitstreamFile : stream.bit # bitstream file 21 22 20 23 21 #========== general coding parameters ========== … … 60 58 TemporalLayerQPOffset_L6 : 6 # QP offset for temporal layer 6 61 59 TemporalLayerQPOffset_L7 : 7 # QP offset for temporal layer 7 62 60 FCO : 0 # flexible coding order (0:off, 1:on) 61 CodingOrder : T0D0D1D2T1T2 # coding order 63 62 64 63 #========== encoder control /motion search ========== … … 112 111 InterViewSkipLambdaScale : 8 # lambda scale for inter-view skip mode 113 112 114 115 113 #========== depth coding tools ========== 116 114 DMM : 1 # use depth intra modes (wedgelets) … … 118 116 MVI : 1 # motion parameter inheritance 119 117 118 #========== view synthesis optimization (VSO) ========== 119 VSOConfig : [cx0 B(cc1) I(s0.5)][cx1 B(oo0) B(oo2) I(s0.5 s1.5)][cx2 B(cc1) I(s1.5)] # VSO configuration string 120 #VSOConfig : [ox0 B(cc1) I(s0.5)][cx1 B(oo0) B(oo2) I(s0.5 s1.5)][ox2 B(cc1) I(s1.5)] # VSO configuration string for FCO=1 and CodingOrder=T0D0D1D2T1T2 120 121 121 #========== view synthesis optimization (VSO) ==========122 VSOConfig : [cx0 B(cc1) I(s0.5)][cx1 B(oo0) B(oo2) I(s0.5 s1.5)][cx2 B(cc1) I(s1.5)]123 # VSO configuration string124 122 123 124 125 126 -
trunk/build/HM_vc10.sln
r2 r42 5 5 EndProject 6 6 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TAppEncoder", "vc10\TAppEncoder_vc10.vcxproj", "{D759E4E1-D33A-4483-B57B-0FD248E022FE}" 7 ProjectSection(ProjectDependencies) = postProject8 {2B298BE6-DFF0-4BD2-8F26-395FFE7F9EB4} = {2B298BE6-DFF0-4BD2-8F26-395FFE7F9EB4}9 EndProjectSection10 7 EndProject 11 8 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TAppCommon", "vc10\TAppCommon_vc10.vcxproj", "{D1E8A1C2-15DB-4C94-80E8-4F70CF0A2DC5}" … … 20 17 EndProject 21 18 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TAppRenderer", "vc10\TAppRenderer_vc10.vcxproj", "{3A5A8B26-8CA4-4690-944E-AB78559DE848}" 22 ProjectSection(ProjectDependencies) = postProject23 {2B298BE6-DFF0-4BD2-8F26-395FFE7F9EB4} = {2B298BE6-DFF0-4BD2-8F26-395FFE7F9EB4}24 EndProjectSection25 19 EndProject 26 20 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TLibRenderer", "vc10\TLibRenderer_vc10.vcxproj", "{2B298BE6-DFF0-4BD2-8F26-395FFE7F9EB4}" 21 EndProject 22 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TLibExtractor", "vc10\TLibExtractor_vc10.vcxproj", "{27E2C758-E3CE-44CA-A226-83491EC7F798}" 23 EndProject 24 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TAppExtractor", "vc10\TAppExtractor_vc10.vcxproj", "{F46F95E9-7174-4328-90DD-092450E4DCF6}" 27 25 EndProject 28 26 Global … … 106 104 {2B298BE6-DFF0-4BD2-8F26-395FFE7F9EB4}.Release|x64.ActiveCfg = Release|x64 107 105 {2B298BE6-DFF0-4BD2-8F26-395FFE7F9EB4}.Release|x64.Build.0 = Release|x64 106 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Debug|Win32.ActiveCfg = Debug|Win32 107 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Debug|Win32.Build.0 = Debug|Win32 108 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Debug|x64.ActiveCfg = Debug|Win32 109 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Release|Win32.ActiveCfg = Release|Win32 110 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Release|Win32.Build.0 = Release|Win32 111 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Release|x64.ActiveCfg = Release|Win32 112 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Debug|Win32.ActiveCfg = Debug|Win32 113 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Debug|Win32.Build.0 = Debug|Win32 114 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Debug|x64.ActiveCfg = Debug|Win32 115 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Release|Win32.ActiveCfg = Release|Win32 116 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Release|Win32.Build.0 = Release|Win32 117 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Release|x64.ActiveCfg = Release|Win32 108 118 EndGlobalSection 109 119 GlobalSection(SolutionProperties) = preSolution -
trunk/build/HM_vc8.sln
r2 r42 38 38 EndProject 39 39 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TLibRenderer", "vc8\TLibRenderer_vc8.vcproj", "{5E87AD84-AC4F-4336-B4EE-549CA210EE4A}" 40 EndProject 41 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TLibExtractor", "vc8\TLibExtractor_vc8.vcproj", "{27E2C758-E3CE-44CA-A226-83491EC7F798}" 42 EndProject 43 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TAppExtractor", "vc8\TAppExtractor_vc8.vcproj", "{F46F95E9-7174-4328-90DD-092450E4DCF6}" 44 ProjectSection(ProjectDependencies) = postProject 45 {F8B77A48-AF6C-4746-A89F-B706ABA6AD94} = {F8B77A48-AF6C-4746-A89F-B706ABA6AD94} 46 {27E2C758-E3CE-44CA-A226-83491EC7F798} = {27E2C758-E3CE-44CA-A226-83491EC7F798} 47 {5280C25A-D316-4BE7-AE50-29D72108624F} = {5280C25A-D316-4BE7-AE50-29D72108624F} 48 {78018D78-F890-47E3-A0B7-09D273F0B11D} = {78018D78-F890-47E3-A0B7-09D273F0B11D} 49 {8783AD3A-A5CA-42B7-AAC4-A07EB845A684} = {8783AD3A-A5CA-42B7-AAC4-A07EB845A684} 50 EndProjectSection 40 51 EndProject 41 52 Global … … 119 130 {5E87AD84-AC4F-4336-B4EE-549CA210EE4A}.Release|x64.ActiveCfg = Release|x64 120 131 {5E87AD84-AC4F-4336-B4EE-549CA210EE4A}.Release|x64.Build.0 = Release|x64 132 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Debug|Win32.ActiveCfg = Debug|Win32 133 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Debug|Win32.Build.0 = Debug|Win32 134 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Debug|x64.ActiveCfg = Debug|Win32 135 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Release|Win32.ActiveCfg = Release|Win32 136 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Release|Win32.Build.0 = Release|Win32 137 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Release|x64.ActiveCfg = Release|Win32 138 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Debug|Win32.ActiveCfg = Debug|Win32 139 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Debug|Win32.Build.0 = Debug|Win32 140 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Debug|x64.ActiveCfg = Debug|Win32 141 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Release|Win32.ActiveCfg = Release|Win32 142 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Release|Win32.Build.0 = Release|Win32 143 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Release|x64.ActiveCfg = Release|Win32 121 144 EndGlobalSection 122 145 GlobalSection(SolutionProperties) = preSolution -
trunk/build/HM_vc9.sln
r2 r42 38 38 EndProject 39 39 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TLibRenderer", "vc9\TLibRenderer_vc9.vcproj", "{457993C6-AE2C-4B9B-B5F9-71033279A0B9}" 40 EndProject 41 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TLibExtractor", "vc9\TLibExtractor_vc9.vcproj", "{27E2C758-E3CE-44CA-A226-83491EC7F798}" 42 EndProject 43 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TAppExtractor", "vc9\TAppExtractor_vc9.vcproj", "{F46F95E9-7174-4328-90DD-092450E4DCF6}" 44 ProjectSection(ProjectDependencies) = postProject 45 {F8B77A48-AF6C-4746-A89F-B706ABA6AD94} = {F8B77A48-AF6C-4746-A89F-B706ABA6AD94} 46 {27E2C758-E3CE-44CA-A226-83491EC7F798} = {27E2C758-E3CE-44CA-A226-83491EC7F798} 47 {5280C25A-D316-4BE7-AE50-29D72108624F} = {5280C25A-D316-4BE7-AE50-29D72108624F} 48 {78018D78-F890-47E3-A0B7-09D273F0B11D} = {78018D78-F890-47E3-A0B7-09D273F0B11D} 49 {D1E8A1C2-15DB-4C94-80E8-4F70CF0A2DC5} = {D1E8A1C2-15DB-4C94-80E8-4F70CF0A2DC5} 50 EndProjectSection 40 51 EndProject 41 52 Global … … 119 130 {457993C6-AE2C-4B9B-B5F9-71033279A0B9}.Release|x64.ActiveCfg = Release|x64 120 131 {457993C6-AE2C-4B9B-B5F9-71033279A0B9}.Release|x64.Build.0 = Release|x64 132 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Debug|Win32.ActiveCfg = Debug|Win32 133 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Debug|Win32.Build.0 = Debug|Win32 134 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Debug|x64.ActiveCfg = Debug|Win32 135 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Release|Win32.ActiveCfg = Release|Win32 136 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Release|Win32.Build.0 = Release|Win32 137 {27E2C758-E3CE-44CA-A226-83491EC7F798}.Release|x64.ActiveCfg = Release|Win32 138 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Debug|Win32.ActiveCfg = Debug|Win32 139 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Debug|Win32.Build.0 = Debug|Win32 140 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Debug|x64.ActiveCfg = Debug|Win32 141 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Release|Win32.ActiveCfg = Release|Win32 142 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Release|Win32.Build.0 = Release|Win32 143 {F46F95E9-7174-4328-90DD-092450E4DCF6}.Release|x64.ActiveCfg = Release|Win32 121 144 EndGlobalSection 122 145 GlobalSection(SolutionProperties) = preSolution -
trunk/build/linux/makefile
r2 r42 8 8 $(MAKE) -C lib/TLibCommon MM32=$(M32) 9 9 $(MAKE) -C lib/TLibRenderer MM32=$(M32) 10 $(MAKE) -C lib/TLibExtractor MM32=$(M32) 10 11 $(MAKE) -C lib/TLibDecoder MM32=$(M32) 11 12 $(MAKE) -C lib/TLibEncoder MM32=$(M32) … … 14 15 $(MAKE) -C test/TAppEncoder MM32=$(M32) 15 16 $(MAKE) -C test/TAppRenderer MM32=$(M32) 17 $(MAKE) -C test/TAppExtractor MM32=$(M32) 16 18 17 19 debug: … … 19 21 $(MAKE) -C lib/TLibCommon debug MM32=$(M32) 20 22 $(MAKE) -C lib/TLibRenderer debug MM32=$(M32) 23 $(MAKE) -C lib/TLibExtractor debug MM32=$(M32) 21 24 $(MAKE) -C lib/TLibDecoder debug MM32=$(M32) 22 25 $(MAKE) -C lib/TLibEncoder debug MM32=$(M32) … … 25 28 $(MAKE) -C test/TAppEncoder debug MM32=$(M32) 26 29 $(MAKE) -C test/TAppRenderer debug MM32=$(M32) 30 $(MAKE) -C test/TAppExtractor debug MM32=$(M32) 27 31 28 32 release: … … 30 34 $(MAKE) -C lib/TLibCommon release MM32=$(M32) 31 35 $(MAKE) -C lib/TLibRenderer release MM32=$(M32) 36 $(MAKE) -C lib/TLibExtractor release MM32=$(M32) 32 37 $(MAKE) -C lib/TLibDecoder release MM32=$(M32) 33 38 $(MAKE) -C lib/TLibEncoder release MM32=$(M32) … … 36 41 $(MAKE) -C test/TAppEncoder release MM32=$(M32) 37 42 $(MAKE) -C test/TAppRenderer release MM32=$(M32) 43 $(MAKE) -C test/TAppExtractor release MM32=$(M32) 38 44 39 45 clean: … … 41 47 $(MAKE) -C lib/TLibCommon clean MM32=$(M32) 42 48 $(MAKE) -C lib/TLibRenderer clean MM32=$(M32) 49 $(MAKE) -C lib/TLibExtractor clean MM32=$(M32) 43 50 $(MAKE) -C lib/TLibDecoder clean MM32=$(M32) 44 51 $(MAKE) -C lib/TLibEncoder clean MM32=$(M32) … … 47 54 $(MAKE) -C test/TAppEncoder clean MM32=$(M32) 48 55 $(MAKE) -C test/TAppRenderer clean MM32=$(M32) 49 50 56 $(MAKE) -C test/TAppExtractor clean MM32=$(M32) -
trunk/cfg/encoder_mvd.cfg
r5 r42 18 18 BitstreamFile : BitStreamMV.bin 19 19 20 21 20 #====== General Coding Parameters ====== 22 21 NumberOfViews : 3 # Number of views to be coded … … 30 29 OutputBitDepth : 8 # Output bit-depth 31 30 InternalBitDepth : 10 # Internal bit-depth 31 FCO : 0 32 3DVCodingOrder : T0D0D1D2T1T2 33 32 34 33 35 #====== Camera Parameters ====== … … 72 74 VSOConfig : [cx0 B(cc1) I(s0.5)][cx1 B(oo0) B(oo2) I(s0.5 s1.5)][cx2 B(cc1) I(s1.5)] #VSO Configuration (3-View) coding order 1 0 2 oder 1 2 0 73 75 #VSOConfig : [cx0 B(cc1) I(s0.5)][cx1 B(oo0) I(s0.5)] #VSO Configuration (2-View) coding order 1 0 76 #VSOConfig : [ox0 B(cc1) I(s0.5)][cx1 B(oo0) B(oo2) I(s0.5 s1.5)][ox2 B(cc1) I(s1.5)] #VSO Configuration (3-View) coding order 1 0 2 oder 1 2 0; FCO: 1 77 #VSOConfig : [ox0 B(cc1) I(s0.5)][cx1 B(oo0) I(s0.5)] #VSO Configuration (2-View) coding order 1 0; FCO 1 78 74 79 75 80 #======== Quantization ============= -
trunk/source/App/TAppDecoder/TAppDecTop.cpp
r21 r42 126 126 NalUnitType eNalUnitType; 127 127 128 #if FLEX_CODING_ORDER 129 Int iDepthViewIdx = 0; 130 Bool bCountDepthViewIdx = false; // a flag which avoid repeating assign a value to iDepthViewIdx 131 Bool bNewPictureType =true; 132 Bool bFirstDepth = false; 133 #endif 128 134 129 135 while ( !bEos ) … … 136 142 if( bIsDepth ) 137 143 { 144 #if FLEX_CODING_ORDER 145 if (!bFirstSliceDecoded) m_acTDecDepthTopList[iDepthViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iDepthViewIdx] ,bNewPictureType); 146 m_acTDecDepthTopList[iDepthViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iDepthViewIdx]); 147 148 #else 138 149 if (!bFirstSliceDecoded) m_acTDecDepthTopList[iViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iViewIdx] ); 139 150 m_acTDecDepthTopList[iViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iViewIdx]); 151 #endif 140 152 } 141 153 else 142 154 { 155 #if FLEX_CODING_ORDER 156 if (!bFirstSliceDecoded) m_acTDecTopList[iViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx], bNewPictureType); 157 #else 143 158 if (!bFirstSliceDecoded) m_acTDecTopList[iViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx] ); 144 m_acTDecTopList[iViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx]); 159 #endif 160 m_acTDecTopList[iViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx]); 145 161 } 146 162 if( pcListPic ) … … 156 172 Bool bNewPicture; 157 173 if( bIsDepth ) 174 #if FLEX_CODING_ORDER 175 bNewPicture = m_acTDecDepthTopList[iDepthViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iDepthViewIdx], bNewPictureType); 176 #else 158 177 bNewPicture = m_acTDecDepthTopList[iViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iViewIdx] ); 178 #endif 159 179 else 180 #if FLEX_CODING_ORDER 181 bNewPicture = m_acTDecTopList[iViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx], bNewPictureType ); 182 #else 160 183 bNewPicture = m_acTDecTopList[iViewIdx]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx] ); 184 #endif 161 185 bFirstSliceDecoded = true; 186 187 #if FLEX_CODING_ORDER 188 if (eNalUnitType == NAL_UNIT_SPS) 189 { 190 if( cComSPS.isDepth() && (m_bUsingDepth==false) ) // expected not using depth, but bitstream are using depth 191 { // know from sps 192 assert( cComSPS.getViewId() == 0 && iDepthViewIdx == 0 && !bIsDepth ); 193 startUsingDepth() ; 194 } 195 if (cComSPS.isDepth()) 196 { 197 if (cComSPS.getViewId() >= m_acTVideoIOYuvDepthReconFileList.size()) 198 { 199 assert( cComSPS.getViewId() == m_acTVideoIOYuvReconFileList.size() ); 200 increaseNumberOfViews(cComSPS.getViewId()+1); 201 } 202 203 m_acTDecDepthTopList[cComSPS.getViewId()]->setSPS(cComSPS); 204 } 205 else 206 { 207 if (cComSPS.getViewId() >= m_acTVideoIOYuvReconFileList.size()) 208 { 209 assert( cComSPS.getViewId() == m_acTVideoIOYuvReconFileList.size() ); 210 increaseNumberOfViews(cComSPS.getViewId()+1); 211 } 212 m_acTDecTopList[cComSPS.getViewId()]->setSPS(cComSPS); 213 } 214 bEos = m_cTVideoIOBitstreamFile.readBits( pcBitstream ); 215 assert( !bEos); 216 if( cComSPS.isDepth() ) 217 m_acTDecDepthTopList[cComSPS.getViewId()]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiDepthPOCLastDisplayList[cComSPS.getViewId()], bNewPictureType); // decode PPS 218 else 219 m_acTDecTopList[cComSPS.getViewId()]->decode( bEos, pcBitstream, uiPOC, pcListPic, eNalUnitType, cComSPS, m_iSkipFrame, m_aiPOCLastDisplayList[cComSPS.getViewId()], bNewPictureType); // decode PPS 220 assert( eNalUnitType == NAL_UNIT_PPS ); 221 } 222 #else 162 223 163 224 if( eNalUnitType == NAL_UNIT_SPS ) … … 188 249 assert( eNalUnitType == NAL_UNIT_PPS ); 189 250 } 251 252 #endif 190 253 assert( eNalUnitType != NAL_UNIT_SEI ); // not yet supported for MVC 191 254 if (bNewPicture) 192 255 { 193 256 if( bIsDepth ) 257 #if FLEX_CODING_ORDER 258 m_acTDecDepthTopList[iDepthViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iDepthViewIdx]); 259 #else 194 260 m_acTDecDepthTopList[iViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiDepthPOCLastDisplayList[iViewIdx]); 261 #endif 195 262 else 196 263 m_acTDecTopList[iViewIdx]->executeDeblockAndAlf( bEos, pcBitstream, uiPOC, pcListPic, m_iSkipFrame, m_aiPOCLastDisplayList[iViewIdx]); … … 199 266 bFirstSliceDecoded = false; 200 267 201 if( m_bUsingDepth && !bIsDepth ) 202 { 203 bIsDepth = true; 268 #if FLEX_CODING_ORDER 269 if (m_bUsingDepth) 270 { 271 bIsDepth = bNewPictureType; 272 273 } 274 if (bCountDepthViewIdx == false ) 275 { 276 bCountDepthViewIdx = true; 277 if (bIsDepth == true) 278 { 279 bFirstDepth = true; 280 bCountDepthViewIdx = true; 281 } 282 if (!bFirstDepth && !bIsDepth) 283 { 284 iViewIdx++; 285 bCountDepthViewIdx = false; 286 } 287 204 288 } 205 289 else 206 290 { 207 bIsDepth = false; 208 if( iViewIdx<m_acTDecTopList.size()-1) 209 { 210 iViewIdx++ ; 291 if (bIsDepth) 292 { 293 iDepthViewIdx++; 211 294 } 212 295 else 213 296 { 297 iViewIdx ++; 298 } 299 300 if (iViewIdx >= m_acTDecTopList.size() || iDepthViewIdx >= m_acTDecDepthTopList.size()) 301 { 302 bFirstDepth = false; 214 303 iViewIdx = 0; 215 304 iDepthViewIdx = 0; 305 bCountDepthViewIdx = false; 216 306 // end of access unit: delete extra pic buffers 217 307 Int iNumViews = (Int)m_acTVideoIOYuvReconFileList.size(); … … 244 334 } 245 335 } 336 337 #else 338 339 if( m_bUsingDepth && !bIsDepth ) 340 { 341 bIsDepth = true; 342 } 343 else 344 { 345 bIsDepth = false; 346 if( iViewIdx<m_acTDecTopList.size()-1) 347 { 348 iViewIdx++ ; 349 } 350 else 351 { 352 iViewIdx = 0; 353 354 // end of access unit: delete extra pic buffers 355 Int iNumViews = (Int)m_acTVideoIOYuvReconFileList.size(); 356 for( Int iVId = 0; iVId < iNumViews; iVId++ ) 357 { 358 if( iVId < (Int)m_acTDecTopList.size() && m_acTDecTopList[iVId] ) 359 { 360 m_acTDecTopList[iVId]->deleteExtraPicBuffers( (Int)uiPOC ); 361 } 362 if( iVId < (Int)m_acTDecDepthTopList.size() && m_acTDecDepthTopList[iVId] ) 363 { 364 m_acTDecDepthTopList[iVId]->deleteExtraPicBuffers( (Int)uiPOC ); 365 } 366 } 367 368 #if AMVP_BUFFERCOMPRESS 369 // compress motion for entire access unit 370 for( Int iVId = 0; iVId < iNumViews; iVId++ ) 371 { 372 if( iVId < (Int)m_acTDecTopList.size() && m_acTDecTopList[iVId] ) 373 { 374 m_acTDecTopList[iVId]->compressMotion( (Int)uiPOC ); 375 } 376 if( iVId < (Int)m_acTDecDepthTopList.size() && m_acTDecDepthTopList[iVId] ) 377 { 378 m_acTDecDepthTopList[iVId]->compressMotion( (Int)uiPOC ); 379 } 380 } 381 #endif 382 } 383 } 384 #endif 246 385 } 247 386 #else … … 506 645 m_acTDecDepthTopList.back()->create() ; 507 646 m_acTDecDepthTopList.back()->init( this, false ); 508 m_acTDecDepthTopList.back()->setViewIdx((Int)m_acTDecTopList.size()-1); 647 #if FLEX_CODING_ORDER 648 Int iNumofgen = (Int)m_acTDecDepthTopList.size(); 649 m_acTDecDepthTopList.back()->setViewIdx(iNumofgen-1); 650 #else 651 m_acTDecDepthTopList.back()->setViewIdx((Int)m_acTDecTopList.size()-1); 652 #endif 653 509 654 m_acTDecDepthTopList.back()->setPictureDigestEnabled(m_pictureDigestEnabled); 510 655 m_acTDecDepthTopList.back()->setToDepth( true ); -
trunk/source/App/TAppEncoder/TAppEncCfg.cpp
r21 r42 110 110 free (m_pchBitstreamFile) ; 111 111 112 #if FLEX_CODING_ORDER 113 if (m_pchMVCJointCodingOrder != NULL) 114 { 115 free(m_pchMVCJointCodingOrder) ; 116 } 117 #endif 112 118 for(Int i = 0; i< m_pchDepthReconFileList.size(); i++ ) 113 119 { … … 153 159 string cfg_ReconFile; 154 160 string cfg_dQPFile; 161 162 #if FLEX_CODING_ORDER 163 string cfg_JointCodingOrdering; 164 #endif 165 155 166 po::Options opts; 156 167 opts.addOptions() … … 191 202 ("NumberOfViews", m_iNumberOfViews, 0, "Number of views") 192 203 204 #if FLEX_CODING_ORDER 205 ("FCO", m_b3DVFlexOrder, false, "flexible coding order flag" ) 206 ("CodingOrder", cfg_JointCodingOrdering, string(""), "The coding order for joint texture-depth coding") 207 #endif 193 208 194 209 /* Unit definition parameters */ … … 380 395 381 396 397 #if FLEX_CODING_ORDER 398 m_pchMVCJointCodingOrder = cfg_JointCodingOrdering.empty()?NULL:strdup(cfg_JointCodingOrdering.c_str()); 399 // If flexible order is enabled and if depth comes before the texture for a view, disable VSO 400 401 #if HHI_VSO && DISABLE_FCO_FOR_VSO 402 Bool depthComesFirst = false; 403 if ( m_b3DVFlexOrder ) 404 { 405 for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++) 406 { 407 for ( Int ii=1; ii<12; ii+=2 ) 408 { 409 Int iViewIdxCfg = (Int)(m_pchMVCJointCodingOrder[ii]-'0'); 410 if ( iViewIdxCfg == iViewIdx ) 411 { 412 if ( m_pchMVCJointCodingOrder[ii-1]=='D' ) // depth comes first for this view 413 { 414 depthComesFirst = true; 415 break; 416 } 417 else 418 { 419 assert(m_pchMVCJointCodingOrder[ii-1]=='T'); 420 } 421 } 422 } 423 } 424 } 425 if (depthComesFirst) 426 { 427 m_bUseVSO = false; 428 } 429 #endif 430 #endif 431 382 432 // GT FIX 383 433 if ( m_bUsingDepthMaps ) -
trunk/source/App/TAppEncoder/TAppEncCfg.h
r5 r42 81 81 Bool m_bUsingDepthMaps ; 82 82 83 #if FLEX_CODING_ORDER 84 char* m_pchMVCJointCodingOrder; ///< texture-depth coding order 85 Bool m_b3DVFlexOrder; ///< flexible coding order flag 86 #endif 87 83 88 84 89 // coding structure -
trunk/source/App/TAppEncoder/TAppEncTop.cpp
r21 r42 145 145 #endif 146 146 147 #if BITSTREAM_EXTRACTION 148 m_acTEncTopList[iViewIdx]->setLayerId ( ( (UInt)iViewIdx ) << 1 ); 149 #endif 147 150 m_acTEncTopList[iViewIdx]->setViewId ( (UInt)iViewIdx ); 148 151 m_acTEncTopList[iViewIdx]->setViewOrderIdx ( m_cCameraData.getViewOrderIndex()[ iViewIdx ] ); … … 235 238 for(Int iViewIdx=0; iViewIdx<m_iNumberOfViews; iViewIdx++) 236 239 { 240 #if FLEX_CODING_ORDER 241 // Detect whether depth comes before than texture for this view 242 Bool isDepthFirst = false; 243 if ( m_b3DVFlexOrder ) 244 { 245 for ( Int ii=1; ii<12; ii+=2 ) 246 { 247 Int iViewIdxCfg = (Int)(m_pchMVCJointCodingOrder[ii]-'0'); 248 if ( iViewIdxCfg == iViewIdx ) 249 { 250 if ( m_pchMVCJointCodingOrder[ii-1]=='D' ) // depth comes first for this view 251 { 252 isDepthFirst = true; 253 } 254 else 255 { 256 assert(m_pchMVCJointCodingOrder[ii-1]=='T'); 257 } 258 break; 259 } 260 } 261 } 262 #endif 237 263 m_iDepthFrameRcvdVector.push_back(0) ; 238 264 m_acTEncDepthTopList.push_back(new TEncTop); … … 314 340 #endif 315 341 342 #if BITSTREAM_EXTRACTION 343 m_acTEncDepthTopList[iViewIdx]->setLayerId ( ( ( (UInt)iViewIdx ) << 1 ) + 1 ); 344 #endif 316 345 m_acTEncDepthTopList[iViewIdx]->setViewId ( (UInt)iViewIdx ); 317 346 m_acTEncDepthTopList[iViewIdx]->setViewOrderIdx ( m_cCameraData.getViewOrderIndex()[ iViewIdx ] ); … … 354 383 m_acTEncDepthTopList[iViewIdx]->setUseDMM( m_bUseDMM ); 355 384 #endif 385 #if FLEX_CODING_ORDER && HHI_DMM_PRED_TEX 386 m_acTEncDepthTopList[iViewIdx]->setUseDMM34( (m_b3DVFlexOrder && isDepthFirst) ? false : m_bUseDMM ); 387 #endif 356 388 #if CONSTRAINED_INTRA_PRED 357 389 m_acTEncDepthTopList[iViewIdx]->setUseConstrainedIntraPred ( m_bUseConstrainedIntraPred ); … … 380 412 #endif 381 413 #if HHI_MPI 414 #if FLEX_CODING_ORDER 415 m_acTEncDepthTopList[iViewIdx]->setUseMVI( (m_b3DVFlexOrder && isDepthFirst) ? false : m_bUseMVI ); 416 #else 382 417 m_acTEncDepthTopList[iViewIdx]->setUseMVI( m_bUseMVI ); 383 418 #endif 384 419 #endif 420 385 421 m_acTEncDepthTopList[iViewIdx]->setPictureDigestEnabled(m_pictureDigestEnabled); 386 422 … … 591 627 std::vector<Bool> bDepthEos ; 592 628 std::vector<Bool> bContinueReadingDepthPics ; 593 594 629 for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ ) 595 630 { … … 689 724 #endif 690 725 726 #if FLEX_CODING_ORDER 727 if (m_b3DVFlexOrder) 728 { 729 Int i=0; 730 Int iViewIdx = 0; 731 bool bThisViewContinueReadingPics = false; 732 bool bThisViewContinueReadingDepthPics = false; 733 Int iNumberofDepthViews = m_bUsingDepthMaps?m_iNumberOfViews:0; 734 for(Int j=0; j < (m_iNumberOfViews+ iNumberofDepthViews); j++ ) // Start encoding 735 { 736 if (m_pchMVCJointCodingOrder[i]=='T') 737 { 738 i++; 739 assert(isdigit(m_pchMVCJointCodingOrder[i])); 740 iViewIdx = (Int)(m_pchMVCJointCodingOrder[i]-'0'); 741 bThisViewContinueReadingPics = bContinueReadingPics[iViewIdx]; 742 m_acTEncTopList[iViewIdx]->encode( bEos[iViewIdx], m_cListPicYuvRecMap[iViewIdx], pcBitstream, bThisViewContinueReadingPics ); 743 bContinueReadingPics[iViewIdx]=bThisViewContinueReadingPics; 744 bAllContinueReadingPics = bAllContinueReadingPics||bContinueReadingPics[iViewIdx]; 745 746 if(pcBitstream->getNumberOfWrittenBits()!=0) 747 { 748 m_cTVideoIOBitsFile.writeBits( pcBitstream ); 749 } 750 pcBitstream->resetBits(); //GT: also done later in .... 751 pcBitstream->rewindStreamPacket( ); 752 // write bistream to file if necessary 753 xWriteOutput( iViewIdx ); //GT: Write Reconfiles (when gop is complete?) 754 i++; 755 } 756 else if ( m_pchMVCJointCodingOrder[i] == 'D') 757 { 758 i++; 759 if( m_bUsingDepthMaps ) 760 { 761 assert(isdigit(m_pchMVCJointCodingOrder[i])); 762 iViewIdx = (Int)(m_pchMVCJointCodingOrder[i]-'0'); 763 bThisViewContinueReadingDepthPics = bContinueReadingDepthPics[iViewIdx]; 764 m_acTEncDepthTopList[iViewIdx]->encode( bDepthEos[iViewIdx], m_cListPicYuvDepthRecMap[iViewIdx], pcBitstream, bThisViewContinueReadingDepthPics ); 765 bContinueReadingDepthPics[iViewIdx]=bThisViewContinueReadingDepthPics; 766 767 bAllContinueReadingDepthPics = bAllContinueReadingDepthPics||bContinueReadingDepthPics[iViewIdx]; 768 if(pcBitstream->getNumberOfWrittenBits()!=0) 769 { 770 m_cTVideoIOBitsFile.writeBits( pcBitstream ); 771 } 772 pcBitstream->resetBits(); 773 pcBitstream->rewindStreamPacket( ); 774 // write bistream to file if necessary 775 xWriteOutput( iViewIdx, true ); 776 i++; 777 } 778 } 779 } 780 } 781 else 782 { 783 #endif 691 784 //GT: Encode 692 785 for(Int iViewIdx=0; iViewIdx < m_iNumberOfViews; iViewIdx++ ) // Start encoding … … 723 816 } 724 817 } 725 818 #if FLEX_CODING_ORDER 819 } 820 #endif 726 821 // delete extra picture buffers 727 822 if( bCurrPocCoded ) -
trunk/source/Lib/TLibCommon/CommonDef.h
r21 r42 58 58 59 59 #define HM_VERSION "3.0rc2" ///< Current software version 60 #define NV_VERSION "0. 3" ///< Current software version60 #define NV_VERSION "0.4" ///< Current software version 61 61 62 62 // ==================================================================================================================== -
trunk/source/Lib/TLibCommon/SEI.h
r5 r42 41 41 class SEI 42 42 { 43 #if BITSTREAM_EXTRACTION 44 protected: 45 UInt m_uiLayerId; 46 #endif 47 43 48 public: 44 49 enum PayloadType { … … 51 56 52 57 virtual PayloadType payloadType() const = 0; 58 59 #if BITSTREAM_EXTRACTION 60 Void setLayerId ( UInt u ) { m_uiLayerId = u; } 61 UInt getLayerId () const { return m_uiLayerId; } 62 #endif 53 63 }; 54 64 -
trunk/source/Lib/TLibCommon/TComBitStream.cpp
r5 r42 61 61 m_auiSliceByteLocation = NULL; 62 62 m_uiSliceCount = 0; 63 #if BITSTREAM_EXTRACTION 64 m_apulPacketPayloadBuffer = new UInt[uiSize]; 65 m_uiPacketPayloadSize = 0; 66 #endif 63 67 } 64 68 … … 66 70 { 67 71 delete [] m_apulStreamPacketBegin; m_apulStreamPacketBegin = NULL; 72 #if BITSTREAM_EXTRACTION 73 delete [] m_apulPacketPayloadBuffer; m_apulPacketPayloadBuffer = NULL; 74 #endif 68 75 } 69 76 … … 148 155 xReadNextWord(); 149 156 } 157 158 #if BITSTREAM_EXTRACTION 159 UInt TComBitstream::reinitParsing() 160 { 161 rewindStreamPacket(); 162 memcpy( m_apulStreamPacketBegin, m_apulPacketPayloadBuffer, m_uiPacketPayloadSize ); 163 initParsing( m_uiPacketPayloadSize ); 164 return m_uiPacketPayloadSize; 165 } 166 #endif 150 167 151 168 #if LCEC_INTRA_MODE || QC_LCEC_INTER_MODE … … 319 336 UChar* pucWrite = reinterpret_cast<UChar*> (getBuffer()); 320 337 338 #if BITSTREAM_EXTRACTION 339 memcpy( m_apulPacketPayloadBuffer, m_apulStreamPacketBegin, uiBytesRead ); 340 m_uiPacketPayloadSize = uiBytesRead; 341 #endif 342 321 343 for( ; uiReadOffset < uiBytesRead; uiReadOffset++ ) 322 344 { -
trunk/source/Lib/TLibCommon/TComBitStream.h
r5 r42 85 85 UInt m_uiSliceProcessed; 86 86 87 #if BITSTREAM_EXTRACTION 88 UInt* m_apulPacketPayloadBuffer; 89 UInt m_uiPacketPayloadSize; 90 #endif 91 87 92 UInt xSwap ( UInt ui ) 88 93 { … … 164 169 165 170 void insertAt(const TComBitstream& src, unsigned pos); 171 172 #if BITSTREAM_EXTRACTION 173 UInt reinitParsing(); 174 #endif 166 175 }; 167 176 -
trunk/source/Lib/TLibCommon/TComSlice.cpp
r21 r42 66 66 m_iViewIdx = 0 ; 67 67 68 #if BITSTREAM_EXTRACTION 69 m_uiLayerId = 0; 70 #endif 71 68 72 #if SONY_COLPIC_AVAILABILITY 69 73 m_iViewOrderIdx = 0; … … 659 663 m_bUseMVI = false; 660 664 #endif 661 665 666 #if BITSTREAM_EXTRACTION 667 m_uiLayerId = 0; 668 #endif 662 669 m_uiViewId = 0; 663 670 m_iViewOrderIdx = 0; … … 687 694 m_bUseDMM = false; 688 695 #endif 696 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER 697 m_bUseDMM34 = false; 698 #endif 689 699 } 690 700 … … 695 705 TComPPS::TComPPS() 696 706 { 707 #if BITSTREAM_EXTRACTION 708 m_uiLayerId = 0; 709 #endif 697 710 #if CONSTRAINED_INTRA_PRED 698 711 m_bConstrainedIntraPred = false; -
trunk/source/Lib/TLibCommon/TComSlice.h
r21 r42 76 76 UInt m_uiMaxTrDepth; 77 77 78 #if BITSTREAM_EXTRACTION 79 UInt m_uiLayerId; 80 #endif 78 81 UInt m_uiViewId; 79 82 Int m_iViewOrderIdx; … … 133 136 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 134 137 Bool m_bUseDMM; 138 #endif 139 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER 140 Bool m_bUseDMM34; 135 141 #endif 136 142 … … 230 236 Void setUseDMM( Bool b ) { m_bUseDMM = b; } 231 237 #endif 232 238 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER 239 Bool getUseDMM34() { return m_bUseDMM34; } 240 Void setUseDMM34( Bool b ) { m_bUseDMM34 = b; } 241 #endif 233 242 234 243 #if DCM_COMB_LIST … … 304 313 Void setResidualGenerator( TComResidualGenerator* pcResidualGenerator ) { m_pcResidualGenerator = pcResidualGenerator; } 305 314 TComResidualGenerator* getResidualGenerator() { return m_pcResidualGenerator; } 315 #endif 316 317 #if BITSTREAM_EXTRACTION 318 Void setLayerId ( UInt u ) { m_uiLayerId = u; } 319 UInt getLayerId () { return m_uiLayerId; } 306 320 #endif 307 321 }; … … 320 334 UInt m_uiPPSId; 321 335 UInt m_uiSPSId; 336 #if BITSTREAM_EXTRACTION 337 UInt m_uiLayerId; 338 #endif 322 339 323 340 public: … … 340 357 Void setUseWP ( Bool b ) { m_bUseWeightPred = b; } 341 358 Void setWPBiPredIdc ( UInt u ) { m_uiBiPredIdc = u; } 359 #endif 360 361 #if BITSTREAM_EXTRACTION 362 Void setLayerId ( UInt u ) { m_uiLayerId = u; } 363 UInt getLayerId () { return m_uiLayerId; } 342 364 #endif 343 365 }; … … 370 392 UInt m_uiPPSId; 371 393 Int m_iPOC; 394 #if BITSTREAM_EXTRACTION 395 UInt m_uiLayerId; 396 #endif 372 397 #if SONY_COLPIC_AVAILABILITY 373 398 Int m_iViewOrderIdx; … … 534 559 Void setLambda( Double d ) { m_dLambda = d; } 535 560 Double getLambda() { return m_dLambda; } 561 562 #if BITSTREAM_EXTRACTION 563 Void setLayerId( UInt u ) { m_uiLayerId = u; } 564 UInt getLayerId() { return m_uiLayerId; } 565 #endif 536 566 537 567 Void setViewIdx(Int i) { m_iViewIdx = i; } -
trunk/source/Lib/TLibCommon/TypeDef.h
r21 r42 40 40 41 41 42 43 #define SONY_COLPIC_AVAILABILITY 1 42 #define BITSTREAM_EXTRACTION 1 43 #define FLEX_CODING_ORDER 1 44 #define DISABLE_FCO_FOR_VSO 0 45 46 #define SONY_COLPIC_AVAILABILITY 1 44 47 45 48 //>>>>> HHI 3DV tools >>>>> … … 54 57 #define HHI_VSO_DIST_INT 1 // view synthesis optimization integer distorition in rdo process 55 58 #define HHI_VSO_LS_TABLE 1 // table based lambda scaling 59 #define HHI_VSO_PRINT_DIST 0 // print VSO distortion instead of depth distrotion 56 60 57 61 #if HHI_INTERVIEW_SKIP_LAMBDA_SCALE && !HHI_INTERVIEW_SKIP … … 328 332 #endif 329 333 #endif 334 335 330 336 331 337 // ==================================================================================================================== -
trunk/source/Lib/TLibDecoder/TDecCAVLC.cpp
r5 r42 82 82 // ==================================================================================================================== 83 83 84 #if BITSTREAM_EXTRACTION 85 Void TDecCavlc::parseNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, UInt& uiLayerId ) 86 { 87 UInt uiCode; 88 89 xReadCode ( 1, uiCode ); assert( 0 == uiCode); // forbidden_zero_bit 90 xReadCode ( 1, uiCode ); // nal_ref_flag 91 xReadCode ( 6, uiCode ); // nal_unit_type 92 eNalUnitType = (NalUnitType) uiCode; 93 94 xReadCode(3, uiCode); // temporal_id 95 TemporalId = uiCode; 96 xReadCode(5, uiCode); // layer_id_plus1 97 assert( 1 <= uiCode ); 98 uiLayerId = uiCode - 1; 99 } 100 #else 84 101 Void TDecCavlc::parseNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, Bool& bOutputFlag ) 85 102 { … … 105 122 } 106 123 } 124 #endif 107 125 108 126 /** -
trunk/source/Lib/TLibDecoder/TDecCAVLC.h
r5 r42 182 182 #endif 183 183 184 #if BITSTREAM_EXTRACTION 185 Void parseNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, UInt& uiLayerId ); 186 #else 184 187 Void parseNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, Bool& bOutputFlag ); 188 #endif 189 185 190 186 191 Void parseSPS ( TComSPS* pcSPS ); -
trunk/source/Lib/TLibDecoder/TDecEntropy.h
r5 r42 67 67 virtual Void setBitstream ( TComBitstream* p ) = 0; 68 68 69 #if BITSTREAM_EXTRACTION 70 virtual Void parseNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, UInt& uiLayerId ) = 0; 71 #else 69 72 virtual Void parseNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, Bool& bOutputFlag ) = 0; 73 #endif 70 74 71 75 virtual Void parseSPS ( TComSPS* pcSPS ) = 0; … … 147 151 Void resetEntropy ( TComSlice* p) { m_pcEntropyDecoderIf->resetEntropy(p); } 148 152 153 #if BITSTREAM_EXTRACTION 154 Void decodeNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, UInt& uiLayerId ) 155 { m_pcEntropyDecoderIf->parseNalUnitHeader( eNalUnitType, TemporalId, uiLayerId ); } 156 #else 149 157 Void decodeNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, Bool& bOutputFlag ) 150 158 { m_pcEntropyDecoderIf->parseNalUnitHeader(eNalUnitType, TemporalId, bOutputFlag ); } 151 159 #endif 152 160 153 161 Void decodeSPS ( TComSPS* pcSPS ) { m_pcEntropyDecoderIf->parseSPS(pcSPS); } -
trunk/source/Lib/TLibDecoder/TDecSbac.h
r5 r42 75 75 Void setMaxAlfCtrlDepth ( UInt uiMaxAlfCtrlDepth ) { m_uiMaxAlfCtrlDepth = uiMaxAlfCtrlDepth; } 76 76 77 #if BITSTREAM_EXTRACTION 78 Void parseNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, UInt& uiLayerId ) {} 79 #else 77 80 Void parseNalUnitHeader ( NalUnitType& eNalUnitType, UInt& TemporalId, Bool& bOutputFlag ) {} 81 #endif 78 82 79 83 Void parseSPS ( TComSPS* pcSPS ) {} -
trunk/source/Lib/TLibDecoder/TDecTop.cpp
r21 r42 513 513 514 514 #if DCM_SKIP_DECODING_FRAMES 515 #if FLEX_CODING_ORDER 516 Bool TDecTop::decode (Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS, Int& iSkipFrame, Int& iPOCLastDisplay, Bool& bNewPictureType) 517 #else 515 518 Bool TDecTop::decode (Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS, Int& iSkipFrame, Int& iPOCLastDisplay) 519 520 #endif 516 521 #else 517 522 Void TDecTop::decode (Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS ) … … 530 535 NalUnitType eNalUnitType; 531 536 UInt TemporalId; 537 538 #if BITSTREAM_EXTRACTION 539 UInt uiLayerId; 540 541 m_cEntropyDecoder.decodeNalUnitHeader(eNalUnitType, TemporalId, uiLayerId); 542 #else 532 543 Bool OutputFlag; 533 544 534 545 m_cEntropyDecoder.decodeNalUnitHeader(eNalUnitType, TemporalId, OutputFlag); 546 #endif 547 535 548 reNalUnitType = eNalUnitType; 536 549 … … 541 554 TComSPS cTempSPS; 542 555 m_cEntropyDecoder.decodeSPS( &cTempSPS ); 556 #if FLEX_CODING_ORDER 557 m_cNewSPS = cTempSPS; 558 #endif 543 559 544 560 if( (m_iViewIdx == cTempSPS.getViewId()) && ( m_bIsDepth == cTempSPS.isDepth() ) ) … … 615 631 { 616 632 m_uiPrevPOC = m_apcSlicePilot->getPOC(); 633 #if FLEX_CODING_ORDER 634 bNewPictureType = m_cNewSPS.isDepth(); 635 #endif 617 636 return true; 618 637 } … … 697 716 std::vector<TComPic*> apcSpatRefPics = getDecTop()->getSpatialRefPics( pcPic->getViewIdx(), pcSlice->getPOC(), m_cSPS.isDepth() ); 698 717 TComPic * const pcTexturePic = m_cSPS.isDepth() ? getDecTop()->getPicFromView( pcPic->getViewIdx(), pcSlice->getPOC(), false ) : NULL; 718 719 #if FLEX_CODING_ORDER 720 if (pcTexturePic != NULL) 721 { 722 assert( ! m_cSPS.isDepth() || pcTexturePic != NULL ); 723 pcSlice->setTexturePic( pcTexturePic ); 724 } 725 #else 699 726 assert( ! m_cSPS.isDepth() || pcTexturePic != NULL ); 700 727 pcSlice->setTexturePic( pcTexturePic ); 701 728 pcSlice->setViewIdx( pcPic->getViewIdx() ); 729 #endif 702 730 #if SONY_COLPIC_AVAILABILITY 703 731 pcSlice->setViewOrderIdx( pcPic->getViewOrderIdx() ); -
trunk/source/Lib/TLibDecoder/TDecTop.h
r21 r42 111 111 TComList<TComPic*> m_cListPic; // Dynamic buffer 112 112 TComSPS m_cSPS; 113 #if FLEX_CODING_ORDER 114 TComSPS m_cNewSPS; 115 #endif 113 116 TComPPS m_cPPS; 114 117 TComSlice* m_apcSlicePilot; … … 167 170 Void init( TAppDecTop* pcTAppDecTop, Bool bFirstInstance = true ); 168 171 #if DCM_SKIP_DECODING_FRAMES 172 #if FLEX_CODING_ORDER 173 Bool decode (Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS, Int& iSkipFrame, Int& iPOCLastDisplay, Bool& bNewPictureType); 174 #else 169 175 Bool decode (Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS, Int& iSkipFrame, Int& iPOCLastDisplay); 176 177 #endif 170 178 #else 171 179 Void decode ( Bool bEos, TComBitstream* pcBitstream, UInt& ruiPOC, TComList<TComPic*>*& rpcListPic, NalUnitType& reNalUnitType, TComSPS& cComSPS ); -
trunk/source/Lib/TLibEncoder/TEncCavlc.cpp
r5 r42 39 39 40 40 #include "TEncCavlc.h" 41 #include "../TLibCommon/SEI.h" 41 42 #include "SEIwrite.h" 42 43 … … 228 229 void TEncCavlc::codeSEI(const SEI& sei) 229 230 { 231 #if BITSTREAM_EXTRACTION 232 codeNALUnitHeader( NAL_UNIT_SEI, NAL_REF_IDC_PRIORITY_LOWEST, 0, sei.getLayerId() ); 233 #else 230 234 codeNALUnitHeader(NAL_UNIT_SEI, NAL_REF_IDC_PRIORITY_LOWEST); 235 #endif 231 236 writeSEImessage(*m_pcBitIf, sei); 232 237 } … … 235 240 { 236 241 // uiFirstByte 242 #if BITSTREAM_EXTRACTION 243 codeNALUnitHeader( NAL_UNIT_PPS, NAL_REF_IDC_PRIORITY_HIGHEST, 0, pcPPS->getLayerId() ); 244 #else 237 245 codeNALUnitHeader( NAL_UNIT_PPS, NAL_REF_IDC_PRIORITY_HIGHEST ); 246 #endif 238 247 239 248 xWriteUvlc( pcPPS->getPPSId() ); … … 249 258 } 250 259 260 #if BITSTREAM_EXTRACTION 261 Void TEncCavlc::codeNALUnitHeader( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId, UInt uiLayerId ) 262 { 263 // uiFirstByte 264 xWriteCode( 0, 1); // forbidden_zero_flag 265 xWriteCode( eNalRefIdc==0 ? 0:1, 1); // nal_ref_flag 266 xWriteCode( eNalUnitType, 6); // nal_unit_type 267 268 xWriteCode( TemporalId, 3); // temporal_id 269 xWriteCode( uiLayerId+1, 5); // layer_id_plus1 270 } 271 #else 251 272 Void TEncCavlc::codeNALUnitHeader( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId, Bool bOutputFlag ) 252 273 { … … 263 284 } 264 285 } 286 #endif 265 287 266 288 Void TEncCavlc::codeSPS( TComSPS* pcSPS ) 267 289 { 268 290 // uiFirstByte 291 #if BITSTREAM_EXTRACTION 292 codeNALUnitHeader( NAL_UNIT_SPS, NAL_REF_IDC_PRIORITY_HIGHEST, 0, pcSPS->getLayerId() ); 293 #else 269 294 codeNALUnitHeader( NAL_UNIT_SPS, NAL_REF_IDC_PRIORITY_HIGHEST ); 295 #endif 270 296 271 297 // Structure … … 385 411 // here someone can add an appropriated NalRefIdc type 386 412 #if DCM_DECODING_REFRESH 413 #if BITSTREAM_EXTRACTION 414 codeNALUnitHeader (pcSlice->getNalUnitType(), NAL_REF_IDC_PRIORITY_HIGHEST, 1, pcSlice->getLayerId()); 415 #else 387 416 codeNALUnitHeader (pcSlice->getNalUnitType(), NAL_REF_IDC_PRIORITY_HIGHEST, 1, true); 417 #endif 418 #else 419 #if BITSTREAM_EXTRACTION 420 codeNALUnitHeader (NAL_UNIT_CODED_SLICE, NAL_REF_IDC_PRIORITY_HIGHEST, 0, pcSlice->getLayerId()); 388 421 #else 389 422 codeNALUnitHeader (NAL_UNIT_CODED_SLICE, NAL_REF_IDC_PRIORITY_HIGHEST); 423 #endif 390 424 #endif 391 425 -
trunk/source/Lib/TLibEncoder/TEncCavlc.h
r5 r42 206 206 UInt getCoeffCost () { return m_uiCoeffCost; } 207 207 208 #if BITSTREAM_EXTRACTION 209 Void codeNALUnitHeader ( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId = 0, UInt uiLayerId = 0 ); 210 #else 208 211 Void codeNALUnitHeader ( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId = 0, Bool bOutputFlag = true ); 212 #endif 209 213 210 214 Void codeSPS ( TComSPS* pcSPS ); -
trunk/source/Lib/TLibEncoder/TEncCfg.h
r21 r42 159 159 Bool m_bUseDMM; 160 160 #endif 161 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER 162 Bool m_bUseDMM34; 163 #endif 161 164 #if HHI_MPI 162 165 Bool m_bUseMVI; … … 184 187 //std::vector<int> m_aiLayerQPOffset; 185 188 189 #if BITSTREAM_EXTRACTION 190 UInt m_uiLayerId; 191 #endif 186 192 UInt m_uiViewId; 187 193 Int m_iViewOrderIdx; … … 235 241 Void setRateGOPSize ( Int i ) { m_iRateGOPSize = i; } 236 242 243 #if BITSTREAM_EXTRACTION 244 Void setLayerId ( UInt u ) { m_uiLayerId = u; } 245 UInt getLayerId ( ) { return m_uiLayerId; } 246 #endif 237 247 Void setViewId ( UInt u ) { m_uiViewId = u; } 238 248 Void setViewOrderIdx ( Int i ) { m_iViewOrderIdx = i; } … … 424 434 Bool getUseDMM() { return m_bUseDMM; } 425 435 #endif 426 436 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER 437 Void setUseDMM34( Bool b) { m_bUseDMM34 = b; } 438 Bool getUseDMM34() { return m_bUseDMM34; } 439 #endif 427 440 #if LM_CHROMA 428 441 Bool getUseLMChroma () { return m_bUseLMChroma; } -
trunk/source/Lib/TLibEncoder/TEncEntropy.h
r5 r42 72 72 virtual UInt getCoeffCost () = 0; 73 73 74 #if BITSTREAM_EXTRACTION 75 virtual Void codeNALUnitHeader ( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId = 0, UInt uiLayerId = 0 ) = 0; 76 #else 74 77 virtual Void codeNALUnitHeader ( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId = 0, Bool bOutputFlag = true ) = 0; 78 #endif 75 79 76 80 virtual Void codeSPS ( TComSPS* pcSPS ) = 0; -
trunk/source/Lib/TLibEncoder/TEncGOP.cpp
r5 r42 639 639 seiBs.create(1024); 640 640 /* write the SEI messages */ 641 #if BITSTREAM_EXTRACTION 642 sei_recon_picture_digest.setLayerId( pcSlice->getLayerId() ); 643 #endif 641 644 m_pcEntropyCoder->setEntropyCoder(m_pcCavlcCoder, pcSlice); 642 645 m_pcEntropyCoder->setBitstream(&seiBs); … … 824 827 } 825 828 826 #if HHI_VSO 829 #if HHI_VSO_PRINT_DIST 827 830 if ( m_pcRdCost->getUseRenModel() ) 828 831 { -
trunk/source/Lib/TLibEncoder/TEncSbac.cpp
r5 r42 177 177 } 178 178 179 #if BITSTREAM_EXTRACTION 180 Void TEncSbac::codeNALUnitHeader( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId, UInt uiLayerId ) 181 #else 179 182 Void TEncSbac::codeNALUnitHeader( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId, Bool bOutputFlag ) 183 #endif 180 184 { 181 185 assert (0); … … 1126 1130 #endif 1127 1131 #if HHI_DMM_PRED_TEX 1132 #if FLEX_CODING_ORDER 1133 if ( !pcCU->getSlice()->getSPS()->getUseDMM34() ) 1134 { 1135 assert( uiDir != DMM_WEDGE_PREDTEX_D_IDX ); 1136 assert( uiDir != DMM_CONTOUR_PREDTEX_D_IDX ); 1137 } 1138 #endif 1128 1139 if( uiDir == DMM_WEDGE_PREDTEX_D_IDX ) { xCodeWedgePredTexDeltaInfo ( pcCU, uiAbsPartIdx ); } 1129 1140 if( uiDir == DMM_CONTOUR_PREDTEX_D_IDX ) { xCodeContourPredTexDeltaInfo( pcCU, uiAbsPartIdx ); } -
trunk/source/Lib/TLibEncoder/TEncSbac.h
r5 r42 89 89 //--SBAC RD 90 90 91 #if BITSTREAM_EXTRACTION 92 Void codeNALUnitHeader ( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId = 0, UInt uiLayerId = 0 ); 93 #else 91 94 Void codeNALUnitHeader ( NalUnitType eNalUnitType, NalRefIdc eNalRefIdc, UInt TemporalId = 0, Bool bOutputFlag = true ); 95 #endif 92 96 93 97 Void codeSPS ( TComSPS* pcSPS ); -
trunk/source/Lib/TLibEncoder/TEncSearch.cpp
r5 r42 1926 1926 #endif 1927 1927 #if HHI_DMM_PRED_TEX 1928 #if FLEX_CODING_ORDER 1929 if ( pcCU->getSlice()->getSPS()->getUseDMM34() ) 1930 { 1931 #endif 1928 1932 TComYuv cTempYuv; cTempYuv.create( uiWidth, uiHeight ); cTempYuv.clear(); 1929 1933 Pel* piTempY = cTempYuv.getLumaAddr(); … … 1958 1962 uiRdModeList[ uiNewMaxMode++ ] = DMM_CONTOUR_PREDTEX_D_IDX; 1959 1963 } 1960 1961 1964 cTempYuv.destroy(); 1965 #if FLEX_CODING_ORDER 1966 } 1967 #endif 1962 1968 #endif 1963 1969 } … … 1988 1994 #else 1989 1995 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 1996 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER 1997 if( m_pcEncCfg->isDepthCoder() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight, pcCU->getSlice()->getSPS()->getUseDMM34() ) ) 1998 #else 1990 1999 if( m_pcEncCfg->isDepthCoder() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight ) ) 2000 #endif 1991 2001 continue; 1992 2002 #endif … … 2076 2086 #else 2077 2087 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX 2088 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER 2089 if( m_pcEncCfg->isDepthCoder() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight, pcCU->getSlice()->getSPS()->getUseDMM34() ) ) 2090 #else 2078 2091 if( m_pcEncCfg->isDepthCoder() && !predIntraLumaDMMAvailable( uiOrgMode, uiWidth, uiHeight ) ) 2092 #endif 2079 2093 continue; 2080 2094 #endif … … 2719 2733 } 2720 2734 2735 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER 2736 Bool TEncSearch::predIntraLumaDMMAvailable( UInt uiMode, UInt uiWidth, UInt uiHeight, Bool bDMMAvailable34 ) 2737 #else 2721 2738 Bool TEncSearch::predIntraLumaDMMAvailable( UInt uiMode, UInt uiWidth, UInt uiHeight ) 2739 #endif 2722 2740 { 2723 2741 if( uiMode <= MAX_MODE_ID_INTRA_DIR ) return true; … … 2747 2765 bDMMAvailable = false; 2748 2766 } 2767 #if FLEX_CODING_ORDER 2768 if ( !bDMMAvailable34 ) 2769 { 2770 bDMMAvailable = false; 2771 } 2772 #endif 2749 2773 } 2750 2774 -
trunk/source/Lib/TLibEncoder/TEncSearch.h
r5 r42 207 207 Bool predIntraLumaDMMAvailable( UInt uiMode, 208 208 UInt uiWidth, 209 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER 210 UInt uiHeight, 211 Bool bDMMAvailable34 ); 212 #else 209 213 UInt uiHeight ); 214 #endif 210 215 #endif 211 216 #if HHI_DMM_WEDGE_INTRA -
trunk/source/Lib/TLibEncoder/TEncSlice.cpp
r21 r42 149 149 rpcSlice->initSlice(); 150 150 rpcSlice->setPOC( pcPic->getPOC() ); 151 #if BITSTREAM_EXTRACTION 152 rpcSlice->setLayerId( m_pcCfg->getLayerId() ); 153 #endif 151 154 #if SONY_COLPIC_AVAILABILITY 152 155 rpcSlice->setViewOrderIdx(m_pcCfg->getViewOrderIdx()); -
trunk/source/Lib/TLibEncoder/TEncTop.cpp
r21 r42 287 287 288 288 bool bSomethingCoded = false ; 289 289 #if FLEX_CODING_ORDER 290 if (TEncTop::m_bPicWaitingForCoding ) 291 #else 290 292 if (m_bPicWaitingForCoding ) 293 #endif 291 294 { 292 295 std::map<Int, TComPic*>::iterator cIter = m_acInputPicMap.find( (Int)m_cSeqIter.getPoc() ); … … 543 546 m_cSPS.setMaxTrSize ( 1 << m_uiQuadtreeTULog2MaxSize ); 544 547 548 #if BITSTREAM_EXTRACTION 549 m_cSPS.setLayerId( m_uiLayerId ); 550 #endif 551 545 552 if( m_bIsDepth ) 546 553 { … … 616 623 m_cSPS.setUseDMM( m_bUseDMM ); 617 624 #endif 625 #if HHI_DMM_PRED_TEX && FLEX_CODING_ORDER 626 m_cSPS.setUseDMM34( m_bUseDMM34 ); 627 #endif 618 628 #if HHI_MPI 619 629 m_cSPS.setUseMVI( m_bUseMVI ); … … 626 636 Void TEncTop::xInitPPS() 627 637 { 638 #if BITSTREAM_EXTRACTION 639 m_cPPS.setLayerId( m_uiLayerId ); 640 #endif 641 628 642 m_cPPS.setConstrainedIntraPred( m_bUseConstrainedIntraPred ); 629 643 m_cPPS.setPPSId( ( m_uiViewId << 1 ) + ( m_bIsDepth ? 1 : 0 ) );
Note: See TracChangeset for help on using the changeset viewer.