)]}'
{
  "log": [
    {
      "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": "a702052dc6b012c5ed2ea2c106fa8eec6c146ccb",
      "tree": "4398974a312a55497a171dc6eecaf1cef6a0d927",
      "parents": [
        "1e2b6013c9d9ceb39530806507b40f688f553568"
      ],
      "author": {
        "name": "wei wang",
        "email": "wei.wang@amlogic.com",
        "time": "Thu Dec 10 21:36:11 2020 -0500"
      },
      "committer": {
        "name": "wei wang",
        "email": "wei.wang@amlogic.com",
        "time": "Tue Jan 05 01:50:02 2021 +0000"
      },
      "message": "audiopolicy: default engine audio source add blutooth ble device [1/1]\n\nPD# SWPL-37970\nBug:175350838\n\nProblem:\nadd audio input dev (AUDIO_DEVICE_IN_BLUETOOTH_BLE ) for BLE RC voice\n\nSolution:\ndefault engine audio source add blutooth ble device\n\nVerify:\nverify by ohm\n\nSigned-off-by: wei wang \u003cwei.wang@amlogic.com\u003e\nChange-Id: I1894f6821034b475f83e99cb6e1dc75e1f5b6514\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": "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": "d77befba846e74864fac3acc9e51ff4af91dc986",
      "tree": "449aefdfd3d70fb2e8c79354ede7964b3911b879",
      "parents": [
        "80cd5274e93b1ee4389619c6a6aa1716d60aa671"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 07 08:42:28 2020 -0700"
      },
      "committer": {
        "name": "Jakub Pawlowski",
        "email": "jpawlowski@google.com",
        "time": "Mon Oct 26 14:16:57 2020 +0000"
      },
      "message": "audio policy: default routing rules for BLE audio devices\n\nAdd default audio routing rules for BLE audio devices in audio\npolicy manager engine.\n\nAlso remove isA2dpSupported() helper: checking if a2dp is supported\nbefore selecting an A2DP device is redundant as the device connection\nwould have been rejected in the first place if A2DP was not supported.\n\nThe implementation for communication use cases is not final until a new API is\nadded to control routing to BLE audio similarly to what exists for\nBluetooth SCO or speakerphone.\n\nBug: 161358428\nTest: regression on audio playback and capture routing, especially with\nhearing aid, Bluetooth A2DP and Bluetooth SCO.\n\nChange-Id: If07150dc4495aeee5e796d891fd3ce98965bf5f9\nMerged-In: If07150dc4495aeee5e796d891fd3ce98965bf5f9\n"
    },
    {
      "commit": "4ffca8764be4b177cd08dfbd0705ad1e236709ce",
      "tree": "be2657e20b7222754d29d14d8f2f1fe309bffc62",
      "parents": [
        "0e30ca64372f8e4dab5cbe3d2b0e326081c4fb2f",
        "2e40c302d6117ec6eb65f25832a71488367b4dfb"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Sep 01 20:03:43 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 01 20:03:43 2020 +0000"
      },
      "message": "Merge \"Merge Android R (rvc-dev-plus-aosp-without-vendor@6692709)\" into stage-aosp-master"
    },
    {
      "commit": "58fb14aa84f41329fccc7185701ffbf502f77114",
      "tree": "6e40f2c53934ba0246207e8be722204106f0a5d7",
      "parents": [
        "579a5284be48aec4905160464716011cc7e89b9c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 31 12:13:12 2020 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 31 12:16:26 2020 -0700"
      },
      "message": "Fix file permissions to remove execute bit on ordinary files\n\nTest: N/A\nChange-Id: I9e85ebe5479ae7f021a69942630fc9c876d4116b\n"
    },
    {
      "commit": "74e2e7c68d4e337d35cfe31b908849efe7a622d8",
      "tree": "654193be9c41ce12dc26c99f98e58bc553d4571d",
      "parents": [
        "c953348bfc2b419105e09a895073e317f89eeb59",
        "649738b538419944edbfd6ea153a0154b97a04a0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jun 13 02:21:02 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Jun 13 02:21:02 2020 +0000"
      },
      "message": "Merge \"[AudioPolicy][engineconfigurable] audioattribute should match audio_stream_assist first\" am: 84b712329f am: 649738b538\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1332917\n\nChange-Id: Ie9074caca5c79262050092b74cda97b753376105\n"
    },
    {
      "commit": "7a196eb6e70b5f9ef92375e9ebf173385f6e8692",
      "tree": "21055d117de920df3e213cd67b78884d0ba9f64c",
      "parents": [
        "ec49ef405b5080e95ace57e5ee7a0c6b7eb593f5"
      ],
      "author": {
        "name": "liuxiaoyu7",
        "email": "liuxiaoyu7@xiaomi.com",
        "time": "Fri Jun 12 17:07:01 2020 +0800"
      },
      "committer": {
        "name": "liuxiaoyu7",
        "email": "liuxiaoyu7@xiaomi.com",
        "time": "Fri Jun 12 17:43:39 2020 +0800"
      },
      "message": "[AudioPolicy][engineconfigurable] audioattribute should match audio_stream_assist first\n\nif app play audio using uage AUDIO_USAGE_ASSISTANT,\nattribute to stream should return audio_stream_assist first instead of audio_stream_music\n\naudio_stream_assist:\n attrBuilder.setUsage(AudioAttributes.USAGE_ASSISTANT);\n attrBuilder.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH);\n\naudio_stream_music:\nattrBuilder.setUsage(AudioAttributes.USAGE_ASSISTANT);\n\nSigned-off-by: liuxiaoyu7 \u003cliuxiaoyu7@xiaomi.com\u003e\nChange-Id: Ied2f0c076c53ecfd374fb58b48f0e5da07e3c7a8\n"
    },
    {
      "commit": "80ae6b47137017c81d776f9d0e2e5849f96c41ac",
      "tree": "fa7c17eb93859b6008c156fbcdeb519a23ee7c0a",
      "parents": [
        "27c20f484c31ca66b84c43e1cdd09908b0d13c28"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 10 13:15:08 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 13 15:51:54 2020 +0000"
      },
      "message": "audiopolicy: Remove global static initializers\n\nReplace global static instances of non-primitive\ntypes with function static instances. The latter\nget initialized on the first call to the function\ninstead of module load time.\n\nThis also gets rid of ASAN UAF errors reported\nduring unit test execution.\n\nBug: 150649241\nTest: atest audiopolicy_tests\nTest: atest audio_health_tests\n  (for ASAN-instrumented libraries and test)\nChange-Id: I514c9205b9d3e7a3f0a1d8aa71d71fcc792e7a7b\nMerged-In: I514c9205b9d3e7a3f0a1d8aa71d71fcc792e7a7b\n"
    },
    {
      "commit": "f90036285d193c6903fe8c2ffc4b27ae40701c2d",
      "tree": "9b9a264025963188e857adb7e3d9466e32342ed9",
      "parents": [
        "c62ad13ad8da6b31168f0d9f3e5f2a770ed0bbee"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 10 13:15:08 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 10 22:29:12 2020 +0000"
      },
      "message": "audiopolicy: Remove global static initializers\n\nReplace global static instances of non-primitive\ntypes with function static instances. The latter\nget initialized on the first call to the function\ninstead of module load time.\n\nThis also gets rid of ASAN UAF errors reported\nduring unit test execution.\n\nBug: 150649241\nTest: atest audiopolicy_tests\nTest: atest audio_health_tests\n  (for ASAN-instrumented libraries and test)\nChange-Id: I514c9205b9d3e7a3f0a1d8aa71d71fcc792e7a7b\n"
    },
    {
      "commit": "575fdea51e704e8819976010151fcfcdb82018db",
      "tree": "86ab240335f9b381c20122a83f7d7dd8a6a009c8",
      "parents": [
        "eeb2d61b7f123b87c1fdb359035ced62e5f0dbb9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 07 17:24:01 2020 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 10 17:10:15 2020 -0800"
      },
      "message": "Revert \"Revert \"[audiopolicy][enginebase] Fix schema verification\"\"\n\nThis reverts commit a98bfa5b27ead22c145a5335b2634f649960610e.\n\nBug: 148588565\nTest: playb music and check volume\nChange-Id: I3a2b25552fcc59268a74d07416a6d706bd1d3d10\n"
    },
    {
      "commit": "a98bfa5b27ead22c145a5335b2634f649960610e",
      "tree": "00a8bf4bc5994f8acdbbbac2950e8b66cdd08966",
      "parents": [
        "d2243cf3e2f92c49554127d75efbb605422e9b60"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 04 18:42:30 2020 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 04 18:48:12 2020 -0800"
      },
      "message": "Revert \"[audiopolicy][enginebase] Fix schema verification\"\n\nThis reverts commit 12462cb84b74ffeda6aae3380fe9fd0a6393f39c.\n\nBug:148588565\nTest: play music with GPM and verify volume\nChange-Id: Ied3e5102761bd19e44a7f8781b54577cb12e8218\n"
    },
    {
      "commit": "2ac7f2b51ff50a5c95f06155667b7e97571ddc94",
      "tree": "5d73fbf25f906da592712814d6d0d0f39dad9d3f",
      "parents": [
        "98ef43d9237386e31beaf5a0d5a0966075bce8f0",
        "fb3fb333a260793d738484965a4ce1a1decadfda"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 29 03:40:51 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 29 03:40:51 2020 +0000"
      },
      "message": "Merge changes from topic \"apply-aosp-1209307-and-following\" am: 9b7d89970a am: a6c9490e7f am: fb3fb333a2\n\nChange-Id: I3449759cd9ebae747f733388497ffbb11954f2e1\n"
    },
    {
      "commit": "12462cb84b74ffeda6aae3380fe9fd0a6393f39c",
      "tree": "a6eb8afb38cddf7bb876398a2a252dfa80804dab",
      "parents": [
        "9002e44513e85afb836adac7147cd69e8fe66185"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Jan 21 15:32:16 2020 +0100"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 28 17:33:58 2020 -0800"
      },
      "message": "[audiopolicy][enginebase] Fix schema verification\n\nHidden stream type (e.g. rerouting/patch) and usages are not\npart anymore of engine configuration schema.\nThis CL programmatically adds the internal system strategies\nand volume associated.\n\nTest: atest VtsHalAudioPolicyV1_0TargetTest\nBug: 141989952\n\nChange-Id: I3d182bf374a4bd6ae10e7c408d51f83f6a2ea378\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "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": "3a26bb21bd9c38fe48b203cd018b95b955f2d1de",
      "tree": "e89ce1c4e84b514454f027f9e419ed6b7cf435c9",
      "parents": [
        "0bab538b5c6e17bd06161b8fdbd9b65411c410ec"
      ],
      "author": {
        "name": "Baekgyeong Kim",
        "email": "baek.kim@samsung.com",
        "time": "Wed Oct 30 20:29:41 2019 +0900"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 08 11:49:08 2020 -0800"
      },
      "message": "Add audio stream and usage for virtual assistant\n\nNew stream type: AUDIO_STREAM_ASSISTANT\nThis is intended to be used by a virtual assistant like\nGoogle Assistant, Bixby, etc.\n\nThe audio stream has own volume alias and the volume\ndoes not change by volume changes of other streams.\n\nBug: 123745215\nTest: make\nChange-Id: I17ec0480cad4c3507a97454ccb832255adda9897\nMerged-In: I17ec0480cad4c3507a97454ccb832255adda9897\nSigned-off-by: Baekgyeong Kim \u003cbaek.kim@samsung.com\u003e\n"
    },
    {
      "commit": "47ea671e71c000a3103ecc15dbc25cac007dd51e",
      "tree": "f4bd5460779df1e785244ba663be58b8bce3d379",
      "parents": [
        "231698afc6bec6524029a558e20d8386be0cc0a9"
      ],
      "author": {
        "name": "Baekgyeong Kim",
        "email": "baek.kim@samsung.com",
        "time": "Wed Oct 30 20:29:41 2019 +0900"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Dec 16 10:56:05 2019 -0800"
      },
      "message": "Add audio stream and usage for virtual assistant\n\nNew stream type: AUDIO_STREAM_ASSISTANT\nThis is intended to be used by a virtual assistant like\nGoogle Assistant, Bixby, etc.\n\nThe audio stream has own volume alias and the volume\ndoes not change by volume changes of other streams.\n\nBug: 123745215\nTest: make\nChange-Id: I17ec0480cad4c3507a97454ccb832255adda9897\nSigned-off-by: Baekgyeong Kim \u003cbaek.kim@samsung.com\u003e\n"
    },
    {
      "commit": "21777f87815a526e4376cf5621040ebbc5b02d05",
      "tree": "eae07307fb1e2507a47e5ebd3211484e045d3eee",
      "parents": [
        "42afea265a65a4d0b22f5d2f2af72cbbb2631c80"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 18:12:06 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 11 21:38:35 2019 +0000"
      },
      "message": "audio: add call assistant usage\n\nAdd audio usage for call assistant use cases.\nUsed by apps playing over call uplink path for call\nscreening or other in call assitant features.\nAdd corresponding routing strategy in audio policy manager.\nThe strategy reuses volume group \"PATCH\" as volume is fixed\nfor call uplink audio.\n\nBug: 135213843\nTest: make\nChange-Id: Iad34c058e96fa5c969e825d3ddb0a82a60accc76\n"
    },
    {
      "commit": "2deb47896c1a3604468f9b9144c7114f5d678b33",
      "tree": "5e952f128a421748aa32dc22f16e86ecad15a972",
      "parents": [
        "f6cd76eef99409ea943e995e3c8fae92a787fb36"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Nov 01 11:04:15 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Dec 10 14:21:48 2019 -0800"
      },
      "message": "APM: support product strategy routing\n\n  Audio policy engine supports receiving a preferred device to use\nfor a given strategy (Engine superclass). Use of the preferred\ndevice intervenes at the level of the each engine implementation,\nhere in the default engine in getDevicesForProductStrategy() method\nso it is saved in the routing cache, and respects existing routing\npriorities.\n  Refactor the loops for call and output rerouting into a new\nupdateCallAndOutputRouting() method.\n\nBug: 144440677\nTest: atest AudioServiceHostTest#testPreferredDeviceRouting\n\nChange-Id: Ic4c690e1b0d8020c4335979e40e14e6df5887879\nMerged-In: Ic4c690e1b0d8020c4335979e40e14e6df5887879\n"
    },
    {
      "commit": "6d9f56dd70cd0d98b3477c86d27f31b40550dfbf",
      "tree": "8afc9b6653ff3ee405b9972cd5a8360e7e03e949",
      "parents": [
        "24003dc83687516cebd38153e318c2b1b6c37729",
        "30857159e8c143aac18aa1c0db3cffd47d8e207d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Dec 10 19:49:59 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 10 19:49:59 2019 +0000"
      },
      "message": "Merge \"APM: support product strategy routing\""
    },
    {
      "commit": "30857159e8c143aac18aa1c0db3cffd47d8e207d",
      "tree": "fa694fe4ca82413e2de5cca3066643571d46a611",
      "parents": [
        "a2adc8aa6c06f0e1d06c1bb6535be15f30ba26fd"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Nov 01 11:04:15 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Dec 09 12:22:47 2019 -0800"
      },
      "message": "APM: support product strategy routing\n\n  Audio policy engine supports receiving a preferred device to use\nfor a given strategy (Engine superclass). Use of the preferred\ndevice intervenes at the level of the each engine implementation,\nhere in the default engine in getDevicesForProductStrategy() method\nso it is saved in the routing cache, and respects existing routing\npriorities.\n  Refactor the loops for call and output rerouting into a new\nupdateCallAndOutputRouting() method.\n\nBug: 144440677\nTest: atest AudioServiceHostTest#testPreferredDeviceRouting\n\nChange-Id: Ic4c690e1b0d8020c4335979e40e14e6df5887879\n"
    },
    {
      "commit": "602e1ae3a3d4e2ffe158dacfd268547d94a06b38",
      "tree": "0d45acc3545f1ea491a45fc7111d2c3127dd5abb",
      "parents": [
        "39260a69ca1f66f29f250f30fde07fd628785708",
        "631d838440125948a007a6ed2c17ecadfac81959"
      ],
      "author": {
        "name": "Baekgyeong Kim",
        "email": "baek.kim@samsung.com",
        "time": "Fri Dec 06 16:59:44 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 06 16:59:44 2019 -0800"
      },
      "message": "Merge \"Add last connected device concept\" am: b035c08109 am: 6d640090cf\nam: 631d838440\n\nChange-Id: I1cea9570705b61b4c2495ef58e6d54192a28243d\n"
    },
    {
      "commit": "0845152be4781710082f2453b4600810204fea45",
      "tree": "ed6d40c43850180c97de49d4cb7f069d766d8db6",
      "parents": [
        "b20ae2f7f7209acffe80bb8514d915f5d8f57c50"
      ],
      "author": {
        "name": "Baekgyeong Kim",
        "email": "baek.kim@samsung.com",
        "time": "Fri Nov 01 20:40:02 2019 +0900"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 06 09:37:19 2019 -0800"
      },
      "message": "Add last connected device concept\n\nWhen connecting multiple audio devices,\nMedia and Sonification sounds comes out of the last connected device,\nnot a high-priority device.\n\nTest: play music\nTest: connect wired earphone // sound : wired earphone\nTest: connect usb earphone // sound : usb earphone, not the wired earphone(high-priority)\nTest: connect bluetooth headset // sound : bluetooth headset\nTest: disconnect bluetooth headset // sound : usb earphone, not the wired earphone(high-priority)\nBug: 135749685\n\nChange-Id: I579a04a04c97cc846b88e54fa83cdf3dad0b5cee\nSigned-off-by: Baekgyeong Kim \u003cbaek.kim@samsung.com\u003e\n"
    },
    {
      "commit": "12dc6b0e9fba8b7a8028d26fe02014fa2efe101e",
      "tree": "b72ebe2d9bd0682eef8613ed8a8cb30359c1a0ff",
      "parents": [
        "4ad3d03f619176464973f04adef235f49255b6ed"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 09:38:30 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 03 14:38:42 2019 -0800"
      },
      "message": "Clear up bit mask usage in audio policy.\n\nThis change includes:\n1. Use DeviceTypeSet to represent a combination of audio device types.\n2. Add helper functions for DeviceTypeSet\n3. Stop using audio device type as a bit mask in DeviceVector\n\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest audiopolicy_tests\nTest: audio smoke test\nChange-Id: If80513b689848bcab6094f70a572f053856afa82\nMerged-In: If80513b689848bcab6094f70a572f053856afa82\n"
    },
    {
      "commit": "dd81cc2046346b92dc2c7c92d5a7628471bb5218",
      "tree": "24548543a9d9b63e68299105e8c09b41303fe7d0",
      "parents": [
        "dff2a4f7fcf16ea320684f9ca04bc05b8bf1b5b8"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Sep 11 10:15:46 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 27 11:03:39 2019 -0800"
      },
      "message": "Rename AudioPort and PolicyAudioPort accordingly.\n\nMake the file name consistent as the class name.\n\nTest: make\nBug: 135621476\nChange-Id: Icbde26fe1798e344c3746f4678db098688456654\nMerged-In: Icbde26fe1798e344c3746f4678db098688456654\n"
    },
    {
      "commit": "dff2a4f7fcf16ea320684f9ca04bc05b8bf1b5b8",
      "tree": "7a6363492021a517099fc38a67efcacd377768dc",
      "parents": [
        "c02546150da2b87e71ed6d2df8abf48791ad79cb"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 10 14:29:54 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 27 11:02:54 2019 -0800"
      },
      "message": "Make audio port in policy not derive from audio port base\n\nThis patch aims to make the structure for libaudiofoundation and policy\nstuff simpler, including:\n1. Make AudioPortBase as AudioPort in libaudiofoundation. Create\nPolicyAudioPort that contains policy related stuff, which is used by\naudiopolicy.\n2. Make AudioPortConfigBase as AudioPortConfig in libaudiofoundation.\nCreate PolicyAudioPortConfig that contains policy related stuff.\n3. DeviceDescriptor derives from AudioPort, AudioPortConfig, PolicyAudioPort\nand PolicyAudioPortConfig. IOProfile derives from AudioPort,\nPolicyAudioPort. AudioInputDescriptor/AudioOutputDescriptor derives from\nAudioPortConfig, PolicyAudioPortConfig.\n\nTest: atest AudioTrackTest, AudioRecordTest, AudioManagerTest\nTest: atest audiopolicy_tests, AudioHostTest\nTest: audio smoke test\nBug: 135621476\nChange-Id: I40299d95dda3b3fc0ea88b079f2fe38d8f7e5b31\nMerged-In: I40299d95dda3b3fc0ea88b079f2fe38d8f7e5b31\n"
    },
    {
      "commit": "eaf09f089a42f7a7ea39339e93b358b37b58956f",
      "tree": "f91620a31611160cc06ce12a1ba69dd15583e04e",
      "parents": [
        "736ffc105e64398dfa789bec3be880c7a1809761"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Aug 19 15:08:30 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 26 15:26:53 2019 -0800"
      },
      "message": "Add AudioPortFoundation, AudioPortBase and AudioPortConfigBase.\n\nThe purpose of this change is to make a generic AudioPort class that\ncould be used by vendor.\n1. Add AudioPortFoundation and AudioPortBase. AudioPortFoundation\ncontains generic members of an audio port. AudioPortBase is a template\nclass that derives from AudioPortFoundation. It takes audio profile\nvector as a template parameters. That makes it more feasible to use\ncustomized audio profile stuff as needed. In audio policy, AudioPort\nderives from AudioPortBase and contain policy related stuff.\n2. Add AudioPortConfigBase. AudioPortConfigBase contains generic members\nof an audio port config. AudioPortConfig derives from AudioPortConfigBase\nand contains policy related stuff.\n3. Use std::string instead of String8 in AudioPort and AudioPortConfig.\n\nBug: 135621476\nTest: CTS for AudioRecord, AudioTrack, AudioManager, RoutingTest\nTest: audiopolicy_tests, AudioServiceHostTest\naudio smoke test\nTest: dumpsys media.audio_policy\nChange-Id: I05611b7067c18006660de2c678acd56bdd34010a\nMerged-In: I05611b7067c18006660de2c678acd56bdd34010a\n"
    },
    {
      "commit": "147f5c318877c4fa8afa8e97208c109abf58c1cd",
      "tree": "66656efb03caa2e12a7bc97f764d5b3a38837c92",
      "parents": [
        "16bcc29edb3dac99f85abfe47ea5e731fd977769"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 07 14:43:33 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 26 14:27:02 2019 -0800"
      },
      "message": "Return DeviceDescriptor or DeviceVector in Engine.\n\nTo remove the limit on the number of audio device types, there is a\nneed to remove the return value as a combination of audio_devices_t.\nUsing DeviceDescriptor or DeviceVector in Engine is a starting point.\n\nTest: audiopolicy_tests, smoke test\nTest: CTS for AudioTrack, AudioRecord, AudioManager\nBug: 135621476\nChange-Id: I0d87fd76385629e6e6b74cdd37dbd334ae02c04f\nMerged-In: I0d87fd76385629e6e6b74cdd37dbd334ae02c04f\n"
    },
    {
      "commit": "41502b244f6107ed57330eb447d8e29960b9cf4f",
      "tree": "63cf7c0b4e160cfd242bfbb603b6568aa89f0815",
      "parents": [
        "b8ec243b5f142edb13102bb76b887496d3a5cd5e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jul 31 09:59:09 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 26 11:29:16 2019 -0800"
      },
      "message": "Move AudioGain to libaudiofoundation.\n\n1. Create folder for libaudiofoudation.\n2. Move AudioGain to libaudiofoudation. The goal is to make AudioGain\nbe able to use in binder call and be vendor-available later.\n\nBug: 135621476\nTest: make, CTS for AudioTrack, AudioRecord, AudioManagerTest\nChange-Id: Ibf16ad9cb7f2ac657a02632ccbe4f934b5a12731\nMerged-In: Ibf16ad9cb7f2ac657a02632ccbe4f934b5a12731\n"
    },
    {
      "commit": "9a3361e4c6bb01db24c135921b0891e917f71419",
      "tree": "3ee2499fd3e267607c9ae56f120687c4bbb5d67b",
      "parents": [
        "1865ec9e8a38506e2c7062793f39113f98da0543"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 09:38:30 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Oct 11 17:33:15 2019 -0700"
      },
      "message": "Clear up bit mask usage in audio policy.\n\nThis change includes:\n1. Use DeviceTypeSet to represent a combination of audio device types.\n2. Add helper functions for DeviceTypeSet\n3. Stop using audio device type as a bit mask in DeviceVector\n\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest audiopolicy_tests\nTest: audio smoke test\nChange-Id: If80513b689848bcab6094f70a572f053856afa82\n"
    },
    {
      "commit": "f1056773809f5c9a5d4142941c5073854620ff82",
      "tree": "3394bcfbcb4649a32c2a051cd847254cb08882da",
      "parents": [
        "11d5ff58b7b630e77fabed449b4c9c83751c22c7",
        "3168a7d111d21e0a66e9149428b4fcec46f6dbb9"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:15:17 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:15:17 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: continue switching to bp am: 5818b453da am: a9122279e0 am: cca89a4b26\nam: 3168a7d111\n\nChange-Id: Ic1cea6e8b4e43a49022605bd0d3e8c9e71c866d5\n"
    },
    {
      "commit": "5818b453da8cc675900f810655143ad55a159a11",
      "tree": "d7285f91c4ce5f85a9176c2f5544eed40b01ab77",
      "parents": [
        "c60c36916666ead0ad9c599b82a86708a91eb767"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Aug 27 16:30:04 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 09 15:06:09 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: continue switching to bp\n\nThis CL adds genrule_defaults target to allows getting rid of mk\nfor configuration files generation.\n\nTest: build \u0026 boot\nChange-Id: Ida4ec17ab3e67788b512b95ac8d2c0f4c530014a\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "b6b07487358b6396a00718265425d5cfcde4812f",
      "tree": "64b33344f9eea1abedb93448993daf8dbca4e400",
      "parents": [
        "8649bbe54a4ad29a55502f54cc367d4fb12f44d7"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 26 18:05:18 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Sep 27 14:55:37 2019 -0700"
      },
      "message": "Log fatal when primary output is not found.\n\nBug: 141695004\nTest: make phone call\nChange-Id: I203787eec2b550dc95b435da6487ed9f910065f3\n"
    },
    {
      "commit": "e13c679e4afba66097018516eba9ea15d15bbc7a",
      "tree": "216ecb3fe033354b1d07ce88aa8ccecb15f4c3fa",
      "parents": [
        "3e0b02e336f3b5d59c5162e743d10d86be63c66b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue May 14 10:32:51 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Sep 25 14:59:42 2019 -0700"
      },
      "message": "audiopolicy: Load the engine library dynamically\n\nAndroid provides 2 audio policy engines:\nlibaudiopolicyenginedefault and\nlibaudiopolicyengineconfigurable. This change makes the engine\nto be loaded dynamically based on the configuration (currently\nthe engine name is hardcoded into AudioPolicyConfig). Dynamic\nloading allows building and installing of both libraries without\nany conflicts.\n\nTechnical changes:\n\n - AudioPolicyManagerInterface renamed to EngineInterface\n   for clarity;\n\n - For the purpose of dynamic loading, APM does not depend\n   anymore on the EngineInstance class. The class got removed\n   from the default AP engine, but left in the configurable engine\n   because it is also used by its plugins;\n\n - Added EngineLibrary class to encapsulate dynamic loading\n   of the AP engine. The class name EngineInstance is repurposed\n   for a smart pointer to EngineInterface;\n\n - services/audiopolicy/managerdefault/Android.mk converted\n   into Android.bp;\n\n - Added engine loading failure test;\n\nBug: 132639720\nTest: sanity tests for audio; audiopolicy_tests\nChange-Id: I0581569a172f810e030aec879225e817bfa7851a\nMerged-In: I0581569a172f810e030aec879225e817bfa7851a\n"
    },
    {
      "commit": "e128485cea169cc3adf7d6285bd30c8f5f57790b",
      "tree": "940553bf3a4a3c20fac15cceb887c33a98f57f1c",
      "parents": [
        "4ef934543dd2d469ba8ffa765c6b05a4e196c0ce"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Sep 11 10:15:46 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 17 12:30:37 2019 -0700"
      },
      "message": "Rename AudioPort and PolicyAudioPort accordingly.\n\nMake the file name consistent as the class name.\n\nTest: make\nBug: 135621476\nChange-Id: Icbde26fe1798e344c3746f4678db098688456654\n"
    },
    {
      "commit": "4ef934543dd2d469ba8ffa765c6b05a4e196c0ce",
      "tree": "05e1966989d89ea7ee0de51d7b9ec2b4a0119ad0",
      "parents": [
        "811797a66929293bd64e0a2e51a761819901d83c"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 10 14:29:54 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 17 12:30:20 2019 -0700"
      },
      "message": "Make audio port in policy not derive from audio port base\n\nThis patch aims to make the structure for libaudiofoundation and policy\nstuff simpler, including:\n1. Make AudioPortBase as AudioPort in libaudiofoundation. Create\nPolicyAudioPort that contains policy related stuff, which is used by\naudiopolicy.\n2. Make AudioPortConfigBase as AudioPortConfig in libaudiofoundation.\nCreate PolicyAudioPortConfig that contains policy related stuff.\n3. DeviceDescriptor derives from AudioPort, AudioPortConfig, PolicyAudioPort\nand PolicyAudioPortConfig. IOProfile derives from AudioPort,\nPolicyAudioPort. AudioInputDescriptor/AudioOutputDescriptor derives from\nAudioPortConfig, PolicyAudioPortConfig.\n\nTest: atest AudioTrackTest, AudioRecordTest, AudioManagerTest\nTest: atest audiopolicy_tests, AudioHostTest\nTest: audio smoke test\nBug: 135621476\nChange-Id: I40299d95dda3b3fc0ea88b079f2fe38d8f7e5b31\n"
    },
    {
      "commit": "5740f08a85214ebdb994fdcfd91dab186fc312fc",
      "tree": "0da56c9af676f4c0cfa95bdc14fe3b1463b14710",
      "parents": [
        "ea87a0ce074dd93916f8918efc2eeb9d868a2093"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Aug 19 15:08:30 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 03 14:44:25 2019 -0700"
      },
      "message": "Add AudioPortFoundation, AudioPortBase and AudioPortConfigBase.\n\nThe purpose of this change is to make a generic AudioPort class that\ncould be used by vendor.\n1. Add AudioPortFoundation and AudioPortBase. AudioPortFoundation\ncontains generic members of an audio port. AudioPortBase is a template\nclass that derives from AudioPortFoundation. It takes audio profile\nvector as a template parameters. That makes it more feasible to use\ncustomized audio profile stuff as needed. In audio policy, AudioPort\nderives from AudioPortBase and contain policy related stuff.\n2. Add AudioPortConfigBase. AudioPortConfigBase contains generic members\nof an audio port config. AudioPortConfig derives from AudioPortConfigBase\nand contains policy related stuff.\n3. Use std::string instead of String8 in AudioPort and AudioPortConfig.\n\nBug: 135621476\nTest: CTS for AudioRecord, AudioTrack, AudioManager, RoutingTest\nTest: audiopolicy_tests, AudioServiceHostTest\naudio smoke test\nTest: dumpsys media.audio_policy\nChange-Id: I05611b7067c18006660de2c678acd56bdd34010a\n"
    },
    {
      "commit": "f502d15d7232c774ff5302d6762de8e3eaf5f555",
      "tree": "8ecff716ed4ff6557e5dd04e9335758afc962821",
      "parents": [
        "433e8a2730ce7280beb2ce49f42f41f9401ad6e4"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 07 14:43:33 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 07 16:01:55 2019 -0700"
      },
      "message": "Return DeviceDescriptor or DeviceVector in Engine.\n\nTo remove the limit on the number of audio device types, there is a\nneed to remove the return value as a combination of audio_devices_t.\nUsing DeviceDescriptor or DeviceVector in Engine is a starting point.\n\nTest: audiopolicy_tests, smoke test\nTest: CTS for AudioTrack, AudioRecord, AudioManager\nBug: 135621476\nChange-Id: I0d87fd76385629e6e6b74cdd37dbd334ae02c04f\n"
    },
    {
      "commit": "433e8a2730ce7280beb2ce49f42f41f9401ad6e4",
      "tree": "ced52c62e970c2987f85fd077bc3612001aa70c2",
      "parents": [
        "28355761d73f1495bba8994dc3c0dc631ae245a8",
        "bad450e52a5f1c6d93bb226b3aa709e95f2239a7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 07 00:15:13 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 07 00:15:13 2019 +0000"
      },
      "message": "Merge \"Revert \"Return DeviceDescriptor or DeviceVector in Engine.\"\""
    },
    {
      "commit": "bad450e52a5f1c6d93bb226b3aa709e95f2239a7",
      "tree": "415dde36e620efe6d37deff32782b761b33f8fbb",
      "parents": [
        "6cb004ae262499898bd4fcae2a6f4ba875c917d9"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue Aug 06 22:40:42 2019 +0000"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue Aug 06 22:41:43 2019 +0000"
      },
      "message": "Revert \"Return DeviceDescriptor or DeviceVector in Engine.\"\n\nThis reverts commit 6cb004ae262499898bd4fcae2a6f4ba875c917d9.\n\nReason for revert: This break telephony call\n\nBug: 138866657\nChange-Id: Ie288c13a152491bf4df99595d30b80d9122b970c\n"
    },
    {
      "commit": "30533d67977b09fc2cbd37b773695f20f9cec46a",
      "tree": "449666dd28220b2434af8817ae3b4bb0f8b3a6f3",
      "parents": [
        "dad6494a98a10922a6af0ad0f1a4e3298f4303a1",
        "6cb004ae262499898bd4fcae2a6f4ba875c917d9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 02 20:32:07 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 20:32:07 2019 +0000"
      },
      "message": "Merge \"Return DeviceDescriptor or DeviceVector in Engine.\""
    },
    {
      "commit": "9ccb28b1ccb214b06461f5285e5bce7d3734ea19",
      "tree": "1b9ce993373a1f5450815c401943f787a406b45b",
      "parents": [
        "e6138376f0578d464037d645f7985c87db60565e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jul 31 09:59:09 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jul 31 17:23:06 2019 -0700"
      },
      "message": "Move AudioGain to libaudiofoundation.\n\n1. Create folder for libaudiofoudation.\n2. Move AudioGain to libaudiofoudation. The goal is to make AudioGain\nbe able to use in binder call and be vendor-available later.\n\nBug: 135621476\nTest: make, CTS for AudioTrack, AudioRecord, AudioManagerTest\nChange-Id: Ibf16ad9cb7f2ac657a02632ccbe4f934b5a12731\n"
    },
    {
      "commit": "6cb004ae262499898bd4fcae2a6f4ba875c917d9",
      "tree": "2450eaf843dfa90d79c19d3ce03a57440dc24623",
      "parents": [
        "e6138376f0578d464037d645f7985c87db60565e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jun 21 11:43:56 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jul 31 12:26:10 2019 -0700"
      },
      "message": "Return DeviceDescriptor or DeviceVector in Engine.\n\nTo remove the limit on the number of audio device types, there is a\nneed to remove the return value as a combination of audio_devices_t.\nUsing DeviceDescriptor or DeviceVector in Engine is a starting point.\n\nTest: audiopolicy_tests, smoke test\nTest: CTS for AudioTrack, AudioRecord, AudioManager\nBug: 135621476\nChange-Id: I7603481d92184549a5fed6b1166cb0044c965570\n"
    },
    {
      "commit": "47835553b6e9b019acab78ead590727bc40e44ee",
      "tree": "07d496b011732ae2b8559ba8426289ca248adac0",
      "parents": [
        "b82f9fbdb1903a3bfa136b85dc7d24ab01c9fb21"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue May 14 10:32:51 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed May 22 16:18:17 2019 -0700"
      },
      "message": "audiopolicy: Load the engine library dynamically\n\nAndroid provides 2 audio policy engines:\nlibaudiopolicyenginedefault and\nlibaudiopolicyengineconfigurable. This change makes the engine\nto be loaded dynamically based on the configuration (currently\nthe engine name is hardcoded into AudioPolicyConfig). Dynamic\nloading allows building and installing of both libraries without\nany conflicts.\n\nTechnical changes:\n\n - AudioPolicyManagerInterface renamed to EngineInterface\n   for clarity;\n\n - For the purpose of dynamic loading, APM does not depend\n   anymore on the EngineInstance class. The class got removed\n   from the default AP engine, but left in the configurable engine\n   because it is also used by its plugins;\n\n - Added EngineLibrary class to encapsulate dynamic loading\n   of the AP engine. The class name EngineInstance is repurposed\n   for a smart pointer to EngineInterface;\n\n - services/audiopolicy/managerdefault/Android.mk converted\n   into Android.bp;\n\n - Added engine loading failure test;\n\nBug: 132639720\nTest: sanity tests for audio; audiopolicy_tests\nChange-Id: I0581569a172f810e030aec879225e817bfa7851a\n"
    },
    {
      "commit": "962ba215fbffcf27b3c69827a9221e0a82108ff0",
      "tree": "e0ef04ba1857443ef150e35e146522c84fcbb41f",
      "parents": [
        "48601f013a60c916187591e6e05dfaf76a87b698"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Apr 03 16:21:39 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 24 09:03:17 2019 -0700"
      },
      "message": "audiopolicy: fix build issue by going on switching to bp\n\nBug: 130284799\nTest: make\n\nChange-Id: I60d41eaa41564fecdeef6d4cb223a8367883db50\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "5ee8d120318266334aabc21d4f676813b3ac288f",
      "tree": "6af1a806b7cf903e6d6c1b6dd3b8a8b5eaab4784",
      "parents": [
        "8263e3519b6801f019e471efe4a6045b7046e4d3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 19 15:41:52 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 19 15:41:52 2019 -0700"
      },
      "message": "audio policy: fix HOTWORD capture device\n\nUse only devices attached to primary HAL when capturing\nfor audio source HOTWORD as they have to be accessible by\nthe audio DSP.\n\nBug: 123311424\nTest: capture use cases: phone calls, Duo, Camcorder, Assistant.\nChange-Id: Ib54622b69612e6ed12f36193d4b1918ba892a2cd\n"
    },
    {
      "commit": "83d17c208422b6c5df57716e9782925b0a787ee2",
      "tree": "44d0bbff2b15b05854120487ed7fa115b45e8eb9",
      "parents": [
        "b02be352c78d9db1c876a114199a9d4259c194e2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 02 17:10:01 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 02 17:20:47 2019 -0700"
      },
      "message": "audio policy: fix stream to volume source mapping\n\nremove use of obsolete method streamToVolumeSource()\nand replace it by toVolumeSource() which actually queries\nthe engine for stream to volume source mapping.\n\nBug: 129439600\nTest: make\n\nChange-Id: Ie4e4e93aa5925315078fa96a957bb3ed71e7dc76\n"
    },
    {
      "commit": "af3777782de2e0a0d4e38d9c6f9667e2e055a4a7",
      "tree": "839c6d315056e19e26ca6cdd48fbdbd06db26a31",
      "parents": [
        "235684f2c8d9f37c8a8358739a2c2c50164816b0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 29 14:50:21 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 29 15:44:24 2019 -0700"
      },
      "message": "audio policy: fix configurable engine and dynamic policies take 2\n\nExclude remote submix devices with non \"0\" (legacy) addresses from devices\nreturned to Engine by AudioPolicyManagerObserver::getAvailableOutputDevices()\nand AudioPolicyManagerObserver::getAvailableInputDevices()\n\nBug: 129144725\nTest: make\nChange-Id: If1ce89acb2a35a6bede195f520b4047f92b928bd\n"
    },
    {
      "commit": "abd0b54cf0d670c19938c99ecfd2774eb6a3e618",
      "tree": "bbbe3f5fe963c74e527b99fe7c079d8c49cd0862",
      "parents": [
        "7d602f00514e66528d4aa5d71b150ce7365d2859"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Feb 13 14:00:11 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 12 17:10:51 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix configurations\n\nBug: 124767636\nTest: build\n\nChange-Id: I377a1343e8ffbaa0d0ea6eea3229e383a50a8cf6\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "bfac583d0054ee1ca7755378c26631832dff63fc",
      "tree": "4aca5f381a2c740b5d2741f973a7645bd3358ca8",
      "parents": [
        "efde55813cfc4430cdd4c0627b2d9834903eec95"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 05 16:55:28 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 11 11:09:41 2019 -0700"
      },
      "message": "audiopolicy: Remove raw pointer references to AudioMix\n\nAudioInputDescriptor and AudioOutputDescriptor used to reference\nAudioMix instances using a raw pointer. This isn\u0027t safe as AudioMix\nwas owned by AudioPolicyMix, which is not referenced by descriptors.\n\nChange AudioMix* pointers in Audio{Input|Output}Descriptor to\nwp\u003cAudioPolicyMix\u003e which reflects their relationship correctly.\n\nTo ensure that code does not operate on AudioMix instances\nindependently from AudioPolicyMix, and to avoid introducing\na lot of getter / setter methods into AudioPolicyMix, make\nthe latter to inherit AudioMix. This makes sense because\nAudioPolicyMix is essentially a ref-counted version of AudioMix.\n\nBug: 124899895\nTest: build and sanity check on crosshatch,\n      build crosshatch with USE_CONFIGURABLE_AUDIO_POLICY :\u003d 1\nChange-Id: Ic508caedefe721ed7e7ba6ee3e9175ba9e8dc23a\n"
    },
    {
      "commit": "13ce4f67031a8877edb71efc9e8fbf9060ebfa0c",
      "tree": "d48ca3991854bbd76c75017f9071c577dea60d02",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 28 15:11:41 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 05 13:40:53 2019 -0800"
      },
      "message": "audiopolicy: Convert some of .mk files to .bp files\n\n- Renamed libaudiopolicyengineconfig to libaudiopolicyengine_config\n  in order to match names libaudiopolicyengine_{common|interface}.\n\n- Made libaudiopolicyengine_config static to avoid .so overhead.\n\n- Added a cleanspec for it.\n\n- Added libaudiopolicyengine_common which includes source files\n  previously included directly into engineconfigurable and\n  enginedefault libraries.\n\nBug: 121208203\nTest: make \u0026 flash crosshatch\nChange-Id: If3b7b89fcbd5752ddfdeca6c164a88f55bc35811\n"
    },
    {
      "commit": "251c7f0a9dc35dd3024fb4b42d27454abbd89d50",
      "tree": "fb33a7ac50d1fa2e850f75aae4ec78dd375c14ca",
      "parents": [
        "a666d61efbe74594e9d441621d20bef8f9def26e"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Nov 07 10:41:08 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 25 14:47:46 2019 -0800"
      },
      "message": "audiopolicy: engine: Add Volume Groups to common Engine\n\nThis CL adds the concept of Volume Group to the engine.\nIt generalizes the volume management today controled by stream types\nand hard coded into AOSP.\nThe goal is to control the volume per attributes, being able to define\na group of attributes that follow the same volume curves.\n\nIt intends to replace the concept of aliases in AudioService.\n\nBug: 124767636\nTest: build\n\nChange-Id: Icd079374cc1680d074b01836eca0bceb0b0c5247\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "ea69bfb0f5b3fc247882355b919a3076e4992694",
      "tree": "ed8db5eb87fdf16c30c9f47926c8c523150a3d86",
      "parents": [
        "8c27e78fb1ea66b353f4e1162a6a1d253622506b",
        "3de3ee7025a84cbb1902c222b6d897414862c373"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 25 16:58:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 25 16:58:20 2019 +0000"
      },
      "message": "Merge changes from topic \"policy_volume_emulator\"\n\n* changes:\n  Revert \"Revert \"audiopolicy: engine: use apm XML config file for volume curves\"\"\n  Revert \"Revert \"audiopolicy: moves Stream Volume Curves to Engine\"\"\n"
    },
    {
      "commit": "f42d99d0088a8d33d374179d41f16cee288533e4",
      "tree": "c69fab0c26291263f8075fb27f1e1b202f8b6db8",
      "parents": [
        "f9097e3095754424d90e77a10acab884f40d7161",
        "ebebb5f8085df4231b6d786e1d24de78181cedeb"
      ],
      "author": {
        "name": "Juyu Chen",
        "email": "juyuchen@google.com",
        "time": "Sat Feb 23 03:11:12 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 23 03:11:12 2019 +0000"
      },
      "message": "Merge \"audio policy: fix using hearing aid when force use NO_BT_A2DP\""
    },
    {
      "commit": "f5aa58d324bc1d53b7c0ec31edf81814e8553044",
      "tree": "a735ad797fef41a634ab61582f459a2ca2a06bf6",
      "parents": [
        "f9097e3095754424d90e77a10acab884f40d7161"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 18:20:11 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 18:20:11 2019 -0800"
      },
      "message": "Revert \"Revert \"audiopolicy: moves Stream Volume Curves to Engine\"\"\n\nThis reverts commit efdbe3bfeff7c150d99900fddca005d48048f188.\n\nTest: make\n"
    },
    {
      "commit": "efdbe3bfeff7c150d99900fddca005d48048f188",
      "tree": "3b12bf3482013a37bba3fe46a40ab54cee10abb8",
      "parents": [
        "1462a279faace46266ab1f2151393ecd31c62a5e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 17:23:37 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 17:24:49 2019 -0800"
      },
      "message": "Revert \"audiopolicy: moves Stream Volume Curves to Engine\"\n\nThis reverts commit 539311942bdbac65fbf7f2fc1390b6b9ef850a1b.\n\nBug: 125937703\nTest: make\n"
    },
    {
      "commit": "ebebb5f8085df4231b6d786e1d24de78181cedeb",
      "tree": "8e74a54fc8526058c5e6edab6534a12e812557b7",
      "parents": [
        "b075c7c681738c21c759c6a7963f755f5984080d"
      ],
      "author": {
        "name": "juyuchen",
        "email": "juyuchen@google.com",
        "time": "Fri Jan 11 14:41:04 2019 +0800"
      },
      "committer": {
        "name": "juyuchen",
        "email": "juyuchen@google.com",
        "time": "Fri Feb 22 18:38:26 2019 +0800"
      },
      "message": "audio policy: fix using hearing aid when force use NO_BT_A2DP\n\nBug: 122615787\nTest: manual audio test\nChange-Id: If694d08e56eac0791806b283f6ec07894dcbcccf\n"
    },
    {
      "commit": "539311942bdbac65fbf7f2fc1390b6b9ef850a1b",
      "tree": "abc928dcc59b82f9baedc7f3485474d7dd8bd474",
      "parents": [
        "7a2f8152b1116c40b48cb78cfc8c05d7c5e56b08"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Nov 06 17:11:17 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 21 18:20:39 2019 -0800"
      },
      "message": "audiopolicy: moves Stream Volume Curves to Engine\n\nThis CL moves the volume curves to the engine.\nThe configuration files of volume are now owned by the engine,\nthat is intended to become vendor specific.\n\nTest: build, dumpsys media.audio_policy and checks the volume curves.\nBug: 124767636\n\nChange-Id: I9e3b256d2eb89c8eac6b282db0e59ec3af47d76d\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "1c87855ff4c3c55e191a2e6da66bb82011c91c1b",
      "tree": "e4cbf214056b965017c1f727ad0881b85ef1e54d",
      "parents": [
        "e690a6da57c95da65b4a179e35fa4dc72510024f"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Nov 22 16:53:21 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 19 15:58:32 2019 -0800"
      },
      "message": "audiopolicy: rework stream activity for volume management on output\n\n-Manage duplicated output ref count in client itself\n-Use VolumeSource to track volume activity in output\n(today mapped on legacy stream type)\n-Use accessor APIs to control activity/mute from apm.\n\nTest: audio smoke tests\nBug: 124767636\n\nChange-Id: I452e3973f6869d41231d984896a5886ebb86afb1\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "6054a7765cfd65c34d49a5a435bee1d0cdfb2d32",
      "tree": "37390182206a6401daead33e48e1d60d6336d521",
      "parents": [
        "f579db5aa9e1cbbe5a8b7689e319913e154cda3b"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Nov 06 13:10:58 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 02 10:43:22 2019 -0800"
      },
      "message": "audiopolicy: engine: remove deprecated APIs\n\nTest: make\n\nChange-Id: Idfcb060095da92adb286706d4eaf9b9a78a8c61a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "c005e569c7bae3f8c49660c9388c3076046069f5",
      "tree": "8612dc3a3d69c018b303bf8e56aa142db5465e8e",
      "parents": [
        "d0ba9ed06c61ab3e66627e027fbc34ba998140ee"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Nov 06 15:04:49 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 02 10:31:32 2019 -0800"
      },
      "message": "audiopolicy: apm: switch to new Engine APIs\n\nTest: make\nChange-Id: Iedc2268852ee0bce32b67cfd324395c48cb33424\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "d0ba9ed06c61ab3e66627e027fbc34ba998140ee",
      "tree": "49948f80335bea4a358c7f455dfd6a5e59a94e30",
      "parents": [
        "7188f1ad365cd9d475723b639d521b491eaca389"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Nov 05 11:50:42 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 01 18:05:54 2019 -0800"
      },
      "message": "audio policy service: Add introspection API to retrieve AudioProductStrategies\n\nThis CL adds required introspection APIs to deal with product strategies:\n\n-getter of the collection of product strategies\n-helper function to return the strategy associated to a given attributes.\nThis API is mandatory to avoid duplicating the logic that compiles the strategy\nfor a given Audio Attributes structure.\n\nTest: make\n\nChange-Id: I0e107570a44227bb52a4f359954c93215d4f8bae\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "7188f1ad365cd9d475723b639d521b491eaca389",
      "tree": "029a0714c5c9e517d2eecc6ad4149f519c52b813",
      "parents": [
        "f1e9508a70f5eff6d9e9d2cfdf5b19ac6a6974b7"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Nov 02 14:35:42 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 01 18:05:49 2019 -0800"
      },
      "message": "audiopolicy: engineconfigurable: Merge Policy Engine and Wrapper configuration files\n\nTest: make\nChange-Id: I0a905752218438378d9ca87457cd55f6cd0f2586\n"
    },
    {
      "commit": "f1e9508a70f5eff6d9e9d2cfdf5b19ac6a6974b7",
      "tree": "10c058fa91f37171cd140e17a1eaa3680d605ca6",
      "parents": [
        "dc7553ff1bf7ec88e17a8577b94bb9dd9a1cbb43"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Nov 02 13:53:31 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 01 18:05:38 2019 -0800"
      },
      "message": "audiopolicy: engineconfigurable: add configuration of ProductStrategies\n\n-Update Policy PFW plugin to support product strategies\n-Provides example structure/Settings to configure Product Strategies\n\nTest: make\nChange-Id: I2493e261f302b78f3b96e17d87fb7028d9cde23e\n"
    },
    {
      "commit": "dc7553ff1bf7ec88e17a8577b94bb9dd9a1cbb43",
      "tree": "e51119764c576e4e051cef763280f8d35c7a7b27",
      "parents": [
        "612be7ff334b6c2c1051bd6dbb4088922af0336e"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Nov 02 10:39:57 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 01 18:05:21 2019 -0800"
      },
      "message": "audiopolicy: engine: Add ProductStrategy common code\n\n-Adds new Engine APIs for Product Strategy management\n-Adds a common engine code to handle product strategies\n-Adds a parsing configuration library to feed the strategies\n-Prepare both engine for the switch\n\nTest: make\nChange-Id: I00f57ece798893bc6f9aa9ed54a3e5237e8d5cf1\n"
    },
    {
      "commit": "4e4647077f00c47650d6ecd66cd812073371bd10",
      "tree": "db114451fc37f571667f8fab24e88b142f49eee2",
      "parents": [
        "fa66483acb53c575fc476f04bebf0d0463752297"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Thu Jan 10 23:38:46 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jan 20 21:32:16 2019 +0000"
      },
      "message": "audiopolicy: Add support for hybrid mode on A2DP\n\nAdd support in AudioPolicyManager to select a module,\ndevice or output based on device type and codec.\nImplement hybrid mode with A2DP which enables runtime\nswitching between HALs for A2DP based on offload support\nfor specific A2DP codecs.\nOptimize A2DP active device change and device config\nchange in AudioPolicyManager.\n\nBug: 111812273\nTest: make\nChange-Id: I246d71dd08bacbca6ed9b0012e7d7698bd8a0953\n"
    },
    {
      "commit": "1cbfc5d16ad592d9aea60d1a4ffcb9dd369f66cd",
      "tree": "fdb774c86e61e23e9315019174ba5913fae0a873",
      "parents": [
        "bf06f7afdbd7019614c9e31ce43301457a3a7d55",
        "b141c526eac14ad0f92c9ec6aae6a3b3ebc35708"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 17 22:19:08 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 17 22:19:08 2019 +0000"
      },
      "message": "Merge changes Ic9ecd592,I5e809296,I822097f1\n\n* changes:\n  audiopolicy: apm: Fix segfault when using bus device without Policy Mix\n  audiopolicy: fix rsubmix / device with dynamic address regressions\n  audiopolicy: apm: Prepare the future: use DeviceDescriptor/DeviceVector\n"
    },
    {
      "commit": "ae4b6ecfbcbea56cca160715a2ef710d8d87a40f",
      "tree": "124f24314b3f95b48a47dc8cc6f4ab0a6a0cc88e",
      "parents": [
        "96024c18126150259ba123ef48d180c6e0a2cf7e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 15 18:34:38 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 16 09:52:55 2019 -0800"
      },
      "message": "add new audio sources for audio capture\n\nThis commit adds the following audio capture sources:\n- AUDIO_SOURCE_VOICE_PERFORMANCE: for real time live performances like Karaoke.\n- AUDIO_SOURCE_ECHO_REFERENCE: for capturing the reference signal to suppress by an echo\ncanceller. Protected by privileged permission CAPTURE_AUDIO_OUTPUT.\n\nAlso added device AUDIO_DEVICE_IN_ECHO_REFERENCE selected when the requested\ncapture source is AUDIO_SOURCE_ECHO_REFERENCE.\n\nBug: 118203066\nTest: CTS tests for audio capture\n\nChange-Id: Ieb159ea82a7b81acf762506a44e24ec80111609f\n"
    },
    {
      "commit": "11d301045991dd66bf3f64ba510e069b7c09fedb",
      "tree": "d9aa2e368424bc164a81f5bdcddef1fe328cdca1",
      "parents": [
        "526aa572bbc5dd1fa1b103a98d9f91a758d8d5c4"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Nov 02 16:09:09 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 15 11:08:17 2019 -0800"
      },
      "message": "audiopolicy: apm: Prepare the future: use DeviceDescriptor/DeviceVector\n\nThis patch updates the policy manager and common to widely use (vector of)\ndevice descriptor rather than the device type mask each time it is possible.\nIt will allow taking into account the address of the device.\n\nTest: manual audio smoke tests\nChange-Id: I822097f1240d379b2f89aaad1e6609059942e61c\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "320fd852fb98174804e5f505773500f1cf76f3af",
      "tree": "3eb8319d3076340883afe026b540c05ef7b8c50a",
      "parents": [
        "24bf51ae92285202bdbe3fa00c7c83e93c5a03e2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Oct 09 14:06:37 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Oct 10 11:12:37 2018 -0700"
      },
      "message": "audio: fix switch to break or use FALLTHROUGH_INTENDED\n\nTest: compile, sanity\nBug: 117509050\nChange-Id: I9439f201b3d1f4485ab698d7bed063a02f17f8f0\n"
    },
    {
      "commit": "17a4a0feba513a721b23edeb9a915e4ce87b58a8",
      "tree": "8def40ef260d85ecf5414654a2af5cc1a7e3a94c",
      "parents": [
        "bd9b5935fdbd67d3eaf124e3e80470b8cae1ecd1",
        "d06ae78ee7169fc80c8a29390b2156e33c846c08"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Sep 17 16:44:40 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 17 16:44:40 2018 -0700"
      },
      "message": "Merge \"Suppress implicit-fallthrough warnings in audioflinger etc.\" am: a494bb1527 am: 8662f3b9a2\nam: d06ae78ee7\n\nChange-Id: Iee095b6e1278d372b3a7c171f926bd730dbc388b\n"
    },
    {
      "commit": "2b48703770efab81143d389d7389166eb1a6c8db",
      "tree": "f309a4bbfbb4f716dee1af20f82ca95aa04b907e",
      "parents": [
        "f8d13dee65d3708ea527e9f565be85031d7021ba"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 13 14:16:02 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Sep 17 12:50:12 2018 -0700"
      },
      "message": "Suppress implicit-fallthrough warnings in audioflinger etc.\n\nAdd FALLTHROUGH_INTENDED for clang compiler.\n\nBug: 112564944\nTest: build with global -Wimplicit-fallthrough.\nChange-Id: I8875bc7ed073aae84d5df97eb39c8c745ca627ef\n"
    },
    {
      "commit": "9366193e6ba8e2c554de747a3ab58a336297c067",
      "tree": "f6d9fe9e7cbe37902d023b33c24463f99d26b3fd",
      "parents": [
        "19283e9de83b5ade80a93b43589ea9a799414290"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 26 14:37:41 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 26 14:37:41 2018 -0700"
      },
      "message": "audiopolicy: Refactor DeviceVector::getDevicesFromHwModule\n\nRename method audio_devices_t DeviceVector::getDevicesFromHwModule\ninto getDeviceTypesFromHwModule.\n\nIntroduce method DeviceVector DeviceVector::getDevicesFromHwModule.\n\nBug: 63901775\nTest: make\nChange-Id: Ieec0c116fa0a6ff20241d61f65202a8eaf9f0674\n"
    },
    {
      "commit": "00c14ee32d650cd2abffe154aad4718daa3eeccd",
      "tree": "e90c921bcf75d6ddbdc2d4a109016eeaf722de5f",
      "parents": [
        "a2a19382e5870fb133b56dacc7ff3048cdaa407d",
        "31a86b9cfcb4464e37b3a039499728737bc21f7e"
      ],
      "author": {
        "name": "Dan Zhang",
        "email": "danielzhang@google.com",
        "time": "Mon Jul 23 13:49:33 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 23 13:49:33 2018 -0700"
      },
      "message": "Merge \"Add USB MIC in case of AUDIO_SOURCE_CAMCORDER\" am: 69b9593594 am: 671b05bf3c am: 5bdda71a19\nam: 31a86b9cfc\n\nChange-Id: I600300a828fe589c942ebae4dd6c060e5799a8c6\n"
    },
    {
      "commit": "671b05bf3c82131612bf761a742f38ca45b453cf",
      "tree": "c8082ee953b1dac0da1c6a1a00ff819ca2e1f11f",
      "parents": [
        "28301383d38d81b44d6a9b6b1f5822e90e440625",
        "69b9593594de8b2836ca3e6a7881b2268e9cb56d"
      ],
      "author": {
        "name": "Dan Zhang",
        "email": "danielzhang@google.com",
        "time": "Mon Jul 23 13:05:01 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 23 13:05:01 2018 -0700"
      },
      "message": "Merge \"Add USB MIC in case of AUDIO_SOURCE_CAMCORDER\"\nam: 69b9593594\n\nChange-Id: I050fd29adc4950b50bc63f3230d7af7201ebc245\n"
    },
    {
      "commit": "86ad3d1057f03036217af3ae201c0fafb658a829",
      "tree": "6b6726e094696a6a1667150f300b74a4c49d9f59",
      "parents": [
        "cd17b7453da3323634662e7ddb9712e5e0ae00c5"
      ],
      "author": {
        "name": "Takeshi Oishi",
        "email": "Takeshi.Oishi@jp.sony.com",
        "time": "Fri Jul 20 16:13:06 2018 +0900"
      },
      "committer": {
        "name": "Takeshi Oishi",
        "email": "Takeshi.Oishi@jp.sony.com",
        "time": "Mon Jul 23 14:32:56 2018 +0900"
      },
      "message": "Add USB MIC in case of AUDIO_SOURCE_CAMCORDER\n\nA device which supports USB camera cannot record audio stream\nbecause there is no definition of USB audio input device when\nspecifying CAMCORDER. For getting audio from USB camera,\nAUDIO_DEVICE_IN_USB_DEVICE should be added as an audio input device\nin case of CAMCORDER.\n\nTest: run cts -m CtsCameraTestCases\nChange-Id: I47140a4ae3c6a8c1b5ee1d4b302c97d860cb18d6\n"
    },
    {
      "commit": "dcd4ab18a3cdb8f5d382a635c8602a18288137c1",
      "tree": "c0f4c63eef85a850dc01687bc7f17be4cd24031e",
      "parents": [
        "87a837c62a1bd1be9143aee3660bb171424a08a5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 29 17:45:13 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 02 18:03:17 2018 -0700"
      },
      "message": "audio policy: remove special notifications handling in call\n\nNot needed anymore as this is handled by NotificationManager.\nExtend caping of alarm and ringtone volume to call volume to all\noutput devices (was only done for earpiece).\n\nTest: make\nChange-Id: I9a1cd8610e42fefd0518f6ccc68e50e5541884ed\n"
    },
    {
      "commit": "708e038f7e6c452de8186e2d6981de7540495094",
      "tree": "fef4228ffb73cd20eb8a2a921ee6df687c92adc2",
      "parents": [
        "f4d3741b3a721f8e1f72ec3ca2684efe22526d80"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed May 30 09:53:04 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jun 01 12:39:15 2018 -0700"
      },
      "message": "audiopolicy: Brush up DeviceVector::getDevice... methods\n\nThe semantics of these methods wasn\u0027t consistent and wasn\u0027t clear\nfrom their names (and aggravated by the fact that audio_devices_t can\nbe used either as a single device, or as a mask):\n\n * sp\u003cDeviceDescriptor\u003e getDevice(type, address) -- \u0027type\u0027 is a single\n   device; if \u0027address\u0027 is an empty string, and no matching device\n   with an empty address is found, returns any device of this type;\n\n * DeviceVector getDevicesFromType(type) -- \u0027type\u0027 is a mask,\n   device addresses get ignored;\n\n * DeviceVector getDevicesFromTypeAddr(type, address) -- \u0027type\u0027 is\n   a single device, address is matched exactly. So in practice, only\n   1 device could be returned.\n\nChanges:\n\n * \u0027getDevicesFromType\u0027 renamed to \u0027getDevicesFromTypeMask\u0027 --\n   emhpasizes the fact that \u0027type\u0027 can be a mask;\n\n * \u0027getDevicesFromTypeAddr\u0027 removed, usages replaced with a call to\n   \u0027getDevice\u0027. There were just 2 usages, and their intent seem\n   to be covered by the semantics of \u0027getDevice\u0027.\n\nTest: verified basic audio functionality and Auto with simulator\nChange-Id: If3e42e4c06f42573fd33ba1303febe0625e079e6\n"
    },
    {
      "commit": "5fa0aed349268d0c6b5884cdc15f0ff026322879",
      "tree": "a889369dfba0d702e212f0fe584b6358540e9b70",
      "parents": [
        "88af67ed2a068280c60bb467b58585fffa9f22a6"
      ],
      "author": {
        "name": "juyuchen",
        "email": "juyuchen@google.com",
        "time": "Wed May 16 10:58:37 2018 +0800"
      },
      "committer": {
        "name": "Juyu Chen",
        "email": "juyuchen@google.com",
        "time": "Thu May 17 10:13:05 2018 +0000"
      },
      "message": "audio policy: choose bt-sco and speaker-safe path.\n\nChoose speaker-safe-and-bt-sco path instead of speaker-and-bt-sco when\ndevice is in ringtone mode.\n\nBug: 78257659\nTest: manual audio test on B1/C1.\n\nSigned-off-by: juyuchen \u003cjuyuchen@google.com\u003e\n"
    },
    {
      "commit": "817729095966c338615a8a791d2dbf774fc034ef",
      "tree": "b9c23fc427ec841575b37c59280000467c5a1648",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Apr 02 17:52:27 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu May 10 18:20:24 2018 -0700"
      },
      "message": "Add support for manually set surround formats.\n\nTo make surround sound setting more clear to users, we are changing\nsurround setting from ALWAYS to MANUAL. With MANUAL, users could enable\nsurround formats according to their need.\n\nBug: 67479735\nTest: Try creating AudioTrack with enable/disable surround formats.\nChange-Id: Ia6c0e1210ff6215f4b80a278a0aa90ca9543f262\n"
    },
    {
      "commit": "dc95a25769edbe9c47efd1e25962dbd399056157",
      "tree": "eccaa28c2227d69213c7649cb191a96e3e6b23b6",
      "parents": [
        "9fc25229e0723c93b453ab34957f22a643e2b602"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 12 12:46:56 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 12 18:33:50 2018 -0700"
      },
      "message": "audio policy: make input device selection more consistent\n\nMove logic forcing capture device selection when in call\nto engine so that the selection made when opening a capture stream\nis consistent with the selection made when starting the stream.\n\nBug: 73148976\nTest: manual with Oboe tester\nChange-Id: Iee91ffff7d06fc98fdb2c6b54ff1528e7a82596d\n"
    },
    {
      "commit": "7731b5add3a8ba0f57d8f4b299ba7a432ecc7119",
      "tree": "504268c3b58c3cd373ce4a0062b7b70edb107615",
      "parents": [
        "79d1ed9b6473f4d094aaa6b53f41a6ba92916e42"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 06 15:47:22 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 09 09:13:56 2018 -0700"
      },
      "message": "audio policy: fix notification + voicemail routing\n\nConsider an active VOICE_CALL stream as an indication\nthat notification routing and volume should match voice call routing.\n\nAlso limit notification volume to match current VOICE_CALL volume index,\nnot just VOICE_CALL volume curve with notification volume index.\n\nBug: 74019016\nTest: manual: receive notification while listening to voicemail and\ncheck volume and routing.\n\nChange-Id: Ia9309bdb10b42f6a4fa8745daf3129c90d44f0b8\n"
    },
    {
      "commit": "96117aeb26568ff9aecc97c189a297d5f0fca620",
      "tree": "b475374bf0e62cd7b0ac6e67a1789d69f492c134",
      "parents": [
        "ec57d7b565e1352e2c76040fb5df7614a164b157"
      ],
      "author": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Mon Feb 12 20:52:53 2018 -0800"
      },
      "committer": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Fri Mar 23 06:14:59 2018 +0000"
      },
      "message": "Bluetooth: Enable in-band ringing in vibration mode (3/4)\n\n* Add AUDIO_POLICY_FORCE_FOR_VIBRATE_RINGING mode to force Bluetooth SCO\n  in vibration mode\n* Modify default audio policy engine to route audio through SCO only\n  in AUDIO_POLICY_FORCE_FOR_VIBRATE_RINGING mode\n\nBug: 72647074\nTest: Call phone in vibration mode and hear ringtone on HFP enabled\n      headset, verify that ringtone is only played through headset.\n      Then disconnect headset and call again to verify that ringtone\n      does not play through phone speaker in vibration mode.\n\nChange-Id: I2185955bd51166b76156ffd4efdd1f2f01757518\n(cherry picked from commit 644693eee633980d356afcfedc7518ea7fed2c47)\n"
    },
    {
      "commit": "323717613f804aa507faaec2f6bd6fcd75273849",
      "tree": "656cb69b8076293c0a3a65807903cafe10e99d5a",
      "parents": [
        "05fa245462238847528cd18e04aa77f85b0491a4"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@codeaurora.org",
        "time": "Wed Jan 31 20:24:23 2018 -0800"
      },
      "committer": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Mon Mar 12 13:36:06 2018 -0700"
      },
      "message": "audiopolicy: Check if A2DP playback happens via primary output\n\nAudio policy implementation assumes A2DP playback to happen\nvia HW module other than the primary HAL. This need not be true\nalways, since primary audio HAL can support A2DP playback too.\nAdd an API to check if A2DP playback is supported via primary HAL,\nand if it is supported avoid suspendOutput.\n\nBug: 68824150\nTest: A2DP offload verified on supported codecs\nChange-Id: Ic5546bc2df632462dcc28442af561d05ba2d7c58\n(cherry picked from commit 68364ffbd312cdc28dd44e66c4d80ce5a6ec49ba)\n"
    },
    {
      "commit": "a8ee996bc065d6938c0e0a5904df7fff5d946fea",
      "tree": "e335626781eed7e03d6bc68b110297ca2dedcd4f",
      "parents": [
        "dce7559514917e7975a0d2dcc11aaa97d770367a"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@codeaurora.org",
        "time": "Wed Jan 31 20:24:23 2018 -0800"
      },
      "committer": {
        "name": "Petri Gynther",
        "email": "pgynther@google.com",
        "time": "Mon Mar 12 19:16:49 2018 +0000"
      },
      "message": "audiopolicy: Check if A2DP playback happens via primary output\n\nAudio policy implementation assumes A2DP playback to happen\nvia HW module other than the primary HAL. This need not be true\nalways, since primary audio HAL can support A2DP playback too.\nAdd an API to check if A2DP playback is supported via primary HAL,\nand if it is supported avoid suspendOutput.\n\nBug: 63932139\nBug: 68824150\nTest: A2DP offload verified on supported codecs\nChange-Id: Ic5546bc2df632462dcc28442af561d05ba2d7c58\n(cherry picked from commit 68364ffbd312cdc28dd44e66c4d80ce5a6ec49ba)\n"
    },
    {
      "commit": "58a73fc8445db7fc587e4ef494e59bf5663f8b77",
      "tree": "953f7a1db4c4b6da60818709f0efea126902d3b1",
      "parents": [
        "966c158717dea42a7aa4f69a002f30a73c8713cb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 21 18:46:13 2018 -0800"
      },
      "committer": {
        "name": "Jakub Pawlowski",
        "email": "jpawlowski@google.com",
        "time": "Sat Mar 10 00:44:56 2018 +0000"
      },
      "message": "Add Bluetooth Hearing Aid routing and configuration\n\nBug: 69623109\nTest: connect to Hearing Aid, make phone call, verify audio is heard\nChange-Id: I92267fb48608fb721c5c4ef7ec9fceeafc8ea192\n"
    },
    {
      "commit": "61309523e6332addbd648c0d1bf25d35d6fd7b90",
      "tree": "d7bd244a6e75f5d7b443606ade3d2809b0ef6fc3",
      "parents": [
        "bd1f998721a5c17623043c415fa2a0bb3e57601f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jan 23 09:58:17 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jan 23 17:36:24 2018 -0800"
      },
      "message": "Notifications are not duplicated over multiple devices\n\nSonifications follow media routing, except for speaker playback\n  where they follow the \"safe\" path when available in the\n  absence of media playback.\n\nTest: 1/ plug headphones on phone, play notification, verify it\n         comes only from headset\n      2/ mirror device and play media, then notification, verify\n         it only comes from the speaker\n\nChange-Id: I762ad0688e879ad1e5565b4b77a7393fa7ce7ac5\n"
    },
    {
      "commit": "94c26c06d8f1c3821cc0c7994e233874f5c8ea84",
      "tree": "7fc9ce5c37fe9c0508cc957f7f5419a55f9f2488",
      "parents": [
        "f3ffd1ced8c4709388f8ed5c9a49284f36aa5b97"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jun 30 14:50:01 2017 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jun 30 14:50:01 2017 -0700"
      },
      "message": "Audio routing: Fix notification routing during A11y playback\n\nWhen notifications are played, the audio policy checks if media\n  is playing for deciding which devices will play it. In the\n  absence of media, the notification is duplicated on speaker\n  and headset. With media playing, the notification routing\n  is set to that of the media strategy.\nThe bug is observed during A11y playback on headset with a\n  notification playing: A11y is playing on headset, but the\n  device can\u0027t play the notification on speaker + headset at\n  the same time, resulting in the notification playing in and\n  out based on the A11y playback in headset.\nThe fix is to also consider A11y activity when routing\n  notification playback (under STRATEGY_SONIFICATION_RESPECTFUL).\n  This improves the UX the notification is not missed, and\n  doesn\u0027t cut in and out.\n\nTest: play Talkback on headset, receive notification at the same time.\nBug: 62907561\nChange-Id: Ib924ec41cb7e16d6f2686d8615facba08e256ade\n"
    },
    {
      "commit": "2ee7aab4a39139a86a24ca14f718eb20a1b355db",
      "tree": "1a7501567d6af64aa958f26453ee9360833bfd4a",
      "parents": [
        "bcbc56bfd43e071cf8b199e9e6dfc835d1f29ab6"
      ],
      "author": {
        "name": "YOUNG HO CHA",
        "email": "ganadist@gmail.com",
        "time": "Thu May 25 23:16:51 2017 +0900"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu May 25 11:26:52 2017 -0700"
      },
      "message": "Android.mk: remove $TOP in LOCAL_C_INCLUDES\n\nTest: make systemimage\n\nChange-Id: I5f83786afe3f2c65819b127b041cb74fc4c989ac\nSigned-off-by: YOUNG HO CHA \u003cganadist@gmail.com\u003e\n"
    },
    {
      "commit": "654afa04273ca78f2d61b21dd04aaf54f3bb051e",
      "tree": "11d3398c6e1e0952f9ddb159053ee6b096e74c83",
      "parents": [
        "2f35206b77dd7d8a8c761e0a81ea327c10787036"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu May 11 14:12:33 2017 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu May 11 14:31:23 2017 -0700"
      },
      "message": "Audio policy: use SPEAKER_SAFE device for alarms and ringtones\n\nUse AUDIO_DEVICE_OUT_SPEAKER_SAFE when available for\n  STRATEGY_SONIFICATION instead of AUDIO_DEVICE_OUT_SPEAKER.\nIt is alrady the case for STRATEGY_SONIFICATION_RESPECTFUL\n  (notifications).\n\nTest: play an alarm on a device with SPEAKER_SAFE in the policy conf, verify routing matches mixer path\nBug: 35675592\nChange-Id: I03a4f4238a1ac73165d44f72e4e587b31ec88cc5\n"
    },
    {
      "commit": "904d632a24db8f94de83e44f7179d1c0af022b03",
      "tree": "e86d16495e3fe207153c0f2bcadcb00d14d76aec",
      "parents": [
        "93e29c0846e0f7583ae96edafbf5e8a3169711ee"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 17 17:20:47 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 22 14:40:29 2017 -0700"
      },
      "message": "Add support for USB headset device\n\nAdd missing rules for USB headset devices in routing, volume and effects\nmanagement.\n\nTest: playback and catpure regression tests.\nChange-Id: I42cd157f483deba2371a05d332cd11dceb2b2fa3\n"
    },
    {
      "commit": "f3df83d5957fd717c1663d97cd96eb5b733902c6",
      "tree": "cb29c02e2cfe66a4d24542c710ae19ba12e8970c",
      "parents": [
        "9c544bb666bc990812422797c326a76a1bf53beb",
        "6e51336da3487318459b47191270391f3cf98b96"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 16 02:05:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 16 02:05:50 2017 +0000"
      },
      "message": "Merge \"audio policy: add rule for ringtone duplication over speaker + SCO\" am: dc671c4e33 am: 42d5e65d2b\nam: 6e51336da3\n\nChange-Id: I67dd17852ae81df011eeb232daab5c1f290ab18a\n"
    },
    {
      "commit": "a8e0f02dee635b88ea21c20f26356354e83ec83a",
      "tree": "bd1c001a61973da976f11ed75554113ccdcd8cfa",
      "parents": [
        "5052e9cf9f8c5a62163e5dacb7999b2552873c74"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 27 17:41:53 2017 -0800"
      },
      "committer": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Thu Mar 16 01:11:33 2017 +0000"
      },
      "message": "audio policy: add rule for ringtone duplication over speaker + SCO\n\nBug: 19171297\nTest: make, testplans/79248\n\nChange-Id: Ic539256e53782806d5dbbca5fb6ebe9f2ca5ec76\n"
    },
    {
      "commit": "36867767ba86244b0d942255b9d241b092151309",
      "tree": "1fa1b0a4cf8fe6b7f780bb8950f6ad659ae7a5d5",
      "parents": [
        "af86dcee9d97e02e9069548684ef8c9db5190ff9"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 29 12:03:28 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 29 12:35:25 2016 -0800"
      },
      "message": "USAGE_ASSISTANT/ACCESSIBILITY in audio policy manager\n\nAdd support for USAGE_ASSISTANT.\nFix stream type for USAGE_ACCESSIBILITY.\n\nTest: enable Talkback, check volume; make\nBug: 30947943\n\nChange-Id: Ie35adf0115dce1fac6d3deddc1e57e36b36913f6\n"
    },
    {
      "commit": "e4c3c4310f4e4a76195dc08323c4a26dd28ffd08",
      "tree": "17ad3264c033a26754c3cf4aed1e5d25ca4ab49c",
      "parents": [
        "0a2ea58394190408a3d532bfcc242ba64ca71538"
      ],
      "author": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Fri Dec 16 12:13:40 2016 +0900"
      },
      "committer": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Fri Dec 16 15:10:26 2016 +0900"
      },
      "message": "Use libxml2 as shared lib.\n\nThe dependencies to static libraries in frameworks should be removed\nas many as possible to reduce a size of the system partition.\nAnd that will improve coverage of the VNDK libraries because this\neffort might find new necessary shared libs which were linked\nstatically before.\n\nSize diffs of affected binaries on sailfish-userdebug build are as\nfollows.\n\nlibaudiopolicymanagerdefault.so: 583440 -\u003e 267288 (-316152)\nlibaudiopolicymanager.so       : 16008 -\u003e 16004 (-4)\n\ntotal                          : (-316156)\n\nTest: building succeeded, and the image was tested on sailfish.\nBug: 33056637\nChange-Id: I51d98c5c2b5d94561190a1651063737fb1cb06ff\n"
    },
    {
      "commit": "08dab5ae92ddd1f3b337b6e35f918fea8c284a56",
      "tree": "4ebbef53fa801437efecb2de9135543c5f1326c6",
      "parents": [
        "8526d86ab12284135ed4ca27aeb816371c10c0e6"
      ],
      "author": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Wed Dec 07 15:08:17 2016 +0900"
      },
      "committer": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Thu Dec 08 18:13:28 2016 +0900"
      },
      "message": "Use libmedia_helper as shared lib.\n\nThe dependencies to static libraries in frameworks should be removed\nas many as possible to reduce a size of the system partition.\nAnd that will improve coverage of the VNDK libraries because this\neffort might find new necessary shared libs which were linked\nstatically before.\n\nSize diffs of affected binaries on angler-userdebug build are as\nfollows.\n\nlibmedia                    : 598056 -\u003e 547928 (-50128)\nlibstagefright              : 1496420 -\u003e 1492124 (-4296)\nlibaudiopolicyservice       : 75372 -\u003e 66940 (-8432)\nlibaudiopolicymanagerdefault: 613168 -\u003e 583516 (-29652)\nlibaudioflinger             : 397840 -\u003e 364380 (-33460)\nlibaudiohal                 : 114752 -\u003e 68684 (-46068)\nlibaudiopolicyenginedefault : 122096 -\u003e 71968 (-50128)\nlibmedia_helper             : 0 -\u003e 66288 (+66288)\n\ntotal                       : (-155876)\n\nTest: building succeeded, and the image was tested on angler.\nBug: 33056637\nChange-Id: I00a71e518337a1efcf7f55256145776311596991\n"
    },
    {
      "commit": "913d06c099bd689375483a839e11057ccf284d1c",
      "tree": "25d7f40231f47897013b0984348f40bf05b72ea7",
      "parents": [
        "267e07cd8432679bcdd72b0bdf38846446c1c4ed"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Nov 01 12:49:22 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Nov 07 09:29:37 2016 -0800"
      },
      "message": "Move TypeConverter into a shared library\n\nThis will be needed for the default implementation of the audio HAL\nin TREBLE for parsing supported formats etc. provided by HAL in\na form of string literals.\n\nAs a bonus, remove some hand-written type conversions in AudioFlinger\nused in dumps.\n\nExample changes in the dump output:\n\n   HAL format: 0x1 (pcm16) \u003d\u003d\u003e HAL format: 0x1 (AUDIO_FORMAT_PCM_16_BIT)\n   Processing format: 0x5 (pcmfloat) \u003d\u003d\u003e Processing format: 0x5 (AUDIO_FORMAT_PCM_FLOAT)\n   Output device: 0x2 (SPEAKER) \u003d\u003d\u003e Output device: 0x2 (AUDIO_DEVICE_OUT_SPEAKER)\n   Input device: 0 (NONE) \u003d\u003d\u003e Input device: 0 (AUDIO_DEVICE_NONE)\n   AudioStreamOut: 0x... flags 0x6 (PRIMARY|FAST) \u003d\u003d\u003e\n       AudioStreamOut: 0x... flags 0x6 (AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_FAST)\n\nTest: make \u0026 run\nChange-Id: I9cde640e6827b7aa6d62e9caade9e738227e299f\n"
    },
    {
      "commit": "263506542fbe480ddb247597bdcef16c437b48dd",
      "tree": "1ad06b1495a50534199f1aa5068b8519dd5d50c5",
      "parents": [
        "712690b37495816a3f55e2d000f1f68caf1c20a4"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 25 13:17:47 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 04 14:17:07 2016 -0700"
      },
      "message": "Remove unneeded links with dynamic libraries\n\nVarious media components were linking against dynamic libraries that weren\u0027t needed.\n\nTest: built and booted\n\nChange-Id: I7379506fd06d4e28e0eff0001fd073a2d3860f8e\n"
    },
    {
      "commit": "c661ae6165338fd5f0bca50a63058b4bcd6def4b",
      "tree": "1fabefad176045b256eb3282f391b9e1ae4ee654",
      "parents": [
        "bf2e61f54c7dcc37c97b4908c9ed6871cf3d2b49"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 25 13:17:47 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 26 15:42:11 2016 -0700"
      },
      "message": "Remove unneeded links with dynamic libraries\n\nVarious media components were linking against dynamic libraries that weren\u0027t needed.\n\nTest: built and booted\n\nChange-Id: I7379506fd06d4e28e0eff0001fd073a2d3860f8e\n"
    }
  ],
  "next": "9ee0540d3a61bff03d561ca431a371c3d9335d2b"
}
