I have written a GdkPixbuf loader for AVI files. Attached is a patch, and a tarball. - Jørgen Fogh
? aviloader.diff Index: gdk-pixbuf/Makefile.am =================================================================== RCS file: /cvs/gnome/gtk+/gdk-pixbuf/Makefile.am,v retrieving revision 1.138 diff --unified -r1.138 Makefile.am --- gdk-pixbuf/Makefile.am 20 Jun 2004 05:11:57 -0000 1.138 +++ gdk-pixbuf/Makefile.am 29 Jun 2004 18:08:04 -0000 @@ -47,6 +47,14 @@ module_libs = libgdk_pixbuf-$(GTK_API_VERSION).la $(GDK_PIXBUF_DEP_LIBS) # +# The AVI plugin. +# +libpixbufloader_avi_la_SOURCES = io-avi.c io-avi-animation.c io-avi-animation.h +libpixbufloader_avi_la_LDFLAGS = -avoid-version -module $(no_undefined) +libpixbufloader_avi_la_LIBADD = $(module_libs) +libpixbufloader_static_avi_la_SOURCES = io-avi.c + +# # The PNG plugin. # libpixbufloader_png_la_SOURCES = io-png.c @@ -158,6 +166,9 @@ libpixbufloader_pcx_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_pcx_la_LIBADD = $(module_libs) +AVI_LIB = libpixbufloader-avi.la +STATIC_AVI_LIB = libpixbufloader-static-avi.la + if HAVE_PNG PNG_LIB = libpixbufloader-png.la STATIC_PNG_LIB = libpixbufloader-static-png.la @@ -209,6 +220,7 @@ if BUILD_DYNAMIC_MODULES loader_LTLIBRARIES = \ + $(AVI_LIB) \ $(PNG_LIB) \ $(JPEG_LIB) \ $(GIF_LIB) \ @@ -231,6 +243,7 @@ loader_LTLIBRARIES = noinst_LTLIBRARIES = \ + $(STATIC_AVI_LIB) \ $(STATIC_PNG_LIB) \ $(STATIC_JPEG_LIB) \ $(STATIC_GIF_LIB) \ @@ -415,6 +428,7 @@ pixbufloader_jpeg.def \ pixbufloader_ras.def \ pixbufloader_gif.def \ + pixbufloader_avi.def \ pixbufloader_png.def \ pixbufloader_tiff.def \ pixbufloader_wbmp.def \ Index: gdk-pixbuf/gdk-pixbuf-io.c =================================================================== RCS file: /cvs/gnome/gtk+/gdk-pixbuf/gdk-pixbuf-io.c,v retrieving revision 1.94 diff --unified -r1.94 gdk-pixbuf-io.c --- gdk-pixbuf/gdk-pixbuf-io.c 5 Jun 2004 05:16:18 -0000 1.94 +++ gdk-pixbuf/gdk-pixbuf-io.c 29 Jun 2004 18:08:08 -0000 @@ -438,6 +438,7 @@ extern void MODULE_ENTRY (type, fill_info) (GdkPixbufFormat *info); \ extern void MODULE_ENTRY (type, fill_vtable) (GdkPixbufModule *module) +module (avi); module (png); module (bmp); module (wbmp); @@ -466,6 +467,13 @@ /* Ugly hack so we can use else if unconditionally below ;-) */ } +#ifdef INCLUDE_avi + else if (strcmp (image_module->module_name, "avi") == 0) { + fill_info = MODULE_ENTRY (avi, fill_info); + fill_vtable = MODULE_ENTRY (avi, fill_vtable); + } +#endif + #ifdef INCLUDE_png else if (strcmp (image_module->module_name, "png") == 0) { fill_info = MODULE_ENTRY (png, fill_info); @@ -585,9 +593,9 @@ gdk_pixbuf_io_init () { gchar *included_formats[] = { - "ani", "png", "bmp", "wbmp", "gif", - "ico", "jpeg", "pnm", "ras", "tiff", - "xpm", "xbm", "tga", "pcx", + "ani", "avi", "png", "bmp", "wbmp", + "gif", "ico", "jpeg", "pnm", "ras", + "tiff", "xpm", "xbm", "tga", "pcx", NULL }; gchar **name;
Attachment:
aviloader.tar.bz2
Description: application/bzip