)]}'
{
  "log": [
    {
      "commit": "0a488938fa1c1b2b0c02b1c101281c01ff8ed103",
      "tree": "4686aa2bca38cccbbc572bbb75a2bd82d2b9153b",
      "parents": [
        "6a02d53b76d0a3ccb234a3e3d56318883cadd733"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 07 17:32:40 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 12 16:19:35 2020 -0700"
      },
      "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\n"
    },
    {
      "commit": "ed49c8644a89304cd5ae3056245a07d04a8911de",
      "tree": "36dce91849ed810a8df805020b7eac5abd5959d6",
      "parents": [
        "8362149affc7676be78dfc1e7cd60fa654abc91b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 31 16:08:03 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 31 16:08:03 2020 -0700"
      },
      "message": "audio policy: fix attributes for strategy \"rerouting\"\n\nStrategy rerouting is used for audio injection to a recorder\ndynamic audio policy mix. As such, the correponding audio attributes\nmust contain usage AUDIO_USAGE_VIRTUAL_SOURCE.\n\nTest: gts-tradefed run gts --skip-device-info -m GtsGmscoreHostTestCases -t \u0027com.google.android.gts.audioservice.AudioServiceHostTest#testInjectForRecord\u0027\nChange-Id: Id175b9583faf8910aef7b2988ac5019d0cbbcb53\n"
    },
    {
      "commit": "be211756d5f067557069d9038baf14e2b44edfea",
      "tree": "cb49ebe7dc6ead96f7e4755adf6a49492207ef53",
      "parents": [
        "70e08c0ad62ab6052f0d321fc07819f72d5a6575",
        "430fe3030010b41416ce5066250fa1a30b4865ad"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 17 01:16:13 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Apr 17 01:16:13 2020 +0000"
      },
      "message": "Merge \"audio: Centralize audio configuration paths specification\" am: c0884de8b9 am: a89bd207aa am: 2c365b16ad am: 7673dcb329 am: 430fe30300\n\nChange-Id: Iec77e9e80b591b7865877f0efd28e5057fbe5dc9\n"
    },
    {
      "commit": "2c365b16ad0e0b801622b338c558b0f66427c84c",
      "tree": "b0421cbbda51f1f25b58d3fbb19abf1e25e71305",
      "parents": [
        "65412b25fcf6149b739032e9dfe0e02f43c7d78b",
        "a89bd207aad8de70d4376ec7108306f18fcc8133"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 16 23:35:46 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Apr 16 23:35:46 2020 +0000"
      },
      "message": "Merge \"audio: Centralize audio configuration paths specification\" am: c0884de8b9 am: a89bd207aa\n\nChange-Id: I8c5eaa6dd147a68e5380f4638b89e8050eefc308\n"
    },
    {
      "commit": "edc0ae1ebc8ec716f327269552ceaf81fbd874a0",
      "tree": "f393c230c74478be53856618c5169998f0ff71b0",
      "parents": [
        "04f759bfd400f64bd7d17e9e3fd725d1e2cea31e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Apr 14 14:47:01 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Apr 14 14:47:01 2020 -0700"
      },
      "message": "audio: Centralize audio configuration paths specification\n\nThe list of possible paths for the audio configuration\nfiles is now retrieved using audio_get_configuration_paths()\nfunction. All duplicated lists of known configuration\ndirectories have been removed.\n\nBug: 153680356\nTest: test audio on built image working\n      atest VtsHalAudioV5_0TargetTest VtsHalAudioPolicyV1_0TargetTest\nChange-Id: I8c369442f5ca7baa17df95e6a001396fc9de5681\n"
    },
    {
      "commit": "469c02d3af590abc3af9b2f09213b82033ccc81f",
      "tree": "da86d8433115f8be0aea1d88b933b085f77a4f08",
      "parents": [
        "4445ad22c811aa59b86058b9a6f12fa97dff160d",
        "ce9f217c09cec93ac2fd1279d8194fd1f59d14bc"
      ],
      "author": {
        "name": "Paul Mclean",
        "email": "pmclean@google.com",
        "time": "Mon Mar 30 19:53:41 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 30 19:53:41 2020 +0000"
      },
      "message": "Merge \"Check input parameters to avoid a potential divide-by-zero error.\""
    },
    {
      "commit": "c8566c6bb2771b838d3f0a8240b68732a8e40247",
      "tree": "0c0245f2a395a13843eec2ad4d144c503daf7fdb",
      "parents": [
        "c4f3d646a2545177d3f13993071f264607de8b49",
        "ae36a0b59be8af2bd7100a9e3e4433daca7a7a69"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 21 02:41:09 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Mar 21 02:41:09 2020 +0000"
      },
      "message": "Merge changes I5e12b2c7,Ic79effb1 am: 0141bbe644 am: ae36a0b59b\n\nChange-Id: Ic7fbb59e522a52a03669222882557ad959a9f3fd\n"
    },
    {
      "commit": "a69a879deb6523416ef882e4d4d4134ffc786fc5",
      "tree": "9a0e7efa2309f6cd0a82f86e4c7a268cc5c2ef4f",
      "parents": [
        "5995f2146016068b5619445b2f93372f12b5be51"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Feb 26 13:20:52 2020 +0100"
      },
      "committer": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Mar 19 08:42:48 2020 +0100"
      },
      "message": "[AudioPolicy][engine][Strategy] fallback on music stream\n\nIf a strategy matches a attributes, whatever a stream type has\nbeen provided, the MUSIC stream type shall be returned as a fallback\nto ensure AudioFlinger will apply the right gain to the right stream\n(which always fallback as music if none is provided)\n\nTest: build \u0026 run cts-dev -m CtsMediaTestCase --test android.media.cts.AudioProductStrategyTest\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioVolumeGroupTest\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioVolumeGroupChangeHandlerTest\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testPermissionsForVolumePerAttributes\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testGetAndValidateProductStrategies\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testGetAndValidateVolumeGroups\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testSetGetVolumePerAttributesWithInvalidAttributes\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testSetGetVolumePerAttributes\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testVolumeGroupCallback\n\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ic79effb1341b788d90f5d73d23ae92b983f17225\n"
    },
    {
      "commit": "ce9f217c09cec93ac2fd1279d8194fd1f59d14bc",
      "tree": "415af9d3359baa5974832aee2a829f9674ed09b9",
      "parents": [
        "12e5101c0ebca4852e2326b6f1f4691d456e8cb4"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Fri Feb 28 11:00:59 2020 -0700"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Mon Mar 02 09:53:28 2020 -0700"
      },
      "message": "Check input parameters to avoid a potential divide-by-zero error.\n\nBug: 150156665\nTest: build, flash...\nChange-Id: I05a5f40acbd18c230decf5b0a8dc0c5d5e690e49\n"
    },
    {
      "commit": "2428c6b9a457c05ae99bf8daec43947c5ce323e7",
      "tree": "22c10404361b518471e3bfdd30c08a2035799a00",
      "parents": [
        "de82404ca56c7f0356c22c8e105be8192f66a9b6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 08 11:42:35 2020 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 12 01:38:25 2020 +0000"
      },
      "message": "audio policy: different default config for system volumes\n\nWhen a volume curve is not found for a volume group\nassociated to a system strategy, use AUDIO_STREAM_PATCH\ninstead of AUDIO_STREAM_MUSIC as default config.\n\nBug:148588565\nTest: play music and check volume\nChange-Id: Ib3fb2a1b7b5f3118bf16a3cc9d8e578fa0431645\nMerged-In: Ib3fb2a1b7b5f3118bf16a3cc9d8e578fa0431645\n"
    },
    {
      "commit": "de82404ca56c7f0356c22c8e105be8192f66a9b6",
      "tree": "e985225a3aaee0323514ff145f263a400573962c",
      "parents": [
        "d7227cc1081fefa99f43c1746bf526925d7c9d99"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Feb 06 10:37:43 2020 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 12 01:37:18 2020 +0000"
      },
      "message": "[AudioPolicy] fix volume regression\n\nThis CL fixes regression introduced in aosp/1213724\n\nThe regression happened when offloaded music is played, volume\nis reduced, next song is requested then the volume is switching\nto full scale.\n\nIt is linked to a \"ghost volume source\" without stream types that\nis considered as a music stream before volume is set in AudioFlinger.\nThe music volume was overwritten by this volume source.\n\nThis CL fixes only the ghost volume source by preventing to add twice\nthe internal volumes sources linked to AUDIO_STREAM_PATCH and\nAUDIO_STREAM_REROUTING.\n\nThe clean fix consists in aligning AudioFlinger on volume sources\nrather than stream types.\n\nBug: 148588565\nTest: plays offloaded music, reduce volume to min.\n      Then press next song.\n      No volume gap expected.\n\nChange-Id: I0bb3b5ca1f13ba23351bcd658acf8d7f52555929\nMerged-In: I0bb3b5ca1f13ba23351bcd658acf8d7f52555929\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "d7227cc1081fefa99f43c1746bf526925d7c9d99",
      "tree": "787d696e067580939a55f668eed7d2948987674d",
      "parents": [
        "3a2f04cf5db1e7dfc4727e80cdd148fb591fe3f8"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Feb 05 17:27:09 2020 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 12 01:35:16 2020 +0000"
      },
      "message": "[AudioPolicy][Engine] Attributes of strategy not populated\n\nThe assistant new stream CL has broken the strategies without\nstream types. The attributes are not populated anymore preventing\nto retrieve the volume group from attributes.\n\nBug: 136121584\nTest: run cts-dev -m CtsMediaTestCase --test android.media.cts.AudioProductStrategyTest\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioVolumeGroupTest\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioVolumeGroupChangeHandlerTest\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testPermissionsForVolumePerAttributes\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testGetAndValidateProductStrategies\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testGetAndValidateVolumeGroups\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testSetGetVolumePerAttributesWithInvalidAttributes\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testSetGetVolumePerAttributes\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testVolumeGroupCallback\n\nChange-Id: I15a14e4cf85e6c4bbf09db24bb33b4b9fb9cab54\nMerged-In: I15a14e4cf85e6c4bbf09db24bb33b4b9fb9cab54\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "35f8c7c32aa45f0b95cec7e1d31fc92ce79d57ee",
      "tree": "d9225d987f9948174710ad18b7a51bc45686205d",
      "parents": [
        "39d1f3e01dae5f6794e95074118d3f0466c95a7d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 08 11:42:35 2020 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 10 18:07:26 2020 -0800"
      },
      "message": "audio policy: add call assistant volume stream\n\nRouting strategy call assistant was added without\nassociated volume stream and wass reusing AUDIO_STREAM_PATCH.\nThis is violating the rule that two strategies cannot\nshare the same volume stream.\n\nBug:148588565\nTest: play music and check volume\nChange-Id: Ib3fb2a1b7b5f3118bf16a3cc9d8e578fa0431645\n"
    },
    {
      "commit": "39d1f3e01dae5f6794e95074118d3f0466c95a7d",
      "tree": "9a5da9eea3b98310f5c0db48a9824af84c4348f4",
      "parents": [
        "1602608c4c168d980cb3269f8f93c4e898e82844"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Feb 06 10:37:43 2020 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 10 18:07:17 2020 -0800"
      },
      "message": "[AudioPolicy] fix volume regression\n\nThis CL fixes regression introduced in aosp/1213724\n\nThe regression happened when offloaded music is played, volume\nis reduced, next song is requested then the volume is switching\nto full scale.\n\nIt is linked to a \"ghost volume source\" without stream types that\nis considered as a music stream before volume is set in AudioFlinger.\nThe music volume was overwritten by this volume source.\n\nThis CL fixes only the ghost volume source by preventing to add twice\nthe internal volumes sources linked to AUDIO_STREAM_PATCH and\nAUDIO_STREAM_REROUTING.\n\nThe clean fix consists in aligning AudioFlinger on volume sources\nrather than stream types.\n\nBug: 148588565\nTest: plays offloaded music, reduce volume to min.\n      Then press next song.\n      No volume gap expected.\n\nChange-Id: I0bb3b5ca1f13ba23351bcd658acf8d7f52555929\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "1602608c4c168d980cb3269f8f93c4e898e82844",
      "tree": "7d97099d8d33e690ccd223bf2390c1805c4afe65",
      "parents": [
        "575fdea51e704e8819976010151fcfcdb82018db"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Feb 05 17:27:09 2020 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 10 17:10:45 2020 -0800"
      },
      "message": "[AudioPolicy][Engine] Attributes of strategy not populated\n\nThe assistant new stream CL has broken the strategies without\nstream types. The attributes are not populated anymore preventing\nto retrieve the volume group from attributes.\n\nBug: 136121584\nTest: run cts-dev -m CtsMediaTestCase --test android.media.cts.AudioProductStrategyTest\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioVolumeGroupTest\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioVolumeGroupChangeHandlerTest\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testPermissionsForVolumePerAttributes\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testGetAndValidateProductStrategies\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testGetAndValidateVolumeGroups\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testSetGetVolumePerAttributesWithInvalidAttributes\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testSetGetVolumePerAttributes\nrun cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testVolumeGroupCallback\n\nChange-Id: I15a14e4cf85e6c4bbf09db24bb33b4b9fb9cab54\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\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": "ab1837ab010e371d3f8caa06f9200cbe33ea7242",
      "tree": "47c577d5a90d0861badee8a46a0642ea5614b861",
      "parents": [
        "c226ea4b0660b7e4bcfdd71e8a8950c7bd351556"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Oct 15 10:48:50 2019 +0200"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jan 17 21:28:24 2020 -0800"
      },
      "message": "audiopolicy: engine: cleanup to enable VTS testing\n\nTest: build \u0026 audio check\nBug: 141989952\nChange-Id: If459eb362c69e34d985e8bed6733e1015c5293f5\nMerged-In: If459eb362c69e34d985e8bed6733e1015c5293f5\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "9c3728b04f5fe4cca599556581fc5a38a1481b02",
      "tree": "76762fef7c0e805d9c0c63f51deb43068ffc1358",
      "parents": [
        "84f7675346036acc2c0709dde296eb470fce39ac"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Oct 15 10:48:50 2019 +0200"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 15 16:34:34 2020 -0800"
      },
      "message": "audiopolicy: engine: cleanup to enable VTS testing\n\nTest: build \u0026 audio check\nBug: 141989952\nChange-Id: If459eb362c69e34d985e8bed6733e1015c5293f5\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\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": "5a9fe55c35807173df5ba89d821411f8b6fa054f",
      "tree": "17132ef82205541565f4d4c094a8cae82c0ba20b",
      "parents": [
        "b035c081098cfd462922e5e0f6050a47617a656d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 06 16:47:55 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 06 16:47:55 2019 -0800"
      },
      "message": "Fix newline symbols in files added in aosp/1183241\n\nThe added files were using DOS EOL symbols (CRLF) instead\nof UNIX (LF only). Removed CR symbols.\n\nBug: 135749685\nTest: m\nChange-Id: Iba36aaef0ea8d9bcb3bd8e2d476a7b0588bd70ee\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": "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": "01155fb2f42cb4b1ce2e0c4f8bd6cb7cc9b44bb2",
      "tree": "8b83dcccd895e42c13ee9bf938d6c89a0fd52404",
      "parents": [
        "a13be84cd6c5c3b9913bb7b0ff4fdbf3d9c108fb",
        "5070660381ef299b2ebabadfa37277ca7ed60a25"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Oct 02 22:24:40 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 02 22:24:40 2019 -0700"
      },
      "message": "Merge \"Cast enum to uint32_t before comparing with AUDIO_MODE_CNT\" am: 5a6a5a9b82 am: 31d882eab0 am: b592a9ff39\nam: 5070660381\n\nChange-Id: Ic4585160d54a63a3d951a319cd8f61ecd13a5e4a\n"
    },
    {
      "commit": "27b5c0d7a18b49df1e27cf499a3a41618e5027b7",
      "tree": "7681cee96f3340f55826f6a7c9b662b742e9759a",
      "parents": [
        "3e9dd76e813cf04c9dd35a8c2e813c174e5b435e"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Oct 02 15:46:20 2019 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Oct 02 23:04:07 2019 +0000"
      },
      "message": "Cast enum to uint32_t before comparing with AUDIO_MODE_CNT\n\nAUDIO_MODE_CNT falls outside of the enum range, the comparison emits\ntautological-constant-out-of-range-compare warning.\n\nTest: presubmit\nChange-Id: Iacab29a79219048868d390dbe08e70aba22e9cc5\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": "f5fd58d26e82466b902dec3794acbd09729f1eb7",
      "tree": "c802863b91b074280f76759932a3bdb68cbccc86",
      "parents": [
        "b639c40f904f53d2926639f266eaeee329f412eb",
        "84e43c724aa359055171a4c4e8c73e1df222ae4b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 02 18:01:41 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 18:01:41 2019 +0000"
      },
      "message": "Merge changes from topic \"addlibaudiofoundation\"\n\n* changes:\n  Make AudioGain parcelable.\n  Move AudioGain to libaudiofoundation.\n"
    },
    {
      "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": "03e9a8f803f215af374429b500bb18e9df5e439a",
      "tree": "22a6d04b5f0ac9b8d1c73b32dd02e99a698bc7ec",
      "parents": [
        "c62ef7905d27ade434e401892839dd9b9c94bf15"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jul 11 15:14:50 2019 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jul 22 13:46:33 2019 +0000"
      },
      "message": "Remove unnecessary use of external/icu/icu4c/source/common\n\nThis is no longer necessary because the headers are exported by the\nlibicuuc library which is a dependency of libxml2.\n\nBug: 134379140\nChange-Id: I01dfe41c6584d71de47a5a76e1f7cc718083ca8c\nTest: m libaudiopolicyengine_config\nExempt-From-Owner-Approval: cherry pick from qt-dev-plus-aosp.\n(cherry picked from commit 2142c72cd74f0b303a676192f2d9d1285dbc2bda)\n"
    },
    {
      "commit": "645e1391f670dc65733cf145ebd1776a5fdaa878",
      "tree": "2e54022e04ad3bf37542a2b2c979515e7fd13d97",
      "parents": [
        "4a8b860e1d08f21b378c29c662656197b9ac1cfe",
        "b50f7f0777847279776c57aa55f3963b58193cdb"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jul 17 08:17:46 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 17 08:17:46 2019 -0700"
      },
      "message": "Merge \"Remove unnecessary use of external/icu/icu4c/source/common\" into qt-dev-plus-aosp am: f72b5935d7\nam: b50f7f0777\n\nChange-Id: I7bc6982b9a8625a5517dfd0ae1463a9cf4f99423\n"
    },
    {
      "commit": "2142c72cd74f0b303a676192f2d9d1285dbc2bda",
      "tree": "958502a88e2bf4b54d9a866d44734cc1595ff496",
      "parents": [
        "7956718497dce3738780b6b9abab8308a1ca7f92"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jul 11 15:14:50 2019 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jul 11 14:23:05 2019 +0000"
      },
      "message": "Remove unnecessary use of external/icu/icu4c/source/common\n\nThis is no longer necessary because the headers are exported by the\nlibicuuc library which is a dependency of libxml2.\n\nBug: 134379140\nChange-Id: I01dfe41c6584d71de47a5a76e1f7cc718083ca8c\nTest: m libaudiopolicyengine_config\n"
    },
    {
      "commit": "796905af86ee6dc3b457dd4b1b1b2e033038ac0b",
      "tree": "88ab6e2617f9e975add5c1c396773ce1d43ce344",
      "parents": [
        "b02674a3f116519caa011d2cd7d0f154ccaae30b",
        "47835553b6e9b019acab78ead590727bc40e44ee"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 23 15:48:09 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 23 15:48:09 2019 +0000"
      },
      "message": "Merge \"audiopolicy: Load the engine library dynamically\""
    },
    {
      "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": "22fcda29e5982a052d2f6c6ce312d1f65edc7920",
      "tree": "5212b9474c047e7f68b73e46b9d63b60103541de",
      "parents": [
        "4fc900d75601247d565a736decb36381165f6d83"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 17 16:28:47 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 17 16:28:47 2019 -0700"
      },
      "message": "audio policy: fix camera shutter sound\n\nFix regression in camera shutter sound when system stream\nvolume is 0.\n\nBug: 132696227\nTest: repro steps in bug.\nTest: regressions when camera sound is enforced\nChange-Id: I76b4a5ee041f97c5f771c003bf4f99327d797096\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": "5bcf284e8177a2dfb58e01e8e1a88ec13165c29d",
      "tree": "76d439db32a3c18870170b140ba9f14ab8248afb",
      "parents": [
        "41618a66a853a441304bb8fdefcafc903b3ab27c",
        "74e01fa7d96b71952b32ec98f1ac352e6e74186b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 03 19:59:00 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 19:59:00 2019 +0000"
      },
      "message": "Merge \"Audioflinger: tracks monitor OP_PLAY_AUDIO\""
    },
    {
      "commit": "74e01fa7d96b71952b32ec98f1ac352e6e74186b",
      "tree": "c48d9297fb55046c3dc0a14d0652b8072fa0db62",
      "parents": [
        "c70268aa433e7d307819184ae5c2ec96a3e5b6af"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 25 12:18:09 2019 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 02 15:04:30 2019 -0700"
      },
      "message": "Audioflinger: tracks monitor OP_PLAY_AUDIO\n\nMute/unmute tracks according to changes in OP_PLAY_AUDIO for\n  the current usage.\nIn audio policy: always assign AUDIO_STREAM_ENFORCED_AUDIBLE\n  to sonification tracks with AUDIBILITY_ENFORCED flag.\nDo not mute tracks from root / audio server.\nDo not mute UI sounds on AUDIO_STREAM_ENFORCED_AUDIBLE\n  stream type.\n\nBug: 112339570\nTest: enter DnD, play notifications, verify not heard\nChange-Id: Ia5f1118481cf0573101acf2092fbd0ce2cf8c038\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": "b3527ddc7e9f6d57890656732747c6394b8f2b71",
      "tree": "078402ddcec633a759531c1f57410579cd05ac27",
      "parents": [
        "3e75e2b77c644ce4f33aa1174a3e118da72c6c10",
        "aaac0fd20d26e6a3a1c2d4bf0638f6a183ecec4f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 12 15:42:31 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 12 15:42:31 2019 +0000"
      },
      "message": "Merge \"audiopolicy: switch to VolumeGroup for Output\""
    },
    {
      "commit": "aaac0fd20d26e6a3a1c2d4bf0638f6a183ecec4f",
      "tree": "6f3c72fd0dd86999ce751be2fd2289f830ec4a99",
      "parents": [
        "e99551ffc4139414d7e4dae7638b488adf0d6a24"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Nov 22 17:56:39 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 11 19:39:44 2019 -0700"
      },
      "message": "audiopolicy: switch to VolumeGroup for Output\n\nVolume used to be managed per stream type.\nVolumeGroup is a configurable way to manage volume affinity.\nThis CL allows to switch to VolumeGroup as new volume affinity management.\n\nBug: 124767636\nTest: audio smoke tests\n\nChange-Id: I71fc214f6db3158f0f05920cc3d700b29db1a4bc\nSigned-off-by: François 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": "4b2018b0c0b65b1f6e20e571bbaf0e8984dccc06",
      "tree": "94339667fc464ad0bca7be4f07cf9148bf720b3f",
      "parents": [
        "63c0f36d2ba1b752a040b47d108f4cc907da227b"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Nov 07 11:18:59 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 26 12:45:57 2019 -0800"
      },
      "message": "audiopolicy: add Volume Group introspection APIs\n\nChange-Id: Ib02900bde69ee24685d9d374c0e5f73d33fa59e7\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n\nTest: make\nBug: 124767636\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": "3de3ee7025a84cbb1902c222b6d897414862c373",
      "tree": "b8088d053d474e5e281968811871b98800e54be4",
      "parents": [
        "f5aa58d324bc1d53b7c0ec31edf81814e8553044"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 18:20:37 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 18:20:37 2019 -0800"
      },
      "message": "Revert \"Revert \"audiopolicy: engine: use apm XML config file for volume curves\"\"\n\nThis reverts commit 1462a279faace46266ab1f2151393ecd31c62a5e.\nTest: make\n"
    },
    {
      "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": "1462a279faace46266ab1f2151393ecd31c62a5e",
      "tree": "7c1503d7892fc1788b9ccf3d585528acd96aba2e",
      "parents": [
        "15c6b6df6338529e10b4fc3ce1a904e82c0d6b6b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 17:22:57 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 17:24:38 2019 -0800"
      },
      "message": "Revert \"audiopolicy: engine: use apm XML config file for volume curves\"\n\nThis reverts commit 97717283c8e909e242efa615e66ad0b0faf6e9f6.\n\nBug: 125937703\nTest: make\nChange-Id: If7993ca2d9d5a6569ebf7bf4fdc82a7262d29faf\n"
    },
    {
      "commit": "97717283c8e909e242efa615e66ad0b0faf6e9f6",
      "tree": "b79eacf7231c3988e6fd858589b24eaa68af7ef0",
      "parents": [
        "539311942bdbac65fbf7f2fc1390b6b9ef850a1b"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Feb 07 09:07:29 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 21 18:40:45 2019 -0800"
      },
      "message": "audiopolicy: engine: use apm XML config file for volume curves\n\nThis CL removes the hard coded volume table in the engine and\nuse as a fallback for compatibility reason the apm config file\nto load the volume tables.\n\nBug: 124767636\nTest: dumpsys media.audio_policy \u0026 diff with previous version\n\nChange-Id: I0392aad730c67ee79f898093fd1b4f64e26ab3fd\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\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": "b9b7a56a58c71bbc069bcb23e1a5c679480b8f7d",
      "tree": "d5145c838f72869b36f9824ee62d4d8c60268a50",
      "parents": [
        "8ec576b7abfc01ac99f3542d29a86ddc3533541b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 05 12:45:13 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 05 12:45:13 2019 -0800"
      },
      "message": "audio policy: fix build\n\nremove unused dependency from parameter lib in engine config.\n\nTest: make.\nChange-Id: I95ca407ab213fd7a9a976873c7e711b60d078156\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": "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": "1b2a794a27caab3a1320d22b872b04ef73e96555",
      "tree": "79f53eef61b788a5f49aaf26b5c897d7a6dac49f",
      "parents": [
        "2773dd7219e6cdc56471501c90808a1bafc31d39"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 10:18:09 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 12:06:18 2017 -0800"
      },
      "message": "audiopolicy: Remove ; after namespace bracket\n\nSemicolons are not needed after the closing bracket of\na namespace, remove it.\n\nTest: compiles\nChange-Id: Ie82930365f738fd9c95a9163839a68b772e49d95\n"
    },
    {
      "commit": "e7557336920ca7e7d53e8ccc03d23359b41957af",
      "tree": "d9c490d2ba3d28176436b5d0374248322f0a349d",
      "parents": [
        "aadc29b910a22c1d2b422d5a96faef07dfc97292"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 17 15:12:12 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 17 15:23:03 2016 -0700"
      },
      "message": "Remove executable bit from ordinary files\n\nTest: builds OK\nChange-Id: I7912c9c9c85dc500d33698fc174ba2a0db387407\n"
    },
    {
      "commit": "d1ab2bd4f1ea166a7e9e81cfd7f3e5dd47135d4d",
      "tree": "14c1b9bb94c6b5bf6820be9cce3484995486696e",
      "parents": [
        "987f953298169027df001409fbd82991d82900bc"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Wed Dec 02 18:20:06 2015 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 21 14:40:54 2016 -0800"
      },
      "message": "audio policy: move volume table to XML file\n\nThis patch allows to store in XML file volume tables.\nThe compatibility is maintained for legacy conf file.\nConfigurable Engine is only compatible with new XML conf.\nThis patch removes from configurable engine Structure / Settings the volume\ntable but keep the configurabllity of switching volume profiles from\none another according to criteria like phone state...\n(ex: DTMF stream type is following Voice Profile in call)\n\nChange-Id: I78c91bc3378b6c47202abe7b5c1c1e011ff62eed\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "d0609ad390ff8bb1cafebdf363bf1d15e63b949f",
      "tree": "4fb8bed9270800f907acac087806227114577689",
      "parents": [
        "3f273d10817ddb2f792ae043de692efcdf1988ae"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Tue Dec 01 17:56:08 2015 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 02 10:33:18 2015 -0800"
      },
      "message": "audio policy: move device_category type outside volume class\n\nThis patch prepares the removal of hard coded volume tables by\nmoving outside volume class the device_category enumeration.\n\nChange-Id: Ic712377898276a39bb782ac0bc7f793cdd7fa8bd\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "20f06f996337c9bf79d0b112083f6427a122ebab",
      "tree": "ad50ded183a11ceef01566a2ff78c29e89f5c4e2",
      "parents": [
        "3fc792fe36b0b9100f74185665221b37f650ff65"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Tue Mar 24 09:01:14 2015 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 18 10:52:09 2015 -0700"
      },
      "message": "Add a configurable version of the policy engine based on PFW\n\nThis patch adds a configurable version of the policy engine\nbased on the parameter framework.\nThis configurable engine shall be activated with a flag\nUSE_CONFIGURABLE_AUDIO_POLICY within BoardConfig.mk\n\nThis patch provides the generic configuration as an example.\nThis configuration provides the same user experience as the default\npolicy engine.\n\n- Fix M Issue on configurable policy engine version.\n\n- Remove the \"empty static lib include trick\" hack\n\nThe code was using a hack to import headers only through an empty lib.\nThis trick was used not only by the PFW and its plugin but also internally\nwith policy.\n\nThis patch removes this hack and either links againts the real libraries if exist\nor point on the path of the header.\nHowever, since header directories are not recursively detected on Andoid, we need to manually\nadd all necessary libraries. (for example libicuuc needed by libxml2)\n\n- let the build system decide which compiler and which stl is to be used\n\n- Disable by default Audio Policy Settings XML file generation at compilation time\n\nIn order not to depend on python tool for the configurable policy example,\nthis patch adds the generated Settings XML file and disables the generation\nfrom .pfw files at compile time.\nIf the user wishes to regenerate it, he may use the pfw_rebuild_settings\noption.\n\n- Fix Clang issues within Configurable Audio Policy\n\nFix compilation issues revealed when switching to CLANG compiler\nwithin the configurable version of policy engine.\n\nChange-Id: I3edc26db94c0bf8a76430ab8081bae52e9193705\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "6fc6a64fa3b0a9e4577eb763590f531c0a50a27b",
      "tree": "2c51b5f8ffe7015ffdc3fdaf19bd36982546bf89",
      "parents": [
        "65c3781db3443531deacecfbda5c7e7e82868a34"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Apr 25 05:18:59 2015 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Apr 25 05:18:59 2015 +0000"
      },
      "message": "Revert \"Add a configurable version of the policy engine based on PFW\"\n\nThis reverts commit 65c3781db3443531deacecfbda5c7e7e82868a34.\n\nChange-Id: Ib61cd70f97c4c4f4b503fb845643627d6896f4f9\n"
    },
    {
      "commit": "65c3781db3443531deacecfbda5c7e7e82868a34",
      "tree": "5560072d1f61a9d76e437ef311ef282976fc253d",
      "parents": [
        "21db57282da8b3daba1549f3a8e41c4fbaf80059"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Tue Mar 24 09:01:14 2015 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 24 14:57:55 2015 -0700"
      },
      "message": "Add a configurable version of the policy engine based on PFW\n\nThis patch adds a configurable version of the policy engine\nbased on the parameter framework.\nThis configurable engine shall be activated with a flag\nUSE_CONFIGURABLE_AUDIO_POLICY within BoardConfig.mk\n\nThis patch provides the generic configuration as an example.\nThis configuration provides the same user experience as the default\npolicy engine.\n\nChange-Id: Ic8217333ae370b89bfdd2ad11320c5f14ea4da34\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "ffbc80f5908eaf67a033c6e93a343c39dd6894eb",
      "tree": "c97aa681b8c70d7429f7be93f851f04e9dee5900",
      "parents": [
        "c75307b73d324d590d0dbc05b44bce9aa89b7145"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 18 18:30:19 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 08 18:08:24 2015 -0700"
      },
      "message": "audio policy: volume in dBs\n\nVolumes are now stored and exchanged in dBs to be\nconsistent with the volume tables.\n\nThey are converted if needed when applied to the target\ngain controller.\n\nChange-Id: I916cbb0bbe65c916444b8c65a2bdca9645c58399\n"
    },
    {
      "commit": "c75307b73d324d590d0dbc05b44bce9aa89b7145",
      "tree": "824a23a9ffbebb3ace63146c171e938df6630fdd",
      "parents": [
        "303db9de6506db0c2b300863c39ece81721dd4e9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 17 15:29:32 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 08 18:08:11 2015 -0700"
      },
      "message": "audio policy: volume control reorganization\n\nOutput volume and routing control by AudioOutputDescriptor\nis reorganized to prepare hardware source volume and routing\ncontrol.\nAudioOutputDescriptor contains all volume, device and activity\nstate common to software (audio flinger mixers) and\nhardware sources (tuners, A2DP, HDMI).\nA new class SwAudioOutputDescriptor is derived from\nAudioOutputDescriptor and is specific to software sources.\n\nLow level routing and volume control methods receive an\nAudioOutputDescriptor parameter instead of an IO handle.\n\nmPrimaryOutput is now an AudioOutputDescriptor.\n\nChange-Id: Ie90943ee3102cdb8adf89fdd2addd2c279b1e5bf\n"
    },
    {
      "commit": "2110e04cdfbf9ad85ce154ce5f778ee5ccfc95eb",
      "tree": "5051da296e1fbc067db7ac190334d7d98a4410eb",
      "parents": [
        "dfd7409c1b708f6c429aa43722ca8493a91d8df0"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Tue Mar 24 08:41:51 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:22:42 2015 -0700"
      },
      "message": "Split ManagerDefault into manager and engine\n\nThis patch defines an interface for a new component: policy engine.\nThe APIs found under this interface are the one we may want to customize\nand to configure easily.\nThis patch also split the current manager code into manager and engine to\nprovide a default version of the policy engine.\n\nChange-Id: I97cf59760b53d248fe9efe466ae5e73bd7e5cc06\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    }
  ]
}
