Keep non timing SEIs (#352)

With the H264 option 'Insert SEI and VUI data if absent' or 'Always rebuild SEI and VUI data':
In case timing SEIs are not found, all SEIs (timing and non timing) are currently removed nd replaced with timing SEIs.

This patch corrects this: only the timing SEIs are removed, the non-timing SEIs (such as private date e.g. x264 decoding parameters) are kept.
This commit is contained in:
jcdr428 2020-09-22 22:04:08 +02:00 committed by GitHub
parent 5ad13c99f2
commit 0440dc0f0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -911,19 +911,15 @@ bool H264StreamReader::skipNal(uint8_t* nal)
}
else if (nalType == nuSEI)
{
return true;
/*
SEIUnit sei;
uint8_t* nextNal = NALUnit::findNALWithStartCode(nal, m_bufEnd, true);
sei.decodeBuffer(nal, nextNal);
sei.deserialize(*(m_spsMap.begin()->second), orig_hrd_parameters_present_flag);
sei.deserialize(*(m_spsMap.begin()->second),
orig_hrd_parameters_present_flag || orig_vcl_parameters_present_flag);
for (std::set<int>::iterator itr = sei.m_processedMessages.begin(); itr != sei.m_processedMessages.end(); ++itr)
{
if (*itr == SEI_MSG_BUFFERING_PERIOD || *itr == SEI_MSG_PIC_TIMING)
return true;
}
*/
if (sei.m_processedMessages.find(SEI_MSG_BUFFERING_PERIOD) != sei.m_processedMessages.end() ||
sei.m_processedMessages.find(SEI_MSG_PIC_TIMING) != sei.m_processedMessages.end())
return true;
}
return false;
}