Move tbench logs from stdout to stderr

gtest output prints to stdout. Printing unit test logs to stderr
allows the two to be easily separated using stream redirection.

Bug: 993876
Change-Id: I52d9d04ce7d6d883e9de09595fbe5a6de262c2ca
diff --git a/README.chromium b/README.chromium
index 2e2a417..7d44f3a 100644
--- a/README.chromium
+++ b/README.chromium
@@ -76,6 +76,7 @@
   - Move tjunittest logs from stdout to stderr
   - Refactor tjbench.c to provide test interface
   - Add gtest wrapper for tjbench tests
+  - Move tbench logs from stdout to stderr
 
 Refer to working-with-nested-repos [1] for details of how to setup your git
 svn client to update the code (for making local changes, cherry picking from
diff --git a/tjbench.c b/tjbench.c
index 94a0c5e..f555fae 100644
--- a/tjbench.c
+++ b/tjbench.c
@@ -38,7 +38,7 @@
 
 
 #define _throw(op, err) { \
-  printf("ERROR in line %d while %s:\n%s\n", __LINE__, op, err); \
+  fprintf(stderr, "ERROR in line %d while %s:\n%s\n", __LINE__, op, err); \
   retval = -1;  goto bailout; \
 }
 #define _throwunix(m)  _throw(m, strerror(errno))
@@ -48,8 +48,8 @@
 static int tjErrorLine = -1, tjErrorCode = -1;
 
 #define _throwtjg(m) { \
-  printf("ERROR in line %d while %s:\n%s\n", __LINE__, m, \
-         tjGetErrorStr2(NULL)); \
+  fprintf(stderr, "ERROR in line %d while %s:\n%s\n", __LINE__, m, \
+          tjGetErrorStr2(NULL)); \
   retval = -1;  goto bailout; \
 }
 
@@ -65,12 +65,13 @@
       strncpy(tjErrorMsg, m, JMSG_LENGTH_MAX - 1); \
       tjErrorCode = _tjErrorCode; \
       tjErrorLine = __LINE__; \
-      printf("WARNING in line %d while %s:\n%s\n", __LINE__, m, _tjErrorStr); \
+      fprintf(stderr, "WARNING in line %d while %s:\n%s\n", __LINE__, m, \
+              _tjErrorStr); \
     } \
   } else { \
-    printf("%s in line %d while %s:\n%s\n", \
-           _tjErrorCode == TJERR_WARNING ? "WARNING" : "ERROR", __LINE__, m, \
-           _tjErrorStr); \
+    fprintf(stderr, "%s in line %d while %s:\n%s\n", \
+            _tjErrorCode == TJERR_WARNING ? "WARNING" : "ERROR", __LINE__, m, \
+            _tjErrorStr); \
     retval = -1;  goto bailout; \
   } \
 }
@@ -227,24 +228,26 @@
   handle = NULL;
 
   if (quiet) {
-    printf("%-6s%s",
-           sigfig((double)(w * h) / 1000000. * (double)iter / elapsed, 4,
-                  tempStr, 1024),
-           quiet == 2 ? "\n" : "  ");
+    fprintf(stderr, "%-6s%s",
+            sigfig((double)(w * h) / 1000000. * (double)iter / elapsed, 4,
+                   tempStr, 1024),
+            quiet == 2 ? "\n" : "  ");
     if (doYUV)
-      printf("%s\n",
-             sigfig((double)(w * h) / 1000000. * (double)iter / elapsedDecode,
-                    4, tempStr, 1024));
-    else if (quiet != 2) printf("\n");
+      fprintf(stderr, "%s\n",
+              sigfig((double)(w * h) / 1000000. * (double)iter / elapsedDecode,
+                     4, tempStr, 1024));
+    else if (quiet != 2) fprintf(stderr, "\n");
   } else {
-    printf("%s --> Frame rate:         %f fps\n",
-           doYUV ? "Decomp to YUV" : "Decompress   ", (double)iter / elapsed);
-    printf("                  Throughput:         %f Megapixels/sec\n",
-           (double)(w * h) / 1000000. * (double)iter / elapsed);
+    fprintf(stderr, "%s --> Frame rate:         %f fps\n",
+            doYUV ? "Decomp to YUV" : "Decompress   ", (double)iter / elapsed);
+    fprintf(stderr,
+            "                  Throughput:         %f Megapixels/sec\n",
+            (double)(w * h) / 1000000. * (double)iter / elapsed);
     if (doYUV) {
-      printf("YUV Decode    --> Frame rate:         %f fps\n",
-             (double)iter / elapsedDecode);
-      printf("                  Throughput:         %f Megapixels/sec\n",
+      fprintf(stderr, "YUV Decode    --> Frame rate:         %f fps\n",
+              (double)iter / elapsedDecode);
+      fprintf(stderr,
+              "                  Throughput:         %f Megapixels/sec\n",
              (double)(w * h) / 1000000. * (double)iter / elapsedDecode);
     }
   }
@@ -267,7 +270,7 @@
   ptr = strrchr(tempStr, '.');
   snprintf(ptr, 1024 - (ptr - tempStr), "-err.%s", ext);
   if (srcBuf && sf.num == 1 && sf.denom == 1) {
-    if (!quiet) printf("Compression error written to %s.\n", tempStr);
+    if (!quiet) fprintf(stderr, "Compression error written to %s.\n", tempStr);
     if (subsamp == TJ_GRAYSCALE) {
       int index, index2;
 
@@ -326,9 +329,9 @@
     _throwunix("allocating temporary image buffer");
 
   if (!quiet)
-    printf(">>>>>  %s (%s) <--> JPEG %s Q%d  <<<<<\n", pfStr,
-           (flags & TJFLAG_BOTTOMUP) ? "Bottom-up" : "Top-down",
-           subNameLong[subsamp], jpegQual);
+    fprintf(stderr, ">>>>>  %s (%s) <--> JPEG %s Q%d  <<<<<\n", pfStr,
+            (flags & TJFLAG_BOTTOMUP) ? "Bottom-up" : "Top-down",
+            subNameLong[subsamp], jpegQual);
 
   for (tilew = doTile ? 8 : w, tileh = doTile ? 8 : h; ;
        tilew *= 2, tileh *= 2) {
@@ -355,9 +358,9 @@
 
     /* Compression test */
     if (quiet == 1)
-      printf("%-4s (%s)  %-5s    %-3d   ", pfStr,
-             (flags & TJFLAG_BOTTOMUP) ? "BU" : "TD", subNameLong[subsamp],
-             jpegQual);
+      fprintf(stderr, "%-4s (%s)  %-5s    %-3d   ", pfStr,
+              (flags & TJFLAG_BOTTOMUP) ? "BU" : "TD", subNameLong[subsamp],
+              jpegQual);
     for (i = 0; i < h; i++)
       memcpy(&tmpBuf[pitch * i], &srcBuf[w * ps * i], w * ps);
     if ((handle = tjInitCompress()) == NULL)
@@ -419,45 +422,52 @@
     if (tjDestroy(handle) == -1) _throwtj("executing tjDestroy()");
     handle = NULL;
 
-    if (quiet == 1) printf("%-5d  %-5d   ", tilew, tileh);
+    if (quiet == 1) fprintf(stderr, "%-5d  %-5d   ", tilew, tileh);
     if (quiet) {
       if (doYUV)
-        printf("%-6s%s",
-               sigfig((double)(w * h) / 1000000. *
-                      (double)iter / elapsedEncode, 4, tempStr, 1024),
-               quiet == 2 ? "\n" : "  ");
-      printf("%-6s%s",
+        fprintf(stderr, "%-6s%s",
+                sigfig((double)(w * h) / 1000000. *
+                       (double)iter / elapsedEncode, 4, tempStr, 1024),
+                quiet == 2 ? "\n" : "  ");
+      fprintf(stderr, "%-6s%s",
              sigfig((double)(w * h) / 1000000. * (double)iter / elapsed, 4,
                     tempStr, 1024),
              quiet == 2 ? "\n" : "  ");
-      printf("%-6s%s",
-             sigfig((double)(w * h * ps) / (double)totalJpegSize, 4, tempStr2,
-                    80),
-             quiet == 2 ? "\n" : "  ");
+      fprintf(stderr, "%-6s%s",
+              sigfig((double)(w * h * ps) / (double)totalJpegSize, 4, tempStr2,
+                     80),
+              quiet == 2 ? "\n" : "  ");
     } else {
-      printf("\n%s size: %d x %d\n", doTile ? "Tile" : "Image", tilew, tileh);
+      fprintf(stderr, "\n%s size: %d x %d\n", doTile ? "Tile" : "Image", tilew,
+              tileh);
       if (doYUV) {
-        printf("Encode YUV    --> Frame rate:         %f fps\n",
-               (double)iter / elapsedEncode);
-        printf("                  Output image size:  %d bytes\n", yuvSize);
-        printf("                  Compression ratio:  %f:1\n",
-               (double)(w * h * ps) / (double)yuvSize);
-        printf("                  Throughput:         %f Megapixels/sec\n",
-               (double)(w * h) / 1000000. * (double)iter / elapsedEncode);
-        printf("                  Output bit stream:  %f Megabits/sec\n",
-               (double)yuvSize * 8. / 1000000. * (double)iter / elapsedEncode);
+        fprintf(stderr, "Encode YUV    --> Frame rate:         %f fps\n",
+                (double)iter / elapsedEncode);
+        fprintf(stderr, "                  Output image size:  %d bytes\n",
+                yuvSize);
+        fprintf(stderr, "                  Compression ratio:  %f:1\n",
+                (double)(w * h * ps) / (double)yuvSize);
+        fprintf(stderr,
+                "                  Throughput:         %f Megapixels/sec\n",
+                (double)(w * h) / 1000000. * (double)iter / elapsedEncode);
+        fprintf(stderr,
+                "                  Output bit stream:  %f Megabits/sec\n",
+                (double)yuvSize * 8. / 1000000. * (double)iter / elapsedEncode
+               );
       }
-      printf("%s --> Frame rate:         %f fps\n",
-             doYUV ? "Comp from YUV" : "Compress     ",
-             (double)iter / elapsed);
-      printf("                  Output image size:  %d bytes\n",
-             totalJpegSize);
-      printf("                  Compression ratio:  %f:1\n",
-             (double)(w * h * ps) / (double)totalJpegSize);
-      printf("                  Throughput:         %f Megapixels/sec\n",
-             (double)(w * h) / 1000000. * (double)iter / elapsed);
-      printf("                  Output bit stream:  %f Megabits/sec\n",
-             (double)totalJpegSize * 8. / 1000000. * (double)iter / elapsed);
+      fprintf(stderr, "%s --> Frame rate:         %f fps\n",
+              doYUV ? "Comp from YUV" : "Compress     ",
+              (double)iter / elapsed);
+      fprintf(stderr, "                  Output image size:  %d bytes\n",
+              totalJpegSize);
+      fprintf(stderr, "                  Compression ratio:  %f:1\n",
+              (double)(w * h * ps) / (double)totalJpegSize);
+      fprintf(stderr,
+              "                  Throughput:         %f Megapixels/sec\n",
+              (double)(w * h) / 1000000. * (double)iter / elapsed);
+      fprintf(stderr,
+              "                  Output bit stream:  %f Megabits/sec\n",
+              (double)totalJpegSize * 8. / 1000000. * (double)iter / elapsed);
     }
     if (tilew == w && tileh == h && doWrite) {
       snprintf(tempStr, 1024, "%s_%s_Q%d.jpg", fileName, subName[subsamp],
@@ -467,7 +477,7 @@
       if (fwrite(jpegBuf[0], jpegSize[0], 1, file) != 1)
         _throwunix("writing reference image");
       fclose(file);  file = NULL;
-      if (!quiet) printf("Reference image written to %s\n", tempStr);
+      if (!quiet) fprintf(stderr, "Reference image written to %s\n", tempStr);
     }
 
     /* Decompression test */
@@ -549,18 +559,20 @@
   }
 
   if (quiet == 1) {
-    printf("All performance values in Mpixels/sec\n\n");
-    printf("Bitmap     JPEG   JPEG     %s  %s   Xform   Comp    Decomp  ",
-           doTile ? "Tile " : "Image", doTile ? "Tile " : "Image");
-    if (doYUV) printf("Decode");
-    printf("\n");
-    printf("Format     CS     Subsamp  Width  Height  Perf    Ratio   Perf    ");
-    if (doYUV) printf("Perf");
-    printf("\n\n");
+    fprintf(stderr, "All performance values in Mpixels/sec\n\n");
+    fprintf(stderr,
+            "Bitmap     JPEG   JPEG     %s  %s   Xform   Comp    Decomp  ",
+            doTile ? "Tile " : "Image", doTile ? "Tile " : "Image");
+    if (doYUV) fprintf(stderr, "Decode");
+    fprintf(stderr, "\n");
+    fprintf(stderr,
+        "Format     CS     Subsamp  Width  Height  Perf    Ratio   Perf    ");
+    if (doYUV) fprintf(stderr, "Perf");
+    fprintf(stderr, "\n\n");
   } else if (!quiet)
-    printf(">>>>>  JPEG %s --> %s (%s)  <<<<<\n",
-           formatName(subsamp, cs, tempStr), pixFormatStr[pf],
-           (flags & TJFLAG_BOTTOMUP) ? "Bottom-up" : "Top-down");
+    fprintf(stderr, ">>>>>  JPEG %s --> %s (%s)  <<<<<\n",
+            formatName(subsamp, cs, tempStr), pixFormatStr[pf],
+            (flags & TJFLAG_BOTTOMUP) ? "Bottom-up" : "Top-down");
 
   for (tilew = doTile ? 16 : w, tileh = doTile ? 16 : h; ;
        tilew *= 2, tileh *= 2) {
@@ -587,15 +599,16 @@
 
     tw = w;  th = h;  ttilew = tilew;  ttileh = tileh;
     if (!quiet) {
-      printf("\n%s size: %d x %d", doTile ? "Tile" : "Image", ttilew, ttileh);
+      fprintf(stderr, "\n%s size: %d x %d", doTile ? "Tile" : "Image", ttilew,
+              ttileh);
       if (sf.num != 1 || sf.denom != 1)
-        printf(" --> %d x %d", TJSCALED(tw, sf), TJSCALED(th, sf));
-      printf("\n");
+        fprintf(stderr, " --> %d x %d", TJSCALED(tw, sf), TJSCALED(th, sf));
+      fprintf(stderr, "\n");
     } else if (quiet == 1) {
-      printf("%-4s (%s)  %-5s  %-5s    ", pixFormatStr[pf],
-             (flags & TJFLAG_BOTTOMUP) ? "BU" : "TD", csName[cs],
-             subNameLong[subsamp]);
-      printf("%-5d  %-5d   ", tilew, tileh);
+      fprintf(stderr, "%-4s (%s)  %-5s  %-5s    ", pixFormatStr[pf],
+              (flags & TJFLAG_BOTTOMUP) ? "BU" : "TD", csName[cs],
+              subNameLong[subsamp]);
+      fprintf(stderr, "%-5d  %-5d   ", tilew, tileh);
     }
 
     tsubsamp = subsamp;
@@ -665,26 +678,28 @@
         totalJpegSize += jpegSize[tile];
 
       if (quiet) {
-        printf("%-6s%s%-6s%s",
-               sigfig((double)(w * h) / 1000000. / elapsed, 4, tempStr, 80),
-               quiet == 2 ? "\n" : "  ",
-               sigfig((double)(w * h * ps) / (double)totalJpegSize, 4,
-                      tempStr2, 80),
-               quiet == 2 ? "\n" : "  ");
+        fprintf(stderr, "%-6s%s%-6s%s",
+                sigfig((double)(w * h) / 1000000. / elapsed, 4, tempStr, 80),
+                quiet == 2 ? "\n" : "  ",
+                sigfig((double)(w * h * ps) / (double)totalJpegSize, 4,
+                       tempStr2, 80),
+                quiet == 2 ? "\n" : "  ");
       } else if (!quiet) {
-        printf("Transform     --> Frame rate:         %f fps\n",
-               1.0 / elapsed);
-        printf("                  Output image size:  %lu bytes\n",
-               totalJpegSize);
-        printf("                  Compression ratio:  %f:1\n",
-               (double)(w * h * ps) / (double)totalJpegSize);
-        printf("                  Throughput:         %f Megapixels/sec\n",
-               (double)(w * h) / 1000000. / elapsed);
-        printf("                  Output bit stream:  %f Megabits/sec\n",
-               (double)totalJpegSize * 8. / 1000000. / elapsed);
+        fprintf(stderr, "Transform     --> Frame rate:         %f fps\n",
+                1.0 / elapsed);
+        fprintf(stderr, "                  Output image size:  %lu bytes\n",
+                totalJpegSize);
+        fprintf(stderr, "                  Compression ratio:  %f:1\n",
+                (double)(w * h * ps) / (double)totalJpegSize);
+        fprintf(stderr,
+                "                  Throughput:         %f Megapixels/sec\n",
+                (double)(w * h) / 1000000. / elapsed);
+        fprintf(stderr,
+                "                  Output bit stream:  %f Megabits/sec\n",
+                (double)totalJpegSize * 8. / 1000000. / elapsed);
       }
     } else {
-      if (quiet == 1) printf("N/A     N/A     ");
+      if (quiet == 1) fprintf(stderr, "N/A     N/A     ");
       tjFree(jpegBuf[0]);
       jpegBuf[0] = NULL;
       decompsrc = 1;
@@ -697,7 +712,7 @@
                  decompsrc ? &srcSize : jpegSize, NULL, tw, th, tsubsamp, 0,
                  fileName, ttilew, ttileh) == -1)
         goto bailout;
-    } else if (quiet == 1) printf("N/A\n");
+    } else if (quiet == 1) fprintf(stderr, "N/A\n");
 
     for (i = 0; i < ntilesw * ntilesh; i++) {
       tjFree(jpegBuf[i]);  jpegBuf[i] = NULL;
@@ -819,7 +834,7 @@
       decompOnly = 1;
   }
 
-  printf("\n");
+  fprintf(stderr, "\n");
 
   if (!decompOnly) {
     minArg = 3;
@@ -839,16 +854,16 @@
       if (!strcasecmp(argv[i], "-tile")) {
         doTile = 1;  xformOpt |= TJXOPT_CROP;
       } else if (!strcasecmp(argv[i], "-fastupsample")) {
-        printf("Using fast upsampling code\n\n");
+        fprintf(stderr, "Using fast upsampling code\n\n");
         flags |= TJFLAG_FASTUPSAMPLE;
       } else if (!strcasecmp(argv[i], "-fastdct")) {
-        printf("Using fastest DCT/IDCT algorithm\n\n");
+        fprintf(stderr, "Using fastest DCT/IDCT algorithm\n\n");
         flags |= TJFLAG_FASTDCT;
       } else if (!strcasecmp(argv[i], "-accuratedct")) {
-        printf("Using most accurate DCT/IDCT algorithm\n\n");
+        fprintf(stderr, "Using most accurate DCT/IDCT algorithm\n\n");
         flags |= TJFLAG_ACCURATEDCT;
       } else if (!strcasecmp(argv[i], "-progressive")) {
-        printf("Using progressive entropy coding\n\n");
+        fprintf(stderr, "Using progressive entropy coding\n\n");
         flags |= TJFLAG_PROGRESSIVE;
       } else if (!strcasecmp(argv[i], "-rgb"))
         pf = TJPF_RGB;
@@ -916,13 +931,13 @@
 
         if (temp >= 0.0) warmup = temp;
         else usage(argv[0]);
-        printf("Warmup time = %.1f seconds\n\n", warmup);
+        fprintf(stderr, "Warmup time = %.1f seconds\n\n", warmup);
       } else if (!strcasecmp(argv[i], "-alloc"))
         flags &= (~TJFLAG_NOREALLOC);
       else if (!strcasecmp(argv[i], "-bmp"))
         ext = "bmp";
       else if (!strcasecmp(argv[i], "-yuv")) {
-        printf("Testing YUV planar encoding/decoding\n\n");
+        fprintf(stderr, "Testing YUV planar encoding/decoding\n\n");
         doYUV = 1;
       } else if (!strcasecmp(argv[i], "-yuvpad") && i < argc - 1) {
         int temp = atoi(argv[++i]);
@@ -953,14 +968,14 @@
   }
 
   if ((sf.num != 1 || sf.denom != 1) && doTile) {
-    printf("Disabling tiled compression/decompression tests, because those tests do not\n");
-    printf("work when scaled decompression is enabled.\n");
+    fprintf(stderr, "Disabling tiled compression/decompression tests, because those tests do not\n");
+    fprintf(stderr, "work when scaled decompression is enabled.\n");
     doTile = 0;
   }
 
   if ((flags & TJFLAG_NOREALLOC) == 0 && doTile) {
-    printf("Disabling tiled compression/decompression tests, because those tests do not\n");
-    printf("work when dynamic JPEG buffer allocation is enabled.\n\n");
+    fprintf(stderr, "Disabling tiled compression/decompression tests, because those tests do not\n");
+    fprintf(stderr, "work when dynamic JPEG buffer allocation is enabled.\n\n");
     doTile = 0;
   }
 
@@ -972,44 +987,44 @@
   }
 
   if (quiet == 1 && !decompOnly) {
-    printf("All performance values in Mpixels/sec\n\n");
-    printf("Bitmap     JPEG     JPEG  %s  %s   ",
-           doTile ? "Tile " : "Image", doTile ? "Tile " : "Image");
-    if (doYUV) printf("Encode  ");
-    printf("Comp    Comp    Decomp  ");
-    if (doYUV) printf("Decode");
-    printf("\n");
-    printf("Format     Subsamp  Qual  Width  Height  ");
-    if (doYUV) printf("Perf    ");
-    printf("Perf    Ratio   Perf    ");
-    if (doYUV) printf("Perf");
-    printf("\n\n");
+    fprintf(stderr, "All performance values in Mpixels/sec\n\n");
+    fprintf(stderr, "Bitmap     JPEG     JPEG  %s  %s   ",
+            doTile ? "Tile " : "Image", doTile ? "Tile " : "Image");
+    if (doYUV) fprintf(stderr, "Encode  ");
+    fprintf(stderr, "Comp    Comp    Decomp  ");
+    if (doYUV) fprintf(stderr, "Decode");
+    fprintf(stderr, "\n");
+    fprintf(stderr, "Format     Subsamp  Qual  Width  Height  ");
+    if (doYUV) fprintf(stderr, "Perf    ");
+    fprintf(stderr, "Perf    Ratio   Perf    ");
+    if (doYUV) fprintf(stderr, "Perf");
+    fprintf(stderr, "\n\n");
   }
 
   if (decompOnly) {
     decompTest(argv[1]);
-    printf("\n");
+    fprintf(stderr, "\n");
     goto bailout;
   }
   if (subsamp >= 0 && subsamp < TJ_NUMSAMP) {
     for (i = maxQual; i >= minQual; i--)
       fullTest(srcBuf, w, h, subsamp, i, argv[1]);
-    printf("\n");
+    fprintf(stderr, "\n");
   } else {
     if (pf != TJPF_CMYK) {
       for (i = maxQual; i >= minQual; i--)
         fullTest(srcBuf, w, h, TJSAMP_GRAY, i, argv[1]);
-      printf("\n");
+      fprintf(stderr, "\n");
     }
     for (i = maxQual; i >= minQual; i--)
       fullTest(srcBuf, w, h, TJSAMP_420, i, argv[1]);
-    printf("\n");
+    fprintf(stderr, "\n");
     for (i = maxQual; i >= minQual; i--)
       fullTest(srcBuf, w, h, TJSAMP_422, i, argv[1]);
-    printf("\n");
+    fprintf(stderr, "\n");
     for (i = maxQual; i >= minQual; i--)
       fullTest(srcBuf, w, h, TJSAMP_444, i, argv[1]);
-    printf("\n");
+    fprintf(stderr, "\n");
   }
 
 bailout: