)]}'
{
  "log": [
    {
      "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": "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": "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"
    }
  ]
}
