All pastes #204109 Raw Edit

elubie

public text v1 · immutable
#204109 ·published 2006-10-15 17:50 UTC
rendered paste body
struct ImBuf *IMB_loadifffile(int file, int flags) {
	struct ImBuf *ibuf;
	int size, *mem;
	double time_start, time_file, time_mem, time_all;

	if (file == -1) return (0);
	
	time_start= PIL_check_seconds_timer();

	size = BLI_filesize(file);

#if defined(AMIGA) || defined(__BeOS) || defined(WIN32)
	mem= (int *)malloc(size);
	if (mem==0) {
		printf("Out of mem\n");
		return (0);
	}

	if (read(file, mem, size)!=size){
		printf("Read Error\n");
		free(mem);
		return (0);
	}
	
	time_file= PIL_check_seconds_timer();

	ibuf = IMB_ibImageFromMemory(mem, size, flags);

	time_mem= PIL_check_seconds_timer();

	free(mem);

	/* for jpeg read */
	lseek(file, 0L, SEEK_SET);
	time_all= PIL_check_seconds_timer();

	printf("readimage: %f   %f   %f\n", time_all-time_start, time_file-time_start, time_mem-time_file);

#else
	mem= (int *)mmap(0,size,PROT_READ,MAP_SHARED,file,0);
	if (mem==(int *)-1){
		printf("Couldn't get mapping\n");
		return (0);
	}

	ibuf = IMB_ibImageFromMemory(mem, size, flags);

	if (munmap( (void *) mem, size)){
		printf("Couldn't unmap file.\n");
	}
#endif
	return(ibuf);
}