)]}'
{
  "log": [
    {
      "commit": "99fcae46d54639e7841d87b1dcacbc229bbf8dc4",
      "tree": "f1f6c0ffb8e22e7df27fbe5b5cd42e3bef3e7658",
      "parents": [
        "0ba1ae398e65718fba66bb1bd258d4d0a9ba6c28"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 17 16:59:18 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 17 18:17:44 2018 -0700"
      },
      "message": "audio policy: add device to audio record media metrics\n\nAdd information about requested and active input device type in\naudiopolicy media metrics on recording clients.\n\nBug: 78595399\nTest: recording over several devices, dumpsys media.metrics\nChange-Id: Ifeeb2c51ee3ed2dbb86406c0e8d74e7aa70dd8fb\n"
    },
    {
      "commit": "f824853eabf8eab483de7387c001493dda63966b",
      "tree": "2d56a1a846f7adf1e25a7cf4465d34d648cd861a",
      "parents": [
        "625e3020f8c070c8d8449af1bdaeaa002c11cc03",
        "817729095966c338615a8a791d2dbf774fc034ef"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue May 15 20:54:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 15 20:54:28 2018 +0000"
      },
      "message": "Merge \"Add support for manually set surround formats.\" into pi-dev"
    },
    {
      "commit": "817729095966c338615a8a791d2dbf774fc034ef",
      "tree": "b9c23fc427ec841575b37c59280000467c5a1648",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Apr 02 17:52:27 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu May 10 18:20:24 2018 -0700"
      },
      "message": "Add support for manually set surround formats.\n\nTo make surround sound setting more clear to users, we are changing\nsurround setting from ALWAYS to MANUAL. With MANUAL, users could enable\nsurround formats according to their need.\n\nBug: 67479735\nTest: Try creating AudioTrack with enable/disable surround formats.\nChange-Id: Ia6c0e1210ff6215f4b80a278a0aa90ca9543f262\n"
    },
    {
      "commit": "f4a28339fff6af3696d540d2e6eccb2feb9ce658",
      "tree": "ee6b7584e239726f29269d31ac953dbfc1801f89",
      "parents": [
        "ff5ab0678880ade264efda5410822b4aee58d12d",
        "744be48d57da2c39f1479bc5a5ad0b7589814704"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 10 19:32:21 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 10 19:32:21 2018 +0000"
      },
      "message": "Merge \"Check voice call recording permission according to source.\" into pi-dev"
    },
    {
      "commit": "e17378d11b275daecd20ff840bcb7d275b6801bf",
      "tree": "3f49ff9153c5bd7be9d17e38532efcfc0d98cc1a",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 14:43:01 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 14:43:01 2018 -0700"
      },
      "message": "audio policy: re enable setForceUse for system apps.\n\nSome system apps (not having system AIDs) still need this\nhidden API due to lack of better option for media use case routing.\n\nAdd protection by privileged permission MODIFY_AUDIO_ROUTING instead.\n\nBug: 79475856\nTest: manual regression for music playback over speaker and bluetooth\nChange-Id: Icaa585a9fa4c043c291f24c9bab4a93f02406955\n"
    },
    {
      "commit": "744be48d57da2c39f1479bc5a5ad0b7589814704",
      "tree": "7c3130520c6336b859837f6eefe02fe85d5fafd5",
      "parents": [
        "84e84a5dd3b6d9ee4cf032e8d6206c70969b7107"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Tue May 08 13:26:21 2018 +0300"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 08 16:00:00 2018 +0000"
      },
      "message": "Check voice call recording permission according to source.\n\nAdded a check for CAPTURE_AUDIO_OUTPUT according to the audio source, in\naddition to the already existing check according to the device type.\n\nTest: Tested manually.\nBug: 77228430.\n\nChange-Id: I84bbe41c9abcdbbd25354b2c160ae47c9c959de4\n"
    },
    {
      "commit": "84e84a5dd3b6d9ee4cf032e8d6206c70969b7107",
      "tree": "49fd8e4e911d62ac8be44ae91fdaf35902a234d9",
      "parents": [
        "527da4c9d30c977c0105a288b20a77f0f9e8d0d3"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu May 03 18:45:07 2018 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 07 16:32:02 2018 +0000"
      },
      "message": "collect more media metrics around audio\n\nnew fields in the media metrics \u0027audiorecord\u0027 record for more detail\nlength of time recorded, error conditions\nadd new media metrics type \u0027audiopolicy\u0027 that describes attempts to get\nmicrophone access -- success, failure on contention, what type of access\nwas requested, and (important for the contention) which programs are\ndoing the requesting and holding of the microphones.\n\nwhitelist the \u0027audiopolicy\u0027 metrics type with the  media.metrics service.\n\nBug: 78595399\nTest: concurrent/serial recordings, dumpsys media.metrics\nChange-Id: Ia17860940d4c329b0215b4cf97c6dacacb6a8e32\n"
    },
    {
      "commit": "f1047e87767be1acd2c32f4d36028d1d0014f4c0",
      "tree": "4affc2ed3ee3f81e94f90dd4d3a012afa0ee364e",
      "parents": [
        "554e08c6b00b2a57348f4545d450915a9e8c870a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 19:18:20 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 17 09:45:32 2018 -0700"
      },
      "message": "audioflinger: filter out reserved keys from setParameters()\n\nOnly allow setParameters() for reserved keys when received from\naudioserver UID. For instance, keys used to control routing or audio\nstream configuration are reserved for use by audio policy manager.\n\nAlso use multiuser_get_app_id() instead of duplicated code to\nextract application ID from UID.\n\nBug: 77869640\nTest: manual audio smoke tests.\nChange-Id: I88852e8fddf7f705e4a084fc02d9ced1f4b0de92\n"
    },
    {
      "commit": "10b7123bd6ce29fe756422aeedc5cfe469c4309f",
      "tree": "340803c949b9500ce5e2873fbf874fcec782fd3f",
      "parents": [
        "258fb48d1498c8d34d6877700db993938cc89f71"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 13 18:14:44 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 13 18:18:49 2018 -0700"
      },
      "message": "audiopolicy: clear caller identity before calling audio policy manager\n\nAudio policy manager methods must always be executed with the\nlevel of priviledge of audioserver process.\nAfter checking calling permissions, audio policy service will\nclear binder caller identity before calling into audio policy manager.\n\nAlso add restrictions for start source and stop source binder\ntransactions.\n\nBug: 77869640\nTest: manual audio smoke tests\nChange-Id: I993d4fddcea9bfa3f44093c38406b85d69ca8890\n"
    },
    {
      "commit": "eba668adbdee1ecfcf00fa9f9fc066c022cfddba",
      "tree": "b6935bd6cfd0d641abd14d20240f2b3fdad7df80",
      "parents": [
        "79d1ed9b6473f4d094aaa6b53f41a6ba92916e42"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 05 08:13:15 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 05 08:13:15 2018 -0700"
      },
      "message": "AudioPolicyService: Fix typo in UidPolicy::isUidActive\n\nCopy-paste bug.\n\nBug: 77300296\nBug: 77624334\nTest: make\nChange-Id: Id5352dafe70003d7027a2ec71144570ac927ea73\n"
    },
    {
      "commit": "eae73eb726c141056caf5a7ff95d45c3bcdd999f",
      "tree": "f0e034a867acf3af218b60a9bdc947ddc31e47cc",
      "parents": [
        "728f909a1fecb99e565a0239580c5e9fff264209"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Apr 03 16:57:36 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Apr 04 15:55:12 2018 -0700"
      },
      "message": "AudioPolicyService: Properly handle service restarts in UidPolicy\n\nAdd logic in UidPolicy for handling audioserver restarts as well\nas ActivityManager (system server) restarts.\n\nAlso, refactor the UidPolicy logic to simplify reasoning about\nactive state lookup. As a result, 4 layers are considered:\n\n1. Service UIDs--always active.\n2. Overrides--controlled via \u0027adb shell cmd\u0027.\n3. Cached UIDs from ActivityManager--also updated via IUidObserver.\n4. ActivityManager ground truth.\n\nBug: 73405145\nBug: 77300296\nTest: android.media.cts.AudioRecordTest#testRecordNoDataForIdleUids\n      manual tests with SoloTester\nChange-Id: I426dd5d4d9c9c2570c0e03dde390e18f672c1b1d\n"
    },
    {
      "commit": "2af67733ac8616ccc763afaa6f6cfebeffc090a3",
      "tree": "50d7ecf1ef9fe42d3c09094ed143e574f50eac9d",
      "parents": [
        "2ad6e528d603fe45d170ecb56ed522fe467244fd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 30 18:17:20 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 30 18:25:22 2018 -0700"
      },
      "message": "audio policy: disable silencing of background UID record\n\nThere is a problem when audioserver process restarts where we fail to\nreload the list of active UIDs causing silent capture for all apps\nuntil they are restarted.\n\nBug: 77300296\nBug: 63938985\nTest: crash audioserver and check that capture still works.\nChange-Id: Ie1a93c496516c1b7208780949054832a8a073044\n"
    },
    {
      "commit": "96c7eed596077ff84e75b7b1c6f20c3a29219bd1",
      "tree": "cf06852ef755e4d7dccfa81a7d3d4909d6159c60",
      "parents": [
        "bebc764c6b3e90024a56c9af4517a1a68713f3e7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 17:57:01 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 27 14:49:16 2018 +0000"
      },
      "message": "audioserver: fix UID checks for multi user\n\nFix UID checks in audioserver to take into account multi user UIDs\nwhere the top part above AID_USER_OFFSET contains the user number.\n\nBug: 76439650\nTest: manual audio smoke tests.\nChange-Id: I6dbd616021bcb2639c7b7369000ce911c7e7e030\n"
    },
    {
      "commit": "6e64137e95362a8f6eef43ea676418567b327c96",
      "tree": "8a2ed91d013a14058c606d6f41d044ecca7e184e",
      "parents": [
        "dc9df6a12d848b32fbd041421c663d2014f32403"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Mar 02 09:21:30 2018 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Fri Mar 09 21:49:03 2018 +0000"
      },
      "message": "Revert \"Revert \"Use start/finish app op API for mic use\"\"\n\nThis reverts commit 599ec462d94136949e0c90419ea99b0d9ba83eac.\n\nIn addition it fixes an incorrect comparison against opPackageName\ninstead of resolvedOpPackageName creating incorrect short circuit.\n\nTest: atest android.media.cts.AudioRecordAppOpTest\n      \"Okay Google\" works fine\n\nbug: 64085448\n\nChange-Id: I77a8486dfd6e4f020efdf05d28a856a32579ef31\n(cherry picked from commit 5b81f550759c975fe6716e4e7870b11e523834d0)\n"
    },
    {
      "commit": "599ec462d94136949e0c90419ea99b0d9ba83eac",
      "tree": "0774e6abd59eec5530f78d6788a8da27217bac63",
      "parents": [
        "9b887324b8c3f86f012915a6f637081b158a221b"
      ],
      "author": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Mar 01 22:19:55 2018 +0000"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Mar 01 16:10:34 2018 -0800"
      },
      "message": "Revert \"Use start/finish app op API for mic use\"\n\nThis reverts commit 55bb217cd1fea3e791d0d7cf73e09e27fed8c36e.\n\nReason for revert: Causes a regression\n\nbug:74061812\n\nChange-Id: I119937cfce79ba824185634f2b81dad1606a875d\n"
    },
    {
      "commit": "55bb217cd1fea3e791d0d7cf73e09e27fed8c36e",
      "tree": "08b19af105e7aa492f732e815928e4420aa7f1c6",
      "parents": [
        "1d519106f7a3d31cc89e3c4a1146106b0478a410"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Feb 27 20:25:51 2018 -0800"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Feb 28 04:48:29 2018 +0000"
      },
      "message": "Use start/finish app op API for mic use\n\nSince recording is a long running operation we need to use\nthe start/finish app op APIs since now system UI would watch\nfor active mic/camera/overlay ops and badge app notifications\nwith icons denoting that these capabilities are being used.\n\nTest: atest android.media.cts.AudioRecordAppOpTest\n\nbug: 64085448\n\nChange-Id: I47d9b507ef5d757d34d65484c112cea6cdc246e1\n"
    },
    {
      "commit": "31225688b7b09ad15f5b1fb8ab2868cecc551f15",
      "tree": "3a9cb9b1644044132ddde4c48a30d47c4e6da0f4",
      "parents": [
        "e54461ae132a79d0ffa9d3ec4631df13eb5c7809"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Feb 12 11:08:38 2018 -0800"
      },
      "committer": {
        "name": "George Burgess",
        "email": "gbiv@google.com",
        "time": "Mon Feb 12 19:15:08 2018 +0000"
      },
      "message": "Fix a memory leak\n\nStatic analyzer complaint:\nframeworks/av/services/audiopolicy/service/AudioPolicyEffects.cpp:551:5:\nwarning: Potential leak of memory pointed to by \u0027fx_param\u0027\n[clang-analyzer-unix.Malloc]\n\nThis is because we unconditionally assign the result of realloc to\nparam: if realloc fails, it will not free the given pointer value, but\nwill return NULL. Hence, code like:\n\nbool safeGrowParamSize(char **param, size_t size,\n                       size_t *curSize, size_t *totSize) {\n  if (growParamSize(param, size, curSize, totSize) \u003d\u003d 0) {\n    free(*param);\n    return false;\n  }\n  return true;\n}\n\n...Will fail to free param on failure.\n\nBug: None\nTest: None\nChange-Id: I7a430e7965ab29e183c82ebcb298a2ffb42339b1\n"
    },
    {
      "commit": "7dca8a83b7c6922a69e266aa9f2b5693a4d773a9",
      "tree": "cd09df52888de8f7af339c9decc3f21367272c1b",
      "parents": [
        "fee1976a2849c37a53d8a01ac10327d522a1ba93"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 18:44:26 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 09 16:09:06 2018 -0800"
      },
      "message": "Revert \"Revert \"audio flinger: move record permission checks to audio policy service\"\"\n\nThis reverts commit 67651f97c9c3880a4440c86618337f8a64c3e1a9.\n\nBug: 72628781\nTest: manual camcorder tests\nChange-Id: Id3687d2a4ab90f01d66ff30b2d77e6ec4ae72b3f\n"
    },
    {
      "commit": "fee1976a2849c37a53d8a01ac10327d522a1ba93",
      "tree": "5b8a259a93f6f84a964badf5417c113a308e67c9",
      "parents": [
        "98c15702ca0c814fee9110efa14d70fc9937514e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 18:44:13 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 09 16:08:31 2018 -0800"
      },
      "message": "Revert \"Revert \"audio policy: refactor audio record APIs\"\"\n\nThis reverts commit e9ebcdbb0580bd4a75f4530b957b1859e535c028.\n\nBug: 72628781\nTest: manual camcorder tests\nChange-Id: I9fb550a9f62d2d15cafbd7534e5e7eaa155a7213\n"
    },
    {
      "commit": "34c238eaf4af84787648c714289de9dcfa1668d3",
      "tree": "a48681eb6b1e2dcc17d829e2e049112277b22ad0",
      "parents": [
        "d54bacf09c2384987ad9186de67c4225db1eed1d",
        "4980df29f61d5fad95e17ca1d1969f6ca4c1f296"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 31 03:20:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 31 03:20:08 2018 +0000"
      },
      "message": "Merge \"audio: filter reserved binder calls\""
    },
    {
      "commit": "4980df29f61d5fad95e17ca1d1969f6ca4c1f296",
      "tree": "c7e38eb5c4c223ac0a9b08e7636adf71de7a9c62",
      "parents": [
        "5f07c65af5356a4a95410804ce19fc017d6478f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 26 18:04:09 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 17:28:43 2018 -0800"
      },
      "message": "audio: filter reserved binder calls\n\nBlock incoming binder calls to audio flinger and audio policy service\nfor sensitive functions if they are not coming from a system UID.\n\nBug: 72278478\nTest: audio smoke tests. CTS tests for AudioTrack and AudioRecord\nChange-Id: I78e02efffe135d5450ced125e51e2084719ca03d\n"
    },
    {
      "commit": "e9ebcdbb0580bd4a75f4530b957b1859e535c028",
      "tree": "a603313572aeef80fb8a26d2ff38f7a6541e835c",
      "parents": [
        "67651f97c9c3880a4440c86618337f8a64c3e1a9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 14:27:18 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 14:37:24 2018 -0800"
      },
      "message": "Revert \"audio policy: refactor audio record APIs\"\n\nThis reverts commit 0f4b3c5449f85c1cd78e1b9ac4850de962b8edbe.\n\nBug: 72628781\nTest: Capture several videos from camera app\nChange-Id: I6bcc87c618ac9bfe5c911915cbb37de616bc727a\n"
    },
    {
      "commit": "67651f97c9c3880a4440c86618337f8a64c3e1a9",
      "tree": "843940703c4fca05bf8cf6df7091fbcc42eb0154",
      "parents": [
        "5f07c65af5356a4a95410804ce19fc017d6478f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 14:27:03 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 14:35:06 2018 -0800"
      },
      "message": "Revert \"audio flinger: move record permission checks to audio policy service\"\n\nThis reverts commit c7b71a1b3a16231d7741f9ef52c5f84ec8de0c31.\n\nBug: 72628781\nTest: Capture several videos from camera app\nChange-Id: If633e677d87320335e368a8340599c9e4a398201\n"
    },
    {
      "commit": "c7b71a1b3a16231d7741f9ef52c5f84ec8de0c31",
      "tree": "803306733146625da98f061ceec491569fd184ba",
      "parents": [
        "0f4b3c5449f85c1cd78e1b9ac4850de962b8edbe"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 08 17:21:56 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 24 17:07:22 2018 -0800"
      },
      "message": "audio flinger: move record permission checks to audio policy service\n\nMove audio permission checks to getInputForAttr and startInput.\n\nTest: AudioRecord CTS tests. Manual test of capture use cases.\nChange-Id: Ifaefc1198248b46fc59aecd6c9ec3aa892656e05\n"
    },
    {
      "commit": "0f4b3c5449f85c1cd78e1b9ac4850de962b8edbe",
      "tree": "63641f2dea738a745946c63f80803557a74ec12b",
      "parents": [
        "c6116926de37cabb1d35ddd57eaff0e19fcec8bc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 05 11:46:13 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 24 16:56:52 2018 -0800"
      },
      "message": "audio policy: refactor audio record APIs\n\nRefactor audio policy service APIs controlling audio record (startInput, stopInput, releaseInput)\nTo allow finer grain control per AudioRecord client and prepare for new concurrent capture\npolicy\n\nTest: AudioRecord CTS test. manual test of capture use cases:\ncamcorder, OK Google VoIP\n\nChange-Id: I4992fd5a115853c47be5dac5465989eb53f1287c\n"
    },
    {
      "commit": "52fe83f701640479f606ac89ed6b04f786313bc3",
      "tree": "b13597625361786062945e5fcc020462318d921e",
      "parents": [
        "7a4b8ab1bae94697d6d4daadf638d1bd9ca8b81a",
        "766fb020a50b64bf9a808bd80df60c54c2ca8cc3"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Mon Jan 22 23:20:50 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 22 23:20:50 2018 +0000"
      },
      "message": "Merge \"Support routing audio playback to telephony uplink\""
    },
    {
      "commit": "766fb020a50b64bf9a808bd80df60c54c2ca8cc3",
      "tree": "acb92cb201889d2b56f41bc2a437da1aaae72c4e",
      "parents": [
        "652f9299bb8a7a50148d57a75de6ede831bfed85"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Sun Jan 07 12:18:03 2018 +0200"
      },
      "committer": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Mon Jan 22 23:05:23 2018 +0200"
      },
      "message": "Support routing audio playback to telephony uplink\n\nThis change enables phone apps to play audio to the uplink stream\nduring a call.\nThis change maks the AUDIO_OUTPUT_FLAG_INCALL_MUSIC_UPLINK flag to be added to the flags that are sent to the HAL when an ongoing call is active, the chosen output device is the TX telephony device, the stream type is music, and the calling app has the MODIFY_PHONE_STATE permission.\nFor this change to take place, the following changes were made to the signature of getOutputForAttr in IAudioPolicyService:\n  1. Add pid (process id) parameter to getOutputForAttr.\n  2. Make the flags parameter a pointer so changed value can be\n  examined by calling function.\n\nBug: 69973354.\nTest: tested manually.\nChange-Id: I74cef3f8b66de6e0e8f87b6235130c2cdf423da7\n"
    },
    {
      "commit": "5ae1f559717296fe82c2a252039a8017e7eaf2c7",
      "tree": "c2d53e4402eab49b37efd3dc0c47d10c68e2e668",
      "parents": [
        "65a438c6429c7f46cb0ab056c7f672ea0aa9e7f5"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Sat Jan 20 22:53:37 2018 -0800"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Sat Jan 20 22:53:52 2018 -0800"
      },
      "message": "Fix a pointer reference\n\nTest: manual\n\nChange-Id: I9f9dde1652f15a521e9b01e17dc0b9b405278833\n"
    },
    {
      "commit": "f4ddfefc8ba59a8486d91826154cc9447821409e",
      "tree": "b24bb43846003ef5523f0d470e49389086138679",
      "parents": [
        "d6be64a3f22be3eceb0d6209c88dcad573c08191"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 16 07:37:58 2018 -0800"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jan 18 00:17:52 2018 -0800"
      },
      "message": "Don\u0027t record audio if UID is idle - media framework\n\nTo protect user\u0027s privacy if a UID is in an idle state we allow\nrecording but report silence (all zeros in the byte array) and once\nthe process goes in an active state we report the real mic data.\nThis avoids the race between the app being notified aboout its\nlifecycle and the audio system being notified about the state\nof a UID.\n\nTest: Added - AudioRecordTest#testRecordNoDataForIdleUids\n      Passing - cts-tradefed run cts-dev -m CtsMediaTestCases\n                    -t android.media.cts.AudioRecordTest\n\nbug:63938985\n\nChange-Id: I1442a9dda1553e9ea7a4a654c50555ac1ec06aa0\n"
    },
    {
      "commit": "1b2a794a27caab3a1320d22b872b04ef73e96555",
      "tree": "79f53eef61b788a5f49aaf26b5c897d7a6dac49f",
      "parents": [
        "2773dd7219e6cdc56471501c90808a1bafc31d39"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 10:18:09 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 12:06:18 2017 -0800"
      },
      "message": "audiopolicy: Remove ; after namespace bracket\n\nSemicolons are not needed after the closing bracket of\na namespace, remove it.\n\nTest: compiles\nChange-Id: Ie82930365f738fd9c95a9163839a68b772e49d95\n"
    },
    {
      "commit": "fe23112742eeb6199c3aa1f3dfcf800fc2aa0e26",
      "tree": "5297ab7f4a098bd8c0c0e89e27a54e9fd450ce5a",
      "parents": [
        "a221a7c81776add538e6cd82cddfa427364beb79"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 17 17:48:06 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 21 14:14:49 2017 -0800"
      },
      "message": "audio policy: refactor output and input opening\n\nRefactor the way input and output streams are open so that common\nlogic is centralized in AudioOutputDescriptor and AudioInputDescriptor\nclasses.\n\nThis is in preparation of adding reference counting for ouputs and inputs\nopened for a given profile.\n\nTest: Manual\nChange-Id: Id806e23077eb41f6398400ab40aeaa694c7d5603\n"
    },
    {
      "commit": "f4e63452b37c799c9387a6a88b46e6191f6a5f7e",
      "tree": "5c46fb22c92c574b84335fedca13f98e13434db8",
      "parents": [
        "e198f26cae6f0b5c67340935c291363fdfff87f1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 06 19:31:46 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 06 19:31:46 2017 +0000"
      },
      "message": "Revert \"Revert \"audio policy: refactor getOutput() method\"\"\n\nThis reverts commit e198f26cae6f0b5c67340935c291363fdfff87f1.\n\nChange-Id: I65eb2905adb45c3809a499d85c1a8ef68cec7ed5\n"
    },
    {
      "commit": "e198f26cae6f0b5c67340935c291363fdfff87f1",
      "tree": "a08455486befa3d1ed0ebd6d3eb8257f51dcfb7d",
      "parents": [
        "e1dd2075105317ef8ff2b924423c88856e8fe8ea"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 04 00:13:42 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 04 00:13:42 2017 +0000"
      },
      "message": "Revert \"audio policy: refactor getOutput() method\"\n\nThis reverts commit e1dd2075105317ef8ff2b924423c88856e8fe8ea.\n\nChange-Id: I4b7a2177af5bff5013ec4fe7fcdeb722f6b158c5\n"
    },
    {
      "commit": "e1dd2075105317ef8ff2b924423c88856e8fe8ea",
      "tree": "5c46fb22c92c574b84335fedca13f98e13434db8",
      "parents": [
        "9a60e1ad4762bd428ddc158e5a50641649698ec4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 03 09:26:21 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 03 09:26:21 2017 -0700"
      },
      "message": "audio policy: refactor getOutput() method\n\ngetOtuput() was long replaced by getOutputForAttr() for the purpose of\nquerying an appropriate HAL output stream for a given playback use case.\nIt is now only used internally by AudioSystem to find an existing output\ncorresponding to a given stream type in limited cases.\n\nThis CL simplifies getOutput() by removing unused arguments and just\nreturning an output from already opened outputs.\nThis is in preparation of limiting access to audio policy binder calls\nto what is strictly needed by apps.\n\nTest: test main playback, capture and call use cases.\nChange-Id: I137c5526aa7e82303b43948326c77ec798f432f5\n"
    },
    {
      "commit": "5ff158fd499f581bdc1c3e91bbc03ce15eeeb77c",
      "tree": "75a48894b0cdb09735bd00750aa5caf03136ad32",
      "parents": [
        "ad764cd0e198a0ede404c53e2da5fd38ecb1e049"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Mon Oct 30 09:06:24 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Mon Oct 30 09:06:24 2017 -0700"
      },
      "message": "Fix integer sanitizer in audiopolicyservice.\n\nA size_t was being converted to a ssize_t after an intended overflow\nhad already occurred. This makes the conversion explicit.\n\nunsigned integer overflow: 0 - 1 cannot be represented in type \u0027unsigned\nint\u0027\n\nTest: Compiled with the change and checked the sanitizer output.\nBug: 30969751\nChange-Id: Ic15cc4b5d8295e14e3588ffa240830f7570dcaf3\n"
    },
    {
      "commit": "0111e0fe975a4ff43e9133f4a4ab7805dc188325",
      "tree": "1de516e31ccace0773ae406bcd6ca4b82ee02d80",
      "parents": [
        "6cebbee7fcd45cce33b312e87e023173f6243225",
        "19f0196da3e386c2b73240870b3580468181903c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:39:48 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:39:48 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2 am: 74f84d987b am: 355a18f58d am: c8f3cf02eb am: 8cad724158 am: 122ec92c42 am: fa5a0cedea\nam: 19f0196da3\n\nChange-Id: Ia47b4f3d752e74ba9c4bf02ccb74c33c9c5f9dd4\n"
    },
    {
      "commit": "fa5a0cedea92c922e695a9846148965a519eba53",
      "tree": "98e36586f95b4c193d3e269c86f1303d433aed0f",
      "parents": [
        "337a3fbbfca38472641d88b6f659f37f6f6eb477",
        "122ec92c425ce898753d24edd4a43d634a630959"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:35:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:35:53 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2 am: 74f84d987b am: 355a18f58d am: c8f3cf02eb am: 8cad724158\nam: 122ec92c42\n\nChange-Id: Ifa8953ad8057a4d7dcddeae1793e00168ea90c58\n"
    },
    {
      "commit": "122ec92c425ce898753d24edd4a43d634a630959",
      "tree": "34f6484abb85cfc9b4eed000c1812f1f63be5fdb",
      "parents": [
        "099005643902d7a26bbefa5d316ea85cdd2d53bc",
        "8cad7241589b1473ee4dac3e4f2fdc559520da59"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:33:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:33:46 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2 am: 74f84d987b am: 355a18f58d am: c8f3cf02eb\nam: 8cad724158\n\nChange-Id: I1d0102e75a068bd6a2af21b9126b907703928db7\n"
    },
    {
      "commit": "355a18f58d63882c122db64702fdee66ce6fe857",
      "tree": "6973b6a87b1525c63ef10b465d6c88f527a31355",
      "parents": [
        "6b936f54ff3e54367a2176f455c4fb8700c91d99",
        "74f84d987be37b971f02eb0b4d824599626a9936"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:21:26 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:21:26 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2\nam: 74f84d987b\n\nChange-Id: Ie2c1acfdc523c6774dd2f90e0b42a9f274731d57\n"
    },
    {
      "commit": "74f84d987be37b971f02eb0b4d824599626a9936",
      "tree": "3207477eda89f12135465200e6e9af1ce1a58b4e",
      "parents": [
        "c66d4db7053b3e132c9b378f34f8c667b4be3f71",
        "d08327d1a2782f7ff7b8d46da106f7cc63bbef44"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:17:17 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:17:17 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415\nam: d08327d1a2\n\nChange-Id: Ia8bdb1eae19450a3c6df255945a8cded55b15909\n"
    },
    {
      "commit": "d08327d1a2782f7ff7b8d46da106f7cc63bbef44",
      "tree": "4971eea7f1bd719b3ed02c651947be3adbc9ec80",
      "parents": [
        "177ee220b9b5051065c01c8b8ca9ce7d29fe29a0",
        "b995c31415c73917f9ab907ec2334e69e638feda"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:15:47 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:15:47 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454\nam: b995c31415\n\nChange-Id: Iff099acd6ee928f37d2b91144a06d9c78a2a5aae\n"
    },
    {
      "commit": "7504b9eb4561df88550f874cf0ce95b6f4d09927",
      "tree": "0991a83bf78a67170a0707d8e300578c9c46727f",
      "parents": [
        "2c8c51d4aeffc4d561a67b06d20fff67d9a5a5aa"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 15 18:17:26 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 16 08:29:05 2017 -0700"
      },
      "message": "soundtrigger: require RECORD_AUDIO permission for DSP hotword\n\nCheck android.permission.RECORD_AUDIO permission in addition to\nandroid.permission.CAPTURE_AUDIO_HOTWORD for DSP hotword operations\nas those require access to device microphone.\n\nBug: 62265680\nTest: check \"OK Google\" detection with and without DSP\nChange-Id: Icba2520331164bcd618e91916ca701e677d419b8\n"
    },
    {
      "commit": "f759b8c4bcce2d3b3d45551be461f04297fa2bd3",
      "tree": "6b1f8510c36843e66653474c5fb06399e2e13566",
      "parents": [
        "a0388f92c70e4321ebfe3c41e08c454d63937998"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Aug 15 12:48:54 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Aug 15 19:55:28 2017 +0000"
      },
      "message": "AudioPolicyService: Acquire mutex for SoundTriggerSession\n\nTest: Enable always on GSA\nBug: 64340921\nChange-Id: I05d8c680be97ba4c92081425596addcc038f7dda\n"
    },
    {
      "commit": "4fb615c2774c04b4d36d8f9d88dd4aa291296288",
      "tree": "6ce96b0a49b22c440b7b70be61a862e214d8d960",
      "parents": [
        "8f5520a7378e7af0fcc6a8b693f29a6ddffbbbcd"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Jun 26 10:28:13 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 07 17:20:47 2017 -0700"
      },
      "message": "Audio policy: Parse new audio policy configuration file\n\nFor treble, files shared between vendor and system must have a schema.\nAs .conf did not support such feature, transition to an xml based\nconfiguration file.\n\nThis new format has several changes:\n - library path are now relative to the standard effect directories\n - effect parameters are no longer supported (nobody used them)\n\nTest: Check that the dumpsys is similar than with the legacy formal\nBug: 37492580\nChange-Id: Ie6bd84ed88124991600fa238cc13714874eefad9\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "2ac7694396640821f6723672e25b2372220bf060",
      "tree": "0cd5a8c58898fcb145f4b879ea64aeb260266ce2",
      "parents": [
        "ffd80b92df8521dd28ab5fd08b1098a58cb280e8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 22 17:17:09 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 26 16:29:08 2017 +0000"
      },
      "message": "Set initial audio device for AudioTrack and AudioRecord\n\nBug: 62090113\nTest: run AAudio test and verify a valid device is reported just\nafter opening playback or capture streams in legacy mode.\n\nMerged-In: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n\nChange-Id: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n"
    },
    {
      "commit": "9ae8c597d9a0c8cedc4047fc4716d7361453f6ab",
      "tree": "4c8824f15e744d82243f4a3caab1d67b208afd47",
      "parents": [
        "5af194cf79f280034430f2f65b02a89f261dbbc8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 22 17:17:09 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 26 08:04:19 2017 -0700"
      },
      "message": "Set initial audio device for AudioTrack and AudioRecord\n\nBug: 62090113\nTest: run AAudio test and verify a valid device is reported just\nafter opening playback or capture streams in legacy mode.\n\nChange-Id: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n"
    },
    {
      "commit": "ac4e42982d4537732b30e71c9a00ba0077944984",
      "tree": "1774e0b1cba1a173c29aaca85d4147e178c69346",
      "parents": [
        "c407bd4b32b99cab78e773ac51a57f49cd0985ea"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 22 11:39:31 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jun 19 18:03:28 2017 +0000"
      },
      "message": "Monitoring of recording: uid of recording session\n\nPass uid of recording session along with other existing information\n  in the recording monitoring callback.\nDefine new structure, record_client_info, to group uid (new),\n  session id (existing) and source (existing) and simplify\n  method signatures and marshalling code.\n\nTest: run cts -m CtsMediaTestCases -t android.media.cts.AudioRecordingConfigurationTest#testAudioManagerGetActiveRecordConfigurations\nBug 62579636\n\nChange-Id: I18f66d7e55640a21f31021416a12a3e8094c3690\n"
    },
    {
      "commit": "ac9cef5f3288df6e65cb4488e2615cc3c07b70d0",
      "tree": "3369bd965510d5c3e8ea6257bb1368a677e535c6",
      "parents": [
        "3c1ba2cd6276ee4304ba082fbe40fd870c1746c8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 09 15:46:26 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 15 10:42:59 2017 -0700"
      },
      "message": "audio policy: add method to query dB attenuation for a certain volume and device\n\nBug: 62492975\nTest: Check dB value returned to AudioService when stream volume is\nchanged\n\nChange-Id: I8d0a945e9151d230b93634e4b9e57bab68f44fa8\n"
    },
    {
      "commit": "d7c5ec857930496bb8a1045dc8b87b2fdd99899c",
      "tree": "1febd0054f7833de4bfd877faea92b6c66a3d89a",
      "parents": [
        "67d0d7eb36e7c36d0a9dec9264c0cab832196d57",
        "4b058e7e5d58fb1bc6ba82eba94f7664e5b85706"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Jan 11 19:30:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 11 19:30:56 2017 +0000"
      },
      "message": "Merge \"Add missing nullptr checks for data.readCString() strings\" am: ce961d374f am: 238c48e42e am: 877f779979\nam: 4b058e7e5d\n\nChange-Id: Idc3298b161380e9ace8b7fcceb4339b0805a3123\n"
    },
    {
      "commit": "877f77997987212ae0fbfecb24b35c03a0573006",
      "tree": "784bda81ca3055da5341cb11f86e0e0fddc06d90",
      "parents": [
        "7ceeb44566c54be121136a456142143e6bc4c4ac",
        "238c48e42e9e4daafc4cde73bc5c1856e7c10614"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Jan 11 19:20:24 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 11 19:20:24 2017 +0000"
      },
      "message": "Merge \"Add missing nullptr checks for data.readCString() strings\" am: ce961d374f\nam: 238c48e42e\n\nChange-Id: I2e9cb8ec6752506cc5445aee3d38ae92e4f5e514\n"
    },
    {
      "commit": "c694ff449bef4ca1e45a6506f34e66c613757311",
      "tree": "36f66657e3389dbb6b30b7e122ff415f9ce5f40c",
      "parents": [
        "20adbc00032d6df980a3300f1ae974610f16f81f"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Mon Jan 09 23:27:29 2017 -0800"
      },
      "committer": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Jan 11 16:51:37 2017 +0000"
      },
      "message": "Add missing nullptr checks for data.readCString() strings\n\nProtect the Audio Policy Manager by adding extra checks\nfor data.readCString() strings when parsing / decoding\na Binder transaction.\n\nAlso:\n * Moved audio_is_output_device() / audio_is_input_device() checks\n   inside handleDeviceConfigChange()\n   from the AudioPolicyInterface to the AudioPolicyManager\n * Removed similar redundant checks inside\n    AudioPolicyService::setDeviceConnectionState()\n\nTest: code compilation\nChange-Id: Ib32a28ba2669b73aaf32b31bb18f41c8dd7d2605\n"
    },
    {
      "commit": "5fd7ccaeba88da7e170f067bfd754b3f64ff5566",
      "tree": "5e2a0f1495c8ea9a68598cea2028e3c092049e3a",
      "parents": [
        "0ce91633d8a4f5dcb3706a7734c02ddb5099eefd",
        "c6fe843463abc965f3082738c8812506cf5ba232"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Thu Dec 29 00:25:36 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 29 00:25:36 2016 +0000"
      },
      "message": "Merge \"Add a mechanism for handling audio device configuration change\" am: 549e431947 am: a1b496ac35 am: fcc1132010\nam: c6fe843463\n\nChange-Id: I7812e3e4426e526b886c1a414ac8ddec7649291e\n"
    },
    {
      "commit": "fcc113201018703727a0d6b17dd165efce00db1a",
      "tree": "70eca9738ea18322a92ebc4bb94a0894e1735034",
      "parents": [
        "1121dfb5f30a04393ddce02fe7808589fa9e3e25",
        "a1b496ac35a8bbdcae6b0315e91a5cf52b2af00d"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Thu Dec 29 00:12:05 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 29 00:12:05 2016 +0000"
      },
      "message": "Merge \"Add a mechanism for handling audio device configuration change\" am: 549e431947\nam: a1b496ac35\n\nChange-Id: Ie8871fad611dc16d7cd08a85e4cd748cf3c4650d\n"
    },
    {
      "commit": "f862bc6a7a35054e38cb50fa16ae7a07f683ee01",
      "tree": "12f33970e876ba71df008d7e38a58984c5b357b5",
      "parents": [
        "a05da2eea41306d526ce645ea44aa2e05054f651"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Mon Dec 26 18:57:22 2016 -0800"
      },
      "committer": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Dec 28 14:35:01 2016 -0800"
      },
      "message": "Add a mechanism for handling audio device configuration change\n\n* Added new call handleDeviceConfigChange() to the Media Framework.\n  That call can be used when there are device configuration changes\n  (e.g., Bluetooth A2DP codec configuration has changed).\n* Added new method AudioPolicyManager::handleDeviceConfigChange().\n  That method toggles the UNAVAILABLE/AVAILABLE connection state of the\n  device, so it can be reconfigured as appropriate - e.g., the audio\n  feeding parameters can be updated.\n* Fix ALOGVV compilation errors when extra logging is enabled.\n\nTest: A2DP streaming to headsets\nBug: 30958229\nChange-Id: I388abbbb3ec4d1a003b441cb0c77e00d80cad668\n"
    },
    {
      "commit": "6a308b02f138e358fb239ee2df5d54dd988f34fd",
      "tree": "730e19d7ae133e2086c37dcec42d0b88e77ba01b",
      "parents": [
        "0a2ea58394190408a3d532bfcc242ba64ca71538",
        "20b9ef0b55c9150ae11057ab997ae61be2d496ef"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 16 17:12:23 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 16 17:12:23 2016 +0000"
      },
      "message": "Merge \"Add unique audio port IDs to AudioTrack and AudioRecord\""
    },
    {
      "commit": "bc7f347ff5dc890ad0fa306f58d145e934e31ed4",
      "tree": "0164bf05d87776c3e073a32fba021b041f7a45b1",
      "parents": [
        "ec982d462866b8b985b4ed13a2e99556de094c0d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 19:27:57 2016 -0800"
      },
      "message": "DO NOT MERGE - improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n- Check reply size before writing status in EffectHandle::command()\n\nBug: 32707507\nBug: 32095713\n\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "b37f28adaea5e64ba61fc6533ed9a7f5a76b9f78",
      "tree": "4f33d868a5057f6bbf77f6efc29119d3f8f7b207",
      "parents": [
        "f574a9722f1f80fc03091f5ccdcfc123c7198730"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 17:31:12 2016 -0800"
      },
      "message": "DO NOT MERGE ANYWHERE - improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n\nBug: 32707507\nBug: 32095713\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "72db998b4f41e795420055cda362847d5c5f8c92",
      "tree": "83e824d5f21d33051a683256f949d1f4c1b076e6",
      "parents": [
        "56d69ea84fb6c75cd5e855f067f90cae5a085d27",
        "993c09b27bc5b2b9f93b29fac8e212a196a52c67"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 17:55:44 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 15 17:55:44 2016 +0000"
      },
      "message": "DO NOT MERGE - improve audio effect framwework thread safety am: b378b73dd7\nam: 993c09b27b\n\nChange-Id: Ib46c5c88aa112e819fe320857b2136f14f84db1a\n"
    },
    {
      "commit": "20b9ef0b55c9150ae11057ab997ae61be2d496ef",
      "tree": "21bd57d748dd47600b1e62bfb18d4acb08e15438",
      "parents": [
        "8526d86ab12284135ed4ca27aeb816371c10c0e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 05 11:03:16 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 12 12:29:41 2016 -0800"
      },
      "message": "Add unique audio port IDs to AudioTrack and AudioRecord\n\nThis will allow to track activity at the track level instead of\nat audio session level as only possible with current implementation.\n\nAudioTracks and AudioRecords will receive a unique audio port ID the\nfirst time they register to audio policy with\ngetOutputForAttr()/getInputForAttr() and keep this ID for their\nlifetime.\n\nThis CL is the first partial change and just updates the\naudio policy and audio flinger APIs used at track creation time.\n\nTest: basic regression test of audio playback and capture use cases\n\nChange-Id: I8d612e67738e120494f61e3f7c60bfd0b2c6a329\n"
    },
    {
      "commit": "b378b73dd7480b584340b8028802c9ca2d625123",
      "tree": "00439baacf771d5439c6ec1747cfcdff13eeb4e5",
      "parents": [
        "5ed0c9ffdae597a023bdcade0868566832a01c2b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 09 10:25:06 2016 -0800"
      },
      "message": "DO NOT MERGE - improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n\nBug: 32707507\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "b643627a557e44b9ab5879cf71e162af2d514ce3",
      "tree": "995bc0b0fa9a614687aa8df2f119ab7fff0c7a88",
      "parents": [
        "8526d86ab12284135ed4ca27aeb816371c10c0e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 07 19:24:50 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 08 12:14:32 2016 -0800"
      },
      "message": "fix client pid for effects applied by audio policy\n\nTest: Hangouts call, Play Music with and w/o effects\n\nChange-Id: Ia9b20f94be667dd92e0497f8ef9c0dc0e95afe28\n"
    },
    {
      "commit": "f10c709fda87d971a206eebd5df47356e7f2aa39",
      "tree": "98b1a47d6a12c11a4b5a02e2a7fb5129b2a6680f",
      "parents": [
        "7cdef381717e3a96acc6c5786c88bf1eaf03d2f2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 06 17:09:56 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 07 09:40:43 2016 -0800"
      },
      "message": "audio policy: remove effects before releasing input\n\nmodify releaseInput() implementation so that effects added by policy\nrules are removed before closing the input stream to avoid\nfailure to destroy the effect chain\n\nmake sure that orphan effect chains are checked when an EffectHandle is\ndisconnected after thread destruction.\n\nTest: make and run Hangouts\nBug: 32707507\n\nChange-Id: I7833b4c5e42c0057a4477eb4485a20dd26ca2f90\n"
    },
    {
      "commit": "8243fcd644bd4b4865c3977435bb758c981ccf65",
      "tree": "82e0b1a2b2f0fa71b82e815a1f3df91b5cfb8d1d",
      "parents": [
        "bd54eef2d289f786a7ae02139ce3bb9db2b03b24"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 28 17:51:14 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 28 17:53:13 2016 -0800"
      },
      "message": "remove support for legacy audio policy manager\n\nTest: make\n\nChange-Id: I7294a52674abadfdbc4da40a72c8fe1a229d0815\n"
    },
    {
      "commit": "559d439c6fe8679e3c52f1cf265d46d7d2e65b68",
      "tree": "9e23625c0b55e45e79842d6605e027dba01f0fe0",
      "parents": [
        "bd0f59e493dbd67d1871b243ddad9cce3b50d7ce"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 29 13:42:57 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 19 18:19:29 2016 +0000"
      },
      "message": "Use audio_patch_handle_t in startAudioSource() and stopAudioSource()\n\nBug: 27903060\nChange-Id: Iafc2095f484b74978c6f080c54f548e293bf945e\n"
    },
    {
      "commit": "c2f710f89ec1a3ea8e448bfafcc02b03529cc681",
      "tree": "36109077cc2fd28725397002a707689faca3877f",
      "parents": [
        "9a79c8f84a6de3b942c6b0a347aece7ecb7daed5"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 17 18:05:36 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 17 18:07:52 2016 -0700"
      },
      "message": "Move audio_effects_conf.h to system/audio_effects\n\nThis file is not really related to HAL.\n\nChange-Id: Ie584266c708cebac651997c8086032b4cc25832b\nTest: make\n"
    },
    {
      "commit": "61a4fac2e3ec271241e3a4f405d7357b7f6ca4c2",
      "tree": "0ce2e32297df380eb5a5d971e8daac0634a96731",
      "parents": [
        "61787b26691da285d8ab79795237006ceb018c4d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 13 14:44:18 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 14 09:29:54 2016 -0700"
      },
      "message": "Remove dependencies on hardware/audio_policy.h\n\nMost of the time it\u0027s not needed, may be needed when\nUSE_LEGACY_AUDIO_POLICY is enabled.\n\nTest: make\n\nChange-Id: Id25eafc05352f07614965913d367d484f2673fbd\n"
    },
    {
      "commit": "00260b5e6996b0a4b12f71c5b84e44adea040534",
      "tree": "7e93a2e3cc5f918d8f7a7409d9c98712eed0d2fe",
      "parents": [
        "47677e3edda7b15bc0b48c6863a01ae052785e0c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 13 12:54:24 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 13 14:02:38 2016 -0700"
      },
      "message": "Remove dependencies on hardware/audio_effects.h and EffectsFactoryApi.h\n\nAlso remove some outstanding dependencies on hardware/audio.h.\n\nMost of the time, only constants and structs from audio_effects.h\nare used, and no actual calls into HAL are made. Move these\ndefinitions into system/audio_effect.h, and generate constants\nfrom TREBLE HAL definition.\n\nFor parameters, always use values from AudioParameter class.\n\nThere are still some outstanding includes of hardware/audio.h\nin code that directly deals with audio modules. Need to extend\nlibaudiohal interfaces to support required functionality.\n\nTest: make\n\nChange-Id: I0bcdf8ae199485d4d65f3eeb7e7a3b9b5cdb6ab6\n"
    },
    {
      "commit": "c7239f10fafe26e948d8505554f4f0f113395a93",
      "tree": "3adea1d4d94ce331e0e6ed959eef86d6707a2072",
      "parents": [
        "f2eef91ab93c715d72a0ce5765ef05c4936af0cd",
        "3c96a7253fbdadf27c6ebcea1e28d5c903b3d69c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 02 01:21:10 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 02 01:21:10 2016 +0000"
      },
      "message": "Merge \"Use symbolic name for return value in legacy audio policy client\" am: e31f1491f8 am: d6229bb516 am: 95852cbbbb\nam: 3c96a7253f\n\nChange-Id: Ia4fd2e6fc79fea1754bd81c5fc5b847bb347dbe1\n"
    },
    {
      "commit": "3c96a7253fbdadf27c6ebcea1e28d5c903b3d69c",
      "tree": "5964f85a77078f34624ef21a9dcd75924c22adf3",
      "parents": [
        "1315e3a7c06c8eb52b4c11d973d336a1ac9d2ad0",
        "95852cbbbb3d1caabc6d03444d9a762bb78aee5d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 02 01:18:09 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 02 01:18:09 2016 +0000"
      },
      "message": "Merge \"Use symbolic name for return value in legacy audio policy client\" am: e31f1491f8 am: d6229bb516\nam: 95852cbbbb\n\nChange-Id: I376781094ef5c565be1db23784636b7422b38ad8\n"
    },
    {
      "commit": "e31f1491f87804595ad2f2a4a0842ffe7f35f32f",
      "tree": "37493f4a2c0b381a55c55f485a160bd325d9d6c8",
      "parents": [
        "dd780c160d9437ec08b743842711f7a1aa587bd0",
        "2eae53c0128428f936ea1dc6b75e583c30ef1e25"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 02 01:06:02 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 02 01:06:02 2016 +0000"
      },
      "message": "Merge \"Use symbolic name for return value in legacy audio policy client\""
    },
    {
      "commit": "5ca8f32280377dd923e72c3c6bd3994217461b8b",
      "tree": "b5146ce7885539d8b002d3270346f574e3965711",
      "parents": [
        "7aeb8c8d4437eb8f45be3ad3828764795e14ad4c",
        "63ef5a38f82d22c1f97922fe490a1fd336566d5c"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 23:53:01 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 10 23:53:01 2016 +0000"
      },
      "message": "resolve merge conflicts of fd923e7 to stage-aosp-master am: df5d9246f9\nam: 63ef5a38f8\n\nChange-Id: I516a43c5e56323e99ad7a8ca2e4811b77c9704f4\n"
    },
    {
      "commit": "df5d9246f9607b1c2f8b134c46a05af06e206da3",
      "tree": "7cd9fcb42c86c8cfe950db239e21e8b5ece98369",
      "parents": [
        "7ad2854adc0abe8dd7909a6ed401107ad09bc3d2",
        "fd923e7fe2779bcd69d79471b8c30c8b98918f62"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 15:40:39 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 16:10:32 2016 -0700"
      },
      "message": "resolve merge conflicts of fd923e7 to stage-aosp-master\n\nChange-Id: I75b44b89bae41197a1fd68362d20b8ba2b4dd192\n"
    },
    {
      "commit": "e964d4e421e2d1ca937227a580c0c837091a11e3",
      "tree": "876478fb4d5b18ddf8ba3b761440e46651b45ecb",
      "parents": [
        "f6d5a13c3a7a84e35e28b9840dde0f29728b6849"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 09 14:31:32 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 11:35:57 2016 -0700"
      },
      "message": "Fix clang-tidy warnings in audio and playerservice.\n\n* Add explicit keyword to conversion constructors.\nBug: 28341362\n* Use const reference type for read-only parameters.\nBug: 30407689\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I265f3b094e08d5705b506b3fbba51439c134af84\n"
    },
    {
      "commit": "36d0ca16024820df9a12903d2ac443fabcc180bc",
      "tree": "51e8f285ae66ad7cb922caeb7ba8d5f1d20367e3",
      "parents": [
        "67fbddfdc2cafd63c83d3bb55a2451d4c26f546d"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 09 14:31:32 2016 -0700"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 10 17:56:35 2016 +0000"
      },
      "message": "Fix clang-tidy warnings in audio and playerservice.\n\n* Add explicit keyword to conversion constructors.\nBug: 28341362\n* Use const reference type for read-only parameters.\nBug: 30407689\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I265f3b094e08d5705b506b3fbba51439c134af84\nMerged-In: I265f3b094e08d5705b506b3fbba51439c134af84\n"
    },
    {
      "commit": "bcb918b955a36a79aa908f392fb8a7b1cdd405f8",
      "tree": "9029b9cfadde77f86b9d9ecdc55d2cbdb0a9903b",
      "parents": [
        "bc9cb6dcdfd16aa480ada220913573be6ef95abb",
        "b7e9c3b4d88582f040857d8733e6b0b43c2d774f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 28 02:18:30 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 28 02:18:30 2016 +0000"
      },
      "message": "audio policy: fixed delayed voice volume commands am: baf35feefc am: 63fb42a81d\nam: b7e9c3b4d8\n\nChange-Id: I751778ef048e6820ce1e71762aa83e00c1022271\n"
    },
    {
      "commit": "baf35feefcd14c13a6bf5ff5b651d9f22c2c3de0",
      "tree": "27136d10a6411a2420d8c35d937b2dd83ca4c0b5",
      "parents": [
        "ca8cc535cd308cd4e7095037b3b3e327e66581be"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 27 15:36:53 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 27 15:36:53 2016 -0700"
      },
      "message": "audio policy: fixed delayed voice volume commands\n\nApply same rule as for stream volume in case of delayed voice volume\ncommand: this prevents a delayed command to cancel a non delayed\ncommand sent after.\n\nBug: 30421096\nChange-Id: I576db5eba9498c811c3a6493b3c17e1f02b1b1a1\n"
    },
    {
      "commit": "2eae53c0128428f936ea1dc6b75e583c30ef1e25",
      "tree": "1add092f645ef5f13066c6f140ea211c5c9f7cc3",
      "parents": [
        "d2a52727e30c6c413f3837378d990444fe7ac319"
      ],
      "author": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Tue Jul 12 14:52:27 2016 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jul 13 21:55:56 2016 +0000"
      },
      "message": "Use symbolic name for return value in legacy audio policy client\n\nChange-Id: Id27628afcbc4eb2c9bf1313c8376802a47a9596c\n"
    },
    {
      "commit": "d91a420f234e2ec0ccc4d156a56297832e21d4a6",
      "tree": "b9ef2d51e03939fee2f880d2008dbbf005c5c1fb",
      "parents": [
        "f9eb4d2ca8eee725a33618da104f843acd3b6ff5",
        "edab4257fa821c91c6e5a64cda78c9c38ea905c0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 13 21:23:51 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 13 21:23:51 2016 +0000"
      },
      "message": "Merge commit \\\u0027885dd7136a999d21219a4cc9034f20ef688c0625\\\u0027 into manual_merge_885dd71\nam: edab4257fa\n\nChange-Id: I04abc72767b31fbdfd6ee82c239fbc4a94421a82\n"
    },
    {
      "commit": "fcddb0b73931d207b21bd281a7df3ba2f230a607",
      "tree": "f9b35ea1d18407f17cd1fd10d9365867abbed823",
      "parents": [
        "f81362f6cd1bb22f988c30e6b552e6a2d95c4de7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 08 17:19:25 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 08 17:19:25 2016 -0700"
      },
      "message": "Enable strict warning checks and fix\n\nChange-Id: Id401a937911eb418e93314812f2f7c2b5ecff8d6\n"
    },
    {
      "commit": "50eb92c4d79b4cc17eeca351e5d16544cc63f63d",
      "tree": "d14b97751fe03709847e941ebff5a5a87d9231c5",
      "parents": [
        "ec834ff477a9cf78bcce906486e19108968f676e",
        "7f938bf972549e7b79aa99f88bc661f16f0dba40"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 25 23:19:30 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 25 23:19:30 2016 +0000"
      },
      "message": "Merge \"Fix warning in audio policy service\" into nyc-dev am: ec71c9ee92 am: d9514b39e1\nam: 7f938bf972\n\n* commit \u00277f938bf972549e7b79aa99f88bc661f16f0dba40\u0027:\n  Fix warning in audio policy service\n\nChange-Id: I628cdc674506e6dbe6f228b978fed5b0e0b6ff49\n"
    },
    {
      "commit": "9f39f8d6cc1445c338d8cb635fdbc167c4200971",
      "tree": "5cb8d9a2a519df24e5fd0db5f308568ba7b8f043",
      "parents": [
        "a2ebcc043f9b04f08f89fc6281199a34e43d4cae"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 25 12:34:48 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 25 13:34:51 2016 -0700"
      },
      "message": "Fix warning in audio policy service\n\nChange-Id: I33b20b7007e19e8b2514ffdf2232e9c1d7314d9f\n"
    },
    {
      "commit": "7118308943d64f8d9e4c63b0e6d49da376be1966",
      "tree": "fbee0420bd4c801ec8e834bed6e05a8de8837944",
      "parents": [
        "d9bb4b4e2ecc8fd0002249b73a23973208d74786",
        "e52cab1f56c39b72090f53ef3b2a187191d13143"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 24 17:54:19 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 24 17:54:19 2016 +0000"
      },
      "message": "Fix android.permission.CAPTURE_AUDIO_OUTPUT permission check am: b2379ba0a3 am: cc516cdd02\nam: e52cab1f56\n\n* commit \u0027e52cab1f56c39b72090f53ef3b2a187191d13143\u0027:\n  Fix android.permission.CAPTURE_AUDIO_OUTPUT permission check\n\nChange-Id: Ia663aa8d975108cda5f0f2592d4bbf490bf776da\n"
    },
    {
      "commit": "b2379ba0a32638bae2ea0460644f68cf5a0967ce",
      "tree": "92313531455a4482d97d03d0f4ecb1e727b4076a",
      "parents": [
        "a0e10ff02b156738c0e5441104821b220eea3d68"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 23 17:42:12 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 24 17:16:57 2016 +0000"
      },
      "message": "Fix android.permission.CAPTURE_AUDIO_OUTPUT permission check\n\nMake sure we use the correct PID and UID when checking\nandroid.permission.CAPTURE_AUDIO_OUTPUT permission from audio\npolicy service.\n\nBug: 28772898\nChange-Id: I8f0c45bf7a5728b4364a451eefb6c025892ae9a5\n"
    },
    {
      "commit": "fc732a63bd8c8c62ce75f36f03088ca6727caece",
      "tree": "046c0d9a3a9111de265c98ec822dd38119f59a0f",
      "parents": [
        "d9114cbe50b4a7be06c738581879c9a19f1d39ee",
        "b9b9fa3d28a0436bb5e267d8fc3626ebd820fe78"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 29 22:15:42 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 29 22:15:42 2016 +0000"
      },
      "message": "Merge \"Use audio_module_handle_t and audio_patch_handle_t consistently\" into nyc-dev am: 54b48c3\nam: b9b9fa3\n\n* commit \u0027b9b9fa3d28a0436bb5e267d8fc3626ebd820fe78\u0027:\n  Use audio_module_handle_t and audio_patch_handle_t consistently\n\nChange-Id: I100c4795ec6d0d9e9c23d6e850303a23f3bfb603\n"
    },
    {
      "commit": "a13cde98a880341f0a56d91da6364b093fb5d24e",
      "tree": "3974215c7cc52f2136c04e3e38568e0483c03129",
      "parents": [
        "45993ad8833063a50af83f76ec1ddeba673b5277"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 28 15:26:02 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 29 13:43:18 2016 -0700"
      },
      "message": "Use audio_module_handle_t and audio_patch_handle_t consistently\n\nBug: 27814144\nChange-Id: I54b7a73ec318779fd3addb060998f4d94141152d\n"
    },
    {
      "commit": "06320b55ceae3778645997fbb8ff5d0010228215",
      "tree": "328641e83500bf4534124ff411ad75274d9be8ae",
      "parents": [
        "a7fc93bf76bbb7c2c67f0f2c1c224d217e02dedd",
        "20f18efb29b8fea661dd4119a764d3f8d4dfe7a2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 17 18:52:04 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 17 18:52:04 2016 +0000"
      },
      "message": "Merge \"Use audio_session_t consistently\" into nyc-dev am: 9a57e34\nam: 20f18ef\n\n* commit \u002720f18efb29b8fea661dd4119a764d3f8d4dfe7a2\u0027:\n  Use audio_session_t consistently\n"
    },
    {
      "commit": "d848eb48c121c119e8ba7583efc75415fe102570",
      "tree": "06733e396ad546bf39be0a6699193d041883edad",
      "parents": [
        "38246e482ea3bd1e0f88f7133934ec4537b48bbd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 08 13:42:11 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 16 14:04:22 2016 -0700"
      },
      "message": "Use audio_session_t consistently\n\nBug: 27562099\nChange-Id: I328d8226191386b163f2ace41233607294c50dcd\n"
    },
    {
      "commit": "f0c6d7d940314dbec47c9b53cb99da79eb022787",
      "tree": "d57f65d0aa2cf8e620251ea22c66f7f8c76d1a5a",
      "parents": [
        "cd22ee6aa5a3ce57530f54b60347d655afc87045"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 26 10:44:04 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 02 00:03:16 2016 +0000"
      },
      "message": "Add use for audio_unique_id_t\n\nBug: 25641253\nBug: 21019153\nChange-Id: I65dc128e760c245f3d90559635a8981b186c87d7\n(cherry picked from commit eeecb980ff4c202d0a3c4b0bfe040dce2f73336d)\n"
    },
    {
      "commit": "eeecb980ff4c202d0a3c4b0bfe040dce2f73336d",
      "tree": "decce0d925acd9efd68f2d540bbabb60c0661c6b",
      "parents": [
        "91afc2297dd1c39302dba6ff68e9839aae27d39a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 26 10:44:04 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 01 08:32:58 2016 -0800"
      },
      "message": "Add use for audio_unique_id_t\n\nBug: 25641253\nBug: 21019153\nChange-Id: I65dc128e760c245f3d90559635a8981b186c87d7\n"
    },
    {
      "commit": "d51b1b247b120c7e49851d923f3c5aa0aa19a787",
      "tree": "b228978bfcb786af075bedaf906908af2ee194b4",
      "parents": [
        "b2396a3991f726f96499ff479737ad7f51f21b86",
        "1e9a65df13859b44b91610ef4cc721155ab5eaa8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Feb 26 15:13:30 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Feb 26 15:13:30 2016 -0800"
      },
      "message": "resolve merge conflicts of 1e9a65df13 to master\n\nChange-Id: I7c255d7813805b5ffb0d8e5ecd6fc11ee0b80c8a\n"
    },
    {
      "commit": "8c7cf3b7d0d7bccb9affbc34ae2ab2d6b332f972",
      "tree": "2ce1446fe6fe647e3e0dcbcaf82ac45c5551f492",
      "parents": [
        "809aeb1f725beed877887fe1c5ca3430d811b328"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 25 17:08:24 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 25 17:08:24 2016 -0800"
      },
      "message": "Send audio patch in recording callback\n\nRemove direct access to patch handle in AudioInputDescriptor, replace with\n  set / get functions.\nAdd interface for AudioSession to query configuration from enclosing\n  input descriptor.\nWhen input descriptor\u0027s patch handle changes during a recording, propagate\n  the change through the recording notification callback.\n\nBug 26798796\n\nChange-Id: Ia1395d44da7ccfe69ca46877638d1eb49b3935ad\n"
    },
    {
      "commit": "c8d25af1c3c32b7671dbeb967fb86f24fa5fa313",
      "tree": "4cc46f7e8226dcc1f71feb26a005ac9df2df51b7",
      "parents": [
        "fa4cd335a9bae18c852cff8198155a0e6fd3f26e",
        "bce5dfdac0e90701f53e4f8a2c0f5a3c44a0a4ac"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Feb 24 17:18:19 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 24 17:18:19 2016 +0000"
      },
      "message": "Merge \"Send client / device format in recording callback\" into nyc-dev am: f70077e435\nam: bce5dfdac0\n\n* commit \u0027bce5dfdac0e90701f53e4f8a2c0f5a3c44a0a4ac\u0027:\n  Send client / device format in recording callback\n"
    },
    {
      "commit": "7281aa9810b33eff47b00104db26c97c77931611",
      "tree": "1fc5afe0784f22d1ab6507d07708b48b12b1c13d",
      "parents": [
        "eafe1f9734af31730790b0abaf8c6aae01bfee77"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Feb 17 15:33:40 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Feb 23 16:23:45 2016 -0800"
      },
      "message": "Send client / device format in recording callback\n\nBug 26798796\n\nChange-Id: Ib4f64159c8371d87da49a8f0cad9317a87d843c4\n"
    },
    {
      "commit": "c04a80ad7ecd8084372fe61b8a93e2f9c58c153e",
      "tree": "701e3d0cde020226b7eee1d89c3c47dfc18e8e8f",
      "parents": [
        "ff0cdeb52e0678e756b268946f0b31def4663a82",
        "d88c1c0044cf1db95418ebbc474677d35fec269a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 18:30:56 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 22 18:30:56 2016 +0000"
      },
      "message": "Merge \"audiopolicy: Synchronize calls to Effects state\" into nyc-dev am: c8fc480370\nam: d88c1c0044\n\n* commit \u0027d88c1c0044cf1db95418ebbc474677d35fec269a\u0027:\n  audiopolicy: Synchronize calls to Effects state\n"
    },
    {
      "commit": "c8fc4803705da79aaaeff909538a976bf0e45852",
      "tree": "bd208256ad97b494095dc87e5a13968f035e4dfe",
      "parents": [
        "f214d6936f66052bfabc51e3355f800e41b511f2",
        "bab7bf46e15f7e2e304081c5cc56f8d58f5f09f3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 18:09:31 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 22 18:09:32 2016 +0000"
      },
      "message": "Merge \"audiopolicy: Synchronize calls to Effects state\" into nyc-dev"
    },
    {
      "commit": "bab7bf46e15f7e2e304081c5cc56f8d58f5f09f3",
      "tree": "1a2a1cbb763c962ac662980e9302e4060deecbca",
      "parents": [
        "b74dc56b2fd3ec872383544d4b6d4950c206259b"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Fri Oct 30 18:02:23 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 19 18:18:00 2016 -0800"
      },
      "message": "audiopolicy: Synchronize calls to Effects state\n\nSynchronize calls that might access Effects state (alternate approach)\n\nBug: 26516500\n\nChange-Id: Ie03de9c67232e0ac7f5db5cbfe87ec058acbfc8e\n"
    },
    {
      "commit": "232f26f8b673973ffa463f80b08b731ffacc8785",
      "tree": "0722b9bc20a7b049ba6b4120138ef8845293e37f",
      "parents": [
        "b74dc56b2fd3ec872383544d4b6d4950c206259b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 17 18:06:27 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 18 22:03:21 2016 +0000"
      },
      "message": "DO NOT MERGE - audio policy: disable concurrent capture\n\nThis reverts commit 4342335fb84bfa4ec5b99e3ef82f186820c2275f.\nThis reverts commit 56afc7a5cc0f0bfc8021f6413b2e2267050bdc8a.\nThis reverts commit 313d1e7dfb4bf8e0a2f09a9adb287062dd64410c.\nThis reverts commit fb66dd9f95a1168698f072c4e5c2a2cf8c49a80f.\n\nBug: 22702906\n\nChange-Id: I9085918f1f7b12e28430958cceb768bb29c12bdb\n"
    },
    {
      "commit": "138ed1796f8c8edd318488911a9b056877191778",
      "tree": "d13629fcc205cc2a2ed858d7caced0436ce820e8",
      "parents": [
        "e3b06f27668901d3d7ae53b6d77aafd4181045ad"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 10 10:40:44 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 11 12:10:16 2016 -0800"
      },
      "message": "audio policy: fix issues in effect parameters parsing\n\nFix several issues in AudioPolicyEffects.cpp\n- Fix old bug in growParamSize() that should take a pointer\nto the address of the parameter structure because it can\nmodify it by calling realloc()\n- Fix warnings reported by clang static analyzer\n- Add checks on memory allocations\n\nBug: 26938281\n\nChange-Id: Id0bfa64371d95356d9fc308c6ea9c74e10ab1be0\n"
    },
    {
      "commit": "4342335fb84bfa4ec5b99e3ef82f186820c2275f",
      "tree": "8cb38b5d0f1d00ec6f8e73e97b5827ceee260d1d",
      "parents": [
        "da53ce37c5283fad74d213f855ed8f4a078b860c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 05 11:57:57 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 05 11:57:57 2016 -0800"
      },
      "message": "audio policy: fix capture concurrency mode checks\n\nCapture concurrency mode indicated by policy manager\nafter startInput() is a bit field and should be handled as\nsuch by startInput() in AudioPolicyInterfaceImpl.\n\nBug: 26994864\nChange-Id: Iff093a82b8b68262abab50bc84060cf023450783\n"
    },
    {
      "commit": "d7eda8d0127fabf2d63b0890043da40e2a9e366c",
      "tree": "6feeb75bb2eca25b1eb77725a0d0c005b4332bf1",
      "parents": [
        "16558ea318c3cf25a945fc1771572f489763527e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 02 17:18:39 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 02 17:18:39 2016 -0800"
      },
      "message": "audio policy: fix overflow in condition wait timeout\n\nDo not pass a large value to Condition::waitRelative() as this\ncan cause an overflow in pthread_cond_timedwait_relative_np() when\nconverting to absolute time.\n\nBug: 26891803\nChange-Id: Ie2a00bca52d469aa08b2718089dc19cfb1f3475f\n"
    }
  ],
  "next": "fb66dd9f95a1168698f072c4e5c2a2cf8c49a80f"
}
