<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Tue, Sep 18, 2018 at 4:35 PM <<a href="mailto:ashok@multicorewareinc.com">ashok@multicorewareinc.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"># HG changeset patch<br>
# User Ashok Kumar Mishra <<a href="mailto:ashok@multicorewareinc.com" target="_blank">ashok@multicorewareinc.com</a>><br>
# Date 1537268644 -19800<br>
#      Tue Sep 18 16:34:04 2018 +0530<br>
# Node ID f3c175d92ec248fc6b3388c6f70c1f3ea365d539<br>
# Parent  6426e22f479f10a07d606119dede0da844fb5015<br>
Cleanup SEI code<br>
<br>
diff -r 6426e22f479f -r f3c175d92ec2 source/common/param.cpp<br>
--- a/source/common/param.cpp   Tue Sep 18 16:34:04 2018 +0530<br>
+++ b/source/common/param.cpp   Tue Sep 18 16:34:04 2018 +0530<br>
@@ -1415,9 +1415,16 @@<br>
     if (param->masteringDisplayColorVolume || param->maxFALL || param->maxCLL)<br>
         param->bEmitHDRSEI = 1;<br>
<br>
-    bool isSingleSEI = ((param->bEmitHRDSEI || param->bEmitInfoSEI || param->decodedPictureHashSEI ||<br>
-                         param->masteringDisplayColorVolume || param->maxCLL || param->maxFALL || <br>
-                         param->bEmitHDRSEI || param->bEmitIDRRecoverySEI));<br>
+    bool isSingleSEI = (param->bRepeatHeaders<br>
+                     || param->bEmitHRDSEI<br>
+                     || param->bEmitInfoSEI<br>
+                     || param->bEmitHDRSEI<br>
+                     || param->bEmitIDRRecoverySEI<br>
+                   || !!param->interlaceMode<br>
+                     || param->preferredTransferCharacteristics > 1<br>
+                     || param->toneMapFile<br>
+                     || param->naluFile);<br>
+<br>
     if (!isSingleSEI && param->bSingleSeiNal)<br>
     {<br>
         param->bSingleSeiNal = 0;<br>
diff -r 6426e22f479f -r f3c175d92ec2 source/encoder/encoder.cpp<br>
--- a/source/encoder/encoder.cpp        Tue Sep 18 16:34:04 2018 +0530<br>
+++ b/source/encoder/encoder.cpp        Tue Sep 18 16:34:04 2018 +0530<br>
@@ -2374,27 +2374,22 @@<br>
     sbacCoder.codePPS(m_pps, (m_param->maxSlices <= 1), m_iPPSQpMinus26);<br>
     bs.writeByteAlignment();<br>
     list.serialize(NAL_UNIT_PPS, bs);<br>
+<br>
     if (m_param->bSingleSeiNal)<br>
         bs.resetBits();<br>
+<br>
     if (m_param->bEmitHDRSEI)<br>
     {<br>
         SEIContentLightLevel cllsei;<br>
         cllsei.max_content_light_level = m_param->maxCLL;<br>
         cllsei.max_pic_average_light_level = m_param->maxFALL;<br>
-        if (!m_param->bSingleSeiNal)<br>
-            bs.resetBits();<br>
-        cllsei.write(bs, m_sps);<br>
-        cllsei.alignAndSerialize(bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, list);<br>
+        cllsei.writeSEImessages(bs, m_sps, NAL_UNIT_PREFIX_SEI, list, m_param->bSingleSeiNal);<br>
+<br>
         if (m_param->masteringDisplayColorVolume)<br>
         {<br>
             SEIMasteringDisplayColorVolume mdsei;<br>
             if (mdsei.parse(m_param->masteringDisplayColorVolume))<br>
-            {<br>
-                if (!m_param->bSingleSeiNal)<br>
-                    bs.resetBits();<br>
-                mdsei.write(bs, m_sps);<br>
-                mdsei.alignAndSerialize(bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, list);<br>
-            }<br>
+                mdsei.writeSEImessages(bs, m_sps, NAL_UNIT_PREFIX_SEI, list, m_param->bSingleSeiNal);<br>
             else<br>
                 x265_log(m_param, X265_LOG_WARNING, "unable to parse mastering display color volume info\n");<br>
         }<br>
@@ -2413,13 +2408,12 @@<br>
                     "Copyright 2013-2018 (c) Multicoreware, Inc - "<br>
                     "<a href="http://x265.org" rel="noreferrer" target="_blank">http://x265.org</a> - options: %s",<br>
                     X265_BUILD, PFX(version_str), PFX(build_info_str), opts);<br>
-                if (!m_param->bSingleSeiNal)<br>
-                    bs.resetBits();<br>
+<br>
                 SEIuserDataUnregistered idsei;<br>
                 idsei.m_userData = (uint8_t*)buffer;<br>
                 idsei.setSize((uint32_t)strlen(buffer));<br>
-                idsei.write(bs, m_sps);<br>
-                idsei.alignAndSerialize(bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, list);<br>
+                idsei.writeSEImessages(bs, m_sps, NAL_UNIT_PREFIX_SEI, list, m_param->bSingleSeiNal);<br>
+<br>
                 X265_FREE(buffer);<br>
             }<br>
<br>
@@ -2433,12 +2427,7 @@<br>
         SEIActiveParameterSets sei;<br>
         sei.m_selfContainedCvsFlag = true;<br>
         sei.m_noParamSetUpdateFlag = true;<br>
-        if (!m_param->bSingleSeiNal)<br>
-            bs.resetBits();<br>
-        int payloadSize = sei.countPayloadSize(m_sps);<br>
-        sei.setSize(payloadSize);<br>
-        sei.write(bs, m_sps);<br>
-        sei.alignAndSerialize(bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, list);<br>
+        sei.writeSEImessages(bs, m_sps, NAL_UNIT_PREFIX_SEI, list, m_param->bSingleSeiNal);<br>
     }<br>
 }<br>
<br>
@@ -2521,7 +2510,7 @@<br>
     vui.defaultDisplayWindow.bottomOffset = m_param->vui.defDispWinBottomOffset;<br>
     vui.defaultDisplayWindow.leftOffset = m_param->vui.defDispWinLeftOffset;<br>
<br>
-       vui.frameFieldInfoPresentFlag = !!m_param->interlaceMode || (m_param->pictureStructure >= 0);<br>
+    vui.frameFieldInfoPresentFlag = !!m_param->interlaceMode || (m_param->pictureStructure >= 0);<br>
     vui.fieldSeqFlag = !!m_param->interlaceMode;<br>
<br>
     vui.hrdParametersPresentFlag = m_param->bEmitHRDSEI;<br>
diff -r 6426e22f479f -r f3c175d92ec2 source/encoder/frameencoder.cpp<br>
--- a/source/encoder/frameencoder.cpp   Tue Sep 18 16:34:04 2018 +0530<br>
+++ b/source/encoder/frameencoder.cpp   Tue Sep 18 16:34:04 2018 +0530<br>
@@ -365,6 +365,33 @@<br>
     return length;<br>
 }<br>
<br>
+bool FrameEncoder::writeToneMapInfo(x265_sei_payload *payload)<br>
+{<br>
+    bool payloadChange = false;<br>
+    if (m_top->m_prevTonemapPayload.payload != NULL && payload->payloadSize == m_top->m_prevTonemapPayload.payloadSize)<br>
+    {<br>
+        if (memcmp(m_top->m_prevTonemapPayload.payload, payload->payload, payload->payloadSize) != 0)<br>
+            payloadChange = true;<br>
+    }<br>
+    else<br>
+    {<br>
+        payloadChange = true;<br>
+        if (m_top->m_prevTonemapPayload.payload != NULL)<br>
+            x265_free(m_top->m_prevTonemapPayload.payload);<br>
+        m_top->m_prevTonemapPayload.payload = (uint8_t*)x265_malloc(sizeof(uint8_t)* payload->payloadSize);<br>
+    }<br>
+<br>
+    if (payloadChange)<br>
+    {<br>
+        m_top->m_prevTonemapPayload.payloadType = payload->payloadType;<br>
+        m_top->m_prevTonemapPayload.payloadSize = payload->payloadSize;<br>
+        memcpy(m_top->m_prevTonemapPayload.payload, payload->payload, payload->payloadSize);<br>
+    }<br>
+<br>
+    bool isIDR = m_frame->m_lowres.sliceType == X265_TYPE_IDR;<br>
+    return (payloadChange || isIDR);<br>
+}<br>
+<br>
 void FrameEncoder::writeTrailingSEIMessages()<br>
 {<br>
     Slice* slice = m_frame->m_encData->m_slice;<br>
@@ -393,10 +420,8 @@<br>
         payloadSize = 1 + 4 * planes;<br>
     }<br>
<br>
-    m_bs.resetBits();<br>
     m_seiReconPictureDigest.setSize(payloadSize);<br>
-    m_seiReconPictureDigest.write(m_bs, *slice->m_sps);<br>
-    m_seiReconPictureDigest.alignAndSerialize(m_bs, true, m_param->bSingleSeiNal, NAL_UNIT_SUFFIX_SEI, m_nalList);<br>
+    m_seiReconPictureDigest.writeSEImessages(m_bs, *slice->m_sps, NAL_UNIT_SUFFIX_SEI, m_nalList, false);<br>
 }<br>
<br>
 void FrameEncoder::compressFrame()<br>
@@ -496,9 +521,7 @@<br>
                 wa.waitForExit();<br>
             else<br>
                 weightAnalyse(*slice, *m_frame, *m_param);<br>
-<br>
         }<br>
-<br>
     }<br>
     else<br>
         slice->disableWeights();<br>
@@ -670,12 +693,7 @@<br>
             bpSei->m_dpbDelayOffset = 0;<br>
             // hrdFullness() calculates the initial CPB removal delay and offset<br>
             m_top->m_rateControl->hrdFullness(bpSei);<br>
-            if (!m_param->bSingleSeiNal)<br>
-                m_bs.resetBits();<br>
-            int payloadSize = bpSei->countPayloadSize(*slice->m_sps);<br>
-            bpSei->setSize(payloadSize);<br>
-            bpSei->write(m_bs, *slice->m_sps);<br>
-            bpSei->alignAndSerialize(m_bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, m_nalList);<br>
+            bpSei->writeSEImessages(m_bs, *slice->m_sps, NAL_UNIT_PREFIX_SEI, m_nalList, m_param->bSingleSeiNal);<br>
<br>
             m_top->m_lastBPSEI = m_rce.encodeOrder;<br>
         }<br>
@@ -687,11 +705,7 @@<br>
             sei.m_recoveryPocCnt = 0;<br>
             sei.m_exactMatchingFlag = true;<br>
             sei.m_brokenLinkFlag = false;<br>
-            if (!m_param->bSingleSeiNal)<br>
-                m_bs.resetBits();<br>
-            sei.setSize(sei.countPayloadSize(*slice->m_sps));<br>
-            sei.write(m_bs, *slice->m_sps);<br>
-            sei.alignAndSerialize(m_bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, m_nalList);<br>
+            sei.writeSEImessages(m_bs, *slice->m_sps, NAL_UNIT_PREFIX_SEI, m_nalList, m_param->bSingleSeiNal);<br>
         }<br>
     }<br>
<br>
@@ -711,10 +725,7 @@<br>
             else<br>
                 sei->m_picStruct = m_param->pictureStructure;<br>
<br>
-            if (m_param->interlaceMode)<br>
-                sei->m_sourceScanType = 0;<br>
-            else<br>
-                sei->m_sourceScanType = 1;<br>
+            sei->m_sourceScanType = m_param->interlaceMode ? 0 : 1;<br>
<br>
             sei->m_duplicateFlag = false;<br>
         }<br>
@@ -728,26 +739,17 @@<br>
             sei->m_auCpbRemovalDelay = X265_MIN(X265_MAX(1, m_rce.encodeOrder - prevBPSEI), (1 << hrd->cpbRemovalDelayLength));<br>
             sei->m_picDpbOutputDelay = slice->m_sps->numReorderPics + poc - m_rce.encodeOrder;<br>
         }<br>
-        if (!m_param->bSingleSeiNal)<br>
-            m_bs.resetBits();<br>
-        int payloadSize = sei->countPayloadSize(*slice->m_sps);<br>
-        sei->setSize(payloadSize);<br>
-        sei->write(m_bs, *slice->m_sps);<br>
-        sei->alignAndSerialize(m_bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, m_nalList);<br>
+<br>
+        sei->writeSEImessages(m_bs, *slice->m_sps, NAL_UNIT_PREFIX_SEI, m_nalList, m_param->bSingleSeiNal);<br>
     }<br>
<br>
     if (m_param->preferredTransferCharacteristics > -1 && slice->isIRAP())<br>
     {<br>
         SEIAlternativeTC m_seiAlternativeTC;<br>
         m_seiAlternativeTC.m_preferredTransferCharacteristics = m_param->preferredTransferCharacteristics;<br>
-        m_bs.resetBits();<br>
-        int payloadSize = m_seiAlternativeTC.countPayloadSize(*slice->m_sps);<br>
-        m_seiAlternativeTC.setSize(payloadSize);<br>
-        m_seiAlternativeTC.write(m_bs, *slice->m_sps);<br>
-        m_seiAlternativeTC.alignAndSerialize(m_bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, m_nalList);<br>
+        m_seiAlternativeTC.writeSEImessages(m_bs, *slice->m_sps, NAL_UNIT_PREFIX_SEI, m_nalList, m_param->bSingleSeiNal);<br>
     }<br>
<br>
-    bool isSei = false;<br>
     /* Write user SEI */<br>
     for (int i = 0; i < m_frame->m_userSEI.numPayloads; i++)<br>
     {<br>
@@ -756,33 +758,27 @@<br>
         {<br>
             SEIuserDataUnregistered sei;<br>
             sei.m_userData = payload->payload;<br>
-            if (!m_param->bSingleSeiNal)<br>
-                m_bs.resetBits();<br>
             sei.setSize(payload->payloadSize);<br>
-            sei.write(m_bs, *slice->m_sps);<br>
-            sei.alignAndSerialize(m_bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, m_nalList);<br>
-            isSei = true;<br>
+            sei.writeSEImessages(m_bs, *slice->m_sps, NAL_UNIT_PREFIX_SEI, m_nalList, m_param->bSingleSeiNal);<br>
         }<br>
         else if (payload->payloadType == USER_DATA_REGISTERED_ITU_T_T35)<br>
         {<br>
+            bool writeSei = m_param->bDhdr10opt ? writeToneMapInfo(payload) : true;<br>
             if (writeSei)<br>
             {<br>
-                SEICreativeIntentMeta sei;<br>
-                sei.m_payload = payload->payload;<br>
-                if (!m_param->bSingleSeiNal)<br>
-                    m_bs.resetBits();<br>
+                SEIuserDataRegistered sei;<br>
+                sei.m_userData = payload->payload;<br>
                 sei.setSize(payload->payloadSize);<br>
-                sei.write(m_bs, *slice->m_sps);<br>
-                sei.alignAndSerialize(m_bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, m_nalList);<br>
-                isSei = true;<br>
+                sei.writeSEImessages(m_bs, *slice->m_sps, NAL_UNIT_PREFIX_SEI, m_nalList, m_param->bSingleSeiNal);<br>
             }<br>
         }<br>
         else<br>
             x265_log(m_param, X265_LOG_ERROR, "Unrecognized SEI type\n");<br>
     }<br>
<br>
-    isSei |= ((m_frame->m_lowres.bKeyframe && m_param->bRepeatHeaders) || m_param->bEmitHRDSEI ||<br>
-             !!m_param->interlaceMode || (m_frame->m_lowres.sliceType == X265_TYPE_IDR && m_param->bEmitIDRRecoverySEI));<br>
+    bool isSei = ((m_frame->m_lowres.bKeyframe && m_param->bRepeatHeaders) || m_param->bEmitHRDSEI ||<br>
+                 !!m_param->interlaceMode || (m_frame->m_lowres.sliceType == X265_TYPE_IDR && m_param->bEmitIDRRecoverySEI) ||<br>
+                   m_frame->m_userSEI.numPayloads);<br>
<br>
     if (isSei && m_param->bSingleSeiNal)<br>
     {<br>
@@ -1061,10 +1057,8 @@<br>
<br>
         m_nalList.serialize(slice->m_nalUnitType, m_bs);<br>
     }<br>
-    if (isSei && m_param->bSingleSeiNal)<br>
-        m_bs.resetBits();<br>
<br>
-    if (m_param->decodedPictureHashSEI)    <br>
+    if (m_param->decodedPictureHashSEI)<br>
         writeTrailingSEIMessages();<br>
<br>
     uint64_t bytes = 0;<br>
diff -r 6426e22f479f -r f3c175d92ec2 source/encoder/frameencoder.h<br>
--- a/source/encoder/frameencoder.h     Tue Sep 18 16:34:04 2018 +0530<br>
+++ b/source/encoder/frameencoder.h     Tue Sep 18 16:34:04 2018 +0530<br>
@@ -230,6 +230,7 @@<br>
     int  collectCTUStatistics(const CUData& ctu, FrameStats* frameLog);<br>
     void noiseReductionUpdate();<br>
     void writeTrailingSEIMessages();<br>
+    bool writeToneMapInfo(x265_sei_payload *payload);<br>
<br>
     /* Called by WaveFront::findJob() */<br>
     virtual void processRow(int row, int threadId);<br>
diff -r 6426e22f479f -r f3c175d92ec2 source/encoder/sei.cpp<br>
--- a/source/encoder/sei.cpp    Tue Sep 18 16:34:04 2018 +0530<br>
+++ b/source/encoder/sei.cpp    Tue Sep 18 16:34:04 2018 +0530<br>
@@ -33,46 +33,44 @@<br>
     0x2C, 0xA2, 0xDE, 0x09, 0xB5, 0x17, 0x47, 0xDB,<br>
     0xBB, 0x55, 0xA4, 0xFE, 0x7F, 0xC2, 0xFC, 0x4E<br>
 };<br>
-/* count the size of the payload and return the size in bits */<br>
-int SEI::countPayloadSize(const SPS& sps)<br>
+<br>
+/* marshal a single SEI message sei, storing the marshalled representation<br>
+* in bitstream bs */<br>
+void SEI::writeSEImessages(Bitstream& bs, const SPS& sps, NalUnitType nalUnitType, NALList& list, int isNested)<br>
 {<br>
+    if (!isNested)<br>
+        bs.resetBits();<br>
+<br>
     BitCounter counter;<br>
     m_bitIf = &counter;<br>
     writeSEI(sps);<br>
+    /* count the size of the payload and return the size in bits */<br>
     X265_CHECK(0 == (counter.getNumberOfWrittenBits() & 7), "payload unaligned\n");<br>
-    int count = counter.getNumberOfWrittenBits() >> 3;<br>
-    return count;<br>
-}<br>
+    uint32_t payloadData = counter.getNumberOfWrittenBits() >> 3;<br>
<br>
-void SEI::alignAndSerialize(Bitstream& bs, int lastSei, int isSingleSei, NalUnitType nalUnitType, NALList& list)<br>
-{<br>
-    if (lastSei || !isSingleSei)<br>
+    // set bitstream<br>
+    m_bitIf = &bs;<br>
+<br>
+    uint32_t payloadType = m_payloadType;<br>
+    for (; payloadType >= 0xff; payloadType -= 0xff)<br>
+        WRITE_CODE(0xff, 8, "payload_type");<br>
+    WRITE_CODE(payloadType, 8, "payload_type");<br>
+<br>
+    uint32_t payloadSize = payloadData;<br>
+    for (; payloadSize >= 0xff; payloadSize -= 0xff)<br>
+        WRITE_CODE(0xff, 8, "payload_size");<br>
+    WRITE_CODE(payloadSize, 8, "payload_size");<br>
+<br>
+    // virtual writeSEI method, write to bs <br>
+    writeSEI(sps);<br>
+<br>
+    if (!isNested)<br>
     {<br>
         bs.writeByteAlignment();<br>
         list.serialize(nalUnitType, bs);<br>
     }<br>
 }<br>
<br>
-/* marshal a single SEI message sei, storing the marshalled representation<br>
- * in bitstream bs */<br>
-void SEI::write(Bitstream& bs, const SPS& sps)<br>
-{<br>
-    uint32_t type = m_payloadType;<br>
-    m_bitIf = &bs;<br>
-    uint32_t payloadSize = m_payloadSize;<br>
-    if (m_payloadType == USER_DATA_UNREGISTERED)<br>
-        payloadSize = m_payloadSize + 16;<br>
-    uint32_t payloadType = m_payloadType;<br>
-    for (; payloadType >= 0xff; payloadType -= 0xff)<br>
-        WRITE_CODE(0xff, 8, "payload_type");<br>
-    WRITE_CODE(type, 8, "payload_type");<br>
-    for (; payloadSize >= 0xff; payloadSize -= 0xff)<br>
-        WRITE_CODE(0xff, 8, "payload_size");<br>
-    WRITE_CODE(payloadSize, 8, "payload_size");<br>
-    /* virtual writeSEI method, write to bs */<br>
-    writeSEI(sps);<br>
-}<br>
-<br>
 void SEI::writeByteAlign()<br>
 {<br>
     // TODO: expose bs.writeByteAlignment() as virtual function<br>
diff -r 6426e22f479f -r f3c175d92ec2 source/encoder/sei.h<br>
--- a/source/encoder/sei.h      Tue Sep 18 16:34:04 2018 +0530<br>
+++ b/source/encoder/sei.h      Tue Sep 18 16:34:04 2018 +0530<br>
@@ -36,11 +36,9 @@<br>
 class SEI : public SyntaxElementWriter<br>
 {<br>
 public:<br>
-    /* SEI users call write() to marshal an SEI to a bitstream.<br>
-     * The write() method calls writeSEI() which encodes the header */<br>
-    void write(Bitstream& bs, const SPS& sps);<br>
-    void alignAndSerialize(Bitstream& bs, int lastSei, int isSingleSei, NalUnitType nalUnitType, NALList& list);<br>
-    int countPayloadSize(const SPS& sps);<br>
+    /* SEI users call writeSEImessages() to marshal an SEI to a bitstream.<br>
+    * The writeSEImessages() method calls writeSEI() which encodes the header */<br>
+    void writeSEImessages(Bitstream& bs, const SPS& sps, NalUnitType nalUnitType, NALList& list, int isNested);<br>
     void setSize(uint32_t size);<br>
     static char* base64Decode(char encodedString[], int base64EncodeLength);<br>
     virtual ~SEI() {}<br>
@@ -51,6 +49,32 @@<br>
     void writeByteAlign();<br>
 };<br>
<br>
+//<a href="mailto:seongnam.oh@samsung.com" target="_blank">seongnam.oh@samsung.com</a> :: for the Creative Intent Meta Data Encoding<br>
+class SEIuserDataRegistered : public SEI<br>
+{<br>
+public:<br>
+    SEIuserDataRegistered()<br>
+    {<br>
+        m_payloadType = USER_DATA_REGISTERED_ITU_T_T35;<br>
+        m_payloadSize = 0;<br>
+    }<br>
+<br>
+    uint8_t *m_userData;<br>
+<br>
+    // <a href="mailto:daniel.vt@samsung.com" target="_blank">daniel.vt@samsung.com</a> :: for the Creative Intent Meta Data Encoding ( <a href="mailto:seongnam.oh@samsung.com" target="_blank">seongnam.oh@samsung.com</a> )<br>
+    void writeSEI(const SPS&)<br>
+    {<br>
+        if (!m_userData)<br>
+            return;<br>
+<br>
+        uint32_t i = 0;<br>
+        for (; i < m_payloadSize; ++i)<br>
+            WRITE_CODE(m_userData[i], 8, "creative_intent_metadata");<br>
+    }<br>
+};<br>
+<br>
+static const uint32_t ISO_IEC_11578_LEN = 16;<br>
+<br>
 class SEIuserDataUnregistered : public SEI<br>
 {<br>
 public:<br>
@@ -59,11 +83,11 @@<br>
         m_payloadType = USER_DATA_UNREGISTERED;<br>
         m_payloadSize = 0;<br>
     }<br>
-    static const uint8_t m_uuid_iso_iec_11578[16];<br>
+    static const uint8_t m_uuid_iso_iec_11578[ISO_IEC_11578_LEN];<br>
     uint8_t *m_userData;<br>
     void writeSEI(const SPS&)<br>
     {<br>
-        for (uint32_t i = 0; i < 16; i++)<br>
+        for (uint32_t i = 0; i < ISO_IEC_11578_LEN; i++)<br>
             WRITE_CODE(m_uuid_iso_iec_11578[i], 8, "sei.uuid_iso_iec_11578[i]");<br>
         for (uint32_t i = 0; i < m_payloadSize; i++)<br>
             WRITE_CODE(m_userData[i], 8, "user_data");<br>
@@ -280,45 +304,21 @@<br>
     }<br>
 };<br>
<br>
-//<a href="mailto:seongnam.oh@samsung.com" target="_blank">seongnam.oh@samsung.com</a> :: for the Creative Intent Meta Data Encoding<br>
-class SEICreativeIntentMeta : public SEI<br>
-{<br>
-public:<br>
-    SEICreativeIntentMeta()<br>
-    {<br>
-        m_payloadType = USER_DATA_REGISTERED_ITU_T_T35;<br>
-        m_payloadSize = 0;<br>
-    }<br>
-<br>
-    uint8_t *m_payload;<br>
-<br>
-    // <a href="mailto:daniel.vt@samsung.com" target="_blank">daniel.vt@samsung.com</a> :: for the Creative Intent Meta Data Encoding ( <a href="mailto:seongnam.oh@samsung.com" target="_blank">seongnam.oh@samsung.com</a> )<br>
-    void writeSEI(const SPS&)<br>
-    {<br>
-        if (!m_payload)<br>
-            return;<br>
-<br>
-        uint32_t i = 0;<br>
-        for (; i < m_payloadSize; ++i)<br>
-            WRITE_CODE(m_payload[i], 8, "creative_intent_metadata");<br>
-    }<br>
-};<br>
-<br>
 class SEIAlternativeTC : public SEI<br>
 {<br>
 public:<br>
     int m_preferredTransferCharacteristics;<br>
     SEIAlternativeTC()<br>
     {<br>
-           m_payloadType = ALTERNATIVE_TRANSFER_CHARACTERISTICS;<br>
-               m_payloadSize = 0;<br>
-               m_preferredTransferCharacteristics = -1;<br>
-       }       <br>
-       <br>
-       void writeSEI(const SPS&)<br>
-       {<br>
-           WRITE_CODE(m_preferredTransferCharacteristics, 8, "Preferred transfer characteristics");<br>
-       }<br>
+        m_payloadType = ALTERNATIVE_TRANSFER_CHARACTERISTICS;<br>
+        m_payloadSize = 0;<br>
+        m_preferredTransferCharacteristics = -1;<br>
+    }<br>
+<br>
+    void writeSEI(const SPS&)<br>
+    {<br>
+        WRITE_CODE(m_preferredTransferCharacteristics, 8, "Preferred transfer characteristics");<br>
+    }<br>
 };<br>
<br>
 }<br></blockquote><div><br></div><div>Pushed to default. </div></div></div>