Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Haarsma <phaseIV@zonnet.nl>2003-04-28 06:15:46 +0400
committerRob Haarsma <phaseIV@zonnet.nl>2003-04-28 06:15:46 +0400
commit706ccc040159356056d423c54a920cfcd1681ebf (patch)
treee17725338956c61e05274744c16f1f71699b57c4 /source/blender/imbuf/intern/util.c
parent1ab53ee998a266ab89d0bc33e2eb2fb1d69b1c4c (diff)
Added Quicktime support for OSX and Windows.
This code allows you to load Quicktime images and movies as textures and render animations to Quicktime movies. Note that the selected output codec is *not* saved in the blendfile. To enable Quicktime functionality you need the SDK from Apple: OSX: ftp://ftp.apple.com/developer/Development_Kits/QT6SDK_Mac.hqx Win: ftp://ftp.apple.com/developer/Development_Kits/QT6SDK_Win.hqx Add the \QTDevWin\CIncludes and \QTDevWin\Libraries directories from this SDK to your build environment. Enable the WITH_QUICKTIME compile flag in the following directories: bf\blender\source\blender\imbuf bf\blender\source\blender\src bf\blender\source\blender\render bf\blender\source\creator
Diffstat (limited to 'source/blender/imbuf/intern/util.c')
-rw-r--r--source/blender/imbuf/intern/util.c190
1 files changed, 184 insertions, 6 deletions
diff --git a/source/blender/imbuf/intern/util.c b/source/blender/imbuf/intern/util.c
index 8f9c35532f8..4fda7882dcd 100644
--- a/source/blender/imbuf/intern/util.c
+++ b/source/blender/imbuf/intern/util.c
@@ -34,6 +34,9 @@
#include "BLI_blenlib.h"
+#include "DNA_userdef_types.h"
+#include "BKE_global.h"
+
#include "imbuf.h"
#include "imbuf_patch.h"
#include "IMB_imbuf_types.h"
@@ -43,21 +46,34 @@
#include "IMB_png.h"
#include "IMB_bmp.h"
-#ifdef HAVE_CONFIG_H
-#include <config.h>
+#include "IMB_anim.h"
+
+#ifdef WITH_QUICKTIME
+#include "quicktime_import.h"
+#endif
+#ifdef WITH_FREEIMAGE
+#include "IMB_freeimage.h"
+#endif
+#ifdef WITH_IMAGEMAGICK
+#include "IMB_imagemagick.h"
#endif
+
+#define UTIL_DEBUG 0
+
/* from misc_util: flip the bytes from x */
#define GS(x) (((unsigned char *)(x))[0] << 8 | ((unsigned char *)(x))[1])
/* this one is only def-ed once, strangely... */
#define GSS(x) (((uchar *)(x))[1] << 8 | ((uchar *)(x))[0])
-int IMB_ispic(char *name)
+int IMB_ispic_name(char *name)
{
struct stat st;
int fp, buf[10];
int ofs = 0;
+
+ if(UTIL_DEBUG) printf("IMB_ispic_name: loading %s\n", name);
if (ib_stat(name,&st) == -1) return(0);
if (((st.st_mode) & S_IFMT) == S_IFREG){
@@ -84,11 +100,28 @@ int IMB_ispic(char *name)
/* if ((BIG_LONG(buf[0]) == 0x10000000) && ((BIG_LONG(buf[1]) & 0xf0ffffff) == 0)) return(TIM); */
}
- if (imb_is_a_png(buf)) return(PNG);
- if (imb_is_a_targa(buf)) return(TGA);
+ if (imb_is_a_png(buf)) return(PNG);
+ if (imb_is_a_targa(buf)) return(TGA);
/*
- if (imb_is_a_bmp(buf)) return(BMP);
+ if (imb_is_a_bmp(buf)) return(BMP);
*/
+
+#ifdef WITH_QUICKTIME
+#if defined(_WIN32) || defined(__APPLE__)
+ if(G.have_quicktime) {
+ if (imb_is_a_quicktime(name)) return(QUICKTIME);
+ }
+#endif
+#endif
+
+#ifdef WITH_FREEIMAGE
+ if (imb_is_a_freeimage(name)) return(FREEIMAGE);
+#endif
+
+#ifdef WITH_IMAGEMAGICK
+ if (imb_is_imagick(name)) return(IMAGEMAGICK);
+#endif
+
return(FALSE);
}
close(fp);
@@ -96,3 +129,148 @@ int IMB_ispic(char *name)
}
return(FALSE);
}
+
+
+
+int IMB_ispic(char *filename)
+{
+ if(U.uiflag & FILTERFILEEXTS) {
+ if (G.have_quicktime){
+ if( BLI_testextensie(filename, ".jpg")
+ || BLI_testextensie(filename, ".jpeg")
+ || BLI_testextensie(filename, ".tga")
+ || BLI_testextensie(filename, ".rgb")
+ || BLI_testextensie(filename, ".bmp")
+ || BLI_testextensie(filename, ".png")
+ || BLI_testextensie(filename, ".iff")
+ || BLI_testextensie(filename, ".lbm")
+ || BLI_testextensie(filename, ".gif")
+ || BLI_testextensie(filename, ".psd")
+ || BLI_testextensie(filename, ".tif")
+ || BLI_testextensie(filename, ".tiff")
+ || BLI_testextensie(filename, ".pct")
+ || BLI_testextensie(filename, ".pict")
+ || BLI_testextensie(filename, ".pntg") //macpaint
+ || BLI_testextensie(filename, ".qtif")
+#if defined(WITH_FREEIMAGE) || defined (WITH_IMAGEMAGICK) //nasty for now
+ || BLI_testextensie(filename, ".jng")
+ || BLI_testextensie(filename, ".mng")
+ || BLI_testextensie(filename, ".pbm")
+ || BLI_testextensie(filename, ".pgm")
+ || BLI_testextensie(filename, ".ppm")
+ || BLI_testextensie(filename, ".wbmp")
+ || BLI_testextensie(filename, ".cut")
+ || BLI_testextensie(filename, ".ico")
+ || BLI_testextensie(filename, ".koa")
+ || BLI_testextensie(filename, ".koala")
+ || BLI_testextensie(filename, ".pcd")
+ || BLI_testextensie(filename, ".pcx")
+ || BLI_testextensie(filename, ".ras")
+#endif
+ || BLI_testextensie(filename, ".sgi")) {
+ return IMB_ispic_name(filename);
+ } else {
+ return(FALSE);
+ }
+ } else { // no quicktime
+ if( BLI_testextensie(filename, ".jpg")
+ || BLI_testextensie(filename, ".jpeg")
+ || BLI_testextensie(filename, ".tga")
+ || BLI_testextensie(filename, ".rgb")
+ || BLI_testextensie(filename, ".bmp")
+ || BLI_testextensie(filename, ".png")
+ || BLI_testextensie(filename, ".iff")
+ || BLI_testextensie(filename, ".lbm")
+#if defined(WITH_FREEIMAGE) || defined (WITH_IMAGEMAGICK) //nasty for now
+ || BLI_testextensie(filename, ".jng")
+ || BLI_testextensie(filename, ".mng")
+ || BLI_testextensie(filename, ".pbm")
+ || BLI_testextensie(filename, ".pgm")
+ || BLI_testextensie(filename, ".ppm")
+ || BLI_testextensie(filename, ".wbmp")
+ || BLI_testextensie(filename, ".cut")
+ || BLI_testextensie(filename, ".ico")
+ || BLI_testextensie(filename, ".koa")
+ || BLI_testextensie(filename, ".koala")
+ || BLI_testextensie(filename, ".pcd")
+ || BLI_testextensie(filename, ".pcx")
+ || BLI_testextensie(filename, ".ras")
+ || BLI_testextensie(filename, ".gif")
+ || BLI_testextensie(filename, ".psd")
+ || BLI_testextensie(filename, ".tif")
+ || BLI_testextensie(filename, ".tiff")
+#endif
+ || BLI_testextensie(filename, ".sgi")) {
+ return IMB_ispic_name(filename);
+ }
+ else {
+ return(FALSE);
+ }
+ }
+ } else { // no FILTERFILEEXTS
+ return IMB_ispic_name(filename);
+ }
+}
+
+
+
+static int isavi (char *name) {
+ return AVI_is_avi (name);
+}
+
+#ifdef WITH_QUICKTIME
+static int isqtime (char *name) {
+ return anim_is_quicktime (name);
+}
+#endif
+
+int imb_get_anim_type(char * name) {
+ int type;
+ struct stat st;
+
+ if(UTIL_DEBUG) printf("in getanimtype: %s\n", name);
+
+ if (ib_stat(name,&st) == -1) return(0);
+ if (((st.st_mode) & S_IFMT) != S_IFREG) return(0);
+
+ if (isavi(name)) return (ANIM_AVI);
+
+ if (ismovie(name)) return (ANIM_MOVIE);
+#ifdef WITH_QUICKTIME
+ if (isqtime(name)) return (ANIM_QTIME);
+#endif
+ type = IMB_ispic(name);
+ if (type == ANIM) return (ANIM_ANIM5);
+ if (type) return(ANIM_SEQUENCE);
+ return(0);
+}
+
+int IMB_isanim(char *filename) {
+ int type;
+
+ if(U.uiflag & FILTERFILEEXTS) {
+ if (G.have_quicktime){
+ if( BLI_testextensie(filename, ".avi")
+ || BLI_testextensie(filename, ".flc")
+ || BLI_testextensie(filename, ".mov")
+ || BLI_testextensie(filename, ".movie")
+ || BLI_testextensie(filename, ".mv")) {
+ type = imb_get_anim_type(filename);
+ } else {
+ return(FALSE);
+ }
+ } else { // no quicktime
+ if( BLI_testextensie(filename, ".avi")
+ || BLI_testextensie(filename, ".mv")) {
+ type = imb_get_anim_type(filename);
+ }
+ else {
+ return(FALSE);
+ }
+ }
+ } else { // no FILTERFILEEXTS
+ type = imb_get_anim_type(filename);
+ }
+
+ return (type && type!=ANIM_SEQUENCE);
+}