mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Replace crc32 MPEG and IEEE by pycrc to match MIT license. 3.0.31
This commit is contained in:
parent
e395878916
commit
0a63448b86
4 changed files with 268 additions and 123 deletions
|
@ -1523,7 +1523,139 @@ VOID TEST(KernelUtility, AvcUev)
|
|||
}
|
||||
}
|
||||
|
||||
extern void __crc32_make_table(uint32_t t[256], uint32_t poly, bool reflect_in);
|
||||
|
||||
VOID TEST(KernelUtility, CRC32MakeTable)
|
||||
{
|
||||
uint32_t t[256];
|
||||
|
||||
// IEEE, @see https://github.com/ossrs/srs/blob/608c88b8f2b352cdbce3b89b9042026ea907e2d3/trunk/src/kernel/srs_kernel_utility.cpp#L770
|
||||
__crc32_make_table(t, 0x4c11db7, true);
|
||||
|
||||
EXPECT_EQ((uint32_t)0x00000000, t[0]);
|
||||
EXPECT_EQ((uint32_t)0x77073096, t[1]);
|
||||
EXPECT_EQ((uint32_t)0xEE0E612C, t[2]);
|
||||
EXPECT_EQ((uint32_t)0x990951BA, t[3]);
|
||||
EXPECT_EQ((uint32_t)0x076DC419, t[4]);
|
||||
EXPECT_EQ((uint32_t)0x706AF48F, t[5]);
|
||||
EXPECT_EQ((uint32_t)0xE963A535, t[6]);
|
||||
EXPECT_EQ((uint32_t)0x9E6495A3, t[7]);
|
||||
|
||||
EXPECT_EQ((uint32_t)0xB3667A2E, t[248]);
|
||||
EXPECT_EQ((uint32_t)0xC4614AB8, t[249]);
|
||||
EXPECT_EQ((uint32_t)0x5D681B02, t[250]);
|
||||
EXPECT_EQ((uint32_t)0x2A6F2B94, t[251]);
|
||||
EXPECT_EQ((uint32_t)0xB40BBE37, t[252]);
|
||||
EXPECT_EQ((uint32_t)0xC30C8EA1, t[253]);
|
||||
EXPECT_EQ((uint32_t)0x5A05DF1B, t[254]);
|
||||
EXPECT_EQ((uint32_t)0x2D02EF8D, t[255]);
|
||||
|
||||
// IEEE, @see https://github.com/ossrs/srs/blob/608c88b8f2b352cdbce3b89b9042026ea907e2d3/trunk/src/kernel/srs_kernel_utility.cpp#L770
|
||||
__crc32_make_table(t, 0x4c11db7, true);
|
||||
|
||||
EXPECT_EQ((uint32_t)0x00000000, t[0]);
|
||||
EXPECT_EQ((uint32_t)0x77073096, t[1]);
|
||||
EXPECT_EQ((uint32_t)0xEE0E612C, t[2]);
|
||||
EXPECT_EQ((uint32_t)0x990951BA, t[3]);
|
||||
EXPECT_EQ((uint32_t)0x076DC419, t[4]);
|
||||
EXPECT_EQ((uint32_t)0x706AF48F, t[5]);
|
||||
EXPECT_EQ((uint32_t)0xE963A535, t[6]);
|
||||
EXPECT_EQ((uint32_t)0x9E6495A3, t[7]);
|
||||
|
||||
EXPECT_EQ((uint32_t)0xB3667A2E, t[248]);
|
||||
EXPECT_EQ((uint32_t)0xC4614AB8, t[249]);
|
||||
EXPECT_EQ((uint32_t)0x5D681B02, t[250]);
|
||||
EXPECT_EQ((uint32_t)0x2A6F2B94, t[251]);
|
||||
EXPECT_EQ((uint32_t)0xB40BBE37, t[252]);
|
||||
EXPECT_EQ((uint32_t)0xC30C8EA1, t[253]);
|
||||
EXPECT_EQ((uint32_t)0x5A05DF1B, t[254]);
|
||||
EXPECT_EQ((uint32_t)0x2D02EF8D, t[255]);
|
||||
|
||||
// MPEG, @see https://github.com/ossrs/srs/blob/608c88b8f2b352cdbce3b89b9042026ea907e2d3/trunk/src/kernel/srs_kernel_utility.cpp#L691
|
||||
__crc32_make_table(t, 0x4c11db7, false);
|
||||
|
||||
EXPECT_EQ((uint32_t)0x00000000, t[0]);
|
||||
EXPECT_EQ((uint32_t)0x04c11db7, t[1]);
|
||||
EXPECT_EQ((uint32_t)0x09823b6e, t[2]);
|
||||
EXPECT_EQ((uint32_t)0x0d4326d9, t[3]);
|
||||
EXPECT_EQ((uint32_t)0x130476dc, t[4]);
|
||||
EXPECT_EQ((uint32_t)0x17c56b6b, t[5]);
|
||||
EXPECT_EQ((uint32_t)0x1a864db2, t[6]);
|
||||
EXPECT_EQ((uint32_t)0x1e475005, t[7]);
|
||||
|
||||
EXPECT_EQ((uint32_t)0xafb010b1, t[248]);
|
||||
EXPECT_EQ((uint32_t)0xab710d06, t[249]);
|
||||
EXPECT_EQ((uint32_t)0xa6322bdf, t[250]);
|
||||
EXPECT_EQ((uint32_t)0xa2f33668, t[251]);
|
||||
EXPECT_EQ((uint32_t)0xbcb4666d, t[252]);
|
||||
EXPECT_EQ((uint32_t)0xb8757bda, t[253]);
|
||||
EXPECT_EQ((uint32_t)0xb5365d03, t[254]);
|
||||
EXPECT_EQ((uint32_t)0xb1f740b4, t[255]);
|
||||
|
||||
// MPEG, @see https://github.com/ossrs/srs/blob/608c88b8f2b352cdbce3b89b9042026ea907e2d3/trunk/src/kernel/srs_kernel_utility.cpp#L691
|
||||
__crc32_make_table(t, 0x4c11db7, false);
|
||||
|
||||
EXPECT_EQ((uint32_t)0x00000000, t[0]);
|
||||
EXPECT_EQ((uint32_t)0x04c11db7, t[1]);
|
||||
EXPECT_EQ((uint32_t)0x09823b6e, t[2]);
|
||||
EXPECT_EQ((uint32_t)0x0d4326d9, t[3]);
|
||||
EXPECT_EQ((uint32_t)0x130476dc, t[4]);
|
||||
EXPECT_EQ((uint32_t)0x17c56b6b, t[5]);
|
||||
EXPECT_EQ((uint32_t)0x1a864db2, t[6]);
|
||||
EXPECT_EQ((uint32_t)0x1e475005, t[7]);
|
||||
|
||||
EXPECT_EQ((uint32_t)0xafb010b1, t[248]);
|
||||
EXPECT_EQ((uint32_t)0xab710d06, t[249]);
|
||||
EXPECT_EQ((uint32_t)0xa6322bdf, t[250]);
|
||||
EXPECT_EQ((uint32_t)0xa2f33668, t[251]);
|
||||
EXPECT_EQ((uint32_t)0xbcb4666d, t[252]);
|
||||
EXPECT_EQ((uint32_t)0xb8757bda, t[253]);
|
||||
EXPECT_EQ((uint32_t)0xb5365d03, t[254]);
|
||||
EXPECT_EQ((uint32_t)0xb1f740b4, t[255]);
|
||||
}
|
||||
|
||||
VOID TEST(KernelUtility, CRC32IEEE)
|
||||
{
|
||||
if (true) {
|
||||
string datas[] = {
|
||||
"123456789", "srs", "ossrs.net",
|
||||
"SRS's a simplest, conceptual integrated, industrial-strength live streaming origin cluster."
|
||||
};
|
||||
|
||||
uint32_t checksums[] = {
|
||||
0xcbf43926, 0x7df334e9, 0x2f52242b,
|
||||
0x7e8677bd,
|
||||
};
|
||||
|
||||
for (int i = 0; i < (int)(sizeof(datas)/sizeof(string)); i++) {
|
||||
string data = datas[i];
|
||||
uint32_t checksum = checksums[i];
|
||||
EXPECT_EQ(checksum, srs_crc32_ieee(data.data(), data.length(), 0));
|
||||
}
|
||||
|
||||
uint32_t previous = 0;
|
||||
for (int i = 0; i < (int)(sizeof(datas)/sizeof(string)); i++) {
|
||||
string data = datas[i];
|
||||
previous = srs_crc32_ieee(data.data(), data.length(), previous);
|
||||
}
|
||||
EXPECT_EQ((uint32_t)0x431b8785, previous);
|
||||
}
|
||||
|
||||
if (true) {
|
||||
string data = "123456789srs";
|
||||
EXPECT_EQ((uint32_t)0xf567b5cf, srs_crc32_ieee(data.data(), data.length(), 0));
|
||||
}
|
||||
|
||||
if (true) {
|
||||
string data = "123456789";
|
||||
EXPECT_EQ((uint32_t)0xcbf43926, srs_crc32_ieee(data.data(), data.length(), 0));
|
||||
|
||||
data = "srs";
|
||||
EXPECT_EQ((uint32_t)0xf567b5cf, srs_crc32_ieee(data.data(), data.length(), 0xcbf43926));
|
||||
}
|
||||
}
|
||||
|
||||
VOID TEST(KernelUtility, CRC32MPEGTS)
|
||||
{
|
||||
string datas[] = {
|
||||
"123456789", "srs", "ossrs.net",
|
||||
|
@ -1531,22 +1663,15 @@ VOID TEST(KernelUtility, CRC32IEEE)
|
|||
};
|
||||
|
||||
uint32_t checksums[] = {
|
||||
0xcbf43926, 0x7df334e9, 0x2f52242b,
|
||||
0x7e8677bd
|
||||
0x0376e6e7, 0xd9089591, 0xbd17933f,
|
||||
0x9f389f7d
|
||||
};
|
||||
|
||||
for (int i = 0; i < (int)(sizeof(datas)/sizeof(string)); i++) {
|
||||
string data = datas[i];
|
||||
uint32_t checksum = checksums[i];
|
||||
EXPECT_EQ(checksum, srs_crc32_ieee(data.data(), data.length(), 0));
|
||||
EXPECT_EQ(checksum, (uint32_t)srs_crc32_mpegts(data.data(), data.length()));
|
||||
}
|
||||
|
||||
uint32_t previous = 0;
|
||||
for (int i = 0; i < (int)(sizeof(datas)/sizeof(string)); i++) {
|
||||
string data = datas[i];
|
||||
previous = srs_crc32_ieee(data.data(), data.length(), previous);
|
||||
}
|
||||
EXPECT_EQ((uint32_t)0x431b8785, previous);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue