Ignore:
Timestamp:
27 Dec 2013, 10:54:03 (10 years ago)
Author:
chang
Message:

Integrate

  • JCT3V-F0136/F0045: view order index based camera parameter signaling
  • JCT3V-F0082: the cp_in_slice_segment_layer_flag to be view specific and used as a condition of the presence of slice header level camera parameters
  • JCT3V-F0044: move camera parameter from slice header extension to slice header
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-9.1-dev0-MediaTek/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r753 r755  
    10491049#endif
    10501050
     1051#if !CAM_HLS_F0136_F0045_F0082
    10511052  UInt uiCamParPrecision = 0;
    10521053  Bool bCamParSlice      = false;
     
    10681069  }
    10691070  pcSPS->initCamParaSPS( viewIndex, uiCamParPrecision, bCamParSlice, m_aaiTempScale, m_aaiTempOffset );
     1071#endif
    10701072}
    10711073#endif
     
    11791181#if H_3D
    11801182      m_pcBitstream->readOutTrailingBits();
     1183#if CAM_HLS_F0136_F0045_F0082
     1184      pcVPS->createCamPars(pcVPS->getNumViews());
     1185#endif
    11811186      parseVPSExtension2( pcVPS );   
    11821187      READ_FLAG( uiCode,  "vps_extension3_flag" );
     
    19311936    }
    19321937  }
     1938#if CAM_HLS_F0136_F0045_F0082
     1939  UInt uiCamParPrecision = 0;
     1940  Bool bCamParSlice      = false;
     1941  Bool bCamParPresentFlag = false;
     1942
     1943  READ_UVLC( uiCamParPrecision, "cp_precision" );
     1944  for (UInt viewIndex=0; viewIndex<pcVPS->getNumViews(); viewIndex++)
     1945  {
     1946    READ_FLAG( uiCode, "cp_present_flag[i]" );                  bCamParPresentFlag = ( uiCode == 1);
     1947    if ( bCamParPresentFlag )
     1948    {
     1949      READ_FLAG( uiCode, "cp_in_slice_segment_header_flag[i]" );          bCamParSlice = ( uiCode == 1);
     1950      if ( !bCamParSlice )
     1951      {
     1952        for( UInt uiBaseIndex = 0; uiBaseIndex < viewIndex; uiBaseIndex++ )
     1953        {
     1954          Int iCode;
     1955          READ_SVLC( iCode, "vps_cp_scale" );                m_aaiTempScale  [ uiBaseIndex ][ viewIndex ]   = iCode;
     1956          READ_SVLC( iCode, "vps_cp_off" );                  m_aaiTempOffset [ uiBaseIndex ][ viewIndex ]   = iCode;
     1957          READ_SVLC( iCode, "vps_cp_inv_scale_plus_scale" ); m_aaiTempScale  [ viewIndex   ][ uiBaseIndex ] = iCode - m_aaiTempScale [ uiBaseIndex ][ viewIndex ];
     1958          READ_SVLC( iCode, "vps_cp_inv_off_plus_off" );     m_aaiTempOffset [ viewIndex   ][ uiBaseIndex ] = iCode - m_aaiTempOffset[ uiBaseIndex ][ viewIndex ];
     1959        }
     1960      }
     1961      pcVPS->initCamParaVPS( viewIndex, bCamParPresentFlag, uiCamParPrecision, bCamParSlice, m_aaiTempScale, m_aaiTempOffset );
     1962    }
     1963  }
     1964#endif
    19331965  READ_FLAG( uiCode, "iv_mv_scaling_flag");                       pcVPS->setIvMvScalingFlag( uiCode == 1 ? true : false );
    19341966}
     
    26572689  }
    26582690
     2691#if CAM_HLS_F0044
     2692#if CAM_HLS_F0136_F0045_F0082
     2693  if( rpcSlice->getVPS()->hasCamParInSliceHeader( rpcSlice->getViewIndex() )  && !rpcSlice->getIsDepth() )
     2694#else
     2695  if( rpcSlice->getSPS()->hasCamParInSliceHeader() )
     2696#endif
     2697  {
     2698    UInt uiViewIndex = rpcSlice->getViewIndex();
     2699    for( UInt uiBaseIndex = 0; uiBaseIndex < uiViewIndex; uiBaseIndex++ )
     2700    {
     2701      READ_SVLC( iCode, "cp_scale" );                m_aaiTempScale [ uiBaseIndex ][ uiViewIndex ] = iCode;
     2702      READ_SVLC( iCode, "cp_off" );                  m_aaiTempOffset[ uiBaseIndex ][ uiViewIndex ] = iCode;
     2703      READ_SVLC( iCode, "cp_inv_scale_plus_scale" ); m_aaiTempScale [ uiViewIndex ][ uiBaseIndex ] = iCode - m_aaiTempScale [ uiBaseIndex ][ uiViewIndex ];
     2704      READ_SVLC( iCode, "cp_inv_off_plus_off" );     m_aaiTempOffset[ uiViewIndex ][ uiBaseIndex ] = iCode - m_aaiTempOffset[ uiBaseIndex ][ uiViewIndex ];
     2705    }
     2706    rpcSlice->setCamparaSlice( m_aaiTempScale, m_aaiTempOffset );
     2707  }
     2708
     2709#endif
     2710
    26592711  if(pps->getSliceHeaderExtensionPresentFlag())
    26602712  {
    26612713    READ_UVLC(uiCode,"slice_header_extension_length");
    2662 #if H_3D
     2714#if H_3D && !CAM_HLS_F0044
     2715#if CAM_HLS_F0136_F0045_F0082
     2716    if( rpcSlice->getVPS()->hasCamParInSliceHeader( rpcSlice->getViewIndex() )  && !rpcSlice->getIsDepth() )
     2717#else
    26632718    if( rpcSlice->getSPS()->hasCamParInSliceHeader() )
     2719#endif
    26642720    {
    26652721      UInt uiViewIndex = rpcSlice->getViewIndex();
Note: See TracChangeset for help on using the changeset viewer.