)]}'
{
  "log": [
    {
      "commit": "7c29ec95f494d241faa07d0d70579729520e3114",
      "tree": "9a68f526ee810c89529e494849870f009dce4e0d",
      "parents": [
        "b45ee92406fbd90c14b1000f670d7e0f35e7688b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 20 17:54:22 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 21 10:39:14 2017 -0700"
      },
      "message": "audioflinger: volume control to HAL for VoIP streams\n\nDo not apply stream volume in software for special VoIP output\nstream mixers but send it to the HAL instead.\n\nBug: 64392515.\nTest: Fi calls\nChange-Id: I698a1a0ad17d672d09187529dcbc5d259284e4af\n"
    },
    {
      "commit": "7aa0ccbcb6e8d35c894356015c23574619bcf648",
      "tree": "dc06cec53d749f416621f685f1e8c0ebff7bc509",
      "parents": [
        "7124c1985b535a7862cd8f2706386a2a0ba676b2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 28 11:12:52 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 28 14:16:19 2017 -0700"
      },
      "message": "audioflinger: fix mmap device selection\n\nPreserve initial device selection on mmap streams in order to\nreuse it when a new client starts on the same stream so that\naudiopolicy does not use the default route for the new client.\n\nBug: 64981153\nTest: verify AAudio playback over MMAP with forced device selection to\nspeaker while headset is connected.\n\nChange-Id: I7c117c3c0f8e7ad08f8e63ea804c19ce21808874\n"
    },
    {
      "commit": "4ecf14419c0857986c1cff6c59cd1f71a9c6013f",
      "tree": "a6b56266b2e1dbbc514244a3b2d6679b5bf10e59",
      "parents": [
        "c7f764ae1917783ac1721067cf4085c3271dc821",
        "03e1cd73c64654d096243325ac3e6dc3f0b6e2fe"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 18 00:41:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 00:41:56 2017 +0000"
      },
      "message": "audio flinger: fix AEC and NS suspend logic am: d8365c54d0\nam: 03e1cd73c6\n\nChange-Id: I1df3309a9170f104016b969b285f47179a4ae55d\n"
    },
    {
      "commit": "d8365c54d049aade9e02ccae722f311f846cad9a",
      "tree": "b0678982480e7a46b21fd0a855fd1cfd242ffdb1",
      "parents": [
        "30bf42ca7242f5f7849cbe7ce61fc994b88c5b56"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 16 15:27:05 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 17 15:26:56 2017 -0700"
      },
      "message": "audio flinger: fix AEC and NS suspend logic\n\nMake sure we suspend/restore AEC and NS only when the suspend condition\nactually changes to avoid mismatch in number of suspends/restores\ncausing the ref counting mechanism to leave the effects in suspend mode\nwhile they should not.\n\nAlso clear the suspend state on an effect session before parking it in\nthe orphan chains list so that it is in default state whne attached to a\nnew record thread.\n\nBug: 63015903\nTest: verify that switching BT SCO on/off with Duo enables or disables\nAEC and NS accordingly\n\nChange-Id: I4d0f0bf818deca3952da3c67bb7e83cb500429c7\n"
    },
    {
      "commit": "cb4dae216758d9e9a28050f65097f1ce905c03e9",
      "tree": "4c3c49679384d70006675e9e06c7e8e8117e206c",
      "parents": [
        "0acb3209107802e2ab116f8374aab886579729bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 01 19:39:32 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 12 12:17:33 2017 -0700"
      },
      "message": "aaudio: indicate client UID and PID to audio flinger\n\nImplement correct indication of client UID and PID to audio flinger\nfor AAudio MMAP streams in both exclusive mode and shared mode.\n- Add start/stop client methods on MMAP streams used only when the MMAP\nstream is in AAudio service and carries a mix of shared streams.\n- Add \"In Service\u0027\" indication from \"client\" side to AAudioServiceStreamMMAP\nso that the behavior can be adapted accordingly.\n- Modify logic on audio flinger side with regard to mmap tracks and\naudio HAL stream activity:\n  - use same audio session for all clients on a same stream to match\n  audio policy logic to share same direct output stream for clients on same\n  session. This is also more consistent with current volume and effect\n  handling as all MMAP  clients sharing the same output stream have the\n  same volume and use case.\n  - start/stop the HAL when the stream is started/stopped with the initial client\n  handle (returned when the stream is opened) but do not create a track.\n  AAudioService implementation will always send an additional start command before\n  first client starts and a stop command after last client stops,\n  in both shared and exclusive mode.\n  - start/stop a track only if the start/stop stream command is received\n  with a handle different from the initial handle.\n- Allow more than one active client from the same UID on a MMAP input in audio policy.\n\nBug: 62950008\nTest: verify playback and capture in mmap mode\nMerged-In: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\nChange-Id: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\n"
    },
    {
      "commit": "a54f1283fdd9adbd64ecca4e14af56aaa0e8c825",
      "tree": "cdadd19276119f775480482778c2df15a6ae264f",
      "parents": [
        "20e6916035865710b7a30ac7f2eac1311e2c2e70"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 01 19:39:32 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 11 18:21:40 2017 -0700"
      },
      "message": "aaudio: indicate client UID and PID to audio flinger\n\nImplement correct indication of client UID and PID to audio flinger\nfor AAudio MMAP streams in both exclusive mode and shared mode.\n- Add start/stop client methods on MMAP streams used only when the MMAP\nstream is in AAudio service and carries a mix of shared streams.\n- Add \"In Service\u0027\" indication from \"client\" side to AAudioServiceStreamMMAP\nso that the behavior can be adapted accordingly.\n- Modify logic on audio flinger side with regard to mmap tracks and\naudio HAL stream activity:\n  - use same audio session for all clients on a same stream to match\n  audio policy logic to share same direct output stream for clients on same\n  session. This is also more consistent with current volume and effect\n  handling as all MMAP  clients sharing the same output stream have the\n  same volume and use case.\n  - start/stop the HAL when the stream is started/stopped with the initial client\n  handle (returned when the stream is opened) but do not create a track.\n  AAudioService implementation will always send an additional start command before\n  first client starts and a stop command after last client stops,\n  in both shared and exclusive mode.\n  - start/stop a track only if the start/stop stream command is received\n  with a handle different from the initial handle.\n- Allow more than one active client from the same UID on a MMAP input in audio policy.\n\nBug: 62950008\nTest: verify playback and capture in mmap mode\nChange-Id: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\n"
    },
    {
      "commit": "2c6c3bb76b2fa18ed3536331a1700250bd04c7ce",
      "tree": "2bdd2a6e5f8a2ba988a41d76b390827bfa68a964",
      "parents": [
        "2da80c13523113c4d93c3fe1b11ac16cd22b6d0e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 16 14:01:45 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 22 15:01:28 2017 -0700"
      },
      "message": "AudioFlinger: Log Record and MMap thread events\n\nAlso update track dump for better grouping and consistency.\n\nTest: adb shell dumpsys media.audio_flinger\nBug: 62700410\nBug: 62701585\nChange-Id: I3a6e76eac871cb08ff14d45f7d3992a6e7fba045\n"
    },
    {
      "commit": "cc49b266bb2a6dcc4249afe26f6374f48b753396",
      "tree": "cbc3930f0a6f8d611a2789307156a20d9013d747",
      "parents": [
        "121c79d2f8a980d1e55db5af8b8c48281072ca8b",
        "f12f9ca0bef555f59b4ba34f220207e9a20f2875"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Fri May 05 00:34:48 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 05 00:34:48 2017 +0000"
      },
      "message": "Merge \"Fix wait time for audio threads in suspend mode\" into oc-dev am: 24fd2f7d29\nam: f12f9ca0be\n\nChange-Id: I31eac5f1953eb00c253a140dd9d3959055936eba\n"
    },
    {
      "commit": "1bb9082596c9cac2995dc9b4465a7c6d5666d099",
      "tree": "7d3b5fc5f617f395167f07282d686857e15ac032",
      "parents": [
        "01506e4ad26d1f1bf5b81121a8d17b3305940eab"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Tue May 02 18:31:48 2017 -0700"
      },
      "committer": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Thu May 04 15:21:18 2017 -0700"
      },
      "message": "Fix wait time for audio threads in suspend mode\n\nBetter estimation of wait time in suspended audio threads.\n\nBug: 34772697\n\nTest: phone calls with BT headset.\nChange-Id: Icf99c0671def810b57332a321e4de4680697715b\n"
    },
    {
      "commit": "bf49308851509d38dbf3f57d9682a819d9f983c9",
      "tree": "89168af93deeb8337376b130e40db86179f4a4d2",
      "parents": [
        "064ac067e3e9c2e68d363aa5db57cdd6e2911cdd"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Apr 17 17:37:12 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Apr 17 17:43:36 2017 -0700"
      },
      "message": "audioflinger: Make use of android-base/macros.h\n\nReplace local definitions of \"array size\" macro, and\ndeclarations of non-copyable objects with corresponding\nconstructs from android-base/macros.h.\n\nAlso change \"protected:\" to \"private:\" for classes\nnot designed to be inherited.\n\nChange-Id: I2d1e6d153511ed84d52fe6377879f83258890653\nTest: make\n"
    },
    {
      "commit": "2dc0a5b768b5bac4ab017d3da68b1e97a162296f",
      "tree": "776df15bebc40b62d3edffbdceb17a71e33aeb4b",
      "parents": [
        "0e335f151fbd115d9173741cbe0f87ce38bd3d4d",
        "eef598c5539aa2be5a106f2483b19e368e4b8c0e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 13 00:47:38 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 13 00:47:39 2017 +0000"
      },
      "message": "Merge \"Add histograms for FastMixer\""
    },
    {
      "commit": "d9534fb35245b8bcd2489e717bdd1ad9269b3000",
      "tree": "e952072b004f3a743465cf67d89e9420246f7bc3",
      "parents": [
        "0de04e850beced076e4b1fcf0e513255f62a7d85",
        "c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 12 20:04:06 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 12 20:04:07 2017 +0000"
      },
      "message": "Merge \"AAudioService: integrated with audioserver\" into oc-dev"
    },
    {
      "commit": "c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fb",
      "tree": "2544186372c9778460821e410c09a0edba8a17bf",
      "parents": [
        "d1b4d0a6a65476236f972cfc181a1db2b96d93ef"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 09 13:18:38 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 12 18:26:12 2017 +0000"
      },
      "message": "AAudioService: integrated with audioserver\n\nCall the MmapStreamInterface from AudioFlinger instead of the FakeHAL.\nFix sending timestamps from the thread.\nAdd shared mode in service.\n\nBug: 35260844\nBug: 33398120\nTest: CTS test_aaudio.cpp\nChange-Id: I44c7e4ecae4ce205611b6b73a72e0ae8a5b243e5\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n(cherry picked from commit 7f6b40d78b1976c78d1300e8a51fda36eeb50c5d)\n"
    },
    {
      "commit": "7f6b40d78b1976c78d1300e8a51fda36eeb50c5d",
      "tree": "78d0268547b2ca08c89e11a3fcc4a6acafed9a54",
      "parents": [
        "a2e1b6dfd047c148a639cbaff7e3f857d7b3fddc"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 09 13:18:38 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 07 17:26:11 2017 -0700"
      },
      "message": "AAudioService: integrated with audioserver\n\nCall the MmapStreamInterface from AudioFlinger instead of the FakeHAL.\nFix sending timestamps from the thread.\nAdd shared mode in service.\n\nBug: 35260844\nTest: CTS test_aaudio.cpp\nChange-Id: I44c7e4ecae4ce205611b6b73a72e0ae8a5b243e5\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "eef598c5539aa2be5a106f2483b19e368e4b8c0e",
      "tree": "677e3f98c4f1b3deb9d653dc5ad00b4a7e881028",
      "parents": [
        "3ab8d66ad1c47a5ee1f87ad9f5ee2666cf89b32d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 03 14:41:13 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 07 14:46:35 2017 -0700"
      },
      "message": "Add histograms for FastMixer\n\nBug: 37153050\nTest: dumpsys media.log shows histograms for audio activity on FastMixer\nChange-Id: I6bb4bf19d62da1ed1d8cda43d428b03153a35de3\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": "293558ad1977e24e65f7ba78f47382d33fc77d64",
      "tree": "125f39f7efcb1c44fde136bdfefeef1bdc8af2a4",
      "parents": [
        "01c10f8cdcd58d1e7025f426a72e6e75ba5d7fc2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Mar 21 12:19:20 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 24 17:06:30 2017 -0700"
      },
      "message": "AudioFlinger: Improve Thread logging.\n\nTest: dumpsys media.audio_flinger\nBug: 30572472\nChange-Id: I43f72354a6ece045f5f9f664946a406166974258\n"
    },
    {
      "commit": "18b570146c971fe729c391bfbb869391084e623d",
      "tree": "44427ed969851fc0e8638b508e265d6d039556b9",
      "parents": [
        "421c434e615a417d9f5443af9e52a30e3b29c256"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 13 16:23:52 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 08 00:33:34 2017 +0000"
      },
      "message": "audioflinger: add standby() method to MmapStreamInterface\n\nBug: 33398120\nTest: open/start/stop/close MMAP no IRQ stream for capture and playback\n\nChange-Id: I48ec202a71565f759c441c2a835d8c8190e76334\n"
    },
    {
      "commit": "10cbff139360f3f642e0e3b3ccf2d463dbed22cf",
      "tree": "85bef4f57dd8ff375059a1682c64941da884d0d5",
      "parents": [
        "1e50d1daa696e159d1ed0606de373c1cccef2c84"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 21 17:30:14 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 24 18:56:55 2017 -0800"
      },
      "message": "VolumeShaper: Enable for offload and direct tracks\n\nTest: Play Music in offload mode\nBug: 31015569\nChange-Id: I00bb59e3e6809d4682f42057b1cc083f4fa9b9d1\n"
    },
    {
      "commit": "f5f4056014118f6ddd16affe853fd0605001ab40",
      "tree": "3b556420f26402317914702ed0cc86e1564428f4",
      "parents": [
        "2d6140b8dce137f89029b12468e25d5911f23420",
        "555530ab903504ad3586bc24cd8a4f200f5c39ae"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 13 19:30:47 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 13 19:30:48 2017 +0000"
      },
      "message": "Merge \"audio: several concurrent capture fixes\""
    },
    {
      "commit": "7863c791dba8c4e5e9591b6837d410e580be0a25",
      "tree": "5199273fa3bac5303b0aa8dcdfd984f49f75e30f",
      "parents": [
        "94a20830fc0768efc138ab7f746f80e8b3d60c15",
        "6acd1d432f526ae9a055ddaece28bf93b474a776"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 10 20:24:21 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 20:24:22 2017 +0000"
      },
      "message": "Merge changes from topic \u0027mmap_no_irq\u0027\n\n* changes:\n  Add support for mmap stream\n  audioflinger: define MMAP HAL Stream control interface\n"
    },
    {
      "commit": "555530ab903504ad3586bc24cd8a4f200f5c39ae",
      "tree": "1c7904daf0e13a86bb225d2e52f791ef84ec85a5",
      "parents": [
        "c96fc852f010f9254a38a0073a4de7a848e33e44"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 07 18:17:24 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 09 21:09:55 2017 -0800"
      },
      "message": "audio: several concurrent capture fixes\n\nMake sure AudioRecord clients are invalidated synchronously\nwhen closing an input stream instead of when the capture thread\nexits.\n\nFix AudioPolicyManager::getInputForDevice() logic to make sure that\nnot only the first opened input encountered is considered when looking\nfor a compatible input to reuse for concurrent capture.\n\nBug: 22702906\nTest: run CTS test\nChange-Id: I7f69609d4ee70a37ab06753ff970b12df17d885b\n"
    },
    {
      "commit": "83f042776b131b149f803fff6ab184ae2c4d98cd",
      "tree": "d3c78a3313c94799261a927c84cddc7c0ebdd398",
      "parents": [
        "ba05ff122c080be9fafe1f8112052cacfcd2b6fe"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Feb 07 10:45:09 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 09 15:51:36 2017 -0800"
      },
      "message": "audioflinger: Adjust priority of hal threads\n\nHALs are prohibited from using framework binder, and there is\nno equivalent scheduling policy service in hwbinder. Thus, in order\nto match priorities of FastCapture / Mixer threads with their\ncounterparts in the HAL, it is needed to request the priority boost\nfrom audioflinger on behalf of the HAL.\n\nTest done to verify the priority was correctly set.\n\nBug: 34131400\nChange-Id: If8b6b031c0fcba771fae901a5b8e7da89b3a1570\nTest: check priority match between audioflinger\u0027s and hal\u0027s threads\n"
    },
    {
      "commit": "8981605d43e24c46d395acb5f145b99589d45917",
      "tree": "8bb7ee0e15081201b70730bbaafed49b47d211dc",
      "parents": [
        "d7c5ec857930496bb8a1045dc8b87b2fdd99899c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 11 17:08:23 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 11 17:19:37 2017 -0800"
      },
      "message": "AudioFlinger: Move RecordBufferConverter to libaudioprocessing\n\nTest: Recording loopback\nBug: 31015569\nChange-Id: I7897d959f36ac7424544e35f47576c99a442dd54\n"
    },
    {
      "commit": "6acd1d432f526ae9a055ddaece28bf93b474a776",
      "tree": "5035b942396a0e907e0c23f803a349d17dc50ad5",
      "parents": [
        "fc23520d9c3f15e28baa81de5f7dfa6c1b0af426"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 04 14:23:29 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 11 12:59:06 2017 -0800"
      },
      "message": "Add support for mmap stream\n\nAdd support for MMAP streams created by Oboe service.\n- A new audio thread class MmapThread deriving from ThreadBase\nis added to manage permissions, volume, routing and wakelocks for activity\non MMAP streams.\n- Requests received over MmapStreamInterface to open, start and stop\na MMAP stream are forwarded to audio policy manager so that activity\non MMAP capture and playback streams is visible to audio policy and\ntaken into account in volume and routing management.\n`\n\nBug: Bug: 33398120\nTest: manual test\nChange-Id: I957906495fe9277d2972d810b633f50cd1e14ec3\n"
    },
    {
      "commit": "d01b0f18491c355d808a57cb272404480e69618f",
      "tree": "f76d375fda0baa041dedad60a7cbabdc562f3ede",
      "parents": [
        "36867767ba86244b0d942255b9d241b092151309"
      ],
      "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 Jan 03 14:13:02 2017 -0800"
      },
      "message": "AudioFlinger: update to use uid_t\n\nTest: Power manager shows correct uids for audio\nBug: 32713790\nChange-Id: I60134f60631ea00886efc912ba298443aadd3c00\n"
    },
    {
      "commit": "f28bcf5c057dd9738a09f3cb367cf0b44087135d",
      "tree": "309a55dc542ab5bf6caecbb78bf4e99809a3f1a1",
      "parents": [
        "5b4051afc26367d7accd06580c5135c8295759f9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 20 12:52:39 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 21 17:41:16 2016 -0800"
      },
      "message": "AudioFlinger: Use property for local log lines\n\ndumpsys lines can be increased up to 256 (kLogSize) by\n\nadb shell setprop persist.audio.locallog.lines 256\n\nTest: Run piano app and check audioflinger dumpsys\nBug: 30572472\nChange-Id: Ie27812b15732432856452e4c46d81abf860aaee2\n"
    },
    {
      "commit": "5b4051afc26367d7accd06580c5135c8295759f9",
      "tree": "7570bfc424d02beb1ac90b4f1e2afba02c23d222",
      "parents": [
        "1570e5805254f638ccf5bb5c29870a9c8e7a7db3",
        "dae27707fc7d8370eb200d25d1a7c6dd7ad5e201"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 20 00:35:47 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 20 00:35:47 2016 +0000"
      },
      "message": "Merge \"AudioFlinger: Associate audio time with client uid\""
    },
    {
      "commit": "dae27707fc7d8370eb200d25d1a7c6dd7ad5e201",
      "tree": "0dd0ed540d7d58a7d19e83ee9ff648d57f218df6",
      "parents": [
        "07f49573613aee5a8e661f74a324db371ecc8551"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 31 14:01:16 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 14 17:52:54 2016 -0800"
      },
      "message": "AudioFlinger: Associate audio time with client uid\n\nGroup active track operations for add and remove together.\nPlaybackThread now uses strong pointer for active tracks.\n\nTest: Play Music, Youtube, Batterystats, CTS AudioTrack\nBug: 32361950\nChange-Id: I101df081dd8d090560a83c44c2fa9ffcbf39c84d\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": "abf6ff26df459d991cdbc2dca3b78046c97469db",
      "tree": "9e6ab352b182d73d3508c32c81090ec9e355f5a2",
      "parents": [
        "26a8ba63104f3c7d4e0a750b58d56ad76dbce373",
        "2148bf0e79c436b8764b9edc4c8f2730cce98a32"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 04:33:19 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 03 04:33:20 2016 +0000"
      },
      "message": "Merge \"Log audio information to ensure complete delivery\""
    },
    {
      "commit": "0d5a2ed0a05a2bf337c68edb54f24c60e18032c1",
      "tree": "6b8dac8ec17119ad5b661b85cff30bffe1d4a645",
      "parents": [
        "0d96fa05bf3f22942c372ecc93a7f6a44ecda30a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 02 12:21:39 2016 -0800"
      },
      "message": "improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n\nTest: Tested with EffectTest app. Regression tests in main audio use cases.\n\nBug: 32707507\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\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": "9cab746b116b8aed38ca6b97bfea35103535e522",
      "tree": "cc36a1ef710484eb9df3195a757ff430bdbe4bd4",
      "parents": [
        "5850c4c8eecbe0db3cee8511a4f82cb443e27d08"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 10 13:05:20 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 10 14:04:09 2016 -0800"
      },
      "message": "Revert \"AudioFlinger: Associate audio time with client uid\"\n\nThis reverts commit 2f366df67c31119bb6dd726becd32d14b18e6573.\n\nBug: 32728805\nChange-Id: If0a158154814492eda427de0af8a49c0b0a91180\n"
    },
    {
      "commit": "5850c4c8eecbe0db3cee8511a4f82cb443e27d08",
      "tree": "27aa0d14f34059b7941251d50221856b66f702a7",
      "parents": [
        "c6cd50f4e6b07530cb0391002fcf3e5a6ae4767f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 10 13:04:31 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 10 13:49:16 2016 -0800"
      },
      "message": "Revert \"AudioFlinger: Remove naked track pointers\"\n\nThis reverts commit 062bfceaefab29f0f71db7d5a248b3f5f0572b6a.\nBug: 32728805\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": "062bfceaefab29f0f71db7d5a248b3f5f0572b6a",
      "tree": "364bf9fb56e116b3999558175453f7aec1ad4f77",
      "parents": [
        "2f366df67c31119bb6dd726becd32d14b18e6573"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 01 14:58:47 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 07 14:51:57 2016 -0800"
      },
      "message": "AudioFlinger: Remove naked track pointers\n\nTest: Play Music offloaded and kill audioserver\nChange-Id: I3114a67f248e067e0b5334d76e4b5e6c39858040\n"
    },
    {
      "commit": "2f366df67c31119bb6dd726becd32d14b18e6573",
      "tree": "e38f357fab72df9693d5c5ad0d50079927a0744f",
      "parents": [
        "3ee0f1069e56d74b9cb39de8b0d9701369a4446b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 31 14:01:16 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 07 14:50:45 2016 -0800"
      },
      "message": "AudioFlinger: Associate audio time with client uid\n\nGroup active track operations for add and remove together.\nPlaybackThread now uses strong pointer for active tracks.\n\nTest: Play Music, Youtube, Batterystats, CTS AudioTrack\nBug: 32361950\nChange-Id: Ica96e2b84b9dfa5766571e24de49401a81a30e9d\n"
    },
    {
      "commit": "711ee66377eb053cd7a3467ca519239ebb7bf300",
      "tree": "e4c3ded55e5de71dde6f30bf551014cf4f2f2a86",
      "parents": [
        "2dddfc19437c00d77ad4943b6d10ad038ebf486e",
        "5c24d28bfc72423ff5bb6de3d46fe4747d9b64b1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Sep 25 21:33:55 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Sep 25 21:33:55 2016 +0000"
      },
      "message": "audioflinger: limit max number of tracks per client am: ad7dd9610b am: 6cfa8fdc9f\nam: 5c24d28bfc\n\nChange-Id: I3653bed5e0a0ef1476aa4409b256a8a81c6bc3fa\n"
    },
    {
      "commit": "5c24d28bfc72423ff5bb6de3d46fe4747d9b64b1",
      "tree": "9c1f9c68d80e8042e273626d2c1b9ac6959b87c9",
      "parents": [
        "a9f9acc3ba7502f0aede544c821cbe1c5f3bd992",
        "6cfa8fdc9f28dabe98c44e7317330f06f7a88813"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 23 19:08:03 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 23 19:08:03 2016 +0000"
      },
      "message": "audioflinger: limit max number of tracks per client am: ad7dd9610b\nam: 6cfa8fdc9f\n\nChange-Id: I1952387cd010a11ce9512a8b56a363cc4bb7a078\n"
    },
    {
      "commit": "ad7dd9610b6fafa81baf69607f4ac669da88182a",
      "tree": "fb08c9c45c9db1d22c4828c4fb98ff8bc2a471df",
      "parents": [
        "08e1f41731ad95a0019b3733b999958a07f705ac"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 22 12:38:37 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 22 23:43:32 2016 +0000"
      },
      "message": "audioflinger: limit max number of tracks per client\n\nLimit max number of audio tracks for a given application to\nlimit the chance of denial of service by misbehaving apps\nnot releasing tracks.\n\nBug: 7007023\nChange-Id: Id7ac37450aabdbeaa5f83cb6e4b2a2b0c749f99c\n"
    },
    {
      "commit": "1dc98674f701dada94143b4d31b7221c58346c6c",
      "tree": "44f80a66fdff774d2229ca3aaabdd614ed1f8013",
      "parents": [
        "9debf8f6d26f7aa12c68ddfb6cdb1323d4b5adbf"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Aug 18 17:50:29 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 21 15:58:24 2016 -0700"
      },
      "message": "Abstract away access to audio streams HAL in AudioFlinger\n\nIn this CL all direct access to audio_stream_t, audio_stream_out_t, and\naudio_stream_in_t their functions is encapsulated within the new\nhierarchy of Stream[In|Out]HalLocal classes.  AudioFlinger uses\ninterface classes Stream[In|Out]HalInterface to access these functions.\n\nNote that NBAIO still receives raw HAL stream handles and needs to be\nconverted separately.\n\nBug: 30222631\nTest: manual with Loopback app\n\nChange-Id: I6388cfa2006791c9c0aa7bb186719209726a2d48\n"
    },
    {
      "commit": "1b291841a58ce6b2b291232dfdd56134b2185c48",
      "tree": "d2eebced63ee2d64c58f604c68fd328c88816d2d",
      "parents": [
        "6b11f552f99ce7bd40ea164f65ac1590a3f4198b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 18 14:55:21 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 12 15:52:22 2016 -0700"
      },
      "message": "Fix RecordThread running too often if fast capture is active\n\nBug: 30159297\nChange-Id: Ieca804450168391c162fc4862398586fcc5d7e4e\n"
    },
    {
      "commit": "5ca8f32280377dd923e72c3c6bd3994217461b8b",
      "tree": "b5146ce7885539d8b002d3270346f574e3965711",
      "parents": [
        "7aeb8c8d4437eb8f45be3ad3828764795e14ad4c",
        "63ef5a38f82d22c1f97922fe490a1fd336566d5c"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 23:53:01 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 10 23:53:01 2016 +0000"
      },
      "message": "resolve merge conflicts of fd923e7 to stage-aosp-master am: df5d9246f9\nam: 63ef5a38f8\n\nChange-Id: I516a43c5e56323e99ad7a8ca2e4811b77c9704f4\n"
    },
    {
      "commit": "df5d9246f9607b1c2f8b134c46a05af06e206da3",
      "tree": "7cd9fcb42c86c8cfe950db239e21e8b5ece98369",
      "parents": [
        "7ad2854adc0abe8dd7909a6ed401107ad09bc3d2",
        "fd923e7fe2779bcd69d79471b8c30c8b98918f62"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 15:40:39 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 16:10:32 2016 -0700"
      },
      "message": "resolve merge conflicts of fd923e7 to stage-aosp-master\n\nChange-Id: I75b44b89bae41197a1fd68362d20b8ba2b4dd192\n"
    },
    {
      "commit": "e964d4e421e2d1ca937227a580c0c837091a11e3",
      "tree": "876478fb4d5b18ddf8ba3b761440e46651b45ecb",
      "parents": [
        "f6d5a13c3a7a84e35e28b9840dde0f29728b6849"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 09 14:31:32 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 11:35:57 2016 -0700"
      },
      "message": "Fix clang-tidy warnings in audio and playerservice.\n\n* Add explicit keyword to conversion constructors.\nBug: 28341362\n* Use const reference type for read-only parameters.\nBug: 30407689\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I265f3b094e08d5705b506b3fbba51439c134af84\n"
    },
    {
      "commit": "36d0ca16024820df9a12903d2ac443fabcc180bc",
      "tree": "51e8f285ae66ad7cb922caeb7ba8d5f1d20367e3",
      "parents": [
        "67fbddfdc2cafd63c83d3bb55a2451d4c26f546d"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 09 14:31:32 2016 -0700"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 17:56:35 2016 +0000"
      },
      "message": "Fix clang-tidy warnings in audio and playerservice.\n\n* Add explicit keyword to conversion constructors.\nBug: 28341362\n* Use const reference type for read-only parameters.\nBug: 30407689\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I265f3b094e08d5705b506b3fbba51439c134af84\nMerged-In: I265f3b094e08d5705b506b3fbba51439c134af84\n"
    },
    {
      "commit": "416601541797b132ee8abe1e1d15d773ad975ce5",
      "tree": "03b82bca32f9d5cde183a95919f9eec3b0c3e5c1",
      "parents": [
        "53ca0e79ee9b02309b6eb1b890a1c309b6dcb2b2",
        "f804475807407442d5596ab7378ed07d50664063"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 28 23:50:09 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 28 23:50:09 2016 +0000"
      },
      "message": "AudioFlinger: Prevent offload underrun during active playback\nam: f804475807\n\nChange-Id: Iefc9c73590b5aede7ef3ee1a2eaf728bdd01113e\n"
    },
    {
      "commit": "ef0eed3d26e54c176b813fb7656c1cfb2c473062",
      "tree": "6640dad46604aa9c65355ffbac883d564842266b",
      "parents": [
        "63fb42a81d9b858783c6bbe3211ffa0f99975a92",
        "238fa3deff26d7e4d9e81bd0a88c936f16226c4e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 28 23:49:55 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 28 23:49:55 2016 +0000"
      },
      "message": "AudioFlinger: Account for frames dropped in suspend mode\nam: 238fa3deff\n\nChange-Id: I7a4ca332e3f75cdd4002821f29ed3b7334d5d193\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": "f769ab76d185a63e6da12f58fe902e977f1ad0fd",
      "tree": "6640dad46604aa9c65355ffbac883d564842266b",
      "parents": [
        "baf35feefcd14c13a6bf5ff5b651d9f22c2c3de0",
        "238fa3deff26d7e4d9e81bd0a88c936f16226c4e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 28 23:40:16 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 28 23:40:16 2016 +0000"
      },
      "message": "Merge \"AudioFlinger: Account for frames dropped in suspend mode\" 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": "de0613d0ad8b8fb9d19a27185ae4d307a5b7fb9d",
      "tree": "01d4c6e73924002b769cffd9d16187f61124ae7c",
      "parents": [
        "11dd692efa611d129167abea854dc14f0046d727"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 22 18:19:11 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 22 18:21:11 2016 -0700"
      },
      "message": "audioflinger: keep wakelock during offload drain\n\nEven if ro.audio.offload_wakelock property is false we must\nkeep wakelock during offload drain seuqnce due to some driver\nimplementations risking to let the system enter suspend.\n\nThis restores functionality in commit 078538cfc6.\n\nBug: 30151948\nChange-Id: Ib3a3e5c7e173ad7b1776817b81427932bfd16bf0\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "e8726fea8a53bf3474aa3c6deaf2f6c1f565e694",
      "tree": "d72b6ffcc7e33c178e3cac7c108b102041451cb6",
      "parents": [
        "ed8505836c0b2fba0ab4be0c1eff31d4f241bc1d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 26 09:39:24 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 26 12:38:13 2015 -0700"
      },
      "message": "reduce number of binder calls from mediaserver\n\nReduce the number of audio port, audio patch and\nIO config changed binder calls from mediaserver to\nclient processes:\n- Do not call IO config changed callback if selected\ndevice is the same as previously selected one on a given\naudio flinger playback or capture thread.\n- Do not call the audio port or audo patch list update\ncallback on a client if this client as no listener registered.\n\nBug: 22045560.\n\nChange-Id: If780e105404de79b7cb5c80c27b793ceb6b1c423\n"
    },
    {
      "commit": "40eb1a1f8871909c272e72afaf7d5af84fea2412",
      "tree": "93cd7cb7f509034600ea627568e2e25a159d3242",
      "parents": [
        "bd974011599b6d4ff47c1cee36d617f191dc0c2f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 18 13:42:02 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 18 13:43:51 2015 -0700"
      },
      "message": "Reduce log messages on AudioFlinger throttle\n\nBug: 21858740\nChange-Id: I8f291b64c1033867bb57ffceaa3b7d94aa998715\n"
    },
    {
      "commit": "43b4dcc660e6da96285e4672ae371070ab845401",
      "tree": "f03f4f3817afd22eb759962cde571029f312e1b6",
      "parents": [
        "afd492436efc7f66b958da14659b52232efa5910"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jun 09 16:53:44 2015 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jun 11 10:37:21 2015 -0700"
      },
      "message": "AudioFlinger: flush stream when switching tracks\n\nFor direct threads, when recycling a stream, perform a flush so\nthat the frame position is reset.\n\nBug: 21145353\nChange-Id: I08611cd64bb249a9659c44f9e4c47e7455f4838f\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "08fb1743f80437c38b4094070d851ea7f6d485e5",
      "tree": "5c2c3d8a6401247415e5e106140afdea2113661f",
      "parents": [
        "0eafa9d8ee4069aa709ff85ceffe94d12995956d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun May 31 23:22:10 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 13:28:27 2015 -0700"
      },
      "message": "Throttle MixerThread data pull to no more than twice expected rate\n\nThis helps prevent underruns with NuPlayer and other applications\nwhich set up buffers that are close to minimum size or use deep\nbuffers, and rely on a double-buffering sleep strategy to fill.\n\nEnabled by default.  Disabled by setting af.thread.throttle 0\n\nBug: 19062223\nBug: 21198655\nChange-Id: Ia52b48e0c99588af5db53c43fede2afd775b8899\n"
    },
    {
      "commit": "ad9cb8b88e4f8face23f01d8dc89fa769dacb50f",
      "tree": "bfa8ce6b4b9f6f00c6d2bcc639e482e80aa9cc0a",
      "parents": [
        "3ab77c1e93f3da5da0d18ff998f1bd6db19534f3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 26 16:38:19 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 27 17:59:12 2015 +0000"
      },
      "message": "audio flinger: add suffix to time variables names\n\nAdd suffix to clarify units for the following variables:\n standbyTime -\u003e mStandbyTimeNs\n standbyDelay -\u003e mStandbyDelayNs\n activeSleepTime -\u003e mActiveSleepTimeUs\n idleSleepTime -\u003e mIdleSleepTimeUs\n sleepTime -\u003e mSleepTimeUs\n\nChange-Id: I7f5d602c39e0ef3f6fe9ef99eaf1b351c7bd4fc3\n"
    },
    {
      "commit": "72e3f39146fce4686bd96f11057c051bea376dfb",
      "tree": "00e43a5392f717a49a3569de3a5bdce9aa7b6a6e",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 20 14:43:50 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 20 17:35:37 2015 -0700"
      },
      "message": "audio flinger: do not call JAVA services until system is ready\n\nWait for system ready indication form AudioService before enabling\ncalls to scheduling service or power manager.\n\nBug: 11520969.\nChange-Id: I221927394f4a08fd86c9d457e55dd0e07949f0cf\n"
    },
    {
      "commit": "f6870aefc5e31d4220f3778c4e79ff34a61f48ad",
      "tree": "6943c86c7143ffc113d91b8ed7a34d75ab183434",
      "parents": [
        "70c75d8c15707d5eade38fe3e622f8500c29556b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 08 10:50:03 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 08 13:23:51 2015 -0700"
      },
      "message": "audio flinger: fix fuzz test crash\n\nClear output stream pointer in duplicating thread\nwhen the main output to which it is attached is closed.\n\nAlso do not forward master mute and volume commands to\nduplicating threads as this is not applicable.\n\nAlso fix logic in AudioFlinger::primaryPlaybackThread_l()\nthat could accidentally return a duplicating thread.\nThis never happens because the primary thread is always\nfirst in the list.\n\nBug: 20731946.\nChange-Id: Ic8869699836920351b23d09544c50a258d3fb585\n"
    },
    {
      "commit": "296fb13dd9b5e90d6a05cce897c3b1e7914a478a",
      "tree": "d3ed4e6ff2902da6f556d038c71605c091b75f64",
      "parents": [
        "32fa6d0e65dbf956e253a1006e9419dce2fe75c9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 01 11:38:42 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 06 10:14:42 2015 -0700"
      },
      "message": "Implement audio device callback\n\nAdd class AudioSystem::AudioDeviceCallback notifying\nAudioSystem clients upon device selection change on a given\ninput or output thread.\nMaintain a list of installed callback per I/O handle in AudioSystem\nand call registered callbacks when an OPEN of CONFIG_CHANGED event\nis received on IAudioFlingerClient::ioConfigChanged().\nAdd methods to AudioTrack and AudioRecord to add and remove device\nchange callbacks.\nAdd methods to AudioTrack and AudioRecord to query currently selected\ndevice.\nioConfigChanged() events now convey the audio patch describing\nthe input or output thread routing.\n\nFix AudioRecord failure to start when invalidation is\nhandled by start().\n\nChange-Id: I9e938adf025fa712337c63b1e02a8c18f2a20d39\n"
    },
    {
      "commit": "8ce74c3c11458faa34395591a3424e90db856bfc",
      "tree": "e3e1f5120c35890402528e2959e77be85aaa1bfd",
      "parents": [
        "8651c6f5069cca40ef805b800a9730617ff7f9b8",
        "6fc2a7c81f62b1e21487ae37e11aae6241bc3ead"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat May 02 02:31:19 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat May 02 02:31:20 2015 +0000"
      },
      "message": "Merge \"AudioTrack: fix direct tracks not pausing\" into mnc-dev"
    },
    {
      "commit": "6fc2a7c81f62b1e21487ae37e11aae6241bc3ead",
      "tree": "2b8396ccca007dfb36b825df49d4a430b3dd3d1c",
      "parents": [
        "1de1e25cba872bd4c077c2e394f8ca9c70b65856"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 30 16:08:10 2015 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 01 17:17:44 2015 -0700"
      },
      "message": "AudioTrack: fix direct tracks not pausing\n\nWhen a Direct Track is paused and the HAL does not support\npause() and resume() then the HW never gets paused.\nThe app can just keep writing data, which gets played.\n\nBug: 18899620\nChange-Id: Ice0f360956ff7ca425f6f24a0a2a8640d8b43fa8\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "73e26b661af50be2c0a4ff6c9ac85f7347a8b235",
      "tree": "7290cb83e5f7df830447fe2badf99c43e0afc020",
      "parents": [
        "054d9d3dea1390294650ac704acb4aa0a0731217"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 27 16:55:58 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 01 11:45:07 2015 -0700"
      },
      "message": "AudioSystem: refactor audio config cache and callbacks\n\nClean up implementation of audio configuration cache and\ncallback events from AudioFlinger:\n\n- Define class AudioIoDescriptor for audio input and output\nconfigurations outside of AudioSystem class.\n- Do not use void * but an AudioIoDescriptor as argument to\naudio config callbacks from AudioFlinger.\n- Remove unused configuration events.\n- Move AudioSystem audio input and output cache from static singletons to\nmembers of AudioFlingerClient subclass.\n\nChange-Id: I67c196c32c09ce2756af0755ee1fe631040c3270\n"
    },
    {
      "commit": "054d9d3dea1390294650ac704acb4aa0a0731217",
      "tree": "4d67c48a2cf367d661f1e33a6670cda052a569a3",
      "parents": [
        "f62a067a5b21c840c915d36392679346ac0abfd7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 24 08:48:48 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 28 19:05:19 2015 -0700"
      },
      "message": "PatchPanel: do not use setParameters() internally.\n\nDo not use setParameters() with AUDIO_PARAMETER_STREAM_ROUTING\nwhen communicating the input or output device selected to playback or\nrecord threads, even for HAL version less than 3.0.\nUse createAudioPatch()/releaseAudioPatch() instead.\nThis allows to send more information on the output or input device being\nselected.\n\nAlso fix a regression introduced in L where the output device selection\nwas not communicated to effects on record threads.\n\nChange-Id: I4780ada53241d56694b005c992171e173c3bf8f5\n"
    },
    {
      "commit": "d330ee46022f34da76d14d0c4d2910526ecc2321",
      "tree": "05df908a6cd115a92eb1e15a2daa191c14a441b2",
      "parents": [
        "f27e2fbfc3284c00a60fa68edc51d436f75b1e32"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 20 13:23:41 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 22 12:42:52 2015 -0700"
      },
      "message": "Add floating and multichannel record to AudioFlinger\n\nChange-Id: Ia388fb012a0b6d81613ef87142a97d76836338f9\n"
    },
    {
      "commit": "5744661e85981f8a9456bf470e2761235fc026da",
      "tree": "ff5478072359cf1a910140000fa844322004c1f0",
      "parents": [
        "73e62e2ea12e46825958eba718bd8d5e23064ec5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun Apr 19 23:56:46 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 21 15:30:49 2015 -0700"
      },
      "message": "Make record buffer in RecordThread variable format\n\nChange-Id: Id4bb9b973eeea16946fba3bc084c7ac270d9fa33\n"
    },
    {
      "commit": "73c02e4277b399c2ec1555d32b6ad5df23bb83dc",
      "tree": "c42d75e42eda5b09915c0962107083f1c55dc74a",
      "parents": [
        "97a893eb34f8687485c88eaf15917974a203f20b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun Mar 29 01:13:58 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 08 15:55:46 2015 -0700"
      },
      "message": "Improve ResamplerBufferProvider\n\nChange-Id: I3cc3af221ad5797ff219d75227350733afa180db\n"
    },
    {
      "commit": "97a893eb34f8687485c88eaf15917974a203f20b",
      "tree": "6a103ab6f76dcabb0416677055dab4a8454f9fd7",
      "parents": [
        "6b3b7e304e0f8f167241b2c75f1eb04a9ef192ec"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun Mar 29 01:03:07 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 08 15:23:30 2015 -0700"
      },
      "message": "Add RecordBufferConverter for RecordThread data processing\n\nChange-Id: Ia3aab8590cd41e8a7cba0a7345d70d2866d92045\n"
    },
    {
      "commit": "f59497bd3c190e087202043de5450ef06e92b27d",
      "tree": "52ff88a5a4bd358358850e0ca16d0f9527fded4e",
      "parents": [
        "802a568f77b9a372537e4216b2a7cbb203958a87"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 26 16:35:47 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 13 16:22:16 2015 -0700"
      },
      "message": "Update comments\n\nChange-Id: I37d3c4ce22b74fe8581a886fe5a7f9fef8266dad\n"
    },
    {
      "commit": "d7dca050c630bddbd73a6623271b34b4290460ee",
      "tree": "c95d8f92b3fcaa95a712f862486bc07589ac746f",
      "parents": [
        "bcb1486d052e329ae4790d93055d1c51017286c3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 05 16:05:54 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 06 09:23:25 2015 -0800"
      },
      "message": "Rename mName to mThreadName and kNameLength to kThreadNameLength\n\nChange-Id: I0adfcdcab7923a07a840ec0e04528cb8bfc41f10\n"
    },
    {
      "commit": "81879df8dc51df4d8a3880349e9e1e6b5e3cebfb",
      "tree": "920af202ad4576e997a540bfc98479aa97b2a0e2",
      "parents": [
        "197f84845ccea9319a1589b85edeb2dcf56b81b3",
        "69158e3e7b565a5ca131a2efaa9b76615ca80cbb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 07 16:02:57 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 07 16:02:57 2015 +0000"
      },
      "message": "am 69158e3e: am 6ab33981: am 610255e8: Merge \"audioflinger: pause HW A/V sync output when AudioTrack underruns\" into lmp-mr1-dev\n\n* commit \u002769158e3e7b565a5ca131a2efaa9b76615ca80cbb\u0027:\n  audioflinger: pause HW A/V sync output when AudioTrack underruns\n"
    },
    {
      "commit": "b187de1ada34a9023c05d020a4592686ba761278",
      "tree": "31dea84d078f6198ce17ca856fcbb76c402f37b6",
      "parents": [
        "64cbdee08a18b25448a5fb0b058d3b83d5630d7f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 30 08:18:15 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 30 08:18:15 2014 -0800"
      },
      "message": "Line length 100\n\nChange-Id: I6c8fe626a3825fa9e139319656d682a57b887c97\n"
    },
    {
      "commit": "0f7b5f2b231caf87da9b20b74d086e5a9d6f4a9d",
      "tree": "f6f15345f054cdc13116a1443b80454e256b7c71",
      "parents": [
        "e48cf5b8f823c30af93577c1e380d752ac69b871"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 19 10:43:21 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 19 16:41:52 2014 -0800"
      },
      "message": "audioflinger: pause HW A/V sync output when AudioTrack underruns\n\nDo not standby, starve or feed 0s to the audio HAL on direct\noutput using HW A/V sync mode.\n\nBug: 17883772.\n\nChange-Id: I11e6c97ec24360d75f9b602814d40a54b60cb7a7\n"
    },
    {
      "commit": "23c8dc13787186dc98731055858b2fba3aedc105",
      "tree": "08ed5ebd4244095641a3d7494e9dab6b6d471eb5",
      "parents": [
        "c30943f7485fa84a32e7d070234b3def692d9d16",
        "85aca658ac7d20584b0647427256df50a5f243ef"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 17 18:08:04 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 17 18:08:04 2014 +0000"
      },
      "message": "am 85aca658: am d33712d7: am 145cf5d8: Merge \"audioflinger: implement pause/resume for direct outputs\" into lmp-mr1-dev\n\n* commit \u002785aca658ac7d20584b0647427256df50a5f243ef\u0027:\n  audioflinger: implement pause/resume for direct outputs\n"
    },
    {
      "commit": "d1f69b0b17acbd96987ecb2f3378abd394d05903",
      "tree": "e3061c609dfaa2c217bb79a8d85e4571e8bd0d3d",
      "parents": [
        "8ddb02230d02968d471aa41b22433957c38827c0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 15 14:33:13 2014 -0800"
      },
      "committer": {
        "name": "Rachad Alao",
        "email": "rachad@google.com",
        "time": "Tue Dec 16 01:38:34 2014 +0000"
      },
      "message": "audioflinger: implement pause/resume for direct outputs\n\nExtend pause/resume support to direct output threads\n(was only for offload threads).\n\nIf the HAL implements pause/resume, track pause/resume is forwarded to\nthe HAL.\n\nPause, flush, resume sequence is respected by executing the HAL\ncalls in the playback thread (same as offload).\n\nMake sure the track flags on client side are consistent with the\nflags on server side.\n\nBug: 17883772.\nChange-Id: I89b360d69818f7a9204bd36e3ec63a79e106ecf1\n"
    },
    {
      "commit": "3a3e87005fdfbfe4564605220a044b8023d0f539",
      "tree": "657e4b6b3ca4d8d7030333975203c91a895b30dd",
      "parents": [
        "5ecbdf58b0674ac4a8b9d56b49ebeb1033e5bd27",
        "72215491c60fbcdb9a2f0be782e24e39cca249c5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 26 12:10:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 12:10:00 2014 +0000"
      },
      "message": "am 72215491: am 1a475921: am 223fd5c9: audio: new routing strategies and stream types\n\n* commit \u002772215491c60fbcdb9a2f0be782e24e39cca249c5\u0027:\n  audio: new routing strategies and stream types\n"
    },
    {
      "commit": "223fd5c9738e9665e495904d37d4632414b68c1e",
      "tree": "33e0afab9a7479cdc4c688a742a8977c8ead21e4",
      "parents": [
        "bc0f452b9a76dd8c8244e775bc9c5aa85cae3ddf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 11 13:43:36 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 21 10:41:13 2014 -0800"
      },
      "message": "audio: new routing strategies and stream types\n\nAdded new routing strategies and stream type for internal use\nby audio policy manager and audio flinger:\n- One for accessibility to allow different routing than media\n- One for re-routing (remote submix) in preparation of dynamic\npolicies\n- Added stream type for \"internal\" audio flinger tracks used\nfor audio patches and duplication.\n\nBug: 18067208.\nChange-Id: I88f884b552e51e4a49c29125e5a1204cf58ff434\n"
    }
  ],
  "next": "97b7b75b6a31330e213bdb96ccc60916218ad903"
}
