Index: branches/SHM-4.0-dev/source/App/TAppEncoder/TAppEncTop.cpp
===================================================================
--- branches/SHM-4.0-dev/source/App/TAppEncoder/TAppEncTop.cpp	(revision 478)
+++ branches/SHM-4.0-dev/source/App/TAppEncoder/TAppEncTop.cpp	(revision 479)
@@ -1201,4 +1201,13 @@
     vps->setMaxOneActiveRefLayerFlag(maxDirectRefLayers > 1 ? false : true);
 #endif
+#if O0062_POC_LSB_NOT_PRESENT_FLAG
+    for(i = 1; i< vps->getMaxLayers(); i++)
+    {
+      if( vps->getNumDirectRefLayers( vps->getLayerIdInNuh(i) ) == 0  )
+      {
+        vps->setPocLsbNotPresentFlag(i, false);
+      }
+    }
+#endif
 #if N0147_IRAP_ALIGN_FLAG
     vps->setCrossLayerIrapAlignFlag(true);
Index: branches/SHM-4.0-dev/source/Lib/TLibCommon/TComSlice.cpp
===================================================================
--- branches/SHM-4.0-dev/source/Lib/TLibCommon/TComSlice.cpp	(revision 478)
+++ branches/SHM-4.0-dev/source/Lib/TLibCommon/TComSlice.cpp	(revision 479)
@@ -2000,4 +2000,7 @@
 #if JCTVC_M0458_INTERLAYER_RPS_SIG
   m_maxOneActiveRefLayerFlag = true;
+#endif
+#if O0062_POC_LSB_NOT_PRESENT_FLAG
+  ::memset(m_pocLsbNotPresentFlag, 0, sizeof(m_pocLsbNotPresentFlag));
 #endif
 #if N0147_IRAP_ALIGN_FLAG
Index: branches/SHM-4.0-dev/source/Lib/TLibCommon/TComSlice.h
===================================================================
--- branches/SHM-4.0-dev/source/Lib/TLibCommon/TComSlice.h	(revision 478)
+++ branches/SHM-4.0-dev/source/Lib/TLibCommon/TComSlice.h	(revision 479)
@@ -566,4 +566,7 @@
   Bool       m_maxOneActiveRefLayerFlag;
 #endif
+#if O0062_POC_LSB_NOT_PRESENT_FLAG
+  Bool       m_pocLsbNotPresentFlag[MAX_VPS_LAYER_ID_PLUS1];
+#endif
 #if N0147_IRAP_ALIGN_FLAG
   Bool       m_crossLayerIrapAlignFlag;
@@ -779,5 +782,9 @@
   Bool   getMaxOneActiveRefLayerFlag()                                          { return m_maxOneActiveRefLayerFlag;                      }
   Void   setMaxOneActiveRefLayerFlag(Bool x)                                    { m_maxOneActiveRefLayerFlag = x;                         }
-#endif 
+#endif
+#if O0062_POC_LSB_NOT_PRESENT_FLAG
+  UInt   getPocLsbNotPresentFlag(Int i)                                         { return m_pocLsbNotPresentFlag[i]; }
+  Void   setPocLsbNotPresentFlag(Int i, Bool x)                                 { m_pocLsbNotPresentFlag[i] = x;    }
+#endif
 #if N0147_IRAP_ALIGN_FLAG
   Bool   getCrossLayerIrapAlignFlag()                                           { return m_crossLayerIrapAlignFlag;                      }
Index: branches/SHM-4.0-dev/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- branches/SHM-4.0-dev/source/Lib/TLibCommon/TypeDef.h	(revision 478)
+++ branches/SHM-4.0-dev/source/Lib/TLibCommon/TypeDef.h	(revision 479)
@@ -155,4 +155,5 @@
 #define AUXILIARY_PICTURES               1      ///< JCTVC-O0041: auxiliary picture layers
 
+#define O0062_POC_LSB_NOT_PRESENT_FLAG   1      ///< JCTVC-O0062: signal poc_lsb_not_present_flag for each layer in VPS extension
 #define SHM_FIX7                         1      ///< fix for SHVC WD ticket #7
 
Index: branches/SHM-4.0-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp
===================================================================
--- branches/SHM-4.0-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 478)
+++ branches/SHM-4.0-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 479)
@@ -1257,6 +1257,16 @@
   vps->setMaxOneActiveRefLayerFlag(uiCode);
 #endif
+#if O0062_POC_LSB_NOT_PRESENT_FLAG
+  for(i = 1; i< vps->getMaxLayers(); i++)
+  {
+    if( vps->getNumDirectRefLayers( vps->getLayerIdInNuh(i) ) == 0  )
+    {
+      READ_FLAG(uiCode, "poc_lsb_not_present_flag[i]");
+      vps->setPocLsbNotPresentFlag(i, uiCode);
+    }
+  }
+#endif
 #if O0215_PHASE_ALIGNMENT
-  READ_FLAG( uiCode, "phase_align_flag"); vps->setPhaseAlignFlag( uiCode == 1 ? true : false );
+  READ_FLAG( uiCode, "cross_layer_phase_alignment_flag"); vps->setPhaseAlignFlag( uiCode == 1 ? true : false );
 #endif
 
@@ -1554,5 +1564,9 @@
     Int iPOClsb = 0;
 #endif
+#if O0062_POC_LSB_NOT_PRESENT_FLAG
+    if( ( rpcSlice->getLayerId() > 0 && !rpcSlice->getVPS()->getPocLsbNotPresentFlag( rpcSlice->getVPS()->getLayerIdInVps(rpcSlice->getLayerId())) ) || !rpcSlice->getIdrPicFlag())
+#else
     if( rpcSlice->getLayerId() > 0 || !rpcSlice->getIdrPicFlag() )
+#endif
 #else
     else
Index: branches/SHM-4.0-dev/source/Lib/TLibEncoder/TEncCavlc.cpp
===================================================================
--- branches/SHM-4.0-dev/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 478)
+++ branches/SHM-4.0-dev/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 479)
@@ -989,10 +989,19 @@
 #if JCTVC_M0458_INTERLAYER_RPS_SIG
       WRITE_FLAG(vps->getMaxOneActiveRefLayerFlag(), "max_one_active_ref_layer_flag");
-#endif 
+#endif
+#if O0062_POC_LSB_NOT_PRESENT_FLAG
+  for(i = 1; i< vps->getMaxLayers(); i++)
+  {
+    if( vps->getNumDirectRefLayers( vps->getLayerIdInNuh(i) ) == 0  )
+    {
+      WRITE_FLAG(vps->getPocLsbNotPresentFlag(i), "poc_lsb_not_present_flag[i]");
+    }
+  }
+#endif
 #if O0215_PHASE_ALIGNMENT
-  WRITE_FLAG(vps->getPhaseAlignFlag(), "phase_align_flag" );
+  WRITE_FLAG(vps->getPhaseAlignFlag(), "cross_layer_phase_alignment_flag" );
 #endif
 #if N0147_IRAP_ALIGN_FLAG
-      WRITE_FLAG(vps->getCrossLayerIrapAlignFlag(), "cross_layer_irap_aligned_flag");
+  WRITE_FLAG(vps->getCrossLayerIrapAlignFlag(), "cross_layer_irap_aligned_flag");
 #endif 
 #if VPS_EXTN_DIRECT_REF_LAYERS && M0457_PREDICTION_INDICATIONS
@@ -1234,5 +1243,9 @@
 
 #if N0065_LAYER_POC_ALIGNMENT
+#if O0062_POC_LSB_NOT_PRESENT_FLAG
+    if( (pcSlice->getLayerId() > 0 && !pcSlice->getVPS()->getPocLsbNotPresentFlag( pcSlice->getVPS()->getLayerIdInVps(pcSlice->getLayerId())) ) || !pcSlice->getIdrPicFlag())
+#else
     if( pcSlice->getLayerId() > 0 || !pcSlice->getIdrPicFlag() )
+#endif
 #else
     if( !pcSlice->getIdrPicFlag() )
