vorbistag: Use g_base64_decode_inplace()
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 1 Apr 2011 10:09:44 +0000 (12:09 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 1 Apr 2011 10:09:44 +0000 (12:09 +0200)
Instead of using the GLib base64 decoding functions manually to
do inplace base64 decoding. This makes the code easier to understand.

gst-libs/gst/tag/gstvorbistag.c

index 0b3ad57..add3c97 100644 (file)
@@ -313,28 +313,20 @@ gst_vorbis_tag_add_coverart (GstTagList * tags, gchar * img_data_base64,
 {
   GstBuffer *img;
   gsize img_len;
-  guchar *out;
-  guint save = 0;
-  gint state = 0;
 
   if (base64_len < 2)
     goto not_enough_data;
 
   /* img_data_base64 points to a temporary copy of the base64 encoded data, so
    * it's safe to do inpace decoding here
-   * TODO: glib 2.20 and later provides g_base64_decode_inplace, so change this
-   * to use glib's API instead once it's in wider use:
-   *  http://bugzilla.gnome.org/show_bug.cgi?id=564728
-   *  http://svn.gnome.org/viewvc/glib?view=revision&revision=7807 */
-  out = (guchar *) img_data_base64;
-  img_len = g_base64_decode_step (img_data_base64, base64_len,
-      out, &state, &save);
-
+   */
+  g_base64_decode_inplace (img_data_base64, &img_len);
   if (img_len == 0)
     goto decode_failed;
 
-  img = gst_tag_image_data_to_image_buffer (out, img_len,
-      GST_TAG_IMAGE_TYPE_NONE);
+  img =
+      gst_tag_image_data_to_image_buffer ((const guint8 *) img_data_base64,
+      img_len, GST_TAG_IMAGE_TYPE_NONE);
 
   if (img == NULL)
     goto convert_failed;