Commit 112bca91 authored by Michael Niedermayer's avatar Michael Niedermayer

base64: optimize av_base64_encode()

This makes the code 2-3 times as fast
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent a41687c2
......@@ -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--;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment