Index: branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.cpp
===================================================================
--- branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 1031)
+++ branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.cpp	(revision 1037)
@@ -1688,4 +1688,15 @@
   ("SEIMasteringDisplayWhitePoint",                   cfg_DisplayWhitePointCode,     cfg_DisplayWhitePointCode, "Mastering display white point CIE xy coordinates in normalised increments of 1/50000 (e.g. 0.333 = 16667)")
     
+#if P0123_ALPHA_CHANNEL_SEI
+  ("SEIAlphaChannelInfo",                     m_alphaSEIEnabled,                        false, "Enables transmission of information associated with alpha channel (default : 0)")
+  ("SEIAlphaCancelFlag",                      m_alphaCancelFlag,                         true, "Denotes that this SEI message cancels the persistence of any previously received alpha channel SEI message (default : 1)")
+  ("SEIAlphaUseIdc",                          m_alphaUseIdc,                                2, "Denotes the use of the received alpha channel in final picture composition (e.g. pre-multiplied alpha, default : 2)")
+  ("SEIAlphaBitDepthMinus8",                  m_alphaBitDepthMinus8,                        0, "Denotes the bit depth associated with the received alpha channel (default : 0)")
+  ("SEIAlphaTransparentValue",                m_alphaTransparentValue,                      0, "Denotes the sample value which is considered transparent for alpha blending purposes (default : 0)")
+  ("SEIAlphaOpaqueValue",                     m_alphaOpaqueValue,                         255, "Denotes the sample value which is considered opaque for alpha blending purposes (default : 255)")
+  ("SEIAlphaIncrementFlag",                   m_alphaIncrementFlag,                     false, "Denotes whether the sample values should be incremented by one for the purposes of alpha blending (default : 0)")
+  ("SEIAlphaClipFlag",                        m_alphaClipFlag,                          false, "Denotes whether clipping is applied to the sample values (default : 0)")
+  ("SEIAlphaClipType",                        m_alphaClipTypeFlag,                      false, "Denotes the type of clipping applied to the sample values (0 = binary, 1 = linear, default : 0)")
+#endif
 #if Q0096_OVERLAY_SEI
   ("SEIOverlayInfo",                          m_overlaySEIEnabled,                      false, "Control generation of Selectable Overlays SEI messages")
@@ -4473,4 +4484,11 @@
   }
 
+#if P0123_ALPHA_CHANNEL_SEI
+  if( m_alphaSEIEnabled && !m_alphaCancelFlag )
+  {
+    xConfirmPara(0 < m_alphaUseIdc || m_alphaUseIdc > 2, "SEIAlphaUseIdc greater than 2 is reserved for future use by ITU-T | ISO/IEC");
+    xConfirmPara(m_alphaBitDepthMinus8 < 0 || m_alphaBitDepthMinus8 > 7, "SEIAlphaBitDepthMinus8 shall be in the range 0 to 7 inclusive");
+  }
+#endif
 #if Q0096_OVERLAY_SEI
   if( m_overlaySEIEnabled && !m_overlayInfoCancelFlag )
Index: branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.h
===================================================================
--- branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.h	(revision 1031)
+++ branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.h	(revision 1037)
@@ -436,5 +436,15 @@
   Int       m_layersNotPresentSEIEnabled;
 #endif
-
+#if P0123_ALPHA_CHANNEL_SEI
+  Bool      m_alphaSEIEnabled;
+  Bool      m_alphaCancelFlag;
+  Int       m_alphaUseIdc;
+  Int       m_alphaBitDepthMinus8;
+  Int       m_alphaTransparentValue;
+  Int       m_alphaOpaqueValue;
+  Bool      m_alphaIncrementFlag;
+  Bool      m_alphaClipFlag;
+  Bool      m_alphaClipTypeFlag;
+#endif
 #if SVC_EXTENSION
 #if FAST_INTRA_SHVC
Index: branches/SHM-dev/source/App/TAppEncoder/TAppEncTop.cpp
===================================================================
--- branches/SHM-dev/source/App/TAppEncoder/TAppEncTop.cpp	(revision 1031)
+++ branches/SHM-dev/source/App/TAppEncoder/TAppEncTop.cpp	(revision 1037)
@@ -612,4 +612,15 @@
     m_acTEncTop[layer].setKneeSEIOutputKneePoint                            ( m_kneeSEIOutputKneePoint );
     m_acTEncTop[layer].setMasteringDisplaySEI                               ( m_masteringDisplay );
+#if P0123_ALPHA_CHANNEL_SEI
+    m_acTEncTop[layer].setAlphaSEIEnabled                                   ( m_alphaSEIEnabled );
+    m_acTEncTop[layer].setAlphaCancelFlag                                   ( m_alphaCancelFlag );
+    m_acTEncTop[layer].setAlphaUseIdc                                       ( m_alphaUseIdc );
+    m_acTEncTop[layer].setAlphaBitDepthMinus8                               ( m_alphaBitDepthMinus8 );
+    m_acTEncTop[layer].setAlphaTransparentValue                             ( m_alphaTransparentValue );
+    m_acTEncTop[layer].setAlphaOpaqueValue                                  ( m_alphaOpaqueValue );
+    m_acTEncTop[layer].setAlphaIncrementFlag                                ( m_alphaIncrementFlag );
+    m_acTEncTop[layer].setAlphaClipFlag                                     ( m_alphaClipFlag );
+    m_acTEncTop[layer].setAlphaClipTypeFlag                                 ( m_alphaClipTypeFlag );
+#endif
 #if Q0096_OVERLAY_SEI
     m_acTEncTop[layer].setOverlaySEIEnabled                                 ( m_overlaySEIEnabled );
