]> granicus.if.org Git - openjpeg/commitdiff
fixed a few bugs
authorAaron Boxer <boxerab@gmail.com>
Sat, 20 Jun 2015 04:01:19 +0000 (00:01 -0400)
committerAntonin Descampe <antonin@gmail.com>
Fri, 3 Jul 2015 13:22:58 +0000 (15:22 +0200)
src/bin/jp2/opj_compress.c
src/bin/jp2/opj_decompress.c
src/lib/openjp2/opj_includes.h

index 9ad6175f9f731bf028a18fc080484ee7dc3c5822..ba3bb281075062f6dcacd61931078d05b9a741ac 100644 (file)
@@ -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;
 }
index cfc04a9eda7a9f3a81ec64338acd48277cc13611..c6e5cff8d22fe4c60bff42ee8bc562cfc99af829 100644 (file)
@@ -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*/
index 8fbe1a536d406d39cbc6789661aca8c59d22bce2..d0130028373be944835ddd988e4e2dc20a4f31e5 100644 (file)
        #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