)]}'
{
  "log": [
    {
      "commit": "dd82ab237742b5594f19ac41e0b89ed7e37f007e",
      "tree": "2cc5991c6416f19d0e229c486126aef3a4f8525c",
      "parents": [
        "bd91a6540defccd060a5a314ce6ed41bcd562577",
        "99c4dd2fe88e23bfc89f9a28c6f2f1b0704ab95e"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 02 23:54:31 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 23:54:31 2017 +0000"
      },
      "message": "CameraBase: Don\u0027t return an sp\u003c\u003e by reference am: 4b49489c12 am: 8c32699ceb am: 8806c2a11d\nam: 99c4dd2fe8\n\nChange-Id: I7fd189d89b4a0ddb91a7f21485d97dabee9b784e\n"
    },
    {
      "commit": "99c4dd2fe88e23bfc89f9a28c6f2f1b0704ab95e",
      "tree": "be7e9ccb11a84114c63f963ae618e205d0a65f0e",
      "parents": [
        "4c1ad41c8b1d4da156e2d018000427c9dd1914c3",
        "8806c2a11dd6e810aeed8b65eeac76fba7c94b94"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 02 23:52:01 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 23:52:01 2017 +0000"
      },
      "message": "CameraBase: Don\u0027t return an sp\u003c\u003e by reference am: 4b49489c12 am: 8c32699ceb\nam: 8806c2a11d\n\nChange-Id: I61be9ab0dbd9acde84811cd437304267b9544099\n"
    },
    {
      "commit": "8806c2a11dd6e810aeed8b65eeac76fba7c94b94",
      "tree": "ea70dd4b952c548b27325b4a1b7e5d1160a1a7f0",
      "parents": [
        "ce9cab33b7981bcf44072e5c75f2d3818e9bd2cc",
        "8c32699ceb4fb4d25197c3a5d70ebc3f3f505abc"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 02 23:49:01 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 23:49:01 2017 +0000"
      },
      "message": "CameraBase: Don\u0027t return an sp\u003c\u003e by reference am: 4b49489c12\nam: 8c32699ceb\n\nChange-Id: I6fac31b3eaa435a665643343c2a6d8a6959be107\n"
    },
    {
      "commit": "4b49489c12e6862e9a320ebcb53872e809ed20ec",
      "tree": "c0e73d122ec6691384ef8f0b16debb3a1c60fdb3",
      "parents": [
        "c2f0c73bfcf36219f446e3eef9effe49a3a415a5"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Feb 01 15:27:41 2017 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 02 11:40:56 2017 -0800"
      },
      "message": "CameraBase: Don\u0027t return an sp\u003c\u003e by reference\n\nIf the server dies, the binder death callback clears out\nthe global camera service sp\u003c\u003e, and any current references to it\nwill become quite unhappy.\n\nTest: Camera CTS passes\nBug: 31992879\nChange-Id: I2966bed35d0319e3f26e3d4b1b8dc08006a22348\n"
    },
    {
      "commit": "bd33d5672f689b71be7d96683eb9235501ab0469",
      "tree": "74080a0b26a046f23bf36f624d783b351e9f118f",
      "parents": [
        "4636e7256a887074938467c7f71e2d79a61b2d90",
        "3b01b3019b1c62132792a1a94e2dc1f7cfc84f2e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 13 23:13:40 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Sep 13 23:13:40 2016 +0000"
      },
      "message": "SoundTrigger: get service by value.\nam: 3b01b3019b\n\nChange-Id: Ibb98c945e51fef6d21e91b1e9f670eb4f83c5663\n"
    },
    {
      "commit": "d9288b85b35e41ff330242ecb3a4e310ae14f2d3",
      "tree": "211802091034d6ebc5f55c44f49dbd4ed543c9c9",
      "parents": [
        "563b1009577ba6bd69847a7ccef609014987c8a0",
        "3b01b3019b1c62132792a1a94e2dc1f7cfc84f2e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 13 23:04:34 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 13 23:04:34 2016 +0000"
      },
      "message": "Merge \"SoundTrigger: get service by value.\" into lmp-dev"
    },
    {
      "commit": "c5251a627cd1c4c9403c80458fa10768813e7202",
      "tree": "fe4ae673410484aa9ddd73a94eb2fba87ce8401c",
      "parents": [
        "0dd714e4081b874425aef6c40b152fb918ae595e",
        "ee9effab3decc4275f4365b78c96911018e8de8c"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Sep 09 16:59:46 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 09 16:59:46 2016 +0000"
      },
      "message": "DO NOT MERGE: IOMX: work against metadata buffer spoofing am: 807e827d4c\nam: ee9effab3d\n\nChange-Id: I64bd10fa5e5e5a020c129c0b77d813a2772376a0\n"
    },
    {
      "commit": "3b01b3019b1c62132792a1a94e2dc1f7cfc84f2e",
      "tree": "788c73afa82ff5d0beaf8b5628870a342b28bb19",
      "parents": [
        "de97dbd662bc959bfe4a894c8678f1383294e148"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 07 16:58:39 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 09 09:15:30 2016 -0700"
      },
      "message": "SoundTrigger: get service by value.\n\nGet strong pointer to service interface by value and not reference to\nprevent race conditions where the service pointer can be cleared\nby another thread while in use.\n\nBug: 30907212\nChange-Id: I6f02ec3fd1e6392b842b334e1cc4f9aa23916009\n"
    },
    {
      "commit": "9a4768f7bfcd4654f93ad9b22eff87df493a9d5e",
      "tree": "6ce64deb9302b71b954bd076210592384598f082",
      "parents": [
        "0e2cc67785e417da3df72b3e7d8fcb792582b076"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 02 07:07:05 2016 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Aug 18 14:29:49 2016 -0700"
      },
      "message": "DO NOT MERGE: IOMX: work against metadata buffer spoofing\n\n- Prohibit direct set/getParam/Settings for extensions meant for\n  OMXNodeInstance alone. This disallows enabling metadata mode\n  without the knowledge of OMXNodeInstance.\n- Do not share metadata mode buffers cross process.\n- Disallow setting up metadata mode/tunneling/input surface\n  after first sendCommand. (Except to Idle for OMXCodec quirk.)\n- Disallow store-meta for input cross process.\n- Disallow emptyBuffer for surface input (via IOMX).\n- Fix checking for input surface.\n\n[backported from M]\n\nBug: 29422020\nChange-Id: I801c77b80e703903f62e42d76fd2e76a34e4bc8e\n"
    },
    {
      "commit": "86369364a07c85dd8f0e890b783a7bd434b8ef7c",
      "tree": "6a17ee31928e7fef5edee7d01467a0208f303cf3",
      "parents": [
        "8f4b1a7de0e102b9203cfda3970edd2eedd9becf"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 02 07:07:05 2016 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Aug 18 14:25:51 2016 -0700"
      },
      "message": "DO NOT MERGE: IOMX: work against metadata buffer spoofing\n\n- Prohibit direct set/getParam/Settings for extensions meant for\n  OMXNodeInstance alone. This disallows enabling metadata mode\n  without the knowledge of OMXNodeInstance.\n- Do not share metadata mode buffers cross process.\n- Disallow setting up metadata mode/tunneling/input surface\n  after first sendCommand. (Except to Idle state for OMXCodec quirk.)\n- Disallow store-meta for input cross process.\n- Disallow emptyBuffer for surface input (via IOMX).\n- Fix checking for input surface.\n\n[backported from L-MR1]\n\nBug: 29422020\nChange-Id: I801c77b80e703903f62e42d76fd2e76a34e4bc8e\n"
    },
    {
      "commit": "807e827d4c1196754faaf138cb93c57c5b137e69",
      "tree": "af2fecd37fa95b1dfa1aaff16d6789d7f3131e33",
      "parents": [
        "17a10c50e20d934c1ac5956fe9019d3013e3f8b3"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 02 07:07:05 2016 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Aug 18 14:16:15 2016 -0700"
      },
      "message": "DO NOT MERGE: IOMX: work against metadata buffer spoofing\n\n- Prohibit direct set/getParam/Settings for extensions meant for\n  OMXNodeInstance alone. This disallows enabling metadata mode\n  without the knowledge of OMXNodeInstance.\n- Do not share metadata mode buffers cross process.\n- Disallow setting up metadata mode/input surface\n  after first sendCommand (except to Idle for OMXCodec quirk).\n- Disallow store-meta for input cross process.\n- Disallow emptyBuffer for surface input (via IOMX).\n- Fix checking for input surface.\n\n[backported from L]\n\nBug: 29422020\nChange-Id: I801c77b80e703903f62e42d76fd2e76a34e4bc8e\n"
    },
    {
      "commit": "77d31bde26ba5c3c986fce1dcfa94a2727253f49",
      "tree": "856d7a7b625973b25453be2f1a57a62e7418a9dd",
      "parents": [
        "fcb008b74333b63074144198e1f069473ce5fda0",
        "4ef5122525e0ce7a4d3e16bb07c295340a813b00"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 18:39:08 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 22 18:39:08 2016 +0000"
      },
      "message": "Merge \\\\\\\\\"Revert \\\\\\\\\"Impose a size bound for dynamically allocated tables in stbl.\\\\\\\\\"\\\\\\\\\" into klp-dev am: 7e6bd6a911 am: 3ad7688745 am: 9d65d13cc7\nam: 4ef5122525\n\nChange-Id: Ib0106bbe2ffba8de744907a2714eedf207756abe\n"
    },
    {
      "commit": "4ef5122525e0ce7a4d3e16bb07c295340a813b00",
      "tree": "681ce3d5db15f8161147c550662dd5dd03a8ff21",
      "parents": [
        "7e06799472dd93f3c4e33807ab41256e75287291",
        "9d65d13cc7c207d4ef877df2834d4fbac74741ad"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 18:36:14 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 22 18:36:14 2016 +0000"
      },
      "message": "Merge \\\\\\\"Revert \\\\\\\"Impose a size bound for dynamically allocated tables in stbl.\\\\\\\"\\\\\\\" into klp-dev am: 7e6bd6a911 am: 3ad7688745\nam: 9d65d13cc7\n\nChange-Id: Ib8d8f9c58c1ffb169cf488d57fb841f80a664e97\n"
    },
    {
      "commit": "9d65d13cc7c207d4ef877df2834d4fbac74741ad",
      "tree": "0d22666b8004a8e4ae781514d99b9a00e0059d16",
      "parents": [
        "4c969bf93f71e394de3aa8b08f0ed0f96c48379d",
        "3ad7688745fc44d01707157ba4edcbad8d41fc3e"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 18:33:49 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 22 18:33:49 2016 +0000"
      },
      "message": "Merge \\\\\"Revert \\\\\"Impose a size bound for dynamically allocated tables in stbl.\\\\\"\\\\\" into klp-dev am: 7e6bd6a911\nam: 3ad7688745\n\nChange-Id: I02de46ed2ce14428a45826270b557426ee2aaf47\n"
    },
    {
      "commit": "7e6bd6a911c5eba7b36b9b01804dd4d00132a175",
      "tree": "57ee9ab2cc93c2fbaaaaf8e77999dac195fc770e",
      "parents": [
        "8f73edb22a30260a2f4f7946fbedd3fd3005c5b6",
        "66c4dbb96c38630d0cd6551fc8c9bf8fa3318903"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 18:27:32 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 22 18:27:32 2016 +0000"
      },
      "message": "Merge \"Revert \"Impose a size bound for dynamically allocated tables in stbl.\"\" into klp-dev"
    },
    {
      "commit": "66c4dbb96c38630d0cd6551fc8c9bf8fa3318903",
      "tree": "ec4f2f5e250208980491f0b0fbc0ee250d3bc15c",
      "parents": [
        "25e029746796fe88e82417fb01af2e27b8bbadb2"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 18:19:15 2016 +0000"
      },
      "committer": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 18:19:15 2016 +0000"
      },
      "message": "Revert \"Impose a size bound for dynamically allocated tables in stbl.\"\n\nThis reverts commit 25e029746796fe88e82417fb01af2e27b8bbadb2.\n\nChange-Id: I91225838a8be72a3cd413f2bcb99e7dca7e62929\n"
    },
    {
      "commit": "fcb008b74333b63074144198e1f069473ce5fda0",
      "tree": "1f407c84e31c79adc83e545b59d001cf4c91cf67",
      "parents": [
        "f45a909f14380be824e28e8c29774f404aeb40b0",
        "7e06799472dd93f3c4e33807ab41256e75287291"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 18:01:43 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 22 18:01:43 2016 +0000"
      },
      "message": "Merge \\\\\\\\\"Impose a size bound for dynamically allocated tables in stbl.\\\\\\\\\" into klp-dev am: 8f73edb22a am: a263248bf0 am: 4c969bf93f\nam: 7e06799472\n\nChange-Id: I4c877fcf9839e44ca849d25f46ba55f74cd0064e\n"
    },
    {
      "commit": "7e06799472dd93f3c4e33807ab41256e75287291",
      "tree": "843c2e0db67fc2232d609ae6f80566b72722a682",
      "parents": [
        "495ba35a1706cbf6fa95616e23c6b656f3b1048b",
        "4c969bf93f71e394de3aa8b08f0ed0f96c48379d"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Jun 22 17:58:26 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 22 17:58:26 2016 +0000"
      },
      "message": "Merge \\\\\\\"Impose a size bound for dynamically allocated tables in stbl.\\\\\\\" into klp-dev am: 8f73edb22a am: a263248bf0\nam: 4c969bf93f\n\nChange-Id: I6258bac89bbe02e47b3c912df26f26033d7b76b4\n"
    },
    {
      "commit": "4c969bf93f71e394de3aa8b08f0ed0f96c48379d",
      "tree": "637b8ec7d12c6d0fa0341098f22267172baf93d9",
      "parents": [
        "5c1f01675ca0f4f231f206fc7fe64d353592f726",
        "a263248bf02014dfb5d76ac4c07e7dfcdd6518c1"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 17:55:12 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 22 17:55:12 2016 +0000"
      },
      "message": "Merge \\\\\"Impose a size bound for dynamically allocated tables in stbl.\\\\\" into klp-dev am: 8f73edb22a\nam: a263248bf0\n\nChange-Id: I0389073f6b18450edc8fa70ed3ec72683a166915\n"
    },
    {
      "commit": "8f73edb22a30260a2f4f7946fbedd3fd3005c5b6",
      "tree": "64727d7547fdef61a404952709b3867f48f681d8",
      "parents": [
        "22d65757103e46bef8c6902ea08c84a775b62a0b",
        "25e029746796fe88e82417fb01af2e27b8bbadb2"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 17:38:54 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 22 17:38:54 2016 +0000"
      },
      "message": "Merge \"Impose a size bound for dynamically allocated tables in stbl.\" into klp-dev"
    },
    {
      "commit": "25e029746796fe88e82417fb01af2e27b8bbadb2",
      "tree": "b09f9538145fdae6557e38aae36433a8faad7603",
      "parents": [
        "dc7357d20175fadfabd903370094917408bf6e3e"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Tue Jun 21 19:10:21 2016 -0700"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Jun 22 01:00:26 2016 -0700"
      },
      "message": "Impose a size bound for dynamically allocated tables in stbl.\n\nImpose a restriction of 200MiB for tables in stsc, stts, ctts and stss\nboxes. Also change Vector to std::vector for efficiency and consistency.\n\nBug: 29367429\nChange-Id: I175da524612b9fe68496c612966af51f01a5cd5e\n"
    },
    {
      "commit": "5c1f01675ca0f4f231f206fc7fe64d353592f726",
      "tree": "0d22666b8004a8e4ae781514d99b9a00e0059d16",
      "parents": [
        "8b35cb563de25a0b5f743de2eeb385a87e95ca6c",
        "4bec033dedcb2e9297001878c7837a3d46d205a3"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jun 21 22:03:33 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jun 21 22:03:33 2016 +0000"
      },
      "message": "Merge \\\\\"DO NOT MERGE: Camera: Adjust pointers to ANW buffers to avoid infoleak\\\\\" into klp-dev am: 22d6575710\nam: 4bec033ded\n\nChange-Id: I68dd7d3ea94b10104c235007fd03230ef5ae0146\n"
    },
    {
      "commit": "54fc49c9f5ac06ea3c21cfe05a00f36c7df91b3f",
      "tree": "1ac44e86f7e902ab31974e23e456260033c87a05",
      "parents": [
        "cf1aed625841c82c050fc6d460f561038f772a9c"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Jun 20 17:00:14 2016 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Jun 20 21:32:22 2016 -0700"
      },
      "message": "DO NOT MERGE: Camera: Adjust pointers to ANW buffers to avoid infoleak\n\nSubtract address of a random static object from pointers being routed\nthrough app process.\n\nBug: 28466701\nChange-Id: Idcbfe81e9507433769672f3dc6d67db5eeed4e04\n"
    },
    {
      "commit": "7a3de84808f700615816397acc7c7927987bab6e",
      "tree": "926c2963967ecb1fb82d5b4584433b30dd3e531d",
      "parents": [
        "dc7357d20175fadfabd903370094917408bf6e3e"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Jun 20 17:00:14 2016 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Jun 20 21:32:08 2016 -0700"
      },
      "message": "DO NOT MERGE: Camera: Adjust pointers to ANW buffers to avoid infoleak\n\nSubtract address of a random static object from pointers being routed\nthrough app process.\n\nBug: 28466701\nChange-Id: Idcbfe81e9507433769672f3dc6d67db5eeed4e04\n"
    },
    {
      "commit": "949333a3ab4868c1cc7b2e0ed26d045fd99d8a88",
      "tree": "fcb2eb5c39ff0f580a509faabaf585feef73c57a",
      "parents": [
        "803ae13af2bef90c651cbcccb76bbd75403ff1ab",
        "d0f4bfb5527e88e868c4263cb6c9d219367b9fc9"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jun 09 17:18:06 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jun 09 17:18:06 2016 +0000"
      },
      "message": "Don\\\u0027t use sp\u003c\u003e\u0026\nam: d0f4bfb552\n\nChange-Id: I0490c443ad93133a8023134789dcecbcfc159cf3\n"
    },
    {
      "commit": "d0f4bfb5527e88e868c4263cb6c9d219367b9fc9",
      "tree": "69301a8556126d12747adc0544dc57a8c389d97a",
      "parents": [
        "33e914c861732cbcca923d34d368e1635b68434f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jun 07 12:26:43 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jun 08 17:10:39 2016 -0700"
      },
      "message": "Don\u0027t use sp\u003c\u003e\u0026\n\nbecause they may end up pointing to NULL after a NULL check was performed.\n\nBug: 28166152\nChange-Id: Iab2ea30395b620628cc6f3d067dd4f6fcda824fe\n"
    },
    {
      "commit": "e66381758d6ba02494251e6097e0774a56524be5",
      "tree": "df4f40e2ccb8ca187d1b6a65a597e01ea5615605",
      "parents": [
        "08cb85206ab65cc2b9df372e4ae5f75c331ae7a1",
        "0ee3710873997f09b9a0a645e8b2de9923894f17"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jun 08 23:14:09 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 08 23:14:09 2016 +0000"
      },
      "message": "Merge \\\\\"Don\\\\\u0027t use sp\u003c\u003e\u0026\\\\\" into klp-dev am: 598f8d3218\nam: 0ee3710873\n\nChange-Id: I95ce93c3c1975b444bd6cd2c49a3b215395d2754\n"
    },
    {
      "commit": "fc47a301b7b2b044eddaedc98861d55193ec7dc0",
      "tree": "8f64350afe90fc797bba02c7a24720a9c80c31f5",
      "parents": [
        "b016207fc2442420e8d3a8633575ffe4fc29fef3"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jun 07 12:26:43 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jun 07 12:31:11 2016 -0700"
      },
      "message": "Don\u0027t use sp\u003c\u003e\u0026\n\nbecause they may end up pointing to NULL after a NULL check was performed.\n\nBug: 28166152\nChange-Id: Iab2ea30395b620628cc6f3d067dd4f6fcda824fe\n"
    },
    {
      "commit": "8cf4bf38b13adb805746a3f3e172670b1af7c9fd",
      "tree": "9012536dcc279186bb0014559404e3e785a6cc9c",
      "parents": [
        "9d9ebc990f4b4b18f48d09232b053b3cb69dbb6b",
        "ab7276351e41bc0d40d28c231993ba240b5f21a0"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Sat Apr 16 00:13:47 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Apr 16 00:13:47 2016 +0000"
      },
      "message": "Merge \"SampleTable.cpp: Prevent corrupted stts block from causing excessive memory allocation.\" into klp-dev am: 5964527 am: e896c41 am: a0970c9\nam: ab72763\n\n* commit \u0027ab7276351e41bc0d40d28c231993ba240b5f21a0\u0027:\n  SampleTable.cpp: Prevent corrupted stts block from causing excessive memory allocation.\n\nChange-Id: I3dc4066c53dfeb3fc07ee31431ee5a5571c89528\n"
    },
    {
      "commit": "ab7276351e41bc0d40d28c231993ba240b5f21a0",
      "tree": "ee86ba8839dec7ccb3906ab7db5169a617b1bfa8",
      "parents": [
        "76f606bdf9d52a4406dc285e06a0f15b13903bac",
        "a0970c9faabdaca647cb22b78432511de3220399"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Sat Apr 16 00:11:25 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Apr 16 00:11:25 2016 +0000"
      },
      "message": "Merge \"SampleTable.cpp: Prevent corrupted stts block from causing excessive memory allocation.\" into klp-dev am: 5964527 am: e896c41\nam: a0970c9\n\n* commit \u0027a0970c9faabdaca647cb22b78432511de3220399\u0027:\n  SampleTable.cpp: Prevent corrupted stts block from causing excessive memory allocation.\n\nChange-Id: I7d7e410e25d8a5b1066251cae8cddfa050b07f71\n"
    },
    {
      "commit": "a0970c9faabdaca647cb22b78432511de3220399",
      "tree": "f1f32337b6812a38e1fda5417b3489e9b84de193",
      "parents": [
        "9f3762d8c76b778c8f600486a464838731105b09",
        "e896c41d85a15de06c74885fe040f3f57b63cd5d"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Sat Apr 16 00:09:00 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Apr 16 00:09:00 2016 +0000"
      },
      "message": "Merge \"SampleTable.cpp: Prevent corrupted stts block from causing excessive memory allocation.\" into klp-dev am: 5964527\nam: e896c41\n\n* commit \u0027e896c41d85a15de06c74885fe040f3f57b63cd5d\u0027:\n  SampleTable.cpp: Prevent corrupted stts block from causing excessive memory allocation.\n\nChange-Id: I5f23c14d155ea5a64b00d877a329c77cfc5b55f7\n"
    },
    {
      "commit": "a3630a418b4f65277a42cd4018cd3b0b7e134d0c",
      "tree": "faeb669973973cbe4c538f4eec492a1bb9575997",
      "parents": [
        "52636f8462b2a24f77524ca912e3579c33ac113e"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Apr 13 16:25:12 2016 -0700"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Thu Apr 14 23:25:16 2016 +0000"
      },
      "message": "SampleTable.cpp: Prevent corrupted stts block from causing\nexcessive memory allocation.\n\nDetails:\n\nDataSource.h\n- Added function getVector() for reading from a data source into\n  a Vector object, whose capacity grows only as much as needed\n  (in case of EOS or reading error).\nSampleTable.h\n- Changed the type of mTimeToSample from uint32_t* to\n  Vector\u003cuint32_t\u003e.\nSampleTable.cpp\n- In setTimeToSample, modified the code to use getVector()\n  instead of readAt(). If the input source has a corrupt\n  time-to-sample table size that is too big, EOS will be reached\n  before the whole table is read, and the return value from\n  getVector() will be false.\n- Also, tightened the bound for the provided time-to-sample table\n  size to guarantee that the table does not take more than\n  UINT_MAX32 bytes in memory.\n\nBug: 28076789\nChange-Id: Id207f369ab7b27787d83f5d8fc48dc53ed9fcdc9\n"
    },
    {
      "commit": "73079eec4013621ac516f22b0ec6d55203d1e245",
      "tree": "e2a6bb52738c5f61bd14ff3be21a7bf4524c35b9",
      "parents": [
        "d132bc5b0bc15152f7acf769408c55da7a5b31f7",
        "c0cefa9f37e296a7a60978e442b374b5c7f24d65"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 24 21:53:01 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 24 21:53:01 2016 +0000"
      },
      "message": "Get service by value instead of reference am: 61a6d26aab am: 93f5bcab20 am: d11972f8d4\nam: c0cefa9f37\n\n* commit \u0027c0cefa9f37e296a7a60978e442b374b5c7f24d65\u0027:\n  Get service by value instead of reference\n"
    },
    {
      "commit": "d11972f8d48d14a1a52e98e64b8216abfc7f00e0",
      "tree": "513d2cd1a96344f2f505defaeeffbe0188088e48",
      "parents": [
        "776aacce9e5e2dfbc4e7a955916ea0d397af74bf",
        "93f5bcab205f8d7cd4557eacda513867e8b8ea65"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 24 21:37:05 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 24 21:37:05 2016 +0000"
      },
      "message": "Get service by value instead of reference am: 61a6d26aab\nam: 93f5bcab20\n\n* commit \u002793f5bcab205f8d7cd4557eacda513867e8b8ea65\u0027:\n  Get service by value instead of reference\n"
    },
    {
      "commit": "93f5bcab205f8d7cd4557eacda513867e8b8ea65",
      "tree": "8b1ad39e3a33cbe4b76e36e17a37cb705f8948d6",
      "parents": [
        "33514675f6588d70a203b2c9200792bca18d425c",
        "61a6d26aab95870279b274e565c1495748befde0"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 24 21:24:09 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 24 21:24:09 2016 +0000"
      },
      "message": "Get service by value instead of reference\nam: 61a6d26aab\n\n* commit \u002761a6d26aab95870279b274e565c1495748befde0\u0027:\n  Get service by value instead of reference\n"
    },
    {
      "commit": "61a6d26aab95870279b274e565c1495748befde0",
      "tree": "d58c9beb9e499e5983db76a52f02f2456c35ff92",
      "parents": [
        "f7a388203a1632084dbe3307d7e3265f689bc11e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 18 08:25:47 2016 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 23 19:28:09 2016 -0800"
      },
      "message": "Get service by value instead of reference\n\nto prevent a cleared service binder from being used.\n\nBug: 26040840\nChange-Id: Ifb5483c55b172d3553deb80dbe27f2204b86ecdb\n"
    },
    {
      "commit": "208bc477d92dbd2e5b4d1c0b2d000fa4c231e9d3",
      "tree": "f24b4d3f782bf473dbeb70c5e4b579bc135eaa15",
      "parents": [
        "9e1d7751b12ea976323abc1fe7760323ab142d39",
        "3d6a7149802928ecf3f58b7218b0e82699b492df"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 03 22:55:36 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 03 22:55:36 2015 +0000"
      },
      "message": "DO NOT MERGE SoundPool: add lock for findSample access from SoundPoolThread\nam: 3d6a714980\n\n* commit \u00273d6a7149802928ecf3f58b7218b0e82699b492df\u0027:\n  DO NOT MERGE SoundPool: add lock for findSample access from SoundPoolThread\n"
    },
    {
      "commit": "3d6a7149802928ecf3f58b7218b0e82699b492df",
      "tree": "d1733d4792e95ae68ed843927cf38291863e4c42",
      "parents": [
        "6afc659b00c3f4a83b9f5f3c744b7119b33340b4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 02 15:55:23 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 03 18:54:00 2015 +0000"
      },
      "message": "DO NOT MERGE SoundPool: add lock for findSample access from SoundPoolThread\n\nSample decoding still occurs in SoundPoolThread\nwithout holding the SoundPool lock.\n\nBug: 25781119\nChange-Id: I11fde005aa9cf5438e0390a0d2dfe0ec1dd282e8\n"
    },
    {
      "commit": "19c47afbc402542720ddd280e1bbde3b2277b586",
      "tree": "d2c3657298566f4466ea0f6ee51217ffe1a9b7a1",
      "parents": [
        "09c291c838bc74bb7c10c22f7232abb946cad8ff"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 02 15:55:23 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 02 18:05:32 2015 -0800"
      },
      "message": "DO NOT MERGE SoundPool: add lock for findSample access from SoundPoolThread\n\nSample decoding still occurs in SoundPoolThread\nwithout holding the SoundPool lock.\n\nBug: 25781119\nChange-Id: I11fde005aa9cf5438e0390a0d2dfe0ec1dd282e8\n"
    },
    {
      "commit": "b1231923f134a167a0351091d8944b7583928a4f",
      "tree": "2565d910572223b4ee0b900f7545580a9d77ca63",
      "parents": [
        "f5bff8c9df4444ca91a14ba26cfe005f9f100250",
        "e550d21360287c752fd79a67f1962244ee272be1"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Oct 19 12:26:55 2015 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 19 12:26:55 2015 -0700"
      },
      "message": "am e550d213: am f70b69a8: Merge \"stagefright: check bounds for MediaCodecList.getCodecInfo\" into lmp-dev\n\n* commit \u0027e550d21360287c752fd79a67f1962244ee272be1\u0027:\n  stagefright: check bounds for MediaCodecList.getCodecInfo\n"
    },
    {
      "commit": "77c185d5499d6174e7a97b3e1512994d3a803151",
      "tree": "f5ad0fe15b5eac1f8eb5ca52384c022ac2e60b57",
      "parents": [
        "0b1936bee532545381db6adf22f31ac437673f30"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Oct 12 17:10:31 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Oct 12 17:27:17 2015 -0700"
      },
      "message": "stagefright: check bounds for MediaCodecList.getCodecInfo\n\nBug: 24445127\nChange-Id: I1c6cb9e2518b852d48d5d0d625b54409bd4e13ec\n"
    },
    {
      "commit": "15e991bdf8870c2c9820c2d98e0d30dae2e05a25",
      "tree": "ad4f68934ac1f3dc1f20f9dedbccf89d1f6b75d7",
      "parents": [
        "39f64a1e4903624bd6395aa2a1c6875a10ed489d",
        "0b09da7a98d5f55674dba7b380e1b8d262f709b0"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Oct 08 10:02:30 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Oct 08 10:02:30 2015 -0700"
      },
      "message": "resolved conflicts for 0b09da7a to lmp-mr1-dev\n\nChange-Id: Ib6a1aa4cee00e0449da30ae158d71403d6236487\n"
    },
    {
      "commit": "dd184a4824acc31160895e2c6f8d93a7facfc2c8",
      "tree": "b59541270989719862e923d24637064ef10aa810",
      "parents": [
        "fc0e2a87c17b1f326b5e3302e8f534c143fd5784",
        "3b4a72acf039c58c33807b6d6fcdd5e09eafb1df"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Oct 08 16:48:33 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 08 16:48:33 2015 +0000"
      },
      "message": "am 3b4a72ac: Merge \"DO NOT MERGE - OMX: allow only secure codec to remotely call allocateBuffer.\" into klp-dev\n\n* commit \u00273b4a72acf039c58c33807b6d6fcdd5e09eafb1df\u0027:\n  DO NOT MERGE - OMX: allow only secure codec to remotely call allocateBuffer.\n"
    },
    {
      "commit": "2482595baadd16f20d3992c8c9d6a14061836872",
      "tree": "1b2d060855dc645f847ff2143e359166005f829a",
      "parents": [
        "07395f4cd72cf29d1de2864cde42876db4e54411"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Sep 28 11:32:23 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Oct 07 13:53:25 2015 -0700"
      },
      "message": "DO NOT MERGE - OMX: allow only secure codec to remotely call allocateBuffer.\n\nBug: 24310423\nChange-Id: Iebcfc58b447f925ec2134898060af2ef227266a3\n(cherry picked from commit 8dde7269a5356503d2b283234b6cb46d0c3f214e)\n"
    },
    {
      "commit": "4a03d784f7c0e3a9685d182eee92ba6580eaf5a1",
      "tree": "a7356ea6c85c6d1b4b45e0288f43b4f9fe9edae4",
      "parents": [
        "74d1927e4122a1748f89ca2ef79406fc06ee94b2"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Sep 28 11:32:23 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Oct 07 11:27:32 2015 -0700"
      },
      "message": "DO NOT MERGE - OMX: allow only secure codec to remotely call allocateBuffer.\n\nBug: 24310423\nChange-Id: Iebcfc58b447f925ec2134898060af2ef227266a3\n(cherry picked from commit 8dde7269a5356503d2b283234b6cb46d0c3f214e)\n"
    },
    {
      "commit": "27362395cec5673a9cbfe7179ad5490c4e475329",
      "tree": "e157babb6cdfb2579d9382b2ce2db7da23908611",
      "parents": [
        "6035c811849a8475697268cf71b5cf923705abe8",
        "2ed42aea9c6fbca4bde52d647ff082b997b5968c"
      ],
      "author": {
        "name": "Jon Larimer",
        "email": "jlarimer@google.com",
        "time": "Tue Aug 18 15:13:39 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 18 15:13:39 2015 +0000"
      },
      "message": "am 2ed42aea: Merge \"do not dequeue from native window after we hit fatal error -- DO NOT MERGE\" into klp-dev\n\n* commit \u00272ed42aea9c6fbca4bde52d647ff082b997b5968c\u0027:\n  do not dequeue from native window after we hit fatal error -- DO NOT MERGE\n"
    },
    {
      "commit": "2ea335b11c1e328896a6c7a2e6d2bc190b7f06fc",
      "tree": "b12bf3da1c3457982ccff6c6d4aeb24d90ffb639",
      "parents": [
        "afa0e3698355f341009a8042d62c82016f86a1c8",
        "fecbc5da64a992f91f74ef6c67a7e247b0da7777"
      ],
      "author": {
        "name": "Jon Larimer",
        "email": "jlarimer@google.com",
        "time": "Tue Aug 18 15:13:19 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 18 15:13:19 2015 +0000"
      },
      "message": "am fecbc5da: am 5b4a5cce: Merge \"do not dequeue from native window after we hit fatal error -- DO NOT MERGE\" into lmp-dev\n\n* commit \u0027fecbc5da64a992f91f74ef6c67a7e247b0da7777\u0027:\n  do not dequeue from native window after we hit fatal error -- DO NOT MERGE\n"
    },
    {
      "commit": "bf47eb9c67ed364f3c288954857aab9d9311db4c",
      "tree": "5ba3da2bb1e2103a1719e9c014dfb290392ff0b1",
      "parents": [
        "e4ac35fa524b011f272d396b2c12515382bddb94"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Aug 14 13:50:02 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Aug 17 17:14:50 2015 +0000"
      },
      "message": "do not dequeue from native window after we hit fatal error -- DO NOT MERGE\n\nbug: 22845824\nChange-Id: I8c375790c697e02b6ab3ea54b84d3f70d5e78141\n(cherry picked from commit 346de3c26a8fbd0fa0c8102f4a21ea4dcee4432a)\n"
    },
    {
      "commit": "734e65e6e7e1ee863781c1ebd87003933bb4a752",
      "tree": "33fc593159d45ac2a84e93aa8c2d05583acfac65",
      "parents": [
        "3ce293842fed1b3abd2ff0aecd2a0c70a55086ee"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Aug 14 13:50:02 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Aug 17 17:14:17 2015 +0000"
      },
      "message": "do not dequeue from native window after we hit fatal error -- DO NOT MERGE\n\nbug: 22845824\nChange-Id: I8c375790c697e02b6ab3ea54b84d3f70d5e78141\n(cherry picked from commit 346de3c26a8fbd0fa0c8102f4a21ea4dcee4432a)\n"
    },
    {
      "commit": "dfaea255546340742b42c216663f61c6b7301c4f",
      "tree": "7e77aeb1072938040bab56ba4a9ed6b48c0a8473",
      "parents": [
        "fbf1c8d65fe257847b35ec7289f9450ac34c8034",
        "578d5b66fc9f5e36ca0cb19b21771aa85ec131ee"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 07 14:47:48 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 07 14:47:48 2015 +0000"
      },
      "message": "am 578d5b66: am 171b5fad: am d6ea7f65: am f26400c9: Fix crash on malformed id3\n\n* commit \u0027578d5b66fc9f5e36ca0cb19b21771aa85ec131ee\u0027:\n  Fix crash on malformed id3\n"
    },
    {
      "commit": "171b5fadb9d304f5e06686e4f3d060ef335d7250",
      "tree": "8d45331766e9cb5c701db4a8ca4e51e89f1ac5ad",
      "parents": [
        "d8bb17e33ef33ce173fa2d096211785145d41921",
        "d6ea7f65dd31d5dacf497cc3c494d4fa3910f7c3"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 07 14:32:40 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 07 14:32:40 2015 +0000"
      },
      "message": "am d6ea7f65: am f26400c9: Fix crash on malformed id3\n\n* commit \u0027d6ea7f65dd31d5dacf497cc3c494d4fa3910f7c3\u0027:\n  Fix crash on malformed id3\n"
    },
    {
      "commit": "d6ea7f65dd31d5dacf497cc3c494d4fa3910f7c3",
      "tree": "b62ef0d8d86dd5a159fda3997b7b7369ced8a96c",
      "parents": [
        "42bd61d73e8b4d0b1101e73324a59fde51077112",
        "f26400c9d01a0e2f71690d5ebc644270f098d590"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 07 14:25:10 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 07 14:25:10 2015 +0000"
      },
      "message": "am f26400c9: Fix crash on malformed id3\n\n* commit \u0027f26400c9d01a0e2f71690d5ebc644270f098d590\u0027:\n  Fix crash on malformed id3\n"
    },
    {
      "commit": "f26400c9d01a0e2f71690d5ebc644270f098d590",
      "tree": "b96386b9c3bf83c969ed207dbd7b53eb29e6c6a3",
      "parents": [
        "d9a9a324766b26be2ff0d10537ea0b215b0261e3"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 04 16:49:28 2015 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 04 23:52:34 2015 +0000"
      },
      "message": "Fix crash on malformed id3\n\nBug: 22954006\nChange-Id: I488cb1e2c69fc7043b6040481b30fa866000515d\n"
    },
    {
      "commit": "bcf2becf206b5d56c89bf2b43356fd7995003302",
      "tree": "0fa5c016138944033cdfe35b821853499541dc56",
      "parents": [
        "07e80f7a2da0a28d977adfb0372fdf385f964bc7",
        "c531d9956513b9b82dad84aeb507b866e6b3951a"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue May 12 22:14:58 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 12 22:14:58 2015 +0000"
      },
      "message": "am c531d995: am 438217a0: Merge \"Add AUtils::isInRange, and use it to detect malformed MPEG4 nal sizes\" into lmp-dev\n\n* commit \u0027c531d9956513b9b82dad84aeb507b866e6b3951a\u0027:\n  Add AUtils::isInRange, and use it to detect malformed MPEG4 nal sizes\n"
    },
    {
      "commit": "a3e8f60f5e409f65f12636df5fad7f20ff736df5",
      "tree": "782d8d5c457afc6b57397ea6890f06b4c0067eec",
      "parents": [
        "5a75b4215821d633af18dd8dae2495299c070bf0",
        "7acac10aae34da5ae4d628c5a270e7e3e94f7598"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon May 11 11:10:36 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 11 11:10:36 2015 +0000"
      },
      "message": "am 7acac10a: Merge \"DO NOT MERGE: Add AUtils::isInRange, and use it to detect malformed MPEG4 nal sizes\" into klp-dev\n\n* commit \u00277acac10aae34da5ae4d628c5a270e7e3e94f7598\u0027:\n  DO NOT MERGE: Add AUtils::isInRange, and use it to detect malformed MPEG4 nal sizes\n"
    },
    {
      "commit": "67a30ebfe785f7cd5ecfb0d2fb487e54536a3d48",
      "tree": "2d7fa0640fa55b339ae5083e7d75022ab3d56720",
      "parents": [
        "6429079345404932c5be5956efc7154390d2ed0e"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Apr 01 19:32:25 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Sat Apr 25 00:46:59 2015 +0000"
      },
      "message": "DO NOT MERGE: Add AUtils::isInRange, and use it to detect malformed MPEG4 nal sizes\n\nBug: 19641538\nChange-Id: I5aae3f100846c125decc61eec7cd6563e3f33777\n"
    },
    {
      "commit": "bfed843041b6aaec13ee19996748a7a1476db9c8",
      "tree": "f6f6744dbf809a6d7897767f264944922fe954cf",
      "parents": [
        "eb204f82afd5519eb544bf8bee692e7152820c3b"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Apr 01 19:32:25 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Apr 24 17:10:41 2015 -0700"
      },
      "message": "Add AUtils::isInRange, and use it to detect malformed MPEG4 nal sizes\n\nBug: 19641538\nChange-Id: I5aae3f100846c125decc61eec7cd6563e3f33777\n"
    },
    {
      "commit": "35d5af131c9d4962e935082f204ccd6a2130861c",
      "tree": "3a0456f7e9ddba7cddb0769f2a15d1589f820647",
      "parents": [
        "17e95f40a534101e2df48f077a8029430adef6c3"
      ],
      "author": {
        "name": "Weiyin Jiang",
        "email": "wjiang@codeaurora.org",
        "time": "Wed Jan 28 16:14:02 2015 +0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Feb 06 16:32:24 2015 -0800"
      },
      "message": "nuplayer: acquire wakelock during offload pause timeout\n\nHold a wakelock while paused in audio offload mode, until audio\nteardown event is received, or pause is canceled.\n\nSince ARM cores are sleeping, the delayed AMessage will not be\nreceived, and the audio output driver will not be closed.\nThis blocks XO shutdown.\n\nBug: 19297092\nChange-Id: I3d11fef633e3f2783f4aa31e71285e2fa09d234c\n"
    },
    {
      "commit": "3a01a71dcbb467d06cc5da4a72a82bb588648cfc",
      "tree": "f35a84d74ff7cbcf6199d46c444acae9775880f8",
      "parents": [
        "57f75272fcd16b205ed60cdd0b33ffc19991fd10"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Jan 30 19:30:05 2015 -0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Feb 04 12:58:17 2015 -0800"
      },
      "message": "stagefright: add fallback for native flex-YUV support\n\nUse software renderer if codec cannot support flex-YUV on a surface\n\nBug: 17906609\nChange-Id: I3d0e3ff5fee7d7b3e2416892968fa18f6139598a\n"
    },
    {
      "commit": "0d09182a1dde960f7acda1c28469e5deead1b996",
      "tree": "ccbf3a9429264d06cb957f2664ae47fef80e3646",
      "parents": [
        "efbb61950db36a5eb789be83f077246172507c67"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Jan 30 14:07:25 2015 -0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Feb 04 00:02:58 2015 -0800"
      },
      "message": "stagefright: add support for native flex-YUV formats\n\nBug: 17906609\nChange-Id: I14116796eaa94aa8ae62dcc29f67cb7d2c060d34\n"
    },
    {
      "commit": "78b01639c08fe5e7e9c1be5e9dc5de560f1383f9",
      "tree": "0187106f6f7e64716a6cc66a57450559fc61d400",
      "parents": [
        "64c496c8d51c71605cd34a510da2ecd8180656ec"
      ],
      "author": {
        "name": "Rachad",
        "email": "rachad@google.com",
        "time": "Thu Jan 29 19:24:08 2015 -0800"
      },
      "committer": {
        "name": "Rachad",
        "email": "rachad@google.com",
        "time": "Thu Jan 29 19:24:08 2015 -0800"
      },
      "message": "Acodec: Send framerate information to OMX decoder if available\n\nBug: 19110889\nChange-Id: Ia8dbe1b77aaac421ec9415884e1248b9b68168dc\n"
    },
    {
      "commit": "0b460ad7557f6be56aad3fa027d93b38d5995ac4",
      "tree": "12dd16e6b1087cc75aae47c8550f312554efbb86",
      "parents": [
        "38a97bd7891cb0e16f8127510aa81b1b05df3f17",
        "8a4728966dc9c78e21c3c93a927707e93c05e5e0"
      ],
      "author": {
        "name": "Rachad",
        "email": "rachad@google.com",
        "time": "Sat Jan 10 01:31:02 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 10 01:31:02 2015 +0000"
      },
      "message": "Merge \"ACodec: Added support for E-AC3 decoders\" into lmp-mr1-dev"
    },
    {
      "commit": "1713460104b86f6be3a5d9993d9ace864d889b2d",
      "tree": "47be834572c94f418cd6d087e953a53a9d655127",
      "parents": [
        "5db7897ddd32e3ec3ab45ecdb6f21b6265e7e14a"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jan 07 16:14:34 2015 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jan 07 17:08:43 2015 -0800"
      },
      "message": "mark any copyrighted content as protected to disable capture\n\nbug: 18916274\nChange-Id: I23f096b51433bf18a10dc5fe6dc6b75c3881c340\n"
    },
    {
      "commit": "8a4728966dc9c78e21c3c93a927707e93c05e5e0",
      "tree": "6b27f91419fcecb7d06f277b03d74e68676e8d68",
      "parents": [
        "0d19abb440c7e62e944efbeadf02299990f9a589"
      ],
      "author": {
        "name": "Rachad",
        "email": "rachad@google.com",
        "time": "Tue Dec 23 16:10:32 2014 -0800"
      },
      "committer": {
        "name": "Rachad",
        "email": "rachad@google.com",
        "time": "Tue Dec 23 16:10:32 2014 -0800"
      },
      "message": "ACodec: Added support for E-AC3 decoders\n\nBug: 17883772\n\nChange-Id: I05f674c33522eec0e6ceeece88dd800b1857b3ab\n"
    },
    {
      "commit": "eee82e44548f17253c2e06b25725f91c7b549ec2",
      "tree": "cf936ad01c06be9f7e8fe80cf83f73b630de4db7",
      "parents": [
        "8ddb02230d02968d471aa41b22433957c38827c0"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Dec 12 12:27:54 2014 -0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Dec 12 20:18:35 2014 -0800"
      },
      "message": "MediaCodecList: handle binder death\n\nBug: 18691591\nChange-Id: Icc402d6ea9b0de4ac642c3b403fb64e865481b2e\n"
    },
    {
      "commit": "a0940a569f2bc24b00dc10ce0fa7658b1dc3a3a5",
      "tree": "913e39ed6eff31c956135701290e1a5af21fd0f8",
      "parents": [
        "94a92c69af528edf6ec17d7978a0c3bb6ab51e63"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Sep 24 13:57:35 2014 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Dec 10 18:04:14 2014 -0800"
      },
      "message": "stagefright: misc fixes to software video encoders (and decoders)\n\n- move logic to set encoder parameters to common encoder class\n  (similarly to what was done for decoders)\n- set compressed buffer size based on frame size and compression ratio,\n  and codec-specific minimum size\n- set raw buffer size based on frame size and metadata mode\n- do not set stride and slice height on compressed ports\n- advertise only QCIF support for google H263 encoder\n- set large-enough input size for video decoders to support adaptive\n  playback\n- do not change input buffer size on output port reconfiguration, as\n  no input buffer reallocation takes place\n- do not return empty buffers with EOS after EOS has been signaled\n\nBug: 18513091\nBug: 18639027\nChange-Id: Ib13492ef66adf331aa4572c67d2b283ea020cb41\n"
    },
    {
      "commit": "baac183f3808d7b68f184647a97bd381620415fe",
      "tree": "af81e602db02f55eb35852e3d0851499199166ed",
      "parents": [
        "275e8e9de2e11b4b344f5a201f1f0e51fda02d9c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 01 17:52:59 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 09 15:47:30 2014 -0800"
      },
      "message": "audio policy: binder calls for dynamic audio policy mixes\n\nAdd binder calls to register and unregister dynamic mixes\nto AudioPolicyManager.\n\nBug: 16009464.\n\nChange-Id: I4ef38166d0cfc88c984970969380d0cd6eb083ac\n"
    },
    {
      "commit": "275e8e9de2e11b4b344f5a201f1f0e51fda02d9c",
      "tree": "c22e1c0b8541aa04fd6c8d803e4fa6704a84e6e2",
      "parents": [
        "82a69ea8b090d57bff5e02774688b546a711bbb8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Nov 30 15:14:47 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 09 15:47:19 2014 -0800"
      },
      "message": "audio policy: add support for custom mixes\n\nAdd support for custom mixes in AudioPolicyManager.\n\nTwo methods are added to register or unregister a list of custom mixes\nwith their attributes and format.\n\ngetOutputForAttr() and getInputForAttr() first look for a match in\nregistered mixes before defaulting to normal output/input selection\n\nRemote submix device connection disconnection now takes address into\naccount to identify the correspnoding custom mix.\n\nBug: 16009464.\n\nChange-Id: I3f1c2a485a0fb71b1f984ed0adc9b68aa971e408\n"
    },
    {
      "commit": "4e865a3cfe4c955e0890321a6b488cf661808b63",
      "tree": "468dc095999eef48d402e92af1b6b80eaed36333",
      "parents": [
        "a147c17adabaab819ac108fbc448c49525cf74bc"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Dec 05 15:54:51 2014 -0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Dec 05 16:05:58 2014 -0800"
      },
      "message": "stagefright: preserve output format flags on format change\n\nSome flags are only set in configure, and get lost when output\nformat changes.\n\nBug: 17383204\nChange-Id: I2011bce70920c4ee46fccc378da3b428f3395c11\n"
    },
    {
      "commit": "caf7f48a0ef558689d39aafd187c1571ff4128b4",
      "tree": "7a2c90732783e2c90cabb6045c4ab0dcea842bf1",
      "parents": [
        "087eb332cdd64026de27c914194127f8fda1a846"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 25 17:50:47 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 25 17:50:47 2014 -0800"
      },
      "message": "AudioRecord: use audio attributes instead of audio source.\n\nAdded AudioRecord constructor with audio attributes.\nReplaced AudioPolicymanager::getInput() by getInputForAttr().\n\nNo new functionality for now.\n\nAlso:\n\n- Fixed warnings in AudioPolicyManager\n- Allocate audio session ID before calling getOutputForAttr() in\nAudioTrack.\n\nBug: 16006090.\nChange-Id: I15df21e4411db688e3096dd801cf579d76d81711\n"
    },
    {
      "commit": "e83b55dc29ca16092ba02f36f55fa6e0e37fd78c",
      "tree": "f8232611b6372b74579e3ed03dfbeb167011d257",
      "parents": [
        "0f78eabb733e1413d7febd00c0bad0f0add02314"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 14 10:06:21 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 25 12:48:19 2014 -0800"
      },
      "message": "audio policy: new getOutputForAttr() prototype.\n\nUpdate getOutputForAttr() prototype and group all logic\ndealing with audio attributes to stream type conversion in\naudio policy manager.\n\ngetOutputForAttr():\n- specifies the audio session (for future use)\n- returns a status code\n- receives either stream type (for legacy) or audio attributes\n- returns an updated streamtype\n\nRemove logic dealing with legacy stream types to attributes conversion\nfrom AudioTrack.\n\nUse correct type for audio sessions in other APIs (startOutput() ...).\n\nreleaseOutput() specifies the audio session (for future use).\n\nBug: 18067208.\n\nChange-Id: I1bfbe9626c04c7955d77f8a70aecfad2cb204817\n"
    },
    {
      "commit": "a7cf01da547bad8d4e66e3e4570eddeac98b6b05",
      "tree": "a099a86ae62f0ea58c02c3eb61d328fab98f6c51",
      "parents": [
        "574aed902443d41581684dc8bc5ddd2e067f4cdf",
        "cb2129b3b568a4e31bcbda3545a468024bc972fe"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 20 18:36:27 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 20 18:36:27 2014 +0000"
      },
      "message": "Merge \"Fix missing loop count for static tracks.\" into lmp-mr1-dev"
    },
    {
      "commit": "0ebd5f95b68a3a5c9e5509f21938c9e51e74d71b",
      "tree": "0a2939a70644eb37c401705c8211d65bac553743",
      "parents": [
        "18899808001ddaea13fa4c5277502c96351f69a5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 19 19:04:52 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 20 09:15:02 2014 -0800"
      },
      "message": "AudioSystem: fix cross deadlock\n\nDo not hold gLockAPS when calling\nAudioPolicyService::registerClient() in get_audio_policy_service().\nregisterClient() will need to acquire the AudioPolicyService mutex and\nif at the same time a method called from AudioPolicyService\n(with mutex held) calls back into AudioSystem and get_audio_policy_service()\na cross deadlock occurs.\n\nSame preventive fix for get_audio_flinger().\n\nUse a separate mutex for notification client list in AudioPolicyService.\nThis prevents deadlocking if registerClient() is called as a consequence of\nAudioFlinger calling back into AudioPolicyManager while executing a method\nwith AudioPolicyService locked\n\nBug: 18403952.\nBug: 18450065.\nChange-Id: Ia832e41aede8bc6c843fc615508fbdd74e0863b5\n"
    },
    {
      "commit": "f6778fd0c72ab54328f0e9f5ecf0017b73e99dd8",
      "tree": "8f31be289f16ae8d684699ba80d533b249923e18",
      "parents": [
        "35b0f7095fac4f2cc112edd4b0298a9cb1ee394f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 18 17:26:58 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 19 09:12:16 2014 -0800"
      },
      "message": "AudioSystem: Add mutex for output cache\n\nFix cross deadlock with AudioFlinger by adding\na dedicated mutex to protect access to cached output list\nand parameters.\n\nBug: 18410728.\nChange-Id: Ia31283b1972d8865a46e84e63695173c187eb781\n"
    },
    {
      "commit": "cb2129b3b568a4e31bcbda3545a468024bc972fe",
      "tree": "87f7c1114770b59e3a6166e7adbb3bcdea8601d2",
      "parents": [
        "97e6ca1a0be83e420ab238d9a1c31d3112126646"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 11 12:17:22 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 18 17:15:51 2014 -0800"
      },
      "message": "Fix missing loop count for static tracks.\n\nStaticAudioTrackServerProxy::framesReady() previously returned\nonly the contiguous frames, update to return the total\navailable frames. This resolves short-count looping in\nSoundPool for FastTracks.\n\nAlso (1) Removes the racy condition of reading two variables\nand (2) Fixes buffer-\u003emNonContig to return the correct value\nand (3) Restores behavior that loop count of 1 goes back to\nloopStart once during playback.\n\nBug: 11830751\nBug: 12070295\nBug: 17456842\nChange-Id: I64906e6036bb00a1d7375b03efe6deb69d6478ca\n"
    },
    {
      "commit": "990dad996b748fdaa2041cc6d039e96ccfeae6fb",
      "tree": "7456bb2af05b32fa76e611e26c689b13e32d13fc",
      "parents": [
        "cede28e22bce0c92a6d139b51d2c007d2e3f6fca",
        "0d6db582f2ccc9f8943c5f3965e2994b7d137158"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 14 17:40:27 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 14 17:40:28 2014 +0000"
      },
      "message": "Merge \"remove AudioSystem::getOutputSamplingRateForAttr()\" into lmp-mr1-dev"
    },
    {
      "commit": "cede28e22bce0c92a6d139b51d2c007d2e3f6fca",
      "tree": "fcee5c8e7a56c4fd055afd0e908b6900a77d6cae",
      "parents": [
        "97e6ca1a0be83e420ab238d9a1c31d3112126646",
        "f296e2b262d2a8f7c570eaed454a28cca99eb976"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Nov 14 10:03:46 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 14 10:03:47 2014 +0000"
      },
      "message": "Merge \"stagefright: add runtime debug support\" into lmp-mr1-dev"
    },
    {
      "commit": "97e6ca1a0be83e420ab238d9a1c31d3112126646",
      "tree": "19eff16ab736ee29034f5f68043a5cf07c5fde78",
      "parents": [
        "12acd3f0374e7707ff50c04f8075883be71b128c",
        "1099188151eb63af24ecf542b58d4257bbb8236a"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Nov 13 23:15:06 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 13 23:15:07 2014 +0000"
      },
      "message": "Merge \"Stagefright: use MediaCodec in async mode for recording\" into lmp-mr1-dev"
    },
    {
      "commit": "0d6db582f2ccc9f8943c5f3965e2994b7d137158",
      "tree": "bdd0de4b94942f7490dfe7b59b96bb4fa65a136a",
      "parents": [
        "538596f71dc667b2f39c27d0bc9bbf119b0e6d58"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 12 18:39:44 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 12 18:52:20 2014 -0800"
      },
      "message": "remove AudioSystem::getOutputSamplingRateForAttr()\n\nIt is safer to query the output sampling rate once the output\nhave been acquired by calling getOutputForAttr().\n\nBug: 16009464.\nChange-Id: Ib561facd19fba5359a6b837d75f1a1cd2dc51b29\n"
    },
    {
      "commit": "1099188151eb63af24ecf542b58d4257bbb8236a",
      "tree": "d1f15d781c76f511465da68c6d334ebcaf8b6eac",
      "parents": [
        "868e2f0148b1c491e4fd4839b46d73f6216a058d"
      ],
      "author": {
        "name": "Praveen Chavan",
        "email": "pchavan@codeaurora.org",
        "time": "Thu Oct 16 11:49:14 2014 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Nov 12 17:22:36 2014 -0800"
      },
      "message": "Stagefright: use MediaCodec in async mode for recording\n\nAsync mode reduces the number of messages posted between\nMediaCodec and MediaCodecSource. This reduces thread\nwakeups and helps reduce CPU utilization.\n\nBug: 18246026\nChange-Id: I4b0837f309fdd12e323c1dfa72525f5a31971a03\n"
    },
    {
      "commit": "f296e2b262d2a8f7c570eaed454a28cca99eb976",
      "tree": "bd87223950d92c27fc69601ddeddbf8e219742e4",
      "parents": [
        "94691b01a94d3ae115a7181c99db58fbeb785c64"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Jun 18 18:08:52 2014 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Nov 12 15:59:04 2014 -0800"
      },
      "message": "stagefright: add runtime debug support\n\nBug: 18285408\nChange-Id: I56346f4652b2c5f7ef5fa3003fd8676051339384\n"
    },
    {
      "commit": "6d60079e97c5fd6ba7de7b60adb0a027c0608d19",
      "tree": "9ebbce57d5015eb8ac2356af7ed14b84136b9916",
      "parents": [
        "995599cbd6ada739c257716a6d8b90eee6d61473",
        "99370d2da54d7537ffda7fef1f6ef36f8b690321"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 10 23:31:32 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 10 23:31:32 2014 +0000"
      },
      "message": "am 99370d2d: am ae6965ae: am 3aef3560: am e360f0f6: IAudioPolicyService: bound array size in queryDefaultPreProcessing\n\n* commit \u002799370d2da54d7537ffda7fef1f6ef36f8b690321\u0027:\n  IAudioPolicyService: bound array size in queryDefaultPreProcessing\n"
    },
    {
      "commit": "99370d2da54d7537ffda7fef1f6ef36f8b690321",
      "tree": "1ba4953c98fd3eeaa6f9a3fc2ab3e88003da23e4",
      "parents": [
        "ca83dd27f6c662bcbb0cea204c4df7ca77a479fd",
        "ae6965ae7664aaea489a8d58358035610075c9af"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 10 23:28:27 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 10 23:28:27 2014 +0000"
      },
      "message": "am ae6965ae: am 3aef3560: am e360f0f6: IAudioPolicyService: bound array size in queryDefaultPreProcessing\n\n* commit \u0027ae6965ae7664aaea489a8d58358035610075c9af\u0027:\n  IAudioPolicyService: bound array size in queryDefaultPreProcessing\n"
    },
    {
      "commit": "ae6965ae7664aaea489a8d58358035610075c9af",
      "tree": "fd4406ad0fbd33d98a2cca8407aad354f9baa58b",
      "parents": [
        "42f785c5d5ae596d781171327c98c541f0517feb",
        "3aef35600523eb6b4ccc8086a8913e80701a031a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 10 23:20:25 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 10 23:20:25 2014 +0000"
      },
      "message": "am 3aef3560: am e360f0f6: IAudioPolicyService: bound array size in queryDefaultPreProcessing\n\n* commit \u00273aef35600523eb6b4ccc8086a8913e80701a031a\u0027:\n  IAudioPolicyService: bound array size in queryDefaultPreProcessing\n"
    },
    {
      "commit": "e360f0f6cad290f69e07fd3a20dcf11a1dbc4160",
      "tree": "6e19a985df2a12cf74d713b689556cfc735f0088",
      "parents": [
        "96016c2d583ccca9fffd6974cb9473f7effd6cf5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 05 12:15:36 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 10 19:43:46 2014 +0000"
      },
      "message": "IAudioPolicyService: bound array size in queryDefaultPreProcessing\n\nBug: 18226810.\nChange-Id: Ib8e2bfe835a8681aac50bf23161db14e50c9a124\n(cherry picked from commit 74adca9ad30b7f8a70d40c5237bade0d16c4ea58)\n"
    },
    {
      "commit": "e662cd5cdbe1312d6b74754d2945fffe99e4fe2c",
      "tree": "68e681598ebc7f78ca041a51011652700694f7d8",
      "parents": [
        "1609e451cf6101efe6aeaaa2da61db2cb095c9e8",
        "d2d089fc86c62843992e7d5b371ee9227189a1e6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 07 21:23:26 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 07 21:23:28 2014 +0000"
      },
      "message": "Merge \"Improve AudioTrack recovery from mediaserver death\" into lmp-mr1-dev"
    },
    {
      "commit": "1609e451cf6101efe6aeaaa2da61db2cb095c9e8",
      "tree": "f09b7bb9b88d37985ca41e255f4efc8ffa769905",
      "parents": [
        "c339a921642c38621f57e95b4ec41cfaa99c7a63",
        "04f101c35eaa90b1f95939afac30674ec1611e6f"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri Nov 07 19:44:29 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 07 19:44:30 2014 +0000"
      },
      "message": "Merge \"Add a BufferItem parameter to onFrameAvailable\" into lmp-mr1-dev"
    },
    {
      "commit": "a36060891425c4ce0621e40344ac473ec14924dd",
      "tree": "f098fd77fb7661b83e3c43f31aec6f30316f4f34",
      "parents": [
        "1cf9ad1abb599ce4057189e0db154cf00b4913f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 06 18:07:23 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 06 18:07:23 2014 -0800"
      },
      "message": "AudioSystem: remove obsolete method.\n\nBug: 18067208.\nChange-Id: I9bbf9088485f5162c765ca504d9b784b956234c6\n"
    },
    {
      "commit": "1cf9ad1abb599ce4057189e0db154cf00b4913f8",
      "tree": "1bbf6047da0636dddcac32a904d55c2cd87d2ba0",
      "parents": [
        "19a3f69d9d5398db62ee7b15f2c13052d7ee9f07",
        "2514d080c8a54ff603a45d7e336de668fe7329db"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Nov 06 02:36:17 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 06 02:36:17 2014 +0000"
      },
      "message": "Merge \"Pass resolution to Crypto plugin on format change\" into lmp-mr1-dev"
    },
    {
      "commit": "19a3f69d9d5398db62ee7b15f2c13052d7ee9f07",
      "tree": "cf8ab0afd5e431df089fb7a45499fd1981ba4fc4",
      "parents": [
        "74adca9ad30b7f8a70d40c5237bade0d16c4ea58",
        "3c1285e8f86bd497e14c14fb6df7b42072ef52bd"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Nov 06 02:33:37 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 06 02:33:37 2014 +0000"
      },
      "message": "Merge \"Add missing secure stop methods\" into lmp-mr1-dev"
    },
    {
      "commit": "d2d089fc86c62843992e7d5b371ee9227189a1e6",
      "tree": "9bbab0fe070321be1612e188c835de59375f7e26",
      "parents": [
        "ed1e55c5276a1c031e9b2f016387c7d2fe7bc47f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 05 11:48:12 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 05 14:51:19 2014 -0800"
      },
      "message": "Improve AudioTrack recovery from mediaserver death\n\n1. Fix race condition in handling of binder death notifications.\n\nAudioSystem has a mixture of APIs for both ordinary app clients,\nand the AudioFlinger and AudioPolicy services within mediaserver.\nDue to this mix of uses, it is possible for there to be \"surprising\"\nsequences of calls on the call stack.\n\nPreviously, we used a single mutex for all global variables, but\nthis caused a deadlock.  To avoid the deadlock, we unlocked the mutex\nduring the critical sequence of calls.  But this was a a\ncrucial place where it should have stayed locked;\nsee Change-Id I315c1c5066f62b05e1c13b04fae1272b5fbce977\n\nNow we use separate mutexes for the AudioFlinger, AudioPolicy, and audio port\nrelated global variables.  This allows us to correctly hold each mutex\nthroughout the atomic region, even when AudioFlinger calls AudioPolicy\nvia AudioSystem, or vice-versa.\n\n2. AudioSystem::clearAudioConfigCache now clears the IAudioFlinger reference.\n\n3. Make AudioSystem::get_audio_policy_service more like get_audio_flinger.\n\nBug: 18242291\nChange-Id: I9761443d8337df5bf66d4ca2316a9fd0bd11be94\n"
    },
    {
      "commit": "74adca9ad30b7f8a70d40c5237bade0d16c4ea58",
      "tree": "13e642689e945e69b76ac095a6bec978debf4084",
      "parents": [
        "ed1e55c5276a1c031e9b2f016387c7d2fe7bc47f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 05 12:15:36 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 05 12:33:59 2014 -0800"
      },
      "message": "IAudioPolicyService: bound array size in queryDefaultPreProcessing\n\nBug: 18226810.\nChange-Id: Ib8e2bfe835a8681aac50bf23161db14e50c9a124\n"
    },
    {
      "commit": "04f101c35eaa90b1f95939afac30674ec1611e6f",
      "tree": "638649883fdc1e7329b9334b5a1a7461b7421942",
      "parents": [
        "151b3f41ffcdf187580542ba0c0d3b84df16beed"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Nov 04 11:32:52 2014 -0800"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Nov 04 11:32:52 2014 -0800"
      },
      "message": "Add a BufferItem parameter to onFrameAvailable\n\nPasses the BufferItem for the queued buffer to the onFrameAvailable\ncallback so the consumer can track the BufferQueue\u0027s contents.\n\nBug: 18111837\nChange-Id: If9d07229c9b586c668e5f99074e9b63b0468feb0\n"
    },
    {
      "commit": "2514d080c8a54ff603a45d7e336de668fe7329db",
      "tree": "c02e8521f99240935f7c672c9d79846addd785cb",
      "parents": [
        "3c1285e8f86bd497e14c14fb6df7b42072ef52bd"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Nov 03 13:29:35 2014 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Nov 03 18:39:23 2014 -0800"
      },
      "message": "Pass resolution to Crypto plugin on format change\n\nChange-Id: I56cd557ce3525fe625db8c312d2557d3c8b51101\nrelated-to-bug: 16034599\n"
    },
    {
      "commit": "3c1285e8f86bd497e14c14fb6df7b42072ef52bd",
      "tree": "82c107d9b3001bf4f9d375b7d655968abe20c2c3",
      "parents": [
        "6e8212b2a02685e50d0c093a6f44d9af636261d9"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Oct 31 00:55:16 2014 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Oct 31 00:55:16 2014 -0700"
      },
      "message": "Add missing secure stop methods\n\nb/18053197\nb/18076411\n\nChange-Id: I923dc893d48c70bf17980007b32f0ac5dfd22896\n"
    },
    {
      "commit": "df2592beab557663a471da2ac33ca463f7eee722",
      "tree": "3cbf80d5599885efcc103c129c799349bb70790d",
      "parents": [
        "31551f8dd625b8d40961e141d2913b0073f852ab"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Oct 24 18:53:44 2014 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Oct 27 22:22:57 2014 +0000"
      },
      "message": "do not hold mNotifyLock when calling MediaPlayer::notify\n\nBug:18120688\nChange-Id: Ia66dcfc3fd2d67d1ceba9808d21e0120cc8691d6\n"
    },
    {
      "commit": "258420480e1edc73b112a5994a8456e31c558860",
      "tree": "d36112992f8402264834df923ff0c7500c11c6de",
      "parents": [
        "6ce19d24ff985cf845f04c2d6542ce03c7d07964",
        "30358faf33fb9b638257b017fadb4c5f7352d903"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Oct 22 00:29:43 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 22 00:29:43 2014 +0000"
      },
      "message": "Merge \"stagefright: try to free codec instance if MediaCodec.release hangs\" into lmp-dev"
    },
    {
      "commit": "30358faf33fb9b638257b017fadb4c5f7352d903",
      "tree": "9cf39ac9b04a8de88c5b1dbd40d2c8631efc2115",
      "parents": [
        "7de5ac1f067ec61f7ea424d5534cfd40987b11fa"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Oct 21 16:07:52 2014 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Oct 21 16:14:11 2014 -0700"
      },
      "message": "stagefright: try to free codec instance if MediaCodec.release hangs\n\nBug: 18033275\nChange-Id: If86cd26566d7b75941976f37829bbec619800778\n"
    },
    {
      "commit": "52dfbee90cc3c4426428318e06a92774f5201198",
      "tree": "3721c673f64eefe2bab9a7065ccc17a6f5109800",
      "parents": [
        "7de5ac1f067ec61f7ea424d5534cfd40987b11fa"
      ],
      "author": {
        "name": "Praveen Chavan",
        "email": "pchavan@codeaurora.org",
        "time": "Wed Oct 15 02:24:34 2014 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Oct 21 11:15:08 2014 -0700"
      },
      "message": "Stagefright: MediaCodec: shutdown allocated codec on error\n\nIf MediaCodec sees a fatal error and transitions to\nUNINITIALIZED state, The codec may still be alive (with an\nexception of \u0027mediaserver-died\u0027 error).\nHandle Shutdown of the codec during release().\n\nBug: 17784012\nBug: 18033275\n\nChange-Id: I891e036499d9b440a57f77fb735a5ba4da9a6e43\n"
    },
    {
      "commit": "af238382e33a027494a53556e6104b7245e7213f",
      "tree": "87ce15febc15c2063c3655b28214e97929de5660",
      "parents": [
        "ce26e9d13da7a4a4443b9be775bb12fb3ac97d23",
        "04906863a1fa7f296ac11f07e62aa688da39c3ad"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 09 19:34:31 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 09 19:34:31 2014 +0000"
      },
      "message": "Merge \"Fix VideoFrame class layout for 64/32 bit\" into lmp-dev"
    }
  ],
  "next": "04906863a1fa7f296ac11f07e62aa688da39c3ad"
}
