diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2012-07-05 09:50:59 +0200 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2012-07-05 10:40:13 +0200 |
commit | 669bbedfa863f8a1491a186fac4238baba407037 (patch) | |
tree | 653e6e7d0fd624363c53ea595bfc92c3281d2a19 /libavutil | |
parent | 5b54a90c8b54e3db862ec3bb3a28b0b9e4fc6554 (diff) | |
download | ffmpeg-669bbedfa863f8a1491a186fac4238baba407037.tar.gz |
blowfish: invert branch and loop precedence
Should slightly improve performance depending on the compiler used.
Diffstat (limited to 'libavutil')
-rw-r--r-- | libavutil/blowfish.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/libavutil/blowfish.c b/libavutil/blowfish.c index b7f5294677..554953e865 100644 --- a/libavutil/blowfish.c +++ b/libavutil/blowfish.c @@ -381,8 +381,8 @@ void av_blowfish_crypt(AVBlowfish *ctx, uint8_t *dst, const uint8_t *src, uint32_t v0, v1; int i; - while (count > 0) { - if (decrypt) { + if (decrypt) { + while (count > 0) { v0 = AV_RB32(src); v1 = AV_RB32(src + 4); @@ -396,7 +396,13 @@ void av_blowfish_crypt(AVBlowfish *ctx, uint8_t *dst, const uint8_t *src, dst[i] = dst[i] ^ iv[i]; memcpy(iv, src, 8); } - } else { + + src += 8; + dst += 8; + count -= 8; + } + } else { + while (count > 0) { if (iv) { for (i = 0; i < 8; i++) dst[i] = src[i] ^ iv[i]; @@ -414,11 +420,11 @@ void av_blowfish_crypt(AVBlowfish *ctx, uint8_t *dst, const uint8_t *src, if (iv) memcpy(iv, dst, 8); - } - src += 8; - dst += 8; - count -= 8; + src += 8; + dst += 8; + count -= 8; + } } } |