)]}'
{
  "log": [
    {
      "commit": "ae4719298a01f17f7c8575224558d079aa71b2b5",
      "tree": "94a2cd6b5fa0dfd15856b66fe5c97892c6d86493",
      "parents": [
        "9e8dd09f886e14585d2018f713b7d384e768856a"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon May 03 11:28:49 2021 -0400"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon May 03 15:29:27 2021 -0400"
      },
      "message": "AImageDecoder: respond to API feedback\n\nBug: 186656488\nTest: I4dc406e85709dda14af8b414e2da3d39bb07643b\n\nAImageDecoderFrameInfo_getDuration returns\nANDROID_IMAGE_DECODER_BAD_PARAMETER on null info.\n\nClarify that AImageDecoder_getFrameInfo will succeed if\nAImageDecoder_advanceFrame does, explaining why there are not more error\npossibilities.\n\nExplain more clearly what AImageDecoderFrameInfo_hasAlphaWithinBounds\nmeans.\n\nChange-Id: Ic02f1798904ad5ccc446fb4cd76cbff451a4e450\n"
    },
    {
      "commit": "cf485437a02da258219516c72bf57dcb579a0d8e",
      "tree": "c72160e37261e9cd30c3b33e6e8130591f2ececb",
      "parents": [
        "5bab982501f472655f4d9b300c792e96621fde2c"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon Apr 26 15:15:45 2021 -0400"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon Apr 26 15:37:32 2021 -0400"
      },
      "message": "AImageDecoder: only support animation for F16 and 8888 (header)\n\nBug: 180594747\nTest: I51dedd94aa8ff5d6846cada96861ffca30d509d7\n\nIn particular, a client might expect that ANDROID_BITMAP_FORMAT_RGB_565\nis supported. (ANDROID_BITMAP_FORMAT_RGBA_4444 is not supported at all,\nand ANDROID_BITMAP_FORMAT_NONE is an invalid request.\nANDROID_BITMAP_FORMAT_A_8 is only supported for PNG and JPEG, and\nAImageDecoder does not support multiframe images in those formats\nanyway.)\n\nHowever, 565 requires that the image be opaque. Even if the first frame\nis opaque, it is possible that a later frame is not. Moreover, the frame\ndata in a later frame may include transparent pixels, even if the\nresulting frame is opaque after blending with the frame buffer. In that\ncase, libwebp and libgifcodec decode the frame data directly to 565, so\nthe fact that there were transparent pixels has been lost, and there is\nno way to properly blend with the prior frame.\n\nFor clarity, specify the formats supported, rather than the ones not\nsupported.\n\nChange-Id: I03818703dc79942be4e574db31c6e2927ab571ed\n"
    },
    {
      "commit": "c150ea1268f5eb90dafe35f0ff504b87b2fc99d0",
      "tree": "ef040ed9a24b1f288a8a791000ae0997fb6a166e",
      "parents": [
        "0e4c8a4648f7c7e44ebd7ddd7c02302744334df6"
      ],
      "author": {
        "name": "gfan",
        "email": "gfan@google.com",
        "time": "Wed Apr 14 09:27:55 2021 -0700"
      },
      "committer": {
        "name": "Gerry Fan",
        "email": "gfan@google.com",
        "time": "Thu Apr 15 03:50:53 2021 +0000"
      },
      "message": "Fixing ndk reference doc link errors in imagedecoder.h etc.\n\nBug: 183012389,183026241\nTest: \u0027m ndk\u0027, regenerate ndk reference doc, no broken link warnings\nChange-Id: I8c74e929266666f64d0f7d41e87dffeb4bfdfe37\n"
    },
    {
      "commit": "159ab12de6e6b01ccbc4bb24dee0f37ade9ff22f",
      "tree": "0b5ebca9f221c9d04387b79d6406b351edc997d1",
      "parents": [
        "97792f96d7760311383ca9c94590d5039a025583"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Feb 24 15:32:42 2021 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Feb 24 15:32:42 2021 -0500"
      },
      "message": "AImageDecoder: Recommend only downscaling with setTargetSize\n\nFixes: 180037959\nTest: NA\nChange-Id: I19076b4368623806f7a9f6312a780a6d5886e49e\n"
    },
    {
      "commit": "627873f3a6fd586c6e8e21fc995d590450c13615",
      "tree": "905b286826dd7888713a804ea5d5cc3b3d67dbc5",
      "parents": [
        "a9b9fe40c28882f3db0b13dc9ac9b00b0fd2eab1",
        "677f8c48f4d4376ae2853b5446c1fd639a8e00c0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 09 03:19:10 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 09 03:19:10 2021 +0000"
      },
      "message": "Merge \"Stop #define\u0027ing __ANDROID_API__.\" am: 94be650e36 am: 73a4ac7daf am: 677f8c48f4\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1580211\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: I66d850d16d5ff7c480cb5f8506801660dbb84b3f\n"
    },
    {
      "commit": "08e6cf5d7aa77c529bd8548eb86a66c1fdf029b9",
      "tree": "622d75dba9ff8ffaaf9659afd9fa772e9f938d19",
      "parents": [
        "db3bb21b2d1a32530e6138797ba3bd6ad780e673"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 08 12:37:53 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 08 12:37:53 2021 -0800"
      },
      "message": "Stop #define\u0027ing __ANDROID_API__.\n\nAlso normalize the non-bionic definitions of __INTRODUCED_IN() to match\nthe majority.\n\nBug: http://b/178449269\nTest: treehugger\nChange-Id: I378a6d8a01999958f397c896a375d38a9de43f8f\n"
    },
    {
      "commit": "c1f093f6bd6f611c8a22ac786090f132b1325aa7",
      "tree": "71dfcfe7dccae5c0e15544c5b1c692d635b92701",
      "parents": [
        "7af525ef9537b6870dd2717ddf59533c06ba17fe"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Jan 08 14:25:31 2021 -0500"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 04 00:35:30 2021 +0000"
      },
      "message": "Support building libjnigraphics on the host\n\nBug: 169137236\nTest: SANITIZE_HOST\u003daddress make imagedecoder_fuzzer\n\nAlong with a change in frameworks/base\n(I0ffc4e90b4083db79fbb12012e2e1284206b43e3), this will make it possible\nto run imagedecoder_fuzzer on the host, for faster fuzzing.\n\nimagedecoder.h:\n- define __ANDROID_API__ and __INTRODUCED_IN on non-Android systems, so\n  methods can be called on those systems.\n\nbitmap.h:\n- define __ANDROID_API__ and __INTRODUCED_IN on non-Android systems, so\n  methods can be called on those systems.\n- include \u003cstddef.h\u003e, which is needed on non-Android systems for size_t.\n- on Android, unguard types and enums for easier opportunistic usage via\n  dlsym.\n\nnativewindow/Android.bp\n- make libnativewindow_headers host_supported, so that libjnigraphics\n  can access android/data_space.h\n\nBug: http://b/179303032\nChange-Id: Iefdb4132d6f10f9164be85f4dc6e11883f6fd37e\nMerged-In: Iefdb4132d6f10f9164be85f4dc6e11883f6fd37e\n"
    },
    {
      "commit": "23e82b4798681581e3412b2b454ff86a76d078f8",
      "tree": "057f613c77333368db867e8e4ad5b5e051387ed4",
      "parents": [
        "87eb2c419ef230366ccbdbe980c4f49b7a70f372"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 14:55:48 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 01 13:34:00 2021 -0800"
      },
      "message": "Remove __ANDROID_API__ #if checks.\n\n__INTRODUCED_IN() does the right thing automatically now.\n\nBug: http://b/178449269\nTest: treehugger\nChange-Id: I94d2ad6fafb6d907793a416db82a9e56f4f61d1c\nMerged-In: I94d2ad6fafb6d907793a416db82a9e56f4f61d1c\n"
    },
    {
      "commit": "b7425079bf06c494a4b5e190598c51148361dc64",
      "tree": "f97c8504c87feff37c1910a0d8997e5e1f4e15fb",
      "parents": [
        "7dfe58cc10486fb3a06309aaf5abfc4290c6931c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 14:55:48 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 01 11:42:45 2021 -0800"
      },
      "message": "Remove __ANDROID_API__ #if checks.\n\n__INTRODUCED_IN() does the right thing automatically now.\n\nBug: http://b/178449269\nTest: treehugger\nChange-Id: I94d2ad6fafb6d907793a416db82a9e56f4f61d1c\nMerged-In: I94d2ad6fafb6d907793a416db82a9e56f4f61d1c\n"
    },
    {
      "commit": "2416f131f6102f9c60ddbe73f8d43f9f75da1c13",
      "tree": "c68b38bfdc3ec9b6218a93e20293a2620858eaf3",
      "parents": [
        "d26cd28bce5a34a364d55a4ada25ba798dc868aa",
        "726a550804ef4fbed2d0a4067d598a322ec6d1f3"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Fri Jan 15 14:24:34 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 15 14:24:34 2021 +0000"
      },
      "message": "Merge \"Support building libjnigraphics on the host\""
    },
    {
      "commit": "726a550804ef4fbed2d0a4067d598a322ec6d1f3",
      "tree": "bacf28e4e203fa659c575ab910467223da166f5e",
      "parents": [
        "78859b42b5697ca1165d14fe23aa4b0e2f3141cb"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Jan 08 14:25:31 2021 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Jan 14 12:02:31 2021 -0500"
      },
      "message": "Support building libjnigraphics on the host\n\nBug: 169137236\nTest: SANITIZE_HOST\u003daddress make imagedecoder_fuzzer\n\nAlong with a change in frameworks/base\n(I0ffc4e90b4083db79fbb12012e2e1284206b43e3), this will make it possible\nto run imagedecoder_fuzzer on the host, for faster fuzzing.\n\nimagedecoder.h:\n- define __ANDROID_API__ and __INTRODUCED_IN on non-Android systems, so\n  methods can be called on those systems.\n\nbitmap.h:\n- define __ANDROID_API__ and __INTRODUCED_IN on non-Android systems, so\n  methods can be called on those systems.\n- include \u003cstddef.h\u003e, which is needed on non-Android systems for size_t.\n- on Android, unguard types and enums for easier opportunistic usage via\n  dlsym.\n\nnativewindow/Android.bp\n- make libnativewindow_headers host_supported, so that libjnigraphics\n  can access android/data_space.h\n\nChange-Id: Iefdb4132d6f10f9164be85f4dc6e11883f6fd37e\n"
    },
    {
      "commit": "df6bae2a6160294c63c7d617db24cd82ec40ce80",
      "tree": "72d44ebfeaf7fc8671c845f335b23ed55ed323c8",
      "parents": [
        "7d4e69cb21471d40965f380e90efda0903003b87",
        "78859b42b5697ca1165d14fe23aa4b0e2f3141cb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 14 06:06:03 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 14 06:06:03 2021 +0000"
      },
      "message": "Merge changes from topic \"AImageDecoder_setInternallyHandleDisposePrevious\"\n\n* changes:\n  Add AImageDecoder_setInternallyHandleDisposePrevious\n  AImageDecoder: Hide support for animated HEIF\n"
    },
    {
      "commit": "78859b42b5697ca1165d14fe23aa4b0e2f3141cb",
      "tree": "356a981426a16732b83910a6b044607efa93c43b",
      "parents": [
        "ec2cbe34d742e13e06612ce788bfd3bd3e153336"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 13 11:48:34 2021 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 13 12:00:01 2021 -0500"
      },
      "message": "Add AImageDecoder_setInternallyHandleDisposePrevious\n\nBug: 160984428\nTest: I00682f201a52f894b0e1335c00c4368ce675a805\nChange-Id: I1262f6003e45f8217cb1adb90ffcc5a165a24b7a\n"
    },
    {
      "commit": "ec2cbe34d742e13e06612ce788bfd3bd3e153336",
      "tree": "7f22614b19cb7fdffc25dcbbc727bf13248de01b",
      "parents": [
        "b2ee00d9caf9531ffe0fdcd66f82db18e4d46601"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Jan 12 12:59:21 2021 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 13 12:00:01 2021 -0500"
      },
      "message": "AImageDecoder: Hide support for animated HEIF\n\nBug: 160984428\nBug: 170672785\nTest: none\n\nThe system currently requires decoding the pixels of the frame of an\nHEIF/AVIF animated image before the actual duration of that frame can\nbe retrieved. Rather than handling this (likely temporary) limitation by\n- documenting it\n- providing extra APIs\n- limiting other formats in the same way\nremove documentation specifying that animated HEIF is supported.\nDevelopers are likely to be more interested in the other formats (GIF,\nWebP) anyway. If they do attempt to animate an HEIF file, they will\nstill see the default duration specified for the sequence.\n\nChange-Id: I5b97aeddee1311b694d73ac67b6157032d9ad745\n"
    },
    {
      "commit": "f1f209062eded1ed8c1e41aadec116b097caa662",
      "tree": "42c5ab5a70af6c8f8e2ea2b39768ddaa2f7050f5",
      "parents": [
        "90f29fbd76bdb3faf8b6d01c1b6dc9fe9c7ce35c"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Jan 13 08:28:13 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Jan 13 08:30:37 2021 +0900"
      },
      "message": "Remove an erroneous semicolon\n\n__INTRODUCED_IN(...) macro expands to attributes, and therefore\nshouldn\u0027t be after a semicolon.\n\nBug: N/A\nTest: m\n\nChange-Id: Ib56471aa33b107ae66c02945f91cc36e3a708d74\n"
    },
    {
      "commit": "b2ee00d9caf9531ffe0fdcd66f82db18e4d46601",
      "tree": "49f3efd1bea13e257d4041dfb22738c26bbc8398",
      "parents": [
        "9b9fb394e3f40b90fff0c24bfbf225da91c8b8c8"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Jan 07 15:37:34 2021 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Jan 08 10:16:02 2021 -0500"
      },
      "message": "Fix null annotations in AImageDecoder\n\nBug: 160984428\nTest: I27033454b2b8b683db727190b834b970c9732d8e\n\nMake AImageDecoder_delete _Nullable. This matches\nAImageDecoderFrameInfo_delete. It also makes sense because it just calls\n\"delete\", and even if it didn\u0027t, it does conceptually the same thing, so\nit should be safe to pass null.\n\nFix annotation for AImageDecoder_create*. Although the pointer must not\nbe null, the pointer it points to can, both as input and as output. This\nchange doesn\u0027t seem to affect my local build system (it doesn\u0027t warn if\nI pass a pointer to a pointer which points to null without this change),\nthis is more accurate.\n\nChange-Id: I0bf4e160b21169b81a377378bb65cbfd2ef809b2\n"
    },
    {
      "commit": "9b9fb394e3f40b90fff0c24bfbf225da91c8b8c8",
      "tree": "dc1cd127fb724a9ffaec19f59b0cce55d503f08f",
      "parents": [
        "ac9f749cfe3087d9624bdfc31065dfc219a9e6b4"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Dec 03 16:55:36 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Jan 08 09:40:38 2021 -0500"
      },
      "message": "Add AImageDecoder_resultToString\n\nBug: 160984428\nTest: I118eaa99cd65b70dbfb2c8a7731c714564911a34\n\nThis allows clients to print a readable string when there is an error\n(e.g. \"ANDROID_IMAGE_DECODER_BAD_PARAMETER\" instead of \"-5\").\n\nChange-Id: I24400979e1ce12d5c8b48bba456b07fdfda49662\n"
    },
    {
      "commit": "ac9f749cfe3087d9624bdfc31065dfc219a9e6b4",
      "tree": "b079b29ed9a30272dcda961f4b5c808ebb204f8a",
      "parents": [
        "5528700001e411698cbf95e72ab69411e8705309"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon Dec 28 15:33:13 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 06 14:00:14 2021 -0500"
      },
      "message": "AImageDecoder: Add APIs for FrameInfo\n\nBug: 160984428\nTest: If47d475233f6b9973abf68029b63a610ff47cdae\n\nChange-Id: I7f28499fecfc7d36bc9b493568d1c03023e65ce4\n"
    },
    {
      "commit": "5528700001e411698cbf95e72ab69411e8705309",
      "tree": "4895c304284ef173ba2407530c5d53bffeecb796",
      "parents": [
        "3b3700edf4cd5d1eab7cf3de2cd332b2f903258e"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Oct 13 11:30:11 2020 -0400"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Jan 05 12:37:22 2021 -0500"
      },
      "message": "Add AImageDecoder _advanceFrame and _rewind\n\nBug: 160984428\nTest: Iae7d274b69999c471fd5610c6ef4d148cca81bec\n\nThese enable decoding all frames of an animated image (e.g. GIF).\n\nAlso add ANDROID_IMAGE_DECODER_FINISHED, which can be returned by\nAImageDecoder_decodeImage or AImageDecoder_advanceFrame when the end of\nthe animation has been reached.\n\nDisallow AImageDecoder_set* methods after the first frame, since\nchanging the settings would interfere with blending and caching for\nkRestorePrevious frames.\n\nSpecify that a single frame GIF is not animated.\n\nChange-Id: I6a0738d2e8ed27062c86d7b6dce37d54425552f2\n"
    },
    {
      "commit": "3b3700edf4cd5d1eab7cf3de2cd332b2f903258e",
      "tree": "bdf2c4558541d865e5e9d28ccff2743e378da332",
      "parents": [
        "542630954b270eadd31af33a8019df588647d9df"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Dec 29 11:52:12 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Jan 05 12:37:22 2021 -0500"
      },
      "message": "AImageDecoder: Document/unguard types/enums\n\nBug: 160984428\nTest: none\n\nFrom go/android-ndk-api-guidelines, these shouldn\u0027t be guarded, but they\nshould have an \"Introduced in API ##\" line. Match the guidelines.\n\nChange-Id: I9bb51adb81782e7f6df8bd1d614d7e00a2e5556a\n"
    },
    {
      "commit": "728a9ac4e726707fd5d3c5aeac286382fdd68d0c",
      "tree": "bc004832774fc3853b0749f61086d9696b9d6f46",
      "parents": [
        "1b3897163eccbfd75ed7e4a40de3537afad458b1"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon Oct 12 10:34:05 2020 -0400"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon Oct 12 10:34:05 2020 -0400"
      },
      "message": "Add AImageDecoder_getRepeatCount\n\nBug: 160984428\nTest: Ia09c95173d7e53dc2c0f6d170c67a3f3360275b9\nChange-Id: Id16020360d19c5cd5a552a53b186c1e6d2caab59\n"
    },
    {
      "commit": "1b3897163eccbfd75ed7e4a40de3537afad458b1",
      "tree": "1072919e02cc5f252eff76a9fe4f9c55642059fe",
      "parents": [
        "4a8ecfe634c49a85993a7f31a1981a9215c582c1"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Oct 09 13:12:39 2020 -0400"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Oct 09 13:12:39 2020 -0400"
      },
      "message": "Add AImageDecoder_isAnimated\n\nBug: 160984428\nTest: Ie98a7e80c2d0d6101bdf0ac3549a1fa6581aeba6\nChange-Id: I32c3994f87bf9f342a5b9dec462f7be23a346351\n"
    },
    {
      "commit": "4a8ecfe634c49a85993a7f31a1981a9215c582c1",
      "tree": "e0338407fbe18058d7a62d84bcbc4b8d22f5e3b6",
      "parents": [
        "f3f6d1d5367decca1946abb8b2c75c9de0fa8726"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Oct 07 10:53:24 2020 -0400"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Oct 07 11:02:09 2020 -0400"
      },
      "message": "Add _Nonnull annotations to AImageDecoder\n\nBug: 160984428\nTest: AImageDecoderTest\nTest: If6ee6314096bf2ded103f502cac52e56da9be5d8\n\nThis provides documentation that parameters (and return values) should\nnot be null, and allows the compiler to catch some errors. Requires an\nupdate to the CTS tests, which test passing null.\n\nChange-Id: Ife5d519def81b3a8845b43aaaa69d26dc2c0ac20\n"
    },
    {
      "commit": "7be0e2def2d9cff2436511696838fcf0734b4da1",
      "tree": "59e18c50da065bb5b1004fc7ab4f1f73b52701d9",
      "parents": [
        "34122992bf4bb54d9d015041627cafd12b0bbe0c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 02 13:05:04 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 02 20:07:02 2020 +0000"
      },
      "message": "API level 30 cleanup.\n\nMake sure that we have the __INTRODUCED_IN()s and -- more importantly --\nthe API levels recorded in the documentation.\n\nBug: https://github.com/android/ndk/issues/1271\nTest: treehugger\nChange-Id: I74752f19f165fd5c56b2dfd783298c2da1a926d6\n"
    },
    {
      "commit": "bb5ffd2074fe150725eee7eb1f97d5814a2df249",
      "tree": "44371948af394d4ca13425dcf1a7878a65c9db52",
      "parents": [
        "8cee65ec1d67ee8ea0a40099a26e1f94c7b06feb"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Feb 06 11:45:16 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Feb 06 14:35:35 2020 -0500"
      },
      "message": "AImageDecoder: respond to API review\n\nBug: 148954890\nTest: Generate docs\n\nList the formats supported.\n\nList the possible error codes that can be returned from each method and\nwhat it means.\n\nChange-Id: I192888c1d438db0308cc715ab7f4997543509e73\n"
    },
    {
      "commit": "8cee65ec1d67ee8ea0a40099a26e1f94c7b06feb",
      "tree": "7f7414a0d5bedccd7ed2127599f9570f07dc54fe",
      "parents": [
        "7ac76eef06f784e7a7fc14d8462419a704aff75d"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Jan 30 14:20:42 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Feb 06 09:29:06 2020 -0500"
      },
      "message": "AImageDecoder: update comments around dataspaces\n\nBug: 135133301\nTest: I5e8bdcdae6837db23c0f4ef08f931f3bebe0ce0d\n\nA companion change (I489f31fef79dec11e97c8e8fb9207adb77a3d0c7) makes\nAImageDecoder default to doing no color conversion. Update comments to\nreflect that.\n\nChange-Id: Icc3b0f101598ce98c458ff43597ee05b3662664c\n"
    },
    {
      "commit": "97fea5f41c5da1765889660a881f5d7b655de544",
      "tree": "48c257b2a5fe8afe84a1a84cb43951fc41d1f11a",
      "parents": [
        "5e58c42656c78970d6c6918092c806579921b75e"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Jan 30 12:18:20 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Feb 05 12:35:32 2020 -0500"
      },
      "message": "Update imagedecoder documentation\n\nBug: 147839368\nTest: No change in behavior\n\nUpdate documentation in response to feedback and after reviewing\nhttps://android.devsite.corp.google.com/ndk/reference/group/image-decoder.html#group___image_decoder_1ga8c3a19f8ae30a936a17b3879f849ea60\n\n- Use @defgroup instead of @addtogroup, since this is the only file for\nthis group.\n- Add a top-level description, including supported formats\n- Describe the ANDROID_IMAGE_DECODER result enum, and use proper format\nfor the individual values so they will be added to the documentation\npage.\n- for createFromAAsset, specify that the AAsset can be closed *after*\ndeleting the AImageDecoder, as we do in createFromFd\n- reformat some return lines to look more consistent\n- Remove reference to animated images\n- Move comment describing AImageDecoderHeaderInfo to before the typedef,\nso it will be included in the documentation, and expand the comment\n- More thorough description for getWidth/getHeight\n- Move comment describing limitation on stride to stride (it had been on\nthe description for size)\n- Clarify various comments, fix links, etc.\n\nChange-Id: I26482ea8373081ee8d47455f7028f2bb6ec6a58e\n"
    },
    {
      "commit": "57c509e73c4b9fff8c223a7a780debb887fdec4f",
      "tree": "0b751206d8f02607ae121ee46e1505185ffc981c",
      "parents": [
        "aa8c8df1e49875df1487c490279e3c164586df26",
        "a9f397b562df067d27888789954c539f6c0fa624"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Tue Jan 28 14:42:50 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 28 14:42:50 2020 +0000"
      },
      "message": "Merge \"Update imagedecoder.h to build as a C file\""
    },
    {
      "commit": "a9f397b562df067d27888789954c539f6c0fa624",
      "tree": "a2ccd4bd3345bbcab61b6caf30a1b2e75a9bb26e",
      "parents": [
        "4274794a833b94f81bbd7b398ed399fe6979ad51"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon Jan 27 12:42:56 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Mon Jan 27 15:21:19 2020 -0500"
      },
      "message": "Update imagedecoder.h to build as a C file\n\nBug: 135133301\nTest: build as a C file\n\nAAsset is a forward-declared struct, so it needs to be declared in\nparameters as a struct in order to compile as a C file.\n\nIn addition, include rect.h explicitly for documentation purposes. This\nalso means that ARect as a parameter does not need to be declared as\n\"struct ARect\".\n\nChange-Id: I30c5176010ec3b5b0405f0b383654a7cfca65b62\n"
    },
    {
      "commit": "021c1d8b2c3bbec10030e34f0fee45ada4b9806a",
      "tree": "25db305f68bce42e984cbab4a9b0b088559e6570",
      "parents": [
        "b2a6955c6bc7a59b916cf71347afc9c7e57c54ee",
        "59262f93650e4fa7205c64680045faa52f4da5fa"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 27 16:06:26 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 27 16:06:26 2020 +0000"
      },
      "message": "Merge \"Update decodeImage to account for alignment\""
    },
    {
      "commit": "5d0445cc3e16af2e49ae87580ecc420be54b4608",
      "tree": "e317ae94b4b9acb87fcf840660ceb8c9dccbdb5b",
      "parents": [
        "4274794a833b94f81bbd7b398ed399fe6979ad51"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Jan 23 09:43:43 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Jan 23 09:43:43 2020 -0500"
      },
      "message": "Clean up imagedecoder header file\n\nBug: 135133301\nTest: Ibf7c0e563feeb08ce6dbabb5e86ddb385c9dff54\n\nRemove AImageDecoderHeaderInfo_isAnimated. We are punting animation\nsupport to S, so there is no reason to report whether the image is\nanimated.\n\nUse int32_t for width and height. We already return these for\nAImageDecoderHeaderInfo_getWidth/getHeight, so use the same type for\nAImageDecoder_setTargetSize/computeSampledSize.\n\nUse int32_t for AImageDecoderHeaderInfo_getAndroidBitmapFormat. This\nmatches the convention for what to return when the value is logically an\nenum.\n\nChange-Id: I93df851dd9fee2eb8d097e2158fb95003a0474db\n"
    },
    {
      "commit": "59262f93650e4fa7205c64680045faa52f4da5fa",
      "tree": "be6fd290fd7f8a3bb9126e75061680524fb41bb8",
      "parents": [
        "4274794a833b94f81bbd7b398ed399fe6979ad51"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 22 17:29:06 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 22 17:29:06 2020 -0500"
      },
      "message": "Update decodeImage to account for alignment\n\nBug: 147749998\nTest: I902de3410c45a21cf27b48a02cdc5d514b7ada60\n\nDocument that the stride must be pixel-aligned.\n\nChange-Id: Ifbd667298f542f249092ae8eca744b4ed65afaee\n"
    },
    {
      "commit": "77ff5159d1b2fa69f139686c5241df697a85ff49",
      "tree": "5200bb0be664b8d76a4a37ff8426bb44a170cbd1",
      "parents": [
        "a5e57f6d4e9e4f499dd94091b1769ac71e6fcfc7",
        "20d480ce9c6bfdd54d2b1e5e34306744968a4f37"
      ],
      "author": {
        "name": "Leon Scroggins",
        "email": "scroggo@google.com",
        "time": "Wed Jan 22 19:39:06 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 22 19:39:06 2020 +0000"
      },
      "message": "Merge \"Add AImageDecoder HeaderInfo_get/_setDataSpace\""
    },
    {
      "commit": "20d480ce9c6bfdd54d2b1e5e34306744968a4f37",
      "tree": "5430b564fb2b222c5036b9ec7967185143bd3dd2",
      "parents": [
        "46bb0aec07de33d13c545c39f5e2720450a50731"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 15 15:32:59 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Tue Jan 21 19:11:08 2020 -0500"
      },
      "message": "Add AImageDecoder HeaderInfo_get/_setDataSpace\n\nBug: 135133301\nTest: Iffe659e50078139188c3325545624640ae177cc2\n\nDefault to ADATASPACE_UNKNOWN for images that do not have a matching\nADataSpace. This matches the behavior of android.graphics.ImageDecoder\nand BitmapFactory, which would use an \"Unknown\" ColorSpace for the same\nimages. It also means that a client who knows the true underlying\nprofile information to treat it as if it came from that profile.\nFurther, it means that if we add more ADataSpace values in the future,\nthe decode will be unchanged. A client can still choose to use a known\nADataSpace using _setDataSpace.\n\nChange-Id: Id3ecf3bab17e4905fb2b75410ec756233d600c97\n"
    },
    {
      "commit": "f27256b956d6a48ce8d74aaab36617a41d00cee2",
      "tree": "f1a22cb4cd2f1e79dc826fbd78dab9a001152d1d",
      "parents": [
        "46bb0aec07de33d13c545c39f5e2720450a50731"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Sun Jan 19 21:13:04 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Sun Jan 19 21:41:17 2020 -0500"
      },
      "message": "Add AImageDecoder_computeSampledSize\n\nBug: 135133301\nTest: If9ed79d8dcf1169369ba454723f4ac8d26427b7b\n\nThis allows an NDK client to find an efficient target size to use.\n\nChange-Id: Iabc3db1547d4863f9aa0324bc438d994eadeef01\n"
    },
    {
      "commit": "1be112f2af35ea040d0203c765f7e229ba793a08",
      "tree": "c7a48413020bebef8336cce88838810b55249c1e",
      "parents": [
        "f157a263991ab9367d50b82cf7dd854035196cf6"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 15 04:26:44 2020 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jan 15 05:34:45 2020 -0500"
      },
      "message": "Rename setAlphaFlags to setUnpremultipliedRequired\n\nBug: 135133301\nTest: I48e49ee08ab1954eddf62ecae87942aeb128c10d\n\nThere is never any reason to request OPAQUE. If the image is already\nopaque, using PREMUL or UNPREMUL has no effect. If the image is not\nopaque, the requesting OPAQUE is an error. This behavior is not\nhelpful.\n\nIn addition, this matches the Java API for\nandroid.graphics.ImageDecoder.\n\nLastly, the old API was confusing for animated images. It is possible\nfor the first frame to be opaque, while a later frame is not. Requesting\nOPAQUE seems reasonable for this image, until decoding the non-opaque\nframe, at which point the inconsistency shows. Having a setting of\nunpremul or not makes it obvious what will happen for the later frame.\n\nChange-Id: I3381582e27894e1072db9b8635f3762b801f5d69\n"
    },
    {
      "commit": "2f98494d4d689a9484942435e4101114daadd91f",
      "tree": "c354784be7c190b8e5b4e779d5781e3e6cd7c02f",
      "parents": [
        "f39cef4e3381f63ba9620a49940a9e98c17177e0"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Nov 22 17:02:23 2019 -0500"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Fri Jan 10 09:28:17 2020 -0500"
      },
      "message": "Add NDK Apis for image decoding\n\nBug: 135133301\nTest: Ib84462ea5fa8a7779eaa44494775e182e52ecaca\nChange-Id: I8fd341c538f6b0d96f7abed77d58b003a3aefd12\n"
    }
  ]
}
