Change History
+2011-10-27 - bug fixes v1.8.43
+ o Corrected broken Essence UL matching. (Thanks to Michael Loder).
+
+
2011-08-31 - bug fixes v1.8.42
o Added missing HFR support for PCM essence reader/writer.
o Added missing Timestamp::Timestamp(const char* datestr) implementation.
(Thanks to Matt Sheby for this and the previous three items.)
o Fixed error in Kumu::FortunaRNG::FillRandom() that was returning the
- end of the random buffer instead of the front (Mike Radford).
+ end of the random buffer instead of the front (Thanks to Mike Radford).
o Added support for proposed sound channel format identifiers
'7.1DS' and 'WTF'. Optimistically chose version '0x0c'.
o Added support for stereoscopic images in JP2K files at edit
# For example, if asdcplib version 1.0.0 were modified to accomodate changes
# in file format, and if no changes were made to AS_DCP.h, the new version would be
# 1.0.1. If changes were also required in AS_DCP.h, the new version would be 1.1.1.
-AC_INIT([asdcplib], [1.8.42], [asdcplib@cinecert.com])
+AC_INIT([asdcplib], [1.8.43], [asdcplib@cinecert.com])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_SRCDIR([src/KM_error.h])
const char* EncodeString(char* str_buf, ui32_t buf_len) const;
bool operator==(const UL& rhs) const;
+ bool MatchIgnoreStream(const UL& rhs) const;
bool ExactMatch(const UL& rhs) const;
};
//------------------------------------------------------------------------------------------
//
+//
bool
ASDCP::UL::operator==(const UL& rhs) const
{
m_Value[4] == rhs.m_Value[4] &&
m_Value[5] == rhs.m_Value[5] &&
m_Value[6] == rhs.m_Value[6] &&
- // m_Value[7] == rhs.m_Value[7] && version is ignored when performing lookups
+ // m_Value[7] == rhs.m_Value[7] && // version is ignored when performing lookups
m_Value[8] == rhs.m_Value[8] &&
m_Value[9] == rhs.m_Value[9] &&
m_Value[10] == rhs.m_Value[10] &&
return false;
}
+//
+bool
+ASDCP::UL::MatchIgnoreStream(const UL& rhs) const
+{
+ if ( m_Value[0] == rhs.m_Value[0] &&
+ m_Value[1] == rhs.m_Value[1] &&
+ m_Value[2] == rhs.m_Value[2] &&
+ m_Value[3] == rhs.m_Value[3] &&
+ m_Value[4] == rhs.m_Value[4] &&
+ m_Value[5] == rhs.m_Value[5] &&
+ m_Value[6] == rhs.m_Value[6] &&
+ // m_Value[7] == rhs.m_Value[7] && // version is ignored when performing lookups
+ m_Value[8] == rhs.m_Value[8] &&
+ m_Value[9] == rhs.m_Value[9] &&
+ m_Value[10] == rhs.m_Value[10] &&
+ m_Value[11] == rhs.m_Value[11] &&
+ m_Value[12] == rhs.m_Value[12] &&
+ m_Value[13] == rhs.m_Value[13] &&
+ m_Value[14] == rhs.m_Value[14]
+ // m_Value[15] == rhs.m_Value[15] // ignore stream number
+ )
+ return true;
+ return false;
+}
+
+//
bool
ASDCP::UL::ExactMatch(const UL& rhs) const
{
m_LastPosition = m_LastPosition + Reader.KLLength() + PacketLength;
assert(m_Dict);
- if ( memcmp(Key.Value(), m_Dict->ul(MDD_CryptEssence), Key.Size() - 1) == 0 ) // ignore the stream numbers
+ if ( Key.MatchIgnoreStream(m_Dict->ul(MDD_CryptEssence)) ) // ignore the stream numbers
{
if ( ! m_Info.EncryptedEssence )
{
return RESULT_FORMAT;
// test essence UL
- if ( memcmp(ess_p, EssenceUL, SMPTE_UL_LENGTH - 1) != 0 ) // ignore the stream number
+ if ( UL(ess_p).MatchIgnoreStream(EssenceUL) ) // ignore the stream number
{
char strbuf[IntBufferLen];
const MDDEntry* Entry = m_Dict->FindUL(Key.Value());
FrameBuf.PlaintextOffset(PlaintextOffset);
}
}
- else if ( memcmp(Key.Value(), EssenceUL, Key.Size() - 1) == 0 ) // ignore the stream number
+ else if ( Key.MatchIgnoreStream(EssenceUL) ) // ignore the stream number
{ // read plaintext frame
if ( FrameBuf.Capacity() < PacketLength )
{