)]}'
{
  "log": [
    {
      "commit": "3278996fb589ea0c3d2d5acbd0546072579fb36c",
      "tree": "017b2e93a2b2a922708562d762d716609d08881e",
      "parents": [
        "51a6319111df875710dab25a1a99b10d002c4869"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 26 11:37:54 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 26 20:30:27 2016 +0000"
      },
      "message": "Do not park the FastMixer on AudioPatch changes\n\nCan be turned on again by property af.patch_park.\n\nBug: 30952714\nChange-Id: Id7f7750e28ecf950d110379309d18819e169e999\n"
    },
    {
      "commit": "af3ec7c9a0cfc483017d4457e0e3d77de4b1a33a",
      "tree": "2de75cb35401811b038042d1b111451d3f029984",
      "parents": [
        "3e5605b8b8a8f349d70cdb0d53409cfe69cada7b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 01 11:25:19 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 01 11:34:34 2016 -0700"
      },
      "message": "audioflinger: fix OutputTrack initial check\n\nCall initCheck() on newly created OutputTrack in\nDuplicatingThread::addOutputTrack() to make sure that\nthe track is successfully attached to the AudioMixer.\n\nAlso make invalid track name always fatal in AudioMixer::deleteTrackName().\n\nBug: 29953737\nChange-Id: I47f2517bd53de940e125391de99c40611ad0fc9d\n"
    },
    {
      "commit": "f929f9b203ef4787d45f8b24aab053aaab993be9",
      "tree": "03b82bca32f9d5cde183a95919f9eec3b0c3e5c1",
      "parents": [
        "f769ab76d185a63e6da12f58fe902e977f1ad0fd",
        "f804475807407442d5596ab7378ed07d50664063"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 28 23:40:56 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 28 23:40:56 2016 +0000"
      },
      "message": "Merge \"AudioFlinger: Prevent offload underrun during active playback\" into nyc-mr1-dev"
    },
    {
      "commit": "238fa3deff26d7e4d9e81bd0a88c936f16226c4e",
      "tree": "a14e74e084954b1a67625c52046ab5febe76a0c5",
      "parents": [
        "11dd692efa611d129167abea854dc14f0046d727"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 28 10:53:22 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 28 12:29:04 2016 -0700"
      },
      "message": "AudioFlinger: Account for frames dropped in suspend mode\n\nThese frames must be added to the kernel position in timestamps.\n\nBug: 30025777\nChange-Id: I30c14503c9467059c3782e5c96c01ae1cf3709f6\n"
    },
    {
      "commit": "f804475807407442d5596ab7378ed07d50664063",
      "tree": "1912f24061d3d57d209eef933edf0e6c41203b82",
      "parents": [
        "11dd692efa611d129167abea854dc14f0046d727"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 27 14:58:11 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 27 16:20:43 2016 -0700"
      },
      "message": "AudioFlinger: Prevent offload underrun during active playback\n\nBug: 29897830\nChange-Id: Id99d416cdaa8bf62daca8f92e3564f2895f15490\n"
    },
    {
      "commit": "b5aac433cda041c1fde2fcfadf1835f3f8d19eeb",
      "tree": "03305459986d065b2e3b5ac49dfbb3320f24e78b",
      "parents": [
        "38c75d9d30b0b40e3d926503d553c869ce7bec1c",
        "69ce44d164c7b9963c06cb96ea9d25cf99e069c9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 20 18:44:53 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 20 18:44:53 2016 +0000"
      },
      "message": "Merge \"Only read timestamps from HAL if not FastCapture\" into nyc-mr1-dev"
    },
    {
      "commit": "69ce44d164c7b9963c06cb96ea9d25cf99e069c9",
      "tree": "001637c0cae7a599c8b73b37dbeb82dda1f6c7d8",
      "parents": [
        "9f6392250bf6d02a514bd83b743906dda748dee9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 18 12:14:25 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 18 13:30:05 2016 -0700"
      },
      "message": "Only read timestamps from HAL if not FastCapture\n\nPrevents blocking FastCapture from the RecordThread\n\nBug: 29392543\nChange-Id: Icd00534677be121bc4f4e9a7a6bd5b44f6f14f50\n"
    },
    {
      "commit": "cecb30a22f3657483f07f259231b81b02b2a7305",
      "tree": "4a5a62592ac3f8f96ea4cd8ebbd3393bc2e56fa6",
      "parents": [
        "bc7e8996c2be0377a659348649367c2d9455f21d",
        "3df841a10b4d553949c518ad52f1af8dcb365058"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 18 16:21:07 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 18 16:21:08 2016 +0000"
      },
      "message": "Merge \"AudioFlinger: fix offload volume on resume\" into nyc-mr1-dev"
    },
    {
      "commit": "3df841a10b4d553949c518ad52f1af8dcb365058",
      "tree": "4e3320a04ac63efdb74e903c376efcbd309acd9d",
      "parents": [
        "87cbfa8c5ecbe515c380d5592cef20c1fafe36b7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 15 15:15:40 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 15 15:59:34 2016 -0700"
      },
      "message": "AudioFlinger: fix offload volume on resume\n\nMake sure that new volume is sent to audio effects and HAL\nimmediately upon resuming playback on direct and offload threads.\n\nAlso make sure that only the latest active track on thread controls\nvolume.\n\nBug: 30057465\nChange-Id: I846958b4aae5abd3740b8a2545b57bd8f3614031\n"
    },
    {
      "commit": "f9715e43ea73361321663514c44129c939c5db2f",
      "tree": "60a0f90c5c13c59bd9f41ba26e7c9e8d6f59db31",
      "parents": [
        "9f6392250bf6d02a514bd83b743906dda748dee9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 13 14:02:03 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 15 08:27:55 2016 -0700"
      },
      "message": "Distinguish systrace timelines for playback and capture\n\nBug: 30120068\nChange-Id: If416540f0785e83e7b1e8ba986ee55b5b9298a2a\n"
    },
    {
      "commit": "a5bcf56619a70b0b46c737a29d873bbff8fb77a4",
      "tree": "8183234bb00a1f23ab0d7b36cc3e389efc1a5657",
      "parents": [
        "3d0d2ed84140eb505440102c017cf5108ad8807c",
        "5c25d5637ef3406883e0fc97a713f9d5cdca426f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 14 15:33:18 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 14 15:33:18 2016 +0000"
      },
      "message": "Merge \"AudioFlinger: fix capture stop sequence\" into nyc-mr1-dev"
    },
    {
      "commit": "5c25d5637ef3406883e0fc97a713f9d5cdca426f",
      "tree": "abb2f66193347d42bb1114686b0472fc9bba4ff0",
      "parents": [
        "bea67b8a707b8875419019ebd2d568090310b326"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 13 17:17:45 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 14 15:32:05 2016 +0000"
      },
      "message": "AudioFlinger: fix capture stop sequence\n\nMake sure that the HAL input stream is actually in standby when audio policy\nis notified by stopInput().\nThere was a race condition where it was possible for a new capture stream to be started\nin the interval between stopInput() notification and input stream going into\nstandby because of the state update and sleep sequence in the record thread loop.\n\nAlso make sure we interrupt the sleep period if a command is pending.\n\nBug: 29865791\nChange-Id: Ife720fbd2e5d0df8792669dc724b1fd70f63ab8a\n"
    },
    {
      "commit": "93540a6b596b1660a453d344573571462a7e6587",
      "tree": "303e48e072805b8715af006267ceb68eb1cf2885",
      "parents": [
        "af0c7dfd5744b7c9e67e9afd26af417aadc6dc20",
        "4527b9ebc6a37b861f5a3bba68bcc63dc8d69ada"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 12 21:01:40 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 12 21:01:40 2016 +0000"
      },
      "message": "Merge \"audioflinger: async callback error handling\" into nyc-mr1-dev"
    },
    {
      "commit": "4527b9ebc6a37b861f5a3bba68bcc63dc8d69ada",
      "tree": "3a61cce409f275881308a214fbe5b01e0b6154b0",
      "parents": [
        "bea67b8a707b8875419019ebd2d568090310b326"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Thu Jul 07 19:54:17 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 11 17:16:51 2016 -0700"
      },
      "message": "audioflinger: async callback error handling\n\nInvalidate all tracks on receiving an async error\ncallback from the output stream.\n\nChange-Id: I92f441ed7fd904b85f464a041847880faac5b383\n"
    },
    {
      "commit": "773ee957aadbe86ee53ac96a108ce47f8e02b961",
      "tree": "e9512b60b19484ee3d8a9ca2108aeb66611687af",
      "parents": [
        "bea67b8a707b8875419019ebd2d568090310b326"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jul 11 16:53:18 2016 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jul 11 16:53:18 2016 -0700"
      },
      "message": "Fix non-offloadable effect creation on offload threads\n\nDo not prevent the creation of non-offloadable effects on\n  offload threads.\n\nBug 29229872\n\nChange-Id: I1deebb5c0973f67a9e925ef1278d22ef7f62c779\n"
    },
    {
      "commit": "bf6dc1af5bd88135f47c2489c03cdb9f95d57927",
      "tree": "a005f9f0b508331cd1225ef5677b6b8a166999ad",
      "parents": [
        "b343e0444a3420321c606a827347f18445d76385",
        "0a31dddf67e739684f60aecc85311ff446fb68f9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 07 21:19:29 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 07 21:19:30 2016 +0000"
      },
      "message": "Merge \"Attribute throttle time to previous loops write time\" into nyc-mr1-dev"
    },
    {
      "commit": "0a31dddf67e739684f60aecc85311ff446fb68f9",
      "tree": "684e50e1372f69b2dd58cad9ee9fc9f9dd3a6979",
      "parents": [
        "7b171a9e7be64e9881ed03baad1422d75ca768a4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 06 19:10:29 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 06 19:10:29 2016 -0700"
      },
      "message": "Attribute throttle time to previous loops write time\n\nBug: 29991292\nChange-Id: Ie3ecc9631e1dfa83fafc7b003495f59e981a0b6b\n"
    },
    {
      "commit": "122f7e793fe6fb8904634cc6d2e35ac4b014ea72",
      "tree": "8518fa89f4854add0def8d88ec6a2bd399912ce4",
      "parents": [
        "d023a7707fe551817fb3f7539f68a388b3381f41"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 29 11:53:29 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 29 11:56:35 2016 -0700"
      },
      "message": "audioflinger: fix logcat\n\nFix build when verbose logging is enabled in Threads.cpp.\nRemove log spam for timestamp errors.\n\nChange-Id: I704527c60e48012c5dcc00cb0be08d14ec2ab2a6\n"
    },
    {
      "commit": "4c415062ad1bb53e9af8f644d8215837262b79bb",
      "tree": "ef03f2781c22f245b13404d321f8f1bac9e24912",
      "parents": [
        "e8a984e43504890e0f676256a0445b9917a2af91"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 17 16:14:16 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 20 12:26:30 2016 -0700"
      },
      "message": "audioflinger: add check for effect vs thread compatibility\n\nMake sure that only HW accelerated effects are added on FAST\nplayback or record threads and no effect is added on threads with\nRAW flag.\n\nMake sure that tracks with RAW and FAST flags are compatible with exiting\neffects on a playback or record threads and clear flags accordingly.\n\nBug: 4999001\n\nChange-Id: I0c060f1ee4dfb9f1e206633536e67f7c3b7b3788\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": "b09a6d08321b9484d80a2a9dc11ed52623942c8d",
      "tree": "552dc523c1d69c52afc3b1dacb6eb8db393b4613",
      "parents": [
        "a1bcbfec34380c5993ed39680ec6b418f63c7021",
        "5d8e3808b4012fa72bedf5898803682831f88e84"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 25 11:45:16 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 25 11:45:16 2016 -0700"
      },
      "message": "resolve merge conflicts of 5d8e380 to nyc-mr1-dev\n\nChange-Id: Ic3aacd191cae0749bb33fe9ccfdac743ff82a21f\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": "57fc788e8c924823c9026f1239282d39433da821",
      "tree": "9db371e1a4f7018b8c9faca5b58470f9983bd920",
      "parents": [
        "de023ce5d812a80951431af014cf15b9b3efeb97",
        "13084621072ea2e4c34e2a9d79793c621d9bf005"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 17 19:28:29 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 17 19:28:29 2016 +0000"
      },
      "message": "audioflinger: fix invalidateTracks() on offload thread\nam: 1308462107\n\n* commit \u002713084621072ea2e4c34e2a9d79793c621d9bf005\u0027:\n  audioflinger: fix invalidateTracks() on offload thread\n\nChange-Id: Ib4f9306ababd292b71d4a5026bc157ef40e61120\n"
    },
    {
      "commit": "13084621072ea2e4c34e2a9d79793c621d9bf005",
      "tree": "c6675537ca5bc09afe40d9b03ad9c332b3bf1341",
      "parents": [
        "78d4d1e46c546a29ec86b98f4bfce71424c42213"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 17 10:51:49 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 17 10:51:49 2016 -0700"
      },
      "message": "audioflinger: fix invalidateTracks() on offload thread\n\nCommit 05317d29 introduced a regression causing a systematic flush\non offload output thread when invalidateTracks() is called even if\nno track is using the stream type specified.\n\nBug: 28786996\nChange-Id: Iee393ee8b1093c40647235bd35f4a6fa9b62937a\n"
    },
    {
      "commit": "64a253562a0521f5f0b3205dae98367102ebe532",
      "tree": "cbfc3d04d574cbb87a9f249a44a73ec1cb4bc8be",
      "parents": [
        "86c54273d035ff1ee6efab1a56766f883e1c98f7",
        "227a14be87e8c63eb7a464b857a1d29c86c90e7c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 11 22:22:14 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 11 22:22:14 2016 +0000"
      },
      "message": "Merge \"audioflinger: update multiplier logic to calculate frameCount\" into nyc-mr1-dev"
    },
    {
      "commit": "86c54273d035ff1ee6efab1a56766f883e1c98f7",
      "tree": "a2b08a8017f3680f0eb5b9d9c041c9b0c6313c2b",
      "parents": [
        "e3fe4ffa3522d0f23decc341efec12c0afb404e0",
        "f92b2175cd4a8d0fa9aca6e660ed4e85f6b7078b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 11 22:22:07 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 11 22:22:08 2016 +0000"
      },
      "message": "Merge \"audioflinger: Update throttling logic in MixerThread\" into nyc-mr1-dev"
    },
    {
      "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": "227a14be87e8c63eb7a464b857a1d29c86c90e7c",
      "tree": "2e9bee17db02b4daecaf088dd8b510d6e7355ec2",
      "parents": [
        "76fa63ccefbac3ca3e722bc9ba016101858c3cdd"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Mon May 09 12:45:48 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 10 16:12:05 2016 -0700"
      },
      "message": "audioflinger: update multiplier logic to calculate frameCount\n\nIf the value of the multiplier used in calculating\nmNormalFrameCount is odd, it is rounded off to a higher even value.\n\nThis results in an increase of mNormalFrameCount and thereby\nthe latency which is not expected.\n\nDo not prefer an even multiplier and let the value remain as is\neven if it is odd.\n\nBug: 25740205\n\nauthored-by: Satya Krishna Pindiproli\u003csatyak@codeaurora.org\u003e\n\nChange-Id: Ia60d87d01caef6f45998bffeafc3d6a24f7c7fb4\n"
    },
    {
      "commit": "f92b2175cd4a8d0fa9aca6e660ed4e85f6b7078b",
      "tree": "2077136ed6c73613f0e11dd8f79d2fd43f31f10a",
      "parents": [
        "76fa63ccefbac3ca3e722bc9ba016101858c3cdd"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Mon May 09 11:34:15 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 10 16:01:58 2016 -0700"
      },
      "message": "audioflinger: Update throttling logic in MixerThread\n\nThe throttling logic in MixerThread only keeps track of\ntime spent during sink write. However, on low tier\nAPs and with high sample rate tracks, it is possible\nthat time spent in mixing the tracks is significant.\nThis inturn leads to sink writes returning earlier than\nexpected kicking in (incorrectly) the throttling logic.\n\nTo fix this, update throttling logic to include\nthe time spent in mixing buffers along with the time\nspent in sink write.\n\nauthored-by: Dhananjay Kumar \u003cdhakumar@codeaurora.org\u003e\n\nBug: 28672515\nChange-Id: Iac4994c3084850bb93640c978b4a519db8d7951d\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": "823b18ef45f0593386d9d5d20fbf9a0379ad0ebb",
      "tree": "8245a31aac2dad65d346cad5ae6c25caca7e989f",
      "parents": [
        "375a9c03550cc1bdca9e2cca862d6e549530bac6",
        "3ea004dd80c06c5b366e1a2547ea9b28fffc1865"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 06 00:15:10 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 06 00:15:10 2016 +0000"
      },
      "message": "Merge \"Remove throttle logcat for bluetooth\" into nyc-dev"
    },
    {
      "commit": "3ea004dd80c06c5b366e1a2547ea9b28fffc1865",
      "tree": "85a859d737496e163cea22e688ab20bd28a6a106",
      "parents": [
        "26583ffe69a7601ad29e00094fe66ce795356fab"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 05 16:48:37 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 05 16:48:37 2016 -0700"
      },
      "message": "Remove throttle logcat for bluetooth\n\nDue to reduced buffer sizes for bluetooth it is possible to throttle\nregularly, do not logcat throttle for bluetooth to avoid spamming.\n\nBug: 28286313\nChange-Id: I9a572077a58c8e5cce3d5ac4de3cc6d97d94d7a0\n"
    },
    {
      "commit": "05317d29b27e5fda654bea21b80d4423a03f49b3",
      "tree": "7b1a73073296e1496864a0f8546993c7b0908f2e",
      "parents": [
        "5bdfad1a45a7d5fd03732c75768eef65975660dc"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Tue May 03 16:34:26 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 04 21:34:35 2016 +0000"
      },
      "message": "audioflinger: set flush pending on invalidating offload track\n\nOn invalidating an offload track, the IAudioTrack instance is\ndestroyed and the offload output is released. If it so happens\nthat APM::getOutputForAttr for the new IAudioTrack is called before\nOffloadThread::prepareTracks_l checks and removes an invalid track,\nthe same output can get reused.\n\nThe side effect of this is data present in HAL and below from before the\ninvalidate will be rendered before data from the new seek position\nis rendered. This is unexpected.\n\nTo fix this, set hint to issue flush when an offload track is invalidated.\n\nBug: 28566885\nChange-Id: Ib6c38a3abb600598b87591bac90d03b7150d5216\n"
    },
    {
      "commit": "d0389b874d592b960bdc456c2514a36b082c2c94",
      "tree": "ee34a08571fcbd657040c8f9b7f90deb34adb6c4",
      "parents": [
        "dc2c50bad491d2c0c8a2efc0e24491076701c63c",
        "ea38ee7742e799b23bd8675f5801ef72f94de0f4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 29 14:25:44 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 29 14:25:44 2016 +0000"
      },
      "message": "Merge \"Can now indicate the desired number of notifications (sub-buffers)\" into nyc-dev"
    },
    {
      "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": "dc2c50bad491d2c0c8a2efc0e24491076701c63c",
      "tree": "b1b2eead0896ffa4b095bee9fb0a00c8cc8d5944",
      "parents": [
        "ecd0a41d9a2cc9efbc4ad6d4c91d417461772933"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 21 08:13:14 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 28 15:17:09 2016 -0700"
      },
      "message": "Make max fast tracks configurable using a property\n\nro.audio.max_fast_tracks\n\nRename the currently configured maximum number of fast tracks\nfrom FastMixerState::kMaxFastTracks to FastMixerState::sMaxFastTracks.\n\nThere is no guarantee that the CPU will be able to handle\nthe configured number of fast tracks.\n\nBug: 27564141\nChange-Id: If9af226d839b226503488c3cb20a4bb8950b429d\n"
    },
    {
      "commit": "4a8308b11b92e608cdaf29f73f7919e75706f9a2",
      "tree": "2358eaecf7bb7beafd3341927c1621ac1a594ed3",
      "parents": [
        "88bd61e31184a72e34e5a8c2ae11d034e01845aa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 18 14:10:01 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 19 13:01:54 2016 -0700"
      },
      "message": "Add AudioSystem::getFrameCountHAL()\n\nAnd add comments about declaring methods in binder opcode order.\n\nBug: 28117362\nChange-Id: I3c4426fa4bb3ce9c4a207a44d3bb1103d7fef160\n"
    },
    {
      "commit": "fc302fd9e2d2cbafef771de77c47799488e1c044",
      "tree": "aae0fe55c9cb22243f438b25fc1732a19005917b",
      "parents": [
        "25df0fc0328920c585eb30cc21eb85b74d103eb2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 11 14:11:26 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 11 14:13:04 2016 -0700"
      },
      "message": "Fix audio tee sink debugging tool\n\nBug: 28119692\nChange-Id: Ieb7b41754fab0111602dd29b63b0fd8c9c4b4d2d\n"
    },
    {
      "commit": "eebc3ad457d5b9a1acc0fe0393b770004016a014",
      "tree": "f8ab6a6f1f0fa5872093d6035315afac82bf1415",
      "parents": [
        "7c6a1621ef253989ab44cf68904531b35ae8b0b1",
        "3eaf66b860f9a0d8af0dd4d5ac6adb5b67d7b73a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 01 22:28:07 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 01 22:28:07 2016 +0000"
      },
      "message": "Merge \"audioflinger: fix offload underrun sleep logic\" into nyc-dev"
    },
    {
      "commit": "3eaf66b860f9a0d8af0dd4d5ac6adb5b67d7b73a",
      "tree": "53e01dd5294f835f149b3fcba8334e0353d2cef9",
      "parents": [
        "029aaa6887a86185c451b615fadcfd97b008e9b5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 01 14:44:17 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 01 15:23:22 2016 -0700"
      },
      "message": "audioflinger: fix offload underrun sleep logic\n\nDo not sleep in case of underrun if not enough data has been\nsent to the audio HAL since last flush or standby.\n\nBug: 27898813\nChange-Id: Ic44bed97c7397ec1156d4fe9026c4fa9f00d651c\n"
    },
    {
      "commit": "c526e1ef36f8f0520a059c6cf304e12e86170c26",
      "tree": "058eba391db31963c1808e21c2747c52f9976fee",
      "parents": [
        "1e47cb09db479f29d80c5354a5f5ddc4973ef6a5",
        "646679779a8f952980a5d4219ad9c6f93efc4b92"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 01 16:17:48 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 01 16:17:48 2016 +0000"
      },
      "message": "Merge \"audioflinger: keep wakelock during offload playback\" into nyc-dev"
    },
    {
      "commit": "32f37c22f60b7a1a6ccfa351700f80c03918d4fe",
      "tree": "7bbba0ef3e9a1fc7e48d98681f376d33727580c9",
      "parents": [
        "9887c3e252ec0571ee8637310ea9ec2eec118044"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Mar 31 16:00:32 2016 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Mar 31 16:00:32 2016 -0700"
      },
      "message": "Ignore ro.audio.silent property when playing on REMOTE_SUBMIX\n\nIgnore the effect of the ro.audio.silent property for playback\n threads playing on AUDIO_DEVICE_OUT_REMOTE_SUBMIX as playing\n in those mixes doesn\u0027t make a sound.\n\nBug 27336527\n\nChange-Id: I933cfed29cd72636fd33282e5f2ad05693688b83\n"
    },
    {
      "commit": "646679779a8f952980a5d4219ad9c6f93efc4b92",
      "tree": "5724d8865f5060b1e60ed5744279fcb0790493cd",
      "parents": [
        "029aaa6887a86185c451b615fadcfd97b008e9b5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 30 18:19:46 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 30 18:19:46 2016 -0700"
      },
      "message": "audioflinger: keep wakelock during offload playback\n\nAdd a system property ro.audio.offload_wakelock to select\nif a wakelock should be kept during offload playback while waiting for\nwrite completion callback.\nThe default is yes, keep the wakelock.\n\nOn some platforms, the cost of entering or exiting suspend is so high\nthat is it better to not release a wakelock at all rather than releasing\nit periodically.\n\nBug: 26208297\nChange-Id: Ib41c7e4ed9c8c0c063363eb9fe99a2ecc81b521b\n"
    },
    {
      "commit": "0be3be0cf5530d6faf655c325ec9d94a2bd53564",
      "tree": "3863687a9e7e04f67d4a1aa2c6a249ef8e07999f",
      "parents": [
        "45993ad8833063a50af83f76ec1ddeba673b5277",
        "e0a269a5f75956efdf78a9cacaefc428b352730c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Mar 28 23:50:02 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 28 23:50:02 2016 +0000"
      },
      "message": "Merge \"Fix FastTrack creation buffer count irregularity\" into nyc-dev"
    },
    {
      "commit": "9ce67b524236db52eadf558e7765775acad89f1f",
      "tree": "003ec6dcd057d91ccc84cfaa714d5b6a6b0ce650",
      "parents": [
        "15ac558b0f1873dbe0d9c1e6fed042a349f8b5a4"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Sep 30 11:40:47 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 25 08:06:28 2016 -0700"
      },
      "message": "Park FastCapture in HOT_IDLE while processing new parameters\n\nWithout this, FastCapture can starve RecordThread delaying\nhandling of new parameters.\n\nBug: 24667895\nChange-Id: Idb7113b7b0f96f2c35c655b6fdb3279f119ad1a3\n"
    },
    {
      "commit": "c05b8d7df46619d3474356241d47655478b8bc82",
      "tree": "27f4ef067be509b845673b603d52e723b0146fec",
      "parents": [
        "f4044e892d3939fb99ee545a5e8e8e2999f476b2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 24 09:48:17 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 24 13:34:44 2016 -0700"
      },
      "message": "Add AutoPark template class and use to control FastMixer\n\nBug: 24667895\nChange-Id: Id739a109aca13664b9390d2f9d9616fa2f88d188\n"
    },
    {
      "commit": "e0a269a5f75956efdf78a9cacaefc428b352730c",
      "tree": "df39c63afd12c3009c56a903779e2533aacf970f",
      "parents": [
        "5a898236109c3cb705241e66583d80df413198d2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 23 15:13:42 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 23 15:30:21 2016 -0700"
      },
      "message": "Fix FastTrack creation buffer count irregularity\n\nFor small values of buffer framecount, AudioFlinger may create a\nnormal track.\n\nBug: 27817933\nChange-Id: I7c69491fc1f2b204e14286fb4c2210c5983afb8b\n"
    },
    {
      "commit": "c42e9b462661673dff480ee71757a58b0f806370",
      "tree": "c9d53e761500f2466b7b8c4cfeb78b072d424e29",
      "parents": [
        "02c4f1c02b832868bbae2bf2c62039e54dc0b6d4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 21 11:35:03 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 21 12:05:28 2016 -0700"
      },
      "message": "Fix build warnings\n\nChange-Id: Idfdaff3a7a8f60cd8817bd306bfba28020a391c8\n"
    },
    {
      "commit": "7be6866af78a86a89113e9b680f1a6416ae1f711",
      "tree": "e89bc6fbcaecddfe83a01af125880b284f7ed496",
      "parents": [
        "76f27134fb546340154216212d84243d56a8928a",
        "57c4e6f7464d458eb52d209c2a63524913d6406d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sat Mar 19 00:40:45 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 19 00:40:45 2016 +0000"
      },
      "message": "Merge \"Fix build warnings\" into nyc-dev"
    },
    {
      "commit": "57c4e6f7464d458eb52d209c2a63524913d6406d",
      "tree": "b7fae46bbc981c62460d572b51d6f68b9f9b847d",
      "parents": [
        "560a198f1f95a085e24944b20df536e75e21cedb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 18 14:54:07 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 18 17:36:37 2016 -0700"
      },
      "message": "Fix build warnings\n\nChange-Id: I33178dbe0bfc087d6599579ca0529ad853c669ed\n"
    },
    {
      "commit": "76f27134fb546340154216212d84243d56a8928a",
      "tree": "86365d4f0c5611a78c73fdb723b159dfa919274f",
      "parents": [
        "1c65a1d6e4a4a7c7a534aa6b178f4bb6e0967fb9",
        "8379b72b3c7febc5268bc8f9c152fd433a1e6c70"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sat Mar 19 00:27:21 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 19 00:27:21 2016 +0000"
      },
      "message": "Merge \"Fix copy and paste error\" into nyc-dev"
    },
    {
      "commit": "1c65a1d6e4a4a7c7a534aa6b178f4bb6e0967fb9",
      "tree": "342906f6685f5b8f8614c10d2976df31e58f988b",
      "parents": [
        "c3418d0c742ecf6ee9719512325db974f4b743f3",
        "ec6a70345fc99cd9f8461749a7656b8240874a62"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sat Mar 19 00:27:10 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 19 00:27:10 2016 +0000"
      },
      "message": "Merge \"Add systrace for normal read()\" into nyc-dev"
    },
    {
      "commit": "9cd7ad101315e0bff4c5f171706c6f80c7e22644",
      "tree": "56ceda68334ad7b45e20ae40a8b4300239b86836",
      "parents": [
        "7f7052f5e45f8eb1df80a6978e0095d9e9c9eded"
      ],
      "author": {
        "name": "vivek mehta",
        "email": "mvivek@codeaurora.org",
        "time": "Thu Mar 17 00:18:29 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 18 15:46:14 2016 -0700"
      },
      "message": "audio: allow standby for direct track\n\nDelay standby for offload track use case is not suitable for direct\ntrack in PCM format, because player torn down doesn\u0027t necessarily happen.\n\nTo avoid AP looping infinitely, allow standby right after direct track\nin PCM format is paused.\n\nBug: 27746493\n\nChange-Id: Id0026ac9891a12acc4affa446b2bc841559fcc28\n"
    },
    {
      "commit": "8379b72b3c7febc5268bc8f9c152fd433a1e6c70",
      "tree": "2055991561ab91205b6e2327cece99eb2a375c37",
      "parents": [
        "560a198f1f95a085e24944b20df536e75e21cedb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 18 14:54:17 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 18 15:06:02 2016 -0700"
      },
      "message": "Fix copy and paste error\n\nChange-Id: I0976f5651e0004948108ef43eed3f89e21ecb38b\n"
    },
    {
      "commit": "ec6a70345fc99cd9f8461749a7656b8240874a62",
      "tree": "a1a7893d237f7d74128c0389ea4400c43fafdc19",
      "parents": [
        "560a198f1f95a085e24944b20df536e75e21cedb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 14 07:40:23 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 18 15:00:23 2016 -0700"
      },
      "message": "Add systrace for normal read()\n\nChange-Id: Icba9c9fa648909604556305da7e2d9548f5b4b0c\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": "517161856d74f5fe39cce131f29b977bc1745991",
      "tree": "c12acaeb7597dd99c1a5f0c96d5af7f8a4b7b52a",
      "parents": [
        "db52e5e3dc15f7233ccd9c128fe43f2b2f58b29b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 29 18:00:56 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 02 17:40:18 2016 -0800"
      },
      "message": "audio flinger: fix offload track underrun\n\nFix offload track underrun detection causing early disabling\nof offloaded audio tracks.\n\nOptimize sleep time in case of underrun to avoid spinning while\nwaiting for new data.\n\nRe-enable offload when streaming\n\nBug: 26668110\n\nChange-Id: I874728c69647ac05e1effb84c48700a6d0ac7435\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": "e736431c69e2a00468d140d2af97b63e0e5aa83a",
      "tree": "e9ac84c22b3e0b473deafb3df0afad84f391b9b0",
      "parents": [
        "5031b2f3ac5223587e48fc8463bec24cb62495ba",
        "58545be2ce4e701c8c37401edcc126a8b683890d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 25 20:19:37 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 25 20:19:38 2016 +0000"
      },
      "message": "Merge \"audio policy: add device for audio bus\" into nyc-dev"
    },
    {
      "commit": "c54b1ffc92b8ad27608a8af21033d7cab33cb3a0",
      "tree": "f0669f28e645f742f06193afb8c6eb30b84a9478",
      "parents": [
        "af9c466b91eb43ffa4590b559fa8bb1003191ab5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 23 14:07:07 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 23 17:26:37 2016 -0800"
      },
      "message": "Fix AudioTrack presentationComplete regression\n\nBug: 27310929\nChange-Id: Id52299660d90b07220a4fd9996da53fe755a41f1\n"
    },
    {
      "commit": "58545be2ce4e701c8c37401edcc126a8b683890d",
      "tree": "a7a404115488202a1cb438845aaefe6531aae963",
      "parents": [
        "f214d6936f66052bfabc51e3355f800e41b511f2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 18:54:20 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 18:54:20 2016 -0800"
      },
      "message": "audio policy: add device for audio bus\n\nAdd audio device category representing a bus in the\naudio subsystem. E.g a set of channels in MOST automotive bus.\n\nBug: 25448664\nChange-Id: Id00da57dc45037d4d8062e9a747c423940611539\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": "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": "e10393e72454bfd8298017dc193faf424f4e9a8f",
      "tree": "e7d3946c0e12b8f50e351a401eaa35986e2d0f2d",
      "parents": [
        "e8c8ed47ca15aa6be83c6feef89e27a832e763e9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 12 13:59:33 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 12 00:17:13 2016 +0000"
      },
      "message": "Fix audio timestamp computation for pause, stop, and dynamic speed changes\n\nTimestamp on pause and underrun (stop) do not reflect actual position.\nTimestamps do not account for dynamic changes to track speed / sample rate.\n\nBug: 11085154\nBug: 17552775\nChange-Id: I0e5e40ab3eaee82f0c91b9f399089698a0b1947e\n"
    },
    {
      "commit": "3f0c902beb53a245c9db35e871607dba05b8d391",
      "tree": "93b456b76dd9504e53de955f75c5c6a4f3d2be7c",
      "parents": [
        "00803f7e94052144ecf476268bc717191ee29865"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 15 17:49:46 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Feb 10 15:57:51 2016 +0000"
      },
      "message": "Add AudioRecord timestamps\n\nBug: 13569372\nBug: 22886739\nChange-Id: Ibc81afefb733d23676a632a0f2da31163fdbe05f\n"
    },
    {
      "commit": "03c48d5afcb3dfc1e43df93e1f3b3b3e9292e148",
      "tree": "14e38bde5515cc54b0295faf92c13c37097f53e7",
      "parents": [
        "16558ea318c3cf25a945fc1771572f489763527e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 27 17:25:17 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 01 11:11:51 2016 -0800"
      },
      "message": "Add limiter for mono blend\n\nBug: 26904791\nChange-Id: I76b16e70871cd9fc0a9b8badc66f27069fabe1cb\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": "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": "197f766a0e3c37efe4fe941553511c6022cf10b1",
      "tree": "342baa9626fcb0c977ea72a37f00932be613a04c",
      "parents": [
        "59950b403076a94828668902d30215ac5a733902",
        "42537be61479e59c4718e1304364551c1454f63c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 12 00:53:45 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 12 00:53:45 2016 +0000"
      },
      "message": "Merge \"audioflinger: fix standby delay on A2DP output\""
    },
    {
      "commit": "42537be61479e59c4718e1304364551c1454f63c",
      "tree": "6afec3010213d47681980d4c9ac0cda9aaa81cab",
      "parents": [
        "a3e696da3872250bca66a62d93a3b6114e20c27d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 08 17:16:42 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 11 16:20:17 2016 -0800"
      },
      "message": "audioflinger: fix standby delay on A2DP output\n\nMake sure that standby delay is never less than the audio flinger\ndefault on A2DP output.\nDue to variable latency and amount of buffering in A2DP sinks,\nan agressive standby delay could lead to truncated audio.\n\nBug: 25830539.\nChange-Id: I38be37ad346f5f4bf8303d3db4e3e911bf637968\n"
    },
    {
      "commit": "64f1901bdddf464c8f29bed34e3449762873b3e9",
      "tree": "78b461038b8ee9ab49825d180c9d21347831c9a0",
      "parents": [
        "38b85c29b5be56e660b162da8a13129ac20f8daf",
        "2ddee19245641e86bca436dda23a0f5089bf2ab5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 08 23:17:57 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 08 23:17:57 2016 +0000"
      },
      "message": "Merge \"Add setMasterMono and getMasterMono\""
    },
    {
      "commit": "2ddee19245641e86bca436dda23a0f5089bf2ab5",
      "tree": "ee665bb2097db2710211eb1d834510201b02ab59",
      "parents": [
        "df9e6aaf716279baf0e27b99acf10005924245ed"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 18 17:34:44 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 08 14:09:31 2016 -0800"
      },
      "message": "Add setMasterMono and getMasterMono\n\nBug: 15283594\nBug: 22700363\nChange-Id: I32dc1fcecf285967a61bd508af3bb299595db57d\n"
    },
    {
      "commit": "8a397d583a4f4cf24ad88facaf2fd33990cfb811",
      "tree": "3d35ebfc3bfbc18e0983e35d1f59892c2c3ee42c",
      "parents": [
        "df9e6aaf716279baf0e27b99acf10005924245ed"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Wed Dec 02 11:27:57 2015 -0800"
      },
      "committer": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Tue Jan 05 07:04:37 2016 -0800"
      },
      "message": "Adding UNPROCESSED to the available audio_sources\n\nbug: 25564291\nChange-Id: I86d8feda4d687352f98b640819211207a06d6b50\n"
    },
    {
      "commit": "438e7572c83674f4b9e6184f32f3dc94cd50524e",
      "tree": "b17af7ebabe29805ff116988b9fd5663bde75417",
      "parents": [
        "7b279bbc24139ee1e01b58055ca94926ec18e2e9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Dec 14 15:51:17 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Dec 14 15:51:54 2015 -0800"
      },
      "message": "AudioFlinger: change logcat error to warning\n\nChange wakelock token error to warning if AudioServer.java\nhasn\u0027t issued systemReady() yet (from boot or audioserver died).\n\nBug: 26069693\nChange-Id: I8ab1ec06a30a476e058bf0dde50bfbbc60243570\n"
    },
    {
      "commit": "dcb346b7dc5b88c3e85db8a70bbd6a2fee8192b9",
      "tree": "e0038e85e097843f469a6befe9fae1014435f4f5",
      "parents": [
        "ebdddf82b07fa2c4134c3c00dbbbaa1ad3286726"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 09 10:47:29 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 08 11:29:11 2015 -0800"
      },
      "message": "Run audio services in audioserver instead of mediaserver\n\naudioflinger, audiopolicy, (fm) radio, soundtrigger moved to audioserver.\nmedialog is removed from mediaserver.\naudioserver has same permissions and rights as mediaserver.\n\nmediaserver is allowed to specify client uid to audioserver.\n\nSubsequent CL will add medialog to audioserver.\n\nTBD: Pare down permissions.\n\nBug: 24511453\nChange-Id: Iccaa08b874a502710d142e72f8abbb3d97c44cfa\n"
    },
    {
      "commit": "2a4e18da8ee0521a48285643586159946298caef",
      "tree": "dfc925389d78d5d6fe872665d9fb5221a1ece9d2",
      "parents": [
        "74721e5cf4b007cfcb644224df1f50a64891a412",
        "f7d65ee34f64e8fad9c5af3f11da783193caf5f9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 03 00:18:21 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 03 00:18:21 2015 +0000"
      },
      "message": "Merge \"Add logging to help diagnose a rare bug\""
    },
    {
      "commit": "818da521b6a487518f54614b9eba68957a8d8aeb",
      "tree": "2bebe90e0200afccc7833698cc2eb89507204e1b",
      "parents": [
        "2f90c51d42efa881a9e54e4f4efadf99398304f9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 02 13:53:26 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 02 13:53:45 2015 -0800"
      },
      "message": "Fix build warnings\n\nChange-Id: Ic329a9852589247ed797b6a6cfed735ff3af184a\n"
    },
    {
      "commit": "f7d65ee34f64e8fad9c5af3f11da783193caf5f9",
      "tree": "a4480f4fedd254ad9aba751bcc1c3620beb9cd3e",
      "parents": [
        "4d81d15fdaf302d20740bcaaa3100b62dd49e243"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 02 13:45:01 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 02 13:46:43 2015 -0800"
      },
      "message": "Add logging to help diagnose a rare bug\n\nBug: 25911696\nChange-Id: Idca44ed873f0a9fa911e9cb1c3a09b4e7e4f23eb\n"
    },
    {
      "commit": "2f90c51d42efa881a9e54e4f4efadf99398304f9",
      "tree": "1c5096fb8a6eb67640f836fedf2289d8dcb5b0bc",
      "parents": [
        "3f273d10817ddb2f792ae043de692efcdf1988ae"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 02 11:40:09 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 02 20:55:56 2015 +0000"
      },
      "message": "Don\u0027t place large objects on the stack\n\nBug: 25020816\nChange-Id: Ife4da9fc3000e645f654f2eb28b37ad3a89d61f9\n(cherry picked from commit fc39dd9f653754315df3ff7f76b8a193829a76e8)\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": "d60560af7cb559762593161c8202459cc01fb0f5",
      "tree": "d2913f6eb8ded236fba95d7920cca8f7906288e6",
      "parents": [
        "0443ba44a1ebda31bc3642cd91a0570694f29ec1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 10 11:31:20 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 29 16:55:40 2015 -0700"
      },
      "message": "audio policy: add support for external audio sources\n\nAdd support for activity on external audio sources.\nAn external source reflects activity on an input audio device\nthat must be controlled (both routing and volume) by the\naudio policy manager.\nFirst, the input device must be connected with setDeviceConnectionState().\nThen, the source activity is indicated with startAudioSource() and\nstopAudioSource() APIs.\nstartAudioSource() indicates the source device with an audio port configuration\nand the use case by the audio attributes.\n\nOnce a source is active, its routing and volume are controlled by the policy manager\nas it would for a software source (AudioTrack).\n\nChange-Id: If5805d58a4356b2f681f1aabf54375f62b55b98a\n"
    },
    {
      "commit": "10cfc14fadae08cd5806c4834e28aa9f743f550e",
      "tree": "61ff6805c1197513bb6a7e802b99c9229bce1875",
      "parents": [
        "386d2fe3c282899f5395a120121e082f8eca1dc6",
        "937c34741e476f26ddd0ff28a2af5e1bcd96895c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 28 19:47:35 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 28 19:47:35 2015 +0000"
      },
      "message": "Merge \"Add missing entries for input and output flags\""
    },
    {
      "commit": "937c34741e476f26ddd0ff28a2af5e1bcd96895c",
      "tree": "637e3baea5f3ae7c16480232c6f6a8b1dd99f8bc",
      "parents": [
        "cdd1dfd23e9976536e2dad103b6c357927fca27d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 28 10:21:06 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 28 10:21:06 2015 -0700"
      },
      "message": "Add missing entries for input and output flags\n\nBug: 24141510\nChange-Id: Ia151bc7d25d72864992888c33547a34adf460a9b\n"
    },
    {
      "commit": "060b582b37f55b758a41b0cc26dc1ff6d112814f",
      "tree": "8c4ff6e6c03cef46f38f6fd6f7a4c837420fa45e",
      "parents": [
        "2d93abfb06455176b7f2fcde0d9fd4dfe7a0973c",
        "b171ba8ce83ebb5abc2de9a171a15dc974756d3d"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Sun Sep 27 15:12:31 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Sep 27 15:12:31 2015 +0000"
      },
      "message": "am b171ba8c: am ffce26c0: am f99498ee: CameraService: Use SCHED_FIFO for request queue thread in HFR\n\n* commit \u0027b171ba8ce83ebb5abc2de9a171a15dc974756d3d\u0027:\n  CameraService: Use SCHED_FIFO for request queue thread in HFR\n"
    },
    {
      "commit": "f99498ee4de7123e2fd71778c6877be44fbd1506",
      "tree": "76fc5f13ab660c053101f09a701187259952e90a",
      "parents": [
        "8595eaab5884bb74d884d366ad6e371a296bf576"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Sep 25 16:52:55 2015 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Sat Sep 26 11:22:20 2015 -0700"
      },
      "message": "CameraService: Use SCHED_FIFO for request queue thread in HFR\n\n- Move SchedulingPolicyService from audioservice to mediautils\n\n- When starting up a high speed stream config, set request queue thread\n  to SCHED_FIFO using SchedulingPolicyService\n\nBug: 24227252\nChange-Id: I224b59142bd111caf563779f55cddd62385b9bac\n"
    },
    {
      "commit": "0a01c2fb68e6f35905de8dfaf938d099cd48587d",
      "tree": "43fe76eeaa8bc22a229875722ed62f51cf972ee0",
      "parents": [
        "71d7a944b5a26787c94e32f652245b61c606c485"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 21 12:44:54 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Sep 22 15:30:43 2015 -0700"
      },
      "message": "AudioFlinger: Clear record buffers when starting RecordThread\n\nBug: 24267152\nChange-Id: I58c55e56b85067b71e4e300f947b4dfc159637ba\n"
    },
    {
      "commit": "c06f0ef67f02f88e01e2b2679e83c87628dbfc1a",
      "tree": "ab5e58f6145f75e9a823057f4001fd9209901831",
      "parents": [
        "74adefb32f6694d45416d11b5c3000b404e94506",
        "b7b97b9d897581b30f4bba78ec360474646c230a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 11 03:49:54 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 11 03:49:54 2015 +0000"
      },
      "message": "am b7b97b9d: am 48e879db: am a2ab4505: audio flinger: force audio path start from normal mixer\n\n* commit \u0027b7b97b9d897581b30f4bba78ec360474646c230a\u0027:\n  audio flinger: force audio path start from normal mixer\n"
    },
    {
      "commit": "a2ab4505c807f42afe34809409c4e85d91618a8c",
      "tree": "cffdeb827eb93870aa692b8a9d3a0842ff8405de",
      "parents": [
        "0f05031545e43c8fe49a9dda0cfd9dce202d1ef3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 09 12:25:51 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Sep 10 10:31:27 2015 -0700"
      },
      "message": "audio flinger: force audio path start from normal mixer\n\nThe audio HAL wakes up and configures the audio path when receiving\nthe first write() in standby state. This causes a certain amount of\nprocess to take place in the mixer threads which is problematic for\nfast mixer running at FIFO priority.\n\nWe now force a fake write() of 0 bytes from normal mixer to trigger\nthe audio path configuration before starting the fast mixer.\n\nBug: 23791972.\n\nChange-Id: I54311b337fda956444846f5d2f53a3263d54e04b\n"
    },
    {
      "commit": "f87c2f5eb4e37f0950962e31b9ca49e32f5b0864",
      "tree": "ccfb48c882e1be213fb7db96d9016be40adadebf",
      "parents": [
        "1f04884c0f4d0eafe7ce8f09b0e5302ff3a86ea6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 21 08:03:57 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 08 13:47:23 2015 -0700"
      },
      "message": "dumpsys was missing \"processing\" for format and frame size\n\nChange-Id: I6931b18a6a85bf0638d659e31bca5aa6c8cf62bf\n"
    },
    {
      "commit": "5ce059661dcbab8924edab400681fc408ee76123",
      "tree": "82709f0f74d4c8e89e8acdd751784a5f9103d620",
      "parents": [
        "9f00e69c5f2702b66e9bdf8f4f75f99a338738d7",
        "eb9487e10294a4e73977f460f30eeaff503acd21"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 24 20:28:43 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 24 20:28:43 2015 +0000"
      },
      "message": "Merge \"Fix capture overruns at non-primary sample rate\" into mnc-dev"
    },
    {
      "commit": "a97630bda8815958587ca31adb2d37090022af25",
      "tree": "edff2365d23d227a22248f30dd8acf217801fa8d",
      "parents": [
        "17d0efd17fbb2573adcde8dcbe77726f622817da"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 22 23:27:24 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 22 23:31:54 2015 -0700"
      },
      "message": "Fix record memory buffer allocation for legacy upmix/downmix\n\nBug: 22173057\nChange-Id: I8f5056ff5a1252c71a3d3b354440551bcd9fd466\n"
    },
    {
      "commit": "eb9487e10294a4e73977f460f30eeaff503acd21",
      "tree": "fdd7dfd6fd2074f9d0684ed9b11dd851dc469d50",
      "parents": [
        "8f0547a954b39d5750488be7e060ebe1ebfdf666"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 22 09:15:17 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 22 12:20:43 2015 -0700"
      },
      "message": "Fix capture overruns at non-primary sample rate\n\nand small buffer size.  Also:\nPull out the magic number \"12 ms\" to a named constant.\nRemove obsolete AudioFlinger::mPrimaryOutputSampleRate.\n\nBug: 22662814\nChange-Id: I261f75a222c4505a84aad2493d251bd2dea59f68\n"
    },
    {
      "commit": "ca5e6143740299c877d69e97f7968cd04476d32c",
      "tree": "50101b57406c5abce066ec90120d91d3dfd0152b",
      "parents": [
        "bc24bb8a552097e7975d0c16fad80158b542ba62"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 14 09:42:29 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Jul 17 20:56:04 2015 +0000"
      },
      "message": "AudioFlinger: fix repeated underruns for compressed audio\n\nThe AudioFlinger kept pausing the audio when playing compressed AC3 or DTS.\nThis caused pause/resume loops that were hard to break out of.\n\nThe AudioFlinger was thinking that the compressed audio was PCM\nbecause the HAL was in PCM mode playing SPDIF data bursts.\nIt also thought that EAC3 was at 192000 Hz instead of 48000\nHz because the data bursts are played at a higher rate.\n\nThis CL adds more calls to the shim that separates the AudioFlinger.\nNow the AudioFlinger gets information about the HAL sample rate,\nchannel masks and format from the shim instead of calling the HAL directly.\n\nThe AudioFlinger now uses a different threshold for detecting\nunderruns when the audio is compressed.\n\nBug: 19938315\nBug: 20891646\nChange-Id: Ib16f539346d1c7a273ea4feb3d3afcc3dc60237d\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "4b33e0838fdb1b5e545449add02005916b512c99",
      "tree": "e38ce9db4984ec035c05ffa7832e2bad50fe2bd2",
      "parents": [
        "9ad9e7471629f7b9061569a50555a1722047f38d",
        "0f0631eb55b1f0a7f4b62212b78a3faa0b49919b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 13 15:52:35 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 13 15:52:36 2015 +0000"
      },
      "message": "Merge \"audioflinger: flush HAL when transitioning to next direct track\" into mnc-dev"
    },
    {
      "commit": "7c1ec5f038e63a5eb8b04434577c25bc23f5f410",
      "tree": "f6b8feda43ba0bb6666171b57318ad3cea48a45e",
      "parents": [
        "54c0659b9efa72d11997c590c4d377c44789c7fd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 09 14:52:47 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 10 10:58:41 2015 -0700"
      },
      "message": "audio: several fixes in audio routing callbacks\n\n- audio policy:\nForce device change to ensure new audio patch creation\nupon first track activity on a given output.\nFix function device_distinguishes_on_address() which could mistake\nsome output device with remote submix input device.\n\n- audio flinger:\nReduce number of binder calls upon new client registration by only\nsending ioConfigChanged() callbacks to newly registered client.\nFix first patch after output thread creation not triggering an\nioConfigChanged() callback.\n\n-audio system:\nForce client registration upon routing callback installation to force\nnew ioConfigChanged() callback from audio flinger.\n\nBug: 22381136.\n\nChange-Id: Ieb0d9f92f563a40552eb31bc0499c8ac65f78ce4\n"
    },
    {
      "commit": "0f0631eb55b1f0a7f4b62212b78a3faa0b49919b",
      "tree": "0ccee662c252bcb9741f233e5bdc6e42278c3da5",
      "parents": [
        "065f6572752dca646b7d60df8e80b6d4ac159281"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 06 18:01:25 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 07 19:30:48 2015 -0700"
      },
      "message": "audioflinger: flush HAL when transitioning to next direct track\n\nSend flush command to the audio HAL when transtioning to\nnext track on direct output thread, even if both tracks are in the\nsame audio session.\n\nCommit 43b4dcc to fix issue 21145353 did only flush the HAL if the\naudio session was different for the new track because the logic was\ncopied from the offload thread.\n\nBug: 22019044.\nChange-Id: I89b217580023ed7449a58e9bf3dc068ce7a84487\n"
    }
  ],
  "next": "b9d73333cce3f9da3a7a0b33589f6bbe0f992a92"
}
