Index: branches/SHM-5.0-dev/source/Lib/TLibCommon/TComSlice.cpp
===================================================================
--- branches/SHM-5.0-dev/source/Lib/TLibCommon/TComSlice.cpp	(revision 551)
+++ branches/SHM-5.0-dev/source/Lib/TLibCommon/TComSlice.cpp	(revision 552)
@@ -2082,5 +2082,7 @@
 #if VPS_EXTN_PROFILE_INFO
   ::memset(m_profilePresentFlag, 0, sizeof(m_profilePresentFlag));
+#if !P0048_REMOVE_PROFILE_REF
   ::memset(m_profileLayerSetRef, 0, sizeof(m_profileLayerSetRef));
+#endif
 #endif
 #if VPS_EXTN_OP_LAYER_SETS
Index: branches/SHM-5.0-dev/source/Lib/TLibCommon/TComSlice.h
===================================================================
--- branches/SHM-5.0-dev/source/Lib/TLibCommon/TComSlice.h	(revision 551)
+++ branches/SHM-5.0-dev/source/Lib/TLibCommon/TComSlice.h	(revision 552)
@@ -514,5 +514,7 @@
   // Profile-tier-level signalling related
   Bool       m_profilePresentFlag[MAX_VPS_LAYER_SETS_PLUS1];    // The value with index 0 will not be used.
+#if !P0048_REMOVE_PROFILE_REF
   UInt       m_profileLayerSetRef[MAX_VPS_LAYER_SETS_PLUS1];    // The value with index 0 will not be used.
+#endif
   std::vector<TComPTL>    m_pcPTLForExtn;  
 #endif
@@ -777,6 +779,8 @@
   Void   setProfilePresentFlag(Int id, Bool x)                  { m_profilePresentFlag[id] = x;    }
 
+#if !P0048_REMOVE_PROFILE_REF
   UInt   getProfileLayerSetRef(Int id)                          { return m_profileLayerSetRef[id]; }
   Void   setProfileLayerSetRef(Int id, Bool x)                  { m_profileLayerSetRef[id] = x;    }
+#endif
 
   std::vector<TComPTL>* getPTLForExtnPtr()                      { return &m_pcPTLForExtn;          }
Index: branches/SHM-5.0-dev/source/Lib/TLibCommon/TypeDef.h
===================================================================
--- branches/SHM-5.0-dev/source/Lib/TLibCommon/TypeDef.h	(revision 551)
+++ branches/SHM-5.0-dev/source/Lib/TLibCommon/TypeDef.h	(revision 552)
@@ -53,5 +53,10 @@
 #define O0109_O0199_FLAGS_TO_VUI         1      ///< JCTVC-O0109, O0199: move single_layer_for_non_irap_flag and higher_layer_flag to vps_vui
 #define O0109_VIEW_ID_LEN                1      ///< JCTVC-O0109: view_id_len_minus1 to view_id_len, and add constraint (1<<view_id_len) is greater than or equal to NumViews
+
+#define P0048_REMOVE_PROFILE_REF         1      ///< JCTVC-P0048: remove profile_ref_minus1
+#if !P0048_REMOVE_PROFILE_REF
 #define O0109_PROF_REF_MINUS1            1      ///< JCTVC-O0109: constraint that profile_ref_minus1[i] shall be less than or equal to i
+#endif
+
 #define O0109_DEFAULT_ONE_OUT_LAYER_IDC  1      ///< JCTVC-O0109: default_one_target_output_layer_flag to default_one_target_output_layer_idc
 #define O0109_MOVE_VPS_VUI_FLAG          1      ///< JCTVC-O0109: move vps_vui_present_flag before vps_vui_offset
Index: branches/SHM-5.0-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp
===================================================================
--- branches/SHM-5.0-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 551)
+++ branches/SHM-5.0-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 552)
@@ -1194,4 +1194,8 @@
     if( !vps->getProfilePresentFlag(idx) )
     {
+#if P0048_REMOVE_PROFILE_REF
+      // Copy profile information from previous one
+      vps->getPTLForExtn(idx)->copyProfileInfo( (idx==1) ? vps->getPTL() : vps->getPTLForExtn( idx - 1 ) );
+#else
       READ_CODE( 6, uiCode, "profile_ref_minus1[i]" ); vps->setProfileLayerSetRef(idx, uiCode + 1);
 #if O0109_PROF_REF_MINUS1
@@ -1202,4 +1206,5 @@
       // Copy profile information as indicated
       vps->getPTLForExtn(idx)->copyProfileInfo( vps->getPTLForExtn( vps->getProfileLayerSetRef(idx) ) );
+#endif
     }
     parsePTL( vps->getPTLForExtn(idx), vps->getProfilePresentFlag(idx), vps->getMaxTLayers() - 1 );
Index: branches/SHM-5.0-dev/source/Lib/TLibEncoder/TEncCavlc.cpp
===================================================================
--- branches/SHM-5.0-dev/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 551)
+++ branches/SHM-5.0-dev/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 552)
@@ -955,8 +955,10 @@
   {
     WRITE_FLAG( vps->getProfilePresentFlag(idx),       "vps_profile_present_flag[i]" );
+#if !P0048_REMOVE_PROFILE_REF
     if( !vps->getProfilePresentFlag(idx) )
     {
       WRITE_CODE( vps->getProfileLayerSetRef(idx) - 1, 6, "profile_ref_minus1[i]" );
     }
+#endif
     codePTL( vps->getPTLForExtn(idx), vps->getProfilePresentFlag(idx), vps->getMaxTLayers() - 1 );
   }
