Changeset 867 in 3DVCSoftware for branches/HTM-10.0-dev0/source/Lib/TLibEncoder
- Timestamp:
- 15 Mar 2014, 08:37:13 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-10.0-dev0/source/Lib/TLibEncoder/TEncCavlc.cpp
r866 r867 2247 2247 #endif 2248 2248 2249 #if !H_MV_HLS 7_GEN2249 #if !H_MV_HLS_7_POC_P0041 2250 2250 #if PPS_FIX_DEPTH 2251 2251 if(pcSlice->getPPS()->getSliceHeaderExtensionPresentFlag() || pcSlice->getIsDepth() ) … … 2258 2258 #endif 2259 2259 2260 #if H_MV_HLS 7_GEN2260 #if H_MV_HLS_7_POC_P0041 2261 2261 #if !H_MV 2262 2262 if(pcSlice->getPPS()->getSliceHeaderExtensionPresentFlag()) … … 2267 2267 if(pcSlice->getPPS()->getSliceHeaderExtensionPresentFlag()) 2268 2268 { 2269 // Derive the value of PocMsbValRequiredFlag 2270 pcSlice->setPocMsbValRequiredFlag( pcSlice->getCraPicFlag() || pcSlice->getBlaPicFlag() 2271 /* || related to vps_poc_lsb_aligned_flag */ 2272 ); 2273 2274 // Determine value of SH extension length. 2275 Int shExtnLengthInBit = 0; 2276 if (pcSlice->getPPS()->getPocResetInfoPresentFlag()) 2277 { 2278 shExtnLengthInBit += 2; 2279 } 2280 if (pcSlice->getPocResetIdc() > 0) 2281 { 2282 shExtnLengthInBit += 6; 2283 } 2284 if (pcSlice->getPocResetIdc() == 3) 2285 { 2286 shExtnLengthInBit += (pcSlice->getSPS()->getBitsForPOC() + 1); 2287 } 2288 2289 2290 if( !pcSlice->getPocMsbValRequiredFlag() /* TODO && pcSlice->getVPS()->getVpsPocLsbAlignedFlag() */ ) 2291 { 2292 shExtnLengthInBit++; // For poc_msb_val_present_flag 2293 } 2294 else 2295 { 2296 if( pcSlice->getPocMsbValRequiredFlag() ) 2297 { 2298 pcSlice->setPocMsbValPresentFlag( true ); 2299 } 2300 else 2301 { 2302 pcSlice->setPocMsbValPresentFlag( false ); 2303 } 2304 } 2305 2306 if( pcSlice->getPocMsbValPresentFlag() ) 2307 { 2308 Int iMaxPOClsb = 1<< pcSlice->getSPS()->getBitsForPOC(); 2309 2310 UInt lengthVal = 1; 2311 UInt tempVal = pcSlice->getPocMsbVal() + 1; 2312 assert ( tempVal ); 2313 while( 1 != tempVal ) 2314 { 2315 tempVal >>= 1; 2316 lengthVal += 2; 2317 } 2318 shExtnLengthInBit += lengthVal; 2319 } 2320 Int shExtnAdditionalBits = 0; 2321 if(shExtnLengthInBit % 8 != 0) 2322 { 2323 shExtnAdditionalBits = 8 - (shExtnLengthInBit % 8); 2324 } 2325 pcSlice->setSliceSegmentHeaderExtensionLength((shExtnLengthInBit + shExtnAdditionalBits) / 8); 2326 2327 2269 2328 WRITE_UVLC( pcSlice->getSliceSegmentHeaderExtensionLength( ), "slice_segment_header_extension_length" ); 2270 2329 UInt posFollSliceSegHeaderExtLen = m_pcBitIf->getNumberOfWrittenBits(); … … 2273 2332 WRITE_CODE( pcSlice->getPocResetIdc( ), 2, "poc_reset_idc" ); 2274 2333 } 2334 else 2335 { 2336 assert( pcSlice->getPocResetIdc( ) == 0 ); 2337 } 2275 2338 2276 2339 if( pcSlice->getPocResetIdc() != 0 ) … … 2282 2345 { 2283 2346 WRITE_FLAG( pcSlice->getFullPocResetFlag( ) ? 1 : 0 , "full_poc_reset_flag" ); 2284 WRITE_CODE( pcSlice->getPocLsbVal( ), getPocLsbValLen ), "poc_lsb_val" );2347 WRITE_CODE( pcSlice->getPocLsbVal( ), pcSlice->getPocLsbValLen() , "poc_lsb_val" ); 2285 2348 } 2286 2349 2287 if( !pcSlice->getPocMsbValRequiredFlag() && pcSlice->getVPS()->getVpsPocLsbAlignedFlag())2350 if( !pcSlice->getPocMsbValRequiredFlag() /* TODO && pcSlice->getVPS()->getVpsPocLsbAlignedFlag() */ ) 2288 2351 { 2289 2352 WRITE_FLAG( pcSlice->getPocMsbValPresentFlag( ) ? 1 : 0 , "poc_msb_val_present_flag" ); … … 2294 2357 WRITE_UVLC( pcSlice->getPocMsbVal( ), "poc_msb_val" ); 2295 2358 } 2296 2297 while( ( m_pcBitIf->getNumberOfWrittenBits() - posFollSliceSegHeaderExtLen ) < pcSlice->getSliceSegmentHeaderExtensionLength() * 8 ) ;2359 2360 while( ( m_pcBitIf->getNumberOfWrittenBits() - posFollSliceSegHeaderExtLen ) < pcSlice->getSliceSegmentHeaderExtensionLength() * 8 ) 2298 2361 { 2299 2362 WRITE_FLAG( 0, "slice_segment_header_extension_data_bit" ); 2300 2363 } 2301 2364 2302 assert( m_pcBitIf->getNumberOfWrittenBits() - posFollSliceSegHeaderExtLen ) == pcSlice->getSliceSegmentHeaderExtensionLength() * 8 ); 2365 assert( ( m_pcBitIf->getNumberOfWrittenBits() - posFollSliceSegHeaderExtLen ) == pcSlice->getSliceSegmentHeaderExtensionLength() * 8 ); 2366 } 2303 2367 #endif 2304 2305 2368 #endif 2306 2369 }
Note: See TracChangeset for help on using the changeset viewer.