Index: branches/SHM-2.1-multilayers-dev/source/Lib/TLibEncoder/TEncCavlc.cpp
===================================================================
--- branches/SHM-2.1-multilayers-dev/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 257)
+++ branches/SHM-2.1-multilayers-dev/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 259)
@@ -1067,5 +1067,5 @@
           if( !pcSlice->getVPS()->getMaxOneActiveRefLayerFlag()) 
           {
-            WRITE_CODE(pcSlice->getNumInterLayerRefPics(), numBits,"num_inter_layer_ref_pics_minus1");
+            WRITE_CODE(pcSlice->getActiveNumILRRefIdx() - 1, numBits,"num_inter_layer_ref_pics_minus1");
           }       
           for(Int i = 0; i < pcSlice->getActiveNumILRRefIdx(); i++ )
Index: branches/SHM-2.1-multilayers-dev/source/Lib/TLibEncoder/TEncCu.cpp
===================================================================
--- branches/SHM-2.1-multilayers-dev/source/Lib/TLibEncoder/TEncCu.cpp	(revision 257)
+++ branches/SHM-2.1-multilayers-dev/source/Lib/TLibEncoder/TEncCu.cpp	(revision 259)
@@ -458,6 +458,7 @@
     if (rpcBestCU->getLayerId() > 0)
     {
-      // the right reference layerIdc should be specified, currently it is set to 0
-      if (rpcBestCU->getSlice()->getBaseColPic(0)->getSlice(0)->getSliceType() == I_SLICE)
+      TComList<TComPic*> *cListPic = m_ppcTEncTop[rpcBestCU->getLayerId()]->getRefLayerEnc(rpcBestCU->getLayerId()-1)->getListPic();
+      TComPic* picLowerLayer = pcSlice->getRefPic( *cListPic, pcSlice->getPOC() );
+      if(picLowerLayer->getSlice(0)->getSliceType() == I_SLICE)
       {
         testInter = false;
Index: branches/SHM-2.1-multilayers-dev/source/Lib/TLibEncoder/TEncSlice.cpp
===================================================================
--- branches/SHM-2.1-multilayers-dev/source/Lib/TLibEncoder/TEncSlice.cpp	(revision 257)
+++ branches/SHM-2.1-multilayers-dev/source/Lib/TLibEncoder/TEncSlice.cpp	(revision 259)
@@ -491,9 +491,11 @@
   {
 #if JCTVC_M0458_INTERLAYER_RPS_SIG
-  // currently only one reference layer is supported in software and no decision logic to select yet.
-  // hence num of active inter layer references is set to one always
     if( rpcSlice->getNumILRRefIdx() > 0 )
     {
-      rpcSlice->setActiveNumILRRefIdx(1);
+      rpcSlice->setActiveNumILRRefIdx( rpcSlice->getNumILRRefIdx() );
+      for( Int i = 0; i < rpcSlice->getActiveNumILRRefIdx(); i++ )
+      {
+        rpcSlice->setInterLayerPredLayerIdc(i, i);
+      }
       rpcSlice->setInterLayerPredEnabledFlag(1);
     }
