From a7c6aa73fe5cbcc16c28a22da3a9bc29e2471e3a Mon Sep 17 00:00:00 2001
From: Ryan Martell <rdm4@martellventures.com>
Date: Sun, 29 Oct 2006 11:53:07 +0000
Subject: [PATCH] switch to common base64 routines in lavf Patch by Ryan
 Martell % rdm4 A martellventures P com % Original thread: Date: Oct 29, 2006
 2:45 AM Subject: Re: [Ffmpeg-devel] [PATCH] Base64 code

Originally committed as revision 6832 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavformat/http.c | 38 ++------------------------------------
 1 file changed, 2 insertions(+), 36 deletions(-)

diff --git a/libavformat/http.c b/libavformat/http.c
index c9944fba4fb..34dd5031a12 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -30,6 +30,7 @@
 #endif
 #include <netdb.h>
 
+#include "base64.h"
 
 /* XXX: POST protocol is not completly implemented because ffmpeg use
    only a subset of it */
@@ -51,7 +52,6 @@ typedef struct {
 static int http_connect(URLContext *h, const char *path, const char *hoststr,
                         const char *auth);
 static int http_write(URLContext *h, uint8_t *buf, int size);
-static char *b64_encode(const unsigned char *src );
 
 
 /* return non zero if error */
@@ -189,7 +189,7 @@ static int http_connect(URLContext *h, const char *path, const char *hoststr,
     /* send http header */
     post = h->flags & URL_WRONLY;
 
-    auth_b64 = b64_encode(auth);
+    auth_b64 = av_base64_encode((uint8_t *)auth, strlen(auth));
     snprintf(s->buffer, sizeof(s->buffer),
              "%s %s HTTP/1.0\r\n"
              "User-Agent: %s\r\n"
@@ -287,37 +287,3 @@ URLProtocol http_protocol = {
     NULL, /* seek */
     http_close,
 };
-
-/*****************************************************************************
- * b64_encode: stolen from VLC's http.c
- * simplified by michael
- *****************************************************************************/
-
-static char *b64_encode( const unsigned char *src )
-{
-    static const char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-    unsigned int len= strlen(src);
-    char *ret, *dst;
-    unsigned i_bits = 0;
-    unsigned i_shift = 0;
-
-    if(len < UINT_MAX/4){
-        ret=dst= av_malloc( len * 4 / 3 + 12 );
-    }else
-        return NULL;
-
-    while(*src){
-        i_bits = (i_bits << 8) + *src++;
-        i_shift += 8;
-
-        do{
-            *dst++ = b64[(i_bits << 6 >> i_shift) & 0x3f];
-            i_shift -= 6;
-        }while( i_shift > 6 || (*src == 0 && i_shift>0));
-    }
-    *dst++ = '=';
-    *dst   = '\0';
-
-    return ret;
-}
-
-- 
GitLab