)]}'
{
  "log": [
    {
      "commit": "98e38191c37d3e324b34a6aafeef8e43366003ef",
      "tree": "349602f9c4d9dd7f4720328cc72f891f9515a0ce",
      "parents": [
        "7c9dbd5440e8119ca439e4b9315843bd348b991f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 15 18:31:53 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 21 12:54:41 2018 -0800"
      },
      "message": "audioflinger: remove obsolete stream volume management\n\nRemove the ability to change stream volume globally (on all outputs)\nin audio flinger as this doesn\u0027t make sense when stream volume is\nmanaged per device.\n\nAlso, do not store stream volumes globally in audio flinger and apply\nthem when a new output is opened. The ground truth for stream volume is\nin audio policy so make sure stream volumes are systematically applied\nby audio policy when an output is opened according to the selected device.\n\nBug: 70332110\nTest: audio smoke tests\nChange-Id: I7180a428af53aafdee82aadbcaf284c028ac5554\n"
    },
    {
      "commit": "a949f46743a29b337ba15cedf9ffb6d813d1b4bd",
      "tree": "ac55a23cbbf5330f529f1c06c4d05d677c54e3e4",
      "parents": [
        "542906964badda8312c03464035dcb12698b0e95",
        "a7b4379046aca7ff9e08dc5f62ef0888423d6cc5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 16 17:31:13 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 16 17:31:13 2018 +0000"
      },
      "message": "Merge \"Update generation when there is device connection state changed.\""
    },
    {
      "commit": "332adf69b9cee8c261b321337b0b8efd57a69018",
      "tree": "53ff1343f02b92a6936040013b22d0a9a92d696a",
      "parents": [
        "da891a1e4a8e2bed310c2a42f4df795a1151f02f",
        "5babc4f104885c16a3dcfdfb5d99903c27ff2bd9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 16 04:16:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 16 04:16:32 2018 +0000"
      },
      "message": "Merge \"audio policy: fix regression with duplicated output handle\""
    },
    {
      "commit": "da891a1e4a8e2bed310c2a42f4df795a1151f02f",
      "tree": "3d03b938ad31fc40454e87747cf6bf58e774f8c9",
      "parents": [
        "2bf84ab09dae685a310a6b84c52e03724325afd7",
        "31225688b7b09ad15f5b1fb8ab2868cecc551f15"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 16 03:37:12 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 16 03:37:12 2018 +0000"
      },
      "message": "Merge \"Fix a memory leak\""
    },
    {
      "commit": "5babc4f104885c16a3dcfdfb5d99903c27ff2bd9",
      "tree": "2f260fb33ee4424dcea806c3ba3d96faedb9b644",
      "parents": [
        "31832c60d57558c2d5ddb2e45e4c6111ce9e55bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 15 12:33:44 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 15 17:36:04 2018 -0800"
      },
      "message": "audio policy: fix regression with duplicated output handle\n\nCommit fe2311274 made that IO Handle for duplicated outputs\nwere not allocated properly causing volume commands to be sent\nwith an invalid IO handle to audio flinger.\nWe then hit another problem with a legacy behavior which broadcasts volume\ncommands to all output threads if received with IOHandle 0.\n\nBug: 70332110\nTest: manual test.\nChange-Id: Ib133abab1575e3c90ba235f0a52d5ab845514719\n"
    },
    {
      "commit": "a7b4379046aca7ff9e08dc5f62ef0888423d6cc5",
      "tree": "e3f124d94d2619be8ae6418c8782a4e7e8c5768e",
      "parents": [
        "d8d4ef440fe25095d34e535e591edd8fa1457307"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Feb 15 16:04:46 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Feb 15 16:04:46 2018 -0800"
      },
      "message": "Update generation when there is device connection state changed.\n\nWhen there is device connection state changed, the available\ninput/output devices will change. If we don\u0027t update the generation, it\nmay cause the number of ports different with same generation, which may\ncause crash in jni layer.\n\nBug: 73077399\nTest: run com.android.bluetooth.hfp.HeadsetServiceTest\nChange-Id: Ic2e477552a71582bcd38227b9a449eef5b82b18c\n"
    },
    {
      "commit": "2c6a243319474e518824b872894e9c5f274b81b6",
      "tree": "27cd47ae36810416e2a74aaddc983e4e4c09c217",
      "parents": [
        "f51cb69506670403cf1da2c66a3290c2f47344b6",
        "b3733cf0932256c57c74fc6670bd0e5bdd0edb4d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 22:27:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 22:27:31 2018 +0000"
      },
      "message": "Merge \"Revert \"Revert \"APM: Avoid route change mute of isolated sounds\"\"\""
    },
    {
      "commit": "b3733cf0932256c57c74fc6670bd0e5bdd0edb4d",
      "tree": "6f6e1187fa69cd0eefed4a91a4deede6434ae699",
      "parents": [
        "4a5b48197acdeaa397bf63a753af550bdea1b361"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 15 19:17:50 2018 +0000"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 15 19:17:50 2018 +0000"
      },
      "message": "Revert \"Revert \"APM: Avoid route change mute of isolated sounds\"\"\n\nThis reverts commit 4a5b48197acdeaa397bf63a753af550bdea1b361.\n\nReason for revert: original CL not at fault for b/70332110\n\nChange-Id: I3eef8a249305a66111e2f606155511a03b4d588a\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": "98c15702ca0c814fee9110efa14d70fc9937514e",
      "tree": "52b650fe7c6c07821b2543c62abde91de916747a",
      "parents": [
        "ec8d39d73a2a0167ae1c21edb005a62f87d2bd38",
        "4a5b48197acdeaa397bf63a753af550bdea1b361"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 08 21:56:12 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 08 21:56:12 2018 +0000"
      },
      "message": "Merge \"Revert \"APM: Avoid route change mute of isolated sounds\"\""
    },
    {
      "commit": "4a5b48197acdeaa397bf63a753af550bdea1b361",
      "tree": "c224cba0fe55a8dca9deff2519a2fc9fedd7e7ef",
      "parents": [
        "7c7124e693b20eafb4e0e86f996419c5597e0fbf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 08 17:22:32 2018 +0000"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 08 17:22:32 2018 +0000"
      },
      "message": "Revert \"APM: Avoid route change mute of isolated sounds\"\n\nThis reverts commit 7c7124e693b20eafb4e0e86f996419c5597e0fbf.\n\nReason for revert: suspect for b/70332110\n\nChange-Id: Ia19a59018c705faa9ac521353da3d417dbbfe2ef\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": "d24be7ca2491048892905734cb8a1e77440df948",
      "tree": "370f8ad0498bcb27aa9995cc74ec4356ca12629e",
      "parents": [
        "7fbc087b2187bc67f921d843a59a367c6431eb14",
        "c0c831a8811b438093ca7f1d01b0ccf8c2a345d3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 30 20:31:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 30 20:31:27 2018 +0000"
      },
      "message": "Merge \"Fix explicit routing failed.\""
    },
    {
      "commit": "c0c831a8811b438093ca7f1d01b0ccf8c2a345d3",
      "tree": "5cf5f9aa3c6d0e6c55a1dfec40a7e322e42414f4",
      "parents": [
        "3923b1b71628e668f9b11ed4891ed2840dd331cd"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Jan 29 17:55:15 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Jan 29 21:13:59 2018 -0800"
      },
      "message": "Fix explicit routing failed.\n\nIn AudioPolicyManager.getInputForAttr, we should get device descriptor\nfrom available input devices, but not output devices. When using output\ndevices, the explicit routing will never work.\n\nBug: 72670086\nTest: run cts\nChange-Id: Ib37ffb70334afc6c7c8ddd7baf6439b146205d45\n"
    },
    {
      "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": "c3c1fc630e21f36d2e3f56fac3503c471fbc3a15",
      "tree": "921aa645df7244475712d172ba9349046aad2106",
      "parents": [
        "254d783c0db9d7af6b863ad1819f5c4a543a939d",
        "f317240cde612c3509c7d0950484516ed33fd664"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 24 17:41:23 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 17:41:23 2018 +0000"
      },
      "message": "Merge \"Trivial comment fix\""
    },
    {
      "commit": "34abab103a6eb3fc7417c9e9169ee172b2303952",
      "tree": "df4065ab25ab83d7380715b42ad7c79d0d436873",
      "parents": [
        "fe4e4db4615585fd70a55d52f21c55dd517d2bfa",
        "07be14fb96fc5c106ea2b874faf2b768f468eb8e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:26:16 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 06:26:16 2018 +0000"
      },
      "message": "Merge \"Revert \"Audio V4: Split system and vendor Audio.h\"\""
    },
    {
      "commit": "07be14fb96fc5c106ea2b874faf2b768f468eb8e",
      "tree": "01cd8f75542d7581505bef8a5b9e2f09790ac0e1",
      "parents": [
        "f8ad7f85e9891b2614338330c75ae9e946fccc5a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:14:03 2018 +0000"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:14:03 2018 +0000"
      },
      "message": "Revert \"Audio V4: Split system and vendor Audio.h\"\n\nThis reverts commit f8ad7f85e9891b2614338330c75ae9e946fccc5a.\n\nReason for revert: Breaks the build of multiple devices\n\nChange-Id: I24f17a0fa0c7ba171c4a3639f890e7f4e42f6b1e\n"
    },
    {
      "commit": "6a784e71ca122347789faa73367877d41831592f",
      "tree": "de25d71706442e18346a5785f4174aba5604454d",
      "parents": [
        "f7a14c051ee9bd5f288963f3c190642e4915250b",
        "f8ad7f85e9891b2614338330c75ae9e946fccc5a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 04:04:48 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 04:04:48 2018 +0000"
      },
      "message": "Merge changes from topic \"audio-hal-v4-tmp\"\n\n* changes:\n  Audio V4: Split system and vendor Audio.h\n  Audio V4: Use the framework audio.h instead of the HAL\u0027s\n"
    },
    {
      "commit": "61309523e6332addbd648c0d1bf25d35d6fd7b90",
      "tree": "d7bd244a6e75f5d7b443606ade3d2809b0ef6fc3",
      "parents": [
        "bd1f998721a5c17623043c415fa2a0bb3e57601f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jan 23 09:58:17 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jan 23 17:36:24 2018 -0800"
      },
      "message": "Notifications are not duplicated over multiple devices\n\nSonifications follow media routing, except for speaker playback\n  where they follow the \"safe\" path when available in the\n  absence of media playback.\n\nTest: 1/ plug headphones on phone, play notification, verify it\n         comes only from headset\n      2/ mirror device and play media, then notification, verify\n         it only comes from the speaker\n\nChange-Id: I762ad0688e879ad1e5565b4b77a7393fa7ce7ac5\n"
    },
    {
      "commit": "f317240cde612c3509c7d0950484516ed33fd664",
      "tree": "a56d57db0c7e43b1e4d04cf0613bde8dde594995",
      "parents": [
        "4ca350708ba8152d2832e7177eb028c8fb1c591d"
      ],
      "author": {
        "name": "Scott Randolph",
        "email": "randolphs@google.com",
        "time": "Tue Jan 23 17:06:53 2018 -0800"
      },
      "committer": {
        "name": "Scott Randolph",
        "email": "randolphs@google.com",
        "time": "Tue Jan 23 17:08:15 2018 -0800"
      },
      "message": "Trivial comment fix\n\nAdded missing letter in a word in a comment\n\nTest: NA\nChange-Id: Ica94700c0d42b0f0703d3d6c4867679b313eaf18\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": "f8ad7f85e9891b2614338330c75ae9e946fccc5a",
      "tree": "957d47ddc7419c688dda1d4c1ac3068eda6d894f",
      "parents": [
        "6d7582e9ad858301b3eeff7b187af6c34808cb7e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 17 15:57:39 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Sat Jan 20 21:39:40 2018 -0800"
      },
      "message": "Audio V4: Split system and vendor Audio.h\n\naudio.h and its dependencies (audio-effect.h, sound_trigger.h...)\nused to be shared between system and vendor code.\n\nThis led to multiple problems:\n\n1) Such sharing contradicts the Treble policy of\nstrict independence of framework and vendor code.\n\n2) When audio.h was changed, every vendor needed to update\nits code in the next release. This meant that audio*.h\nheaders were mostly changed in backward compatible manner.\nNevertheless, for P the HIDL interface and thus the audio.h\ninterface are changed in backward incompatible way.\n(Some enum are becoming 64 bit long).\n\n3) As the headers were common, some API used only by the framework\nneeded to be visible to the vendors (mostly enum values).\n\n4) Treble policy is to support at least one previous HAL version\n\nAs a result the audio*.h headers are now duplicated,\none set for the framework, and one for the vendor.\n\nEach set will evolve independently. After this split,\nthe framework-only APIs will be removed from the vendor headers\nand vice versa.\n\nThe split is implements as such:\n\n + for system code\n\n    - NOT moving the libaudio_system_headers\n      Eg: system/audio.h and system/audio_effects/effect_equalizer.h\n          are still in system/media/audio\n\n    - the legacy audio HAL API that were in libhardware headers\n          are now in libaudiohal_legacy_headers\n      Eg: hardware/audio.h and hardware/audio_effect.h\n          are now in frameworks/av/media/libaudiohal/legacy/\n\n + for vendor code\n\n    - moving libaudio_system_headers and the legacy audio HAL API\n          that were in libhardware_headers in\n          android.hardware.audio.common.legacy@2.0\n      Note that those headers are now versioned, so migrating to a @4.0\n          HIDL HAL will mean changing the legacy dependency too.\n      Eg: system/audio.h, system/audio-effect.h, hardware/audio.h\n          are now in hardware/interfaces/audio/common/2.0/legacy\n\n    - the legacy audio effect HAL API that was in libaudioeffects\n          is now moved in android.hardware.audio.effect.legacy@2.0\n      Eg: audio_effects/effect*.h are now in\n          hardware/interfaces/audio/effect/2.0/legacy\n\n    - the legacy sound trigger HAL API that were in libhardware_headers\n          is now moved in android.hardware.soundtrigger.legacy@2.0\n      Eg: hardware/sound_trigger.h is now in\n          hardware/interfaces/audio/effect/2.0/legacy\n\nlibaudioutil being used by both system and vendor, had\nto be renamed for system to libaudioutil_system.\n\nVendor libs that now depend on the audio.h of a specific\nversion and are not extensively referenced in non google code,\nappend @2.0 to their name.\n\nNote that headers that are not expected to change in the 4.0 HAL are\nleft in all-versions folder to avoid duplication.\nThis is an implementation detail as the versioned libraries export\nthe all-versions headers.\n\nNote that strict vendor-system separation is enforced by the\nbuild-system. The system headers are not available for vendor\nlibs and vice-versa.\n\nNote that this patch is split between numerous git repository (\u003e10),\nall the commits having the same Change-id for searchability.\n\nNote that audio_policy.h is no longer exposed to vendors\nas the legacy audio policy HAL API was never officially supported.\nAs a result the audiopolicy stub implementation has been removed.\n\nTest: compile taimen-userdebug walleye-userdebug\n              sailfish-userdebug marlin-userdebug\n              gce_x86_phone-userdebug gce_x86_phone\n              full-eng aosp_arm aosp_x86-eng\nTest: check that the emulator booted and played audio\nTest: full QA on sailfish-userdebug and taimen-userdebug\nBug: 38184704\nChange-Id: I950f4e0a55613d72e32eba31bd563cb5bafe2d1a\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "65a438c6429c7f46cb0ab056c7f672ea0aa9e7f5",
      "tree": "d2b98e3247afd27d7272d23b226dc4e10fb8f5f9",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788",
        "f4ddfefc8ba59a8486d91826154cc9447821409e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 20 04:09:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 20 04:09:36 2018 +0000"
      },
      "message": "Merge \"Don\u0027t record audio if UID is idle - media framework\""
    },
    {
      "commit": "e2204b2b8605d74a4692c7df9e424aefcfe1add7",
      "tree": "0658ecda43a84713a6561f1583a977e4a4279f13",
      "parents": [
        "b53918f67421c7f2ab671fc59fcc2df2237ea14a",
        "7c605f65099f4db2ece707e07b5e844d5eefc9a6"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Fri Jan 19 20:05:43 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 20:05:43 2018 +0000"
      },
      "message": "Merge \"AudioPolicy: enable phone apps to mute VOICE_CALL stream\""
    },
    {
      "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": "7a098c5e4366b9e2503b0211a82463e8a1cb0525",
      "tree": "d0c93e2f27d2937b456aefeb0c7474c2bd727399",
      "parents": [
        "0ee31da6c3dabe244559561ae94169784efef376"
      ],
      "author": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Wed Dec 06 15:25:17 2017 -0800"
      },
      "committer": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Thu Jan 04 16:11:08 2018 -0800"
      },
      "message": "Check audio profile by config mask\n\nBug: 68231490\nTest: lunch gcar_emu-x86 \u0026\u0026 m -j\nChange-Id: I8f63fb75ff0095a9855db3846ae9bb310bf934ee\n"
    },
    {
      "commit": "7c605f65099f4db2ece707e07b5e844d5eefc9a6",
      "tree": "d39eee50d13843d2027c6fe10db30746ccdcdd2f",
      "parents": [
        "49f36ba3b4624ddd3d7efa34c95128a73bda6208"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Mon Dec 25 00:01:52 2017 +0200"
      },
      "committer": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Mon Dec 25 11:56:54 2017 +0200"
      },
      "message": "AudioPolicy: enable phone apps to mute VOICE_CALL stream\n\nThis change enables an app that has the MODIFY_PHONE_STATE\npermission to mute the VOICE_CALL stream.\nThe change adds specific handling in  AudioPolicyManager\nfor the case in which volume index is 0 and stream type is VOICE call.\nThe permission check is done in the AudioService Java code for the\ncalling process.\n\nBug: 71017199\nFixes: 71017199\nTest: Tested manually\nChange-Id: Ibbf3b6948a4384a963d00347ebd04ccf6d56ebd5\n"
    },
    {
      "commit": "49f36ba3b4624ddd3d7efa34c95128a73bda6208",
      "tree": "9427c132f2f998021c1ae06078174c3396bc5f54",
      "parents": [
        "b3ded702104331ae35597eef28f670e407a1b519"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 06 13:02:02 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 22 20:05:46 2017 +0000"
      },
      "message": "Logs use either %#x or 0x%x for flags, channel mask, format, device\n\nPreferred is %#x but 0x%x is also permitted because it is widely used.\n\nThe benefit is that it reduces ambiguity and possible confusion,\nwithout needing to read the source code for each log.\n\nTest: builds OK and logs are less ambiguous\nChange-Id: Ie2404e071d22278b8bba1e094ad336887844212c\n"
    },
    {
      "commit": "04a86634014027c47acb4e5833ac87770aeb071f",
      "tree": "df6dbc86c4c532bd3da17a572d93c685c087429d",
      "parents": [
        "c894bf6753a1f04f45bda625984c2d1830956651"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 15 18:01:42 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 21 17:34:58 2017 -0800"
      },
      "message": "audiopolicy: Add patch creation tests\n\nAdd a test that verifies rejection of bad parameters for\n\u0027createAudioPatch\u0027.\n\nAdd a test that creates a patch between mixPort and devicePort.\n\nNo bugs have been found this time.\n\nTest: audiopolicy_tests\nChange-Id: I431e225d9dba0097e3d73796585dbe7f404d1cec\n"
    },
    {
      "commit": "bcbcb1bdda4f1970830fa4924e3a5f24171ae005",
      "tree": "9b1523a2e1e60e1a44582240f040581617fedaf0",
      "parents": [
        "823267338b2bee8c279306c07775feabfc2434a5"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 13 13:03:35 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Sat Dec 16 00:52:18 2017 +0000"
      },
      "message": "audiopolicy: Add more tests, fix issues found\n\nAdded tests that ensure correct initialization of APM.\n\nFixed issues:\n\n  -- UB in VolumeCurvesForStream::volIndexToDb due to not\n     checking that the pointer is non-null;\n\n  -- AudioInputDescriptor::open and SwAudioOutputDescriptor::open\n     were not checking that the returned IO handle is valid,\n     this was causing an infinite loop in\n     AudioPolicyManager::selectOutputForMusicEffects, added an\n     assertion.\n\n  -- Memory leak of VolumeCurves collection in APM.\n\nTest: audiopolicy_tests\nChange-Id: Ia4ecca1dd03b74d7f93720f042da05d5a0c74a6b\n"
    },
    {
      "commit": "2a8dbc7611d3861d696c167ebdced50158bbebe1",
      "tree": "3344d4d0969a5165a4ff962a0026ee77bc05493a",
      "parents": [
        "f053e8c9c858f31888665fa5deb74eacce877ec6"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 15 09:31:34 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 15 09:32:44 2017 -0800"
      },
      "message": "audiopolicy: Add MULTILIB statement into makefile\n\nThis fixes builds that have only 32-bit or 64-bit version\nof audio server libraries.\n\nTest: build\nChange-Id: I4dc3bbe2e266a0b24d25ac00a8a2b54382b76e3d\n"
    },
    {
      "commit": "ad3f8a1082c101f2c218be64e48ae615676952ea",
      "tree": "ec94ad27cebafe5eccc8e04fa9b80ad20932813d",
      "parents": [
        "ceedc87e48c92e248123b9a9476053456e62e006"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Dec 12 13:24:23 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 13 16:20:45 2017 -0800"
      },
      "message": "audiopolicy: Add unit tests build target\n\nThis change adds audiopolicy_tests target for running\nunit tests of AudioPolicyManager class.\n\nAudioPolicyManager class is modified to allow\nfiner control over the configuration loading.\n\nTest: audiopolicy_tests\nChange-Id: Icf0cd7ff5b3b8b827b4f6909ff2c138ac2a2b82e\n"
    },
    {
      "commit": "733ce945741b1fc12cee92d8133c3136b4e6e0e0",
      "tree": "fbf765136f3dcccf9595c49bdc949e426194c379",
      "parents": [
        "447d53631b7560eace6016b2711a75533339cbcc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 12:18:25 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 12:45:51 2017 -0800"
      },
      "message": "audio policy: fix HAL stream activity ref counting\n\ncommit f05fc906 did not take into account the specificities of duplicated\noutputs causing a crash when accessing the profile (null for duplicated outputs)\nand not counting activity resulting from duplicated output activity.\nAlso account for HW source activity when connected to an output mix.\n\nBug: 70319466\nTest: CTS tests for AudioTrack and AudioRecord\nTest: audio smoke tests\n\nChange-Id: Id0364170794302e42212a90e1b40e28c1e7193fe\n"
    },
    {
      "commit": "447d53631b7560eace6016b2711a75533339cbcc",
      "tree": "aee66d64d06c2651d19e09774d824aeabb7a0933",
      "parents": [
        "ae60317f881c9ed064a2cc75a091d2451ae23a0a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 17:59:20 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 12:45:51 2017 -0800"
      },
      "message": "Revert \"Revert \"audio policy: fix regression in A2DP playback\"\"\n\nThis reverts commit 460451e5d7b9813926fe8fc17283e77b63adaee7.\n"
    },
    {
      "commit": "ae60317f881c9ed064a2cc75a091d2451ae23a0a",
      "tree": "976efafd8eb23d9e0b08d4ea06e92ea876c9ef7d",
      "parents": [
        "3974e3b22856ef35dd73760056ff38b7a4062176"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 17:59:01 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 12:45:51 2017 -0800"
      },
      "message": "Revert \"Revert \"audio policy: add parsing for profile max open and active count\"\"\n\nThis reverts commit 79e94ec95e5d2a8c13998c2f05ae63326f7468d0.\n"
    },
    {
      "commit": "3974e3b22856ef35dd73760056ff38b7a4062176",
      "tree": "2d6d5c222659f327302f69a833744b5ba7e1f74f",
      "parents": [
        "ea5523d88c6dc9662621db5fc62bf50eff0fe4ba"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 17:58:43 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 12:45:51 2017 -0800"
      },
      "message": "Revert \"Revert \"audio policy: add open and active count for IO profiles\"\"\n\nThis reverts commit 7b0e95327267f08e36b38fdd8fb2624e251b8e97.\n"
    },
    {
      "commit": "53b810ead5b726994fe6a28c6fa955e7b8799aaa",
      "tree": "15653882b1b062369bc046d9ef92ccfdffbe1281",
      "parents": [
        "5fb93fa294ee05a25f86312e926b5ca4e0d1d3b2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Dec 10 17:25:10 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 11 14:30:37 2017 -0800"
      },
      "message": "audio policy: fix device address passed when opening HAL  streams\n\nCommit fe231127 caused a regression where the device address is\nnot passed properly to audio HAL by openInputStream() or\nopenOutputStream(). The address must be read from available\ndevice descriptors, not supported devices in profiles which do not\nhave the current device address for removable devices.\n\nBug: 70321528\nTest: audio smoke tests,CTS  AudioRecordTest\nChange-Id: I83211a31f86391b80c3c244b436a2e36923ccea0\n"
    },
    {
      "commit": "b567ba06331aeac314f74c87f2e7b9badb4d6518",
      "tree": "e94de3eaa72bdec82109bce2ed608fa95ba3a604",
      "parents": [
        "1b2a794a27caab3a1320d22b872b04ef73e96555"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 11:16:27 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 17:23:26 2017 -0800"
      },
      "message": "audiopolicy: Refactor AudioPolicyManager::updateCallRouting\n\nThe code of the function had almost identical paths for\nRx and Tx patches creation. Factored them out, now it\u0027s much\neasier to see what is common, and what differs.\n\nTest: audio in still present incoming and outgoing telephony calls\nChange-Id: Ia02179513d76809e33c65b2dad465358acdbfc63\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": "2773dd7219e6cdc56471501c90808a1bafc31d39",
      "tree": "9a514d61c4b618a1a2599c766e0e5b088876e542",
      "parents": [
        "a5e165d3a9074c09b67df5a89aa26b153cf69562"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 10:12:11 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 12:03:28 2017 -0800"
      },
      "message": "audiopolicy: Use C++11 atomics, factor out handle generation\n\nUpdate the code to use C++11 atomics. Make sure that\nunsigned ints are used as id counters (signed ints have undefined\noverflow behavior). Factor out common code from AudioPatch\nand AudioPort.\n\nTest: compiles\nChange-Id: Ic359e97795a6282a2937d88bead8a1de27c8db7a\n"
    },
    {
      "commit": "a5e165d3a9074c09b67df5a89aa26b153cf69562",
      "tree": "c41079e712a68ff295d8bb7bf713885ca63a2682",
      "parents": [
        "22f920a8a520614d872024400bf0e371c77dcc7e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 17:08:02 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 12:01:19 2017 -0800"
      },
      "message": "audiopolicy: Make fields of HwModule private\n\nIt\u0027s a good practice not to expose fields of the class.\nUse getter / setter methods instead.\n\nTest: compiles\nChange-Id: I9d939d17fafdfff016a300d4f5a979bdc8414f2b\n"
    },
    {
      "commit": "2478d528186436f693b02c3534f04425086b638c",
      "tree": "d0b3cd0db05607b688da0b4c24f23513dcb47c46",
      "parents": [
        "cf84e596c53d5f85b64665a66ed2ec212ecff618"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 13:02:28 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 16:43:38 2017 -0800"
      },
      "message": "audiopolicy: Use range for loops in managerdefinitions classes\n\nUse \"range for\" loops where it improves readability.\n\nChange-Id: I4fc0360956b7aa70b9e282b83f6bb371c05a8522\nTest: compiles\n"
    },
    {
      "commit": "cf84e596c53d5f85b64665a66ed2ec212ecff618",
      "tree": "37382644a3e514337cdbb1882ee6a272680758fd",
      "parents": [
        "7e22e94d0654d7ab4c31aee7f7120542e358a5ab"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 11:25:11 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 16:43:38 2017 -0800"
      },
      "message": "audiopolicy: Refactor and fix loops in AudioPolicyManager\n\n  -- Use range for loops where possible.\n\n  -- Replace some loops over DeviceVector with a call to already\n     existing search function.\n\n  -- Fix unsigned integer overflow in a loop that decrements\n     the loop counter.\n\nChange-Id: I2ab544b8176310c15c16c04b72c2800d8526e5a5\nTest: compiles\n"
    },
    {
      "commit": "7e22e94d0654d7ab4c31aee7f7120542e358a5ab",
      "tree": "4ac3687d1298ab0c5387f8346318272792c4e23e",
      "parents": [
        "4f1e084744ee82f29a8e6c04f99a1d915e44be12"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 10:04:29 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 16:40:20 2017 -0800"
      },
      "message": "audiopolicy: Minor cleanups\n\n  -- ensure opening bracket in \u0027for\u0027 loops is at the same line\n     with the loop statement;\n\n  -- remove \"-\" probably appeared from merge conflict resolution.\n\nChange-Id: I1ac5bc51def6f1a208042d55608e9f6e90ef8205\nTest: compiles\n"
    },
    {
      "commit": "7b0e95327267f08e36b38fdd8fb2624e251b8e97",
      "tree": "0c412e78c95e72016e18612167e463ccb3205da2",
      "parents": [
        "79e94ec95e5d2a8c13998c2f05ae63326f7468d0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 12:20:56 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 22:26:21 2017 +0000"
      },
      "message": "Revert \"audio policy: add open and active count for IO profiles\"\n\nBug: 70319466\n\nThis reverts commit f05fc9061254a3329bf0a3b40e27cac87b51b4cc.\n"
    },
    {
      "commit": "79e94ec95e5d2a8c13998c2f05ae63326f7468d0",
      "tree": "54df020a89feb83f12f0fd0ecef243e1c8d3f875",
      "parents": [
        "64ed5cb45b3226c5c946603c026e1b73d14ee7d8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 12:20:45 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 22:24:40 2017 +0000"
      },
      "message": "Revert \"audio policy: add parsing for profile max open and active count\"\n\nBug: 70319466\n\nThis reverts commit 89984a0cbb2bc52112d7b98f5f1c13001326b130.\n"
    },
    {
      "commit": "64ed5cb45b3226c5c946603c026e1b73d14ee7d8",
      "tree": "75df581a30722231c471363983f5bff75b2cede0",
      "parents": [
        "44804b4c684b4b870cf0df1e7ace11a152eeec19",
        "460451e5d7b9813926fe8fc17283e77b63adaee7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 07 21:53:30 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 07 21:53:30 2017 +0000"
      },
      "message": "Merge \"Revert \"audio policy: fix regression in A2DP playback\"\""
    },
    {
      "commit": "460451e5d7b9813926fe8fc17283e77b63adaee7",
      "tree": "7fb04597d265f47100d93d98ae91a394ae2ade21",
      "parents": [
        "3a0bd6fcb215376eb3f27b5b4588a13f6f0f9a34"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 12:20:33 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 21:17:40 2017 +0000"
      },
      "message": "Revert \"audio policy: fix regression in A2DP playback\"\n\nBug: 70319466\n\nThis reverts commit 995ba712ed77e36129485f5ac811cf328d0a27f6.\n"
    },
    {
      "commit": "44804b4c684b4b870cf0df1e7ace11a152eeec19",
      "tree": "0da1c4240615fdac87dfa2de5a293dae6e2cdd4b",
      "parents": [
        "3ad57c2e5b0e8d58f05314c947ff615671571e97",
        "d4120148e72b2352f19f74dd493e903992371ef9"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 16:41:57 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 07 16:41:57 2017 +0000"
      },
      "message": "Merge \"audiopolicy: Refactor HwModuleCollection\""
    },
    {
      "commit": "d4120148e72b2352f19f74dd493e903992371ef9",
      "tree": "fe81d9ec22eda9966fddaf89388c7870efb76a58",
      "parents": [
        "3a5608cf069994725f6e50950f0462e91dcd8c51"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 06 15:49:22 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 06 18:00:54 2017 -0800"
      },
      "message": "audiopolicy: Refactor HwModuleCollection\n\n -- make AudioPolicyManager::mHwModules to only store\n    loaded modules; all modules stored in mHwModulesAll;\n    this removes lots of checks for HwModule::mHandle;\n\n -- use \"for range\" loops when iterating over mHwModules;\n\n -- use HwModulesCollection::getModuleFromName for finding\n    the remote submix module;\n\n -- log statements print HwModule\u0027s name instead of index.\n\nTest: audio still works\nChange-Id: I2d86caae23e87e25b6a367cb4042741f0b32e99c\n"
    },
    {
      "commit": "995ba712ed77e36129485f5ac811cf328d0a27f6",
      "tree": "9159f47fec4b7e14b950cd3602bfefba8bb84997",
      "parents": [
        "1b2de88f1659106dadf31794907f4fb66d8baec1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 18:45:46 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 18:45:46 2017 -0800"
      },
      "message": "audio policy: fix regression in A2DP playback\n\ncommit f05fc906 introduced a regression preventing playback over A2DP\nto resume after the second time an A2DP device is connected.\n\nBug: 70245910\nTest: Audio smoke test, CTS test for AudioTrack.\nChange-Id: Ic6b5da96debf62be08ae12efec27ad36854fe3c5\n"
    },
    {
      "commit": "3b935c6d9ada8fed370106c7741919e68e6e7c39",
      "tree": "7c7bd12ac4240bd4dc1349651efd77515511b9f4",
      "parents": [
        "f7e309d64bdbc37da47a6863025281c321f3cfd5",
        "89984a0cbb2bc52112d7b98f5f1c13001326b130"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 04 20:46:30 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 04 20:46:30 2017 +0000"
      },
      "message": "Merge \"audio policy: add parsing for profile max open and active count\""
    },
    {
      "commit": "1ac4db1cbe8ce9da74a54cad95879499d536ffb4",
      "tree": "9ad8fbe7c8ec9ef6959d87db08868f4e13687a42",
      "parents": [
        "261be854cf49b978d5591d669e9d7943749c6028",
        "f05fc9061254a3329bf0a3b40e27cac87b51b4cc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 04 20:35:30 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 04 20:35:30 2017 +0000"
      },
      "message": "Merge \"audio policy: add open and active count for IO profiles\""
    },
    {
      "commit": "9db89dcf3660ceb942a056f6642936522862b8e8",
      "tree": "1e9ab7f4836f6b72f868cc0fd0a0127511b49e05",
      "parents": [
        "9410a2f434162790badead38fa5e65e697b1674e",
        "fe23112742eeb6199c3aa1f3dfcf800fc2aa0e26"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 04 19:12:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 04 19:12:44 2017 +0000"
      },
      "message": "Merge \"audio policy: refactor output and input opening\""
    },
    {
      "commit": "89984a0cbb2bc52112d7b98f5f1c13001326b130",
      "tree": "313ee27abab6102d5c72367a3d15c788f276f031",
      "parents": [
        "f05fc9061254a3329bf0a3b40e27cac87b51b4cc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 22 15:43:49 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 28 09:36:49 2017 -0800"
      },
      "message": "audio policy: add parsing for profile max open and active count\n\nAdd parsing of \"maxOpenCount\" and \"maxActiveCount\" for input and\noutput profiles in audio_policy_configuration.xml\n\nTest: Manual with modified audio policy configuration file\nChange-Id: I352875912bacd81776e9f2e72c37bc3d3d2ac4df\n"
    },
    {
      "commit": "f05fc9061254a3329bf0a3b40e27cac87b51b4cc",
      "tree": "aa6f6c000bc5dcf7264e76cc24a354265fd53970",
      "parents": [
        "fe23112742eeb6199c3aa1f3dfcf800fc2aa0e26"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 21 12:08:15 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 28 09:35:17 2017 -0800"
      },
      "message": "audio policy: add open and active count for IO profiles\n\nRemove the hardcoded limit of one open output stream per IO profile\nand add a max open count per IO profile.\nSame thing for maximum number of active input streams per IO profile.\n\nNow both the maximum number of opened streams and active streams for\na given profile is stored in that profile.\n\nFor now only defaults are set corresponding to legacy behavior,\nbut these values will be loaded form the audio policy configuration file.\n\nTest: AudioTrack and AudioRecord CTS tests\n\nChange-Id: I5ebcc7f8a06b3f0a52815d241c561bb65e036026\n"
    },
    {
      "commit": "dd60115699e42811289432dddfecaf4ab8d187fe",
      "tree": "2c2d43e715fe3f475dd8fd52b19c168bc0072d1d",
      "parents": [
        "cd742b9174eac9f8b6a108512818f2d3a2392ea8"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 27 14:53:37 2017 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 27 14:53:37 2017 -0800"
      },
      "message": "When surround setting is ALWAYS, report all surround formats.\n\nBug: 37960084\nTest: Manually test on fugu\nChange-Id: Ie8c7289c85fdc63216e637352ac0e2bbe1097a4a\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": "7db8b99d00f2399faba9de2f8b2c13b05d10aec5",
      "tree": "cef4ea60750b20629d21f3c3f33789acc8aaf12e",
      "parents": [
        "68f1d2842541f043ca318b01690a7cdb41b1df78"
      ],
      "author": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Tue Nov 14 13:26:54 2017 -0800"
      },
      "committer": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Tue Nov 14 14:18:59 2017 -0800"
      },
      "message": "Adds AUDIO_DEVICE_IN_FM_TUNER/_BUS to virtual input device list\n\nBug: 69311798\nTest: m -j\nChange-Id: I4e7de370c61be48b8dcfd178bbc47d7ce68fe107\n"
    },
    {
      "commit": "c990152585f6b654ffe7e1dbff483d4ecddc019b",
      "tree": "0e64a122e3f6e0188d49e6ec3be64f17a57fbc52",
      "parents": [
        "97e8b37f946c024d9cad312fd7f1a30f56cb3302"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Nov 10 20:07:54 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 13 14:37:58 2017 -0800"
      },
      "message": "Check for valid format before match in AudioPolicyManager::selectOutput\n\nTest: MediaPlayerTest#testConcurentPlayAudio\nBug: 69054370\nChange-Id: I11763187d4e7b69f8b242547d1e9e27afe6223be\n"
    },
    {
      "commit": "8f8932c41e7c0a1f65e3556733ed33bbc88793ce",
      "tree": "b93e401ecbe5c0e5152a227b604dcc99999a6ddc",
      "parents": [
        "7c92ffe076acb119ba58777519b9d2d2efc0f627",
        "f4e63452b37c799c9387a6a88b46e6191f6a5f7e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 06 21:37:01 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 06 21:37:01 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"audio policy: refactor getOutput() method\"\"\""
    },
    {
      "commit": "8f4563efb2ff1e0cf5428d227d5a29623b1e27e7",
      "tree": "2cd0fd57a177c9c9bf315c5b9e27283694e71161",
      "parents": [
        "e72b63e9fb2161880704724b597bea57eeb77499",
        "575bb3aa6358661addac9fa8204630a27056b129"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 06 20:45:25 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 06 20:45:25 2017 +0000"
      },
      "message": "Merge \"Config deserialization: allow negative gain\""
    },
    {
      "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": "9a60e1ad4762bd428ddc158e5a50641649698ec4",
      "tree": "a08455486befa3d1ed0ebd6d3eb8257f51dcfb7d",
      "parents": [
        "a75fdf5ff87a75a52e5d782d0169ca61fe39e95c",
        "5ff158fd499f581bdc1c3e91bbc03ce15eeeb77c"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Nov 01 15:47:39 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 01 15:47:39 2017 +0000"
      },
      "message": "Merge \"Fix integer sanitizer in audiopolicyservice.\""
    },
    {
      "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": "575bb3aa6358661addac9fa8204630a27056b129",
      "tree": "fd8a1ace3283d4c4094d76ac17a267667ba3241d",
      "parents": [
        "6086cd30a510375fb7d060467ef062f7ba697f3c"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Oct 27 16:49:20 2017 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Oct 27 16:49:20 2017 -0700"
      },
      "message": "Config deserialization: allow negative gain\n\nAudio policy configuration deserializer did not support negative gains\nin audio profiles.\n\nAs those gains are most always attenuation (negative) this mean that\nprofile can not currently contain gains.\n\nTest: policy sysdump show negative gain\nTest: play music and assistant work on speaker, skylab\nBug: 68229318\nChange-Id: I7d72a0dd464aa77847d7e3ec0cfb4dcf7ac25b24\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "7c7124e693b20eafb4e0e86f996419c5597e0fbf",
      "tree": "6f6e1187fa69cd0eefed4a91a4deede6434ae699",
      "parents": [
        "c56f27b269800c1e8441908c3d564c63e0257f56"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Oct 20 12:03:34 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 23 11:42:29 2017 -0700"
      },
      "message": "APM: Avoid route change mute of isolated sounds\n\nTest: Notification and touch sound\nBug: 65497566\nChange-Id: I1ebe375dcac908ef3b9de18010366a59d041fdb2\n"
    },
    {
      "commit": "e156e8fff8b6523c82692ac3d75adb1005d36201",
      "tree": "9086e4f884f11a3842ccd8df53a3d87708d86b57",
      "parents": [
        "cadabe1d7243f9d78e50b7834842f9f86dbaab63",
        "f3b73f46c70a5a5530e1e628d59baf055c6ffd56"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 05 23:25:28 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 05 23:25:28 2017 +0000"
      },
      "message": "Soundtrigger service: fix cross deadlock with audio policy service am: 338e8ba374\nam: f3b73f46c7\n\nChange-Id: I8fdf045c57eb96e099d632f1a00b89bd6b3e62c5\n"
    },
    {
      "commit": "338e8ba374432cc4ee853f4fcefcf7bd7bae3bb9",
      "tree": "0f22e5975405924e3935701ae973ab3201f7524e",
      "parents": [
        "7b7f4e0f8bdf7542561ece15c4ffc2542fb7750d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 05 10:58:38 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 05 11:56:38 2017 -0700"
      },
      "message": "Soundtrigger service: fix cross deadlock with audio policy service\n\nDo not hold Module mutex when calling into audio policy manager to\navoid cross deadlock with audio poicy service mutex: Audio policy manager\ncan call into sound trigger service with its mutex held in methods like\nstopInput().\n\nRegression introduced by fix for b/64340921 commit f759b8c4\n\nBug: 64340921\nBug: 67310830\nTest: repro steps in b/67310830\nChange-Id: Ie50b2e7c55fe9828a3fd8de6b31eb4a492791583\n"
    },
    {
      "commit": "92197f86b1184133107ee66314467f4676850ab8",
      "tree": "2e35076e4f171f06c8d3e441dd7b3784226f917f",
      "parents": [
        "5d81cf35fb108d6a2412f770087861ad4be5020c",
        "282ca695834f9cf9f63536cab2d6592b18fc011a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 18 22:47:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 18 22:47:16 2017 +0000"
      },
      "message": "Fix various AAudio device selection issues am: ad2e7b902c\nam: 282ca69583\n\nChange-Id: I051d56560608444c47b5a827ef921b878e8f4a4e\n"
    },
    {
      "commit": "ad2e7b902c0432a0db40906a4b1f5b693ce439dd",
      "tree": "c4830cedbf63c641325e082fd30484a3bff58e49",
      "parents": [
        "b92c988ffc48f093ab8615896b02b8c8e10e19b2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 14 20:06:42 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 18 12:58:30 2017 -0700"
      },
      "message": "Fix various AAudio device selection issues\n\nBug: 65292224\n- Audio policy manager should not use an unavailable device when an explicit\nroute is requested. This causes a device selection made by a client to\nbecome sticky after device disconnection.\n\nBug: 64945845\n- Remove spurious device change callback occuring after registering a\nnew client to audio server by creating a specific configuration event\nfor client registration.\n- Do not keep strong references to device callback interfaces in\nAudioTrack, AudioRecord and AudioSystem.\n- Do not update selected device in AudioTrack and AudioRecord when\nnot active as the new device selection on the stream is because of other\nclients activity which is not relevant to an inactive client.\n\nBug: 65693340\n- Fix missing increment of SessionRoute ref count in getInputForAttr() for\nMMAP inputs\n\nTest: AAudio CTS tests\n\nChange-Id: I2a01b02e8b064d352004f6065495fd99aee55745\n"
    },
    {
      "commit": "7374d0182a525acb5dfe86f7dc7181c382502667",
      "tree": "9d0cb4d8b973272eee18f762fd458c27c6d10543",
      "parents": [
        "5e44deb3fa65eb3dd7c354d5b794240f8e70a88d",
        "2b7a321700c9588fa00f7d1de16713d14b168004"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Sep 14 16:57:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 14 16:57:52 2017 +0000"
      },
      "message": "Merge \"Fix aosp generic fallback configuration sample rate\" into oc-mr1-dev am: b26a52ce9e\nam: 2b7a321700\n\nChange-Id: I80394aadb1b95d0b164a78424c18dba7beb11e5f\n"
    },
    {
      "commit": "74c600844f656b4d449c967af1fa9ffbfedb7287",
      "tree": "104a7e62f5aa58afa4fedf4c613dafc6c9ec29b6",
      "parents": [
        "7ec98736f087a44d3f3045f304f7fc1ecb14b97f"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Sep 11 11:18:07 2017 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Sep 13 16:50:09 2017 +0000"
      },
      "message": "Fix aosp generic fallback configuration sample rate\n\nThe configuration sample rate format is restricted by the XSD.\nIt is supposed to be a list of number separated by commas.\nIn the generic configuration they was a space after a comma.\n\nBug: 65535343\nTest: Following script:\n\nsetup() {\n    BUILD_ID\u003d$1\n    TARGET_PRODUCT\u003d$2\n    TARGET_BUILD_TYPE\u003d${3:-userdebug}\n    TARGET_ARCH\u003d${4:-arm64}\n    set +x\n\n    echo \"The following three variables can be overridden\" \\\n         \"by setting the corresponding environment variable\"\n    set -x\n    TEST_SUITES_TARGET\u003d${VTS_TEST_SUITES_TARGET:-test_suites_${TARGET_ARCH}}\n    BASE_TARGET\u003d${VTS_BASE_TARGET:-${TARGET_PRODUCT}-${TARGET_BUILD_TYPE}}\n    AOSP_TARGET\u003d${VTS_AOSP_TARGET:-aosp_${TARGET_ARCH}_ab-${TARGET_BUILD_TYPE}}\n    set +x\n\n    download() {\n        local target\u003d$1\n        local file\u003d$2\n        test -f $file ||\n            /google/data/ro/projects/android/fetch_artifact --bid $BUILD_ID --target $target $file ||\n            { local r\u003d$?; rm $file; return $r; }\n    }\n\n    echo \"Downloading\"\n    download $TEST_SUITES_TARGET \u0027android-vts.zip\u0027\n    download $BASE_TARGET \"${TARGET_PRODUCT}-img-${BUILD_ID}.zip\"\n    download $AOSP_TARGET \"aosp_${TARGET_ARCH}_ab-img-${BUILD_ID}.zip\"\n\n    echo \"Unzipping\"\n    rm -r system.img android-vts\n    unzip aosp_${TARGET_ARCH}_ab-img-$BUILD_ID.zip system.img\n    unzip android-vts.zip\n\n    echo \"Building vbmeta without verity\"\n    avbtool make_vbmeta_image --flag 2 --output vbmeta.img\n\n    set -x\n    adb reboot bootloader\n    fastboot update ${TARGET_PRODUCT}-img-$BUILD_ID.zip --skip-reboot\n    fastboot flash vbmeta vbmeta.img || echo \"Warning: Device does not support vbmeta\"\n    fastboot erase system\n    fastboot flash system system.img\n    fastboot erase metadata\n    fastboot -w\n    fastboot reboot\n    \n    echo \"Board setup\"\n    echo \"You may now start vts-tradefed with:\"\n    echo \u0027$ ANDROID_BUILD_TOP\u003d PATH\u003d\"$PWD:$PATH\" vts-tradefed\u0027\n}\nVTS_TEST_SUITES_TARGET\u003dtest_suites_arm64_fastbuild3d_linux setup 4327646 sailfish\n\nrunTest() {\n    ANDROID_BUILD_TOP\u003d PATH\u003d\"$PWD/android-vts/tools:$PATH\" vts-tradefed run commandAndExit vts --skip-all-system-status-check --primary-abi-only --skip-preconditions --module VtsHalAudioV2_0Target -t CheckConfig.audioPolicyConfigurationValidation\n}\nrunTest\n# Test fail as expected\nadb root ; adb disable-verity ; adb reboot ; adb wait-for-device ; adb root ; adb wait-for-device ; adb remount\n# Apply the patch\nadb shell sed -i -e \u0027s/8000, 16000/8000,16000/\u0027 /system/etc/primary_audio_policy_configuration.xml\nrutTest\n# Test succeed !\n\nChange-Id: I2a39606cd820b5cd27a640248bf692204ec2cd71\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "16965f958bd9803699724c85b58cb82a73482e0f",
      "tree": "82f828b0928be0f6dc13d33214967c393b82771f",
      "parents": [
        "6c6c69e249e3069c627cbf85538e0b1549f2cbf7",
        "0111e0fe975a4ff43e9133f4a4ab7805dc188325"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:46:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:46: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 am: 122ec92c42 am: fa5a0cedea am: 19f0196da3\nam: 0111e0fe97\n\nChange-Id: Ica9a08d4629b753db96c3d455ed0bc585e48b67c\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": "3aedd716efab8780d046ca449c7bd8993c163d36",
      "tree": "a20bd0808b260b5e13d7be93175b8b18af001109",
      "parents": [
        "1612c4934e41aa4a881cecd76f6ae0a93c51797a",
        "fa5a0cedea92c922e695a9846148965a519eba53"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:38:24 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:38:24 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\nam: fa5a0cedea\n\nChange-Id: I984f888d01b2ef8d79297c8fa258d9f213b9bd0b\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": "c8f3cf02eb6c9f3246af40fd41872e3c79b3a689",
      "tree": "2cc06cc8a6ad6ad03692c0f6b8d561e57a7e595f",
      "parents": [
        "75612faf767b32cd4cdceded70e9bb2821890b0d",
        "355a18f58d63882c122db64702fdee66ce6fe857"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:24:48 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:24: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\nam: 355a18f58d\n\nChange-Id: I5f3a24175f1aa70fb1f8d62a449685e9103cad18\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": "0a8a0c44745624cfb19bfed21aa7a03ab47cdea3",
      "tree": "6c8ba7c40a8029f36445dc232fc89cd0fab1b53a",
      "parents": [
        "e77ea73939a337fc363814a34c15c076d32899c5",
        "e472e51100fca5ce7b5518480402ecc8d819ae39"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:10:43 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:10:43 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev\nam: e472e51100\n\nChange-Id: I82f359a057762b8b0fac97d137a2fb20083a518b\n"
    },
    {
      "commit": "0888c8495f51b7e1314bd24f5d7da8e738818dc1",
      "tree": "fff9cf38a16ca93862620e7b202a0cdf08b5a40d",
      "parents": [
        "53d72d1fe9add369b0dd35886e305d5d4ca30201",
        "469b161303e53d98b957e66247d013cc249b5b0e"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Aug 31 19:40:36 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 31 19:40:36 2017 +0000"
      },
      "message": "Merge \"APM: invert priority of sonification and enforced routing strategies\" into oc-mr1-dev am: 12907260c6\nam: 469b161303\n\nChange-Id: I6034bd3ba8b492bde1fcbb72ad5c153b8c06d635\n"
    },
    {
      "commit": "12907260c63d0d2a4710804a8c2d60417ea22b55",
      "tree": "d00765f3e89da673f6290bf59450b4921bba9e70",
      "parents": [
        "c4a226e8584b3d87c2503ddfcde336f63e7c6487",
        "178683baaf6fd23d80ce926cee103b3af8f9a9a8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Aug 31 16:59:20 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 31 16:59:20 2017 +0000"
      },
      "message": "Merge \"APM: invert priority of sonification and enforced routing strategies\" into oc-mr1-dev"
    },
    {
      "commit": "53d72d1fe9add369b0dd35886e305d5d4ca30201",
      "tree": "4a64dbaec5fb9e272b32b675b85b050ac0962d33",
      "parents": [
        "3f644e74f0974bae8a95b5e3a7624f6ebebb197c",
        "c986721b98341536b8f5cfd6f6f16ee4139faa30"
      ],
      "author": {
        "name": "Shuhei Miyazaki",
        "email": "Shuhei.Miyazaki@sony.com",
        "time": "Thu Aug 31 05:08:41 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 31 05:08:41 2017 +0000"
      },
      "message": "Merge \"Set output volume for routing device in startSource()\" into oc-mr1-dev am: c4a226e858\nam: c986721b98\n\nChange-Id: If40a0218b9d648cd5af71ef56b37661a4c4ec2b9\n"
    },
    {
      "commit": "178683baaf6fd23d80ce926cee103b3af8f9a9a8",
      "tree": "f2911079deed6c66d5d7b2f0445ffde014d4fafd",
      "parents": [
        "aba0e98b085cc613003bf42dbfe1ad0a3bb2348e"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Aug 30 18:07:06 2017 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Aug 30 18:23:14 2017 -0700"
      },
      "message": "APM: invert priority of sonification and enforced routing strategies\n\nOn device where the SONIFICATION (alarm, ringtone) strategy is\n  supported by SPEAKER_SAFE, prevent switching output devices\n  when the ENFORCED_AUDIBLE (shutter sound) strategy starts\n  by having SONIFICATION at a higher priority than\n  ENFORCED_AUDIBLE.\n\nTest: take photos while phone rings\nBug: 64386853\nChange-Id: I2f7bb45599bd51b2142611eefb84789a985e8841\n"
    },
    {
      "commit": "6fe70331b17a513765153afd7f895f807518bb91",
      "tree": "ac948ab97018c984ff14339584efb7282b6a5fbd",
      "parents": [
        "da071c34f3378a36d39ee0f89cdef4e1f98c3750"
      ],
      "author": {
        "name": "Shuhei Miyazaki",
        "email": "Shuhei.Miyazaki@sony.com",
        "time": "Mon Jul 31 15:21:28 2017 +0900"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 30 17:55:21 2017 -0700"
      },
      "message": "Set output volume for routing device in startSource()\n\ngetNewOutputDevice selects a device by checking active strategy when\nstartSouce() is called. This behavior sometimes leads to set\nunsupported device volume index. For example, BT A2DP resume from combo\noutput. a2dp output only supports A2DP sound devices. If sonification\nstream is played via A2DP and Speaker during music playback, volume\nindex for speaker is applied as music volume when resume playback until\nsonification stream is closed. At this time, A2DP device is selected as\nrouting device, so volume and routed device does not match.\nTo avoid this situation, setting volume index from supported device\nin startSource().\n\nBug: 64053820\nTest: Check volume after alarm sound finish during music playback via BT.\nChange-Id: I71dae2c77d82abc0227ec45fc6c40bfd8f51c8c2\n"
    },
    {
      "commit": "faa10a64016300504691653f4beb451cb66ec197",
      "tree": "34cc0270e00b49fff76021e45874a89dd8d539f6",
      "parents": [
        "032d22e18a59941c9a03802a126a9577ab5d193b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 25 15:52:05 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 28 14:50:58 2017 -0700"
      },
      "message": "Fix policy log typos\n\nTest: logs have space between values\nChange-Id: I9398d52db7e807e7d47254aacd6aaea33006070d\n"
    }
  ],
  "next": "5cd72d8b4f07ced237eaaa24c24ca90c5832bac7"
}
