)]}'
{
  "log": [
    {
      "commit": "bb6e414ae835f08083de839bae0ca284e1613b18",
      "tree": "6a454c07a9d192552a6fe450f3e4dfb3142a449b",
      "parents": [
        "b9dfc06a0c82928aa6ab94c16bd681e02baf3377"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 21 14:17:40 2018 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 21 14:56:56 2018 -0700"
      },
      "message": "CameraService: Enable presubmit unit tests, and fix them\n\n- Add cameraservice_test to presubmit TEST_MAPPING\n- Fix broken CameraProviderManager test\n\nTest: Fixed test passes; \u0027atest\u0027 in frameworks/av/services/camera/libcameraservice\n   runs the expected test\n\nChange-Id: Ia1ceaf526884325d56f0e273f89220fdb33493dd\n"
    },
    {
      "commit": "6b8cf11049740ef0aab5240515fb26b7933a43b2",
      "tree": "75e60f3695f36fc6f2e5733bdc82038b637558b9",
      "parents": [
        "1d7bc850165e38f164227a2cc5777d27870087f2",
        "29a50b741b0f29e468e5ae393488227a258ae900"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 20 18:10:12 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 20 18:10:12 2018 -0700"
      },
      "message": "Camera service: Extend UID check timeout to 300ms. am: 32b8c20dbc\nam: 29a50b741b\n\nChange-Id: Ie638575f69e0b232b4474ea042452b30e020a999\n"
    },
    {
      "commit": "29a50b741b0f29e468e5ae393488227a258ae900",
      "tree": "32da06b6aab89206f3e7c4f9fbcdf07523a6ee07",
      "parents": [
        "c29e0352bd8b870054acb2d01adc64f8be3092e8",
        "32b8c20dbc5a82252c7c21e42a95065908da626d"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 20 17:07:14 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 20 17:07:14 2018 -0700"
      },
      "message": "Camera service: Extend UID check timeout to 300ms.\nam: 32b8c20dbc\n\nChange-Id: Ie02747e029f9954980856c5d4b0295104f2aec62\n"
    },
    {
      "commit": "2aef6ece234601519899cd863347304a06c22e8b",
      "tree": "aa3e527e081a796fa4a7cc3e795859e633adf902",
      "parents": [
        "05435244e8c93c2fcf9ea6aefdc09854c7798e73",
        "24628310591c3b4d9701ebad9df7f5750dc599b2"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Mon Aug 20 19:47:35 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 19:47:35 2018 +0000"
      },
      "message": "Merge \"Add dynamic source default effects\""
    },
    {
      "commit": "32b8c20dbc5a82252c7c21e42a95065908da626d",
      "tree": "6d63298ca5bc7edc92f5f6b3cda3b5657d2b3cbc",
      "parents": [
        "11e0589b4dea913f66668ea483dd52eed3d3869b"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 20 10:27:58 2018 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 20 10:27:58 2018 -0700"
      },
      "message": "Camera service: Extend UID check timeout to 300ms.\n\nAlso make the timeout sleeping more granular, so that the wait\nwon\u0027t always be 300ms in case the initial checks fail.\n\nTest: Camera CTS passes\nBug: 110840510\nChange-Id: I3f0d09913b10526dd27cecca50c111712da82846\n"
    },
    {
      "commit": "be4be7b2b45747cc6a7e01695c2f6a663647452a",
      "tree": "d24ccf8376dc76b3d256c3d5d3aca9ec46a4559a",
      "parents": [
        "2b05ca303594cb0d1e9adff36468ea9352de718e",
        "9560b4cfd4b613a06e7df26fc5a5b70c8e094bd5"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Aug 17 17:57:38 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 17 17:57:38 2018 -0700"
      },
      "message": "Merge \"Aaudio: Implement app shareable flag instead of -size hack\" am: 51d361e77c\nam: 9560b4cfd4\n\nChange-Id: I890e048bc9ba3df65e6f4670b250c7303d4e1ee1\n"
    },
    {
      "commit": "9560b4cfd4b613a06e7df26fc5a5b70c8e094bd5",
      "tree": "83fabccd10506edc5fc97d4c12ec6cb57c5d74c7",
      "parents": [
        "88ab23b38558f66117ff351002e421062a4630ff",
        "51d361e77c038003d7aeab39e9d91ffb31332c1e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Aug 17 17:13:02 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 17 17:13:02 2018 -0700"
      },
      "message": "Merge \"Aaudio: Implement app shareable flag instead of -size hack\"\nam: 51d361e77c\n\nChange-Id: Iad460714000b179e96f984c2c48e70831cf15405\n"
    },
    {
      "commit": "2b040b3ee741b859eeff20835dcd511c4662ddec",
      "tree": "aed66de89652797be27b85b80b21a7a4d48f3ea4",
      "parents": [
        "a965d0a8ac30154cffe4ba1ba3ef097be8307300",
        "5786e01d64860448d93b681a59c7d5a60bc12298"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Aug 17 23:30:15 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 17 23:30:15 2018 +0000"
      },
      "message": "Merge \"NBLog: Restore log dump and add new logging types\""
    },
    {
      "commit": "51d361e77c038003d7aeab39e9d91ffb31332c1e",
      "tree": "dcc0e244081ba7e1aeaaed2680acc91da48ccb93",
      "parents": [
        "1984ca703ac3cfc362ab9c6d9436cb3afed136c2",
        "0b21bdd6bcc8d3177c171225ade60315750c2e7e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 17 23:03:44 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 17 23:03:44 2018 +0000"
      },
      "message": "Merge \"Aaudio: Implement app shareable flag instead of -size hack\""
    },
    {
      "commit": "5786e01d64860448d93b681a59c7d5a60bc12298",
      "tree": "5ac379a0d0ce652fd71b9f2fae34fb0b913ded6a",
      "parents": [
        "86be8728fb6efae5a35ed4840c45a2eafce06823"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Wed Aug 15 09:03:47 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Aug 17 14:57:40 2018 -0700"
      },
      "message": "NBLog: Restore log dump and add new logging types\n\nMerging is temporarily disabled for now because the readers managed by\nthe merger are the same as the ones used for the dumpsys log dump, and\nreading from the log effectively consumes the buffer. Eventually, the\nreaders for the two functionalities will need to be separated to avoid\nconflict. The dump of the merged buffer is also disabled, which removes\nthe dumping of histograms.\n\nThe new types added are monotonic thread cycle time, CPU thread cycle\ntime, CPU frequency, and latency (which will need to be specified in\nfurther detail later). Logging support is added only for monotonic\nthread cycle time at the moment.\n\nTest: build, log monotonic thread cycle time in FastThread, check output\nin dumpsys media.log -r.\n\nChange-Id: I1b781d6db102fb917fd0bac964eeebd0309234c0\nBug: 68148948\n"
    },
    {
      "commit": "4030f476b67f06b8fd19ab50c92cf8e16dab530a",
      "tree": "668608da7158f070ba5192904f2e8637667f921d",
      "parents": [
        "1cbc9f57f3d1c1d2fe1b9b806683022390154615",
        "5033aa19cd443559777b84acc63cad1177121cc9"
      ],
      "author": {
        "name": "Jayant Chowdhary",
        "email": "jchowdhary@google.com",
        "time": "Fri Aug 17 19:51:56 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 17 19:51:56 2018 +0000"
      },
      "message": "Merge \"Convert libcameraservice Android.mk -\u003e Android.bp module\""
    },
    {
      "commit": "0b21bdd6bcc8d3177c171225ade60315750c2e7e",
      "tree": "86a2cc162f0a17e33520bd1db40143d58935af70",
      "parents": [
        "b9e732b490d1245bf562b4b145cfbb5237864fd7"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Jul 12 19:37:41 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Aug 17 09:39:45 2018 -0700"
      },
      "message": "Aaudio: Implement app shareable flag instead of -size hack\n\nTest: adb shell data/nativetest64/write_sine/write_sine -pl -m3 -x\nBug: 38118159\nChange-Id: I349e10a00a5466f54e084f4745b1ed4776378c81\nMerged-In: I349e10a00a5466f54e084f4745b1ed4776378c81\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "21e21510fad00408998cba4dc58b181d0503407c",
      "tree": "cccf6c4ca566d953f28bc8af8a647d0291e814cf",
      "parents": [
        "68360cc2d2d7d6a02e02c7f20257c3e5fc88e241",
        "25942ed63017a57212ac81e5ab2862c71c8cdc6d"
      ],
      "author": {
        "name": "Yuuki Yokoyama",
        "email": "yuuki.x.yokoyama@sonymobile.com",
        "time": "Thu Aug 16 22:47:41 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 16 22:47:41 2018 -0700"
      },
      "message": "Merge \"Use default sample rate for only sw effect\" am: 71a2d52f19 am: 4fd142e2b4\nam: 25942ed630\n\nChange-Id: Ibfff6dfeda67a6248f271a3c5b6394e00e33cb90\n"
    },
    {
      "commit": "0c167267e1dd521a1288bd1746c42b0680ab5b88",
      "tree": "24f78cc75a992dd5a2865408f26591326769cc3a",
      "parents": [
        "88d5a224a3727ae03ff1bed629912435620fbc39",
        "97f00044dc1553b4baa0f94d5e6acbf1a552c115"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Thu Aug 16 20:44:07 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 16 20:44:07 2018 -0700"
      },
      "message": "Merge \"Set volume for output when effect is enabled/disabled.\" am: e778547997 am: e414f58cf5\nam: 97f00044dc\n\nChange-Id: I5430650ffe90b7f4f38ba97d85df91a2262420c7\n"
    },
    {
      "commit": "25942ed63017a57212ac81e5ab2862c71c8cdc6d",
      "tree": "71196fc27e5e6638ebf3886f0c6c77ba60e60e70",
      "parents": [
        "6e7843873cd53a32e1707e4b91fd765a2f08f1ef",
        "4fd142e2b4b9ee05f4f3f1513fdbe766ef504c6a"
      ],
      "author": {
        "name": "Yuuki Yokoyama",
        "email": "yuuki.x.yokoyama@sonymobile.com",
        "time": "Thu Aug 16 20:41:27 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 16 20:41:27 2018 -0700"
      },
      "message": "Merge \"Use default sample rate for only sw effect\" am: 71a2d52f19\nam: 4fd142e2b4\n\nChange-Id: Ibf3e021883b3b46433f65a7a506c2113fb44740e\n"
    },
    {
      "commit": "97f00044dc1553b4baa0f94d5e6acbf1a552c115",
      "tree": "13cf402e1c0e009d81175f8e74cdb42338fc4d1e",
      "parents": [
        "6c89c06053afacb57de196069ea928764a482246",
        "e414f58cf5bd1aa5216c8d2a10c2d0beff50d806"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Thu Aug 16 20:27:29 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 16 20:27:29 2018 -0700"
      },
      "message": "Merge \"Set volume for output when effect is enabled/disabled.\" am: e778547997\nam: e414f58cf5\n\nChange-Id: Ib35db79fe1b1c58794bcd8184954f7c2334cd908\n"
    },
    {
      "commit": "4fd142e2b4b9ee05f4f3f1513fdbe766ef504c6a",
      "tree": "bc0fc0ab1a71eef0d451bda506ff7454a5161f7b",
      "parents": [
        "28d0762b107a8c92f979f9c1d9f7932ddfedbe2e",
        "71a2d52f19d868751413e7664f208757b9214907"
      ],
      "author": {
        "name": "Yuuki Yokoyama",
        "email": "yuuki.x.yokoyama@sonymobile.com",
        "time": "Thu Aug 16 18:00:57 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 16 18:00:57 2018 -0700"
      },
      "message": "Merge \"Use default sample rate for only sw effect\"\nam: 71a2d52f19\n\nChange-Id: I5cfeb6b85446361f8aad95ac5783386ae2ac103f\n"
    },
    {
      "commit": "e414f58cf5bd1aa5216c8d2a10c2d0beff50d806",
      "tree": "33eeed8ef830a6212b87c4d79f9381ee70c6b8f4",
      "parents": [
        "62d118a444ddefa1b93829d23cec64d042664c39",
        "e778547997614d744c1d2a02a6ef50742a57f3ba"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Thu Aug 16 17:31:19 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 16 17:31:19 2018 -0700"
      },
      "message": "Merge \"Set volume for output when effect is enabled/disabled.\"\nam: e778547997\n\nChange-Id: If07541a0bc11a61312e2640c16aa4896deab353d\n"
    },
    {
      "commit": "71a2d52f19d868751413e7664f208757b9214907",
      "tree": "ac2ec89bc1cfe46c8f517325401087a7e626a1c7",
      "parents": [
        "ec40ae247d125af958489a3067030575fe4c9f52",
        "e17f831ef1ba0844e04826bb85455f7ca9c971c4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 16 22:32:42 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 16 22:32:42 2018 +0000"
      },
      "message": "Merge \"Use default sample rate for only sw effect\""
    },
    {
      "commit": "24628310591c3b4d9701ebad9df7f5750dc599b2",
      "tree": "84cad83437f52596eec9ff5a90763550e7bb0f48",
      "parents": [
        "edf39faeee8fbd0743e25ae7071ebcf0418e6c50"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Mon Aug 13 15:01:09 2018 -0700"
      },
      "committer": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Thu Aug 16 10:53:29 2018 -0700"
      },
      "message": "Add dynamic source default effects\n\nAllows runtime modification of what effects should be default\nattached to sources of different types. The core functionality\nwas already in the AudioPolicyEffects system, this allows\nthe dynamic modification of the lists.\n\nBug: 78527120\nTest: Builds, manually tested an app adding a source effect,\ntested both media on the specified source and on a different source.\nAlso tested by Android Things integration tests.\n\nChange-Id: I4da15787278c79d80043e172f4f81d3b2a139f44\n"
    },
    {
      "commit": "e17f831ef1ba0844e04826bb85455f7ca9c971c4",
      "tree": "d8d97743c5be994cc75b367db9cccb93ba63e494",
      "parents": [
        "34affaed9cc6374e979e3bd29ccfe1671694bfe9"
      ],
      "author": {
        "name": "Yuuki Yokoyama",
        "email": "yuuki.x.yokoyama@sonymobile.com",
        "time": "Fri May 26 19:06:33 2017 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Thu Aug 16 18:37:14 2018 +0900"
      },
      "message": "Use default sample rate for only sw effect\n\nShould not configure effect by thread sample rate\nif effect is not offloadable.\nBecause of offload output may be different from\nthe sample rate supported by sw effect.\n\nBug: 70912361\nTest: Create AudioEffect during 24kHz mp3 playback\n\nChange-Id: Ie5bf264a9790d936c24476ea127bc6da9eefde73\n"
    },
    {
      "commit": "1990bd40ebb6fcbb876fae42e43792b9dc6d308b",
      "tree": "533950b805a77a744c2100b9c286059406ace779",
      "parents": [
        "34affaed9cc6374e979e3bd29ccfe1671694bfe9"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Fri Dec 12 14:04:11 2014 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Thu Aug 16 17:42:13 2018 +0900"
      },
      "message": "Set volume for output when effect is enabled/disabled.\n\nEven though effect module has \"EFFECT_FLAG_VOLUME_CTRL\" flag,\nthere is some case where volume setting is not sent to offload thread.\nThat leads to sudden increase of audio volume or too low volume.\nThis change is to support delegation of volume control completely\nfor offload audio effect.\n\nBug: 37443095\nTest: Enable/Disable Audio effects during offload playback\nChange-Id: I7033071edc99fadc519efd7adc895dc10f7b9d86\n"
    },
    {
      "commit": "c524813b806a64123d376d1afb4d21b09a6de453",
      "tree": "f94bbd0c687bf3eb4dab26c97eedd49419bfec71",
      "parents": [
        "c5be8b200a5927d8d9e89f425ca1e544884b6031"
      ],
      "author": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Wed Aug 15 12:19:20 2018 -0700"
      },
      "committer": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Wed Aug 15 15:08:36 2018 -0700"
      },
      "message": "Camera: fix race issue in Camera2 clients\n\nUpdating of the mDevice sp\u003c\u003e is racy.\nThis change will cause the Camera3Device object lives until\nthe client is destructed (which can be a few seconds after\ncamera app closed and GC kicking in to delete the client)\nThe benefit is the dumpDevice can remain lock free.\n\nAlso fix a problem where we call virtual function disconnect in\nCamera3Device destructor.\n\nTest: the double free problem cannot reproduce\nBug: 112639939\nChange-Id: I77762db8f59cf33891631d13fc3bdb3830ae08fb\n"
    },
    {
      "commit": "5033aa19cd443559777b84acc63cad1177121cc9",
      "tree": "68f0be72da42eb4ed5165b73ecd84bef09310109",
      "parents": [
        "0f94463362911de14bdfbf00a1c09d3d2fa1b96f"
      ],
      "author": {
        "name": "Jayant Chowdhary",
        "email": "jchowdhary@google.com",
        "time": "Tue Jul 24 11:56:19 2018 -0700"
      },
      "committer": {
        "name": "Jayant Chowdhary",
        "email": "jchowdhary@google.com",
        "time": "Wed Aug 15 12:25:03 2018 -0700"
      },
      "message": "Convert libcameraservice Android.mk -\u003e Android.bp module\n\nThis would allow other client modules defined in Android.bp to include\nlibcameraservice as a dependency.\n\nBug: 110364143\n\nTest: mm -j64\n\nChange-Id: Ia3be563e4fbb27155d6a46278931ca689b8cf8fd\nSigned-off-by: Jayant Chowdhary \u003cjchowdhary@google.com\u003e\n"
    },
    {
      "commit": "2dbffc2af5e200dbddfa1aeb79569e7811dfbc9a",
      "tree": "4dad85d78b86420b84000686f13d4de995623eff",
      "parents": [
        "c8fddf3dc6a1d51058d9d3b207e818e84ac80fed"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 08 18:50:41 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 13 18:21:03 2018 -0700"
      },
      "message": "AudioFlinger: Incorporate downstream patch latency into timestamps\n\nAvailable for MSD BUS devices.\n\nTest: MSD YouTube playback and audioflinger dumpsys\nBug: 112435419\nChange-Id: Ifd35b68a77464e0db79ad1ed50b72b00a616c253\n"
    },
    {
      "commit": "c8fddf3dc6a1d51058d9d3b207e818e84ac80fed",
      "tree": "d75a5b3a7a8a47af6e009a67659cb1aad08c3caa",
      "parents": [
        "30282562329b3031b6bfa0869bd76ff5f543ebba"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 08 18:32:37 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 13 18:19:36 2018 -0700"
      },
      "message": "AudioFlinger: Add timestamp correction to MSD BUS Threads\n\nTest: MSD YouTube playback\nBug: 112431914\nChange-Id: Ic15ace24d6ab3613be08978b925fd7b9dc7aef38\n"
    },
    {
      "commit": "30282562329b3031b6bfa0869bd76ff5f543ebba",
      "tree": "82ba1641c178b26419735faf7f99be6bc1ffc9c1",
      "parents": [
        "182d359515fbf4ba0fc14709b583c29edce30897"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 08 18:27:03 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 13 16:27:59 2018 -0700"
      },
      "message": "AudioFlinger: Add patch latency for direct record/playback\n\nThis relies on being able to obtain presentation position and\ncapture position accurately from the HAL, in the presence\nof potential underruns or overruns.\n\nTest: MSD hal dumpsys\nBug: 112428710\nChange-Id: I9aad574baaff60b5e0c5d8c39a2147d19ee613f5\n"
    },
    {
      "commit": "84cca0ae89ba23522f12076d08e7dad288571f77",
      "tree": "b59c87d075f6e2768139fe56c8fbeef1bb6862a3",
      "parents": [
        "6d567e1f19dafe010bf115148fed0ec034d5ceb9",
        "5654fa737782fb27f3f79f77e4a4b41b1280e1fa"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 10 23:34:39 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 10 23:34:39 2018 +0000"
      },
      "message": "Merge \"audio policy: fix bad auto merge conflict resolution\""
    },
    {
      "commit": "5654fa737782fb27f3f79f77e4a4b41b1280e1fa",
      "tree": "af22fc7cf781bb43e07c97322cc0b9988aca666c",
      "parents": [
        "d3dcfbe703e2ed596516eaa208c021e740590fa0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 10 15:05:24 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 10 15:05:24 2018 -0700"
      },
      "message": "audio policy: fix bad auto merge conflict resolution\n\nWhen commit a81f098f1 was merged from aosp to pi-dev-plus-aosp\nthere was a problem where a code block already present in pi-dev\nfor the same fix (commit b62d78b72d9) was duplicated.\nThis caused double muting of notifications and alarms when a camera\nsound is played in countries where this sound is enforced while unmuting\nonly once when camera sound stops.\n\nBug: 110913234\nTest: force camera sound and verify mute/unmute counts after using the\ncamera.\n\nChange-Id: Ie97e3642803310acbe5eb85a53a850e010a9f42f\n"
    },
    {
      "commit": "3488ab97b8fd9d002f6092e1424de9a519e64039",
      "tree": "45a9cc3dc6149f218b9f881d3cc12b007ec74489",
      "parents": [
        "0fe90f2954e897fd13418ce978f3864766b301c7",
        "7f39f56e33bc0feb5188cc0372e0be69239ba78f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 10 00:43:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 10 00:43:06 2018 +0000"
      },
      "message": "Merge \"AudioFlinger:  Do not show latency for non-PCM record in dumpsys\""
    },
    {
      "commit": "0fe90f2954e897fd13418ce978f3864766b301c7",
      "tree": "36fd66b47debee3f349a608ecab4f57689c7d3b4",
      "parents": [
        "dda0874a6d368a86a21c139a02e26db034028bc2",
        "6427e44be65e3b2fed6da30b4e442d25fe7769ec"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 10 00:42:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 10 00:42:36 2018 +0000"
      },
      "message": "Merge \"AudioFlinger: Add record frames read to dumpsys\""
    },
    {
      "commit": "6427e44be65e3b2fed6da30b4e442d25fe7769ec",
      "tree": "6ed2472bc21023ebc436d531d17e9036e4b5af1b",
      "parents": [
        "66aa339f416e907aa704bb01ac55d109c8bbca38"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 09 12:51:02 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 09 16:20:03 2018 -0700"
      },
      "message": "AudioFlinger: Add record frames read to dumpsys\n\nAllows comparison to playback frames written for patches.\n\nTest: audioflinger dumpsys\nChange-Id: I2ef0ccbc36819d48b05756115de70f5a24a2c2cd\n"
    },
    {
      "commit": "7f39f56e33bc0feb5188cc0372e0be69239ba78f",
      "tree": "c80bffac38de0e373d6455b46ae5ff382a2c33eb",
      "parents": [
        "a29488990bcb34a2723ec4ece2ea34f714070f5f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 08 17:30:20 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 09 23:08:30 2018 +0000"
      },
      "message": "AudioFlinger:  Do not show latency for non-PCM record in dumpsys\n\nTest: Check AudioFlinger dumpsys during MSD direct record\nBug: 112388863\nChange-Id: Id404c70af0c0e23a1e349522568b20f50573b1e9\n(cherry picked from commit 2ceaf3dee96d1696b315afdee9ffc0df662f88d8)\n"
    },
    {
      "commit": "d3dcfbe703e2ed596516eaa208c021e740590fa0",
      "tree": "99102c02fa631285f476f735d3515478ece4e65a",
      "parents": [
        "976b2c81804f6ea0ed6aa7ccd6b38b55b8fd50c1",
        "9dd21f48f9a700c5ef1ee5a7e1ee0f0183965d34"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 09 10:14:53 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 09 10:14:53 2018 +0000"
      },
      "message": "Merge \"Camera: Trace still capture requests\""
    },
    {
      "commit": "398fd50891a46facac51945c4b65d3f8669bf3fe",
      "tree": "96376d3c113cd32d6b53c86e4187069da6769dc3",
      "parents": [
        "4531c707c4f25bfb96c1bb07207e1fa393a36e23",
        "e1655e5469a947966d563fcd86baf13607f9138d"
      ],
      "author": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Wed Aug 08 10:47:38 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 08 10:47:38 2018 -0700"
      },
      "message": "Merge \"Camera: skip unnecessary reconfig\" am: b9e732b490 am: f694dc1b4a\nam: e1655e5469\n\nChange-Id: I396254dd546aaa7fb2147d60b95cbe8075059f23\n"
    },
    {
      "commit": "e1655e5469a947966d563fcd86baf13607f9138d",
      "tree": "e53dfc187ae528f318a69556a813e392b84667b6",
      "parents": [
        "bf7f2829e91406ddb4d3124a1d90db515b9584b9",
        "f694dc1b4ae818705e2fcfc4d7e7e780197398c4"
      ],
      "author": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Wed Aug 08 10:39:27 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 08 10:39:27 2018 -0700"
      },
      "message": "Merge \"Camera: skip unnecessary reconfig\" am: b9e732b490\nam: f694dc1b4a\n\nChange-Id: Ie9156f4613923811fc4b510e804e4dd8b86170bb\n"
    },
    {
      "commit": "d8e185c27d50715d6afad90db8154afe64a6dc8f",
      "tree": "387f8174b0646c878dbdc389bd71f65fb5cb233e",
      "parents": [
        "220ff01be89438c6c27e72a02ea894199c30b6c7"
      ],
      "author": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Thu Jul 26 10:01:19 2018 -0700"
      },
      "committer": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Tue Aug 07 13:11:26 2018 -0700"
      },
      "message": "Camera: skip unnecessary reconfig\n\nTest: manual testing 3rd party camera app + hacked walleye\nBug: 111850901\nMerged-In: Ia2977a290bb0bd706f500a3d39e0d996d50cbe1e\nChange-Id: Ia2977a290bb0bd706f500a3d39e0d996d50cbe1e\n"
    },
    {
      "commit": "89bbe9e07c48fe5036a44b51951fe3b44ab4ac8f",
      "tree": "6b5d8e4ba69f3cdae0c4642c07919c238ff39492",
      "parents": [
        "93ea89f1d0f47994231ebde31c2f2665177fb513",
        "1d539d95ea476c525cc26ff059f6f6a1f6e3ea42"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Tue Aug 07 02:15:14 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 07 02:15:14 2018 +0000"
      },
      "message": "Merge \"audiopolicy: reset capture state when input is closed\""
    },
    {
      "commit": "442868f036df6e9966f824ec256619b2923a9ed4",
      "tree": "f823452661efd87177897ba4b82d32ef944fd6ec",
      "parents": [
        "4455af941c4d33859215b836ac03571ee7a360cf",
        "1882f16c80d6e1e047a43c1e685a005034b138e4"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Aug 03 23:58:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 03 23:58:32 2018 +0000"
      },
      "message": "Merge \"Audioflinger dumpsys: Use libjsoncpp for json dump\""
    },
    {
      "commit": "1882f16c80d6e1e047a43c1e685a005034b138e4",
      "tree": "29fb74695be6d869ca6a0f51e310e6752eb8c36b",
      "parents": [
        "5b13ff8f66e4b376127af9cfb6fa3f075f17eaa2"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Thu Aug 02 18:05:39 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Aug 03 15:44:15 2018 -0700"
      },
      "message": "Audioflinger dumpsys: Use libjsoncpp for json dump\n\nTest: dumpsys media.audio_flinger --json\nBug: 68148948\nChange-Id: Ieebe2c52e3613e48a5ec5cbb2b1f167a32d5a47d\n"
    },
    {
      "commit": "06fcfb071cee44bb0364a379c791bac183c38e45",
      "tree": "e68370c523c26eb70b3e973356a88332307c8c7a",
      "parents": [
        "a0e772b26e8faa8018c1e8e6f5304ff3e9b7b2a0"
      ],
      "author": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Mon Jul 30 18:23:31 2018 -0700"
      },
      "committer": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Fri Aug 03 10:19:10 2018 -0700"
      },
      "message": "Camera: Play shutter sound in absence of CAMERA_MSG_SHUTTER\n\nWhen shutter sound is ON, even if application calls takePicture\nwithout CAMERA_MSG_SHUTTER, the camera service should still play\nshutter sound.\n\nAlso remove the code using ro.camera.sound.forced since it\u0027s\nnot used any more.\n\nTest: 3rd party app on device with enforced shutter sound\nBug: 111995040\nChange-Id: I0d2e888b7f17eff5e5bff8d0f3ec3da7f7ad97b7\n"
    },
    {
      "commit": "9dd21f48f9a700c5ef1ee5a7e1ee0f0183965d34",
      "tree": "cae24e92bf1067d976283d67a8f4b33d6e184dc5",
      "parents": [
        "965737edc28bd76f6424f9ff4c1f0315f28a0434"
      ],
      "author": {
        "name": "Emilian Peev",
        "email": "epeev@google.com",
        "time": "Fri Aug 03 13:39:29 2018 +0100"
      },
      "committer": {
        "name": "Emilian Peev",
        "email": "epeev@google.com",
        "time": "Fri Aug 03 16:53:43 2018 +0100"
      },
      "message": "Camera: Trace still capture requests\n\nTrace any requests that include a still capture\nintent.\n\nBug: 112008412\nTest: Camera CTS\nChange-Id: I6e11feff24a69f91eaa9f82410dd551b3fabc872\n"
    },
    {
      "commit": "63a983a3311accda032c160487556ea84d5cd7b9",
      "tree": "39b2d822a41bcf2c3fcb35b4e37f44556504af53",
      "parents": [
        "e05d9deb1d09e06b21d98a0141b29a61c2447071",
        "2a9191b9927f8d44e48bd2cf3c7080320ce468c5"
      ],
      "author": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Fri Aug 03 08:46:24 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 03 08:46:24 2018 -0700"
      },
      "message": "Merge \"Camera: Handle duplicate camera Id due to openLegacy support\" into stage-aosp-master\nam: 2a9191b992\n\nChange-Id: Ie4584be34011b927b4e1cda60542390373f65ba2\n"
    },
    {
      "commit": "39e5f0d3225dda6dd2e2216ed5b17152f6582686",
      "tree": "c18cb3fbaa98f851c54d620b02a22488b30d0137",
      "parents": [
        "2a5675885641ac73b7e08e582f7889351c50fa4f",
        "734334fd0045bf7897a6d749c00204a784766a7e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Aug 03 15:06:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 03 15:06:06 2018 +0000"
      },
      "message": "Merge \"Aaudio: Implement app shareable flag instead of -size hack\""
    },
    {
      "commit": "1d539d95ea476c525cc26ff059f6f6a1f6e3ea42",
      "tree": "7536317c06d311a10931b3d0feffa8b2be1799a6",
      "parents": [
        "965737edc28bd76f6424f9ff4c1f0315f28a0434"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Fri Mar 16 11:40:49 2018 -0700"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Fri Aug 03 11:41:42 2018 +0800"
      },
      "message": "audiopolicy: reset capture state when input is closed\n\nAn active input can be closed before stopInput is called, thus\nleaving the input handle to be an unknown input, then the capture\nstate can keep in true which blocks sound trigger session.\nReset the capture state if needed when input is closed.\n\nBug: 75253700\nTest: manual\nauthored-by: Zhou Song \u003czhous@codeaurora.org\u003e\nChange-Id: I969aa346e503cab593c33b6ca408845d058f00bc\n"
    },
    {
      "commit": "734334fd0045bf7897a6d749c00204a784766a7e",
      "tree": "46178737bf3a89fd1623ebc1d5dddaad8f2e6cb5",
      "parents": [
        "f344afa981e537b5f354352284272a8a51cf6759"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Jul 12 19:37:41 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Aug 02 23:48:54 2018 +0000"
      },
      "message": "Aaudio: Implement app shareable flag instead of -size hack\n\nTest: adb shell data/nativetest64/write_sine/write_sine -pl -m3\nBug: 38118159\nChange-Id: I349e10a00a5466f54e084f4745b1ed4776378c81\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "05357b120b1ea652cab3d615ba9c3f2e1e03f2fd",
      "tree": "1c5e99fd7c1287e1dd0534bde70a964576c0de95",
      "parents": [
        "7119600ddc4d6e64d6461f338387d49f503e45a4",
        "156317a32323b8a3826a6e9e9eec49b9049c14bd"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 02 23:11:20 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 23:11:20 2018 +0000"
      },
      "message": "Merge \"AudioFlinger: Remove unnecessary computation\""
    },
    {
      "commit": "7119600ddc4d6e64d6461f338387d49f503e45a4",
      "tree": "0d90c41af199119a4b995726b8fcd0f32f39f0a7",
      "parents": [
        "7f1732ee0d2c0571f8a00cd6ccbaa74cf8dd260c",
        "433722eeb72ab11bb945664fa939cf7ef737af6d"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Thu Aug 02 23:10:53 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 23:10:53 2018 +0000"
      },
      "message": "Merge changes from topic \"dynamic_stream_effects_master\"\n\n* changes:\n  Add dynamic stream default effects\n  Add helper method to convert usage to stream type.\n  Update getEffectDescriptors() to include type\n"
    },
    {
      "commit": "156317a32323b8a3826a6e9e9eec49b9049c14bd",
      "tree": "b8ca88f5f4269cb6d001cbe8c911b346cca8c2c0",
      "parents": [
        "7f1732ee0d2c0571f8a00cd6ccbaa74cf8dd260c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 02 11:49:29 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 02 11:49:29 2018 -0700"
      },
      "message": "AudioFlinger: Remove unnecessary computation\n\nTest: Build and basic record sanity\nBug: 112142872\nChange-Id: Ibfc0c715930593c23e58acd4afda6986d69d53b2\n"
    },
    {
      "commit": "433722eeb72ab11bb945664fa939cf7ef737af6d",
      "tree": "194eab009f7fad2010a5baa3c82b1a497d4543e3",
      "parents": [
        "5c00d01c85430178d19f6266f1bc5c94a29853c1"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Apr 24 14:25:22 2018 -0700"
      },
      "committer": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Thu Aug 02 11:34:36 2018 -0700"
      },
      "message": "Add dynamic stream default effects\n\nAllows runtime modification of what effects should be default\nattached to streams of different types/usages. The core functionality\nwas already in the AudioPolicyEffects system, this allows\nthe dynamic modification of the lists.\n\nBug: 78527120\nTest: Builds, manually tested an app adding a stream effect,\ntested both media on the specified stream and on a different stream.\nAlso tested by Android Things integration tests.\nChange-Id: Ie0426b17ff7daece58b8c85d72fbef620844325b\n"
    },
    {
      "commit": "7f1732ee0d2c0571f8a00cd6ccbaa74cf8dd260c",
      "tree": "3dad37728e3fa5a9cbb8532ca8bcabf781d3270b",
      "parents": [
        "978dcac6101c416158ca234e6ef01baa861bbcd0",
        "c2196d84c7ba9f48c9b65e6136055fd6bdf566db"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 02 17:31:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 17:31:36 2018 +0000"
      },
      "message": "Merge \"Camera: fix operator precedence bug\""
    },
    {
      "commit": "978dcac6101c416158ca234e6ef01baa861bbcd0",
      "tree": "77eab020fb6e9d933facfe37b4018b941ccf7128",
      "parents": [
        "1441fdc2037c00bf9106dad98dcd7a02886fbd02",
        "16698b8c36aa6cba8a3dab3432cbed361264a509"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 02 16:42:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 16:42:06 2018 +0000"
      },
      "message": "Merge \"AudioFlinger: Update namespace for Statistics\""
    },
    {
      "commit": "c2196d84c7ba9f48c9b65e6136055fd6bdf566db",
      "tree": "e738134b2a0f201924364b72f77a93f33898914d",
      "parents": [
        "021c41956c6d7c172f8313407da53c8d6eb6db6e"
      ],
      "author": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Thu Aug 02 08:54:38 2018 -0700"
      },
      "committer": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Thu Aug 02 08:54:38 2018 -0700"
      },
      "message": "Camera: fix operator precedence bug\n\nTest: none\nBug: 112135008\nChange-Id: I518682026fbfdfbfda35de1921a00ef67e1272ee\n"
    },
    {
      "commit": "d2e705a7cb2ff043fc7d2ec8a773fdf3910f5f89",
      "tree": "41a3275b47139e2bd32fa09fbd91d40ee4f18968",
      "parents": [
        "1e61d6c374998df89ef2def6358a85b8225f7fbc",
        "91913565fb5afffca98e9db0c61dad2e4fe19725"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 02 13:06:47 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 13:06:47 2018 +0000"
      },
      "message": "Merge \"Camera: Fix off-by-one error during clamping in distortion mapper\""
    },
    {
      "commit": "1e61d6c374998df89ef2def6358a85b8225f7fbc",
      "tree": "6cc544f041ef787a969fc2c516f8608495a0b90b",
      "parents": [
        "b63e5c63e5cd21e28fb0ec8329c01762ab6f7d96",
        "70ec5e892f83b2c2d0c0832571974d9d0a9b2b39"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 02 07:17:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 07:17:54 2018 +0000"
      },
      "message": "Merge \"audio policy: fix mutex in stopOutput\""
    },
    {
      "commit": "70ec5e892f83b2c2d0c0832571974d9d0a9b2b39",
      "tree": "76c8dca2979a5e29f2461322a8ee66953bdb290c",
      "parents": [
        "f344afa981e537b5f354352284272a8a51cf6759"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 01 18:45:37 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 01 18:54:21 2018 -0700"
      },
      "message": "audio policy: fix mutex in stopOutput\n\nCommit d7fe086d introduced a problem by acquiring the AudioPolicyService\nmutex in stopOutput(). stopOutput() and releaseOtuput() can be called\nfrom audioflinger thread loop and should never acquire the main\nAudioPolicyService mutex.\nRemoved unnecessary check on valid port Id as this check is also performed\nwhen doStopOutput() is executed by the command thread.\n\nBug: 111966786\nTest: verify no timeout when starting or ending a call.\nChange-Id: Id09eaae7a4409dfc54c6fbb1eced1624cd7b3536\n"
    },
    {
      "commit": "91913565fb5afffca98e9db0c61dad2e4fe19725",
      "tree": "bb2345e48f9895ad256b00982f9f0343ef21b37b",
      "parents": [
        "d02904c6d5b30d2e32cdd57495c4a182b6187b32"
      ],
      "author": {
        "name": "Emilian Peev",
        "email": "epeev@google.com",
        "time": "Fri Jul 27 10:34:57 2018 +0100"
      },
      "committer": {
        "name": "Emilian Peev",
        "email": "epeev@google.com",
        "time": "Wed Aug 01 17:48:49 2018 +0000"
      },
      "message": "Camera: Fix off-by-one error during clamping in distortion mapper\n\nThe (right, bottom) coordinates of any input rectangles are\nexclusive.\n\nBug: 111885753\nTest: Camera CTS,\nadb shell /data/nativetest64/cameraservice_test/cameraservice_test\n--gtest_filter\u003dDistortionMapperTest.*\nChange-Id: Ied956bd154256a10fc4c81d27c93b0ba2e33044d\n"
    },
    {
      "commit": "16698b8c36aa6cba8a3dab3432cbed361264a509",
      "tree": "b908af64a0a93b58b7265cd903e3167c74262345",
      "parents": [
        "965737edc28bd76f6424f9ff4c1f0315f28a0434"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 01 10:48:38 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 01 10:48:38 2018 -0700"
      },
      "message": "AudioFlinger: Update namespace for Statistics\n\nTest: Build and basic sanity\nBug: 80502521\nChange-Id: I4f9180d1eb1eb53b75bf6fdb9f98cdcb03b6e9f2\n"
    },
    {
      "commit": "d02904c6d5b30d2e32cdd57495c4a182b6187b32",
      "tree": "b34a28279a94ae1c1e8fa3c92e047d9fad96beea",
      "parents": [
        "965737edc28bd76f6424f9ff4c1f0315f28a0434",
        "01c8f5681ce875bb60b6451929bb3fbd0876ca61"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 01 17:47:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 01 17:47:49 2018 +0000"
      },
      "message": "Merge \"Use fast mode with patch track and patch record if possible.\""
    },
    {
      "commit": "2def2f8e943f5968b9e75825100d380080179f89",
      "tree": "b3b7124a47cfa88d630ec6911296e98f70f00af7",
      "parents": [
        "d8ce8e33e90e4aef13d61141584c4fec50322eaa"
      ],
      "author": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Wed Jun 27 14:35:46 2018 -0700"
      },
      "committer": {
        "name": "Po-Chien Hsueh",
        "email": "pchsueh@google.com",
        "time": "Wed Aug 01 02:04:27 2018 +0000"
      },
      "message": "Camera: Handle duplicate camera Id due to openLegacy support\n\nWhen HAL supports openLegacy, same camera id can be added more than\nonce.\n\nBecause we now use vector to store API1 compatible camera ids, make\nsure no duplicate strings are added.\n\nTest: Vendor camera app using openLegacy, Camera CTS\nBug: 110815837\nBug: 111963599\n\nChange-Id: I327744e102cc75929ebcdf51661f9f4ec7f3acf9\nMerged-In: I327744e102cc75929ebcdf51661f9f4ec7f3acf9\n(cherry picked from commit 975a39e9067e8d8f71e74813d0199e0e51556bb8)\n(cherry picked from commit 258fa2669e4ad01e8de4b12b2084924d30e4bb26)\n"
    },
    {
      "commit": "5c00d01c85430178d19f6266f1bc5c94a29853c1",
      "tree": "652dbc8b4f49e1e8b384531c118dd0da3dd18a59",
      "parents": [
        "2046ec756ee59acc4cfa1d52eb97aaa84efc9754"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Jun 26 17:09:11 2018 -0700"
      },
      "committer": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Jul 31 18:01:28 2018 -0700"
      },
      "message": "Add helper method to convert usage to stream type.\n\nAdds audio_usage_to_stream_type method to aid in converting\naudio_usage_t to the legacy audio_stream_type_t.\n\nBug: 78527120\nTest: Builds\nChange-Id: I411bb687d0f46b82afef3a2e9ac6a974f922da91\n"
    },
    {
      "commit": "2046ec756ee59acc4cfa1d52eb97aaa84efc9754",
      "tree": "352eca0b14dc5e4a368f0475df975ad431515d9d",
      "parents": [
        "965737edc28bd76f6424f9ff4c1f0315f28a0434"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Apr 24 14:00:55 2018 -0700"
      },
      "committer": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Jul 31 18:01:12 2018 -0700"
      },
      "message": "Update getEffectDescriptors() to include type\n\nAllows getting effect descriptors by type or uuid,\nnot just by uuid.\n\nBug: 78528249\nTest: Builds. Manually tested that an app playing audio with an effect works.\nChange-Id: I9d339a7d6d81161065e1adaf427dd2d3430436c2\n"
    },
    {
      "commit": "e31c558d796a0d2d8dca81a11ba8776c8ab2623c",
      "tree": "1ada3a0f5246aa71c566a78304d595212d76b267",
      "parents": [
        "258fa2669e4ad01e8de4b12b2084924d30e4bb26",
        "7794b6cdcf92727a01836142880180df682326a0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 30 16:13:06 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 30 16:13:06 2018 -0700"
      },
      "message": "Merge \"audio policy: fix regression in Audio MMAP device selection\" into pi-dev\nam: 7794b6cdcf\n\nChange-Id: Ic7579ec781b90db44197df961e6cfa0d2b8e8f9c\n"
    },
    {
      "commit": "7794b6cdcf92727a01836142880180df682326a0",
      "tree": "950eab2af6066b7209b114acbd2cd25da191202e",
      "parents": [
        "210ba5c4da9391e06dbb9bf624783e747d192b04",
        "ea8ebd5fcbfe399c7876909e2e680d59fba59cf0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 30 22:36:20 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 30 22:36:20 2018 +0000"
      },
      "message": "Merge \"audio policy: fix regression in Audio MMAP device selection\" into pi-dev"
    },
    {
      "commit": "ea8ebd5fcbfe399c7876909e2e680d59fba59cf0",
      "tree": "ad95f8981f1b2ee6c8124a10624925d947285ea3",
      "parents": [
        "6497af909a1218a842ae65f12f7d1f4c98159580"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 23 14:15:40 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 30 21:16:14 2018 +0000"
      },
      "message": "audio policy: fix regression in Audio MMAP device selection\n\nCommit f3a5a601 caused a regression for AAudio MMAP playback use case\nwhere disconnecting currently selected device does not generate a\ndisconnect callback to client causing silent audio until the\nstream is closed and reopened.\n\nThis CL fixes a logical flaw in method SessionRouteMap::getActiveDeviceForStream()\nintroduced by commit f3a5a601 causing a stale forced device to be\nreturned after this device was disconnected.\n\nBug: 111711159\nBug: 79878501\nTest: CTS tests for audi routing and AAudio. Audio smoke tests\nMerged-In: Ibb16e26bc59b9e3f99bc74eb944601c6be5026dd\nChange-Id: Ibb16e26bc59b9e3f99bc74eb944601c6be5026dd\n"
    },
    {
      "commit": "3e6c7e15913a812b8658504105100063d57d1d6e",
      "tree": "2ec1571636c46201df600aa9c25f57a727617b48",
      "parents": [
        "f344afa981e537b5f354352284272a8a51cf6759"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 27 17:09:23 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 30 11:34:53 2018 -0700"
      },
      "message": "audio policy: refactor HW audio sources\n\nRefactor management of hardware audio sources to make use of\nClientDescriptor class:\n- HW sources are now tracked by port ID and not audio patch handle.\n- startAudioSource() and stopAudioSource() APIs are updated to use\naudio_port_handle_t as source identifier.\n- AudioSourceDescriptor class is deleted and replaced by\nSourceClientDescriptor class deriving from TrackClientDescriptor\n\nTest: make.\nChange-Id: Ie418b566519a591f036b538a77319f8e30aa99a8\n"
    },
    {
      "commit": "f344afa981e537b5f354352284272a8a51cf6759",
      "tree": "5d7791016c0e69f6c13b0c0b4637fef2491f9d09",
      "parents": [
        "83289653ef22399dae84f1e7bb75c32e1c432c95",
        "5b13ff8f66e4b376127af9cfb6fa3f075f17eaa2"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Mon Jul 30 16:02:07 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 30 16:02:07 2018 +0000"
      },
      "message": "Merge \"audioflinger: Replace cpustats/CentralTendencyStatistics with audio_utils/Statistics\""
    },
    {
      "commit": "83289653ef22399dae84f1e7bb75c32e1c432c95",
      "tree": "47957a89fa62912f428935fbb1a48ed721d38887",
      "parents": [
        "8248fbb82a2362791258eaedd7d9615ac8f20351"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Jul 30 06:13:57 2018 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Jul 30 06:13:57 2018 -0700"
      },
      "message": "AudioPolicyManager: Fix logging statement\n\nWe move our \u0027return\u0027 to after our ALOGD statement, so we\u0027ll\nget the information logged.\n\nTest: Treehugger\nChange-Id: Ieb6953633d197baf4311ca51a381f31bec884afc\n"
    },
    {
      "commit": "258fa2669e4ad01e8de4b12b2084924d30e4bb26",
      "tree": "6bd82d417c9884c64bead434ce8230b25d371c98",
      "parents": [
        "491926c8c64bcfb89bf29c578be07a6ebf7b2980"
      ],
      "author": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Wed Jun 27 14:35:46 2018 -0700"
      },
      "committer": {
        "name": "Po-Chien Hsueh",
        "email": "pchsueh@google.com",
        "time": "Mon Jul 30 02:34:31 2018 +0000"
      },
      "message": "Camera: Handle duplicate camera Id due to openLegacy support\n\nWhen HAL supports openLegacy, same camera id can be added more than\nonce.\n\nBecause we now use vector to store API1 compatible camera ids, make\nsure no duplicate strings are added.\n\nTest: Vendor camera app using openLegacy, Camera CTS\nBug: 110815837\nBug: 111963599\n\nChange-Id: I327744e102cc75929ebcdf51661f9f4ec7f3acf9\n(cherry picked from commit 975a39e9067e8d8f71e74813d0199e0e51556bb8)\n"
    },
    {
      "commit": "8248fbb82a2362791258eaedd7d9615ac8f20351",
      "tree": "805072e6fdf76767290b16909c05b46066221ba0",
      "parents": [
        "615fc5cecad73c8d0d2bb99d236a86d7ce0c6f85",
        "15be9d2bb881e79c06d90c855f9efa426fd42b78"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jul 28 01:06:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jul 28 01:06:31 2018 +0000"
      },
      "message": "Merge changes I9efa7144,Id005aad9\n\n* changes:\n  audiopolicy: Add support for the MSD prototype\n  audiopolicy: Add AudioProfileVector::findBestMatchingOutputConfig\n"
    },
    {
      "commit": "15be9d2bb881e79c06d90c855f9efa426fd42b78",
      "tree": "e5f3b8ac8934c4a7eb7c9d38a2a9252c68af46aa",
      "parents": [
        "fa69dc61def2931f01a1e14a3b385ffc56a4f2bc"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Nov 08 14:18:13 2017 +1100"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 27 16:37:31 2018 -0700"
      },
      "message": "audiopolicy: Add support for the MSD prototype\n\nMSD is a Multi-Stream Decoder. It\u0027s an optional module\nthat allows mixing of encoded surround streams with\nPCM streams.\n\nThis patch adds elementary support for setting up\na patch between the MSD module and actual output device,\nand prioritizing the MSD module\u0027s device for output.\n\nThe patch is always set up, and is automatically\nre-establishes itself if the actual output device changes.\n\nBug: 63901775\nTest: MSD prototype\nChange-Id: I9efa714455dae10b58bd5cc5cdf5557c0227b40c\n"
    },
    {
      "commit": "fa69dc61def2931f01a1e14a3b385ffc56a4f2bc",
      "tree": "d2b183d167be035424bb641ae2052000316d0efb",
      "parents": [
        "93adab132cfdd6e71cee2af14eea711b49a4c76d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 27 09:58:58 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 27 16:30:29 2018 -0700"
      },
      "message": "audiopolicy: Add AudioProfileVector::findBestMatchingOutputConfig\n\nAssuming that the call target AudioProfileVector contains\ninput profiles, the method finds the best matching config\nfrom provided AudioProfileVector of output\nprofiles. Matching is performed according to the given\npreferences for audio formats and channel masks.\n\nBug: 63901775\nTest: MSD prototype\nChange-Id: Id005aad9de8bfe8cea5cb6291efc278d6260210c\n"
    },
    {
      "commit": "01c8f5681ce875bb60b6451929bb3fbd0876ca61",
      "tree": "eb31a887a84e973ead1f4266a4a8f45db9909306",
      "parents": [
        "88585f96fe27f60c8c90699466f9da80fca6d658"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Jul 19 17:47:28 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jul 27 16:20:49 2018 -0700"
      },
      "message": "Use fast mode with patch track and patch record if possible.\n\nUse fast mode with patch track/patch record if fast mixer/fast capture\nis enabled. With the fast track and fast mixer/fast capture, we can get\na better performance on latency.\n\nBug: 111800664\nTest: make phone call on marlin/walleye with enabling legacy usb hal\nChange-Id: I0edd5978049e7c55da217a7a19e45fcbe5c3ac62\n"
    },
    {
      "commit": "5b13ff8f66e4b376127af9cfb6fa3f075f17eaa2",
      "tree": "e2f3cd20f0d8dc994356e5b5451492360b3481ba",
      "parents": [
        "19283e9de83b5ade80a93b43589ea9a799414290"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Jul 27 11:20:17 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Jul 27 14:32:42 2018 -0700"
      },
      "message": "audioflinger: Replace cpustats/CentralTendencyStatistics with audio_utils/Statistics\n\nRevert CPU_FREQUENCY_STATISTICS macro in Configuration.h.\n\nTest: build with different #define, dumpsys media.audio_flinger\nChange-Id: I91680c462b069779d8db3b7a10603fb11a81a135\n"
    },
    {
      "commit": "615fc5cecad73c8d0d2bb99d236a86d7ce0c6f85",
      "tree": "0da61e57ab45501b64a87873ac759d5676169c3c",
      "parents": [
        "09f9c0237236f21cf331bcd811da89c26fc9c627",
        "491926c8c64bcfb89bf29c578be07a6ebf7b2980"
      ],
      "author": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Fri Jul 27 14:31:32 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 27 14:31:32 2018 -0700"
      },
      "message": "Camera: Handle abandoned surface in finishConfiguration am: 210ba5c4da\nam: 491926c8c6\n\nChange-Id: I2408403683f807e097e25732b4596cef1cbb9390\n"
    },
    {
      "commit": "491926c8c64bcfb89bf29c578be07a6ebf7b2980",
      "tree": "7c4e63c4ecab4c81d586efe98dc67ed2d54000ea",
      "parents": [
        "6bb53c045a0bfa4e25a8add4e16f4b0a9256211b",
        "210ba5c4da9391e06dbb9bf624783e747d192b04"
      ],
      "author": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Fri Jul 27 14:27:20 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 27 14:27:20 2018 -0700"
      },
      "message": "Camera: Handle abandoned surface in finishConfiguration\nam: 210ba5c4da\n\nChange-Id: Id3cdefc396b0a391a5653250f5f8a7453e86843d\n"
    },
    {
      "commit": "93adab132cfdd6e71cee2af14eea711b49a4c76d",
      "tree": "b0bd97d6a7e070d6142a0cd15b12c51c87e45faa",
      "parents": [
        "23e617d032700449f4a24521cc89734e514a6bf6",
        "e50f628034f4b0b5a87f8e9f9eb3c170eef62955"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 27 00:47:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 27 00:47:08 2018 +0000"
      },
      "message": "Merge \"audio policy: Refactor AudioProfile\""
    },
    {
      "commit": "23e617d032700449f4a24521cc89734e514a6bf6",
      "tree": "d26b170b13b8f19c4f440882f22d7635e0c56ed4",
      "parents": [
        "9366193e6ba8e2c554de747a3ab58a336297c067",
        "8fc147b21a7627eeda6383ae501add4dc903634e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 27 00:06:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 27 00:06:24 2018 +0000"
      },
      "message": "Merge \"audio policy: use client descriptors\""
    },
    {
      "commit": "8fc147b21a7627eeda6383ae501add4dc903634e",
      "tree": "a2f8b9232c40384188296887ab22a66d8200ce54",
      "parents": [
        "fa4fd528583279049b334a75e3782c12e832403b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 22 19:13:55 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 27 00:05:08 2018 +0000"
      },
      "message": "audio policy: use client descriptors\n\nFirst step in implementing use of ClientDescriptor class to keep track\nof playback and capture activity:\n- update AudioPolicyInterface methods to just use port ID as\nclient identifier\n- add list of clients in input and output descriptors and update list\nwhen clients are added and removed.\n- list clients in audio policy manager dump.\n\nTest: Audio smoke tests. CTS tests for AudioTrack, AudioRecord, routing, recording and playback configurations\n\nChange-Id: Ia0f62f295d421fb845d57afcaa0ce77cd2c58775\n"
    },
    {
      "commit": "e50f628034f4b0b5a87f8e9f9eb3c170eef62955",
      "tree": "5b2c96e36150dc75c89a4fadc4747028f59d89dd",
      "parents": [
        "19283e9de83b5ade80a93b43589ea9a799414290"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 26 16:20:43 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 26 16:20:43 2018 -0700"
      },
      "message": "audio policy: Refactor AudioProfile\n\n * Move non-trivial method definitions into .cpp file;\n * Re-organize method definitions by name and by functionality;\n * Update and sort includes.\n\nThe code of the methods left unchanged.\n\nBug: 63901775\nTest: make\nChange-Id: Ic1b1c456983a23f078947dd84a837dc194bd48cc\n"
    },
    {
      "commit": "9366193e6ba8e2c554de747a3ab58a336297c067",
      "tree": "f6d9fe9e7cbe37902d023b33c24463f99d26b3fd",
      "parents": [
        "19283e9de83b5ade80a93b43589ea9a799414290"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 26 14:37:41 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 26 14:37:41 2018 -0700"
      },
      "message": "audiopolicy: Refactor DeviceVector::getDevicesFromHwModule\n\nRename method audio_devices_t DeviceVector::getDevicesFromHwModule\ninto getDeviceTypesFromHwModule.\n\nIntroduce method DeviceVector DeviceVector::getDevicesFromHwModule.\n\nBug: 63901775\nTest: make\nChange-Id: Ieec0c116fa0a6ff20241d61f65202a8eaf9f0674\n"
    },
    {
      "commit": "19283e9de83b5ade80a93b43589ea9a799414290",
      "tree": "731963b527ffef697c1491b7aa88b7d14bd2a88c",
      "parents": [
        "0ebb8c4a5015a720359ae9b9c66bfa548bd72109",
        "86325527d409779b1c5392f4dcc2adeb7c906adc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 26 20:02:12 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 26 20:02:12 2018 +0000"
      },
      "message": "Merge \"Camera: skip unnecessary reconfig\""
    },
    {
      "commit": "86325527d409779b1c5392f4dcc2adeb7c906adc",
      "tree": "b75dbd2c92493327bf480927d0d896c99a2e8a63",
      "parents": [
        "a2a19382e5870fb133b56dacc7ff3048cdaa407d"
      ],
      "author": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Thu Jul 26 10:01:19 2018 -0700"
      },
      "committer": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Thu Jul 26 19:09:24 2018 +0000"
      },
      "message": "Camera: skip unnecessary reconfig\n\nTest: manual testing 3rd party camera app + hacked walleye\nBug: 111850901\nChange-Id: Ia2977a290bb0bd706f500a3d39e0d996d50cbe1e\n"
    },
    {
      "commit": "210ba5c4da9391e06dbb9bf624783e747d192b04",
      "tree": "f28d2c68a8cd0c9442f2588439c007ca698adf03",
      "parents": [
        "46ba387b026a3325a254f014f0f41548afba04c5"
      ],
      "author": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Wed Jul 25 16:47:40 2018 -0700"
      },
      "committer": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Thu Jul 26 10:58:41 2018 -0700"
      },
      "message": "Camera: Handle abandoned surface in finishConfiguration\n\nIt\u0027s possible that surface for a stream goes away after\ncameraservice configures HAL stream, either during configure_streams\nor when session parameters are updated.\n\nIn this case, do not put camera device in an error state.\n\nTest: Camera CTS, GCA\nBug: 111581884\nChange-Id: I7efc5aa22bc9b60ffaea23d8dae275f9a2bd026d\n"
    },
    {
      "commit": "0ebb8c4a5015a720359ae9b9c66bfa548bd72109",
      "tree": "c83df2116fe36fd473517afd22cb4d1f37cc6867",
      "parents": [
        "e32f08e97dba172a1ed5a12854af2f009df4795f",
        "6b51d7d119b9ac92e7351bbaf0466398ff4db87a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 26 10:19:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 26 10:19:19 2018 +0000"
      },
      "message": "Merge \"Camera: Flush in-flight requests during device detach\""
    },
    {
      "commit": "5a7913b405ac893998591fbad1242d7d9b7b2a62",
      "tree": "ab285ef604cf9c459e3abf56b7d68ecdcadefd01",
      "parents": [
        "fa4fd528583279049b334a75e3782c12e832403b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jul 24 12:35:06 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jul 25 11:21:05 2018 -0700"
      },
      "message": "Add utility functions to AudioProfile\n\nAdded AudioProfileVector::getFirstValidProfileFor for retrieving\nfirst valid profile supporting the given format.\n\nAdded ChannelsVector::as{In|Out}Mask for reversing direction on all\ncontained channel masks.\n\nBug: 63901775\nTest: make\nChange-Id: Ib4a816abd9a3904a552f670ee75266e7dd890011\n"
    },
    {
      "commit": "fa4fd528583279049b334a75e3782c12e832403b",
      "tree": "efc7f94b1ade01d7c87aa85f161795e40ca58e4c",
      "parents": [
        "3fcfb3c014335da69e381cef47d0065ef01350e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 20 18:23:34 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 24 19:09:40 2018 -0700"
      },
      "message": "audio policy: add client descriptors\n\nAdd client descriptors to keep track of opened AudioTrack and\nAudioRecord individualy. Client descriptor contains audio attributes,\nsampling rate, format, channels, uid, session, preferred route etc...\n\nTest: make.\n\nChange-Id: I785bdf7548670769f463549a3245114ac4c86e41\n"
    },
    {
      "commit": "3fcfb3c014335da69e381cef47d0065ef01350e6",
      "tree": "d1fd0eee10a2c0acc3eb91a1fcbc10afa57c9914",
      "parents": [
        "a18d8004284b7fb0e0372f595716974141cc6e79"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 23 11:24:05 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 24 19:09:40 2018 -0700"
      },
      "message": "audio policy: remove unused concurrent capture code\n\nRemove obsolete concurrent capture logic in audio policy manager\ngiven it is not reusable by the new policy being defined for\nconcurrent capture situations.\n\nTest: make\nChange-Id: I2f5d9f13b0e1d00889968ff4e97930eb464b4799\n"
    },
    {
      "commit": "a18d8004284b7fb0e0372f595716974141cc6e79",
      "tree": "1e286ccfb6943b979fc5f6706c6c69a7756237c7",
      "parents": [
        "0f7d299c5e308bc32333766590797992e7690966",
        "a18dced5af77307be66d8c05ac05e6160ab8d8ed"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 24 22:20:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 24 22:20:00 2018 +0000"
      },
      "message": "Merge \"audio policy: refactor record activity tracking (AudioSession)\""
    },
    {
      "commit": "0f7d299c5e308bc32333766590797992e7690966",
      "tree": "07e8b40c374180e0b34d268e0860313128ffee18",
      "parents": [
        "bc3ee5af87c5815a92aa67729c2d2ed540f4163e",
        "39ec8d62f75ffcf216714856aeab073c878b0abe"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Tue Jul 24 18:58:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 24 18:58:08 2018 +0000"
      },
      "message": "Merge \"audioflinger Threads.cpp: size() \u003d\u003d 0 -\u003e isEmpty().\""
    },
    {
      "commit": "bc3ee5af87c5815a92aa67729c2d2ed540f4163e",
      "tree": "3dbc1a73978ea1148b45d39bfe3270afd5d696e8",
      "parents": [
        "9f50e3af9ee18973576cd3e161c515461001ec92",
        "04ff947b07f0b4becacfa0668862b2d48437a6be"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 24 17:24:05 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 24 17:24:05 2018 +0000"
      },
      "message": "Merge \"audio policy: fix regression in Audio MMAP device selection\""
    },
    {
      "commit": "cf6291e4f1b111538e1d65da9b5c233b3a694719",
      "tree": "477dd123a46362f7ef549f34cee11c751cf88bba",
      "parents": [
        "88585f96fe27f60c8c90699466f9da80fca6d658",
        "9de8bd18b21642f6f1fb4e3ef75e44a2cc79f3ce"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 24 16:54:34 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 24 16:54:34 2018 +0000"
      },
      "message": "Merge \"AudioPolicy: Reuse SortedVector comparison from AudioProfile\""
    },
    {
      "commit": "39ec8d62f75ffcf216714856aeab073c878b0abe",
      "tree": "1c4640f0e895eafe14bfb6e456f6138293384c1d",
      "parents": [
        "a2a19382e5870fb133b56dacc7ff3048cdaa407d"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Tue Jul 24 09:49:29 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Tue Jul 24 09:49:29 2018 -0700"
      },
      "message": "audioflinger Threads.cpp: size() \u003d\u003d 0 -\u003e isEmpty().\n\nClean up PerformanceAnalysis.cpp reportPerformance code.\n\nTest: build, dumpsys media.audio_flinger\nChange-Id: I1e89b16872384e589b2060272daa3116184ec4d8\n"
    },
    {
      "commit": "9de8bd18b21642f6f1fb4e3ef75e44a2cc79f3ce",
      "tree": "3be2f968af8f8c7b3b52ae8fa52e7a052fa80fee",
      "parents": [
        "a2a19382e5870fb133b56dacc7ff3048cdaa407d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 23 16:41:31 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jul 24 08:52:14 2018 -0700"
      },
      "message": "AudioPolicy: Reuse SortedVector comparison from AudioProfile\n\nOperation for comparing sorted vectors was defined twice in APM code:\nonce in AudioProfile.h as operator\u003d\u003d, then in APM as \u0027vectorsEqual\u0027\nmethod. Remove the latter and use the operator instead.\n\nTest: make\nChange-Id: I0697843aabb13539b7b552773d96dbb7fb56daa4\n"
    },
    {
      "commit": "88585f96fe27f60c8c90699466f9da80fca6d658",
      "tree": "280aed70f6cf6b3eaac05f410832e2b2e36b3427",
      "parents": [
        "4da5523086dfe3f7ba7d470ad30ee787c1adc0ce",
        "61811a640bd60321324b436069531a4409ca13ef"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 24 05:26:56 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 24 05:26:56 2018 +0000"
      },
      "message": "Merge \"mediacodec-x86.policy: Allow media.omx to call statfs64 on x86 platform\""
    },
    {
      "commit": "04ff947b07f0b4becacfa0668862b2d48437a6be",
      "tree": "b1e0ca42b6fb7478bb8f130dcd147b1e1da2e748",
      "parents": [
        "a2a19382e5870fb133b56dacc7ff3048cdaa407d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 23 14:15:40 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 23 18:15:09 2018 -0700"
      },
      "message": "audio policy: fix regression in Audio MMAP device selection\n\nCommit f3a5a601 caused a regression for AAudio MMAP playback use case\nwhere disconnecting currently selected device does not generate a\ndisconnect callback to client causing silent audio until the\nstream is closed and reopened.\n\nThis CL fixes a logical flaw in method SessionRouteMap::getActiveDeviceForStream()\nintroduced by commit f3a5a601 causing a stale forced device to be\nreturned after this device was disconnected.\n\nBug: 111711159\nBug: 79878501\nTest: CTS tests for audi routing and AAudio. Audio smoke tests\nChange-Id: Ibb16e26bc59b9e3f99bc74eb944601c6be5026dd\n"
    },
    {
      "commit": "9cd748897a0bc7a839eace392a8d45e5149f7899",
      "tree": "89a4d31f7af0ec64cdf1dc45f5da0b4772e82408",
      "parents": [
        "00c14ee32d650cd2abffe154aad4718daa3eeccd",
        "97373b0fbabf670bb33bcc433ab04848d9594385"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 23 22:58:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 23 22:58:00 2018 +0000"
      },
      "message": "Merge \"audioflinger: Use AUDIO_HARDWARE_MODULE_ID_MSD where appropriate\""
    },
    {
      "commit": "00c14ee32d650cd2abffe154aad4718daa3eeccd",
      "tree": "e90c921bcf75d6ddbdc2d4a109016eeaf722de5f",
      "parents": [
        "a2a19382e5870fb133b56dacc7ff3048cdaa407d",
        "31a86b9cfcb4464e37b3a039499728737bc21f7e"
      ],
      "author": {
        "name": "Dan Zhang",
        "email": "danielzhang@google.com",
        "time": "Mon Jul 23 13:49:33 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 23 13:49:33 2018 -0700"
      },
      "message": "Merge \"Add USB MIC in case of AUDIO_SOURCE_CAMCORDER\" am: 69b9593594 am: 671b05bf3c am: 5bdda71a19\nam: 31a86b9cfc\n\nChange-Id: I600300a828fe589c942ebae4dd6c060e5799a8c6\n"
    },
    {
      "commit": "97373b0fbabf670bb33bcc433ab04848d9594385",
      "tree": "04bb8e2be1de86ebd932ab138aa31ab5bc993de1",
      "parents": [
        "a2a19382e5870fb133b56dacc7ff3048cdaa407d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 23 13:27:24 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 23 13:27:24 2018 -0700"
      },
      "message": "audioflinger: Use AUDIO_HARDWARE_MODULE_ID_MSD where appropriate\n\nAfter separating the constants for MSD service and module names,\nuse the module name when working with modules.\n\nBug: 63901775\nTest: make\nChange-Id: Icf80d28903e5c36051e33c4be818fd3d7256ce91\n"
    },
    {
      "commit": "31a86b9cfcb4464e37b3a039499728737bc21f7e",
      "tree": "44534878985049177f234b8f2b35b7702e862dff",
      "parents": [
        "749fc66a89fc2e7dc5b9f9126ed2736e6afe678d",
        "5bdda71a1927a0f12dc5b2cc6b3a7b204cffefe8"
      ],
      "author": {
        "name": "Dan Zhang",
        "email": "danielzhang@google.com",
        "time": "Mon Jul 23 13:14:21 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 23 13:14:21 2018 -0700"
      },
      "message": "Merge \"Add USB MIC in case of AUDIO_SOURCE_CAMCORDER\" am: 69b9593594 am: 671b05bf3c\nam: 5bdda71a19\n\nChange-Id: I7eec8cfbadd5ec90a349f2926ec010c4d9d5b4dc\n"
    }
  ],
  "next": "5bdda71a1927a0f12dc5b2cc6b3a7b204cffefe8"
}
