OSDN Git Service

expose av_base64_decode and av_base64_encode
authorLuca Barbato <lu_zero@gentoo.org>
Mon, 19 Mar 2007 00:48:47 +0000 (00:48 +0000)
committerLuca Barbato <lu_zero@gentoo.org>
Mon, 19 Mar 2007 00:48:47 +0000 (00:48 +0000)
Originally committed as revision 8448 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/http.c
libavutil/Makefile
libavutil/avutil.h
libavutil/base64.c
libavutil/base64.h

index 9e8fce5..e057d6e 100644 (file)
@@ -210,13 +210,14 @@ static int http_connect(URLContext *h, const char *path, const char *hoststr,
     int post, err, ch;
     char line[1024], *q;
     char *auth_b64;
+    int auth_b64_len = strlen(auth)* 4 / 3 + 12;
     offset_t off = s->off;
 
 
     /* send http header */
     post = h->flags & URL_WRONLY;
-
-    auth_b64 = av_base64_encode((uint8_t *)auth, strlen(auth));
+    auth_b64 = av_malloc(auth_b64_len);
+    av_base64_encode(auth_b64, auth_b64_len, (uint8_t *)auth, strlen(auth));
     snprintf(s->buffer, sizeof(s->buffer),
              "%s %s HTTP/1.1\r\n"
              "User-Agent: %s\r\n"
index 1203281..a760401 100644 (file)
@@ -18,7 +18,7 @@ OBJS= mathematics.o \
 
 HEADERS = avutil.h common.h mathematics.h integer.h rational.h \
           intfloat_readwrite.h md5.h adler32.h log.h fifo.h lzo.h \
-          random.h mem.h
+          random.h mem.h base64.h
 
 NAME=avutil
 LIBVERSION=$(LAVUVERSION)
index d85755c..32bc40b 100644 (file)
@@ -34,8 +34,8 @@ extern "C" {
 #define AV_STRINGIFY(s)         AV_TOSTRING(s)
 #define AV_TOSTRING(s) #s
 
-#define LIBAVUTIL_VERSION_INT   ((49<<16)+(3<<8)+0)
-#define LIBAVUTIL_VERSION       49.3.0
+#define LIBAVUTIL_VERSION_INT   ((49<<16)+(4<<8)+0)
+#define LIBAVUTIL_VERSION       49.4.0
 #define LIBAVUTIL_BUILD         LIBAVUTIL_VERSION_INT
 
 #define LIBAVUTIL_IDENT         "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION)
index 6279244..bee800c 100644 (file)
@@ -70,7 +70,7 @@ int av_base64_decode(uint8_t * out, const char *in, int out_length)
 * fixed edge cases and made it work from data (vs. strings) by ryan.
 *****************************************************************************/
 
-char *av_base64_encode(uint8_t * src, int len)
+char *av_base64_encode(char * buf, int buf_len, uint8_t * src, int len)
 {
     static const char b64[] =
         "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
@@ -79,11 +79,10 @@ char *av_base64_encode(uint8_t * src, int len)
     int i_shift = 0;
     int bytes_remaining = len;
 
-    if (len < UINT_MAX / 4) {
-        ret = dst = av_malloc(len * 4 / 3 + 12);
-    } else
+    if (len >= UINT_MAX / 4 ||
+        buf_len < len * 4 / 3 + 12)
         return NULL;
-
+    ret = dst = buf;
     if (len) {                  // special edge case, what should we really do here?
         while (bytes_remaining) {
             i_bits = (i_bits << 8) + *src++;
index 5658ee8..3d90531 100644 (file)
@@ -28,6 +28,7 @@ int av_base64_decode(uint8_t * out, const char *in, int out_length);
 /**
  * encodes base64
  * @param src data, not a string
+ * @param buf output string
  */
-char *av_base64_encode(uint8_t * src, int len);
+char *av_base64_encode(char * buf, int buf_len, uint8_t * src, int len);