[FFmpeg-cvslog] lavu/hash: Fix CRC32 calculation

James Almer git at videolan.org
Thu May 16 00:01:51 CEST 2013


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Wed May 15 18:36:40 2013 -0300| [35188e91ef941a25be4734d6af58d5903badc476] | committer: Michael Niedermayer

lavu/hash: Fix CRC32 calculation

Initialize it with UINT32_MAX and xor the result with UINT32_MAX
as well.

Signed-off-by: James Almer <jamrial at gmail.com>
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=35188e91ef941a25be4734d6af58d5903badc476
---

 libavutil/hash.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavutil/hash.c b/libavutil/hash.c
index a08d2cf..03c7ca3 100644
--- a/libavutil/hash.c
+++ b/libavutil/hash.c
@@ -96,7 +96,7 @@ int av_hash_alloc(AVHashContext **ctx, const char *name)
     case SHA160:
     case SHA224:
     case SHA256:  res->ctx = av_sha_alloc(); break;
-    case CRC32:   res->crctab = av_crc_get_table(AV_CRC_32_IEEE); break;
+    case CRC32:   res->crctab = av_crc_get_table(AV_CRC_32_IEEE_LE); break;
     case ADLER32: break;
     }
     if (i != ADLER32 && i != CRC32 && !res->ctx) {
@@ -115,7 +115,7 @@ void av_hash_init(AVHashContext *ctx)
     case SHA160:  av_sha_init(ctx->ctx, 160); break;
     case SHA224:  av_sha_init(ctx->ctx, 224); break;
     case SHA256:  av_sha_init(ctx->ctx, 256); break;
-    case CRC32:   ctx->crc = 0; break;
+    case CRC32:   ctx->crc = UINT32_MAX; break;
     case ADLER32: ctx->crc = 1; break;
     }
 }
@@ -141,7 +141,7 @@ void av_hash_final(AVHashContext *ctx, uint8_t *dst)
     case SHA160:
     case SHA224:
     case SHA256:  av_sha_final(ctx->ctx, dst); break;
-    case CRC32:   AV_WL32(dst, ctx->crc); break;
+    case CRC32:   AV_WB32(dst, ctx->crc ^ UINT32_MAX); break;
     case ADLER32: AV_WB32(dst, ctx->crc); break;
     }
 }



More information about the ffmpeg-cvslog mailing list