# HG changeset patch
# User Santhoshini Sekar <santhosh...@multicorewareinc.com>
# Date 1523526059 -19800
# Thu Apr 12 15:10:59 2018 +0530
# Node ID ad37e53f78dcdd600f7ad31095db490b2a93a8c6
# Parent 593e63cda903370af926711c0ba05ce37d045c90
fix conditions for single-sei NAL
Advertising
diff --git a/source/encoder/frameencoder.cpp b/source/encoder/frameencoder.cpp
--- a/source/encoder/frameencoder.cpp
+++ b/source/encoder/frameencoder.cpp
@@ -696,7 +696,7 @@
sei->write(m_bs, *slice->m_sps);
sei->alignAndSerialize(m_bs, false, m_param->bSingleSeiNal,
NAL_UNIT_PREFIX_SEI, m_nalList);
}
-
+ bool isSei = false;
/* Write user SEI */
for (int i = 0; i < m_frame->m_userSEI.numPayloads; i++)
{
@@ -710,6 +710,7 @@
sei.setSize(payload->payloadSize);
sei.write(m_bs, *slice->m_sps);
sei.alignAndSerialize(m_bs, false, m_param->bSingleSeiNal,
NAL_UNIT_PREFIX_SEI, m_nalList);
+ isSei = true;
}
else if (payload->payloadType == USER_DATA_REGISTERED_ITU_T_T35)
{
@@ -717,18 +718,19 @@
{
SEICreativeIntentMeta sei;
sei.m_payload = payload->payload;
- m_bs.resetBits();
+ if (!m_param->bSingleSeiNal)
+ m_bs.resetBits();
sei.setSize(payload->payloadSize);
sei.write(m_bs, *slice->m_sps);
- sei.alignAndSerialize(m_bs, true, m_param->bSingleSeiNal,
NAL_UNIT_PREFIX_SEI, m_nalList);
+ sei.alignAndSerialize(m_bs, false, m_param->bSingleSeiNal,
NAL_UNIT_PREFIX_SEI, m_nalList);
+ isSei = true;
}
}
else
x265_log(m_param, X265_LOG_ERROR, "Unrecognized SEI type\n");
}
- bool isSei = (m_frame->m_lowres.bKeyframe &&
- (m_param->bRepeatHeaders || m_param->bEmitHRDSEI
- || !!m_param->interlaceMode || m_param->bEmitIDRRecoverySEI));
+ isSei |= ((m_frame->m_lowres.bKeyframe && m_param->bRepeatHeaders) ||
m_param->bEmitHRDSEI
+ || !!m_param->interlaceMode || (m_frame->m_lowres.sliceType ==
X265_TYPE_IDR && m_param->bEmitIDRRecoverySEI));
if (isSei && m_param->bSingleSeiNal)
{
# HG changeset patch
# User Santhoshini Sekar <santhosh...@multicorewareinc.com>
# Date 1523526059 -19800
# Thu Apr 12 15:10:59 2018 +0530
# Node ID ad37e53f78dcdd600f7ad31095db490b2a93a8c6
# Parent 593e63cda903370af926711c0ba05ce37d045c90
fix conditions for single-sei NAL
diff --git a/source/encoder/frameencoder.cpp b/source/encoder/frameencoder.cpp
--- a/source/encoder/frameencoder.cpp
+++ b/source/encoder/frameencoder.cpp
@@ -696,7 +696,7 @@
sei->write(m_bs, *slice->m_sps);
sei->alignAndSerialize(m_bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, m_nalList);
}
-
+ bool isSei = false;
/* Write user SEI */
for (int i = 0; i < m_frame->m_userSEI.numPayloads; i++)
{
@@ -710,6 +710,7 @@
sei.setSize(payload->payloadSize);
sei.write(m_bs, *slice->m_sps);
sei.alignAndSerialize(m_bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, m_nalList);
+ isSei = true;
}
else if (payload->payloadType == USER_DATA_REGISTERED_ITU_T_T35)
{
@@ -717,18 +718,19 @@
{
SEICreativeIntentMeta sei;
sei.m_payload = payload->payload;
- m_bs.resetBits();
+ if (!m_param->bSingleSeiNal)
+ m_bs.resetBits();
sei.setSize(payload->payloadSize);
sei.write(m_bs, *slice->m_sps);
- sei.alignAndSerialize(m_bs, true, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, m_nalList);
+ sei.alignAndSerialize(m_bs, false, m_param->bSingleSeiNal, NAL_UNIT_PREFIX_SEI, m_nalList);
+ isSei = true;
}
}
else
x265_log(m_param, X265_LOG_ERROR, "Unrecognized SEI type\n");
}
- bool isSei = (m_frame->m_lowres.bKeyframe &&
- (m_param->bRepeatHeaders || m_param->bEmitHRDSEI
- || !!m_param->interlaceMode || m_param->bEmitIDRRecoverySEI));
+ isSei |= ((m_frame->m_lowres.bKeyframe && m_param->bRepeatHeaders) || m_param->bEmitHRDSEI
+ || !!m_param->interlaceMode || (m_frame->m_lowres.sliceType == X265_TYPE_IDR && m_param->bEmitIDRRecoverySEI));
if (isSei && m_param->bSingleSeiNal)
{
_______________________________________________
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel