)]}'
{
  "log": [
    {
      "commit": "7435e7da371e60bed90909be6cc57a3f111fb6b4",
      "tree": "70b40fae27adde22ca7b1b9f57120fd7957cfc22",
      "parents": [
        "aa1523c14af06a2f213e570d12ce01b71422b26a"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Dec 19 17:09:28 2018 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 18 02:37:14 2019 +0000"
      },
      "message": "Add libprocessgroup dependency and fix sched_policy include\n\nlibaudioclient and libmedia are using get_sched_policy and\nset_sched_policy which are now implemented inside libprocessgroup.\nAdd required dependencies and include required headers.\n\nExempt-From-Owner-Approval: janitorial\n\nBug: 111307099\nTest: builds, boots\n\nChange-Id: I83dd6878839122e3ea71b7be6f6f312376897d56\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "bf06f7afdbd7019614c9e31ce43301457a3a7d55",
      "tree": "67fd35b19109aa8a9ebb0a5fec14d51486770f79",
      "parents": [
        "1dfd7ba8c05ff5c8a51f69a3042f3870d99463d4",
        "03a6e6a08dbda1c94e0c9ce6fba4a4abd3df6d59"
      ],
      "author": {
        "name": "Paul Mclean",
        "email": "pmclean@google.com",
        "time": "Thu Jan 17 21:34:35 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 17 21:34:35 2019 +0000"
      },
      "message": "Merge \"Adding Audio HAL V5: Direction API\""
    },
    {
      "commit": "17dc17828f0aedb037cf974daeb44645f390cb49",
      "tree": "a269ec1665e47843b76ef33fde2ffcc1c57f5e02",
      "parents": [
        "33d6adcebbac541a803a08013db15a84e4b82bcf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jan 10 19:00:05 2019 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jan 10 19:00:05 2019 -0800"
      },
      "message": "Audio policy: uid device affinity deterministic rule\n\nWhen setting a uid device affinity, make the rules deterministic\n  by applying an \"exclude\" rule on all mixes that don\u0027t reach\n  the devices (existing), but also a \"match\" on the mixes that\n  do (new).\nBug: 111647296\nTest: requires device with routing policy started by CarService\n\nChange-Id: I3bb844156ade75e4b9576c1e18200ca90ce26cf9\n"
    },
    {
      "commit": "bda70da1f0fb32d37abd704ff8618e55661be0a9",
      "tree": "a850374439d404da29938e2b038457926197d826",
      "parents": [
        "abf2929e8d084d2ca99d4d8712abbf31c2cb5178"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Dec 19 07:30:15 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 02 12:27:35 2019 -0800"
      },
      "message": "Dynamic audio policies: multi-zone through uid/device affinity\n\nSetting audio device affinity for a given uid augments all\n audio mix criteria that do not route to the given devices\n to exclude the uid.\nAudioPolicyManager: after changing the device affinity,\n check the outputs addressing the devices to re-evaluate\n audio routing\n\nBug: 111647296\nTest: requires device with routing policy started by CarService\nChange-Id: I72de54ae067151fe6ac2ec43b78fe544a9fd9888\n"
    },
    {
      "commit": "03a6e6a08dbda1c94e0c9ce6fba4a4abd3df6d59",
      "tree": "e609e29b32764e6fd970f16c78d3bbee5be401bb",
      "parents": [
        "c2684ac61bdbfd9913cf1361a6436272756bc6d6"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Tue Dec 04 10:54:13 2018 -0700"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Thu Dec 20 17:37:55 2018 -0700"
      },
      "message": "Adding Audio HAL V5: Direction API\n\nBug: 119137468\nTest: Testbed app.\n\nChange-Id: I1b3c81079000958da80d36616fe06930d876aac3\n"
    },
    {
      "commit": "77a428b58b1ab5d5f7212d8b1d4dbac20a985018",
      "tree": "0792e71c0e35ec1f442ae18c8f5cbbbc441b951e",
      "parents": [
        "3c3c97ae534870c90f54e8cffc6d7d82ab8ca3da",
        "a9f86651eaaf2f702b3759ec38dbb64ca8858356"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 20 17:58:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 20 17:58:36 2018 +0000"
      },
      "message": "Merge changes from topic \"more_in_recording_config\"\n\n* changes:\n  audo policy: more info in onRecordingConfigurationUpdate\n  audo policy: add effects to record clients\n"
    },
    {
      "commit": "a9f86651eaaf2f702b3759ec38dbb64ca8858356",
      "tree": "913a55b14107e7f94335bec0ad6705f9557255a0",
      "parents": [
        "c241b0dfc49014087123dae92f7341db8d30d443"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 28 17:23:11 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 19 18:05:00 2018 -0800"
      },
      "message": "audo policy: more info in onRecordingConfigurationUpdate\n\nReport more information in onRecordingConfigurationUpdate() callback:\n- For client:\n  - Port ID\n  - Enabled effects\n  - Silenced by policy\n- For stream:\n  - Active effects\n  - Active audio source\n\nBug: 111438757\nTest: make\nChange-Id: I34c3d0ee6251576de7d793bfaa2bc2c34efa2319\n"
    },
    {
      "commit": "f4de6114c20c3b3376806b359d527330f1891826",
      "tree": "6661fb92de4c7f145d0ae7de9d109d8a145601eb",
      "parents": [
        "341dd3bb36c4ceb77c80b8e8db9f0e1d647dc9ce"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 19 12:40:08 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 19 12:40:08 2018 -0800"
      },
      "message": "Do not allow set sample rate when haptic channels exists.\n\nAs haptic playback via audio require sample rate is the same as the HAL\none, sample rate should not be changed after AudioTrack is created.\n\nBug: 121271890\nTest: Manually\nChange-Id: I1549017b3ca8523735190f62f8c9a4fb8b95e000\n"
    },
    {
      "commit": "3c03c8ba1504003f25ee04b49609eb10b20e1bdf",
      "tree": "78956d959c2684a79768a6dffca77bdc7d561dbc",
      "parents": [
        "8dd9d107e9056283bc38c5921cff29c481adc99f",
        "245cdd91559873aeacf21b7c780655ef43c01682"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 12 22:38:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 12 22:38:27 2018 +0000"
      },
      "message": "Merge changes Ic5f780de,I3f963307\n\n* changes:\n  Support audio-haptic coupled playback.\n  Add buffer provider that can adjust channels.\n"
    },
    {
      "commit": "245cdd91559873aeacf21b7c780655ef43c01682",
      "tree": "336ec5eaea56659c21e9441c0d2b5a03102b9b32",
      "parents": [
        "dce8f8cc41cb6be63d13ad0099d61807746ff5d7"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Dec 07 17:55:15 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 12 11:33:47 2018 -0800"
      },
      "message": "Support audio-haptic coupled playback.\n\nWhen trying to play with haptic channel mask, use adjust channels\nbuffer provider to make the haptic channel the same as the output one.\nIf haptic playback is supported, use adjust channel non destructive\nbuffer provider to output haptic data to the end of the sink buffer.\nOtherwise, haptic data will be ignored.\n\nTest: Manually\nBug: 111454766\nChange-Id: Ic5f780de48c1e71de6ba5c4774d1ed2e9c8c51a0\n"
    },
    {
      "commit": "dce8f8cc41cb6be63d13ad0099d61807746ff5d7",
      "tree": "f85faa34c35ce81c45bcbd5bfed3fc93073e37f8",
      "parents": [
        "6b6a0f05248fc646d42f09cb891d8b6fda19426e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Dec 10 17:49:31 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 12 11:23:05 2018 -0800"
      },
      "message": "Add buffer provider that can adjust channels.\n\n1. Add adjust channels buffer provider, which will expand or contract\nsample data from one interleaved channel format to another. Expanded\nchannels are filled with zeros and put at the end of each frames.\nContracted channels are omitted from the end of each audio frame.\n\n2. Add adjust channels non destructive buffer provider, which could\nexpand or contract sample data from one interleaved channel format to\nanother while not destructing the buffer. Extra expanded channels are\ninterleaved in from the end of the input buffer. Contracted channels are\ncopied to the end of the output buffer. Contracted channels could be\nwritten to an output buffer with certain audio format.\n\nTest: Manually\nBug: 111454766\nChange-Id: I3f963307e73b3f7aa662d4127f78f0c61ac84510\n"
    },
    {
      "commit": "25194a64e0bb77049d279fdb982c02425095ec01",
      "tree": "f3812f7beecd278352111c85e5b684e3937ca4af",
      "parents": [
        "20d51cca2c61b65be88b5bad43e6f363e29373b8",
        "a2b32728760a75352aadf5383e7615afd5bf435c"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 21:17:01 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 11 21:17:01 2018 -0800"
      },
      "message": "Merge \"Fix cert-dcl16-c clang-tidy warnings in libaudioclient.\" am: 8774dda490 am: e8f69f37be\nam: a2b3272876\n\nChange-Id: Ib7f787d7ca149015badfe75ec2d52f80bde0f952\n"
    },
    {
      "commit": "45d34272dfa8462adda0f11ccfa169c5afa49621",
      "tree": "45450f514f133a91a4746eb6b232c86dc3280806",
      "parents": [
        "cf80f34cc5e8d16d939df21879d770200defaf6e",
        "6012f913f0772cf0b73f379778efc671ce72c557"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 12 02:32:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 12 02:32:28 2018 +0000"
      },
      "message": "Merge \"Querying capability of haptic playback.\""
    },
    {
      "commit": "6012f913f0772cf0b73f379778efc671ce72c557",
      "tree": "c77bb87b93b7fd9e3ad78532761d7e4ac7cfe9e6",
      "parents": [
        "6b6a0f05248fc646d42f09cb891d8b6fda19426e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Nov 02 17:06:30 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 11 16:18:09 2018 -0800"
      },
      "message": "Querying capability of haptic playback.\n\nBug: 111454766\nTest: Manually test\nChange-Id: Ib200d6b8f02354a01cf599a96fb1a9062dcd3050\n"
    },
    {
      "commit": "50fa06cf6196e6235cd24a44e5bf464b28f91a7b",
      "tree": "848bcdc1e9c24817a3e1f05d079ed7f0da0d636e",
      "parents": [
        "14c577fac81b8fdcc75e4bf9243f16bd624ba58b"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 13:51:36 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 13:51:36 2018 -0800"
      },
      "message": "Fix cert-dcl16-c clang-tidy warnings in libaudioclient.\n\nBug: 120614316\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,cert-dcl16-c\nChange-Id: If3d86617594250e2a9ed79c46bf39852a9a723b2\n"
    },
    {
      "commit": "a223769e7767765ba7a546f66887508fbb19f54d",
      "tree": "a24bbadad46856fca743a3d6d31d0c046f55f73f",
      "parents": [
        "7ce82e7ccf47ec5ea00a85a15665eb51edd9b258",
        "a94fbb22404ef26d12fbb3ad0376df15f84f47ec"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 11 13:54:38 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 11 13:54:38 2018 +0000"
      },
      "message": "Merge \"Implement AudioTrack.isDirectPlaybackSupported method\""
    },
    {
      "commit": "4eb58f1f36606ad7af392a920e1d029a5fb1e797",
      "tree": "c1599fda024344eaf6da5e1d33fc410384127550",
      "parents": [
        "5a2048c3095478482a5ac16639514d3a0a214713"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 07 16:41:02 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 10 14:10:05 2018 -0800"
      },
      "message": "Revert \"Revert \"audio policy: concurrent capture\"\"\n\nThis reverts commit df628924e691e01da190c1ac5db173304442e54a.\n\nBug: 120588242\nBug: 111438757\nTest: make\nChange-Id: If58ff2143fdb744678bb84394598104ced01f5b9\n"
    },
    {
      "commit": "df628924e691e01da190c1ac5db173304442e54a",
      "tree": "e2dda15a881c963a14520117128b5b9857834759",
      "parents": [
        "4c1ef4b64d113be6ee1106375bd10cdc643e80d8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 06 21:45:51 2018 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 06 21:45:51 2018 +0000"
      },
      "message": "Revert \"audio policy: concurrent capture\"\n\nThis reverts commit 4c1ef4b64d113be6ee1106375bd10cdc643e80d8.\n\nReason for revert: b/120588242\n\nBug: 120588242\nChange-Id: Iac41f371cb739c54d5ce519232688bebe2285c72\nTest: Launch QSB and capture from mic icon\n"
    },
    {
      "commit": "a94fbb22404ef26d12fbb3ad0376df15f84f47ec",
      "tree": "b4a8052d5ce8726541ba7a25e3f1f449d351acd9",
      "parents": [
        "b079c02b1fa4f1b5c5b6334b93af584797b4454f"
      ],
      "author": {
        "name": "Michael Chan",
        "email": "mzchan@dolby.com",
        "time": "Tue Apr 24 14:31:19 2018 +1000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 05 15:35:35 2018 -0800"
      },
      "message": "Implement AudioTrack.isDirectPlaybackSupported method\n\nThe method checks whether the provided AudioFormat can be played\nvia currently connected output devices w/o SRC or downmixing\nby the framework.\n\nThe implementation methods are called \u0027isDirectOutputSupported\u0027\nto match APM\u0027s terminology.\n\nBug: 120044865\nTest: atest CtsMediaTestCases:AudioTrackTest#testBuilderValidate\nChange-Id: I11769f796c34583fb2641415d2faab00ac526123\n"
    },
    {
      "commit": "4c1ef4b64d113be6ee1106375bd10cdc643e80d8",
      "tree": "203b9b1ca84efc9342514175d616c0a7c22150ad",
      "parents": [
        "973db02ac18fa1de9ce6221f47b01af1bdc4bec2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 13 16:46:26 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 04 12:06:37 2018 -0800"
      },
      "message": "audio policy: concurrent capture\n\nImplement concurrent capture in audio policy manager:\n- Attach AudioRecord client to already opened input when possible\ninstead of systematically opening a new input for each client.\n- Always allow inputs to start even in case of concurrency.\n- Clients are selectively silenced based on their app state by audio\npolicy service.\n- In case of concurrency on a given input stream, device and source is\nchosen based app states and source priority.\n\nBug: 111438757\nTest: Manual capture tests with solotester and Camera, Assistant and Duo\nTest: CTS tests for AudioRecord\n\nChange-Id: I302710ff545f67361d9aca89e81de40771ce7fb0\n"
    },
    {
      "commit": "973db02ac18fa1de9ce6221f47b01af1bdc4bec2",
      "tree": "e2dda15a881c963a14520117128b5b9857834759",
      "parents": [
        "f4a342abd2959904caa18b5a0671e8107581ff24"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 20 14:54:31 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 04 12:06:37 2018 -0800"
      },
      "message": "audio flinger: return port ID as track ID to client\n\nReturn the port ID allocated by audio policy manager instead of the\ninternal track ID allocated by audio flinger when an AudioTrack or\nAudioRecord is created.\nThis information is more useful for logs and allows to associate information coming\nfrom audiopolicy manager with a specific client instance.\n\nBug: 111438757\nTest: Manual playback and capture tests\nChange-Id: Ib467d8fcc34d9a8aa7bcaac0770a741982b847c5\n"
    },
    {
      "commit": "2a2837d0dcc63d834b9ca313bf322f967a989eec",
      "tree": "3fb865132546838d1182caa5515f3e1f83d2d0ef",
      "parents": [
        "e72cb66313a21ecd218f2b9a01491bc1ebbe2c39",
        "ac917aca235ff5170f00c2ee933f41f07a40232d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 30 16:36:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 30 16:36:19 2018 +0000"
      },
      "message": "Merge \"Add selectPresentation API to IAudioTrack\""
    },
    {
      "commit": "73c3a18dcc23703fa51a550cca9d290f392de1bc",
      "tree": "03fa4f3e45e97b7bb6dfcb8e0031ead5f69a11b3",
      "parents": [
        "f1188418c6220f27ed7ec6491380062c039a7b42",
        "b78763e6098baa33f441abef74d53636f72c6d6e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 28 23:38:13 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 28 23:38:13 2018 +0000"
      },
      "message": "Merge \"audio policy: receive assistant and a11y service UIDs\""
    },
    {
      "commit": "ac917aca235ff5170f00c2ee933f41f07a40232d",
      "tree": "2927cc6419b7fe615ccdc977224f6f3ed656f58e",
      "parents": [
        "e4eb88fa5fe62a9b6b709fbf2ff26f37acf6db20"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Nov 28 14:03:52 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Nov 28 14:44:17 2018 -0800"
      },
      "message": "Add selectPresentation API to IAudioTrack\n\nThe Java AudioTrack interface has a setPresentation API. This\ncalls the setParameters API in IAudioTrack. However, this does\nnot eventuate into a call into the android.hardware.audio@4.0\nIStreamOut selectPresentation API.\n\nAdd selectPresentation API to IAudioTrack and call down to the\nandroid.hardware.audio@4.0 IStreamOut selectPresentation API.\nTranslate into calls to setParameters API for legacy HAL\ninterfaces.\n\nBug: 63901775\nTest: compile\nChange-Id: Id634a107f3f93ab18dc80d2bd0af67bda35e859f\n"
    },
    {
      "commit": "b78763e6098baa33f441abef74d53636f72c6d6e",
      "tree": "f9dbf113c768761cfa7b10ebcce917a2b7a2beba",
      "parents": [
        "f32108e7bab9ce2eb8107678c74701d1428a7b2c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 17 10:08:02 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 26 14:32:41 2018 -0800"
      },
      "message": "audio policy: receive assistant and a11y service UIDs\n\nAdd APIs to communicate assistant and accessibility service UIDs\nto audio policy service in order to implement the new concurrent\ncapture policy.\n\nBug: 111438757\nTest: enable and disable Google Assistant and Voice Access.\n\nChange-Id: Ia804613051edab2ebd57d317b5b7509c98e7c6b4\n"
    },
    {
      "commit": "0248a2a3ae176e4f306dbf3d869792bb93312ed5",
      "tree": "e9f5d8a65fca2a0afc53b2b5b3ebe672b4bf4b05",
      "parents": [
        "2a6038e529574bfa183ab1de1fffd01a1504fc3a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 21 10:05:57 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 21 10:05:57 2018 -0800"
      },
      "message": "Fix double track thread initialization\n\nBug: 119870459\nTest: cts-tradefed run cts -m CtsMediaTestCases -t android.media.cts.AudioTrackOffloadTest\nChange-Id: I15f314ee5696ead90a09991bfe10e1ae3ff013e0\n"
    },
    {
      "commit": "a60e9a209ed7dbeaa563b3145904038064615432",
      "tree": "997b5121a13729113a1cd6aaf85dfe6f58c40cd9",
      "parents": [
        "c40d87ea8409b23e6326ffe2233e02a99ecfac15"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Nov 15 16:13:36 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Nov 16 17:29:51 2018 -0800"
      },
      "message": "AudioTrack offload: fix EVENT_STREAM_END  not called\n\nIf the track thread is paused, EVENT_STREAM_END will not delivered\n for offload. This event is required for PRESENTATION_END to\n be delivered for Java AudioTrack offload.\n\nBug: 86837964\nTest: cts-tradefed run cts -m CtsMediaTestCases -t android.media.cts.AudioTrackOffloadTest\n\nChange-Id: I491cdb0a6faa69e5c37139c0364b5c9079ff1f14\n"
    },
    {
      "commit": "f4158d855b941e5c7ffcc4f119f2bd146986b0c4",
      "tree": "cdd9cc09d90ff6d43ee200233f9fa16e6124f5b6",
      "parents": [
        "0917fc25390c5f362332630e2d980480d1444e0d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Sep 25 12:43:58 2018 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 24 10:46:30 2018 -0700"
      },
      "message": "AudioTrack: new transfer mode for Java offload support\n\nNew transfer mode for java AudioTrack using offload\n  path, where data is provided through the write method,\n  and the callback is used to notify the track owner\n  more data can be written on the track.\n\nBug 86837964\nTest: adb shell clof --source /sdcard/Music/my.mp3\n\nChange-Id: I47c760b7fb8f1431945ca24ff4a26311b63cb761\n"
    },
    {
      "commit": "cab10da0da9d9a991c4b895992b6c0e34d5b8293",
      "tree": "530cf9ac9385f696c31cffd880a4c2c0160966a3",
      "parents": [
        "f577d69b4133139a04dd7b2809c7d77edc5ca898",
        "6ec546dad994d3cc7ffbdf9be42d69811805085a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Oct 20 02:18:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Oct 20 02:18:26 2018 +0000"
      },
      "message": "Merge \"audio: fix AudioTrack and AudioRecord restore\""
    },
    {
      "commit": "c8cecbe19ba6bb09f0374af23b636bf3028e6af9",
      "tree": "a7e0cae7a9513d67c80075a6cc59ade117f78a01",
      "parents": [
        "cf68127174cbbf0cf87a0f4876d178b240b1de4e",
        "de9e33dfcbdabc0227ab47e4a13325b5b410ab39"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 11 22:56:26 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 11 22:56:26 2018 +0000"
      },
      "message": "Merge \"Add transaction code to TimeCheck crash\""
    },
    {
      "commit": "6ec546dad994d3cc7ffbdf9be42d69811805085a",
      "tree": "64bb14daa86cb6ae0445bc52564369ca0ced94ae",
      "parents": [
        "66b4c2c74829721f7e12de810b936e5e323a51dd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 10 16:52:14 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 11 14:16:09 2018 -0700"
      },
      "message": "audio: fix AudioTrack and AudioRecord restore\n\nAllow retry on failure to reconnected to audioserver when restoring an\nAudioTrack or AudioRecord and do not change state to inactive when\nreconnection fails. In case of failure due to temporary race conditions this will\nincrease the chances of success and avoid ending up in an inconsistent\nactive state if a later reconnection succeeds.\n\nBug: 113109529\nTest: AudioTrack CTS tests and manual playback smoke tests.\nTest: AudioRecord CTS tests and manual capture smoke tests.\nChange-Id: I570724eb46f3a0f830267396aba06297bd37df7a\n"
    },
    {
      "commit": "de9e33dfcbdabc0227ab47e4a13325b5b410ab39",
      "tree": "bf5c5eff11ac61c1c61630a30793fc15d9d376c5",
      "parents": [
        "fd53bf2f59071766f6f2ea925a6718919eac2502"
      ],
      "author": {
        "name": "Stanley Tng",
        "email": "stng@google.com",
        "time": "Wed Oct 10 18:48:33 2018 -0700"
      },
      "committer": {
        "name": "Stanley Tng",
        "email": "stng@google.com",
        "time": "Thu Oct 11 18:52:14 2018 +0000"
      },
      "message": "Add transaction code to TimeCheck crash\n\nWhen there is a TimeCheck timeout crash, the transaction code will be\nuseful for debugging.\n\nTest: Manual run\nChange-Id: I8a93ead7ec7379f51b211ca31c68ec6ec2553afc\nMerged-In: I4716852c77d56703ad5f3dfc2500f598a2b80a12\n"
    },
    {
      "commit": "afd5101b9e661fb17b8bacf7bc2293aa97088dcb",
      "tree": "c165351a8151b27e1f273ef5b6a75546a01b906e",
      "parents": [
        "b4e880abdcde87ff89937f4f8de819af0cfe371f",
        "1dd2f5bc443e15538271013052d3ed06912ec58b"
      ],
      "author": {
        "name": "Nobuaki Tanaka",
        "email": "nobuaki.xb.tanaka@sony.com",
        "time": "Thu Oct 04 19:17:45 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 04 19:17:45 2018 -0700"
      },
      "message": "Merge \"Support to play the various tones as per the Indian standard\" am: 3c5b1b7150 am: 9d0e47f953\nam: 1dd2f5bc44\n\nChange-Id: Iab8837922e54ad6c4af8c340e0ff75cd80418013\n"
    },
    {
      "commit": "3c5b1b7150257e33d4ee14166d577d1d644a31b2",
      "tree": "1deaf090b1cd20b4d608b25b30ad730fcf17d2d5",
      "parents": [
        "0a0cfbd2bef78f26231d9fb53546e7682f9bf4bd",
        "f4a4005adb8340b2883d0b6771bcebac5c9c75b5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 05 01:54:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 01:54:04 2018 +0000"
      },
      "message": "Merge \"Support to play the various tones as per the Indian standard\""
    },
    {
      "commit": "f4a4005adb8340b2883d0b6771bcebac5c9c75b5",
      "tree": "01f9d062e5156a9e8247b535b111c335c09ce611",
      "parents": [
        "db44c5d13b9972a0d0dd177c31259b74bc2e4376"
      ],
      "author": {
        "name": "Nobuaki Tanaka",
        "email": "nobuaki.xb.tanaka@sony.com",
        "time": "Wed Sep 12 16:22:17 2018 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Wed Oct 03 12:42:59 2018 +0900"
      },
      "message": "Support to play the various tones as per the Indian standard\n\nTo play the following tones as per Indian standards.\n - Dial tone\n - Busy tone\n - Congestion tone\n - Call waiting tone\n - Ringing tone\n\nBug: 117161543\nTest: Play each tone in indian locale\n\nChange-Id: I6b7a2a5674a79a26fba80f987d2ed6ed555ce4bf\n"
    },
    {
      "commit": "99e9db75039f86a73d1a5052b1e3538ddda20de5",
      "tree": "46f3f12e2748a7f4feae255aedb4a3195d1cd27c",
      "parents": [
        "05fa8856abaa1e050c3c8e6ba97fc8878ed7600a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Sep 14 15:17:36 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Sep 18 15:02:54 2018 -0700"
      },
      "message": "AudioTrackShared: Ensure proper subtraction\n\nOptimizing compilers may skip masking if the result of\nsubtraction is assigned to larger integral type.\n\nTest: long term test with 64 bit audioserver\nBug: 113763960\nChange-Id: Ida405a5a26e819891e7da7f29ebd0b78d2de1fc5\n"
    },
    {
      "commit": "4c94e03cac24f172e8367e351b66adf709b2cee6",
      "tree": "0115b73acebf2f3165e1ce20d7bdb65cab08136b",
      "parents": [
        "61c80f1f4a07886a01abada34beefed9db1bec4b",
        "51e09f9cae7b3195a2799b876eea8949faae912c"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Sep 18 10:26:55 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Sep 18 10:26:55 2018 -0700"
      },
      "message": "Merge \"Suppress implicit-fallthrough warnings in libaudioclient.\" am: 058002e0e3 am: 8a7c2de43f\nam: 51e09f9cae\n\nChange-Id: Ifcae7a82849a698a2406279e18c74be454c596b2\n"
    },
    {
      "commit": "ffe3558cb1024b39ce1e0e1dc2fb20bb3663299a",
      "tree": "05195cdd37c3c2c68aa26a66b5af1afb823c65ec",
      "parents": [
        "f8d13dee65d3708ea527e9f565be85031d7021ba"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 13 13:59:28 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Sep 17 12:45:53 2018 -0700"
      },
      "message": "Suppress implicit-fallthrough warnings in libaudioclient.\n\nAdd FALLTHROUGH_INTENDED for clang compiler.\n\nBug: 112564944\nTest: build with global -Wimplicit-fallthrough.\nChange-Id: Icafaff606364fe7bffaad1e9c2e763c444ea999c\n"
    },
    {
      "commit": "d975119d1ad25c64faff476b48f3d39b29244bc4",
      "tree": "9ab084833820d5343d8453ab66d5aea03f6429a9",
      "parents": [
        "6d853b134bef4bd750439023664d68542f27bb10",
        "ace588cc1e78f3a83a0e410113009fb31a0f9af7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sat Sep 15 01:38:23 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Sep 15 01:38:23 2018 +0000"
      },
      "message": "Merge \"nblog: split NBLog.cpp into multiple files\""
    },
    {
      "commit": "ace588cc1e78f3a83a0e410113009fb31a0f9af7",
      "tree": "7b82d5a4892f8ea53620c937927b6c9eb363cdb6",
      "parents": [
        "c5fee0a8854f5decd3b567d2383cd38f0aada4f4"
      ],
      "author": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Wed Sep 12 11:44:43 2018 -0700"
      },
      "committer": {
        "name": "Eric Tan",
        "email": "taneric@google.com",
        "time": "Fri Sep 14 15:57:50 2018 -0700"
      },
      "message": "nblog: split NBLog.cpp into multiple files\n\nNBLog.cpp was deleted and split up into Entry.cpp, Merger.cpp,\nReader.cpp, Timeline.cpp, and Writer.cpp. NBLog.h was split up into\nEntry.h, Events.h, Merger.h, Reader.h, Timeline.h, and Writer.h. NBLog.h\nnow includes all of these new headers except Merger.h, which is managed\nexclusively by MediaLogService.\n\nOther changes:\n- changed NBLog from a class to a namespace\n- changed NBLog::thread_info_t.type to enum and replaced magic numbers\n- fixed some fragile build dependencies in libaudioclient and medialog\n\nNo other changes were made, and all functionalities that existed prior\nto this commit remain the same.\n\nTest: build, dumpsys media.log\nBug: 68148948\nChange-Id: I1ce6dcb7b30d004f90584edfad7103a89f7bab0c\n"
    },
    {
      "commit": "6b1c612162ce290c54e0b0a418e1791410f95d47",
      "tree": "51f1213fa8c534e8f403c40a1b6f2f34b7b7fa39",
      "parents": [
        "fb8ede2a020e741cb892ee024fcfba7e689183f2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 12 19:09:07 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 13 17:54:49 2018 -0700"
      },
      "message": "AudioRecord: Add client side track id for logging\n\nTest: Audio sanity test, check logcat\nBug: 115400221\nChange-Id: Ifa9c05c0df66e372e773b5149a0f1ed49a21ef3a\n"
    },
    {
      "commit": "fb8ede2a020e741cb892ee024fcfba7e689183f2",
      "tree": "702e8497e892eaa0d4d8fb7d28ec78fc2762a1f2",
      "parents": [
        "9d84af54244f7ff086afdcc6e477fe4d04874652"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 12 19:03:24 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 13 17:54:36 2018 -0700"
      },
      "message": "AudioTrack: Add client side track id for logging\n\nTest: Audio sanity test, check logcat\nBug: 115400221\nChange-Id: I7c74af8962f7d3b72a7b843df906c54f79f6f009\n"
    },
    {
      "commit": "f8219e1b52a2aa634176e9dcf7822f526a82b852",
      "tree": "14ed5d5d11af36880f87a3d856b8f55b9cbb671a",
      "parents": [
        "6e5d6f6f109f16ac36bfd90acb198156f8ba13c4",
        "9744ab45349a323ea1d9bf19d6cf05dd0eb04433"
      ],
      "author": {
        "name": "Jia Jia",
        "email": "jia.jia@zte.com.cn",
        "time": "Wed Aug 22 04:22:18 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 22 04:22:18 2018 -0700"
      },
      "message": "Merge \"Fixed audioserver crash in monkey test\" am: db44c5d13b am: 5e64d79404\nam: 9744ab4534\n\nChange-Id: I9774f93056bcbffb4032115eedcbb719874da450\n"
    },
    {
      "commit": "db44c5d13b9972a0d0dd177c31259b74bc2e4376",
      "tree": "9ce354b753e2018a2c42f2190d659cc1118e8c2c",
      "parents": [
        "1949fae278542569c538282a11e65cbe54c45618",
        "69ec67ef5da3adf788956ea5cc8398110fb6030d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 21 20:28:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 21 20:28:31 2018 +0000"
      },
      "message": "Merge \"Fixed audioserver crash in monkey test\""
    },
    {
      "commit": "333c6b74cb1806f5732344e997861c80e99407d4",
      "tree": "7b830b6d01870c8b3ac2cd0a472bf37c8023bb9d",
      "parents": [
        "2ff16ece16b54d5ffc05f58cebac794c8e153d8f",
        "d1f9e1856196463842e2149c8a75a618ae133b39"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 20 18:27:05 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 20 18:27:05 2018 -0700"
      },
      "message": "Merge \"Fix or suppress some google-runtime-int warnings.\" am: d9f80435b6 am: c852559529\nam: d1f9e18561\n\nChange-Id: I612fb5d62488da8f658c33ebda5ab28877eccb9d\n"
    },
    {
      "commit": "2ff16ece16b54d5ffc05f58cebac794c8e153d8f",
      "tree": "619880fd47f22d12ff1f3c8947e35f0831e22ba8",
      "parents": [
        "6b8cf11049740ef0aab5240515fb26b7933a43b2",
        "4772bfeac8ca5aab7c6a573015c4c1aba5d2d94e"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Mon Aug 20 18:24:40 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 20 18:24:40 2018 -0700"
      },
      "message": "Merge \"Prevent old callback events when track is recycled\" am: eb6c38a9eb am: aadc33659e\nam: 4772bfeac8\n\nChange-Id: I9a9cfb2d8b4756a9b484ec4698a94a85d2a7383a\n"
    },
    {
      "commit": "d9f80435b643029819635d15416fcde0b9998829",
      "tree": "b508fd5e4958c104c7d960da765773b3621f16be",
      "parents": [
        "eb6c38a9eb693c1f5035aaece4396d37810ced65",
        "bca742946f0c20e4227b23f2b52c43350e73ca5c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 21 00:14:43 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 21 00:14:43 2018 +0000"
      },
      "message": "Merge \"Fix or suppress some google-runtime-int warnings.\""
    },
    {
      "commit": "eb6c38a9eb693c1f5035aaece4396d37810ced65",
      "tree": "57e10278b5b1637e17367d014b16394ad57876b3",
      "parents": [
        "1e1e06ba5fec2db825aaaa59fa566aa718df5291",
        "6e8bf981aca33625e133ab8f9daafd1652b0eced"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 21 00:10:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 21 00:10:47 2018 +0000"
      },
      "message": "Merge \"Prevent old callback events when track is recycled\""
    },
    {
      "commit": "bca742946f0c20e4227b23f2b52c43350e73ca5c",
      "tree": "9400059ddc2f410c677d6bb66ac32f925bc49737",
      "parents": [
        "51d361e77c038003d7aeab39e9d91ffb31332c1e"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Aug 10 16:06:07 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 20 16:01:29 2018 -0700"
      },
      "message": "Fix or suppress some google-runtime-int warnings.\n\n* Use time_t for tv_sec type.\n* Use \u0027auto\u0027 to avoid explicitly use of \u0027long\u0027.\n* Use (u)int16_t instead of (unsigned) short.\n\nBug: 112478838\nTest: build with WITH_TIDY\u003d1\nChange-Id: I023e579b071688731064e51dc94f404274cd59e2\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": "b40f1cf06c8949389e70ddf1e3367a1ac25b6034",
      "tree": "5fb1a6cf44e4b67e2be52b57e5270064432f2916",
      "parents": [
        "0c167267e1dd521a1288bd1746c42b0680ab5b88",
        "e21535e72848b507f899c84d134086295a22ed36"
      ],
      "author": {
        "name": "haobo10173529",
        "email": "hao.bo15@zte.com.cn",
        "time": "Thu Aug 16 20:50:18 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 16 20:50:18 2018 -0700"
      },
      "message": "Merge \"Prevent object of AudioEffect be deleted until construction finished\" am: 637ee654cf am: 1b201ee707\nam: e21535e728\n\nChange-Id: I3a4e538c2e0b89be867f9d145acc0988fb697339\n"
    },
    {
      "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": "3f51b54ddc8440f4f4beb57e18202ba297356cf9",
      "tree": "d9c1225a5310362ba47e7673afe9af1c5afe3bcb",
      "parents": [
        "8be94e995403a65724c5a75e3084bc41eb69fb22"
      ],
      "author": {
        "name": "haobo10173529",
        "email": "hao.bo15@zte.com.cn",
        "time": "Thu Aug 09 09:14:31 2018 +0800"
      },
      "committer": {
        "name": "Jia Jia",
        "email": "jia.jia@zte.com.cn",
        "time": "Tue Aug 14 21:50:00 2018 +0800"
      },
      "message": "Prevent object of AudioEffect be deleted until construction finished\n\nThe object of AudioEffect may be deleted when construction ongoing,\nif the method of mIEffectClient invoked by the proxy in audioflinger.\n\nIf mIEffectClient cleared in the destructor of AudioEffect before IEffect\nlinkToDeath to mIEffectClient in the constructor of the AudioEffect,\nthe aforementioned case may lead to an abort, i.e.,\n\"Abort Message: \u0027linkToDeath():recipient must be non-NULL\".\n\nTest: monkey test\nChange-Id: I5fe8227b8528fb9fb9c9a1e636bd4dc0cc22c2cf\n"
    },
    {
      "commit": "6e8bf981aca33625e133ab8f9daafd1652b0eced",
      "tree": "f2d0795e2315bd37e6b598394d042e5068ac3120",
      "parents": [
        "25af42f8bff5a973205bbc36d8617a133e908c51"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Fri Jun 09 16:17:33 2017 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Wed Aug 08 13:04:48 2018 +0900"
      },
      "message": "Prevent old callback events when track is recycled\n\nWhen a track is reused from SoundPool and started again, the\nprevious callback events could be done after track started,\nthen the new playback will be stopped unintentionally.\nClear the old cblk flags when recycled track is started again\nto avoid triggering unexpected callback events.\n\nBug: 112269355\nTest: Playback with SoundPool frequently\nChange-Id: I111b085d08b73c333fbb0fc2896efe1c013c584c\n"
    },
    {
      "commit": "69ec67ef5da3adf788956ea5cc8398110fb6030d",
      "tree": "c8e402e41171ce32ee43ec1b62d629904b9918c7",
      "parents": [
        "9d431ceffaad7334f61971abdee8e8436ffc2447"
      ],
      "author": {
        "name": "Jia Jia",
        "email": "jia.jia@zte.com.cn",
        "time": "Sun Jul 22 22:28:29 2018 +0800"
      },
      "committer": {
        "name": "Jia Jia",
        "email": "jia.jia@zte.com.cn",
        "time": "Tue Aug 07 00:17:33 2018 +0800"
      },
      "message": "Fixed audioserver crash in monkey test\n\nEnable log function in ToneGenerator.cpp, then ToneGenerator\nplays consecutively many times and do not stopTone.\n\n\"lpToneGen-\u003emNextSegSmp*1000\" will go beyond the scope of unsigned\nint, and audioserver get crashed.\n\nTest: Enable log function in ToneGenerator.cpp, alarm notification is\nplayed when the phone is online. ToneGenerator plays consecutively.\nDo not stopTone. then we get audioserver crash.\n\nChange-Id: I073590088fccb32a73353d14970dc89441045663\n"
    },
    {
      "commit": "2a5675885641ac73b7e08e582f7889351c50fa4f",
      "tree": "b6f032fa829d2a188b723df4efc0e5c08f5cd2da",
      "parents": [
        "707225ae85ab7c84edefb480fe03445866f60739",
        "b2fe78f72435f475fad855d20c1ef0309e392b8f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 03 02:35:50 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 03 02:35:50 2018 +0000"
      },
      "message": "Merge \"IAudioFlinger: fix early return in createEffect\""
    },
    {
      "commit": "b2fe78f72435f475fad855d20c1ef0309e392b8f",
      "tree": "95ce3c80168218f1e0c18eda061980329d953dde",
      "parents": [
        "c74e507ea7742da83d97768b332b17dcea60cfc0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 02 17:56:11 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 02 17:56:11 2018 -0700"
      },
      "message": "IAudioFlinger: fix early return in createEffect\n\nBug: 112161565\nTest: make\nChange-Id: I7056ed1a3454c7e0fbe692029f75fe5b50c4c42f\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": "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": "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": "c3fd2a4396d692d9940b09e7a933b53bc808daab",
      "tree": "767d633268e55ffc09b7bafe1257ce7fa7f4fdfd",
      "parents": [
        "c9932fb7c3fa68e3a56e44346638ce93400d6c62",
        "39b09b52e313e89c3493927b379d2e256bf04bd9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 20 23:19:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 23:19:27 2018 +0000"
      },
      "message": "Merge \"audioserver: log system event for binder timeouts\""
    },
    {
      "commit": "d7fe086d3b45f088083170006367dfc4246f70b0",
      "tree": "fa89edfbebbd2cffdccc0ab6f01caa9a06d02390",
      "parents": [
        "b05e9b139f8cc5c20f7e94d0a9cf2f7430b52cf2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 14 16:48:01 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 17 13:02:28 2018 -0700"
      },
      "message": "audio policy: refactor audio playback APIs\n\nRefactor audio policy service APIs controlling audio playback (startOutput, stopOutput, releaseOutput)\nTo allow finer grain control per AudioTrack client.\n\nTest: AudioTrack CTS test. manual test of playback use cases.\nChange-Id: I49a681f3c2a8211e524824993049b24d8086376d\n"
    },
    {
      "commit": "39b09b52e313e89c3493927b379d2e256bf04bd9",
      "tree": "04e64f327c09b0d3344884d59c35ff520c751e3e",
      "parents": [
        "cd56a1c2a0adcd21aad3a64c761aa3562d915be1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 29 12:24:40 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 10 09:02:26 2018 -0700"
      },
      "message": "audioserver: log system event for binder timeouts\n\nAdd event logging in case of audioserver watchdog to help\ncollect statistics.\n\nTest: make. Simulate watchdog and check events in logcat.\n\nChange-Id: I4716852c77d56703ad5f3dfc2500f598a2b80a12\n"
    },
    {
      "commit": "885957513e8e86453bac323de6f6e562cc174050",
      "tree": "79c388ecd0f7587502770dd427ecde92260c3b98",
      "parents": [
        "2a4e16168061c0516c48b93450917eede7723c44"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 01 15:21:47 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 01 15:23:22 2018 -0700"
      },
      "message": "AudioTimestamp: check zero sample rate in latency computation\n\nTest: compile, no material difference\nChange-Id: I27a49ee56a16cec6937ca493ba4b1fbe0bb4121e\n"
    },
    {
      "commit": "2a4e16168061c0516c48b93450917eede7723c44",
      "tree": "059bb279ffacafb9e120b1fbb1e3b49a749b2781",
      "parents": [
        "1ee5077f7b6a0129492494aa55f92089c4cc2049"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 01 15:06:09 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 01 15:17:11 2018 -0700"
      },
      "message": "AudioTrackShared: Move framesReadySafe to ServerProxy\n\nAllows common use for latency computation.\nImplementation for AudioRecordServerProxy added.\n\nTest: audio sanity, subsequent latency tests\nBug: 80447764\nChange-Id: Ib53181cdced16606bf268769a04bd52c689d89d3\n"
    },
    {
      "commit": "f4c9c2591eca3d672e20ef428c787bb0054efc7d",
      "tree": "37b417c7880b047005a2a6f0b0ebcbac1e8fdd83",
      "parents": [
        "d85c6127ae547daa9051abda435ca4fe2cb2d624"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 29 20:01:40 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 29 20:01:40 2018 -0700"
      },
      "message": "AudioTimestamp: toString should be const\n\nTest: compile, no material difference\nChange-Id: Ie97d15a4010150202e833603ebdd4289131de87d\n"
    },
    {
      "commit": "f6ab58dfbc394e88115eb1483aaf47db91279981",
      "tree": "3a1c63e4a0e66fcb960201ec9852cc8c7e8dc8c0",
      "parents": [
        "59fef32845e5fec2f5c97c9637965b8c3ca24a6f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 25 12:50:39 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 25 14:03:16 2018 -0700"
      },
      "message": "AudioFlinger: Add latency measurements from timestamp\n\nReplaces main and aux buf from track dump.\n\nBug: 80272001\nTest: adb shell dumpsys media.audio_flinger\nChange-Id: I5d6565410e652ec7fc6701b171d299dea9f7bc3e\n"
    },
    {
      "commit": "298e1b3db0f94396249933c823b6ff55cf8fc1cc",
      "tree": "8deeed6f3a7001d40440a130e9f377ec3fb59a89",
      "parents": [
        "868c0a9e91df17dcad52b5a0dcacc51205dd8f46",
        "4ef19fa450e8b523741a22fabee8f62691abec37"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 22 20:47:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 22 20:47:54 2018 +0000"
      },
      "message": "Merge \"Update audio permission checking\""
    },
    {
      "commit": "4ef19fa450e8b523741a22fabee8f62691abec37",
      "tree": "5d0eaaf73cebe029d1d8dd935d5c6fddb12ee70f",
      "parents": [
        "ab7ef300b74904bce6c5c810d9e5679abfa582e6"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 15 19:35:29 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 17 18:11:55 2018 -0700"
      },
      "message": "Update audio permission checking\n\nChange captureAudioOutputAllowed to check client pid.\n\nCheck calling uid with AID_AUDIOSERVER instead of calling pid with\nown pid. This is consistent, and works if AudioFlinger and\nAudioPolicyManager exist as different processes.\n\nRemove getpid_cached since getpid() is very fast. This removes\nany initialization issues.\n\nReplace getuid() with AID_AUDIOSERVER to remove ambiguity of\nmultiple native audio services for multiple users. Only\none exists regardless of users.\n\nDo not use multiuser UID checks for certain native services\nthat do not spawn for multiple users to prevent accidently exposure.\n\nMove permission checks to use ServiceUtilities for control and\nconsistency.\n\nRename isTrustedCallingUid to isAudioServerOrMediaServerUid\nso that permission check is explicitly known to caller.\n\nUpdate MediaLogService to use ServiceUtilities.\n\nTest: Basic sanity\nTest: AudioTrackTest, AudioRecordTest, SoundPool, SoundTrigger\nBug: 79485140\nChange-Id: Ib8ccb36929a9b4806c01626f32fa023a046d6020\n"
    },
    {
      "commit": "b1410279236c35e05edfb7aa96dec563759d073e",
      "tree": "7228325d07710a7366a5601b11e974b2f9dfdd02",
      "parents": [
        "18a64dc9e1bdb6f0bf80a76b86b3ca96ed5be333",
        "7221451768a69fa5bc8dbbff8ea76af47d3ea70a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 17 15:03:40 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 17 15:03:40 2018 -0700"
      },
      "message": "Merge \"audiopolicy: Optimize A2DP codec config change\" into pi-dev am: 0ba1ae398e\nam: 7221451768\n\nChange-Id: Iab6dde9d368f6647aeb1eab49dc7b45a6b96f756\n"
    },
    {
      "commit": "3432e0439d3b09756f125dfa734951c654d63baf",
      "tree": "a5ccde7855da94bf284d302e61adf0d155f0dcfa",
      "parents": [
        "5eb9d967e81ace00d96ab50b9264b25560e9df1d"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@codeaurora.org",
        "time": "Fri Apr 06 14:22:15 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 17 11:18:25 2018 -0700"
      },
      "message": "audiopolicy: Optimize A2DP codec config change\n\nHandle A2DP codec config change in audio HAL without\nclosing / re-opening outputs or invalidating streams\nfrom AudioPolicyManager.\n\nBug: 79476124\nTest: music playback over BT A2DP\nChange-Id: I87263da32815a4d4f6273068ef0b2a5b93c73b75\n"
    },
    {
      "commit": "f38ae75e82876fa231cc55bca761e6e22ede1867",
      "tree": "41c05c6b412169df2cf5c392684f27b32f974803",
      "parents": [
        "8bc70f7fc17d70e3d3be44d55e17c827fb6e2fb1",
        "0e66c708f9afc27195d6854977f70f070ba1e46b"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue May 15 14:52:05 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 15 14:52:05 2018 -0700"
      },
      "message": "Merge \"Add support for manually set surround formats.\" into pi-dev am: f824853eab\nam: 0e66c708f9\n\nChange-Id: If0fb97fcf33cb8b1b712238102d17f2c84c24f38\n"
    },
    {
      "commit": "f824853eabf8eab483de7387c001493dda63966b",
      "tree": "2d56a1a846f7adf1e25a7cf4465d34d648cd861a",
      "parents": [
        "625e3020f8c070c8d8449af1bdaeaa002c11cc03",
        "817729095966c338615a8a791d2dbf774fc034ef"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue May 15 20:54:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 15 20:54:28 2018 +0000"
      },
      "message": "Merge \"Add support for manually set surround formats.\" into pi-dev"
    },
    {
      "commit": "817729095966c338615a8a791d2dbf774fc034ef",
      "tree": "b9c23fc427ec841575b37c59280000467c5a1648",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Apr 02 17:52:27 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu May 10 18:20:24 2018 -0700"
      },
      "message": "Add support for manually set surround formats.\n\nTo make surround sound setting more clear to users, we are changing\nsurround setting from ALWAYS to MANUAL. With MANUAL, users could enable\nsurround formats according to their need.\n\nBug: 67479735\nTest: Try creating AudioTrack with enable/disable surround formats.\nChange-Id: Ia6c0e1210ff6215f4b80a278a0aa90ca9543f262\n"
    },
    {
      "commit": "2b993d08ac72b63227fdba3f5286e296673a3adc",
      "tree": "4bc58b804dac213ec133488465bd52ee3bc5f8ea",
      "parents": [
        "685faa4be5ffdb61e8508a76931bfcbda1781ee7",
        "c99607b99337028277ee2dffbb1b92ec8b51944f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 16:35:59 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 09 16:35:59 2018 -0700"
      },
      "message": "Merge \"audio policy: re enable setForceUse for system apps.\" into pi-dev am: fb4e361a9e\nam: c99607b993\n\nChange-Id: If78c24dc339365c9a232b10727e58decf35eaaa5\n"
    },
    {
      "commit": "fb4e361a9e49651b30c1d023ae2619143ae62665",
      "tree": "ad37800ae4377f1160ed07acae65c131ce753206",
      "parents": [
        "725128d79e5cd98cc3f289586a3a4b4d4619ec6f",
        "e17378d11b275daecd20ff840bcb7d275b6801bf"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 09 23:20:12 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 09 23:20:12 2018 +0000"
      },
      "message": "Merge \"audio policy: re enable setForceUse for system apps.\" into pi-dev"
    },
    {
      "commit": "e17378d11b275daecd20ff840bcb7d275b6801bf",
      "tree": "3f49ff9153c5bd7be9d17e38532efcfc0d98cc1a",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 14:43:01 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 14:43:01 2018 -0700"
      },
      "message": "audio policy: re enable setForceUse for system apps.\n\nSome system apps (not having system AIDs) still need this\nhidden API due to lack of better option for media use case routing.\n\nAdd protection by privileged permission MODIFY_AUDIO_ROUTING instead.\n\nBug: 79475856\nTest: manual regression for music playback over speaker and bluetooth\nChange-Id: Icaa585a9fa4c043c291f24c9bab4a93f02406955\n"
    },
    {
      "commit": "be6569b3956e5d8405d42323eb5e690820fc2475",
      "tree": "c183799da174def1733de9430828f666b5e7a93f",
      "parents": [
        "f33425b82a797f3d8e85d1ddd0498826e5b39d78",
        "8962c5352d4a9e83ddb83772bc3c4fdcaf2a346e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 09 14:13:42 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 09 14:13:42 2018 -0700"
      },
      "message": "AudioTrack: Allow flush in flush state to clear subsequent written data am: 4c5ed30aeb\nam: 8962c5352d\n\nChange-Id: I079a4102555294bcbf265c361161dca5bf0b2633\n"
    },
    {
      "commit": "4c5ed30aeb86b2b1aeaf7809d569e46bc75d330c",
      "tree": "26ab9e972b27d67481e428fa3d3c56c68b806aa4",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 09 11:16:21 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 09 12:03:42 2018 -0700"
      },
      "message": "AudioTrack: Allow flush in flush state to clear subsequent written data\n\nFixes Photos a/v sync issue introduced by\ncommit 1d3556d6a068f141ac390a04f6a9d92a70f8d7ed\n\nTest: Photos, pause, then seek several times, then play.\nTest: CTS AudioTrackTest, Bluetooth, Offload, Gallery, Play Music.\nBug: 79327282\nChange-Id: I9de8edd88b526b5a9dbc9cd720bf725474949dfc\n"
    },
    {
      "commit": "fe23dfb2084877461b42c755e85a911ea8326256",
      "tree": "100bfe6dcc8764ebb8dcd9e41e914a3086b52cc5",
      "parents": [
        "7ce27dd596d509cd7c9664e6b1bbcfcfaafba7f5",
        "8add485d4b07deb5c84feb594c688be514a491c7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 08 19:07:19 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 08 19:07:19 2018 -0700"
      },
      "message": "Merge \"audiopolicy: restore normal binder call watchdog timeout\" into pi-dev am: d9ed870e64\nam: 8add485d4b\n\nChange-Id: Ie3f5d642ec6003bb9b5fcd9ea8b314fe1891ccde\n"
    },
    {
      "commit": "d9ed870e6402de3ec1253c5c2a43ed1d10078518",
      "tree": "3f7e0cfcf99216939a2e6da5a012b085f299b5cf",
      "parents": [
        "d5fa1baa8b0a985d80cbfb53c3960504314ca8f6",
        "da6a5a80b402fa0d836240d7e05cd887080c4f4d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 09 01:52:47 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 09 01:52:47 2018 +0000"
      },
      "message": "Merge \"audiopolicy: restore normal binder call watchdog timeout\" into pi-dev"
    },
    {
      "commit": "99c58a82ce17440d3b050c8efbaa99f6db3f0668",
      "tree": "58fa385167bbb63f87487495fb34e1b9f1d5ec06",
      "parents": [
        "c3cb8cf7a9ceb364328183336fcacb1285aba883",
        "3b7f469b1ead2428a50bf4049e32b7a81fb2b7f6"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 07 11:20:57 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon May 07 11:20:57 2018 -0700"
      },
      "message": "collect more media metrics around audio am: 84e84a5dd3\nam: 3b7f469b1e\n\nChange-Id: I03941e3b776ba3cdb84ea39b07f1dcb903cbbf14\n"
    },
    {
      "commit": "84e84a5dd3b6d9ee4cf032e8d6206c70969b7107",
      "tree": "49fd8e4e911d62ac8be44ae91fdaf35902a234d9",
      "parents": [
        "527da4c9d30c977c0105a288b20a77f0f9e8d0d3"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu May 03 18:45:07 2018 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 07 16:32:02 2018 +0000"
      },
      "message": "collect more media metrics around audio\n\nnew fields in the media metrics \u0027audiorecord\u0027 record for more detail\nlength of time recorded, error conditions\nadd new media metrics type \u0027audiopolicy\u0027 that describes attempts to get\nmicrophone access -- success, failure on contention, what type of access\nwas requested, and (important for the contention) which programs are\ndoing the requesting and holding of the microphones.\n\nwhitelist the \u0027audiopolicy\u0027 metrics type with the  media.metrics service.\n\nBug: 78595399\nTest: concurrent/serial recordings, dumpsys media.metrics\nChange-Id: Ia17860940d4c329b0215b4cf97c6dacacb6a8e32\n"
    },
    {
      "commit": "da6a5a80b402fa0d836240d7e05cd887080c4f4d",
      "tree": "b49bf1a71ff06f366e890e05d8ed9c265211ea80",
      "parents": [
        "3e69b248ef8805b888ea1ec76f3bab773db05589"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 02 18:47:34 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 03 15:50:19 2018 +0000"
      },
      "message": "audiopolicy: restore normal binder call watchdog timeout\n\nRemove special timeout for long binder command added to\nwork around issues b/78901123, b/72823323 and similar\n\nBug: 72823323\nTest: connect/disconnect BT headset while playing music\n\nChange-Id: Ic5b57673ee95c29e5510af3b647ff3beb84dd7d7\n"
    },
    {
      "commit": "8348865ca237dd7b05814916529ea7d712771375",
      "tree": "af374487542acfff927e6c0f245737444db9d346",
      "parents": [
        "adef6968cfae603cdc8d5abbcf05a4c5f27993ae",
        "44e26df4f5f5d8d94913e3bc88af6b5618748f14"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 26 15:22:49 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 26 15:22:49 2018 -0700"
      },
      "message": "Merge \"audioserver: return binder call permission error in reply\" into pi-dev am: a591fc4cde\nam: 44e26df4f5\n\nChange-Id: I8e32dd19d54cb52a1170fe36b0883325073679bf\n"
    },
    {
      "commit": "a591fc4cde5eac46030d9d494c15056e5dd4299c",
      "tree": "7702e4d7f09d70f9b99f15b78eea8153c209994c",
      "parents": [
        "4fe8cfba169b4cc5e5eb4440c6e5bd74c8be502d",
        "ef92bff8d2e8f6ec9a526fdb4fcfead0146a10f3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 26 21:32:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 26 21:32:08 2018 +0000"
      },
      "message": "Merge \"audioserver: return binder call permission error in reply\" into pi-dev"
    },
    {
      "commit": "ef92bff8d2e8f6ec9a526fdb4fcfead0146a10f3",
      "tree": "85d8dac27ec4d7fd456743485085c6ff319b6676",
      "parents": [
        "64da22285776f07a775afd45f9fc36cea1aa05e3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 26 10:44:50 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 26 10:59:56 2018 -0700"
      },
      "message": "audioserver: return binder call permission error in reply\n\nWhen a transaction to IAudioFlinger or IAudioPolicyService is detected\nfrom an unauthorized source, return the INVALID_OPERATION status in\nreply Parcel and not as transaction status.\n\nAlso removed check on SET_RINGER_MODE as it is not implemented on client\nside and allow SET_MODE from system AIDs instead of just audioserver.\n\nBug: 78615605\nTest: manual audio smoke tests.\nChange-Id: Ia4fdfc22f049da69aaa9d45075e1c502eecf4521\n"
    },
    {
      "commit": "e6ce88c91c85ce4f22f846645434259a409bd45e",
      "tree": "310ee8aafeb66653f126b16d096eb1034ee374ac",
      "parents": [
        "82a8d3aa9e7f7304644ec31869f8683cfdbf7803",
        "515fe146d9dca6c363c2b8a248e065dc16dfbfab"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 25 19:20:43 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 25 19:20:43 2018 -0700"
      },
      "message": "Merge \"audio policy service: fix audioserver port cb upon APS crash\" into pi-dev am: 2db457b39e\nam: 515fe146d9\n\nChange-Id: I7e40b6dff9265b17552311e1b34f26c7259f8643\n"
    },
    {
      "commit": "2443760584e8e9798b65b297f1636953c287e5d8",
      "tree": "c817c62a176f0f290b88530f6febf3d9e985f3fe",
      "parents": [
        "64da22285776f07a775afd45f9fc36cea1aa05e3"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Apr 23 15:08:59 2018 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 25 17:25:08 2018 -0700"
      },
      "message": "audio policy service: fix audioserver port cb upon APS crash\n\nIn case of an audioserver crash, clients that registered AudioPort\ncb are no more notified of Port and Patch update (only Service Died\ncontinues to work).\nThe AudioPolicyService client shall upon registration set again the\ncb flag to continue beeing notified.\n\nAlso clear binder caller identity before registering a client to\naudio flinger and audio policy services to avoid registering the\nwrong client when get_audio_flinger() or get_audio_policy_service()\nis called while executing a binder call.\n\nBug: 78506562\nTest: launch a test app registering to Port Callback. Check upon\nsetDeviceConnectionState and createAudioPatch that cb are called.\nKill the audio server, and check cb continue to be called.\n\nChange-Id: If1e803f59cb02fba84b6259e9da2d7031235d9c2\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "ee46aced4276b3c3ca256cd7240e8b021c47406e",
      "tree": "8bbcd567ad4d6fd114a6866fe97ee34379ff2b71",
      "parents": [
        "30429065140e49389e045638d4f6dd80324fc6a7",
        "7cb401a37c14336ef2c6a3c2dcfed2b81bd15a1d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 23 12:29:39 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 23 12:29:39 2018 -0700"
      },
      "message": "Merge \"AudioTrackShared: Fix wrap condition for stop limit\" into pi-dev am: 7b56f7cc71\nam: 7cb401a37c\n\nChange-Id: I2abd1d0a4e5d228fe28c0045935a35180a83e627\n"
    },
    {
      "commit": "54274035905ef52c7eb88309aec5e5b8f25be471",
      "tree": "d2b51edba9e46feebaf6cb145c5a3f112b79afb5",
      "parents": [
        "6b6f4313aae039f2d73664816e45834e65f79bf5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 19 18:16:44 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 20 09:53:33 2018 -0700"
      },
      "message": "AudioTrackShared: Fix wrap condition for stop limit\n\nTest: Photos video playback and repeat accessing info\nBug: 68747620\nChange-Id: I8c4afa44c0a0a7f689fbc8797ee815e8ae960979\n"
    },
    {
      "commit": "b8ca98e81617f33e1b15a210c673b8f4c5a6de28",
      "tree": "e08139863d09057a876f66c62a121f8778ac288e",
      "parents": [
        "018c8a09a35c6da526af2bcb130522ed593e9432"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Mon Apr 16 12:47:19 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 17 18:51:15 2018 +0000"
      },
      "message": "Add retry mechanism to AudioRecord::restoreRecord_l().\n\nThis is analogous to similar code in AudioTrack::restoreTrack_l().\n\nBug: 77682459\nTest: Connect USB headset. Start Skype call. Note input audio on DUT is\nheard on remote phone. Manually kill audio server, verify that input\nfrom USB headset is restored on DUT and heard on remote phone.\n\nChange-Id: Icbf624aba8a3fe6917b132d8c38c2812f9519ec6\n(cherry picked from commit 782049413376ee1833a08ba02cc5ba6b5905792f)\n"
    },
    {
      "commit": "4c4eef468d6032e7f6d391560324a349cd5e85af",
      "tree": "8df31738cbc6050b5ef4c3d977c8d1e0ca053df5",
      "parents": [
        "595621d969872a99f65be972f31a6e8306ad32ab",
        "e61d413a0f85d53018eddecfd84ce9b743363f9b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 17 11:17:25 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 17 11:17:25 2018 -0700"
      },
      "message": "Merge \"audioflinger: filter out reserved keys from setParameters()\" into pi-dev am: 018c8a09a3\nam: e61d413a0f\n\nChange-Id: If872274adbdaae8bfd98e7301b9403687bbfa379\n"
    },
    {
      "commit": "f1047e87767be1acd2c32f4d36028d1d0014f4c0",
      "tree": "4affc2ed3ee3f81e94f90dd4d3a012afa0ee364e",
      "parents": [
        "554e08c6b00b2a57348f4545d450915a9e8c870a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 19:18:20 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 17 09:45:32 2018 -0700"
      },
      "message": "audioflinger: filter out reserved keys from setParameters()\n\nOnly allow setParameters() for reserved keys when received from\naudioserver UID. For instance, keys used to control routing or audio\nstream configuration are reserved for use by audio policy manager.\n\nAlso use multiuser_get_app_id() instead of duplicated code to\nextract application ID from UID.\n\nBug: 77869640\nTest: manual audio smoke tests.\nChange-Id: I88852e8fddf7f705e4a084fc02d9ced1f4b0de92\n"
    },
    {
      "commit": "3eb954d005f11d827f4555a0c458f30aa4679d01",
      "tree": "c718dc8c096b93f9f55c21c6baf8d4b0d1c52521",
      "parents": [
        "651061189c498733597164d88cb98b9fe9f6bb01",
        "782049413376ee1833a08ba02cc5ba6b5905792f"
      ],
      "author": {
        "name": "Paul Mclean",
        "email": "pmclean@google.com",
        "time": "Tue Apr 17 15:32:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 15:32:32 2018 +0000"
      },
      "message": "Merge \"Add retry mechanism to AudioRecord::restoreRecord_l().\""
    },
    {
      "commit": "b6319800740fa511e1ccf66ae7e78fa9f055922d",
      "tree": "4da77c2c69f5bc0cccb34293133c840d0996c400",
      "parents": [
        "7b6676a455dc8038633720d6aa629ab1398f9ad4",
        "23dc173c4f50a87ee6cd1ec1eb7c8041acd39012"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 17:00:33 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 16 17:00:33 2018 -0700"
      },
      "message": "Merge \"audiopolicy: clear caller identity before calling audio policy manager\" into pi-dev am: ef22118bd1\nam: 23dc173c4f\n\nChange-Id: Id9f50a8a4bdf8e374982fb5dc950f867786bde55\n"
    },
    {
      "commit": "782049413376ee1833a08ba02cc5ba6b5905792f",
      "tree": "8ae8f2b5f7b689cdd83a30a1f6201bd66a730c73",
      "parents": [
        "bd09311d95b37c255c1a16a987f0ea7c74e659fa"
      ],
      "author": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Mon Apr 16 12:47:19 2018 -0700"
      },
      "committer": {
        "name": "Paul McLean",
        "email": "pmclean@google.com",
        "time": "Mon Apr 16 15:53:20 2018 -0700"
      },
      "message": "Add retry mechanism to AudioRecord::restoreRecord_l().\n\nThis is analogous to similar code in AudioTrack::restoreTrack_l().\n\nBug: 77682459\nTest: Connect USB headset. Start Skype call. Note input audio on DUT is\nheard on remote phone. Manually kill audio server, verify that input\nfrom USB headset is restored on DUT and heard on remote phone.\n\nChange-Id: Icbf624aba8a3fe6917b132d8c38c2812f9519ec6\n"
    },
    {
      "commit": "ef22118bd17471d63040015df8e3f77230a9d2af",
      "tree": "2f1f93e3d39e322b6b312fb48d199eb66b7d5a17",
      "parents": [
        "4dce3415f7b9be55f0a889dc0451d3931b2060bb",
        "10b7123bd6ce29fe756422aeedc5cfe469c4309f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 22:20:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 22:20:06 2018 +0000"
      },
      "message": "Merge \"audiopolicy: clear caller identity before calling audio policy manager\" into pi-dev"
    },
    {
      "commit": "588f3d9af48be1618e93ee5cdf9474f51b5589ac",
      "tree": "b07057bd46673fedf0b75ab49822f1baab03afcc",
      "parents": [
        "392e304ddfda03792fb11e4cbb1a69e3a29d5805",
        "6ebaf2dfc2a499861e0841762b93bfd56fcbe272"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 16 10:08:07 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 16 10:08:07 2018 -0700"
      },
      "message": "Merge \"Sanitize effect descriptors for AudioPolicyService binder calls.\" into pi-dev am: c4b259a584\nam: 6ebaf2dfc2\n\nChange-Id: I0ee8f17aedc4198277ca11b2d2857e3239435ce9\n"
    }
  ],
  "next": "b0272097450ef868637e8a50d2575e16e37c90fb"
}
