)]}'
{
  "log": [
    {
      "commit": "54c28999afa7834a8dbc6079a2707598a37db56f",
      "tree": "2677c29642cc1c92056ac37a802f4c53d51787f7",
      "parents": [
        "218f8e3bec0070731bff41513b19f64d481dad24",
        "db959740904eba27582feee48234463f3553b199"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Feb 26 18:34:17 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 26 18:34:17 2018 +0000"
      },
      "message": "Merge \"Don\u0027t use cutils/Atomic.h\" am: 853996e7b2 am: 072aaa2e39\nam: db95974090\n\nChange-Id: I7f930bda6e51c0d4368747f8e4a0eac92e68b2fd\n"
    },
    {
      "commit": "643825e4943995bbefd13d55c58bffd5e6904e90",
      "tree": "065eac1e1623e5340edd77f25b98dcd1ad4377ec",
      "parents": [
        "8231ac5a67006a8c0e9755fd143f788059930c45",
        "7840c30d04a749da9817682339f97b4ab128dffd"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Feb 24 14:15:05 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 24 14:15:05 2018 +0000"
      },
      "message": "Merge \"Revert \"Ignore config error if non-offloadable effect is on offload thread\"\""
    },
    {
      "commit": "7840c30d04a749da9817682339f97b4ab128dffd",
      "tree": "f9dd3c1b47b99a5bb720fb51ca061625aa2a6306",
      "parents": [
        "cfb681346730d9d0cf849f44e234f79c1622f209"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Feb 24 01:33:26 2018 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 24 01:39:39 2018 +0000"
      },
      "message": "Revert \"Ignore config error if non-offloadable effect is on offload thread\"\n\nThis reverts commit cfb681346730d9d0cf849f44e234f79c1622f209.\n\nReason for revert: Crashes in Play Music b/73624638\nTest: Play Music with cleared app data, check equalizer settings\nBug: 73624638\nBug: 70912361\nChange-Id: I6d4eec2fda57a60c2c6949937752d8f1e50bb8ab\n"
    },
    {
      "commit": "f0c02ce99ccac584f4f4790390702aabc4d92c90",
      "tree": "f5aa741235215cd73df2025b8e42394486a52ae8",
      "parents": [
        "fa87fc3b31e273efe3a2f5090dcd9c283e414aa5"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Feb 23 14:53:55 2018 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Feb 23 15:02:39 2018 -0800"
      },
      "message": "Don\u0027t use cutils/Atomic.h\n\nTest: builds\nChange-Id: I56aea1dff5a2bd98d119eb374e7a28a12a20861c\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": "1cacca4057398cc8352e36e6c76832b2945f9857",
      "tree": "fbbf5deaf01534144f42d3c67a3cd1b35a6286e6",
      "parents": [
        "7c9dbd5440e8119ca439e4b9315843bd348b991f",
        "1bc088a918d7038603230637d640941953b314d4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 20 19:51:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 20 19:51:24 2018 +0000"
      },
      "message": "Merge \"Call AudioMixer only from MixerThread threadLoop.\""
    },
    {
      "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": "cfb681346730d9d0cf849f44e234f79c1622f209",
      "tree": "b1643895484134c0acc43e2db3ee88e787028643",
      "parents": [
        "e54461ae132a79d0ffa9d3ec4631df13eb5c7809"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Fri May 26 19:06:33 2017 +0900"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 16 11:40:10 2018 -0800"
      },
      "message": "Ignore config error if non-offloadable effect is on offload thread\n\nReturn NO_ERROR if a non-offloadable effect is created on an offload thread\n(since the sampling rate of offload output can be different from\nthe one supported by a software effect). Enabling the non-offloadable\neffect will cause the track to move to a non-offload thread.\n\nBug: 70912361\nTest: Create AudioEffect during 24kHz mp3 playback\nChange-Id: Ie5bf264a9790d936c24476ea127bc6da9eefde73\n"
    },
    {
      "commit": "77881cd0213e2fb5619862cfd5b0aa2b9d4e3081",
      "tree": "0920071fb96e57d396b16eaf4166cbb460deb176",
      "parents": [
        "7dca8a83b7c6922a69e266aa9f2b5693a4d773a9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 09 16:01:31 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 09 16:09:20 2018 -0800"
      },
      "message": "fix audio port ID generation for new AudioTrack and AudioRecord\n\ncommit 0f4b3c544 introduced a problem in audio port ID generation\nby audio policy manager when a new playback or record track\nis created: audio flinger was passing a random port ID to\ngetOutputForAttr and getInputforAttr.\nThis caused audio policy to confuse several record tracks\nand fail to process capture stop properly.\n\nBug: 72628781\nTest: manual camcorder tests\n\nChange-Id: I55e18e2e6ccb9f69c36372d9bf9becf85e7c2614\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": "8ec3d5d415776cf37398b6cf788a3d4be2335a73",
      "tree": "a09aa5cf817e0f81987df05d71c3f0965c011a05",
      "parents": [
        "ab0486cbc9d0cc730be7e294af83865b1ad47b10",
        "e9ebcdbb0580bd4a75f4530b957b1859e535c028"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 30 00:30:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 30 00:30:06 2018 +0000"
      },
      "message": "Merge changes I6bcc87c6,If633e677\n\n* changes:\n  Revert \"audio policy: refactor audio record APIs\"\n  Revert \"audio flinger: move record permission checks to audio policy service\"\n"
    },
    {
      "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": "46a76fa5ffb88dbde2c67335dbc5cf20b75b10b6",
      "tree": "7215e85bae943107de3bf07537c28c98216f5690",
      "parents": [
        "6e075b43b0ba324a97fc0f89ef65196ed25be671"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 05 10:18:21 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 26 17:16:16 2018 -0800"
      },
      "message": "Add support for getting all available microphones characteristics.\n\nAdd MicrophoneInfo class in native side and native logic for supporting\nquery all available microphones.\n\nBug: 64038649\nTest: Run test and check the print log.\nChange-Id: Ic0a9cce55a1265a66ba08fe81b56b56cb88ba42f\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": "03570a65a46bd0d577aa4c860c4f32f4abf79c7c",
      "tree": "80f3fe537f1edeb95bd37a5a66090ce3b4f1cd1e",
      "parents": [
        "70068e8e49f3467488550d88d6130f9e00bb0624",
        "6f248bb57a6a0febe8fc0f253acc86289237ace8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 24 20:28:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 20:28:46 2018 +0000"
      },
      "message": "Merge \"AudioFlinger: Allocate client memory based on total device memory\""
    },
    {
      "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": "34abab103a6eb3fc7417c9e9169ee172b2303952",
      "tree": "df4065ab25ab83d7380715b42ad7c79d0d436873",
      "parents": [
        "fe4e4db4615585fd70a55d52f21c55dd517d2bfa",
        "07be14fb96fc5c106ea2b874faf2b768f468eb8e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:26:16 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 06:26:16 2018 +0000"
      },
      "message": "Merge \"Revert \"Audio V4: Split system and vendor Audio.h\"\""
    },
    {
      "commit": "07be14fb96fc5c106ea2b874faf2b768f468eb8e",
      "tree": "01cd8f75542d7581505bef8a5b9e2f09790ac0e1",
      "parents": [
        "f8ad7f85e9891b2614338330c75ae9e946fccc5a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:14:03 2018 +0000"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:14:03 2018 +0000"
      },
      "message": "Revert \"Audio V4: Split system and vendor Audio.h\"\n\nThis reverts commit f8ad7f85e9891b2614338330c75ae9e946fccc5a.\n\nReason for revert: Breaks the build of multiple devices\n\nChange-Id: I24f17a0fa0c7ba171c4a3639f890e7f4e42f6b1e\n"
    },
    {
      "commit": "6f248bb57a6a0febe8fc0f253acc86289237ace8",
      "tree": "5dcc5fe0729c85f7ef39ac298906acea444b2ae2",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 23 14:04:37 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 23 22:12:12 2018 -0800"
      },
      "message": "AudioFlinger: Allocate client memory based on total device memory\n\nTest: Debug logging\nBug: 64161002\nChange-Id: I7156748e5678c3232d1f1672439d11aecf3f458b\n"
    },
    {
      "commit": "6a784e71ca122347789faa73367877d41831592f",
      "tree": "de25d71706442e18346a5785f4174aba5604454d",
      "parents": [
        "f7a14c051ee9bd5f288963f3c190642e4915250b",
        "f8ad7f85e9891b2614338330c75ae9e946fccc5a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 04:04:48 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 04:04:48 2018 +0000"
      },
      "message": "Merge changes from topic \"audio-hal-v4-tmp\"\n\n* changes:\n  Audio V4: Split system and vendor Audio.h\n  Audio V4: Use the framework audio.h instead of the HAL\u0027s\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": "f8ad7f85e9891b2614338330c75ae9e946fccc5a",
      "tree": "957d47ddc7419c688dda1d4c1ac3068eda6d894f",
      "parents": [
        "6d7582e9ad858301b3eeff7b187af6c34808cb7e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 17 15:57:39 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Sat Jan 20 21:39:40 2018 -0800"
      },
      "message": "Audio V4: Split system and vendor Audio.h\n\naudio.h and its dependencies (audio-effect.h, sound_trigger.h...)\nused to be shared between system and vendor code.\n\nThis led to multiple problems:\n\n1) Such sharing contradicts the Treble policy of\nstrict independence of framework and vendor code.\n\n2) When audio.h was changed, every vendor needed to update\nits code in the next release. This meant that audio*.h\nheaders were mostly changed in backward compatible manner.\nNevertheless, for P the HIDL interface and thus the audio.h\ninterface are changed in backward incompatible way.\n(Some enum are becoming 64 bit long).\n\n3) As the headers were common, some API used only by the framework\nneeded to be visible to the vendors (mostly enum values).\n\n4) Treble policy is to support at least one previous HAL version\n\nAs a result the audio*.h headers are now duplicated,\none set for the framework, and one for the vendor.\n\nEach set will evolve independently. After this split,\nthe framework-only APIs will be removed from the vendor headers\nand vice versa.\n\nThe split is implements as such:\n\n + for system code\n\n    - NOT moving the libaudio_system_headers\n      Eg: system/audio.h and system/audio_effects/effect_equalizer.h\n          are still in system/media/audio\n\n    - the legacy audio HAL API that were in libhardware headers\n          are now in libaudiohal_legacy_headers\n      Eg: hardware/audio.h and hardware/audio_effect.h\n          are now in frameworks/av/media/libaudiohal/legacy/\n\n + for vendor code\n\n    - moving libaudio_system_headers and the legacy audio HAL API\n          that were in libhardware_headers in\n          android.hardware.audio.common.legacy@2.0\n      Note that those headers are now versioned, so migrating to a @4.0\n          HIDL HAL will mean changing the legacy dependency too.\n      Eg: system/audio.h, system/audio-effect.h, hardware/audio.h\n          are now in hardware/interfaces/audio/common/2.0/legacy\n\n    - the legacy audio effect HAL API that was in libaudioeffects\n          is now moved in android.hardware.audio.effect.legacy@2.0\n      Eg: audio_effects/effect*.h are now in\n          hardware/interfaces/audio/effect/2.0/legacy\n\n    - the legacy sound trigger HAL API that were in libhardware_headers\n          is now moved in android.hardware.soundtrigger.legacy@2.0\n      Eg: hardware/sound_trigger.h is now in\n          hardware/interfaces/audio/effect/2.0/legacy\n\nlibaudioutil being used by both system and vendor, had\nto be renamed for system to libaudioutil_system.\n\nVendor libs that now depend on the audio.h of a specific\nversion and are not extensively referenced in non google code,\nappend @2.0 to their name.\n\nNote that headers that are not expected to change in the 4.0 HAL are\nleft in all-versions folder to avoid duplication.\nThis is an implementation detail as the versioned libraries export\nthe all-versions headers.\n\nNote that strict vendor-system separation is enforced by the\nbuild-system. The system headers are not available for vendor\nlibs and vice-versa.\n\nNote that this patch is split between numerous git repository (\u003e10),\nall the commits having the same Change-id for searchability.\n\nNote that audio_policy.h is no longer exposed to vendors\nas the legacy audio policy HAL API was never officially supported.\nAs a result the audiopolicy stub implementation has been removed.\n\nTest: compile taimen-userdebug walleye-userdebug\n              sailfish-userdebug marlin-userdebug\n              gce_x86_phone-userdebug gce_x86_phone\n              full-eng aosp_arm aosp_x86-eng\nTest: check that the emulator booted and played audio\nTest: full QA on sailfish-userdebug and taimen-userdebug\nBug: 38184704\nChange-Id: I950f4e0a55613d72e32eba31bd563cb5bafe2d1a\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\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": "b53918f67421c7f2ab671fc59fcc2df2237ea14a",
      "tree": "63bdf94703080965de9d4dd3f9715e2ee84441aa",
      "parents": [
        "9831721434f8e2761bfdc4f4b30717f5efb30e65",
        "9aad48c31ee3557eddbcaf301539f7d19673f018"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 19 19:27:02 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 19:27:02 2018 +0000"
      },
      "message": "Merge \"Allow multichannel effects\""
    },
    {
      "commit": "4e1af9fc9c1108d4514e92774f750bcd434dbbcc",
      "tree": "03dc781c49ae6b37c4661c591ece2c5a4eed8cfe",
      "parents": [
        "a11f9357196db29e6f8f05b91334524de4f3207e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 03 15:54:35 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 18 19:48:46 2018 -0800"
      },
      "message": "aaudio: implement sessionId for effects\n\nIf a sessionID other than AAUDIO_SESSION_ID_NONE is requested\nthen legacy data path will be forced.\n\nSessionID is implemented for MMAP data path but not used.\nIt is easier to implement it now then try to figure\nit out later.\n\nBug: 33268927\nTest: test_session_id.cpp will be moved to CTS when stable\nChange-Id: I3ea67f57c1cbe24a512980f1352b917ab3cb6387\n"
    },
    {
      "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": "ceb30493c7ea9f2c6925e17cc0626396de8f8080",
      "tree": "a01a39b7b1a29ba3538e673559431b15c1b4fa0d",
      "parents": [
        "46d5355af96d582b81d6fae0ff1d3ceb745863f5"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Jan 02 21:01:16 2018 +0000"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Jan 12 16:51:53 2018 -0800"
      },
      "message": "Fix integer overflow sanitizer in FastThread.cpp.\n\nFix the integer overflow sanitizer in the FastThread threadLoop()\nfunction by using the builtin overflow-safe function.\n\n runtime error: unsigned integer overflow: 4294934528 + 65536 cannot be\n represented in type \u0027unsigned int\u0027\n\nBug: 30969751\nTest: Builds and boots.\nChange-Id: I86e20932fb288deebe4fb778a689cf71eea6be79\nMerged-In: I86e20932fb288deebe4fb778a689cf71eea6be79\n(cherry picked from commit 77657148b366c0c73bd942d7c67abc8bba8a8300)\n"
    },
    {
      "commit": "e56fc185471f2d678af96a120cfd899bd6c8a42d",
      "tree": "d89bc3ac6ac55d1f3690adaf640aeafdaabe8792",
      "parents": [
        "48679ec884b9c65d401fda69cfaf005c8b8be533",
        "311b604047ca1c5aea85146502667a202e8a5e21"
      ],
      "author": {
        "name": "Mateusz Kaplon",
        "email": "mateusz.kaplon@sony.com",
        "time": "Thu Jan 11 23:09:59 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jan 11 23:09:59 2018 +0000"
      },
      "message": "Merge \"AudioFlinger: improve purgeStaleEffects_l thread-safety\" am: 46d5355af9 am: 76630b8119\nam: 311b604047\n\nChange-Id: If74df49e6dd7fec4186fc983b2457d416ec480fa\n"
    },
    {
      "commit": "46d5355af96d582b81d6fae0ff1d3ceb745863f5",
      "tree": "cf4bceb75726ea1b5de50563afe30e355e4b351b",
      "parents": [
        "1d01cf654baab4f1d6c3266df822cac6f51a67f3",
        "2a6e1b0211e3337931c65a33e07c344719ca4328"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 11 22:29:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 11 22:29:47 2018 +0000"
      },
      "message": "Merge \"AudioFlinger: improve purgeStaleEffects_l thread-safety\""
    },
    {
      "commit": "fdcde78116edc3b479af21024ba8637cbe1c957f",
      "tree": "ae6064e57d0577f968ad5b2242eb97af7986dda3",
      "parents": [
        "e8d10756a1cc2377c39e80be53ce89ad27ba3a59",
        "bf848afa185669971def54404f176308e3bafebc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 11 16:23:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 11 16:23:45 2018 +0000"
      },
      "message": "Merge \"Warning rather than fatal log for unexpected track state\""
    },
    {
      "commit": "77657148b366c0c73bd942d7c67abc8bba8a8300",
      "tree": "5d430059e48a208fad104830d751debc840dac4f",
      "parents": [
        "dc68185aa25ba05951fdac50cac795bc0e09fc96"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Jan 02 21:01:16 2018 +0000"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Jan 03 09:51:27 2018 -0800"
      },
      "message": "Fix integer overflow sanitizer in FastThread.cpp.\n\nFix the integer overflow sanitizer in the FastThread threadLoop()\nfunction by using the builtin overflow-safe function.\n\n runtime error: unsigned integer overflow: 4294934528 + 65536 cannot be\n represented in type \u0027unsigned int\u0027\n\nBug: 30969751\nTest: Builds and boots.\nChange-Id: I86e20932fb288deebe4fb778a689cf71eea6be79\n"
    },
    {
      "commit": "0353f423e5bf553337f336861813a594634ed271",
      "tree": "cbbffa615ceb62bcdec045d33a617d98110ebcec",
      "parents": [
        "d264bb531425b6496317d130e1b0c6e5c0ede7b4",
        "af710ff4695763b840fe59423c6fa8c089963525"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Jan 02 20:45:06 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 02 20:45:06 2018 +0000"
      },
      "message": "Merge changes I4ef7c6f2,Ia8201e8a\n\n* changes:\n  Fix sanitizer in AudioFlinger threadLoop.\n  Fix audioflinger in integer sanitized builds.\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": "9728519d1c1e15f6a60baaa82abfa74770aca524",
      "tree": "25c13b38e621dab51d191672374d29892b6c5790",
      "parents": [
        "49f36ba3b4624ddd3d7efa34c95128a73bda6208",
        "9718d660697b8d7574efd11863b2f0cbd7637dbe"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 27 18:37:59 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 27 18:37:59 2017 +0000"
      },
      "message": "Merge \"Effects: Add debug float logging\""
    },
    {
      "commit": "9718d660697b8d7574efd11863b2f0cbd7637dbe",
      "tree": "d9f568d4b1b413cc5e00f80650781de2ff91107c",
      "parents": [
        "d466435670d1beb80beeeb1a140ebe6a5bfd0d9f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 22 17:57:39 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 22 17:59:37 2017 -0800"
      },
      "message": "Effects: Add debug float logging\n\nTest: audioflinger dumpsys\nBug: 70993567\nChange-Id: I510ab3557ee4b229078d552b7e7085ad3d386e6e\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": "d466435670d1beb80beeeb1a140ebe6a5bfd0d9f",
      "tree": "d6f22c53e3603b0b69a54ec9bad1a733c46b6785",
      "parents": [
        "61e916dd6b0c8701b42f3f392e51e5b52ca38e65",
        "116a49881b35f561f6ee316990d425fad56e7487"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 21 21:54:59 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 21 21:54:59 2017 +0000"
      },
      "message": "Merge \"AudioEffect: Convert aux buffer format from q4.27 to float\""
    },
    {
      "commit": "af710ff4695763b840fe59423c6fa8c089963525",
      "tree": "a8688c4d5d1351235ee13fb0a0aa4de177bb90b3",
      "parents": [
        "809f3979e62de662b48fbdbc7e86270f10972392"
      ],
      "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": "Wed Dec 20 14:54:00 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\nMerged-In: I4ef7c6f2e871ee56b81e87f3d71be8d85b222934\n"
    },
    {
      "commit": "809f3979e62de662b48fbdbc7e86270f10972392",
      "tree": "0f6da597fc693da881e966e7060a722a2dd98ee3",
      "parents": [
        "240201e27b1722009907a31983825668f2416ec2"
      ],
      "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 Dec 20 14:43:06 2017 -0800"
      },
      "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\nMerged-In: Ia8201e8a8f1d4df2b356ec81003fb07598db4546\n"
    },
    {
      "commit": "21de2d7d9b300ca2482fe34e4e1cb58926cb5b27",
      "tree": "69bd7208bfad8d12173d85f8534ee5daca1e3a5b",
      "parents": [
        "cd33e55441e35c1d91ac3475ee25806f0fd28e51",
        "7ee80e7574f62cca653db3242e52e725c7c7a638"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Dec 20 03:35:37 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 20 03:35:37 2017 +0000"
      },
      "message": "Merge \"Fix sanitizer in audioflinger Threads.cpp.\""
    },
    {
      "commit": "cd33e55441e35c1d91ac3475ee25806f0fd28e51",
      "tree": "b12376abc5ed42da8777fe78d4f6c6488ce06289",
      "parents": [
        "02052ff364fc939f3379817f9c14e32a421e3ad4",
        "cd4a011d5da12386bb74dd3a2e31367536fe3423"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Dec 20 03:35:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 20 03:35:22 2017 +0000"
      },
      "message": "Merge \"Fix audioflinger in overflow sanitized builds.\""
    },
    {
      "commit": "deef1856788ff83bcd474d0410ea27417e9774c8",
      "tree": "a6176e6fab0869362c88309020aa7c9373297924",
      "parents": [
        "240201e27b1722009907a31983825668f2416ec2"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Mon Dec 04 16:09:10 2017 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Dec 19 16:16:13 2017 -0800"
      },
      "message": "Fix integer sanitizer in FastMixerDumpState.\n\nPrevent FastMixerDumpState::dump(int) from throwing a runtime error on\ninteger sanitized builds.\n\n runtime error: unsigned integer overflow: 3912 - 36680 cannot be\n represented in type \u0027unsigned int\u0027\n\nThe overflow looks intentional, so this refactors the code to use\nthe builtin overflow function.\n\nBug: 30969751\nTest: Compiled and device boots.\nChange-Id: Ic84a1bd08839fe1af7f3b5318cd8d6ccee777443\nMerged-In: Ic84a1bd08839fe1af7f3b5318cd8d6ccee777443\n"
    },
    {
      "commit": "cd4a011d5da12386bb74dd3a2e31367536fe3423",
      "tree": "438bc108171a2b4edfe4212a11bd2113ad0a52f1",
      "parents": [
        "240201e27b1722009907a31983825668f2416ec2"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Dec 06 10:00:28 2017 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Dec 19 16:11:26 2017 -0800"
      },
      "message": "Fix audioflinger in overflow sanitized builds.\n\nThe loop as constructed in Track::triggerEvents potentially leads to\ntwo unsigned integer overflows on the i \u003d 0 loop.\n\nThis refactors the loop to prevent the overflow.\n\nBug: 30969751\nTest: Compiles and device boots.\nChange-Id: I7ac3223ab3197f5c475a4d09c99e6f05d0ddb208\nMerged-In: I7ac3223ab3197f5c475a4d09c99e6f05d0ddb208\n"
    },
    {
      "commit": "7ee80e7574f62cca653db3242e52e725c7c7a638",
      "tree": "57d8d57c8412fef187af44d826c552955816897c",
      "parents": [
        "240201e27b1722009907a31983825668f2416ec2"
      ],
      "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": "Tue Dec 19 15:42:09 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\nMerged-In: I9cf2e31728ff715c9755f257c1abf10fa5efbf82\n"
    },
    {
      "commit": "05083ac19249d90af77a23c46f4229a7a002320a",
      "tree": "515a40fd7ca344de258cb5bec3afe2623d217880",
      "parents": [
        "62aef7d364670c9c255f8470b0ea874ac2cca293"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 14 15:00:28 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 14 16:19:20 2017 -0800"
      },
      "message": "EffectModule: robust computation of mMaxDisableWaitCnt\n\nTo compensate for overflow / underflow.\n\nTest: Solo Tester and CTS effects\nBug: 70684279\nChange-Id: I7ac3d74c43320a2c6427ba2b424c8edb5a0250b1\n"
    },
    {
      "commit": "62aef7d364670c9c255f8470b0ea874ac2cca293",
      "tree": "a3a0a713b480a85ea4fbaae85dbbb7b80f211808",
      "parents": [
        "ab30516bf9e5f371b720f9cdcd6adfc11e278648"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 14 14:50:40 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 14 16:15:39 2017 -0800"
      },
      "message": "EffectModule: initialize all member variables in constructor\n\nTest: Solo Tester and CTS effect tests\nBug: 70674145\nChange-Id: I9a9e137b8c612f0ea8862da3973d142636fad34d\n"
    },
    {
      "commit": "ab30516bf9e5f371b720f9cdcd6adfc11e278648",
      "tree": "181303738783e64189fc9933cb3265338fff4101",
      "parents": [
        "d5de81458b829504237b8e044adb3808e96ebe10"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 14 12:42:22 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 14 12:56:31 2017 -0800"
      },
      "message": "EffectModule: Update mConfig initialization\n\nUse aggregate-initialization of mConfig to zero.\n\nTest: instrumented memcmp with static decltype(mConfig) ZERO\nBug: 70674145\nChange-Id: Ifdc8780b5da4e0e959f144a1b927ed9bd48edddf\n"
    },
    {
      "commit": "6f88dc4f4e71b6d54359ffa01c7521a384483810",
      "tree": "b8baa538f64f993b3ad1e4d6488e28c1bf973eb0",
      "parents": [
        "8bdef6aa8c5a0eda695259cad75be24bfd402aaf"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 13 16:19:39 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 13 17:01:52 2017 -0800"
      },
      "message": "AudioEffect: initialize configuration in constructor\n\nTo avoid uninitialized use in setInBuffer() and setOutBuffer().\n\nTest: simulate high uninitialized frame counts and check memory usage.\nBug: 69927864\nChange-Id: I8aa68a70596bb3eaca2d4c90915f17272d90fe82\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": "896c9670846cc66d54ba86a978109817818c3929",
      "tree": "fbc235a850cab5e27e0adffe64a3a63a1a0c7da3",
      "parents": [
        "b1cc36b5d52de7cb3d78426d41dee87f25d7164a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 14:08:45 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 14:29:33 2017 -0800"
      },
      "message": "audioflinger: fix recursive mutex locking\n\nCommit 3e1acc0c5 introduced a possible recursive mutex locking when\nan AudioRecord creation request with FAST flag is rejected by\nAudioFlinger after the input was opened by audio policy.\n\nBug: 70388312\nTest: AudioRecord CTS, Audio smoke tests\nChange-Id: Ifc835fddd7e819600a834a8d058a9c98bddbee4e\n"
    },
    {
      "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": "cef7b7a656aaa1d6e875a0f0ffdf6e31f17d1aa6",
      "tree": "800a56dafa0a81c311b839a71e1184912733c9a9",
      "parents": [
        "316c3176b8b839a8465d0c0dfa3878a14d3454c0",
        "0aa3c6eba07f987fe84b5fa450274a8e730971e3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 08 21:23:29 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 08 21:23:29 2017 +0000"
      },
      "message": "Merge \"Revert \"refactor AudioRecord and AudioFlinger openRecord()\"\""
    },
    {
      "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": "c2845ea1aad5b1b60dc3eaa777393df38378b848",
      "tree": "ab94d7804676f75491d22bc6ab6a4a3189a4f5f1",
      "parents": [
        "7b0e95327267f08e36b38fdd8fb2624e251b8e97",
        "fa69ca3012fb4065dd892f363957a4f9a6d24757"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 07 22:56:32 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 07 22:56:32 2017 +0000"
      },
      "message": "Merge \"AudioEffect: clean up format conversion in EffectModule::process()\""
    },
    {
      "commit": "116a49881b35f561f6ee316990d425fad56e7487",
      "tree": "26d80d6e59138bcf42902cfee61713817cc06c09",
      "parents": [
        "fa69ca3012fb4065dd892f363957a4f9a6d24757"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 30 10:15:08 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 06 19:48:37 2017 -0800"
      },
      "message": "AudioEffect: Convert aux buffer format from q4.27 to float\n\nTest: Solo Tester aux reverb\nBug: 69853407\nChange-Id: I72ca2377036e5ccfd5f4631ac6cc5e86d2e40433\n"
    },
    {
      "commit": "fa69ca3012fb4065dd892f363957a4f9a6d24757",
      "tree": "f016b2927a782e3d0355a01622823bd3647eb835",
      "parents": [
        "14093dd03ceec781072b8c53693fcb5d631cddea"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 30 10:07:53 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 06 19:19:31 2017 -0800"
      },
      "message": "AudioEffect: clean up format conversion in EffectModule::process()\n\nEditing for clarity, no change in operation.\n\nTest: Solo Tester\nBug: 69984406\nChange-Id: I683fd9b83417c3d1c6d63339537d03c55625ac13\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": "a44e24ea53e61be704387ed8b567818a184e6f25",
      "tree": "253b5b65efbd5f20aa17533ba390017b52f34b43",
      "parents": [
        "99da22681968f6b84ff804bc3b46fd46331c2229",
        "5ec161bb6845402ceed033c0f9d91127127b27e6"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Dec 06 23:03:00 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 06 23:03:00 2017 +0000"
      },
      "message": "Merge \"Fix audioflinger in overflow sanitized builds.\""
    },
    {
      "commit": "99da22681968f6b84ff804bc3b46fd46331c2229",
      "tree": "6a897bb1c345445e0757f5e0a834ba4ea218d185",
      "parents": [
        "22e91601a37e01509e3a9229e3db3242d79fe38b",
        "e71027ef59e4e48140b6fc1b5fd7a7037d2dee67"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Dec 06 22:54:28 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 06 22:54:28 2017 +0000"
      },
      "message": "Merge \"Fix integer sanitizer in FastMixerDumpState.\""
    },
    {
      "commit": "5ec161bb6845402ceed033c0f9d91127127b27e6",
      "tree": "d57e2f88d50e4eb8dbf4ab7b7dac66f94eda7ebd",
      "parents": [
        "eda72c27cab52c41016d8ce138438a2d59973231"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Dec 06 10:00:28 2017 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Dec 06 13:21:54 2017 -0800"
      },
      "message": "Fix audioflinger in overflow sanitized builds.\n\nThe loop as constructed in Track::triggerEvents potentially leads to\ntwo unsigned integer overflows on the i \u003d 0 loop.\n\nThis refactors the loop to prevent the overflow.\n\nBug: 30969751\nTest: Compiles and device boots.\nChange-Id: I7ac3223ab3197f5c475a4d09c99e6f05d0ddb208\n"
    },
    {
      "commit": "bad8babebfdf0cb92d60f92a01deeab23b463686",
      "tree": "e2e524df216db5d3e60ac8d40d131079c29fafcb",
      "parents": [
        "3d968a5a3132c4bce03f174a343d71cdcd9c0c10",
        "bded9c8bd20c6cc55d4e4f73b56fdfe86e6fbc69"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 06 18:38:55 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 06 18:38:55 2017 +0000"
      },
      "message": "Merge \"AudioEffect: rename m(In|Out)Buffer16 to m(In|Out)ConversionBuffer\""
    },
    {
      "commit": "bded9c8bd20c6cc55d4e4f73b56fdfe86e6fbc69",
      "tree": "fd7748b3e070bb6760a2b3e662e0b5ad84dedcbe",
      "parents": [
        "cc25a713d9c3ea87299324d0f44864e78710020e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 30 18:47:35 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 05 17:05:21 2017 -0800"
      },
      "message": "AudioEffect: rename m(In|Out)Buffer16 to m(In|Out)ConversionBuffer\n\nThese buffers will be used later for channel conversion as well.\n\nTest: Solo Tester\nBug: 69984406\nChange-Id: I551a256d79793b4137b2689be1140d1d6e35ef71\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": "e71027ef59e4e48140b6fc1b5fd7a7037d2dee67",
      "tree": "03a63300f9e883c0d57faa61e5c0c6b4a4c187c7",
      "parents": [
        "eda72c27cab52c41016d8ce138438a2d59973231"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Mon Dec 04 16:09:10 2017 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Mon Dec 04 16:09:10 2017 -0800"
      },
      "message": "Fix integer sanitizer in FastMixerDumpState.\n\nPrevent FastMixerDumpState::dump(int) from throwing a runtime error on\ninteger sanitized builds.\n\n runtime error: unsigned integer overflow: 3912 - 36680 cannot be\n represented in type \u0027unsigned int\u0027\n\nThe overflow looks intentional, so this refactors the code to use\nthe builtin overflow function.\n\nBug: 30969751\nTest: Compiled and device boots.\nChange-Id: Ic84a1bd08839fe1af7f3b5318cd8d6ccee777443\n"
    },
    {
      "commit": "c15aaeec42f2b14cff0f29bb84e58f4388975d91",
      "tree": "05370ca87ddc350edc876e351f82938f29a172c2",
      "parents": [
        "664d6012afe348c6fe906cb05fb981d1a4dbd593"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 27 17:02:40 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 28 12:48:08 2017 -0800"
      },
      "message": "Allow clearing effect hal buffers\n\nTest: SoloTest with int effects\nBug: 69855634\nChange-Id: I273c9da600f3ab04890a7a1cb74b606cc28bea53\n"
    },
    {
      "commit": "5effdf6d9ed17b4ff67a7e1adc56996c01c43383",
      "tree": "06e5f064d6dc9b5aea55cf9a12c39d9e68091a85",
      "parents": [
        "cd742b9174eac9f8b6a108512818f2d3a2392ea8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 27 13:51:40 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 27 14:47:19 2017 -0800"
      },
      "message": "Deprecate ditherAndClamp with memcpy_to_i16_from_q4_27\n\nTest: test-mixer and SoloTester\nBug: 69636805\nChange-Id: I5cc04d82f3e46fbfc8188a63eb2a90fb70634c90\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": "158482dcc8a81172ef6ac5725bee2bf7329b1e96",
      "tree": "08ce7b3f080f2f692305670e0a8bdc425f77d354",
      "parents": [
        "3463e1de5b6c4fc99724cdff249aa6abaa8ebdf5",
        "8589ce7045fd4f5520aabbc773f00c7136925fd7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 03 15:53:43 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 03 15:53:43 2017 +0000"
      },
      "message": "Merge \"Split nblog off from nbaio\""
    },
    {
      "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": "2a6e1b0211e3337931c65a33e07c344719ca4328",
      "tree": "898a2be3249161fe4c20720f2cfa780868b769cc",
      "parents": [
        "69545369eef7dcaf81b889a2fc216ec7923c9622"
      ],
      "author": {
        "name": "Mateusz Kaplon",
        "email": "mateusz.kaplon@sony.com",
        "time": "Thu Mar 30 16:50:50 2017 +0200"
      },
      "committer": {
        "name": "Shuhei Miyazaki",
        "email": "Shuhei.Miyazaki@sonymobile.com",
        "time": "Mon Sep 11 21:56:35 2017 +0900"
      },
      "message": "AudioFlinger: improve purgeStaleEffects_l thread-safety\n\nThere was a situation when a thread in audioserver\ncalled ThreadBase::disconnectEffectHandle that would\nremove effect chain objects from system in the same\ntime that purgeStaleEffects_l would do effect chain\ndiscovery. This caused race conditions and crash\nin purgeStaleEffects_l.\n\nThis patch fixes that by putting code that handles\ndiscovery of effect chains in playback and record threads\nunder mutex of currently checked ThreadBase. This\nensures that any other thread that currently removes\neffect objects from system finishes before\npurgeStaleEffects_l proceeds with effect discovery.\n\nBug: 65535528\nTest: Check Audio Effects works correctly.\nChange-Id: Ia7daac6aaf16c4099ef569e3d438197ac7aad5d4\n"
    },
    {
      "commit": "8589ce7045fd4f5520aabbc773f00c7136925fd7",
      "tree": "a02b3ba722bc13f798c9c10cc51d19b670388452",
      "parents": [
        "f24d95960d85c891fc40db6f1e9644385efb4eb3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 08 17:03:42 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 08 17:06:32 2017 -0700"
      },
      "message": "Split nblog off from nbaio\n\nnbaio is an acronym for \"non-blocking audio I/O\", and nblog means\n\"non-blocking logger\" so nblog does not belong with nbaio.\n\nThere are a lot of improvements planned for nblog, and having the\nrestructuring done will make it clearer as more files are added.\n\nTest: builds OK\nChange-Id: Ib28bada2566c1d64bdbe9f5d7a5ce40e080178ef\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": "90153cae7ffd321338f90678a80abd62fb56e877",
      "tree": "da0bc440061d86b1bf6582343e90add700bc6be4",
      "parents": [
        "e185203e555cd119beb6863a853198b598ac8cde",
        "81ad5ecd211d0f30225714ae8ee61c4d76dbcf56"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Sep 05 16:12:15 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 05 16:12:15 2017 +0000"
      },
      "message": "Merge \"audioflinger: pass return code up from startClient\" into oc-mr1-dev"
    },
    {
      "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": "0b8529fbacaa35634ac24bb62c5890cddcb623b6",
      "tree": "f2ae5de5ae80bb6f69b929172804410e3335abf8",
      "parents": [
        "f238bd3c57632b7f4eeb6b1a6a9542058e911a5b",
        "8cf3a0788df2ee184b498086b1b8da322eeadcca"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 23:07:08 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 01 23:07:08 2017 +0000"
      },
      "message": "Merge \"Generate the IPlayer interface with AIDL.\""
    },
    {
      "commit": "8cf3a0788df2ee184b498086b1b8da322eeadcca",
      "tree": "1bd36129bbd4afa491689deca23977dbf30930f6",
      "parents": [
        "a5ec8b0ec9c94fd9474fae1d1d1dc798ae6c4d2d"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Aug 09 09:01:33 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 10:14:30 2017 -0700"
      },
      "message": "Generate the IPlayer interface with AIDL.\n\nThis removes the manually rolled IPlayer implementation and instead uses\nan aidl generated implementation. The IPlayer aidl file is moved from\nframeworks/base/.\n\nTest: run cts --module CtsMediaTestCases\nBug: 64223827\nChange-Id: Ia609f7ba1cc6f71ce919d6174dd8b5e0e1b05575\n"
    },
    {
      "commit": "5b506f21b1bf4e49cbcb341b46881a77e2f98bf7",
      "tree": "c15d6fd9c06b1d69a4cf8564b6f5cfff260cb829",
      "parents": [
        "c4a226e8584b3d87c2503ddfcde336f63e7c6487"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jul 19 17:54:29 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Aug 31 16:10:23 2017 +0000"
      },
      "message": "audio effects: Eliminate the cause warning logs about unreleased interface\n\nThe cause of frequent \"EffectModule 0xxx destructor called with unreleased\ninterface\" messages was due to not releasing the effects when purging\nstale effects.\n\nThe cause of \"Effect handle 0xxx disconnected after thread destruction\"\nmessage was due to late binder call for disconnecting already purged\neffect handle.\n\nAlso improved logging to communicate uuids of the effects causing\nthese issues.\n\nBug: 62267926\nTest: no aforementioned warnings in the log when opening the Effects\n      panel in Play Music\n\nChange-Id: I6ec6f60c46dc704226931fb59a641e4cd74c2fd1\n(cherry picked from commit 424c4f5b76a6ed11f2c713b42246a7220cfbb240)\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"
    }
  ],
  "next": "7aa0ccbcb6e8d35c894356015c23574619bcf648"
}
