)]}'
{
  "log": [
    {
      "commit": "a81b20a80ae556a4b93199c617a8fe467a4a6a3a",
      "tree": "895b1a87d62e52242838470508e5a41104dc497d",
      "parents": [
        "706d9606bee174bc1d087fa316e0d7d66605b417"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 02 09:28:16 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 26 17:51:57 2019 -0700"
      },
      "message": "Audio policy: fix HwModuleCollection::getDeviceDescriptor\n\n  The deprecated method AudioManager.isBluetoothA2dpOn() calls\ngetDeviceConnectionState on APM with an empty address, which\ncaused HwModuleCollection::getDeviceDescriptor to set an empty\naddress on the DeviceDescriptor for the currently connected\nA2DP device. This method is called by MediaRouter.\n  When the address was reset, the java listener for audio device\nconnection monitoring was reporting the connection of an A2DP\ndevice with an empty address, which in turn caused AvrcpManager\nto behave as if the audio device connection failed.\n  If MediaRouter called isBluetoothA2dpOn() before AvrcpManager\nreceived its called for device connection, the error would occur.\n\nBug: 132416679\nTest: call isBluetoothA2dpOn() and check for valid address in dumpsys media.audio_policy\nTest: atest AudioServiceHostTest#testInjectForRecord ; atest AudioHostTest ; atest AudioPlaybackCaptureTest\nChange-Id: I1370edbbca46657506a990855d06a176f07c54d3\nMerged-In: I1370edbbca46657506a990855d06a176f07c54d3\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": "1f8da412814ed205572d6e05cb5b55c3661ab312",
      "tree": "8c724ec47d378e79b0d4255c2cd0a5c9b1111ae1",
      "parents": [
        "bac928872a3f49ad69e9581c4f60099c21108213"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 11 12:57:42 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 11 12:57:42 2019 -0700"
      },
      "message": "audiopolicy: Match DIRECT and MMAP_NOIRQ flags exactly in IOProfile\n\nPrevent selection of DIRECT and MMAP_NOIRQ output profiles\nif these flags were not requested.\n\nTest: atest audiopolicy_tests\nChange-Id: I6940caed519b6237ea3038e646a84e4403a0c1ed\nMerged-In: I6940caed519b6237ea3038e646a84e4403a0c1ed\n"
    },
    {
      "commit": "edad5db98d9014f7cb4cd2654bfb6c4b1ba2df80",
      "tree": "ca4e15f6ba03f5a1194c9b35c484ffc24d21c08e",
      "parents": [
        "b0d7fba6e5398f3bb5373afb13d8a5be2234355a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 09 10:39:56 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 09 12:34:33 2019 -0700"
      },
      "message": "Require HW AV sync flag match for compatible output IOProfile\n\nPreviously, Audio HAL implementers need all HW A/V sync profiles\ndeclared after non HW A/V sync profiles in their audio policy\nconfigurations, otherwise a HW A/V sync profile match could be\nfound for a non HW A/V sync (e.g. direct only) request, the\nAudio HAL output stream would be opened with the HW A/V sync\nflag, and Audio HALs typically fail to process the stream as\nthey are setup to parse in-band HW A/V sync headers (even if\nthey don\u0027t receive keyStreamHwAvSync AudioParameter).\n\nTest: atest audiopolicy_tests\n  AudioPolicyManagerTVTest#MatchOutputNoHwAvSync fails w/o IOProfile change,\n  passes with the change.\nBug: 140447125\n\nMerged-In: Icfc806497b5b23013e63621a585c28d1d7a9882a\nChange-Id: Icfc806497b5b23013e63621a585c28d1d7a9882a\n"
    },
    {
      "commit": "4e5f402253592726d05f4864b2f30b740abf15fc",
      "tree": "985acb69bb0c83784662238236e2a9bfd4e1adf7",
      "parents": [
        "90d1d53862638210d848ddedef2600aae35337d3"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Sat Jun 08 02:32:21 2019 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Jun 10 14:06:11 2019 -0700"
      },
      "message": "Fix remote-submix not found for MIX_TYPE_RECORDERS LOOPBACK\n\n[Context]\nWhen a LOOPBACK dynamic audio policy mix PLAYER/RECORDER\nis registered, first the REMOTE_SUBMIX device that will be\nused by the app to capture/play respectively is activated.\n\nEg a mix RECORDER (used to inject audio to apps recording),\nwhen registered will activate an OUT_REMOTE_SUBMIX.\n\nThen the app can open a record/playback track on this\nREMOTE_SUBMIX, which will trigger the other end of the pipe\nto be activated.\n\nFollowing this the playback/Record Tracks that match the\nmix will be routed to the IN/OUT REMOTE_SUBMIX.\n\n[Example for an app FUU]\n 1) App FUU register Playback/record mix\n    2) APM activates out/in remote submix\n 3) App FUU opens track to out/in remote submix\n    4) APM activates in/out remote submix\n 5) tracks matching mix are redirected to the out/in remote submix\n\nWhen an OUT_REMOTE_SUBMIX is activated, it tries to check if it matches\na mix, if it does, it saves the output in the mix (in mOutput).\nThis output is then used to find a matching mix output in\ngetOutputForAttr(). If a mix has no output is is considered inactive.\n\nNote that IN_REMOTE_SUBMIX do not save their input in the mix, the\ninput is queried by APM each time in its mAvailableInputDevices.\n\n[Issue]\nThe issue is that in step (2), when an OUT_REMOTE_SUBMIX is\nactivated (thus for a MIX_TYPE_RECORDERS), no mix is matched because the\nmix is of type IN_REMOTE_SUBMIX as it will be used to route AudioTracks\nin step (5).\nThus no mix output is found in getOutputForAttr and the step (3) fails.\n\nThis is a recent regression as previously the type was not checked when\nlooking up for a mix in step (1).\n\nThe Change-Id of the patch that caused the regression is:\nI4dc7f23bef19a7d47afc2998102da07dde41fbca, its sha1 is:\n679172768d86e29a47b9e15dd56776694128cf59\n\n[Workaround]\nFor now, given the release timing, implement a minimal fix that restore\nthe previous behavior for the OUT_REMOTE_SUBMIX output save lookup.\nAka, make sure to query for a IN_REMOTE_SUBMIX mix in step (2).\n\nStep (4) is fine as the mix type is the same as the REMOTE_SUBMIX type.\n\nAs IN_REMOTE_SUBMIX do not attempt to save their output in the mix, no\nissue is present on this code path.\n\nA proper fix needs to be implemented on master, preferably by having the\nsame device save behaviour on both mix type.\n\nBug: 134068143\nTest: Wifi calling call screening\nTest: atest AudioPlaybackCaptureTest AudioHostTest\nChange-Id: I1547948ae412dbdeb2d85cc62bf18f7ac5f1efc0\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\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": "d4e2ab1785d813aa336479a57de634f30fb13a92",
      "tree": "eb7ee11fab376ca0fc7bf75c7490e6b508ccdb89",
      "parents": [
        "eb99a27ffabbdf1795c063bd630f437a5d446052",
        "6e16157202e8c273d3c84be001e68bf7b13c9ee8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat May 11 02:46:59 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat May 11 02:46:59 2019 +0000"
      },
      "message": "Merge \"audio policy: fix channel match rule for input profiles\" into qt-dev"
    },
    {
      "commit": "6e16157202e8c273d3c84be001e68bf7b13c9ee8",
      "tree": "ec83ddec857579985597cad7ffd8be10c25f187c",
      "parents": [
        "459e59820f8914a10c1d015fb4fa09b723cacaca"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 10 15:53:08 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 10 17:44:09 2019 -0700"
      },
      "message": "audio policy: fix channel match rule for input profiles\n\nModify channel mask match rule for input profiles in order to\nfavor profiles with positional masks and less than 2 channels.\nThis reflects the audio HAL convention to not list index channel\nmasks for less than 2 channels.\n\nBug: 131943885\nTest: repro steps in bug.\nChange-Id: I85e06f3afc2833b6aa7d52675bfd1ffda524fbcf\n"
    },
    {
      "commit": "e2f34be1b70a564a9e7866934f0b626e98be999f",
      "tree": "e57d0b82ebd689f5734c8bedd84ecbe091d3dd72",
      "parents": [
        "3350096bf8e52b2d96f7b7ba95642d92c05e8f09"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu May 09 12:31:06 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri May 10 09:52:56 2019 -0700"
      },
      "message": "APM: uid-device affinity: fix for multiple concurrent apps\n\nAudio mix rules that contain both a match and exclude for a uid\n  or usage are ignored for routing evaluation. The implementation\n  of the uid-device affinity caused uid matches and exclusions to\n  be added to any mixes, causing previously valid mixes to be\n  discarded in the routing logic.\nThe fix consists in implementing the uid-device affinity by only\n  applying uid exclusions on mixes that:\n  a/ are compatible with the concept (mixes of players that are\n     render only),\n  b/ do not route to the selected devices\n  c/ do not have a uid match rule (such mixes are already exclusive\n     to the uid to match)\n  d/ do not already have a uid exclusion for the uid\nFix removeUidDeviceAffinities() that skipped the wrong mixes.\n\nBug: 124319394\nBug: 131180578\nTest: atest AudioHostTest#testUidDeviceAffinity\nChange-Id: I813c4cfb15956e56599740948775c32562266c21\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "f1273c07a7b718504c1d0bbff5bcea4ef0379c38",
      "tree": "5f9bee88cee4b88f593bef847003c2033e48a79b",
      "parents": [
        "66abdd2ff0de06c87a54e059c37147f4c6f486f8",
        "7795e4a3fda5623acbb8dd985150207642059218"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 03 17:28:27 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 17:28:27 2019 +0000"
      },
      "message": "Merge \"Audio Policy: Do not stop getOutputForAttr on invalid Mix\""
    },
    {
      "commit": "7795e4a3fda5623acbb8dd985150207642059218",
      "tree": "b87dbf908c1f340ad10ceb74f1c2936a8f1f1ccf",
      "parents": [
        "32fa5079485232f3cb22afab91a275bba28d841b"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Apr 02 18:21:51 2019 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Apr 02 18:25:03 2019 -0700"
      },
      "message": "Audio Policy: Do not stop getOutputForAttr on invalid Mix\n\nThis would allow an app that successfully registered an invalid mix to\nblock all following mixes.\n\nTest: none\nBug: 111453086\nChange-Id: I3c1630b7b697dd70e08a5708d1515e097d683401\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "83d17c208422b6c5df57716e9782925b0a787ee2",
      "tree": "44d0bbff2b15b05854120487ed7fa115b45e8eb9",
      "parents": [
        "b02be352c78d9db1c876a114199a9d4259c194e2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 02 17:10:01 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 02 17:20:47 2019 -0700"
      },
      "message": "audio policy: fix stream to volume source mapping\n\nremove use of obsolete method streamToVolumeSource()\nand replace it by toVolumeSource() which actually queries\nthe engine for stream to volume source mapping.\n\nBug: 129439600\nTest: make\n\nChange-Id: Ie4e4e93aa5925315078fa96a957bb3ed71e7dc76\n"
    },
    {
      "commit": "3afa9b1b80a90cfffdbf5aff5e8d17351422fda6",
      "tree": "0a127c4244c561da58e71192f07e4ed36e8a8eea",
      "parents": [
        "fc332471b307dff3ab152db2f0cb35f12c7a50aa"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 01 14:02:18 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 01 14:21:09 2019 -0700"
      },
      "message": "audio policy: fix dynamic policy remote submix device removal\n\nThe life cycle of an IO profile on remote submix module\nassociated with a dynamic audio policy is different from other profiles\nsupporting removable devices with addresses: the profile must not be\ncleaned up when the device is disconnected but when the dynamic policy\nis unregistered.\n\nBug: 121200677\nTest: phone call while connected to Android auto head unit simulator\nChange-Id: I8c9f64697b736dab379a7d85b9d93568139e4e84\n"
    },
    {
      "commit": "fc332471b307dff3ab152db2f0cb35f12c7a50aa",
      "tree": "2162255b15a030492de380e820e65193e6fb528c",
      "parents": [
        "394a80a78c4812e8570f358e5b8fdcb061fab022",
        "af3777782de2e0a0d4e38d9c6f9667e2e055a4a7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 30 11:30:49 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 30 11:30:49 2019 +0000"
      },
      "message": "Merge \"audio policy: fix configurable engine and dynamic policies take 2\""
    },
    {
      "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": "204745c7a078c72e7f9991f4b79cf329ee434fd1",
      "tree": "85c8d78fe7306c4532797bfe1bb26e6895784a3c",
      "parents": [
        "235684f2c8d9f37c8a8358739a2c2c50164816b0",
        "aba3b4b493fe84cd95780971f9a4ba2e22095264"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 29 20:18:11 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 29 20:18:11 2019 +0000"
      },
      "message": "Merge \"audiopolicy: Fix dump for AudioPolicyMix criterias\""
    },
    {
      "commit": "aba3b4b493fe84cd95780971f9a4ba2e22095264",
      "tree": "a0d3b2af7473d03f044e32fdd0aa508db31dbe3e",
      "parents": [
        "c70268aa433e7d307819184ae5c2ec96a3e5b6af"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 27 12:53:29 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 29 09:30:55 2019 -0700"
      },
      "message": "audiopolicy: Fix dump for AudioPolicyMix criterias\n\nThe dump code was not using AudioMixMatchCriterion class fields\ncorrectly.\n\nBug: 112151391\nTest: 1. run and pause AudioPolicyTest#testMixByUidCapturing\n      2. adb shell dumpsys media.audio_policy\n\nChange-Id: I5f74a0e6dc1a7039eab1470402179b7f9d1cd962\n"
    },
    {
      "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": "e9cecf0f8865fa43d8c2977c314f9c81fb20ba3b",
      "tree": "bf5643963711c81c5dc3e1ab748b6a9a08edbb95",
      "parents": [
        "c70268aa433e7d307819184ae5c2ec96a3e5b6af",
        "36b17553b2c3aad4d8f600edd2e82f9a583ee05a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Mar 27 20:41:06 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 27 20:41:06 2019 +0000"
      },
      "message": "Merge \"Introduce a system APC with its corresponding opt-out\""
    },
    {
      "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": "36b17553b2c3aad4d8f600edd2e82f9a583ee05a",
      "tree": "b07a90eaf6bcba6f06fd56ab3976d1c71c7fd712",
      "parents": [
        "791d3370830b8e22b8bbaf41c3de900de48d2be3"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Mar 07 18:48:07 2019 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Mar 22 17:21:30 2019 -0700"
      },
      "message": "Introduce a system APC with its corresponding opt-out\n\nFor system application with the new permission CAPTURE_MEDIA_OUTPUT, or\nCAPTURE_AUDIO_OUTPUT, allow to capture the audio of playing apps that\nallow it.\n\nTest: adb shell audiorecorder --target /data/file1.raw\nTest: atest android.media.cts.AudioPlaybackCaptureTest\nBug: 111453086\nChange-Id: I5bfca51e48992234508897c595a076d066db26b2\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "bb0f557d3d0b7db071595f306555d715092dc6c5",
      "tree": "49347935de8beb756f05f06fa8e394c8c9874237",
      "parents": [
        "b3527ddc7e9f6d57890656732747c6394b8f2b71"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 11 14:29:03 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 12 10:43:21 2019 -0700"
      },
      "message": "AudioPolicy: Fix UAF of a temporary DeviceVector\n\nAudioOutputDescriptor::devices() returns a DeviceVector\nby value. That means, the returned vector must be held\nas long as we need its elements.\n\nAdded a FIXME to consider other devices because the\ncurrent code looks suspicious.\n\nBug: 128327759\nTest: make\nChange-Id: Ifd3a7c8faf89b2c4fc3400aac0060d0e9e673e73\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": "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": "8882e3078fb6a89e17b44ccfcc7914a1f22ed0cb",
      "tree": "d99912f8087611cdec33af48b314f16c117f9e09",
      "parents": [
        "63c0f36d2ba1b752a040b47d108f4cc907da227b",
        "9b181958d638af581e98db8e208e3cebd3e99cf7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 26 21:23:30 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 26 21:23:30 2019 +0000"
      },
      "message": "Merge \"TypeConverter: proper conversion of invalid values to strings\""
    },
    {
      "commit": "9b181958d638af581e98db8e208e3cebd3e99cf7",
      "tree": "c27bfbd78d5a54188b2f6735c0c116a6d57a8859",
      "parents": [
        "a666d61efbe74594e9d441621d20bef8f9def26e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 25 14:53:36 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 25 19:38:04 2019 -0800"
      },
      "message": "TypeConverter: proper conversion of invalid values to strings\n\nOtherwise incorrect state might be hidden.\n\nAlso: Unify devicesToString() and deviceToString() to toString().\n      Miscellaneous cleanup of replicated functionality.\n\nTest: Basic audio sanity, AF and APM dumpsys check\nChange-Id: Ic81167e2d2dbfcca881f0898764cf886215c217c\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": "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": "f0de5ce5d1629cd18effe1b70ed6500c1d648955",
      "tree": "92f059c8bff4024c0ebb112a4d93e69121372340",
      "parents": [
        "06a3967bee29fcfd0dde8fbdfff795e7e705c0f4"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Feb 05 09:28:44 2019 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Feb 08 22:39:10 2019 +0000"
      },
      "message": "Restrict APC to usages and opt-in streams\n\nTest: adb shell audiorecorder --target /data/file.raw\nBug: 111453086\nChange-Id: I17d48bfa89f3187535d211ef1c9ba6cb435fd777\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "cc423d49c662a03627d7f855f8111c5938f0cf11",
      "tree": "570bc367e3eb5caa28d44f6904bea6065afa8edb",
      "parents": [
        "0cefb10674a51e975cbe1c5d090198786614a31c",
        "3fff3f502d536f8a35744c859cc93823ad29a8cc"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Feb 08 19:02:45 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 08 19:02:45 2019 +0000"
      },
      "message": "Merge \"AudioPolicy: make mixes const correct\""
    },
    {
      "commit": "0cefb10674a51e975cbe1c5d090198786614a31c",
      "tree": "c00b9229485006c69e1c609e34fde5e0cc0470f7",
      "parents": [
        "9fcae9fdc6102ac7e92cb91777d79114f7996452",
        "f4f5c817ed4ba6f10287cb37b9f71f6c27723359"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Feb 08 19:01:40 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 08 19:01:40 2019 +0000"
      },
      "message": "Merge \"AudioPolicy: make input attributes parameter const\u0026\""
    },
    {
      "commit": "f4f5c817ed4ba6f10287cb37b9f71f6c27723359",
      "tree": "695ece5a81488ca3e98992707e01c9b4a0675a8b",
      "parents": [
        "d6454722c21495fb5effae4176cc689ec8900f9a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Feb 05 09:28:02 2019 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Feb 08 01:11:13 2019 +0000"
      },
      "message": "AudioPolicy: make input attributes parameter const\u0026\n\nTest: compile\nBug: 111453086\nChange-Id: I3b08d11481471dc080ed2ab89ae59e6268542c25\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "3fff3f502d536f8a35744c859cc93823ad29a8cc",
      "tree": "1d7e0807ecd9d2701cf94c3208ebbcca595f3352",
      "parents": [
        "d6454722c21495fb5effae4176cc689ec8900f9a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Feb 05 09:24:40 2019 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Feb 08 01:09:26 2019 +0000"
      },
      "message": "AudioPolicy: make mixes const correct\n\nTest: compile\nBug: 111453086\nChange-Id: Ic3b1e414bcf0e2de20bdecebdd71920030ecc1ec\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "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": "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": "ba98acb34e60b2bf2dac5a55c4acbb80b5408568",
      "tree": "e55683923a4060bbfd59f87f1030b0218371ef18",
      "parents": [
        "1086b05f7d3cb296d55facd88621f16c2737cf33"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Dec 18 16:51:44 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Feb 06 09:38:23 2019 -0800"
      },
      "message": "Audiopolicy: Move AudioPolicyMixCollection in helper function\n\nNo functional changes\n\nTest: adb shell audiorecorder --target /data/file.raw\nBug: 111453086\nChange-Id: I300450742a3d6f0b22f69a25eeda7800e0a27943\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "1086b05f7d3cb296d55facd88621f16c2737cf33",
      "tree": "58254c1bc6f07d5d9f8645ae32b131239e74ffa8",
      "parents": [
        "0435a4dcb66366da53cf4544c941a40ed2b9c2bd"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Dec 18 17:52:55 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Feb 05 17:19:46 2019 -0800"
      },
      "message": "Add MIX_ROUTE_FLAG_LOOP_BACK_RENDER\n\nTest: adb shell audiorecorder --target /data/file.raw\nBug: 111453086\nChange-Id: I276a10921aac9f5e709c0a44c661cbbdc94e49db\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "0435a4dcb66366da53cf4544c941a40ed2b9c2bd",
      "tree": "d0963c6f1081a0f6008a56fbc03f6f5f33ae3505",
      "parents": [
        "f63dbf127223716fad9de179862eb4fde4fd64e7"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Feb 01 18:17:25 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 05 02:31:49 2019 +0000"
      },
      "message": "Audiopolicy: Fix DeviceVector::getDevice logic\n\nIt was currently ignoring address even if the default format was passed.\n\nTest: adb shell audiorecorder --target /data/file.raw\nBug: 111453086\nChange-Id: I44a17fa32c4dd32c426d20bf0902bd406682743c\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "6054a7765cfd65c34d49a5a435bee1d0cdfb2d32",
      "tree": "37390182206a6401daead33e48e1d60d6336d521",
      "parents": [
        "f579db5aa9e1cbbe5a8b7689e319913e154cda3b"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Nov 06 13:10:58 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 02 10:43:22 2019 -0800"
      },
      "message": "audiopolicy: engine: remove deprecated APIs\n\nTest: make\n\nChange-Id: Idfcb060095da92adb286706d4eaf9b9a78a8c61a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "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": "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": "dddc39e44c6bc1c8658e5f3fd6c087abad017fdd",
      "tree": "2149b7d6ef7555bd11912481982f76f8a11569d1",
      "parents": [
        "642f662a0dba2732cacf05774758723f09aa188e",
        "f86268a0aa3c98cc5acdd18f43de82e780772b5b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 31 23:53:10 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 31 23:53:10 2019 +0000"
      },
      "message": "Merge \"Prepend instead of append for criterias to remove\""
    },
    {
      "commit": "4df18892dca915d1b737043baab2dc74c9f7d96a",
      "tree": "820afce3906a04e5fc576a009b581ece84158856",
      "parents": [
        "760e6c2581b49a95abced90730319d3d248a1518",
        "f024a9eb29122a42179608372cb25129d1158e3b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 31 02:28:22 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 31 02:28:22 2019 +0000"
      },
      "message": "Merge \"AudioPolicyManager: Fix nullptr device check\""
    },
    {
      "commit": "f86268a0aa3c98cc5acdd18f43de82e780772b5b",
      "tree": "198997a295d7b62c19fc58392350f3a0db08d9c5",
      "parents": [
        "1c0a9fb458cc97a2b3e7b93e58c02bf11512b950"
      ],
      "author": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Wed Jan 30 16:52:10 2019 -0800"
      },
      "committer": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Wed Jan 30 17:22:47 2019 -0800"
      },
      "message": "Prepend instead of append for criterias to remove\n\nBug: 123661699\nTest: manually call removeUidDeviceAffinity\nChange-Id: I729b02bbc45125638baefdccdedfaf046e146dd2\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": "308d50bf3b08f8197d7fed76a75f43d7398fc5a1",
      "tree": "adfaa79def42c27e6ee83e379bc9af6af94b3bc2",
      "parents": [
        "0684bf1ac795c8a112cdc168004cdf0bad6a6647"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 30 11:57:16 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 30 11:59:26 2019 -0800"
      },
      "message": "audio policy: fix regression in USB audio\n\nFix regression in audio device selection introduced by\ncommit 4e4647077f\n\nBug: 123500997\nTest: play music over USB and BT A2DP\nChange-Id: I9a86e1a8f34f3b02f0dbb53b719884ab6c567265\n"
    },
    {
      "commit": "0ac26a451483ddea3be4fafe620b8fa01669149b",
      "tree": "a811b5d3b33e090c45899cf8a4f8b2c0f67a9bb3",
      "parents": [
        "0d405c1e55c9a1b9dbf898724dd1b6dc41fa8c46",
        "d84e8f7fdf1a61956953660d3af226c3b147e3bb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 26 04:58:28 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 26 04:58:28 2019 +0000"
      },
      "message": "Merge \"audio policy: fix legacy Ad2P with advanced codecs\""
    },
    {
      "commit": "0d405c1e55c9a1b9dbf898724dd1b6dc41fa8c46",
      "tree": "806b6c042782871d7aa81095fccc103682b79fd8",
      "parents": [
        "911ef8fd5231d990de15bc1e16dd937b7e81f5f7",
        "dcbda2a2efc838cf5b9597e6d346b3603e48bc40"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 26 02:28:33 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 26 02:28:33 2019 +0000"
      },
      "message": "Merge \"audio policy: fix recording activity reporting\""
    },
    {
      "commit": "d84e8f7fdf1a61956953660d3af226c3b147e3bb",
      "tree": "f2c1784fa749f8ba511cb333d404ec296eb438b4",
      "parents": [
        "049aa255f9c1746f22cd9c562bd9cb8faaddb3d2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 25 18:15:35 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 25 18:15:35 2019 -0800"
      },
      "message": "audio policy: fix legacy Ad2P with advanced codecs\n\nThe changes for hybrid A2DP broke advanced codec support for devices\nrunning a HAL V4.0 and no A2DP offload.\n\nFix: consider that if no encoded format is explicitely listed in the\ndevice descriptor in audio policy configuration file, then no rule on\nencoded format should be enforced.\n\nBug: 123399421\nTest: connect Sony MDR-1 headphones and play music.\nChange-Id: Idd13cf0e0cdeb71554b23d178e61cc1d82abea60\n"
    },
    {
      "commit": "5cc71c5fedf82cccf701ce24db79818cbce20b64",
      "tree": "ac1a064c9e621e1258ab33915be69f76ed22e9bf",
      "parents": [
        "5b723961c9456aa46ea3315bbcc80a3f6d0acc70"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 25 14:10:42 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 25 16:16:11 2019 -0800"
      },
      "message": "AudioPolicyManager: fix offload playback for speaker and BT\n\nWithout this, deep buffer playback is used.\nFixes regression from commit 4e4647077f00c47650d6ecd66cd812073371bd10\n\nTest: Play music with Speaker and BT\nBug: 123371431\nChange-Id: Ic5d23c6863223f5456414c887c14fda90aa06f5f\n"
    },
    {
      "commit": "dcbda2a2efc838cf5b9597e6d346b3603e48bc40",
      "tree": "f7d655a341e386c1eb045f98d08444719496b2cc",
      "parents": [
        "049aa255f9c1746f22cd9c562bd9cb8faaddb3d2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 24 18:36:37 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 24 18:36:37 2019 -0800"
      },
      "message": "audio policy: fix recording activity reporting\n\nAdd missing active clients management when an output or input\nis force closed by the audio policy manager. This resulted in\nstale activity monitoring entries in AuduiService.\n\nBug: 123312504\nTest: connect and disconnect a headset while recording a video\nChange-Id: I66fe96daed2475ae6ada700ef1210d38ad099da2\n"
    },
    {
      "commit": "0121b9ecee64ba42b8bc26c224f1bb3af73e37bf",
      "tree": "f564596d5a75e2b5c2cddd64e086fb68233b6779",
      "parents": [
        "ad36699c757285227810b809658c3ca2a0d22229",
        "2c93e51abf2bf6b30ed69f02892287f40e64f5df"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 24 03:28:32 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 24 03:28:32 2019 +0000"
      },
      "message": "Merge changes I57d364f7,I6668cffa,Id62ab388\n\n* changes:\n  audiopolicy: engineconfigurable: fix legacy remote submix\n  audiopolicy: apm: Fix default bus device issue\n  audiopolicy: apm: updateCallRouting shall use SW Bridging if no external route support\n"
    },
    {
      "commit": "7b91592726928f879fceeb3d3248892d273dbcd2",
      "tree": "9c45779b427ffc5f9490ff5f2e717a68dd2a6c5b",
      "parents": [
        "87c117f9d6e91262ce7e11ece4147c469140d27c",
        "fe0fb8b050e0acc8f749bcee482b8c157ed8233b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 24 00:12:25 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 24 00:12:25 2019 +0000"
      },
      "message": "Merge changes from topic \"new_formats_huawei\"\n\n* changes:\n  audiopolicy: fix wrong volume db value for voice call stream\n  audio: add new audio formats\n"
    },
    {
      "commit": "fe0fb8b050e0acc8f749bcee482b8c157ed8233b",
      "tree": "facb2d56b33c78e715b6eff77cbcce828dbe5ef4",
      "parents": [
        "d55083d1449834d523cd3d9b5976b7e5011dce03"
      ],
      "author": {
        "name": "Revathi Uddaraju",
        "email": "revathiu@codeaurora.org",
        "time": "Thu Jul 27 17:05:37 2017 +0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 23 11:45:26 2019 -0800"
      },
      "message": "audiopolicy: fix wrong volume db value for voice call stream\n\nWhen apply mute for voice stream, vol index 0 is set, while\nvoice stream minimum vol index is 1. This will cause negative\nvol index is calculated and maximum db value is set.\n\nEnsure vol index is valide to calculate.\n\nAlso add range check in rescaleVolumeIndex().\n\nBug: 123063166\nTest: make\nCRs-Fixed: 2056642\nChange-Id: I89ee64d0914a971194a72b4de483d88b5029d80e\n"
    },
    {
      "commit": "0c1c7a2351f73a76bb8cabe2eb134cca98b7965d",
      "tree": "24088dfed6bf52c501fff781690ecb3475059428",
      "parents": [
        "e75dca3feec77fac58f1fa5f7a9b1195b4898368"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 17 14:58:28 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 23 11:11:18 2019 -0800"
      },
      "message": "audiopolicy: Read supported encoded formats from config file\n\nAdds reading of \u0027encodedFormats\u0027 attribute in \u0027devicePort\u0027.\nKeep fallback for an empty value for HDMI in case the framework\nruns against pre 5.0 audio HAL.\n\nAdd generic (example) APM config files for TV devices.\n\nBug: 120860184\nTest: on a TV device\n      tested that Pixel 1 a_p_c.xml file is not updated\nChange-Id: I85013a9e6172decd6ad72079d9c77e5f80e29d19\n"
    },
    {
      "commit": "a807ef99610c73ace4627ca65b4c3eb4ed84b604",
      "tree": "78f1fbc56d67403452a25ce2e694ccaf7ccfd62a",
      "parents": [
        "9eb18550939321e37affd2260e3bb72716cb33d6"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Nov 05 10:44:33 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 22 19:18:23 2019 -0800"
      },
      "message": "audiopolicy: apm: Fix default bus device issue\n\nWhen a bus device is used as default, when calling setForceUse,\na given SwOutputDescriptor might be asked to switch to another\nbus device (the default), violating the Policy Mix rule.\n\nTest: see below\n -start an automotive device with PolicyMix registered and\n  bus device as the default.\n -Consider having a system bus for system sound and media for music.\n -Play touch sound (check played in system bus).\n -launch music player.\n\nResult:\n -Music shall be played on media bus device\n -Touch sound still played on system bus device\n\nChange-Id: I6668cffa525af51af6ed0838745658f72ae00a62\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "4e4647077f00c47650d6ecd66cd812073371bd10",
      "tree": "db114451fc37f571667f8fab24e88b142f49eee2",
      "parents": [
        "fa66483acb53c575fc476f04bebf0d0463752297"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Thu Jan 10 23:38:46 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jan 20 21:32:16 2019 +0000"
      },
      "message": "audiopolicy: Add support for hybrid mode on A2DP\n\nAdd support in AudioPolicyManager to select a module,\ndevice or output based on device type and codec.\nImplement hybrid mode with A2DP which enables runtime\nswitching between HALs for A2DP based on offload support\nfor specific A2DP codecs.\nOptimize A2DP active device change and device config\nchange in AudioPolicyManager.\n\nBug: 111812273\nTest: make\nChange-Id: I246d71dd08bacbca6ed9b0012e7d7698bd8a0953\n"
    },
    {
      "commit": "1cbfc5d16ad592d9aea60d1a4ffcb9dd369f66cd",
      "tree": "fdb774c86e61e23e9315019174ba5913fae0a873",
      "parents": [
        "bf06f7afdbd7019614c9e31ce43301457a3a7d55",
        "b141c526eac14ad0f92c9ec6aae6a3b3ebc35708"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 17 22:19:08 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 17 22:19:08 2019 +0000"
      },
      "message": "Merge changes Ic9ecd592,I5e809296,I822097f1\n\n* changes:\n  audiopolicy: apm: Fix segfault when using bus device without Policy Mix\n  audiopolicy: fix rsubmix / device with dynamic address regressions\n  audiopolicy: apm: Prepare the future: use DeviceDescriptor/DeviceVector\n"
    },
    {
      "commit": "ae4b6ecfbcbea56cca160715a2ef710d8d87a40f",
      "tree": "124f24314b3f95b48a47dc8cc6f4ab0a6a0cc88e",
      "parents": [
        "96024c18126150259ba123ef48d180c6e0a2cf7e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 15 18:34:38 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 16 09:52:55 2019 -0800"
      },
      "message": "add new audio sources for audio capture\n\nThis commit adds the following audio capture sources:\n- AUDIO_SOURCE_VOICE_PERFORMANCE: for real time live performances like Karaoke.\n- AUDIO_SOURCE_ECHO_REFERENCE: for capturing the reference signal to suppress by an echo\ncanceller. Protected by privileged permission CAPTURE_AUDIO_OUTPUT.\n\nAlso added device AUDIO_DEVICE_IN_ECHO_REFERENCE selected when the requested\ncapture source is AUDIO_SOURCE_ECHO_REFERENCE.\n\nBug: 118203066\nTest: CTS tests for audio capture\n\nChange-Id: Ieb159ea82a7b81acf762506a44e24ec80111609f\n"
    },
    {
      "commit": "716e1435b2b0af38c801f2bf3872b9edc2ba7c33",
      "tree": "f1ef7a9110c4ff61e73f2da9a9cec97b15ea9254",
      "parents": [
        "11d301045991dd66bf3f64ba510e069b7c09fedb"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Jan 14 16:58:59 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 15 11:09:13 2019 -0800"
      },
      "message": "audiopolicy: fix rsubmix / device with dynamic address regressions\n\nOrphan devices (aka devices not declared in configuration file) used to be\nmanaged by apm::mAvailable\u003cOutput|Input\u003eDevices and affinity with profile\nwas done by type only.\nAs the device affinity with profile is now enforced by checking with descriptor\nrather than with type, profile\u0027s supported devices list shall be dynamically\nupdated.\n\nTest: manual audio smoke tests\nChange-Id: I5e8092968bbdb03ac7dc1aa1a3f15a0bc1b09251\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "11d301045991dd66bf3f64ba510e069b7c09fedb",
      "tree": "d9aa2e368424bc164a81f5bdcddef1fe328cdca1",
      "parents": [
        "526aa572bbc5dd1fa1b103a98d9f91a758d8d5c4"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Nov 02 16:09:09 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 15 11:08:17 2019 -0800"
      },
      "message": "audiopolicy: apm: Prepare the future: use DeviceDescriptor/DeviceVector\n\nThis patch updates the policy manager and common to widely use (vector of)\ndevice descriptor rather than the device type mask each time it is possible.\nIt will allow taking into account the address of the device.\n\nTest: manual audio smoke tests\nChange-Id: I822097f1240d379b2f89aaad1e6609059942e61c\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "2b6834483ea55538b87f840f1f2294d7cc9b6c03",
      "tree": "9b8ea443e9b782044a1dd93d840c3cc762a711f4",
      "parents": [
        "9a2e50be1cb1e5cbbae5e33c0f62f5f03ebabe77",
        "17dc17828f0aedb037cf974daeb44645f390cb49"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 15 02:54:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 15 02:54:20 2019 +0000"
      },
      "message": "Merge \"Audio policy: uid device affinity deterministic rule\""
    },
    {
      "commit": "beab72f726d2e18cf2cbd4d74819cf146a2f3fdc",
      "tree": "9226eb49e7c37e93b81747d00dc942ab87a591ca",
      "parents": [
        "8292a716361d0f02de2b79242aec4630664bc770",
        "df2e359d5c19c142fe400980cd15b0b60bea507b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 15 00:19:32 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 15 00:19:32 2019 +0000"
      },
      "message": "Merge \"AudioPolicy: Add unit tests for the MSD use cases\""
    },
    {
      "commit": "df2e359d5c19c142fe400980cd15b0b60bea507b",
      "tree": "5fbb45d0a3f448e60b2c1464eaf0bc5f9bf4c28a",
      "parents": [
        "ff7397bb08bf9953615d7b3416f4839bc0b1d2ff"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 19 14:27:42 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jan 11 21:01:07 2019 -0800"
      },
      "message": "AudioPolicy: Add unit tests for the MSD use cases\n\nTest the following scenarios:\n  - inputs / outputs update due to setForceUse change;\n  - MSD device selection and downstream patch creation\n    when an output for a supported format is opened;\n  - default device selection and downstream patch teardown\n    when an output for an unsupported format is opened;\n  - swiching outputs depending on the format.\n\nBug: 121048134\nTest: audiopolicy_tests\nChange-Id: I3a07c758ea7fd87250f425c27fbf0c38eb5bf8b5\n"
    },
    {
      "commit": "17dc17828f0aedb037cf974daeb44645f390cb49",
      "tree": "a269ec1665e47843b76ef33fde2ffcc1c57f5e02",
      "parents": [
        "33d6adcebbac541a803a08013db15a84e4b82bcf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jan 10 19:00:05 2019 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jan 10 19:00:05 2019 -0800"
      },
      "message": "Audio policy: uid device affinity deterministic rule\n\nWhen setting a uid device affinity, make the rules deterministic\n  by applying an \"exclude\" rule on all mixes that don\u0027t reach\n  the devices (existing), but also a \"match\" on the mixes that\n  do (new).\nBug: 111647296\nTest: requires device with routing policy started by CarService\n\nChange-Id: I3bb844156ade75e4b9576c1e18200ca90ce26cf9\n"
    },
    {
      "commit": "ce727fe64f379a0fced2d3b0713e5323806c6ffa",
      "tree": "e9e109f5d6aa58158dec15abbfd39b20066fa97e",
      "parents": [
        "435ba2e250da24bed173d4ca7415f5adb5f7846b"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Wed Jan 09 12:59:02 2019 +0000"
      },
      "committer": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Wed Jan 09 15:33:00 2019 +0000"
      },
      "message": "Remove unused ICU4C dependency in audio policy\n\nBug: 117094880\nTest: m droid\nChange-Id: I8ba3db496f11630eebabb7184c532d59237279b0\n"
    },
    {
      "commit": "bda70da1f0fb32d37abd704ff8618e55661be0a9",
      "tree": "a850374439d404da29938e2b038457926197d826",
      "parents": [
        "abf2929e8d084d2ca99d4d8712abbf31c2cb5178"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Dec 19 07:30:15 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 02 12:27:35 2019 -0800"
      },
      "message": "Dynamic audio policies: multi-zone through uid/device affinity\n\nSetting audio device affinity for a given uid augments all\n audio mix criteria that do not route to the given devices\n to exclude the uid.\nAudioPolicyManager: after changing the device affinity,\n check the outputs addressing the devices to re-evaluate\n audio routing\n\nBug: 111647296\nTest: requires device with routing policy started by CarService\nChange-Id: I72de54ae067151fe6ac2ec43b78fe544a9fd9888\n"
    },
    {
      "commit": "a9f86651eaaf2f702b3759ec38dbb64ca8858356",
      "tree": "913a55b14107e7f94335bec0ad6705f9557255a0",
      "parents": [
        "c241b0dfc49014087123dae92f7341db8d30d443"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 28 17:23:11 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 19 18:05:00 2018 -0800"
      },
      "message": "audo policy: more info in onRecordingConfigurationUpdate\n\nReport more information in onRecordingConfigurationUpdate() callback:\n- For client:\n  - Port ID\n  - Enabled effects\n  - Silenced by policy\n- For stream:\n  - Active effects\n  - Active audio source\n\nBug: 111438757\nTest: make\nChange-Id: I34c3d0ee6251576de7d793bfaa2bc2c34efa2319\n"
    },
    {
      "commit": "c241b0dfc49014087123dae92f7341db8d30d443",
      "tree": "9662b3ddd3860f1043da86eea159698331dfb81f",
      "parents": [
        "424993f0655c18f91562efc9d127f0ac970da6fa"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 28 09:08:49 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 19 12:45:47 2018 -0800"
      },
      "message": "audo policy: add effects to record clients\n\nAdd list of active effects on input streams and record\nclients for further reporting in AudioRecordingConfiguration.\n\nBug: 111438757\nTest: make and dumpsys\nChange-Id: I1ae00d2431c80b053f67e2b780f368d5a4822b01\n"
    },
    {
      "commit": "aca677cf5fbd2a2d5aaccae3af4da6c1d700eb93",
      "tree": "c331bde769a019c47dccc80c09a0c3f8190a8661",
      "parents": [
        "2b167173e145d8846c9a248039f0f4dc423ade73"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu May 03 10:47:50 2018 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 13 17:24:46 2018 -0800"
      },
      "message": "audiopolicy: common: add several helper function on DeviceDesc\n\n-Add another DeviceVector constructor to simplify usage\n-report tagname as port name\n-migrate API from apm\n-search/filter helpers\n\nTest: Audio smoke tests.\nTest: CTS tests for AudioRecord, AudioTrack and AudioEffect\n\nChange-Id: Ie37a2d9db2e8a15a37743e7129159fa77a4c6b51\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "2b167173e145d8846c9a248039f0f4dc423ade73",
      "tree": "395f2c76fd05edb48c42ab76f5c2eb6994a04675",
      "parents": [
        "83d789d6234f5cd5eb90f02a47ab04d4f6ea8299"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Jun 04 16:05:14 2018 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 13 17:24:46 2018 -0800"
      },
      "message": "audiopolicy: update type convertion library\n\nTest: Audio smoke tests.\nTest: CTS tests for AudioRecord, AudioTrack and AudioEffect\n\nChange-Id: I3ed8c7d7ee8a97f0bd41a5ae9f28d673994d7f07\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "99896dab5f368916c86acb97e82bf72c86a14922",
      "tree": "67cc39b5e30b396ce6f62cbac583e373c9919515",
      "parents": [
        "d00c4607a5f7d25dfe925a20a1fc5fd7cfcee67a"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Apr 09 11:05:33 2018 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 13 17:21:41 2018 -0800"
      },
      "message": "audiopolicy: Fix sofware bridge creation for AudioHAL supporting routing APIs\n\nAudioPolicy roughly checks if HAL supports routing APIs 3.0 to enable or\nnot software bridge in case of device to device patch requests.\n\nHowever, Audio HAL declares in XML file routes supported. AudioPolicy\nshall refine its decision upon information available in the policy configuration\nfile.\n\nTest: Audio smoke tests.\nTest: CTS tests for AudioRecord, AudioTrack and AudioEffect\n\nChange-Id: Idc2e1ccd7d9fb6385f9a05ee002bec045e608232\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "d0f1bffe98354848dc23f4492d8f86987459f179",
      "tree": "516eb8f048077f2672ecfa749c7c617bde4df602",
      "parents": [
        "6c5157eaa8682ee60db576c49fcf56a3d61174f0",
        "a46bedb84a6c972f128e17e7bed114ad0863b0b3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 11 03:34:44 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 11 03:34:44 2018 +0000"
      },
      "message": "Merge changes I2fc54853,If58ff214\n\n* changes:\n  audio policy: fix capture policy for assistant\n  Revert \"Revert \"audio policy: concurrent capture\"\"\n"
    },
    {
      "commit": "4eb58f1f36606ad7af392a920e1d029a5fb1e797",
      "tree": "c1599fda024344eaf6da5e1d33fc410384127550",
      "parents": [
        "5a2048c3095478482a5ac16639514d3a0a214713"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 07 16:41:02 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 10 14:10:05 2018 -0800"
      },
      "message": "Revert \"Revert \"audio policy: concurrent capture\"\"\n\nThis reverts commit df628924e691e01da190c1ac5db173304442e54a.\n\nBug: 120588242\nBug: 111438757\nTest: make\nChange-Id: If58ff2143fdb744678bb84394598104ced01f5b9\n"
    },
    {
      "commit": "100f0121068605a10b0a254b7ee5784409d09229",
      "tree": "07435569751b97014e448e3162ca28b02926187f",
      "parents": [
        "0422892023dcd4616f00028fd223fef056bc0e16"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Nov 29 11:22:16 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Dec 10 09:25:14 2018 -0800"
      },
      "message": "APM: Improve surround formats management, include MSD\n\nThis is what this change does:\n\n1) Renames APM::mSurroundFormats into mManualSurroundFormats\n   and avoids modifying it in modifySurroundFormats, because\n   multiple surround-capable devices are possible.\n   modifySurroundFormats logic is also a bit simplified.\n\n2) Changes the way APM::getSurroundFormats reports enabled\n   formats, after the change  1).\n\n3) Includes MSD module into consideration as a surround-capable\n   device.\n\n4) Changes APM::dump to only show mManualSurroundFormats\n   when surround sound is enforced into manual management.\n\n5) Adds Dolby AC-4 to the list of surround formats.\n\n6) Declares surround formats on the devicePort of MSD.\n\nBug: 117602867\nTest: Surround Sound settings with MSD module\nChange-Id: I5cdd3c012a3febcf7170cc5fa7378224b3ef9e4f\n"
    },
    {
      "commit": "0422892023dcd4616f00028fd223fef056bc0e16",
      "tree": "11dfbf1d69b4357e8c940e1ee12405d59b9797b3",
      "parents": [
        "07567d630dbda88b9a25a439a5936e507d1caeca",
        "df628924e691e01da190c1ac5db173304442e54a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 07 16:39:03 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 07 16:39:03 2018 +0000"
      },
      "message": "Merge \"Revert \"audio policy: concurrent capture\"\""
    },
    {
      "commit": "df628924e691e01da190c1ac5db173304442e54a",
      "tree": "e2dda15a881c963a14520117128b5b9857834759",
      "parents": [
        "4c1ef4b64d113be6ee1106375bd10cdc643e80d8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 06 21:45:51 2018 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 06 21:45:51 2018 +0000"
      },
      "message": "Revert \"audio policy: concurrent capture\"\n\nThis reverts commit 4c1ef4b64d113be6ee1106375bd10cdc643e80d8.\n\nReason for revert: b/120588242\n\nBug: 120588242\nChange-Id: Iac41f371cb739c54d5ce519232688bebe2285c72\nTest: Launch QSB and capture from mic icon\n"
    },
    {
      "commit": "d5e180520a5b7aeb970bc796abc3ef8070d5174c",
      "tree": "485ebba16f82af8928f02e627773fd02963dcf95",
      "parents": [
        "71738ebf94589faa5aef3c1ba8d53cd17b7fec0f"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Nov 30 14:55:45 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 06 18:25:48 2018 +0000"
      },
      "message": "Audio Policy: Parametrize encoded formats supported by device\n\nFor various reasons, we need to store the list of audio\nformats supported by devices. Here we add support for this\ninto DeviceDescriptor. We don\u0027t read them yet from\nthe APM config file, but we will eventually.\n\nAlso in this change, use the formats list for parametrizing\nthe behavior of surround sound configuration. The special\nlogic for AC3 and IEC69137 formats used to be hardcoded\ninto \u0027filterSurroundFormats\u0027 function, now it is\nparametrized by the device descriptor information.\n\nFix behavior of \u0027filterSurroundFormats\u0027 in \u0027manual\u0027\nmode, where it was removing PCM formats from the list.\n\nRename \u0027filterSurround...\u0027 functions to \u0027modifySurround...\u0027\nsince they can both add and remove items from the provided\nlist.\n\nBug: 67479735\nBug: 117602867\nTest: compare A/B APM dumps while modifying Surround Sound\n      settings; tested with a HDMI sink that doesn\u0027t support\n      any surround, and with an AV receiver\nChange-Id: Ie46480d5e9519366b1f3553645c9ca20f64bdc80\n"
    },
    {
      "commit": "4c1ef4b64d113be6ee1106375bd10cdc643e80d8",
      "tree": "203b9b1ca84efc9342514175d616c0a7c22150ad",
      "parents": [
        "973db02ac18fa1de9ce6221f47b01af1bdc4bec2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 13 16:46:26 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 04 12:06:37 2018 -0800"
      },
      "message": "audio policy: concurrent capture\n\nImplement concurrent capture in audio policy manager:\n- Attach AudioRecord client to already opened input when possible\ninstead of systematically opening a new input for each client.\n- Always allow inputs to start even in case of concurrency.\n- Clients are selectively silenced based on their app state by audio\npolicy service.\n- In case of concurrency on a given input stream, device and source is\nchosen based app states and source priority.\n\nBug: 111438757\nTest: Manual capture tests with solotester and Camera, Assistant and Duo\nTest: CTS tests for AudioRecord\n\nChange-Id: I302710ff545f67361d9aca89e81de40771ce7fb0\n"
    },
    {
      "commit": "dfa1e8ab20ce54f3cde479e1305861867abcdbea",
      "tree": "fa10b8bfcbc2e3378249a7a67afc2fdd455c5c93",
      "parents": [
        "7a9f05a68512926f81339d3e42def2ecd9adffa0"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Oct 26 16:42:07 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Nov 30 09:44:42 2018 -0800"
      },
      "message": "Policy config parser: migrate to BP and drop legacy format\n\nMigrate to android.bp as test need to use the library.\nAs bp do not support conditional statement, and this format has been\ndeprecated for 3 years, drop the pre-treble .conf parser.\n\nAUDIOSERVER_MULTILIB is no longer use as it does not make sense for a\nstatic lib.\n\nBug: 114303641\nBug: 111681420\nTest: compile, boots\nChange-Id: I9f429b306ecfbb80116445ba6297a4b3d6dc57f6\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "4515129c59206406322d2efb4581cf0dcd66096d",
      "tree": "ecd075adb351fc3cc59b31fc71e189b377ccd2a7",
      "parents": [
        "eb8b659add93161d169edbe1f94243939df953a6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 20 16:37:29 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 20 16:43:37 2018 -0800"
      },
      "message": "audiopolicy: use an exact match for MMAP input\n\nAudioFlinger was returning a stereo input if mono was requested\nbut not supported.\nBut AAudio did not know it was stereo so the data was corrupted.\nSo if MMAP input is requested, do an exact match in\nisCompatibleProfile().\n\nBug: 119518992\nTest: see bug for repo steps\nTest: adb shell aaudio_loopback -tm -pl -Pl -x -X -C1\nChange-Id: I925efecca9c99b8a2b7bde3826da4d9e9e663ee1\n"
    },
    {
      "commit": "00987aac7d29168b94cb8263af7d9783f62ef6b5",
      "tree": "1835dca88b28b82d24cf760450187674a578bcbb",
      "parents": [
        "a1e48aa38987cd0460bbfc57e2b0fc513df17283"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Oct 10 15:59:33 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Oct 10 17:49:41 2018 -0700"
      },
      "message": "AudioPolicyManager: Update StreamDescriptor dump to fix warning/build break\n\nFix for partner-q-fs-release-generic-fs mini_arm64-userdebug\nwhich doesn\u0027t define USE_XML_AUDIO_POLICY_CONF.\nThis define must be removed otherwise StreamDescriptor.cpp\nisn\u0027t compiled.\n\nTest: compile with removed USE_XML_AUDIO_POLICY_CONF\nBug: 117574496\nChange-Id: Ic196739ed26b81092d14fbc2779b89a7ec9ecba8\n"
    }
  ],
  "next": "24bf51ae92285202bdbe3fa00c7c83e93c5a03e2"
}
