summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAaron Boxer <boxerab@gmail.com>2015-06-20 00:01:19 -0400
committerAntonin Descampe <antonin@gmail.com>2015-07-03 15:22:58 +0200
commit63476863856513a5bc3aa40654395977b0f9f9df (patch)
treea30639326713dde90aaddba6c6d76ba9d2aac410 /src
parent1a8f929111d43b44dcc380a7d8fb43500edcfd8a (diff)
fixed a few bugs
Diffstat (limited to 'src')
-rw-r--r--src/bin/jp2/opj_compress.c7
-rw-r--r--src/bin/jp2/opj_decompress.c7
-rw-r--r--src/lib/openjp2/opj_includes.h32
3 files changed, 36 insertions, 10 deletions
diff --git a/src/bin/jp2/opj_compress.c b/src/bin/jp2/opj_compress.c
index 9ad6175f..ba3bb281 100644
--- a/src/bin/jp2/opj_compress.c
+++ b/src/bin/jp2/opj_compress.c
@@ -1547,7 +1547,7 @@ OPJ_FLOAT64 opj_clock(void) {
/* cout << "freq = " << ((double) freq.QuadPart) << endl; */
/* t is the high resolution performance counter (see MSDN) */
QueryPerformanceCounter ( & t ) ;
- return ( t.QuadPart /(OPJ_FLOAT64) freq.QuadPart ) ;
+ return freq.QuadPart ? ( t.QuadPart /(OPJ_FLOAT64) freq.QuadPart ) : 0 ;
#else
/* Unix or Linux: use resource usage */
struct rusage t;
@@ -1871,8 +1871,9 @@ int main(int argc, char **argv) {
if(raw_cp.rawComps) free(raw_cp.rawComps);
t = opj_clock() - t;
- fprintf(stdout, "encode time: %d ms \n", (int)((t * 1000)/num_compressed_files));
- scanf("%d");
+ if (num_compressed_files)
+ fprintf(stdout, "encode time: %d ms \n", (int)((t * 1000)/num_compressed_files));
+ //getch());
return 0;
}
diff --git a/src/bin/jp2/opj_decompress.c b/src/bin/jp2/opj_decompress.c
index cfc04a9e..c6e5cff8 100644
--- a/src/bin/jp2/opj_decompress.c
+++ b/src/bin/jp2/opj_decompress.c
@@ -852,7 +852,7 @@ OPJ_FLOAT64 opj_clock(void) {
/* cout << "freq = " << ((double) freq.QuadPart) << endl; */
/* t is the high resolution performance counter (see MSDN) */
QueryPerformanceCounter ( & t ) ;
- return ( t.QuadPart /(OPJ_FLOAT64) freq.QuadPart ) ;
+ return freq.QuadPart ? (t.QuadPart / (OPJ_FLOAT64)freq.QuadPart) : 0;
#else
/* Unix or Linux: use resource usage */
struct rusage t;
@@ -1535,8 +1535,9 @@ int main(int argc, char **argv)
if(failed) remove(parameters.outfile);
}
destroy_parameters(&parameters);
- fprintf(stdout, "decode time: %d ms \n", (int)( (tCumulative * 1000) / numDecompressedImages));
- scanf("%d");
+ if (numDecompressedImages)
+ fprintf(stdout, "decode time: %d ms \n", (int)( (tCumulative * 1000) / numDecompressedImages));
+ //getch();
return failed ? EXIT_FAILURE : EXIT_SUCCESS;
}
/*end main*/
diff --git a/src/lib/openjp2/opj_includes.h b/src/lib/openjp2/opj_includes.h
index 8fbe1a53..d0130028 100644
--- a/src/lib/openjp2/opj_includes.h
+++ b/src/lib/openjp2/opj_includes.h
@@ -118,15 +118,20 @@
#endif
#endif
+
+
/* MSVC before 2013 and Borland C do not have lrintf */
-#if defined(_MSC_VER) || defined(__BORLANDC__)
+#if defined(_MSC_VER)
+#include <intrin.h>
static INLINE long lrintf(float f){
#ifdef _M_X64
- return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f));
+ return _mm_cvt_ss2si(_mm_load_ss(&f));
+
+ // commented out line breaks many tests
+ ///return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f));
#else
int i;
-
- _asm{
+ _asm{
fld f
fistp i
};
@@ -136,6 +141,25 @@ static INLINE long lrintf(float f){
}
#endif
+#if defined(__BORLANDC__)
+static INLINE long lrintf(float f) {
+#ifdef _M_X64
+ return (long)((f>0.0f) ? (f + 0.5f):(f -0.5f));
+#else
+ int i;
+
+ _asm {
+ fld f
+ fistp i
+ };
+
+ return i;
+#endif
+}
+#endif
+
+
+
#if defined(_MSC_VER) && (_MSC_VER < 1400)
#define vsnprintf _vsnprintf
#endif