diff options
| -rw-r--r-- | ChangeLog | 6 | ||||
| -rw-r--r-- | gst/rtsp/base64.c | 70 | ||||
| -rw-r--r-- | gst/rtsp/base64.h | 31 | 
3 files changed, 107 insertions, 0 deletions
@@ -1,3 +1,9 @@ +2007-02-26  Jan Schmidt  <thaytan@mad.scientist.com> + +	* gst/rtsp/base64.c: (util_base64_encode): +	* gst/rtsp/base64.h: +	Commit missing files for base64 encoding. +  2007-02-24  Tim-Philipp Müller  <tim at centricular dot net>  	Patch by: Loïc Minier <lool+gnome at via ecp fr> diff --git a/gst/rtsp/base64.c b/gst/rtsp/base64.c new file mode 100644 index 00000000..171e09ad --- /dev/null +++ b/gst/rtsp/base64.c @@ -0,0 +1,70 @@ +/* GStreamer + * Copyright (C) <2007> Mike Smith <msmith@xiph.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "base64.h" + +static char base64table[64] = { +  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', +      'P', +  'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', +      'f', +  'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', +      'v', +  'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' +}; + +/* This isn't efficient, but it doesn't need to be */ +gchar * +util_base64_encode (gchar * data, gint len) +{ +  gchar *out = g_malloc (len * 4 / 3 + 4); +  gchar *result = out; +  int chunk; + +  while (len > 0) { +    chunk = (len > 3) ? 3 : len; +    *out++ = base64table[(*data & 0xFC) >> 2]; +    *out++ = base64table[((*data & 0x03) << 4) | ((*(data + 1) & 0xF0) >> 4)]; +    switch (chunk) { +      case 3: +        *out++ = +            base64table[((*(data + 1) & 0x0F) << 2) | ((*(data + +                        2) & 0xC0) >> 6)]; +        *out++ = base64table[(*(data + 2)) & 0x3F]; +        break; +      case 2: +        *out++ = base64table[((*(data + 1) & 0x0F) << 2)]; +        *out++ = '='; +        break; +      case 1: +        *out++ = '='; +        *out++ = '='; +        break; +    } +    data += chunk; +    len -= chunk; +  } +  *out = 0; + +  return result; +} diff --git a/gst/rtsp/base64.h b/gst/rtsp/base64.h new file mode 100644 index 00000000..4efebb65 --- /dev/null +++ b/gst/rtsp/base64.h @@ -0,0 +1,31 @@ +/* GStreamer + * Copyright (C) <2007> Mike Smith <msmith@xiph.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __BASE64_H__ +#define __BASE64_H__ + +#include <glib.h> + +G_BEGIN_DECLS + +gchar *util_base64_encode(gchar *data, gint len); + +G_END_DECLS + +#endif  | 
