Index: /branches/SHM-dev/source/Lib/TLibDecoder/SyntaxElementParser.cpp
===================================================================
--- /branches/SHM-dev/source/Lib/TLibDecoder/SyntaxElementParser.cpp	(revision 1350)
+++ /branches/SHM-dev/source/Lib/TLibDecoder/SyntaxElementParser.cpp	(revision 1351)
@@ -104,4 +104,14 @@
 }
 
+Void  xTraceAccessUnitDelimiter ()
+{
+  fprintf( g_hTrace, "=========== Access Unit Delimiter ===========\n");
+}
+
+Void xTraceFillerData ()
+{
+  fprintf( g_hTrace, "=========== Filler Data ===========\n");
+}
+
 #if Q0096_OVERLAY_SEI
 Void  SyntaxElementParser::xReadStringTr        (UInt buSize, UChar *pValue, UInt& rLength, const Char *pSymbolName)
@@ -223,4 +233,48 @@
   TComCodingStatistics::IncrementStatisticEP(pSymbolName, 1, Int(ruiCode));
 #endif
+}
+
+Void SyntaxElementParser::xReadRbspTrailingBits()
+{
+  UInt bit;
+  READ_FLAG( bit, "rbsp_stop_one_bit");
+  assert (bit==1);
+  Int cnt = 0;
+  while (m_pcBitstream->getNumBitsUntilByteAligned())
+  {
+    READ_FLAG( bit, "rbsp_alignment_zero_bit");
+    assert (bit==0);
+    cnt++;
+  }
+  assert(cnt<8);
+}
+
+Void AUDReader::parseAccessUnitDelimiter(TComInputBitstream* bs, UInt &picType)
+{
+  setBitstream(bs);
+
+#if ENC_DEC_TRACE
+  xTraceAccessUnitDelimiter();
+#endif
+
+  READ_CODE (3, picType, "pic_type");
+  xReadRbspTrailingBits();
+}
+
+Void FDReader::parseFillerData(TComInputBitstream* bs, UInt &fdSize)
+{
+  setBitstream(bs);
+#if ENC_DEC_TRACE
+  xTraceFillerData();
+#endif
+  UInt ffByte;
+  fdSize = 0;
+  while( m_pcBitstream->getNumBitsLeft() >8 )
+  {
+    READ_CODE (8, ffByte, "ff_byte");
+    assert (ffByte==0xff);
+    fdSize++;
+  }
+  xReadRbspTrailingBits();
 }
 
Index: /branches/SHM-dev/source/Lib/TLibDecoder/SyntaxElementParser.h
===================================================================
--- /branches/SHM-dev/source/Lib/TLibDecoder/SyntaxElementParser.h	(revision 1350)
+++ /branches/SHM-dev/source/Lib/TLibDecoder/SyntaxElementParser.h	(revision 1351)
@@ -126,5 +126,25 @@
   Void  setBitstream ( TComInputBitstream* p )   { m_pcBitstream = p; }
   TComInputBitstream* getBitstream() { return m_pcBitstream; }
+
+protected:
+  Void xReadRbspTrailingBits();
 };
+
+class AUDReader: public SyntaxElementParser
+{
+public:
+  AUDReader() {};
+  virtual ~AUDReader() {};
+  Void parseAccessUnitDelimiter(TComInputBitstream* bs, UInt &picType);
+};
+
+class FDReader: public SyntaxElementParser
+{
+public:
+  FDReader() {};
+  virtual ~FDReader() {};
+  Void parseFillerData(TComInputBitstream* bs, UInt &fdSize);
+};
+
 
 //! \}
Index: /branches/SHM-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp
===================================================================
--- /branches/SHM-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 1350)
+++ /branches/SHM-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp	(revision 1351)
@@ -52,15 +52,20 @@
 #if ENC_DEC_TRACE
 
-Void  xTraceSPSHeader (const TComSPS *pSPS)
-{
-  fprintf( g_hTrace, "=========== Sequence Parameter Set ID: %d ===========\n", pSPS->getSPSId() );
-}
-
-Void  xTracePPSHeader (const TComPPS *pPPS)
-{
-  fprintf( g_hTrace, "=========== Picture Parameter Set ID: %d ===========\n", pPPS->getPPSId() );
-}
-
-Void  xTraceSliceHeader (const TComSlice *pSlice)
+Void  xTraceVPSHeader ()
+{
+  fprintf( g_hTrace, "=========== Video Parameter Set     ===========\n" );
+}
+
+Void  xTraceSPSHeader ()
+{
+  fprintf( g_hTrace, "=========== Sequence Parameter Set  ===========\n" );
+}
+
+Void  xTracePPSHeader ()
+{
+  fprintf( g_hTrace, "=========== Picture Parameter Set  ===========\n");
+}
+
+Void  xTraceSliceHeader ()
 {
   fprintf( g_hTrace, "=========== Slice ===========\n");
@@ -190,5 +195,5 @@
 {
 #if ENC_DEC_TRACE
-  xTracePPSHeader (pcPPS);
+  xTracePPSHeader ();
 #endif
   UInt  uiCode;
@@ -678,5 +683,5 @@
 {
 #if ENC_DEC_TRACE
-  xTraceSPSHeader (pcSPS);
+  xTraceSPSHeader ();
 #endif
 
@@ -1025,4 +1030,7 @@
 Void TDecCavlc::parseVPS(TComVPS* pcVPS)
 {
+#if ENC_DEC_TRACE
+  xTraceVPSHeader ();
+#endif
   UInt  uiCode;
 
@@ -1179,5 +1187,5 @@
 
 #if ENC_DEC_TRACE
-  xTraceSliceHeader(pcSlice);
+  xTraceSliceHeader();
 #endif
   TComPPS* pps = NULL;
Index: /branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp
===================================================================
--- /branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp	(revision 1350)
+++ /branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp	(revision 1351)
@@ -2070,6 +2070,11 @@
 
     case NAL_UNIT_ACCESS_UNIT_DELIMITER:
-      // TODO: process AU delimiter
-      return false;
+      {
+        AUDReader audReader;
+        UInt picType;
+        audReader.parseAccessUnitDelimiter(&(nalu.getBitstream()),picType);
+        printf ("Note: found NAL_UNIT_ACCESS_UNIT_DELIMITER\n");
+        return false;
+      }
 
     case NAL_UNIT_EOB:
@@ -2084,8 +2089,14 @@
 
     case NAL_UNIT_FILLER_DATA:
-#if SVC_EXTENSION
-      assert( m_isLastNALWasEos == false );
-#endif
-      return false;
+      {
+        FDReader fdReader;
+        UInt size;
+        fdReader.parseFillerData(&(nalu.getBitstream()),size);
+        printf ("Note: found NAL_UNIT_FILLER_DATA with %u bytes payload.\n", size);
+#if SVC_EXTENSION
+        assert( m_isLastNALWasEos == false );
+#endif
+        return false;
+      }
 
     case NAL_UNIT_RESERVED_VCL_N10:
Index: /branches/SHM-dev/source/Lib/TLibEncoder/TEncCavlc.cpp
===================================================================
--- /branches/SHM-dev/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 1350)
+++ /branches/SHM-dev/source/Lib/TLibEncoder/TEncCavlc.cpp	(revision 1351)
@@ -45,15 +45,20 @@
 #if ENC_DEC_TRACE
 
-Void  xTraceSPSHeader (const TComSPS *pSPS)
-{
-  fprintf( g_hTrace, "=========== Sequence Parameter Set ID: %d ===========\n", pSPS->getSPSId() );
-}
-
-Void  xTracePPSHeader (const TComPPS *pPPS)
-{
-  fprintf( g_hTrace, "=========== Picture Parameter Set ID: %d ===========\n", pPPS->getPPSId() );
-}
-
-Void  xTraceSliceHeader (const TComSlice *pSlice)
+Void  xTraceVPSHeader ()
+{
+  fprintf( g_hTrace, "=========== Video Parameter Set     ===========\n" );
+}
+
+Void  xTraceSPSHeader ()
+{
+  fprintf( g_hTrace, "=========== Sequence Parameter Set  ===========\n" );
+}
+
+Void  xTracePPSHeader ()
+{
+  fprintf( g_hTrace, "=========== Picture Parameter Set  ===========\n");
+}
+
+Void  xTraceSliceHeader ()
 {
   fprintf( g_hTrace, "=========== Slice ===========\n");
@@ -151,5 +156,5 @@
 {
 #if ENC_DEC_TRACE
-  xTracePPSHeader (pcPPS);
+  xTracePPSHeader ();
 #endif
 
@@ -533,5 +538,5 @@
 
 #if ENC_DEC_TRACE
-  xTraceSPSHeader (pcSPS);
+  xTraceSPSHeader ();
 #endif
   WRITE_CODE( pcSPS->getVPSId (),          4,       "sps_video_parameter_set_id" );
@@ -779,4 +784,7 @@
 Void TEncCavlc::codeVPS( const TComVPS* pcVPS )
 {
+#if ENC_DEC_TRACE
+  xTraceVPSHeader();
+#endif
   WRITE_CODE( pcVPS->getVPSId(),                    4,        "vps_video_parameter_set_id" );
 #if SVC_EXTENSION
@@ -892,5 +900,5 @@
 {
 #if ENC_DEC_TRACE
-  xTraceSliceHeader (pcSlice);
+  xTraceSliceHeader ();
 #endif
 
