)]}'
{
  "log": [
    {
      "commit": "6f7295a38455324f5da41d4e52d0ed0e2fc4b45f",
      "tree": "54f01c7f8f6d850b52276dff61468687b5795618",
      "parents": [
        "bd6594eaf2f01655b91c1a0e57ff82d39b9f0477",
        "d8192c9149430fcc7d618de6a239940bce62d4fa"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jul 18 19:39:21 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 19:39:21 2017 +0000"
      },
      "message": "MediaPlayerService: fix access of mPlayer in client am: 502c2f4053 am: bd7db202c6 am: 03fa67202f am: 263d5a2a70 am: 0844e1a3e8 am: e0f4963584 am: 5cc9f8780c am: 93ae13644b am: 50280c1b44 am: 1a1bb632e7\nam: d8192c9149\n\nChange-Id: I25ed67aa5671f7484dc99d3d79e0ed33125117f6\n"
    },
    {
      "commit": "d8192c9149430fcc7d618de6a239940bce62d4fa",
      "tree": "143836ec2b559ed6e70bef438c3ef2c73e864a35",
      "parents": [
        "e68844ffb058d7ead7392fea55db59a2a85aa6bf",
        "1a1bb632e754c9d2f07d1d98a51a072055a0b677"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jul 18 19:36:19 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 19:36:19 2017 +0000"
      },
      "message": "MediaPlayerService: fix access of mPlayer in client am: 502c2f4053 am: bd7db202c6 am: 03fa67202f am: 263d5a2a70 am: 0844e1a3e8 am: e0f4963584 am: 5cc9f8780c am: 93ae13644b am: 50280c1b44\nam: 1a1bb632e7\n\nChange-Id: I7cd886d0bbe96dcf8aafe082649d2a9a7c1c303e\n"
    },
    {
      "commit": "50280c1b44da60acf6f9cc3df8dc8e90db374d7c",
      "tree": "7bec8d1ad2b64f1c9663e1dd9afbbc68c0b70ab6",
      "parents": [
        "1feb9dca54f002ead236c432858e509383345a1d",
        "93ae13644bb8e2e1a7fbcb3c4dc1dd2c4eae57c5"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jul 18 19:30:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 19:30:50 2017 +0000"
      },
      "message": "MediaPlayerService: fix access of mPlayer in client am: 502c2f4053 am: bd7db202c6 am: 03fa67202f am: 263d5a2a70 am: 0844e1a3e8 am: e0f4963584 am: 5cc9f8780c\nam: 93ae13644b\n\nChange-Id: I16649e1417e36610e0731da5c47c90a9de169d13\n"
    },
    {
      "commit": "93ae13644bb8e2e1a7fbcb3c4dc1dd2c4eae57c5",
      "tree": "d1c80928b337a079566d21156524e4fa008d26e0",
      "parents": [
        "671c88a8077ca45d52122c14c324a78ff53f18aa",
        "5cc9f8780cc0e938f17254b9d7662d05edef2547"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jul 18 19:28:47 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 19:28:47 2017 +0000"
      },
      "message": "MediaPlayerService: fix access of mPlayer in client am: 502c2f4053 am: bd7db202c6 am: 03fa67202f am: 263d5a2a70 am: 0844e1a3e8 am: e0f4963584\nam: 5cc9f8780c\n\nChange-Id: Icb93a3b48a1674066fbf0b07bf11cda56ab22436\n"
    },
    {
      "commit": "5cc9f8780cc0e938f17254b9d7662d05edef2547",
      "tree": "cc6627048c2620dc2261e5cb602aaf04f543b6a9",
      "parents": [
        "3627617c2b7e268e961e1da433e2f452650964f6",
        "e0f496358416abebeb7ba971a354ec69cb1848d4"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jul 18 19:25:49 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 19:25:49 2017 +0000"
      },
      "message": "MediaPlayerService: fix access of mPlayer in client am: 502c2f4053 am: bd7db202c6 am: 03fa67202f am: 263d5a2a70 am: 0844e1a3e8\nam: e0f4963584\n\nChange-Id: I318dd6a90b2af9c4e879e4ab47cfad110002532d\n"
    },
    {
      "commit": "0844e1a3e8d000f34ee5a9aa55c826f771fb971e",
      "tree": "30678681c0a807255262d122324bb444536f5411",
      "parents": [
        "b063a7ea183aec7c79d6b74eff72d7548df431ac",
        "263d5a2a7065ed5a674d2af408f75383d4a01898"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jul 18 19:20:19 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 19:20:19 2017 +0000"
      },
      "message": "MediaPlayerService: fix access of mPlayer in client am: 502c2f4053 am: bd7db202c6 am: 03fa67202f\nam: 263d5a2a70\n\nChange-Id: I24e4ade61cbc0a03d20aa4b79b21fe18baa10e43\n"
    },
    {
      "commit": "263d5a2a7065ed5a674d2af408f75383d4a01898",
      "tree": "f7bcf5319d9b55e4faebe4ac7305bba5fef21d0e",
      "parents": [
        "8700c26a9184224d326a7c3dc018a9f412f6165d",
        "03fa67202fac9df24f9dbefa24c9f81f9f9e415d"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jul 18 19:12:37 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 19:12:37 2017 +0000"
      },
      "message": "MediaPlayerService: fix access of mPlayer in client am: 502c2f4053 am: bd7db202c6\nam: 03fa67202f\n\nChange-Id: I9336683351fa531560fadbe554eb218fc663585f\n"
    },
    {
      "commit": "502c2f405355c3253990ac4edae345ac1907f916",
      "tree": "71cb549d0c161a299ad8b3ab4832501963bfbd5b",
      "parents": [
        "da84963c1f4482be7570b68293906e6cc61200bd"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jul 13 17:47:56 2017 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Jul 17 23:26:10 2017 +0000"
      },
      "message": "MediaPlayerService: fix access of mPlayer in client\n\nTest: poc doesn\u0027t crash\nBug: 38234812\nChange-Id: I6f9be046ff66d2d5bed27bd712287e4ead550830\n"
    },
    {
      "commit": "884b1861562cf717cff272cc835550badcdf2f55",
      "tree": "807baa8939ac14071239e057ff443a8d25806ef3",
      "parents": [
        "deb0335714cabc906098fb1d971d992027267fc6",
        "22fdb93234e1e5d8c384a75c05e01ee92e20e61a"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Aug 31 00:35:06 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 00:35:06 2016 +0000"
      },
      "message": "MediaPlayerService: allow next player to be NULL am: 2828412787 am: f4e00a7c5a am: 0dd714e408 am: de97dbd662 am: a7549d3dce am: c6fdb3d696 am: 629e78c10f am: 50b9d889e6 am: 81e0557519 am: 31407677bc am: 4d03d0d14d\nam: 22fdb93234\n\nChange-Id: Ic3ec984fdbc8f79afd8ccb3073e4128812c2e85f\n"
    },
    {
      "commit": "22fdb93234e1e5d8c384a75c05e01ee92e20e61a",
      "tree": "07cf81b2f739c887e5ea3bbd9d0fb93d5dc88fa6",
      "parents": [
        "be4a3164993ba9779950ddec744e4ad954dff092",
        "4d03d0d14dc21e4ce1dbd080f5d1baf24bf09e66"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Aug 31 00:31:34 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 00:31:34 2016 +0000"
      },
      "message": "MediaPlayerService: allow next player to be NULL am: 2828412787 am: f4e00a7c5a am: 0dd714e408 am: de97dbd662 am: a7549d3dce am: c6fdb3d696 am: 629e78c10f am: 50b9d889e6 am: 81e0557519 am: 31407677bc\nam: 4d03d0d14d\n\nChange-Id: Id3dcf62c73b535b8416e073b67954daded502fab\n"
    },
    {
      "commit": "31407677bcf5216234c0caa12259fccd63d4d13c",
      "tree": "a57623b3205eea342e666b40684d0981dddc3172",
      "parents": [
        "3662106826084151f98ce591434e87596eb5ae59",
        "81e055751904469db7233f4698a9b6a8a1d50900"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Aug 31 00:25:57 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 00:25:57 2016 +0000"
      },
      "message": "MediaPlayerService: allow next player to be NULL am: 2828412787 am: f4e00a7c5a am: 0dd714e408 am: de97dbd662 am: a7549d3dce am: c6fdb3d696 am: 629e78c10f am: 50b9d889e6\nam: 81e0557519\n\nChange-Id: Id17354d41c8f3c4e41d03eb9467ca7d482b522df\n"
    },
    {
      "commit": "81e055751904469db7233f4698a9b6a8a1d50900",
      "tree": "44d601b65a293691a76e71e81f3b256e384fdb8d",
      "parents": [
        "5d7ca78437bb974ecf3f40da17bedaeffbb4948d",
        "50b9d889e637ff3c26e4582edc91ff0c2111fd6d"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Aug 31 00:22:57 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 00:22:57 2016 +0000"
      },
      "message": "MediaPlayerService: allow next player to be NULL am: 2828412787 am: f4e00a7c5a am: 0dd714e408 am: de97dbd662 am: a7549d3dce am: c6fdb3d696 am: 629e78c10f\nam: 50b9d889e6\n\nChange-Id: I86b58e0cb64d668021a649627e34a0386dcc619a\n"
    },
    {
      "commit": "50b9d889e637ff3c26e4582edc91ff0c2111fd6d",
      "tree": "90244540828ebd99330d9d8e6f7d14b72f7bfc91",
      "parents": [
        "f49ac6ef61935ad636305dd1f3a3d4964b7c4f61",
        "629e78c10f0b81831a385197cc7c167d753d1683"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Aug 31 00:19:57 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 00:19:57 2016 +0000"
      },
      "message": "MediaPlayerService: allow next player to be NULL am: 2828412787 am: f4e00a7c5a am: 0dd714e408 am: de97dbd662 am: a7549d3dce am: c6fdb3d696\nam: 629e78c10f\n\nChange-Id: I14c17d063743ca79f43f674c2d4cbcb57f90451e\n"
    },
    {
      "commit": "629e78c10f0b81831a385197cc7c167d753d1683",
      "tree": "55465416c5fcc5325020162026447a59f1ad63b6",
      "parents": [
        "6f8e939c584047179483840480f10dbc956d70f6",
        "c6fdb3d6964988ed576fbe393401fbd10c15d86d"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Aug 31 00:16:56 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 00:16:56 2016 +0000"
      },
      "message": "MediaPlayerService: allow next player to be NULL am: 2828412787 am: f4e00a7c5a am: 0dd714e408 am: de97dbd662 am: a7549d3dce\nam: c6fdb3d696\n\nChange-Id: I6e1cb16e9c281bda0375f552aab01b2ee069c14b\n"
    },
    {
      "commit": "a7549d3dce0b313c8d22d54e43217d822393e5ae",
      "tree": "759113fc77f9124a29d48987f4620676a91dd136",
      "parents": [
        "a9c1e43d89d7afc587b620cf7c01d94c1722ad2f",
        "de97dbd662bc959bfe4a894c8678f1383294e148"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Aug 31 00:10:56 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 00:10:56 2016 +0000"
      },
      "message": "MediaPlayerService: allow next player to be NULL am: 2828412787 am: f4e00a7c5a am: 0dd714e408\nam: de97dbd662\n\nChange-Id: I758cf33ec36858a612efe6c412af3df9653f9229\n"
    },
    {
      "commit": "de97dbd662bc959bfe4a894c8678f1383294e148",
      "tree": "7a9e627b781e2550eca69d66ac6774a9299ecf67",
      "parents": [
        "91ec9a6fd37ef12ab3b37ebdec56e798d85a6797",
        "0dd714e4081b874425aef6c40b152fb918ae595e"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Aug 31 00:08:25 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 00:08:25 2016 +0000"
      },
      "message": "MediaPlayerService: allow next player to be NULL am: 2828412787 am: f4e00a7c5a\nam: 0dd714e408\n\nChange-Id: Ib620e8573ff6da861c101311143d266fd5086d7b\n"
    },
    {
      "commit": "282841278723166e74039329ca56e444ad472daf",
      "tree": "aeba49f6b7078c00da85d76de6a0c4c8f260ccd9",
      "parents": [
        "4fb531e2627a0bb5109de2aa6096a972f40dad72"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Aug 30 13:49:06 2016 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Aug 30 22:02:44 2016 +0000"
      },
      "message": "MediaPlayerService: allow next player to be NULL\n\nBug: 31155917\nBug: 30204103\nChange-Id: I9a2a59ddb900fc942e7c19b31b53a110d790474c\n"
    },
    {
      "commit": "739ce899e51d3d82b6395e3b770569d2d345020c",
      "tree": "a1236c80cb0ec07656059e5aad84a662448eadc3",
      "parents": [
        "82f5b811b2767289ebb8a9e6af1919c3b72b5121",
        "77da9683de33028a0b277667a0698e8eb1c8c7bc"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon Aug 22 18:52:54 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 22 18:52:54 2016 +0000"
      },
      "message": "MediaPlayerService: avoid invalid static cast am: ee0a0e39ac am: 7b6a85546c am: b07255f603 am: d560830823 am: 51efd24460 am: 8d32201d4a am: 2b5ee9c8e4 am: 17744ab9d7\nam: 77da9683de\n\nChange-Id: I62d0277bc1dd8b0514486c2f8006d76e8b88085e\n"
    },
    {
      "commit": "77da9683de33028a0b277667a0698e8eb1c8c7bc",
      "tree": "2b2c7589065bf2dc4bd9a4efe765f8ea91e455a9",
      "parents": [
        "167bfc2bae3e29e1332b23cb35c188db9e0837c2",
        "17744ab9d700078d1268dab2a070e6ef8cf962ec"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon Aug 22 18:48:21 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 22 18:48:21 2016 +0000"
      },
      "message": "MediaPlayerService: avoid invalid static cast am: ee0a0e39ac am: 7b6a85546c am: b07255f603 am: d560830823 am: 51efd24460 am: 8d32201d4a am: 2b5ee9c8e4\nam: 17744ab9d7\n\nChange-Id: I7c9bff5b79002b4c1e83437b69c8cfd5a09854a3\n"
    },
    {
      "commit": "2b5ee9c8e4e7cd3ceadeb03fb68f217a4629de6d",
      "tree": "1127ac15fddbf89e6b8c124d7312d4442f01ec37",
      "parents": [
        "d4808afb993aafccd294aeff5cf6cee46d681367",
        "8d32201d4a6caa7983ae002a76d69d511a804e0a"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon Aug 22 18:36:19 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 22 18:36:19 2016 +0000"
      },
      "message": "MediaPlayerService: avoid invalid static cast am: ee0a0e39ac am: 7b6a85546c am: b07255f603 am: d560830823 am: 51efd24460\nam: 8d32201d4a\n\nChange-Id: I995c3d8e87f78596c7e3007f2b0a269542adfd42\n"
    },
    {
      "commit": "8d32201d4a6caa7983ae002a76d69d511a804e0a",
      "tree": "ae2f8bf640c4b66b7e645e9462ab34037d790e8b",
      "parents": [
        "38795159877868a41eb453bc79ef89f0538a25a3",
        "51efd2446058bfe0b6ecdd1858bd759159fd0831"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon Aug 22 18:32:19 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 22 18:32:19 2016 +0000"
      },
      "message": "MediaPlayerService: avoid invalid static cast am: ee0a0e39ac am: 7b6a85546c am: b07255f603 am: d560830823\nam: 51efd24460\n\nChange-Id: I77f1705ddb125b7eb1c1f6b6e8cb61fb0596d2e2\n"
    },
    {
      "commit": "51efd2446058bfe0b6ecdd1858bd759159fd0831",
      "tree": "43dfd3a2e8ff065c81a7c12d289d0788afbb686e",
      "parents": [
        "be78a1c73f20bd72a3747b0c2552ae234b4e49be",
        "d560830823619a753be997d11d4f38223e74724e"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon Aug 22 18:28:19 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 22 18:28:19 2016 +0000"
      },
      "message": "MediaPlayerService: avoid invalid static cast am: ee0a0e39ac am: 7b6a85546c am: b07255f603\nam: d560830823\n\nChange-Id: I77a7c93a2ae554532accb3be47bdee687b99f271\n"
    },
    {
      "commit": "d560830823619a753be997d11d4f38223e74724e",
      "tree": "7d11f31236516c4c2da1ab1dfb3cd0f102fb553c",
      "parents": [
        "6b1403777e71af2f342ed8a279197e8149aae164",
        "b07255f6038c7c7b9a80c9fe2bd2c5d7bbe0c8f1"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon Aug 22 18:23:41 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 22 18:23:41 2016 +0000"
      },
      "message": "MediaPlayerService: avoid invalid static cast am: ee0a0e39ac am: 7b6a85546c\nam: b07255f603\n\nChange-Id: I9e2b7d8166c629fdbc3457d152e2947f16ba7ae3\n"
    },
    {
      "commit": "7b6a85546c9e320f62b1b4cda9d6620b4e34acc5",
      "tree": "6c0cf42e31a09cab675024ff2ae44cadf791ecb3",
      "parents": [
        "d9591024204ac4174a9e59759fc29f374b65a9eb",
        "ee0a0e39acdcf8f97e0d6945c31ff36a06a36e9d"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon Aug 22 18:12:48 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 22 18:12:48 2016 +0000"
      },
      "message": "MediaPlayerService: avoid invalid static cast\nam: ee0a0e39ac\n\nChange-Id: I2e857a57fe87c5050b1042d27c8e3034df2a462c\n"
    },
    {
      "commit": "c159a5ae12af671d0fe0c134a27e676ed86c9874",
      "tree": "4860c98a1115c7cd7c2c30ecc80ec8bd1d6b65e1",
      "parents": [
        "17a10c50e20d934c1ac5956fe9019d3013e3f8b3"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Tue Aug 16 16:50:54 2016 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Wed Aug 17 15:17:34 2016 -0700"
      },
      "message": "DO NOT MERGE MediaPlayerService: avoid invalid static cast\n\nBug: 30204103\nChange-Id: Ie0dd3568a375f1e9fed8615ad3d85184bcc99028\n"
    },
    {
      "commit": "ee0a0e39acdcf8f97e0d6945c31ff36a06a36e9d",
      "tree": "e2cd58cba0269f63036fbf85b2182f9f04771289",
      "parents": [
        "8f4b1a7de0e102b9203cfda3970edd2eedd9becf"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Tue Aug 16 16:50:54 2016 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Tue Aug 16 17:13:47 2016 -0700"
      },
      "message": "MediaPlayerService: avoid invalid static cast\n\nBug: 30204103\nChange-Id: Ie0dd3568a375f1e9fed8615ad3d85184bcc99028\n"
    },
    {
      "commit": "adee56abc3749b18f90e7788990a0b5ae1bf430e",
      "tree": "98a630421dbcf4c8f27b810666ba03f2437f4310",
      "parents": [
        "e7449bf60c861f1dea7510f706004dfdb5efb2a7"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Aug 05 15:40:34 2016 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Aug 05 15:40:34 2016 -0700"
      },
      "message": "MediaPlayerService: clear output in CallbackData when recycling AudioTrack.\n\nBug: 30365636\nChange-Id: I3832a309f78a6fa89d4afea7bdd7139f0d9013f4\n"
    },
    {
      "commit": "e0bbac912f9ea561ed96ad8b0a354cbab8f345a1",
      "tree": "286de5eb65dd7cd335648da9ae5d65f233c6e4d3",
      "parents": [
        "9f6392250bf6d02a514bd83b743906dda748dee9"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Jul 18 16:04:53 2016 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Jul 18 18:18:09 2016 -0700"
      },
      "message": "AudioSink: set configurations correctly for recycled track.\n\nBug: 29838892\nChange-Id: Ib64db16aeeaa4436d082a4098a21a75376119ef0\n"
    },
    {
      "commit": "d8d966fef52fe6a236e8ffdd43604e0ceeb0fab3",
      "tree": "3e35ca130052498eccc53eac2f4f07c501ab5de5",
      "parents": [
        "f3c0ccf224e89e81e733a50e49f2c1cd372ff29a",
        "c0a1a3187c30a9140fd2e0d185339be5966ae5d8"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Thu Jul 14 18:14:54 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 14 18:14:54 2016 +0000"
      },
      "message": "Add bound checks to utf16_to_utf8 am: 0c9742db80\nam: c0a1a3187c\n\nChange-Id: I050e58df0250e5d685b03c3e572bb756e9f997f0\n"
    },
    {
      "commit": "c0a1a3187c30a9140fd2e0d185339be5966ae5d8",
      "tree": "e9a3414769756a1f2551c9c82dae1f0b084fc4b4",
      "parents": [
        "6007caa57e80d822275f6272ffaa870be2c49f1f",
        "0c9742db802c21274fa299fbf7a8bf7c0c49355d"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Thu Jul 14 18:06:57 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 14 18:06:57 2016 +0000"
      },
      "message": "Add bound checks to utf16_to_utf8\nam: 0c9742db80\n\nChange-Id: Iacb2248ca498ae3b0ec699c44218963b97405b3b\n"
    },
    {
      "commit": "4f24f218dc0059f101b541557f70abe45f9f8522",
      "tree": "c74702f2e3a94cd1ffaba068d3bfde8323386123",
      "parents": [
        "d88de681cdbbd1074cc5ca31e6a6f99e2be0fc1e",
        "edce8ad0608f6828dae70ce33be31d27c8773157"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Thu Jul 14 17:59:53 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 14 17:59:53 2016 +0000"
      },
      "message": "DO NOT MERGE Add bound checks to utf16_to_utf8 am: 0d9d569c26\nam: edce8ad060\n\nChange-Id: I1c725b97d3f1fcabaa7129200ca67c3d479fd771\n"
    },
    {
      "commit": "0d9d569c268128f993abd45563af39e98646bcce",
      "tree": "90963cfee9c39f6029a4b1f3de127e1890709812",
      "parents": [
        "da2ac348fc3b33c750d29b6e65371819d9fedf8b"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Jun 28 18:24:52 2016 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Thu Jul 14 17:23:40 2016 +0000"
      },
      "message": "DO NOT MERGE Add bound checks to utf16_to_utf8\n\nBug: 29250543\n(cherry picked from commit 1d3f4278b2666d1a145af2f54782c993aa07d1d9)\n\nChange-Id: Id4ffb4bee02c3bd53796723b4cbcc88e693f8e83\n"
    },
    {
      "commit": "0c9742db802c21274fa299fbf7a8bf7c0c49355d",
      "tree": "711a134e24f82d1d0346b331398eb5aca7040d90",
      "parents": [
        "cc17d003ee1e0914d046647cd5f27fe2e80dff6b"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Jun 28 18:24:52 2016 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Thu Jul 14 15:26:48 2016 +0000"
      },
      "message": "Add bound checks to utf16_to_utf8\n\nBug: 29250543\nChange-Id: I3518416e89ed901021970958fb6005fd69129f7c\n(cherry picked from commit 1d3f4278b2666d1a145af2f54782c993aa07d1d9)\n"
    },
    {
      "commit": "804c3b54a34be03ab576390797acc93607114225",
      "tree": "d19672c2cd35361234fdc14d4be4b2f7633399ef",
      "parents": [
        "7a9538cd36716c8263d3808edd58bc87cedd8492"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Jun 28 18:24:52 2016 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Thu Jul 14 14:47:01 2016 +0000"
      },
      "message": "DO NOT MERGE Add bound checks to utf16_to_utf8\n\nBug: 29250543\n(cherry picked from commit 1d3f4278b2666d1a145af2f54782c993aa07d1d9)\n\nChange-Id: Id4ffb4bee02c3bd53796723b4cbcc88e693f8e83\n"
    },
    {
      "commit": "37d7af3c3a95022465b86b6cdec9db9fb5a40fd1",
      "tree": "b7d58e6a6c975599436e044a420ccd041b53ddf8",
      "parents": [
        "786ddba2862716164920b455c4d5a1b3a7454193"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Jun 28 18:24:52 2016 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Thu Jul 14 13:22:21 2016 +0000"
      },
      "message": "Add bound checks to utf16_to_utf8\n\nBug: 29250543\nChange-Id: I3518416e89ed901021970958fb6005fd69129f7c\n(cherry picked from commit 1d3f4278b2666d1a145af2f54782c993aa07d1d9)\n"
    },
    {
      "commit": "1d3f4278b2666d1a145af2f54782c993aa07d1d9",
      "tree": "a58f653e4a76988ee042eba780c6b9667ba77028",
      "parents": [
        "e8a984e43504890e0f676256a0445b9917a2af91"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Jun 28 18:24:52 2016 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Jun 28 18:55:43 2016 +0100"
      },
      "message": "Add bound checks to utf16_to_utf8\n\nBug: 29250543\nChange-Id: I3518416e89ed901021970958fb6005fd69129f7c\n"
    },
    {
      "commit": "07b745e166ee62030960ccea37e117caadf71c32",
      "tree": "a370227e0d195f58a4e7797d8a70933730970907",
      "parents": [
        "d4c4d2248bdfd06dc7b23dd2d81541d3941f8bf9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 23 16:21:07 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 23 16:55:08 2016 -0700"
      },
      "message": "Add memory heap checks for mediaserver and audioserver\n\nMemory heap check updated and restored to mediaserver,\nadded as new option to audioserver.\n\nRequires properties to be set (example for audioserver):\n\n$ adb shell setprop libc.debug.malloc.program audioserver\n$ adb shell setprop libc.debug.malloc.options backtrace\u003d8\n$ adb shell pkill audioserver\n\n...\n\nand to dump:\n\n$ adb shell dumpsys media.audio_flinger -m\n\nBug: 28909124\nBug: 27500825\nChange-Id: Ifa8c2c02b022daf1a799ee4a1d75282a3c921763\n"
    },
    {
      "commit": "0bfa3eee31c9f99ec65158f810e65e12bae5ebf1",
      "tree": "cf5719e6a3cec8c447a053bd6a456556b86efefc",
      "parents": [
        "e35bcaa2c908c5ef404928412ade7711e6173d35"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 13 15:48:36 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 16 10:54:26 2016 -0700"
      },
      "message": "MediaPlayer/MediaRecorder: Do not notify client of audioserver death\n\nHandled internally within NuPlayer and MediaRecorder.\n\nBug: 28768023\nChange-Id: I26d94332a4668bf7a8ad54a7b25e6f0a3a6fe48d\n"
    },
    {
      "commit": "e93cc03da360a1a0d2ad937c745ce8c8e8be81c2",
      "tree": "9deae98570f41fdec272a863a2e84c7828af1a64",
      "parents": [
        "038ccfd6ff5a32d6f559e5b479d6f8e55d0b5133"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 05 10:15:10 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 11 11:38:01 2016 -0700"
      },
      "message": "audioflinger: various offload playback fixes\n\nRevert underrun sleep time optimization added for\noffload by commit 51716185 which can cause music to pause for a few\nseconds in some corner cases.\n\nAllow underruns in STOPPING_1 state to avoid dropping last buffer\nreceived by the AudioTrack callback after stop() is called by the\nclient.\n\nAllow interruption of thread loop sleep if a command is pending to\nspeed up track start sequence.\n\nDo not wait for a full AudioTrack buffer before writing to audio HAL\nwhen resuming playback or transitioning to next track.\n\nAlso moved log level for underruns in AudioSink from I to D to reduce\nspam on user builds.\n\nBug: 28545177\nBug: 27682362\nBug: 28347796\n\nChange-Id: I05b651b7878a2d2eedcac43cd669e32add171d40\n"
    },
    {
      "commit": "375a9c03550cc1bdca9e2cca862d6e549530bac6",
      "tree": "d46c5a9d62bdd1e855d97388d3c0821f45dfd73a",
      "parents": [
        "f15d88daa721d53921bfb7798dd12f7c74b44ac1",
        "6dc3a3e2292454f94c015da45f1ebfc6a493e736"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu May 05 16:55:50 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 05 16:55:50 2016 +0000"
      },
      "message": "Merge \"Report other servers\u0027 deaths in OnErrorListener too\" into nyc-dev"
    },
    {
      "commit": "6dc3a3e2292454f94c015da45f1ebfc6a493e736",
      "tree": "7bc7d425bc94627546428203f08c94691809162b",
      "parents": [
        "35443e32bfe0960dc6a6564426054b104977b143"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Apr 29 15:42:06 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Apr 29 16:25:18 2016 -0700"
      },
      "message": "Report other servers\u0027 deaths in OnErrorListener too\n\notherwise applications will be unaware of those processes dying.\n\nBug: 22775369\nChange-Id: I48577f787a97ee7627ae8e7f32e2f21ace243ed0\n"
    },
    {
      "commit": "3003807fcfa96c9cbfea18d643f47108aa116cd5",
      "tree": "a3f7b454cdf3973b6fd716ee44f4295e6c100bb5",
      "parents": [
        "c3c06c4fe329d07bd7d442206bc9eb63e92bf5bd"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Apr 25 13:41:35 2016 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 26 20:46:17 2016 -0700"
      },
      "message": "Remove MediaDrm stack from mediaserver\n\nPart of media security hardening\n\nMediaDrm was temporarily allowed to\nrun in either mediaserver or mediadrmserver\nwhile all nexus devices were implementing\nsupport for the native_handle representation\nof secure buffers.  Now that all nexus\ndevices support native_handle, the MediaDrm\nstack can be removed from mediaserver.\n\nb/22990512\n\nChange-Id: Ie5d83bfeb4c4a824e1d0edb4c9452c782d6fd386\n"
    },
    {
      "commit": "535412965145a1df2ec1770331e8477e52cd37b5",
      "tree": "6deb860bf3dab51c1f33ff2d64fb3217972ca1ea",
      "parents": [
        "0c4a97e6e1470b2d8b8810792af8d66689020c51"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 16:48:51 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 16:51:38 2016 -0700"
      },
      "message": "Add memory leak detection to mediaserver\n\nBug: 28169802\nChange-Id: I05e12ef3b12c5f0322ddf5ecc10d95205b0e44d6\n"
    },
    {
      "commit": "0c4a97e6e1470b2d8b8810792af8d66689020c51",
      "tree": "49ab98d7d2462157431b2fc830f417098f1b146b",
      "parents": [
        "24f66c69676dbb004565407215ce7185e00c5de2",
        "ff874dc957f9ea70d87f4d627bf903e1fc86d58b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 19:51:54 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 13 19:51:54 2016 +0000"
      },
      "message": "Merge \"NuPlayer: Reserve buffer for 8x max speed\" into nyc-dev"
    },
    {
      "commit": "f2c87b3f88d987d2af6322e9763eb8224a2bae48",
      "tree": "e5385d3a05f9a317b7fa1ea5613a2a6f584ebdfd",
      "parents": [
        "8ae73129e7e79d826b293238c2f037f723d0e6e8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 07 19:49:29 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 11:03:44 2016 -0700"
      },
      "message": "NuPlayer: Notify if drain message time is unexpectedly long\n\nBug: 27940058\nChange-Id: Id8897c30e21b6b9de545a710e7766ffceb491455\n"
    },
    {
      "commit": "ff874dc957f9ea70d87f4d627bf903e1fc86d58b",
      "tree": "ea53dbbdf6db6e8fd36eebc1b9c657ddafbfb1e2",
      "parents": [
        "8ae73129e7e79d826b293238c2f037f723d0e6e8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 11 16:49:09 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 13 11:02:33 2016 -0700"
      },
      "message": "NuPlayer: Reserve buffer for 8x max speed\n\nAffects Photos with Bluetooth and 240x recording.\n\nBug: 26986060\nChange-Id: I228223221f9811e05c274d64cd42ac104db04c36\n"
    },
    {
      "commit": "8a049c2f127f95715375d5ede39b2363b3a68329",
      "tree": "e4db3ce5e7a6b79f9eb0aed5d77fb7bf8c09e9a2",
      "parents": [
        "da65b5a3502ae06a65f09d9983c89b7fd9369316",
        "833b47505c513cb5c8f22aa922a7ea20d153b319"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Apr 09 04:57:21 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 09 04:57:21 2016 +0000"
      },
      "message": "Merge \"MediaPlayerService: Remove 64 bit compilation warnings\" into nyc-dev"
    },
    {
      "commit": "2f6e73db45995636e5405fb2e1063a55550ba10f",
      "tree": "df839761306fc04ee8816ca53d300c92c3ca133b",
      "parents": [
        "4d363d4625588bf2007d31c244c83b0965d834b4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 08 12:12:58 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 08 12:29:37 2016 -0700"
      },
      "message": "NuPlayer: fetch position from track\n\nBug: 27940058\nChange-Id: Ibe730dffca4b3e2649a07f1f7583b471e13bdbed\n"
    },
    {
      "commit": "833b47505c513cb5c8f22aa922a7ea20d153b319",
      "tree": "c518c425318ecf482d2cc2f18ac3055869202842",
      "parents": [
        "4d363d4625588bf2007d31c244c83b0965d834b4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 04 17:15:48 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 05 09:36:15 2016 -0700"
      },
      "message": "MediaPlayerService: Remove 64 bit compilation warnings\n\nBug: 16890215\nChange-Id: I83d27d8c0c51bd868737bc2a1d6e046702d2a91c\n"
    },
    {
      "commit": "e13f8a603867280de9b02ce4839202a182556416",
      "tree": "adfd4bef77236d67dd7c1e862740448bc82ba7d4",
      "parents": [
        "ea2b9c07b34079f0dbd8610a511e006e69a15adc"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 30 14:20:42 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 01 16:56:02 2016 -0700"
      },
      "message": "NuPlayer: Play out remaining audio data when recycling isn\u0027t possible\n\nDon\u0027t flush it immediately.\n\nBug: 26530291\nChange-Id: I0427633402fa251ec62e2b70e47a0a7b451d3ea2\n"
    },
    {
      "commit": "d848eb48c121c119e8ba7583efc75415fe102570",
      "tree": "06733e396ad546bf39be0a6699193d041883edad",
      "parents": [
        "38246e482ea3bd1e0f88f7133934ec4537b48bbd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 08 13:42:11 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 16 14:04:22 2016 -0700"
      },
      "message": "Use audio_session_t consistently\n\nBug: 27562099\nChange-Id: I328d8226191386b163f2ace41233607294c50dcd\n"
    },
    {
      "commit": "1900e77bac4276f247f80fd06d19316cac598f57",
      "tree": "b97774b7b48e386a774ed817d1e3dc6defeacc42",
      "parents": [
        "687bb88d330048075e69a7fc514d92901eeb0eee"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 02 16:12:16 2016 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 09 14:45:15 2016 -0800"
      },
      "message": "Run codecs in a separate process\n\nEncoders and secure decoders still run in the mediaserver, while\nall other codecs run in a separate codec process.\n\nBug: 22775369\n\nChange-Id: Ifbcab8a8f2fe77d2567830ac88f0d982e77f7b00\n"
    },
    {
      "commit": "e4d40ad91f3516bde106658673b2cb076b5dfcb7",
      "tree": "eef674159322f2d46d3aa3201db1cf0211c28b26",
      "parents": [
        "43e08e0146b825cde52480b64764765d9a61f97c"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Jan 12 16:22:42 2016 -0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Feb 08 19:46:06 2016 -0800"
      },
      "message": "stagefright: Remove deprecated AwesomePlayer\n\nBug: 17108024\nChange-Id: Ia721bdfa87b07612ad8e76cbdcda6de2b8ce2a74\n"
    },
    {
      "commit": "260e56c9a17737bf280d776797d6dee411c9b4da",
      "tree": "5e2de882c337b17d1d06dd5dd323be134d7bb882",
      "parents": [
        "4f12d94fc26df1d0c7a566792711b8863fd39fe9"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 28 21:41:25 2016 +0000"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 28 21:41:25 2016 +0000"
      },
      "message": "Revert \"Run codecs in a separate process\"\n\nThis reverts commit 4f12d94fc26df1d0c7a566792711b8863fd39fe9.\n\nChange-Id: Ic850a950119a45efd3042f40147253b37c328853\n"
    },
    {
      "commit": "4f12d94fc26df1d0c7a566792711b8863fd39fe9",
      "tree": "35c3df0045f97769878455388f4c99e2ffa65d68",
      "parents": [
        "97385561584e96c1c1149cf883e0ad1c75cfbdd0"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Dec 16 11:11:59 2015 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jan 22 19:53:00 2016 -0800"
      },
      "message": "Run codecs in a separate process\n\nFor now this only runs decoders and Google encoders in the codec process.\n\nBug: 22775369\nChange-Id: Iadd8b6bc2873ddcfaee3e68866642ba74c6949aa\n"
    },
    {
      "commit": "2afac0c7c42560ff5b8f133c6074b7e023279d6d",
      "tree": "f541f9d2de183b5b24c857bdf5995845b22efb2b",
      "parents": [
        "df9e6aaf716279baf0e27b99acf10005924245ed"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jan 07 12:13:07 2016 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jan 07 15:20:31 2016 -0800"
      },
      "message": "libmedia: check NULL pointer at binder receiver side.\n\nChange-Id: I464da96f3d6081dd8c3cc2fd977e2b96f5d477bb\n"
    },
    {
      "commit": "3f273d10817ddb2f792ae043de692efcdf1988ae",
      "tree": "85d7e25da5a8a1d7c86487821004246ccab36e03",
      "parents": [
        "c5fcd06e9c332a60ba5fcba2118270dbdf22ae42"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Nov 24 09:06:49 2015 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Dec 02 18:18:03 2015 +0000"
      },
      "message": "Uses AudioFlinger to signal battery stats for audio.\n\nBug: 18177221\nChange-Id: I704010c037cb99bb74b98798ee8e494fa8bdc875\n"
    },
    {
      "commit": "23cba7d6b11ba47bd0408f84fb935c4d382fff59",
      "tree": "21c4d5d7e318d2557e0ae1c1d60d567e0637e958",
      "parents": [
        "ae0dd12d85bdf93a20be49e0bbc9b97a2dd3c3e7",
        "470b7752e38307305365fdaaa005b81db977d708"
      ],
      "author": {
        "name": "Erik Wolsheimer",
        "email": "ewol@google.com",
        "time": "Fri Oct 30 20:19:04 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 30 20:19:04 2015 +0000"
      },
      "message": "fix deadlock in MediaPlayerService BUG: 25263909 am: 7845a1f079\nam: 470b7752e3\n\n* commit \u0027470b7752e38307305365fdaaa005b81db977d708\u0027:\n  fix deadlock in MediaPlayerService BUG: 25263909\n"
    },
    {
      "commit": "470b7752e38307305365fdaaa005b81db977d708",
      "tree": "62e94f15f80d1f9c0e5f0de3ce1a5dbdece3fc49",
      "parents": [
        "e9ce1b1476ecaa29a845213de9ae1e749fb7d7b6",
        "7845a1f0790a1de9e26e99578f6ce3219cf8efc3"
      ],
      "author": {
        "name": "Erik Wolsheimer",
        "email": "ewol@google.com",
        "time": "Fri Oct 30 20:14:57 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 30 20:14:57 2015 +0000"
      },
      "message": "fix deadlock in MediaPlayerService BUG: 25263909\nam: 7845a1f079\n\n* commit \u00277845a1f0790a1de9e26e99578f6ce3219cf8efc3\u0027:\n  fix deadlock in MediaPlayerService BUG: 25263909\n"
    },
    {
      "commit": "7845a1f0790a1de9e26e99578f6ce3219cf8efc3",
      "tree": "1d9f0f145f690b31b03cbeacfdcbfbab0c6c3481",
      "parents": [
        "06195062e6b65b342b70cb1299ff278340eba9ff"
      ],
      "author": {
        "name": "Erik Wolsheimer",
        "email": "ewol@google.com",
        "time": "Fri Oct 30 12:07:52 2015 -0700"
      },
      "committer": {
        "name": "Erik Wolsheimer",
        "email": "ewol@google.com",
        "time": "Fri Oct 30 12:07:52 2015 -0700"
      },
      "message": "fix deadlock in MediaPlayerService\nBUG: 25263909\n\nChange-Id: I3f08c02a851b67ab269e9aef7b2fb17eda09ea5d\n"
    },
    {
      "commit": "213f490215c2946edc2cc3f589219efe283d6548",
      "tree": "db72c5d29d73fb64e2bb7893e15b1d53dcd1fa95",
      "parents": [
        "eaf784ba41d4d06df82e864720818854ce1b9b8d"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Oct 22 08:55:25 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Oct 22 08:55:25 2015 -0700"
      },
      "message": "MediaPlayerService: fix returned value for getPlayedOutDurationUs().\n\nChange-Id: Id38c146cb43543c83b8378752027cc292cdbd17b\n"
    },
    {
      "commit": "c4ac8173f911aeac8d5006b19ba48fb51a865115",
      "tree": "3c1945093ad340ac2d60d4f9606ed108195fca7a",
      "parents": [
        "4ecbea3ae1fcefb082dc419cb663909536138ddb"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Oct 21 10:35:48 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Oct 21 18:48:31 2015 +0000"
      },
      "message": "AudioSink: move getPlayedOutAudioDurationUs() from NuPlayerRenderer to AudioSink.\n\nChange-Id: Id22e10dc5f1cd7ade0e043ea56ed77497c2e32af\n"
    },
    {
      "commit": "83b0fd9997b558f6c2ebf5e6e4db20570cb233b8",
      "tree": "fba92293da0dc6927954f6a99ada889eeefc4bc4",
      "parents": [
        "1277aea8405ea3256a2b0f730506c4610cadafa4"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 16 13:48:07 2015 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 16 14:18:27 2015 -0700"
      },
      "message": "Optionally print name for fd\n\nAdd utility function to get the file name for a file descriptor,\nand use it in various places.\n\nChange-Id: I196b557a56d5ef0ef89e2020aab2699eafae61b0\n"
    },
    {
      "commit": "fcce691b9741fd8b7860645c99db4158d1cbbd92",
      "tree": "5bbe5e7622b330fcb8544f22dad5f9fdb72feee4",
      "parents": [
        "9d65efac5bbf88c03f7fa5e95120e2fbae35aa9b",
        "945d3ba77cd13061e034301b35ce308b0d926353"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 27 22:35:07 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 27 22:35:07 2015 +0000"
      },
      "message": "am 945d3ba7: Merge \"AudioSink: Fix for gapless offload playback\" into mnc-dr-dev\n\n* commit \u0027945d3ba77cd13061e034301b35ce308b0d926353\u0027:\n  AudioSink: Fix for gapless offload playback\n"
    },
    {
      "commit": "2e17eef829f1870d9bde963a356dfb11f120a6b5",
      "tree": "97bd31cddb60843f77dcb35d073eaee6b49e2bb1",
      "parents": [
        "44a63fa259233d09a4f5e2f30b498edc8ab9aff7"
      ],
      "author": {
        "name": "Preetam Singh Ranawat",
        "email": "apranawat@codeaurora.org",
        "time": "Wed Aug 12 12:11:46 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 26 12:41:08 2015 -0700"
      },
      "message": "AudioSink: Fix for gapless offload playback\n\nGapless mode is not working for offload playback due to mismatch\nin flags of current track and next track to be played.\n\nAUDIO_OUTPUT_FLAG_DIRECT is added in AudioTrack flags for current track\nwhich does not match exactly with requested flags for next track.\nBecause of this mismatch, reuse of the AudioTrack is not allowed.\n\nTo fix this, update audio sink flags with requested flags and use\ntrack flags only to setPlaybackRate if AUDIO_OUTPUT_FLAG_DIRECT flag\nis not set.\n\nBug: 23221273\n\nauthored-by: Preetam Singh Ranawat \u003capranawat@codeaurora.org\u003e\n\nChange-Id: I52761ccd854b66a7bc218e83c9b44598771c46f7\n"
    },
    {
      "commit": "f9e3617a4cc035446329be45f8b078dd917c7388",
      "tree": "008b4b13c7cff68a152ff0a3510f988e5e5d5293",
      "parents": [
        "4146f9b65b2a0e9c94f9963fcbbd8d65375d03a6",
        "ab3df6d8a0ddda175dcafc6b3007f399b8f3a8bb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 16:26:53 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 16:26:53 2015 -0700"
      },
      "message": "resolved conflicts for merge of ab3df6d8 to mnc-dr-dev-plus-aosp\n\nChange-Id: I2f6ef2d43275739d24ad8b79270f18e374d88e55\n"
    },
    {
      "commit": "308f3927dee3861586c17df267265ae0c86d79f7",
      "tree": "ac29b94144e2d2e86359516ff176a2ac4c9c27e3",
      "parents": [
        "bc2d3eba6b10c4dca96b0202a58d56b04464dfb4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 14:39:13 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 14:39:13 2015 -0700"
      },
      "message": "frameworks/av doesn\u0027t need to support the long-dead simulator.\n\nChange-Id: I43678ee1da57e7f42670f6042b2acc14db50d750\n"
    },
    {
      "commit": "9a89ceebd3a76d20ddfdbb127066b7d66fc48b96",
      "tree": "162e420898d4e673a8b0b35d782066711bc5f381",
      "parents": [
        "e52fb98b4541cffb9b729af69f17af7046d119fc",
        "31df62abf1b1bd45b217f6de7f6ffb503a885b95"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Fri Jul 24 17:37:47 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 24 17:37:47 2015 +0000"
      },
      "message": "am 31df62ab: Merge \"MediaPlayerService: prevent audio_attributes_t race conditions\" into mnc-dev\n\n* commit \u002731df62abf1b1bd45b217f6de7f6ffb503a885b95\u0027:\n  MediaPlayerService: prevent audio_attributes_t race conditions\n"
    },
    {
      "commit": "2650e9661ea1608dfb6b58bc640a66cdbbb6ae58",
      "tree": "70b66e87a1061e0b842ca054ca3482950c69ed0e",
      "parents": [
        "70c1f74f3d4c43b67949f3e742195d60f4677462"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jul 22 18:14:02 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jul 23 17:44:57 2015 -0700"
      },
      "message": "MediaPlayerService: prevent audio_attributes_t race conditions\n\nAccess to audio attributes fields in Client and AudioOutput\n was not always locked.\nAudio attributes field in AudioOutput cannot share the same pointer\n as Client because it can be indepently accessed. Save the\n attributes inside AudioOutput instead.\n\nBug 22672670\n\nChange-Id: Ib1002b57b45cea44ff5e6eb115d581dc3beec006\n"
    },
    {
      "commit": "66f1d3f01eb4d745e4abd3b96eca961e200efc3f",
      "tree": "19ccd4d7e8093f8517f7b3b33830490a112b703d",
      "parents": [
        "9f29eb31f79ba3fa2b1e8dec533a4a5eb97e4fe1",
        "f87d8341df3445fb4931a39deec2ec1d00c30918"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu Jul 23 21:48:34 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 23 21:48:34 2015 +0000"
      },
      "message": "am f87d8341: Merge \"libmediaplayerservice: propagate caller pid to MediaCodec.\" into mnc-dev\n\n* commit \u0027f87d8341df3445fb4931a39deec2ec1d00c30918\u0027:\n  libmediaplayerservice: propagate caller pid to MediaCodec.\n"
    },
    {
      "commit": "68845c14ebf2c7282800b1abffde38d8e9a57aab",
      "tree": "c4e924999d0ed48ae4c1a08d44777cbc5b161906",
      "parents": [
        "f8f669d7a727e4ad5505cd85741f4d50dbaffbf9"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Tue Jul 21 09:50:48 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Tue Jul 21 19:04:41 2015 -0700"
      },
      "message": "libmediaplayerservice: propagate caller pid to MediaCodec.\n\nBug: 22630317\nChange-Id: I0337d74f4ef04bf96f2de83f33d98d0d7da47c12\n"
    },
    {
      "commit": "83582fafce2122286124710c3a9c749b4825a033",
      "tree": "13cda1fad01d52c8547d5c12edd74f46399f1e02",
      "parents": [
        "39d19327feb76affd0ab0df119aa6987e29816fa",
        "a8dc93efc9be8d5e37c7473601fb8654804188c1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 16 01:36:01 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 16 01:36:01 2015 +0000"
      },
      "message": "am a8dc93ef: Merge \"mediaplayer: fix audio attributes override by stream type\" into mnc-dev\n\n* commit \u0027a8dc93efc9be8d5e37c7473601fb8654804188c1\u0027:\n  mediaplayer: fix audio attributes override by stream type\n"
    },
    {
      "commit": "4356269be6d2b62bbb945364e8fc4beb99e1aada",
      "tree": "f2ef8b7a7f84fe3901333cf2784711bd1dc6b769",
      "parents": [
        "4b33e0838fdb1b5e545449add02005916b512c99"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 15 16:49:07 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 15 16:49:07 2015 -0700"
      },
      "message": "mediaplayer: fix audio attributes override by stream type\n\nMake sure that when audio attributes are set, the stream type\nis always derived from them.\n\nBug: 22481669.\nChange-Id: Ia10c7017eb27e7753faf97a42dd4f44e15f2c986\n"
    },
    {
      "commit": "cda7cf7f6fda88525b6827cebf6372473b3fc876",
      "tree": "56ebf4bf6236c4fc089b03c9b7dd6c3f9fc3c2b4",
      "parents": [
        "2d908114b0ce5ba0d34aab5a721f9772340f936a",
        "b6b19ca71e41276190fcd97351a0d19fae75bd34"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 10 21:45:32 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 10 21:45:32 2015 +0000"
      },
      "message": "am b6b19ca7: Merge \"libmediaplayerservice: Serialize access to AudioOutput\" into mnc-dev\n\n* commit \u0027b6b19ca71e41276190fcd97351a0d19fae75bd34\u0027:\n  libmediaplayerservice: Serialize access to AudioOutput\n"
    },
    {
      "commit": "d1c74340c9346e2bfd061e20fba9bf34c22d77db",
      "tree": "54220202e022e8ff9d53113a377ffcec120539c2",
      "parents": [
        "54c0659b9efa72d11997c590c4d377c44789c7fd"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jul 07 16:54:23 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 10 10:09:00 2015 -0700"
      },
      "message": "libmediaplayerservice: Serialize access to AudioOutput\n\nNuPlayerRenderer may open and close the AudioOutput while\nMediaPlayerService::Client accesses it.\n\nBug: 20069455\nBug: 22295200\nChange-Id: Ic37987c1de1919cf890b2e69778e6df71e7ee7c5\n"
    },
    {
      "commit": "c9811dc703a38add41ee3960c1d7242ed154434f",
      "tree": "78f83b42a8951addcd9f36c049817b78f5e3f0cd",
      "parents": [
        "00d9169fa3b042a7d28175e00982531c53ff157f",
        "f49b5150f87c98c389a334c3af5a9a586d40ee8f"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jun 09 21:25:58 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 09 21:25:58 2015 +0000"
      },
      "message": "am f49b5150: Merge \"AudioSink: use flags granted by AudioTrack, instead of the requested flags.\" into mnc-dev\n\n* commit \u0027f49b5150f87c98c389a334c3af5a9a586d40ee8f\u0027:\n  AudioSink: use flags granted by AudioTrack, instead of the requested flags.\n"
    },
    {
      "commit": "f49b5150f87c98c389a334c3af5a9a586d40ee8f",
      "tree": "fb90dd7dd121f3a9f9507fe475c0bfa7a8092b50",
      "parents": [
        "984591672a6f4096ee92c4a582d4c54ee6023c43",
        "0162d00a38cdb5f4eba5dfe8cd272f69ddbc8c21"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jun 09 21:04:34 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 09 21:04:35 2015 +0000"
      },
      "message": "Merge \"AudioSink: use flags granted by AudioTrack, instead of the requested flags.\" into mnc-dev"
    },
    {
      "commit": "0162d00a38cdb5f4eba5dfe8cd272f69ddbc8c21",
      "tree": "23e84b8e8819c1a2106f18f5957815e3ca786014",
      "parents": [
        "9cf332ca156132931da397bae94b89debb40de10"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jun 09 11:59:33 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jun 09 12:04:09 2015 -0700"
      },
      "message": "AudioSink: use flags granted by AudioTrack, instead of the requested flags.\n\nDo not call AudioTrack::setPlaybackRate when DIRECT flag is set.\n\nBug: 17459982\nChange-Id: Ib8fb07be72558234519590bcc3bb88c4f6edfa37\n"
    },
    {
      "commit": "979d0d7a73b085920345028e28714be81d83e9c5",
      "tree": "b4883afbcdbb0da5de8d6a40330e73440910fb3b",
      "parents": [
        "fffb53cfdfaaa090dec16429d62de9ccc79db053",
        "bc186651b6ff4bef5ebe0087c0e34bc8e89b14a3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 05 04:02:55 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 05 04:02:55 2015 +0000"
      },
      "message": "am bc186651: Merge \"NuPlayer: Add audio sink buffer configuration\" into mnc-dev\n\n* commit \u0027bc186651b6ff4bef5ebe0087c0e34bc8e89b14a3\u0027:\n  NuPlayer: Add audio sink buffer configuration\n"
    },
    {
      "commit": "179652ee2a508361df1aa18e99000373886f0816",
      "tree": "cab9a40399ab43231c8a9b9fc00985b2efaf600c",
      "parents": [
        "a7f03353d5f172016f324e2a01f301cca6794152"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun May 31 22:49:46 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 22:26:44 2015 -0700"
      },
      "message": "NuPlayer: Add audio sink buffer configuration\n\nProperty media.stagefright.audio.sink (in milliseconds)\nAlso change the default buffer size for PCM playback to 500 ms.\n\nBug: 21198655\nChange-Id: I5781288f59bf08fbecd9263a26c919570b58be0f\n"
    },
    {
      "commit": "ff96dd688f50b7ed3f4ab8fb04fb4a61e596130b",
      "tree": "00182963a9155e07ef8d0181543f365a53c2370f",
      "parents": [
        "c394dace3c6128ca719aceea9f132a1cb905bf2e",
        "4170eeec0a2dc2a9543b7e4674a43b3d2faac61d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 21:30:13 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 03 21:30:13 2015 +0000"
      },
      "message": "am 4170eeec: Merge \"MediaPlayerService: Reset the bytes written in AudioSink stop and flush\" into mnc-dev\n\n* commit \u00274170eeec0a2dc2a9543b7e4674a43b3d2faac61d\u0027:\n  MediaPlayerService: Reset the bytes written in AudioSink stop and flush\n"
    },
    {
      "commit": "91e1a4e9ffed810f94690c16f6771f302f9dcf95",
      "tree": "ec8fcf0469926659a4a18db2d2a3bee022df055c",
      "parents": [
        "ed38e31197b7a3027412f6ba6bf626794069cef3",
        "6f04a0c9bf531372ba885a82e592a0eeb27b9484"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 21:16:11 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 03 21:16:11 2015 +0000"
      },
      "message": "am 6f04a0c9: Merge \"MediaPlayerService: Remove unnecessary zero writes to AudioSink\" into mnc-dev\n\n* commit \u00276f04a0c9bf531372ba885a82e592a0eeb27b9484\u0027:\n  MediaPlayerService: Remove unnecessary zero writes to AudioSink\n"
    },
    {
      "commit": "4170eeec0a2dc2a9543b7e4674a43b3d2faac61d",
      "tree": "cb6467ecdb48f84040fe2b3efca2266aa833b1f1",
      "parents": [
        "d726a189a8a3f822106da21fcb8c8665fd48d272",
        "da17c04fa1c81ff8ffa8160df06fa5031a7884f4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 21:00:18 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 03 21:00:22 2015 +0000"
      },
      "message": "Merge \"MediaPlayerService: Reset the bytes written in AudioSink stop and flush\" into mnc-dev"
    },
    {
      "commit": "da17c04fa1c81ff8ffa8160df06fa5031a7884f4",
      "tree": "8f8de9064479ea370b7d5c97dd7de61cc593f018",
      "parents": [
        "0eafa9d8ee4069aa709ff85ceffe94d12995956d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 01 15:53:14 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 13:58:39 2015 -0700"
      },
      "message": "MediaPlayerService: Reset the bytes written in AudioSink stop and flush\n\nWhen playing in non-offloaded mode with gapless playback it is\nnecessary to reset AudioSink\u0027s bytes written on stop and flush\n(e.g. seeking) so the frames written can be correctly retrieved\nfor the subsequent song in NuPlayer::Renderer::onAudioSinkChanged().\n\nWithout this change, seeks performed during playback will cause\na time position offset of the subsequent song in Play Music.\n\nBug: 21198655\nChange-Id: I0fb6cc94b5a0ff106dc8a71571ed85d75fb00660\n"
    },
    {
      "commit": "719b46bdbafa226aed3163ed8e76a2cc4dff386b",
      "tree": "58c94bb03d49a4987876f14edd034db2da4322ab",
      "parents": [
        "0eafa9d8ee4069aa709ff85ceffe94d12995956d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun May 31 22:18:25 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 13:48:27 2015 -0700"
      },
      "message": "MediaPlayerService: Remove unnecessary zero writes to AudioSink\n\nCauses glitches in PCM playback for NuPlayer callback mode.\n\nNot sure the original intention of this with AwesomePlayer, as zeroes\nare only placed under EOS condition for AudioSink targets, not AudioTrack\ntargets.  Does not seem useful anymore as AwesomePlayer appears to\ncall stop() which should send the remaining track data out.\n\nBug: 21198655\nChange-Id: Iab80dd7bc6e2e341f92406c5d8f8085e9d877bcd\n"
    },
    {
      "commit": "1bf65efd28fffbbc600177c11799a8d7c3cb2477",
      "tree": "100f5e928de71ca5505a32fccc5af1d63ac2fbd4",
      "parents": [
        "7fcc4ef203515737cd9a8f85277aaeee6123591e",
        "cb18ec05b7097a63262b81afe1e866105d400f4a"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Jun 02 14:23:56 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 02 14:23:56 2015 +0000"
      },
      "message": "am cb18ec05: Merge \"Track camera and flashlight usage in battery stats.\" into mnc-dev\n\n* commit \u0027cb18ec05b7097a63262b81afe1e866105d400f4a\u0027:\n  Track camera and flashlight usage in battery stats.\n"
    },
    {
      "commit": "cb18ec05b7097a63262b81afe1e866105d400f4a",
      "tree": "4b13077360dfb54722298be1b793a8df5ddc6d7a",
      "parents": [
        "cc7cc67349b7a3f498882087aa42ffc05a2daf11",
        "99e69716215cd0665379bc90d708f2ea8689831d"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Jun 02 01:48:21 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 02 01:48:23 2015 +0000"
      },
      "message": "Merge \"Track camera and flashlight usage in battery stats.\" into mnc-dev"
    },
    {
      "commit": "99e69716215cd0665379bc90d708f2ea8689831d",
      "tree": "d013b8e9273ea6032ddf24ba701eccb755b672bb",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue May 26 17:25:07 2015 -0700"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Mon Jun 01 16:53:45 2015 -0700"
      },
      "message": "Track camera and flashlight usage in battery stats.\n\nBug: 15986092\n\nChange-Id: I9dc6828332e4091fd93bf2d82839e8e3862a2fc2\n"
    },
    {
      "commit": "4612b1f4df00f1985d28131fbf52afc2146ded54",
      "tree": "d10e740b3c7d0fecd9526de2b5bfddb319b765cb",
      "parents": [
        "aa245565fc1c10c3de5bb2a138b8708d05e5bef3",
        "90869ff493a3e8d1aa39c146530be03dc2a7dd84"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 01 18:51:22 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 01 18:51:22 2015 +0000"
      },
      "message": "am 90869ff4: Merge \"Explicit log for AudioTrack::EVENT_UNDERRUN\" into mnc-dev\n\n* commit \u002790869ff493a3e8d1aa39c146530be03dc2a7dd84\u0027:\n  Explicit log for AudioTrack::EVENT_UNDERRUN\n"
    },
    {
      "commit": "421743b3f8d14b700f2e1be256e010756fa85af8",
      "tree": "42744bdb16ca0ccaf3b7af79ef5d9a3bbd68e1cc",
      "parents": [
        "11804f5ca4ebd3527e7cc3bcc529e8358a519f8e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 01 08:18:08 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 01 10:36:56 2015 -0700"
      },
      "message": "Explicit log for AudioTrack::EVENT_UNDERRUN\n\nPrompted by this bug, but not a fix for the bug\n\nBug: 21352202\nChange-Id: I350d9d8660a367470450c9f54d7c541d4896ebda\n"
    },
    {
      "commit": "475ed1d6c842abdb773fa8e39290375ceda39b62",
      "tree": "40cc6ff40bd4ff72ae11b4c09ce682234dcb5fbc",
      "parents": [
        "0929bee6badfd924c143a54cec27de5879be6c31",
        "0a7989f5691f161fff97dd550eb602e44a6e6185"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri May 22 19:11:53 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 22 19:11:53 2015 +0000"
      },
      "message": "am 0a7989f5: Merge \"libmediaplayerservice: try to open audio sink in offload mode in error.\" into mnc-dev\n\n* commit \u00270a7989f5691f161fff97dd550eb602e44a6e6185\u0027:\n  libmediaplayerservice: try to open audio sink in offload mode in error.\n"
    },
    {
      "commit": "faeb0f291330134dc4468359a36e099aae508449",
      "tree": "028333c0801e03826c4162cb35880236eaae3b3b",
      "parents": [
        "8eddd88568fe4da0ca0ceab5072bc488827f01b5"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Thu May 21 12:20:21 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri May 22 10:36:31 2015 -0700"
      },
      "message": "libmediaplayerservice: try to open audio sink in offload mode in error.\n\nBug: 19061432\nBug: 21370108\nChange-Id: Iaa757555ef37fd1ac87b6e2d5a9969bb58cc5ebc\n"
    },
    {
      "commit": "3d4d897cf6a933dd02e8d83e674a4ecfe2ea578b",
      "tree": "c74f320420b43896390519c2deb4bf4c7f0b7ed4",
      "parents": [
        "672a5ddac8ef8eeb144a1248045ed9ffd82e5dec",
        "d45d75d7c19811c5afe9b115c7282f9aa4e1ee4d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 18 22:48:58 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 18 22:48:58 2015 +0000"
      },
      "message": "am d45d75d7: Merge \"Clear mAudioRecord and mAudioTrack on set() failure\" into mnc-dev\n\n* commit \u0027d45d75d7c19811c5afe9b115c7282f9aa4e1ee4d\u0027:\n  Clear mAudioRecord and mAudioTrack on set() failure\n"
    },
    {
      "commit": "3e98ecd18c906dc3ac2ff1a890f0b3163447272d",
      "tree": "8c9227dcf79cd1d87d69d6c1ab4c66d440d3207c",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 18 13:13:24 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 18 14:37:52 2015 -0700"
      },
      "message": "Clear mAudioRecord and mAudioTrack on set() failure\n\nBug: 20818955\nBug: 20890069\nChange-Id: I243205b99b198eb1b5a1a027b27cbb7d5aaaa8db\n"
    },
    {
      "commit": "0ab2c4ce6f669722c055f1f4d35d6a79d21ba7c7",
      "tree": "94c1085ec77573f3a51a5dc4ccf0c54a91d0fa1b",
      "parents": [
        "86e3866b82b435bb319ed79aa91416e4f73c7218",
        "3a474aa67fc31505740526dd249d96204c08bf79"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri May 01 00:28:27 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 01 00:28:27 2015 +0000"
      },
      "message": "am 3a474aa6: stagefright: support setting/getting playback/sync config in MediaSync\n\n* commit \u00273a474aa67fc31505740526dd249d96204c08bf79\u0027:\n  stagefright: support setting/getting playback/sync config in MediaSync\n"
    },
    {
      "commit": "3a474aa67fc31505740526dd249d96204c08bf79",
      "tree": "4db784ee57ffad037fa2ded86d0fd8b3a40173d5",
      "parents": [
        "a8df0b716bdfda1e10790e6f7297eeff83d2e52a"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Apr 24 17:10:07 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Apr 30 16:56:10 2015 -0700"
      },
      "message": "stagefright: support setting/getting playback/sync config in MediaSync\n\nBug: 18249558\nBug: 19666434\nBug: 20057497\nChange-Id: I5868b17423d7c20cfaf4a399f3eb67bfba440605\n"
    },
    {
      "commit": "7cc31f737508b7fd3205b9d8f971bffb71498740",
      "tree": "db73499694c42ed8abb81855e46d63e1286f170d",
      "parents": [
        "6fdbb3e4337722c9bdbc9a1399c1076e51c83d9a",
        "afc750aa3ac536067180f9714e34f626f8c981b3"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 29 19:55:24 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 29 19:55:24 2015 +0000"
      },
      "message": "am afc750aa: Merge \"Respect the record audio app op - media\" into mnc-dev\n\n* commit \u0027afc750aa3ac536067180f9714e34f626f8c981b3\u0027:\n  Respect the record audio app op - media\n"
    },
    {
      "commit": "be71aa29a3c86d2e01cd17839d2a72ab09a1bce5",
      "tree": "ca29cd10f78ff053761eb809c391019180836742",
      "parents": [
        "f62a067a5b21c840c915d36392679346ac0abfd7"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Apr 28 12:06:02 2015 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 29 19:06:41 2015 +0000"
      },
      "message": "Respect the record audio app op - media\n\nChange-Id: I3a97977b6e9a09355e2008f780d22d480fb7308b\n"
    },
    {
      "commit": "9c3e9c4ffd385abf12823cd3ffe0ee0bc688af76",
      "tree": "33960d50a8657be9dba4a2da3bb7a6358649ec05",
      "parents": [
        "56f3de5e5bf164b36521a3f90033df77e49cfd64",
        "31c81e9e4a468a448b387d5c905b4ac5c6a014fc"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Apr 28 05:28:13 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 28 05:28:13 2015 +0000"
      },
      "message": "am 31c81e9e: am b8111f83: Merge \"Fix potential double close in IMediaMetadataRetriever::setDataSource\"\n\n* commit \u002731c81e9e4a468a448b387d5c905b4ac5c6a014fc\u0027:\n  Fix potential double close in IMediaMetadataRetriever::setDataSource\n"
    },
    {
      "commit": "55203e2e29428c2c7bd830d731f5e6ed890d9a10",
      "tree": "5e1bea82d6c97dce4d28b1ae2a6c0995e62435e8",
      "parents": [
        "4491a4ab2d6991baa1ce15f24025aa24430d15d1"
      ],
      "author": {
        "name": "Taiju Tsuiki",
        "email": "tzik@google.com",
        "time": "Tue Apr 21 17:36:22 2015 +0900"
      },
      "committer": {
        "name": "Taiju Tsuiki",
        "email": "tzik@google.com",
        "time": "Tue Apr 21 21:12:06 2015 +0900"
      },
      "message": "Fix potential double close in IMediaMetadataRetriever::setDataSource\n\nIMediaMetadataRetriever::setDataSource(fd, offset, length) takes the ownership\nof |fd| on the direct invocation, and doesn\u0027t take the ownership on invocation\nfrom Binder. This is inconsintent to other similar methods like\nIMediaPlayer::setDataSource, and causes potential double close of |fd|.\n\nThis CL changes the caller and implementations to leave the ownership to make\nthem consistent.\nAlso, fixes a double close in IMediaPlayerService::setDataSource in an error\ncase.\n\nChange-Id: Id551a1e725c4392b0fe6b7293871212eb101c0a5\n"
    }
  ],
  "next": "5fde15db465775d5c607cf069752e2e075f8fc6d"
}
