[Ffmpeg-cvslog] r5782 - trunk/libavformat/http.c

michael subversion
Tue Jul 18 20:51:35 CEST 2006


Author: michael
Date: Tue Jul 18 20:51:35 2006
New Revision: 5782

Modified:
   trunk/libavformat/http.c

Log:
simplify b64_encode()
maybe this should be moved to libavutil ...


Modified: trunk/libavformat/http.c
==============================================================================
--- trunk/libavformat/http.c	(original)
+++ trunk/libavformat/http.c	Tue Jul 18 20:51:35 2006
@@ -285,6 +285,7 @@
 
 /*****************************************************************************
  * b64_encode: stolen from VLC's http.c
+ * simplified by michael
  *****************************************************************************/
 
 static char *b64_encode( const unsigned char *src )
@@ -300,32 +301,17 @@
     }else
         return NULL;
 
-    for( ;; )
-    {
-        if( *src )
-        {
-            i_bits = ( i_bits << 8 )|( *src++ );
-            i_shift += 8;
-        }
-        else if( i_shift > 0 )
-        {
-           i_bits <<= 6 - i_shift;
-           i_shift = 6;
-        }
-        else
-        {
-            *dst++ = '=';
-            break;
-        }
+    while(*src){
+        i_bits = (i_bits << 8) + *src++;
+        i_shift += 8;
 
-        while( i_shift >= 6 )
-        {
+        do{
+            *dst++ = b64[(i_bits << 6 >> i_shift) & 0x3f];
             i_shift -= 6;
-            *dst++ = b64[(i_bits >> i_shift)&0x3f];
-        }
+        }while( i_shift > 6 || (*src == 0 && i_shift>0));
     }
-
-    *dst++ = '\0';
+    *dst++ = '=';
+    *dst   = '\0';
 
     return ret;
 }




More information about the ffmpeg-cvslog mailing list