renamed and reorganized "jp3d" directory to "openjpeg3d". Is now a standalone directo...
[openjpeg.git] / libopenjpeg3d / jp3d_lib.c
1 /*\r
2  * Copyright (c) 2005, Herve Drolon, FreeImage Team\r
3  * All rights reserved.\r
4  *\r
5  * Redistribution and use in source and binary forms, with or without\r
6  * modification, are permitted provided that the following conditions\r
7  * are met:\r
8  * 1. Redistributions of source code must retain the above copyright\r
9  *    notice, this list of conditions and the following disclaimer.\r
10  * 2. Redistributions in binary form must reproduce the above copyright\r
11  *    notice, this list of conditions and the following disclaimer in the\r
12  *    documentation and/or other materials provided with the distribution.\r
13  *\r
14  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'\r
15  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\r
18  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
19  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
20  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
21  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
22  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
23  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
24  * POSSIBILITY OF SUCH DAMAGE.\r
25  */\r
26 \r
27 #ifdef _WIN32\r
28 #include <windows.h>\r
29 #else\r
30 #include <sys/time.h>\r
31 #include <sys/resource.h>\r
32 #include <sys/times.h>\r
33 #endif /* _WIN32 */\r
34 #include "opj_includes.h"\r
35 \r
36 double opj_clock() {\r
37 #ifdef _WIN32\r
38         /* WIN32: use QueryPerformance (very accurate) */\r
39     LARGE_INTEGER freq , t ;\r
40     /* freq is the clock speed of the CPU */\r
41     QueryPerformanceFrequency(&freq) ;\r
42         /* cout << "freq = " << ((double) freq.QuadPart) << endl; */\r
43     /* t is the high resolution performance counter (see MSDN) */\r
44     QueryPerformanceCounter ( & t ) ;\r
45     return ( t.QuadPart /(double) freq.QuadPart ) ;\r
46 #else\r
47         /* Unix or Linux: use resource usage */\r
48     struct rusage t;\r
49     double procTime;\r
50     /* (1) Get the rusage data structure at this moment (man getrusage) */\r
51     getrusage(0,&t);\r
52     /* (2) What is the elapsed time ? - CPU time = User time + System time */\r
53         /* (2a) Get the seconds */\r
54     procTime = t.ru_utime.tv_sec + t.ru_stime.tv_sec;\r
55     /* (2b) More precisely! Get the microseconds part ! */\r
56     return ( procTime + (t.ru_utime.tv_usec + t.ru_stime.tv_usec) * 1e-6 ) ;\r
57 #endif /* _WIN32 */\r
58 }\r
59 \r
60 void* opj_malloc( size_t size ) {\r
61         void *memblock = malloc(size);\r
62         if(memblock) {\r
63                 memset(memblock, 0, size);\r
64         }\r
65         return memblock;\r
66 }\r
67 \r
68 void* opj_realloc( void *memblock, size_t size ) {\r
69         return realloc(memblock, size);\r
70 }\r
71 \r
72 void opj_free( void *memblock ) {\r
73         free(memblock);\r
74 }\r
75 \r
76 \r