From 112bca91b054e61dd4ec8ec19dd423afc41be14c Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 20 Jan 2012 22:46:14 +0100 Subject: base64: optimize av_base64_encode() This makes the code 2-3 times as fast Signed-off-by: Michael Niedermayer --- libavutil/base64.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'libavutil/base64.c') diff --git a/libavutil/base64.c b/libavutil/base64.c index 654c280827..26e28b719f 100644 --- a/libavutil/base64.c +++ b/libavutil/base64.c @@ -27,6 +27,7 @@ #include "common.h" #include "base64.h" #include "avassert.h" +#include "intreadwrite.h" /* ---------------- private code */ static const uint8_t map2[] = @@ -85,6 +86,15 @@ char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size) out_size < AV_BASE64_SIZE(in_size)) return NULL; ret = dst = out; + while (bytes_remaining > 3) { + i_bits = AV_RB32(in); + in += 3; bytes_remaining -= 3; + *dst++ = b64[ i_bits>>26 ]; + *dst++ = b64[(i_bits>>20) & 0x3F]; + *dst++ = b64[(i_bits>>14) & 0x3F]; + *dst++ = b64[(i_bits>>8 ) & 0x3F]; + } + i_bits = 0; while (bytes_remaining) { i_bits = (i_bits << 8) + *in++; bytes_remaining--; -- cgit v1.2.3