math: allow crc32 calculations on non-continuous data blocks

Signed-off-by: Adrian Bonislawski <adrian.bonislawski@linux.intel.com>
This commit is contained in:
Adrian Bonislawski 2019-12-13 11:06:04 +01:00 committed by Janusz Jankowski
parent 977b6b5866
commit 9bae27fd2b
3 changed files with 5 additions and 4 deletions

View File

@ -495,7 +495,8 @@ static int test_keyword_set_model(struct comp_dev *dev,
if (done) {
/* Set model data done, update crc value */
cd->model.crc = crc32(cd->model.data, cd->model.data_size);
cd->model.crc = crc32(0, cd->model.data,
cd->model.data_size);
trace_keyword_with_ids(dev, "keyword_ctrl_set_model() "
"done, memory_size = 0x%x, crc = 0x%08x",
cd->model.data_size, cd->model.crc);

View File

@ -71,7 +71,7 @@ int32_t find_max_abs_int32(int32_t vec[], int vec_length);
*/
int norm_int32(int32_t val);
uint32_t crc32(const void *data, uint32_t bytes);
uint32_t crc32(uint32_t base, const void *data, uint32_t bytes);
/* merges two 16-bit values into a single 32-bit value */
#define merge_16b16b(high, low) (((uint32_t)(high) << 16) | \

View File

@ -113,9 +113,9 @@ int norm_int32(int32_t val)
* https://en.wikipedia.org/wiki/Cyclic_redundancy_check#CRC-32_algorithm
* 0xEDB88320 is the reversed polynomial representation
*/
uint32_t crc32(const void *data, uint32_t bytes)
uint32_t crc32(uint32_t base, const void *data, uint32_t bytes)
{
uint32_t crc = 0xFFFFFFFF;
uint32_t crc = ~base;
uint32_t cur;
int i;
int j;