)]}'
{
  "log": [
    {
      "commit": "0b86e57b61b46652585008679e48b6961b40122d",
      "tree": "1bea7921ede728cd7589235175d0d1a8a3b78de6",
      "parents": [
        "c1c9b13223230f8d0e8bddd41e63c7046b7a98a5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 07 18:56:27 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 02:02:39 2017 +0000"
      },
      "message": "audio: Fix read of uninitialized memory\n\nFollow-up to fb12e20e426bc6bcff06e39fba45a931cf787040.\n\nBug: 62425341\nTest: m\nTest: Device boots, com.android.phone doesn\u0027t crash\nChange-Id: Ib54c7efae88cb0bff0f92e1cf1bd20a22fdcbdba\n"
    },
    {
      "commit": "5573544e1052e3cff3f98482a6258a3cba47372a",
      "tree": "7dd23312f7481754efd13f9e972d92bc6d3d1d53",
      "parents": [
        "e11c6f1082b3ff9ea63055c870bdc76fb57bd9d8",
        "fb12e20e426bc6bcff06e39fba45a931cf787040"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 01 19:27:18 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 01 19:27:20 2017 +0000"
      },
      "message": "Merge \"audio: Output latency update in Audio Track\""
    },
    {
      "commit": "fb12e20e426bc6bcff06e39fba45a931cf787040",
      "tree": "aa6b41e2de8d8b22fa40659e1317e103eb5f8107",
      "parents": [
        "c77b3bb4e11dd53028616454744b783a84f219de"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Thu Apr 06 12:24:42 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 30 13:51:48 2017 -0700"
      },
      "message": "audio: Output latency update in Audio Track\n\nAudioTrack needs to query latency from the output descriptor each\ntime it uses mAfLatency to calculate timestamp or return the track\nlatency. Until now, the output descriptor latency was queried and\nstored when a track is created. On a device switch, IO descriptors\ntable saved in AudioSystem is updated to reflected the latest\nlatency values.  Unless a device switch lead to a track teardown,\nAudioTrack will be unaware of the latest latency value. Therefore\nexplicitly check the latest mAfLatency value on each getTimeStamp\ncall.\n\nTest: Podkicker 2.2x, Photos 240fps and BT\nBug: 35075600\nauthored-by: Aniket Kumar Lata \u003calata@codeaurora.org\u003e\nChange-Id: I06282182364703574a7d66d2b5cd1301679dfade\n"
    },
    {
      "commit": "ef44fb4115270883da829fea91174c8cc003b777",
      "tree": "9fde4511982c15bfb11c30cff327eb50dd0de0e1",
      "parents": [
        "159db446a230334d88e5670c8ccd3489b00fdff6",
        "0bbea62ed44e8d5cc2419b2861ea0e58d81a4917"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 30 19:37:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 30 19:37:52 2017 +0000"
      },
      "message": "aaudio: fix device switch detection in legacy path am: fb00fc77f5\nam: 0bbea62ed4\n\nChange-Id: I80dfc949c206c1572f867f3ffedb6ff556a7b8f2\n"
    },
    {
      "commit": "fb00fc77f59ed5ebec4d38bac666e6521b6c1de0",
      "tree": "cf7fd5f373a5a8681d7fe4ee151367ccf3f8c9f2",
      "parents": [
        "d08f04f33b80c37bd3889f461846d59f70e726c7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 25 18:17:12 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 26 18:34:13 2017 -0700"
      },
      "message": "aaudio: fix device switch detection in legacy path\n\nImplement device switch detection on legacy path (AudioTrack and\nAudioRecord) based on audio routing callbacks forcing the stream state\nto disconnected.\n\nBug: 33355262\nBug: 62090113\nTest: tested with write_sine and input_monitor command line tools.\nChange-Id: I9e0421fee233964b1bf318acb640569196a00f13\n"
    },
    {
      "commit": "34d606c66ffcd536daccf415132facd3cbfe1a8f",
      "tree": "a04c906500e93f36fb005193716cb58cb2025790",
      "parents": [
        "4cd6042ced43e41fbca6f5095612209e3dd16005",
        "75f79038715b4b1cf28e0457abfa84ccd17bb57e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 25 16:11:43 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 25 16:11:45 2017 +0000"
      },
      "message": "Merge \"Add TODOs for checking return value of wait\""
    },
    {
      "commit": "47d5517331f41f8583f4e47752132de96e14a96f",
      "tree": "b70ed1acc8bfb93ef9dc0514ace6b0d6fb3ac991",
      "parents": [
        "d0ebc4ce66090107dbda021cb395f1d3c11b9525"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 11:19:30 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 13:36:15 2017 -0700"
      },
      "message": "Add comments explaining about SCHED_FIFO\n\nTest: builds OK\nChange-Id: I7fa39defb081c27eb32abb241c0aa2a210744954\n"
    },
    {
      "commit": "75f79038715b4b1cf28e0457abfa84ccd17bb57e",
      "tree": "cc7badd7a19da2a8e66c087c54e3637f8593e05b",
      "parents": [
        "d0ebc4ce66090107dbda021cb395f1d3c11b9525"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 11:22:44 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 11:28:22 2017 -0700"
      },
      "message": "Add TODOs for checking return value of wait\n\nTest: builds OK\nChange-Id: I750b73de54deeccbae846189fdf385e636d9e4cd\n"
    },
    {
      "commit": "2f35206b77dd7d8a8c761e0a81ea327c10787036",
      "tree": "314fad5639b5c762be3ec16f1b685056678edf44",
      "parents": [
        "dc4272365d1c875471097db907f659731c36b53c",
        "d906ad023d3608925c4afda5c3b70a24667db758"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 11 05:54:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 11 05:54:44 2017 +0000"
      },
      "message": "Merge \"VolumeShaper: Fixes for updated Cts test\" into oc-dev am: 2d12b8e367\nam: d906ad023d\n\nChange-Id: I27856718a4914e396a7c387da7b4f4e4b7c245e6\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": "296ee17ce39af4fa3173bbf21fbc719db4b8f329",
      "tree": "7fa4fd43ccce6f6fb95f7def38bfff2d8447fdac",
      "parents": [
        "abcced36e70ee6659d4e1896fb0ae3fb0880b859",
        "4e728d4bbc683a50096f052a31c8eb5cbb1e100e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 02 01:19:04 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 02 01:19:06 2017 +0000"
      },
      "message": "Merge \"ALOGW when failing to open audio track because of playback rate\""
    },
    {
      "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": "4e728d4bbc683a50096f052a31c8eb5cbb1e100e",
      "tree": "2597097d30f48f7f657d0dbce14afac7b661aee3",
      "parents": [
        "399565a0797432001ee01524e3ec8e1b856ccccd"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Apr 06 18:00:40 2017 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Apr 24 22:13:12 2017 +0000"
      },
      "message": "ALOGW when failing to open audio track because of playback rate\n\nThis will help debuging errors linked the associated bug.\n\nTest: compile\n\nBug: 36509278\nChange-Id: I3034a8a40d20cee15dc394baf0743be3d996a155\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "6d8018f0b7be9deec6b0acab10a0dca6e91d0fb8",
      "tree": "2ce104a9e93cd8604e6624517a818ef8ddedb241",
      "parents": [
        "eb12e8bd16208fdd3017e2d99fee721993efdaa4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 13:05:56 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 07 15:30:08 2017 +0000"
      },
      "message": "Improve audio logs and dumpsys media.audio_flinger\n\nInclude mFrameCount in shared memory corrupt error log.\n\nFix typo in log for primary audio interface.\n\nInclude the new server frame count in logs for fast tracks.\n\nAlways log when fast is successful for output tracks, as it helpful\n  (was already there for input).\n\nCleanup dumpsys for threads.\n\nBug: 37153050\nTest: builds OK, and logs contain more information\nChange-Id: I2b5b4d700e8eb7c261a3125fb03ddc00bf08537e\n(cherry picked from commit 1bfe09a0b1755a79abd32b41c0dd433b88fc260c)\n"
    },
    {
      "commit": "1bfe09a0b1755a79abd32b41c0dd433b88fc260c",
      "tree": "eec723f657fc89b21f3cfc91b27c68eceac4add7",
      "parents": [
        "a29cd562f6f5839cce7e3be2e547d19c2d27f15d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 13:05:56 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 29 11:39:04 2017 -0700"
      },
      "message": "Improve audio logs and dumpsys media.audio_flinger\n\nInclude mFrameCount in shared memory corrupt error log.\n\nFix typo in log for primary audio interface.\n\nInclude the new server frame count in logs for fast tracks.\n\nAlways log when fast is successful for output tracks, as it helpful\n  (was already there for input).\n\nCleanup dumpsys for threads.\n\nTest: builds OK, and logs contain more information\nChange-Id: I2b5b4d700e8eb7c261a3125fb03ddc00bf08537e\n"
    },
    {
      "commit": "d3bb645f0b7f567b033b8664499d685f8ec10628",
      "tree": "1f1093b9594df4691cc99a2e2c81bc67ea0de136",
      "parents": [
        "0012417ddc1320c6df79258266da1e869036b211"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 05 18:14:37 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 13 16:36:17 2017 +0000"
      },
      "message": "Re-format to decrease the maximum line length of files to 100 characters\n\nTest: compiles OK\nChange-Id: Ibe663032cd390ed2bcca6dc921d47732e6e15e21\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": "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": "fff204c192f7e16c635a79f6a85786afb8522a3d",
      "tree": "534000ce7be1b2e04dedc0899d1aaa9f7dcbe499",
      "parents": [
        "35f537fc5aa479caa6fd9055cdc63989d029e8a3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 12 19:09:55 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 18 11:46:54 2017 -0800"
      },
      "message": "AudioTrack: Control deep buffer from AudioAttributes\n\nTest: AudioTrack CTS test, Play Movies\nBug: 30687201\nChange-Id: I6a46a05dbf3fd61c8d47dade5b4baee69b923195\n"
    },
    {
      "commit": "20b9ef0b55c9150ae11057ab997ae61be2d496ef",
      "tree": "21bd57d748dd47600b1e62bfb18d4acb08e15438",
      "parents": [
        "8526d86ab12284135ed4ca27aeb816371c10c0e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 05 11:03:16 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 12 12:29:41 2016 -0800"
      },
      "message": "Add unique audio port IDs to AudioTrack and AudioRecord\n\nThis will allow to track activity at the track level instead of\nat audio session level as only possible with current implementation.\n\nAudioTracks and AudioRecords will receive a unique audio port ID the\nfirst time they register to audio policy with\ngetOutputForAttr()/getInputForAttr() and keep this ID for their\nlifetime.\n\nThis CL is the first partial change and just updates the\naudio policy and audio flinger APIs used at track creation time.\n\nTest: basic regression test of audio playback and capture use cases\n\nChange-Id: I8d612e67738e120494f61e3f7c60bfd0b2c6a329\n"
    },
    {
      "commit": "2148bf0e79c436b8764b9edc4c8f2730cce98a32",
      "tree": "8d380e3f69e99d4ebf76c08c51a5833dc0eca2ff",
      "parents": [
        "b54cab90d4bf84745a57232080d72a50c3b731da"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 28 19:01:02 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 01 17:36:41 2016 -0800"
      },
      "message": "Log audio information to ensure complete delivery\n\nTest: Audio playback\nBug: 30572472\nChange-Id: Ibad6fc202692cd3480ae726627252afdead083f3\n"
    },
    {
      "commit": "1f12a8ad958344c50733b948628ffa06db9c5bc6",
      "tree": "d9ce12941c1461657bf32779f6d18605defd5cf1",
      "parents": [
        "062bfceaefab29f0f71db7d5a248b3f5f0572b6a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 07 16:10:30 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 08 16:43:39 2016 -0800"
      },
      "message": "Audio: Use uid_t for uids\n\nTest: Power manager shows correct uids for audio\nBug: 32713790\nChange-Id: If5337e17283268f74dc0f00cc66ece9153d680ef\n"
    },
    {
      "commit": "538ec5e04f389cba637b030757be317fcb8677a8",
      "tree": "c9c576057efe1f6c0bdf1a4cbf6b58dce68f5e3f",
      "parents": [
        "e085c1072f017d4910f7e49741f72e8a722b8892"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Nov 02 13:21:22 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 04 12:14:36 2016 -0700"
      },
      "message": "Split libmedia into libmedia and libaudioclient\n\nThis makes it so audioserver doesn\u0027t need to link against the entire libmedia,\nwhich has dependencies on camera, ICU, OpenGL and other things that aren\u0027t\nneeded for audio.\n\nTest: build/boot\n\nChange-Id: I99ba1a3dc3b33ca9b3abd98e7519dbf228ee62af\n"
    },
    {
      "commit": "65ffdfc7e92f9900d72bf6dc0b7f4e1231d4da03",
      "tree": "6c562cf16c42d8718a1a70ea25ae6a243b620e85",
      "parents": [
        "4be3b831904640ca853845b3ea31f985774047de"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 10 15:52:11 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Oct 14 15:10:33 2016 -0700"
      },
      "message": "AudioTrack: Add hasStarted method\n\nBest guess determination whether the AudioTrack\nhas started playing.\n\nTest: Photos app with pause and play.\nBug: 30502030\nChange-Id: I03c0ae78037ec05f3025ed009ef67bd376b176ba\n"
    },
    {
      "commit": "4be3b831904640ca853845b3ea31f985774047de",
      "tree": "1f0bb768d7e5f32af6bf57572f39d0c97421022f",
      "parents": [
        "52dd2e30b204949353c2dee0b1f1712677bbda43"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 13 17:51:43 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Oct 14 14:51:25 2016 -0700"
      },
      "message": "AudioTrack: Clear stream end flag on start\n\nImproves readability of audioflinger dumpsys and allows\nproper detection when the AudioTrack has finally stopped.\n\nTest: NuPlayer with video clip in loop mode.\nBug: 32180119\nChange-Id: I625efffdc2f589f4869ea76605b3ed90afce7e87\n"
    },
    {
      "commit": "52dd2e30b204949353c2dee0b1f1712677bbda43",
      "tree": "032af23d4d64db820ace87b6293369fafff536bc",
      "parents": [
        "f9125c36b47a3bb510b8317e64d70f01fd65b28f",
        "5d313803bdd61d59f28e518e7a793f33832f1901"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 13 19:36:48 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 13 19:36:48 2016 +0000"
      },
      "message": "Merge \"AudioTrack: Advance timestamp time during pause\""
    },
    {
      "commit": "f20a4e9f84bbb8748f28ca326caeba7a9947a369",
      "tree": "835aabaa4dadc25764381edd7048567bdc1dc2ab",
      "parents": [
        "8922c251072bf338cd22b237a25ef55ba41cf9b8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 15 19:10:34 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 13 11:00:12 2016 -0700"
      },
      "message": "AudioTrack: Fix timestamp restore\n\nTest: Photos with BT on and off.\nBug: 29946998\nChange-Id: I729590451126e180ee85e1ab3dee2a0b24f0572d\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": "3c901299c6c0a8a7f52b2a2895cff80886777ada",
      "tree": "d2cbfda50058af0f380308ff2a47058cb0eb64a9",
      "parents": [
        "8acb47a973c0b0eecdc36f0bccd513a11be9ccd7",
        "b2544bcc983661420fedd1d92944c556d721fe66"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 23 22:54:22 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 23 22:54:22 2016 +0000"
      },
      "message": "sched_getscheduler may include SCHED_RESET_ON_FORK am: 8255ba7b40 am: f4da60ebc2\nam: b2544bcc98\n\nChange-Id: I8e28c76bf3936f67f4a503b0d7cf438c19c8e472\n"
    },
    {
      "commit": "8255ba7b40774b2b8868482f1a302db3ae98e905",
      "tree": "abba9d2c478e9add3fc31ce7836d8a4ce00011b5",
      "parents": [
        "2180a83292987f2289650ff0853e031cd3c796ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 23 13:54:23 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 23 14:06:33 2016 -0700"
      },
      "message": "sched_getscheduler may include SCHED_RESET_ON_FORK\n\nThe SCHED_RESET_ON_FORK flag is visible in the policy value returned by sched_getscheduler()\n\nBug: 31020591\nChange-Id: I5243fadce2a5f629fa2dc61888d8aa9aff32d9ca\n"
    },
    {
      "commit": "0e0c9f059b5ec9136367203880757a9b7758e86f",
      "tree": "18de23b2867e5c8ccd9898f029853b148c45b396",
      "parents": [
        "1c1fb278beee64ed090c2257e7fd2c7406730751",
        "0a2f151f37c715078351ae0be99b0c4dbabc2a23"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 26 15:02:04 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 26 15:02:04 2016 +0000"
      },
      "message": "Fix AudioRecord::read and AudioTrack::write return\nam: 0a2f151f37\n\nChange-Id: I9926f0046a6e2f550be852faf4b4d08d8c444260\n"
    },
    {
      "commit": "0a2f151f37c715078351ae0be99b0c4dbabc2a23",
      "tree": "837f0234dd3a5836512f85971f72072a59167afe",
      "parents": [
        "00bbc1d5ee0ad847ed07a273d103e2996862e98b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 22 08:06:37 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 22 08:06:37 2016 -0700"
      },
      "message": "Fix AudioRecord::read and AudioTrack::write return\n\nvalue to only be one of the documented status codes.\n\nBug: 30158307\nChange-Id: If1ba16ce2ee10ba5ccb1674003a4b8fa086f27bc\n"
    },
    {
      "commit": "b18af48e3c1e64aa99954eaf04ed857b61a135aa",
      "tree": "4fb5948ecba8245bc477d6d7efc0299224f72d3f",
      "parents": [
        "d34b3d544b3da2f699526f38621b4bb2d4142561",
        "aeffd19df0a23cfcd09ef81ba136ce02ec76a37a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 22 20:05:47 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 22 20:05:47 2016 +0000"
      },
      "message": "Merge \\\\\"Limit cached timestamp use if HW fails to provide them\\\\\" into nyc-dev am: 0256917c88\nam: aeffd19df0\n\nChange-Id: I6f4c59ef161ef67395adecba15592868acc1b545\n"
    },
    {
      "commit": "aeffd19df0a23cfcd09ef81ba136ce02ec76a37a",
      "tree": "600c99a510e2b57ed6a42dd333e0144029698e7e",
      "parents": [
        "311b46f57e43c62615d0abf78546ede5491b5db0",
        "0256917c88690e07604f725872321cbe2870ed8b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 22 20:00:59 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 22 20:00:59 2016 +0000"
      },
      "message": "Merge \\\"Limit cached timestamp use if HW fails to provide them\\\" into nyc-dev\nam: 0256917c88\n\nChange-Id: I1186034edf91d3b136b2571fa0acadc9b21de891\n"
    },
    {
      "commit": "07eee80b3422c0304491f24bbc415deb0badbefc",
      "tree": "9fca1712dc24e9e7ca66ea8c394c6bbf6c5c2946",
      "parents": [
        "37a9de26f6403955a19b81ce5ffe87998e9bf46e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jun 21 16:47:16 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 22 18:37:59 2016 +0000"
      },
      "message": "Limit cached timestamp use if HW fails to provide them\n\nOn some devices, if the HDMI cable is disconnected during use,\ncached timestamp info can become very old.\n\nBug: 29423451\nChange-Id: Ieecf5e98bad14d00b4f5f14b032c2cf66ae94ceb\n"
    },
    {
      "commit": "b70868bb337f0b12f993494f4d110979a33ddd24",
      "tree": "bde43cc6ef3f51829fd1875013e0191ffa2b4915",
      "parents": [
        "fa877e53915259d8288fa6cf16d9ebe68d4a806d",
        "2f8e63b5be5b0160302cffe1f1f18e560d31d3e7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jun 04 01:21:52 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jun 04 01:21:52 2016 +0000"
      },
      "message": "Merge \"Add AudioTrack and AudioRecord flag checks\" into nyc-mr1-dev\nam: 2f8e63b5be\n\n* commit \u00272f8e63b5be5b0160302cffe1f1f18e560d31d3e7\u0027:\n  Add AudioTrack and AudioRecord flag checks\n\nChange-Id: If9043721f4763ce0f4db96c63595f92c5ba22556\n"
    },
    {
      "commit": "050677873c10d4da308ac222f8533c96cca3207e",
      "tree": "fa2d3e91f74c5d838330f52cf158be8c774eec7f",
      "parents": [
        "53c87d5bb06a168290575099378bc7bfe1dca02b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 01 18:27:28 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 03 16:46:38 2016 -0700"
      },
      "message": "Add AudioTrack and AudioRecord flag checks\n\nVerify that the requested flags are compatible with the input\nor output flags when creating and AudioRecord or AudioTrack\n\nGet rid of IAudioFlinger::track_flags_t which was redundant\nwith audio_input_flags_t and audio_output_flags_t.\n\nChange-Id: I0dd9232f857b2737e99a8c668806e45bce09cdbd\n"
    },
    {
      "commit": "4c39b9c74224782a6ceb299554f4abc9e1cf5733",
      "tree": "36615ae0cfaa565987875be2995d528d5445317f",
      "parents": [
        "f69feffd84bc736a8cdee7902bfcf988409af7c1",
        "9764d5292bcd936ff2442de69371913f88489189"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri May 27 11:38:26 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri May 27 11:38:26 2016 -0700"
      },
      "message": "resolve merge conflicts of 9764d52 to nyc-dev-plus-aosp\n\nChange-Id: I52d001d9dff4b250769e5fa59f9aea461b435193\n"
    },
    {
      "commit": "69488c4ef115c9de52c85f4fcae27c7774720298",
      "tree": "9f1be0c3a13dec3768aa3e314f346afa7aa96ff0",
      "parents": [
        "f3d9908a888203e7e70b8c2d43ee741a95e154ed"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 16 18:43:33 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 24 18:59:42 2016 -0700"
      },
      "message": "AudioTrack: Fix timestamp startup condition\n\nSuppress timestamps without valid kernel information or\na server update.\n\nUpdate timing of server timestamp location to better indicate\nwhen the server pull occurs.\n\nUpdate write timing logic to suppress unneeded time calls\nand to ensure proper throttling.\n\nBug: 28771691\nChange-Id: I2cd25dad638ca1d0b1355d87d175d908f3bddb26\n"
    },
    {
      "commit": "9ea77cdba8c422940adb57a790b44ac04fe0353f",
      "tree": "1e7c588ce1add16e6991eaae918d38414b17d879",
      "parents": [
        "f0f4f1e494a80ce300a68cfce0e1dc627c09c29a"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Apr 06 17:07:48 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 24 00:48:20 2016 +0000"
      },
      "message": "audioflinger: Pass pid of process creating track or opening record\n\nAudioFlinger allocates a Client heap for each unique pid.\nIf two applications use mediaplayer APIs, the same Client heap\nis reused as the pid used is not the application pid but that\nof mediaserver. With this change, the pid of the application\npid is used to decide the heap to be used.\n\nBug: 23525542\nBug: 28772898\nChange-Id: I31a695b0b321eff6e2aca80c3bc4aeb3e1cd9ac7\n"
    },
    {
      "commit": "d6baf6f91afc194669fbffda83117ac2059eb04c",
      "tree": "f717fe8ce0f3c6e8369b14256b89de5a198e4329",
      "parents": [
        "0603c5dfc34923095218307674a60429bfa5873a"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 17 15:28:38 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 17 15:28:38 2016 -0700"
      },
      "message": "Fix misc-macro-parentheses warnings.\n\nBug: 28705665\nChange-Id: I51f09c5d6537b864a53db891ba5f86cf6c195dac\n"
    },
    {
      "commit": "6d7b119a416c9f10288051e562f294365e5d954c",
      "tree": "734bff32a20de4a97c24271b745795db3871cd0f",
      "parents": [
        "0b667e2f6f9e871e2fdc89100b8ef4cc623adec2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat May 07 22:59:48 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 09 11:42:57 2016 -0700"
      },
      "message": "Improve timestamp jitter fix\n\nUse last valid kernel timestamp on server side, not client side.\n\nBug: 28465713\nChange-Id: I33590d6922980f288355f947bc56279245058429\n"
    },
    {
      "commit": "7aa45dd7fc5c2bd959f1571231556ac06b7ec8ae",
      "tree": "93445d577ff2a865f26116d78a59dd612fe53229",
      "parents": [
        "9b04a0225085acdf6dd4944fb43695f246669014",
        "b01faa31462e19957ae3c0c3ada07c9576a9494f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 03 17:25:38 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 03 17:25:38 2016 +0000"
      },
      "message": "Merge \"AudioTrack: Fix timestamp jitter\" into nyc-dev"
    },
    {
      "commit": "aebe9dc29988c94a774208ba659c4f156d274d79",
      "tree": "48a77c49fdc9d1bd0b8e43e4fe1b9ca29a75fefc",
      "parents": [
        "5bdfad1a45a7d5fd03732c75768eef65975660dc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 02 14:38:21 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 02 14:38:21 2016 -0700"
      },
      "message": "Normal tracks use triple buffering if resampling\n\nBug: 26230944\nChange-Id: I40f6cd7147db1be95f297af406c77c6404a76f37\n"
    },
    {
      "commit": "b01faa31462e19957ae3c0c3ada07c9576a9494f",
      "tree": "8e01ae4c10bb12e81745787526c34ba3b6abf2af",
      "parents": [
        "ecd0a41d9a2cc9efbc4ad6d4c91d417461772933"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 27 12:51:32 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 29 18:16:03 2016 -0700"
      },
      "message": "AudioTrack: Fix timestamp jitter\n\nWhen HAL out_get_presentation_position returns error,\nuse server position adjusted for latency.\n\nBug: 28250436\nChange-Id: I3dbcb9b7c4e56d34e7e161d1a02d8f64afd602b9\n"
    },
    {
      "commit": "ea38ee7742e799b23bd8675f5801ef72f94de0f4",
      "tree": "49a00a228e6304a36d19ff4126293c8fce16ff73",
      "parents": [
        "ecd0a41d9a2cc9efbc4ad6d4c91d417461772933"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 18 11:08:01 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 28 16:36:22 2016 -0700"
      },
      "message": "Can now indicate the desired number of notifications (sub-buffers)\n\nper fast track buffer when using the default buffer size.\n\nThere is no change for normal tracks, or fast tracks with a non-default buffer size.\n\nAlso fix related bugs:\nNotification period was not set correctly when fast multiplier is not 1.\nIncorrect warning when client adjusted notification frames.\n\nBug: 27819623\nBug: 28117362\nChange-Id: Ifc2121e874f51718cd56ec04e4bd5f89f4963132\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": "e1e9846a786a0d77a13b44f8e798e03b4cba9d77",
      "tree": "57580c6e48c242f5338e6ed4e99f03cb2511824f",
      "parents": [
        "8a049c2f127f95715375d5ede39b2363b3a68329"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 12 10:18:51 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 12 14:57:36 2016 -0700"
      },
      "message": "AudioTrack: Reset position on flush for extended timestamps.\n\nBug: 27940058\nChange-Id: If91320669e2e84803e601137b1ce66b361b129f1\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": "ea2b9c07b34079f0dbd8610a511e006e69a15adc",
      "tree": "95898426bb80bdc743a0746bc8149f1ba313dfde",
      "parents": [
        "1b9e52cd6553e60f02663c02e7b75f05ec2ef351"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 12 17:06:53 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 31 14:45:36 2016 -0700"
      },
      "message": "Implement client playback timestamps with 64 bit accuracy\n\nProvide server timestamps if the HAL doesn\u0027t provide it.\nProvide monotonic - boottime translation.\n\nBug: 17472992\nBug: 26682703\nBug: 27749434\nChange-Id: I6c9b213d9f9284092e34d57f52870e02c72df62a\n"
    },
    {
      "commit": "5fe2151459fd6c88958c5ebd71f28004d49d8b65",
      "tree": "a6cc27e2e0e5646c01c8e3bbbf53f89a1bbccb99",
      "parents": [
        "eb130ab1c351801ea9f8cf91e2e141036a0fe5c9",
        "7a490e7ab39ef0b22baf24b03f2463c46dc068ed"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Mar 29 17:51:14 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 29 17:51:15 2016 +0000"
      },
      "message": "Merge \"Read from proxy for PCM direct and offloaded track position\" into nyc-dev"
    },
    {
      "commit": "7a490e7ab39ef0b22baf24b03f2463c46dc068ed",
      "tree": "067f8a45cc1e8e95e938caa96ea3d9d186607289",
      "parents": [
        "fdb90f355b269737fe48a2da0593b37d5c2b83c1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 23 15:58:10 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Mar 28 17:22:50 2016 -0700"
      },
      "message": "Read from proxy for PCM direct and offloaded track position\n\nBug: 27776737\nChange-Id: I721bf2b4d46271bf84ad9fc29ff5c4ecd4759206\n"
    },
    {
      "commit": "9b3359feabbf138bb965da5173434da78bfe0929",
      "tree": "3df815199a5a03f0f2e06ddbf02ef9c565dbe518",
      "parents": [
        "15ac558b0f1873dbe0d9c1e6fed042a349f8b5a4"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Mar 23 19:09:10 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 25 10:15:37 2016 -0700"
      },
      "message": "libmedia: Initialize state vars to avoid possible crash\n\nIf playback or record track creation fails on server side,\nsome state is left initialized incorrectly.\nThis can cause a crash when the object is destroyed\nbecause of a reference to a NULL object.\n\nInitialize state vars properly in the initialization list\nto avoid this behavior.\n\nauthored-by: Zhou Song \u003czhous@codeaurora.org\u003e\n\nCRs-Fixed: 992608\nChange-Id: If8c3611e3229c0c1b14b81285e07b9357fec7658\n"
    },
    {
      "commit": "79629f0716f04e79064256362be56730077b8c50",
      "tree": "5fb1f5adf8a0f6a7196afaca4a96a9e3bd55c1e1",
      "parents": [
        "5a898236109c3cb705241e66583d80df413198d2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 24 13:57:40 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 24 15:50:39 2016 -0700"
      },
      "message": "AudioTrack: Do not resume callback thread on start failure\n\nBug: 27673375\nChange-Id: I1df1db51e75cee57f19824ac6506bf02000714fd\n"
    },
    {
      "commit": "fc1337d079ba7e6ffd7ce07706cfeeeb355c0200",
      "tree": "1a70a9e62e19bc4c0dbc2160c13a051039d10106",
      "parents": [
        "7c9ea89cbe3e42e0d94b1790ae1d424a9c16ce08",
        "e8972b0a27fac327c997fceb20d9abae1dc1d899"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 18 03:37:20 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 18 03:37:21 2016 +0000"
      },
      "message": "Merge \"AudioTrack: fix stall if setBufferSizeInFrames() called before play()\" into nyc-dev"
    },
    {
      "commit": "e8972b0a27fac327c997fceb20d9abae1dc1d899",
      "tree": "ff3812507f2eb266870eac29c56921f4a548dacf",
      "parents": [
        "f56a02a5e7d1bfaeabf8b918e56bf49ea509bd42"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 04 11:29:57 2016 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 17 16:09:38 2016 -0700"
      },
      "message": "AudioTrack: fix stall if setBufferSizeInFrames() called before play()\n\nThe server was waiting for a full buffer.\nBut the buffer was only getting partly filled.\nSo the stream was not starting.\n\nThe fix involves having the server look at the adjustable threshold.\n\nBug: 27505889\nChange-Id: I5dbf686413e670dacbbecc9e0f838744e465f44f\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\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": "4d231dc0ee34380956c71cbe18a750e487a69601",
      "tree": "cee9e9b9ff4d3aa17bca9269622e9f40d470ff09",
      "parents": [
        "f56a02a5e7d1bfaeabf8b918e56bf49ea509bd42"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 11 18:38:23 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 14 15:50:19 2016 -0700"
      },
      "message": "audio: Fix race condition in AudioTrack underrun.\n\nWhen audio flinger mixer removes an AudioTrack from the\nactive list in case of underrun, it is possible that the\nclient has written a full buffer just after the underrun detection and\nis blocked waiting for more space to write. In this case, the client\nwill never detect the DISABLED flag and the track never be restarted.\n\nAlso implement missing DISABLE flag detection in server side audio tracks\n(OutputTrack and PatchTrack).\n\nbug: 27567768\nChange-Id: I8d0753429d4113498258b1f61bd8ac5939a612f0\n"
    },
    {
      "commit": "ae34ed2bcc9fa49a22fe7497327adb689ef27e8d",
      "tree": "c0b9d4912875fcf99e2538aacb086e55f5564bab",
      "parents": [
        "633666975ff9a85475a7d134d297eec4e1e513f8"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Thu Jan 28 11:58:39 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 09 10:19:10 2016 -0800"
      },
      "message": "AudioTrack: Use original flags during track recreation\n\nAlso the OFFLOAD and DIRECT flags aren\u0027t denied by server.\n\nauthored-by: Pavan Chikkala\u003cpavanc@codeaurora.org\u003e\nBug: 27554925\nChange-Id: I6fd6b129928af4513bb0cba271019288605310f8\n"
    },
    {
      "commit": "7fd0422fbd17af3b24eb04421d37fce50f3826e2",
      "tree": "b06fbc7c5d058d4f1cb5491b1befa238642e71b8",
      "parents": [
        "2c073da0f02c3cf7cd4795af2d861222cbcab72a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 02 12:38:16 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 01 08:33:03 2016 -0800"
      },
      "message": "Sample rate 0 means a route-dependent rate\n\nRemove check for primary _output_ [sic] sampling rate for fast capture.\nClean up AudioRecord handling of frame count and sample rate.\nClean up AudioTrack handling of notification period updates.\nMake AudioRecord and AudioTrack more similar in order of operation, comments, and whitespace.\n\nBug: 25641253\nBug: 21019153\nChange-Id: I24a6677945987fc39a9bf93f70357e4bc7410f98\n"
    },
    {
      "commit": "eeecb980ff4c202d0a3c4b0bfe040dce2f73336d",
      "tree": "decce0d925acd9efd68f2d540bbabb60c0661c6b",
      "parents": [
        "91afc2297dd1c39302dba6ff68e9839aae27d39a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 26 10:44:04 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 01 08:32:58 2016 -0800"
      },
      "message": "Add use for audio_unique_id_t\n\nBug: 25641253\nBug: 21019153\nChange-Id: I65dc128e760c245f3d90559635a8981b186c87d7\n"
    },
    {
      "commit": "818e7a32ce3633980138aff2c2bfcc5158b3cfcc",
      "tree": "61104149c08955e55a10b9353f80ed140ad3df26",
      "parents": [
        "6ae5843c281301a9ffd1059d185620a9337e15a2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 16 18:08:07 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 19 13:15:16 2016 -0800"
      },
      "message": "Implement server side playback timestamps with 64 bit accuracy\n\nProvide server timestamps if the HAL doesn\u0027t provide it.\nProvide monotonic - boottime translation.\nIntegrate record timestamps and playback timestamps together.\n\nBug: 17472992\nBug: 22871200\nBug: 26400089\nBug: 26682703\nChange-Id: If1974f94232fcce7ba0bbcdf63d9e54ed51918ff\n"
    },
    {
      "commit": "6ae5843c281301a9ffd1059d185620a9337e15a2",
      "tree": "5c97c15b705c079bf8b2dc9ebb0a1ba17df8ca07",
      "parents": [
        "d25c45526d9598218433b0fa59e1f5accbd5b639"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 16 18:32:24 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Feb 18 16:04:55 2016 -0800"
      },
      "message": "Enable FastTrack timestamps\n\nBug: 26413951\nChange-Id: Id54c32cb0f0be83d443f6cf1007181ebc461c586\n"
    },
    {
      "commit": "8ce8e264d0bf09ec131e4a7701fe1ebc3a678f8b",
      "tree": "0938951613cb0d2725a01f84840571c4c50a0998",
      "parents": [
        "bc57b12030cbd4885d9231e721bbfed1b6522212"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 16 11:59:23 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 16 11:59:23 2016 -0800"
      },
      "message": "Revert \"Enable FastTrack timestamps\"\n\nThis reverts commit b3a486fecddc9e9264fe63d356eca0812493db27.\n\nReverting while investigating the root cause.\n\nBug: 27186414\n"
    },
    {
      "commit": "b0a144d705a021994628d136a170a6d2bd4282e7",
      "tree": "f6144a26c0e19fa9a7ba75e136c80afeb9ecf14a",
      "parents": [
        "7f308c3e0556a5e704bcb3b341842ed50ba80b0a",
        "fdb3c07db5d44535eb8c3ec46dc78ad8446c01eb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 12 22:24:53 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 12 22:24:55 2016 +0000"
      },
      "message": "Merge \"AudioTrack: support ENCODING_IEC61937\" into nyc-dev"
    },
    {
      "commit": "fdb3c07db5d44535eb8c3ec46dc78ad8446c01eb",
      "tree": "b8c3d97da524e8aefcb37e736619da6b8e087a82",
      "parents": [
        "3ea4f828a6906e9931f96ebdcae9c63e14b86cbd"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Feb 09 10:47:02 2016 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 12 06:30:43 2016 +0000"
      },
      "message": "AudioTrack: support ENCODING_IEC61937\n\nSet DIRECT flag.\nUse audio_has_proportional_frames() instead of audio_is_linear_pcm()\nwhere appropriate.\n\nBug: 24541671\nBug: 20891646\nBug: 26373761\nChange-Id: Ia32036b18683b084d6c9887593df87397ea0afd9\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "b3a486fecddc9e9264fe63d356eca0812493db27",
      "tree": "cd2ff28eac5233cdb2037b437cb68abe9b9dff3c",
      "parents": [
        "e8c8ed47ca15aa6be83c6feef89e27a832e763e9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Aug 04 15:17:58 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 12 00:34:47 2016 +0000"
      },
      "message": "Enable FastTrack timestamps\n\nBug: 26413951\nChange-Id: I99a69241a0bcd69f6bfebf785cac6d9ee1e2cd5f\n"
    },
    {
      "commit": "d79072e9dff59f767cce2cda1caab80ce5a0815b",
      "tree": "cab9cab36ddf4bb61675c4508d923b283fd3edd6",
      "parents": [
        "a7b723715bab4ddf6db364c825135a9bc003c7c0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 06 08:41:20 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 25 15:34:04 2016 -0800"
      },
      "message": "Remove TimedAudioTrack and associated code\n\nBug: 8278435\nChange-Id: I095c1a4888e645e14d93b0b15fbef4524a831ca1\n"
    },
    {
      "commit": "bbe98f009fc2c3181a8d4ab71b3e145f76c01755",
      "tree": "2a1945cccd1c9c801737d7b2fdfca5d6246ba516",
      "parents": [
        "27e583ba1d0d4fdc11d6eeee0c416e727045cbbc",
        "2812d9ea3a3a33142dd8e23c9d949c498d6f7a12"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jan 16 23:24:30 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 16 23:24:30 2016 +0000"
      },
      "message": "Merge \"AudioTrack: Add getUnderrunCount()\""
    },
    {
      "commit": "27e583ba1d0d4fdc11d6eeee0c416e727045cbbc",
      "tree": "ce7b938b6468b7260dbfc616a55175e32334b178",
      "parents": [
        "33ff89ba94a527e4293ee5349da01483252d5c83",
        "c0adecb800b197cb8c028513130ebabf2d0f37ba"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jan 16 23:23:43 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 16 23:23:43 2016 +0000"
      },
      "message": "Merge \"AudioTrack: add setBufferSizeInFrames()\""
    },
    {
      "commit": "33ff89ba94a527e4293ee5349da01483252d5c83",
      "tree": "e37751829ee24635aceec80ff5e0b0d47d71055c",
      "parents": [
        "e0db30868d9734f95a02df516dd0dc6a7226474b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 30 11:16:01 2015 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jan 16 11:51:28 2016 -0800"
      },
      "message": "AudioTrack: lower Java latency\n\nAdd AUDIO_FLAG_LOW_LATENCY to enable Fast track.\n\nChange-Id: Ib1bff635afaa57af7754cb751b57c6afc4c2ab2b\nBug: 21019153\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "c0adecb800b197cb8c028513130ebabf2d0f37ba",
      "tree": "6d9896d68200ff0e7a0a1099529d591edaeabd33",
      "parents": [
        "e0db30868d9734f95a02df516dd0dc6a7226474b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jan 08 12:44:11 2016 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jan 16 11:39:20 2016 -0800"
      },
      "message": "AudioTrack: add setBufferSizeInFrames()\n\nAlso add getBufferCapacityInFrames().\nThese can be used to dynamically raise or lower latency.\n\nBug: 21019153\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\nChange-Id: I02ca7f6f5cc4e089fcd81cc8a2b6ff234e0381a8\n"
    },
    {
      "commit": "2812d9ea3a3a33142dd8e23c9d949c498d6f7a12",
      "tree": "5079c758817d0c42b3f7ade661366fdae25fe5d1",
      "parents": [
        "e0db30868d9734f95a02df516dd0dc6a7226474b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jan 04 10:34:30 2016 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jan 16 11:21:38 2016 -0800"
      },
      "message": "AudioTrack: Add getUnderrunCount()\n\nThis allows an app to detect application-level output glitches.\nUnderrun counts survive track recreation.\n\nChange-Id: I8eb14e92f6fc1007718a29b0666ab51ace30cdb8\nBug: 25641253\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "90e8a97dd5c9d391d7a2ea6a2290ed976f928379",
      "tree": "fd0c41eb9d79a2a8bd58fa1e87d70aee8324f68e",
      "parents": [
        "25283404e022cd23d61befaa3c7ba379c05e8f99"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 09 16:42:40 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Nov 13 12:39:07 2015 -0800"
      },
      "message": "Use modulo position variables in AudioTrack and AudioRecord\n\nMore type safety, plus correct treatment for sanitization.\n\nBug: 25569906\nBug: 25232421\nChange-Id: Id852277b81a1792c5e67392cd74bc39cba7ed1ad\n"
    },
    {
      "commit": "7095f876565f8c52bafe02e7c6ba04aa0c274dfa",
      "tree": "39909871faf202fa16848eb57c8f28a2d36b927d",
      "parents": [
        "74e0f3a620bd0cdfb153728e99a17a96ca3db0de",
        "51cd9a441ed0acf6e3b9c221e9b7f9424073191f"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Mon Nov 09 20:47:32 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Nov 09 20:47:32 2015 +0000"
      },
      "message": "Merge \"Whitelist getTimestamp from integer sanitization\"\nam: 51cd9a441e\n\n* commit \u002751cd9a441ed0acf6e3b9c221e9b7f9424073191f\u0027:\n  Whitelist getTimestamp from integer sanitization\n"
    },
    {
      "commit": "ec3806a8be1a014631b39df59edd596f8eb5be01",
      "tree": "7129f8779488acffd047b73519866247ee395c6d",
      "parents": [
        "9cc6bb627e9683149f3d3f0609a83b8f14be7fde"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Mon Nov 09 11:56:57 2015 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Mon Nov 09 11:56:57 2015 -0800"
      },
      "message": "Whitelist getTimestamp from integer sanitization\n\nThe timestamp math relies on modulo 32 bit math, whitelist this function\nfor now until we can find a better way to tackle this.\n\nBug: 25490803\nChange-Id: I3e2b19db023b4622f5884933feab96363756e8c6\n"
    },
    {
      "commit": "3845ba35a0bf364f30bd46029b89e7b5fff28793",
      "tree": "2b324dd9fd96b4d24b7373f050240ff64b519bfe",
      "parents": [
        "ce92aba3ab05f7d653908acc7e9be73128dd5ccd",
        "9b698dcfb41cbadd4a21d09eede0de672912959d"
      ],
      "author": {
        "name": "Dan Austin",
        "email": "danielaustin@google.com",
        "time": "Wed Oct 28 20:25:06 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 28 20:25:06 2015 +0000"
      },
      "message": "Merge \"Refactor setPlaybackRate to avoid benign unsigned integer overflow.\" am: a38594e92f\nam: 9b698dcfb4\n\n* commit \u00279b698dcfb41cbadd4a21d09eede0de672912959d\u0027:\n  Refactor setPlaybackRate to avoid benign unsigned integer overflow.\n"
    },
    {
      "commit": "9b698dcfb41cbadd4a21d09eede0de672912959d",
      "tree": "d5b4250169626f73479122ef9c06a1e975f9c013",
      "parents": [
        "b8e13b1b1a7749e54641efbef32d5cf49933cba2",
        "a38594e92fea7f88c5edad98a4992b5f1b688436"
      ],
      "author": {
        "name": "Dan Austin",
        "email": "danielaustin@google.com",
        "time": "Wed Oct 28 20:21:13 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 28 20:21:13 2015 +0000"
      },
      "message": "Merge \"Refactor setPlaybackRate to avoid benign unsigned integer overflow.\"\nam: a38594e92f\n\n* commit \u0027a38594e92fea7f88c5edad98a4992b5f1b688436\u0027:\n  Refactor setPlaybackRate to avoid benign unsigned integer overflow.\n"
    },
    {
      "commit": "e34eae2de7bd6dcba5dea132dabb09f63ac46adc",
      "tree": "f1eb25e6df17d3ef526b9baa7dfc3d1c2dd2c3d9",
      "parents": [
        "58fdf7cc01a5b81d40c0bb2f0aeb7c4d23ae5244"
      ],
      "author": {
        "name": "Dan Austin",
        "email": "danielaustin@google.com",
        "time": "Tue Oct 27 16:14:52 2015 -0700"
      },
      "committer": {
        "name": "Dan Austin",
        "email": "danielaustin@google.com",
        "time": "Wed Oct 28 19:44:28 2015 +0000"
      },
      "message": "Refactor setPlaybackRate to avoid benign unsigned integer overflow.\n\nThere is a check that results in a benign unsigned integer overflow.\nThis has been refactored to avoid the unsigned integer overflow.\n\nBug: 25327431\nChange-Id: Ib112a7cd585c680f13e4bee3d7e9f45da7d66f1d\n"
    },
    {
      "commit": "2eb225313de241d02979c66e2730983901ad05ea",
      "tree": "90010a43009d0a0d6c4728b2f617ea0b8487e46c",
      "parents": [
        "f55e722949d56f0a0a1b4285f9adb5df3ab05b71",
        "6a9219026124f9075c03a861101cea985f01cdce"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 22 23:46:46 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 22 23:46:46 2015 +0000"
      },
      "message": "Merge \"Workaround for busy wait bug\" into mnc-dr-dev am: d34cf6d95c\nam: 6a92190261\n\n* commit \u00276a9219026124f9075c03a861101cea985f01cdce\u0027:\n  Workaround for busy wait bug\n"
    },
    {
      "commit": "606fbc1030d686bf1f8dc03d14a79342aca2ca41",
      "tree": "0394ffc9b5ae6d11957a2123177b62a65d09d5c1",
      "parents": [
        "e710ae53001bbbf1e1afd6b3f5c3478c673afd0e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 22 15:28:15 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 22 15:45:03 2015 -0700"
      },
      "message": "Workaround for busy wait bug\n\nUnderlying bug 25195759 is not yet fixed.\n\nBug: 24263351\nChange-Id: I04b644246640054d38c8de79e0eb80fcbfef0e48\n"
    },
    {
      "commit": "c67c65882f7cf1d3ae617bff41ff9c7ec8a0fd27",
      "tree": "68e91ad1c34d514bea75a537794c1210685d8b32",
      "parents": [
        "f8b1280535a6e3ebcf864d434a01d6c672cadd9a",
        "5116febf966875c19a0b137a3deef0ba0ebe42df"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 14 01:24:25 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 14 01:24:25 2015 +0000"
      },
      "message": "am 5116febf: am cfda8c43: Merge \"AudioTrack: Skip callback EVENT_STREAM_END on DEAD_OBJECT.\" into mnc-dr-dev\n\n* commit \u00275116febf966875c19a0b137a3deef0ba0ebe42df\u0027:\n  AudioTrack: Skip callback EVENT_STREAM_END on DEAD_OBJECT.\n"
    },
    {
      "commit": "39609a0a6d95d003b0f237e6c139b070b4df7071",
      "tree": "587a8b63f59c4293f932b61a0ff24aeac4bbb5dd",
      "parents": [
        "e5200ea76c5d180b53087ae7825326ec61cc4687"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 03 16:38:38 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 13 15:48:19 2015 -0700"
      },
      "message": "AudioTrack: Skip callback EVENT_STREAM_END on DEAD_OBJECT.\n\nSend only EVENT_NEW_IAUDIOTRACK to initiate teardown.\n\nBug: 23750452\nChange-Id: Ib5dcd578b5b6a6a1d91a03e58ef8da0acd994243\n"
    },
    {
      "commit": "7d7a11ca73c9684b63275e82b327f6f90fcc114e",
      "tree": "fae78dbfe990d9832e352e74c9a64ca79d17b4d5",
      "parents": [
        "0daa5e9607b0e68cec2bac20d16f88c561c12549",
        "9ea0680e4d77d21fb0698fec3ccd7779213eca62"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 07 17:31:33 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 07 17:31:33 2015 +0000"
      },
      "message": "am 9ea0680e: am b177e8a7: Merge \"AudioTrack: Prevent stop() from reissuing last marker event\" into mnc-dr-dev\n\n* commit \u00279ea0680e4d77d21fb0698fec3ccd7779213eca62\u0027:\n  AudioTrack: Prevent stop() from reissuing last marker event\n"
    },
    {
      "commit": "61be84167c1a11c8a030e00a2b79b2bc4fdf617f",
      "tree": "8213fe1a24bdc63e7994b6129615c57845590d03",
      "parents": [
        "f99498ee4de7123e2fd71778c6877be44fbd1506"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Oct 06 10:51:09 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Oct 06 13:46:50 2015 -0700"
      },
      "message": "AudioTrack: Prevent stop() from reissuing last marker event\n\nAvoid a duplicate marker event race condition (1 in 30 or less)\nby clearing marker reached in start() not stop().\n\nBug: 24497521\nChange-Id: I9520d063c7d173d2e642174bf60a2bfe75edf085\n"
    },
    {
      "commit": "54b3c3c7acf18226f6abf788a220837bc5737677",
      "tree": "b4fb0509a976c6fe6dcb8564af64cce7df2c12ba",
      "parents": [
        "b7132738e2e980f29fe67e863ac6b5488c0922b3",
        "6c4cf7fb4c8a48450f8290380710ddeb6a8cc625"
      ],
      "author": {
        "name": "Dan Austin",
        "email": "danielaustin@google.com",
        "time": "Tue Sep 29 16:29:48 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 29 16:29:48 2015 +0000"
      },
      "message": "am 6c4cf7fb: Merge \"Fix benign overflow in AudioTrack\"\n\n* commit \u00276c4cf7fb4c8a48450f8290380710ddeb6a8cc625\u0027:\n  Fix benign overflow in AudioTrack\n"
    },
    {
      "commit": "039c27aeaee809182fc1491311ca6dcbc1ec441b",
      "tree": "9b3159fa45f48e4893823a5018e6c364668aeb53",
      "parents": [
        "6f5a43f495b7d633c21ca4eb74956b71658c0c5d"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Sep 23 15:17:29 2015 -0700"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Thu Sep 24 10:50:54 2015 -0700"
      },
      "message": "Fix benign overflow in AudioTrack\n\ntwo uint32_t\u0027s were being used in a computation that could be negative,\ncast to int32_t before the subtraction to prevent incorrect overflow\ndetection.\n\nChange-Id: I33c5ef79a0ebbba055daa0ea041b42229d0c3152\n"
    },
    {
      "commit": "e9fa23fe940c287bf2f6e8b28f4cf9161818cb80",
      "tree": "4000a728fb5e68a70b0c3d4720dd9557bee1805f",
      "parents": [
        "b5213840103ae1ce3425a6db3d851fce5f767889",
        "1f8749f27d4450c19952403a91362df3d20b972d"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Sep 23 12:44:00 2015 -0700"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Sep 23 12:44:00 2015 -0700"
      },
      "message": "resolved conflicts for 1f8749f2 to stage-aosp-master\n\nChange-Id: Idda60a9d39f9be81e0c314f06fc080ad7fa35c7b\n"
    },
    {
      "commit": "20b82e0cb5c615a4f88f245c12fec9ee0ec49894",
      "tree": "84358b3b4a540b57f751ed5d6dd090a09a9bbd6d",
      "parents": [
        "318dd9b80789bdb30a7cf828a7ca18f6422c95c4"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Tue Sep 22 14:11:35 2015 -0700"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Sep 23 10:51:19 2015 -0700"
      },
      "message": "Fix benign unsigned overflow in AudioTrack\n\nAn unsigned overflow could occur in timestamp computation when\nmTimestamp \u003c mServer.\n\nChange-Id: I9e01897478a6d481dd6fb7303d325617466497cf\n"
    },
    {
      "commit": "97c9f4fd7bc31e2968d816402659ba1c64f10b42",
      "tree": "96e726b7cfeac443b961a0f6cc3abb3a866d0e5a",
      "parents": [
        "fa8ebb45fd850f56ca1bf64fbed3ac11e10c7d3d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 11 18:04:14 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 12 01:12:26 2015 +0000"
      },
      "message": "NuPlayerRenderer: handle error when resuming an offloaded track\n\nMake sure that an offloaded audio track is torn down if\nstart() returns an error in onResume().\nThis makes sure that a track invalidated due to a potential\naudio path change while paused is re created on the correct\noutput.\n\nBug: 22256441.\nChange-Id: I6c7bfec6e7322415daffc0451bab46d0c558522a\n"
    },
    {
      "commit": "2c7d0f2013203588f9307166cad42902eb5a676f",
      "tree": "9460ada2b046711356148a6c84468afbb51bb858",
      "parents": [
        "5ce059661dcbab8924edab400681fc408ee76123",
        "d7bd69e4d1e74f25413721804d5290c53ea87f2b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 24 21:02:52 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 24 21:02:52 2015 +0000"
      },
      "message": "Merge \"Fix restore position warning and static track adjustment\" into mnc-dev"
    },
    {
      "commit": "d7bd69e4d1e74f25413721804d5290c53ea87f2b",
      "tree": "abd46c30e346d4abfbd2dafc303f531be923a35f",
      "parents": [
        "240577a43ff8d312fa4b464db887916580473396"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 24 07:52:41 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 24 11:01:55 2015 -0700"
      },
      "message": "Fix restore position warning and static track adjustment\n\nRemove unnecessary restoreTrack_l() position warning when\nAudioTrack output device changes.\n\nAlso, fix rare getPosition() offset error if a static track is\ncontinuously playing a long time (\u003e 24 hours at 48khz sampling)\nand its output device changes.\n\nBug: 22524122\nBug: 21699132\nChange-Id: I5a35c13d62ff9f0702b09d5cd9362c730364b18c\n"
    },
    {
      "commit": "a8d0890ca969ec40fdcf1cfcbeef85c0c379cfaf",
      "tree": "19d4d4ec0342472e24d5e242bf68a33c57ccd1c2",
      "parents": [
        "805a0c70574676d0fb29aa5e1f23417786b42259"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 22 11:52:13 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 22 11:52:13 2015 -0700"
      },
      "message": "Fix race condition in AudioTrackThread::wake\n\nBug: 22533684\nChange-Id: I2f46770dca44fc9dae41e067d3bec893c42a826e\n"
    },
    {
      "commit": "55a2dcce3a409393dc51ab2eb433914331f2df51",
      "tree": "ce69e72bd8520a05807a88a64bb58d33b0dc7962",
      "parents": [
        "2b343b1b2dd9e4885ef2b7ec2f798215d714ab3a",
        "6c7f062d3149d6890daaee64828959ad6f61ea54"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Tue Jun 23 00:25:07 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 23 00:25:08 2015 +0000"
      },
      "message": "Merge \"Using centralized isAudioPlaybackRateValid to validate parameters\" into mnc-dev"
    },
    {
      "commit": "6c7f062d3149d6890daaee64828959ad6f61ea54",
      "tree": "dcab2e17178bf6d01ead75fad5df883961a6e195",
      "parents": [
        "fa907d4ee326c7bb9cbb4882ab7c0ec42bbceee3"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Thu Apr 30 18:39:16 2015 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Jun 22 16:08:40 2015 -0700"
      },
      "message": "Using centralized isAudioPlaybackRateValid to validate parameters\n\nCentralized validation code\nbug: 20701446\n\nChange-Id: I9d9941c7639c05b2afe069ff4f858c693c910bfe\n"
    },
    {
      "commit": "6653c935d2518a713587b3887ca09aa09ebfa7fd",
      "tree": "6d9680827227e1a263b27e3eb4206a85a5122297",
      "parents": [
        "1f1db8356b599bc40703c907fb69e6e539343532"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 08 13:27:48 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 18 14:42:14 2015 -0700"
      },
      "message": "Return DEAD_OBJECT if getTimestamp cannot restore track\n\nBug: 21699132\nChange-Id: I90443f8674ed949e2546048b231be75cd6fe6615\n"
    },
    {
      "commit": "1f1db8356b599bc40703c907fb69e6e539343532",
      "tree": "bee3a3cc00e5577a7d847871e77f9d3712c92d25",
      "parents": [
        "bd974011599b6d4ff47c1cee36d617f191dc0c2f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 08 13:26:10 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 18 14:38:32 2015 -0700"
      },
      "message": "Fix AudioTrack comments relating to use of restoreTrack_l()\n\nBug: 21699132\nChange-Id: Ib0d029a5e28676aeffbbbafc88c52a17367a413c\n"
    },
    {
      "commit": "c8e09c610fabc7390297ecb48e939acbdfe27325",
      "tree": "38ceed23e3bbef10f3d54388926c5ea242a1d069",
      "parents": [
        "005e9d0300fc326a076ec17b7fa6dd4f51568f55"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 23:43:36 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 04 12:23:56 2015 -0700"
      },
      "message": "Improve AudioTrack offload timestamp startup glitch detector\n\nNew or existing glitch behavior for Nexus 5 offload audio:\nwe receive several 0 timestamps,\nthen we get a stale timestamp (very large),\nthen a few ms later we get a correct nonzero timestamp.\n\nWe attempt to hide the glitch because the retrograde timestamp\ncorrection makes the glitch \"sticky\".\n\nBug: 21633313\nChange-Id: I39153af718c151f9435e7d315651a811f72743da\n"
    }
  ],
  "next": "a7f03353d5f172016f324e2a01f301cca6794152"
}
