Changeset 1185 in SHVCSoftware for branches/SHM-dev/source/Lib/TLibEncoder
- Timestamp:
- 8 Jul 2015, 03:34:13 (10 years ago)
- Location:
- branches/SHM-dev/source/Lib/TLibEncoder
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-dev/source/Lib/TLibEncoder/SEIwrite.cpp
r1134 r1185 55 55 56 56 #if O0164_MULTI_LAYER_HRD 57 #if VPS_VUI_BSP_HRD_PARAMS58 57 Void SEIWriter::xWriteSEIpayloadData(TComBitIf& bs, const SEI& sei, TComVPS *vps, TComSPS *sps, const SEIScalableNesting* nestingSeiPtr, const SEIBspNesting* bspNestingSeiPtr) 59 58 #else 60 Void SEIWriter::xWriteSEIpayloadData(TComBitIf& bs, const SEI& sei, TComVPS *vps, TComSPS *sps, const SEIScalableNesting& nestingSei, const SEIBspNesting& bspNestingSei)61 #endif62 #else63 59 Void SEIWriter::xWriteSEIpayloadData(TComBitIf& bs, const SEI& sei, TComSPS *sps) 64 60 #endif 65 61 { 66 #if VPS_VUI_BSP_HRD_PARAMS62 #if SVC_EXTENSION 67 63 SEIScalableNesting nestingSei; 68 64 SEIBspNesting bspNestingSei; … … 87 83 xWriteSEIDecodedPictureHash(*static_cast<const SEIDecodedPictureHash*>(&sei)); 88 84 break; 89 #if VPS_VUI_BSP_HRD_PARAMS85 #if SVC_EXTENSION 90 86 case SEI::DECODING_UNIT_INFO: 91 87 xWriteSEIDecodingUnitInfo(*static_cast<const SEIDecodingUnitInfo*>(& sei), sps, nestingSeiPtr, bspNestingSeiPtr, vps); … … 236 232 #endif 237 233 #if O0164_MULTI_LAYER_HRD 238 #if VPS_VUI_BSP_HRD_PARAMS239 234 xWriteSEIpayloadData(bs_count, sei, vps, sps, nestingSei, bspNestingSei); 240 #else241 xWriteSEIpayloadData(bs_count, sei, vps, sps, *nestingSei, *bspNestingSei);242 #endif243 235 #else 244 236 xWriteSEIpayloadData(bs_count, sei, sps); … … 279 271 280 272 #if O0164_MULTI_LAYER_HRD 281 #if VPS_VUI_BSP_HRD_PARAMS282 273 xWriteSEIpayloadData(bs, sei, vps, sps, nestingSei, bspNestingSei); 283 #else284 xWriteSEIpayloadData(bs, sei, vps, sps, *nestingSei, *bspNestingSei);285 #endif286 274 #else 287 275 xWriteSEIpayloadData(bs, sei, sps); … … 352 340 } 353 341 354 #if VPS_VUI_BSP_HRD_PARAMS342 #if SVC_EXTENSION 355 343 Void SEIWriter::xWriteSEIDecodingUnitInfo(const SEIDecodingUnitInfo& sei, TComSPS *sps, const SEIScalableNesting* nestingSei, const SEIBspNesting* bspNestingSei, TComVPS *vps) 356 #else 357 Void SEIWriter::xWriteSEIDecodingUnitInfo(const SEIDecodingUnitInfo& sei, TComSPS *sps) 358 #endif 359 { 360 #if VPS_VUI_BSP_HRD_PARAMS 344 { 361 345 TComHRD *hrd; 362 346 if( bspNestingSei ) // If DU info SEI contained inside a BSP nesting SEI message … … 406 390 WRITE_CODE(sei.m_picSptDpbOutputDuDelay, hrd->getDpbOutputDelayDuLengthMinus1() + 1, "pic_spt_dpb_output_du_delay"); 407 391 } 392 } 408 393 #else 394 Void SEIWriter::xWriteSEIDecodingUnitInfo(const SEIDecodingUnitInfo& sei, TComSPS *sps) 395 { 409 396 TComVUI *vui = sps->getVuiParameters(); 410 397 WRITE_UVLC(sei.m_decodingUnitIdx, "decoding_unit_idx"); … … 418 405 WRITE_CODE(sei.m_picSptDpbOutputDuDelay, vui->getHrdParameters()->getDpbOutputDelayDuLengthMinus1() + 1, "pic_spt_dpb_output_du_delay"); 419 406 } 420 #endif 421 } 422 423 #if VPS_VUI_BSP_HRD_PARAMS407 } 408 #endif 409 410 #if SVC_EXTENSION 424 411 Void SEIWriter::xWriteSEIBufferingPeriod(const SEIBufferingPeriod& sei, TComSPS *sps, const SEIScalableNesting* nestingSei, const SEIBspNesting* bspNestingSei, TComVPS *vps) 425 412 #else … … 428 415 { 429 416 Int i, nalOrVcl; 430 #if VPS_VUI_BSP_HRD_PARAMS417 #if SVC_EXTENSION 431 418 TComHRD *hrd; 432 419 if( bspNestingSei ) // If BP SEI contained inside a BSP nesting SEI message … … 506 493 #endif 507 494 } 508 #if VPS_VUI_BSP_HRD_PARAMS 495 496 #if SVC_EXTENSION 509 497 Void SEIWriter::xWriteSEIPictureTiming(const SEIPictureTiming& sei, TComSPS *sps, const SEIScalableNesting* nestingSei, const SEIBspNesting* bspNestingSei, TComVPS *vps) 510 498 #else … … 513 501 { 514 502 Int i; 515 #if VPS_VUI_BSP_HRD_PARAMS503 #if SVC_EXTENSION 516 504 TComHRD *hrd; 517 505 TComVUI *vui = sps->getVuiParameters(); … … 1165 1153 assert(vps->getVpsVuiPresentFlag()); 1166 1154 1167 #if VPS_VUI_BSP_HRD_PARAMS1155 #if SVC_EXTENSION 1168 1156 Int psIdx = bspNestingSei.m_seiPartitioningSchemeIdx; 1169 1157 Int seiOlsIdx = bspNestingSei.m_seiOlsIdx; -
branches/SHM-dev/source/Lib/TLibEncoder/SEIwrite.h
r1098 r1185 58 58 protected: 59 59 #if O0164_MULTI_LAYER_HRD 60 #if VPS_VUI_BSP_HRD_PARAMS61 60 Void xWriteSEIpayloadData(TComBitIf& bs, const SEI& sei, TComVPS *vps, TComSPS *sps, const SEIScalableNesting* nestingSei, const SEIBspNesting* bspNestingSei); 62 #else63 Void xWriteSEIpayloadData(TComBitIf& bs, const SEI& sei, TComVPS *vps, TComSPS *sps, const SEIScalableNesting& nestingSei, const SEIBspNesting& bspNestingSei);64 #endif65 61 #else 66 62 Void xWriteSEIpayloadData(TComBitIf& bs, const SEI& sei, TComSPS *sps); … … 69 65 Void xWriteSEIActiveParameterSets(const SEIActiveParameterSets& sei); 70 66 Void xWriteSEIDecodedPictureHash(const SEIDecodedPictureHash& sei); 71 #if VPS_VUI_BSP_HRD_PARAMS67 #if SVC_EXTENSION 72 68 Void xWriteSEIDecodingUnitInfo(const SEIDecodingUnitInfo& sei, TComSPS *sps, const SEIScalableNesting* nestingSei, const SEIBspNesting* bspNestingSei, TComVPS *vps); 73 69 Void xWriteSEIBufferingPeriod(const SEIBufferingPeriod& sei, TComSPS *sps, const SEIScalableNesting* nestingSei, const SEIBspNesting* bspNestingSei, TComVPS *vps); -
branches/SHM-dev/source/Lib/TLibEncoder/TEncCavlc.cpp
r1183 r1185 2496 2496 2497 2497 #if O0164_MULTI_LAYER_HRD 2498 WRITE_FLAG(vps->getVpsVuiBspHrdPresentFlag(), "vps_vui_bsp_hrd_present_flag" ); 2499 if (vps->getVpsVuiBspHrdPresentFlag()) 2500 { 2501 #if VPS_VUI_BSP_HRD_PARAMS 2502 codeVpsVuiBspHrdParams(vps); 2503 #else 2504 WRITE_UVLC( vps->getVpsNumBspHrdParametersMinus1(), "vps_num_bsp_hrd_parameters_minus1" ); 2505 for( i = 0; i <= vps->getVpsNumBspHrdParametersMinus1(); i++ ) 2506 { 2507 if( i > 0 ) 2508 { 2509 WRITE_FLAG( vps->getBspCprmsPresentFlag(i), "bsp_cprms_present_flag[i]" ); 2510 } 2511 codeHrdParameters(vps->getBspHrd(i), i==0 ? 1 : vps->getBspCprmsPresentFlag(i), vps->getMaxTLayers()-1); 2512 } 2513 for( UInt h = 1; h <= vps->getVpsNumLayerSetsMinus1(); h++ ) 2514 { 2515 WRITE_UVLC( vps->getNumBitstreamPartitions(h), "num_bitstream_partitions[i]"); 2516 for( i = 0; i < vps->getNumBitstreamPartitions(h); i++ ) 2517 { 2518 for( j = 0; j <= (vps->getMaxLayers()-1); j++ ) 2519 { 2520 if (vps->getLayerIdIncludedFlag(h, j)) 2521 { 2522 WRITE_FLAG( vps->getLayerInBspFlag(h, i, j), "layer_in_bsp_flag[h][i][j]" ); 2523 } 2524 } 2525 } 2526 if (vps->getNumBitstreamPartitions(h)) 2527 { 2528 #if Q0182_MULTI_LAYER_HRD_UPDATE 2529 WRITE_UVLC(vps->getNumBspSchedCombinations(h) - 1, "num_bsp_sched_combinations_minus1[h]"); 2530 #else 2531 WRITE_UVLC( vps->getNumBspSchedCombinations(h), "num_bsp_sched_combinations[h]"); 2532 #endif 2533 for( i = 0; i < vps->getNumBspSchedCombinations(h); i++ ) 2534 { 2535 for( j = 0; j < vps->getNumBitstreamPartitions(h); j++ ) 2536 { 2537 WRITE_UVLC( vps->getBspCombHrdIdx(h, i, j), "bsp_comb_hrd_idx[h][i][j]"); 2538 WRITE_UVLC( vps->getBspCombSchedIdx(h, i, j), "bsp_comb_sched_idx[h][i][j]"); 2539 } 2540 } 2541 } 2542 } 2543 #endif 2544 } 2545 #endif 2546 2547 for( i = 1; i < vps->getMaxLayers(); i++ ) 2548 { 2549 if( vps->getNumRefLayers(vps->getLayerIdInNuh(i)) == 0 ) 2550 { 2551 WRITE_FLAG(vps->getBaseLayerPSCompatibilityFlag(i), "base_layer_parameter_set_compatibility_flag" ); 2552 } 2553 } 2498 WRITE_FLAG(vps->getVpsVuiBspHrdPresentFlag(), "vps_vui_bsp_hrd_present_flag" ); 2499 2500 if( vps->getVpsVuiBspHrdPresentFlag() ) 2501 { 2502 codeVpsVuiBspHrdParams(vps); 2503 } 2504 #endif 2505 2506 for( i = 1; i < vps->getMaxLayers(); i++ ) 2507 { 2508 if( vps->getNumRefLayers(vps->getLayerIdInNuh(i)) == 0 ) 2509 { 2510 WRITE_FLAG(vps->getBaseLayerPSCompatibilityFlag(i), "base_layer_parameter_set_compatibility_flag" ); 2511 } 2512 } 2554 2513 } 2555 2514 … … 2561 2520 WRITE_FLAG( 0, "inter_view_mv_vert_constraint_flag" ); 2562 2521 } 2563 #endif //SVC_EXTENSION2564 2522 2565 2523 #if Q0048_CGS_3D_ASYMLUT … … 2791 2749 } 2792 2750 #endif 2793 #if VPS_VUI_BSP_HRD_PARAMS 2751 #endif 2752 2794 2753 Void TEncCavlc::codeVpsVuiBspHrdParams(TComVPS * const vps) 2795 2754 { 2796 2755 WRITE_UVLC( vps->getVpsNumAddHrdParams(), "vps_num_add_hrd_params" ); 2756 2797 2757 for( Int i = vps->getNumHrdParameters(), j = 0; i < vps->getNumHrdParameters() + vps->getVpsNumAddHrdParams(); i++, j++ ) // j = i - vps->getNumHrdParameters() 2798 2758 { … … 2801 2761 WRITE_FLAG( vps->getCprmsAddPresentFlag(j), "cprms_add_present_flag[i]" ); 2802 2762 } 2763 2803 2764 WRITE_UVLC( vps->getNumSubLayerHrdMinus1(j), "num_sub_layer_hrd_minus1[i]" ); 2765 2804 2766 codeHrdParameters(vps->getBspHrd(j), i == 0 ? true : vps->getCprmsAddPresentFlag(j), vps->getNumSubLayerHrdMinus1(j)); 2805 2767 } … … 2810 2772 { 2811 2773 Int lsIdx = vps->getOutputLayerSetIdx( h ); 2774 2812 2775 WRITE_UVLC( vps->getNumSignalledPartitioningSchemes(h), "num_signalled_partitioning_schemes[h]"); 2813 2776 … … 2815 2778 { 2816 2779 WRITE_UVLC( vps->getNumPartitionsInSchemeMinus1(h, j), "num_partitions_in_scheme_minus1[h][j]" ); 2780 2817 2781 for( Int k = 0; k <= vps->getNumPartitionsInSchemeMinus1(h, j); k++ ) 2818 2782 { … … 2832 2796 for( Int j = 0; j <= vps->getNumBspSchedulesMinus1(h, i, t); j++ ) 2833 2797 { 2834 for (Int k = 0; k <= vps->getNumPartitionsInSchemeMinus1(h, i); k++)2798 for( Int k = 0; k <= vps->getNumPartitionsInSchemeMinus1(h, i); k++ ) 2835 2799 { 2836 if (vps->getNumHrdParameters() + vps->getVpsNumAddHrdParams() > 1)2800 if( vps->getNumHrdParameters() + vps->getVpsNumAddHrdParams() > 1 ) 2837 2801 { 2838 2802 Int numBits = 1; … … 2841 2805 numBits++; 2842 2806 } 2807 2843 2808 WRITE_CODE(vps->getBspHrdIdx(h, i, t, j, k), numBits, "bsp_comb_hrd_idx[h][i][t][j][k]"); 2844 2809 } 2810 2845 2811 WRITE_UVLC( vps->getBspSchedIdx(h, i, t, j, k), "bsp_comb_sched_idx[h][i][t][j][k]"); 2846 2812 } … … 2851 2817 } 2852 2818 } 2853 #endif 2854 #endif 2819 2820 #endif //SVC_EXTENSION 2855 2821 //! \} -
branches/SHM-dev/source/Lib/TLibEncoder/TEncCavlc.h
r1029 r1185 166 166 Void codeVpsDpbSizeTable (TComVPS *vps); 167 167 #endif 168 #if VPS_VUI_BSP_HRD_PARAMS169 168 Void codeVpsVuiBspHrdParams (TComVPS * const); 170 #endif171 169 #if Q0048_CGS_3D_ASYMLUT 172 170 #if R0179_ENC_OPT_3DLUT_SIZE -
branches/SHM-dev/source/Lib/TLibEncoder/TEncGOP.cpp
r1181 r1185 2448 2448 { 2449 2449 Int j; 2450 #if VPS_VUI_BSP_HRD_PARAMS2451 2450 TComVPS *vps = m_pcEncTop->getVPS(); 2452 for(Int i = 0; i < vps->getNumOutputLayerSets(); i++) 2453 { 2454 for(Int k = 0; k < vps->getNumSignalledPartitioningSchemes(i); k++) 2451 2452 for( Int i = 0; i < vps->getNumOutputLayerSets(); i++ ) 2453 { 2454 for( Int k = 0; k < vps->getNumSignalledPartitioningSchemes(i); k++ ) 2455 2455 { 2456 for( Int l = 0; l < vps->getNumPartitionsInSchemeMinus1(i, k)+1; l++)2456 for( Int l = 0; l < vps->getNumPartitionsInSchemeMinus1(i, k)+1; l++ ) 2457 2457 { 2458 #endif2459 2458 nalu = NALUnit(NAL_UNIT_PREFIX_SEI, 0, 1); 2460 2459 m_pcEntropyCoder->setEntropyCoder(m_pcCavlcCoder, pcSlice); 2461 2460 m_pcEntropyCoder->setBitstream(&nalu.m_Bitstream); 2462 #if VPS_VUI_BSP_HRD_PARAMS2463 2461 SEIScalableNesting *scalableBspNestingSei = xCreateBspNestingSEI(pcSlice, i, k, l); 2464 #else2465 SEIScalableNesting *scalableBspNestingSei = xCreateBspNestingSEI(pcSlice);2466 #endif2467 2462 m_seiWriter.writeSEImessage(nalu.m_Bitstream, *scalableBspNestingSei, m_pcEncTop->getVPS(), pcSlice->getSPS()); 2468 2463 writeRBSPTrailingBits(nalu.m_Bitstream); … … 2473 2468 + m_pictureTimingSEIPresentInAU 2474 2469 + m_nestedPictureTimingSEIPresentInAU; // Insert SEI after APS, BP and PT SEI 2470 2475 2471 AccessUnit::iterator it; 2476 for(j = 0, it = accessUnit.begin(); j < seiPositionInAu + offsetPosition; j++) 2472 2473 for( j = 0, it = accessUnit.begin(); j < seiPositionInAu + offsetPosition; j++ ) 2477 2474 { 2478 2475 it++; 2479 2476 } 2477 2480 2478 accessUnit.insert(it, new NALUnitEBSP(nalu)); 2481 #if VPS_VUI_BSP_HRD_PARAMS2482 2479 } 2483 2480 } 2484 2481 } 2485 #endif2486 2482 } 2487 2483 #endif … … 4958 4954 4959 4955 #if O0164_MULTI_LAYER_HRD 4960 #if VPS_VUI_BSP_HRD_PARAMS4961 4956 SEIScalableNesting* TEncGOP::xCreateBspNestingSEI(TComSlice *pcSlice, Int olsIdx, Int partitioningSchemeIdx, Int bspIdx) 4962 #else4963 SEIScalableNesting* TEncGOP::xCreateBspNestingSEI(TComSlice *pcSlice)4964 #endif4965 4957 { 4966 4958 SEIScalableNesting *seiScalableNesting = new SEIScalableNesting(); … … 4975 4967 seiScalableNesting->m_defaultOpFlag = 0; 4976 4968 seiScalableNesting->m_nestingNumOpsMinus1 = 0; //nesting_num_ops_minus1 4977 #if VPS_VUI_BSP_HRD_PARAMS4978 4969 seiScalableNesting->m_nestingOpIdx[0] = pcSlice->getVPS()->getOutputLayerSetIdx(olsIdx); 4979 4970 seiScalableNesting->m_nestingMaxTemporalIdPlus1[0] = 6 + 1; 4980 #else4981 seiScalableNesting->m_nestingOpIdx[0] = 1;4982 #endif4983 4971 seiScalableNesting->m_allLayersFlag = 0; 4984 4972 seiScalableNesting->m_nestingNoOpMaxTemporalIdPlus1 = 6 + 1; //nesting_no_op_max_temporal_id_plus1 … … 5026 5014 seiBspNesting->m_nestedSEIs.push_back(seiBufferingPeriod); 5027 5015 seiBspNesting->m_nestedSEIs.push_back(seiBspInitialArrivalTime); 5028 #if VPS_VUI_BSP_HRD_PARAMS5029 5016 seiBspNesting->m_bspIdx = bspIdx; 5030 5017 seiBspNesting->m_seiOlsIdx = olsIdx; 5031 5018 seiBspNesting->m_seiPartitioningSchemeIdx = partitioningSchemeIdx; 5032 #endif5033 5019 seiScalableNesting->m_nestedSEIs.push_back(seiBspNesting); // BSP nesting SEI is contained in scalable nesting SEI 5034 5020 -
branches/SHM-dev/source/Lib/TLibEncoder/TEncGOP.h
r1131 r1185 282 282 #endif 283 283 #if O0164_MULTI_LAYER_HRD 284 #if VPS_VUI_BSP_HRD_PARAMS285 284 SEIScalableNesting* xCreateBspNestingSEI(TComSlice *pcSlice, Int olsIdx, Int partitioningSchemeIdx, Int bspIdx); 286 #else287 SEIScalableNesting* xCreateBspNestingSEI(TComSlice *pcSlice);288 #endif289 285 #endif 290 286 #if P0123_ALPHA_CHANNEL_SEI -
branches/SHM-dev/source/Lib/TLibEncoder/TEncTop.cpp
r1182 r1185 240 240 241 241 // set the VPS profile information 242 #if VPS_VUI_BSP_HRD_PARAMS242 #if SVC_EXTENSION 243 243 m_cVPS.getTimingInfo()->setTimingInfoPresentFlag ( true ); 244 244 #else
Note: See TracChangeset for help on using the changeset viewer.