diff --git a/source/Lib/CommonLib/HRD.h b/source/Lib/CommonLib/HRD.h
index b236a10b74d690b6f1a7f9bd897328f1c6055fee..290054c3b9fa77fd1fe69013ced09f616ed38553 100644
--- a/source/Lib/CommonLib/HRD.h
+++ b/source/Lib/CommonLib/HRD.h
@@ -163,6 +163,9 @@ class HRD
 public:
   HRD()
   :m_bufferingPeriodInitialized (false)
+#if JVET_Q0818_PT_SEI
+  , m_pictureTimingAvailable    (false)	
+#endif
   {};
 
   virtual ~HRD()
@@ -179,11 +182,20 @@ public:
   void                       setBufferingPeriodSEI(const SEIBufferingPeriod* bp)  { bp->copyTo(m_bufferingPeriodSEI); m_bufferingPeriodInitialized = true; }
   const SEIBufferingPeriod*  getBufferingPeriodSEI() const                        { return m_bufferingPeriodInitialized ? &m_bufferingPeriodSEI : nullptr; }
 
+#if JVET_Q0818_PT_SEI
+  void                       setPictureTimingSEI(const SEIPictureTiming* pt)  { pt->copyTo(m_pictureTimingSEI); m_pictureTimingAvailable = true; }
+  const SEIPictureTiming*    getPictureTimingSEI() const                      { return m_pictureTimingAvailable ? &m_pictureTimingSEI : nullptr; }
+#endif
+
 protected:
   HRDParameters m_hrdParams;
   TimingInfo    m_timingInfo;
   bool               m_bufferingPeriodInitialized;
   SEIBufferingPeriod m_bufferingPeriodSEI;
+#if JVET_Q0818_PT_SEI
+  bool               m_pictureTimingAvailable;
+  SEIPictureTiming   m_pictureTimingSEI;
+#endif
 };
 
 #endif //__HRD__
diff --git a/source/Lib/CommonLib/SEI.h b/source/Lib/CommonLib/SEI.h
index a214052564b2c582c38f8d2fd461bce7b134ee78..6a70e9d17140ae08553609d299cc61ce7856cad3 100644
--- a/source/Lib/CommonLib/SEI.h
+++ b/source/Lib/CommonLib/SEI.h
@@ -355,6 +355,9 @@ public:
   , m_cpbAltTimingInfoPresentFlag (false)
   , m_cpbDelayOffset (0)
   , m_dpbDelayOffset (0)
+#if JVET_Q0818_PT_SEI
+  , m_ptDisplayElementalPeriodsMinus1(0)
+#endif
   {
     ::memset(m_ptSubLayerDelaysPresentFlag, 0, sizeof(m_ptSubLayerDelaysPresentFlag));
     ::memset(m_duCommonCpbRemovalDelayMinus1, 0, sizeof(m_duCommonCpbRemovalDelayMinus1));
@@ -383,6 +386,9 @@ public:
   std::vector<uint32_t> m_cpbAltInitialCpbRemovalOffsetDelta;
   uint32_t m_cpbDelayOffset;
   uint32_t m_dpbDelayOffset;
+#if JVET_Q0818_PT_SEI
+  int m_ptDisplayElementalPeriodsMinus1;
+#endif
 };
 
 class SEIDecodingUnitInfo : public SEI
diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index 648f914518f10fe199f8c765ed5e518f3a9529fb..95b03094ea762df878ac5fc6e1e98557d0a145b5 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -64,6 +64,8 @@
 
 #define JVET_Q0043_RPR_and_Subpics                        1 // JVET-Q0043: Disallow for both RPR and subpics to be used together
 
+#define JVET_Q0818_PT_SEI                                 1 // JVET-Q0818: add display_elemental_periods_minus1 to picture timing SEI message
+
 #define JVET_Q0110_Q0785_CHROMA_BDPCM_420                 1 // JVET-Q0110/Q0785: Enable chroma BDPCM for 420, separate contexts for chroma BDPCM and bug-fixes.
 
 #define JVET_Q0512_ENC_CHROMA_TS_ACT                      1 // JVET-Q0512: encoder-side improvement on enabling chroma transform-skip for ACT
diff --git a/source/Lib/DecoderLib/SEIread.cpp b/source/Lib/DecoderLib/SEIread.cpp
index f69dff292f77bae5f6b8918a117893ab5d3be481..d37f23cedc8c63d78920da209b46914ffa26c9d3 100644
--- a/source/Lib/DecoderLib/SEIread.cpp
+++ b/source/Lib/DecoderLib/SEIread.cpp
@@ -169,6 +169,9 @@ void SEIReader::xReadSEImessage(SEIMessages& seis, const NalUnitType nalUnitType
 
   SEI *sei = NULL;
   const SEIBufferingPeriod *bp = NULL;
+#if JVET_Q0818_PT_SEI
+  const SEIPictureTiming *pt = NULL;
+#endif
 
   if(nalUnitType == NAL_UNIT_PREFIX_SEI)
   {
@@ -206,12 +209,20 @@ void SEIReader::xReadSEImessage(SEIMessages& seis, const NalUnitType nalUnitType
         {
           sei = new SEIPictureTiming;
           xParseSEIPictureTiming((SEIPictureTiming&)*sei, payloadSize, temporalId, *bp, pDecodedMessageOutputStream);
+#if JVET_Q0818_PT_SEI
+          hrd.setPictureTimingSEI( (SEIPictureTiming*) sei );
+#endif
         }
       }
       break;
     case SEI::FRAME_FIELD_INFO:
       sei = new SEIFrameFieldInfo;
+#if JVET_Q0818_PT_SEI
+      pt = hrd.getPictureTimingSEI();
+      xParseSEIFrameFieldinfo((SEIFrameFieldInfo&) *sei, *pt, payloadSize, pDecodedMessageOutputStream);
+#else
       xParseSEIFrameFieldinfo((SEIFrameFieldInfo&) *sei, payloadSize, pDecodedMessageOutputStream);
+#endif
       break;
     case SEI::DEPENDENT_RAP_INDICATION:
       sei = new SEIDependentRAPIndication;
@@ -695,9 +706,17 @@ void SEIReader::xParseSEIPictureTiming(SEIPictureTiming& sei, uint32_t payloadSi
       }
     }
   }
+#if JVET_Q0818_PT_SEI
+  sei_read_uvlc( pDecodedMessageOutputStream, symbol,    "pt_display_elemental_periods_minus1" );
+  sei.m_ptDisplayElementalPeriodsMinus1 = symbol;
+#endif
 }
 
+#if JVET_Q0818_PT_SEI
+void SEIReader::xParseSEIFrameFieldinfo(SEIFrameFieldInfo& sei, const SEIPictureTiming& pt, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream)
+#else
 void SEIReader::xParseSEIFrameFieldinfo(SEIFrameFieldInfo& sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream)
+#endif
 {
   output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize);
 
@@ -727,6 +746,10 @@ void SEIReader::xParseSEIFrameFieldinfo(SEIFrameFieldInfo& sei, uint32_t payload
     }
     sei_read_uvlc( pDecodedMessageOutputStream, symbol,    "display_elemental_periods_minus1" );
     sei.m_displayElementalPeriodsMinus1 = symbol;
+#if JVET_Q0818_PT_SEI
+    if( pt.m_ptDisplayElementalPeriodsMinus1 != sei.m_displayElementalPeriodsMinus1 )
+      msg( WARNING, "Warning: display_elemental_periods_minus1 is different in picture timing and frame field information SEI messages!");
+#endif
   }
   sei_read_code( pDecodedMessageOutputStream, 2, symbol,   "source_scan_type" );
   sei.m_sourceScanType = symbol;
diff --git a/source/Lib/DecoderLib/SEIread.h b/source/Lib/DecoderLib/SEIread.h
index 50988f70cfb87855d24968517629bfbe2b155f5e..600d6836df6ffc8e0f9fecd7104ad33680cc4ea9 100644
--- a/source/Lib/DecoderLib/SEIread.h
+++ b/source/Lib/DecoderLib/SEIread.h
@@ -64,7 +64,11 @@ protected:
   void xParseSEIDecodedPictureHash            (SEIDecodedPictureHash& sei,            uint32_t payloadSize,                     std::ostream *pDecodedMessageOutputStream);
   void xParseSEIBufferingPeriod               (SEIBufferingPeriod& sei,               uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream);
   void xParseSEIPictureTiming                 (SEIPictureTiming& sei,                 uint32_t payloadSize, const uint32_t temporalId, const SEIBufferingPeriod& bp, std::ostream *pDecodedMessageOutputStream);
+#if JVET_Q0818_PT_SEI
+  void xParseSEIFrameFieldinfo                (SEIFrameFieldInfo& sei, const SEIPictureTiming& pt, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream);
+#else
   void xParseSEIFrameFieldinfo                (SEIFrameFieldInfo& sei,                 uint32_t payloadSize,                    std::ostream *pDecodedMessageOutputStream);
+#endif
   void xParseSEIDependentRAPIndication        (SEIDependentRAPIndication& sei,        uint32_t payLoadSize,                     std::ostream *pDecodedMessageOutputStream);
   void xParseSEIFramePacking                  (SEIFramePacking& sei,                  uint32_t payloadSize,                     std::ostream *pDecodedMessageOutputStream);
   void xParseSEIMasteringDisplayColourVolume  (SEIMasteringDisplayColourVolume& sei,  uint32_t payloadSize,                     std::ostream *pDecodedMessageOutputStream);
diff --git a/source/Lib/EncoderLib/SEIwrite.cpp b/source/Lib/EncoderLib/SEIwrite.cpp
index 67f80ebcd343b1ccc0213628b09f410f54269666..cf34d2b0a6e2269fc121bb44b4706441a24ed5a0 100644
--- a/source/Lib/EncoderLib/SEIwrite.cpp
+++ b/source/Lib/EncoderLib/SEIwrite.cpp
@@ -400,6 +400,9 @@ void SEIWriter::xWriteSEIPictureTiming(const SEIPictureTiming& sei, const SEIBuf
       }
     }
   }
+#if JVET_Q0818_PT_SEI
+  WRITE_UVLC( sei.m_ptDisplayElementalPeriodsMinus1,          "pt_display_elemental_periods_minus1" );
+#endif
 }
 
 void SEIWriter::xWriteSEIFrameFieldInfo(const SEIFrameFieldInfo& sei)