diff --git a/gdk-pixbuf/gdk-pixbuf-animation.c b/gdk-pixbuf/gdk-pixbuf-animation.c
index 290630e..69f9d4d 100644
--- a/gdk-pixbuf/gdk-pixbuf-animation.c
+++ b/gdk-pixbuf/gdk-pixbuf-animation.c
@@ -432,6 +432,18 @@ gdk_pixbuf_animation_get_iter (GdkPixbufAnimation *animation,
         return GDK_PIXBUF_ANIMATION_GET_CLASS (animation)->get_iter (animation, &val);
 }
 
+guint
+gdk_pixbuf_animation_get_frame_count (GdkPixbufAnimation *animation)
+{
+  return GDK_PIXBUF_ANIMATION_GET_CLASS (animation)->get_frame_count (animation);
+}
+
+guint
+gdk_pixbuf_animation_get_animation_time (GdkPixbufAnimation *animation)
+{
+  return GDK_PIXBUF_ANIMATION_GET_CLASS (animation)->get_animation_time (animation);
+}
+
 G_DEFINE_TYPE (GdkPixbufAnimationIter, gdk_pixbuf_animation_iter, G_TYPE_OBJECT);
 
 static void
diff --git a/gdk-pixbuf/gdk-pixbuf-animation.h b/gdk-pixbuf/gdk-pixbuf-animation.h
index 32757ee..261ad02 100644
--- a/gdk-pixbuf/gdk-pixbuf-animation.h
+++ b/gdk-pixbuf/gdk-pixbuf-animation.h
@@ -67,6 +67,8 @@ int                 gdk_pixbuf_animation_get_width       (GdkPixbufAnimation *an
 int                 gdk_pixbuf_animation_get_height      (GdkPixbufAnimation *animation);
 gboolean            gdk_pixbuf_animation_is_static_image  (GdkPixbufAnimation *animation);
 GdkPixbuf          *gdk_pixbuf_animation_get_static_image (GdkPixbufAnimation *animation);
+guint               gdk_pixbuf_animation_get_frame_count    (GdkPixbufAnimation *animation);
+guint               gdk_pixbuf_animation_get_animation_time (GdkPixbufAnimation *animation);
 
 GdkPixbufAnimationIter *gdk_pixbuf_animation_get_iter                        (GdkPixbufAnimation     *animation,
                                                                               const GTimeVal         *start_time);
@@ -110,6 +112,9 @@ struct _GdkPixbufAnimationClass {
         GdkPixbufAnimationIter* (*get_iter) (GdkPixbufAnimation *anim,
                                              const GTimeVal     *start_time);
 
+        guint                   (*get_frame_count)    (GdkPixbufAnimation *anim);
+
+        guint                   (*get_animation_time) (GdkPixbufAnimation *anim);
 };
 
 
diff --git a/gdk-pixbuf/io-ani-animation.c b/gdk-pixbuf/io-ani-animation.c
index b3a236c..de5cd7f 100644
--- a/gdk-pixbuf/io-ani-animation.c
+++ b/gdk-pixbuf/io-ani-animation.c
@@ -37,7 +37,8 @@ static void                    gdk_pixbuf_ani_anim_get_size (GdkPixbufAnimation
                                                              int                *height);
 static GdkPixbufAnimationIter* gdk_pixbuf_ani_anim_get_iter (GdkPixbufAnimation *anim,
                                                              const GTimeVal     *start_time);
-
+static guint                   gdk_pixbuf_ani_anim_get_frame_count    (GdkPixbufAnimation *anim);
+static guint                   gdk_pixbuf_ani_anim_get_animation_time (GdkPixbufAnimation *anim);
 
 
 
@@ -83,6 +84,8 @@ gdk_pixbuf_ani_anim_class_init (GdkPixbufAniAnimClass *klass)
         anim_class->get_static_image = gdk_pixbuf_ani_anim_get_static_image;
         anim_class->get_size = gdk_pixbuf_ani_anim_get_size;
         anim_class->get_iter = gdk_pixbuf_ani_anim_get_iter;
+        anim_class->get_frame_count = gdk_pixbuf_ani_anim_get_frame_count;
+        anim_class->get_animation_time = gdk_pixbuf_ani_anim_get_animation_time;
 }
 
 static void
@@ -170,6 +173,26 @@ gdk_pixbuf_ani_anim_get_iter (GdkPixbufAnimation *anim,
         return GDK_PIXBUF_ANIMATION_ITER (iter);
 }
 
+static guint 
+gdk_pixbuf_ani_anim_get_frame_count (GdkPixbufAnimation *anim)
+{
+  GdkPixbufAniAnim *ani_anim;
+
+  ani_anim = GDK_PIXBUF_ANI_ANIM (anim);
+
+  return ani_anim->n_frames;
+}
+
+static guint
+gdk_pixbuf_ani_anim_get_animation_time (GdkPixbufAnimation *anim)
+{
+  GdkPixbufAniAnim *ani_anim;
+
+  ani_anim = GDK_PIXBUF_ANI_ANIM (anim);
+
+  return ani_anim->total_time;
+}
+
 
 
 static void gdk_pixbuf_ani_anim_iter_class_init (GdkPixbufAniAnimIterClass *klass);
diff --git a/gdk-pixbuf/io-gdip-animation.c b/gdk-pixbuf/io-gdip-animation.c
index 14cd034..8a735fd 100644
--- a/gdk-pixbuf/io-gdip-animation.c
+++ b/gdk-pixbuf/io-gdip-animation.c
@@ -37,6 +37,8 @@ static void                    gdk_pixbuf_gdip_anim_get_size (GdkPixbufAnimation
                                                              int                *height);
 static GdkPixbufAnimationIter* gdk_pixbuf_gdip_anim_get_iter (GdkPixbufAnimation *anim,
                                                              const GTimeVal     *start_time);
+static guint                   gdk_pixbuf_gdip_anim_get_frame_count    (GdkPixbufAnimation *anim);
+static guint                   gdk_pixbuf_gdip_anim_get_animation_time (GdkPixbufAnimation *anim);
 
 static gpointer parent_class;
 
@@ -83,6 +85,8 @@ gdk_pixbuf_gdip_anim_class_init (GdkPixbufGdipAnimClass *klass)
         anim_class->get_static_image = gdk_pixbuf_gdip_anim_get_static_image;
         anim_class->get_size = gdk_pixbuf_gdip_anim_get_size;
         anim_class->get_iter = gdk_pixbuf_gdip_anim_get_iter;
+        anim_class->get_frame_count = gdk_pixbuf_gdip_anim_get_frame_count;
+        anim_class->get_animation_time = gdk_pixbuf_gdip_anim_get_animation_time;
 }
 
 static void
@@ -180,6 +184,26 @@ gdk_pixbuf_gdip_anim_get_iter (GdkPixbufAnimation *anim,
         return GDK_PIXBUF_ANIMATION_ITER (iter);
 }
 
+static guint 
+gdk_pixbuf_gdip_anim_get_frame_count (GdkPixbufAnimation *anim)
+{
+  GdkPixbufGdipAnim *gdip_anim;
+
+  gdip_anim = GDK_PIXBUF_GDIP_ANIM (anim);
+
+  return gdip_anim->n_frames;
+}
+
+static guint
+gdk_pixbuf_gif_anim_get_animation_time (GdkPixbufAnimation *anim)
+{
+  GdkPixbufGdipAnim *gdip_anim;
+
+  gdip_anim = GDK_PIXBUF_GDIP_ANIM (anim);
+
+  return gdip_anim->total_time;
+}
+
 static void gdk_pixbuf_gdip_anim_iter_class_init (GdkPixbufGdipAnimIterClass *klass);
 static void gdk_pixbuf_gdip_anim_iter_finalize   (GObject                   *object);
 
diff --git a/gdk-pixbuf/io-gif-animation.c b/gdk-pixbuf/io-gif-animation.c
index 580b057..7969dba 100644
--- a/gdk-pixbuf/io-gif-animation.c
+++ b/gdk-pixbuf/io-gif-animation.c
@@ -38,7 +38,8 @@ static void                    gdk_pixbuf_gif_anim_get_size (GdkPixbufAnimation
                                                              int                *height);
 static GdkPixbufAnimationIter* gdk_pixbuf_gif_anim_get_iter (GdkPixbufAnimation *anim,
                                                              const GTimeVal     *start_time);
-
+static guint                   gdk_pixbuf_gif_anim_get_frame_count    (GdkPixbufAnimation *anim);
+static guint                   gdk_pixbuf_gif_anim_get_animation_time (GdkPixbufAnimation *anim);
 
 
 
@@ -84,6 +85,8 @@ gdk_pixbuf_gif_anim_class_init (GdkPixbufGifAnimClass *klass)
         anim_class->get_static_image = gdk_pixbuf_gif_anim_get_static_image;
         anim_class->get_size = gdk_pixbuf_gif_anim_get_size;
         anim_class->get_iter = gdk_pixbuf_gif_anim_get_iter;
+        anim_class->get_frame_count = gdk_pixbuf_gif_anim_get_frame_count;
+        anim_class->get_animation_time = gdk_pixbuf_gif_anim_get_animation_time;
 }
 
 static void
@@ -185,6 +188,26 @@ gdk_pixbuf_gif_anim_get_iter (GdkPixbufAnimation *anim,
         return GDK_PIXBUF_ANIMATION_ITER (iter);
 }
 
+static guint 
+gdk_pixbuf_gif_anim_get_frame_count (GdkPixbufAnimation *anim)
+{
+  GdkPixbufGifAnim *gif_anim;
+
+  gif_anim = GDK_PIXBUF_GIF_ANIM (anim);
+
+  return gif_anim->n_frames;
+}
+
+static guint
+gdk_pixbuf_gif_anim_get_animation_time (GdkPixbufAnimation *anim)
+{
+  GdkPixbufGifAnim *gif_anim;
+
+  gif_anim = GDK_PIXBUF_GIF_ANIM (anim);
+
+  return gif_anim->total_time;
+}
+
 
 
 static void gdk_pixbuf_gif_anim_iter_class_init (GdkPixbufGifAnimIterClass *klass);
