)]}'
{
  "log": [
    {
      "commit": "bda4575c36ad11b0870ccdb50dcb3a04573d6782",
      "tree": "9e5e3ed6228395c814e390c464e09b3d5922cf29",
      "parents": [
        "6d988df316533c7e189b266ad01e66356b6992d1"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Fri Jul 17 16:41:18 2020 -0700"
      },
      "committer": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Thu Mar 11 08:35:04 2021 -0800"
      },
      "message": "Add attributionTag to audio-recordings\n\n... by replacing packageName/uid/pid by the Identity class.\n\nThis allows us to track which parts of the app trigger audio-recordings.\n90% of the code is just sending around the additional parameters.\n\nThis adds it for the Java and native API.\n\nTest: atest CtsAppOpsTestCases\n            CtsNativeMediaAAudioTestCases\nFixes: 160150145\nChange-Id: Ibd7b884f7fcd4668a4e27f997e59cfc3217a9e89\n"
    },
    {
      "commit": "d4a7728496a647e4d886676bb2cc9f15972a43b8",
      "tree": "694426a29bada609bbb900d404767324ffeb034e",
      "parents": [
        "99eae39062304893ad6221eccfe353b5271ee484"
      ],
      "author": {
        "name": "Ayushi Khopkar",
        "email": "ayushi.khopkar@ittiam.com",
        "time": "Wed Feb 24 13:29:28 2021 +0530"
      },
      "committer": {
        "name": "Kris Alder",
        "email": "kalder@google.com",
        "time": "Fri Mar 05 01:00:32 2021 +0000"
      },
      "message": "libaudioclient : Update log in VALUE_OR_FATAL\n\nThis update adds line number and function name in abort log of VALUE_OR_FATAL\n\nTest: ./audioflinger_fuzzer -rss_limit_mb\u003d2560 -timeout\u003d90 -runs\u003d100\n      clusterfuzz-testcase-minimized-audioflinger_fuzzer-5701813725167616\nBug: 180357329\n\nChange-Id: If8710ef7b8856fb7e1fdd6dd2af302b501602f22\n(cherry picked from commit e25af5cfc58e2eea9099bbdd954c0ced6d5de1c6)\n"
    },
    {
      "commit": "78dc9c8013fd7a3626298d091622dbccb250455d",
      "tree": "8f289d763f73cb6ca87e2dad6d72ebaa3567229c",
      "parents": [
        "925e03a912e07283056cf99d12fad51a4451adae"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Feb 22 19:13:29 2021 +0000"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Feb 22 21:56:59 2021 +0000"
      },
      "message": "Add log when starting external vibration.\n\nAdding log when starting external vibration to help debug\naudio-coupled-haptic playback issues.\n\nBug: 178431048\nTest: make\nChange-Id: I55c4bf5dad39decb91772f333b111bd93ad1cbdf\n"
    },
    {
      "commit": "0a4904a12ded2c89e2cae4a7dc46730726cf9abd",
      "tree": "82da7b9713645ba4970114857119bdf21dc40f54",
      "parents": [
        "08c7d9e6ceb83134b7d6d6b56e686cfb54dd43f3"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Jan 06 12:57:05 2021 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Jan 21 10:44:07 2021 -0800"
      },
      "message": "Convert IAudioPolicyService to AIDL\n\nTest: Audio tests from CtsMediaTests\nTest: Audio smoke tests\nBug: 160253486\n\nChange-Id: I5ecee56f71a959d2fd75714ba95d7653af0c98bc\n"
    },
    {
      "commit": "6626a01d9d18d9a7277310d03edfeba6a5a0b056",
      "tree": "9264e6c91aa3b47f1f2bfbdd3df4a82500e18f86",
      "parents": [
        "328d6774ba2a3526a437532832df5781812d123b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 12 13:38:00 2021 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 15 17:31:37 2021 -0800"
      },
      "message": "AudioFlinger: Use atomic pointer for AudioFlinger singleton.\n\nSet when AudioFlinger is assigned to sp\u003c\u003e (i.e. onFirstRef())\nby the main audioserver thread.\n\nTest: basic audio works\nTest: AudioEffectTest AudioPreProcessingTest BassBoostTest\nTest: EnvReverbTest EqualizerTest LoudnessEnhancerTest\nTest: PresetReverbTest VirtualizerTest VisualizerTest\nBug: 161341295\nChange-Id: I21b8c88f35fbeaae6214b2f894cfcea22b965f6f\n"
    },
    {
      "commit": "74c38dc7e39125a9ae17daa3b810324621c0fad2",
      "tree": "55b4d2bfdb04674b707e07e1a7d15723684f1e74",
      "parents": [
        "dc66d284ad1cdfffc3e65cf352e270e43dc47ff8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 23 18:19:44 2020 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 05 08:37:54 2021 +0000"
      },
      "message": "audio flinger: report actual sink device for MSD playback threads\n\nWhen a playback thread is routed to an MSD module, make sure that the\nactual sink device selected by the software patch at the output of the\nMSD module is reported to AudioTrack clients.\n\nBug: 139894721\nTest: atest AudioTrackTest\nTest: atest RoutingTest\nChange-Id: Ie52ebe198e9ebdfe5f2a38dcd44c551c705a7931\n"
    },
    {
      "commit": "973638a1ca4d4f693a492a13c89240178391e56c",
      "tree": "844cf6ba85c876ff1cc8e93aba1b6a6d990ec5ac",
      "parents": [
        "3f69c16cb65f42892b2ee678d171c98613f16982"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 08 20:47:45 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 11 00:04:32 2020 -0800"
      },
      "message": "Audio Aidl: Unify naming for conversion methods\n\nMost of the naming for aidl2legacy and legacy2aidl\nare consistent, correct the few remaining inconsistencies.\n\nTest: compiles, boots\nBug: 175316373\nChange-Id: I85952846b306a2b5e88db125ccfbe431cc9bd7cd\n"
    },
    {
      "commit": "e4f113b22e79ed6744bda6d775bdfc24b9354657",
      "tree": "e37ca9d901c8c421e2f6a6d4a1fa27c0ff144df7",
      "parents": [
        "f4e0a07dfc6fd095fea7b34e08a137379741115b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Nov 16 11:50:33 2020 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Dec 04 16:17:05 2020 -0800"
      },
      "message": "AudioPolicy/Flinger: harden security checks\n\nUpdate list of methods which can only be called from system\ncomponents.\n\nBug: 162423060\nTest: see poc\nChange-Id: Ie266a2fdd31bdcecfe9c116596ae65a789b812c6\n"
    },
    {
      "commit": "50b8ccb52ded489c4f60d42541293f3f9938f1ae",
      "tree": "0bc210d7f008e9fe0a6e1227d2e54a846f1cd392",
      "parents": [
        "ee75d6f36fabcd431edf60a50437eea166f43762"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Nov 24 13:47:54 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-tsvi",
        "email": "ytai@google.com",
        "time": "Thu Dec 03 19:18:42 2020 +0000"
      },
      "message": "AIDLize IAudioFlinger\n\nThis change removes all the manual parceling code used in the\nIAudioFlinger interface. In order to reduce impact on existing client\nand server code to a minimum, the IAudioFlinger interface is preserved\nand a new translation layer between IAudioFlinger and its AIDL\ncounterpart, IAudioFlingerService, is introduced:\n- AudioFlingerClientAdapter is for use on the client side. It wraps an\n  IAudioFlingerService instance and presents an IAudioFlinger\n  interface.\n- AudioFlingerServerAdapter is for use on the server side. It wraps an\n  IAudioFlinger instance and presents an IAudioFlingerService.\n\nArgument conversion an error checking is performed rigorously in the\ntranslation layer.\n\nTest: Audio-related CTS tests from CtsMediaTestCases\nBug: 160253486\nChange-Id: Ibe35317e449b0faa3ef5336bb30f669106978a31\n"
    },
    {
      "commit": "5385847f517bae5b5067507dea4df68ead351932",
      "tree": "52f652fee054bb7a8a4b8fcdba39d1885ac3fab2",
      "parents": [
        "f9dd9246bf47c72c1e38f0cc5a012f056627dce7"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Nov 30 11:04:46 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Dec 01 10:04:13 2020 -0800"
      },
      "message": "Move business logic out of IAudioFlinger\n\nIAudioFlinger should only contain transport logic, in preparation for\nAIDL conversion.\n\nTest: Audio-related CTS tests from CtsMediaTestCases\nChange-Id: I2a6d8f16da720a3db7c673e5b2bb9bbd23bbf985\n"
    },
    {
      "commit": "50e016a9959c87fd3aaac0084e8d68611e41781a",
      "tree": "7fdfcfb72d99344af023ee3e56023f7cb93a83d0",
      "parents": [
        "1ff75699675b1d642d6f8fe645b5ae46b5432dfb"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Nov 12 14:26:12 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Nov 24 16:40:34 2020 -0800"
      },
      "message": "Prepare openOutput() signature to AIDL conversion\n\nThe purpose is to avoid having more than one primitive output\nargument and to avoid in/out arguments.\nTest: Audio-related CTS tests from CtsMediaTestCases\n\nChange-Id: I827f99755f85bd58f3088c9445add52848763fa0\n"
    },
    {
      "commit": "1ff75699675b1d642d6f8fe645b5ae46b5432dfb",
      "tree": "1a7cd4bd94aac27219940cccaee824abb069c989",
      "parents": [
        "07892869191730375f91ff6f1334006657de8752"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Nov 06 12:16:12 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Nov 23 14:07:28 2020 -0800"
      },
      "message": "Extract VALUE_OR_RETURN_STATUS to AidlConversion\n\nThis seems useful in various places.\n\nTest: Compiles\nChange-Id: Iab9b03f806b4c33da68df89437db5639680ce331\n"
    },
    {
      "commit": "12a0b8459f7aaa531d0b95863c5c6317d474e3ef",
      "tree": "e91b94d0a0aa5395293aef2d6eef263d4c66b65e",
      "parents": [
        "ce18294068568ada960f6610ca0e2cd18c7704c7"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Nov 05 13:47:32 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Nov 23 14:07:28 2020 -0800"
      },
      "message": "Prepare openInput() signature to AIDL conversion\n\nThe purpose is to avoid having more than one primitive output argument\nand to avoid in/out arguments.\n\nTest: Audio-related CTS tests from CtsMediaTestCases\nChange-Id: I6bb5dde7956dcca30ed874397f78658d79433202\n"
    },
    {
      "commit": "ce18294068568ada960f6610ca0e2cd18c7704c7",
      "tree": "7c094dd05e524d612cb11a353a0cffc6725f8f0d",
      "parents": [
        "16d8761804e7b98b89306ee91dce6501855c133b"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Nov 04 14:48:01 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Nov 23 14:07:27 2020 -0800"
      },
      "message": "AIDLize createEffect params\n\nAs part of the effort to convert IAudioFlinger to AIDL, converting\nsome of the method arguments to pure AIDL and making their\nsignatures more AIDL-friendly, by avoiding multiple primitive\nreturn value.\n\nTest: Audio-related CTS tests from CtsMediaTestCases\nChange-Id: I720ff197ae5ffd50afa8d23f8fd6f19a2246e974\n"
    },
    {
      "commit": "16d8761804e7b98b89306ee91dce6501855c133b",
      "tree": "2658b659aa294e44a99edd6761ce6b212503a40e",
      "parents": [
        "71109da4e5d4f9c8389c832d72192a3c0d7d04b7"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Nov 03 16:32:36 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Nov 23 14:07:26 2020 -0800"
      },
      "message": "Include the returned IAudio{Track,Record} in response parcelable\n\nIn preparation to AIDLizing IAudioFlinger, having two return values is\ninconvenient. It is also not consistent with most other methods, which\nmostly return status_t. This change puts the returned\nIAudio{Track,Record} in the response parcelable instead of having them\nas separate return values.\n\nTest: Audio-related CTS tests from CtsMediaTestCases\nChange-Id: I97cbec21ca936b4e00e5caa06760ce00922739e8\n"
    },
    {
      "commit": "bdc293ab893eccf33ce7613b25989179154ea982",
      "tree": "c0317fb61f9e022265313b65d142aba68f7b328a",
      "parents": [
        "4106a42ac62f65492583372441bc33a573d411fe"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Nov 02 17:01:38 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Nov 23 14:07:25 2020 -0800"
      },
      "message": "Convert IAudioTrack to AIDL\n\nTest: Audio-related CTS tests from CtsMediaTestCases\nChange-Id: Ia021b9152cf0cb62e3d1999f9c6184601efd2a93\n"
    },
    {
      "commit": "d9ef4b1117462ead23dc0d76f2aa86cf633fd2c1",
      "tree": "2341bbd25abd81bf14ec5cd683c31479a3bbbe8a",
      "parents": [
        "9fc004e28df1b1beabf27deb265dc882e0cd2dfe"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Nov 11 15:13:18 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Nov 11 23:20:19 2020 +0000"
      },
      "message": "AudioFlinger: Fix naming broadcastParametersToRecordThreads_l\n\nTest: Compiles, boots, camera video capture\nChange-Id: I8dae31fa5f0e4883981eacdf0b82fa0b6124348d\n"
    },
    {
      "commit": "9fc004e28df1b1beabf27deb265dc882e0cd2dfe",
      "tree": "b4711911f83fc220995b0e071afdbadfdc1758e9",
      "parents": [
        "2ae8676b561497410326efdb64327ee7a392a68c",
        "2607485e8216168f0414cfde43eed98a7e4d68b8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 09 19:36:49 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Nov 09 19:36:49 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: Change timeout for FdToString.\" am: d578bbd330 am: 0210818c13 am: a7805886d5 am: 2607485e82\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1490687\n\nChange-Id: I5ab419436ea3732a889fe5bb24473614ed3a8d96\n"
    },
    {
      "commit": "2607485e8216168f0414cfde43eed98a7e4d68b8",
      "tree": "fa529b65f690f3c6d5361b6b02c275ea4fc4298f",
      "parents": [
        "b1ac89483263297e040914c6bdf30d80a4be8255",
        "a7805886d569c29151104f0be80ed61616c1c8a7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 09 19:21:09 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Nov 09 19:21:09 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: Change timeout for FdToString.\" am: d578bbd330 am: 0210818c13 am: a7805886d5\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1490687\n\nChange-Id: Icc32d00d2e8b9dafc8f5deaa4975e9266d2fe5cf\n"
    },
    {
      "commit": "330845f212fc280b9023300d10892e0403438ea1",
      "tree": "51319fed5d0cbd1f312f6d25e0ef3ae8575fd3d7",
      "parents": [
        "bf1cb79c2f2cc2e26a77d6395e130af63d92d9f7"
      ],
      "author": {
        "name": "Jaideep Sharma",
        "email": "jaidshar@codeaurora.org",
        "time": "Thu Oct 22 12:14:58 2020 +0530"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Nov 06 18:30:44 2020 -0800"
      },
      "message": "AudioFlinger: Change timeout for FdToString.\n\nCurrent implementation waits for 200 msec,\nwhich leads to delay during boot time and other cases\nwhere we close outputs and inputs.\nReduce this time to 2 msecs.\n\nBug: 171365312\nBug: 172293721\nCRs-Fixed: 2776028\nTest: See bug for specifics on device and test.\nTest: adb shell dumpsys media.audio_flinger\nChange-Id: Ia08e8431d36e168bb4a2301cfbd9545f354fa811\n"
    },
    {
      "commit": "4dfeb62ade7100e4e830f2e7754b8fba9d1c4179",
      "tree": "fdbc1c83b26d318bc0fddad10c598aa70b57ddc0",
      "parents": [
        "49298c530b34b6d5e0ed2e147956da2d7cdea921"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Nov 02 12:47:30 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Nov 03 16:21:12 2020 -0800"
      },
      "message": "Convert AudioFlinger create* arguments to AIDL\n\nThis is a first step in AIDLizing IAudioFlinger, where we are\nconverting the in/out arguments from create{Track,Record} to stable\nAIDL and add their respective conversion functions.\n\nBug: 160253486\nTest: atest CtsMediaTestCases:Audio*\n      Manual verification of common playback and recording scenarios.\nChange-Id: Iabb28472aedd90efbba673fb68574876528228df\n"
    },
    {
      "commit": "10dc0a6f628f2d216ce44ad9a6184af88a0f13d9",
      "tree": "63ef212b4d3c6c99e217f23e6f2fbe07652bc1eb",
      "parents": [
        "29ac42b5105591c64454e06bf81b7b6782e54e81"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 18 11:31:55 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Oct 15 09:12:37 2020 -0700"
      },
      "message": "Convert IAudioFlingerClient to stable AIDL\n\nThis involves creating an AIDL type system to represent all the types\n(transitively) composing audio_io_config_event, as well as back and\nforth conversion between both type systems.\n\nBug: 160253486\nTest: Ran audio-related CTS tests on Sargo.\n\nChange-Id: I230c3d9412cd1f51d41a2faca364c8fd475514bc\n"
    },
    {
      "commit": "94ca11488f69e684d6b55889e70a427eaabe6604",
      "tree": "ede43b9ed0e15c01e7963b09bd294a982d792d61",
      "parents": [
        "f8701c40e95ec237919884629f0497c0bb504c04"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 07 10:45:20 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 07 10:45:20 2020 -0700"
      },
      "message": "audioflinger: fix wait for media.log service\n\ncommit e2cf8295 disabled media.log service but did not skip binding\nto this service when audioflinger starts which caused a systematic\ntimeout and a 5 second delay in audioflinger start sequence.\n\nBug: 165702394\nBug: 169105682\nTest: SuccessiveBootTest\nChange-Id: I892c2120f290ef52b34d320b281ab8faf2b5b0ea\n"
    },
    {
      "commit": "375283dd6031a71e44fc17efad05b741302c78e5",
      "tree": "da9cbab41fb7a3610201cfe17d09d7a5e9d3a37e",
      "parents": [
        "b77e219423638bd958a5673dba017ea72aaa2e39"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 21 18:14:43 2020 -0700"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue Sep 15 18:02:58 2020 +0000"
      },
      "message": "Add package name when creating AudioTrack.\n\nThe package name can be used when starting an external vibration, which\nis used by vibrator service to check if the application has the\npermission to start vibration.\n\nBug: 165910728\nBug: 162343845\nTest: atest AudioTrackTest MediaPlayerTest\nTest: start audio-coupled-haptic playback\nChange-Id: I6d12c4e141c037ee94ee79cbb9bf537421ec9507\nMerged-In: I6d12c4e141c037ee94ee79cbb9bf537421ec9507\n"
    },
    {
      "commit": "9447b48f36b1bf26645e6256dd29224b6a398161",
      "tree": "62bc6e0895af051df03446dc2c5ecca8dd288d0f",
      "parents": [
        "37e93d1bc4df8b2d9682c48236bb4dae87d6dd1b",
        "d1fa2375194096937bbdfd2def97969c4336191b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 03 00:53:20 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Sep 03 00:53:20 2020 +0000"
      },
      "message": "Merge \"audio flinger: handle race condition in AudioRecord creation\" into rvc-qpr-dev am: d1fa237519\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12484593\n\nChange-Id: I5e330127a6ef2efe394b06524af5ae20f01a71bc\n"
    },
    {
      "commit": "2e40c302d6117ec6eb65f25832a71488367b4dfb",
      "tree": "ce2cff004a09076114faabf595b1a116bcb461ff",
      "parents": [
        "054de8d6440fd30238fa9330bcc038cda745b244",
        "924eccfd6f6d3aaed5db627a0bdcfcaaf9b09a18"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Aug 28 08:38:54 2020 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Aug 28 21:23:54 2020 -0700"
      },
      "message": "Merge Android R (rvc-dev-plus-aosp-without-vendor@6692709)\n\nBug: 166295507\nMerged-In: Ie94127c1e981cb18671d5137ba0d39355d1353da\nChange-Id: Ib22ad33bda8d561af537499b6d31ab6134eeae02\n"
    },
    {
      "commit": "717bc28fc5959c0edb2bbd86692ba5164893f719",
      "tree": "9f55d492e1032f4224dc3420345868cf8d613456",
      "parents": [
        "0b3f254028404b4772e02f9d1cdfcefba0e264b4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 21 17:10:39 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 28 22:51:36 2020 +0000"
      },
      "message": "audio flinger: handle race condition in AudioRecord creation\n\nA rare race condition can cause a failure to create an AudioRecord if\ntwo creation requests are processed concurrently and thread preemption happens\nat a specific time within the sequence between audioflinger and\naudio policy manager.\n\nThis CL implements a retry mechanism on client side when this particular failure\nis detected.\n\nBug: 161656190\nTest: Regression tests for audio capture use cases.\nTest: CTS tests for AudiRecord\nChange-Id: I155ee4899baeec21e10a1141cb9e323cbc8aa23b\n(cherry picked from commit d52a28ca2c19db7d10bc6c4639a8bd78e1afd5f1)\n"
    },
    {
      "commit": "b8a9dbbf791adf7f1a0ab87d7a35770074e88cc8",
      "tree": "a2f91436efd8587def9e765d333387fed6a03b7f",
      "parents": [
        "763136770b0bb6828cf7628a9b3bbf09b0741ae2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 27 04:12:26 2020 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 27 04:12:26 2020 +0000"
      },
      "message": "Revert \"Snap for 6793014 from 424180bdc4aa18249e678daebfd0fcf936...\"\n\nRevert \"Snap for 6793014 from fd1ad6750ef332d3f50f218f4d5d148e6e...\"\n\nRevert \"Snap for 6793014 from 7594ec6384c4da320726def34f477736f9...\"\n\nRevert \"Snap for 6793014 from bbbccc3c2b7fc7c5780f6c415c4223e1d0...\"\n\nRevert \"Snap for 6793014 from 44725f06b7f7d6407b5ee82d989bdd6c7a...\"\n\nRevert \"Snap for 6793014 from f22ad3164937a8f2e309965c102b6366d5...\"\n\nRevert \"Snap for 6793014 from 11467102abddb6026aaa164c1361439c2d...\"\n\nRevert \"Snap for 6793014 from 265280bf5cb4bc14e132c3a35ae5f7ae65...\"\n\nRevert \"Snap for 6793014 from f2989f9c65556d5155dbd57f82f0c93a16...\"\n\nRevert \"Snap for 6793014 from 8b8bf0a07b0521bbe8483fbbab1222ffd6...\"\n\nRevert \"Snap for 6793014 from 3777d883a3857b1a1589181c436d9018d7...\"\n\nRevert \"Snap for 6793014 from 3157b4ee4325286f0c2ab0f26528460c8b...\"\n\nRevert \"Snap for 6793014 from a43295d1825da62af038d345a7a861ed7a...\"\n\nRevert \"Snap for 6793014 from 2076be4d27078d6ebc0a6b5e5ceb386109...\"\n\nRevert \"Snap for 6793014 from d0e31526c62b2aeb35c293ac96feb180fc...\"\n\nRevert \"Snap for 6793014 from 7a3a8c6351d5167a6ae0b33bc376efabd2...\"\n\nRevert \"Snap for 6793014 from 41471cb21bb16b5c3bcc92f84293b79684...\"\n\nRevert \"Snap for 6793014 from 42e5cca3cfb829690c9d8c6aca57a8e7d5...\"\n\nRevert \"Snap for 6793014 from 4f81304963d19f4511b1e8e7d0aad87a67...\"\n\nRevert \"Snap for 6793014 from 07602cdacf5bcc835db41f7eaa24af9964...\"\n\nRevert \"Snap for 6793014 from 14cb57e107a3abce8b14937b1f92c28d18...\"\n\nRevert \"Snap for 6793014 from ab1e4a81d09a540a5f927059e5bc03a606...\"\n\nRevert \"Snap for 6793014 from 8c65adad0bcdfb3acc561063b4048dca24...\"\n\nRevert \"Snap for 6793014 from b3061942700265e2bf04af9997775dcbbb...\"\n\nRevert \"Snap for 6793014 from 551c5953fc62e339e4ee884ec2cd0ac3be...\"\n\nRevert \"Snap for 6793014 from 4919273b2ac5c6347a18e17c5ec70d8da6...\"\n\nRevert \"Snap for 6793014 from 988d4244914e0c749655e8cb6db18ba44f...\"\n\nRevert submission 12465146-release-request-6b259cbc-1f45-4b05-bc7e-c9b893b79d68-for-git_main-busytown-release-6793014\n\nReason for revert: b/166531456\nReverted Changes:\nI5ff7a6c0d:Snap for 6793014 from f2989f9c65556d5155dbd57f82f0...\nI77bdff943:Snap for 6793014 from a43295d1825da62af038d345a7a8...\nI2ac5c520a:Snap for 6793014 from c3f124cca05579acf0a6cb589ebd...\nI023b9702f:Snap for 6793014 from 98756d6d3e2bb0ba28eb125caa7a...\nIbc7893d72:Snap for 6793014 from fd1ad6750ef332d3f50f218f4d5d...\nIc27847bee:Snap for 6793014 from 8c65adad0bcdfb3acc561063b404...\nIf20bc9352:Snap for 6793014 from 7a3a8c6351d5167a6ae0b33bc376...\nI6542d17e8:Snap for 6793014 from 3777d883a3857b1a1589181c436d...\nI66e6bb8a9:Snap for 6793014 from 8b8bf0a07b0521bbe8483fbbab12...\nI3cd190b6b:Snap for 6793014 from 424180bdc4aa18249e678daebfd0...\nIf92db7402:Snap for 6793014 from ab1e4a81d09a540a5f927059e5bc...\nIaced03c87:Snap for 6793014 from d0e31526c62b2aeb35c293ac96fe...\nI5d28c6b4b:Snap for 6793014 from 4f81304963d19f4511b1e8e7d0aa...\nI30d07bea3:Snap for 6793014 from 7594ec6384c4da320726def34f47...\nI473205f48:Snap for 6793014 from 551c5953fc62e339e4ee884ec2cd...\nI0656b41af:Snap for 6793014 from 44725f06b7f7d6407b5ee82d989b...\nI0f9796067:Snap for 6793014 from 4919273b2ac5c6347a18e17c5ec7...\nI9a38cda8f:Snap for 6793014 from 2076be4d27078d6ebc0a6b5e5ceb...\nI876a82f51:Snap for 6793014 from 11467102abddb6026aaa164c1361...\nI749d7d023:Snap for 6793014 from 41471cb21bb16b5c3bcc92f84293...\nI038daea41:Snap for 6793014 from 07602cdacf5bcc835db41f7eaa24...\nI47aa3131c:Snap for 6793014 from 14cb57e107a3abce8b14937b1f92...\nI32dba8a95:Snap for 6793014 from 3157b4ee4325286f0c2ab0f26528...\nI2ebc9f9db:Snap for 6793014 from 988d4244914e0c749655e8cb6db1...\nIae7c3370f:Snap for 6793014 from 9ffb8852294e06e2d387dc1fb868...\nI6467a7f1b:Snap for 6793014 from 42e5cca3cfb829690c9d8c6aca57...\nI8c6375203:Snap for 6793014 from b3061942700265e2bf04af999777...\nI843b2e1f3:Snap for 6793014 from 265280bf5cb4bc14e132c3a35ae5...\nIe254f7079:Snap for 6793014 from f22ad3164937a8f2e309965c102b...\nI01e0974ed:Snap for 6793014 from bbbccc3c2b7fc7c5780f6c415c42...\n\nChange-Id: I00c786b898b73e58db8bcb1dd0cf3fdaa1ae3038\n"
    },
    {
      "commit": "d52a28ca2c19db7d10bc6c4639a8bd78e1afd5f1",
      "tree": "c687eda00e2c45823cdb1857c64ad48b67578819",
      "parents": [
        "615364792b6fe07869c685e4bccbf7837e1ba97b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 21 17:10:39 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 25 13:33:12 2020 -0700"
      },
      "message": "audio flinger: handle race condition in AudioRecord creation\n\nA rare race condition can cause a failure to create an AudioRecord if\ntwo creation requests are processed concurrently and thread preemption happens\nat a specific time within the sequence between audioflinger and\naudio policy manager.\n\nThis CL implements a retry mechanism on client side when this particular failure\nis detected.\n\nBug: 161656190\nTest: Regression tests for audio capture use cases.\nTest: CTS tests for AudiRecord\nChange-Id: I155ee4899baeec21e10a1141cb9e323cbc8aa23b\n"
    },
    {
      "commit": "9cd898172de61db05bc49b93d5d8f822bc2fa6f5",
      "tree": "6e84e9f40da4f9d9c4a6e3517d7c6b951fd83492",
      "parents": [
        "37934a22fc6159c2cae85fc5b877424d5bf38628"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Jul 01 17:12:06 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Aug 17 11:19:20 2020 -0700"
      },
      "message": "Convert IEffect and IEffectClient to AIDL\n\nThis change replaces the manually-parceled IEffect and IEffectClient\nwith AIDL definitions.\n\nIn addition, this includes a small library that facilitates shared\nmemory regions over AIDL.\n\nBug: 160253486\nTest: Ran effects-related CTS tests. Manual verification of basic\n      audio functionality on Sargo.\n\nChange-Id: I5a9c5f2f24c10072ad5067acc71aa30581af41c1\n"
    },
    {
      "commit": "660609e595150aa988b8f92a9841626f407ba900",
      "tree": "b7e96a3dd25d10d1a60c6e77cea9200d37adeb64",
      "parents": [
        "7f1fd94d88517edf0d304b1ef30f50901b50842e",
        "9dae45838b759b4d23df36a7a707890c85b38689"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Aug 04 04:21:39 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Aug 04 04:21:39 2020 +0000"
      },
      "message": "Merge \"Update language to comply with Android\u0027s inclusive language guidance\" am: 97937ef8f2 am: fa47739ebe am: 2a9274cd2c am: e98479eb76 am: 9dae45838b\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1385922\n\nChange-Id: I680cc43da8a4d19ac1f9bd8bf6b14489395bc223\n"
    },
    {
      "commit": "2a9274cd2c815d9992527f7b8a4c1d75cc372057",
      "tree": "bde10f8015bbee45ba8d139117e8350abb0946c4",
      "parents": [
        "7c9913d5d5a35242a617ccb82ba4659e777ee007",
        "fa47739ebe4049c51f01b5e86ab40204cf1a27fd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Aug 04 03:07:41 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Aug 04 03:07:41 2020 +0000"
      },
      "message": "Merge \"Update language to comply with Android\u0027s inclusive language guidance\" am: 97937ef8f2 am: fa47739ebe\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1385922\n\nChange-Id: I387370424b74c3414cad6796bdf311577c47fe91\n"
    },
    {
      "commit": "a2f59b339b498d38224cb807782f0b59d4378e91",
      "tree": "ec12fb4788066f863a47993818845bdcce08711d",
      "parents": [
        "1fc724e954b4b0384ae12b095424214754c15d94"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 03 16:37:24 2020 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Aug 04 00:13:45 2020 +0000"
      },
      "message": "Update language to comply with Android\u0027s inclusive language guidance\n\nSee https://source.android.com/setup/contribute/respectful-code for reference\n\nBug: 161896447\nTest: N/A\nChange-Id: I7cc02d672a35025650a515247d268693b8bc2dc5\n"
    },
    {
      "commit": "3ff74ec2143ad430507f4965c9ccdb15b8a2e1e2",
      "tree": "9867f5f00d0f4c10af7c55f049ba777937b550b5",
      "parents": [
        "574c30bea770bb17f8c55a8e0f5a358fe13d99e2",
        "4ad31c7f45584d634f9e5e2f9a4ade0577beb534"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 29 21:44:06 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 29 21:44:06 2020 +0000"
      },
      "message": "Merge \"Update language to comply with Android\u0027s inclusive language guidance\" am: 0be1ec5c17 am: 89a55225f4 am: 9e5ee290c2 am: 1d9684cf32 am: 4ad31c7f45\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1375378\n\nChange-Id: Ia8dfc6e5ed0839aed6798efc0e6f0f5f9f7ff5e2\n"
    },
    {
      "commit": "9e5ee290c2d33a0043d82f620ecb2616bbeb716b",
      "tree": "13a03de25f49946a2e6e03d9db65889885ca4bef",
      "parents": [
        "0a30ce1b6152e42f6d972b14471d610ebfc5003c",
        "89a55225f4d5697d10ae5516c71713306dcb8f64"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 29 20:41:14 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 29 20:41:14 2020 +0000"
      },
      "message": "Merge \"Update language to comply with Android\u0027s inclusive language guidance\" am: 0be1ec5c17 am: 89a55225f4\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1375378\n\nChange-Id: Icd8387718c8dc61e40e79e483f5d861a972c9f23\n"
    },
    {
      "commit": "60766085dcad675bee50a08ec008e4714a6369d5",
      "tree": "036edddfa4d16a589eba531e798cff9b1dc4d71d",
      "parents": [
        "b1f872ad712cfc0a08d81b17eb01c6b8548eed6d"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue Jul 28 22:03:56 2020 +0000"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue Jul 28 22:04:01 2020 +0000"
      },
      "message": "Update language to comply with Android\u0027s inclusive language guidance\n\nSee https://source.android.com/setup/contribute/respectful-code for reference\n\n \nBUG\u003d161896447\n\nChange-Id: Iad0bd7ca8c0a804129e6b8759336a0a652a4f0b0\n"
    },
    {
      "commit": "e70bc7fc5910583a4495e3c7f96cf5cad4b947a2",
      "tree": "a86c77b36f12df749cc41a4b9ebc3e8cc12a8b02",
      "parents": [
        "eb3bda06752f9539db64f289039968f8395bf9f5"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Jun 30 22:07:55 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jul 17 14:52:16 2020 -0700"
      },
      "message": "Support scaling haptic data in HapticGenerator\n\nMove function of scaling haptic data from AudioMixer to vibrator\nlibrary. Scaling haptic data in HapticGenerator according to the haptic\nintensity.\n\nBug: 136490803\nTest: play audio-coupled-haptic files\nTest: play audio with HapticGenerator effect\nChange-Id: I6bac63c085332ea87cc6612a8f2f368ad7ef7826\n"
    },
    {
      "commit": "eb3bda06752f9539db64f289039968f8395bf9f5",
      "tree": "5140c44fa37f9a7f6063c72db17624d4289c3e31",
      "parents": [
        "98b8a370059a1e142f3eed4bafdcc9b1e0b230fd"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Jun 30 14:07:03 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jul 17 14:34:29 2020 -0700"
      },
      "message": "Force selecting haptic supported thread when creating HapticGenerator.\n\nHapticGenerator is the haptic-generating effect, which will generate\nhaptic data based on audio data. As haptic data will be truncated on\nnon-haptic supported thread, HapticGenerator makes sense only on haptic\nsupported thread. In that case, force selecting haptic supported thread\nwhen creating HapticGenerator. If there is no thread supporting haptics\nchannel, return a failure.\n\nBug: 136490803\nTest: make, manually\nChange-Id: I865d211c613c793d75d23f5d10c9a01d294fdc36\n"
    },
    {
      "commit": "488d5005012a06e81aaa934d42d83e702ca77734",
      "tree": "f7a2a40da5ca3c348f3a95c12ea7be93f65b23fc",
      "parents": [
        "a135dd88ab90c5e3ca12ec91ced6c88d13152dcc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 14 09:13:30 2020 -0700"
      },
      "committer": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Thu May 14 09:17:41 2020 -0700"
      },
      "message": "AudioFlinger: fix getMicrophones implementation\n\ngetMicrophones() should return aggregated mic information\nfrom all HW modules, not just primary.\n\nAlso:\n- Fix assignment of mPrimaryHardwareDev that should be\nfirst from HW module name and then according to primary output\nif no module with name \"primary\" is loaded.\n\n- Make sure we do not dereference mPrimaryHardwareDev if null.\nNote that this should not happen with current rule that a primary module\nmust be present.\n\n- Implement consistent locking scheme where both mPrimaryHardwareDev and\nmAudioHwDevs are guarded by mHardwareLock\n\nBug: 154772890\nTest: AudioManagerTest#testGetMicrophones\n\nSigned-off-by: Dmitry Shmidt \u003cdimitrysh@google.com\u003e\nMerged-In: I7c9449bb705a6fbebdc0642166e58348d47b7ee8\nChange-Id: I1c2e1cbfdb16c408c7368e2e51838c299c22ec7b\n"
    },
    {
      "commit": "a135dd88ab90c5e3ca12ec91ced6c88d13152dcc",
      "tree": "001f238818d7866362663526918e86dc2e238bde",
      "parents": [
        "3ec7c256a8e5f5e3ec1dd1338fbc005838c2ff60"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 14 09:07:39 2020 -0700"
      },
      "committer": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Thu May 14 09:16:32 2020 -0700"
      },
      "message": "AudioFlinger: mute mic on primary HAL only\n\nOnly the primary HAL has to support mic mute function.\nIgnore errors returned by other HALs in setMicMute() and\nonly report mic mute state from primary HAL in getMicMute().\n\nBug: 153103117\nTest: CTS AudioManagerTest.testMicrophoneMute\nTest: manual phone call and verify microphone mute.\n\nSigned-off-by: Dmitry Shmidt \u003cdimitrysh@google.com\u003e\nMerged-In: Ic121c49e7e7cd75eeee9342249271c7fca7c1c2a\nChange-Id: Icde20a0da2e10eb1b7ac17b4a901d27fe0dca9c6\n"
    },
    {
      "commit": "5298998e5749ce5883cda027b0791d071c4c8b0b",
      "tree": "2d5cd73553f7795e4dae085e1bddad5bc48686d3",
      "parents": [
        "ad531ce5d938385330ec260d4049914b354d1c37"
      ],
      "author": {
        "name": "Joey Poomarin",
        "email": "poomarin@google.com",
        "time": "Thu Mar 05 17:40:49 2020 +0800"
      },
      "committer": {
        "name": "Robert Lee",
        "email": "lerobert@google.com",
        "time": "Thu May 07 12:25:59 2020 +0800"
      },
      "message": "MediaMetrics: Implement audio power usage metrics\n\n- Trigger audio power usage logging when\n   1. endAudioIntervalGroup event for track/record\n   2. setMode to NORMAL for telephony\n- Aggregate audio usage by type and device\n- Send audiousage data every 24hrs by default, using property\n  persist.media.audio_power_metrics.interval_hr to config the interval\n- Add property persist.media.audio_power_metrics.disable to disable\n  audio power metrics\n\nBug: 121318157\nBug: 140909217\nTest: atest mediametrics_tests\nTest: adb shell dumpsys media.metrics --all\nChange-Id: I94ff00a5609a49c96a14827d3260d481c1310abe\nSigned-off-by: Robert Lee \u003clerobert@google.com\u003e\n"
    },
    {
      "commit": "00abf0d08363d063bd5ea6e35a71c54f16f3ed31",
      "tree": "1d9de701622390a7d3db05b77393ad238b8d35f6",
      "parents": [
        "369ad274564c02b79c15b13e8e69ccb73080d6fb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 22 19:28:22 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 23 09:04:24 2020 -0700"
      },
      "message": "AudioFlinger: fix getMicrophones implementation\n\ngetMicrophones() should return aggregated mic information\nfrom all HW modules, not just primary.\n\nAlso:\n- Fix assignment of mPrimaryHardwareDev that should be\nfirst from HW module name and then according to primary output\nif no module with name \"primary\" is loaded.\n\n- Make sure we do not dereference mPrimaryHardwareDev if null.\nNote that this should not happen with current rule that a primary module\nmust be present.\n\n- Implement consistent locking scheme where both mPrimaryHardwareDev and\nmAudioHwDevs are guarded by mHardwareLock\n\nBug: 154772890\nTest: AudioManagerTest#testGetMicrophones\nChange-Id: I7c9449bb705a6fbebdc0642166e58348d47b7ee8\n"
    },
    {
      "commit": "2325bf07edfa494aa5a186aacdcc80ff0233adbe",
      "tree": "97c72fb106d9f84c2cbbb654b657ab928843f494",
      "parents": [
        "967bfe95b6e95d4e590bb172826623e8a59664bd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 08 19:38:13 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 09 10:03:30 2020 -0700"
      },
      "message": "AudioFlinger: mute mic on primary HAL only\n\nOnly the primary HAL has to support mic mute function.\nIgnore errors returned by other HALs in setMicMute() and\nonly report mic mute state from primary HAL in getMicMute().\n\nBug: 153103117\nTest: CTS AudioManagerTest.testMicrophoneMute\nTest: manual phone call and verify microphone mute.\nChange-Id: Ic121c49e7e7cd75eeee9342249271c7fca7c1c2a\n"
    },
    {
      "commit": "e9eb03e9db8f66c711e2824e0f96d1fdc8f727b5",
      "tree": "77671b8d041a66b35884657fc4e05c5e5214787a",
      "parents": [
        "95ec1b8ea487abbf4ef50d53c227338f559e9599"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Apr 04 14:08:23 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 06 09:48:59 2020 -0700"
      },
      "message": "MediaUtils: Move MemoryLeakTrackUtil.h to the proper library.\n\nTest: dumpsys sanity check of mediaserver, audioflinger, drmmanager\nBug: 149850236\nChange-Id: I7a3694444de0f940beacb699bc6f07ebb6a7cc7d\n"
    },
    {
      "commit": "57a3769fb12dc8b2df457e0919850bd976716706",
      "tree": "f170ceb064b6be5d9443af5f2f95ac55c612c270",
      "parents": [
        "3006a83565b6863f247bf634faa929b84608026e"
      ],
      "author": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Mon Mar 23 17:27:25 2020 -0700"
      },
      "committer": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Tue Mar 24 16:20:36 2020 +0000"
      },
      "message": "Revert \"Allow call audio access for default dialer application\"\n\nThis reverts commit ac26cf749f457e12a3d8d7456bbcd58a3e028d69.\n\nReason for revert: Feature has been postponed\nBug: 151761909\n\nChange-Id: I90a977a23c5b97ddf95976cf2c4d517165f8e8c2\n"
    },
    {
      "commit": "2fe0acd07f9fb2d0eefbe0fa9d25fbaf0f672596",
      "tree": "10a5a6ceaee79473c53b3dacb08b58172bcd14f2",
      "parents": [
        "90334d0f03f4bee709969433898025fc16863f01"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 13 14:30:46 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 16 13:49:20 2020 -0700"
      },
      "message": "audioflinger: add effect creation probe mode\n\nAdd an argument to IAudioFlinger::createEffect() API to\nask AudioFlinger to just run the pre flight checks but not\ncreate the actual audio effect instance and allocate resources.\nThis is the basis of an API for apps to query if a given\neffect can be created without having to allocate the resources\nand risk an exception when calling the constructor.\n\nBug: 150699608\nTest: CTS and GTS Tests for audio effects\nChange-Id: Ibdda22fd945c88c33e3c7342a7a5ed3e02d399ac\n"
    },
    {
      "commit": "3de4f26be47eea27619b44ac70ae5f29163a1307",
      "tree": "743d92be6536d4699e120fffd6251d550b801141",
      "parents": [
        "fb9c73b74672434872a9f04061489e05fb226fe2"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 06 17:02:19 2020 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 10 15:36:34 2020 -0700"
      },
      "message": "Plumb the notification about audio HAL services update to APM\n\nAudioFlinger registers a callback with libaudiohal to receive\nnotifications when new HAL services get registered. It relays\nthe notification to AudioPolicyManager via AudioSystem /\nIAudioPolicyService interface.\n\nBecause AF / APM only interact via Binder interfaces and APM\u0027s\ninterface gets registered later than AF\u0027s, the notification\nfrom AF is made asynchronous.\n\nBug: 149854039\nTest: audio test on a regular phone configuration\n      audio test on a phone with MSD audio HAL module\nChange-Id: I158e941b8f75e2a4614b9d84ca798b0f1f47aa6a\nMerged-In: I158e941b8f75e2a4614b9d84ca798b0f1f47aa6a\n"
    },
    {
      "commit": "7dfc94a0eac6070791f663b9fdb7121b740271e3",
      "tree": "dd5ed47203fc640ffcb81313ed992148c78bc775",
      "parents": [
        "1cd41d5ce183e92a84ba79da0016cb3eef545822",
        "88b30d2c1520112670472ae879b20cc33a1b6eb0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 10 19:07:24 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 10 19:07:24 2020 +0000"
      },
      "message": "Merge changes from topic \"fix-b-149854039-dynamic-hal-modules\" into rvc-dev\n\n* changes:\n  Plumb the notification about audio HAL services update to APM\n  libaudiohal: Allow late registration of HIDL HAL services\n  Allow for late audio module discovery in APM\n"
    },
    {
      "commit": "88b30d2c1520112670472ae879b20cc33a1b6eb0",
      "tree": "a3afdce3d25d97385bd4a29d8223cffe0fc2203a",
      "parents": [
        "88de22ff76578985801dd7662acb07a5641298c1"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 09 19:43:13 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 10 16:17:26 2020 +0000"
      },
      "message": "Plumb the notification about audio HAL services update to APM\n\nAudioFlinger registers a callback with libaudiohal to receive\nnotifications when new HAL services get registered. It relays\nthe notification to AudioPolicyManager via AudioSystem /\nIAudioPolicyService interface.\n\nBecause AF / APM only interact via Binder interfaces and APM\u0027s\ninterface gets registered later than AF\u0027s, the notification\nfrom AF is made asynchronous.\n\nBug: 149854039\nTest: audio test on a regular phone configuration\n      audio test on a phone with MSD audio HAL module\nChange-Id: I158e941b8f75e2a4614b9d84ca798b0f1f47aa6a\n"
    },
    {
      "commit": "f6eb4c388b6499752c2ee47b663956dcbf0dd7e4",
      "tree": "032329fc713202ce01d5e17420f47bd6025f041c",
      "parents": [
        "c62ad13ad8da6b31168f0d9f3e5f2a770ed0bbee"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Feb 25 14:06:25 2020 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Feb 26 16:16:44 2020 -0800"
      },
      "message": "Add callback for codec format change.\n\nWhen creating native audio track, a IAudioTrackCallback will be created\nsystematically. All callbacks will be cached in Threads and protected by\na lock. Whenever there is a callback event from audio HAL, it will\nfinally trigger callback to native audio track. Currently, there is only\none callback event, which is codec format change.\n\nBug: 150301890\nTest: manual\nChange-Id: I32293627ed923b17dd25f11f0ee0a0c35cd7c01f\n"
    },
    {
      "commit": "ac26cf749f457e12a3d8d7456bbcd58a3e028d69",
      "tree": "0d3ba6751d1bee73ac1d6bf5c50771a2bfede68f",
      "parents": [
        "0f97ee5a52d697e31e9c6dc3c9e7aa941168b571"
      ],
      "author": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Mon Jan 06 14:43:38 2020 -0800"
      },
      "committer": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Tue Feb 18 22:54:20 2020 +0000"
      },
      "message": "Allow call audio access for default dialer application\n\nThe access to call audio (record and play) will be granted only to the app associated with Dialer role, who also includes a new system permission.\n\nTest: Compilation and manual tests\nBug: 135197853\n\nChange-Id: I65ca823c235d4d3420630837427103783ad1d1b0\n"
    },
    {
      "commit": "b68f5ebb53434e800c43715127e2d1032e3a9b54",
      "tree": "7e1c75e02cb63d4c9d1f0b7dc3322001e1463b33",
      "parents": [
        "3b4c1f0320efc7a54c4ab811727c432cda73dd37"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 03 16:49:17 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 28 13:03:22 2020 -0800"
      },
      "message": "MediaMetrics: Add AudioFlinger logging\n\nTest: atest mediametrics_tests\nTest: mediametrics dumpsys\nBug: 138583596\nChange-Id: I2086c5a780744d409052fde4c5ebc1dc92d95ea8\n"
    },
    {
      "commit": "8b0bfd91473eea4c33946347d98fb356eac15867",
      "tree": "62482792139dcb6c21a70f8bf2656af6c944137f",
      "parents": [
        "255f610f5ab71b5e36d93744dfe058daf6c96041"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Dec 23 13:11:11 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 14 20:08:09 2020 -0800"
      },
      "message": "AudioFlinger: Propagate uid info for AudioSession references\n\nEnables better tracking of permission.\nImproves dumpsys of global AudioSession references.\n\nTest: Clarity effects\nTest: adb shell dumpsys media.audio_flinger\nBug: 129355845\nChange-Id: Ia0226c7047bb38b74e8b0cb67f12ec581b496631\n"
    },
    {
      "commit": "9b2064c3afe14f893afff019bdcd4c4d40ce13ed",
      "tree": "0a49d5049cfd60fb6de3387460f5bb41a58e2ed1",
      "parents": [
        "249dba6eb7b1f71a424290e1c58c3bedb76a0595"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 17:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 13 23:05:34 2020 +0000"
      },
      "message": "AudioFlinger: implement device specific audio effects\n\nAdd management of audio effects applied to a specific input\nor output audio device.\n\nA new class DeviceEffectProxy derived from Effectbase is added\nto represent an effect attached to a particular audio device type and\naddress. This proxy manages one or more actual EffectModule instances\nautomatically added to a playback or capture thread or directly to the\naudio HAL when the targeted audio device is used by an audio patch.\n\nA new DeviceEffectManager class is added to manage creation and release\nof DeviceEffectProxy instances and monitor creation and release of audio\npatches and create or release actual effect instances accordingly.\n\nBug: 136294538\nTest: make\n\nChange-Id: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\nMerged-In: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\n"
    },
    {
      "commit": "e0b9a360c32f8ab2238b4b3779659e565b221946",
      "tree": "aafbd84d809aa976554c4de7597db1234560ee8e",
      "parents": [
        "5d88539848f2416e327da743f0c38ed597f8f089"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 16 19:34:05 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:12:23 2020 -0800"
      },
      "message": "audioflinger: refactor EffectModule class\n\nIntroduce a class EffecBase as a parent class of\nEffectModule with default implementation for handles management,\nbasic properties storage and state management.\n\nBug: 146177259\nTest: CTS: AudioEffectTest, EqualizerTest, VisualizerTest,\nAudioPreProcessingTest\nTest: manual test: Play Music EQ settings, Duo EAC and NS\nChange-Id: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\nMerged-In: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\n"
    },
    {
      "commit": "5d88539848f2416e327da743f0c38ed597f8f089",
      "tree": "416773cefe0ae261b15f850bff1c35bedead9680",
      "parents": [
        "d700529501d45ab3d0a0b506b2b76cb0212cf5ce"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 10:56:31 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:12:13 2020 -0800"
      },
      "message": "Revert \"Revert \"Audio effects: define interface between EffectModule and audio framework\"\"\n\nThis reverts commit 3fd6a2ccfd9305619289e2cd514fdfa803210f9e.\n\nAlso fixes native coverage build.\n\nBug: 146177259\nTest: build/soong/soong_ui.bash --make-mode TARGET_PRODUCT\u003dcf_x86_phone TARGET_BUILD_VARIANT\u003duserdebug NATIVE_COVERAGE\u003dtrue\nChange-Id: Ib78a22619123cd1848b047931b02d4061def3a23\nMerged-In: Ib78a22619123cd1848b047931b02d4061def3a23\n"
    },
    {
      "commit": "fefebb5c9692a57aade8955996d7dee7748eb1ec",
      "tree": "b06efaa90afcd4a816bd2e438ba08a615695323e",
      "parents": [
        "a20c4e9c9239d751d688d9a9fe5d92a8c613dd13"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 13 12:45:28 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:11:43 2020 -0800"
      },
      "message": "AudioEffect: add device descriptor to AudioEffect constructor\n\nAdd the possibility to specify a target audio device when\ncreating an audio effect by passing its type and address to\nAudioEffect constructor.\nWhen doing so, the session ID must be AUDIO_SESSION_DEVICE.\n\nBug: 136294538\nTest: make\nChange-Id: I2a2eba340d3c2537285c091e9a53f305ff161a2b\nMerged-In: I2a2eba340d3c2537285c091e9a53f305ff161a2b\n"
    },
    {
      "commit": "a20c4e9c9239d751d688d9a9fe5d92a8c613dd13",
      "tree": "9d5ccc5886dbf0cede2c4b63265f51f8f77eb283",
      "parents": [
        "e5f01a7d5edd517c3a52ca11e6908aead47ba916"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 15:55:51 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:11:27 2020 -0800"
      },
      "message": "AudioFlinger: add audio session for device effects\n\nAdd specific audio session ID for effects applied to a\nparticular audio device.\nDevice specific effects will be attached to a particular audio sink or\nsource device identified by its unique audio port ID and will all use\nthis same session ID.\nOnly one session of this type exists on a given playback or record\nthread.\nAll effects in this session apply to the same device ID and are created/released\nwhen the routing (audio patch) of this thread output or input stream is updated.\n\nBug: 136294538\nTest: make\n\nChange-Id: I4e3a55ed1244b918429dd9e217b6efecc1ec6449\nMerged-In: I4e3a55ed1244b918429dd9e217b6efecc1ec6449\n"
    },
    {
      "commit": "e30f48884f0a267760af088fbf058381dd3fdbcc",
      "tree": "fa1d5c3234d1f35f51731c965620f43701351bf6",
      "parents": [
        "d1ce689ac43bfd6c75c2f15a349e475396d04dcd",
        "a7a89e2caf277245c7df8ffceddffc63f46b9239"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 10 07:44:32 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 10 07:44:32 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: return actual MMAP stream configuration after opening\""
    },
    {
      "commit": "d1ce689ac43bfd6c75c2f15a349e475396d04dcd",
      "tree": "42c6e27d027844c455405db5124a8086775cfc5e",
      "parents": [
        "d3fb71855d226e12b7d8ed261047619c75895034",
        "b82e6b724e45b1f88ed746c316b445b3bb8036b3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 09 18:23:19 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 09 18:23:19 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: implement device specific audio effects\""
    },
    {
      "commit": "a7a89e2caf277245c7df8ffceddffc63f46b9239",
      "tree": "021ea1d68cd2cd52d4582896c7fed21c809fab62",
      "parents": [
        "9ce5404e8ee6cf247a9004500cb91bf3b8114b14"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 08 18:39:20 2020 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 08 18:39:20 2020 -0800"
      },
      "message": "AudioFlinger: return actual MMAP stream configuration after opening\n\nFix MmapStreamInterface::openMmapStream() implementation to return\nactual sampling rate, channel mask and format used at the audio HAL\nonce the stream is opened.\n\nBug: 76213894\nTest: make\nChange-Id: I0e497b898d86246bcb1bdde42c3114d43e1f14d0\n"
    },
    {
      "commit": "b82e6b724e45b1f88ed746c316b445b3bb8036b3",
      "tree": "4fd55853fe2b97b98bf27bff61142d9b2b92f28f",
      "parents": [
        "9ce5404e8ee6cf247a9004500cb91bf3b8114b14"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 17:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 07 17:05:07 2020 -0800"
      },
      "message": "AudioFlinger: implement device specific audio effects\n\nAdd management of audio effects applied to a specific input\nor output audio device.\n\nA new class DeviceEffectProxy derived from Effectbase is added\nto represent an effect attached to a particular audio device type and\naddress. This proxy manages one or more actual EffectModule instances\nautomatically added to a playback or capture thread or directly to the\naudio HAL when the targeted audio device is used by an audio patch.\n\nA new DeviceEffectManager class is added to manage creation and release\nof DeviceEffectProxy instances and monitor creation and release of audio\npatches and create or release actual effect instances accordingly.\n\nBug: 136294538\nTest: make\n\nChange-Id: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\n"
    },
    {
      "commit": "5bdc535976d99ac92e6bdf62c8c68c3f163cff3c",
      "tree": "ba325c6c1e5f3fa6d6488672ebcdc29df1640061",
      "parents": [
        "fb0aaa0fb6d102ca0694a52327b9a95ef3aa7978"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Dec 23 14:36:31 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jan 06 12:25:42 2020 -0800"
      },
      "message": "AudioFlinger: Show uid and package name for notification clients\n\nAssists debugging AudioFlinger dumpsys.\n\nTest: adb shell dumpsys media.audio_flinger\nBug: 129355845\nChange-Id: I49988013b5cd68a6756a0aa8dd173934bb2d9b15\n"
    },
    {
      "commit": "9899ff7feeb57349e032ca714ccb7d8f5cce8ca1",
      "tree": "afffa19c3eafd0cfa393f03e8a4260462d694c5f",
      "parents": [
        "b7b2f5d8658b5d08831f91c25400c9717b05dac1"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Tue Dec 24 22:02:08 2019 +0100"
      },
      "committer": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Thu Dec 26 20:27:23 2019 +0100"
      },
      "message": "AudioFlinger: Fix getInputBufferSize() corruption\n\nThe uninitialized audio_config_t has a .frame_count which is typically\nnot used by HALs for this calculation. However, in the case where the\nHAL does use this, it can be any 32-bit value.\n\nAt best the HAL treats this as invalid or ignores it, but at worst the HAL\ncasts to uint32_t and causes the caller to request a ridiculous amount of\nmemory, leading to the process being killed with SIGABRT.\n\nFix: 146119742\nBug: 144245613\nBug: 144245318\nBug: 144000030\nTest: atest AudioRecord_BufferSizeTest\nChange-Id: I41714cb2058a6fe7a6a9f55b1fd7c8d862d69351\n"
    },
    {
      "commit": "41709559999108cce9b1d725779fc513cc19138d",
      "tree": "edb0537f270f40e04de64f608824bf7d9d782bcd",
      "parents": [
        "c43423a6c6b6b0506d7b38f8062012a91fbef050"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 16 19:34:05 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 18 09:34:08 2019 -0800"
      },
      "message": "audioflinger: refactor EffectModule class\n\nIntroduce a class EffecBase as a parent class of\nEffectModule with default implementation for handles management,\nbasic properties storage and state management.\n\nBug: 146177259\nTest: CTS: AudioEffectTest, EqualizerTest, VisualizerTest,\nAudioPreProcessingTest\nTest: manual test: Play Music EQ settings, Duo EAC and NS\nChange-Id: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\n"
    },
    {
      "commit": "6b446ce95d99373c9b1210336fa66d8c4f2d7409",
      "tree": "f67c7be3149340c3066970d3e33125ae7c26d00b",
      "parents": [
        "b7b870db0c6cc0c6375b154400a813b84f5056b4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 10:56:31 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 15:43:24 2019 -0800"
      },
      "message": "Revert \"Revert \"Audio effects: define interface between EffectModule and audio framework\"\"\n\nThis reverts commit 3fd6a2ccfd9305619289e2cd514fdfa803210f9e.\n\nAlso fixes native coverage build.\n\nBug: 146177259\nTest: build/soong/soong_ui.bash --make-mode TARGET_PRODUCT\u003dcf_x86_phone TARGET_BUILD_VARIANT\u003duserdebug NATIVE_COVERAGE\u003dtrue\nChange-Id: Ib78a22619123cd1848b047931b02d4061def3a23\n"
    },
    {
      "commit": "b7b870db0c6cc0c6375b154400a813b84f5056b4",
      "tree": "6cedfb2effba4653389168f3e95950d231b51665",
      "parents": [
        "fa12f52ba2c0f528277bfe7d7543f5f53361850c",
        "3fd6a2ccfd9305619289e2cd514fdfa803210f9e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 00:35:13 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 13 00:35:13 2019 +0000"
      },
      "message": "Merge \"Revert \"Audio effects: define interface between EffectModule and audio framework\"\""
    },
    {
      "commit": "3fd6a2ccfd9305619289e2cd514fdfa803210f9e",
      "tree": "d0290d31cf14167bad8ce9e769eb8e873dfc1cd3",
      "parents": [
        "c0abc6239e1134ed224a10aa66a364baff71cd07"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 00:33:32 2019 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 00:33:32 2019 +0000"
      },
      "message": "Revert \"Audio effects: define interface between EffectModule and audio framework\"\n\nThis reverts commit c0abc6239e1134ed224a10aa66a364baff71cd07.\n\nReason for revert: broken build on target cf_x86_phone-userdebug_coverage\n\nChange-Id: Ic6808bfd31bedfa85b7d7a120e4c6f6273678f73\n"
    },
    {
      "commit": "fa12f52ba2c0f528277bfe7d7543f5f53361850c",
      "tree": "687a6057f8d062668e7f8e58b953f448ac20538b",
      "parents": [
        "55e034b016db6cacf08cf225d5ef49744c5c3d9e",
        "c0abc6239e1134ed224a10aa66a364baff71cd07"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 12 21:55:59 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 12 21:55:59 2019 +0000"
      },
      "message": "Merge \"Audio effects: define interface between EffectModule and audio framework\""
    },
    {
      "commit": "42afea265a65a4d0b22f5d2f2af72cbbb2631c80",
      "tree": "2d3e13a0371e3f7fd35beebbe4c8c4e0fc75e329",
      "parents": [
        "880971c8f204ae755f1d4d3be7287aeb1041c42d",
        "bad151070e7cd45e3e5bc554f928beca88e98172"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 11 21:36:51 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 11 21:36:51 2019 +0000"
      },
      "message": "Merge \"Add AUDIO_INPUT_FLAG_DIRECT to Audio HAL constants\""
    },
    {
      "commit": "c0abc6239e1134ed224a10aa66a364baff71cd07",
      "tree": "4471ea4e788da6d7909121a289fe692438d26f28",
      "parents": [
        "880971c8f204ae755f1d4d3be7287aeb1041c42d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 15 17:53:33 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 11 21:33:05 2019 +0000"
      },
      "message": "Audio effects: define interface between EffectModule and audio framework\n\nThis is in preparation of the addition of audio effects attached to a\nspecific audio device that will not be attached to a particular\nThreadBase or Effectchain.\n\nCreate an clean callback interface used by the EffectModule to interact\nwith the rest of the audio framework. This callback must be implemented\nby the EffectModule parent (e.g an EfffectChain).\n\nAls refactor EffectHandle enabled(), disable() and disconnect methods()\nto avoid dealing with the ThreadBase directly.\n\nBug: 136294538\nTest: make\nChange-Id: I9160f88f7fbb0447b5e679260bf0401d3af591d2\n"
    },
    {
      "commit": "bad151070e7cd45e3e5bc554f928beca88e98172",
      "tree": "8fa748bdac1b3648e0c96081c992765cd620903a",
      "parents": [
        "b7a56c52e001d2e361140b07ee1baad4c56e5b2c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Dec 10 16:44:19 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Dec 10 16:44:19 2019 -0800"
      },
      "message": "Add AUDIO_INPUT_FLAG_DIRECT to Audio HAL constants\n\nThis flag used to be framework only. To simplify constants\nmanagement it\u0027s better to have it defined at all layers.\nCurrently it is only used for MSD module but potentially\ncan be used for HDMI inputs.\n\nBug: 141273649\nTest: use AOSP MSD on Pixel\n      atest VtsHalAudioV6_0TargetTest\n\nChange-Id: I19f6fdb2772878c93e41b635dc6adae83a9fecb0\n"
    },
    {
      "commit": "94876034876afd6f642dd1a0ad7c60aee05504d9",
      "tree": "f695fedbfa6e930d034dfdb0f61e485b5292a67c",
      "parents": [
        "b7a56c52e001d2e361140b07ee1baad4c56e5b2c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 13 12:45:28 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 09 09:46:17 2019 -0800"
      },
      "message": "AudioEffect: add device descriptor to AudioEffect constructor\n\nAdd the possibility to specify a target audio device when\ncreating an audio effect by passing its type and address to\nAudioEffect constructor.\nWhen doing so, the session ID must be AUDIO_SESSION_DEVICE.\n\nBug: 136294538\nTest: make\nChange-Id: I2a2eba340d3c2537285c091e9a53f305ff161a2b\n"
    },
    {
      "commit": "3f75a5bc38894cb6635837c49247c3fa50ed6c47",
      "tree": "a6a256606f82ae742012ec1532ef22009ab0ab25",
      "parents": [
        "602e1ae3a3d4e2ffe158dacfd268547d94a06b38"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 15:55:51 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 17:22:42 2019 -0800"
      },
      "message": "AudioFlinger: add audio session for device effects\n\nAdd specific audio session ID for effects applied to a\nparticular audio device.\nDevice specific effects will be attached to a particular audio sink or\nsource device identified by its unique audio port ID and will all use\nthis same session ID.\nOnly one session of this type exists on a given playback or record\nthread.\nAll effects in this session apply to the same device ID and are created/released\nwhen the routing (audio patch) of this thread output or input stream is updated.\n\nBug: 136294538\nTest: make\n\nChange-Id: I4e3a55ed1244b918429dd9e217b6efecc1ec6449\n"
    },
    {
      "commit": "b680e955f474a2f81ed35383da67209bcbdd7d10",
      "tree": "8fd48d3bca98f5cc5d96415255711817fc209553",
      "parents": [
        "9e1e25dd418773ad5e574441962dcc771d3ec2a3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 15:40:33 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Dec 05 13:00:07 2019 -0800"
      },
      "message": "media utils: dump audio HAL service before restarting audioserver\n\nAdd request to create tombstones of audio HAL servers before restarting\naudioserver process when the watchdog triggers.\n\nAdd audio device factory HAL interface API to retrieve HAL process pids when\npossible (on debug builds).\n\nAdd AudioFlinger service API to set audio HAL process pids from\nJAVA AudioService.\n\nBug: 141528385\nTest: Force watchdog and verify tombstone creation\nChange-Id: I68c1e8fb4db23e5952ad0c93d7d0b9d121b8ec18\nMerged-In: I68c1e8fb4db23e5952ad0c93d7d0b9d121b8ec18\n"
    },
    {
      "commit": "10d86fd087218d43254ec781612a9f86c0022e9d",
      "tree": "35246193cf7aaf924548f3cd15d763bd297d44aa",
      "parents": [
        "c010683e081f48eb72e21cbcf0458efc17184e6b"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 31 17:20:42 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 03 17:42:23 2019 -0800"
      },
      "message": "Refactor audio device type in audio flinger.\n\nAs audio device type must not be used as a bit mask, there is a\nrequirement to refactor the code in audio flinger. This CL includes:\n1. Use DeviceTypeSet for recording output devices in Threads. The input\nand output device types in Threads will only be updated when creating\nan audio patch.\n2. Use helper functions in audio flinger for checking whether an audio\ndevice type is a certain category.\n3. Use DeviceDescriptorBaseVector as vector of DeviceDescriptorBase.\nDeviceDescriptorBaseVector will be used in RecordThread to record output\ndevices, which will be used in audio effect.\n4. Do not use set parameters when communicating output devices to\nRecordThread. Instead, adding a new event in Thread to update output\ndevices directly.\n\nBug: 135621476\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest RoutingTest\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest AAudioTests\nTest: audio smoke test, run OboeTester\nChange-Id: I87f3e59fd01b0b100232d61a9abbc471c61110c4\nMerged-In: I87f3e59fd01b0b100232d61a9abbc471c61110c4\n"
    },
    {
      "commit": "c010683e081f48eb72e21cbcf0458efc17184e6b",
      "tree": "74e8898a4399b0b2fb3693379fcf80b5be1c9199",
      "parents": [
        "8d7522888db87e9533b286431f59c7e0b804a514"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 24 14:58:31 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 03 17:42:00 2019 -0800"
      },
      "message": "Refactor opening output interface between AF and AP.\n\nRefactor interface between audio flinger and audio policy. Use device\ndescriptor instead of audio device type and address. DeviceDescriptor\ncan contain more information that may be useful when opening an output\nstream.\nIn audio policy, if multiple audio devices are passed in when opening\nan output stream, one device is extracted using the same strategy as\nwhen selecting a device for volume application. When starting source,\naudio policy manager will call audio flinger to create audio patch. In\nthat case, multiple devices will still be patched to the output stream.\n\nTest: atest AudioTrackTest AudioPlaybackCaptureTest\nTest: atest audiopolicy_tests, audio smoke test\nChange-Id: I46dc2da621614f8716c6c73cf807fe7d2d672cda\nMerged-In: I46dc2da621614f8716c6c73cf807fe7d2d672cda\n"
    },
    {
      "commit": "148cbe0814334b0c953f04a49908ac3868564bd0",
      "tree": "c72c99b8b37f529badec286e662f94820bc752af",
      "parents": [
        "cc82581159b8570042e8ab0c4d921c79433d9fd4",
        "af57fae60dfe3eccadd06b29dec4e60b799843b0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 03 23:15:01 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 03 23:15:01 2019 +0000"
      },
      "message": "Merge \"Merge Android10 QPR1 into AOSP master\""
    },
    {
      "commit": "8cb192feee635eb4859eabf3b754427cd6785718",
      "tree": "2e034bbeae67c28c0cddf00e20b42997e6185245",
      "parents": [
        "f3d474d651818ecf5d45712d506c39b7e950ef60"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Sep 23 10:34:20 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Dec 02 14:29:38 2019 -0800"
      },
      "message": "Enable AUDIO_ARRAYS_STATIC_CHECK.\n\nEnable static check for audio arrays so that it can be earlier to catch\nif there is any error within the audio arrays.\n\nBug: 135621476\nTest: make\nChange-Id: I598311e0853ca77dff83fb97974e534adb238567\nMerged-In: I598311e0853ca77dff83fb97974e534adb238567\n"
    },
    {
      "commit": "4f3ac4d0555229a41273107ff0987018ef6b69e1",
      "tree": "b17a402fe68ef0b1c80d234d14ff6d6b7f45715e",
      "parents": [
        "bde7aa5551cc67c2b47f1f67cb66c56b824c1a65",
        "d6f189b4c790f88d72c2227cebbbb8a59cbe8a4e"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 22 10:56:08 2019 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Sun Nov 24 05:16:33 2019 +0000"
      },
      "message": "DO NOT MERGE - Merge QQ1A.191205.011 into stage-aosp-master\n\nBug: 144955631\nMerged-In: I242aebe71ffe7d348eca213252f1691fd444703e\nChange-Id: I40ae7732b4435dc9aa9a3edb57275505e4112a4c\n"
    },
    {
      "commit": "abab522d57a88875189ab8a00876528b30c698e1",
      "tree": "145449c5e6b8bf62688bda83fc3fa852ab6ba942",
      "parents": [
        "493a55d11183402fd06315b32e640b7ce75abe63"
      ],
      "author": {
        "name": "Judy Hsiao",
        "email": "judyhsiao@google.com",
        "time": "Sat Nov 09 18:14:58 2019 +0800"
      },
      "committer": {
        "name": "Judy Hsiao",
        "email": "judyhsiao@google.com",
        "time": "Wed Nov 20 13:58:46 2019 +0800"
      },
      "message": "AudioFlinger: Fix getInputBufferSize() calculation\n\n1. Query 44100 and 48000 SR if proposed SR is not supported\n2. Query AUDIO_CHANNEL_IN_MONO and AUDIO_CHANNEL_IN_STEREO if\nproposed channel_mask is not supported\n3. Return with bytes rather than frames\n4. Fix destinationFramesPossible usage\n\nTest: run cts\nandroid.media.cts.AudioRecord_BufferSizeTest#testGetMinBufferSize\nBug: 144245613\nBug: 144245318\nBug: 144000030\n\nChange-Id: I0fa90eb1bef63bd441724cdb0fa7f9172f503364\n"
    },
    {
      "commit": "f1a584a44cd2fb35a1817438db4342ee8bd6825e",
      "tree": "1216162819d470bcbedf3958b25e91b58739e6a3",
      "parents": [
        "a24e36ccd5da2ec0c3f435c20862ce83b3a5151d",
        "42896a0774caae74ea8c982417ecbefb21913bc8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 11 23:24:02 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 11 23:24:02 2019 +0000"
      },
      "message": "Merge \"media utils: dump audio HAL service before restarting audioserver\""
    },
    {
      "commit": "42896a0774caae74ea8c982417ecbefb21913bc8",
      "tree": "6e352631b91856d118f052b8c180085837e4f07a",
      "parents": [
        "484d6119d3ca9140d415dc1841d4c0c500d76a20"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 15:40:33 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 08 15:26:09 2019 -0800"
      },
      "message": "media utils: dump audio HAL service before restarting audioserver\n\nAdd request to create tombstones of audio HAL servers before restarting\naudioserver process when the watchdog triggers.\n\nAdd audio device factory HAL interface API to retrieve HAL process pids when\npossible (on debug builds).\n\nAdd AudioFlinger service API to set audio HAL process pids from\nJAVA AudioService.\n\nBug: 141528385\nTest: Force watchdog and verify tombstone creation\nChange-Id: I68c1e8fb4db23e5952ad0c93d7d0b9d121b8ec18\n"
    },
    {
      "commit": "c52b1ffec2ad11ad0ea1fb7e702da1086c9df437",
      "tree": "b55dcb697023b715848166282b3b588c0aa72530",
      "parents": [
        "c76250c8279552db0be9068e49f65696f931c011"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 31 17:20:42 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Nov 08 11:37:27 2019 -0800"
      },
      "message": "Refactor audio device type in audio flinger.\n\nAs audio device type must not be used as a bit mask, there is a\nrequirement to refactor the code in audio flinger. This CL includes:\n1. Use DeviceTypeSet for recording output devices in Threads. The input\nand output device types in Threads will only be updated when creating\nan audio patch.\n2. Use helper functions in audio flinger for checking whether an audio\ndevice type is a certain category.\n3. Use DeviceDescriptorBaseVector as vector of DeviceDescriptorBase.\nDeviceDescriptorBaseVector will be used in RecordThread to record output\ndevices, which will be used in audio effect.\n4. Do not use set parameters when communicating output devices to\nRecordThread. Instead, adding a new event in Thread to update output\ndevices directly.\n\nBug: 135621476\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest RoutingTest\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest AAudioTests\nTest: audio smoke test, run OboeTester\nChange-Id: I87f3e59fd01b0b100232d61a9abbc471c61110c4\n"
    },
    {
      "commit": "c932c7fbae25c19c8c8aeecae3bdec6cdbe7be3a",
      "tree": "e0461ffe262d918e38f87494fc61409bbb6f272b",
      "parents": [
        "596f057a48935e5483a705d231d7cf02e34116bf",
        "e8bf240306052f3f2305d5663eb91dc639d474d9"
      ],
      "author": {
        "name": "Tao Wu",
        "email": "lepton@google.com",
        "time": "Tue Nov 05 16:15:12 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 05 16:15:12 2019 -0800"
      },
      "message": "Merge \"AudioFlinger: Initialize frames to zero.\" am: af5e66cb01 am: ddb2d1dc3d\nam: e8bf240306\n\nChange-Id: I792df23cd85a0e47ae01d4117378fc491f4e14ab\n"
    },
    {
      "commit": "e8bf240306052f3f2305d5663eb91dc639d474d9",
      "tree": "dcd89815c585b72651c05c9038d28c3759a3058f",
      "parents": [
        "1e3c17265af1c60430114d216b64f2ca7238d6a9",
        "ddb2d1dc3dd0e05be658c5ebe40d9490323f76c4"
      ],
      "author": {
        "name": "Tao Wu",
        "email": "lepton@google.com",
        "time": "Tue Nov 05 16:08:23 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 05 16:08:23 2019 -0800"
      },
      "message": "Merge \"AudioFlinger: Initialize frames to zero.\" am: af5e66cb01\nam: ddb2d1dc3d\n\nChange-Id: Ie82f676631d502e5d15800228cf5aeab7ad4847c\n"
    },
    {
      "commit": "1eb82df62c86dace5f0f56f00e631c7696177a63",
      "tree": "4a3c77f27d887dbcab0defc47472fe33855ee00c",
      "parents": [
        "5c031de66210ecbec85792c6da1c65313b9e22fa"
      ],
      "author": {
        "name": "Tao Wu",
        "email": "lepton@google.com",
        "time": "Tue Nov 05 10:20:18 2019 -0800"
      },
      "committer": {
        "name": "Tao Wu",
        "email": "lepton@google.com",
        "time": "Tue Nov 05 10:24:36 2019 -0800"
      },
      "message": "AudioFlinger: Initialize frames to zero.\n\nOtherwise we could return the uninitialized value when result !\u003d OK.\n\nBug: 143955791\nTest: manual - Run the test in the bug and it doesn\u0027t crash.\nChange-Id: I23b2b0a20202152648a3e40650965bba45127ff3\n"
    },
    {
      "commit": "4381040f77c2907c9a0ba27ece2e00241daadf0e",
      "tree": "b559f2cf74926949bd9f846c627ede38b734158f",
      "parents": [
        "c6fe9c424669d640d8bbe0fc7e130a34bab0b4bd"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 24 14:58:31 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Oct 28 10:38:13 2019 -0700"
      },
      "message": "Refactor opening output interface between AF and AP.\n\nRefactor interface between audio flinger and audio policy. Use device\ndescriptor instead of audio device type and address. DeviceDescriptor\ncan contain more information that may be useful when opening an output\nstream.\nIn audio policy, if multiple audio devices are passed in when opening\nan output stream, one device is extracted using the same strategy as\nwhen selecting a device for volume application. When starting source,\naudio policy manager will call audio flinger to create audio patch. In\nthat case, multiple devices will still be patched to the output stream.\n\nTest: atest AudioTrackTest AudioPlaybackCaptureTest\nTest: atest audiopolicy_tests, audio smoke test\nChange-Id: I46dc2da621614f8716c6c73cf807fe7d2d672cda\n"
    },
    {
      "commit": "b0de569edd2d27b8dae9e3048f9c131b6ebc2d45",
      "tree": "90e0f48fde7d3f07367b62be0c2f98527fc327d6",
      "parents": [
        "bcb57f62b0f75630a5c1199c78f5af311934b6ce"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 20 15:42:04 2019 -0700"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Fri Oct 11 02:34:35 2019 +0000"
      },
      "message": "AudioFlinger: enforce OP_RECORD_AUDIO during recording\n\n  Fix issue where RecordTrack silencing didn\u0027t silence the\nfull buffer: the memset to 0 was using the RecordThread frame\nsize, not the RecordTrack frame size.\n  OP_RECORD_AUDIO was only enforced at the start of a recording\nwhich would fail if not granted. This patch silences the recording\n(i.e. silence is recorded instead) when it is lost, and undoes that\nwhen granted again. This requires:\n- propagating the package name of the client to the RecordTrack class\n- registering an appOp callback in RecordTrack (through a new\n  OpRecordAudioMonitor class) to (un)silence the recording\n- update the isSilenced() method to take into account the appOp.\n\nBug: 138968594\nBug: 138636979\nTest: run app that records audio, then \"adb shell appops __pack_name__ 27 2\"\n     and verify recording is silent after that.\n\nChange-Id: Ib33f5b592185a67204997213bab1ac2594d90d37\n(cherry picked from commit ddf87effa4d80f413a80fde861f73877ccd80599)\nMerged-In: Ib33f5b592185a67204997213bab1ac2594d90d37\n(cherry picked from commit 7307293e8befafa12b244b74cd3c8cb84b27997c)\n"
    },
    {
      "commit": "8f680d3582b545bb99410c0f00591f094c1b02d7",
      "tree": "d916bdab05efc25a93aa41b27a47e1d561f053a5",
      "parents": [
        "92bb8155044980052112b2d02b2ff7ed68615203",
        "6252c394beff4af6a2007a285a72d3080dcf0646"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 09:28:23 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:28:23 2019 -0700"
      },
      "message": "Merge \"Fix secondary output under\u0026over run\" am: bb3c777e40\nam: 6252c394be\n\nChange-Id: I2c4aa423fe54a0f072f1a995c53b1538104ba4b6\n"
    },
    {
      "commit": "20a44f84f1a80ba1464ca35b62417e33ed88ac29",
      "tree": "406a9c22867b2928338aa3e7eeae7d1f313b04eb",
      "parents": [
        "229c543d081cc29f1f07df8d0b1657cdb71e0c15"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Sep 18 11:24:52 2019 +0100"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 13:34:23 2019 +0100"
      },
      "message": "Fix secondary output under\u0026over run\n\nThere were three issues with the implementation\nof Audio Playback Capture patches on secondary outputs.\n\n1) Patch tracks were always forced to be ready, even if there were not\nenough audio to be played. That led to playing partial buffers if the\nsource output had smaller (time wise) buffer than the secondary output.\n\nThis is fixed by avoiding setting CBLK_FORCEREADY on every buffer push\nfrom the primary output thread.\n\n2) After 1 is fixed, the patch tracks now behave like regular (non fast)\ntracks. This means that the track only starts when it is full.\nThat leads to overrun on startup as the primary and secondary outputs\nusually do not have the same write period.\n\nWhat makes the issue worst is that Remote submix has a fixed buffer in bytes,\nso its write period changes depending on sample rate contrary to the\nprimary HAL which pulls with fixed time periods (usually 20/40ms).\n\nThis patch solution is to introduce a ready threshold. The track will be\nconsidered ready to be active if there are more than frames in its buffer.\n\nTo avoid changing previous latency behaviour except for APC,\nlegacy tracks have this threshold set to their buffer size and\nnon APC patch tracks have it set to 1, similar to setting\nCBLK_FORCEREADY.\n\n3) The patch track buffer size calculation of the patch track did not take\ninto account primary and secondary output could be of different sampling\nrate.\nThis mean that the patch track buffer was usually too small as the\nsecondary output usually had smaller sampling rate (Live caption\nrequests 16kHz) than the track (music usually plays in 48kHz).\nThis made the two problems even worst.\n\nThis was easily fixed by scaling the buffer size with each side sample rate.\n\nBug: 136691300\nTest: play audio\n      adb shell audiorecorder  --target /data/file1.raw\n      # Check that the recorded file has no underrun\nChange-Id: Ib2846b2827afd1b953d4a25acb18c7cadf57cd3e\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "40715983f3d12e4e287260244559667001db967a",
      "tree": "4000f689070b321cdf478d01c5f214d237d522c2",
      "parents": [
        "40143b19a0dbb2cf3d24f100bf3844f8a4a60f8d",
        "01c7d9ee1b170a516e20b9c7aad3f9d1db982c55"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 10 12:27:10 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 10 12:27:10 2019 +0000"
      },
      "message": "Merge \"Fix secondary output under\u0026over run\""
    },
    {
      "commit": "01c7d9ee1b170a516e20b9c7aad3f9d1db982c55",
      "tree": "101e342ee5d35403385d64c6a7f8e4108ef1dfc3",
      "parents": [
        "f73f877182014e662c4c3ab650724975c884839e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Sep 18 11:24:52 2019 +0100"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 10:52:05 2019 +0100"
      },
      "message": "Fix secondary output under\u0026over run\n\nThere were three issues with the implementation\nof Audio Playback Capture patches on secondary outputs.\n\n1) Patch tracks were always forced to be ready, even if there were not\nenough audio to be played. That led to playing partial buffers if the\nsource output had smaller (time wise) buffer than the secondary output.\n\nThis is fixed by avoiding setting CBLK_FORCEREADY on every buffer push\nfrom the primary output thread.\n\n2) After 1 is fixed, the patch tracks now behave like regular (non fast)\ntracks. This means that the track only starts when it is full.\nThat leads to overrun on startup as the primary and secondary outputs\nusually do not have the same write period.\n\nWhat makes the issue worst is that Remote submix has a fixed buffer in bytes,\nso its write period changes depending on sample rate contrary to the\nprimary HAL which pulls with fixed time periods (usually 20/40ms).\n\nThis patch solution is to introduce a ready threshold. The track will be\nconsidered ready to be active if there are more than frames in its buffer.\n\nTo avoid changing previous latency behaviour except for APC,\nlegacy tracks have this threshold set to their buffer size and\nnon APC patch tracks have it set to 1, similar to setting\nCBLK_FORCEREADY.\n\n3) The patch track buffer size calculation of the patch track did not take\ninto account primary and secondary output could be of different sampling\nrate.\nThis mean that the patch track buffer was usually too small as the\nsecondary output usually had smaller sampling rate (Live caption\nrequests 16kHz) than the track (music usually plays in 48kHz).\nThis made the two problems even worst.\n\nThis was easily fixed by scaling the buffer size with each side sample rate.\n\nBug: 136691300\nTest: play audio\n      adb shell audiorecorder  --target /data/file1.raw\n      # Check that the recorded file has no underrun\nChange-Id: Ib2846b2827afd1b953d4a25acb18c7cadf57cd3e\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "f11fc2260594ef0b51abd5c483cae13df81fde20",
      "tree": "8cdb1dbfa90e07f7237fb6b0a227e8f9e153e0f4",
      "parents": [
        "0ff9bd98805a1b593fd72dda96c2e4795d5106e2",
        "b5a3db3e8ed9adef4fbeb8e3b5e97a1af50bca70"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Oct 03 15:56:52 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 03 15:56:52 2019 -0700"
      },
      "message": "Merge \"AudioFlinger: enforce OP_RECORD_AUDIO during recording\" into qt-dev am: 7b254210fe\nam: b5a3db3e8e\n\nChange-Id: I52e15469eefdd9f037cc09974846c21c6decff1f\n"
    },
    {
      "commit": "bb3b160486da21dab7611de44c85ad85e73e69c9",
      "tree": "266b8068d8e1714bb4b4100d2e31c0a95cc9e16c",
      "parents": [
        "3e9dd76e813cf04c9dd35a8c2e813c174e5b435e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 08 15:28:43 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Oct 02 16:31:34 2019 -0700"
      },
      "message": "Fix the name of the constant for device [dis]connect parameter\n\nDuring the transition to Treble, \"device connect\" / \"disconnect\"\nparameter was erroneously attributed to audio streams. This\nissue got fixed in Audio HAL V4.0, but AudioParameter file\nwas still using incorrect name for the constant.\n\nTest: make\nChange-Id: I4056ad9e98af6dadd017d22bc4bde031cac75631\nMerged-In: I4056ad9e98af6dadd017d22bc4bde031cac75631\n"
    },
    {
      "commit": "a392a55f9e58d1a38f470a3931fbab738de6b4b6",
      "tree": "5cc9c718b47bbdda032b5e606b02da6b5fc490ab",
      "parents": [
        "071c3c8736f7be0800fc3a0293335b15fe6945f3"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Sep 23 10:34:20 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Sep 23 14:50:25 2019 -0700"
      },
      "message": "Enable AUDIO_ARRAYS_STATIC_CHECK.\n\nEnable static check for audio arrays so that it can be earlier to catch\nif there is any error within the audio arrays.\n\nBug: 135621476\nTest: make\nChange-Id: I598311e0853ca77dff83fb97974e534adb238567\n"
    },
    {
      "commit": "7307293e8befafa12b244b74cd3c8cb84b27997c",
      "tree": "db965b2dafa54ec2460e83292bbc6f9b2cb5ecaf",
      "parents": [
        "a426cf1c3d42d2e17212bd0aa5fbfe7517ad3284"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 20 15:42:04 2019 -0700"
      },
      "committer": {
        "name": "Suprabh Shukla",
        "email": "suprabh@google.com",
        "time": "Mon Sep 16 13:59:25 2019 -0700"
      },
      "message": "AudioFlinger: enforce OP_RECORD_AUDIO during recording\n\n  Fix issue where RecordTrack silencing didn\u0027t silence the\nfull buffer: the memset to 0 was using the RecordThread frame\nsize, not the RecordTrack frame size.\n  OP_RECORD_AUDIO was only enforced at the start of a recording\nwhich would fail if not granted. This patch silences the recording\n(i.e. silence is recorded instead) when it is lost, and undoes that\nwhen granted again. This requires:\n- propagating the package name of the client to the RecordTrack class\n- registering an appOp callback in RecordTrack (through a new\n  OpRecordAudioMonitor class) to (un)silence the recording\n- update the isSilenced() method to take into account the appOp.\n\nBug: 138968594\nBug: 138636979\nTest: run app that records audio, then \"adb shell appops __pack_name__ 27 2\"\n     and verify recording is silent after that.\n\nChange-Id: Ib33f5b592185a67204997213bab1ac2594d90d37\n(cherry picked from commit ddf87effa4d80f413a80fde861f73877ccd80599)\nMerged-In: Ib33f5b592185a67204997213bab1ac2594d90d37\n"
    },
    {
      "commit": "7dd39723b34c8378fc5eabb4d4ccacf32f55ffe2",
      "tree": "222de47bcb84931d714d250fe51d3249771edc18",
      "parents": [
        "61d4a093f4b4041b145fbd7a3ab5ec04679f87d9"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Sep 05 15:14:30 2019 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 13 10:59:51 2019 -0700"
      },
      "message": "Improve visibility of IMemory security risks\n\nThis change renames the IMemory raw pointer accessors to\nunsecure*() to make it apparent to coders and code reviewers\nthat the returned buffer may potentially be shared with\nuntrusted processes, who may, after the fact, attempt to\nread and/or modify the contents. This may lead to hard to\nfind security bugs and hopefully the rename makes it harder\nto forget.\n\nThe change also attempts to fix all the callsites to make\neverything build correctly, but in the processes, wherever the\ncallsite code was not obviously secure, I added a TODO requesting\nthe owners to either document why it\u0027s secure or to change the\ncode. Apologies in advance to the owners if there are some false\npositives here - I don\u0027t have enough context to reason about all\nthe different callsites.\n\nTest: Completely syntactic change. Made sure code still builds.\nChange-Id: I5fb99aa797c488406083178a6b05355d98710d3b\n"
    },
    {
      "commit": "5ada82ee2511a31c6846c67e455ffb2c9989b623",
      "tree": "38845fc352b781bb00cfe7bf56cf1cfc23c2af37",
      "parents": [
        "dba03231c2fb2c54c8a7b313786c7bc7d3471908"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 29 17:53:54 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 30 18:07:18 2019 -0700"
      },
      "message": "audio policy: allow silencing capture per port\n\nAdd the possibility to silence a particular AudioRecord\nclient rather than silencing all clients sharing the same UID.\n\nTest: AudioRecordTest#testRecordNoDataForIdleUids\n\nChange-Id: Ic472045cd45c7222ca3a88ccf131435fd1e26475\n"
    },
    {
      "commit": "ddf87effa4d80f413a80fde861f73877ccd80599",
      "tree": "0e89ff4a5be97c07c81bc11c36f5e8741fca9eed",
      "parents": [
        "28355761d73f1495bba8994dc3c0dc631ae245a8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 20 15:42:04 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Aug 26 16:00:34 2019 -0700"
      },
      "message": "AudioFlinger: enforce OP_RECORD_AUDIO during recording\n\n  Fix issue where RecordTrack silencing didn\u0027t silence the\nfull buffer: the memset to 0 was using the RecordThread frame\nsize, not the RecordTrack frame size.\n  OP_RECORD_AUDIO was only enforced at the start of a recording\nwhich would fail if not granted. This patch silences the recording\n(i.e. silence is recorded instead) when it is lost, and undoes that\nwhen granted again. This requires:\n- propagating the package name of the client to the RecordTrack class\n- registering an appOp callback in RecordTrack (through a new\n  OpRecordAudioMonitor class) to (un)silence the recording\n- update the isSilenced() method to take into account the appOp.\n\nBug: 138968594\nTest: run app that records audio, then \"adb shell appops __pack_name__ 27 2\"\n     and verify recording is silent after that.\n\nChange-Id: Ib33f5b592185a67204997213bab1ac2594d90d37\n"
    }
  ],
  "next": "f23fcf683cc0ec5efb8eae471141af162ac00035"
}
