[x265] [PATCH] fix payload write of USER_DATA_REGISTERED_ITU_T_T35 SEI message
bhavna at multicorewareinc.com
bhavna at multicorewareinc.com
Wed Jul 12 09:41:58 CEST 2017
# HG changeset patch
# User Bhavna Hariharan <bhavna at multicorewareinc.com>
# Date 1499842927 -19800
# Wed Jul 12 12:32:07 2017 +0530
# Node ID 3872cba7827fd6fdc2db62140cc4d108e97bc6bf
# Parent 06217c0e0f5f7fb126deb05ffb875a4f4bae8f68
fix payload write of USER_DATA_REGISTERED_ITU_T_T35 SEI message.
inserts missing initial payload byte into the bitstream and removes
extra byte appended at the end of bitstream while passing user SEI data
(bitbucket issue #353)
diff -r 06217c0e0f5f -r 3872cba7827f source/encoder/encoder.cpp
--- a/source/encoder/encoder.cpp Thu Jul 06 14:39:02 2017 +0530
+++ b/source/encoder/encoder.cpp Wed Jul 12 12:32:07 2017 +0530
@@ -615,12 +615,12 @@
int32_t i = 0;
toneMap.payloadSize = 0;
while (cim[pic_in->poc][i] == 0xFF)
- toneMap.payloadSize += cim[pic_in->poc][i++] + 1;
- toneMap.payloadSize += cim[pic_in->poc][i] + 1;
+ toneMap.payloadSize += cim[pic_in->poc][i++];
+ toneMap.payloadSize += cim[pic_in->poc][i++];
toneMap.payload = (uint8_t*)x265_malloc(sizeof(uint8_t) * toneMap.payloadSize);
toneMap.payloadType = USER_DATA_REGISTERED_ITU_T_T35;
- memcpy(toneMap.payload, cim[pic_in->poc], toneMap.payloadSize);
+ memcpy(toneMap.payload, cim[pic_in->poc] + i, toneMap.payloadSize);
}
}
#endif
diff -r 06217c0e0f5f -r 3872cba7827f source/encoder/frameencoder.cpp
--- a/source/encoder/frameencoder.cpp Thu Jul 06 14:39:02 2017 +0530
+++ b/source/encoder/frameencoder.cpp Wed Jul 12 12:32:07 2017 +0530
@@ -669,7 +669,7 @@
if (writeSei)
{
SEICreativeIntentMeta sei;
- sei.cim = payload->payload;
+ sei.m_payload = payload->payload;
m_bs.resetBits();
sei.setSize(payload->payloadSize);
sei.write(m_bs, *slice->m_sps);
diff -r 06217c0e0f5f -r 3872cba7827f source/encoder/sei.cpp
--- a/source/encoder/sei.cpp Thu Jul 06 14:39:02 2017 +0530
+++ b/source/encoder/sei.cpp Wed Jul 12 12:32:07 2017 +0530
@@ -54,21 +54,23 @@
}
WRITE_CODE(type, 8, "payload_type");
uint32_t payloadSize;
- if (hrdTypes || m_payloadType == USER_DATA_UNREGISTERED)
+ if (hrdTypes || m_payloadType == USER_DATA_UNREGISTERED || m_payloadType == USER_DATA_REGISTERED_ITU_T_T35)
{
if (hrdTypes)
{
X265_CHECK(0 == (count.getNumberOfWrittenBits() & 7), "payload unaligned\n");
payloadSize = count.getNumberOfWrittenBits() >> 3;
}
+ else if (m_payloadType == USER_DATA_UNREGISTERED)
+ payloadSize = m_payloadSize + 16;
else
- payloadSize = m_payloadSize + 16;
+ payloadSize = m_payloadSize;
for (; payloadSize >= 0xff; payloadSize -= 0xff)
WRITE_CODE(0xff, 8, "payload_size");
WRITE_CODE(payloadSize, 8, "payload_size");
}
- else if(m_payloadType != USER_DATA_REGISTERED_ITU_T_T35)
+ else
WRITE_CODE(m_payloadSize, 8, "payload_size");
/* virtual writeSEI method, write to bs */
writeSEI(sps);
diff -r 06217c0e0f5f -r 3872cba7827f source/encoder/sei.h
--- a/source/encoder/sei.h Thu Jul 06 14:39:02 2017 +0530
+++ b/source/encoder/sei.h Wed Jul 12 12:32:07 2017 +0530
@@ -276,25 +276,17 @@
m_payloadSize = 0;
}
- uint8_t *cim;
+ uint8_t *m_payload;
// daniel.vt at samsung.com :: for the Creative Intent Meta Data Encoding ( seongnam.oh at samsung.com )
void writeSEI(const SPS&)
{
- if (!cim)
+ if (!m_payload)
return;
- int i = 0;
- int payloadSize = m_payloadSize;
- while (cim[i] == 0xFF)
- {
- i++;
- WRITE_CODE(0xFF, 8, "payload_size");
- }
- WRITE_CODE(cim[i], 8, "payload_size");
- i++;
- for (; i < payloadSize; ++i)
- WRITE_CODE(cim[i], 8, "creative_intent_metadata");
+ uint32_t i = 0;
+ for (; i < m_payloadSize; ++i)
+ WRITE_CODE(m_payload[i], 8, "creative_intent_metadata");
}
};
}
More information about the x265-devel
mailing list