)]}'
{
  "log": [
    {
      "commit": "743f640339310f980cc6480514fb67bcd26cc717",
      "tree": "75f7c4cb4c3682850fddb8ff4080acd2307a4931",
      "parents": [
        "4e48c2477d084919f13ee191a6c36713d83063f3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 13:17:04 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jun 03 16:58:35 2020 -0700"
      },
      "message": "AudioFlinger: Fix read timestamp if HAL returns error\n\nTest: android.media.cts.AudioRecordTest#testTimestamp\nBug: 158112444\nChange-Id: Ibb35c6247ab94e63d586eddd1c95b7fc186e7822\n"
    },
    {
      "commit": "33403f0ef8ec7e6217f4969879fa81101e6b84ee",
      "tree": "6036db6c23094fc0aadb3703349aa97f0a86c5dd",
      "parents": [
        "ea63cf2b4479bcef697592e57025b63b60b2af4c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 29 18:35:06 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 29 18:44:33 2020 -0700"
      },
      "message": "AudioFlinger: fix fast capture silence\n\nSilencing fast catpure tracks was not properly implemented.\nFix by zeroing fast capture thread HAL read buffer if the silenced\ntrack is the only active, or by invalidating the silenced track\nif other non fast tracks are active.\n\nBug: 157708122\nTest: repro steps in the bug\nChange-Id: I88b19540815bc1491b9e76c1ae6b6f85e32afa8f\n"
    },
    {
      "commit": "6292112eca818eab9fa5056bc4a28092812b291b",
      "tree": "1e37d150cd5325d37b7d1b115c18fc7e4e1c0d0c",
      "parents": [
        "b4a3b65d297a8436ba48138ce7ce2ba6b7a652b8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 18 10:47:31 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 27 11:47:47 2020 -0700"
      },
      "message": "Tracks: Stabilize the latency/startup metrics for BT\n\nUse kernel timestamps instead of server timestamps.\nPostpone latency / startup collection until later\nto ensure BT is stabilized.\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nChange-Id: Ie4e0658cedec13000f7b713407630e273df391b7\n"
    },
    {
      "commit": "ea84038803580b4c35ce4cb60918c0c384127417",
      "tree": "d8c91402af2f630e4f1c36f7798d161767d01301",
      "parents": [
        "38e65911a65a51edf2efd5ca63c4e00daac24852"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 05 21:50:17 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 13 11:15:49 2020 -0700"
      },
      "message": "MediaMetrics: Prepare statistics for protos\n\n1) Add AudioRecord to Analytics trigger.\n2) Log RecordThread statistics.\n3) Rename DURATIONNS to EXECUTETIMENS to avoid confusion.\n4) Use streamType from server not client.\n5) Split MMAP types to MMAP_PLAYBACK and MMAP_CAPTURE.\n6) Use string flags for AudioTrack and AudioRecord.\n7) Compute underrun frames for MixerThread.\n8) Log BT connection state.\n\nTest: adb shell dumpsys media.metrics\nTest: atest mediametrics_tests\nTest: adb shell dumpsys stats --metadata\nBug: 149850236\nChange-Id: Iacf3f117c00ec9f377e62862080252aef9dc084f\n"
    },
    {
      "commit": "651d0a575517e0b1591715f74c862335ab04ac72",
      "tree": "1b3c7e1b59ba074aa676281dd908fd5e2aba95f8",
      "parents": [
        "05be7e510992ebf41919c84a26b38717a7f3211f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 08 14:00:58 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 08 14:00:58 2020 -0700"
      },
      "message": "audioflinger: fix NUL terminator in dumpsys\n\nBug: 155096545\nTest: adb shell dumpsys media.audio_flinger | more\nTest: then search for \"Device\"\nTest: There should be no garbage characters on the next line.\nChange-Id: I798d914cede3f45151f97178de3ceee09b4e24c0\n"
    },
    {
      "commit": "07f031e889d78edd549d8ad4254cd31902b46479",
      "tree": "b834592b9dfb110146c5664ecd6dbfb0f0925f81",
      "parents": [
        "e3469d1d6d7a8a894064e925b0770765bbe4bea0",
        "f7667505a23d017d984e03fbb71a6fc28be34449"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 08 01:27:35 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 08 01:27:35 2020 +0000"
      },
      "message": "Merge \"Force DIRECT flag on direct output thread.\" into rvc-dev"
    },
    {
      "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": "f7667505a23d017d984e03fbb71a6fc28be34449",
      "tree": "45e9d5370330e051307878944a68468333892420",
      "parents": [
        "cc79094c69bdc85c7c8f52247a00bae1dff68473"
      ],
      "author": {
        "name": "yucliu",
        "email": "yucliu@google.com",
        "time": "Tue Apr 28 15:33:55 2020 -0700"
      },
      "committer": {
        "name": "Yuchen Liu",
        "email": "yucliu@google.com",
        "time": "Wed May 06 18:02:52 2020 +0000"
      },
      "message": "Force DIRECT flag on direct output thread.\n\nForce DIRECT flag if current playback thread is direct output thread.\n\nThis can happen when the playback is re-routed to direct output stream\nby dynamic audio policy.\n\nBug: 130296239\nTest: manual\nChange-Id: I24efd87f74bacf6b769d3663e9521eb27b1704e9\n"
    },
    {
      "commit": "cf10d743aedcd29a53f3a4f16a25565f5b462dd8",
      "tree": "17f4ba2cd404347873f8f059d620a2ec890a7529",
      "parents": [
        "c2b11cbcb88c5970fb4ec6ff8a562b1465dfa70a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 28 15:38:24 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 30 17:39:50 2020 -0700"
      },
      "message": "ThreadMetrics: Add device-based statistics for audio\n\nCompute summary statistics based on the current device\nrather than the entire Audio Thread duration.\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nChange-Id: Ie6d459b06b4a469401ee9e0c194e45ea5ce380c6\n"
    },
    {
      "commit": "c2b11cbcb88c5970fb4ec6ff8a562b1465dfa70a",
      "tree": "dedee4f6e9c95af20ef76e79bddbc79ed850781a",
      "parents": [
        "199012b0c66d555207d81fedb7cce16305c865f8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 22 09:04:01 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 30 17:18:26 2020 -0700"
      },
      "message": "TrackMetrics: Add device-based statistics for audio\n\nCompute summary statistics based on the current device\nrather than the entire AudioTrack or AudioRecord duration.\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nChange-Id: Ia3a5707c43c4530f5a6ac90f52901bd2e0bd0bab\n"
    },
    {
      "commit": "0a957d32556294b0f4209bb5b7914fd05d742751",
      "tree": "5890a5b9d69c9df0905b8652cb30e274c08b6d81",
      "parents": [
        "ec660f185a1e212b1d22125de81e9bd1d0ff58a3"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Apr 29 10:56:20 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Apr 29 10:56:20 2020 -0700"
      },
      "message": "Check silent mode when updating output device.\n\nAfter refactoring audio device type, the output devices will only be set\nwhen create/release audio patch. In that case, the output devices are\nempty when creating the thread. If the \"ro.audio.silent\" is set, it will\nmake master muted if the output devices are empty. To fix the issue, do\nnot check silent mode when the output devices are empty, but check\nsilent mode when output devices are updated.\n\nTest: atest AudioHostTest with setting \"ro.audio.silent\"\nBug: 154037767\nChange-Id: I6cb219353e541ba99ba9acebd6ce853128d963d3\n"
    },
    {
      "commit": "ec660f185a1e212b1d22125de81e9bd1d0ff58a3",
      "tree": "2895b3bb6e630fe798eb3345f25942186a0734df",
      "parents": [
        "6d05a57e70a66ce0864db0387eb40df48d52bc4a",
        "c08f261af02a7678e81f6c1c2ca5c8453b5cfc0e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 28 16:28:07 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 28 16:28:07 2020 +0000"
      },
      "message": "Merge \"fix audioflinger integer multiplication overflow\" into rvc-dev"
    },
    {
      "commit": "d203eb6b3cd99af3c9616df2bd0d982796b0f918",
      "tree": "0f2cfa6c24a30d32913de484c6dd52514b37a9a3",
      "parents": [
        "2578a95a57dd9796b55095dc22b8171dd5da73c3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 09:12:46 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 23:42:41 2020 -0700"
      },
      "message": "MediaMetrics: Use AllowUid property for services to control client access\n\nRemove implicit first client uid access.\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nChange-Id: I4f953db4688bf5f174c3e1611f492f31d2926e96\n"
    },
    {
      "commit": "c08f261af02a7678e81f6c1c2ca5c8453b5cfc0e",
      "tree": "0856b7fce43c4044a150cfdd52a19475cc09820b",
      "parents": [
        "433ccf7dca6db9ffd774cd10d539ccf9d62e3f46"
      ],
      "author": {
        "name": "wendy lin",
        "email": "wendy.lin@mediatek.com",
        "time": "Wed Jun 12 10:37:11 2019 +0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 27 16:04:37 2020 -0700"
      },
      "message": "fix audioflinger integer multiplication overflow\n\nwhen underrun duration is over 3 sec, overflow happens\nfor multiplication of nsec\u003dsec*1000000000. Use correct format transform\nto solve it.\n\nBug: 135075416\nTest: run MTBF test\n\nChange-Id: I0a09ca41f2fad055ce0cfa18f936131b7a630f52\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": "f698ff2d177d62a714d452ce63430606738a4190",
      "tree": "e53e0cbf41ce80cc85b73f6495323207899c86c9",
      "parents": [
        "1cfbd0a8a1083af1a7afeb19b2bdc0d757d9daf5"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 31 10:07:29 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 31 22:06:58 2020 +0000"
      },
      "message": "Fix uninitialized variable use in Effects.cpp\n\nInitialize variable \u0027strategy\u0027 in\nAudioFlinger::EffectBase::updatePolicyState.\nFound by clang-tidy.\n\nBug: 152526318\nTest: m\nChange-Id: I5aad916a9873122eed0bb8e40bb26d677f338b16\n"
    },
    {
      "commit": "1cfbd0a8a1083af1a7afeb19b2bdc0d757d9daf5",
      "tree": "5d4775de3b94eaa2c952f6266c61d6f60c7d4e4f",
      "parents": [
        "e2074d7b4f23d8736e77750ce5ab59d61c1bb350",
        "d1f1cb68f567363a0b1e4cd4db6286afc6c8a1e2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 31 02:23:51 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 31 02:23:51 2020 +0000"
      },
      "message": "Merge \"Add audio attributes info when starting aaudio tracks on MMAP mix.\" into rvc-dev"
    },
    {
      "commit": "d1f1cb68f567363a0b1e4cd4db6286afc6c8a1e2",
      "tree": "3b32985218612d05bf95fed08c18025d1735b2d4",
      "parents": [
        "06675ff30f63323905ff18c3c4e0d34a9fee4c60"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Mar 24 11:57:57 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Mar 27 11:33:09 2020 -0700"
      },
      "message": "Add audio attributes info when starting aaudio tracks on MMAP mix.\n\nIn aaudio, when adding tracks to mixed stream, it is needed to update\naudio attributes to HAL whenever the tracks are added or removed.\nCurrently, only the audio attributes used to open the stream will be\nsent to the HAL. In that case, adding audio attributes of the clients\nwhen starting the stream can help solve the problem. In audio flinger,\nthe client\u0027s audio attributes will be used to create MmapTrack.\n\nTest: play multiple aaudio tracks, add log\nBug: 77279923\nChange-Id: Ic1c536049e194a2bb7513425ee4828d52769d27f\n"
    },
    {
      "commit": "379d687ba8c831cedf406d95309c4e7a6f66639d",
      "tree": "543cda1db6f2044e1e2f699c54c42f680e04e219",
      "parents": [
        "7bb5d6abf90125a7eacdd98f1201a694258f9bea"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 26 13:04:11 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 26 13:04:11 2020 -0700"
      },
      "message": "Fix uninitialized variable use in Effects.cpp\n\nInitialize variable \u0027io\u0027 in\nAudioFlinger::EffectBase::updatePolicyState.\nFound by clang-tidy.\n\nBug: 152526318\nTest: m\nChange-Id: Ib8c71eaf83dc140874d3e65a094e52e36918160f\n"
    },
    {
      "commit": "57a3769fb12dc8b2df457e0919850bd976716706",
      "tree": "f170ceb064b6be5d9443af5f2f95ac55c612c270",
      "parents": [
        "3006a83565b6863f247bf634faa929b84608026e"
      ],
      "author": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Mon Mar 23 17:27:25 2020 -0700"
      },
      "committer": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Tue Mar 24 16:20:36 2020 +0000"
      },
      "message": "Revert \"Allow call audio access for default dialer application\"\n\nThis reverts commit ac26cf749f457e12a3d8d7456bbcd58a3e028d69.\n\nReason for revert: Feature has been postponed\nBug: 151761909\n\nChange-Id: I90a977a23c5b97ddf95976cf2c4d517165f8e8c2\n"
    },
    {
      "commit": "b3e62a0302fb4d3b51b860d2badbc72663746dd9",
      "tree": "5bf1a4ede6eb601f3639a059ef55ee6d737d50f7",
      "parents": [
        "6437df87da8175a05e2a522c7c71eddcde88f97c",
        "04cb8f72e799d6045583304d1b90cd16875b9bd0"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Mar 21 00:08:42 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 21 00:08:42 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: Add master volume to the dumpsys\" into rvc-dev"
    },
    {
      "commit": "04cb8f72e799d6045583304d1b90cd16875b9bd0",
      "tree": "23c22ea54fe8c2df03107e08c578554c4b885514",
      "parents": [
        "8d386f779d76eb2a87ec570bf6ee3c0ce674085f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 20 13:44:33 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 20 14:00:23 2020 -0700"
      },
      "message": "AudioFlinger: Add master volume to the dumpsys\n\nNow PlaybackThreads shows master volume, which enables tracking\nsubtle silence issues. (Note MmapThreads already dump master volume.)\n\nTest: adb shell dumpsys media.audio_flinger\nBug: 145107983\nChange-Id: I2efc1a133c0ea07929c646b7e7148a9f3f311912\n"
    },
    {
      "commit": "2fe0acd07f9fb2d0eefbe0fa9d25fbaf0f672596",
      "tree": "10a5a6ceaee79473c53b3dacb08b58172bcd14f2",
      "parents": [
        "90334d0f03f4bee709969433898025fc16863f01"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 13 14:30:46 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 16 13:49:20 2020 -0700"
      },
      "message": "audioflinger: add effect creation probe mode\n\nAdd an argument to IAudioFlinger::createEffect() API to\nask AudioFlinger to just run the pre flight checks but not\ncreate the actual audio effect instance and allocate resources.\nThis is the basis of an API for apps to query if a given\neffect can be created without having to allocate the resources\nand risk an exception when calling the constructor.\n\nBug: 150699608\nTest: CTS and GTS Tests for audio effects\nChange-Id: Ibdda22fd945c88c33e3c7342a7a5ed3e02d399ac\n"
    },
    {
      "commit": "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": "d505c647c527b45b8b1c157504d57df247fee8b6",
      "tree": "ec18a301b74cb8928faa3e427457ea929abe89aa",
      "parents": [
        "831ed185aa1dd8211bc37a05c9af8ed6941bf809"
      ],
      "author": {
        "name": "Zhou Song",
        "email": "zhous@codeaurora.org",
        "time": "Thu Feb 20 16:35:37 2020 +0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 06 16:01:52 2020 -0800"
      },
      "message": "Effects: set hw volume if effect chain doesn\u0027t have volume control\n\nIf effect chain has non-offloaded effect, and is enabled for direct\noutput, when there\u0027s no volume control for all the effect modules\nwithin this chain, volume should still be set to HAL.\n\nTest: Play Music, Videos with effects\nBug: 149899134\nCRs-Fixed: 2625597\nChange-Id: I77bd0d456d5fa4e88afb283002a5eb1e2b704ca8\n"
    },
    {
      "commit": "f6eb4c388b6499752c2ee47b663956dcbf0dd7e4",
      "tree": "032329fc713202ce01d5e17420f47bd6025f041c",
      "parents": [
        "c62ad13ad8da6b31168f0d9f3e5f2a770ed0bbee"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Feb 25 14:06:25 2020 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Feb 26 16:16:44 2020 -0800"
      },
      "message": "Add callback for codec format change.\n\nWhen creating native audio track, a IAudioTrackCallback will be created\nsystematically. All callbacks will be cached in Threads and protected by\na lock. Whenever there is a callback event from audio HAL, it will\nfinally trigger callback to native audio track. Currently, there is only\none callback event, which is codec format change.\n\nBug: 150301890\nTest: manual\nChange-Id: I32293627ed923b17dd25f11f0ee0a0c35cd7c01f\n"
    },
    {
      "commit": "ac26cf749f457e12a3d8d7456bbcd58a3e028d69",
      "tree": "0d3ba6751d1bee73ac1d6bf5c50771a2bfede68f",
      "parents": [
        "0f97ee5a52d697e31e9c6dc3c9e7aa941168b571"
      ],
      "author": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Mon Jan 06 14:43:38 2020 -0800"
      },
      "committer": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Tue Feb 18 22:54:20 2020 +0000"
      },
      "message": "Allow call audio access for default dialer application\n\nThe access to call audio (record and play) will be granted only to the app associated with Dialer role, who also includes a new system permission.\n\nTest: Compilation and manual tests\nBug: 135197853\n\nChange-Id: I65ca823c235d4d3420630837427103783ad1d1b0\n"
    },
    {
      "commit": "0f97ee5a52d697e31e9c6dc3c9e7aa941168b571",
      "tree": "b24e61ac061d57ac858650b5a6d0940b144b50b3",
      "parents": [
        "ae3b9539cead752af48515f2e43c9985c3fc04e6",
        "5e4d86f837c1b978d4c5d69964a769c5a26e3fae"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 18 22:25:32 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 18 22:25:32 2020 +0000"
      },
      "message": "Merge \"audioflinger: remove null checks\""
    },
    {
      "commit": "5e4d86f837c1b978d4c5d69964a769c5a26e3fae",
      "tree": "feebebe3255fa50f93a2679c8639d25d1ff6242d",
      "parents": [
        "697aec8505c99b66313aa5c58e3bb68776db82f0"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Feb 18 12:55:36 2020 -0800"
      },
      "committer": {
        "name": "George Burgess",
        "email": "gbiv@google.com",
        "time": "Tue Feb 18 21:21:13 2020 +0000"
      },
      "message": "audioflinger: remove null checks\n\nThis code has null checks with intervening unconditional dereferences of\nthe potentially-null variable.\n\nIt\u0027s not clear that `mOutput` can ever be null to begin with. If it can\nbe, we have a few dereferences to guard. :)\n\nCaught by the static analyzer:\n\nframeworks/av/services/audioflinger/Threads.cpp:2671:19: warning: Called\nC++ object pointer is null [clang-analyzer-core.CallAndMessage]\nframeworks/av/services/audioflinger/Threads.cpp:2852:9: warning: Called\nC++ object pointer is null [clang-analyzer-core.CallAndMessage]\n\nBug: None\nTest: TreeHugger\n\nChange-Id: I456581204718390088998a1fe2514dff63f6578f\n"
    },
    {
      "commit": "f29bd6bf2944f57de04362c10c223960e5e89eec",
      "tree": "5095c1f0dfe9f35d297b9b8d49686466f0e3e62b",
      "parents": [
        "f0fde89bdce97705981758515eac27d3e718f54b",
        "35f8c7c32aa45f0b95cec7e1d31fc92ce79d57ee"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 12 01:04:37 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 12 01:04:37 2020 +0000"
      },
      "message": "Merge changes from topic \"volume_fixes\"\n\n* changes:\n  audio policy: add call assistant volume stream\n  [AudioPolicy] fix volume regression\n  [AudioPolicy][Engine] Attributes of strategy not populated\n  Revert \"Revert \"[audiopolicy][enginebase] Fix schema verification\"\"\n"
    },
    {
      "commit": "9073e80440a7804111967533d8ea114ef31de679",
      "tree": "4356f596c900544be11eeded6d0c49fbb42f92fb",
      "parents": [
        "79fe80b49dec4d39725ff3db3ea1dc34a85dd8c1",
        "80810ed5ea2b04f25d9c9d875e820a33c343b38b"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 11 22:24:06 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Feb 11 22:24:06 2020 +0000"
      },
      "message": "Merge \"Revert \"Disable clang-tidy for Effects.cpp\"\" am: 3a2f04cf5d am: 26bca1d6df am: 80810ed5ea\n\nChange-Id: Ide8321169d86be7db764081d471c0cd89a836175\n"
    },
    {
      "commit": "3a2f04cf5db1e7dfc4727e80cdd148fb591fe3f8",
      "tree": "890c6d67c6404c5690001785c0ec35ef063e0e68",
      "parents": [
        "7ddc362165b9a621526d23526be1a778fe157100",
        "221324eea4bbe46dab81dab1137f84bd3c6169c3"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 11 21:33:07 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 11 21:33:07 2020 +0000"
      },
      "message": "Merge \"Revert \"Disable clang-tidy for Effects.cpp\"\""
    },
    {
      "commit": "35f8c7c32aa45f0b95cec7e1d31fc92ce79d57ee",
      "tree": "d9225d987f9948174710ad18b7a51bc45686205d",
      "parents": [
        "39d1f3e01dae5f6794e95074118d3f0466c95a7d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 08 11:42:35 2020 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 10 18:07:26 2020 -0800"
      },
      "message": "audio policy: add call assistant volume stream\n\nRouting strategy call assistant was added without\nassociated volume stream and wass reusing AUDIO_STREAM_PATCH.\nThis is violating the rule that two strategies cannot\nshare the same volume stream.\n\nBug:148588565\nTest: play music and check volume\nChange-Id: Ib3fb2a1b7b5f3118bf16a3cc9d8e578fa0431645\n"
    },
    {
      "commit": "221324eea4bbe46dab81dab1137f84bd3c6169c3",
      "tree": "4ab62e77cc4942322234705c98e4bd53dd747a4d",
      "parents": [
        "b1b6fa0605e2427e3e55a6dcb9065a171c37f043"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Feb 07 05:58:34 2020 +0000"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Feb 07 05:58:34 2020 +0000"
      },
      "message": "Revert \"Disable clang-tidy for Effects.cpp\"\n\nThis reverts commit b1b6fa0605e2427e3e55a6dcb9065a171c37f043.\n\nReason for revert: clang-tidy has been fixed\n\nChange-Id: Id56f1f3e4015c50f775caa7ddd5730e5bd01dcd7\n"
    },
    {
      "commit": "69d367771be73184f6eb0c0d84bc64afdb311f18",
      "tree": "f8caaf7fdb8510296ba1414309908a5368b867ae",
      "parents": [
        "33873dec8be145a09321009ecabd50cb8c62c090",
        "9930037fa8bba06f299a87d8b427a4ec01f3e16c"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Feb 01 08:32:47 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Feb 01 08:32:47 2020 +0000"
      },
      "message": "Merge \"Reset direct output thread timestamp on flush\" am: 394b76dd52 am: 1976ed32df am: 9930037fa8\n\nChange-Id: If04ea2471db4615c5baa33377767453c47158a00\n"
    },
    {
      "commit": "999f0e88d2d4dde2bc8f78adefee8b8237a52de4",
      "tree": "a4ed574e8903d7edf213f031eaa720d5cb5bf778",
      "parents": [
        "733c728752ae6958c88b2da4a4c662d266294b70"
      ],
      "author": {
        "name": "Sampath Shetty",
        "email": "Sampath.Shetty@dolby.com",
        "time": "Wed Jan 15 10:19:06 2020 +1100"
      },
      "committer": {
        "name": "Sampath Shetty",
        "email": "sampath.shetty@dolby.com",
        "time": "Thu Jan 30 23:49:42 2020 +0000"
      },
      "message": "Reset direct output thread timestamp on flush\n\nIn order to avoid subsequent tracks using stale kernel timestamps while\ncomputing track timestamps, clear the timestamp info upon flush.\n\nChange-Id: I2b8af33b287aee986871b6415b89f9c53d92f3a6\n"
    },
    {
      "commit": "ba8677044577082aed086d42f17d60ba3fffd724",
      "tree": "42eb511fe35e7dd0138c74619990aa70fcf2fc0e",
      "parents": [
        "fbe4e735b472c5552405664c390f4898dbd566dd",
        "b68f5ebb53434e800c43715127e2d1032e3a9b54"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 28 22:37:33 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 28 22:37:33 2020 +0000"
      },
      "message": "Merge \"MediaMetrics: Add AudioFlinger logging\""
    },
    {
      "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": "4f04336e7422e1e80b4d0d33816123c768010310",
      "tree": "a85483606d4a5eb87b9f76d68b02d5fb4376cb5f",
      "parents": [
        "3de1bbfde9623ca4bf6d3a281d93857ae06e39a2"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Jan 28 12:39:23 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Jan 28 12:39:23 2020 -0800"
      },
      "message": "Warn against promoting owner\u0027s wp\u003c\u003e from ctor\n\nChange-Id: Ie482fd9fcae39aa3cb161ffb1d879bea95a74e7b\n"
    },
    {
      "commit": "3de1bbfde9623ca4bf6d3a281d93857ae06e39a2",
      "tree": "6ef063e1db869e5a7e54cf6bebe7392ac64ae3e8",
      "parents": [
        "31f98910412ed7e023ffb240c49de63f958fd226"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Jan 21 16:41:17 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Jan 21 17:43:14 2020 -0800"
      },
      "message": "Fix race condition in Effects\n\nMain problem was in AudioFlinger::EffectChain::EffectChain(), where\nthe thread* argument could possibly have been destroyed before the\ncreation of the weak pointer\n(AudioFlinger::EffectChain::EffectCallback::mThread) around it.\n\nWhile here, cleaned up a bunch of other pointer-related operations\nin order to avoid trafficking in raw pointers to RefBase subclasses.\n\nBug: 147770363\nChange-Id: I508ca94dd38a04e13f1a1c413f548001b961c721\n"
    },
    {
      "commit": "9c69ef38b7549a5251d5b403a9582c5ea94acf93",
      "tree": "2047abffe5417eec991a0857d2d1d1f6423025c8",
      "parents": [
        "39415ab6bc1260796a9af9de834cabb859d29c1e",
        "488bfff2003b6543315caa5446863feb4f22bf9f"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jan 16 03:20:40 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jan 16 03:20:40 2020 +0000"
      },
      "message": "Merge \"Disable clang-tidy for Effects.cpp\" am: 895dc21fbd am: 4148a2542a am: 488bfff200\n\nChange-Id: Id8d2e2ef4e68b50455799290d58601269ba9af97\n"
    },
    {
      "commit": "39415ab6bc1260796a9af9de834cabb859d29c1e",
      "tree": "82345485e87d7f92831e34511dd80f4e66573396",
      "parents": [
        "b215d7f2ab7828b5fc2e9097a70462c78376341d",
        "8b0bfd91473eea4c33946347d98fb356eac15867"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 15 22:06:12 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 15 22:06:12 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: Propagate uid info for AudioSession references\""
    },
    {
      "commit": "b1b6fa0605e2427e3e55a6dcb9065a171c37f043",
      "tree": "235664ba0df474d6fe152cba4957df6df8f8b07b",
      "parents": [
        "f27d1e474b8dfe0f52bb22407394591a5dc471f9"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Jan 15 10:39:12 2020 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Jan 15 10:39:12 2020 -0800"
      },
      "message": "Disable clang-tidy for Effects.cpp\n\n* clang-tidy segmentation fault\n\nTest: make with WITH_TIDY\u003d1 and tidy checks for nightly builds\nBug: 146435095\nChange-Id: Id9d5a10ebe73d902098d23c1a74954f82fef0607\n"
    },
    {
      "commit": "c9324c6fd9f92107ea2367d683104602dad4c97a",
      "tree": "19c71f5ee4fd63d3106fcee0f845fd7495b1adb9",
      "parents": [
        "b495377cac061d5856f0666b69bef42fdd244fb1",
        "2a836dd6cae60c7a8de52ca6badfb0fb6c8aa898"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 15 18:24:15 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 15 18:24:15 2020 +0000"
      },
      "message": "Merge \"PatchPanel: Fix crash when tearing down \"pass thru\" software patch\" am: f27d1e474b am: 8a56a515b3 am: 2a836dd6ca\n\nChange-Id: If93298123cfe85b1230240c36ed52ade149bd868\n"
    },
    {
      "commit": "f27d1e474b8dfe0f52bb22407394591a5dc471f9",
      "tree": "4ab62e77cc4942322234705c98e4bd53dd747a4d",
      "parents": [
        "ba385271f7deb6acbf4998a89a364547ae4d81ee",
        "dd91ce21677b5dbb42e9d5ecf25c9db66616211e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 15 17:33:44 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 15 17:33:44 2020 +0000"
      },
      "message": "Merge \"PatchPanel: Fix crash when tearing down \"pass thru\" software patch\""
    },
    {
      "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": "dd91ce21677b5dbb42e9d5ecf25c9db66616211e",
      "tree": "91ff0ebd15816e5e59359a96d0ff684753bc7023",
      "parents": [
        "3c9b9af1533d562576dae545dc5d4f633df6e79e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jan 13 11:34:30 2020 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jan 13 11:50:45 2020 -0800"
      },
      "message": "PatchPanel: Fix crash when tearing down \"pass thru\" software patch\n\nThe pass thru software patch is normally used with the MSD module.\n\nThere is no need to establish a peer reference from PatchRecord\nbecause its I/O code only gets executed by PatchTrack\ninitiative. In fact, this also means PassthroughPatchRecord\ncan\u0027t be stopped synchronously, so the usual software patch tear\ndown logic in PatchPanel leads to a null pointer dereference\nbecause it races with PatchTrack I/O activity on a separate\nthread.\n\nFix by skipping the sp\u003c\u003e setup / clear logic in PatchPanel\nfor PassthroughPatchRecord.\n\nBug: 147599144\nTest: force teardown of MSD patch, check logcat for crash\nChange-Id: I4a2abc16ad705244767b33ea529e1ace2213d19f\n"
    },
    {
      "commit": "3eaa370e35c63c4e49959b03422d37053b2f0810",
      "tree": "3b82daffea51a4fd7c7de5450fda05a8b8fd6072",
      "parents": [
        "e0b9a360c32f8ab2238b4b3779659e565b221946"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 19 09:20:49 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:12:33 2020 -0800"
      },
      "message": "audioflinger: fix missing EffectBase member init\n\nFix missing initialization of EffectBase::mSuspend\nintroduced by commit 41709559.\n\nBug: 136294538\nTest: make\n\nChange-Id: I20de7712ff3701649c78da4e6172e58af3f1f625\nMerged-In: I20de7712ff3701649c78da4e6172e58af3f1f625\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": "d700529501d45ab3d0a0b506b2b76cb0212cf5ce",
      "tree": "7537a0aec018dd1b76c662bfa8a3c2cddb79e5c0",
      "parents": [
        "fefebb5c9692a57aade8955996d7dee7748eb1ec"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 13 12:57:33 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:11:58 2020 -0800"
      },
      "message": "Audio effect HAL: Add device ID to createEffect API\n\nAdd the possibility to specify a target audio device when\ncreating an audio effect by passing its audio port handle\nto createEffect API.\n\nBug: 136294538\nTest: make\nChange-Id: I32a6400278496653b4204175cd8a16d81f9724a0\nMerged-In: I32a6400278496653b4204175cd8a16d81f9724a0\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": "bc09c4795886053e60a45fcc0e9e85b8f54c86bf",
      "tree": "4147a1d0a5cfae5168a7d5ac0cfad7fa469f2516",
      "parents": [
        "b829f607f6c0aeb91acec1b0f913612e4a577bcd",
        "a51151aacfc820122b45a875a0b6fe0dba60b756"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jan 10 16:49:27 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 10 16:49:27 2020 +0000"
      },
      "message": "Merge \"Link with actual headers instead of symlinks\""
    },
    {
      "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": "a51151aacfc820122b45a875a0b6fe0dba60b756",
      "tree": "5250165a3a49942645caf75ade6634fa5c825e22",
      "parents": [
        "bd9f1ed08bb948af54600eb60f13fd6e05068375"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jan 07 13:37:47 2020 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jan 08 11:21:31 2020 -0800"
      },
      "message": "Link with actual headers instead of symlinks\n\nand remove the symlinks.\n\nBug: 143245419\nTest: build\nChange-Id: I70e450d9db0f65048f86391c4d3f341659cd213f\n"
    },
    {
      "commit": "8fd55b2c17f951011c08280e088745563196ec2c",
      "tree": "161ea0d0d03d7e98e17b3e80d3833f9222687801",
      "parents": [
        "ad1bb2c08b4f4199c8266cc611a93c58a701a500",
        "5bdc535976d99ac92e6bdf62c8c68c3f163cff3c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 08 17:53:20 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 08 17:53:20 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: Show uid and package name for notification clients\""
    },
    {
      "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": "4c47d3196d70c6aaaaaea4b472aa7e33357e1fab",
      "tree": "f1ebe2c0bc0729f595cd34675063f55c9264309e",
      "parents": [
        "982ecd07f4da2f93704aa84a3b4f61fa79466b8b",
        "46850e03418431679da337394a7d343701ff2485"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 07 23:20:14 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 07 23:20:14 2020 +0000"
      },
      "message": "Merge \"Use default sample rate for DIRECT Audio thread\""
    },
    {
      "commit": "46850e03418431679da337394a7d343701ff2485",
      "tree": "480d06e1809dbcf9f7e6a4d9105dc170a73ac87f",
      "parents": [
        "3eef87ec4e6413fb49990de06fef2480fc23aeef"
      ],
      "author": {
        "name": "Daniel Bonnevier",
        "email": "daniel.bonnevier@sonymobile.com",
        "time": "Fri Dec 06 09:14:56 2019 +0100"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 07 21:54:17 2020 +0000"
      },
      "message": "Use default sample rate for DIRECT Audio thread\n\nDIRECT and OFFLOAD Audio threads use the mixer when using SW effects.\nThis requires them to use the default sample rate.\n\nTest: vendor specific, see bug\nBug: 147209612\nMerged-In: I553fe43695d64160dd64808e18299699a4047225\nChange-Id: I553fe43695d64160dd64808e18299699a4047225\n"
    },
    {
      "commit": "ab2ff056ad282cb9b8198a0dc7089d41d86c1f6e",
      "tree": "1014cf8fda7716d6ff922dba4495d4688af90319",
      "parents": [
        "c222d6e5aba8e7231d7430cabfbb011d664c9add",
        "6bc62094e593a91172d94c145ded0036e9f84e6d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 07 21:52:52 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 07 21:52:52 2020 +0000"
      },
      "message": "Merge \"Use default sample rate for DIRECT Audio thread\""
    },
    {
      "commit": "6bc62094e593a91172d94c145ded0036e9f84e6d",
      "tree": "f03aa1ed01ed156250404c5ff78fb33822be166b",
      "parents": [
        "9468f951e6b85446ddde11f2dfce060caaa5f261"
      ],
      "author": {
        "name": "Daniel Bonnevier",
        "email": "daniel.bonnevier@sonymobile.com",
        "time": "Fri Dec 06 09:14:56 2019 +0100"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 07 12:32:17 2020 -0800"
      },
      "message": "Use default sample rate for DIRECT Audio thread\n\nDIRECT and OFFLOAD Audio threads use the mixer when using SW effects.\nThis requires them to use the default sample rate.\n\nTest: vendor specific, see bug\nBug: 147209612\nChange-Id: I553fe43695d64160dd64808e18299699a4047225\n"
    },
    {
      "commit": "5b8039a69f1923a019d2c48b5158bf837df3a11e",
      "tree": "56f6f54abf1eb08a13301b22891d09e6d5d0043a",
      "parents": [
        "9ce5404e8ee6cf247a9004500cb91bf3b8114b14",
        "a2c8dc480a7d71a53c6d0ffb32189f04ad739522"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 07 18:30:38 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 07 18:30:38 2020 +0000"
      },
      "message": "Merge \"effects: fix a theoretical memory leak\" am: 7f4beda2de am: 139b5728e2 am: a2c8dc480a\n\nChange-Id: I75906bf23cf7f6fcc1d48a106a5926714e1103dc\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": "80a22163606b1b3319743fb58387c67aafcbc2da",
      "tree": "baec51f9cdcae5eeb43618ca984a03ac51278c91",
      "parents": [
        "3eef87ec4e6413fb49990de06fef2480fc23aeef"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Sun Jan 05 20:06:15 2020 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Sun Jan 05 20:09:50 2020 -0800"
      },
      "message": "effects: fix a theoretical memory leak\n\n`realloc` doesn\u0027t deallocate `param` if it fails. Since the loop ends in\na `free`, we just need to avoid overwriting `param` until after the\ncheck.\n\nCaught by the static analyzer:\n\nframeworks/av/services/audioflinger/Effects.cpp:1868:9: warning:\nPotential leak of memory pointed to by \u0027param\u0027\n[clang-analyzer-unix.Malloc]\n\nBug: None\nTest: TreeHugger\n\nChange-Id: I58fe4319927b3ea99989e1fb1dc2dabe89c72ef8\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": "d9eb49697765b2b1d191d56e4314d95d0073e921",
      "tree": "f52533616c65874038fac4c5eb7c04eefe6ce97f",
      "parents": [
        "78050a6e584e8e6f27452ea12f4994f5a9552898"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 19 09:20:49 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 19 09:22:42 2019 -0800"
      },
      "message": "audioflinger: fix missing EffectBase member init\n\nFix missing initialization of EffectBase::mSuspend\nintroduced by commit 41709559.\n\nBug: 136294538\nTest: make\n\nChange-Id: I20de7712ff3701649c78da4e6172e58af3f1f625\n"
    },
    {
      "commit": "a96f9f950d08b1492b10acb2adbc087b49c34c1b",
      "tree": "319ac25407b90f74c881d25ef93beb33c7189a1e",
      "parents": [
        "231bcdc0177f618f18a32512744949938440dd5f",
        "41709559999108cce9b1d725779fc513cc19138d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 19 02:57:07 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 19 02:57:07 2019 +0000"
      },
      "message": "Merge \"audioflinger: refactor EffectModule class\""
    },
    {
      "commit": "41709559999108cce9b1d725779fc513cc19138d",
      "tree": "edb0537f270f40e04de64f608824bf7d9d782bcd",
      "parents": [
        "c43423a6c6b6b0506d7b38f8062012a91fbef050"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 16 19:34:05 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 18 09:34:08 2019 -0800"
      },
      "message": "audioflinger: refactor EffectModule class\n\nIntroduce a class EffecBase as a parent class of\nEffectModule with default implementation for handles management,\nbasic properties storage and state management.\n\nBug: 146177259\nTest: CTS: AudioEffectTest, EqualizerTest, VisualizerTest,\nAudioPreProcessingTest\nTest: manual test: Play Music EQ settings, Duo EAC and NS\nChange-Id: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\n"
    },
    {
      "commit": "7d6d1ef2aaaf60061ed67749be217d3533cf985b",
      "tree": "dd681cf232990c90267a6f90f88dcc2e9b7229af",
      "parents": [
        "94e872e6894dce7d89954d0515c140ec626d20ba",
        "801d72f468890cb7fc8371f5434c4ce0414f0476"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Dec 18 01:53:27 2019 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Dec 18 01:53:27 2019 +0000"
      },
      "message": "Merge \"Use max of play/record frame counts for PassthruPatch track\" am: e93545d3ae am: dd35e2c49d am: 801d72f468\n\nChange-Id: Ic5d65eb77d307f3f2eb70e5608f377719374a641\n"
    },
    {
      "commit": "b3643899c48dfe9bec2876e40faaf8b913aa4627",
      "tree": "924f685a4c1e434999fa70ae4907982bf16d1ae5",
      "parents": [
        "e17f0c1c1e065d2985113ee6703fe40186b74963"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Wed Dec 18 08:38:37 2019 +1100"
      },
      "committer": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Wed Dec 18 10:39:31 2019 +1100"
      },
      "message": "Use max of play/record frame counts for PassthruPatch track\n\nThis patch avoids pseudo LCM buffer calculation oversized buffer\ncausing posix_memalign error in cases of large play/record frame\ncounts (such as 24596) for PassthruPatchRecord patches.\n\nTest: MSD to Primary audio patch with play/record frame counts\n      of 24596.\nChange-Id: I3a2f3795330e99984388b01033d8e7c1685d01f2\n"
    },
    {
      "commit": "94e872e6894dce7d89954d0515c140ec626d20ba",
      "tree": "3b8a0acc0c514e139b767f255e77a23fbf7d55c2",
      "parents": [
        "990cc725040484dfd233280eedeb7de2da4f72e4",
        "f27e987d277c186010e8bdd1d5e781158b31f9af"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 17 22:52:33 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 17 22:52:33 2019 +0000"
      },
      "message": "Merge \"Naming consistency: MediaAnalytics to MediaMetrics\""
    },
    {
      "commit": "f27e987d277c186010e8bdd1d5e781158b31f9af",
      "tree": "87703f33fe40f06c2faa78daa4105bb6cb8db79d",
      "parents": [
        "b7b870db0c6cc0c6375b154400a813b84f5056b4"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sat Dec 07 06:28:46 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 17 11:20:57 2019 -0800"
      },
      "message": "Naming consistency: MediaAnalytics to MediaMetrics\n\nBug: 145780674\nTest: build, boot, dumpsys media.metrics\nTest: atest mediametrics_tests CtsNativeMediaMetricsTestCases\nChange-Id: Icbfa98da9e61702aee9a1d807b5e126b4b9c6458\n"
    },
    {
      "commit": "6b446ce95d99373c9b1210336fa66d8c4f2d7409",
      "tree": "f67c7be3149340c3066970d3e33125ae7c26d00b",
      "parents": [
        "b7b870db0c6cc0c6375b154400a813b84f5056b4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 10:56:31 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 15:43:24 2019 -0800"
      },
      "message": "Revert \"Revert \"Audio effects: define interface between EffectModule and audio framework\"\"\n\nThis reverts commit 3fd6a2ccfd9305619289e2cd514fdfa803210f9e.\n\nAlso fixes native coverage build.\n\nBug: 146177259\nTest: build/soong/soong_ui.bash --make-mode TARGET_PRODUCT\u003dcf_x86_phone TARGET_BUILD_VARIANT\u003duserdebug NATIVE_COVERAGE\u003dtrue\nChange-Id: Ib78a22619123cd1848b047931b02d4061def3a23\n"
    },
    {
      "commit": "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": "3b7f51b5fc7ee72f920ee6b749e7aa12a03e37d6",
      "tree": "a8cc15826720d0c409b51f01422c7d69c285f298",
      "parents": [
        "94876034876afd6f642dd1a0ad7c60aee05504d9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 13 12:57:33 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 09 09:46:17 2019 -0800"
      },
      "message": "Audio effect HAL: Add device ID to createEffect API\n\nAdd the possibility to specify a target audio device when\ncreating an audio effect by passing its audio port handle\nto createEffect API.\n\nBug: 136294538\nTest: make\nChange-Id: I32a6400278496653b4204175cd8a16d81f9724a0\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": "39260a69ca1f66f29f250f30fde07fd628785708",
      "tree": "f2126fd1052011c2fe3e35559aa472581193b96e",
      "parents": [
        "a2adc8aa6c06f0e1d06c1bb6535be15f30ba26fd",
        "c76d3a273d0336ffa5d71c11b7a566721eca77f1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 06 14:33:03 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 06 14:33:03 2019 -0800"
      },
      "message": "Merge \"Sometimes no audio output after playing some clips using Files.apk\" am: 80a288ad82 am: 68e6412024\nam: c76d3a273d\n\nChange-Id: I7c365f5f22927382788cbe7ecc4383af6565fa65\n"
    },
    {
      "commit": "80a288ad82f21b3254248c2b2df0dfe8a1443929",
      "tree": "c79d326a095f4ce0fb45490893bc41763cfa52d7",
      "parents": [
        "fefdf667a0c093ae069461bd75fa8dfa0289fa68",
        "32dc26e71cb0493f15b4b6480d991ad283405b42"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 06 22:12:05 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 06 22:12:05 2019 +0000"
      },
      "message": "Merge \"Sometimes no audio output after playing some clips using Files.apk\""
    },
    {
      "commit": "998004649870bc1ceb51a409ba340f0ea8de31b6",
      "tree": "d4ff3eaf49a7a9bef7daa7ec53d271fbb07f702a",
      "parents": [
        "27d7e20fa30756cadc6613e637e53fd9ada24ffd",
        "e0b975b56ab140c494ed12e71575f44154a8374b"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Fri Dec 06 00:26:38 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 06 00:26:38 2019 -0800"
      },
      "message": "Merge \"Allow OFFLOAD timestamp correction for MSD/BUS combinations\" am: 74cfcdf823 am: 8cc35dd935\nam: e0b975b56a\n\nChange-Id: I0dab7e32ef1489c7eac5972dcca7b7c88d2234d7\n"
    },
    {
      "commit": "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": "74cfcdf8237a455f8b8ec8e1b2a08fe777cf7512",
      "tree": "b2a807ef98f524f4ae78e3a26ce4564862725aaa",
      "parents": [
        "9410d2ed179da5df8087b588cf3b8965f8fe8957",
        "f8726f00877d2e9628537da771b12829afb92229"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 05 20:19:08 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 05 20:19:08 2019 +0000"
      },
      "message": "Merge \"Allow OFFLOAD timestamp correction for MSD/BUS combinations\""
    },
    {
      "commit": "b8269fd0946976cc820b0abb815f0fb67fc88b76",
      "tree": "1b65e96a5a38d1f9f37675c7e7e16f6f8389cd43",
      "parents": [
        "7946fbe6782ce25599d917d9357389ad1729f2db"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 11 12:16:27 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Dec 05 10:09:03 2019 -0800"
      },
      "message": "Use AudioDeviceTypeAddr when setting device for effects.\n\nSeparate SET_DEVICE and SET_INPUT_DEVICE command in effects as it can\nbe multiple devices for output case, but only single device for input\ncase.\nUse AudioDeviceTypeAddr instead of just audio device type as address\ncan be useful to identify audio device if there are multiple devices\nwith the same device type connected.\n\nBug: 135621476\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest EqualizerTest VirtualizerTest VisualizerTest\nChange-Id: Ie9df88e3338730392abbc3efae5daadc70398ff7\nMerged-In: Ie9df88e3338730392abbc3efae5daadc70398ff7\n"
    },
    {
      "commit": "f8726f00877d2e9628537da771b12829afb92229",
      "tree": "109f413c13e023c78416d559686740476079b612",
      "parents": [
        "0287266a3e2543268938e1b91129fb934b92b356"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Mon Dec 02 14:12:01 2019 +1100"
      },
      "committer": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Thu Dec 05 06:44:35 2019 +1100"
      },
      "message": "Allow OFFLOAD timestamp correction for MSD/BUS combinations\n\nTest: audioflinger dumpsys for MSD BUS offload threads show\n      timestamp correction enabled\nChange-Id: I044aaa5d1754ea08b3c78de75e7a4f0bc58dd269\n"
    },
    {
      "commit": "10d86fd087218d43254ec781612a9f86c0022e9d",
      "tree": "35246193cf7aaf924548f3cd15d763bd297d44aa",
      "parents": [
        "c010683e081f48eb72e21cbcf0458efc17184e6b"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 31 17:20:42 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 03 17:42:23 2019 -0800"
      },
      "message": "Refactor audio device type in audio flinger.\n\nAs audio device type must not be used as a bit mask, there is a\nrequirement to refactor the code in audio flinger. This CL includes:\n1. Use DeviceTypeSet for recording output devices in Threads. The input\nand output device types in Threads will only be updated when creating\nan audio patch.\n2. Use helper functions in audio flinger for checking whether an audio\ndevice type is a certain category.\n3. Use DeviceDescriptorBaseVector as vector of DeviceDescriptorBase.\nDeviceDescriptorBaseVector will be used in RecordThread to record output\ndevices, which will be used in audio effect.\n4. Do not use set parameters when communicating output devices to\nRecordThread. Instead, adding a new event in Thread to update output\ndevices directly.\n\nBug: 135621476\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest RoutingTest\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest AAudioTests\nTest: audio smoke test, run OboeTester\nChange-Id: I87f3e59fd01b0b100232d61a9abbc471c61110c4\nMerged-In: I87f3e59fd01b0b100232d61a9abbc471c61110c4\n"
    },
    {
      "commit": "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": "8d7522888db87e9533b286431f59c7e0b804a514",
      "tree": "ee1a14f6ddd4dea80dac7945c356599cfb5c9628",
      "parents": [
        "020b0dc578cbc5779293e27311c23099996690e0"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Oct 18 15:49:48 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 03 17:41:16 2019 -0800"
      },
      "message": "Move libmediahelper into a new folder.\n\nThis change mainly aims at refactoring libmediahelper. Libmediahelper\ndoesn\u0027t need to be stored in media folder. In that case, move\nlibmediahelper related file to a new folder. In the meantime, move\nAudioParameter.h from libaudioclient to libmediahelper. There is no\nneed to keep AudioParameter.h in libaudioclient while AudioParameter.cpp\nis in libmediahelper.\n\nTest: make\nBug: 135621476\nChange-Id: Icce6615b7e3a68be8b7492f2a91922ab04464ca2\nMerged-In: Icce6615b7e3a68be8b7492f2a91922ab04464ca2\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\""
    }
  ],
  "next": "48161d36a6cd17726512c87ba78f05da268b826c"
}
