)]}'
{
  "log": [
    {
      "commit": "0361312f054b7680002a6a00a4471e4d4f24feb6",
      "tree": "928064a39192abab4133a278db69c2dc1a094070",
      "parents": [
        "676ad0ec681475a2fa69a7e6ef893706420cd246",
        "9da281d1007267dcd023fb2c405e5320e8bd8bb7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 10 07:45:23 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 10 07:45:23 2021 +0000"
      },
      "message": "Merge \"[AudioPolicyManager] Voice Downlink Sink device selection\""
    },
    {
      "commit": "726677e6cc937fa6d8bcd93959a0d73853dc582c",
      "tree": "2235eaf0b751093600b9f54b51f652f7c37c21d2",
      "parents": [
        "3e28d78f8c7c8c07f6cb055240e8507f47b51454",
        "a078a607ef4f1611b15af13060c8bc562c130ada"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Mar 03 21:41:39 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 03 21:41:39 2021 +0000"
      },
      "message": "Merge \"Merge RQ2A.210305.007\""
    },
    {
      "commit": "8916ae92a5e36c165d8d94c87bb67bb828234e72",
      "tree": "8ae09d24bbca1d47f1e4db3f6574314b91ac9b5f",
      "parents": [
        "353d2e39948802eac48f2fe4329d9afd3e59a395"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Oct 21 13:04:58 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 01 17:17:42 2021 -0800"
      },
      "message": "APM: Fix config de-serialization\n\nAudio Policy Manager and EngineConfig now try to load only one\nreadable APM config file. Previously they could try several\nuntil one of them parses successfully. This could result in\nloading of different files by APM and EC due to use of different\nparts of the config.\n\nCentralize finding of APM config file in audio_config.h.\nThis allows using the same logic in AudioPolicyManager.cpp\nand EngineConfig.cpp which previously got duplicated\nand later diverged.\n\nEnsure that failed attempts to de-serialize config do not leave\nAPM or EC in a \"dirty\" state.\n\nBug: 171339398\nTest: check audio on the device\nTest: atest audiopolicy_engineconfig_tests\nTest: atest audiopolicy_tests\nChange-Id: I98c21ab03d869eb5f4259ea12cd433632cf6da5d\nMerged-In: I98c21ab03d869eb5f4259ea12cd433632cf6da5d\n"
    },
    {
      "commit": "395675863bdb5089e79348b9ccbcb37d0363f3a4",
      "tree": "1e1dba8fa4aafd4c507333295e4ddb5a9b13aaf7",
      "parents": [
        "b9d6ab019f7aeab9c02c670826ef70cd56bb3754",
        "51f482db8c822bb1ef0a833ad98f71613c0de51b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 24 22:02:51 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 24 22:02:51 2021 +0000"
      },
      "message": "Merge \"Support source device to MSD sink device direct patching\" am: 51f482db8c\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1593613\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: I952a0c719bf3ffc20acaacd73779ef3f763be742\n"
    },
    {
      "commit": "9da281d1007267dcd023fb2c405e5320e8bd8bb7",
      "tree": "34773f3a3b5b817eda040d40d5b16dcab9e8590e",
      "parents": [
        "fb5ef561e37afc7321884ecba1e32d87de5d33b2"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Feb 04 17:02:59 2021 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 24 12:56:09 2021 +0000"
      },
      "message": "[AudioPolicyManager] Voice Downlink Sink device selection\n\nAudio Policy selects the downlink sink device through the primary\noutput of the primary module.\nIt uses getNewOutputDevices on this output. If any routing strategy is\nactive on this output with an higher priority than voice call (it may\nhappen as order is defined in engine configuration file), downlink may\nbe temporarilly routed on this sink until the other client stops.\n\nThis CL changes the downlink sink device selection by\n-checking if a HW bridge is possible between the selected sink device\nfor voice call strategy and telephony RX device\n-falling back on \"legacy\" behavior if no HW bridge possible.\n\nTest: call with and without music active.\n\nChange-Id: I8b6a6648a72f6f69abdf4d49c205ccbd0efeb082\nMerged-In: I8b6a6648a72f6f69abdf4d49c205ccbd0efeb082\n"
    },
    {
      "commit": "5cbec5a804ca6e10cc18256dd3a1a62a59850fe3",
      "tree": "b44e453d3eb68be2157acad969f1206417fd7743",
      "parents": [
        "557ec27958f4b5c2a0028b25fb1d8497fe362cfb"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Wed Feb 10 16:02:23 2021 +1100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 24 12:48:37 2021 +0000"
      },
      "message": "Support source device to MSD sink device direct patching\n\nCurrently, device to device software patches between different\nhardware modules route to a sink\u0027s PCM opened output stream. To\nsupport compressed / direct audio patching from HDMI inputs to MSD,\nbuild an explicit MSD patch between the source device and MSD, which\nhas the advantage of supporting preferential audio configuration\nselection (e.g. IEC60958 over PCM).\n\nThis change also updates existing MSD methods to reflect that they\noperate on MSD output (MSD source to downstream) patches only.\n\nThis change also adds IEC60958 as the most preferred MSD patch format\nas it is suitable for transmission of both PCM and compressed audio.\n\nTest: atest audiopolicy_tests\nChange-Id: I259a15ac88e45f6bef5180a44967a58facfcfb56\nMerged-In: I259a15ac88e45f6bef5180a44967a58facfcfb56\n"
    },
    {
      "commit": "6a08a9293b732532e98607d41a42bc06a52e8184",
      "tree": "a33a0ab6ffb3cf820c22f1a9ee53d2001dfaf9bb",
      "parents": [
        "ad9882e76f9debbd2ada2b616d5f51b8908ed764",
        "0c3f0588700228d4d81dded56480d14857e1b2cd"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Sun Feb 21 09:25:04 2021 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Sun Feb 21 09:25:04 2021 -0800"
      },
      "message": "Merge ab/7061308 into stage.\n\nBug: 180401296\nMerged-In: Iffdea341e5cd3cc2ef82e1b9c0adf211b3c29381\nChange-Id: I9e0e28ec101bde3ee24c946e9fb5c11b1cceba64\n"
    },
    {
      "commit": "948e6aace91d16acfaa97763c7228029a1c2afe0",
      "tree": "e1213aacab8f21fd8bf9dcd02dbc82741013379f",
      "parents": [
        "367398038247b09a3f92e05affac5f9b1f5e2f90"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 12 21:02:31 2021 -0800"
      },
      "committer": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Tue Feb 16 04:09:57 2021 -0800"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to frameworks/av\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  apex/Android.bp\n  camera/cameraserver/Android.bp\n  camera/tests/Android.mk\n  cmds/screenrecord/Android.bp\n  cmds/stagefright/Android.mk\n  drm/common/Android.bp\n  drm/drmserver/Android.bp\n  drm/libdrmframework/Android.bp\n  drm/libdrmframework/plugins/common/util/Android.bp\n  drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.bp\n  drm/libdrmframework/plugins/forward-lock/internal-format/common/Android.bp\n  drm/libdrmframework/plugins/forward-lock/internal-format/converter/Android.bp\n  drm/libdrmframework/plugins/forward-lock/internal-format/decoder/Android.bp\n  drm/libdrmframework/plugins/passthru/Android.bp\n  drm/libmediadrm/Android.bp\n  drm/libmediadrm/fuzzer/Android.bp\n  drm/libmediadrm/protos/Android.bp\n  drm/libmediadrm/tests/Android.bp\n  drm/mediacas/plugins/clearkey/Android.bp\n  drm/mediacas/plugins/clearkey/tests/Android.bp\n  drm/mediacas/plugins/mock/Android.bp\n  drm/mediadrm/plugins/clearkey/common/Android.bp\n  drm/mediadrm/plugins/clearkey/default/Android.bp\n  drm/mediadrm/plugins/clearkey/default/tests/Android.bp\n  drm/mediadrm/plugins/mock/Android.bp\n  media/audioserver/Android.mk\n  media/bufferpool/1.0/Android.bp\n  media/bufferpool/1.0/vts/Android.bp\n  media/bufferpool/2.0/Android.bp\n  media/bufferpool/2.0/tests/Android.bp\n  media/codec2/components/aac/Android.bp\n  media/codec2/components/amr_nb_wb/Android.bp\n  media/codec2/components/aom/Android.bp\n  media/codec2/components/avc/Android.bp\n  media/codec2/components/base/Android.bp\n  media/codec2/components/cmds/Android.bp\n  media/codec2/components/flac/Android.bp\n  media/codec2/components/g711/Android.bp\n  media/codec2/components/gav1/Android.bp\n  media/codec2/components/gsm/Android.bp\n  media/codec2/components/hevc/Android.bp\n  media/codec2/components/mp3/Android.bp\n  media/codec2/components/mpeg2/Android.bp\n  media/codec2/components/mpeg4_h263/Android.bp\n  media/codec2/components/opus/Android.bp\n  media/codec2/components/raw/Android.bp\n  media/codec2/components/vorbis/Android.bp\n  media/codec2/components/vpx/Android.bp\n  media/codec2/components/xaac/Android.bp\n  media/codec2/core/Android.bp\n  media/codec2/faultinjection/Android.bp\n  media/codec2/fuzzer/Android.bp\n  media/codec2/hidl/1.0/utils/Android.bp\n  media/codec2/hidl/1.0/vts/functional/Android.bp\n  media/codec2/hidl/1.0/vts/functional/audio/Android.bp\n  media/codec2/hidl/1.0/vts/functional/common/Android.bp\n  media/codec2/hidl/1.0/vts/functional/component/Android.bp\n  media/codec2/hidl/1.0/vts/functional/master/Android.bp\n  media/codec2/hidl/1.0/vts/functional/video/Android.bp\n  media/codec2/hidl/1.1/utils/Android.bp\n  media/codec2/hidl/client/Android.bp\n  media/codec2/hidl/services/Android.bp\n  media/codec2/sfplugin/Android.bp\n  media/codec2/sfplugin/tests/Android.bp\n  media/codec2/sfplugin/utils/Android.bp\n  media/codec2/tests/Android.bp\n  media/codec2/vndk/Android.bp\n  media/codecs/amrnb/common/Android.bp\n  media/codecs/amrnb/enc/fuzzer/Android.bp\n  media/codecs/amrnb/fuzzer/Android.bp\n  media/codecs/amrwb/dec/fuzzer/Android.bp\n  media/codecs/amrwb/enc/Android.bp\n  media/codecs/amrwb/enc/SampleCode/Android.bp\n  media/codecs/amrwb/enc/fuzzer/Android.bp\n  media/codecs/amrwb/enc/test/Android.bp\n  media/codecs/g711/decoder/Android.bp\n  media/codecs/g711/fuzzer/Android.bp\n  media/codecs/m4v_h263/dec/Android.bp\n  media/codecs/m4v_h263/dec/test/Android.bp\n  media/codecs/m4v_h263/fuzzer/Android.bp\n  media/codecs/mp3dec/fuzzer/Android.bp\n  media/extractors/Android.bp\n  media/extractors/aac/Android.bp\n  media/extractors/amr/Android.bp\n  media/extractors/flac/Android.bp\n  media/extractors/fuzzers/Android.bp\n  media/extractors/midi/Android.bp\n  media/extractors/mkv/Android.bp\n  media/extractors/mp3/Android.bp\n  media/extractors/mp4/Android.bp\n  media/extractors/mpeg2/Android.bp\n  media/extractors/ogg/Android.bp\n  media/extractors/tests/Android.bp\n  media/extractors/wav/Android.bp\n  media/img_utils/Android.bp\n  media/libaaudio/Android.bp\n  media/libaaudio/examples/Android.bp\n  media/libaaudio/examples/input_monitor/Android.bp\n  media/libaaudio/examples/loopback/Android.bp\n  media/libaaudio/examples/write_sine/Android.bp\n  media/libaaudio/src/Android.bp\n  media/libaaudio/tests/Android.bp\n  media/libaudioclient/Android.bp\n  media/libaudioclient/tests/Android.bp\n  media/libaudiofoundation/Android.bp\n  media/libaudiofoundation/tests/Android.bp\n  media/libaudiohal/Android.bp\n  media/libaudiohal/impl/Android.bp\n  media/libaudioprocessing/Android.bp\n  media/libaudioprocessing/audio-resampler/Android.bp\n  media/libaudioprocessing/tests/Android.bp\n  media/libaudioprocessing/tests/fuzzer/Android.bp\n  media/libcpustats/Android.bp\n  media/libdatasource/Android.bp\n  media/libeffects/config/Android.bp\n  media/libeffects/downmix/Android.bp\n  media/libeffects/downmix/tests/Android.bp\n  media/libeffects/dynamicsproc/Android.bp\n  media/libeffects/factory/Android.bp\n  media/libeffects/loudness/Android.bp\n  media/libeffects/lvm/benchmarks/Android.bp\n  media/libeffects/lvm/lib/Android.bp\n  media/libeffects/lvm/tests/Android.bp\n  media/libeffects/lvm/wrapper/Android.bp\n  media/libeffects/preprocessing/Android.bp\n  media/libeffects/preprocessing/benchmarks/Android.bp\n  media/libeffects/preprocessing/tests/Android.bp\n  media/libeffects/proxy/Android.bp\n  media/libeffects/visualizer/Android.mk\n  media/libheif/Android.bp\n  media/libmedia/Android.bp\n  media/libmedia/tests/codeclist/Android.bp\n  media/libmedia/xsd/Android.bp\n  media/libmedia/xsd/vts/Android.bp\n  media/libmediahelper/Android.bp\n  media/libmediahelper/tests/Android.bp\n  media/libmediametrics/Android.bp\n  media/libmediaplayerservice/Android.bp\n  media/libmediaplayerservice/datasource/Android.bp\n  media/libmediaplayerservice/nuplayer/Android.bp\n  media/libmediaplayerservice/tests/Android.bp\n  media/libmediaplayerservice/tests/stagefrightRecorder/Android.bp\n  media/libmediatranscoding/Android.bp\n  media/libmediatranscoding/tests/Android.bp\n  media/libnbaio/Android.bp\n  media/libnblog/Android.bp\n  media/libstagefright/Android.bp\n  media/libstagefright/bqhelper/Android.bp\n  media/libstagefright/bqhelper/tests/Android.bp\n  media/libstagefright/codecs/aacdec/Android.bp\n  media/libstagefright/codecs/aacenc/Android.bp\n  media/libstagefright/codecs/amrnb/dec/Android.bp\n  media/libstagefright/codecs/amrnb/enc/Android.bp\n  media/libstagefright/codecs/amrwbenc/Android.bp\n  media/libstagefright/codecs/avcdec/Android.bp\n  media/libstagefright/codecs/avcenc/Android.bp\n  media/libstagefright/codecs/common/Android.bp\n  media/libstagefright/codecs/flac/dec/Android.bp\n  media/libstagefright/codecs/flac/enc/Android.bp\n  media/libstagefright/codecs/g711/dec/Android.bp\n  media/libstagefright/codecs/gsm/dec/Android.bp\n  media/libstagefright/codecs/hevcdec/Android.bp\n  media/libstagefright/codecs/m4v_h263/dec/Android.bp\n  media/libstagefright/codecs/m4v_h263/enc/Android.bp\n  media/libstagefright/codecs/mp3dec/Android.bp\n  media/libstagefright/codecs/mpeg2dec/Android.bp\n  media/libstagefright/codecs/on2/dec/Android.bp\n  media/libstagefright/codecs/on2/enc/Android.bp\n  media/libstagefright/codecs/opus/dec/Android.bp\n  media/libstagefright/codecs/raw/Android.bp\n  media/libstagefright/codecs/vorbis/dec/Android.bp\n  media/libstagefright/codecs/xaacdec/Android.bp\n  media/libstagefright/colorconversion/Android.bp\n  media/libstagefright/data/Android.bp\n  media/libstagefright/filters/Android.bp\n  media/libstagefright/flac/dec/Android.bp\n  media/libstagefright/flac/dec/test/Android.bp\n  media/libstagefright/foundation/Android.bp\n  media/libstagefright/foundation/tests/AVCUtils/Android.bp\n  media/libstagefright/foundation/tests/Android.bp\n  media/libstagefright/foundation/tests/OpusHeader/Android.bp\n  media/libstagefright/foundation/tests/colorutils/Android.bp\n  media/libstagefright/http/Android.bp\n  media/libstagefright/httplive/Android.bp\n  media/libstagefright/id3/Android.bp\n  media/libstagefright/id3/test/Android.bp\n  media/libstagefright/mpeg2ts/Android.bp\n  media/libstagefright/mpeg2ts/test/Android.bp\n  media/libstagefright/omx/Android.bp\n  media/libstagefright/omx/tests/Android.bp\n  media/libstagefright/rtsp/Android.bp\n  media/libstagefright/tests/Android.bp\n  media/libstagefright/tests/ESDS/Android.bp\n  media/libstagefright/tests/HEVC/Android.bp\n  media/libstagefright/tests/extractorFactory/Android.bp\n  media/libstagefright/tests/fuzzers/Android.bp\n  media/libstagefright/tests/mediacodec/Android.bp\n  media/libstagefright/tests/metadatautils/Android.bp\n  media/libstagefright/tests/writer/Android.bp\n  media/libstagefright/timedtext/Android.bp\n  media/libstagefright/timedtext/test/Android.bp\n  media/libstagefright/webm/Android.bp\n  media/libstagefright/webm/tests/Android.bp\n  media/libstagefright/writer_fuzzers/Android.bp\n  media/libstagefright/xmlparser/Android.bp\n  media/libstagefright/xmlparser/test/Android.bp\n  media/libstagefright/xmlparser/vts/Android.bp\n  media/libwatchdog/Android.bp\n  media/mediaserver/Android.bp\n  media/mtp/Android.bp\n  media/mtp/tests/Android.bp\n  media/tests/benchmark/Android.bp\n  media/tests/benchmark/MediaBenchmarkTest/Android.bp\n  media/tests/benchmark/MediaBenchmarkTest/src/main/cpp/Android.bp\n  media/tests/benchmark/src/native/common/Android.bp\n  media/tests/benchmark/src/native/decoder/Android.bp\n  media/tests/benchmark/src/native/encoder/Android.bp\n  media/tests/benchmark/src/native/extractor/Android.bp\n  media/tests/benchmark/src/native/muxer/Android.bp\n  media/tests/benchmark/tests/Android.bp\n  media/utils/Android.bp\n  media/utils/fuzzers/Android.bp\n  services/audioflinger/Android.bp\n  services/audiopolicy/Android.bp\n  services/audiopolicy/common/Android.bp\n  services/audiopolicy/common/managerdefinitions/Android.bp\n  services/audiopolicy/config/Android.bp\n  services/audiopolicy/engine/common/Android.bp\n  services/audiopolicy/engine/config/Android.bp\n  services/audiopolicy/engine/interface/Android.bp\n  services/audiopolicy/engineconfigurable/Android.bp\n  services/audiopolicy/engineconfigurable/config/Android.bp\n  services/audiopolicy/engineconfigurable/config/example/automotive/Android.bp\n  services/audiopolicy/engineconfigurable/config/example/caremu/Android.bp\n  services/audiopolicy/engineconfigurable/config/example/phone/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/plugin/Android.bp\n  services/audiopolicy/engineconfigurable/tools/Android.bp\n  services/audiopolicy/engineconfigurable/wrapper/Android.bp\n  services/audiopolicy/enginedefault/Android.bp\n  services/audiopolicy/enginedefault/config/example/Android.bp\n  services/audiopolicy/manager/Android.mk\n  services/audiopolicy/managerdefault/Android.bp\n  services/audiopolicy/service/Android.mk\n  services/audiopolicy/tests/Android.bp\n  services/camera/libcameraservice/Android.bp\n  services/camera/libcameraservice/fuzzer/Android.bp\n  services/camera/libcameraservice/tests/Android.mk\n  services/mediacodec/Android.bp\n  services/mediacodec/registrant/Android.bp\n  services/mediaextractor/Android.bp\n  services/medialog/Android.bp\n  services/medialog/fuzzer/Android.bp\n  services/mediametrics/Android.bp\n  services/mediametrics/benchmarks/Android.bp\n  services/mediametrics/fuzzer/Android.bp\n  services/mediametrics/tests/Android.bp\n  services/mediaresourcemanager/Android.bp\n  services/mediaresourcemanager/fuzzer/Android.bp\n  services/mediaresourcemanager/test/Android.bp\n  services/mediatranscoding/Android.bp\n  services/mediatranscoding/tests/Android.bp\n  services/minijail/Android.bp\n  services/oboeservice/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  media/codecs/amrnb/dec/Android.bp\n  media/codecs/amrnb/dec/test/Android.bp\n  media/codecs/amrnb/enc/Android.bp\n  media/codecs/amrnb/enc/test/Android.bp\n  media/codecs/amrwb/dec/Android.bp\n  media/codecs/amrwb/dec/test/Android.bp\n  media/codecs/m4v_h263/enc/Android.bp\n  media/codecs/m4v_h263/enc/test/Android.bp\n  media/codecs/mp3dec/Android.bp\n  media/codecs/mp3dec/test/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-MIT SPDX-license-identifier-Unicode-DFS\n    legacy_by_exception_only\nto:\n  Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT\n    SPDX-license-identifier-Unicode-DFS\nto:\n  apex/testing/Android.bp\n  camera/Android.bp\n  camera/ndk/Android.bp\n  media/ndk/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/Car/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/CarEmu/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/Phone/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/SettingsNoInput/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/SettingsNoOutput/Android.bp\n  services/audiopolicy/tests/resources/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 legacy_by_exception_only\nto:\n  drm/mediadrm/plugins/clearkey/hidl/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\n\nChange-Id: I8360756b326b891b56629127091540310851c941\nMerged-in: Ic169757d64ad8da7eebd0e1febdcbfb467fe81f4\nMerged-in: Ifa3fefe5dc12229e8043a54ffd1f3958d6b02310\nMerged-in: I1e32081a069c4c1b25aa200dcdb165c0feb07b8a\nMerged-in: Ib2050becaf89b8e4db5867bc601dedeb4eb8ebd2\nMerged-in: I5a4d51fb1244ed49bcd70e446aaa26e2aa8ed7b1\n"
    },
    {
      "commit": "b7637e9da12562aeee6b16cee1235cdc450c292a",
      "tree": "23b5e580d587a5dcd19434c77c2009e9aff4c6f3",
      "parents": [
        "6d604a5c5b46d42509bbacc205d2994631a16752"
      ],
      "author": {
        "name": "Michael Chan",
        "email": "michael.chan@dolby.com",
        "time": "Tue Dec 08 15:44:49 2020 +1100"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jan 29 17:02:16 2021 +0000"
      },
      "message": "APM: Create multiple MSD patches\n\nThis change modifies setMsdPatch() by first renaming to setMsdPatches()\nand replaces its parameter with a pointer to DeviceVector, so that\nmultiple devices can be patched from MSD. If none are specified it will\nestablish MSD patches with all reported downstream output devices. It\ntears down existing MSD patches and creates new ones for those MSD\npatches that do not support new patch requests. We retain the existing\nMSD patches that already support new patch requests.\n\nIn getBestMsdAudioProfileFor(), ensure output profiles considered for\nevaluating the best matching audio profile is supported by the output\ndevice under consideration.\n\nRefactor by placing common code that tears down current MSD patches into\na new function called releaseMsdPatches().\n\nWhen obtaining an output, getOutputForAttrInt() returns device ID of the\ndefault device if its ID matches that of one of the output devices\nprovided by the engine.\n\nAdd testing for dual MSD patch creation by parameterizing existing MSD\ntests for single and dual MSD patch cases. Add new unit test to exercise\nsetMsdPatches and releaseMsdPatches. Make private MSD module member\nfunctions protected to enable testing.\n\nBug: 135620198\nTest: audiopolicy_tests\nChange-Id: I59a8976ce82dba04ca69347afc192e9143ef3629\nMerged-In: I59a8976ce82dba04ca69347afc192e9143ef3629\n"
    },
    {
      "commit": "029e33e5854af4071d9d3c873a70d2fcc235f396",
      "tree": "3a2092c0fb4760d4aa952708b9d423a9e71f7345",
      "parents": [
        "2610b34be2f01c7f3a96e98e257d3d690a1eef28"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 23 18:19:44 2020 +0100"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 26 16:52:51 2021 -0800"
      },
      "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\nMerged-In: Ie52ebe198e9ebdfe5f2a38dcd44c551c705a7931\n"
    },
    {
      "commit": "06e324aec97bf76ef7141a80d6fde1f9d21addee",
      "tree": "4e1dc3304bd8bc2a7fe305c58ef22121a8cdb8d3",
      "parents": [
        "fa51ed78aa7172cecd75a19f4999c347a70b2c56"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Oct 14 18:02:07 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 14 09:25:13 2021 +0000"
      },
      "message": "AudioPolicyManager: keep track of activity for HW Audio Patches\n\nIn order to allow volume management for all volume sources, this\nCL adds Source Clients even in case of HW AudioPatches.\nIt uses the mixPort declared to reach the sink involved in the\nHW Audio Patch to add this client.\n\nTest: Manual: build \u0026 call \u0026 plays with HW / SW AudioBridges.\nAuto: (Non-regression on emulator)\nadb shell ./data/AudioPolicyEmulatorTests --gtest_filter\u003d*AudioPatchTest*\nadb shell ./data/AudioPolicyEmulatorTests --gtest_filter\u003d*AudioSourceTest*\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Iaf44db2fd9a90dde9ef8160869af73983a5feae4\nMerged-In: Iaf44db2fd9a90dde9ef8160869af73983a5feae4\n"
    },
    {
      "commit": "fa51ed78aa7172cecd75a19f4999c347a70b2c56",
      "tree": "c5fbd304017a4ed6cda091462d8ffebc6558b64a",
      "parents": [
        "d2c073b0f2df2f77ba98db585738984bb3067183"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Oct 14 16:13:20 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 14 09:24:41 2021 +0000"
      },
      "message": "audiopolicy: Primary Output runtime management\n\nIn case of unavailability of device(s) attached to the primary output,\nthis output can be disconnected.\nThe cache variable must be resetted, then restored when at least one\ndevice supported by one profile of the primary output is made\navailable again.\n\nTest: adb shell /data/nativetest64/AudioPolicyEmulatorTests/AudioPolicyEmulatorTests --gtest_filter\u003dAudioSourceTest*\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Iae8937cad3d70b0e8c7ff4516c27aa8eff231eaa\nMerged-In: Iae8937cad3d70b0e8c7ff4516c27aa8eff231eaa\n"
    },
    {
      "commit": "d2c073b0f2df2f77ba98db585738984bb3067183",
      "tree": "1db13dbd7a0d83b283ddaa7a1cb26564bb078761",
      "parents": [
        "5bd3d2d11dd58f296522d5bb134c260defaf622e"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Sep 29 16:05:07 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 14 09:24:20 2021 +0000"
      },
      "message": "audio policy: audio source automatic re-connection\n\nWhen an audio source is started, if either the sink or the source\nbecomes unavailable, the audio source is stopped.\nIt implies that the client must listen to patch/ports to become\naware that the source has been stopped.\n\nIn order to prevent this, it is possible to allow automatic re-connection\nof audio source as APM already keeps track of AudioSource.\n\nIn case of unavailability, source is only disconnected, not stopped to prevent\nfrom removing from tracking list.\n\nTest: adb shell /data/nativetest64/AudioPolicyEmulatorTests/AudioPolicyEmulatorTests --gtest_filter\u003d*AudioSourceBridgingTest*\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: I414195a85a06c9212420e3b51bf2863f3e08c755\nMerged-In: I414195a85a06c9212420e3b51bf2863f3e08c755\n"
    },
    {
      "commit": "5bd3d2d11dd58f296522d5bb134c260defaf622e",
      "tree": "f4e8bc41771303eae5eb11b88b2cf1c3938e0a87",
      "parents": [
        "133e9fcc795f5ae65b884948ca3376c4fec358c0"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed May 06 18:37:04 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 14 09:23:24 2021 +0000"
      },
      "message": "AudioPolicy: remove devices while Sw bridge established\n\nWhen devices are disconnected while involved in a SwBridge,\nthe connectAudioSource function may be called while the cache\nof the engine has not yet been updated with availability of devices.\n\nThis CL forces to retrieve sinkDevices from engine without using\nthe cache.\n\nIt also ensures that Audio Source using Direct Output are also\nre routed while sink device has been made UNAVAILABLE then AVAILABLE\nagain. In this case, no SwOutput will keep track of the AudioSource.\nOrphans Audio Source shall be handled independantly.\n\nSo far, robustness cases added to the following test.\nIn some case, fallback on speaker is allowed, in other,\ndevice none is selected while given sink has been made unavailable:\n\nTest: So far: adb shell /data/nativetest64/AudioPolicyEmulatorTests/AudioPolicyEmulatorTests --gtest_filter\u003dAudioPatchTest/AudioModeBridgingTest.\nadb shell /data/nativetest64/AudioPolicyEmulatorTests/AudioPolicyEmulatorTests --gtest_filter\u003dAudioSourceTest/AudioSourceBridgingTest.UsingAudioSourceAPI/\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: I2663d10f08de3191de4d95bc81749ede9b8a360f\nMerged-In: I2663d10f08de3191de4d95bc81749ede9b8a360f\n"
    },
    {
      "commit": "c6e6d625ff440804d4c743c981050944559a4bdd",
      "tree": "818ddac3ec2c8f94fff5c936659e322484afe178",
      "parents": [
        "a3f23cee27a0d94c13de99233399c438843ef1de",
        "61cc5c2a8dcd36b4658ca329cb3fd6f0874d96b1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 23 13:31:15 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Dec 23 13:31:15 2020 +0000"
      },
      "message": "Merge \"audio policy: phone strategy routing based on preferred device API\" am: af5c22012f am: 61cc5c2a8d\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1534354\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: I1fe8d8f65dedf73f7180294e851d5721bbae9f5e\n"
    },
    {
      "commit": "a3f23cee27a0d94c13de99233399c438843ef1de",
      "tree": "c1c82501a544f1b4885a58d9e4a91f775be507aa",
      "parents": [
        "81429402d87f7de056051e603e811bab32e5c8f1",
        "49bc142eaea22acd5b458d3fda0d16bb435fa314"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 23 09:44:49 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Dec 23 09:44:49 2020 +0000"
      },
      "message": "Merge \"Revert^2 \"Support device role for capture preset.\"\" am: 05c7bc9e01 am: 49bc142eae\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1534353\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: Ifbfeae103e4baf6785d769b44b53ec5309eb51cf\n"
    },
    {
      "commit": "cca11ce427e12110658ad5ea206f89c2ffd2af7a",
      "tree": "09d5a0a402054d4de954e33a0a3c68ce02742a0f",
      "parents": [
        "05c7bc9e01aed3301498313646669a5d103b28ca"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 25 15:31:27 2020 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 23 08:36:58 2020 +0000"
      },
      "message": "audio policy: phone strategy routing based on preferred device API\n\nUse preferred device API instead of forced usage to select\naudio route for phone strategy in default audio policy engine.\n\nAlso remove use of forced usage for record which was redundant with\nforced usage for communication (never used independently).\n\nBug: 161358428\nTest: audio smoke tests\nChange-Id: Ie0c36b69ae6849c6efe7b5602dc9d0322856f561\nMerged-In: Ie0c36b69ae6849c6efe7b5602dc9d0322856f561\n"
    },
    {
      "commit": "6e46824a30f72400949aa91355dd15be64888b43",
      "tree": "17b7fcd36f0eade201af3550a4869f52b19c42f1",
      "parents": [
        "e8a66c66bad62aa5ab4778ce7ac448d563eae335"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Thu Sep 03 17:54:16 2020 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 22 18:53:55 2020 +0000"
      },
      "message": "Revert^2 \"Support device role for capture preset.\"\n\nSupport set/add/remove/clear/get device role for capture preset. The\ndevice role can be DEVICE_ROLE_PREFERRED and DEVICE_ROLE_DISABLED. The\npreferred and disabled devices can be multiple devices. In this CL,\nonly cache preferred devices in engine but not use for audio routing.\n\nBug: 160352965\nTest: atest AudioServiceHostTest\nTest: atest audiopolicy_tests\n\nChange-Id: I368d562ec2aae68aa239dce75d54ca2772b30e76\nMerged-In: I368d562ec2aae68aa239dce75d54ca2772b30e76\n"
    },
    {
      "commit": "7e3b74149a1f1f4e190fae18bcee7ca7c9d711db",
      "tree": "a3edfc9ea7098c7c13e4d88e195d310c780a409f",
      "parents": [
        "d7bbbd501ce6b5cd646d1cbde29c678c86205b09",
        "2ed262362f00eb5b75fa9279f7695798d7356505"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 22 17:26:34 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Dec 22 17:26:34 2020 +0000"
      },
      "message": "Merge \"Introduce device(s) role for strategy.\" am: e8a66c66ba am: 2ed262362f\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1534352\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: I4de8dd00c660eda3c92c4662468520eed6bc3f94\n"
    },
    {
      "commit": "d7bbbd501ce6b5cd646d1cbde29c678c86205b09",
      "tree": "9cf406145e2fe5b6c5a21799f7467fed7da6de88",
      "parents": [
        "c8f7d1b44197147b5f48c0cca88b3e680a3f83d8",
        "7fe4bf069f4b972a20731828e9e3004a818a41d5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 22 12:13:06 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Dec 22 12:13:06 2020 +0000"
      },
      "message": "Merge \"Use AudioDeviceTypeAddrVector instead of Vector\u003cAudioDeviceTypeAddr\u003e\" am: 31bdb51946 am: 7fe4bf069f\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1534351\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: I62f71ae4905769303b3ea59020d0b6ad40e99cd4\n"
    },
    {
      "commit": "4e82621821c5adf1dbd3ef1911fc6a2a0becfbc8",
      "tree": "1de376a468b699ac4fe3f97fac00bc2c62052bda",
      "parents": [
        "c1afe3ba438699122aa2c3a66c3c58e87dd5525b"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 07 17:32:40 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 21 16:28:31 2020 +0100"
      },
      "message": "Introduce device(s) role for strategy.\n\nAdding interface to get/set/removeDevicesRoleForStrategy. The interfaces\nallows to modify the devices\u0027 role, such as preferred, for strategy.\nGet/set/removePreferredDeviceForStrategy is reimplemented by the new\ninterfaces.\n\nTest: atest AudioHostTest\nTest: atest AudioServiceHostTest\nTest: atest AudioServiceTest\nTest: atest audiopolicy_tests\nBug: 160352965\nChange-Id: I0af737542a8599938cae4e142b733159f21ed5a8\nMerged-In: I0af737542a8599938cae4e142b733159f21ed5a8\n"
    },
    {
      "commit": "c1afe3ba438699122aa2c3a66c3c58e87dd5525b",
      "tree": "1c1290b565c6989d90f91b00f6005176e74aa28c",
      "parents": [
        "d295e4b4bdc617ebdeb36deb97cb9597a5e603f1"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 07 11:56:38 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 21 16:28:18 2020 +0100"
      },
      "message": "Use AudioDeviceTypeAddrVector instead of Vector\u003cAudioDeviceTypeAddr\u003e\n\nAudioDeviceTypeAddrVector is std::vector\u003cAudioDeviceTypeAddr\u003e. In that\ncase, it is not needed to use Vector\u003cAudioDeviceTypeAddr\u003e. It is also\nsuggested to use the std::vector instead of Vector.\n\nTest: atest AudioHostTest\nTest: atest AudioServiceHostTest\nTest: atest audiopolicy_tests\nBug: 160352965\nChange-Id: Ibcd91fcba95c53e3c172ae62fc6f30e70509de51\nMerged-In: Ibcd91fcba95c53e3c172ae62fc6f30e70509de51\n"
    },
    {
      "commit": "802793489675990aa90a446ecceaffbc4e081120",
      "tree": "8db7299c19371f7ef8ab2c2f1328dbdcf5311f4d",
      "parents": [
        "cbf8ba955c3d0c95f15791a72b0e29fae873fd02",
        "49a6d9c78aaa07ab83494d628cc6b7a2386a2b55"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Thu Dec 03 03:18:52 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 03 03:18:52 2020 +0000"
      },
      "message": "Merge \"Merge rvc-qpr-dev-plus-aosp-without-vendor@6881855\" into stage-aosp-master"
    },
    {
      "commit": "9abebbaebcaaa09e98fd1d966289032406089521",
      "tree": "7126439c267d64cdc59a062cdb7a040f2f28ec09",
      "parents": [
        "5ffb3ef0be0aff54df6b554e5c78c598c4a5ce55",
        "a69f0713ab8ae25a7323773c97dfe707c34acdda"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 03 01:21:13 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Dec 03 01:21:13 2020 +0000"
      },
      "message": "Use system/audio to/from string converters in TypeConverter am: dc6be0d575 am: a69f0713ab\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1515658\n\nChange-Id: I7a32469c35e17c15bb5d147fcac930eef04c14ff\n"
    },
    {
      "commit": "49a6d9c78aaa07ab83494d628cc6b7a2386a2b55",
      "tree": "70acc7a3307c66d6ac1b7ee5cc59d88ebfacad34",
      "parents": [
        "9fa7856094a8705be2061e532c36e74d103719b8",
        "55f730f7c1a0b5f963f47fdd65c43609a143f18c"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Dec 02 00:41:55 2020 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Dec 02 00:41:55 2020 -0800"
      },
      "message": "Merge rvc-qpr-dev-plus-aosp-without-vendor@6881855\n\nBug: 172690556\nMerged-In: I72658443fde61aa5f10463fcc42772daf4143ed0\nChange-Id: Ifb9605a1f9407357ddc755551e2d1d51c7f09bfc\n"
    },
    {
      "commit": "dc6be0d5754e65ffa07fe8ef04ca4d28c2c0268b",
      "tree": "33e22ce5f12c4b75414dfa242de2190ae0515091",
      "parents": [
        "d19faf826761db767dc8ee967149fe8939416850"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 25 23:03:05 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Dec 01 23:39:39 2020 +0000"
      },
      "message": "Use system/audio to/from string converters in TypeConverter\n\nUse of system functions eliminates the need for listing all enum\nvalues in TypeConverter tables.\n\nSlight changes in the converting functions:\n\n1. \u0027channelMaskFromString\u0027 function now also accepts indexed\n   masks.\n2. Fixed UB in \u0027formatFromString\u0027 function.\n3. Removed \u0027deviceFromString\u0027 function, use\n   \u0027DeviceConverter::fromString\u0027 instead.\n\nReplaced direct includes of \u0027system/audio-base.h\u0027 with\nincludes of \u0027system/audio.h\u0027.\n\nBug: 142480271\nTest: m\nTest: atest libmedia_helper_tests\nChange-Id: Ia0e725026be80621bdc797299e63e134419b2b3d\nMerged-In: Ia0e725026be80621bdc797299e63e134419b2b3d\n"
    },
    {
      "commit": "1d9fbfd8a630c91c3f00b5abd0c6c18abd361eb8",
      "tree": "2df7afa58c8e58bc3ff046c9f18506c85f1eafac",
      "parents": [
        "8e654fb2bde447d96ffe40edf339fb12a83bafc7",
        "75f20e195a2c460162cc85f733dcbd6a6a3908c7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 01 18:50:32 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Dec 01 18:50:32 2020 +0000"
      },
      "message": "Merge \"audio policy manager: fix BT SCO stream mute\" into rvc-qpr-dev am: 75f20e195a\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12820562\n\nChange-Id: Id8ac86ffcb91652ea570b1541704337b4b83af0d\n"
    },
    {
      "commit": "8e654fb2bde447d96ffe40edf339fb12a83bafc7",
      "tree": "63d1de06e932b7d5850a2dbe79b2a98e3f795d24",
      "parents": [
        "ef888a66e6fc1013af4b24fed98f48dfb462ef01",
        "c410c10dfa725baf4307312d6c8abd8af02df3c5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 01 18:08:52 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Dec 01 18:08:52 2020 +0000"
      },
      "message": "Merge \"Convert mask types from uint32_t to enum type\" am: 7cd031828f am: c410c10dfa\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1510515\n\nChange-Id: I90c3487ebb936f37eb92bf862205c9bdb5eb1d09\n"
    },
    {
      "commit": "e3b59ac285356dfe1bd416d46672fe0b1f10dc6f",
      "tree": "cc260c7b2867101599cdba75b53b4e0578c7345f",
      "parents": [
        "7aacb78d8d049af5e9949de9fc34be4650b5b176"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 01 15:08:13 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Nov 24 22:56:29 2020 +0000"
      },
      "message": "Convert mask types from uint32_t to enum type\n\nThis applies to the following types:\n\n- audio_gain_mode_t;\n- audio_flags_mask_t;\n- audio_channel_representation_t;\n- audio_channel_mask_t;\n- audio_devices_t.\n\nEnum types are distinct thus proper overloading on the type\nis possible in C++. Also, assignments to enum types are\nless prone to errors.\n\nBug: 169889714\nTest: basic audio functionality\n      m stagefright\n      atest audiopolicy_tests\nChange-Id: I42506484b1d0b0482618b7314fad4c8012a06fb4\nMerged-In: I42506484b1d0b0482618b7314fad4c8012a06fb4\n"
    },
    {
      "commit": "3ea637c72fc519fd3e1d8eb8bd56c5b53122a1e7",
      "tree": "281967d765ac8260479b56730d3638598b80398c",
      "parents": [
        "5e710feacb9b8d8f7db1f4e15d2e9d2aac83da0e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 12 17:10:23 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 12 17:10:23 2020 -0700"
      },
      "message": "audio policy manager: fix BT SCO stream mute\n\nAllow setting voice and bluetooth SCO stream volume to 0\nin checkAndSetVolume() even when the selected device is\nbluetooth SCO to allow muting VoIP call downlink.\n\nBug: 170489272\nTest: repro steps in bug.\nChange-Id: If8b2d225742f9589cd21718d8a439531996434f9\n"
    },
    {
      "commit": "85109f953b728cbd50b36c18c48e52ef71f3bb95",
      "tree": "0f822ade4b9c29f5295be9f18a51cc2ef0d9b9d5",
      "parents": [
        "ec0f0ec225b7f5a95b305f0c4a345acc78874633",
        "b197286f8c5e01c02e5a04d4e8332c8eca3fda5e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 10 15:52:31 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Sep 10 15:52:31 2020 +0000"
      },
      "message": "Merge \"audio policy: fix beacon mute delay\" into rvc-qpr-dev am: b197286f8c\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12383405\n\nChange-Id: I899bd7396e7e54aef461ef75f5d78c65c7b40b85\n"
    },
    {
      "commit": "b197286f8c5e01c02e5a04d4e8332c8eca3fda5e",
      "tree": "e84d3182bbb1eab2b1a7c63b2fdb4b21c7695627",
      "parents": [
        "5fc17f2fae4fd72e7695bc828200eb3b8202a754",
        "33897bac9744f10c126b9f44488d390b4de49331"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 10 15:17:07 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 10 15:17:07 2020 +0000"
      },
      "message": "Merge \"audio policy: fix beacon mute delay\" into rvc-qpr-dev"
    },
    {
      "commit": "3803ff3ec558396240f6133ecbb22d02b931d142",
      "tree": "5c2b9367155715e704d22f137a64d4a8a1f85905",
      "parents": [
        "9447b48f36b1bf26645e6256dd29224b6a398161",
        "e1f1cb5827a6c99d41e05e090b3b382f3598a58e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 08 20:17:33 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Sep 08 20:17:33 2020 +0000"
      },
      "message": "audio policy: correct force use touch sound delay am: e1f1cb5827\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12539419\n\nChange-Id: I7b8ecc463d043da5c9e479bf92a73654ba8f3ad7\n"
    },
    {
      "commit": "e1f1cb5827a6c99d41e05e090b3b382f3598a58e",
      "tree": "5a867b160cc351c30d777319aad5c3f5fc727eee",
      "parents": [
        "d1fa2375194096937bbdfd2def97969c4336191b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 21 12:50:41 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 08 18:25:21 2020 +0000"
      },
      "message": "audio policy: correct force use touch sound delay\n\nDo not apply the special delay added in setForceUse() multiple times.\nThis delay was meant to be applied only once to avoid truncating touch\nsounds but is actually used multiple times when updating routes on all\noutput streams, thus lengthening the call audio path switch time\nunnecessarily.\n\nBug: 163537547\nTest: manual call routing test\nChange-Id: I6fe15d4ed9b1f37452921585e9f7684637e8a30b\n(cherry picked from commit b36b4accf36ba413529a0b6735802a65f42c2f7c)\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": "a818367360c9262c56d0317d4f2ee76057d8c606",
      "tree": "ffa16c1cc2bd1a706fc6c08ba13e0c34f55061eb",
      "parents": [
        "693f515a9ee576dbad44413c06802a8aafbe4ccb",
        "be7cabc2e0681e4b30afed1587be71f3c3e90b25"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 20 18:40:32 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Aug 20 18:40:32 2020 +0000"
      },
      "message": "Merge \"AudioPolicy: manager: force gain on startSource when using HW Gain\" am: ae1df9155c am: be7cabc2e0\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1296441\n\nChange-Id: I6a5ad41a3b34ca3a2ca209352100c868b277b007\n"
    },
    {
      "commit": "ae1df9155cd8244cc716a2b1fdfca9975220453d",
      "tree": "0736254f088e27512ee83a33a2e73c727ed27f7d",
      "parents": [
        "246b31dc7641b7e57f113fb89e429c75ed3d5b68",
        "d11442b6e4521d825779dd55494509e046f2c9f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 20 18:13:16 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 20 18:13:16 2020 +0000"
      },
      "message": "Merge \"AudioPolicy: manager: force gain on startSource when using HW Gain\""
    },
    {
      "commit": "33897bac9744f10c126b9f44488d390b4de49331",
      "tree": "5a9eddf934ce44652c6f1211aa582ceb0c4ec253",
      "parents": [
        "e52b8fa8fabd74555dd1ebb2e9405460a545a919"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 10:57:02 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Aug 15 01:13:44 2020 +0000"
      },
      "message": "audio policy: fix beacon mute delay\n\nOnly take output latency into account when the output is active\nwhen muting TTS stream. This avoid a systematic long delay the\nfirst time we play audio due to first beacon mute state change.\n\nBug: 37923452\nTest: repro steps in bug\nChange-Id: I10b21a55c0fad28344108b67756f600a29e41fea\n(cherry picked from commit cdb2b35c0f159a1a244599010ee9210d1e34c71d)\n"
    },
    {
      "commit": "c9ad9878f49137b748ec5dfcf905e778e99441c8",
      "tree": "871d3b03564f3c94570cffa87a2dfcb1b7bf4786",
      "parents": [
        "32ec02978e0b9f943795070120c2eee04427802d",
        "0f109dd701e3d326e6c0369f3fb3cbf028b9fa09"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 14 01:43:30 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Aug 14 01:43:30 2020 +0000"
      },
      "message": "Merge \"audio: add device definitions for BLE Audio\" am: 3ce5f38a37 am: 0f109dd701\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1398473\n\nChange-Id: I923a8efdf00dc6249c28576ec3972d8a2d80437c\n"
    },
    {
      "commit": "7a62f2936519104f93dc9015df22369127b37803",
      "tree": "33a0d431ef21fd9e9dce4d74981c1800dc186506",
      "parents": [
        "8debb9f333ed410669e3acbd0fb5cb7d694a2bad"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 10:51:53 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 13 20:19:00 2020 +0000"
      },
      "message": "audio: add device definitions for BLE Audio\n\nAdd support for device type enums for BLE Audio.\nThis CL just adds basic support in parsers and voloume curve\ncategories.\nNo policy implemented yet for the new devices.\n(cherry picked from commit c42df45d4b99c06391bca841638563335d0f59ef)\n\nBug: 161358428\nTest: make flash and boot\nChange-Id: I86134ea8436b24f817a9fe0f856e3489dd22fcc8\nMerged-In: I86134ea8436b24f817a9fe0f856e3489dd22fcc8\n"
    },
    {
      "commit": "d11442b6e4521d825779dd55494509e046f2c9f8",
      "tree": "e0aab3cd028428ddb9266ef55d98486cfd4fc59a",
      "parents": [
        "8debb9f333ed410669e3acbd0fb5cb7d694a2bad"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Apr 27 11:51:09 2020 +0200"
      },
      "committer": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Aug 13 13:04:39 2020 +0200"
      },
      "message": "AudioPolicy: manager: force gain on startSource when using HW Gain\n\nWhen a setVolume is called for a given volume source on a SwOutput,\nand if the SwOutput is connected to a device using HW Gain, the sync\nof the gain on AudioHAL is guarded by the activity of this volume source.\n\nWhen a new index is applied on a given volume source, if this source is\nnot active, the new index is cached but is not synced on AudioHAL.\n\nHence, once a client (aka a source) starts on a SwOutput,\nSwAudioOutputDescriptor::setVolume is called, but as index has not changed,\nsetVolume will bail out before applying the gain to the AudioHAL.\n\nThis CL forces to sync the volume upon startSource event if the SwOutput\ninvolved is connected to a device with HW Gain enabled.\n\nTest: build \u0026 basic audio tests.\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ief1d5314b7970de78298750550320e329283ee1a\n"
    },
    {
      "commit": "23b282c9f9a7dacb0cc9000940c755a21970f1b6",
      "tree": "601935ac55c38bd96ed660bbeac909d2c8d0f263",
      "parents": [
        "85bf50bfc09cf24d8454015e7553ab31f1946ff2",
        "af034fc9cb1d3de4334bb303d53b5dc8f83aa6f5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 10 17:53:53 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Aug 10 17:53:53 2020 +0000"
      },
      "message": "Merge \"Fix music output to speaker\" am: fc9e26a3e9 am: af034fc9cb\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1360120\n\nChange-Id: I84066fdea62f4ac3f559ddb7c7b1c37f5880e0fb\n"
    },
    {
      "commit": "bd2dcc4d0d6cf0ba6d7663bfb7ccfc60b9292f10",
      "tree": "ff0ee2efcda5b139f75dda189547424b241d633d",
      "parents": [
        "7c44826eaba2e3ff4483b127c6bc091e46d0604c"
      ],
      "author": {
        "name": "cnx421",
        "email": "cnx421@gmail.com",
        "time": "Sat Jul 11 14:58:44 2020 +0800"
      },
      "committer": {
        "name": "恶魔 地狱",
        "email": "cnx421@gmail.com",
        "time": "Mon Aug 10 01:24:35 2020 +0000"
      },
      "message": "Fix music output to speaker\n\nThis CL fixes a bug in audio policy where music switches to speaker when A2DP output mode switches from software encoder to offloaded encoder.\n\nBug: 153895044\n\nChange-Id: I15f707c9e96294b6cd6f21c0821c795d0570c39a\n"
    },
    {
      "commit": "7997351bc447cbbff9dc255faf62bc89c1c180c6",
      "tree": "c7c20ace22c488e57290f9f51ea4c599e4acc5c2",
      "parents": [
        "40eb0159372c16376a0755e5b86a3f7586fc3294",
        "e9458106aa39881cfa08673faf752f6ca6ea8e94"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Jul 01 23:11:06 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 01 23:11:06 2020 +0000"
      },
      "message": "Merge \"Include what you use: \u003ccutils/bitops.h\u003e for popcount\" am: a4d629d311 am: e9458106aa\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1354145\n\nChange-Id: I1613f16bdb589ab57f6d687578b0af9cbc7c664b\n"
    },
    {
      "commit": "76a13443cbfc7af0561522af166937ef370e2b68",
      "tree": "ce5cd8c1203122b61d05e446929977a85856c4b3",
      "parents": [
        "dbb9895007a7ecee6e2cc62705b24ba08b09932d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 01 12:10:59 2020 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 01 12:14:19 2020 -0700"
      },
      "message": "Include what you use: \u003ccutils/bitops.h\u003e for popcount\n\nTest: builds OK\nChange-Id: Ie717272df285303a63518f0342e1a4d2f41362c3\n"
    },
    {
      "commit": "456051d0b9f41986e982b07d4b5462e377534bfe",
      "tree": "78cb394b36e0265d54823dff9d826f582951acf6",
      "parents": [
        "04435f6bec3e65c1d4cfd0e356b89a2d025fb696",
        "5f829dead32af6da25656e77203f4ca59e578ba5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 30 16:39:05 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jun 30 16:39:05 2020 +0000"
      },
      "message": "Merge \"Fix direct/offload thread output devices into MSD\" am: 24c46f1741 am: 5f829dead3\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1340017\n\nChange-Id: Ib15f682b137b827cd6d3cdf4ff75803ed06bf17c\n"
    },
    {
      "commit": "514b431cac26626260df703a7b1504717b948e22",
      "tree": "15050e1e0fd465901076dfc1fa8a65b9179bd7cf",
      "parents": [
        "c1d40b64b1ee652f173153fb2520201bbed56679"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Wed Jun 17 21:45:00 2020 +1000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jun 29 23:13:56 2020 +0000"
      },
      "message": "Fix direct/offload thread output devices into MSD\n\nWithout this change, direct/offload threads show\n\"Output devices:  (Empty device types)\". Empty device\ncauses timestamp correction to always be disabled for\noutput threads requiring timestamp correction.\n\nTest: check direct/offload output into MSD dumpsys output devices\n      atest audiopolicy_tests\nBug: 159948389\nChange-Id: I7006c9da2f0a228dd49ce0297c30035fef983090\n"
    },
    {
      "commit": "79ea958e3bedbdfe625fffdd0423a4b94dfc1182",
      "tree": "bf4ff094fd9c8e233c4db2fc9f9bde4cf128ebbf",
      "parents": [
        "3244d0db9d52223d417df71b6343064adbcad957"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 11 18:49:24 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 12 17:26:33 2020 -0700"
      },
      "message": "Audio policy: fix failure to unmute strategy.\n\nWhen setOutputDevices() is called with a device not supported by the\noutput profile, checkDeviceMuteStrategies() was not called.\nIf a strategy was muted by this output because of a previous\ndevice combination, it will never be unmuted.\nA typical repro scenario is:\n1) music plays over A2DP via offload path\n2) incoming call: ringtone plays over speaker + A2DP\n   \u003d\u003e music is paused by audio focus\n3) music manually resumed\n   \u003d\u003e media strategy is muted because it cannot play over\na2dp + speaker\n4) call answered and routed to earpiece\n   a) offload output is routed to earpiece which is not\nsupported by offload output profile\n   \u003d\u003e we fail to unmute media\n   b) music stream is invalidated because earpiece is\n   not supported by offload output\n   \u003d\u003e offload output is closed and we will never unmute media strategy\n\nFixed by calling checkDeviceMuteStrategies() before exiting in\ncase of unsupported device.\n\nBug: 157344812\nTest: repro steps in bug\nTest: audio regression tests\nChange-Id: I0c1c189c038803a584dc222aee50c3a99c572263\n"
    },
    {
      "commit": "c209fe49e74dc30100a6f409c616f04382d48f05",
      "tree": "afa05faf2118a2f09b308341a9d227df57bcb723",
      "parents": [
        "ea5f4133c7c029ffb988f4aa454c45c86294531c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 05 18:11:23 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 08 18:56:15 2020 -0700"
      },
      "message": "audio policy: output selection upon dynamic policy registration\n\nForce reevalution of output selection for AudioTrack clients when a\ndynamic audio policy (DAP) of type RENDER is registered or unregistered.\nFor LOOPBACK policies, this is not needed because the remote submix\ndevice is connected or disconnected triggering output reevaluation.\n\nAlso refactor checkOutputForAttributes to take actual output selection\nfor each client associated to a DAP instead of blindly forcing stream\ninvalidation as soon as an output associated with a DAP is found.\nThis covers direct outputs as the output is not opened when the DAP\nis registered.\n\nBug: 130296239\nTest: AudioHostTest\nTest: AudioServiceHostTest\nTest: audiopolicy_tests\nTest: regression with auto projected mode and live caption\nChange-Id: I07977e7902eb31c59621462a8fe2d7d1a4b1ba36\n"
    },
    {
      "commit": "8e544543add8e4e0e53f6b27a265254e6af2422b",
      "tree": "00175e73755007accffd18f0b48d40a2360bc303",
      "parents": [
        "e0c3d791757109b0302cf74e7027bcada2221b1f"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon May 11 14:12:53 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 02 14:17:13 2020 -0700"
      },
      "message": "AudioPolicy: manager: fix patch list growing up\n\ncommit 3b17354a caused potential stale audio patches\nrecords in audio policy manager for patches associated\nwith audio flinger software patches sharing an output mixer.\n\nBug: 136121584\nTest: dumpsys media.audio_policy \u0026\u0026\nadb shell /data/nativetest64/AudioPolicyEmulatorTests/AudioPolicyEmulatorTests --gtest_filter\u003dAudioPatchTest/AudioModeBridgingTest.\n\u0026\u0026 dumpsys media.audio_policy:\nensure list of patches did not grow up\nTest: atest audiopolicy_tests\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ife8035dc2d2d9c0b568d6847ca5eb0d2cba77cea\n"
    },
    {
      "commit": "1c4794bfdee92c9491312432bd966d2439c49179",
      "tree": "0947f6dea04e00753357a87d2ab38cb9d6fd13e4",
      "parents": [
        "eaad70fbfcec64206f42a11071efa683efe0c3ab"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue May 05 10:08:05 2020 -0700"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Fri May 08 00:37:55 2020 +0000"
      },
      "message": "Support query encapsualtion modes and metadata types.\n\nWhen a new device is attached to hardware module, query the HAL to get\nthe supported encapsulation modes and metadata types.\n\nTest: atest EnumDevicesTest, manually\nTest: atest audiofoundation_parcelable_test\nBug: 155799506\nChange-Id: I903e46e35a44416c9f2d206c128face8a6c61dcb\n"
    },
    {
      "commit": "c64e0ab206323877dc4bc6cdefa509c0e8f5e08f",
      "tree": "e52e7cac0bccd47305ab7e571d132c8f9737c8a2",
      "parents": [
        "199012b0c66d555207d81fedb7cce16305c865f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 15:59:34 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 15:59:34 2020 -0700"
      },
      "message": "audio policy: fix crash if output for DAP is not opened\n\nFix crash in getOutputForAttrInt() if the output corresponding to\nthe mix returned by AudioPolicyMix is not opened and the device\nselected by the mix is not attached.\nBefore commit c529cf6f, a policy mix without opened output would not\nbe retuned by AudioPolicyMix.getOutputForAttr(). With direct\noutput suppoort, this is possible but should be ignored if the device\nselected by the policy mix is not attached.\n\nBug: 155430290\nTest: AudioHostTest\nTest: AudioServiceHostTest\nTest: audiopolicy_tests\nTest: manual mirroring and car projection tests\nChange-Id: I66be4a3c5fb8b9ae0674c0f1e6e39de7f18ed2fb\n"
    },
    {
      "commit": "0e26e3f980a9904f23f24b0390844dcfeedd1418",
      "tree": "537c172187d9dd6bf3155c0a2a9c85c7b0a06669",
      "parents": [
        "ec660f185a1e212b1d22125de81e9bd1d0ff58a3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 29 14:24:16 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 00:15:50 2020 +0000"
      },
      "message": "Audio policy: fix areAllDevicesSupported()\n\nFix areAllDevicesSupported() where HwModules.getDeviceDescriptor()\nmust be called with matchAddress \u003d\u003d true: if the caller does not want to\ndistinguish on address it can leave the address field empty in the\nAudioDeviceTypeAddr passed which has the same effect as using\nmatchAddress \u003d\u003d false.\n\nAlso fix places where device_distinguishes_on_address() was improperly\nused in place of audio_is_remote_submix_device().\n\nBug: 155224229\nTest: build and launch car emulator\nTest: AudioHostTest\nTest: AudioServiceHostTest\nTest: audiopolicy_tests\nTest: manual mirroring and car projection tests\nChange-Id: I74295de95bcd82e7fa439c396ae32749b9c70c05\n"
    },
    {
      "commit": "c529cf6fa9b500506d675ec971909dba18cfb71b",
      "tree": "ebd662d9270ac9ca37849fa7a44b16fe73cd4abd",
      "parents": [
        "02d69c15b683418de39901a74f1eea8ddbfcbf40"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 17 18:19:10 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 27 14:42:06 2020 -0700"
      },
      "message": "audio policy: allow direct outputs for dynamic audio policies\n\nAdd support for direct outputs with RENDER audio policy mixes.\nA mix of type render can be registered even if no corresponding\noutput is opened to reach targeted device provided a direct output\nprofile exist for this device.\n\nAlso:\n- Fix setUidDeviceAffinities(): was not closing direct outputs\nopened by checkOutputsForDevice() and was not re-evaluating routes\n\n- Fix removeUidDeviceAffinities(): was not re-evaluating routes\n\n- Implement consistent sanity checks on selected devices in\nsetUidDeviceAffinities(), setUserIdDeviceAffinities() and\nsetPreferredDeviceForStrategy().\n\n- Fix onNewAudioModulesAvailableInt(): attached devices reachable only\nvia direct outputs were not loaded.\n\nBug: 130296239\nTest: AudioHostTest\nTest: AudioServiceHostTest\nTest: audiopolicy_tests\nTest: manual test: Auto projection over USB, screen mirroring\nChange-Id: I54470b61b4bc7e041e3a295764d368c5ded21268\n"
    },
    {
      "commit": "27cf37ca3ed87077c4beaceb2f7373c98e16737c",
      "tree": "f22fffa28ae98f0bb8319aaa0a5a82f15ed8fb89",
      "parents": [
        "a6127a935639f127db56974851abc2dda360eca2"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Apr 14 14:47:01 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 17 01:54:47 2020 +0000"
      },
      "message": "audio: Centralize audio configuration paths specification\n\nThe list of possible paths for the audio configuration\nfiles is now retrieved using audio_get_configuration_paths()\nfunction. All duplicated lists of known configuration\ndirectories have been removed.\n\nBug: 153680356\nTest: test audio on built image working\n      atest VtsHalAudioV6_0TargetTest VtsHalAudioPolicyV6_0TargetTest\nChange-Id: I8c369442f5ca7baa17df95e6a001396fc9de5681\nMerged-In: I8c369442f5ca7baa17df95e6a001396fc9de5681\n"
    },
    {
      "commit": "a89bd207aad8de70d4376ec7108306f18fcc8133",
      "tree": "75372d956702224c0f0624d2d7ee4e486b493e5a",
      "parents": [
        "a85def6612ade71bd31a0d60e45ee7e0068af638",
        "c0884de8b9a3c7ba3755356717b94bfdfc5eb31d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 16 23:21:24 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Apr 16 23:21:24 2020 +0000"
      },
      "message": "Merge \"audio: Centralize audio configuration paths specification\" am: c0884de8b9\n\nChange-Id: I4efd1b4423efe2734c7ba79a3bac75ceb78f0036\n"
    },
    {
      "commit": "c0884de8b9a3c7ba3755356717b94bfdfc5eb31d",
      "tree": "79fd2da36b706d97e239e988221cfd34069d24d6",
      "parents": [
        "ada7c446d5579a57238a2fd89bcee6ca32c68786",
        "edc0ae1ebc8ec716f327269552ceaf81fbd874a0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 16 23:05:30 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 23:05:30 2020 +0000"
      },
      "message": "Merge \"audio: Centralize audio configuration paths specification\""
    },
    {
      "commit": "edc0ae1ebc8ec716f327269552ceaf81fbd874a0",
      "tree": "f393c230c74478be53856618c5169998f0ff71b0",
      "parents": [
        "04f759bfd400f64bd7d17e9e3fd725d1e2cea31e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Apr 14 14:47:01 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Apr 14 14:47:01 2020 -0700"
      },
      "message": "audio: Centralize audio configuration paths specification\n\nThe list of possible paths for the audio configuration\nfiles is now retrieved using audio_get_configuration_paths()\nfunction. All duplicated lists of known configuration\ndirectories have been removed.\n\nBug: 153680356\nTest: test audio on built image working\n      atest VtsHalAudioV5_0TargetTest VtsHalAudioPolicyV1_0TargetTest\nChange-Id: I8c369442f5ca7baa17df95e6a001396fc9de5681\n"
    },
    {
      "commit": "2beb1dedfdc0c7f92fa4dc4628795578291dc7ad",
      "tree": "1332ca819b7e2d3f222a4afbd39d3585320b87aa",
      "parents": [
        "19b1a8e0b729d0fc06518e5c5619950b747aaaab",
        "8607a8bae7da02e77166da6079f4a1ff24261919"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 14 21:16:47 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Apr 14 21:16:47 2020 +0000"
      },
      "message": "Merge \"AudioPolicy: managerdefault: fix onAudioDeviceUpdate callback\" am: 8607a8bae7\n\nChange-Id: Ie17695801cdb5266c8dd8cb816ced979ae2095f5\n"
    },
    {
      "commit": "8607a8bae7da02e77166da6079f4a1ff24261919",
      "tree": "31b3c6faab94e2e0de3c044bcaa177092ef07055",
      "parents": [
        "a224da5c41cc54a526bfed7a2027223557167f89",
        "3b17354a89c230442c81211ccdb64653a4defa12"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 14 21:00:06 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 14 21:00:06 2020 +0000"
      },
      "message": "Merge \"AudioPolicy: managerdefault: fix onAudioDeviceUpdate callback\""
    },
    {
      "commit": "3b17354a89c230442c81211ccdb64653a4defa12",
      "tree": "1898597d4c8bcfcf90acea0ca40ae47575d2cf88",
      "parents": [
        "6861be79547c425ee21370bef55adbdd7bcb54c3"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Apr 06 17:39:47 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 13 20:25:00 2020 +0000"
      },
      "message": "AudioPolicy: managerdefault: fix onAudioDeviceUpdate callback\n\nScenario: startAudioSource (SW bridge) started, then stopped.\nAF patch is released, so PlaybackThread has empty patch.\n\nNext playback using the same sink will not recreate any patch\non AF as same device (and output desc has still valid patch handle)\n\nHence, ioconfichanged will get PORT NONE as sink device, no\nonAudioDeviceUpdate cb can be fired.\n\nThis CL fixes this issue by reset of patch handle on the output\n\nTest: startAudioSource / stopAudioSource then playback on the same\nsink. Ensure onAudioDeviceUpdate is fired\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ia9c2570f687166f38335ed7efae28920f7acc474\nMerged-In: Ia9c2570f687166f38335ed7efae28920f7acc474\n"
    },
    {
      "commit": "7feb854e9ff78e8ca64e012af874503569905924",
      "tree": "5fc22308c6ebd0a7f2066a8d7acf19a18e4347a5",
      "parents": [
        "141095dce0006e73b7941367c4b03f64c6ae997d"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Apr 06 17:39:47 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 13 13:21:15 2020 -0700"
      },
      "message": "AudioPolicy: managerdefault: fix onAudioDeviceUpdate callback\n\nScenario: startAudioSource (SW bridge) started, then stopped.\nAF patch is released, so PlaybackThread has empty patch.\n\nNext playback using the same sink will not recreate any patch\non AF as same device (and output desc has still valid patch handle)\n\nHence, ioconfichanged will get PORT NONE as sink device, no\nonAudioDeviceUpdate cb can be fired.\n\nThis CL fixes this issue by reset of patch handle on the output\n\nBug: 136121584\nTest: startAudioSource / stopAudioSource then playback on the same\nsink. Ensure onAudioDeviceUpdate is fired\nTest: atest RoutingTest\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ia9c2570f687166f38335ed7efae28920f7acc474\n"
    },
    {
      "commit": "4da6b39d74fb762d06cda16762514b11df098954",
      "tree": "712d62f18fa99438e6669351161327d2ecf62526",
      "parents": [
        "b3358b86368d4b4bd52bf5ab1b9495c39465b435",
        "674ce2363382aced0104f52addf191364aa4e6a5"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Apr 07 11:26:39 2020 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Apr 07 11:26:39 2020 -0700"
      },
      "message": "DO NOT MERGE - Merge QQ2A.200405.005 into master\n\nBug: 150877681\nMerged-In: I9425baa21c82d5a5edf37c87989adbade0428b67\nChange-Id: I1bb8ab72286578d07cfd23fdad1f0ddc17949db6\n"
    },
    {
      "commit": "2e717a0265d6b95094946fb5ca41035019fa9716",
      "tree": "a6b431d6066a92be07956c3d8808680ed1b856c7",
      "parents": [
        "65328604dedbb0c01937efa0e831e62a191869f8",
        "85732f4121889191410448cfc19c336e0ea69285"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 07 01:15:26 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 07 01:15:26 2020 +0000"
      },
      "message": "Merge \"audio policy: fix mmap stream invalidation logic\" into rvc-dev"
    },
    {
      "commit": "1cb0a63dd903b8548685a99eb4d544890e1fd78f",
      "tree": "e10cbe626fe00665539266f21703fd5a122369d0",
      "parents": [
        "4a23235ad6a7a963982888da882f5292ce30e0b3",
        "242a9f8db150d0fe94c9cb95dde768edaa649a1c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 26 19:16:55 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 26 19:16:55 2020 +0000"
      },
      "message": "Merge changes I5e12b2c7,Ic79effb1 into rvc-dev\n\n* changes:\n  [audiopolicy][managerdefault] Filter unknown stream for volume settings\n  [AudioPolicy][engine][Strategy] fallback on music stream\n"
    },
    {
      "commit": "07b846f69ad071c930e61cbe3817d5b0a73831fe",
      "tree": "42bc469402ca37bd592652251485d0714b94c532",
      "parents": [
        "5b615f346d5ba51d2b3923997e755d3dd590db2d",
        "0ec4c815ac927c4dbd76e1df4761425d771de427"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 26 11:13:14 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Mar 26 11:13:14 2020 +0000"
      },
      "message": "Merge \"APM: Notify the client about new audio ports\" am: 272808c329 am: 0ec4c815ac\n\nChange-Id: I9928116b708a496d29aabf382553e98499335b84\n"
    },
    {
      "commit": "0ec4c815ac927c4dbd76e1df4761425d771de427",
      "tree": "687399b671582aa80caf35a37bbdc1518aa1f15c",
      "parents": [
        "a093f06459bcf7ebc9f73783acab06b1eb2f0c51",
        "272808c329b808adee88d4f1d715b9e209236bff"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 26 10:58:49 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Mar 26 10:58:49 2020 +0000"
      },
      "message": "Merge \"APM: Notify the client about new audio ports\" am: 272808c329\n\nChange-Id: I978e68758ab051dd16354054e9743dc98378dd26\n"
    },
    {
      "commit": "272808c329b808adee88d4f1d715b9e209236bff",
      "tree": "dcc1a2264c4c4b96e79332b91a267c105e6fa728",
      "parents": [
        "1d0e52cf31987ec3f91d46caed992971047ae068",
        "a30ec1468fc8c3779673bb91a338956f26b5d807"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 26 10:47:01 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 26 10:47:01 2020 +0000"
      },
      "message": "Merge \"APM: Notify the client about new audio ports\""
    },
    {
      "commit": "a30ec1468fc8c3779673bb91a338956f26b5d807",
      "tree": "6b42f2d3e4da6be2f8b594bfbeee8991847a854e",
      "parents": [
        "bc0f22e33fa5adc5a8873489a5270ba93f94b5a1"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 24 09:32:34 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 25 20:22:26 2020 -0700"
      },
      "message": "APM: Notify the client about new audio ports\n\nAdded missing notification to the APM client\nabout new audio ports. This should make the\nports provided by the newly discovered HAL\nto be available to apps.\n\nProcess the onNewAudioModulesAvailable notification\non the \"APM Output\" command thread to avoid clashing\nwith outgoing commands from APM during module\ninitialization.\n\nBug: 149854039\nTest: atest audiopolicy_tests\nChange-Id: I3fede7f5a04419b15e15476d8b5ac7dc6d63c98d\nMerged-In: I3fede7f5a04419b15e15476d8b5ac7dc6d63c98d\n"
    },
    {
      "commit": "d0e2c74984f7542cc154a899190bda100ef38671",
      "tree": "ee96ed7f289021026ab9bf29b252cad3240c0c3d",
      "parents": [
        "3006a83565b6863f247bf634faa929b84608026e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 25 15:59:59 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 25 17:04:49 2020 -0700"
      },
      "message": "APM: Notify the client about new audio ports\n\nAdded missing notification to the APM client\nabout new audio ports. This should make the\nports provided by the newly discovered HAL\nto be available to apps.\n\nProcess the onNewAudioModulesAvailable notification\non the \"APM Output\" command thread to avoid clashing\nwith outgoing commands from APM during module\ninitialization.\n\nBug: 149854039\nTest: atest audiopolicy_tests\nChange-Id: I3fede7f5a04419b15e15476d8b5ac7dc6d63c98d\n"
    },
    {
      "commit": "242a9f8db150d0fe94c9cb95dde768edaa649a1c",
      "tree": "c2239970a597d68f9cc03863805a7b54287b9108",
      "parents": [
        "fd5779fa71d1a2fcb9f9e57e7e46137cefb65f5c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 23 15:57:04 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 25 11:59:05 2020 -0700"
      },
      "message": "[audiopolicy][managerdefault] Filter unknown stream for volume settings\n\nStream for which no attributes is associated (aka no strategy supports it)\nwill use default attributes hence it will change the default strategy\nvolume (aka Music).\nIt leads to eroneous volume changes.\nThis bug does not happen on phone / tablets targets as all streams are\nlinked to a strategy with specifc attributes.\nIn case of OEM configuration, some stream types may not be supported\nand associated to any strategy.\n\nBug: 136121584\nTest: dumpsys audio \u0026 dumpsus media.audio_policy.\n    Ensure volumes of stream types and their aliases match.\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: I5e12b2c7248074d10affb6c28d1866d4589cb9e8\nMerged-In: I5e12b2c7248074d10affb6c28d1866d4589cb9e8\n"
    },
    {
      "commit": "d6bd328e22c932348a35c46d6fd4c845a1d414b5",
      "tree": "cf3bf4b06123f4f532f250c54fa4a4f3f191830e",
      "parents": [
        "79270b9121b3c2972a281b42860f853e39663692",
        "ae36a0b59be8af2bd7100a9e3e4433daca7a7a69"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 21 02:41:13 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Mar 21 02:41:13 2020 +0000"
      },
      "message": "Merge changes I5e12b2c7,Ic79effb1 am: 0141bbe644 am: ae36a0b59b\n\nChange-Id: I1ed7d32d85e20cccb461d2f2e7acf1efca7d2539\n"
    },
    {
      "commit": "ae36a0b59be8af2bd7100a9e3e4433daca7a7a69",
      "tree": "f1b64173fdf992a3af4e209aaede73f51fda7e65",
      "parents": [
        "916c6b14ebb05ecdc0a27b4794226dca53001c15",
        "0141bbe644288f980b4448c430e73ff8b5ea9a30"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 21 02:20:05 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Mar 21 02:20:05 2020 +0000"
      },
      "message": "Merge changes I5e12b2c7,Ic79effb1 am: 0141bbe644\n\nChange-Id: I67e68d4b55b6cea51182ba62a549e74f1c89bdbb\n"
    },
    {
      "commit": "5992b18e6196af182c549b9c73d805cbc11bb31a",
      "tree": "dc7aebb76fbce56e90b3d521b0618980a6d36af3",
      "parents": [
        "a69a879deb6523416ef882e4d4d4134ffc786fc5"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Mar 20 14:55:14 2020 +0100"
      },
      "committer": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Mar 20 15:03:01 2020 +0100"
      },
      "message": "[audiopolicy][managerdefault] Filter unknown stream for volume settings\n\nStream for which no attributes is associated (aka no strategy supports it)\nwill use default attributes hence it will change the default strategy\nvolume (aka Music).\nIt leads to eroneous volume changes.\nThis bug does not happen on phone / tablets targets as all streams are\nlinked to a strategy with specifc attributes.\nIn case of OEM configuration, some stream types may not be supported\nand associated to any strategy.\n\nTest: dumpsys audio \u0026 dumpsus media.audio_policy.\n    Ensure volumes of stream types and their aliases match.\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: I5e12b2c7248074d10affb6c28d1866d4589cb9e8\n"
    },
    {
      "commit": "85732f4121889191410448cfc19c336e0ea69285",
      "tree": "95f34d584a0ad4a2695b67ef7de733a5825b357f",
      "parents": [
        "f57740fc311c80bc7e62fde8b03b4f8f4d34ccda"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 19 11:31:10 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 19 17:49:51 2020 -0700"
      },
      "message": "audio policy: fix mmap stream invalidation logic\n\nImplement a MMAP stream invalidation logic consistent with AAudio\ndisconnect callback policy.\n\n- When a MMAP stream is opened with a preferred device selection:\n  Invalidate the stream only when the preferred device becomes unavailable,\n  either because disconnected or not selectable by highest priority use case.\n- When a MMAP stream is opened without explicit device selection:\n  Invalidate the stream when current device selection changes due to the\n  routing rules applicable to the stream\u0027s audio attributes (attributes\n  of first client on that stream).\n\nBug: 144020984\nTest: OboeTester \u003e TEST DISCONNECT\n\nChange-Id: I70fde0bc8ab9d544b8d3badb713e6239d792cbdb\n"
    },
    {
      "commit": "f1dec13713381b1991b9bb8f1988605c9a41bc3c",
      "tree": "a149ed59585509462eb8f06f843a1df36fdf2b8e",
      "parents": [
        "ac2f85bf6b6b5443d1f98b1259beaf5ceda72e0d",
        "22452540c56dfa16b6dad176cddc312d9ba6664d"
      ],
      "author": {
        "name": "Jasmine Cha",
        "email": "chajasmine@google.com",
        "time": "Wed Mar 18 07:09:47 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Mar 18 07:09:47 2020 +0000"
      },
      "message": "audio policy: fix disordered sequence while changing device am: 7f82d1a74e am: 22452540c5\n\nChange-Id: I95fc728e8bb434ff51f495e29f174b682b4798fa\n"
    },
    {
      "commit": "8d386f779d76eb2a87ec570bf6ee3c0ce674085f",
      "tree": "23882c11fc70381e07df23e416d1eb101e1debdc",
      "parents": [
        "c7c50f47ce0998ea6d2ea5f40abc937fbde278e2",
        "7f82d1a74e77e0a89fd8431dbaf68f9b8e8b7118"
      ],
      "author": {
        "name": "Jasmine Cha",
        "email": "chajasmine@google.com",
        "time": "Wed Mar 18 06:51:02 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Mar 18 06:51:02 2020 +0000"
      },
      "message": "audio policy: fix disordered sequence while changing device am: 7f82d1a74e\n\nChange-Id: I8a46ba81d6055e097c7328a79e9d945ad83bda81\n"
    },
    {
      "commit": "7f82d1a74e77e0a89fd8431dbaf68f9b8e8b7118",
      "tree": "2bdca4c4ccac9de11c954108c71c6d2293c66be8",
      "parents": [
        "a5d212cfee978920684ad90f4b9bb3cfb3eeee8a"
      ],
      "author": {
        "name": "Jasmine Cha",
        "email": "chajasmine@google.com",
        "time": "Mon Mar 16 13:21:47 2020 +0800"
      },
      "committer": {
        "name": "Bubble Fang",
        "email": "bubblefang@google.com",
        "time": "Wed Mar 18 01:16:26 2020 +0000"
      },
      "message": "audio policy: fix disordered sequence while changing device\n\n  Disordered sequence will occur when delayMs of muting volume\n  and changing path are the same and no additional delay between\n  both commands (muteWaitMs \u003d\u003d 0).\n  Add half reported latency to delayMs for routing could avoid\n  processing muting stream volume and switching path concurrently.\n\nBug: 149798335\nTest: Make VoIP/voice call and switch device between handset/handsfree.\n      Check if touch tone is truncated in QXDM.\n\nSigned-off-by: Jasmine Cha \u003cchajasmine@google.com\u003e\nChange-Id: Ifa15ba9de330805637cfb20ee96c4293c1c1bd31\n"
    },
    {
      "commit": "560095bfbfb43586c416dbabc33077369293a596",
      "tree": "a797eec3eed5009c238b08168ca19444c86942e0",
      "parents": [
        "40a5d55ea454d8e59b7b65e51be9edd30dd7da92"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 05 16:28:57 2020 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 11 09:37:48 2020 -0700"
      },
      "message": "Allow for late audio module discovery in APM\n\nExtract code that loads hardware modules and fills out\nmAvailable{Input|Output}Devices into a reusable function.\nIt is used both during APM initialization and on\nreceiving a notification that a new HAL service has\nbeen discovered.\n\nBug: 149854039\nBug: 151187299\nTest: atest audiopolicy_tests\nChange-Id: Ifb7f0b61b06a0609802e63dccb26f3472328ef48\nMerged-In: Ifb7f0b61b06a0609802e63dccb26f3472328ef48\n"
    },
    {
      "commit": "21762fa512c3d47bf0a78ffbfe3969ebabed2004",
      "tree": "740678fbbc90985039ec2ec445ab8ec9d93fc8df",
      "parents": [
        "47daf67f562b366a37c11a6b8de12d81840497d0"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 05 16:28:57 2020 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 10 15:36:34 2020 -0700"
      },
      "message": "Allow for late audio module discovery in APM\n\nExtract code that loads hardware modules and fills out\nmAvailable{Input|Output}Devices into a reusable function.\nIt is used both during APM initialization and on\nreceiving a notification that a new HAL service has\nbeen discovered.\n\nBug: 149854039\nTest: atest audiopolicy_tests\nChange-Id: Ifb7f0b61b06a0609802e63dccb26f3472328ef48\nMerged-In: Ifb7f0b61b06a0609802e63dccb26f3472328ef48\n"
    },
    {
      "commit": "c0d04987f6f7bd6e054210b1ca33a827afce650b",
      "tree": "32385a3831d727298a1a766d09183c28a93e2f5d",
      "parents": [
        "c62ad13ad8da6b31168f0d9f3e5f2a770ed0bbee"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 02 21:02:28 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 09 20:19:42 2020 +0000"
      },
      "message": "Allow for late audio module discovery in APM\n\nExtract code that loads hardware modules and fills out\nmAvailable{Input|Output}Devices into a reusable function.\nIt is used both during APM initialization and on\nreceiving a notification that a new HAL service has\nbeen discovered.\n\nBug: 149854039\nTest: atest audiopolicy_tests\nChange-Id: Ifb7f0b61b06a0609802e63dccb26f3472328ef48\n"
    },
    {
      "commit": "09a836a39eaaf7446f04bf72e6cd6ce31f2f0289",
      "tree": "2728ac40e6265e5f577be57cf24b1e76c44557b8",
      "parents": [
        "b2182ac1b80112aae33a0b3edf639397a55a1041",
        "2c00365e4e941badc979b8b0c0d08fc132cb8ec7"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 12 21:34:36 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 12 21:34:36 2020 +0000"
      },
      "message": "Merge \"[AudioPolicyManager] Fix mute/unmute while use DevicePortGain\" am: fc11cf146c am: 17a72c3f55 am: 2c00365e4e\n\nChange-Id: I68ab92a1713f16de70209ecaf087a3a1e3d8f6b2\n"
    },
    {
      "commit": "2c00365e4e941badc979b8b0c0d08fc132cb8ec7",
      "tree": "7f5ee49ad87808bad509a1cc4529f71b4327d2c0",
      "parents": [
        "ab2774489795f99a1bc97e5be0815fe978ee443c",
        "17a72c3f55dfab1564252634e8425fb5195dffe9"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 12 21:20:08 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 12 21:20:08 2020 +0000"
      },
      "message": "Merge \"[AudioPolicyManager] Fix mute/unmute while use DevicePortGain\" am: fc11cf146c am: 17a72c3f55\n\nChange-Id: I0eb4a47d468c013d71ce68abbd995543afb6bb64\n"
    },
    {
      "commit": "ed91f58c8a4aa652bd937fe5af0442cea7aa5959",
      "tree": "8007baa3d2b9e686a1455dff60c0b27f81b4c45b",
      "parents": [
        "c9a69d37969689ab912373b04626e8bd8882ce58"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Jan 31 10:35:37 2020 +0100"
      },
      "committer": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Feb 12 11:21:28 2020 +0100"
      },
      "message": "[AudioPolicyManager] Fix mute/unmute while use DevicePortGain\n\nIn case of using Device Port Gain to control the volume, the logic\nof setVolumeIndexForAttributes for device type check has been bypassed.\n\nHowever, in case of unmuting, the volume will be applied to all streams\nwith requested device then will be set for AUDIO_DEVICE_OUT_DEFAULT_FOR_VOLUME\nwhich is a convention used in case of no volume for device has been set\npreviously.\nAs this logic is bypassed, in case of HwGain, the final gain applied will\nbe the one for AUDIO_DEVICE_OUT_DEFAULT_FOR_VOLUME, which may be completely\ndifferent from the gain of current device.\n\nThis CL fixes this by factorizing the device check logic for both SW/HW gains.\n\nTest: build \u0026 play music \u0026 Vol - until mute then volume +. No gap expected.\nChange-Id: I24c57df84496e404c05c92f08f907131ef79cf3a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "25134ebcd771b73a7e2048f883eaca11c4fc8472",
      "tree": "5b78d72227f653a2cfeb859d780e5809d9e4e946",
      "parents": [
        "61df392ec23c16caccf800a8d078c683c07863ef"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 10:06:18 2019 +0000"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Wed Feb 12 01:18:34 2020 +0000"
      },
      "message": "Revert \"audiopolicy: align input and output devices for engine\"\n\nThis reverts commit 4b8d5ce58d98d4a163f63e17735450a7cac4821c.\n\nBug: 132241823\nReason for revert: Breaks Screen Mirroring during Live caption\n\nChange-Id: I4bf711e5c5e4233fcf58bda5477380b488fde2fa\n(cherry picked from commit e0d004fe12fc2535d62d52bea0666b690ba057b0)\n(cherry picked from commit 66d0e72c9da1d5af852556872262a1e928796389)\n"
    },
    {
      "commit": "0d1a1207ce4bfd97ac58701cee0d1822f3f44fab",
      "tree": "cd4efc606bd1acf2c79beec368b6dd633acdad9f",
      "parents": [
        "0848bf51f51992c8f4be8748f209244b96e062c5",
        "d0a8ff659dc9c99383e5dc4eabfeec9c68479b7c"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Feb 06 02:55:07 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Feb 06 02:55:07 2020 +0000"
      },
      "message": "Merge \"Revert \"audiopolicy: align input and output devices for engine\"\" into qt-qpr1-dev am: 6302adca26 am: d0a8ff659d\n\nChange-Id: Ibe604a19c059b0b911730e66ef867099e5328f3f\n"
    },
    {
      "commit": "66d0e72c9da1d5af852556872262a1e928796389",
      "tree": "3be360927a116b19c19f4ee80f75cdf8af987598",
      "parents": [
        "6e51a2630a656c3f7bb3324f40221970832d8a35"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 10:06:18 2019 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 01 00:09:55 2020 +0000"
      },
      "message": "Revert \"audiopolicy: align input and output devices for engine\"\n\nThis reverts commit 4b8d5ce58d98d4a163f63e17735450a7cac4821c.\n\nBug: 132241823\nReason for revert: Breaks Screen Mirroring during Live caption\n\nChange-Id: I4bf711e5c5e4233fcf58bda5477380b488fde2fa\n(cherry picked from commit e0d004fe12fc2535d62d52bea0666b690ba057b0)\n"
    },
    {
      "commit": "ad447b7e7f45d90a3ddf1e181fb4cf9e1d112bde",
      "tree": "f3fb593d38accc9f5f91ce5e584f1d61dc8237cf",
      "parents": [
        "e55b684c7d452fe09c3a224bfd60b495c8f6af14"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Nov 18 15:50:22 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 24 18:52:43 2020 +0000"
      },
      "message": "audiopolicy: apm: factorize internal patch creation/release\n\nThis CL removes duplicated code for patch creation for\n-voice call\n-system API to create patches.\n-system API to start/stop AudioSource\n\nIt creates internal methods to create/release Audio Patches.\n\nThe benefit of this rework is to have startAudioSource now working\nwhatever Sw or HW bridging is used.\n\nTest: Voice Call\nBug:\nChange-Id: I82738d116abd94f7738fce8ca3a1c3466942060a\nMerged-In: I82738d116abd94f7738fce8ca3a1c3466942060a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "90c5793536026f6f6f0299640321e18870aed761",
      "tree": "cad510a72b42070805b3a27d0336059c267cbabc",
      "parents": [
        "10ef43ff1c024fa9c61d42cc5dca00b6c66de112",
        "e8e0e7a52b4ead4a4eb4e3616e4810994f37966d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 24 02:32:53 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 24 02:32:53 2020 +0000"
      },
      "message": "Merge changes I249d9ef1,I2c75b4bf,I0da109d6,I82738d11\n\n* changes:\n  [AudioPolicyService] Add creation of DeviceEffects\n  [audioeffect] add support of device effect in config parser\n  audioeffect: add missing sources to deserializer config file\n  audiopolicy: apm: factorize internal patch creation/release\n"
    },
    {
      "commit": "afd4cea46c12f55a7ccd47271314d59d833aa5c0",
      "tree": "4d920dc931fe9605f8d5197b38da07bd913816ad",
      "parents": [
        "0bc6f60e1f036380bd48d022631e6561b90f210c"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Nov 18 15:50:22 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 23 15:40:06 2020 -0800"
      },
      "message": "audiopolicy: apm: factorize internal patch creation/release\n\nThis CL removes duplicated code for patch creation for\n-voice call\n-system API to create patches.\n-system API to start/stop AudioSource\n\nIt creates internal methods to create/release Audio Patches.\n\nThe benefit of this rework is to have startAudioSource now working\nwhatever Sw or HW bridging is used.\n\nTest: Voice Call\nBug: 136294538\nChange-Id: I82738d116abd94f7738fce8ca3a1c3466942060a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "d8a987392d7f5fc8969a62cf34467c39e01f1d91",
      "tree": "b20bf2edf5ab8730fa7854a26f211b12ecb99c2f",
      "parents": [
        "98cbb9d8ba5427fb8095f17050f66d19d532da6f",
        "90e776378afb43385d8759fa1169acab92f8ed94"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Thu Jan 23 13:32:23 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 23 13:32:23 2020 +0000"
      },
      "message": "Merge \"Added audio policy api to do route based on user.\""
    },
    {
      "commit": "90e776378afb43385d8759fa1169acab92f8ed94",
      "tree": "0225cee9d8bcb3c57bd8a49084902c7cade42479",
      "parents": [
        "c55cdbafff6450155d4282a30ef025d6cecf5b3e"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Wed Nov 27 17:12:28 2019 -0800"
      },
      "committer": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Thu Jan 23 00:33:17 2020 +0000"
      },
      "message": "Added audio policy api to do route based on user.\n\nAdded new API to audio policy to route audio output streams based on\nAndroid user id. The routing remains similar to uid rules, with only\nusing USERID_EXCLUDE_USERID to decide on the user id base routing.\nApplication uid and stream usage routing remain the same with the added\ndifference that user id will be taken in to consideration if available.\nBug: 139365417\nTest: atest\ncom.google.android.gts.audio.AudioHostTest#testUserIdDeviceAffinity\nTest: atest AudioPlaybackCaptureTest\nChange-Id: Ib817eb8ae19ed7dea8451e8a8584a20b9b6f5042\n"
    },
    {
      "commit": "f5614e2fa3fa1a38e3a6fa4c058424fc053be651",
      "tree": "826e1d7bad7bc2cb38886621bb2bf79825a5b5b2",
      "parents": [
        "acee494af3d3c22f734cbf4c4d21afa93409f5c7",
        "cd51052e56c18894986d6ec7a2c6e625353c55b1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 22 20:03:10 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 22 20:03:10 2020 +0000"
      },
      "message": "Merge \"Clean up error logging audio device type collection.\""
    },
    {
      "commit": "cd51052e56c18894986d6ec7a2c6e625353c55b1",
      "tree": "02d75de5b045fdac47a04971dcccf5d2bb9c24b7",
      "parents": [
        "2c5b3c2f90acaf233112c7921e4c75a88d7a7227"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jan 22 09:40:55 2020 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jan 22 10:31:17 2020 -0800"
      },
      "message": "Clean up error logging audio device type collection.\n\nThere are some usages of very verbose logging audio device type\ncollection as unsigned int, which is missed in previous refactoring CLs\nsince they are not shown up without enabling very verbose log.\n\nBug: 148110286\nTest: make with enabling very verbose log in AF and AP\nChange-Id: If31b7e3dd7b094e011cb88dcb4a5d0c3e8d81bd4\n"
    },
    {
      "commit": "524159db6d53cecc93de4133e0875be937437883",
      "tree": "37358040ec4d8deacf9486f9312a61ba3e3ebefc",
      "parents": [
        "ff1725382653dfa2db8536edc38a6b1f2c166f2a"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Mon Dec 23 14:41:47 2019 -0800"
      },
      "committer": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Thu Jan 16 15:59:19 2020 -0800"
      },
      "message": "Adding support for new System Usages\n\nAdding system usages to native layer functions including 4 new usages\nand setSupportedSystemUsage API\n\nBug: 141006627\nTest: Built, ran, and verified types showed up in dumpsys\nChange-Id: I282c6b40ed9256ced5efb59b42da95a8fb0a6398\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": "2623d365228384ccab82169f65f2c5971cfedf60",
      "tree": "ae5698609bd6d7231958ac53ba16feaff2a2f2b3",
      "parents": [
        "f0a91423d480c4634e647c4e4a1fe760580f7ff2",
        "f41599b115c9b3fc13a5fe00186067885a31c3ba"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 11 03:10:52 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 11 03:10:52 2020 +0000"
      },
      "message": "Merge \"APM: support querying of audio playback routing\""
    },
    {
      "commit": "f41599b115c9b3fc13a5fe00186067885a31c3ba",
      "tree": "b35290ea7ef244758abf9ead2cdce78b1614c4ec",
      "parents": [
        "684e4758669bacea71379735d49bdc74807772f3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jan 07 14:22:08 2020 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jan 10 12:35:43 2020 -0800"
      },
      "message": "APM: support querying of audio playback routing\n\n  Add support for querying the audio devices used for playback\nrouting for the given audio attributes.\n  Take into account registered dynamic policies but disregard\nsecondary output descriptors as they are used for playback\ncapture.\n\nBug: 144440677\nTest: atest AudioServiceHostTest\nChange-Id: I102c57b432b044dc6b0ead49e0a30d8e9094411d\n"
    }
  ],
  "next": "d1ce689ac43bfd6c75c2f15a349e475396d04dcd"
}
