Fix compilation with libjpeg

Patch inspired by upstream board:
http://www.vdr-portal.de/board16-video-disk-recorder/board4-vdr-installation/p1189959-vdr-2-05-mit-libjpeg-9a-kommt-nicht-aus/#post1189959

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>

diff -uNr vdr-2.3.1.org/tools.c vdr-2.3.1/tools.c
--- vdr-2.3.1.org/tools.c	2015-09-10 15:17:55.000000000 +0200
+++ vdr-2.3.1/tools.c	2016-08-01 06:37:44.000000000 +0200
@@ -1254,15 +1254,15 @@
         }
      else {
         esyslog("ERROR: out of memory");
-        return false;
+        return FALSE;
         }
      if (jcd->mem) {
         cinfo->dest->next_output_byte = jcd->mem + Used;
         cinfo->dest->free_in_buffer = jcd->size - Used;
-        return true;
+        return TRUE;
         }
      }
-  return false;
+  return FALSE;
 }
 
 static void JpegCompressTermDestination(j_compress_ptr cinfo)
@@ -1307,8 +1307,8 @@
   cinfo.in_color_space = JCS_RGB;
 
   jpeg_set_defaults(&cinfo);
-  jpeg_set_quality(&cinfo, Quality, true);
-  jpeg_start_compress(&cinfo, true);
+  jpeg_set_quality(&cinfo, Quality, TRUE);
+  jpeg_start_compress(&cinfo, TRUE);
 
   int rs = Width * 3;
   JSAMPROW rp[Height];
