)]}'
{
  "log": [
    {
      "commit": "a387a6cc1e97f26eb6847ed5cf3d2a6b4cf25cb0",
      "tree": "a2c6037d1b5fbdb925afa114d8dcd1f1b4d21aab",
      "parents": [
        "77994d70fe8d4805126361bbd0afbcac1cd1d2f0",
        "e5b9b6924007d6658bb1c24e958d16ec82e2a9c3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 11 20:54:17 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 11 20:54:17 2017 +0000"
      },
      "message": "Merge \"stagefright: put battery update under a separate lock\" into oc-dev"
    },
    {
      "commit": "e5b9b6924007d6658bb1c24e958d16ec82e2a9c3",
      "tree": "ad2ef695292ac0178821f89926fbc347f5be056c",
      "parents": [
        "bbdae2f58c3bd18d72be876c023b4bfb00e2f920"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 11 11:44:56 2017 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 11 11:49:22 2017 -0700"
      },
      "message": "stagefright: put battery update under a separate lock\n\nBattery update doesn\u0027t need to lock the main lock for\nmediaplayerservice. Battery update sometimes is called\nfrom lower level componenet (eg. StagefrightRecorder),\nlocking the main lock here has potential to deadlock.\n\nPuting the battery update in a separate class so that\nit\u0027s clear this is not to be mixed with the rest of\nthe mediaplayerservice states.\n\nbug: 38230347\nChange-Id: Idf5f26f2b07ad6303775763ce283dad0679843d5\n"
    },
    {
      "commit": "f370264dfa5237524a3535f5242a0c68cbbb13eb",
      "tree": "b0cab4fa2ae4243ce2a870c3d91e8124dc2d3510",
      "parents": [
        "549bd02a8421b0b53a1b5e8961a41cf551fce72d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 05 17:33:32 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 10 14:17:40 2017 -0700"
      },
      "message": "VolumeShaper: Fixes for updated Cts test\n\n1) Limit number of VolumeShapers that can be created.\n   a) 16 system VolumeShapers\n   b) 16 application/client VolumeShapers\n2) Return proper volume before VolumeShaper is started.\n3) Consistent xOffset definition used internally:\n   a) this is now always the position on the volumeshaper curve\n      which can go backwards if in REVERSE.\n   b) normalized time is always forward going and is scaled\n      to 0.f and 1.f depending on progress relative to\n      the curve\u0027s duration.\n4) Fix replace method.\n5) Add comments.\n\nTest: Use updated CTS VolumeShaperTest\nBug: 37536598\nChange-Id: I837ab2a481adc0abbd3f1338bfe2cb79831b11fa\n"
    },
    {
      "commit": "39399b6b08b4e9fd7eae50e58e93b07216ad697f",
      "tree": "04c78ddb6186a54c9e0118a0b8f5270cdfc9d720",
      "parents": [
        "94cfe137a105ec7db047e963e18483425e0d2272"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 21 15:07:45 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 26 10:45:25 2017 -0700"
      },
      "message": "VolumeShaper: Improve restore\n\nConsider whether VolumeShaper has been started or not when\nrestoring (position). If the VolumeShaper hasn\u0027t been started\nwe restore in that state.  If it has been started already,\nwe advance to the end assuming the duration has been played out.\n\nTest: CTS and headset / kill audioserver\nBug: 37536598\nChange-Id: I4b55dca6f6a859563fd20bad4c8f67d2c92321c0\n"
    },
    {
      "commit": "d4e9ca49a3863beeb0027f51e2331e4c5ec2402b",
      "tree": "06901a3ffc0c76fea0ad2d4a43a91ffc6ca5441e",
      "parents": [
        "f3134a01aa2574f8ab62f58f1a76b77029201196"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Mar 29 17:24:56 2017 -0700"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Mar 29 17:39:26 2017 -0700"
      },
      "message": "Remove dependency on persist.hal.binderization.\n\nTest: Manual use of Camera, Movies, Photos and YouTube apps.\n\nTest: With CtsMediaTestCases.apk installed,\nadb shell am instrument -e size small -w\n\u0027android.media.cts/android.support.test.runner.AndroidJUnitRunner\u0027\n\nBug: 34274385\nChange-Id: I5251fea337f33460d1f0db174cedc465822f2a47\n"
    },
    {
      "commit": "4ef88d7106c01f81109ee163cb6789073d80c6ae",
      "tree": "b851ebaf0b55c4d8174dd4a744352a3d4513beee",
      "parents": [
        "10cbff139360f3f642e0e3b3ccf2d463dbed22cf"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 21 19:47:53 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 24 21:05:58 2017 -0800"
      },
      "message": "VolumeShaper: Add AudioTrack restore\n\nMediaPlayer VolumeShaper can now be set before start().\n\nTest: CTS and Ducking\nBug: 31015569\nChange-Id: Idf63c167e164161b200e2467fbeb9409b3097dbe\n"
    },
    {
      "commit": "7e0c3c3e93cdf0d1fe59b82e8bc9c7c2fa678faf",
      "tree": "f84175c38a7eecfd339e89b2a8b908ece9a6e2ed",
      "parents": [
        "373580e1d51d3e89c16612998a10105fea09c3c5"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Feb 22 21:15:02 2017 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Feb 22 21:15:02 2017 -0800"
      },
      "message": "Revert \"OMX: don\u0027t respect binderization toggle.\"\n\nThis reverts commit 373580e1d51d3e89c16612998a10105fea09c3c5.\n"
    },
    {
      "commit": "373580e1d51d3e89c16612998a10105fea09c3c5",
      "tree": "b827b264c0c291c8f1e51a5f34185bab836b2c30",
      "parents": [
        "92a4bab4807d6a6736587e99094a10c420aa0a7d"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Feb 22 21:11:46 2017 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Feb 22 21:11:46 2017 -0800"
      },
      "message": "OMX: don\u0027t respect binderization toggle.\n\nTest: pass\nChange-Id: I495c71b0a39ae8423e109219f8f5e96812fe2aa1\n"
    },
    {
      "commit": "181fd9b5b64bab24bb49a34208f60a16e98488c5",
      "tree": "01f5f3e2cd59acbe4a3c7d92f09ff1f5418af206",
      "parents": [
        "42a5de6da0084fd430c70d58671559f71c738cf0"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Feb 16 15:53:03 2017 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Feb 17 03:06:13 2017 +0000"
      },
      "message": "stagefright: verbose logging for media connect/disconnect\n\nbug: 35364355\n\nChange-Id: I7b5f0aecf98733255cc27b091fea78298fa7e602\n"
    },
    {
      "commit": "9c47c97ecac581d66b6febafd156618247e86742",
      "tree": "c49b5394e42b293c0333754bf01c71d387227833",
      "parents": [
        "6ab6061131a10b7f38074c156fd529fa3719a32b"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Feb 08 04:09:38 2017 -0800"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Thu Feb 16 11:16:06 2017 -0800"
      },
      "message": "Enable full migration of OMX to Treble.\n\n1. Toggling between Treble and non-Treble OMX will now be controlled by\ntwo properties: \"persist.hal.binderization\" and\n\"persist.media.treble_omx\". (Before this CL, this was controlled by\n\"debug.treble_omx\".)\n- If persist.media.treble_omx is not set, it will assume a default value\nof -1.\n- If persist.media.treble_omx is -1, persist.hal.binderization will be\nused to determine whether OMX will be created as a Treble or non-Treble\nservice.\n- If persist.media.treble_omx is 1, OMX will be created as a Treble\nservice.\n- If persist.media.treble_omx has any other value, OMX will be created\nas a non-Treble service.\n- persist.media.treble_omx can be changed without rebooting, but it will\nonly take effect after media.codec and mediaserver processes are killed.\n\n2. Remove all dependencies on non-Treble service. This was not done for\nMediaCodec, MediaPlayerService::Client, MediaRecorderClient, stagefright\ncommand, and omx_tests command. OMXClient and media.codec process will\nnow pick the right version of OMX based on properties mentioned above.\nBefore this CL, media.codec would always present the non-Treble version\nof OMX regardless of the flag.\n\n3. Provide workarounds for some HIDL issues.\n- A sequence of nested binder and hwbinder calls require many threads to\nhandle. (b/35283480) The workaround is to increase the number of threads\nin the thread pool of media.codec process.\n- android.hidl.base@1.0::IBase::unlinkToDeath takes a strong pointer\ninstead of a weak pointer. (b/35233970) This causes an infinite\nrecursion in the destructor of ServiceDeathNotifier in\nMediaPlayerService::Client and MediaRecorderClient. The workaround moves\ncalls to unlinkToDeath() outside of the destructor.\n\nTest: Recorded and played videos with Camera app. Ran stagefright and\nomx_tests commands.\nBug: 31399200\n\nChange-Id: Id1940ed982838e10bf10fe8ed5b7bb912a5a2d3a\n"
    },
    {
      "commit": "cefac14261a32fb856b0d1ab31541787112e306e",
      "tree": "d6fb3a4890929e05a5ffccc2d09c0b9da3d6bddc",
      "parents": [
        "2f77a2229be73b222098c45aed73728842667e12"
      ],
      "author": {
        "name": "Hassan Shojania",
        "email": "shojania@google.com",
        "time": "Mon Feb 06 21:02:02 2017 -0800"
      },
      "committer": {
        "name": "Hassan Shojania",
        "email": "shojania@google.com",
        "time": "Wed Feb 15 18:15:37 2017 -0800"
      },
      "message": "Modular DRM for MediaPlayer\n\nBug:  34559906\nTest: Manual through the test app\n\nChange-Id: I286f9ff199c34563b7b8643de725f8d1534ea06c\n"
    },
    {
      "commit": "9fc8b5cd4a64ef07e84c69112461324d5c13a0b0",
      "tree": "2d058e73f09f1822108daad51948a34c420634e3",
      "parents": [
        "ed1abbfc73d4ade0ef08239fc56ac66d70a00a92"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 24 13:36:48 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 13 14:31:46 2017 -0800"
      },
      "message": "VolumeShaper: Initial implementation\n\nThe VolumeShaper is used to apply a volume\nenvelope to an AudioTrack or a MediaPlayer.\n\nTest: CTS\nBug: 30920125\nBug: 31015569\nChange-Id: I42e2f13bd6879299dc780e60d143c2d465483a44\n"
    },
    {
      "commit": "6cb337596796996c3095dc8017eb36beba00dab2",
      "tree": "fca08d18e556463be5f28f947af1225ca4e9d49d",
      "parents": [
        "d7ae0b8529d0b08496392c85ae4d00753e28882e"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Mon Jun 22 14:16:42 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jan 31 17:36:16 2017 -0800"
      },
      "message": "libmediaplayerservice:Fix deadlock on gapless start failure\n\nReturn error back to the application if start of next MediaPlayer\ninstance as part of gapless transition fails.\nTest: compiles\nauthored-by: Ashish Jain \u003cashishj@codeaurora.org\u003e\nChange-Id: I77c570074c7c98c996122e275161ba88298e56fc\n(cherry picked from commit 9eadf496fa84603cf3ec5889990b79db8e378400)\n"
    },
    {
      "commit": "dc6f340e537ce511ea1d2f8ce7dc1c4ed231f6a6",
      "tree": "45fc471ff4d3c46d91281d75b2c049bf73104748",
      "parents": [
        "c62b65fd690a585c674caa6e79559bb847e5b3bd"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Jan 09 15:04:18 2017 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Tue Jan 17 10:49:33 2017 -0800"
      },
      "message": "mediaplayer: add buffering settings API\n\nTest: compiles, checked that params is passed all the way to source.\nBug:32524218\nChange-Id: I637d1ab09f94a3830a33a39e7e9f1b3efb22357f\n"
    },
    {
      "commit": "9c8086fa924e8b570fa66c3ef3bce0ec24a16031",
      "tree": "a54e6095684f7a247ce54ea791f6d7230c7ff81d",
      "parents": [
        "e158da59b3b525cf271968bec3967414b21159fa",
        "1afd0983fdca07cd55df8dca1fa05b55c45063f4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 10 00:27:34 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 10 00:27:35 2016 +0000"
      },
      "message": "Merge \"MediaPlayer: Use uid_t for uids\""
    },
    {
      "commit": "d399e7e6065aa310e025ab633f633d5b4831a358",
      "tree": "161b8ee63095e28937e041299ae66a650197f265",
      "parents": [
        "48d8020342a4de6b0b925328ddbdfe34f22253a3"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Oct 26 15:49:11 2016 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Nov 23 10:50:24 2016 -0800"
      },
      "message": "BufferingSettings: define internal BufferingSettings API.\n\nTest: compiles\nBug: 32524218\nChange-Id: I9a95b2fdfa497179305e031aac69e5a987614dbb\n"
    },
    {
      "commit": "c5de09127e9e0d5df7aa587be317e1487d793245",
      "tree": "f27828fe26714b003613ef894579539228dfd134",
      "parents": [
        "b59c2fb19f03bba8a558be71848bafa6a0ad3cbc"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Nov 18 10:22:14 2016 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Fri Nov 18 15:41:24 2016 -0800"
      },
      "message": "mediaplayer: support same seek mode as MediaMetadataRetriever.\n\nTest: manually force 4 seek modes in mediaplayer.\nBug: 32557491\nChange-Id: Iea4f6dbfc224fc6da39624300c6d872b79142f07\n"
    },
    {
      "commit": "1afd0983fdca07cd55df8dca1fa05b55c45063f4",
      "tree": "8b18742499e87de49231f89af89aa7a2e8d48364",
      "parents": [
        "1f12a8ad958344c50733b948628ffa06db9c5bc6"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 08 16:13:44 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 08 16:44:22 2016 -0800"
      },
      "message": "MediaPlayer: Use uid_t for uids\n\nTest: Power manager shows correct uids\nBug: 32713790\nChange-Id: Iddf8de5705319ec17c68787efc11e342779660c5\n"
    },
    {
      "commit": "67b6dccfd7b59efa772a3c2c553e7382c8f9f24c",
      "tree": "d9d03e901bf841099593e0d2b3edb32aa23ac12b",
      "parents": [
        "2aa19a96710eaaaf6679453f0278d393fd768de5"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Oct 31 17:01:37 2016 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Oct 31 17:01:37 2016 -0700"
      },
      "message": "mediaplayer: add precise argument to seek function\n\nTest: compiles\nBug: 32557491\nChange-Id: Id8c3a938edd5a0b34a9b33e86a4dbff32cf10c98\n"
    },
    {
      "commit": "5d313803bdd61d59f28e518e7a793f33832f1901",
      "tree": "e27874f7602aa13bdd8a94be74c573271473c9ac",
      "parents": [
        "8922c251072bf338cd22b237a25ef55ba41cf9b8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 10 15:09:39 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Oct 11 12:59:27 2016 -0700"
      },
      "message": "AudioTrack: Advance timestamp time during pause\n\nUpdate MediaPlayer code to match.\n\nThis will change the behavior on the AudioTrack Java side,\nbut is within the API and should make timestamp handling easier.\n\nTest: Photos app with pause and play.\nBug: 30502030\nChange-Id: I0e9129ce6af5b920ad71e63ad0c205de7561acf2\n"
    },
    {
      "commit": "1b5a7ee3fdc33ee584a88580171fbad154e10f5d",
      "tree": "1833a3bfa57e6fa1dc750365509c457ef92a86cf",
      "parents": [
        "ad111520f0167c4a0bf6a37fc025e2523c313258"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Sep 30 13:54:30 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Sep 30 13:56:29 2016 -0700"
      },
      "message": "Check service binders before dereferencing them\n\nBug: 31830499\nTest: forced binder to NULL and made sure it failed gracefully\nChange-Id: I2c0377fbed9e489d7024da44a6092bec6de1fa3b\n"
    },
    {
      "commit": "9cf3cee03ea010b4ac8c92e4474d41a40a1d5526",
      "tree": "fefc13f94fbebc4788592defc5547b0c5c041aa4",
      "parents": [
        "9b7a8f94619b6847db7dc37deb5918b6f3439a43",
        "4024622cb2859a2a7a661113efa44605443bbf58"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Aug 31 00:37:29 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 00:37:29 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 am: 22fdb93234\nam: 4024622cb2\n\nChange-Id: Ibfa275c6655de05e61b31da8616ad36d3a209f91\n"
    },
    {
      "commit": "4024622cb2859a2a7a661113efa44605443bbf58",
      "tree": "e94e89ef0f63544ca37b403c14861f46b1fc6c22",
      "parents": [
        "04fdc1579006533a634e7071b02976652b747382",
        "22fdb93234e1e5d8c384a75c05e01ee92e20e61a"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Aug 31 00:34:29 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 31 00:34:29 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: Ica982aa0e826555b5a3624f8bcc205d2d9f255eb\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": "74b56a8e0d5c4aabd7df4d79589f93b23d8fae89",
      "tree": "251c3e91620288d90df91b6c1d507e5a34d954e6",
      "parents": [
        "45b663eae82282098d8c21c792a06c4f9f61da31",
        "168e16423f7bfa0387543df52697814ef160cce9"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon Aug 22 19:42:26 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 22 19:42:26 2016 +0000"
      },
      "message": "resolve merge conflicts of 77da968 to nyc-dev-plus-aosp\nam: 168e16423f\n\nChange-Id: I72e14cf6b3affce16e910218196609aee4ff9845\n"
    },
    {
      "commit": "168e16423f7bfa0387543df52697814ef160cce9",
      "tree": "5b7a2e5385e7d0b9d1e59335dd32ffc3615246c5",
      "parents": [
        "776229a34a5f6f2c8dd2d67987624cacb362cbb7",
        "77da9683de33028a0b277667a0698e8eb1c8c7bc"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon Aug 22 12:27:15 2016 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon Aug 22 12:27:34 2016 -0700"
      },
      "message": "resolve merge conflicts of 77da968 to nyc-dev-plus-aosp\n\nChange-Id: I123956fe0f90e7fc7712cf5a99b29add94d15564\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": "5ca8f32280377dd923e72c3c6bd3994217461b8b",
      "tree": "b5146ce7885539d8b002d3270346f574e3965711",
      "parents": [
        "7aeb8c8d4437eb8f45be3ad3828764795e14ad4c",
        "63ef5a38f82d22c1f97922fe490a1fd336566d5c"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 23:53:01 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 10 23:53:01 2016 +0000"
      },
      "message": "resolve merge conflicts of fd923e7 to stage-aosp-master am: df5d9246f9\nam: 63ef5a38f8\n\nChange-Id: I516a43c5e56323e99ad7a8ca2e4811b77c9704f4\n"
    },
    {
      "commit": "63ef5a38f82d22c1f97922fe490a1fd336566d5c",
      "tree": "e84028568dbcede5ffdaf58be20c6cc080028edd",
      "parents": [
        "b8750e114b6fd99768c45233d4b2ffb2b198f5d1",
        "df5d9246f9607b1c2f8b134c46a05af06e206da3"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 23:50:01 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 10 23:50:01 2016 +0000"
      },
      "message": "resolve merge conflicts of fd923e7 to stage-aosp-master\nam: df5d9246f9\n\nChange-Id: I20767244fef48ad42334c5131e2d402f75bb7327\n"
    },
    {
      "commit": "df5d9246f9607b1c2f8b134c46a05af06e206da3",
      "tree": "7cd9fcb42c86c8cfe950db239e21e8b5ece98369",
      "parents": [
        "7ad2854adc0abe8dd7909a6ed401107ad09bc3d2",
        "fd923e7fe2779bcd69d79471b8c30c8b98918f62"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 15:40:39 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 16:10:32 2016 -0700"
      },
      "message": "resolve merge conflicts of fd923e7 to stage-aosp-master\n\nChange-Id: I75b44b89bae41197a1fd68362d20b8ba2b4dd192\n"
    },
    {
      "commit": "36d0ca16024820df9a12903d2ac443fabcc180bc",
      "tree": "51e8f285ae66ad7cb922caeb7ba8d5f1d20367e3",
      "parents": [
        "67fbddfdc2cafd63c83d3bb55a2451d4c26f546d"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 09 14:31:32 2016 -0700"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 17:56:35 2016 +0000"
      },
      "message": "Fix clang-tidy warnings in audio and playerservice.\n\n* Add explicit keyword to conversion constructors.\nBug: 28341362\n* Use const reference type for read-only parameters.\nBug: 30407689\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I265f3b094e08d5705b506b3fbba51439c134af84\nMerged-In: I265f3b094e08d5705b506b3fbba51439c134af84\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": "55363176be0ad1fe75d97276547929b4ca971f56",
      "tree": "3fe580b201bb18d7e81792a8a98051d372c8078a",
      "parents": [
        "c25621f0e52dbf78159b5aa28b8c19ed6a7a053b",
        "813ac23bee5b3519c2b7f410a2b24b3a94075b22"
      ],
      "author": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Wed Feb 17 09:50:43 2016 -0800"
      },
      "committer": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Wed Feb 17 09:50:43 2016 -0800"
      },
      "message": "Merge commit \u0027813ac23bee5b3519c2b7f410a2b24b3a94075b22\u0027 into HEAD\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": "01854c0129245d034bd99d64817dce06df20c5a6",
      "tree": "4cb8297a24a1a31870bb0845dfd15bb4e8c1e04b",
      "parents": [
        "a320c7b253afd276745b7e4e557ce7811b2035e7"
      ],
      "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": "Tue Feb 09 11:25:04 2016 -0800"
      },
      "message": "stagefright: Remove deprecated AwesomePlayer\n\nBug: 17108024\nChange-Id: Ia721bdfa87b07612ad8e76cbdcda6de2b8ce2a74\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"
    }
  ],
  "next": "179652ee2a508361df1aa18e99000373886f0816"
}
