)]}'
{
  "log": [
    {
      "commit": "40eb0159372c16376a0755e5b86a3f7586fc3294",
      "tree": "c61b65121dbd72ba6a09d5cae6730bc41f5f4e33",
      "parents": [
        "f62ee0193ef91d52c36cc48e62e959720b9ad0f1",
        "16c41dd97f4c0728b8135773e3289c63e37a20f2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 01 21:31:23 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 01 21:31:23 2020 +0000"
      },
      "message": "Merge \"Revert \"Force DIRECT flag on direct output thread.\"\" into rvc-dev am: 16c41dd97f\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12059582\n\nChange-Id: Ife0a72e4b17c96c39c743be8ed75a52fbe66c2f6\n"
    },
    {
      "commit": "16c41dd97f4c0728b8135773e3289c63e37a20f2",
      "tree": "9d80dc255c81bb2515ee6169ee55455ac539cb8c",
      "parents": [
        "2038329cf5ec113112ba67c205fb6d890be788c1",
        "c435e5f936374098c485a77123cddda8c4f4ea52"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 01 21:16:42 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 01 21:16:42 2020 +0000"
      },
      "message": "Merge \"Revert \"Force DIRECT flag on direct output thread.\"\" into rvc-dev"
    },
    {
      "commit": "c435e5f936374098c485a77123cddda8c4f4ea52",
      "tree": "ae20e4e48fc2ccda1611c3010b378e4dc34b2e63",
      "parents": [
        "f7667505a23d017d984e03fbb71a6fc28be34449"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 01 15:13:17 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jul 01 16:56:33 2020 +0000"
      },
      "message": "Revert \"Force DIRECT flag on direct output thread.\"\n\nThis reverts commit f7667505a23d017d984e03fbb71a6fc28be34449.\n\nReason for revert: b/160316553\n\nBug: 130296239\nBug: 160316553\nChange-Id: Ib1d3a9bbbba66455585e0c4a2826f3c05263334e\n"
    },
    {
      "commit": "2d970888a3440fd4e5bf769a8da372c5317f4231",
      "tree": "00b9c60616f6827bc7ef90d6a0bd169b86f99665",
      "parents": [
        "e67841bed62ee078b5456df93a4978996e694f94",
        "8beb417636108658b5843a54650504fec22ed5de"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Jul 01 15:49:11 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 01 15:49:11 2020 +0000"
      },
      "message": "Merge \"Include what you use: \u003ccutils/bitops.h\u003e for popcount\" am: 48ac45e0e8 am: 8beb417636\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1353586\n\nChange-Id: I91d2ae019eced64a560602b90b03165c4a7c82c8\n"
    },
    {
      "commit": "c9a2367f660473fbf1b47b2ae46098ae337f89f2",
      "tree": "cd56d5ba761c0795d6dfd4cb8c5f467ea8b8b62d",
      "parents": [
        "c1d40b64b1ee652f173153fb2520201bbed56679"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 30 12:12:42 2020 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 30 12:12:42 2020 -0700"
      },
      "message": "Include what you use: \u003ccutils/bitops.h\u003e for popcount\n\nTest: builds OK\nChange-Id: I46e27589936415dbf5da5722cd4132002c076c99\n"
    },
    {
      "commit": "a19e52def2419b191b1021171e226856441a4fd2",
      "tree": "3e0cfb7225614beee94de19fbcfb80b2f36b4451",
      "parents": [
        "612623f9301edf7df0c86090042d20a68d9d3963",
        "eeb744f5f985ab272552e1f1a0e5c553a50f5f65"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 18 00:24:31 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jun 18 00:24:31 2020 +0000"
      },
      "message": "Revert \"audio: allow standby for direct track\" am: eeb744f5f9\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11901472\n\nChange-Id: Ic27f77bea74dd628a34aa0838a3bfbd47af90f4b\n"
    },
    {
      "commit": "eeb744f5f985ab272552e1f1a0e5c553a50f5f65",
      "tree": "540f8005c5da017fe84777c3b13e98dba5c1629e",
      "parents": [
        "e28883fe1be2f291516adb167ff0dc4367f8adf5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 17 11:10:04 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 17 15:39:57 2020 -0700"
      },
      "message": "Revert \"audio: allow standby for direct track\"\n\nThis reverts commit 9cd7ad101315e0bff4c5f171706c6f80c7e22644.\n\nPrior CL allows Direct PCM tracks to enter standby on pause\nwhich unfortunately causes timestamp frame position to reset to 0.\n\nTest: Audio sanity test\nTest: Verified in bug to remove the regression above.\nBug: 157609403\nChange-Id: I5e0d43a0e50981a300bc05711b71efe0b7e22f98\n"
    },
    {
      "commit": "810d91562b9196e6b7e8b97d5e024910965c742b",
      "tree": "775958d67b58efb1335f9a609193814ee8a214d0",
      "parents": [
        "80fcaeecbeaf8c1c96239c798859ba1fbc98f8b2",
        "d36b1491911b73cba7aec2164e2d4b2d333ed243"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Wed Jun 17 01:15:30 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jun 17 01:15:30 2020 +0000"
      },
      "message": "Merge \"Adding sanity checks for invalid frame sizes\" into rvc-dev am: d36b149191\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11851234\n\nChange-Id: I247c99e417a48a3f751d561d21c5c0371113e5ab\n"
    },
    {
      "commit": "1a89ab3cbe122a8de9c8e001536afef8cd15f28e",
      "tree": "2f50130862b83f92dbd63a02496c2e6f18d8376c",
      "parents": [
        "19d51164324653a7312c6d7bc0fd0ac43d581503"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Fri Jun 12 11:05:47 2020 -0700"
      },
      "committer": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Mon Jun 15 14:23:45 2020 -0700"
      },
      "message": "Adding sanity checks for invalid frame sizes\n\nInvalid frame size can cause the audio server to crash due to a\ndivide-by-zero error. Adding sanity checks to make that issue easier to\ndiagnose.\n\nBug: 155646578\nTest: Ran CarAudioManagerSystemTest suite which was encountering the\nerror\n\nChange-Id: Ibc5b8e13738eb8957d21509b7f87ddaf3115cd4a\n"
    },
    {
      "commit": "b5f23bc69dcf2ad145f9c647246983eac7ef873b",
      "tree": "b70f35d9112b225328bdc0edf07de63998c5218a",
      "parents": [
        "ac739dc9ebfd9c58e0ab2af19f6144f24080372b",
        "2db025067669613aaef043e6471d7035925e4df0"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 05 05:13:53 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jun 05 05:13:53 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: Fix read timestamp if HAL returns error\" into rvc-dev am: 2db0250676\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11722687\n\nChange-Id: I83702234cd71cc2d194af4e1edaf5943cfe080a3\n"
    },
    {
      "commit": "743f640339310f980cc6480514fb67bcd26cc717",
      "tree": "75f7c4cb4c3682850fddb8ff4080acd2307a4931",
      "parents": [
        "4e48c2477d084919f13ee191a6c36713d83063f3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 13:17:04 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 16:58:35 2020 -0700"
      },
      "message": "AudioFlinger: Fix read timestamp if HAL returns error\n\nTest: android.media.cts.AudioRecordTest#testTimestamp\nBug: 158112444\nChange-Id: Ibb35c6247ab94e63d586eddd1c95b7fc186e7822\n"
    },
    {
      "commit": "3c726ad0ef8a452a83db4634f2b141d8e60eeaa7",
      "tree": "9e7125ca1f513f0b92ee5b44b09fee4fd7b66f21",
      "parents": [
        "87d6ead1bf25bd53c0eeab936365e0e84bdc2367",
        "044eaa62c79775870cbf08e323b152752edcfb9d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 02 20:55:28 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jun 02 20:55:28 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: fix fast capture silence\" into rvc-dev am: 044eaa62c7\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11671291\n\nChange-Id: I71ec34d86f122c9aa9661824ffc7055abf006045\n"
    },
    {
      "commit": "33403f0ef8ec7e6217f4969879fa81101e6b84ee",
      "tree": "6036db6c23094fc0aadb3703349aa97f0a86c5dd",
      "parents": [
        "ea63cf2b4479bcef697592e57025b63b60b2af4c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 29 18:35:06 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 29 18:44:33 2020 -0700"
      },
      "message": "AudioFlinger: fix fast capture silence\n\nSilencing fast catpure tracks was not properly implemented.\nFix by zeroing fast capture thread HAL read buffer if the silenced\ntrack is the only active, or by invalidating the silenced track\nif other non fast tracks are active.\n\nBug: 157708122\nTest: repro steps in the bug\nChange-Id: I88b19540815bc1491b9e76c1ae6b6f85e32afa8f\n"
    },
    {
      "commit": "43af1ebfdd59a7bd43f4bc553dfa5db3787e4ee2",
      "tree": "a4717f143dbbd9f1f643c0939664968423e268e0",
      "parents": [
        "8a79a986c96c442d17ce350b6bdc701739b65fbe",
        "0e40bab4753287d2763c2e7ee64e4f4925466b4d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 15 00:23:43 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri May 15 00:23:43 2020 +0000"
      },
      "message": "Merge \"av: remove a redundant NULL check\" am: 74e4b7bc7f am: 0e40bab475\n\nChange-Id: I204b6302f9ffa0dd3164cbfaff6c78451f7158e1\n"
    },
    {
      "commit": "a8f90c19feb419a9bd77dac3fcdf92e90eb925af",
      "tree": "67e0624e76cbce8d13146c381fc472b8b09f42e8",
      "parents": [
        "3ec7c256a8e5f5e3ec1dd1338fbc005838c2ff60"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 14 11:27:19 2020 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 14 11:27:19 2020 -0700"
      },
      "message": "av: remove a redundant NULL check\n\nThe unconditional `readInputParameters_l` call below this condition\nimmediately and unconditionally dereferences `mInput`. Either\n`readInputParameters_l` needs to handle a null `mInput` reasonably, or\n`mInput` can never be null. This CL assumes the latter.\n\nBug: None\nTest: TreeHugger\nChange-Id: I46f89f918257f9d4aa762a03c3d03e030a17b4a9\n"
    },
    {
      "commit": "e5f6cd42a9f1e86a318e429fb9fdd956bcbcefe3",
      "tree": "7c8678fb84dcec99aa1408dc1cfc66b0c652e6bc",
      "parents": [
        "fc2a78ee9796a7ecb8436e7cbe884a1d90314a45",
        "09869a1c369e0edc421a379c2ffb3cb3afbbe392"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 13 22:32:49 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed May 13 22:32:49 2020 +0000"
      },
      "message": "Merge \"MediaMetrics: Prepare statistics for protos\" into rvc-dev am: 09869a1c36\n\nChange-Id: Ia61b527808d26235709725188cf1639c1cbe69a9\n"
    },
    {
      "commit": "ea84038803580b4c35ce4cb60918c0c384127417",
      "tree": "d8c91402af2f630e4f1c36f7798d161767d01301",
      "parents": [
        "38e65911a65a51edf2efd5ca63c4e00daac24852"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 05 21:50:17 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 13 11:15:49 2020 -0700"
      },
      "message": "MediaMetrics: Prepare statistics for protos\n\n1) Add AudioRecord to Analytics trigger.\n2) Log RecordThread statistics.\n3) Rename DURATIONNS to EXECUTETIMENS to avoid confusion.\n4) Use streamType from server not client.\n5) Split MMAP types to MMAP_PLAYBACK and MMAP_CAPTURE.\n6) Use string flags for AudioTrack and AudioRecord.\n7) Compute underrun frames for MixerThread.\n8) Log BT connection state.\n\nTest: adb shell dumpsys media.metrics\nTest: atest mediametrics_tests\nTest: adb shell dumpsys stats --metadata\nBug: 149850236\nChange-Id: Iacf3f117c00ec9f377e62862080252aef9dc084f\n"
    },
    {
      "commit": "ff9fc0702faf39f86291d9b05e1bcd7bb9782632",
      "tree": "845da2650c256fa393187659e5a02406c696ac6d",
      "parents": [
        "5279846017b1c7532768b0e3f24302ca7b336fed",
        "240a1ebca637b27df7ee723f365f7e9bb467623f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 11 23:33:56 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon May 11 23:33:56 2020 +0000"
      },
      "message": "Merge \"Set timestamp correction and downstream latency logging as very verbose\" am: 3ec7c256a8 am: 240a1ebca6\n\nChange-Id: Ia598782ee86415718cd1812d3c2a2c6205b81bf9\n"
    },
    {
      "commit": "56a583e0c8927f7fe3efd1611c2be2f99fb88fb8",
      "tree": "fce4b44a354808312f0d26025f8218ef7c44eadf",
      "parents": [
        "b15c79859d290512490393abbe4719fae3c84937"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Fri May 08 15:12:17 2020 +1000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon May 11 20:05:56 2020 +0000"
      },
      "message": "Set timestamp correction and downstream latency logging as very verbose\n\nAllow ALOGV to be set without the above threadloop logs spamming\nthe output.\n\nTest: enable verbose logging, check logcat\nChange-Id: I584f2a255857626c3781b6ff56557fe919480620\n"
    },
    {
      "commit": "f7667505a23d017d984e03fbb71a6fc28be34449",
      "tree": "45e9d5370330e051307878944a68468333892420",
      "parents": [
        "cc79094c69bdc85c7c8f52247a00bae1dff68473"
      ],
      "author": {
        "name": "yucliu",
        "email": "yucliu@google.com",
        "time": "Tue Apr 28 15:33:55 2020 -0700"
      },
      "committer": {
        "name": "Yuchen Liu",
        "email": "yucliu@google.com",
        "time": "Wed May 06 18:02:52 2020 +0000"
      },
      "message": "Force DIRECT flag on direct output thread.\n\nForce DIRECT flag if current playback thread is direct output thread.\n\nThis can happen when the playback is re-routed to direct output stream\nby dynamic audio policy.\n\nBug: 130296239\nTest: manual\nChange-Id: I24efd87f74bacf6b769d3663e9521eb27b1704e9\n"
    },
    {
      "commit": "cf10d743aedcd29a53f3a4f16a25565f5b462dd8",
      "tree": "17f4ba2cd404347873f8f059d620a2ec890a7529",
      "parents": [
        "c2b11cbcb88c5970fb4ec6ff8a562b1465dfa70a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 28 15:38:24 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 30 17:39:50 2020 -0700"
      },
      "message": "ThreadMetrics: Add device-based statistics for audio\n\nCompute summary statistics based on the current device\nrather than the entire Audio Thread duration.\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nChange-Id: Ie6d459b06b4a469401ee9e0c194e45ea5ce380c6\n"
    },
    {
      "commit": "c2b11cbcb88c5970fb4ec6ff8a562b1465dfa70a",
      "tree": "dedee4f6e9c95af20ef76e79bddbc79ed850781a",
      "parents": [
        "199012b0c66d555207d81fedb7cce16305c865f8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 22 09:04:01 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 30 17:18:26 2020 -0700"
      },
      "message": "TrackMetrics: Add device-based statistics for audio\n\nCompute summary statistics based on the current device\nrather than the entire AudioTrack or AudioRecord duration.\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nChange-Id: Ia3a5707c43c4530f5a6ac90f52901bd2e0bd0bab\n"
    },
    {
      "commit": "0a957d32556294b0f4209bb5b7914fd05d742751",
      "tree": "5890a5b9d69c9df0905b8652cb30e274c08b6d81",
      "parents": [
        "ec660f185a1e212b1d22125de81e9bd1d0ff58a3"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Apr 29 10:56:20 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Apr 29 10:56:20 2020 -0700"
      },
      "message": "Check silent mode when updating output device.\n\nAfter refactoring audio device type, the output devices will only be set\nwhen create/release audio patch. In that case, the output devices are\nempty when creating the thread. If the \"ro.audio.silent\" is set, it will\nmake master muted if the output devices are empty. To fix the issue, do\nnot check silent mode when the output devices are empty, but check\nsilent mode when output devices are updated.\n\nTest: atest AudioHostTest with setting \"ro.audio.silent\"\nBug: 154037767\nChange-Id: I6cb219353e541ba99ba9acebd6ce853128d963d3\n"
    },
    {
      "commit": "d1f1cb68f567363a0b1e4cd4db6286afc6c8a1e2",
      "tree": "3b32985218612d05bf95fed08c18025d1735b2d4",
      "parents": [
        "06675ff30f63323905ff18c3c4e0d34a9fee4c60"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Mar 24 11:57:57 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Mar 27 11:33:09 2020 -0700"
      },
      "message": "Add audio attributes info when starting aaudio tracks on MMAP mix.\n\nIn aaudio, when adding tracks to mixed stream, it is needed to update\naudio attributes to HAL whenever the tracks are added or removed.\nCurrently, only the audio attributes used to open the stream will be\nsent to the HAL. In that case, adding audio attributes of the clients\nwhen starting the stream can help solve the problem. In audio flinger,\nthe client\u0027s audio attributes will be used to create MmapTrack.\n\nTest: play multiple aaudio tracks, add log\nBug: 77279923\nChange-Id: Ic1c536049e194a2bb7513425ee4828d52769d27f\n"
    },
    {
      "commit": "57a3769fb12dc8b2df457e0919850bd976716706",
      "tree": "f170ceb064b6be5d9443af5f2f95ac55c612c270",
      "parents": [
        "3006a83565b6863f247bf634faa929b84608026e"
      ],
      "author": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Mon Mar 23 17:27:25 2020 -0700"
      },
      "committer": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Tue Mar 24 16:20:36 2020 +0000"
      },
      "message": "Revert \"Allow call audio access for default dialer application\"\n\nThis reverts commit ac26cf749f457e12a3d8d7456bbcd58a3e028d69.\n\nReason for revert: Feature has been postponed\nBug: 151761909\n\nChange-Id: I90a977a23c5b97ddf95976cf2c4d517165f8e8c2\n"
    },
    {
      "commit": "b3e62a0302fb4d3b51b860d2badbc72663746dd9",
      "tree": "5bf1a4ede6eb601f3639a059ef55ee6d737d50f7",
      "parents": [
        "6437df87da8175a05e2a522c7c71eddcde88f97c",
        "04cb8f72e799d6045583304d1b90cd16875b9bd0"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Mar 21 00:08:42 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 21 00:08:42 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: Add master volume to the dumpsys\" into rvc-dev"
    },
    {
      "commit": "04cb8f72e799d6045583304d1b90cd16875b9bd0",
      "tree": "23c22ea54fe8c2df03107e08c578554c4b885514",
      "parents": [
        "8d386f779d76eb2a87ec570bf6ee3c0ce674085f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 20 13:44:33 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 20 14:00:23 2020 -0700"
      },
      "message": "AudioFlinger: Add master volume to the dumpsys\n\nNow PlaybackThreads shows master volume, which enables tracking\nsubtle silence issues. (Note MmapThreads already dump master volume.)\n\nTest: adb shell dumpsys media.audio_flinger\nBug: 145107983\nChange-Id: I2efc1a133c0ea07929c646b7e7148a9f3f311912\n"
    },
    {
      "commit": "2fe0acd07f9fb2d0eefbe0fa9d25fbaf0f672596",
      "tree": "10a5a6ceaee79473c53b3dacb08b58172bcd14f2",
      "parents": [
        "90334d0f03f4bee709969433898025fc16863f01"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 13 14:30:46 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 16 13:49:20 2020 -0700"
      },
      "message": "audioflinger: add effect creation probe mode\n\nAdd an argument to IAudioFlinger::createEffect() API to\nask AudioFlinger to just run the pre flight checks but not\ncreate the actual audio effect instance and allocate resources.\nThis is the basis of an API for apps to query if a given\neffect can be created without having to allocate the resources\nand risk an exception when calling the constructor.\n\nBug: 150699608\nTest: CTS and GTS Tests for audio effects\nChange-Id: Ibdda22fd945c88c33e3c7342a7a5ed3e02d399ac\n"
    },
    {
      "commit": "f6eb4c388b6499752c2ee47b663956dcbf0dd7e4",
      "tree": "032329fc713202ce01d5e17420f47bd6025f041c",
      "parents": [
        "c62ad13ad8da6b31168f0d9f3e5f2a770ed0bbee"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Feb 25 14:06:25 2020 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Feb 26 16:16:44 2020 -0800"
      },
      "message": "Add callback for codec format change.\n\nWhen creating native audio track, a IAudioTrackCallback will be created\nsystematically. All callbacks will be cached in Threads and protected by\na lock. Whenever there is a callback event from audio HAL, it will\nfinally trigger callback to native audio track. Currently, there is only\none callback event, which is codec format change.\n\nBug: 150301890\nTest: manual\nChange-Id: I32293627ed923b17dd25f11f0ee0a0c35cd7c01f\n"
    },
    {
      "commit": "ac26cf749f457e12a3d8d7456bbcd58a3e028d69",
      "tree": "0d3ba6751d1bee73ac1d6bf5c50771a2bfede68f",
      "parents": [
        "0f97ee5a52d697e31e9c6dc3c9e7aa941168b571"
      ],
      "author": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Mon Jan 06 14:43:38 2020 -0800"
      },
      "committer": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Tue Feb 18 22:54:20 2020 +0000"
      },
      "message": "Allow call audio access for default dialer application\n\nThe access to call audio (record and play) will be granted only to the app associated with Dialer role, who also includes a new system permission.\n\nTest: Compilation and manual tests\nBug: 135197853\n\nChange-Id: I65ca823c235d4d3420630837427103783ad1d1b0\n"
    },
    {
      "commit": "0f97ee5a52d697e31e9c6dc3c9e7aa941168b571",
      "tree": "b24e61ac061d57ac858650b5a6d0940b144b50b3",
      "parents": [
        "ae3b9539cead752af48515f2e43c9985c3fc04e6",
        "5e4d86f837c1b978d4c5d69964a769c5a26e3fae"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 18 22:25:32 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 18 22:25:32 2020 +0000"
      },
      "message": "Merge \"audioflinger: remove null checks\""
    },
    {
      "commit": "5e4d86f837c1b978d4c5d69964a769c5a26e3fae",
      "tree": "feebebe3255fa50f93a2679c8639d25d1ff6242d",
      "parents": [
        "697aec8505c99b66313aa5c58e3bb68776db82f0"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Feb 18 12:55:36 2020 -0800"
      },
      "committer": {
        "name": "George Burgess",
        "email": "gbiv@google.com",
        "time": "Tue Feb 18 21:21:13 2020 +0000"
      },
      "message": "audioflinger: remove null checks\n\nThis code has null checks with intervening unconditional dereferences of\nthe potentially-null variable.\n\nIt\u0027s not clear that `mOutput` can ever be null to begin with. If it can\nbe, we have a few dereferences to guard. :)\n\nCaught by the static analyzer:\n\nframeworks/av/services/audioflinger/Threads.cpp:2671:19: warning: Called\nC++ object pointer is null [clang-analyzer-core.CallAndMessage]\nframeworks/av/services/audioflinger/Threads.cpp:2852:9: warning: Called\nC++ object pointer is null [clang-analyzer-core.CallAndMessage]\n\nBug: None\nTest: TreeHugger\n\nChange-Id: I456581204718390088998a1fe2514dff63f6578f\n"
    },
    {
      "commit": "35f8c7c32aa45f0b95cec7e1d31fc92ce79d57ee",
      "tree": "d9225d987f9948174710ad18b7a51bc45686205d",
      "parents": [
        "39d1f3e01dae5f6794e95074118d3f0466c95a7d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 08 11:42:35 2020 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 10 18:07:26 2020 -0800"
      },
      "message": "audio policy: add call assistant volume stream\n\nRouting strategy call assistant was added without\nassociated volume stream and wass reusing AUDIO_STREAM_PATCH.\nThis is violating the rule that two strategies cannot\nshare the same volume stream.\n\nBug:148588565\nTest: play music and check volume\nChange-Id: Ib3fb2a1b7b5f3118bf16a3cc9d8e578fa0431645\n"
    },
    {
      "commit": "69d367771be73184f6eb0c0d84bc64afdb311f18",
      "tree": "f8caaf7fdb8510296ba1414309908a5368b867ae",
      "parents": [
        "33873dec8be145a09321009ecabd50cb8c62c090",
        "9930037fa8bba06f299a87d8b427a4ec01f3e16c"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Feb 01 08:32:47 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Feb 01 08:32:47 2020 +0000"
      },
      "message": "Merge \"Reset direct output thread timestamp on flush\" am: 394b76dd52 am: 1976ed32df am: 9930037fa8\n\nChange-Id: If04ea2471db4615c5baa33377767453c47158a00\n"
    },
    {
      "commit": "999f0e88d2d4dde2bc8f78adefee8b8237a52de4",
      "tree": "a4ed574e8903d7edf213f031eaa720d5cb5bf778",
      "parents": [
        "733c728752ae6958c88b2da4a4c662d266294b70"
      ],
      "author": {
        "name": "Sampath Shetty",
        "email": "Sampath.Shetty@dolby.com",
        "time": "Wed Jan 15 10:19:06 2020 +1100"
      },
      "committer": {
        "name": "Sampath Shetty",
        "email": "sampath.shetty@dolby.com",
        "time": "Thu Jan 30 23:49:42 2020 +0000"
      },
      "message": "Reset direct output thread timestamp on flush\n\nIn order to avoid subsequent tracks using stale kernel timestamps while\ncomputing track timestamps, clear the timestamp info upon flush.\n\nChange-Id: I2b8af33b287aee986871b6415b89f9c53d92f3a6\n"
    },
    {
      "commit": "b68f5ebb53434e800c43715127e2d1032e3a9b54",
      "tree": "7e1c75e02cb63d4c9d1f0b7dc3322001e1463b33",
      "parents": [
        "3b4c1f0320efc7a54c4ab811727c432cda73dd37"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 03 16:49:17 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 28 13:03:22 2020 -0800"
      },
      "message": "MediaMetrics: Add AudioFlinger logging\n\nTest: atest mediametrics_tests\nTest: mediametrics dumpsys\nBug: 138583596\nChange-Id: I2086c5a780744d409052fde4c5ebc1dc92d95ea8\n"
    },
    {
      "commit": "9b2064c3afe14f893afff019bdcd4c4d40ce13ed",
      "tree": "0a49d5049cfd60fb6de3387460f5bb41a58e2ed1",
      "parents": [
        "249dba6eb7b1f71a424290e1c58c3bedb76a0595"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 17:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 13 23:05:34 2020 +0000"
      },
      "message": "AudioFlinger: implement device specific audio effects\n\nAdd management of audio effects applied to a specific input\nor output audio device.\n\nA new class DeviceEffectProxy derived from Effectbase is added\nto represent an effect attached to a particular audio device type and\naddress. This proxy manages one or more actual EffectModule instances\nautomatically added to a playback or capture thread or directly to the\naudio HAL when the targeted audio device is used by an audio patch.\n\nA new DeviceEffectManager class is added to manage creation and release\nof DeviceEffectProxy instances and monitor creation and release of audio\npatches and create or release actual effect instances accordingly.\n\nBug: 136294538\nTest: make\n\nChange-Id: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\nMerged-In: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\n"
    },
    {
      "commit": "e0b9a360c32f8ab2238b4b3779659e565b221946",
      "tree": "aafbd84d809aa976554c4de7597db1234560ee8e",
      "parents": [
        "5d88539848f2416e327da743f0c38ed597f8f089"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 16 19:34:05 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:12:23 2020 -0800"
      },
      "message": "audioflinger: refactor EffectModule class\n\nIntroduce a class EffecBase as a parent class of\nEffectModule with default implementation for handles management,\nbasic properties storage and state management.\n\nBug: 146177259\nTest: CTS: AudioEffectTest, EqualizerTest, VisualizerTest,\nAudioPreProcessingTest\nTest: manual test: Play Music EQ settings, Duo EAC and NS\nChange-Id: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\nMerged-In: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\n"
    },
    {
      "commit": "5d88539848f2416e327da743f0c38ed597f8f089",
      "tree": "416773cefe0ae261b15f850bff1c35bedead9680",
      "parents": [
        "d700529501d45ab3d0a0b506b2b76cb0212cf5ce"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 10:56:31 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:12:13 2020 -0800"
      },
      "message": "Revert \"Revert \"Audio effects: define interface between EffectModule and audio framework\"\"\n\nThis reverts commit 3fd6a2ccfd9305619289e2cd514fdfa803210f9e.\n\nAlso fixes native coverage build.\n\nBug: 146177259\nTest: build/soong/soong_ui.bash --make-mode TARGET_PRODUCT\u003dcf_x86_phone TARGET_BUILD_VARIANT\u003duserdebug NATIVE_COVERAGE\u003dtrue\nChange-Id: Ib78a22619123cd1848b047931b02d4061def3a23\nMerged-In: Ib78a22619123cd1848b047931b02d4061def3a23\n"
    },
    {
      "commit": "a20c4e9c9239d751d688d9a9fe5d92a8c613dd13",
      "tree": "9d5ccc5886dbf0cede2c4b63265f51f8f77eb283",
      "parents": [
        "e5f01a7d5edd517c3a52ca11e6908aead47ba916"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 15:55:51 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:11:27 2020 -0800"
      },
      "message": "AudioFlinger: add audio session for device effects\n\nAdd specific audio session ID for effects applied to a\nparticular audio device.\nDevice specific effects will be attached to a particular audio sink or\nsource device identified by its unique audio port ID and will all use\nthis same session ID.\nOnly one session of this type exists on a given playback or record\nthread.\nAll effects in this session apply to the same device ID and are created/released\nwhen the routing (audio patch) of this thread output or input stream is updated.\n\nBug: 136294538\nTest: make\n\nChange-Id: I4e3a55ed1244b918429dd9e217b6efecc1ec6449\nMerged-In: I4e3a55ed1244b918429dd9e217b6efecc1ec6449\n"
    },
    {
      "commit": "b82e6b724e45b1f88ed746c316b445b3bb8036b3",
      "tree": "4fd55853fe2b97b98bf27bff61142d9b2b92f28f",
      "parents": [
        "9ce5404e8ee6cf247a9004500cb91bf3b8114b14"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 17:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 07 17:05:07 2020 -0800"
      },
      "message": "AudioFlinger: implement device specific audio effects\n\nAdd management of audio effects applied to a specific input\nor output audio device.\n\nA new class DeviceEffectProxy derived from Effectbase is added\nto represent an effect attached to a particular audio device type and\naddress. This proxy manages one or more actual EffectModule instances\nautomatically added to a playback or capture thread or directly to the\naudio HAL when the targeted audio device is used by an audio patch.\n\nA new DeviceEffectManager class is added to manage creation and release\nof DeviceEffectProxy instances and monitor creation and release of audio\npatches and create or release actual effect instances accordingly.\n\nBug: 136294538\nTest: make\n\nChange-Id: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\n"
    },
    {
      "commit": "a96f9f950d08b1492b10acb2adbc087b49c34c1b",
      "tree": "319ac25407b90f74c881d25ef93beb33c7189a1e",
      "parents": [
        "231bcdc0177f618f18a32512744949938440dd5f",
        "41709559999108cce9b1d725779fc513cc19138d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 19 02:57:07 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 19 02:57:07 2019 +0000"
      },
      "message": "Merge \"audioflinger: refactor EffectModule class\""
    },
    {
      "commit": "41709559999108cce9b1d725779fc513cc19138d",
      "tree": "edb0537f270f40e04de64f608824bf7d9d782bcd",
      "parents": [
        "c43423a6c6b6b0506d7b38f8062012a91fbef050"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 16 19:34:05 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 18 09:34:08 2019 -0800"
      },
      "message": "audioflinger: refactor EffectModule class\n\nIntroduce a class EffecBase as a parent class of\nEffectModule with default implementation for handles management,\nbasic properties storage and state management.\n\nBug: 146177259\nTest: CTS: AudioEffectTest, EqualizerTest, VisualizerTest,\nAudioPreProcessingTest\nTest: manual test: Play Music EQ settings, Duo EAC and NS\nChange-Id: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\n"
    },
    {
      "commit": "94e872e6894dce7d89954d0515c140ec626d20ba",
      "tree": "3b8a0acc0c514e139b767f255e77a23fbf7d55c2",
      "parents": [
        "990cc725040484dfd233280eedeb7de2da4f72e4",
        "f27e987d277c186010e8bdd1d5e781158b31f9af"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 17 22:52:33 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 17 22:52:33 2019 +0000"
      },
      "message": "Merge \"Naming consistency: MediaAnalytics to MediaMetrics\""
    },
    {
      "commit": "f27e987d277c186010e8bdd1d5e781158b31f9af",
      "tree": "87703f33fe40f06c2faa78daa4105bb6cb8db79d",
      "parents": [
        "b7b870db0c6cc0c6375b154400a813b84f5056b4"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sat Dec 07 06:28:46 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 17 11:20:57 2019 -0800"
      },
      "message": "Naming consistency: MediaAnalytics to MediaMetrics\n\nBug: 145780674\nTest: build, boot, dumpsys media.metrics\nTest: atest mediametrics_tests CtsNativeMediaMetricsTestCases\nChange-Id: Icbfa98da9e61702aee9a1d807b5e126b4b9c6458\n"
    },
    {
      "commit": "6b446ce95d99373c9b1210336fa66d8c4f2d7409",
      "tree": "f67c7be3149340c3066970d3e33125ae7c26d00b",
      "parents": [
        "b7b870db0c6cc0c6375b154400a813b84f5056b4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 10:56:31 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 15:43:24 2019 -0800"
      },
      "message": "Revert \"Revert \"Audio effects: define interface between EffectModule and audio framework\"\"\n\nThis reverts commit 3fd6a2ccfd9305619289e2cd514fdfa803210f9e.\n\nAlso fixes native coverage build.\n\nBug: 146177259\nTest: build/soong/soong_ui.bash --make-mode TARGET_PRODUCT\u003dcf_x86_phone TARGET_BUILD_VARIANT\u003duserdebug NATIVE_COVERAGE\u003dtrue\nChange-Id: Ib78a22619123cd1848b047931b02d4061def3a23\n"
    },
    {
      "commit": "3fd6a2ccfd9305619289e2cd514fdfa803210f9e",
      "tree": "d0290d31cf14167bad8ce9e769eb8e873dfc1cd3",
      "parents": [
        "c0abc6239e1134ed224a10aa66a364baff71cd07"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 00:33:32 2019 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 00:33:32 2019 +0000"
      },
      "message": "Revert \"Audio effects: define interface between EffectModule and audio framework\"\n\nThis reverts commit c0abc6239e1134ed224a10aa66a364baff71cd07.\n\nReason for revert: broken build on target cf_x86_phone-userdebug_coverage\n\nChange-Id: Ic6808bfd31bedfa85b7d7a120e4c6f6273678f73\n"
    },
    {
      "commit": "c0abc6239e1134ed224a10aa66a364baff71cd07",
      "tree": "4471ea4e788da6d7909121a289fe692438d26f28",
      "parents": [
        "880971c8f204ae755f1d4d3be7287aeb1041c42d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 15 17:53:33 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 11 21:33:05 2019 +0000"
      },
      "message": "Audio effects: define interface between EffectModule and audio framework\n\nThis is in preparation of the addition of audio effects attached to a\nspecific audio device that will not be attached to a particular\nThreadBase or Effectchain.\n\nCreate an clean callback interface used by the EffectModule to interact\nwith the rest of the audio framework. This callback must be implemented\nby the EffectModule parent (e.g an EfffectChain).\n\nAls refactor EffectHandle enabled(), disable() and disconnect methods()\nto avoid dealing with the ThreadBase directly.\n\nBug: 136294538\nTest: make\nChange-Id: I9160f88f7fbb0447b5e679260bf0401d3af591d2\n"
    },
    {
      "commit": "3f75a5bc38894cb6635837c49247c3fa50ed6c47",
      "tree": "a6a256606f82ae742012ec1532ef22009ab0ab25",
      "parents": [
        "602e1ae3a3d4e2ffe158dacfd268547d94a06b38"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 15:55:51 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 17:22:42 2019 -0800"
      },
      "message": "AudioFlinger: add audio session for device effects\n\nAdd specific audio session ID for effects applied to a\nparticular audio device.\nDevice specific effects will be attached to a particular audio sink or\nsource device identified by its unique audio port ID and will all use\nthis same session ID.\nOnly one session of this type exists on a given playback or record\nthread.\nAll effects in this session apply to the same device ID and are created/released\nwhen the routing (audio patch) of this thread output or input stream is updated.\n\nBug: 136294538\nTest: make\n\nChange-Id: I4e3a55ed1244b918429dd9e217b6efecc1ec6449\n"
    },
    {
      "commit": "39260a69ca1f66f29f250f30fde07fd628785708",
      "tree": "f2126fd1052011c2fe3e35559aa472581193b96e",
      "parents": [
        "a2adc8aa6c06f0e1d06c1bb6535be15f30ba26fd",
        "c76d3a273d0336ffa5d71c11b7a566721eca77f1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 06 14:33:03 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 06 14:33:03 2019 -0800"
      },
      "message": "Merge \"Sometimes no audio output after playing some clips using Files.apk\" am: 80a288ad82 am: 68e6412024\nam: c76d3a273d\n\nChange-Id: I7c365f5f22927382788cbe7ecc4383af6565fa65\n"
    },
    {
      "commit": "80a288ad82f21b3254248c2b2df0dfe8a1443929",
      "tree": "c79d326a095f4ce0fb45490893bc41763cfa52d7",
      "parents": [
        "fefdf667a0c093ae069461bd75fa8dfa0289fa68",
        "32dc26e71cb0493f15b4b6480d991ad283405b42"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 06 22:12:05 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 06 22:12:05 2019 +0000"
      },
      "message": "Merge \"Sometimes no audio output after playing some clips using Files.apk\""
    },
    {
      "commit": "998004649870bc1ceb51a409ba340f0ea8de31b6",
      "tree": "d4ff3eaf49a7a9bef7daa7ec53d271fbb07f702a",
      "parents": [
        "27d7e20fa30756cadc6613e637e53fd9ada24ffd",
        "e0b975b56ab140c494ed12e71575f44154a8374b"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Fri Dec 06 00:26:38 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 06 00:26:38 2019 -0800"
      },
      "message": "Merge \"Allow OFFLOAD timestamp correction for MSD/BUS combinations\" am: 74cfcdf823 am: 8cc35dd935\nam: e0b975b56a\n\nChange-Id: I0dab7e32ef1489c7eac5972dcca7b7c88d2234d7\n"
    },
    {
      "commit": "74cfcdf8237a455f8b8ec8e1b2a08fe777cf7512",
      "tree": "b2a807ef98f524f4ae78e3a26ce4564862725aaa",
      "parents": [
        "9410d2ed179da5df8087b588cf3b8965f8fe8957",
        "f8726f00877d2e9628537da771b12829afb92229"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 05 20:19:08 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 05 20:19:08 2019 +0000"
      },
      "message": "Merge \"Allow OFFLOAD timestamp correction for MSD/BUS combinations\""
    },
    {
      "commit": "b8269fd0946976cc820b0abb815f0fb67fc88b76",
      "tree": "1b65e96a5a38d1f9f37675c7e7e16f6f8389cd43",
      "parents": [
        "7946fbe6782ce25599d917d9357389ad1729f2db"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 11 12:16:27 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Dec 05 10:09:03 2019 -0800"
      },
      "message": "Use AudioDeviceTypeAddr when setting device for effects.\n\nSeparate SET_DEVICE and SET_INPUT_DEVICE command in effects as it can\nbe multiple devices for output case, but only single device for input\ncase.\nUse AudioDeviceTypeAddr instead of just audio device type as address\ncan be useful to identify audio device if there are multiple devices\nwith the same device type connected.\n\nBug: 135621476\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest EqualizerTest VirtualizerTest VisualizerTest\nChange-Id: Ie9df88e3338730392abbc3efae5daadc70398ff7\nMerged-In: Ie9df88e3338730392abbc3efae5daadc70398ff7\n"
    },
    {
      "commit": "f8726f00877d2e9628537da771b12829afb92229",
      "tree": "109f413c13e023c78416d559686740476079b612",
      "parents": [
        "0287266a3e2543268938e1b91129fb934b92b356"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Mon Dec 02 14:12:01 2019 +1100"
      },
      "committer": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Thu Dec 05 06:44:35 2019 +1100"
      },
      "message": "Allow OFFLOAD timestamp correction for MSD/BUS combinations\n\nTest: audioflinger dumpsys for MSD BUS offload threads show\n      timestamp correction enabled\nChange-Id: I044aaa5d1754ea08b3c78de75e7a4f0bc58dd269\n"
    },
    {
      "commit": "10d86fd087218d43254ec781612a9f86c0022e9d",
      "tree": "35246193cf7aaf924548f3cd15d763bd297d44aa",
      "parents": [
        "c010683e081f48eb72e21cbcf0458efc17184e6b"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 31 17:20:42 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 03 17:42:23 2019 -0800"
      },
      "message": "Refactor audio device type in audio flinger.\n\nAs audio device type must not be used as a bit mask, there is a\nrequirement to refactor the code in audio flinger. This CL includes:\n1. Use DeviceTypeSet for recording output devices in Threads. The input\nand output device types in Threads will only be updated when creating\nan audio patch.\n2. Use helper functions in audio flinger for checking whether an audio\ndevice type is a certain category.\n3. Use DeviceDescriptorBaseVector as vector of DeviceDescriptorBase.\nDeviceDescriptorBaseVector will be used in RecordThread to record output\ndevices, which will be used in audio effect.\n4. Do not use set parameters when communicating output devices to\nRecordThread. Instead, adding a new event in Thread to update output\ndevices directly.\n\nBug: 135621476\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest RoutingTest\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest AAudioTests\nTest: audio smoke test, run OboeTester\nChange-Id: I87f3e59fd01b0b100232d61a9abbc471c61110c4\nMerged-In: I87f3e59fd01b0b100232d61a9abbc471c61110c4\n"
    },
    {
      "commit": "e2e830fd3b444c27abf258718cfba5ad8d209ec4",
      "tree": "4e0642cbfe2b8de89c0abab3b9fd9238515fcabd",
      "parents": [
        "eff0d0824c9c087c00153dece27e5dc3f8cd0c15"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 03 12:54:46 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 03 13:23:11 2019 -0800"
      },
      "message": "AudioFlinger: Fix incorrect underrun count on track pause\n\nAlso add track state name helper function for logging.\n\nTest: Play video clip then pause and resume several times\nBug: 145613591\nChange-Id: If4fc2565da9b3d4964fb9fdb6f5854ff6fbadfb8\n"
    },
    {
      "commit": "4f3ac4d0555229a41273107ff0987018ef6b69e1",
      "tree": "b17a402fe68ef0b1c80d234d14ff6d6b7f45715e",
      "parents": [
        "bde7aa5551cc67c2b47f1f67cb66c56b824c1a65",
        "d6f189b4c790f88d72c2227cebbbb8a59cbe8a4e"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 22 10:56:08 2019 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Sun Nov 24 05:16:33 2019 +0000"
      },
      "message": "DO NOT MERGE - Merge QQ1A.191205.011 into stage-aosp-master\n\nBug: 144955631\nMerged-In: I242aebe71ffe7d348eca213252f1691fd444703e\nChange-Id: I40ae7732b4435dc9aa9a3edb57275505e4112a4c\n"
    },
    {
      "commit": "32dc26e71cb0493f15b4b6480d991ad283405b42",
      "tree": "670c5f2c708143dc5e0a106eb256b7686b178f09",
      "parents": [
        "429f364cc4eb0f42298461b88cc3b197f46c04f3"
      ],
      "author": {
        "name": "Jindong",
        "email": "jindong.yue@nxp.com",
        "time": "Mon Nov 11 18:10:01 2019 +0800"
      },
      "committer": {
        "name": "fang hui",
        "email": "hui.fang@nxp.com",
        "time": "Wed Nov 20 10:41:15 2019 +0000"
      },
      "message": "Sometimes no audio output after playing some clips using Files.apk\n\nSometimes after switching songs in Files, audio driver\nenters \"PAUSED\" state, and no sound anymore.\n\nIn normal case, \"paused\" track will be removed from active tracks,\nthen audio hal will make this stream enter standby mode.\n\nActually there are two paths to move paused tracks into standby mode:\n1\u003e track underruns twice:\n    if (--(track-\u003emRetryCount) \u003c\u003d 0) {  // mRetryCount is 2\n        tracksToRemove-\u003eadd(track);\n    } else {\n        doHwPause \u003d true;   // pause\n    }\nUnfortunately, this issue happened exactly in the middle state:\ntrack underrun for the first time, it enters to paused state;\nthen before it underrun for second time, it is stopped due to MediaPlayer.\n\n2\u003e track is paused and code goes here:\n    if (mStandby || !last ||\n            track-\u003epresentationComplete(framesWritten, audioHALFrames) ||\n            track-\u003eisPaused() ||\n+           track-\u003eisStopped()) {\n        tracksToRemove-\u003eadd(track);\n    }\nBut when the issue happens, track is in stopped state,\nthere is no logic to standby it anymore, so add one.\n\nChange-Id: I70cac1f3d6b065690400f6a2363712d4642a9763\n"
    },
    {
      "commit": "8f278eea9deff0d368e1b770cb8c58e4ccb4b359",
      "tree": "f8c22c1f4657e45860da41320aaf86ee6b6400a8",
      "parents": [
        "e6cbccaef91a63e0a739f084fdc94a216a08efd6"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 11 12:16:27 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 11 15:32:54 2019 -0800"
      },
      "message": "Use AudioDeviceTypeAddr when setting device for effects.\n\nSeparate SET_DEVICE and SET_INPUT_DEVICE command in effects as it can\nbe multiple devices for output case, but only single device for input\ncase.\nUse AudioDeviceTypeAddr instead of just audio device type as address\ncan be useful to identify audio device if there are multiple devices\nwith the same device type connected.\n\nBug: 135621476\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest EqualizerTest VirtualizerTest VisualizerTest\nChange-Id: Ie9df88e3338730392abbc3efae5daadc70398ff7\n"
    },
    {
      "commit": "c52b1ffec2ad11ad0ea1fb7e702da1086c9df437",
      "tree": "b55dcb697023b715848166282b3b588c0aa72530",
      "parents": [
        "c76250c8279552db0be9068e49f65696f931c011"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 31 17:20:42 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Nov 08 11:37:27 2019 -0800"
      },
      "message": "Refactor audio device type in audio flinger.\n\nAs audio device type must not be used as a bit mask, there is a\nrequirement to refactor the code in audio flinger. This CL includes:\n1. Use DeviceTypeSet for recording output devices in Threads. The input\nand output device types in Threads will only be updated when creating\nan audio patch.\n2. Use helper functions in audio flinger for checking whether an audio\ndevice type is a certain category.\n3. Use DeviceDescriptorBaseVector as vector of DeviceDescriptorBase.\nDeviceDescriptorBaseVector will be used in RecordThread to record output\ndevices, which will be used in audio effect.\n4. Do not use set parameters when communicating output devices to\nRecordThread. Instead, adding a new event in Thread to update output\ndevices directly.\n\nBug: 135621476\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest RoutingTest\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest AAudioTests\nTest: audio smoke test, run OboeTester\nChange-Id: I87f3e59fd01b0b100232d61a9abbc471c61110c4\n"
    },
    {
      "commit": "b0de569edd2d27b8dae9e3048f9c131b6ebc2d45",
      "tree": "90e0f48fde7d3f07367b62be0c2f98527fc327d6",
      "parents": [
        "bcb57f62b0f75630a5c1199c78f5af311934b6ce"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 20 15:42:04 2019 -0700"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Fri Oct 11 02:34:35 2019 +0000"
      },
      "message": "AudioFlinger: enforce OP_RECORD_AUDIO during recording\n\n  Fix issue where RecordTrack silencing didn\u0027t silence the\nfull buffer: the memset to 0 was using the RecordThread frame\nsize, not the RecordTrack frame size.\n  OP_RECORD_AUDIO was only enforced at the start of a recording\nwhich would fail if not granted. This patch silences the recording\n(i.e. silence is recorded instead) when it is lost, and undoes that\nwhen granted again. This requires:\n- propagating the package name of the client to the RecordTrack class\n- registering an appOp callback in RecordTrack (through a new\n  OpRecordAudioMonitor class) to (un)silence the recording\n- update the isSilenced() method to take into account the appOp.\n\nBug: 138968594\nBug: 138636979\nTest: run app that records audio, then \"adb shell appops __pack_name__ 27 2\"\n     and verify recording is silent after that.\n\nChange-Id: Ib33f5b592185a67204997213bab1ac2594d90d37\n(cherry picked from commit ddf87effa4d80f413a80fde861f73877ccd80599)\nMerged-In: Ib33f5b592185a67204997213bab1ac2594d90d37\n(cherry picked from commit 7307293e8befafa12b244b74cd3c8cb84b27997c)\n"
    },
    {
      "commit": "7829e89a8b789211bb0ada783aa1103739446b04",
      "tree": "c47c35ad1de8a5595e2ea616c19f2d7cd4d19771",
      "parents": [
        "55a5ece7ca358ddaf6926c6ecf0d88d632b45a8b",
        "1de381858fda2fc7bab72b6f27d0beaf08679705"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 08 10:43:11 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 08 10:43:11 2019 -0700"
      },
      "message": "Merge \"audioflinger: Add tracing for direct tracks\"\nam: 1de381858f\n\nChange-Id: Id65ffbc61d99e67d84383b41c9277ce8c960d486\n"
    },
    {
      "commit": "76e89c3b8e2bd864f8943a1ad015306a98a4cac7",
      "tree": "bbb7c5aa0daf3416b9e7e8d9c2c0ce4a6c2fd944",
      "parents": [
        "91beec3e38677fc9d168c3e774755ace009e60db"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Aug 15 20:18:47 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 07 16:24:15 2019 -0700"
      },
      "message": "audioflinger: Add tracing for direct tracks\n\nAdd missing calls to ATRACE for direct writes and frames ready\non direct thread.\n\nTest: \u003cstart direct output\u003e\n      external/chromium-trace/systrace.py audio\n\nMerged-In: Iee6ea72442f9902819628735e19cce0ba1546165\nChange-Id: Iee6ea72442f9902819628735e19cce0ba1546165\n"
    },
    {
      "commit": "7594c6e4d7294e606d8939f15f04546a6e711454",
      "tree": "c73f3dc48a7a0f668652a12d6f86646c90942733",
      "parents": [
        "79645b66f19d91419b747b0620b5c7c00117f1b2",
        "d7a1506715bf9d588210d46b8d6563fc9e92e25a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 07 11:23:01 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 07 11:23:01 2019 -0700"
      },
      "message": "Merge changes I52ec5b02,I376656e3,I3f005583,Icba4e33d,I78400f6c, ...\nam: d7a1506715\n\nChange-Id: Idd3ab59ad99c450d89fd47aaa1a15681f73175ac\n"
    },
    {
      "commit": "af28887c617eca259444f743ef83eda85d52d31e",
      "tree": "d1885e5d79cd7021a89276e4ebe7f81f2fd8ab73",
      "parents": [
        "d368d9166ea7df77479a2908e3a7dbf4c5f21c12"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 25 13:05:02 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 04 14:06:22 2019 -0700"
      },
      "message": "Abstract access to HAL stream via Source in RecordThread\n\nThis allows to replace direct reading from HAL with obtaining\naudio data from another source.\n\nIt should be possible to encapsulate reading from FastCapture\nin the same manner, but it\u0027s not required for direct inputs.\n\nTest: make\nMerged-In: I3f005583410cc9c5d4b07c127d95e236abb4a85f\nChange-Id: I3f005583410cc9c5d4b07c127d95e236abb4a85f\n"
    },
    {
      "commit": "32f0d1689bd2eea6f43d7fb53faaedc23bd101d7",
      "tree": "3144c04d2bba1d717b30fe54fb4e4f08c478f982",
      "parents": [
        "a4f00e2aeadc9dc5c2f4970cd61ace72438136d4"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jul 30 14:42:32 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 04 14:06:22 2019 -0700"
      },
      "message": "libaudioprocessing: Extract vendor-available part of AudioMixer\n\nSplit AudioMixer into the base part which doesn\u0027t rely on\nthe framework and can be used in vendor code and the derived part\nwhich is intended to be used by Audioflinger.\n\nTest: A/B compare output from test scripts, manual testing on the phone\nMerged-In: I24c390f67f20baa8109902099359ca6e34eebcfd\nChange-Id: I24c390f67f20baa8109902099359ca6e34eebcfd\n"
    },
    {
      "commit": "2534b388b5ab10712b9b6c24a49e3dc827ce0e00",
      "tree": "3b465c0ff21bfe6da7783cf44a6d69ba21ff5ada",
      "parents": [
        "8296c2522746d3500c024121577007dd5e9e685c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 25 13:05:02 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 01 16:28:01 2019 -0700"
      },
      "message": "Abstract access to HAL stream via Source in RecordThread\n\nThis allows to replace direct reading from HAL with obtaining\naudio data from another source.\n\nIt should be possible to encapsulate reading from FastCapture\nin the same manner, but it\u0027s not required for direct inputs.\n\nTest: make\nChange-Id: I3f005583410cc9c5d4b07c127d95e236abb4a85f\n"
    },
    {
      "commit": "7dd39723b34c8378fc5eabb4d4ccacf32f55ffe2",
      "tree": "222de47bcb84931d714d250fe51d3249771edc18",
      "parents": [
        "61d4a093f4b4041b145fbd7a3ab5ec04679f87d9"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Sep 05 15:14:30 2019 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 13 10:59:51 2019 -0700"
      },
      "message": "Improve visibility of IMemory security risks\n\nThis change renames the IMemory raw pointer accessors to\nunsecure*() to make it apparent to coders and code reviewers\nthat the returned buffer may potentially be shared with\nuntrusted processes, who may, after the fact, attempt to\nread and/or modify the contents. This may lead to hard to\nfind security bugs and hopefully the rename makes it harder\nto forget.\n\nThe change also attempts to fix all the callsites to make\neverything build correctly, but in the processes, wherever the\ncallsite code was not obviously secure, I added a TODO requesting\nthe owners to either document why it\u0027s secure or to change the\ncode. Apologies in advance to the owners if there are some false\npositives here - I don\u0027t have enough context to reason about all\nthe different callsites.\n\nTest: Completely syntactic change. Made sure code still builds.\nChange-Id: I5fb99aa797c488406083178a6b05355d98710d3b\n"
    },
    {
      "commit": "cfaf477e54f6c9d58b079f73507a5dfbeb773faa",
      "tree": "ee2099f874501689ee079a94709a4ce94a65ebfc",
      "parents": [
        "1210f45ea764f0d186e55a19c068283a4ff6cfac",
        "5f6132f7401cd11ff972968dae8695674950ec57"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Sun Sep 08 13:06:51 2019 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Sun Sep 08 13:06:51 2019 -0700"
      },
      "message": "Merge qt-r1-dev-plus-aosp-without-vendor (5817612) into stage-aosp-master\n\nBug: 135460123\nChange-Id: Ibfea730ea29bc73aa9ffda902aedbc6d8fcec89d\nMerged-In: I971ea1db5b37fca8a651cba85ba12c44d13e07c1\n"
    },
    {
      "commit": "5ada82ee2511a31c6846c67e455ffb2c9989b623",
      "tree": "38845fc352b781bb00cfe7bf56cf1cfc23c2af37",
      "parents": [
        "dba03231c2fb2c54c8a7b313786c7bc7d3471908"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 29 17:53:54 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 30 18:07:18 2019 -0700"
      },
      "message": "audio policy: allow silencing capture per port\n\nAdd the possibility to silence a particular AudioRecord\nclient rather than silencing all clients sharing the same UID.\n\nTest: AudioRecordTest#testRecordNoDataForIdleUids\n\nChange-Id: Ic472045cd45c7222ca3a88ccf131435fd1e26475\n"
    },
    {
      "commit": "fb1ae807222a43d977790c028297496dc0583f53",
      "tree": "e8fe68038039316b1cb49b7fd00e842ec602449e",
      "parents": [
        "e67d86100f23f56d78b3a666bc2b87284d0486b1",
        "ddf87effa4d80f413a80fde861f73877ccd80599"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 27 15:50:18 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 27 15:50:18 2019 +0000"
      },
      "message": "Merge \"AudioFlinger: enforce OP_RECORD_AUDIO during recording\""
    },
    {
      "commit": "ddf87effa4d80f413a80fde861f73877ccd80599",
      "tree": "0e89ff4a5be97c07c81bc11c36f5e8741fca9eed",
      "parents": [
        "28355761d73f1495bba8994dc3c0dc631ae245a8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 20 15:42:04 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Aug 26 16:00:34 2019 -0700"
      },
      "message": "AudioFlinger: enforce OP_RECORD_AUDIO during recording\n\n  Fix issue where RecordTrack silencing didn\u0027t silence the\nfull buffer: the memset to 0 was using the RecordThread frame\nsize, not the RecordTrack frame size.\n  OP_RECORD_AUDIO was only enforced at the start of a recording\nwhich would fail if not granted. This patch silences the recording\n(i.e. silence is recorded instead) when it is lost, and undoes that\nwhen granted again. This requires:\n- propagating the package name of the client to the RecordTrack class\n- registering an appOp callback in RecordTrack (through a new\n  OpRecordAudioMonitor class) to (un)silence the recording\n- update the isSilenced() method to take into account the appOp.\n\nBug: 138968594\nTest: run app that records audio, then \"adb shell appops __pack_name__ 27 2\"\n     and verify recording is silent after that.\n\nChange-Id: Ib33f5b592185a67204997213bab1ac2594d90d37\n"
    },
    {
      "commit": "3bc5c3c9933f1ab54c3456114f599746709bc390",
      "tree": "67a6b098efe0186ba1b544ddc2f42e8d264fb73e",
      "parents": [
        "33f556656c712a8d7dff772b233b7bcdb8cb7654",
        "82452b74566a302b058d9b5ca3c09c04dd99cf16"
      ],
      "author": {
        "name": "Wenfeng Sun",
        "email": "wenfeng.sun@mediatek.com",
        "time": "Wed Aug 21 16:32:19 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 21 16:32:19 2019 -0700"
      },
      "message": "Merge \"Fix OffloadThread VolumeShaper issue\" am: b7a4a3c492 am: 3ca47ba98d am: 3ef5053951 am: d6d47b2f03\nam: 82452b7456\n\nChange-Id: I82ab6403e7734b04230a2b2f761eb4f25e161e51\n"
    },
    {
      "commit": "d6d47b2f0342ddb454c684bf9b93072697f491fe",
      "tree": "ee2099f874501689ee079a94709a4ce94a65ebfc",
      "parents": [
        "5f6132f7401cd11ff972968dae8695674950ec57",
        "3ef50539518973a8b48fda7eacc1f8840a5db970"
      ],
      "author": {
        "name": "Wenfeng Sun",
        "email": "wenfeng.sun@mediatek.com",
        "time": "Wed Aug 21 15:12:23 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 21 15:12:23 2019 -0700"
      },
      "message": "Merge \"Fix OffloadThread VolumeShaper issue\" am: b7a4a3c492 am: 3ca47ba98d\nam: 3ef5053951\n\nChange-Id: Ibfc5cca4b48c07c2aaba161373c961cb3dfd7d3f\n"
    },
    {
      "commit": "3ca47ba98d2286610e7b97c41e6418eb6441ba7c",
      "tree": "462f5e140ceb566e3978ffa9dabad4b33050b452",
      "parents": [
        "1dd33eacee80d6934dd541eb4703f17e18d97c55",
        "b7a4a3c49214617fd928de1e11c7ff49e4a68815"
      ],
      "author": {
        "name": "Wenfeng Sun",
        "email": "wenfeng.sun@mediatek.com",
        "time": "Wed Aug 21 14:48:06 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 21 14:48:06 2019 -0700"
      },
      "message": "Merge \"Fix OffloadThread VolumeShaper issue\"\nam: b7a4a3c492\n\nChange-Id: Ia166a3a4c036a0400b0220dd20d54aacbf286abb\n"
    },
    {
      "commit": "7945833b714265830792fd19f5b7618fe1a4cb10",
      "tree": "7d2fe5c61b3f02935439c37270aeb2926750c517",
      "parents": [
        "e8a9a230ac79a42ccd629f5fcfbdadb4ed60f872"
      ],
      "author": {
        "name": "Wenfeng Sun",
        "email": "wenfeng.sun@mediatek.com",
        "time": "Wed May 29 20:12:43 2019 +0800"
      },
      "committer": {
        "name": "chien elvis",
        "email": "elvis.chien@mediatek.com",
        "time": "Wed Aug 21 08:27:51 2019 +0000"
      },
      "message": "Fix OffloadThread VolumeShaper issue\n\nBug: 134042971\n\nTest: NTS case AUDIO-026-DDP51-TC3-NonTunnel / Tunnel verify volume starts at 0 when fading in\n\nChange-Id: I8ee4444e3ceb2d8a0ceb979fada10c644b5db35c\n"
    },
    {
      "commit": "ddb07bc1434555ba697dfd7b6a6c02c9533c4673",
      "tree": "4caea8a509d12c7b3e0e421665440bf87807621e",
      "parents": [
        "f1100e3e64cc9aa1934fd8e4625a9a0e85365ba9"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Aug 15 20:18:47 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Aug 15 20:18:47 2019 -0700"
      },
      "message": "audioflinger: Add tracing for direct tracks\n\nAdd missing calls to ATRACE for direct writes and frames ready\non direct thread.\n\nTest: \u003cstart direct output\u003e\n      external/chromium-trace/systrace.py audio\n\nChange-Id: Iee6ea72442f9902819628735e19cce0ba1546165\n"
    },
    {
      "commit": "7ad7a25890ce24a37950872ce9a0043b08f27bf6",
      "tree": "a92aa7a2eaeb22bdaffcea7bcb1ac4545fc40eb7",
      "parents": [
        "3b73e994a0e8cf9d718b535fe1f1da157b5c480a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jul 30 14:42:32 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Aug 01 12:38:41 2019 -0700"
      },
      "message": "libaudioprocessing: Extract vendor-available part of AudioMixer\n\nSplit AudioMixer into the base part which doesn\u0027t rely on\nthe framework and can be used in vendor code and the derived part\nwhich is intended to be used by Audioflinger.\n\nTest: A/B compare output from test scripts, manual testing on the phone\nChange-Id: I24c390f67f20baa8109902099359ca6e34eebcfd\n"
    },
    {
      "commit": "87b6e61db314aa83c3e582ba8ae3d7c3cb1d2d61",
      "tree": "79ce9fff74b8eb605189d54d40e7c15f3e958b53",
      "parents": [
        "e6138376f0578d464037d645f7985c87db60565e",
        "4c4e9748f874636037a7eff8a42aa50684657efc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 27 11:43:46 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jun 27 11:43:46 2019 -0700"
      },
      "message": "Merge \"audioflinger: fix VoIP volume for fast track\" into qt-r1-dev am: e30c6c001d\nam: 4c4e9748f8\n\nChange-Id: I1150fa307e79c0db20d48ad9f0226b05c1ebd7ff\n"
    },
    {
      "commit": "eab904559f8c248787898783e442e92ffc53b529",
      "tree": "62c63db70c0c1c3df4cb1370612f25a33ab058bb",
      "parents": [
        "91c9dcb862ce28e2a1ca9ff8bf17ad9df0bd88e2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 24 15:17:46 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 25 16:23:02 2019 -0700"
      },
      "message": "audioflinger: fix VoIP volume for fast track\n\nAlso use audio HAL volume APIs for fast tracks opened on a\nspecific VoIP RX output. Previous implementation was only\nconsidering regular tracks.\n\nFix regular track implementation to send volume before it is altered by\neffect volume controller if present.\nAlso only reflect stream and master volume in volume sent to HAL:\ntrack and shaper volumes are still applied by mixer.\n\nBug: 133829194\nTest: VoIP call\nChange-Id: Id5025a1f67df0eab7391056715047a23429e0f02\n"
    },
    {
      "commit": "66ff16f84fda9e1df8ad740efb0ca1a324b84c7d",
      "tree": "1803326890d5a16322e9c540a18e61f75e4a9df1",
      "parents": [
        "d6f4cf51161c8a6e936d6dec892b72cd3635cb33",
        "eb7056abb3d2075c40df89de6e4bf8539170d1ec"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 29 13:25:22 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 29 13:25:22 2019 -0700"
      },
      "message": "Merge \"VolumeShaper: Ensure consistent observable state when muted\" into qt-dev am: 2616bbf488 am: 19bf3a5a51\nam: eb7056abb3\n\nChange-Id: I394325bd763912c70a923e44ca2688eb0dc23cd4\n"
    },
    {
      "commit": "333ab963ed35ee99efa076db100e70a45e6ffff9",
      "tree": "ccab1ba155378b4e57996049a08afa4a74ef5171",
      "parents": [
        "b472cf075b83686fe30254a3b58f60e5866a667a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 28 20:23:35 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 29 09:53:04 2019 -0700"
      },
      "message": "VolumeShaper: Ensure consistent observable state when muted\n\nPrior to this patch, VolumeShaper state for direct\nand offloaded tracks did not appear to advance for master mute\nand all tracks did not appear to advance for stream mute.\n\nTest: atest android.media.cts.VolumeShaperTest with and without muting\nBug: 133354056\nChange-Id: I589f4e0837124a185509718f1175e06102a1be96\n"
    },
    {
      "commit": "c272efca7d3a6381745fc87c54fb774fea145e26",
      "tree": "a53926924ec708b431bcc81cbd12604937054f49",
      "parents": [
        "6800429ebe3d363c8427b52a1a130f3485a9881e",
        "0a1c618d67b1f8f1a1015b0d0d4da372a821b864"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 10 21:19:52 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 10 21:19:52 2019 -0700"
      },
      "message": "Merge \"AudioFlinger: Do not permit fast patch tracks if not compatible\" into qt-dev am: 432e0fd4a4\nam: 0a1c618d67\n\nChange-Id: Ibc7421cb149580cdb9a4ab6a31f805d4828b01e8\n"
    },
    {
      "commit": "ae22b4843b3cfcbbf6fdbc21e60f1bd0c1d1f763",
      "tree": "91ebed531eb0e24fbe9d9fc0ad9577a4c337e80f",
      "parents": [
        "e905b6b18738572062e9c30735539836af683643"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 09 15:38:55 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 09 17:02:49 2019 -0700"
      },
      "message": "AudioFlinger: Do not permit fast patch tracks if not compatible\n\nTest: atest AudioPlaybackCaptureTest\nBug: 132346038\nChange-Id: I67939ed7f98c546d41148d36764d93723353c893\n"
    },
    {
      "commit": "c31f1485c111cb7fa888abc29a82bb64e1163ddb",
      "tree": "7463cf7ee0a3d2a727fd3007baeba879fd11eb89",
      "parents": [
        "17ecc0aafac119b80e5e3b3785585de7c92306be",
        "88074c7df73eb9a140f87c1adfbddabda1e574c2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 03 23:19:59 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 03 23:19:59 2019 -0700"
      },
      "message": "Merge \"AudioFlinger: Properly account for underruns\" into qt-dev am: 377cc84da5\nam: 88074c7df7\n\nChange-Id: I20559f4d0f0fa83d082d4565509ae3afb5dddcc4\n"
    },
    {
      "commit": "c16463885b106429146b6f89fbde6ef8eb372538",
      "tree": "0aa0b84eb018ea03d45a6add10d7ee2de4a79714",
      "parents": [
        "ef7eaaf8d873e9d832673fd0a8e07371fa47a0a0"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 30 16:12:10 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 02 17:58:01 2019 -0700"
      },
      "message": "AudioFlinger: Properly account for underruns\n\nWhen the mixer status was MIXER_ENABLED twice in a row\nzeroes were forced to the audio sink.\n\nTest: aaudio test write_sine_callback -pl -n1 -r44100 -s20\n      and then use rapid volume changes.\nBug: 131767115\nChange-Id: I24b41084138210c63e8c551ae4a5f3adddb9e607\n"
    },
    {
      "commit": "56ce52547018df9b8b581d8c7e73f9020803482d",
      "tree": "165a76c8b07e68d6451c4be5d6663a75106e82cb",
      "parents": [
        "37f93e87346094262f78b5c0a190df57672a5749",
        "a0d7ca012e08c0a2d73953555b4d6fd3cf1825f5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 01 15:18:39 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 01 15:18:39 2019 -0700"
      },
      "message": "Merge \"AudioFlinger: Fix haptic race condition\" into qt-dev am: 12d07c503a\nam: a0d7ca012e\n\nChange-Id: I5362ea7713b94bd2d91c4b7a784d7f06e8594782\n"
    },
    {
      "commit": "12d07c503a8ec317b4d5e7aef49036a1c36600a8",
      "tree": "b43470ddf76aad4fe29d864a30341af0137b41e1",
      "parents": [
        "91c82546ed8f47e8f43843a427f49a0d3e0b4e45",
        "6e6a2e6190b63a19c8788c475269d711f7853743"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 01 16:47:24 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 01 16:47:24 2019 +0000"
      },
      "message": "Merge \"AudioFlinger: Fix haptic race condition\" into qt-dev"
    },
    {
      "commit": "6e6a2e6190b63a19c8788c475269d711f7853743",
      "tree": "9d925d56d96fbd63e4c14e42331b85e5304bf6f3",
      "parents": [
        "2f7a6072bbafd4faba8cbaf170d3cb72e37e3454"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 30 16:38:41 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 30 16:52:46 2019 -0700"
      },
      "message": "AudioFlinger: Fix haptic race condition\n\nTest: compiles\nBug: 131715193\nChange-Id: I57f136903b9ecc40ecd10642c0bfaad0134495f4\n"
    },
    {
      "commit": "4857b03336df01e66ad13246ab245ad0b21022b1",
      "tree": "7576aed7969312ad6f0d44a230c40a77df442b13",
      "parents": [
        "f59675a4114cdd7091fae4395e4f936415837b7d",
        "a444666e1afe87a15f4d572bde7dc2375134f3bf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 30 11:59:55 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 30 11:59:55 2019 -0700"
      },
      "message": "Merge \"audio: improve audio routing callbacks\" into qt-dev am: 9f5591ac13\nam: a444666e1a\n\nChange-Id: I9913d8e1a969001737906b2ec1e68a53c1fa4951\n"
    },
    {
      "commit": "1efa1cdb869954a043ee73131f0d1cb0875e0c18",
      "tree": "a69d22c8ef7781189252dd9a41dee2adebd4c640",
      "parents": [
        "3ee6b7a5bc0cee813bb80456ca46dade0b479937",
        "852261034a37d0078c2ed2e41f1b4daa847ec1c9"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Apr 29 16:14:57 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 29 16:14:57 2019 -0700"
      },
      "message": "Merge \"AudioPolicy/AudioFlinger: Track AudioRecords via Record IDs\" into qt-dev am: 66ea392903\nam: 852261034a\n\nChange-Id: Ife2c560625df40e9ae1de84f39b53934ba5f6239\n"
    },
    {
      "commit": "09f1ed2cb4479c93859557f5b4d40e1c3732f6f2",
      "tree": "27f2c1c23755b45acdfd0832bb9e493f6b890aaa",
      "parents": [
        "2f7a6072bbafd4faba8cbaf170d3cb72e37e3454"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 24 17:45:17 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 29 09:59:31 2019 -0700"
      },
      "message": "audio: improve audio routing callbacks\n\nDo not force audio device changed callback when the client\n(AudioTrack or AudioRecord) registers to AudioFlinger but only when\nit starts playback or capture. Doing so prevents a spurious callback\nhapping at registration time where a stale device\n(previously selected by AudioFlinger thread) but irrelevant to this\nclient is indicated. This causes a disconnection of AAudio streams\ndespite no real device change.\n\nBug: 128630993\nTest: CTS: android.nativemedia.aaudio.AAudioTests, android.media.cts.RoutingTest\n      CTS Verifier: Audio Input/Output Routing Notifications Test\n\nChange-Id: Ia7f1d11490989b0287c97479466c1c07a223aab3\n"
    },
    {
      "commit": "2996f67767ff90617cc5f7801c7bd8dc67c9dd66",
      "tree": "d20af841b6537ca44a0b1bf7a839e0ba3f9c7a91",
      "parents": [
        "3208826f676b1be78e1c04692d7f17249e45c3ea"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 18 12:29:59 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Apr 24 14:49:52 2019 -0700"
      },
      "message": "AudioPolicy/AudioFlinger: Track AudioRecords via Record IDs\n\nThe client must provide a unique Record ID (RIID) when creating\nan AudioRecord. This RIID is passed down to AudioInputDescriptor\nin AudioPolicyManager which sends configuration updates\nvia IAudioPolicyServiceClient callback.\n\nBy supplying RIID, the Audio Service can coalesce start / stop\nevents coming from clients (apps) with recording configuration\nupdate events.\n\nFor AAudio MMap clients everything is handled at the server\nside because they correspond directly to audioserver objects.\n\nBug: 123312504\nTest: android.media.cts.AudioRecordingConfigurationTest\n      AudioRecordTest#testAudioRecordInfoCallback\n      MediaRecorderTest#testAudioRecordInfoCallback\n      manual testing using Oboe and Solo test apps\n\nChange-Id: I3d32241752d9a747736606dc4cb1e068e6b7aa3b\n"
    },
    {
      "commit": "77cbebd8d7066a422ba88f5585c64d9fa4c4149b",
      "tree": "0ff878b895ab6335036bc2917bb1638000bb092a",
      "parents": [
        "fddd9faf0cb5089a65bf14aa2138df661a298896"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Tue Apr 23 14:18:44 2019 +1000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Apr 23 15:58:59 2019 -0700"
      },
      "message": "Warn output buffer size not multiple of 16 frames only for mixer threads\n\nTest: make\nChange-Id: I0b1aec787c1052e2ee7bff09fe66a7fd3d1126ce\n"
    },
    {
      "commit": "7ed66a1a879399edf356e54f09d59c1a7ca2d5f7",
      "tree": "498ea915266ffda87754b03e4b40230e2712ee1d",
      "parents": [
        "8263e3519b6801f019e471efe4a6045b7046e4d3"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 18 13:20:30 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 19 19:03:30 2019 +0000"
      },
      "message": "AudioFlinger: allow small requested capacity for FAST path\n\nAudioFlinger used to reject requests for the low latency FAST\npath when the capacity was !\u003d mPipeFramesP2.\nBut if the caller requests \u003c mPipeFramesP2 than we can just bump it\nup to mPipeFramesP2 because the API allows that.\n\nFor example, on Pixel, mPipeFramesP2 is 4096\n\nBug: 80308183\nTest: adb shell input_monitor_callback -pl -b4000 -m1\nTest: should see performance mode 12 for LOW_LATENCY\nChange-Id: I987067910de3194fb52370d0ea1626cffad6248c\n"
    },
    {
      "commit": "b20cf7db9e669169bbae5f0da97018a866c3f634",
      "tree": "96e88e1850e1fb27fcc0bad53cc575e837d86c60",
      "parents": [
        "aceea8bddd0324df4414673bc39a3f38fe16e8a1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 05 19:37:34 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 19:27:20 2019 -0700"
      },
      "message": "audio policy: concurrent capture effects\n\nAdd pre processing effect management for concurrent capture scenarii.\nWhen several clients on the same input stream have enabled audio effects,\nonly the effects attached to the top priotity client are active.\nOther effects are suspended.\n\nAdd AudioFlinger API to suspend/restore audio effects build on top\nof exisiting internal effect suspend mechanism.\n\nRecordThread now supports more than one effect chain.\n\nAOSP pre processing implementation supports more than one effect session\nper input.\n\nRefactor AudioPolicyManager::closeAllInputs() to call closeInput() on\nall inputs instead of partially duplicated code.\n\nBug: 128419018\nTest: make\nChange-Id: I685286da4c2905a8894a4354679f9787b1400621\n"
    },
    {
      "commit": "6c79632bbece71f7af0c2453bb62a5d6f0cca664",
      "tree": "a70a17d1f723b7e0241bb762bf5478e3c9947348",
      "parents": [
        "2cb1a8ccbd402d74a06ee34721f5dd787ecb396f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 09 14:13:17 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 10:29:30 2019 -0700"
      },
      "message": "refactor mutexes for audio effects in audio flinger and audio policy\n\nRemove effect specific mutex (mEffectLock) in AudioPolicyService: Due to\nconcurrent capture (among other reasons), it is necessary that the audio\npolicy manager state preserved by mLock includes audio effects\nregistration and enabling.\n\nMoved all audio policy API calls from audio flinger out of locked regions\nfor audio flinger, thread and effects mutexes to avoid cross deadlocks\nbetween audioflinger and audio policy manager:\n- centralized audio policy API calls in EffectModule::updatePolicyState()\n- the enabled state now reflects the state requested by the controlling\nhandle, not the actual effect processing state: a suspended effect is\nnow considered enabled.\n\nA new audio policy manager API moveEffectsToIo() is added to atomically\nhandle moving effects to a new input or output without having to call\nunregister \u003e register \u003e enable sequence.\n\nAlso fix assert in setStreamVolume to match volume group refactoring\nin audio policy manager.\n\nBug: 128419018\nTest: CTS tests for audio effects.\nTest: manual tests with Duo calls, Play Music, Youtube, notifications\n with and without Bluetooth and wired headset.\n\nChange-Id: I8bd3af81026c55b6be283b3a9b41fe4998e060fd\n"
    },
    {
      "commit": "654438952d760d80986270db81d498f1b6e110b4",
      "tree": "3b3da8dedee329a89f54804513fc39aad0d92061",
      "parents": [
        "e46a14777671ec310b35aa1b0a90510f29bf8085",
        "95e3768e1936673cacf185c721f9b2c117a94a0a"
      ],
      "author": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Tue Apr 16 19:07:03 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 16 19:07:03 2019 +0000"
      },
      "message": "Merge \"AudioFlinger::Thread ensure proper add / sub\" into qt-dev"
    },
    {
      "commit": "95e3768e1936673cacf185c721f9b2c117a94a0a",
      "tree": "993e603d53a6bf44744b94a394de2c790d81ed2f",
      "parents": [
        "8d14f5ccff2440f39630965486e9601ab6d007b6"
      ],
      "author": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Fri Apr 12 11:13:36 2019 -0700"
      },
      "committer": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Mon Apr 15 14:11:36 2019 -0700"
      },
      "message": "AudioFlinger::Thread ensure proper add / sub\n\nBug: 126772841\nBug: 130371615\nTest: 24 hours recording with 64 bit audioserver\nChange-Id: I71305448ee194d1cc325ab238f1681aee93ab18d\n"
    }
  ],
  "next": "fa11780f3d3f5ce87120c27cc539e8672ec4636f"
}
