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:
Diffstat (limited to 'source/blender/imbuf/intern/cineon')
-rw-r--r--source/blender/imbuf/intern/cineon/cineon_dpx.c22
-rw-r--r--source/blender/imbuf/intern/cineon/cineonlib.c3
2 files changed, 12 insertions, 13 deletions
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; x<width; x++) {
- unsigned short *upix = &row[x*depth];
- float *fpix = &frow[x*4];
- fpix[0] = ((float)upix[0]) / 65535.0f;
- fpix[1] = ((float)upix[1]) / 65535.0f;
- fpix[2] = ((float)upix[2]) / 65535.0f;
- fpix[3] = 1.0f;
+ *(frow++) = ((float)*(upix++)) / 65535.0f;
+ *(frow++) = ((float)*(upix++)) / 65535.0f;
+ *(frow++) = ((float)*(upix++)) / 65535.0f;
+ *(frow++) = 1.0f;
}
+ frow -= width*4;
}
MEM_freeN(row);
diff --git a/source/blender/imbuf/intern/cineon/cineonlib.c b/source/blender/imbuf/intern/cineon/cineonlib.c
index 5253646be4d..91973927fab 100644
--- a/source/blender/imbuf/intern/cineon/cineonlib.c
+++ b/source/blender/imbuf/intern/cineon/cineonlib.c
@@ -662,11 +662,12 @@ cineonOpenFromMem(unsigned char *mem, unsigned int size) {
i = cineon->imageOffset;
- 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);