)]}'
{
  "log": [
    {
      "commit": "a3c03a5bbab39d2ea12281f10534a3ab7bad1a1a",
      "tree": "84f3507279568d0a31a6300f4c7cd3adeef65501",
      "parents": [
        "d3dd89caab587bc2207b851da4b3333daf986b2b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 13 10:12:45 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 08 13:53:31 2019 -0700"
      },
      "message": "audio policy: fix virtual called from constructor\n\nCall initialize() after constructing AudioPolicyManager\nfrom factory to avoid calling virtual methods from constructor.\n\nBug: 136491567\nTest: make\nChange-Id: Ie0b591d90e643b1fd1c326f9731dc656b38230dc\nMerged-In: Ie0b591d90e643b1fd1c326f9731dc656b38230dc\n"
    },
    {
      "commit": "86903e065d2d592fa34b57a717c3859c68d3435d",
      "tree": "dbd47d0af3003b0e5848779bdd619345916535aa",
      "parents": [
        "4f0a23d0dc08aa553389f17ab7e3f89fc6125496"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jul 11 14:55:16 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 03 14:22:02 2019 -0700"
      },
      "message": "AudioPolicy: do not cap a11y volume during call screening\n\n  Add accessibility playback as exemption for volume capping\nduring call screening.\n\nBug: 133879660\nTest: enable Talkback, receive a call, screen it, touch responses icons,\nverify labels are read\n\nChange-Id: I661a544261ef57e439b3eb8cf3d1dde1c31ac303\nMerged-In: I661a544261ef57e439b3eb8cf3d1dde1c31ac303\n"
    },
    {
      "commit": "bb3b160486da21dab7611de44c85ad85e73e69c9",
      "tree": "266b8068d8e1714bb4b4100d2e31c0a95cc9e16c",
      "parents": [
        "3e9dd76e813cf04c9dd35a8c2e813c174e5b435e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 08 15:28:43 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Oct 02 16:31:34 2019 -0700"
      },
      "message": "Fix the name of the constant for device [dis]connect parameter\n\nDuring the transition to Treble, \"device connect\" / \"disconnect\"\nparameter was erroneously attributed to audio streams. This\nissue got fixed in Audio HAL V4.0, but AudioParameter file\nwas still using incorrect name for the constant.\n\nTest: make\nChange-Id: I4056ad9e98af6dadd017d22bc4bde031cac75631\nMerged-In: I4056ad9e98af6dadd017d22bc4bde031cac75631\n"
    },
    {
      "commit": "5b023ebc681f8b41da3a862d161453931a01704f",
      "tree": "238e7b56a3de805a8b37d39a5e91d40ad2862d54",
      "parents": [
        "e9ad58533c38be8ec0f7c9ebd3b2e6e850354f82"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Wed Jul 03 11:20:36 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Oct 02 10:18:41 2019 -0700"
      },
      "message": "audiopolicy: add null pointer check for primary hw\n\nWhen sound card detection fails, primary HW cannot be opened.\nadd null pointer check to avoid further crashes in audioserver.\n\nBug: 136060200\nTest: make\nauthored-by: Weiyin Jiang \u003cwjiang@codeaurora.org\u003e\nChange-Id: Ief07a36ca8aed0e6013d533bd0aa66e122e3070c\nMerged-In: Ief07a36ca8aed0e6013d533bd0aa66e122e3070c\n"
    },
    {
      "commit": "97a4718ab9f51476ea519b1ee6b70389806c1ddc",
      "tree": "f7e5465ed6bc2154f1e5321b5d7a86051d383fd0",
      "parents": [
        "a43fcd7ed6b1cc8930e2c3d8416b87cb8e9e02e4"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Wed Jul 03 11:15:33 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 17:09:49 2019 -0700"
      },
      "message": "av: Add AUDIO_OUTPUT_FLAG_MMAP_NOIRQ flag.\n\nAdd AUDIO_OUTPUT_FLAG_MMAP_NOIRQ flag in the relavant flags to check\nfor if the relavant profiles are present or not\n\nBug: 136493985\nTest: make\nauthored-by: Samyak Jain \u003csamyjain@codeaurora.org\u003e\nChange-Id: I8b8b9fdfca2bb6e5f824f3b79ac42b7de5545706\nMerged-In: I8b8b9fdfca2bb6e5f824f3b79ac42b7de5545706\n"
    },
    {
      "commit": "61e07e3f03c62f39a4b88e761df8c5614474fb31",
      "tree": "8daf074c08d628b660884ed2c9269acf95a3ab3b",
      "parents": [
        "839cd0691bd3265343e87fbb9545ed27319b99c1"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 01 15:07:19 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 10:54:50 2019 -0700"
      },
      "message": "AudioPolicyManager: Handle error from setInputDevice in startInput\n\nThe error must not be ignored as otherwise the Java layer\nthinks that recording has started successfully.\n\nBug: 136279123\nTest: reproduce AudioRecordingConfigurationTest failure on cuttlefish,\n      check test failure output, the failure must be\n      \"junit.framework.AssertionFailedError: expected:\u003c3\u003e but was:\u003c1\u003e\"\n\nChange-Id: I82bc3a43bf679cfb03d4246d07615d3fd4dac409\nMerged-In: I82bc3a43bf679cfb03d4246d07615d3fd4dac409\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": "fd5b2cf8cd6073ef663edf7f87bff9573a97bf64",
      "tree": "7f095e5dfd7f440aa132534d4eef4fa616fc1397",
      "parents": [
        "d3ce88c4296b7019e20a9db5a87190face582b88"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 10 14:15:52 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Sep 23 17:13:04 2019 -0700"
      },
      "message": "audiopolicy: Remove legacy audio_policy configuration\n\nRemove the \"template\" configuration file and the header file.\n\nBug: 132435217\nTest: make\nChange-Id: I0b8ae921ac046e11b020d5766a60f9b341e1d6ee\nMerged-In: I0b8ae921ac046e11b020d5766a60f9b341e1d6ee\n"
    },
    {
      "commit": "d3ce88c4296b7019e20a9db5a87190face582b88",
      "tree": "2a60d9b0f1cbd1994fa16730d17eef413b63c628",
      "parents": [
        "09df62407d61b4a6172d4d122aa1676028a88f14"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 10 11:26:52 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Sep 23 17:10:29 2019 -0700"
      },
      "message": "Remove usages of USE_XML_AUDIO_POLICY_CONF\n\nThe usages were only checking that the property is set\nto catch attempts to update to Q while still using legacy\nconfigurations.\n\nBug: 132435217\nTest: build various devices\nChange-Id: Ib8bda8ab7f791ac5cd3875816de46a42f0a4cbb6\nMerged-In: Ib8bda8ab7f791ac5cd3875816de46a42f0a4cbb6\n"
    },
    {
      "commit": "b5dc2d1e3653d9f268a35bf8176a003217b38b6c",
      "tree": "fe812669d009ddb4c7148d791a65a4961b9c533c",
      "parents": [
        "7879fa986aba0570276adf4d1554d4813e85ec12"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 13 09:32:47 2019 -0700"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Thu Jul 18 04:10:01 2019 +0000"
      },
      "message": "audio policy: fix mmap capture disconnect\n\nForce close mmap input streams when a capture device is\nconnected to force disconnect callback to client.\n\nBug: 137311579\nTest: capture with oboetester and connect headset\nChange-Id: Iafe939247fa565e2424b40afacdb79a31b8955b7\n(cherry picked from commit 7bd2939d6ce0574f01771b8569b1d76faf2b09b7)\n(cherry picked from commit c833ccc86b8af68cfb80de182309be6d4eaac860)\n"
    },
    {
      "commit": "fad001d05d2a928d6196978ba94adf95f0297244",
      "tree": "0875e33154326ff4b05afea3ba315710d4407fc5",
      "parents": [
        "e81a326d90dfce1249917b796f69b48fe1c59971"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 11 19:17:57 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 14 15:13:32 2019 -0700"
      },
      "message": "audio policy: mute call RX when SCO volume is 0\n\nSet voice volume to 0 when SCO volume index is 0 to\nallow muting RX audio. when index is not 0, voice volume\nis set to max to allow volume control by headset as before.\n\nBug: 111195322\nTest: check call volume with SCO headset\nChange-Id: I90466b01a9899929cd3e6fb1ac0a4985099497fc\n"
    },
    {
      "commit": "679172768d86e29a47b9e15dd56776694128cf59",
      "tree": "f96e84cd5dcf55079976366eb1d8c8be210262dd",
      "parents": [
        "5592ee268507a8ee90fd374530e55a6279dbf0de"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed May 22 11:54:37 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri May 24 07:27:52 2019 -0700"
      },
      "message": "APM: make AudioPolicyMixCollection inherit from Vector\n\n  Modify AudioPolicyMixCollection to inherit from Vector instead\nof KeyedVector so all so the collection of mixes stays in the same\norder as the mixes were added.\n  Also make the mix selection take the deviceType into consideration,\nnot just the address to enable the same address to be associated to\ndifferent devices.\n\nBug: 131090322\nTest: see bug for multi bus scenario\nTest: atest AudioPlaybackCaptureTest\n\nChange-Id: I4dc7f23bef19a7d47afc2998102da07dde41fbca\n"
    },
    {
      "commit": "5592ee268507a8ee90fd374530e55a6279dbf0de",
      "tree": "2a2ef3e15e9073a81c23fdf667b128963de98f5b",
      "parents": [
        "f9b3d532eb7422446d7efbd54b15fa87ea60d68a"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed May 22 08:00:05 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 22 18:57:28 2019 -0700"
      },
      "message": "audiopolicy: fix source client lifecycle\n\nUpon startAudioSource -\u003e connectAudioSource, the source client\nis attached to the output.\nUpon stopAudioSource -\u003e disconnectAudioSource, the source client is\nnever removed.\n\nAs a result, if the same client is trying to call startAudioSource again,\nasthe client is already attached, getClient will lead to bailing out in\nconnectAudioSource and the source will not be started.\nThe stopAudioSource if called would claim that the client refcount is already 0.\n\nAny following call to start would fail again on outputDesc-\u003estart as invalid\nas the profile fails on canStartNewIo.\n\nThis CL fixes this issue by removing the client source desc on disconnectAudioSource.\n\nBug: 133367802\nTest: build \u0026 run\n\t    AudioPolicyEmulatorTests --gtest_filter\u003d*AudioSourceEffectTest*\n      multiple consecutive times.\n\nChange-Id: I78370be248ff24cf4135d51f709d965c5bfae4e8\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\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": "a6d436ca2741657360882e54d868937127a430a8",
      "tree": "c841cb6827dcc9b8b208cf4255bd63bf6df9731c",
      "parents": [
        "6de2d24bd940e74141a418fe5f6ad395e77a784e",
        "9a645a9355f697182bd11ba7fbdddae7e0b13708"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu May 16 01:56:41 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 16 01:56:41 2019 +0000"
      },
      "message": "Merge \"audio: fix index of input vector\" into qt-dev"
    },
    {
      "commit": "9a645a9355f697182bd11ba7fbdddae7e0b13708",
      "tree": "d4f4457defd2de1bab4d11e96b4120efdfcf9489",
      "parents": [
        "f95c698108b608e6ebf86e7450a9a2464e3ae264"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Wed May 15 12:15:32 2019 +0800"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu May 16 01:56:03 2019 +0000"
      },
      "message": "audio: fix index of input vector\n\nBug: 131666114\nTest: manual\nChange-Id: I7de750aa2f212e6b7e6296ce2caf544a0188902b\nSigned-off-by: Carter Hsu \u003ccarterhsu@google.com\u003e\n"
    },
    {
      "commit": "68f7b18e8edaabf6c6c67b350d3126c11ba590ff",
      "tree": "d4e8c5fe2157ef8843fb31baa6b49744ca294254",
      "parents": [
        "d4e2ab1785d813aa336479a57de634f30fb13a92",
        "429844193f7149f3b642f1f260a7f20398eb3778"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat May 11 02:47:56 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat May 11 02:47:56 2019 +0000"
      },
      "message": "Merge \"audio policy: add permission check for privileged attributes flags\" into qt-dev"
    },
    {
      "commit": "429844193f7149f3b642f1f260a7f20398eb3778",
      "tree": "96fc240567b6c528242f4a88582b587e7ba09c48",
      "parents": [
        "459e59820f8914a10c1d015fb4fa09b723cacaca"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 09 17:57:03 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 10 15:38:12 2019 -0700"
      },
      "message": "audio policy: add permission check for privileged attributes flags\n\nAdd check for privileged permission if attributes\nflags BYPASS_INTERRUPTION_POLICY or BYPASS_MUTE are set.\n\nBug: 131873101\nTest: Manual smoke tests for audio playback.\nTest: Emergency cell broadcast in\nChange-Id: I073cf669f606f0d081ff5c8d19f39b5e12efe297\n"
    },
    {
      "commit": "04ed046665ff8466b061eccf63e21fde10508441",
      "tree": "316394a2d114e1b45e4e79cf4c3734162f3b84e2",
      "parents": [
        "48aa740fb62459d02b9f23e27205c51d37f971d8"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu May 02 17:53:24 2019 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri May 10 01:31:29 2019 +0000"
      },
      "message": "AudioPolicy: Improve logging on Remote submix errors\n\nBug: 131064451\nTest: atest AudioPlaybackCaptureTest\nChange-Id: I13e662514de11e66f7ca145b320f351640a55ddb\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "486194f79edc78ef99f0f1d29ec02e9277bd20ac",
      "tree": "89b8d125ad2bc293f5fabdb58f535f900c59265b",
      "parents": [
        "9794a84308b31f6e17915cb29c99282f4b75cd11",
        "c1de2dfe8602f10ed3086ab601b626bec632b198"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 09 03:48:36 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 09 03:48:36 2019 +0000"
      },
      "message": "Merge \"Fix NPE when trying to get input device for attributes.\" into qt-dev"
    },
    {
      "commit": "34a2d4c80d002751435e0ab552e9513608e36438",
      "tree": "7e2f228f2630415f4e7fa71a8a717f603e141711",
      "parents": [
        "e6f3293b77b38867f553987e24dc82ee004071af",
        "d0cce2ebcb9e4f95729d1f5da447f345428a8315"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu May 09 00:49:10 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 09 00:49:10 2019 +0000"
      },
      "message": "Merge \"audio: correct the boundary of soundtrigger index\" into qt-dev"
    },
    {
      "commit": "c1de2dfe8602f10ed3086ab601b626bec632b198",
      "tree": "68241794ce067005b2770a31b232588ecb4c33fc",
      "parents": [
        "a8cc6d418bdf459a0c0f79326b09faa45645850c"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue May 07 14:26:40 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed May 08 15:19:13 2019 -0700"
      },
      "message": "Fix NPE when trying to get input device for attributes.\n\n1. Return error when remote submix device is null. Remote submix device\ncould be null in some case, such as device address error. Returning\nerror to avoid native crash.\n2. Unregister policy mix if set device connection fails. In that case,\nget input device could fail when policy mix is not found.\n\nBug: 131906484\nTest: Manually\nChange-Id: I03ab2bf217341b672c14adfba96d92ad9b453b01\n"
    },
    {
      "commit": "d0cce2ebcb9e4f95729d1f5da447f345428a8315",
      "tree": "6be11d80af78cfa1f17c1a5b8959e8fffd8b791e",
      "parents": [
        "2ddd17ca5c49fe02c459b7026d4c271bf76c4e3c"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Fri May 03 17:36:28 2019 +0800"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Wed May 08 14:29:05 2019 +0000"
      },
      "message": "audio: correct the boundary of soundtrigger index\n\nBug: 129111371\nTest: manual\nChange-Id: Ic3e2d5b8b6b53be2184307b076ba8680c6f81a29\nSigned-off-by: Carter Hsu \u003ccarterhsu@google.com\u003e\n"
    },
    {
      "commit": "329ddab0a26a06f828314860d290b5d6fb3bd0c9",
      "tree": "93acc84d44b31debeae888ec8cbf28ee850062e2",
      "parents": [
        "34a740d5360edd1f0bfd6a13b4d75667f550a512"
      ],
      "author": {
        "name": "Abhijith Shastry",
        "email": "ashastry@google.com",
        "time": "Tue Apr 23 11:53:26 2019 -0700"
      },
      "committer": {
        "name": "Abhijith Shastry",
        "email": "ashastry@google.com",
        "time": "Tue May 07 15:55:24 2019 -0700"
      },
      "message": "Do not cap volume for ring stream when voice stream has been programatically\nmuted.\n\nTest: Manual\nBug: 131171138\nChange-Id: Iea9aaa618cfef60cae592a8a21026d59212c0740\n"
    },
    {
      "commit": "34a740d5360edd1f0bfd6a13b4d75667f550a512",
      "tree": "6565a7a0c7bda1c3a1e1b5594a8249b4ed38879d",
      "parents": [
        "92e11689bbbdab1fed786436c624d6530d56c848",
        "16c66dd1e60d6b65b846f371c2ae4bf2b673545f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 06 17:07:54 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 06 17:07:54 2019 +0000"
      },
      "message": "Merge \"aaudio: fix multichannel legacy streams\" into qt-dev"
    },
    {
      "commit": "16c66dd1e60d6b65b846f371c2ae4bf2b673545f",
      "tree": "f93c6935379a10245958db1e490208a31894a1bc",
      "parents": [
        "2ddd17ca5c49fe02c459b7026d4c271bf76c4e3c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 01 17:54:10 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 03 15:44:44 2019 -0700"
      },
      "message": "aaudio: fix multichannel legacy streams\n\nTwo fixes for multichannel playback over USB from\nAAudio legacy streams:\n1: AAudio use a channel index mask and not a positional mask\nwhen channel count is greater than 2.\n2: audio policy gives priority to an output mixer which can support\nthe requested channel mask without downmixing\n\nBug: 131685020\nTest: play multichannel audio over USB\nChange-Id: I13f2da48d47fcf81f522096d90ba59a89379cffb\n"
    },
    {
      "commit": "4b2a821891b8c271ca7e1dc4a152220c923cd1e3",
      "tree": "874af6d655b6643388384232e22ce386d1a85e73",
      "parents": [
        "2ddd17ca5c49fe02c459b7026d4c271bf76c4e3c"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Fri Apr 26 23:48:59 2019 -0700"
      },
      "committer": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Thu May 02 17:40:44 2019 -0700"
      },
      "message": "Enabled removeUidDeviceAffinities\n\nAdded code to removeUidDeviceAffinities in AudioPolicyManager.cpp\n\nBug: 131447931\nTest: ran test in android auto multizone audio and policies were\ncorrectly removed.\n\nChange-Id: I70a8452d6c4ce5812f2c3f03ddf10b96cb0bb947\n"
    },
    {
      "commit": "66ea39290308e4851a5c6fe149e576b7d6249e5f",
      "tree": "f0fe4950c8d77207be8ce281623f9345e448e478",
      "parents": [
        "09940bbc0e7eb687c1b08c1ba0252852752f68ab",
        "2996f67767ff90617cc5f7801c7bd8dc67c9dd66"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 25 18:01:03 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 25 18:01:03 2019 +0000"
      },
      "message": "Merge \"AudioPolicy/AudioFlinger: Track AudioRecords via Record IDs\" into qt-dev"
    },
    {
      "commit": "2996f67767ff90617cc5f7801c7bd8dc67c9dd66",
      "tree": "d20af841b6537ca44a0b1bf7a839e0ba3f9c7a91",
      "parents": [
        "3208826f676b1be78e1c04692d7f17249e45c3ea"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 18 12:29:59 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Apr 24 14:49:52 2019 -0700"
      },
      "message": "AudioPolicy/AudioFlinger: Track AudioRecords via Record IDs\n\nThe client must provide a unique Record ID (RIID) when creating\nan AudioRecord. This RIID is passed down to AudioInputDescriptor\nin AudioPolicyManager which sends configuration updates\nvia IAudioPolicyServiceClient callback.\n\nBy supplying RIID, the Audio Service can coalesce start / stop\nevents coming from clients (apps) with recording configuration\nupdate events.\n\nFor AAudio MMap clients everything is handled at the server\nside because they correspond directly to audioserver objects.\n\nBug: 123312504\nTest: android.media.cts.AudioRecordingConfigurationTest\n      AudioRecordTest#testAudioRecordInfoCallback\n      MediaRecorderTest#testAudioRecordInfoCallback\n      manual testing using Oboe and Solo test apps\n\nChange-Id: I3d32241752d9a747736606dc4cb1e068e6b7aa3b\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": "0dd5185555db64af2cb5ff1e161629054086abb6",
      "tree": "c2e0f9c49b263891bf94522226337d922da0b95e",
      "parents": [
        "8263e3519b6801f019e471efe4a6045b7046e4d3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 19 18:18:58 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 22 08:41:05 2019 -0700"
      },
      "message": "audio policy: improve input device connection logic\n\nDo not systematically close all inputs when an input device is connected\nor disconnected but only those affected by the change.\n\nAlso:\n- refactor setDeviceConnectionStateInt() to align input and output\ndevices connection sequence\n- remove unused \"inputs\" argument to checkInputsForDevice()\n\nBug: 126370328\nTest: phone call, video call , camcorder, assistant, auto projected\nChange-Id: I27734b32da97ad4790d6cd74eaaf866e414db211\n"
    },
    {
      "commit": "df8638b4c4cfabcdeade1a3af497cd6e0521cb89",
      "tree": "d4b192648cf45213baaa415f6842af7c58242e12",
      "parents": [
        "a74c7274069fdfa95e4f9768e14bd2ce7ed1219e",
        "b20cf7db9e669169bbae5f0da97018a866c3f634"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 18 19:15:42 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 18 19:15:42 2019 +0000"
      },
      "message": "Merge \"audio policy: concurrent capture effects\" into qt-dev"
    },
    {
      "commit": "b20cf7db9e669169bbae5f0da97018a866c3f634",
      "tree": "96e88e1850e1fb27fcc0bad53cc575e837d86c60",
      "parents": [
        "aceea8bddd0324df4414673bc39a3f38fe16e8a1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 05 19:37:34 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 19:27:20 2019 -0700"
      },
      "message": "audio policy: concurrent capture effects\n\nAdd pre processing effect management for concurrent capture scenarii.\nWhen several clients on the same input stream have enabled audio effects,\nonly the effects attached to the top priotity client are active.\nOther effects are suspended.\n\nAdd AudioFlinger API to suspend/restore audio effects build on top\nof exisiting internal effect suspend mechanism.\n\nRecordThread now supports more than one effect chain.\n\nAOSP pre processing implementation supports more than one effect session\nper input.\n\nRefactor AudioPolicyManager::closeAllInputs() to call closeInput() on\nall inputs instead of partially duplicated code.\n\nBug: 128419018\nTest: make\nChange-Id: I685286da4c2905a8894a4354679f9787b1400621\n"
    },
    {
      "commit": "993f390f8076868a4e42ebbe0b1072c4cd110d34",
      "tree": "35bc752744988158d0c602eba1ac105a76818eb4",
      "parents": [
        "9e1533cd0b8f3bf08eb9c81c21cd42f5782474f4"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Apr 10 15:39:27 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 14:05:50 2019 -0700"
      },
      "message": "audiopolicy: remove double call to attach / getModuleForDeviceType\n\nFor a2dp hybrid mode, device retrieval is done through type / code pair.\nWhen the device is connected, getDeviceDescriptor is called with allowToCreate\nboolean. As a result, HwModuleCollection::createDevice will be called, invoking\ngetModuleForDeviceTypes as done laterly in setDeviceConnectionState.\n\nThis CL removes double call to these function.\n\nBug: 130284799\nTest: make\n\nChange-Id: I188f11e9325cfc6af2ae872e00485e00ccd9096b\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "9e1533cd0b8f3bf08eb9c81c21cd42f5782474f4",
      "tree": "3ba52e0b3d83ce58a20ebb69a61f2811a4c3a9f6",
      "parents": [
        "4b8d5ce58d98d4a163f63e17735450a7cac4821c"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Apr 11 16:07:36 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 14:05:50 2019 -0700"
      },
      "message": "audiopolicy: audioflinger: manage stream patch volume\n\nAudioPolicy used to hide activity of stream patch to prevent changing\nthe volume.\nThis CL replaces the filtering of the stream patch activity on the policy\nby a full volume range within audio flinger.\nIt updates also product strategies example for automotive to add associated\nstrategy and full range volume.\n\nBug: 130284799\nTest: make\n\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: I6e77dc2cbed0289f0a1341f7597b1c25abee5f7d\n"
    },
    {
      "commit": "4b8d5ce58d98d4a163f63e17735450a7cac4821c",
      "tree": "5c407be9d37d6aee5bf5e4d9068629621a9f4616",
      "parents": [
        "aceea8bddd0324df4414673bc39a3f38fe16e8a1"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Apr 11 15:57:20 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 14:03:29 2019 -0700"
      },
      "message": "audiopolicy: align input and output devices for engine\n\nNo need to filter anymore the remote submix to engine as\nboth configurable and default engine take care of legacy remote\nsubmix address (aka \"0\") and wont only care about type.\n\nBug: 130284799\nTest: AudioPolicyEmulatorTests --gtest_filter\u003d*.DynamicPolicyMixRecordInjectionTest.*\nAudioPolicyEmulatorTests --gtest_filter\u003d*.DynamicPolicyMixPlaybackReRoutingTest.*\n\nChange-Id: Ia90c65ccfc51220a2344cecec2fbba7f2bad776a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "6c79632bbece71f7af0c2453bb62a5d6f0cca664",
      "tree": "a70a17d1f723b7e0241bb762bf5478e3c9947348",
      "parents": [
        "2cb1a8ccbd402d74a06ee34721f5dd787ecb396f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 09 14:13:17 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 10:29:30 2019 -0700"
      },
      "message": "refactor mutexes for audio effects in audio flinger and audio policy\n\nRemove effect specific mutex (mEffectLock) in AudioPolicyService: Due to\nconcurrent capture (among other reasons), it is necessary that the audio\npolicy manager state preserved by mLock includes audio effects\nregistration and enabling.\n\nMoved all audio policy API calls from audio flinger out of locked regions\nfor audio flinger, thread and effects mutexes to avoid cross deadlocks\nbetween audioflinger and audio policy manager:\n- centralized audio policy API calls in EffectModule::updatePolicyState()\n- the enabled state now reflects the state requested by the controlling\nhandle, not the actual effect processing state: a suspended effect is\nnow considered enabled.\n\nA new audio policy manager API moveEffectsToIo() is added to atomically\nhandle moving effects to a new input or output without having to call\nunregister \u003e register \u003e enable sequence.\n\nAlso fix assert in setStreamVolume to match volume group refactoring\nin audio policy manager.\n\nBug: 128419018\nTest: CTS tests for audio effects.\nTest: manual tests with Duo calls, Play Music, Youtube, notifications\n with and without Bluetooth and wired headset.\n\nChange-Id: I8bd3af81026c55b6be283b3a9b41fe4998e060fd\n"
    },
    {
      "commit": "f96e543868c4ba0c24a060d15e20748921593db2",
      "tree": "db9cf0f4b59692721a60af46b070c0b8f0c9cfa5",
      "parents": [
        "393f0e05e3fa7351c81a470e5bd841451bcc13ae"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Apr 09 17:13:56 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 10 12:31:39 2019 -0700"
      },
      "message": "audiopolicy: fix routing of exclusive preferred device\n\nIn call music played on remote is called an \"exclusive\" preferred\ndevice. It may not be propagated to other client that may play locally.\nThe client of the exclusive preferred device is not routed as the\nexclusive preferred device are ignored from findPreferredDevice helper.\n\nThis CL fixes the routing\n\nBug: 130284799\nTest: AudioPolicyEmulatorTests --gtest_filter\u003dFilteringExpliciRoutingTest*\n\nChange-Id: Iec7e14cb170d0f67c8c0b231f8219c133d7d2185\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "698d353587d6d0563a6451b2d701358e6cb4496e",
      "tree": "f2bed9fc7ae60d23cc3df7e19a30af4c84af4c7a",
      "parents": [
        "d21b6de7181840e14300e94284db48172e24004b"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Apr 10 15:20:05 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 10 12:13:36 2019 -0700"
      },
      "message": "audiopolicy: fix mix recorder regression\n\nEngine is not only responsible of legacy remote submix for input\ndevice selection (aka \"0\" adress) but also regular remote submix\nwith a given address. Filtering the remote submixes prevents engine\nto select the remote submix for input stream in case a policy mix\nrule has been set to record specific sources.\n\nBug: 130284799\nTest: AudioPolicyEmulatorTests --gtest_filter\u003dRecordInjectionSourceMatch/DynamicPolicyMixRecordInjectionTest\n\nChange-Id: Iaafd1195b9ab5c82ad3bd2766061d982a10bb9da\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "d21b6de7181840e14300e94284db48172e24004b",
      "tree": "827bfba46386e804b9fbd1eed20da7cbb09cf94f",
      "parents": [
        "e9e801bff7cdd6f6fe5a82263d4686c1cbda76f4",
        "94114a21c855fb7525cf47fcfe965bf0735e19f1"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Apr 09 21:06:23 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 09 21:06:23 2019 +0000"
      },
      "message": "Merge \"APC: Disable MMAP when a stream is to be captured\" into qt-dev"
    },
    {
      "commit": "5e66e79ec60d0389fe025076dd0839bf695f1495",
      "tree": "a3282d17e6be64e8d1672231f1579277adc11fba",
      "parents": [
        "de83aa7d657e4c0beaddc756d9da9f6d2ccb282d"
      ],
      "author": {
        "name": "Robert Lee",
        "email": "lerobert@google.com",
        "time": "Wed Apr 03 18:37:15 2019 +0800"
      },
      "committer": {
        "name": "Robert Lee",
        "email": "lerobert@google.com",
        "time": "Mon Apr 08 06:53:01 2019 +0000"
      },
      "message": "audiopolicy: fix ring stream volume cannot apply when previewing ringtone\n\nUsing AUDIO_DEVICE_OUT_SPEAKER to replace AUDIO_DEVICE_OUT_SPEAKER_SAFE\nfor device match.\n\nBug: 129456342\nTest: volume can adjust while previewing ringtone\nChange-Id: I3015f811ac6d2e3f3cdd606f453348c4bc526935\nSigned-off-by: Robert Lee \u003clerobert@google.com\u003e\n"
    },
    {
      "commit": "94114a21c855fb7525cf47fcfe965bf0735e19f1",
      "tree": "a10bbc96b77cb71681a358fdb7913b54d47b5483",
      "parents": [
        "d233276ad591814829b6ccbd2d7577558522fe3f"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Apr 01 19:38:23 2019 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Apr 05 01:12:42 2019 +0000"
      },
      "message": "APC: Disable MMAP when a stream is to be captured\n\nAs MMAP does not support APC, it is disabled when a render loopback\npolicy is installed.\n\nTest: adb shell write_sine_callback -pl # mmap is used\n      adb shell audiorecorder  --target /data/file1.raw \u0026\n      adb shell write_sine_callback -pl # mmap is NOT used\nBug: 129948989\nChange-Id: Ia90c24953890de7e19fd99485bf760788f81126d\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n(cherry picked from commit c1dde631401a9cda122cf3058a99e36274906801)\n"
    },
    {
      "commit": "67336139290c89ac891f8899f70e78f0726e75eb",
      "tree": "450e7ca7132b4c6a4140e176a93441aa4b689eae",
      "parents": [
        "0f56f0a9173e17173b408486ddc1aff401a1d8f2",
        "83d17c208422b6c5df57716e9782925b0a787ee2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 03 23:04:52 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 23:04:52 2019 +0000"
      },
      "message": "Merge \"audio policy: fix stream to volume source mapping\""
    },
    {
      "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": "83d17c208422b6c5df57716e9782925b0a787ee2",
      "tree": "44d0bbff2b15b05854120487ed7fa115b45e8eb9",
      "parents": [
        "b02be352c78d9db1c876a114199a9d4259c194e2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 02 17:10:01 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 02 17:20:47 2019 -0700"
      },
      "message": "audio policy: fix stream to volume source mapping\n\nremove use of obsolete method streamToVolumeSource()\nand replace it by toVolumeSource() which actually queries\nthe engine for stream to volume source mapping.\n\nBug: 129439600\nTest: make\n\nChange-Id: Ie4e4e93aa5925315078fa96a957bb3ed71e7dc76\n"
    },
    {
      "commit": "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": "5ee45f968e7df43ab9056e4a34ee3e9bf99d7767",
      "tree": "09d427b10211e6a59c300478d43f7a1a0bb20f46",
      "parents": [
        "78f093a85769d3e801d26a7ddd00171d47863ab9",
        "736a102604f2fed737e737552f6ff461cd326081"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 29 02:31:52 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 29 02:31:52 2019 +0000"
      },
      "message": "Merge \"audio policy: fix configurable engine and dynamic policies\""
    },
    {
      "commit": "736a102604f2fed737e737552f6ff461cd326081",
      "tree": "e56c647874935e274a7fc5c209ec1afd75547971",
      "parents": [
        "08762400e90b646cdfb93a144eeb3af3525df3bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 27 18:28:46 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 28 15:16:17 2019 -0700"
      },
      "message": "audio policy: fix configurable engine and dynamic policies\n\nMake sure the Engine is never aware of remote submix devices with non\n\"0\" (legacy) addresses as the Engine does not have to deal with devices\nonly used by dynamic audio policies.\n\nBug: 129144725\nTest: make\nChange-Id: Ifa19c952e22ac18c5d47e731cbfa41f81fe5c32c\n"
    },
    {
      "commit": "d0e36ea48dcda1c5d5fa30753cba171360487da5",
      "tree": "16e189ed4d9174667a0c882db5d01de0ca163f39",
      "parents": [
        "a95ef984f9543596ed2cd48f1db0d16569c3c1b1",
        "b99cc75f01c8e4d76295f3efcd768ebd9d8942c3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 28 19:37:14 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 28 19:37:14 2019 +0000"
      },
      "message": "Merge changes from topic \"APC-app-policy\"\n\n* changes:\n  Add application wide capture policy\n  Add aaudio APC opt-out\n"
    },
    {
      "commit": "6a91f7cf52fe6f02f88b1fc6461be8133c97d5ed",
      "tree": "98f79ce22b15e1de2e3971f27c4a2fad463ee326",
      "parents": [
        "11df024f9e4e58c9b46e36a01a61d7e77efd7ec3",
        "f5d25e6f10c7bda31a533bb5903e4ca8e6c077b2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 26 03:22:19 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 26 03:22:19 2019 +0000"
      },
      "message": "Merge \"audiopolicy: fix AudioRecordingConfiguration callback\""
    },
    {
      "commit": "f5d25e6f10c7bda31a533bb5903e4ca8e6c077b2",
      "tree": "4edeb1ad14f50fb405ddca698a8f3bbfe5bd50fd",
      "parents": [
        "76e348fc43d7b8bda0362ccbf14bf0eeac09a7c9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 25 16:33:26 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 25 16:33:26 2019 -0700"
      },
      "message": "audiopolicy: fix AudioRecordingConfiguration callback\n\nSuppress first callback sent by startInput() as the input device is not\nyet set and it results in a spurious AudioRecordingConfiguration callback\nsent by RecordingActivityMonitor with a null audio device.\n\nAlso fix a bug in getInputForAttr() where the wrong audio attributes\nwere stored in the RecordClientDescriptor resulting in a failure to\ncreate the audio patch when DEFAULT audio source is used.\n\nBug: 129287962\nTest: cts-tradefed run cts-dev -m CtsMediaTestCases -t android.media.cts.AudioRecordingConfigurationTest\nChange-Id: Ia67abfa56ea653cf69e68bfabbb3d19a12adc310\n"
    },
    {
      "commit": "b99cc75f01c8e4d76295f3efcd768ebd9d8942c3",
      "tree": "b7c3e27a797971702af7161fdf1a682fa9a9c2a5",
      "parents": [
        "68646ba64107a19ac0d1af781ddd0b1edd2ed57a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Mar 21 20:52:24 2019 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Mar 22 17:21:33 2019 -0700"
      },
      "message": "Add application wide capture policy\n\nApps were previously forced to set their allowed capture policy from\neither their manifest which is not flexible or from each track which is\na very fine grain but difficult when using libraries like exoplayer.\n\nThus add an application level policy set with AudioManager.\n\nTest: atest android.media.cts.AudioPlaybackCaptureTest\nBug: 111453086\nChange-Id: Ic890b5b041affea757fbd3f2707ff2ce18771828\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "32ebca3611c530fc0f36225dcb1ca2ec50e8d9f1",
      "tree": "6b9cd103cf37b990117ca82ffacfcc6d6dafaeb3",
      "parents": [
        "b893fcd9978e730c0e00eddce63a08bef727261e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 22 15:42:52 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 22 22:56:10 2019 +0000"
      },
      "message": "AudioPolicyManager: Stop the descriptor when closing its output\n\nThis fixes the case when the SwAudioOutputDescriptor is part of\nduplicated output. In this case, APM::closeOutput finds the\nduplicated output, deactivates all the clients for all outputs,\nthen calls \u0027close\u0027 on the descriptor. Since there are no active\nclients, closing the descriptor does not stop it, leaving\npending \u0027active count\u0027 in the profile.\n\nBug: 128362999\nTest: steps from b/124415601\nChange-Id: I8fa60ef50efa74ca8cf6e3312e1075a9ec9c63f3\n"
    },
    {
      "commit": "2ffdfce9d49040563a4bd9542793aeabf31acc10",
      "tree": "8f96df78bddb84d18062fd922e6eacca0ad80fd2",
      "parents": [
        "e9955729faa3a33483b9739f085856b5b4b451d5"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Mar 12 11:26:42 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 18 18:38:19 2019 -0700"
      },
      "message": "audiopolicy: optimize set volume call sequence\n\nThis CL simplifies call flow to set volume from stream or attributes.\nIt also removes unused parameter from mute setter and fix a volume\nsource comparison.\nAlso refactor logic in setVolumeIndexForAttributes() by removing the\nloop on all volume sources on a given output given it was ignoring all\nsources not equal to current source anyway.\n\nBug: 124767636\nTest: AudioPolicyTests --gtest_filter\u003dStreamTypeVolumeTest.*\n  AudioPolicyTests --gtest_filter\u003dAttributeVolume/AttributeVolumeTest.*\n  AudioPolicyTests --gtest_filter\u003dAudioProductStrategiesPlaybackVolume/AudioProductStrategiesPlaybackVolumeTest.*\n\nChange-Id: Id816de023e917b0c0e34bb0888c8b0ad29029f8b\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "f97d64cd3a1588b22b47dd3805be291525bb17d9",
      "tree": "288d81f1993d4e6f59b466d425ebd71a9726c939",
      "parents": [
        "2ec208c3c0d68a23db38e7442c0707bd5b93073e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Mar 16 10:23:46 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Mar 16 10:23:46 2019 -0700"
      },
      "message": "audio policy: fix call volume\n\nFix setGroupVolumeIndex() which was applying\nvolume for all groups if in call and causing the wrong\nindex to be used.\nwhen DTMF are muted when entering call, voice call was\nalso muted.\n\nBug: 128499415\nTest: call with voice volume set to 6\nChange-Id: Ie1296a7a48fdfba3710acb3d7a7e4f00e7b576a5\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": "a710ea168e0a72d528e188cf458708cff949c1a9",
      "tree": "c5ec858adb23376e8e2e525eab663f6d03acda8c",
      "parents": [
        "a3550b6ca700f891c7c427eecf6129200e5114ce",
        "e375d4190495514fa18cdb91563870eb4f4253eb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 06 17:16:52 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 06 17:16:52 2019 +0000"
      },
      "message": "Merge \"Support muting haptic channels.\""
    },
    {
      "commit": "b16b924e5fe49516c7df5c5cc2f57c05ae67b45a",
      "tree": "0d4ce152cae18f857149162fe06e4ba7723aa191",
      "parents": [
        "2091ee0aa39121ce2d1685256865ba06845f1832",
        "f23a771ca699ddb84ae18ce1051491d735e55cb3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 01 16:05:37 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 01 16:05:37 2019 +0000"
      },
      "message": "Merge \"audio policy: fix enforced audible playback\""
    },
    {
      "commit": "f23a771ca699ddb84ae18ce1051491d735e55cb3",
      "tree": "940f44caf2250cc3d794078b071058e2a86167ef",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 28 17:15:40 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 28 17:15:40 2019 -0800"
      },
      "message": "audio policy: fix enforced audible playback\n\nWhen selecting device on a given output stream, check if\nan enforced audible sound is active on any other output stream and\nnot just on this stream.\n\nBug: 124063442\nTest: set property audio.camerasound.force\u003dtrue and test music + shutter\nsound concurrency.\n\nChange-Id: Ic7f548df2b67041d532afc68685cdbeb3cb3f125\n"
    },
    {
      "commit": "5729be16b88083ab1eab7e692767bedddf69a865",
      "tree": "fd9acaaf3303c4a946a2812bd8e2d19f2a975335",
      "parents": [
        "56dc8fd0f5cd19d24888b4799984fdd5d39ece13",
        "43c73440b34c5a20d412dc93bf0bf35c2c88a1ed"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 01 01:07:56 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 01 01:07:56 2019 +0000"
      },
      "message": "Merge \"audiopolicy: add a tag to control device port gain from policy volume API\""
    },
    {
      "commit": "56dc8fd0f5cd19d24888b4799984fdd5d39ece13",
      "tree": "413b681feec40c96afda93e06a690c677c85fb90",
      "parents": [
        "e724f2bcb37a2288a5b053ecbde1a9672c8e4660",
        "e598545cb84723da4878c503ac54ca1426fa920b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 01 00:51:41 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 01 00:51:41 2019 +0000"
      },
      "message": "Merge \"Reland BluetoothAudio HAL: flip to be enabled by default\""
    },
    {
      "commit": "e724f2bcb37a2288a5b053ecbde1a9672c8e4660",
      "tree": "5f74ad17523b42e483e59112816a8de88b9775e7",
      "parents": [
        "18bef531e97a7443e4640902def979afc3d7430a",
        "89e82232200387cf9ba4fdee9777a26404fd2a2b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 28 22:27:04 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 28 22:27:04 2019 +0000"
      },
      "message": "Merge \"audiopolicy: Get Hw offloaded A2DP formats from declared devices\""
    },
    {
      "commit": "43c73440b34c5a20d412dc93bf0bf35c2c88a1ed",
      "tree": "d704d5d4aeb010dd912061d51387c54cc9a88d06",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Nov 08 08:21:55 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 28 14:10:35 2019 -0800"
      },
      "message": "audiopolicy: add a tag to control device port gain from policy volume API\n\nChange-Id: I52cc1bef8cc8e3f6c4fd15f806bdd42e4756871f\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n\nBug: 124767636\nTest: make\n"
    },
    {
      "commit": "89e82232200387cf9ba4fdee9777a26404fd2a2b",
      "tree": "413ecd84ed4006b22841043ba1f80c375b35f97a",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Sat Jan 19 18:14:10 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 28 12:24:55 2019 -0800"
      },
      "message": "audiopolicy: Get Hw offloaded A2DP formats from declared devices\n\nFix implementation of fetching hw offloaded A2DP encoded\nformats. Fetch formats from declared A2DP devices on primary\ninstead of system property.\n\nBug: 111812273\nTest: verify A2DP using multiple headsets, switch A2DP codecs\nChange-Id: I4857b24ba5dc6cf089c6f4b961492a53f5ca2018\n"
    },
    {
      "commit": "e375d4190495514fa18cdb91563870eb4f4253eb",
      "tree": "cdef2f5a20dd9fa30193760e14c09b179e71b66b",
      "parents": [
        "ea69bfb0f5b3fc247882355b919a3076e4992694"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Feb 26 12:54:53 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Feb 28 11:46:56 2019 -0800"
      },
      "message": "Support muting haptic channels.\n\nWhen playing audio-haptic channels, there could be request to mute\nhaptic channels according to settings. To support that, do not select\nhaptic output when forcing muting haptic channels.\n\nTest: Play audio-haptic coupled data\nBug: 126401770\nChange-Id: Ifb52385c56ec8d67fe031e1877ea35cbe2319600\n"
    },
    {
      "commit": "25f9b05b0d1601243f2981e434f062658e15d3d2",
      "tree": "41a9d72595e737161b8b8e0ff7646003bcad8c9c",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Feb 27 15:08:54 2019 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Feb 27 17:00:39 2019 -0800"
      },
      "message": "AudioPolicy: allow recording on a APC dyn policy\n\nTest: atest android.media.cts.AudioPlaybackCaptureTest#testCaptureMediaUsage\nBug: 111453086\nChange-Id: Iee6c2f450268ab16eb299827e358468cbf1349e2\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "e598545cb84723da4878c503ac54ca1426fa920b",
      "tree": "5cbfe9d1685ef7aa3bf0ffd70dc170f8cfbd6aca",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "Cheney Ni",
        "email": "cheneyni@google.com",
        "time": "Sun Feb 24 01:39:15 2019 +0800"
      },
      "committer": {
        "name": "Hansong Zhang",
        "email": "hsz@google.com",
        "time": "Wed Feb 27 13:55:41 2019 -0800"
      },
      "message": "Reland BluetoothAudio HAL: flip to be enabled by default\n\nChange to new properties + swap audio XML files, and supports following\nscenarios:\n1) (default) audio_policy_configuration.xml\n   Using BluetoothAudio HAL (+ A2DP offload if supported)\n2) audio_policy_configuration_a2dp_offload_disabled.xml\n   Using BluetoothAudio HAL only when A2DP offload is supported but\n   disabled.\n3) audio_policy_configuration_bluetooth_legacy_hal.xml\n   No BluetoothAudio HAL nor A2DP offload\n\nBug: 126304229\nTest: Switch BluetoothAudio HAL and A2DP offload manully\n(cherry picked from commit baa9e4e167b0b9d8b0586871b6178bebcef862c2)\n\nChange-Id: I3c17b304a12c1eccd9f97ee50a0b7cf6e4b9a1da\n"
    },
    {
      "commit": "a4f6b372545056adf8a42ac0be58d32fd234d6a3",
      "tree": "759edfd3613a59ff5d48e20c1d398b9c4b609d44",
      "parents": [
        "be32a246fc5623c049cf6417ced66dccc741653b",
        "40180e3d4c8da02999e1d42dc2216063c3c545ed"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Wed Feb 27 19:29:25 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 27 19:29:25 2019 +0000"
      },
      "message": "Merge \"Revert \"BluetoothAudio HAL: flip to be enabled by default\"\""
    },
    {
      "commit": "40180e3d4c8da02999e1d42dc2216063c3c545ed",
      "tree": "1a266ca5544f6f81bbf60ee4aef2970d81d7b030",
      "parents": [
        "baa9e4e167b0b9d8b0586871b6178bebcef862c2"
      ],
      "author": {
        "name": "Hansong Zhang",
        "email": "hsz@google.com",
        "time": "Wed Feb 27 18:59:54 2019 +0000"
      },
      "committer": {
        "name": "Hansong Zhang",
        "email": "hsz@google.com",
        "time": "Wed Feb 27 18:59:54 2019 +0000"
      },
      "message": "Revert \"BluetoothAudio HAL: flip to be enabled by default\"\n\nThis reverts commit baa9e4e167b0b9d8b0586871b6178bebcef862c2.\n\nReason for revert: Broke test\n\nChange-Id: Idfc9e117e55ad80f281a808789f3e990f47d5cd8\n"
    },
    {
      "commit": "cfe173220a3100c517e688e1bba0ff2da82a7b1b",
      "tree": "872a3d89ef3d021575d2719a02bf19e729c281ec",
      "parents": [
        "a6d44870d8edeffe8b6db3261d04b9e48fb11fd3"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Nov 07 13:41:29 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 26 17:47:46 2019 -0800"
      },
      "message": "audiopolicy: add Volume for attribute and callback native APIs\n\nChange-Id: I259de42452d2802aa8dbd553f56040dea6995a93\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n\nBug: 124767636\nTest: make\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": "229e087f918f8459f5bffce6f8214d62455ede38",
      "tree": "61e13cbdf15d643a0918ea9aa6b729e6b20f64f4",
      "parents": [
        "137c970843a9559609053d432d0a2c176f9b3b43",
        "baa9e4e167b0b9d8b0586871b6178bebcef862c2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 26 19:06:37 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 26 19:06:37 2019 +0000"
      },
      "message": "Merge \"BluetoothAudio HAL: flip to be enabled by default\""
    },
    {
      "commit": "baa9e4e167b0b9d8b0586871b6178bebcef862c2",
      "tree": "f735e0b062eb5c863a5e378cb3dad8a40d0f0f51",
      "parents": [
        "b8a07acca4392e1be911dd6a8f88be3ef7265668"
      ],
      "author": {
        "name": "Cheney Ni",
        "email": "cheneyni@google.com",
        "time": "Sun Feb 24 01:39:15 2019 +0800"
      },
      "committer": {
        "name": "jonerlin",
        "email": "jonerlin@google.com",
        "time": "Tue Feb 26 21:44:53 2019 +0800"
      },
      "message": "BluetoothAudio HAL: flip to be enabled by default\n\nChange to new properties + swap audio XML files, and supports following\nscenarios:\n1) (default) audio_policy_configuration.xml\n   Using BluetoothAudio HAL (+ A2DP offload if supported)\n2) audio_policy_configuration_a2dp_offload_disabled.xml\n   Using BluetoothAudio HAL only when A2DP offload is supported but\n   disabled.\n3) audio_policy_configuration_bluetooth_legacy_hal.xml\n   No BluetoothAudio HAL nor A2DP offload\n\nBug: 126304229\nTest: Switch BluetoothAudio HAL and A2DP offload manully\nChange-Id: I6d996d616c6c0b998699f90dbaebb7d70ef3237c\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": "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": "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": "ae9700287cb9ae12c1bb2088bf91c9a3739195f0",
      "tree": "78784e6bb6df3bb9b24e894ab8fdc38a55de8194",
      "parents": [
        "5a523197d3c00f695c12729c39e838c1de365465"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 29 14:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 21 12:19:35 2019 -0800"
      },
      "message": "audio policy: remove glitch when registering dynamic policies\n\nBypass systematic playback client route evaluation when connecting a\nremote submix output device used by a recorder dysnamic policy as no\nrerouting is needed in this case.\n\nBug: 115429872\nBug: 123986127\nTest: play music with GPM on Android TV and use the BLE remote\nTest: use the BLE remote on Android TV\n\nChange-Id: I285d416f54ff398d23742086fcd8c9f511cd289b\n"
    },
    {
      "commit": "0cc7c07a0d66369ec7d3c9827aaf63384891106b",
      "tree": "225e7e25ca600c7f36f82e24ef03b7dc163c2773",
      "parents": [
        "441e6198592cdbe38a4b9b3b833295438403f68e",
        "1c87855ff4c3c55e191a2e6da66bb82011c91c1b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 21 03:05:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 21 03:05:20 2019 +0000"
      },
      "message": "Merge \"audiopolicy: rework stream activity for volume management on output\""
    },
    {
      "commit": "d3b8fa2965cace7c75389727740551975ca5ad7f",
      "tree": "326c248965c714e46a033e44f61e9c9aec923bf1",
      "parents": [
        "05677f7f44a753b756709ddbd7eebdffa34f62f4",
        "1962212fe77b35b2dbf8782f505fa2adf2892016"
      ],
      "author": {
        "name": "Cheney Ni",
        "email": "cheneyni@google.com",
        "time": "Tue Feb 19 18:50:32 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 19 18:50:32 2019 -0800"
      },
      "message": "Merge \"Use BluetoothAudio HAL 2.0 for Pixel 1, 2\" am: a2be3bea8a am: 0465325b35\nam: 1962212fe7\n\nChange-Id: I6c7b4d721416609d0bfe7f4650cb74a5749052dd\n"
    },
    {
      "commit": "1c87855ff4c3c55e191a2e6da66bb82011c91c1b",
      "tree": "e4cbf214056b965017c1f727ad0881b85ef1e54d",
      "parents": [
        "e690a6da57c95da65b4a179e35fa4dc72510024f"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Nov 22 16:53:21 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 19 15:58:32 2019 -0800"
      },
      "message": "audiopolicy: rework stream activity for volume management on output\n\n-Manage duplicated output ref count in client itself\n-Use VolumeSource to track volume activity in output\n(today mapped on legacy stream type)\n-Use accessor APIs to control activity/mute from apm.\n\nTest: audio smoke tests\nBug: 124767636\n\nChange-Id: I452e3973f6869d41231d984896a5886ebb86afb1\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "00ce33d45e5273289531a592c06944826c3fd116",
      "tree": "101085f56d0f21131a867c0ebc8af2b0cae69890",
      "parents": [
        "22831131c9d770933ac68d83588691ff3878e33e"
      ],
      "author": {
        "name": "Cheney Ni",
        "email": "cheneyni@google.com",
        "time": "Thu Nov 01 06:30:37 2018 +0800"
      },
      "committer": {
        "name": "Hansong Zhang",
        "email": "hsz@google.com",
        "time": "Mon Feb 18 14:07:06 2019 -0800"
      },
      "message": "Use BluetoothAudio HAL 2.0 for Pixel 1, 2\n\nWhen ro.bluetooth.a2dp_offload.supported is false, but\npersist.bluetooth.bluetooth_audio_hal.enabled is true, we use new config\naudio_policy_configuration_bluetooth_hal_enabled.xml\n\nRemove primary flags from hearing aid also.\n\nBug: 124278829\nBug: 124014853\nTest: manual with BluetoothAudioHAL enabled / disabled under Pixel 2, 3\nChange-Id: I77e53ee50165e420d28c8a0c8fa9c5fc866c4596\n"
    },
    {
      "commit": "2224c5a0f7ff52d8b40cc3e8b67f3f71560f842e",
      "tree": "d87577ba156774092ce9395bb281f5bbbc115eed",
      "parents": [
        "e04ba51703c3fb797f6b7e22d5848d0ed3801bc6"
      ],
      "author": {
        "name": "juyuchen",
        "email": "juyuchen@google.com",
        "time": "Mon Jan 21 12:00:58 2019 +0800"
      },
      "committer": {
        "name": "juyuchen",
        "email": "juyuchen@google.com",
        "time": "Wed Feb 13 12:00:28 2019 +0800"
      },
      "message": "audio: use SinkMetaData to route voice call with hearing aid.\n\nBug: 121173695\nTest: manual audio test\n\nChange-Id: If51b7c5063d0578ec4b8b16ec8ccd1712ae2c85c\n"
    },
    {
      "commit": "4c8d916a69fe9a65af5d606a1a129bfda1fc5fef",
      "tree": "378c36119753159647c707c037480e72185e2342",
      "parents": [
        "aea65a0f1ede2446f05ce186f04a419e36f4e311",
        "ba2cf0f2e39d8302babbda3a98127daaf2ea7376"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 08 03:00:26 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 08 03:00:26 2019 +0000"
      },
      "message": "Merge \"audiopolicy: fix dynamic device \u0026 explicit routing management\""
    },
    {
      "commit": "d6454722c21495fb5effae4176cc689ec8900f9a",
      "tree": "81771f5041b17dcd2972e40e81f8669df711fbbc",
      "parents": [
        "6787e25ae1c63731e254d5afa5edacb02f4d3e02",
        "c2afbdf2a57dd2e84ae2fe20e72c45c67b1aa4da"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Feb 08 01:08:14 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 08 01:08:14 2019 +0000"
      },
      "message": "Merge \"Dynamic audio policy should reject non pcm\""
    },
    {
      "commit": "ba2cf0f2e39d8302babbda3a98127daaf2ea7376",
      "tree": "4a86852dbc034802d93ab5528591dc941a68c01c",
      "parents": [
        "ffb2516cc730b5ac621ad8a92e827faf4e86b8ca"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Dec 12 16:40:25 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 07 11:20:57 2019 -0800"
      },
      "message": "audiopolicy: fix dynamic device \u0026 explicit routing management\n\nWhile a playback is ongoing using explicit routing\nand the device is disconnected, setOutputDevices() will bail out\nif the new device is incompatible with the io profile. So the device\nwill not be reset in the output.\nMoreover, if another device of the same type/address is connected,\nthis device will have a new unique ID.\nIf a track wants to use it as explicit, as the first playback/capture is still\non going, the function findPreferredDevice will return the previous device id.\n\nThis CL enforces:\n-setOutputDevices() to check if new device is not compatible AND previous devices\nare still available\n- When a device is disconnected, go over all clients to clear any preferred device\nreferring to the device being removed.\n- Sanitize preferred device received by get\u003cOutput|Input\u003eForAttr() according to\nconnected devices.\n\nTest: AudioPolicyTests --gtest_filter\u003dDynamicAddressOutputDevice/DeviceConnectionTest.DeviceConnectionState/*\nTest: audio smoke tests\nTest: CTS tests for AudioTrack, AudioRecord, AudioRouting\n\nChange-Id: Ib3a2d54d902def0fcfc2a623c25bb92d65b1ab98\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "3f58b1194375d5c8008ec8fd4ce2ef068e8955b8",
      "tree": "d7260eb26fc40d284df23e7264b19ef53059bbed",
      "parents": [
        "5edb6fbe8febd18961895a4edd45a1c6e6a6db85",
        "c43ea147033817dc46b76d8993a84f0e5ee4e4e0"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Feb 07 03:10:10 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 07 03:10:10 2019 +0000"
      },
      "message": "Merge changes from topic \"APC\"\n\n* changes:\n  Propagate track status to interception patch track\n  Add secondary output to audio tracks\n  Audioflinger: add timeout to PatchTrack\n  Audiopolicy: Move AudioPolicyMixCollection in helper function\n  Add MIX_ROUTE_FLAG_LOOP_BACK_RENDER\n"
    },
    {
      "commit": "5edb6fbe8febd18961895a4edd45a1c6e6a6db85",
      "tree": "5d36a428baf06831716677af2949221576255902",
      "parents": [
        "62748c6d29225b1b3b3c5d8caa789a31a45feaeb",
        "5dd3130076526467611a374d32e2a4f81b49f38d"
      ],
      "author": {
        "name": "Cheney Ni",
        "email": "cheneyni@google.com",
        "time": "Wed Feb 06 18:10:14 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 06 18:10:14 2019 -0800"
      },
      "message": "Merge \"Introduce a new Audio HW module: bluetooth_audio\" am: 6b890b0b89 am: 1d2eedd9b9\nam: 5dd3130076\n\nChange-Id: I41874f1b1709041a50c4326baaf5376777b841e2\n"
    },
    {
      "commit": "c2afbdf2a57dd2e84ae2fe20e72c45c67b1aa4da",
      "tree": "bad704e7e1461de7372754856e84042428f2fd5b",
      "parents": [
        "c43ea147033817dc46b76d8993a84f0e5ee4e4e0"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Jan 31 18:18:06 2019 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Feb 06 16:13:13 2019 -0800"
      },
      "message": "Dynamic audio policy should reject non pcm\n\nTest: adb shell audiorecorder --target /data/file.raw\nBug: 111453086\nChange-Id: I4691b19b1fa2f3b8e8e5045c9ea5be0a5c9effb6\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "153f92d57b6a1d2fdc7fa601bbc86db31646a8f9",
      "tree": "0d380f13a58ff8fdf073dd974dcb55e4d18ef75c",
      "parents": [
        "45986c74cd5253bcc81b1b4954e3ff3300f7e6d8"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Dec 18 18:33:28 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Feb 06 15:49:11 2019 -0800"
      },
      "message": "Add secondary output to audio tracks\n\nThe secondary are returned from mixes (from DAP loopback\u0026render),\nfrom getOutputForAttr.\nAll getOutputForAttr* of the stack are update.\nInternal getOutputForAttr use descriptor, external one use handles.\n\nThe secondary output are saved in each track and the track is\ninvalidated if the list of secondary output changes.\n\nIn audio flinger, create a pair of recordTrack \u0026 patchTrack to pipe\nthe intercepted audio audio to the secondary output.\n\nTest: adb shell audiorecorder --target /data/file.raw\nBug: 111453086\nChange-Id: Id6523d9e383c15a0e39313d5f355df809b7e72fe\n"
    },
    {
      "commit": "6851adba7a6e8543638c69224bad73355d858c9f",
      "tree": "81d20756ad54cc11318c3bddc01befa4a1a1c465",
      "parents": [
        "4ae8b0c37c4b9852c15098cc5ba4129745d1d07b"
      ],
      "author": {
        "name": "Cheney Ni",
        "email": "cheneyni@google.com",
        "time": "Thu Nov 01 06:30:37 2018 +0800"
      },
      "committer": {
        "name": "Hansong Zhang",
        "email": "hsz@google.com",
        "time": "Wed Feb 06 15:21:08 2019 -0800"
      },
      "message": "Introduce a new Audio HW module: bluetooth_audio\n\nWhen persist.bluetooth.bluetooth_audio_hal.enabled is true, the audio\nserver will load audio_policy_configuration_bluetooth_hal_enabled.xml\nto enable BluetoothAudio HAL 2.0\n\nBug: 111519504\nBug: 121411420\nBug: 122556667\nTest: manual\n\nChange-Id: I52df919be8525aa58384163e9505c02a52773506\n"
    },
    {
      "commit": "58d4be5a5a5d24f18b7a207148c7caa317fef366",
      "tree": "37e0a5e790187815757bd906c7767cfcea0e1f74",
      "parents": [
        "6054a7765cfd65c34d49a5a435bee1d0cdfb2d32"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Nov 06 15:30:12 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 05 00:18:00 2019 +0000"
      },
      "message": "audio: get rid of hardcoded translation stream \u003c--\u003e attributes\n\nIMPORTANT NOTE:\n    CL depends on another CL in frameworks/base\n    https://partner-android-review.googlesource.com/c/platform/frameworks/base/+/1206275\n\nAudioProductStrategies offers the possibility to dynamically\ntranslate attributes to stream types (and vice versa) within\naudio policy engine.\nLegacy engine has hard coded rules to maintain the translation\nservice.\n\nThis patch removes the hardcoded translation within the helper\nand replaces them by AudioProductStrategy APIs.\n\nTest: AudioPolicyTests: AudioProductStrategiesAllStreamsTest\nIt loops on all stream types supported by strategy and ensures\ndevice selection matches. Hard coded stuff would prevent right device\nselection.\nTest: CTS: AudioTrackTest AudioRecordTest\nTest: audio smoke test on sailfish, walleye blueline\n\n\nChange-Id: I76589df5555136ed49dbacc7aac9b0b5e828bef2\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "f579db5aa9e1cbbe5a8b7689e319913e154cda3b",
      "tree": "8cbb24a261decd14aad3fcbfa4e5e32abe607686",
      "parents": [
        "c005e569c7bae3f8c49660c9388c3076046069f5"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Nov 13 11:25:16 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 02 10:43:22 2019 -0800"
      },
      "message": "audiopolicy: exclusive Preferred Device\n\nIt allows to force the routing of music during call without\naffecting clients that does not explicitely requested to use\nanother device than the one decided by the policy during call\n(which is TELEPHONY TX).\n\nIt fixes differently Bug 111467967.\n\nTest: make\n\nChange-Id: I6034f0d2568e1b2a1e600d9ae1453fd0c60ed02e\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "c005e569c7bae3f8c49660c9388c3076046069f5",
      "tree": "8612dc3a3d69c018b303bf8e56aa142db5465e8e",
      "parents": [
        "d0ba9ed06c61ab3e66627e027fbc34ba998140ee"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Nov 06 15:04:49 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 02 10:31:32 2019 -0800"
      },
      "message": "audiopolicy: apm: switch to new Engine APIs\n\nTest: make\nChange-Id: Iedc2268852ee0bce32b67cfd324395c48cb33424\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "d0ba9ed06c61ab3e66627e027fbc34ba998140ee",
      "tree": "49948f80335bea4a358c7f455dfd6a5e59a94e30",
      "parents": [
        "7188f1ad365cd9d475723b639d521b491eaca389"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Nov 05 11:50:42 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 01 18:05:54 2019 -0800"
      },
      "message": "audio policy service: Add introspection API to retrieve AudioProductStrategies\n\nThis CL adds required introspection APIs to deal with product strategies:\n\n-getter of the collection of product strategies\n-helper function to return the strategy associated to a given attributes.\nThis API is mandatory to avoid duplicating the logic that compiles the strategy\nfor a given Audio Attributes structure.\n\nTest: make\n\nChange-Id: I0e107570a44227bb52a4f359954c93215d4f8bae\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "f024a9eb29122a42179608372cb25129d1158e3b",
      "tree": "8b95f2175e985295dd9c266785a76e5409a26600",
      "parents": [
        "a3e4fe3fd4f24ebcf9e69de52e2f0d3e2be3a816"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 30 16:01:02 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 30 16:41:07 2019 -0800"
      },
      "message": "AudioPolicyManager: Fix nullptr device check\n\nRegression from commit 11d301045991dd66bf3f64ba510e069b7c09fedb\n\nTest: CTS AudioRecordTest passes\nBug: 123597808\nChange-Id: I3b1de479ebd8a279309d33f58db3e40b851f98e4\n"
    },
    {
      "commit": "ee1f655728b31b4c74c4f211b96bfd117daaeacb",
      "tree": "9e48f54ce76fff0e693b9b480ff5900eefdfa42c",
      "parents": [
        "0684bf1ac795c8a112cdc168004cdf0bad6a6647"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 29 18:22:02 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 29 18:37:44 2019 -0800"
      },
      "message": "audio policy: fix call audio hearing aid\n\nRemove assert added by mistake on a valid configuration.\n\nBug: 123551930\nTest: place a call with an hearing aid device.\nChange-Id: Ib279d1bea460026da45ffeb5a69910ac0c3d3c4f\n"
    }
  ],
  "next": "db80386712cfc0a4c7642f72992a3933a21f4458"
}
