)]}'
{
  "log": [
    {
      "commit": "2b48703770efab81143d389d7389166eb1a6c8db",
      "tree": "f309a4bbfbb4f716dee1af20f82ca95aa04b907e",
      "parents": [
        "f8d13dee65d3708ea527e9f565be85031d7021ba"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 13 14:16:02 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Sep 17 12:50:12 2018 -0700"
      },
      "message": "Suppress implicit-fallthrough warnings in audioflinger etc.\n\nAdd FALLTHROUGH_INTENDED for clang compiler.\n\nBug: 112564944\nTest: build with global -Wimplicit-fallthrough.\nChange-Id: I8875bc7ed073aae84d5df97eb39c8c745ca627ef\n"
    },
    {
      "commit": "1990bd40ebb6fcbb876fae42e43792b9dc6d308b",
      "tree": "533950b805a77a744c2100b9c286059406ace779",
      "parents": [
        "34affaed9cc6374e979e3bd29ccfe1671694bfe9"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Fri Dec 12 14:04:11 2014 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Thu Aug 16 17:42:13 2018 +0900"
      },
      "message": "Set volume for output when effect is enabled/disabled.\n\nEven though effect module has \"EFFECT_FLAG_VOLUME_CTRL\" flag,\nthere is some case where volume setting is not sent to offload thread.\nThat leads to sudden increase of audio volume or too low volume.\nThis change is to support delegation of volume control completely\nfor offload audio effect.\n\nBug: 37443095\nTest: Enable/Disable Audio effects during offload playback\nChange-Id: I7033071edc99fadc519efd7adc895dc10f7b9d86\n"
    },
    {
      "commit": "06d13227bed31bf4a2dfa30e19198620eb5b120e",
      "tree": "6331425a223849eb00235dbb80642d7f242e020f",
      "parents": [
        "d79fe0de75143dcf71c43b3d533a18a391bb4a5f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 03 20:13:31 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 08 12:15:12 2018 -0700"
      },
      "message": "AudioFlinger: Use actual MonoPipe depth for sleep computation\n\nThis prevents benign underruns from glitching.\n\nTest: instrumented, see bug\nBug: 79227935\nChange-Id: I47be9c06faac4dec736ad809c59cf56c0f3d1dda\n"
    },
    {
      "commit": "7a3dc6bd4795a1b254d1ceef959da2b4d6ef8ba4",
      "tree": "bba043f16dedc7f82531ffc8c5cf1a5351036df7",
      "parents": [
        "0f59472e584f9962a7ef390d1dba90ca2c0ad8be"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 01 16:39:51 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 02 10:38:37 2018 -0700"
      },
      "message": "RecordThread: Adjust sleep time to pipe frames free.\n\nThis fixes FastCapture pipe overrun for normal AudioRecord clients.\n\nTest: instrumented CTS AudioRecord, Photos record.\nBug: 71330194\nBug: 77281929\nChange-Id: I186017aec8d0acb3aefe9e4eb378b71b32f8ad59\n"
    },
    {
      "commit": "d5b638fe57c3ceaf7834d4c2181d4c4c2588f967",
      "tree": "24d5945c47bdde790d316edf7e109a03e1847eac",
      "parents": [
        "0926bb0100b5df3439c49777952d48ce53dd9137"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 30 13:56:10 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 30 14:55:08 2018 -0700"
      },
      "message": "RecordThread: Immediate retry on audio read overrun\n\nOtherwise another sleep and FastCapture write can cause overrun again.\n\nTest: Force OVERRUN fifo error and AudioRecordTest still passes.\nBug: 26983118\nChange-Id: I039e3a42863cbe96ca84d0f03020b836d5c944d1\n"
    },
    {
      "commit": "67f97291bfb7caec5152d2c93913191729db5917",
      "tree": "3d8b3241addba940bf4b8707bf5993fe533fd525",
      "parents": [
        "6b6f4313aae039f2d73664816e45834e65f79bf5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 18:05:41 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 18:05:41 2018 -0700"
      },
      "message": "audioflinger: fix mmap volume update\n\nMake sure volume callback is sent at least each time a new\nclient stream is started.\n\nBug: 78122737\nTest: repro steps in bug.\nChange-Id: I5b5ac617d604ed23bf8528affa1877b6cc0b5494\n"
    },
    {
      "commit": "734046ead103df5ec86b1dbd29e9945034a1ecb0",
      "tree": "910d09f7cd3a19d24b6f3e563db9553e07b7d6a4",
      "parents": [
        "331679c8a5cd21a0e6a7a1d851e965e4721f7420"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 14:50:52 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 17:08:06 2018 -0700"
      },
      "message": "audioflinger: fix mmap interface callback lock\n\nDo not hold the MmapThread mutex when calling methods on\nMmapStreamCallback as AAudioService will synchronously call\nmethods on MmapStreamInterface that will in turn acquire the mutex.\n\nBug: 78118584\nTest: \u0027adb shell write_sine_callback -m3 -pl -s100 -x\u0027 and Plug headphones in and out.\nTest: AAudio CTS tests\n\nChange-Id: I5953bb449e67735271203a2e1dbef0a2b451f5d3\n"
    },
    {
      "commit": "331679c8a5cd21a0e6a7a1d851e965e4721f7420",
      "tree": "9e3835bb805631ca42a90ded01796b73307a4642",
      "parents": [
        "554e08c6b00b2a57348f4545d450915a9e8c870a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 17:03:16 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 17:08:06 2018 -0700"
      },
      "message": "Revert \"Revert \"audioflinger: implement silenced capture for mmap\"\"\n\nThis reverts commit 611ebb95e76c230214780b7b583b8a3c5277ac7a.\n\nBug: 78118584\nbug: 72134552\nTest: \u0027adb shell write_sine_callback -m3 -pl -s100 -x\u0027 and Plug headphones in and out.\nTest: AAudio CTS tests\nChange-Id: I7558ad7b9c6c2d352ebce105382fe914c26fd35e\n"
    },
    {
      "commit": "554e08c6b00b2a57348f4545d450915a9e8c870a",
      "tree": "b66615256ee7a7eeac8a7e54c54c2fd872a3fdd0",
      "parents": [
        "c620796251df712274c16858c76628d802bbb4b1",
        "611ebb95e76c230214780b7b583b8a3c5277ac7a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 16 23:52:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 23:52:19 2018 +0000"
      },
      "message": "Merge \"Revert \"audioflinger: implement silenced capture for mmap\"\" into pi-dev"
    },
    {
      "commit": "611ebb95e76c230214780b7b583b8a3c5277ac7a",
      "tree": "1c8ef30309a0954a51a6b4c872f30ca399f064d2",
      "parents": [
        "a2f478ca0b2bda8db9b321f0cfa9e9d3cf6130f9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 19:43:59 2018 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 19:43:59 2018 +0000"
      },
      "message": "Revert \"audioflinger: implement silenced capture for mmap\"\n\nThis reverts commit a2f478ca0b2bda8db9b321f0cfa9e9d3cf6130f9.\n\nBug: 78118584\nChange-Id: Ie0da3dea445f2474c7a889c5f9919305c1c96d40\n"
    },
    {
      "commit": "c16f23e399969e9d82f0b245afb0870fa448e78e",
      "tree": "39c75acf7d8a311cce349d3edf4f0dd89d0873da",
      "parents": [
        "247cc0a3c81ec629a2ae51b40bdcb2afc0e94210",
        "a2f478ca0b2bda8db9b321f0cfa9e9d3cf6130f9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 13 00:39:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 00:39:54 2018 +0000"
      },
      "message": "Merge \"audioflinger: implement silenced capture for mmap\" into pi-dev"
    },
    {
      "commit": "a2f478ca0b2bda8db9b321f0cfa9e9d3cf6130f9",
      "tree": "00e39e41acac99cc35c292c65c7bca60973fdd5a",
      "parents": [
        "9fc25229e0723c93b453ab34957f22a643e2b602"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 10 19:09:40 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 11 19:07:45 2018 -0700"
      },
      "message": "audioflinger: implement silenced capture for mmap\n\nImplement silencing of audio capture for idle UIDs for\nMMAP streams.\n\nUse audio HAL setMicGain() API to silence the mmap buffer for\nexclusive mode and when only one client is active in shared mode.\n\nAdd new MmapStreamCallback method onStreamSilenced() for AAudio\nservice to selectively silence streams from silenced UIDs in\nshared mode.\n\nBug: 72134552\nTest: manual\nChange-Id: I7c92ba0002bc5ba003c1a3c887edddf9ae53b538\n"
    },
    {
      "commit": "c1428baf1badc3e5ea817d6266f42b2719374ed2",
      "tree": "706631b0f16acc5a19180ebdef764a99364b4946",
      "parents": [
        "6bcc99198f9be597705be1277977828037d48a1d",
        "b0eeaf121e896f7158ee9961cb9009554d37e53e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 11 23:54:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 23:54:19 2018 +0000"
      },
      "message": "Merge changes I53055724,I06914911 into pi-dev\n\n* changes:\n  Send stream volume to fast track\n  Revert \"Revert \"Audio V4: Send volume and duplicated track attr in update metadata\"\"\n"
    },
    {
      "commit": "ec84cede0192c5fe0d0b87f1a1865a75e6d14f38",
      "tree": "5ad4707397874e6f03704246f9a1d5c89ba0b172",
      "parents": [
        "f592b938a97e14d965018ad5caf500b0c0e0f359",
        "80ee2722d64a73777fa76027b1568e61dec8d910"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Apr 11 18:47:25 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 18:47:25 2018 +0000"
      },
      "message": "Merge \"Revert \"Audio V4: Send volume and duplicated track attr in update metadata\"\" into pi-dev"
    },
    {
      "commit": "f592b938a97e14d965018ad5caf500b0c0e0f359",
      "tree": "69fc73fdd299ab5c192f53c9bd83a5b829c6535c",
      "parents": [
        "32c74e9e97c843f56023bf7de30fb6316e01ee1d",
        "80d03d292e006e7c474e12d06450f63b5ea3b197"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 11 18:20:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 18:20:46 2018 +0000"
      },
      "message": "Merge \"AudioFinger: Release buffers in AudioMixer when track becomes inactive\" into pi-dev"
    },
    {
      "commit": "b0eeaf121e896f7158ee9961cb9009554d37e53e",
      "tree": "9ab63ba1ff15a3290f54ba82c16fa63ed3cd514a",
      "parents": [
        "12381092fdb5810cb27f738435ea8a0e3d2d0f42"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Apr 11 08:30:16 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Apr 11 16:27:18 2018 +0000"
      },
      "message": "Send stream volume to fast track\n\nBug: 77892019\nTest: Play Pokemon GO and change volume\nChange-Id: I53055724d5885a4283fdb8670f76fcc8d98fb247\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "12381092fdb5810cb27f738435ea8a0e3d2d0f42",
      "tree": "534768433f4916952e94e212fdb923b6a3ed5b40",
      "parents": [
        "80ee2722d64a73777fa76027b1568e61dec8d910"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Apr 11 09:19:59 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Apr 11 16:26:58 2018 +0000"
      },
      "message": "Revert \"Revert \"Audio V4: Send volume and duplicated track attr in update metadata\"\"\n\nThe original patch was breaking the fast track volume, so it was\nreverted.\nIn order to fix the original patch, revert the revert and in the\nfollowing patch apply the fix.\nThis makes review easier as only the difference to the original patch\nwill be present.\n\nBug: 38184704\nBug: 69623109\nBug: 77892019\nTest: Patch already tested for original patch and is tested for following\n      patch that fixes this patch.\nThis reverts commit 80ee2722d64a73777fa76027b1568e61dec8d910.\nChange-Id: I06914911c2435df167fff05ce5ca40dd1ed90f39\n"
    },
    {
      "commit": "80ee2722d64a73777fa76027b1568e61dec8d910",
      "tree": "e3e8744cefcf0785addf9ceb1519fceac3020293",
      "parents": [
        "c86a7f7de52f0ff0059e8c6c4fa4619aa7fae5c5"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Apr 11 15:53:48 2018 +0000"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Apr 11 16:09:19 2018 +0000"
      },
      "message": "Revert \"Audio V4: Send volume and duplicated track attr in update metadata\"\n\nThis reverts commit c86a7f7de52f0ff0059e8c6c4fa4619aa7fae5c5.\n\nReason for revert: fast track volume broken\nTest: none, it is a revert\nBug: 77892019\nChange-Id: If00616afae5c069cf0b6bd7c2da2a6d4af72180e\n"
    },
    {
      "commit": "80d03d292e006e7c474e12d06450f63b5ea3b197",
      "tree": "4d77d9f74e9479b389e583d5337c95280e5273a4",
      "parents": [
        "7121c67c340048fb520cd71bf510769140cc5bcd"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 10 10:32:11 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 10 13:09:07 2018 -0700"
      },
      "message": "AudioFinger: Release buffers in AudioMixer when track becomes inactive\n\nTest: Regression check, some instrumented test\nBug: 77813646\nChange-Id: Ia0ab75d4af1ae2c865256a02e956cf40f56628f5\n"
    },
    {
      "commit": "c86a7f7de52f0ff0059e8c6c4fa4619aa7fae5c5",
      "tree": "534768433f4916952e94e212fdb923b6a3ed5b40",
      "parents": [
        "b31f96ffee12f920d32d868c627cf34f1afeb988"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Apr 03 09:00:09 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Apr 09 16:19:11 2018 -0700"
      },
      "message": "Audio V4: Send volume and duplicated track attr in update metadata\n\nOnly the volume of MMAP thread was previously sent and\nthe attributes of duplicated tracks were skipped.\n\nBug: 38184704\nBug: 69623109\nTest: check that the HAL receives correct track metadata volume\nTest: check that the HAL receives correct duplicated track metadata\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n\nChange-Id: I1e3b14edd8c9a5a65d2b9f4cf8660997c81c701c\n"
    },
    {
      "commit": "b31f96ffee12f920d32d868c627cf34f1afeb988",
      "tree": "e3e8744cefcf0785addf9ceb1519fceac3020293",
      "parents": [
        "dab059e964ea373d8e18a063e80d7d421e27925f"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Apr 03 09:00:09 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Apr 06 22:18:34 2018 +0000"
      },
      "message": "Audio V4: Do not send metadata of Output Track\n\nOutput track currently do not support audio attributes,\nnevertheless the placeholders values were erroneously\npropagated to the HAL.\n\nBug: 38184704\nBug: 69623109\nTest: check that the HAL does not receive metadata about duplicated\n      tracks.\nChange-Id: I9a646faf4a43b1ebc09c03329827aee4a49674f9\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "069c2719e753732d5af9ba51e5fcc34342b0c9f2",
      "tree": "e3cfa2f8e2ceecd6e20d91b484865a33c195d7ec",
      "parents": [
        "1f564acca544826daaf7dca44e39cec6016b82fd"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Mar 29 19:09:14 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Mar 30 14:09:23 2018 -0700"
      },
      "message": "Audio V4: Propagate track attributes to HAL\n\nThis patch does not propagate the volume.\n\nBug: 38184704\nBug: 69623109\nTest: log metadata in HAL\nChange-Id: I313563cafd9f2b29a13839c3c075beb65a170632\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "1f564acca544826daaf7dca44e39cec6016b82fd",
      "tree": "4adc2f15866c6c7bb47f7eb351aa251a94b1aaa2",
      "parents": [
        "a8975a7e857fd745fc88d226d86b53ae088eafb9"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Mar 29 13:53:10 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Mar 30 13:15:05 2018 -0700"
      },
      "message": "Audio V4: Propagate audio attributes to tracks\n\nThis patch has not functional changes.\n\nBug: 38184704\nBug: 69623109\nTest: play music and a audio\nChange-Id: Ide6ec7de4dbfab4af2653475901c3b3daee36e52\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "9ff780e58ff96ff98acaae4166bb218880bf9e73",
      "tree": "b54bf56b7f6ebc5950064d2908004abfe35d7162",
      "parents": [
        "2ca700737c14edc9141af170ee278853fd99fa87"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Mar 19 18:19:52 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Mar 28 10:17:36 2018 -0700"
      },
      "message": "Support query microphones information.\n\nGet list of all/currently active microphones from hal.\n\nBug: 64038649\nTest: Manual Testing and Cts test\nChange-Id: Id39cae38ba040f9bc91571e713487f87c2eb67b0\n"
    },
    {
      "commit": "56ecf3e3ce36d111a17d67485047836660128629",
      "tree": "79a1a5a3992f0bb116d3d2e8473c1e76b84034e2",
      "parents": [
        "553a1a42fceba2f5315238355de2b20687185160"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Mar 12 15:38:17 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Mar 21 01:14:13 2018 +0000"
      },
      "message": "audioflinger: only update mHalVolFloat on success\n\nThis will fix a regression with AAudio MMAP stream not getting\nits initial volume set correctly.\nAlso initialize mHalVolFloat.\n\nBug: 74547253\nTest: adb shell write_sine_callback -pl -s10 -m1\nTest: should have the same initial volume as\nTest: adb shell write_sine_callback -pl -s10 -m3\nChange-Id: Ie0c1f9ba51e2059a888d2273f41588f101b09a5c\n"
    },
    {
      "commit": "5ff7b0da6f51af96b530951c72fe06a711280282",
      "tree": "ce3e9dc8c66cb2a05da1b73c0e3906e0b7d3cbd6",
      "parents": [
        "7dccfdd8f0752db2717d554d0cf1925c34202639"
      ],
      "author": {
        "name": "haobo10173529",
        "email": "hao.bo15@zte.com.cn",
        "time": "Fri Mar 17 17:44:03 2017 +0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 16 17:35:03 2018 -0700"
      },
      "message": "AudioFlinger: Fix deadlock when createEffect_l fails.\n\nThe handle.clear() will cause deadlock if init of EffectHandle\nfailed due to NO_MEMORY in createEffect_l.\n\nTest: Monkey test, Instrumented test.\nBug: 75031792\nChange-Id: Ie0f38d76a66aeafe26903dda6690d1fe7fca4464\n"
    },
    {
      "commit": "0568dedb5008a24c2aca661a6891f9923abfa6d2",
      "tree": "f81bbac0f9fc5ff1fcad245560713868d968b754",
      "parents": [
        "dc9df6a12d848b32fbd041421c663d2014f32403"
      ],
      "author": {
        "name": "Jakub Pawlowski",
        "email": "jpawlowski@google.com",
        "time": "Wed Mar 14 11:20:05 2018 -0700"
      },
      "committer": {
        "name": "Jakub Pawlowski",
        "email": "jpawlowski@google.com",
        "time": "Wed Mar 14 11:29:00 2018 -0700"
      },
      "message": "Prevent Hearing Aid fromn spamming logs\n\nHearing Aid uses same mechanism as A2DP for obtaining audio stream,\nthus causing same throttling issue.\n\nBug: 69623109\nTest: stream music through Hearing Aid, observe logcat output\nChange-Id: I6445f6c85d9600fdb12008b0c353242f799b963e\n"
    },
    {
      "commit": "ad9c7e47d26bbeb2f3be96b3ad6988a6023a1021",
      "tree": "0d7cce2a82c78d215ae7c7cd8aac1148ad8c81a2",
      "parents": [
        "b95a5989190a427a7ea092dc18741af524009bdb"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 05 12:25:58 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 05 20:39:11 2018 +0000"
      },
      "message": "Revert \"audioflinger: Remove \"exiting\u003d1\" parameter\"\n\nThis reverts commit e2bc208f05ed430a18a9078799b6b6d56e3d6dda.\n\nBug: 74142786\nTest: with Android Auto head unit simulator\n\nChange-Id: I9f96da7ba67b3ed774c9b9bdab7cee390d3f0ca2\n"
    },
    {
      "commit": "e2bc208f05ed430a18a9078799b6b6d56e3d6dda",
      "tree": "e34e319874c152fe10fe722cb26fc0edc9e1cedc",
      "parents": [
        "218f8e3bec0070731bff41513b19f64d481dad24"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Feb 27 10:09:59 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Feb 27 10:11:17 2018 -0800"
      },
      "message": "audioflinger: Remove \"exiting\u003d1\" parameter\n\nThis was used by the remote submix module to unstuck when\ninput is not consumed. The remote submix module was updated\nto not require it.\n\nBug: 73175392\nTest: make\nChange-Id: Ic7f6ecbe83251e39052be0693b89db52ab18947c\n"
    },
    {
      "commit": "dff6a64ce600a4f4550a97cf49778de14b1fde70",
      "tree": "8983cac84f22f6bdf1a15659210c6197f4e86e66",
      "parents": [
        "41c868219a5cf5b5862afc8515373a89a9353541",
        "98e38191c37d3e324b34a6aafeef8e43366003ef"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 22 02:46:57 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 22 02:46:57 2018 +0000"
      },
      "message": "Merge \"audioflinger: remove obsolete stream volume management\""
    },
    {
      "commit": "98e38191c37d3e324b34a6aafeef8e43366003ef",
      "tree": "349602f9c4d9dd7f4720328cc72f891f9515a0ce",
      "parents": [
        "7c9dbd5440e8119ca439e4b9315843bd348b991f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 15 18:31:53 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 21 12:54:41 2018 -0800"
      },
      "message": "audioflinger: remove obsolete stream volume management\n\nRemove the ability to change stream volume globally (on all outputs)\nin audio flinger as this doesn\u0027t make sense when stream volume is\nmanaged per device.\n\nAlso, do not store stream volumes globally in audio flinger and apply\nthem when a new output is opened. The ground truth for stream volume is\nin audio policy so make sure stream volumes are systematically applied\nby audio policy when an output is opened according to the selected device.\n\nBug: 70332110\nTest: audio smoke tests\nChange-Id: I7180a428af53aafdee82aadbcaf284c028ac5554\n"
    },
    {
      "commit": "1bc088a918d7038603230637d640941953b314d4",
      "tree": "e231c2b22d944eaed29445fe4a35861fddb50e54",
      "parents": [
        "e54461ae132a79d0ffa9d3ec4631df13eb5c7809"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 09 15:57:31 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 16 15:50:32 2018 -0800"
      },
      "message": "Call AudioMixer only from MixerThread threadLoop.\n\nAs part of change:\nRemove track name offset by TRACK0.\nMove track name management to the Tracks class.\nSync mixer track name to FastMixer track index.\n\nFixes regression introduced by commit 8ed196a.\n\nTest: SoundPool, AudioTrack CTS, Usability\nBug: 72937362\nBug: 73004420\nChange-Id: I2f1a33f6f0da66bcd7aa91e2a4b663ff822df645\n"
    },
    {
      "commit": "7dca8a83b7c6922a69e266aa9f2b5693a4d773a9",
      "tree": "cd09df52888de8f7af339c9decc3f21367272c1b",
      "parents": [
        "fee1976a2849c37a53d8a01ac10327d522a1ba93"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 18:44:26 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 09 16:09:06 2018 -0800"
      },
      "message": "Revert \"Revert \"audio flinger: move record permission checks to audio policy service\"\"\n\nThis reverts commit 67651f97c9c3880a4440c86618337f8a64c3e1a9.\n\nBug: 72628781\nTest: manual camcorder tests\nChange-Id: Id3687d2a4ab90f01d66ff30b2d77e6ec4ae72b3f\n"
    },
    {
      "commit": "fee1976a2849c37a53d8a01ac10327d522a1ba93",
      "tree": "5b8a259a93f6f84a964badf5417c113a308e67c9",
      "parents": [
        "98c15702ca0c814fee9110efa14d70fc9937514e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 18:44:13 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 09 16:08:31 2018 -0800"
      },
      "message": "Revert \"Revert \"audio policy: refactor audio record APIs\"\"\n\nThis reverts commit e9ebcdbb0580bd4a75f4530b957b1859e535c028.\n\nBug: 72628781\nTest: manual camcorder tests\nChange-Id: I9fb550a9f62d2d15cafbd7534e5e7eaa155a7213\n"
    },
    {
      "commit": "1de79cfe1031a1ea6b3ba9fd77ed8686c0b6f694",
      "tree": "75289e92ed05721a30dcf9761aaaa9e4a56f1204",
      "parents": [
        "c717e5e41ed866d3f156e15835150f898acba27d"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Thu Feb 01 15:21:02 2018 -0800"
      },
      "committer": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Thu Feb 01 15:21:02 2018 -0800"
      },
      "message": "Fixes related to typo in audio.h\n\nBug: 64038649\nTest: Manual Testing and CTS tests.\nChange-Id: Id2650638f789d85116d780d87b19debd2a13a737\n"
    },
    {
      "commit": "5dd03a5825d06033c1e66353dbbfcfc7f60990c5",
      "tree": "9deed77dba8b49bf83bf5f039c4ebaee3aa5b34c",
      "parents": [
        "5dca017406b057bf71f8934ef57aab6098ecec6c",
        "653cc0ab6d5b714d1f26adcd08f9bc3269b62fa0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 01 01:35:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 01 01:35:26 2018 +0000"
      },
      "message": "Merge \"Support query active microphones information in AudioRecord.\""
    },
    {
      "commit": "e9ebcdbb0580bd4a75f4530b957b1859e535c028",
      "tree": "a603313572aeef80fb8a26d2ff38f7a6541e835c",
      "parents": [
        "67651f97c9c3880a4440c86618337f8a64c3e1a9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 14:27:18 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 14:37:24 2018 -0800"
      },
      "message": "Revert \"audio policy: refactor audio record APIs\"\n\nThis reverts commit 0f4b3c5449f85c1cd78e1b9ac4850de962b8edbe.\n\nBug: 72628781\nTest: Capture several videos from camera app\nChange-Id: I6bcc87c618ac9bfe5c911915cbb37de616bc727a\n"
    },
    {
      "commit": "67651f97c9c3880a4440c86618337f8a64c3e1a9",
      "tree": "843940703c4fca05bf8cf6df7091fbcc42eb0154",
      "parents": [
        "5f07c65af5356a4a95410804ce19fc017d6478f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 14:27:03 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 14:35:06 2018 -0800"
      },
      "message": "Revert \"audio flinger: move record permission checks to audio policy service\"\n\nThis reverts commit c7b71a1b3a16231d7741f9ef52c5f84ec8de0c31.\n\nBug: 72628781\nTest: Capture several videos from camera app\nChange-Id: If633e677d87320335e368a8340599c9e4a398201\n"
    },
    {
      "commit": "653cc0ab6d5b714d1f26adcd08f9bc3269b62fa0",
      "tree": "6ce8eb9ed7297d8b2524c6e25376319175758f50",
      "parents": [
        "46a76fa5ffb88dbde2c67335dbc5cf20b75b10b6"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jan 17 17:54:10 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 26 17:23:07 2018 -0800"
      },
      "message": "Support query active microphones information in AudioRecord.\n\nThis is part of device enumeration. With the new add API, developer\ncould get the active microphones information for each channel.\n\nBug: 64038649\nTest: Run cts and check the print log.\nChange-Id: Ic63d86e533a30e40697da7522a5a81f7cfcea988\n"
    },
    {
      "commit": "c7b71a1b3a16231d7741f9ef52c5f84ec8de0c31",
      "tree": "803306733146625da98f061ceec491569fd184ba",
      "parents": [
        "0f4b3c5449f85c1cd78e1b9ac4850de962b8edbe"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 08 17:21:56 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 24 17:07:22 2018 -0800"
      },
      "message": "audio flinger: move record permission checks to audio policy service\n\nMove audio permission checks to getInputForAttr and startInput.\n\nTest: AudioRecord CTS tests. Manual test of capture use cases.\nChange-Id: Ifaefc1198248b46fc59aecd6c9ec3aa892656e05\n"
    },
    {
      "commit": "0f4b3c5449f85c1cd78e1b9ac4850de962b8edbe",
      "tree": "63641f2dea738a745946c63f80803557a74ec12b",
      "parents": [
        "c6116926de37cabb1d35ddd57eaff0e19fcec8bc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 05 11:46:13 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 24 16:56:52 2018 -0800"
      },
      "message": "audio policy: refactor audio record APIs\n\nRefactor audio policy service APIs controlling audio record (startInput, stopInput, releaseInput)\nTo allow finer grain control per AudioRecord client and prepare for new concurrent capture\npolicy\n\nTest: AudioRecord CTS test. manual test of capture use cases:\ncamcorder, OK Google VoIP\n\nChange-Id: I4992fd5a115853c47be5dac5465989eb53f1287c\n"
    },
    {
      "commit": "c6116926de37cabb1d35ddd57eaff0e19fcec8bc",
      "tree": "fdc9a07eec6b4e7dc446a76149bd0c843d298edd",
      "parents": [
        "7027e8019ad974d2e474a7fcaf43adedbdf08f23",
        "8ed196ac0f4aa8ae811c012dfa6f596fddebf1bf"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 24 22:48:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 22:48:08 2018 +0000"
      },
      "message": "Merge \"AudioMixer: Enable 256 tracks, up from 32 tracks\""
    },
    {
      "commit": "8ed196ac0f4aa8ae811c012dfa6f596fddebf1bf",
      "tree": "fda78f06eeb733b00fda71fbd401b6a787b76190",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 05 13:21:11 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 23 23:04:33 2018 -0800"
      },
      "message": "AudioMixer: Enable 256 tracks, up from 32 tracks\n\nClient apps can have 40 tracks, up from 14 tracks\n\nRelated code cleanup:\na) Removed State nested class\nb) Moved static functions to Track member functions\nc) Moved static function hooks to pointer-to-member-function hooks\nd) Some reorganization of touched code for recent C++ style\n\nTest: test-mixer native mixer test\nTest: SoloTester effect test\nTest: SoundPool with many tracks\nTest: CTS AudioTrackTest\nBug: 64161002\nChange-Id: I0d09620acd715d577e776bb6f76e94e87e554520\n"
    },
    {
      "commit": "487585733d3e075734cb9827f1a36302590b8089",
      "tree": "e3956af3b322b108a20616c2b252e77575978630",
      "parents": [
        "f83d6ce9d1aa4c96d2b8dbca8d8213b25938d1de",
        "7588ff418aca63b1dc43a85afc1e86c40dd889a3"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Jan 22 23:50:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 22 23:50:41 2018 +0000"
      },
      "message": "Merge changes from topic \"audio-hal-v4\"\n\n* changes:\n  Audio V4: Split HAL wrapper for versioning\n  Audio V4: Move audio HIDL wrapper in a 2.0 folder\n  Audio V4: Move Utils in a versioned namespace\n"
    },
    {
      "commit": "766fb020a50b64bf9a808bd80df60c54c2ca8cc3",
      "tree": "acb92cb201889d2b56f41bc2a437da1aaae72c4e",
      "parents": [
        "652f9299bb8a7a50148d57a75de6ede831bfed85"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Sun Jan 07 12:18:03 2018 +0200"
      },
      "committer": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Mon Jan 22 23:05:23 2018 +0200"
      },
      "message": "Support routing audio playback to telephony uplink\n\nThis change enables phone apps to play audio to the uplink stream\nduring a call.\nThis change maks the AUDIO_OUTPUT_FLAG_INCALL_MUSIC_UPLINK flag to be added to the flags that are sent to the HAL when an ongoing call is active, the chosen output device is the TX telephony device, the stream type is music, and the calling app has the MODIFY_PHONE_STATE permission.\nFor this change to take place, the following changes were made to the signature of getOutputForAttr in IAudioPolicyService:\n  1. Add pid (process id) parameter to getOutputForAttr.\n  2. Make the flags parameter a pointer so changed value can be\n  examined by calling function.\n\nBug: 69973354.\nTest: tested manually.\nChange-Id: I74cef3f8b66de6e0e8f87b6235130c2cdf423da7\n"
    },
    {
      "commit": "7588ff418aca63b1dc43a85afc1e86c40dd889a3",
      "tree": "bdb7ba0ca788a16d48d8e9945aa76f52f1683245",
      "parents": [
        "51ac542df4beb18dc1cf0285826124644f189c3b"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Jan 08 11:11:30 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Sat Jan 20 10:49:56 2018 -0800"
      },
      "message": "Audio V4: Split HAL wrapper for versioning\n\nBoth core and effect Hal now have one single point of entry.\nThis point of entry is their respective factories:\n - DevicesFactoryHalInterface::create\n - EffectsFactoryHalInterface::create\n\nEach entry point looks for their respective services supported\nversion, starting from the highest (currently only 2.0) and\nreturning the subclass wrapping this version to the most recent audio.h\nframework api.\n\nNote that EffectBufferHalInterface were previously created from static\nmethods (mirror and allocate) which broke the single point of entry\nrequirement.\nAs a result, buffers have now to be created from the factory like the\nother classes.\n\nNote that the death handler also need to be its own library as it is\nused by versioned code and is version independent.\n\nBug: 38184704\nTest: compile\nChange-Id: Iac9b1fda561bb486193d5b9e025a870f50cda530\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "65a438c6429c7f46cb0ab056c7f672ea0aa9e7f5",
      "tree": "d2b98e3247afd27d7272d23b226dc4e10fb8f5f9",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788",
        "f4ddfefc8ba59a8486d91826154cc9447821409e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 20 04:09:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 20 04:09:36 2018 +0000"
      },
      "message": "Merge \"Don\u0027t record audio if UID is idle - media framework\""
    },
    {
      "commit": "9aad48c31ee3557eddbcaf301539f7d19673f018",
      "tree": "c71508bb62282b7775d6abea630910eadb9f1194",
      "parents": [
        "13fca0cd377d56823f944f21716128dd5ac4bbf1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Nov 29 10:29:19 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 18 14:32:10 2018 -0800"
      },
      "message": "Allow multichannel effects\n\nTest: Solo Tester with mutichannel file\nBug: 70038539\nChange-Id: Id2e47eef62e55710bb6eda54c1f737aa3a3ce6bc\n"
    },
    {
      "commit": "f4ddfefc8ba59a8486d91826154cc9447821409e",
      "tree": "b24bb43846003ef5523f0d470e49389086138679",
      "parents": [
        "d6be64a3f22be3eceb0d6209c88dcad573c08191"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 16 07:37:58 2018 -0800"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jan 18 00:17:52 2018 -0800"
      },
      "message": "Don\u0027t record audio if UID is idle - media framework\n\nTo protect user\u0027s privacy if a UID is in an idle state we allow\nrecording but report silence (all zeros in the byte array) and once\nthe process goes in an active state we report the real mic data.\nThis avoids the race between the app being notified aboout its\nlifecycle and the audio system being notified about the state\nof a UID.\n\nTest: Added - AudioRecordTest#testRecordNoDataForIdleUids\n      Passing - cts-tradefed run cts-dev -m CtsMediaTestCases\n                    -t android.media.cts.AudioRecordTest\n\nbug:63938985\n\nChange-Id: I1442a9dda1553e9ea7a4a654c50555ac1ec06aa0\n"
    },
    {
      "commit": "bf848afa185669971def54404f176308e3bafebc",
      "tree": "d10c391183edb4844ed12a56934d2b87d8a86d22",
      "parents": [
        "9728519d1c1e15f6a60baaa82abfa74770aca524"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 22 11:55:01 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 27 14:00:43 2017 -0800"
      },
      "message": "Warning rather than fatal log for unexpected track state\n\nBug: 29316870\nTest: see bug\nChange-Id: Ic8129ad31b2e6d78d53e78165414c13dcf5ead83\n"
    },
    {
      "commit": "49f36ba3b4624ddd3d7efa34c95128a73bda6208",
      "tree": "9427c132f2f998021c1ae06078174c3396bc5f54",
      "parents": [
        "b3ded702104331ae35597eef28f670e407a1b519"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 06 13:02:02 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 22 20:05:46 2017 +0000"
      },
      "message": "Logs use either %#x or 0x%x for flags, channel mask, format, device\n\nPreferred is %#x but 0x%x is also permitted because it is widely used.\n\nThe benefit is that it reduces ambiguity and possible confusion,\nwithout needing to read the source code for each log.\n\nTest: builds OK and logs are less ambiguous\nChange-Id: Ie2404e071d22278b8bba1e094ad336887844212c\n"
    },
    {
      "commit": "dc634a8b1f3f17ea99f79004830583945a27befd",
      "tree": "c85161478154b3ffac7624fa9176557d936e4010",
      "parents": [
        "deda8bf5901a8551e69b9cde9ba6efc494f5e891",
        "1b35dd6ec11bfb96fd946d6d2ec18e6938bfa090"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Dec 13 01:06:22 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 13 01:06:22 2017 +0000"
      },
      "message": "Merge \"Fix sanitizer in audioflinger Threads.cpp.\""
    },
    {
      "commit": "f14db3c3ebc1ea29b3eb5b7e9b944cabcb5f83ff",
      "tree": "ebe89d037006cc16ed8a9284563a475b6eee3348",
      "parents": [
        "ea5523d88c6dc9662621db5fc62bf50eff0fe4ba"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 14:20:36 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 14:28:41 2017 -0800"
      },
      "message": "Revert \"Revert \"refactor AudioRecord and AudioFlinger openRecord()\"\"\n\nThis reverts commit 0aa3c6eba07f987fe84b5fa450274a8e730971e3.\n\nBug: 70388312\nTest: AudioRecord CTS, Audio smoke tests\nChange-Id: I45394bccf82b922aa2b68fee3e02afc280f6729c\n"
    },
    {
      "commit": "0aa3c6eba07f987fe84b5fa450274a8e730971e3",
      "tree": "69c1c59218c8ae0e5165f71a392a8666c8b74ad6",
      "parents": [
        "3e1acc0c58b337dec4054d78c28b48b2e77e0784"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 18:13:22 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 18:18:50 2017 +0000"
      },
      "message": "Revert \"refactor AudioRecord and AudioFlinger openRecord()\"\n\nThis reverts commit 3e1acc0c58b337dec4054d78c28b48b2e77e0784.\n\nbug: 70388312\n\nChange-Id: I6782d6eceeece1bad998b02af26c0119da70a13d\n"
    },
    {
      "commit": "1b35dd6ec11bfb96fd946d6d2ec18e6938bfa090",
      "tree": "a60f889afa1282d0e37525bb78577329671bf6fe",
      "parents": [
        "eda72c27cab52c41016d8ce138438a2d59973231"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Dec 06 16:55:10 2017 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Dec 06 16:55:10 2017 -0800"
      },
      "message": "Fix sanitizer in audioflinger Threads.cpp.\n\nIn RecordThread::start(), an unsigned integer is negated before being\nset to mFramesToDrop (which is ssize_t). This causes a runtime error on\ninteger sanitized builds.\n\n runtime error: negation of 1323000 cannot be represented in type\n \u0027unsigned int\u0027\n\nThis makes the conversion to ssize_t explicitly occur before the\nnegation.\n\nBug: 30969751\nTest: Compiles.\nChange-Id: I9cf2e31728ff715c9755f257c1abf10fa5efbf82\n"
    },
    {
      "commit": "3e1acc0c58b337dec4054d78c28b48b2e77e0784",
      "tree": "effae4bc8d462d03cb0bc1507ac0222ac47c90eb",
      "parents": [
        "eda72c27cab52c41016d8ce138438a2d59973231"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 01 16:07:37 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 17:33:35 2017 +0000"
      },
      "message": "refactor AudioRecord and AudioFlinger openRecord()\n\nRefactor the mechanism used by audio record tracks to query and\nattach to an input mixer/stream in audio flinger. This will:\n - reduce the number of binder transactions needed to create a record track\n - move sample rate, framecount and flags validations to audio server side\n - move audio session allocation to audio server side\n - prepare restriction of certain binder transactions to audioserver only\n\nAlso:\n - renamed openRecord() to createRecord() for consistency with AudioTrack\n - make AudioRecord mStatus update consistent when calling default\n contructor + set() or constructor with arguments\n - make AudioClient, CreateTrackXXX and  CreateRecordXXX classes derive\n from Parcelable\n - restore audio session ID validity check in AudioFlinger::createTrack()\n\nTest: CTS tests: AudioRecordTest, AudioRecordingConfigurationTest, AudioPreProcessingTest\nTest: manual test for capture use cases: camcorder, OK Google, VoIP calls\nChange-Id: I72edaa7ddef1da11c77df21e88378e3aa9012d58\n"
    },
    {
      "commit": "ef6cf3fc6cfb12e089e787efcbf1fc485ed54931",
      "tree": "a197eb396f5e84684d937da00e091a27c7de7f2e",
      "parents": [
        "693cb2bde52b4d73c391c529f1c6bf7a02be9f72",
        "94a1ee822686e920a33e312f4032f991731aea07"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Nov 22 19:39:53 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 22 19:39:53 2017 +0000"
      },
      "message": "Merge \"Converting effect chains to float point by default.\""
    },
    {
      "commit": "94a1ee822686e920a33e312f4032f991731aea07",
      "tree": "5a8e84b19269529153e94fa2f0a6b927823f6848",
      "parents": [
        "c275189ccbfe8ca29437a24256195c61de2f2a6d"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Fri Jul 21 15:11:02 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 21 20:39:19 2017 -0800"
      },
      "message": "Converting effect chains to float point by default.\n\nRemoved additional conversions from/to int16/float.\nFixed config file restrictions.\nDetection of native format (int16/float) of effects.\nOn-the-fly conversion to/from 16 bit effects if necessary.\nWIP: testing effects in all possible configurations.\n\nBug: 63935479\nTest: Bufflog dumps, frequency analysis comparison, SoloTester\nChange-Id: Id4cabc5c5698befc90a5d68b0b996a9b9adebfc4\n"
    },
    {
      "commit": "21da647792c0b78ab3943be0f32066015d5e8c34",
      "tree": "15ad0b64bf6eaabf24223d7fd376ef9ac00eb9cc",
      "parents": [
        "a4fa4760fa417473324e009b3f4117a2d539c486"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 09 16:29:26 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 16 11:33:12 2017 -0800"
      },
      "message": "refactor AudioTrack and AudioFlinger createTrack()\n\nRefactor the mechanism used by audio tracks to query and attach\nto an output mixer/stream in audio flinger. This will:\n- reduce the number of binder transactions needed to create a track\n- move sample rate, framecount and flags validations to audio server\nside\n- move audio session allocation to audio server side\n- prepare restriction of certain binder transactions to audioserver only\n\nTest: CTS tests for AudioTrack\n\nChange-Id: If4369aad6c080a56c0b42fbfcc97c8ade17a7439\n"
    },
    {
      "commit": "ea04d3913f9c10b5ef559ec794e3584f5505ce2d",
      "tree": "98731b0a2060feaf0b8efe8b82b0f2a864f235d8",
      "parents": [
        "51f4bac261c544eedb577ceb3e3b5d9ddf8d0238"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Nov 07 14:37:07 2017 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Nov 07 14:47:06 2017 -0800"
      },
      "message": "Fix sanitizer in AudioFlinger threadLoop.\n\nThe integer sanitizer was catching an unsigned integer overflow on the\ncalculation for throttleMs. This gets implicitly cast to a signed\ninteger anyways, so just perform the cast explicitly.\n\nBug: 30969751\nTest: Compiles with and without integer sanitization.\nTest: Device boots.\nChange-Id: I4ef7c6f2e871ee56b81e87f3d71be8d85b222934\n"
    },
    {
      "commit": "e02bc544a7af12bfad32679bc5443fa1cb7b9052",
      "tree": "3267d131a663df74f295d9d8e5da09b62dd21aab",
      "parents": [
        "3aa85e3bb11a1a3c2d1775a1bba9251b533c733a"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Thu Oct 26 09:51:54 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Nov 01 18:45:32 2017 -0700"
      },
      "message": "Fix audioflinger in integer sanitized builds.\n\nRefactor threadLoop() to avoid unsigned integer overflows\nwhich were causing errors on integer sanitized builds.\n\nAlso disable sanitization in fnv1a.\n\nBug: 30969751\nTest: Compiles with and without integer sanitization.\nTest: Device boots.\nChange-Id: Ia8201e8a8f1d4df2b356ec81003fb07598db4546\n"
    },
    {
      "commit": "402eebc45eeb5c5203cf4211f9e809b6ac8c29ec",
      "tree": "2f4200a8d3788d93bdab1290cc2d7faed59f9caf",
      "parents": [
        "df36af1052a82c6961839918f7ba9d109bec6831",
        "8e9dad0cf9a6fba03ec228ef0b35e9f55b97eac4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 04 23:14:27 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 04 23:14:27 2017 +0000"
      },
      "message": "Merge \"Increase heap size for fast capture in stereo\" into oc-mr1-dev am: 9ea2cb3908\nam: 8e9dad0cf9\n\nChange-Id: Id82e063af84476a5b93dda6ce179a2737cdfb4ba\n"
    },
    {
      "commit": "691b02a18796810ddbf7371dbb69b6629f95d1d7",
      "tree": "a659766d0f975e672671153f5b35f1ed1a4721ad",
      "parents": [
        "e387edc8fd036388b79050f72a4f3cfcd1015839"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 03 10:12:20 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 03 10:12:40 2017 -0700"
      },
      "message": "Increase heap size for fast capture in stereo\n\nTest: at bug\nBug: 66967812\nChange-Id: I06423217e02f644452d6a03ae01316fd6d2d9145\n"
    },
    {
      "commit": "771e93f3bcd5d8fe4340dd132b1c5256f711b51a",
      "tree": "cef3179d220028fd1b8b265f9bbdf15650c326ac",
      "parents": [
        "fcfb09c6b77e873baeca3051eb21068f5b646412",
        "cca1e69cafea5e7da75461fc04c304b8c262626b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 28 16:02:20 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 28 16:02:20 2017 +0000"
      },
      "message": "Merge \"audioflinger: do not call onTearDown() in threadLoop_exit()\" into oc-mr1-dev am: 7d7d3210f5\nam: cca1e69caf\n\nChange-Id: I05a463127907ce5dab0c3e8bbd8c73ff4a3e0e61\n"
    },
    {
      "commit": "7dce72819e3a12ef290f475c876bec3824be9312",
      "tree": "6390be43a693d3d1384f13ce1cc0118bd6c6dcc8",
      "parents": [
        "01fc3aee04547d95b1e28bc03256cd774355ba82"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 27 13:51:41 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 27 14:59:55 2017 -0700"
      },
      "message": "audioflinger: do not call onTearDown() in threadLoop_exit()\n\nThis is just for MmapThread.\nThis change will prevent a recursive mutex lock when the teardown calls\nstop() on the stream.\n\nBug: 66971139\nTest: unplug headphones with aaudio-echo, see bugreport\nChange-Id: I904a8e575bbc5ae8b03350c061dd23cba62783f0\n"
    },
    {
      "commit": "2c67bad03e6754f69706e58500c60a61911e191e",
      "tree": "814857486364bbb29066d3a21085f99ee5950c5e",
      "parents": [
        "3a65a85ea6e7f0be0a5da1c0715f5d97673c4438",
        "64643717f9c4600e8add8e7cb630c6646ebd1f49"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 22 02:18:57 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 22 02:18:57 2017 +0000"
      },
      "message": "Merge \"audioflinger: volume control to HAL for VoIP streams\" into oc-mr1-dev am: 87917b98d3\nam: 64643717f9\n\nChange-Id: I0bc3ceb15b47749091c0080385c8b6b10bde8f07\n"
    },
    {
      "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": "92197f86b1184133107ee66314467f4676850ab8",
      "tree": "2e35076e4f171f06c8d3e441dd7b3784226f917f",
      "parents": [
        "5d81cf35fb108d6a2412f770087861ad4be5020c",
        "282ca695834f9cf9f63536cab2d6592b18fc011a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 18 22:47:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 18 22:47:16 2017 +0000"
      },
      "message": "Fix various AAudio device selection issues am: ad2e7b902c\nam: 282ca69583\n\nChange-Id: I051d56560608444c47b5a827ef921b878e8f4a4e\n"
    },
    {
      "commit": "ad2e7b902c0432a0db40906a4b1f5b693ce439dd",
      "tree": "c4830cedbf63c641325e082fd30484a3bff58e49",
      "parents": [
        "b92c988ffc48f093ab8615896b02b8c8e10e19b2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 14 20:06:42 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 18 12:58:30 2017 -0700"
      },
      "message": "Fix various AAudio device selection issues\n\nBug: 65292224\n- Audio policy manager should not use an unavailable device when an explicit\nroute is requested. This causes a device selection made by a client to\nbecome sticky after device disconnection.\n\nBug: 64945845\n- Remove spurious device change callback occuring after registering a\nnew client to audio server by creating a specific configuration event\nfor client registration.\n- Do not keep strong references to device callback interfaces in\nAudioTrack, AudioRecord and AudioSystem.\n- Do not update selected device in AudioTrack and AudioRecord when\nnot active as the new device selection on the stream is because of other\nclients activity which is not relevant to an inactive client.\n\nBug: 65693340\n- Fix missing increment of SessionRoute ref count in getInputForAttr() for\nMMAP inputs\n\nTest: AAudio CTS tests\n\nChange-Id: I2a01b02e8b064d352004f6065495fd99aee55745\n"
    },
    {
      "commit": "669446c87cf355d9a48190954e5d509f6bdb0461",
      "tree": "de1f558a97beb017d21169f834e805772546490a",
      "parents": [
        "f24d95960d85c891fc40db6f1e9644385efb4eb3",
        "85ab116e5cc19c11f1eeb17fbf89959ad9617cd0"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Sep 05 16:49:41 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Sep 05 16:49:41 2017 +0000"
      },
      "message": "Merge \"audioflinger: pass return code up from startClient\" into oc-mr1-dev am: 90153cae7f\nam: 85ab116e5c\n\nChange-Id: I8ac2b52fdbfd292ea376e19b6645e5518d30ccef\n"
    },
    {
      "commit": "81ad5ecd211d0f30225714ae8ee61c4d76dbcf56",
      "tree": "0160fa4543c2a83f34863a373d0854119334dd76",
      "parents": [
        "3b224af571e8e70ef643a36e144e7427857d271d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 01 10:45:41 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Sep 05 09:08:23 2017 -0700"
      },
      "message": "audioflinger: pass return code up from startClient\n\nWas ignoring failed start.\n\nBug: 65262790\nTest: see bug\nChange-Id: I0b1d19adfd50d2b00d86bb82f278b720fcbacdb1\n"
    },
    {
      "commit": "f3c109f17c842c78000effae850e6eadac603f42",
      "tree": "1bd7ae76f027dc6fdd817e5609938ada2053f45b",
      "parents": [
        "77964b915ca37c268fbb686a26da6b7417291e41",
        "c7f474434f3d50fea49dade42ded59fa87dee62d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 29 03:46:41 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 29 03:46:41 2017 +0000"
      },
      "message": "Merge \"audioflinger: fix mmap device selection\" into oc-mr1-dev am: faf18c58ba\nam: c7f474434f\n\nChange-Id: Ibcb27cab661f710b14a303eeb12f72191c4eefd8\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": "594d18d5dddc141cd75a7875c64738b97d6a8f6f",
      "tree": "0f023336157d95af4b72a09943dcd69dc95e4208",
      "parents": [
        "af5b5e5c8a9eed6dbdba03d991d7e336bef1643c",
        "bfe0f5e4ad31589a4e102f04b1bc08102f5d0421"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 09 00:22:58 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 09 00:22:58 2017 +0000"
      },
      "message": "Merge \"audioflinger: prevent crash in MmapThreadHandle destructor\" into oc-mr1-dev am: 349d9c945b\nam: bfe0f5e4ad\n\nChange-Id: I58b437b2e22fab71be9a027b12da0a1cbfa66b2b\n"
    },
    {
      "commit": "9fabbf8a8ae755c3c07637f8ca7677c63a1607bb",
      "tree": "9f3be1ca67e5ea192cdd9b2c289c9ebe6095218d",
      "parents": [
        "909f4a6cada3d5fb7594da7d1809ba62d1b47340"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 12:02:00 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 15:27:38 2017 -0700"
      },
      "message": "audioflinger: prevent crash in MmapThreadHandle destructor\n\nThe mThread smart pointer was getting cleared while the\nthread was still in use.\n\nBug: 64316921\nTest: use input_monitor.cpp, see bug for repro steps\nChange-Id: I46095b4e67648208a2fb979696fc2d655432448b\n"
    },
    {
      "commit": "2a6a945d65c986dcc779f70f18afde1d7a74397b",
      "tree": "065495450ff5c324fdac2581311bdbafd5424674",
      "parents": [
        "2f3a4beb458716769f1d8439250ecc252fe6adce"
      ],
      "author": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Fri Jul 28 11:02:01 2017 -0700"
      },
      "committer": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Wed Aug 02 16:45:37 2017 -0700"
      },
      "message": "Develop histogram logging\n\nAdd date to WriteToFile filenames and simplify\nfile format. Add timestamp logging to\nNormalMixer. Change histogram resolution\ndynamically based on logarithmic distance\nfrom the distribution center. Add context\ninformation: thread, hash and time.\n\nExample of right end of a histogram with\nrounding for values \u003e\u003d 27:\n\n   1    1    2    1    1    1    2    2    1\n\n             |                   |    |\n   |    |    |    |    |    |    |    |    |\n_____________________________________________\n21.1 21.2 22.9 23.0 23.3 27.0 34.0 37.0 38.0   ms\n\nTest: dumpsys media.log\n\nChange-Id: I255e2d28d76a1c7a06d48e7c3eacdf2f846a7ea3\n"
    },
    {
      "commit": "25bae7bb6f4737bc78891eaaade5bdd01178dbd9",
      "tree": "a6cffb9fcdbba743cf38641710d183f0ec04b0ca",
      "parents": [
        "94c68c62f02e635d395b4811c0c5089507c66be7",
        "e6e9a4811dc43e5c393b2c45eca64d1f1608e8d0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 27 01:52:33 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 27 01:52:33 2017 +0000"
      },
      "message": "AudioFlinger: fix set parameters on mmap streams\nam: e6e9a4811d\n\nChange-Id: I557a5a8272f606cd4264f7efbe65e10af64a1f6c\n"
    },
    {
      "commit": "e6e9a4811dc43e5c393b2c45eca64d1f1608e8d0",
      "tree": "1eb1c7d9c18b8eeb1739f6383aa7cd9aef030b83",
      "parents": [
        "dfcfad27da2216229b0141a736218ca06340ed5c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 25 19:26:02 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 26 14:39:19 2017 -0700"
      },
      "message": "AudioFlinger: fix set parameters on mmap streams\n\nBug: 63935167\nTest: Verify capture from USB mic on mmap input stream\nChange-Id: I416eb90ef0e9d51d54f6450c374c086ab078d288\n"
    },
    {
      "commit": "f22733ea799888bd281ba558d953cf5741f7b765",
      "tree": "c5dff42e9fdb2928a05e639ef757e9d886f32b16",
      "parents": [
        "85b3dfe424f7c1216f86fb78635895a439693e9e",
        "31b16502cfe969e8f4d74efe6c6b531958ddcaf9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 19 22:51:33 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 19 22:51:33 2017 +0000"
      },
      "message": "audioflinger: enable volume listener on direct outputs am: 3e4de77666\nam: 31b16502cf\n\nChange-Id: I0fc13815954933454665dd3765f88be7a863e7a7\n"
    },
    {
      "commit": "3e4de776665ff287cfd487ca4c7df87fbf73efa4",
      "tree": "4c2a96d88ce1df146906cfabc3178a531810c60d",
      "parents": [
        "719e24e82381cccdcb84524c5bef9a3b3ad7c1b4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 16 16:55:08 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 19 20:19:58 2017 +0000"
      },
      "message": "audioflinger: enable volume listener on direct outputs\n\nAlways allow effects with no process function on any output\nthread type as there is no impact on performance and no risk of\nthe audio properties not being supported by the effect.\n\nBug: 63015903\nTest: place a Skype call over SCO and verify the volume listener\ncan be created.\n\nChange-Id: I99db7802cec88a618808e500b74f4c78165199fe\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": "2ac7694396640821f6723672e25b2372220bf060",
      "tree": "0cd5a8c58898fcb145f4b879ea64aeb260266ce2",
      "parents": [
        "ffd80b92df8521dd28ab5fd08b1098a58cb280e8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 22 17:17:09 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 26 16:29:08 2017 +0000"
      },
      "message": "Set initial audio device for AudioTrack and AudioRecord\n\nBug: 62090113\nTest: run AAudio test and verify a valid device is reported just\nafter opening playback or capture streams in legacy mode.\n\nMerged-In: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n\nChange-Id: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n"
    },
    {
      "commit": "9ae8c597d9a0c8cedc4047fc4716d7361453f6ab",
      "tree": "4c8824f15e744d82243f4a3caab1d67b208afd47",
      "parents": [
        "5af194cf79f280034430f2f65b02a89f261dbbc8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 22 17:17:09 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 26 08:04:19 2017 -0700"
      },
      "message": "Set initial audio device for AudioTrack and AudioRecord\n\nBug: 62090113\nTest: run AAudio test and verify a valid device is reported just\nafter opening playback or capture streams in legacy mode.\n\nChange-Id: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\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": "ef48dc956a4fef50688090ae3e0036ffbf0221fe",
      "tree": "5c326c25fc9c03b21d692b285e5dabac6c564126",
      "parents": [
        "45b13fef887dc685b11fe37885191d172c4f2368",
        "8fe68036c2a670abb9eb0cc67ab9830c2c23de81"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 15 20:19:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 15 20:19:46 2017 +0000"
      },
      "message": "Merge \"Track: Check buffer size\""
    },
    {
      "commit": "8fe68036c2a670abb9eb0cc67ab9830c2c23de81",
      "tree": "f1ab9bb9ef108d9812188a38c021cd5ad6b184c6",
      "parents": [
        "12852bd16b84f0157cf500389304ab1e35993a81"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 05 16:17:51 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jun 13 12:35:16 2017 -0700"
      },
      "message": "Track: Check buffer size\n\nTest: Native POC\nBug: 38340117\nChange-Id: Ia7edd9a802905214a27961dbcec6352f6ef98f73\n"
    },
    {
      "commit": "bfa64966624c693be54cf9b9761f5124fc16fc24",
      "tree": "3a671a99fb593cca38af57250ae189486054c686",
      "parents": [
        "12852bd16b84f0157cf500389304ab1e35993a81"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 12 14:43:19 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 12 14:52:34 2017 -0700"
      },
      "message": "AudioFlinger: Enable input hal logging\n\nTest: adb shell dumpsys media.audio_flinger\nBug: 62307033\nChange-Id: I9e7816e6cd8258b76379d511f1c96b81e3fe736e\n"
    },
    {
      "commit": "b3cf7e656db20c65c0d7c779640db7f5f2a52baf",
      "tree": "82a21b169c3fd2d3afb9cfbf95e7949779db8a55",
      "parents": [
        "ad4dbf550debd0fa2794eba7c772b85445115181"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jun 02 10:24:24 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jun 02 10:24:24 2017 -0700"
      },
      "message": "audioflinger: Extend debug logs in RecordThread\n\nThis seems to be helpful to figure out why requesting\nlow latency recording fails. E.g. it can fail because\nRecordThread just doesn\u0027t enable fast capture, or because\npipe memory allocation has failed, or due to parameters\nincompatibility.\n\nChange-Id: Ia5122b0591836c4999e73f3460c761484f5c2859\nTest: manual\n"
    },
    {
      "commit": "af9a7b52b2273ea5c2b30350bdd0fce39a8b16d2",
      "tree": "e0c66e6f6b031293496bc4a4008d76d45cf5bc13",
      "parents": [
        "d0ebc4ce66090107dbda021cb395f1d3c11b9525"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 29 11:29:39 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 11:26:14 2017 -0700"
      },
      "message": "Add comments for bool parameter forApp\n\nTest: builds OK\nChange-Id: I71d0a76225c90e8c30979a579bacf2bd3ce8e492\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": "fa382b7165edc0eba84975a0abaf159a70ea9d86",
      "tree": "4d451c2eb2133c391bfbb064ac6bf08cbca8be83",
      "parents": [
        "084ad5a4e0af7f816e3279359ed49ae18f8c7d74",
        "f417a01ad53982f5fa0b3b0d4f7e78d6b19d11f9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 27 17:41:05 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 27 17:41:05 2017 +0000"
      },
      "message": "Merge \"audioflinger: improve mmap stream volume\" into oc-dev am: 9ba03c881f\nam: f417a01ad5\n\nChange-Id: I34d42c70991e76d3f4c398d958ac02c92977d85e\n"
    },
    {
      "commit": "dff774afa22569774eb2c8c25b1b3f934badea4b",
      "tree": "123482f94f2a9246407e4cdad103c599cfa60acc",
      "parents": [
        "6534425f9f508561928fa5c39dd315fd4c354060"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 21 15:29:38 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 21 15:35:23 2017 -0700"
      },
      "message": "audioflinger: improve mmap stream volume\n\nFirst try to use HW volume control and then fall back\nto volume control in AAudio service.\n\nBug: 37518243\nTest: play a sound and check AAudio volume  callback is called\nwhen pressing volume  keys.\n\nChange-Id: Ie18be9f553ae23c247974d8923e7dcddeb1047c8\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": "5b2191a4a36746b66ba3e8f73b711f49fdb83b4b",
      "tree": "1a9844681191d98fe5a92c3463de78f99453e01b",
      "parents": [
        "fb91f95fb75b2c2f4247b7fef8674e46ea0bc978"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 19 11:44:47 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 13 09:39:48 2017 -0700"
      },
      "message": "Add a tee sink filename suffix to distinguish type\n\nTest: tee sink filenames have a _C (capture), _P (playback), or _T (track) suffix\nChange-Id: Ib8ddadb0f3e3ba3ac620e33072bb212d5cde4978\n"
    },
    {
      "commit": "fb91f95fb75b2c2f4247b7fef8674e46ea0bc978",
      "tree": "2f7b9bbaa985e245cf61370a67f8b1f81f6f5c0e",
      "parents": [
        "5ede4eef66a3908d1289e2b3baaa692c5492914b",
        "388d57148e8bd330e855be0f51c72d577feb2ee9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 13 16:38:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 13 16:38:46 2017 +0000"
      },
      "message": "Merge \"Rename logWriterTLS to tlNBLogWriter\""
    },
    {
      "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\""
    }
  ],
  "next": "d9534fb35245b8bcd2489e717bdd1ad9269b3000"
}
