<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>