)]}'
{
  "log": [
    {
      "commit": "0fb821f3b2e570b2783a94ccd9a2fb1f4916ae9f",
      "tree": "e528866185e25da8d5b69117836620b57be92468",
      "parents": [
        "5bd412c6ff5b706336ae214b4511b6a5d3b8759a"
      ],
      "author": {
        "name": "Chinmay Garde",
        "email": "chinmaygarde@google.com",
        "time": "Fri May 03 15:48:56 2019 -0700"
      },
      "committer": {
        "name": "Chinmay Garde",
        "email": "chinmaygarde@google.com",
        "time": "Fri May 03 15:49:40 2019 -0700"
      },
      "message": "Do not depend on yasm on Fuchsia SDK builds.\n\nThis extends the same convention currently used for all non-fuchsia targets to\nFuchsia targets with SDK builds.\n\nChange-Id: I7f41c36a33f89ea107c6bc6e65d713877a072ea4\n"
    },
    {
      "commit": "5bd412c6ff5b706336ae214b4511b6a5d3b8759a",
      "tree": "42e3882223e68c55b8929fa20ef65afd42e899b5",
      "parents": [
        "9587e51cf946f1a1d19bb596bc31ba4e6c9d8893"
      ],
      "author": {
        "name": "Damien Miller",
        "email": "djm@google.com",
        "time": "Wed Apr 04 17:35:24 2018 +1000"
      },
      "committer": {
        "name": "Damien Miller",
        "email": "djm@google.com",
        "time": "Wed Apr 04 17:35:24 2018 +1000"
      },
      "message": "Update README.fuchsia\n\nChange-Id: I3229127e5661fb983de70db58f9cf31b60b5f00f\n"
    },
    {
      "commit": "9587e51cf946f1a1d19bb596bc31ba4e6c9d8893",
      "tree": "a1311a7129a1871c42b48ed65f32bb30822dd268",
      "parents": [
        "3a742a14610aacb6527e16113e9231d63f6870f0"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Fri Jan 05 10:38:05 2018 -0800"
      },
      "committer": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Fri Jan 05 10:40:29 2018 -0800"
      },
      "message": "Do not depend on yasm for non-Fuchsia targets\n\nChange-Id: I68cc4b4aca20874271b5b259aa341101a2c4b9e0\n"
    },
    {
      "commit": "3a742a14610aacb6527e16113e9231d63f6870f0",
      "tree": "b4f2b41b67bdcbcf86f03c28f6a1b5017a177af4",
      "parents": [
        "268b01f30faa4fc1f61005eb963a830f8240092e"
      ],
      "author": {
        "name": "P.Y. Laligand",
        "email": "pylaligand@google.com",
        "time": "Fri Apr 28 16:35:40 2017 -0700"
      },
      "committer": {
        "name": "P.Y. Laligand",
        "email": "pylaligand@google.com",
        "time": "Fri Apr 28 16:37:11 2017 -0700"
      },
      "message": "Don\u0027t use SIMD extensions on host.\n\nChange-Id: I97ac57525a579d1727e381ef240ef086fe6d3ac6\n"
    },
    {
      "commit": "268b01f30faa4fc1f61005eb963a830f8240092e",
      "tree": "c11ca5491be498ad8e99680da03186981d5aaee2",
      "parents": [
        "a9e2849967092a11c6c6d5c695ae43c2512854c5"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Wed Aug 17 21:11:55 2016 -0700"
      },
      "committer": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Wed Aug 17 21:12:21 2016 -0700"
      },
      "message": "Fix linker error due to missing flag\n\nChange-Id: I613c2c421799a5515efe68f0fc38fe7544a8536a\n"
    },
    {
      "commit": "a9e2849967092a11c6c6d5c695ae43c2512854c5",
      "tree": "9cbc8a043fe34691c3140d79512b05e72eaa9489",
      "parents": [
        "ca69a4358aeff60abd823ddcbf1ed2380589f23c"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Mon Aug 08 19:14:00 2016 -0700"
      },
      "committer": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu Aug 11 16:15:03 2016 -0700"
      },
      "message": "Add BUILD.gn and initial modifications for build\n\nChanges are described in README.fuchsia\n\nChange-Id: If48dbf016679e7f428e2934ed481ae94d0625e27"
    },
    {
      "commit": "ca69a4358aeff60abd823ddcbf1ed2380589f23c",
      "tree": "fe491269c2db0a76ec30ac1674d3f00680b86a17",
      "parents": [
        "3ff13e651bbe6de9c6f15d05235d1d4f26f63ffc"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu Aug 11 00:01:28 2016 -0700"
      },
      "committer": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu Aug 11 15:46:49 2016 -0700"
      },
      "message": "Remove unused files\n\nChange-Id: Ie605bcf7bc56dd7ff10070112f845dbc639050bd\n"
    },
    {
      "commit": "3ff13e651bbe6de9c6f15d05235d1d4f26f63ffc",
      "tree": "9d2a11ee55b4dbc2f91ec166378f059e344f4995",
      "parents": [
        "1d50a8cd08b65e2b9bfceb877302a59046179863"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue May 31 22:53:17 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue May 31 22:53:17 2016 -0500"
      },
      "message": "1.5.0\n"
    },
    {
      "commit": "1d50a8cd08b65e2b9bfceb877302a59046179863",
      "tree": "7f5654724e0cddd1ae69171301ea17a2e83178fe",
      "parents": [
        "123f7258a86e9e701e9c4cf9ce1a1ace00eca98f"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue May 31 22:48:52 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue May 31 22:48:52 2016 -0500"
      },
      "message": "BUILDING.md: More NASM/YASM clarifications\n\n28d1a1300c6be7fc8614ed827eb56cd97cf84e76 introduced the line\n\"nasm.exe should be in your PATH\".  This commit corrects an oversight in\n8f1c0a681cd34e8e80ba7b06f356d6080a7172c9 /\ne5091f2cf3b6ba747907012146df93df0d01ec85 whereby this line should have\nbeen extended to include yasm.exe.\n"
    },
    {
      "commit": "123f7258a86e9e701e9c4cf9ce1a1ace00eca98f",
      "tree": "f448ebe9c28233e33c5063d0b5b6651e6505bb2b",
      "parents": [
        "e5091f2cf3b6ba747907012146df93df0d01ec85"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue May 24 10:23:56 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat May 28 19:16:58 2016 -0500"
      },
      "message": "Format copyright headers more consistently\n\nThe IJG convention is to format copyright notices as:\n\nCopyright (C) YYYY, Owner.\n\nWe try to maintain this convention for any code that is part of the\nlibjpeg API library (with the exception of preserving the copyright\nnotices from Cendio\u0027s code verbatim, since those predate\nlibjpeg-turbo.)\n\nNote that the phrase \"All Rights Reserved\" is no longer necessary, since\nall Buenos Aires Convention signatories signed onto the Berne Convention\nin 2000.  However, our convention is to retain this phrase for any files\nthat have a self-contained copyright header but to leave it off of any\nfiles that refer to another file for conditions of distribution and use.\nFor instance, all of the non-SIMD files in the libjpeg API library refer\nto README.ijg, and the copyright message in that file contains \"All\nRights Reserved\", so it is unnecessary to add it to the individual\nfiles.\n\nThe TurboJPEG code retains my preferred formatting convention for\ncopyright notices, which is based on that of VirtualGL (where the\nTurboJPEG API originated.)\n"
    },
    {
      "commit": "e5091f2cf3b6ba747907012146df93df0d01ec85",
      "tree": "7bde215b71200d6478bca8dc9b92b87260da1e6c",
      "parents": [
        "68cf83db5647104d9d7ea289c399fe6a5c77da64",
        "8f1c0a681cd34e8e80ba7b06f356d6080a7172c9"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat May 28 18:19:45 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat May 28 18:19:58 2016 -0500"
      },
      "message": "Merge branch \u00271.4.x\u0027\n"
    },
    {
      "commit": "8f1c0a681cd34e8e80ba7b06f356d6080a7172c9",
      "tree": "a3bd9396e60f539be94cbd45629c2781ec28f4b8",
      "parents": [
        "ee681aa304f470b41d21b52d3d2158c3381b8663"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat May 28 18:08:22 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat May 28 18:16:24 2016 -0500"
      },
      "message": "BUILDING.txt: Clarify NASM build requirements\n\nThe version requirements only apply to NASM (not YASM.)  Also, 2.11.09\nwas never actually released (the first release containing the OS X fix\nis 2.12.)\n"
    },
    {
      "commit": "68cf83db5647104d9d7ea289c399fe6a5c77da64",
      "tree": "fe927996ffd86d93f9ab9795c424097354fe11ec",
      "parents": [
        "f06cc1200fd5f61b63479d7099ccf4a7457a89bd"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue May 10 21:04:02 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue May 10 21:30:15 2016 -0500"
      },
      "message": "Don\u0027t allow opaque source/dest mgrs to be swapped\n\nCalling jpeg_stdio_dest() followed by jpeg_mem_dest(), or jpeg_mem_src()\nfollowed by jpeg_stdio_src(), is dangerous, because the existing opaque\nstructure would not be big enough to accommodate the new source/dest\nmanager.  This issue was non-obvious to libjpeg-turbo consumers, since\nit was only documented in code comments.  Furthermore, the issue could\nalso occur if the source/dest manager was allocated by the calling\nprogram, but it was not allocated with enough space to accommodate the\nopaque stdio or memory source/dest manager structs.  The safest thing to\ndo is to throw an error if one of these functions is called when there\nis already a source/dest manager assigned to the object and it was\nallocated elsewhere.\n\nCloses #78, #79\n"
    },
    {
      "commit": "f06cc1200fd5f61b63479d7099ccf4a7457a89bd",
      "tree": "ebdb7d0b04fc9dade44610d9157cd8a8dce5f53b",
      "parents": [
        "5c064de10dc544ceeecfc63f6a781b9f71576f57"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue May 10 19:36:34 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue May 10 19:36:52 2016 -0500"
      },
      "message": "Build: Add integer version macro to jconfig.h\n\nThis makes it significantly easier to do conditional compilation based\non the libjpeg-turbo version.\n\nBased on:\nhttps://github.com/hasinoff/libjpeg-turbo/commit/e6d5b3e50b8b07488cb7b4d26ab2061685bc6875\nhttps://github.com/hasinoff/libjpeg-turbo/commit/1394a89ba6f3cd8abb556c1b65bac4a5f09760d0\n\nCloses #80\n"
    },
    {
      "commit": "5c064de10dc544ceeecfc63f6a781b9f71576f57",
      "tree": "78667b598ef72d39827d1c3bf0c1515ff44d1621",
      "parents": [
        "2e480fa2a3285d9ff83a780ab3417badeb3f2d37"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon May 09 20:00:46 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon May 09 20:00:46 2016 -0500"
      },
      "message": "Build: Don\u0027t allow jpeg-7+ emul. w/o arith coding\n\nThe jpeg-7/jpeg-8 APIs/ABIs require arithmetic coding, and the jpeg-8\nAPI/ABI requires the memory source/destination manager, so this commit\ncauses the build system to ignore --with-arith-enc/--without-arith-enc\nand --with-arith-dec/--without-arith-dec (and the equivalent CMake\nvariables-- WITH_ARITH_ENC and WITH_ARITH_DEC) when v7/v8 API/ABI\nemulation is enabled.  Furthermore, the CMake build system now ignores\nWITH_MEM_SRCDST whenever WITH_JPEG8 is specified (the autotools build\nsystem already did that.)\n"
    },
    {
      "commit": "2e480fa2a3285d9ff83a780ab3417badeb3f2d37",
      "tree": "13ee95ceaeb9be2d0a61d340b265618d6722acc3",
      "parents": [
        "5e576386b57663bbe9d934edf7c276eb0150cd59"
      ],
      "author": {
        "name": "mattsarett",
        "email": "msarett@google.com",
        "time": "Tue May 03 10:33:43 2016 -0400"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue May 03 13:08:58 2016 -0500"
      },
      "message": "ARMv7 SIMD: Fix clang compatibility (Part 2)\n\nGCC does support UAL syntax (strbeq) if the \".syntax unified\" directive\nis supplied.  This directive is supported by all versions of GCC and\nclang going back to 2003, so it should not create any backward\ncompatibility issues.\n\nBased on https://github.com/mattsarett/libjpeg-turbo/commit/1264349e2fa6f098178c37abfa7b059ad8b405a2\n\nCloses #76\n"
    },
    {
      "commit": "5e576386b57663bbe9d934edf7c276eb0150cd59",
      "tree": "b01f2f4295bd260010c01aafa3c2db3a69e4bf5a",
      "parents": [
        "0d61e80ab0ab9ac2911dcaabbb5572bd7d4654fc"
      ],
      "author": {
        "name": "mattsarett",
        "email": "msarett@google.com",
        "time": "Mon May 02 12:31:51 2016 -0400"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon May 02 12:20:10 2016 -0500"
      },
      "message": "ARMv7 SIMD: Fix clang compatibility\n\nBy design, clang only supports Unified Assembler Language (and not\npre-UAL syntax):\nhttps://llvm.org/bugs/show_bug.cgi?id\u003d23507\nhttp://infocenter.arm.com/help/index.jsp?topic\u003d/com.arm.doc.dui0473c/BABJIHGJ.html\n\nThus, clang only supports the strbeq instruction and not streqb, but\nunfortunately some versions of GCC only support streqb.  Go, go\nGadget #ifdef...\n\nBased on https://github.com/mattsarett/libjpeg-turbo/commit/a82e63aac63f8fa3\n95fa4caad4de6859623ee2e2\n\nCloses #75\n"
    },
    {
      "commit": "0d61e80ab0ab9ac2911dcaabbb5572bd7d4654fc",
      "tree": "1067d7966def0775f292616b8f49690720f75473",
      "parents": [
        "346837cad3f5166d3d8ea8a65c9ba6eff97c59b0",
        "ee681aa304f470b41d21b52d3d2158c3381b8663"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun May 01 12:07:05 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun May 01 12:07:05 2016 -0500"
      },
      "message": "Merge branch \u00271.4.x\u0027\n"
    },
    {
      "commit": "ee681aa304f470b41d21b52d3d2158c3381b8663",
      "tree": "5ca123d1ac0c0419c95f09a17f966136604b6f87",
      "parents": [
        "eb7962a02b749f3185e9970bb07c9f7c86b85d73"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun May 01 11:42:15 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun May 01 12:02:16 2016 -0500"
      },
      "message": "Fix CMake fallback BUILD var on non-U.S. machines\n\nIf wmic.exe wasn\u0027t available, then CMakeLists.txt would call\n\"cmd /C date /T\" and parse the result in order to set the BUILD\nvariable.  However, the parser assumed that the date was in MM/DD/YYYY\nformat, which is not generally the case unless the user\u0027s locale is U.S.\nEnglish with the default region/language settings for that locale.\n\nThis commit modifies CMakeLists.txt such that it uses the\nstring(TIMESTAMP) function available in CMake 2.8.11 and later to set\nthe BUILD variable, thus eliminating the need to use wmic.exe or any\nother platform-specific hack.\n\nThis commit also modifies the build instructions to remove any reference\nto CMake 2.6 (which hasn\u0027t been supported by our build system since\nlibjpeg-turbo 1.3.x.)\n\nCloses #74\n"
    },
    {
      "commit": "346837cad3f5166d3d8ea8a65c9ba6eff97c59b0",
      "tree": "e84c1fbcd4b92c9bbdb29a35124d9e68226a3e3c",
      "parents": [
        "1959e28b495003fd43e343b9de14426a9b2b4cab",
        "eb7962a02b749f3185e9970bb07c9f7c86b85d73"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Apr 25 19:08:47 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Apr 25 19:08:47 2016 -0500"
      },
      "message": "Merge branch \u00271.4.x\u0027\n"
    },
    {
      "commit": "eb7962a02b749f3185e9970bb07c9f7c86b85d73",
      "tree": "dc1de7c6c11028cc0b00ec077f53f4c200a8d105",
      "parents": [
        "3c67d4f7c0b8b59c127585b2120b00267d64c728"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Apr 25 18:16:46 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Apr 25 19:06:16 2016 -0500"
      },
      "message": "CMakeLists.txt: Clarify that Un*x isn\u0027t supported\n\nAt one time, it was possible to use CMake to build under Cygwin, but\nthat hasn\u0027t worked since 1.4.1 (due to the Huffman codec changes that\nnow require SIZEOF_SIZE_T to be defined for non-WIN32 platforms) and may\nhave even been broken before that.  Originally, we used the \"date\"\ncommand under MSYS in order to obtain the default build number, but that\nwas rendered unnecessary by 5e3bb3e9 (v1.3 beta.)  9fe22dac (1.4 beta)\nfurther modified CMakeLists.txt so that the \"date\" command was only used\non Cygwin, but for unexplained reasons, that commit also applied the\n(now vestigial) code to all non-WIN32 platforms.  This prevented\nCMakeLists.txt from displaying an error if someone attempted to use the\nCMake build system on Un*x platforms, and that may have been behind the\nflurry of pull requests and issues-- including #21, #29, #37, #58, #73--\ncomplaining that the CMake build system didn\u0027t work on Un*x platforms\n(although it was not until #73 that this bug came to light.)\n\nThis commit removes all vestiges of Un*x support from the CMake build\nsystem and makes it clear that CMake cannot be used to build\nlibjpeg-turbo on non-WIN32 platforms.  It is our position that CMake\nwill not be supported on non-WIN32 platforms until/unless the autotools\nbuild system is removed, and this will not happen without broad support\nfrom the community (including major O/S vendors.)  If you are in favor\nof migrating the entire build system to CMake, then please make your\nvoice heard by commenting on #56.\n"
    },
    {
      "commit": "3c67d4f7c0b8b59c127585b2120b00267d64c728",
      "tree": "c333e59928c22fa80669676f5ca0bc42497382b6",
      "parents": [
        "1e81b0c3ea26f4ea8f56de05367469333de64a9f"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Apr 20 11:27:42 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Apr 25 17:57:59 2016 -0500"
      },
      "message": "Catch libjpeg errors in tjDecompressToYUV2()\n\nEven though tjDecompressToYUV2() is mostly just a wrapper for\ntjDecompressToYUVPlanes(), tjDecompressToYUV2() still calls\njpeg_read_header(), so it needs to properly set up the libjpeg error\nhandler prior to making this call.  Otherwise, under very esoteric (and\narguably incorrect) use cases, a program could call tjDecompressToYUV2()\nwithout first checking the JPEG header using tjDecompressHeader3(), and\nif the header was corrupt, then the libjpeg API would invoke\nmy_error_exit().  my_error_exit() would in turn call longjmp() on the\nprevious value of myerr-\u003esetjmp_buffer, which was probably set in a\nprevious TurboJPEG function, such as tjInitDecompress().  Thus, when a\nlibjpeg error was triggered within the body of tjDecompressToYUV2(), the\nPC would jump to the error handler of the previous TurboJPEG function,\nand this usually caused stack corruption in the calling program (because\nthe signature and return type of the previous TurboJPEG function\nprobably wasn\u0027t the same as that of tjDecompressToYUV2().)\n"
    },
    {
      "commit": "1959e28b495003fd43e343b9de14426a9b2b4cab",
      "tree": "7a45fd5a1a53e8b3e5290e73d1de4e0045232179",
      "parents": [
        "dec79952d6fe534b2b6cc0ab88238564c17e78dc"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Apr 21 10:22:36 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Apr 21 10:28:19 2016 -0500"
      },
      "message": "Increase severity of tjDecompressToYUV2() bug desc\n\nActually, what happened was that the longjmp() call within\nmy_error_exit() acted on the previous value of myerr-\u003esetjmp_buffer,\nwhich was probably set in a previous TurboJPEG function, such as\ntjInitDecompress().  Thus, when a libjpeg error was triggered within\nthe body of tjDecompressToYUV2(), the PC jumped to the error handler\nof the previous TurboJPEG function, and this usually caused stack\ncorruption in the calling program (because the signature and return\ntype of the previous TurboJPEG function probably wasn\u0027t the same.)\n"
    },
    {
      "commit": "dec79952d6fe534b2b6cc0ab88238564c17e78dc",
      "tree": "62a7c097fae9ec64914e5e27fc73c07529dc2e09",
      "parents": [
        "2628c562bc74c177fd3965618dfee15204d4af5b"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Apr 20 11:27:42 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Apr 20 11:39:51 2016 -0500"
      },
      "message": "Catch libjpeg errors in tjDecompressToYUV2()\n\nEven though tjDecompressToYUV2() is mostly just a wrapper for\ntjDecompressToYUVPlanes(), tjDecompressToYUV2() still calls\njpeg_read_header(), so it needs to properly set up the libjpeg error\nhandler prior to making this call.  Otherwise, under very esoteric (and\narguably incorrect) use cases, a program can call tjDecompressToYUV2()\nwithout first checking the JPEG header using tjDecompressHeader3(), and\nif the header is corrupt, tjDecompressToYUV2() will abort without\ntriggering an error.\n\nFixes #72\n"
    },
    {
      "commit": "2628c562bc74c177fd3965618dfee15204d4af5b",
      "tree": "4f967577c00e8e5d38c6227061c8c4ec4c4ad851",
      "parents": [
        "28d1a1300c6be7fc8614ed827eb56cd97cf84e76"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Apr 14 14:19:19 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Apr 14 14:19:19 2016 -0500"
      },
      "message": "BUILDING.md: Fix \"... OR ...\" indentation again\n\n\u003csigh\u003e GitHub doesn\u0027t render indented text the same as my local MarkDown\nviewer (MacDown), so it\u0027s necessary to indent \"... OR ...\" by 3 spaces\nso both will display it on the same indentation level as \"Visual C++\n2005 or later\" and \"MinGW\".\n"
    },
    {
      "commit": "28d1a1300c6be7fc8614ed827eb56cd97cf84e76",
      "tree": "7446fe9d3175d1b40fd422a398f399ea4db151f6",
      "parents": [
        "1a3aebd88e1bb14e67ba0e64f0b59491631b3f25"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Apr 14 14:12:46 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Apr 14 14:15:30 2016 -0500"
      },
      "message": "BUILDING.md: Fix confusing Windows build reqs\n\nIndent \"... OR ...\" to make it clear that the choice is between Visual\nC++ and MinGW, not Visual C++ and MinGW + NASM.  Move NASM to the top of\nthe list to make that even more clear.  Make it clear that nasm.exe\nshould be in the PATH.\n\nAddresses concerns raised in #70\n"
    },
    {
      "commit": "1a3aebd88e1bb14e67ba0e64f0b59491631b3f25",
      "tree": "a9aeb3577fd85d409ed771b488d1271eb6e5a626",
      "parents": [
        "b2817f52517361caff3dbab7373abc1b791f3246",
        "1e81b0c3ea26f4ea8f56de05367469333de64a9f"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Mar 31 10:02:44 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Mar 31 10:02:44 2016 -0500"
      },
      "message": "Merge branch \u00271.4.x\u0027\n"
    },
    {
      "commit": "1e81b0c3ea26f4ea8f56de05367469333de64a9f",
      "tree": "01effaa05aa7f43cdd24be03d6f242b762845c8f",
      "parents": [
        "6f241d4d425296badbf6b4f9477fbc3cace5a8fc"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Mar 31 09:49:49 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Mar 31 09:54:14 2016 -0500"
      },
      "message": "cjpeg: Fix buf overrun caused by bad bin PPM input\n\nThis extends the fix in 6709e4a0cfa44d4f54ee8ad05753d4aa9260cb91 to\ninclude binary PPM/PGM files, thus preventing a malformed binary\nPPM/PGM input file from triggering an overrun of the rescale array and\npotentially crashing cjpeg.\n\nNote that this issue affected only cjpeg and not the underlying\nlibjpeg-turbo libraries, and thus it did not represent a security\nthreat.\n\nThanks to @hughdavenport for the discovery.\n"
    },
    {
      "commit": "b2817f52517361caff3dbab7373abc1b791f3246",
      "tree": "2a228355e4fc520c816d0d06ef2fc0a534df10e9",
      "parents": [
        "1385f8b2811d0b21363ddf3c3d5040c4461aa354",
        "6f241d4d425296badbf6b4f9477fbc3cace5a8fc"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Mar 16 07:18:30 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Mar 16 07:18:30 2016 -0500"
      },
      "message": "Merge branch \u00271.4.x\u0027\n"
    },
    {
      "commit": "6f241d4d425296badbf6b4f9477fbc3cace5a8fc",
      "tree": "0b0173cf448ad81d391aec89d265cc4e1608f3a5",
      "parents": [
        "a572622dd654305c86585724c2a1ea34e22c2103"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Mar 16 07:10:35 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Mar 16 07:14:19 2016 -0500"
      },
      "message": "Add version/build info to global string table\n\nThis is a common practice in other infrastructure libraries, such as\nOpenSSL and libpng, because it makes it easy to examine an application\nbinary and determine which version of the library the application was\nlinked against.\n\nCloses #66\n"
    },
    {
      "commit": "1385f8b2811d0b21363ddf3c3d5040c4461aa354",
      "tree": "1da9b1c6502c12b08eabb6b6077ccc26979ee355",
      "parents": [
        "742fb37dde4235d6c2c17d15c423ea9d259c4ef7"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Mar 14 13:32:00 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Mar 14 13:32:00 2016 -0500"
      },
      "message": "ChangeLog.md: Improve readability of plain text\n"
    },
    {
      "commit": "742fb37dde4235d6c2c17d15c423ea9d259c4ef7",
      "tree": "7983cb384fc7866183d9f17f78142af2fc0d3d9e",
      "parents": [
        "a839a7a9641e527d66fca93ab2a55124271c0425"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Mar 13 18:28:14 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Mar 13 18:28:14 2016 -0500"
      },
      "message": "change.log: Refer users to ChangeLog.md\n\nchange.log is included only to document the changes that we have merged\nfrom libjpeg.\n"
    },
    {
      "commit": "a839a7a9641e527d66fca93ab2a55124271c0425",
      "tree": "79db1123b9d3ec18ab3cc6c4eecfc7f98e9f9fa5",
      "parents": [
        "3f56bd597c874a4bbc4e86a9311952bdf99bbb32"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Mar 13 16:24:48 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Mar 13 18:21:56 2016 -0500"
      },
      "message": "Markdown version of ChangeLog.txt\n\nThis will make it easier to crib ChangeLog information into release\nnotes, since both SourceForge and GitHub support MD.\n"
    },
    {
      "commit": "3f56bd597c874a4bbc4e86a9311952bdf99bbb32",
      "tree": "66d034c4aab2a357cd2357b28cda7ac9fe056d3a",
      "parents": [
        "e5f280c4c4821d50012de3429a67971cdd72bd7d"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Mar 13 12:36:06 2016 -0500"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Mar 13 18:21:21 2016 -0500"
      },
      "message": "Rename ChangeLog.txt\n\n... in preparation for creating a MarkDown version (Git will not\npreserve history unless you rename the file prior to modifying it.)\n"
    },
    {
      "commit": "e5f280c4c4821d50012de3429a67971cdd72bd7d",
      "tree": "068cee37e0b51b7fdf3f5d432f9ec90b6e2ac817",
      "parents": [
        "4f58123130e7485e882e26cd6da19bb6eabea490"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Mar 11 11:14:28 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Mar 11 11:14:28 2016 -0600"
      },
      "message": "README.md: Link to BUILDING.md\n\nAddresses a concern expressed in #56 and #58.\n"
    },
    {
      "commit": "4f58123130e7485e882e26cd6da19bb6eabea490",
      "tree": "79a10ef9a362225e7e70ccff7146be598c2fb2df",
      "parents": [
        "622d6678a84795769b406faa8ed5b929276256dc"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Mar 09 17:23:45 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Mar 09 17:26:47 2016 -0600"
      },
      "message": "BUILDING.md and README.md: Cosmetic tweaks\n"
    },
    {
      "commit": "622d6678a84795769b406faa8ed5b929276256dc",
      "tree": "371964dd78c7c237c5fef531be71b2868b7e5c37",
      "parents": [
        "b3247c7d718d18bf75cd941c3940e5562b22f5bb"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Mar 06 08:34:48 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Mar 06 08:34:48 2016 -0600"
      },
      "message": "ChangeLog: \"1.5 beta1\" --\u003e \"1.4.90 (1.5 beta1)\"\n\n(for consistency with other beta release headings)\n"
    },
    {
      "commit": "b3247c7d718d18bf75cd941c3940e5562b22f5bb",
      "tree": "45ee20b75ffe6d43ae441c61ba1fa03cef58b9d9",
      "parents": [
        "7cb8de4ae0a21257ced2e4f34cb0e884f18b6bd0",
        "a572622dd654305c86585724c2a1ea34e22c2103"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Mar 06 08:33:02 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Mar 06 08:34:00 2016 -0600"
      },
      "message": "Merge branch \u00271.4.x\u0027\n"
    },
    {
      "commit": "a572622dd654305c86585724c2a1ea34e22c2103",
      "tree": "affe5360cf8b5edd35705437b04a05fa67ffd4bb",
      "parents": [
        "f57bae0dddcdd5b30f9ce97b45436a585159af7a"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Mar 06 08:15:04 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Mar 06 08:29:44 2016 -0600"
      },
      "message": "Ensure that default Huffman tables are initialized\n\nThis prevents a malformed motion-JPEG frame (MJPEG frames lack Huffman\ntables) from causing the \"fast path\" of the Huffman decoder to read\nuninitialized memory.  Essentially, this is doing the same thing for\nMJPEG frames as 43d8cf4d4572fa50a37cccadbe71b9bee37de55d did for regular\nimages.\n"
    },
    {
      "commit": "7cb8de4ae0a21257ced2e4f34cb0e884f18b6bd0",
      "tree": "078e7bf61a835a852f10acfa8a2f9d7abc3c75a4",
      "parents": [
        "056536f6605596d0246fd2b75a1ada2ac03b5bbe"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Mar 02 09:53:11 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Mar 02 09:59:50 2016 -0600"
      },
      "message": "Java: Fix parallel make with autotools\n\nRunning \u0027make -j{jobs}\u0027 on a build that was configured with Java\n(--with-java) would previously cause an error:\n\n    make: *** No rule to make target `TJExample.class\u0027, needed by\n        `turbojpeg.jar\u0027.\n\nIt seems that parallel make doesn\u0027t understand that the files in\n$(JAVA_CLASSES) are all generated from the same invocation of javac, so\nit tries to parallelize the building of those files (which of course\ndoesn\u0027t work.)  This patch instead makes turbojpeg.jar depend on\nclassnoinst.stamp.  This effectively creates a synchronization fence,\nsince that file is only created when all of the class files have been\nbuilt.\n\nFixes #62\n"
    },
    {
      "commit": "056536f6605596d0246fd2b75a1ada2ac03b5bbe",
      "tree": "6e7f1c0a00c47484902edb42f5dbe0d3180ca8f3",
      "parents": [
        "7c202f76e7fda45c9ab7d7680046c0304a8fb2ad"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 29 17:21:02 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 29 17:46:34 2016 -0600"
      },
      "message": "Win/x64: Fix improper callee save of xmm8-xmm11\n\nThe x86-64 SIMD accelerations for Huffman encoding used incorrect\nstack math to save xmm8-xmm11 on Windows.  This caused TJBench to\nalways report 1 Mpixel/sec for the compression performance, and it\nlikely would have caused other application issues as well.\n"
    },
    {
      "commit": "7c202f76e7fda45c9ab7d7680046c0304a8fb2ad",
      "tree": "d68125f44fb55700d092e2eb46c444601c7c361e",
      "parents": [
        "fa722636bec32eb88b7476e626f71292a5ac27a5"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 29 13:18:01 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 29 13:21:12 2016 -0600"
      },
      "message": "Bump TurboJPEG C API revision to 1.5\n\nThe changes relative to 1.4.x are only cosmetic (using const pointers)\nand should not affect API/ABI compatibility, but our practice is to\nsynchronize the API revision with the most recent release that provides\nuser-visible changes to the API.\n"
    },
    {
      "commit": "fa722636bec32eb88b7476e626f71292a5ac27a5",
      "tree": "08a3f2b2443a9577e7b67db31b50a3bb97aac34b",
      "parents": [
        "2354810a431c8f7702b55040fe1a7d880973a1b0"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 29 12:06:33 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 29 12:06:56 2016 -0600"
      },
      "message": "ChangeLog: Mention jpeg_crop_scanline() function\n"
    },
    {
      "commit": "2354810a431c8f7702b55040fe1a7d880973a1b0",
      "tree": "fd35cd21faedc9a081b9f51c061bde3287f2062b",
      "parents": [
        "45c1e3a88782b069b446307ee8852f547a83e3af"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 29 11:12:44 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 29 11:54:42 2016 -0600"
      },
      "message": "1.5 beta1\n"
    },
    {
      "commit": "45c1e3a88782b069b446307ee8852f547a83e3af",
      "tree": "c3ce6b773a39b01a8ea3955c31c1c18db8fc07db",
      "parents": [
        "025c1f66de6487eb604297f38364410411acaf77",
        "f57bae0dddcdd5b30f9ce97b45436a585159af7a"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 25 17:15:21 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 25 17:15:44 2016 -0600"
      },
      "message": "Merge branch \u00271.4.x\u0027\n"
    },
    {
      "commit": "f57bae0dddcdd5b30f9ce97b45436a585159af7a",
      "tree": "8c81b5c5160adcccc0af4751cf2fcc022a245ebb",
      "parents": [
        "2d56acb84083ba17cc26db2eb9c2616db0feb9bc"
      ],
      "author": {
        "name": "mayeut",
        "email": "mayeut@users.noreply.github.com",
        "time": "Thu Feb 25 23:14:45 2016 +0100"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 25 17:14:56 2016 -0600"
      },
      "message": "Fix memory leak when running tjunittest -yuv\n\nCloses #61\n"
    },
    {
      "commit": "025c1f66de6487eb604297f38364410411acaf77",
      "tree": "c0bcf83f31c5bafe4b3f398c5f86f4b7c7fe44b4",
      "parents": [
        "3ab68cf563f6edc2608c085f5c8b2d5d5c61157e"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 22 10:00:19 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 22 10:01:16 2016 -0600"
      },
      "message": "Fix v7/v8-compatible build\n\nBroken by 3ab68cf563f6edc2608c085f5c8b2d5d5c61157e\n\nFixes #60\n"
    },
    {
      "commit": "3ab68cf563f6edc2608c085f5c8b2d5d5c61157e",
      "tree": "385b83a862863effd6d1cc4df21376f2a1b4fe89",
      "parents": [
        "5f972324eea069d6bf0ad5c2abd499b79441abcb"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 18:32:10 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 21:07:39 2016 -0600"
      },
      "message": "libjpeg API: Partial scanline decompression\n\nThis, in combination with the existing jpeg_skip_scanlines() function,\nprovides the ability to crop the image both horizontally and vertically\nwhile decompressing (certain restrictions apply-- see libjpeg.txt.)\n\nThis also cleans up the documentation of the line skipping feature and\nremoves the \"strip decompression\" feature from djpeg, since the new\ncropping feature is a superset of it.\n\nRefer to #34 for discussion.\n\nCloses #34\n"
    },
    {
      "commit": "5f972324eea069d6bf0ad5c2abd499b79441abcb",
      "tree": "77643ed7232df6cfb2cf8d7166b8704c7a8dd6b9",
      "parents": [
        "f76c01d0bd0cf0ed69796d67d38c04b3ec6ff55f"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 13:16:56 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 13:16:56 2016 -0600"
      },
      "message": "Build: Make the NASM autoconf variable persistent\n\nPreviously, if a custom value of this variable was specified when\nrunning configure, then that value would be lost if configure was\nautomatically re-run (as a result of changes to configure.ac, for\ninstance.)\n\nAs a bonus, the NASM variable is now also listed when running\n\u0027configure --help\u0027, so it is obvious how to override the default\nNASM command.\n"
    },
    {
      "commit": "f76c01d0bd0cf0ed69796d67d38c04b3ec6ff55f",
      "tree": "96a87f0564d6aa29de7b7ee82d2135e5ff60877d",
      "parents": [
        "d4be42360c6c8a89309ffb0cc32041d799deb392"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 10:56:13 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 10:56:13 2016 -0600"
      },
      "message": "Use consistent/modern code formatting for dbl ptrs\n"
    },
    {
      "commit": "d4be42360c6c8a89309ffb0cc32041d799deb392",
      "tree": "79f8e4e798bc9c4cb8d155dd48b6f3d2a048b1f4",
      "parents": [
        "e621dfc508e8093852f2294b7e421116ffed1d77"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 10:35:41 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 10:35:41 2016 -0600"
      },
      "message": "usage.txt: Restore accidentally deleted phrase\n\nIt somehow got lost when merging the jpeg-9+ documentation changes.\n"
    },
    {
      "commit": "e621dfc508e8093852f2294b7e421116ffed1d77",
      "tree": "7974d26a10d60c84aec54f3ef4cef80370f2f5a6",
      "parents": [
        "9100b67a75dc8d8bb6b819ac853037f75bddfdbf"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 10:35:09 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 10:35:09 2016 -0600"
      },
      "message": "More minor code formatting tweaks\n"
    },
    {
      "commit": "9100b67a75dc8d8bb6b819ac853037f75bddfdbf",
      "tree": "8bb05a1e21e97598c37e15fa502aa90d44083773",
      "parents": [
        "bd49803f92da151be5c4bd3910a2840d2068e7e3"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 09:25:44 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 09:25:44 2016 -0600"
      },
      "message": "Clean up a couple of copyright messages\n"
    },
    {
      "commit": "bd49803f92da151be5c4bd3910a2840d2068e7e3",
      "tree": "9f4259d57ac62d064779ab10879d13ce9fc67ec0",
      "parents": [
        "ae4112884525c9ae4390c2020668831a9bade412"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 08:53:33 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Feb 19 09:10:07 2016 -0600"
      },
      "message": "Use consistent/modern code formatting for pointers\n\nThe convention used by libjpeg:\n\n    type * variable;\n\nis not very common anymore, because it looks too much like\nmultiplication.  Some (particularly C++ programmers) prefer to tuck the\npointer symbol against the type:\n\n    type* variable;\n\nto emphasize that a pointer to a type is effectively a new type.\nHowever, this can also be confusing, since defining multiple variables\non the same line would not work properly:\n\n    type* variable1, variable2;  /* Only variable1 is actually a\n                                    pointer. */\n\nThis commit reformats the entirety of the libjpeg-turbo code base so\nthat it uses the same code formatting convention for pointers that the\nTurboJPEG API code uses:\n\n    type *variable1, *variable2;\n\nThis seems to be the most common convention among C programmers, and\nit is the convention used by other codec libraries, such as libpng and\nlibtiff.\n"
    },
    {
      "commit": "ae4112884525c9ae4390c2020668831a9bade412",
      "tree": "987154b0f1a3a0b6749ace6f6a1592ad8686de1d",
      "parents": [
        "54e6b8e806a4a1f6be2a69d2395e49d91c906a1e"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 18 16:02:28 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 18 16:33:23 2016 -0600"
      },
      "message": "Reorder copyright messages in cjpeg/djpeg/jpegtran\n\nPlace the authors in the following order:\n* libjpeg-turbo authors (2009-) in descending order of the date of their\n  most recent contribution to the project, then in ascending order of\n  the date of their first contribution to the project\n* Upstream authors in descending order of the date of the first\n  inclusion of their code (this indicates that their code serves as the\n  foundation of this code.)\n\nThis also adds Siarhei to the author list, since he contributed ARM SIMD\ncode both as a Nokia employee and more recently as an independent\ndeveloper.\n"
    },
    {
      "commit": "54e6b8e806a4a1f6be2a69d2395e49d91c906a1e",
      "tree": "85162e65385a38bdfcdb850d38c68fd837a25b32",
      "parents": [
        "83aeb7b28cffa6926cf619b684be449c9c0954a5",
        "a560e4b4239b585e0f9dfc4d7e5d7b2273f43c11"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 18 15:16:17 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 18 15:16:17 2016 -0600"
      },
      "message": "Include some comments/doc tweaks from jpeg-9+\n"
    },
    {
      "commit": "83aeb7b28cffa6926cf619b684be449c9c0954a5",
      "tree": "f1e4bd609ed83add53dec63b2b3acbb53613112d",
      "parents": [
        "aefd8b79421db753160d47462e81b6ff8748f8f0"
      ],
      "author": {
        "name": "DRC",
        "email": "information@virtualgl.org",
        "time": "Wed Feb 17 20:05:44 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@virtualgl.org",
        "time": "Wed Feb 17 20:05:44 2016 -0600"
      },
      "message": "Wordsmith GIF limitations in cjpeg.1/djpeg.1\n"
    },
    {
      "commit": "a560e4b4239b585e0f9dfc4d7e5d7b2273f43c11",
      "tree": "da4c0f1330bcbf9da9b05408270e09bc1c04cb1e",
      "parents": [
        "fc11193e7a4548616a3803c66697a58d2a7304c5"
      ],
      "author": {
        "name": "Guido Vollbeding",
        "email": "jpeg-info@jpegclub.org",
        "time": "Sun Jan 17 00:00:00 2016 +0000"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 16 12:27:41 2016 -0600"
      },
      "message": "The Independent JPEG Group\u0027s JPEG software v9b\n"
    },
    {
      "commit": "fc11193e7a4548616a3803c66697a58d2a7304c5",
      "tree": "06eaed616b858e1428ff6584c0f35b15f6645068",
      "parents": [
        "e7f88aec23279d58bf5f37524c1958ba366f346d"
      ],
      "author": {
        "name": "Guido Vollbeding",
        "email": "jpeg-info@jpegclub.org",
        "time": "Sun Jan 19 00:00:00 2014 +0000"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 16 12:26:00 2016 -0600"
      },
      "message": "The Independent JPEG Group\u0027s JPEG software v9a\n"
    },
    {
      "commit": "e7f88aec23279d58bf5f37524c1958ba366f346d",
      "tree": "f1fee02d36a3422974e0b592c79bb3a8bde4823a",
      "parents": [
        "5829cb23983cd241c48abd8ed70ff3627560c453"
      ],
      "author": {
        "name": "Guido Vollbeding",
        "email": "jpeg-info@jpegclub.org",
        "time": "Sun Jan 13 00:00:00 2013 +0000"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 16 12:22:55 2016 -0600"
      },
      "message": "The Independent JPEG Group\u0027s JPEG software v9\n"
    },
    {
      "commit": "aefd8b79421db753160d47462e81b6ff8748f8f0",
      "tree": "b3e7b32288e1e2e36fe60801b3ccee58e7c5c005",
      "parents": [
        "18dcac46320694303b6e92bdca86a2b74efd8bbe"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Feb 14 17:20:30 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Feb 14 17:20:30 2016 -0600"
      },
      "message": "Clean up pkgconfig dir when removing RPM \u0026 Mac pkg\n"
    },
    {
      "commit": "18dcac46320694303b6e92bdca86a2b74efd8bbe",
      "tree": "a1765602396b1b05c722afff5cd361b852fa9b8b",
      "parents": [
        "03841e6e8905e971b0d9ded0c448e6134d8dbdc5"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Feb 14 09:01:07 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Feb 14 09:01:07 2016 -0600"
      },
      "message": "Fix compiler warning\n"
    },
    {
      "commit": "03841e6e8905e971b0d9ded0c448e6134d8dbdc5",
      "tree": "a3f1a7a7b3caeb57b3d15c0f7c20a4ab6584badd",
      "parents": [
        "d123c125c50993986537a2c1a49b8b52313c2af9"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 09 18:27:27 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 09 18:30:59 2016 -0600"
      },
      "message": "Win: Display effective C/LD flags in CMake output\n"
    },
    {
      "commit": "d123c125c50993986537a2c1a49b8b52313c2af9",
      "tree": "763cfc313f62f7ae442fbce8ccde2987075a095e",
      "parents": [
        "8632f1b2626ccef099f58382d880e9c7325a2d28"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 09 01:35:39 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 09 01:35:39 2016 -0600"
      },
      "message": "Java: Avoid OOM error when running \u0027make test\u0027\n\nWe need to garbage collect between iterations of the outside loop in\nbufSizeTest() in order to avoid exhausting the heap when running with\nJava 6 (which is still used on Linux to test the 32-bit version of\nlibjpeg-turbo in automated builds.)\n"
    },
    {
      "commit": "8632f1b2626ccef099f58382d880e9c7325a2d28",
      "tree": "fcf3a8b1facf6ebba5f8d4e5d5e70ed432c67480",
      "parents": [
        "bba7978981e4fc6d0e10f72e95e5e249479ce0e9"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 09 00:38:58 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 09 00:38:58 2016 -0600"
      },
      "message": "ARM64: Avoid tbl instruction on Cortex-A53/A57\n\nFull-color compression speedups relative to previous commits:\nCortex-A53 (Nexus 5X), Android, 64-bit: 0.91-3.0% (avg. 1.8%)\nCortex-A57 (Nexus 5X), Android, 64-bit: -0.35-1.5% (avg. 0.65%)\n"
    },
    {
      "commit": "bba7978981e4fc6d0e10f72e95e5e249479ce0e9",
      "tree": "4ac328121384931a70547184c933f0c6546db68a",
      "parents": [
        "28f00bf23593076cd27ff19aedd8ee7a02a40983"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 08 16:10:28 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 08 16:10:28 2016 -0600"
      },
      "message": "ChangeLog: Mention ARM64 Huffman \u0026 adj perf claims\n"
    },
    {
      "commit": "28f00bf23593076cd27ff19aedd8ee7a02a40983",
      "tree": "f8994e2825f7ea9357156bcf2b28bf28f293b9c4",
      "parents": [
        "ab80273b611271d89e9c3a796ae5c8db3d730442"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 08 15:15:11 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 08 15:15:11 2016 -0600"
      },
      "message": "Fix iOS/ARMv8 build\n\nBroken by 46ecffa324be43aab80f6160dc57d98b0a54a704.\n\ngas-preprocessor.pl and/or the clang assembler apparently don\u0027t like\ndefault values in macro arguments, and we need to use a separate const\nsection for each function (because of our use of adr, also necessitated\nby the broken clang assembler.)\n"
    },
    {
      "commit": "ab80273b611271d89e9c3a796ae5c8db3d730442",
      "tree": "d99b5903cf4e089f63ce8f9953a2b18103328db6",
      "parents": [
        "53c635b8e8d6d9681fb5347701bb48f1e172a83f"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 08 14:41:07 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 08 14:41:07 2016 -0600"
      },
      "message": "BUILDING.md: Update OS X Java information\n\nThe Apple Java Developer Package is only necessary on OS X \u003c 10.7.\nWhen building on Lion and later, the Oracle JDK is preferred.\n"
    },
    {
      "commit": "53c635b8e8d6d9681fb5347701bb48f1e172a83f",
      "tree": "19720292d1708973170582f7c9aa4b5346ca8b6f",
      "parents": [
        "46ecffa324be43aab80f6160dc57d98b0a54a704"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 08 14:03:13 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 08 14:03:13 2016 -0600"
      },
      "message": "Fix \u0027make dist\u0027; Include LICENSE.md in packages\n"
    },
    {
      "commit": "46ecffa324be43aab80f6160dc57d98b0a54a704",
      "tree": "f189726f7a3f879a7cab7da561416c3a061df84f",
      "parents": [
        "219470d6acffbad6fc121adb5486d1c43d25defb"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Feb 07 22:05:56 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Feb 07 22:05:56 2016 -0600"
      },
      "message": "ARM64: Avoid LD3/ST3 at run time, not compile time\n\n... and only if ThunderX is detected.  This can be easily expanded later\non to include other CPUs that are known to suffer from slow LD3/ST3, but\nit doesn\u0027t make sense to disable LD3/ST3 for all non-Android Linux\nplatforms just because ThunderX is slow.\n"
    },
    {
      "commit": "219470d6acffbad6fc121adb5486d1c43d25defb",
      "tree": "3fb918900c9b3dd2e72a30ab211ee78f5e863379",
      "parents": [
        "15aaa7f7e21af6066e22ab18fbd02576078351ff"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Feb 07 20:36:02 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Feb 07 21:51:11 2016 -0600"
      },
      "message": "ARM64 NEON SIMD implementation of Huffman encoding\n\nFull-color compression speedups relative to previous commits:\nCortex-A53 (Nexus 5X), Android, 64-bit: 1.1-13% (avg. 6.0%)\nCortex-A57 (Nexus 5X), Android, 64-bit: 0.0-22% (avg. 6.3%)\n\nRefer to #47 and #50 for discussion\n\nCloses #50\n\nNote that this commit introduces a similar /proc/cpuinfo parser to that\nof the ARM32 implementation.  It is used to specifically check whether\nthe code is running on Cavium ThunderX and, if so, disable the ARM64\nSIMD Huffman routines (which slow performance by an average of 8% on\nthat CPU.)\n\nBased on:\nhttps://github.com/mayeut/libjpeg-turbo/commit/a8c282e5e5ac10a715d6d6a9ab22121982b485f6\n"
    },
    {
      "commit": "15aaa7f7e21af6066e22ab18fbd02576078351ff",
      "tree": "c6e321a44c764dffa59817defc2f82d356e800cd",
      "parents": [
        "45bbe06ec5a3a88c9e348ddbd5a41bcd6952e6df"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Feb 07 17:39:33 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sun Feb 07 17:39:33 2016 -0600"
      },
      "message": "ARM SIMD: Comment tweaks\n"
    },
    {
      "commit": "45bbe06ec5a3a88c9e348ddbd5a41bcd6952e6df",
      "tree": "665d1ae22f1a81db2c046e1fc211f026d68da69c",
      "parents": [
        "2d623257545f8e24f837ee53502a9ebddd786fc4"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat Feb 06 16:04:29 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat Feb 06 18:40:52 2016 -0600"
      },
      "message": "Un*x: Enable testing cross-compiled builds\n\nDon\u0027t include the all: target as a dependency of the tests when\ncross-compiling, and ensure that the files generated by the tests are\nremoved, even if they were created read-only (or if the tests are being\nrun on a different type of system that doesn\u0027t correctly interpret the\nfile permissions.)  This allows one to easily build the code on one\nmachine and run \u0027make test\u0027 on another.\n"
    },
    {
      "commit": "2d623257545f8e24f837ee53502a9ebddd786fc4",
      "tree": "67aae808a3a10d4caf6eb54063c41af0f7c9503c",
      "parents": [
        "f9134384b728d8943f252b27464d83c4b7b2d159"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat Feb 06 16:03:57 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat Feb 06 18:40:52 2016 -0600"
      },
      "message": "Fix Visual C++ compiler warnings\n\nSomehow this got reverted with aa769febf25c64f115c2a237516b0c7d65f651cd.\nOops.\n"
    },
    {
      "commit": "f9134384b728d8943f252b27464d83c4b7b2d159",
      "tree": "abb4ce11715c7869099a137fd49abc6af18de514",
      "parents": [
        "ce0dd949b20b5b6f850bdff7216a8f3ac20840b4"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat Feb 06 14:09:20 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat Feb 06 18:40:19 2016 -0600"
      },
      "message": "Win: Enable testing cross-compiled builds\n\nWhen cross-compiling, CMakeLists.txt now generates the CTest script\nusing relative paths, so that CTest can more easily be executed on a\ndifferent machine from the build machine.  Furthermore, Windows builds\nare now tested using md5cmp, just like on Linux, rather than a CMake\nscript.  This prevents issues with differing CMake locations between\nthe build and test machines.\n\nThis also removes some trailing spaces from the md5cmp code and improves\nthe readability of the test code in CMakeLists.txt.\n"
    },
    {
      "commit": "ce0dd949b20b5b6f850bdff7216a8f3ac20840b4",
      "tree": "14f0a141b9be820770dab51697e21e19ccb06fc2",
      "parents": [
        "8ff67fdb24f5f101a1a72e6614dcc1688653542c"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat Feb 06 12:18:44 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat Feb 06 12:18:44 2016 -0600"
      },
      "message": "Fix MinGW build\n\njinclude.h can\u0027t be safely included multiple times, so instead of\nincluding it in the shared (broken-out) headers, it should instead be\nincluded by the source files that include one or more of those headers.\n"
    },
    {
      "commit": "8ff67fdb24f5f101a1a72e6614dcc1688653542c",
      "tree": "305151e2656539360e9313184459b236a593fcf9",
      "parents": [
        "55a18d40076b9a70a1c11be94d8e1a4129639bb4"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat Feb 06 12:17:40 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat Feb 06 12:17:40 2016 -0600"
      },
      "message": "Update MinGW Linux build recipe\n"
    },
    {
      "commit": "55a18d40076b9a70a1c11be94d8e1a4129639bb4",
      "tree": "edc576aa369353e28d72b33f3e6732c0730e2797",
      "parents": [
        "fe11699d90c8dd4feac5bb3e1d87cc310b22712a",
        "2d56acb84083ba17cc26db2eb9c2616db0feb9bc"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 18:52:23 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 18:52:23 2016 -0600"
      },
      "message": "Merge branch \u00271.4.x\u0027\n"
    },
    {
      "commit": "2d56acb84083ba17cc26db2eb9c2616db0feb9bc",
      "tree": "1ea9d2395c545bf7a38251f860052961d6c5a641",
      "parents": [
        "04dd34c14ed21d36e80447dd988fa1ce4ebe5ac5",
        "c454c595dc83028770727fdb7eac7842875465ac"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 18:47:07 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 18:48:22 2016 -0600"
      },
      "message": "Merge branch \u00271.3.x\u0027 into 1.4.x\n"
    },
    {
      "commit": "c454c595dc83028770727fdb7eac7842875465ac",
      "tree": "37a33c33a4fa6100b4fafd3c8cc72c66403818bf",
      "parents": [
        "57e206662a40075e36cc2ae457b502784439cf75",
        "0463f7c9aad060fcd56e98d025ce16185279e2bc"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 18:46:13 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 18:46:13 2016 -0600"
      },
      "message": "Merge branch \u00271.2.x\u0027 into 1.3.x\n"
    },
    {
      "commit": "0463f7c9aad060fcd56e98d025ce16185279e2bc",
      "tree": "9604d7952ebfff8a75117a97dc4a9a3c4543ab6b",
      "parents": [
        "939e46608242cbb7050431ed102d9e74bf8c4db0"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 18:34:38 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 18:43:48 2016 -0600"
      },
      "message": "Prevent overread when decoding malformed JPEG\n\nThe accelerated Huffman decoder was previously invoked if there were\n\u003e 128 bytes in the input buffer.  However, it is possible to construct a\nJPEG image with Huffman blocks \u003e 430 bytes in length\n(http://stackoverflow.com/questions/2734678/jpeg-calculating-max-size).\nWhile such images are pathological and could never be created by a\nJPEG compressor, it is conceivable that an attacker could use such an\nartifially-constructed image to trigger an input buffer overrun in the\nlibjpeg-turbo decompressor and thus gain access to some of the data on\nthe calling program\u0027s heap.\n\nThis patch simply increases the minimum buffer size for the accelerated\nHuffman decoder to 512 bytes, which should (hopefully) accommodate any\npossible input.\n\nThis addresses a major issue (LJT-01-005) identified in a security audit\nby Cure53.\n"
    },
    {
      "commit": "04dd34c14ed21d36e80447dd988fa1ce4ebe5ac5",
      "tree": "bc84a46ac59be606baf64a6a23a0d3986b2c3aa6",
      "parents": [
        "3ee3d8799ae346fbf3c1e6fd15dbc1593545fa80"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 10:59:21 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 11:37:13 2016 -0600"
      },
      "message": "Guard against wrap-around in alloc functions\n\nBecause of the exposed nature of the libjpeg API, alloc_small() and\nalloc_large() can potentially be called by external code.  If an\napplication were to call either of those functions with\nsizeofobject \u003e SIZE_MAX - ALIGN_SIZE - 1, then the math in\nround_up_pow2() would wrap around to zero, causing that function to\nreturn a small value.  That value would likely not exceed\nMAX_ALLOC_CHUNK, so the subsequent size checks in alloc_small() and\nalloc_large() would not catch the error.\n\nA similar problem could occur in 32-bit builds if alloc_sarray() were\ncalled with\nsamplesperrow \u003e SIZE_MAX - (2 * ALIGN_SIZE / sizeof(JSAMPLE)) - 1\n\nThis patch simply ensures that the size argument to the alloc_*()\nfunctions will never exceed MAX_ALLOC_CHUNK (1 billion).  If it did,\nthen subsequent size checks would eventually catch that error, so we\nare instead catching the error before round_up_pow2() is called.\n\nThis addresses a minor concern (LJT-01-001) expressed in a security\naudit by Cure53.\n"
    },
    {
      "commit": "3ee3d8799ae346fbf3c1e6fd15dbc1593545fa80",
      "tree": "5500675df980dc5d6af19aef58f721e31261c274",
      "parents": [
        "6c8a71efa742c97ffac80a26859820f770e40c45"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 10:58:10 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 10:58:10 2016 -0600"
      },
      "message": "Fix Visual C++ compiler warnings\n"
    },
    {
      "commit": "6c8a71efa742c97ffac80a26859820f770e40c45",
      "tree": "1a11975dd6579a309c6b3b717c1fb7752a78b375",
      "parents": [
        "271b0bf0330fbbef5d6523c518d79d8bc5787519"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 10:51:22 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 10:51:22 2016 -0600"
      },
      "message": "rdppm.c: formatting tweaks\n"
    },
    {
      "commit": "271b0bf0330fbbef5d6523c518d79d8bc5787519",
      "tree": "3277ca6a94869469d9e76f295a1f87f4e0fd47bf",
      "parents": [
        "6e053525ee45171f65ecec596336cc3b0a5e9468"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 10:08:38 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 10:08:38 2016 -0600"
      },
      "message": "jmemmgr.c: formatting tweaks\n"
    },
    {
      "commit": "6e053525ee45171f65ecec596336cc3b0a5e9468",
      "tree": "ed19364957ff52d63b5ae6fd9e6d15ce3c837791",
      "parents": [
        "cbfa696fc1be251a9f20f8e83e335a863a6c4be8"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 09:20:41 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Thu Feb 04 09:20:41 2016 -0600"
      },
      "message": "TurboJPEG: Avoid dangling pointers\n\nThis addresses a minor concern (LJT-01-002) expressed in a security\naudit by Cure53.  _tjInitCompress() and _tjInitDecompress() call\n(respectively) jpeg_mem_dest_tj() and jpeg_mem_src_tj() with a pointer\nto a dummy buffer, in order to set up the destination/source manager.\nThe dummy buffer should never be used, but it\u0027s still better to make it\nstatic so that the pointer in the destination/source manager always\npoints to a valid region of memory.\n"
    },
    {
      "commit": "fe11699d90c8dd4feac5bb3e1d87cc310b22712a",
      "tree": "e3839ef1721666e7f0acd9f85638a605c02631fe",
      "parents": [
        "cf888486d10e3888bacac9c193c607f051042802"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Feb 03 14:02:13 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Feb 03 14:02:13 2016 -0600"
      },
      "message": "Adjust performance claims\n\nDocument the latest benchmarks on the Nexus 5X and change the \"2-4x\"\noverall claim to \"2-6x\".  The peak performance on x86 platforms was\nalready closer to 5x, and the addition of SIMD-accelerated Huffman\nencoding gave it that extra push over the cliff.\n"
    },
    {
      "commit": "cf888486d10e3888bacac9c193c607f051042802",
      "tree": "8b71b7ca5f8ba86f7a68ce3127d603cbe09719fe",
      "parents": [
        "cb49bb00d9240475eb57976de1b7351f4e3f81ad"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 02 23:17:06 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 02 23:39:03 2016 -0600"
      },
      "message": "Use consistent formatting in ARM NEON SIMD code\n\nThere aren\u0027t really any best practices to follow here.  I tried as best\nas I could to adopt a standard that would ease any future maintenance\nburdens.  The basic tenets of that standard are:\n\n* Assembly instructions always start on Column 5, and operands always\n  start on Column 21, except:\n  - The instruction and operand can be indented (usually by 2 spaces)\n    to indicate a separate instruction stream.\n  - If the instruction is within an enclosing .if block in a macro,\n    it should always be indented relative to the .if block.\n* Comments are placed with an eye toward readability.  There are always\n  at least 2 spaces between the end of a line of code and the associated\n  in-line comment.  Where it made sense, I tried to line up the comments\n  in blocks, and some were shifted right to avoid overlap with\n  neighboring instruction lines.  Not an exact science.\n* Assembler directives and macros use 2-space indenting rules.  .if\n  blocks are indented relative to the macro, and code within the .if\n  blocks is indented relative to the .if directive.\n* No extraneous spaces between operands.  Lining up the operands\n  vertically did not really improve readability-- personally, I think it\n  made it worse, since my eye would tend to lose its place in the\n  uniform columns of characters.  Also, code with a lot of vertical\n  alignment is really hard to maintain, since changing one line could\n  necessitate changing a bunch of other lines to avoid spoiling the\n  alignment.\n* No extraneous spaces in #defines or other directives.  In general, the\n  only extraneous spaces (other than indenting spaces) are between:\n  - Instructions and operands\n  - Operands and in-line comments\nThis standard should be more or less in keeping with other formatting\nstandards used within the project.\n"
    },
    {
      "commit": "cb49bb00d9240475eb57976de1b7351f4e3f81ad",
      "tree": "12d36d3ae0de09ea0fbc1140f9916d899bc7a5fa",
      "parents": [
        "f5cd71c5cf9404c1e1afcdc2e45712adeaddb3e9"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 02 23:10:27 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Tue Feb 02 23:14:27 2016 -0600"
      },
      "message": "Opt. ARM64 SIMD decompr. for in-order pipelines\n\nDecompression speedup relative to libjpeg-turbo 1.4.2 (ISLOW IDCT):\n48-core ThunderX (RunAbove ARM Cloud), Linux, 64-bit: 60-113% (avg. 86%)\nCortex-A53 (Nexus 5X), Android, 64-bit: 6.8-27% (avg. 14%)\nCortex-A57 (Nexus 5X), Android, 64-bit: 2.0-14% (avg. 6.8%)\n\nDecompression speedup relative to libjpeg-turbo 1.4.2 (IFAST IDCT):\n48-core ThunderX (RunAbove ARM Cloud), Linux, 64-bit: 51-98% (avg. 75%)\n\nMinimal speedup (1-5%) observed on iPhone 5S (Cortex-A7)\n\nNOTE: This commit avoids the st3 instruction for non-Android and\nnon-Apple builds, which may cause a performance regression against\nlibjpeg-turbo 1.4.x on ARM64 systems that are running plain Linux.\nSince ThunderX is the only platform known to suffer from slow ld3 and\nst3 instructions, it is probably better to check for the CPU type\nat run time and disable ld3/st3 only if ThunderX is detected.\n\nThis commit also enables the use of ld3 on Android platforms, which\nshould be a safe bet, at least for now.  This speeds up compression on\nthe afore-mentioned Nexus Cortex-A53 by 5.5-19% (avg. 12%) and on the\nNexus Cortex-A57 by 1.2-14% (avg. 6.3%), relative to the previous\ncommits.\n\nThis commit also removes unnecessary macros.\n\nRefer to #52 for discussion.\n\nCloses #52.\n\nBased on:\nhttps://github.com/mayeut/libjpeg-turbo/commit/6bad905034e6e73b33ebf07a74a6b72f58319f62\nhttps://github.com/mayeut/libjpeg-turbo/commit/488dd7bf1726e2f6af6e9294ccf77b729fec1f20\nhttps://github.com/mayeut/libjpeg-turbo/commit/4f4d057c1fb31d643536e6effb46a5946e15c465\nhttps://github.com/mayeut/libjpeg-turbo/commit/d3198afc43450989a4fc63d2dcbe3272c8a0a3c1\n"
    },
    {
      "commit": "cbfa696fc1be251a9f20f8e83e335a863a6c4be8",
      "tree": "1a6c7208167dfe81165ec110af7021116dd3ceba",
      "parents": [
        "da047e8b1443c455ee2ca4c0498febb8c552105f"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 01 11:28:55 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 01 11:28:55 2016 -0600"
      },
      "message": "Update Android build instr. for ARMv8, PIE, etc.\n\n* Include information on how to do a 64-bit ARMv8 build with the latest\nNDK\n* Suggest -fPIE and -pie as default CFLAGS (required for android-16 and\nlater.\n* Remove -fstrict-aliasing flag (-Wall already includes it)\n"
    },
    {
      "commit": "f5cd71c5cf9404c1e1afcdc2e45712adeaddb3e9",
      "tree": "da034278295d78658defbaea96ed57f432eef0e3",
      "parents": [
        "6c3fc97b1a1ed3c57ea6d3a779553d595b70e0e6",
        "da047e8b1443c455ee2ca4c0498febb8c552105f"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 01 11:19:06 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 01 11:19:06 2016 -0600"
      },
      "message": "Merge branch \u00271.4.x\u0027\n"
    },
    {
      "commit": "da047e8b1443c455ee2ca4c0498febb8c552105f",
      "tree": "e976c4c936ea24045f30d038e7b6204c725bdd8b",
      "parents": [
        "93eaa37a3bd67621a4c4f7775bbcdefdedc7e753"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 01 11:17:41 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 01 11:17:41 2016 -0600"
      },
      "message": "Makefile.am: formatting tweak\n"
    },
    {
      "commit": "6c3fc97b1a1ed3c57ea6d3a779553d595b70e0e6",
      "tree": "94d07c94efb0ea5bf01a1e0f175287f8e8e2c2f9",
      "parents": [
        "31280613821c659d5f6afe828d5e6fcf2ad0c18e"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 01 11:12:22 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 01 11:12:22 2016 -0600"
      },
      "message": "Update Android build instr. for ARMv8, PIE, etc.\n\n* Include information on how to do a 64-bit ARMv8 build with the latest\nNDK\n* Suggest -fPIE and -pie as default CFLAGS (required for android-16 and\nlater.\n* Remove -fstrict-aliasing flag (-Wall already includes it)\n"
    },
    {
      "commit": "31280613821c659d5f6afe828d5e6fcf2ad0c18e",
      "tree": "fdcbc02bd2ba91a035c5b9dd699f4a2964c4e8f6",
      "parents": [
        "8af3f8a9cb165a8cc7e2bf0ef2747dc54e8052ec"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 01 11:03:39 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Feb 01 11:03:39 2016 -0600"
      },
      "message": "TJBench: Fix segfault on Android\n\nFor whatever reason, the \"write\" global variable in tjbench.c was\noverriding the linkage with the write() system function.  This may have\naffected other platforms as well but was not known to.\n"
    },
    {
      "commit": "8af3f8a9cb165a8cc7e2bf0ef2747dc54e8052ec",
      "tree": "60c310e40d03ac9933733584d12f0b24ddecbfc8",
      "parents": [
        "d38b4f21ec5baabb448cd9ffa078fa9150d54af2"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Jan 18 16:40:07 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Mon Jan 18 16:43:50 2016 -0600"
      },
      "message": "Provide pkg-config (.pc) scripts\n\nThis allows a project to use PKG_CHECK_MODULES() in its configure.ac\nfile to easily check for the presence of libjpeg-turbo and modify the\ncompiler/linker flags accordingly.  Note that if a project relies solely\non pkg-config to check for libjpeg-turbo, then it will not be possible\nto build that project using libjpeg or an earlier version of\nlibjpeg-turbo.\n\nCloses #53\n\nBased on:\nhttps://github.com/cberner/libjpeg-turbo/commit/496713871939b550d00005b4042420da41641a0a\n"
    },
    {
      "commit": "d38b4f21ec5baabb448cd9ffa078fa9150d54af2",
      "tree": "013c35d9228fac97bde0d8c66a14d1d0d22d075d",
      "parents": [
        "e8aa5fa9349016c2eb5e05d01e16a8c47f7b68c8"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat Jan 16 01:53:32 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Sat Jan 16 02:39:02 2016 -0600"
      },
      "message": "Optimize ARM64 SIMD code for Cavium ThunderX\n\nPer @ssvb:\nThunderX is an ARM64 chip that dedicates most of its transistor real\nestate to providing 48 cores, so each core is not as fast as a result.\nEach core is dual-issue \u0026 in-order for scalar instructions and has only\na single-issue half-width NEON unit, so the peak throughput is one\n128-bit instruction per 2 cycles.  So careful instruction scheduling is\nimportant.  Furthermore, ThunderX has an extremely slow implementation\nof ld2 and ld3, so this commit implements the equivalent of those\ninstructions using ld1.\n\nCompression speedup relative to libjpeg-turbo 1.4.2:\n48-core ThunderX (RunAbove ARM Cloud), Linux, 64-bit: 58-85% (avg. 74%)\nrelative to jpeg-6b: 1.75-2.14x (avg. 1.95x)\n\nRefer to #49 and #51 for discussion.\n\nCloses #51.\n\nThis commit also wordsmiths the ChangeLog entry (the ARMv8 SIMD\nimplementation is \"complete\" only for compression-- it still lacks some\ndecompression algorithms, as does the ARMv7 implementation.)\n\nBased on:\nhttps://github.com/mayeut/libjpeg-turbo/commit/9405b5fd031558113bdfeae193a2b14baa589a75\n\nwhich is based on:\nhttps://github.com/libjpeg-turbo/libjpeg-turbo/commit/f561944ff70adef65bb36212913bd28e6a2926d6\nhttps://github.com/libjpeg-turbo/libjpeg-turbo/commit/962c8ab21feb3d7fc2a7a1ec8d26f6b985bbb86f\n"
    },
    {
      "commit": "e8aa5fa9349016c2eb5e05d01e16a8c47f7b68c8",
      "tree": "60d0bfdd362c226594694cf54f4ea90a21178496",
      "parents": [
        "ec6941f7bc5b3ea354825cef24085e8d4abbab02"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Jan 15 13:15:54 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Jan 15 13:15:54 2016 -0600"
      },
      "message": "Add JSIMD_NOHUFFENC environment variable for ARM\n\nUseful in regression/performance testing\n"
    },
    {
      "commit": "ec6941f7bc5b3ea354825cef24085e8d4abbab02",
      "tree": "6e9a8c91e2a336d54792f9bf63fe17fd2b6db901",
      "parents": [
        "499c470b63fb427791b2602fcc0d3f165a81144c"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Jan 15 09:29:11 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Fri Jan 15 11:21:48 2016 -0600"
      },
      "message": "Complete the ARM64 NEON SIMD implementation\n\nThis adds 64-bit NEON coverage for all of the algorithms that are\ncovered by the 32-bit NEON implementation, except for h2v1 (4:2:2) fancy\nupsampling (used when decompressing 4:2:2 JPEG images.)  It also adds\n64-bit NEON SIMD coverage for:\n\n* slow integer forward DCT (compressor)\n* h2v2 (4:2:0) downsampling (compressor)\n* h2v1 (4:2:2) downsampling (compressor)\n\nwhich are not covered in the 32-bit implementation.\n\nCompression speedups relative to libjpeg-turbo 1.4.2:\nApple A7 (iPhone 5S), iOS, 64-bit: 113-150% (reported)\n48-core ThunderX (RunAbove ARM Cloud), Linux, 64-bit: 2.1-33% (avg. 15%)\n\nRefer to #44 and #49 for discussion\n\nThis commit also removes the unnecessary\n\n    if (simd_support \u0026 JSIMD_ARM_NEON)\n\nstatements from the jsimd* algorithm functions.  Since the jsimd_can*()\nfunctions check for the existence of NEON, the corresponding algorithm\nfunctions will never be called if NEON isn\u0027t available.\n\nBased on:\nhttps://github.com/mayeut/libjpeg-turbo/commit/dcd9d84f10fae192c0e3935818dc289bca9c3e29\nhttps://github.com/mayeut/libjpeg-turbo/commit/b0d87b811f37bd560083deea8c6e7d704e5cd944\nhttps://github.com/mayeut/libjpeg-turbo/commit/70cd5c8a493a67f4d54dd2067ae6dedb65d95389\nhttps://github.com/mayeut/libjpeg-turbo/commit/3e58d9a064648503c57ec2650ee79880f749a52b\nhttps://github.com/mayeut/libjpeg-turbo/commit/837b19542f53fa81af83e6ba002d559877aaf597\nhttps://github.com/mayeut/libjpeg-turbo/commit/73dc43ccc870c2e10ba893e9764b8e48d6836585\nhttps://github.com/mayeut/libjpeg-turbo/commit/a82b71a261b4c0213f558baf4bc745f1c27356d8\nhttps://github.com/mayeut/libjpeg-turbo/commit/c1b1188c2106d6ea7b76644b6023b57edeb602e1\nhttps://github.com/mayeut/libjpeg-turbo/commit/305c89284e1bb222b34fbc7261f697a0cc452a41\nhttps://github.com/mayeut/libjpeg-turbo/commit/7f443f99950b4d7d442b9b879648eca5273209bd\nhttps://github.com/mayeut/libjpeg-turbo/commit/4c2b53b77da5a20e30e2aadaeddb0efbfe24e06d\n\nUnified version with fixes:\nhttps://github.com/mayeut/libjpeg-turbo/commit/1004a3cd05870612a194b410efeaa1b4da76d246\n"
    },
    {
      "commit": "499c470b63fb427791b2602fcc0d3f165a81144c",
      "tree": "27d99cf089c94d4cd79a5cf9c696403fd6fd40e7",
      "parents": [
        "9c8cee8c29a863d5c7ebd8bf21bdcf0c370c6730"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Jan 13 03:13:20 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Jan 13 23:38:35 2016 -0600"
      },
      "message": "ARM32 NEON SIMD implementation of Huffman encoding\n\nFull-color compression speedups relative to libjpeg-turbo 1.4.2:\n\n800 MHz ARM Cortex-A9, iOS, 32-bit:  26-44% (avg. 32%)\n\nRefer to #42 and #47 for discussion.\n\nThis commit also removes the unnecessary\n\n    if (simd_support \u0026 JSIMD_ARM_NEON)\n\nstatements from the jsimd* algorithm functions.  Since the jsimd_can*()\nfunctions check for the existence of NEON, the corresponding algorithm\nfunctions will never be called if NEON isn\u0027t available.  Removing those\nif statements improved performance across the board by a couple of\npercent.\n\nBased on:\nhttps://github.com/mayeut/libjpeg-turbo/commit/fc023c880ce1d6c908fb78ccc25f5d5fd910ccc5\n"
    },
    {
      "commit": "9c8cee8c29a863d5c7ebd8bf21bdcf0c370c6730",
      "tree": "e4e9bea58b0b46100712b90a8968f124c3b728c7",
      "parents": [
        "4e356a92dc6ee443b6a40e50992afbdbf86fbb2f"
      ],
      "author": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Jan 13 13:01:45 2016 -0600"
      },
      "committer": {
        "name": "DRC",
        "email": "information@libjpeg-turbo.org",
        "time": "Wed Jan 13 22:32:19 2016 -0600"
      },
      "message": "tjbench: Further tweaks to -nowrite feature\n\n* Do not compute compression error if -nowrite is specified\n* Adjust formatting of -nowrite usage description\n"
    }
  ],
  "next": "4e356a92dc6ee443b6a40e50992afbdbf86fbb2f"
}
