From dcd74620e5e0a3cccd093dca00301e8d818a0353 Mon Sep 17 00:00:00 2001 From: Joseph Eagar Date: Sun, 11 Mar 2007 12:27:57 +0000 Subject: =Cineon Bug= In my attempts to get cinepaint's cineon code to work with files in memory, I accidently rewrote something that should have been left as it is. This causes images whose image buffers didn't start right after the cineon header to become "shifted" to the left. The DPX code looks correct, though. --- source/blender/imbuf/intern/cineon/cineon_dpx.c | 22 ++++++++++------------ source/blender/imbuf/intern/cineon/cineonlib.c | 3 ++- 2 files changed, 12 insertions(+), 13 deletions(-) (limited to 'source/blender/imbuf/intern/cineon') diff --git a/source/blender/imbuf/intern/cineon/cineon_dpx.c b/source/blender/imbuf/intern/cineon/cineon_dpx.c index 4058f27b929..691b81745e0 100644 --- a/source/blender/imbuf/intern/cineon/cineon_dpx.c +++ b/source/blender/imbuf/intern/cineon/cineon_dpx.c @@ -47,7 +47,7 @@ static struct ImBuf *imb_load_dpx_cineon(unsigned char *mem, int use_cineon, int ImBuf *ibuf; LogImageFile *image; int x, y; - unsigned short *row; + unsigned short *row, *upix; int width, height, depth; float *frow; @@ -64,6 +64,7 @@ static struct ImBuf *imb_load_dpx_cineon(unsigned char *mem, int use_cineon, int logImageClose(image); return NULL; } + if (width == 0 && height == 0) { logImageClose(image); return NULL; @@ -72,23 +73,20 @@ static struct ImBuf *imb_load_dpx_cineon(unsigned char *mem, int use_cineon, int ibuf = IMB_allocImBuf(width, height, 32, IB_rectfloat | flags, 0); row = MEM_mallocN(sizeof(unsigned short)*width*depth, "row in cineon_dpx.c"); + frow = ibuf->rect_float+width*height*4; for (y = 0; y < height; y++) { - unsigned int index = (width) * (height-y-1); - index = index * 4; - - frow = &ibuf->rect_float[index]; - logImageGetRowBytes(image, row, y); + upix = row; + frow -= width*4; for (x=0; ximageOffset; - if (i >= size) { + if (logimage_fseek(cineon, cineon->imageOffset, SEEK_SET) != 0) { if (verbose) d_printf("Couldn't seek to image data at %d\n", cineon->imageOffset); cineonClose(cineon); return 0; } + cineon->fileYPos = 0; logImageGetByteConversionDefaults(&cineon->params); -- cgit v1.2.3