)]}'
{
  "log": [
    {
      "commit": "1bc088a918d7038603230637d640941953b314d4",
      "tree": "e231c2b22d944eaed29445fe4a35861fddb50e54",
      "parents": [
        "e54461ae132a79d0ffa9d3ec4631df13eb5c7809"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 09 15:57:31 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 16 15:50:32 2018 -0800"
      },
      "message": "Call AudioMixer only from MixerThread threadLoop.\n\nAs part of change:\nRemove track name offset by TRACK0.\nMove track name management to the Tracks class.\nSync mixer track name to FastMixer track index.\n\nFixes regression introduced by commit 8ed196a.\n\nTest: SoundPool, AudioTrack CTS, Usability\nBug: 72937362\nBug: 73004420\nChange-Id: I2f1a33f6f0da66bcd7aa91e2a4b663ff822df645\n"
    },
    {
      "commit": "fee1976a2849c37a53d8a01ac10327d522a1ba93",
      "tree": "5b8a259a93f6f84a964badf5417c113a308e67c9",
      "parents": [
        "98c15702ca0c814fee9110efa14d70fc9937514e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 18:44:13 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 09 16:08:31 2018 -0800"
      },
      "message": "Revert \"Revert \"audio policy: refactor audio record APIs\"\"\n\nThis reverts commit e9ebcdbb0580bd4a75f4530b957b1859e535c028.\n\nBug: 72628781\nTest: manual camcorder tests\nChange-Id: I9fb550a9f62d2d15cafbd7534e5e7eaa155a7213\n"
    },
    {
      "commit": "3cb0605ea4300ee997c2c7983533af8ea74df8ad",
      "tree": "b701ba15851691b54975e7869f2fe73c5d430603",
      "parents": [
        "7e193a143f52180abfc9c1c9c82f7c70f6ae5f74",
        "77973c438b758da730a72ab3bb85b67f6767bf6b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 08 20:48:09 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 08 20:48:09 2018 +0000"
      },
      "message": "Merge \"Pull out commonly used constants to \u003caudio_utils/clock.h\u003e\""
    },
    {
      "commit": "de15b8c160c720c48b93796016801e7ae0b6bd2d",
      "tree": "49044f23ead7f0dca058f477f5b1365a16a6e144",
      "parents": [
        "a2544c5431224995ade19611642d2b534939fb14"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 30 16:35:56 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Feb 07 11:55:19 2018 -0800"
      },
      "message": "link media.metrics native strings to api-controlled java strings\n\nadd comments to native media.metrics code pointing to how they\nare (and aren\u0027t) to be kept in synch with their java counterparts\nthat are part of the public API (and therefore pretty much fixed).\n\nBug: 72492234\nTest: compilation\nChange-Id: Ic096545a5cdfb2160c6b66438d345d8e625384b9\n"
    },
    {
      "commit": "de2c195a218cc24eaf3a7ced149f7eb723656a97",
      "tree": "90f7ece00616bf5c905fe14ae1b17ee864041685",
      "parents": [
        "4b8dbfc9e85ca7c2cc4acdcddca997f197fee718",
        "a70eef730d7665c9f4b2dfd25faf072785f80a2d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 01 16:46:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 01 16:46:08 2018 +0000"
      },
      "message": "Merge changes from topic \"fix-b-63901775-add-presentation\"\n\n* changes:\n  Audio presentation selection for AudioTrack native\n  Add presentation API interface\n"
    },
    {
      "commit": "5dd03a5825d06033c1e66353dbbfcfc7f60990c5",
      "tree": "9deed77dba8b49bf83bf5f039c4ebaee3aa5b34c",
      "parents": [
        "5dca017406b057bf71f8934ef57aab6098ecec6c",
        "653cc0ab6d5b714d1f26adcd08f9bc3269b62fa0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 01 01:35:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 01 01:35:26 2018 +0000"
      },
      "message": "Merge \"Support query active microphones information in AudioRecord.\""
    },
    {
      "commit": "31067d4b87475dd0a90145d4849cf66f7bf93f86",
      "tree": "61656e49f84e02ae6382e94169916356f65c8e1f",
      "parents": [
        "e9ba24a984610b09d33a739034caf8949bb53f7e",
        "92d23b433bd770c22c2d4a30b573602f5565de1b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 31 22:37:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 31 22:37:49 2018 +0000"
      },
      "message": "Merge \"Remove finalized concept from media.metrics\""
    },
    {
      "commit": "77973c438b758da730a72ab3bb85b67f6767bf6b",
      "tree": "af7ef411c2b8e911ed6559e70720b9ef2c9357ac",
      "parents": [
        "d24be7ca2491048892905734cb8a1e77440df948"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 31 14:03:52 2018 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 31 14:03:52 2018 -0800"
      },
      "message": "Pull out commonly used constants to \u003caudio_utils/clock.h\u003e\n\nTest: builds OK\nChange-Id: I7d2c4cb8982a3d792edf8fad7a7bae0ac3c4331c\n"
    },
    {
      "commit": "34c238eaf4af84787648c714289de9dcfa1668d3",
      "tree": "a48681eb6b1e2dcc17d829e2e049112277b22ad0",
      "parents": [
        "d54bacf09c2384987ad9186de67c4225db1eed1d",
        "4980df29f61d5fad95e17ca1d1969f6ca4c1f296"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 31 03:20:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 31 03:20:08 2018 +0000"
      },
      "message": "Merge \"audio: filter reserved binder calls\""
    },
    {
      "commit": "4980df29f61d5fad95e17ca1d1969f6ca4c1f296",
      "tree": "c7e38eb5c4c223ac0a9b08e7636adf71de7a9c62",
      "parents": [
        "5f07c65af5356a4a95410804ce19fc017d6478f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 26 18:04:09 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 17:28:43 2018 -0800"
      },
      "message": "audio: filter reserved binder calls\n\nBlock incoming binder calls to audio flinger and audio policy service\nfor sensitive functions if they are not coming from a system UID.\n\nBug: 72278478\nTest: audio smoke tests. CTS tests for AudioTrack and AudioRecord\nChange-Id: I78e02efffe135d5450ced125e51e2084719ca03d\n"
    },
    {
      "commit": "8ec3d5d415776cf37398b6cf788a3d4be2335a73",
      "tree": "a09aa5cf817e0f81987df05d71c3f0965c011a05",
      "parents": [
        "ab0486cbc9d0cc730be7e294af83865b1ad47b10",
        "e9ebcdbb0580bd4a75f4530b957b1859e535c028"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 30 00:30:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 30 00:30:06 2018 +0000"
      },
      "message": "Merge changes I6bcc87c6,If633e677\n\n* changes:\n  Revert \"audio policy: refactor audio record APIs\"\n  Revert \"audio flinger: move record permission checks to audio policy service\"\n"
    },
    {
      "commit": "92d23b433bd770c22c2d4a30b573602f5565de1b",
      "tree": "e2ff902f2be5d131e8a1cd4af09868d3a5af2794",
      "parents": [
        "3923b1b71628e668f9b11ed4891ed2840dd331cd"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Jan 29 12:10:30 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon Jan 29 14:38:27 2018 -0800"
      },
      "message": "Remove finalized concept from media.metrics\n\nthe \u0027finalized\u0027 concept didn\u0027t pan out -- remove references to it.\nSimplifies the code flow.\nAlso purged some uses of generateSessionID().\n\nBug: 71874686\nTest: logcat/dumpsys\nChange-Id: I39e48526a5696158d8195f47154881ca6ecda266\n"
    },
    {
      "commit": "e9ebcdbb0580bd4a75f4530b957b1859e535c028",
      "tree": "a603313572aeef80fb8a26d2ff38f7a6541e835c",
      "parents": [
        "67651f97c9c3880a4440c86618337f8a64c3e1a9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 14:27:18 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 14:37:24 2018 -0800"
      },
      "message": "Revert \"audio policy: refactor audio record APIs\"\n\nThis reverts commit 0f4b3c5449f85c1cd78e1b9ac4850de962b8edbe.\n\nBug: 72628781\nTest: Capture several videos from camera app\nChange-Id: I6bcc87c618ac9bfe5c911915cbb37de616bc727a\n"
    },
    {
      "commit": "653cc0ab6d5b714d1f26adcd08f9bc3269b62fa0",
      "tree": "6ce8eb9ed7297d8b2524c6e25376319175758f50",
      "parents": [
        "46a76fa5ffb88dbde2c67335dbc5cf20b75b10b6"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jan 17 17:54:10 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 26 17:23:07 2018 -0800"
      },
      "message": "Support query active microphones information in AudioRecord.\n\nThis is part of device enumeration. With the new add API, developer\ncould get the active microphones information for each channel.\n\nBug: 64038649\nTest: Run cts and check the print log.\nChange-Id: Ic63d86e533a30e40697da7522a5a81f7cfcea988\n"
    },
    {
      "commit": "46a76fa5ffb88dbde2c67335dbc5cf20b75b10b6",
      "tree": "7215e85bae943107de3bf07537c28c98216f5690",
      "parents": [
        "6e075b43b0ba324a97fc0f89ef65196ed25be671"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 05 10:18:21 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 26 17:16:16 2018 -0800"
      },
      "message": "Add support for getting all available microphones characteristics.\n\nAdd MicrophoneInfo class in native side and native logic for supporting\nquery all available microphones.\n\nBug: 64038649\nTest: Run test and check the print log.\nChange-Id: Ic0a9cce55a1265a66ba08fe81b56b56cb88ba42f\n"
    },
    {
      "commit": "a70eef730d7665c9f4b2dfd25faf072785f80a2d",
      "tree": "3139b8b7898a5a539b9c1ee0533e1a386da459e9",
      "parents": [
        "9ee64f139ceff98ea5f9afcc2eaab42901922d56"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Thu Jan 04 14:23:50 2018 +1100"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 25 12:33:52 2018 -0800"
      },
      "message": "Audio presentation selection for AudioTrack native\n\nBug: 63901775\nTest: make\nChange-Id: I63c9bdef880c7c387fd05f093b8d1094307a2754\nSigned-off-by: Previr Rangroo \u003cprang@dolby.com\u003e\n"
    },
    {
      "commit": "b2eb24b64f4a7bd367caaee345ca73271ce9af51",
      "tree": "4fe74aac2dc77144abb49a062284822c3db804cf",
      "parents": [
        "fd4fb71b83d43e3566215c9b8babe3afc99f0816",
        "8839430158e22382f0f6450c9274071eca945989"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 25 20:31:07 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 25 20:31:07 2018 +0000"
      },
      "message": "Merge \"add getMetrics() apis for AudioTrack and AudioRecord\""
    },
    {
      "commit": "8839430158e22382f0f6450c9274071eca945989",
      "tree": "7e3e0a574c5370a95bacf7281a62c5092f41036c",
      "parents": [
        "03570a65a46bd0d577aa4c860c4f32f4abf79c7c"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Jan 24 14:52:05 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Jan 24 17:06:59 2018 -0800"
      },
      "message": "add getMetrics() apis for AudioTrack and AudioRecord\n\nadd getMetrics() method to access media.metrics for AudioTrack and\nAudioRecord.\n\nBug: 72179020\nBug: 72178968\nTest: tweaked CTS\nChange-Id: Id69862887b8b58655f59057e06f96b20a8e7d332\n"
    },
    {
      "commit": "0f4b3c5449f85c1cd78e1b9ac4850de962b8edbe",
      "tree": "63641f2dea738a745946c63f80803557a74ec12b",
      "parents": [
        "c6116926de37cabb1d35ddd57eaff0e19fcec8bc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 05 11:46:13 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 24 16:56:52 2018 -0800"
      },
      "message": "audio policy: refactor audio record APIs\n\nRefactor audio policy service APIs controlling audio record (startInput, stopInput, releaseInput)\nTo allow finer grain control per AudioRecord client and prepare for new concurrent capture\npolicy\n\nTest: AudioRecord CTS test. manual test of capture use cases:\ncamcorder, OK Google VoIP\n\nChange-Id: I4992fd5a115853c47be5dac5465989eb53f1287c\n"
    },
    {
      "commit": "c6116926de37cabb1d35ddd57eaff0e19fcec8bc",
      "tree": "fdc9a07eec6b4e7dc446a76149bd0c843d298edd",
      "parents": [
        "7027e8019ad974d2e474a7fcaf43adedbdf08f23",
        "8ed196ac0f4aa8ae811c012dfa6f596fddebf1bf"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 24 22:48:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 22:48:08 2018 +0000"
      },
      "message": "Merge \"AudioMixer: Enable 256 tracks, up from 32 tracks\""
    },
    {
      "commit": "03570a65a46bd0d577aa4c860c4f32f4abf79c7c",
      "tree": "80f3fe537f1edeb95bd37a5a66090ce3b4f1cd1e",
      "parents": [
        "70068e8e49f3467488550d88d6130f9e00bb0624",
        "6f248bb57a6a0febe8fc0f253acc86289237ace8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 24 20:28:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 20:28:46 2018 +0000"
      },
      "message": "Merge \"AudioFlinger: Allocate client memory based on total device memory\""
    },
    {
      "commit": "8ed196ac0f4aa8ae811c012dfa6f596fddebf1bf",
      "tree": "fda78f06eeb733b00fda71fbd401b6a787b76190",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 05 13:21:11 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 23 23:04:33 2018 -0800"
      },
      "message": "AudioMixer: Enable 256 tracks, up from 32 tracks\n\nClient apps can have 40 tracks, up from 14 tracks\n\nRelated code cleanup:\na) Removed State nested class\nb) Moved static functions to Track member functions\nc) Moved static function hooks to pointer-to-member-function hooks\nd) Some reorganization of touched code for recent C++ style\n\nTest: test-mixer native mixer test\nTest: SoloTester effect test\nTest: SoundPool with many tracks\nTest: CTS AudioTrackTest\nBug: 64161002\nChange-Id: I0d09620acd715d577e776bb6f76e94e87e554520\n"
    },
    {
      "commit": "34abab103a6eb3fc7417c9e9169ee172b2303952",
      "tree": "df4065ab25ab83d7380715b42ad7c79d0d436873",
      "parents": [
        "fe4e4db4615585fd70a55d52f21c55dd517d2bfa",
        "07be14fb96fc5c106ea2b874faf2b768f468eb8e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:26:16 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 06:26:16 2018 +0000"
      },
      "message": "Merge \"Revert \"Audio V4: Split system and vendor Audio.h\"\""
    },
    {
      "commit": "07be14fb96fc5c106ea2b874faf2b768f468eb8e",
      "tree": "01cd8f75542d7581505bef8a5b9e2f09790ac0e1",
      "parents": [
        "f8ad7f85e9891b2614338330c75ae9e946fccc5a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:14:03 2018 +0000"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 06:14:03 2018 +0000"
      },
      "message": "Revert \"Audio V4: Split system and vendor Audio.h\"\n\nThis reverts commit f8ad7f85e9891b2614338330c75ae9e946fccc5a.\n\nReason for revert: Breaks the build of multiple devices\n\nChange-Id: I24f17a0fa0c7ba171c4a3639f890e7f4e42f6b1e\n"
    },
    {
      "commit": "6f248bb57a6a0febe8fc0f253acc86289237ace8",
      "tree": "5dcc5fe0729c85f7ef39ac298906acea444b2ae2",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 23 14:04:37 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 23 22:12:12 2018 -0800"
      },
      "message": "AudioFlinger: Allocate client memory based on total device memory\n\nTest: Debug logging\nBug: 64161002\nChange-Id: I7156748e5678c3232d1f1672439d11aecf3f458b\n"
    },
    {
      "commit": "6a784e71ca122347789faa73367877d41831592f",
      "tree": "de25d71706442e18346a5785f4174aba5604454d",
      "parents": [
        "f7a14c051ee9bd5f288963f3c190642e4915250b",
        "f8ad7f85e9891b2614338330c75ae9e946fccc5a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 24 04:04:48 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 04:04:48 2018 +0000"
      },
      "message": "Merge changes from topic \"audio-hal-v4-tmp\"\n\n* changes:\n  Audio V4: Split system and vendor Audio.h\n  Audio V4: Use the framework audio.h instead of the HAL\u0027s\n"
    },
    {
      "commit": "766fb020a50b64bf9a808bd80df60c54c2ca8cc3",
      "tree": "acb92cb201889d2b56f41bc2a437da1aaae72c4e",
      "parents": [
        "652f9299bb8a7a50148d57a75de6ede831bfed85"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Sun Jan 07 12:18:03 2018 +0200"
      },
      "committer": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Mon Jan 22 23:05:23 2018 +0200"
      },
      "message": "Support routing audio playback to telephony uplink\n\nThis change enables phone apps to play audio to the uplink stream\nduring a call.\nThis change maks the AUDIO_OUTPUT_FLAG_INCALL_MUSIC_UPLINK flag to be added to the flags that are sent to the HAL when an ongoing call is active, the chosen output device is the TX telephony device, the stream type is music, and the calling app has the MODIFY_PHONE_STATE permission.\nFor this change to take place, the following changes were made to the signature of getOutputForAttr in IAudioPolicyService:\n  1. Add pid (process id) parameter to getOutputForAttr.\n  2. Make the flags parameter a pointer so changed value can be\n  examined by calling function.\n\nBug: 69973354.\nTest: tested manually.\nChange-Id: I74cef3f8b66de6e0e8f87b6235130c2cdf423da7\n"
    },
    {
      "commit": "f8ad7f85e9891b2614338330c75ae9e946fccc5a",
      "tree": "957d47ddc7419c688dda1d4c1ac3068eda6d894f",
      "parents": [
        "6d7582e9ad858301b3eeff7b187af6c34808cb7e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jan 17 15:57:39 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Sat Jan 20 21:39:40 2018 -0800"
      },
      "message": "Audio V4: Split system and vendor Audio.h\n\naudio.h and its dependencies (audio-effect.h, sound_trigger.h...)\nused to be shared between system and vendor code.\n\nThis led to multiple problems:\n\n1) Such sharing contradicts the Treble policy of\nstrict independence of framework and vendor code.\n\n2) When audio.h was changed, every vendor needed to update\nits code in the next release. This meant that audio*.h\nheaders were mostly changed in backward compatible manner.\nNevertheless, for P the HIDL interface and thus the audio.h\ninterface are changed in backward incompatible way.\n(Some enum are becoming 64 bit long).\n\n3) As the headers were common, some API used only by the framework\nneeded to be visible to the vendors (mostly enum values).\n\n4) Treble policy is to support at least one previous HAL version\n\nAs a result the audio*.h headers are now duplicated,\none set for the framework, and one for the vendor.\n\nEach set will evolve independently. After this split,\nthe framework-only APIs will be removed from the vendor headers\nand vice versa.\n\nThe split is implements as such:\n\n + for system code\n\n    - NOT moving the libaudio_system_headers\n      Eg: system/audio.h and system/audio_effects/effect_equalizer.h\n          are still in system/media/audio\n\n    - the legacy audio HAL API that were in libhardware headers\n          are now in libaudiohal_legacy_headers\n      Eg: hardware/audio.h and hardware/audio_effect.h\n          are now in frameworks/av/media/libaudiohal/legacy/\n\n + for vendor code\n\n    - moving libaudio_system_headers and the legacy audio HAL API\n          that were in libhardware_headers in\n          android.hardware.audio.common.legacy@2.0\n      Note that those headers are now versioned, so migrating to a @4.0\n          HIDL HAL will mean changing the legacy dependency too.\n      Eg: system/audio.h, system/audio-effect.h, hardware/audio.h\n          are now in hardware/interfaces/audio/common/2.0/legacy\n\n    - the legacy audio effect HAL API that was in libaudioeffects\n          is now moved in android.hardware.audio.effect.legacy@2.0\n      Eg: audio_effects/effect*.h are now in\n          hardware/interfaces/audio/effect/2.0/legacy\n\n    - the legacy sound trigger HAL API that were in libhardware_headers\n          is now moved in android.hardware.soundtrigger.legacy@2.0\n      Eg: hardware/sound_trigger.h is now in\n          hardware/interfaces/audio/effect/2.0/legacy\n\nlibaudioutil being used by both system and vendor, had\nto be renamed for system to libaudioutil_system.\n\nVendor libs that now depend on the audio.h of a specific\nversion and are not extensively referenced in non google code,\nappend @2.0 to their name.\n\nNote that headers that are not expected to change in the 4.0 HAL are\nleft in all-versions folder to avoid duplication.\nThis is an implementation detail as the versioned libraries export\nthe all-versions headers.\n\nNote that strict vendor-system separation is enforced by the\nbuild-system. The system headers are not available for vendor\nlibs and vice-versa.\n\nNote that this patch is split between numerous git repository (\u003e10),\nall the commits having the same Change-id for searchability.\n\nNote that audio_policy.h is no longer exposed to vendors\nas the legacy audio policy HAL API was never officially supported.\nAs a result the audiopolicy stub implementation has been removed.\n\nTest: compile taimen-userdebug walleye-userdebug\n              sailfish-userdebug marlin-userdebug\n              gce_x86_phone-userdebug gce_x86_phone\n              full-eng aosp_arm aosp_x86-eng\nTest: check that the emulator booted and played audio\nTest: full QA on sailfish-userdebug and taimen-userdebug\nBug: 38184704\nChange-Id: I950f4e0a55613d72e32eba31bd563cb5bafe2d1a\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "65a438c6429c7f46cb0ab056c7f672ea0aa9e7f5",
      "tree": "d2b98e3247afd27d7272d23b226dc4e10fb8f5f9",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788",
        "f4ddfefc8ba59a8486d91826154cc9447821409e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 20 04:09:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 20 04:09:36 2018 +0000"
      },
      "message": "Merge \"Don\u0027t record audio if UID is idle - media framework\""
    },
    {
      "commit": "f4ddfefc8ba59a8486d91826154cc9447821409e",
      "tree": "b24bb43846003ef5523f0d470e49389086138679",
      "parents": [
        "d6be64a3f22be3eceb0d6209c88dcad573c08191"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 16 07:37:58 2018 -0800"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jan 18 00:17:52 2018 -0800"
      },
      "message": "Don\u0027t record audio if UID is idle - media framework\n\nTo protect user\u0027s privacy if a UID is in an idle state we allow\nrecording but report silence (all zeros in the byte array) and once\nthe process goes in an active state we report the real mic data.\nThis avoids the race between the app being notified aboout its\nlifecycle and the audio system being notified about the state\nof a UID.\n\nTest: Added - AudioRecordTest#testRecordNoDataForIdleUids\n      Passing - cts-tradefed run cts-dev -m CtsMediaTestCases\n                    -t android.media.cts.AudioRecordTest\n\nbug:63938985\n\nChange-Id: I1442a9dda1553e9ea7a4a654c50555ac1ec06aa0\n"
    },
    {
      "commit": "0cde7e5863df60ece6986ad9b5b4358dc82380eb",
      "tree": "e5b094401bf238608095f4755450e9da93252286",
      "parents": [
        "dc3b49f3abc9f88b273cab2de9c0ba56b2173e7c",
        "a10a2d361758752715744023b4109e8007fa34d4"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 16 21:43:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 16 21:43:36 2018 +0000"
      },
      "message": "Merge \"prevent null pointer in audio track media metrics\""
    },
    {
      "commit": "a10a2d361758752715744023b4109e8007fa34d4",
      "tree": "cd90dc862524a47f4ea851b848d2c68e73383ed6",
      "parents": [
        "d6be64a3f22be3eceb0d6209c88dcad573c08191"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 16 12:02:58 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 16 12:02:58 2018 -0800"
      },
      "message": "prevent null pointer in audio track media metrics\n\nDisable a piece of audio track metrics code that triggered a\nnull pointer exception.\n\nBug: 72027185\nTest: manual\n"
    },
    {
      "commit": "783bd0d74d142493b4ef0a15a2664535854e99f9",
      "tree": "60cbf56cb9d37670194d12cda8180767b6b5cfa9",
      "parents": [
        "734d186db7ec3d1f877001d71c71de6562ead7f7"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Jan 11 11:10:35 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 16 09:25:15 2018 -0800"
      },
      "message": "media.metrics changes AString -\u003e std::string\n\nchange from AString to std::string for how media.metrics handles\nstrings.  This severs the dependency on libstagefright_foundation,\nwhere AString is implemented, so we can integrate into places\nwhich do not want to introduce a dependency on libstagefright_foundation.\n\nBug: 70805723\nTest: compilation/linking, CTS subset\nChange-Id: I66de971b6ec354444e06112607a2d7614084cef8\n"
    },
    {
      "commit": "734d186db7ec3d1f877001d71c71de6562ead7f7",
      "tree": "7c0a6a75ee915ef2bba1ac75ff48d545e2f2c8f3",
      "parents": [
        "ed30470cf0a20c0c1edb2b82075985ccaa6c75c1"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 09 10:42:14 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri Jan 12 13:30:13 2018 -0800"
      },
      "message": "Metrics for AudioRecord\n\nCollect media metrics for audiorecord. Basic framework and initial set\nof metrics.\n\nBug: 70569777\nTest: recordings, observe stats\nChange-Id: I66fce1eec46cc13a93b106c2be34d23c138920de\n"
    },
    {
      "commit": "ed30470cf0a20c0c1edb2b82075985ccaa6c75c1",
      "tree": "b90723f645ab06ca927b3e9a7d81fdef1f99d57e",
      "parents": [
        "21f6d6cbecf190724b044251576edf6ee6f48364"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 12 14:00:57 2017 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Jan 11 14:57:53 2018 -0800"
      },
      "message": "collect media.metrics from audiotrack\n\ninitial pass at collecting metrics information from audiotrack.\n\nBug: 70569777\nTest: manual via dumpsys media.metrics\nChange-Id: Ia6ed6d93bd487e4323b86dd4ffabae232f79f94b\n"
    },
    {
      "commit": "49f36ba3b4624ddd3d7efa34c95128a73bda6208",
      "tree": "9427c132f2f998021c1ae06078174c3396bc5f54",
      "parents": [
        "b3ded702104331ae35597eef28f670e407a1b519"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 06 13:02:02 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 22 20:05:46 2017 +0000"
      },
      "message": "Logs use either %#x or 0x%x for flags, channel mask, format, device\n\nPreferred is %#x but 0x%x is also permitted because it is widely used.\n\nThe benefit is that it reduces ambiguity and possible confusion,\nwithout needing to read the source code for each log.\n\nTest: builds OK and logs are less ambiguous\nChange-Id: Ie2404e071d22278b8bba1e094ad336887844212c\n"
    },
    {
      "commit": "d466435670d1beb80beeeb1a140ebe6a5bfd0d9f",
      "tree": "d6f22c53e3603b0b69a54ec9bad1a733c46b6785",
      "parents": [
        "61e916dd6b0c8701b42f3f392e51e5b52ca38e65",
        "116a49881b35f561f6ee316990d425fad56e7487"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 21 21:54:59 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 21 21:54:59 2017 +0000"
      },
      "message": "Merge \"AudioEffect: Convert aux buffer format from q4.27 to float\""
    },
    {
      "commit": "53ad17fd64e1415d7c29480f0cc3d413f1c71936",
      "tree": "ca9dea18793fad9c9293e5f6cecb590a5d375db0",
      "parents": [
        "28288fb0b1da843cdd37edab0cdecff32abacdce"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 20 09:21:26 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 21 09:26:23 2017 -0800"
      },
      "message": "ToneGenerator: fix use of STREAM_VOICE_CALL\n\nToneGenerator is only used for signalling, never for voice.\nIn order to use proper audio attributes usage and content type, convert\nrequests to play on stream VOICE_CALL to stream DTMF.\nThis will produce consistent routing and volume behavior when apps use\nDTMF or VOICE_CALL streams.\nAlso use audio attributes when creating the AudioTrack\n\nTest: CTS for ToneGenerator, voice and VoIP calls\nChange-Id: Ic67abaeed0ea09f08ad5586cebe858e74fe21af9\n"
    },
    {
      "commit": "0a7885e717e498167520a6ed2fdec45fb472ceee",
      "tree": "b87587a81592d90cc382b1df6bdb999a2ca08096",
      "parents": [
        "724a1816e7bd503d7a1f491a90f76c8cf3ca6a16"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 06 16:48:41 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 14:29:33 2017 -0800"
      },
      "message": "add test for AudioRecord constructor\n\nThis test contructs a number of AudioRecords from arguments\nlisted in an input file and outputs dumps of the constructed\nAudioRecords to an output file.\nThe output file can be compared to previous iterations to spot regressions.\nAn reference input file and the corresponding output file are added for\nfurther comparison.\n\nTest: run this test\nChange-Id: I0d1b596ca91c3c58f159887fbd48aa3f04ae38c2\n"
    },
    {
      "commit": "724a1816e7bd503d7a1f491a90f76c8cf3ca6a16",
      "tree": "e556dc3d59e6b5ad93c7015012017f914ea5ea19",
      "parents": [
        "896c9670846cc66d54ba86a978109817818c3929"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 06 16:59:56 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 14:29:33 2017 -0800"
      },
      "message": "add dump() method to AudioRecord\n\nAdd a dump() method to AudioRecord.\nCan be used by dumpsys or tests.\n\nTest: run test_create_audiorecord\nChange-Id: I4b3133601eeff4d5447ca2c5b13a01ff3451b6c7\n"
    },
    {
      "commit": "b1cc36b5d52de7cb3d78426d41dee87f25d7164a",
      "tree": "aa88693bc980e3209f20133052fd33e059af1334",
      "parents": [
        "f14db3c3ebc1ea29b3eb5b7e9b944cabcb5f83ff"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 11 12:14:16 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 14:29:28 2017 -0800"
      },
      "message": "Revert \"Revert \"restrict binder transactions to audioserver\"\"\n\nThis reverts commit 009c1e37d07936178b59346ee8f7cb19484644b6.\n\nBug: 70388312\nTest: AudioRecord CTS, Audio smoke tests\nChange-Id: I263aa1ed7ef832d593bc0fb02000d986ad1a3f69\n"
    },
    {
      "commit": "f14db3c3ebc1ea29b3eb5b7e9b944cabcb5f83ff",
      "tree": "ebe89d037006cc16ed8a9284563a475b6eee3348",
      "parents": [
        "ea5523d88c6dc9662621db5fc62bf50eff0fe4ba"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 14:20:36 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 14:28:41 2017 -0800"
      },
      "message": "Revert \"Revert \"refactor AudioRecord and AudioFlinger openRecord()\"\"\n\nThis reverts commit 0aa3c6eba07f987fe84b5fa450274a8e730971e3.\n\nBug: 70388312\nTest: AudioRecord CTS, Audio smoke tests\nChange-Id: I45394bccf82b922aa2b68fee3e02afc280f6729c\n"
    },
    {
      "commit": "3700e162a5526ada762d081de34c9abdd085c5fe",
      "tree": "87a9cf3e64431512fc413fd5833e7cb02b2bfa2a",
      "parents": [
        "cef7b7a656aaa1d6e875a0f0ffdf6e31f17d1aa6",
        "009c1e37d07936178b59346ee8f7cb19484644b6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Dec 09 01:13:29 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 09 01:13:29 2017 +0000"
      },
      "message": "Merge \"Revert \"restrict binder transactions to audioserver\"\""
    },
    {
      "commit": "009c1e37d07936178b59346ee8f7cb19484644b6",
      "tree": "0d5dc5b43b751d7ae701cf8d1afee1835b8b1d45",
      "parents": [
        "4db794441a5ef63733e109213269bb6324387b36"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Dec 09 01:12:24 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Dec 09 01:12:24 2017 +0000"
      },
      "message": "Revert \"restrict binder transactions to audioserver\"\n\nThis reverts commit 4db794441a5ef63733e109213269bb6324387b36.\n\nChange-Id: Ifae4f59e4aed489bb22958674cf96d556b170d2d\n"
    },
    {
      "commit": "cef7b7a656aaa1d6e875a0f0ffdf6e31f17d1aa6",
      "tree": "800a56dafa0a81c311b839a71e1184912733c9a9",
      "parents": [
        "316c3176b8b839a8465d0c0dfa3878a14d3454c0",
        "0aa3c6eba07f987fe84b5fa450274a8e730971e3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 08 21:23:29 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 08 21:23:29 2017 +0000"
      },
      "message": "Merge \"Revert \"refactor AudioRecord and AudioFlinger openRecord()\"\""
    },
    {
      "commit": "0aa3c6eba07f987fe84b5fa450274a8e730971e3",
      "tree": "69c1c59218c8ae0e5165f71a392a8666c8b74ad6",
      "parents": [
        "3e1acc0c58b337dec4054d78c28b48b2e77e0784"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 18:13:22 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 18:18:50 2017 +0000"
      },
      "message": "Revert \"refactor AudioRecord and AudioFlinger openRecord()\"\n\nThis reverts commit 3e1acc0c58b337dec4054d78c28b48b2e77e0784.\n\nbug: 70388312\n\nChange-Id: I6782d6eceeece1bad998b02af26c0119da70a13d\n"
    },
    {
      "commit": "116a49881b35f561f6ee316990d425fad56e7487",
      "tree": "26d80d6e59138bcf42902cfee61713817cc06c09",
      "parents": [
        "fa69ca3012fb4065dd892f363957a4f9a6d24757"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 30 10:15:08 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 06 19:48:37 2017 -0800"
      },
      "message": "AudioEffect: Convert aux buffer format from q4.27 to float\n\nTest: Solo Tester aux reverb\nBug: 69853407\nChange-Id: I72ca2377036e5ccfd5f4631ac6cc5e86d2e40433\n"
    },
    {
      "commit": "4db794441a5ef63733e109213269bb6324387b36",
      "tree": "b191586e568eb3c75505c5624e1e5ed3ab805c76",
      "parents": [
        "1b2de88f1659106dadf31794907f4fb66d8baec1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 14:11:40 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 06 11:13:56 2017 -0800"
      },
      "message": "restrict binder transactions to audioserver\n\nPrevent other processes from sending reserved binder transactions\nto IAudioFlinger and IAudioPolicyService.\n\nTest: Manual audio smoke tests\nTest: CTS: AudioRecordTest, AudioTrackTest, AudioEffectTest,\nAudioPreProcessingTest, AudioManagerTest\n\nChange-Id: I3643e03cb056236f5e88476d0a575cc28c220f2c\n"
    },
    {
      "commit": "2d8876492d9031978a917764bb3e38c2927284ea",
      "tree": "9a59021ff6c1e016067be3d5509089e79f741c94",
      "parents": [
        "ad95755fa20a6a058e61d4a836acbadbc7bb6364",
        "3e1acc0c58b337dec4054d78c28b48b2e77e0784"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 18:36:05 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 05 18:36:05 2017 +0000"
      },
      "message": "Merge \"refactor AudioRecord and AudioFlinger openRecord()\""
    },
    {
      "commit": "3e1acc0c58b337dec4054d78c28b48b2e77e0784",
      "tree": "effae4bc8d462d03cb0bc1507ac0222ac47c90eb",
      "parents": [
        "eda72c27cab52c41016d8ce138438a2d59973231"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 01 16:07:37 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 17:33:35 2017 +0000"
      },
      "message": "refactor AudioRecord and AudioFlinger openRecord()\n\nRefactor the mechanism used by audio record tracks to query and\nattach to an input mixer/stream in audio flinger. This will:\n - reduce the number of binder transactions needed to create a record track\n - move sample rate, framecount and flags validations to audio server side\n - move audio session allocation to audio server side\n - prepare restriction of certain binder transactions to audioserver only\n\nAlso:\n - renamed openRecord() to createRecord() for consistency with AudioTrack\n - make AudioRecord mStatus update consistent when calling default\n contructor + set() or constructor with arguments\n - make AudioClient, CreateTrackXXX and  CreateRecordXXX classes derive\n from Parcelable\n - restore audio session ID validity check in AudioFlinger::createTrack()\n\nTest: CTS tests: AudioRecordTest, AudioRecordingConfigurationTest, AudioPreProcessingTest\nTest: manual test for capture use cases: camcorder, OK Google, VoIP calls\nChange-Id: I72edaa7ddef1da11c77df21e88378e3aa9012d58\n"
    },
    {
      "commit": "0225a1883b85466e59ba479314ca7056f2c5de98",
      "tree": "ecc079816676630723bef3b4fcbd30fdd8622187",
      "parents": [
        "9c036d8c32187c1e2612d1341ac9713f13252eab",
        "6bf135b03e58c8b6399df2937358242977c77b2b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Dec 02 23:20:51 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 02 23:20:51 2017 +0000"
      },
      "message": "Merge \"Export AIDL files as a filegroup for framework.jar\""
    },
    {
      "commit": "9c036d8c32187c1e2612d1341ac9713f13252eab",
      "tree": "221fb86439deccc4d9ce736c297b92df4ce0f9c3",
      "parents": [
        "62b3e7a87d1b0554cf347ba9b06978f9344c46f7",
        "f3cb11a0bc9e7b397c2ae84c56ae0574c68f9379"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Dec 01 23:37:36 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 01 23:37:36 2017 +0000"
      },
      "message": "IAudioPolicyService: Add attribute tags sanitization am: 39fdbd097a\nam: f3cb11a0bc\n\nChange-Id: I4334fc550cd5c2660e2e6f128d2cdd7429917a56\n"
    },
    {
      "commit": "f3cb11a0bc9e7b397c2ae84c56ae0574c68f9379",
      "tree": "91c85857527bf75c13a162ca28dcf2b5712390fb",
      "parents": [
        "a774d5f64cd710013197b842fa33f2164a1c2789",
        "39fdbd097a147b5c719dac9ad2759e6c44eb3a4e"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Dec 01 23:33:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 01 23:33:52 2017 +0000"
      },
      "message": "IAudioPolicyService: Add attribute tags sanitization\nam: 39fdbd097a\n\nChange-Id: I2bccade7b7164dd3b912a1f891c4bf077120812a\n"
    },
    {
      "commit": "39fdbd097a147b5c719dac9ad2759e6c44eb3a4e",
      "tree": "a0a4b68c895c0603bfa7eea77f0115e06ea1dacd",
      "parents": [
        "28565390a1094b3d33ccec23ab5325e0442dead3"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Nov 13 11:15:27 2017 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Dec 01 19:29:52 2017 +0000"
      },
      "message": "IAudioPolicyService: Add attribute tags sanitization\n\nWhen audio_attributes_t was read from the binder parcel,\nthe string tags field was copied without checking that\nit contained a \u0027\\0\u0027.\n\nThis could lead to read past the end when tags were used.\n\nThis patch always adds a \u0027\\0\u0027 at the end of the buffer when\ndeserializing.\n\nBug: 68953950\nTest: manual playback/record\nTest: send binder payload without \\0 in tags attribute, check that only\n      AUDIO_ATTRIBUTES_TAGS_MAX_SIZE - 1 char are printed.\nChange-Id: I285258cbf7cfaf26b191d1f31b3b1e2d724c4934\nMerged-In: I285258cbf7cfaf26b191d1f31b3b1e2d724c4934\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "f32d7814f56f0a07b8aaacc88a0d8d00349fc916",
      "tree": "59bb1786ea61480ec92be9fb482480e96a83c5de",
      "parents": [
        "eda72c27cab52c41016d8ce138438a2d59973231"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 30 14:44:07 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 30 16:44:25 2017 -0800"
      },
      "message": "AudioTrack: fix status reporting\n\nMake sure mStatus is updated when set() is executed\nfrom outside of the constructor\nAlso update mStatus when createTrack_l() is executed.\n\nTest: manual test of audio playback use cases\nTest: AudioTrack contructor test.\nChange-Id: I70700c84800e144cbf34dac2f9d1526eaf7df292\n"
    },
    {
      "commit": "4473d78d092ffc442edeaed022c7e56366e1c504",
      "tree": "b14afb3cdeb329d4be2e687dcb7c1d96b797e445",
      "parents": [
        "cc25a713d9c3ea87299324d0f44864e78710020e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 28 11:53:36 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 30 12:15:23 2017 -0800"
      },
      "message": "add test for AudioTrack constructor\n\nThis test contructs a number of AudioTracks from arguments listed in an input file\nand outputs dumps of the constructed AudioTracks in an output file.\nThe output file can be compared to previous iterations to spot regressions.\n\nAn reference input file and the corresponding output file is added for\nfurther comparison.\n\nTest: run this test\nChange-Id: I88e458a194a18c9ec919e1e903d49686632c18bf\n"
    },
    {
      "commit": "6bf135b03e58c8b6399df2937358242977c77b2b",
      "tree": "64a1245f079864eb8a450028ca82999bb976732b",
      "parents": [
        "b6549b6297c7f6dcbd2c0b27b61407cde144530c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Nov 14 13:05:37 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Nov 29 11:05:37 2017 -0800"
      },
      "message": "Export AIDL files as a filegroup for framework.jar\n\nPut AIDL files into a filegroup so they can be imported as sources\nfor framework.jar.\n\nBug: 69917341\nTest: m checkbuild\nChange-Id: Ia500ff881bcc8d4a6f0aa66e12d9e6bb5a07ecc1\n"
    },
    {
      "commit": "fec2f93fae282ad10bbb5e3fcce9f60eff2cfb48",
      "tree": "3c2dc6668d62b13c4fe5e53bb0a4e821f8cf8a6d",
      "parents": [
        "b6549b6297c7f6dcbd2c0b27b61407cde144530c"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 24 10:10:53 2017 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 28 17:44:09 2017 -0800"
      },
      "message": "Add AudioRouting interface in AudioRecorder.\n\nBug: 64038649\nTest: Run cts in RoutingTest\n      Switching input device when using MediaRecorder\n\nChange-Id: I53f22974f8c3dacaef6044ea742e62951961c1fd\n"
    },
    {
      "commit": "d114b624ea2ec5c51779b74132a60b4a46f6cdba",
      "tree": "e9abd0ce3d951d80d5831e49d3ba5d6623fc4ab8",
      "parents": [
        "a221a7c81776add538e6cd82cddfa427364beb79"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 27 18:37:04 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 28 08:53:15 2017 -0800"
      },
      "message": "audio track: dump more data\n\nAdd more information to AudioTrack::dump();\n\nTest: run dumpsys media.player\nChange-Id: Ia0799c65c02dd27b623b53d550ebf08c5c1b724c\n"
    },
    {
      "commit": "ee9ab22ebabab3e3669b38badf8b0a0f504fc3b4",
      "tree": "dae301adca07186dee680107492ef68403febfbb",
      "parents": [
        "e9f825a08817134810be42d6a2b4b444d68a2843",
        "21da647792c0b78ab3943be0f32066015d5e8c34"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 21 00:36:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 21 00:36:49 2017 +0000"
      },
      "message": "Merge \"refactor AudioTrack and AudioFlinger createTrack()\""
    },
    {
      "commit": "602417cd10c569783c2cc32bb7c13b1e02d9645e",
      "tree": "f722f2e2c33fd9104f8abc591d8062892a90092b",
      "parents": [
        "e0ce8445a111156fcbf8cb77f928a38d0abc8ac3",
        "db5b6cb6c35a69d236fcd62dcb41c8a4682fa295"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sonymobile.com",
        "time": "Thu Nov 16 20:28:12 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 16 20:28:12 2017 +0000"
      },
      "message": "Merge \"Support Ireland specific supervisory tone\" am: 289cce6034 am: 899b78c12b\nam: db5b6cb6c3\n\nChange-Id: I7308f696e575344a9a8d887d63b765942905ef78\n"
    },
    {
      "commit": "21da647792c0b78ab3943be0f32066015d5e8c34",
      "tree": "15ad0b64bf6eaabf24223d7fd376ef9ac00eb9cc",
      "parents": [
        "a4fa4760fa417473324e009b3f4117a2d539c486"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 09 16:29:26 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 16 11:33:12 2017 -0800"
      },
      "message": "refactor AudioTrack and AudioFlinger createTrack()\n\nRefactor the mechanism used by audio tracks to query and attach\nto an output mixer/stream in audio flinger. This will:\n- reduce the number of binder transactions needed to create a track\n- move sample rate, framecount and flags validations to audio server\nside\n- move audio session allocation to audio server side\n- prepare restriction of certain binder transactions to audioserver only\n\nTest: CTS tests for AudioTrack\n\nChange-Id: If4369aad6c080a56c0b42fbfcc97c8ade17a7439\n"
    },
    {
      "commit": "899b78c12b25fa381b1d6c90330ce45f758ef28d",
      "tree": "32ca133d8b81f781b8cc298375f421ed43568814",
      "parents": [
        "4593b04bdad2ae66b22c5d3fb78276b523b7e942",
        "289cce603494363f9d0f6d42b16289b632205f77"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sonymobile.com",
        "time": "Thu Nov 16 18:58:38 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 16 18:58:38 2017 +0000"
      },
      "message": "Merge \"Support Ireland specific supervisory tone\"\nam: 289cce6034\n\nChange-Id: I857c315649c27d6424ff97775aab813d330f5aaa\n"
    },
    {
      "commit": "289cce603494363f9d0f6d42b16289b632205f77",
      "tree": "2c18e7a2faaad9c450fbb76d7f6de78798138803",
      "parents": [
        "2eb29c0d79d88be7dcf2ce7092773d246a8abe6a",
        "599ca05559f93c608f00f2ad13846bf27ba82648"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 16 18:50:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 16 18:50:06 2017 +0000"
      },
      "message": "Merge \"Support Ireland specific supervisory tone\""
    },
    {
      "commit": "4593b04bdad2ae66b22c5d3fb78276b523b7e942",
      "tree": "d855fc3d7505c608fc720474d2af565feb131738",
      "parents": [
        "ea8dd2c787f88e7289ffb8f226237587f95d8a93",
        "79edadcea74151b573d5b973d5a421baee693ec1"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 10 15:29:40 2017 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 10 15:33:45 2017 -0800"
      },
      "message": "Merge commit \u002779edadcea74151b573d5b973d5a421baee693ec1\u0027 from\noc-mr1-dev-plus-aosp into stage-aosp-master\n\nChange-Id: I04234f284e3117e8343e7c888646400c81f5a131\nMerged-In: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\n"
    },
    {
      "commit": "8f8932c41e7c0a1f65e3556733ed33bbc88793ce",
      "tree": "b93e401ecbe5c0e5152a227b604dcc99999a6ddc",
      "parents": [
        "7c92ffe076acb119ba58777519b9d2d2efc0f627",
        "f4e63452b37c799c9387a6a88b46e6191f6a5f7e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 06 21:37:01 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 06 21:37:01 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"audio policy: refactor getOutput() method\"\"\""
    },
    {
      "commit": "f4e63452b37c799c9387a6a88b46e6191f6a5f7e",
      "tree": "5c46fb22c92c574b84335fedca13f98e13434db8",
      "parents": [
        "e198f26cae6f0b5c67340935c291363fdfff87f1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 06 19:31:46 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 06 19:31:46 2017 +0000"
      },
      "message": "Revert \"Revert \"audio policy: refactor getOutput() method\"\"\n\nThis reverts commit e198f26cae6f0b5c67340935c291363fdfff87f1.\n\nChange-Id: I65eb2905adb45c3809a499d85c1a8ef68cec7ed5\n"
    },
    {
      "commit": "70fa3f429beb5f3a0d6468010668d901c117e03f",
      "tree": "938505dac9ec93fe56a1dde00f1a7d8d38420424",
      "parents": [
        "e7cdd4646d3bfdf4dc76a2a575f2ab2de5c88eb6",
        "e198f26cae6f0b5c67340935c291363fdfff87f1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 04 00:16:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Nov 04 00:16:44 2017 +0000"
      },
      "message": "Merge \"Revert \"audio policy: refactor getOutput() method\"\""
    },
    {
      "commit": "e198f26cae6f0b5c67340935c291363fdfff87f1",
      "tree": "a08455486befa3d1ed0ebd6d3eb8257f51dcfb7d",
      "parents": [
        "e1dd2075105317ef8ff2b924423c88856e8fe8ea"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 04 00:13:42 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 04 00:13:42 2017 +0000"
      },
      "message": "Revert \"audio policy: refactor getOutput() method\"\n\nThis reverts commit e1dd2075105317ef8ff2b924423c88856e8fe8ea.\n\nChange-Id: I4b7a2177af5bff5013ec4fe7fcdeb722f6b158c5\n"
    },
    {
      "commit": "98b1b5ec9122dde302879878b255b44ce03cfec9",
      "tree": "27a3a6b4cf4d2593e0da167a601a28e8a2bb1133",
      "parents": [
        "874987b60abede914f4a645868a3de2d03d74a9d",
        "e1dd2075105317ef8ff2b924423c88856e8fe8ea"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 03 20:38:46 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 03 20:38:46 2017 +0000"
      },
      "message": "Merge \"audio policy: refactor getOutput() method\""
    },
    {
      "commit": "e1dd2075105317ef8ff2b924423c88856e8fe8ea",
      "tree": "5c46fb22c92c574b84335fedca13f98e13434db8",
      "parents": [
        "9a60e1ad4762bd428ddc158e5a50641649698ec4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 03 09:26:21 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 03 09:26:21 2017 -0700"
      },
      "message": "audio policy: refactor getOutput() method\n\ngetOtuput() was long replaced by getOutputForAttr() for the purpose of\nquerying an appropriate HAL output stream for a given playback use case.\nIt is now only used internally by AudioSystem to find an existing output\ncorresponding to a given stream type in limited cases.\n\nThis CL simplifies getOutput() by removing unused arguments and just\nreturning an output from already opened outputs.\nThis is in preparation of limiting access to audio policy binder calls\nto what is strictly needed by apps.\n\nTest: test main playback, capture and call use cases.\nChange-Id: I137c5526aa7e82303b43948326c77ec798f432f5\n"
    },
    {
      "commit": "156c6873a5e69af71f3c28b236c5831b9cb2ac95",
      "tree": "3e36c1490f5f2d22e6e79fac3d4f59a9559403ee",
      "parents": [
        "ef9fc7792d4995da68cb71a3e9f2304e565a016d"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Oct 06 09:47:15 2017 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Nov 02 11:14:55 2017 -0700"
      },
      "message": "Add AudioRouting interface for MediaPlayer\n\nBug: 64038649\nTest: Run cts in RoutingTest\n      Switch output device when playing music/video with MediaPlayer\n\nChange-Id: I5b5c288e6557199b0a6986785f9335a18a80ab89\n"
    },
    {
      "commit": "bdfaf7e6081a3a4fc5b0b613d9b2d42f488cb0a9",
      "tree": "dab6953412fc5b7013c2772a808c1b875bb9a2d0",
      "parents": [
        "67d876b17e6589a47c5f8906201ec2494119104f",
        "53a82d0a1ae2875cff9d8253f9b6ba2fff5f93a4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Oct 31 16:08:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 31 16:08:30 2017 +0000"
      },
      "message": "Merge \"Limit notification period when a fast track denied\" am: 89a1e53856 am: 66446e6135\nam: 53a82d0a1a\n\nChange-Id: Idf2b0e981ddbae38aeb4838595e303d0b8b1da2f\n"
    },
    {
      "commit": "53a82d0a1ae2875cff9d8253f9b6ba2fff5f93a4",
      "tree": "6f8a316ed5da93173aa8a5dd91096cf007f255d7",
      "parents": [
        "db42765c36920975fbe0c02252397d1a5813197b",
        "66446e6135fa9acbfffb96f3c70a8889e60a9a79"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Oct 31 16:06:25 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 31 16:06:25 2017 +0000"
      },
      "message": "Merge \"Limit notification period when a fast track denied\" am: 89a1e53856\nam: 66446e6135\n\nChange-Id: I4403db70ddcbcc5f29332342531c33eb12563661\n"
    },
    {
      "commit": "9bf34d542787dd322f7ad56f8bb8607633004009",
      "tree": "f2918d263cb486b80e38917c3f5a809b370a4deb",
      "parents": [
        "55c45b33092551b11ba79a35b7dae6c3fba999f5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 24 14:26:23 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 27 10:45:37 2017 -0700"
      },
      "message": "Limit notification period when a fast track denied\n\nIf client requests a fast track and this request is denied, then don\u0027t\nallow notification period to exceed FMS_20.  FMS_20 is the minimum task\nwakeup period in ms for which CFS operates reliably.  This reduces\nglitching when an app uses a buffer size that is too small for the endpoint.\nThe theory is that if the app wanted a fast track but couldn\u0027t get it,\nthen at least wake it up as often as possible (while still not waking\nup so often than CFS can\u0027t handle it).\n\nAlso clarify in the log when the denial is by client vs server.\n\nTest: as described in bug\nBug: 63040475\nChange-Id: I2c171bda7929a8f309c2286d868e09887680d234\n"
    },
    {
      "commit": "599ca05559f93c608f00f2ad13846bf27ba82648",
      "tree": "48fc5a4cd64da1dcd66212ac1885afd699c9d987",
      "parents": [
        "55c45b33092551b11ba79a35b7dae6c3fba999f5"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sonymobile.com",
        "time": "Mon Oct 23 09:54:36 2017 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Fri Oct 27 19:30:09 2017 +0900"
      },
      "message": "Support Ireland specific supervisory tone\n\nRingtone and call waiting tone for Ireland are not\nfollowing ITU-T specification.\nThis patch implements them as per ITU-T specification.\n\nBug: 68294204\nTest: Build and test ringback tone for Ireland\nChange-Id: I2cf3f425aec47b9dbc6ecf2ffb3aef44ca4f783c\n"
    },
    {
      "commit": "ec8aec0d83678ab4fea92639610f234fa0f01a65",
      "tree": "9271643859af55bd93c42eb7928c89e50e5334a2",
      "parents": [
        "80b3165a6ad328dc6b864bdb096066689de6a422",
        "d60b9de7c4594be831d23b9614a2475ff08e0633"
      ],
      "author": {
        "name": "tomoki hanzawa",
        "email": "tomoki.x.hanzawa@sonymobile.com",
        "time": "Tue Oct 03 20:17:03 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 20:17:03 2017 +0000"
      },
      "message": "Merge \"Support Hong Kong specific supervisory tone\" am: 78041ba297 am: cbb79ebda5 am: 593f9251c8\nam: d60b9de7c4\n\nChange-Id: I21fe2515577cc09f649ae38141ad65d6ed76d737\n"
    },
    {
      "commit": "80b3165a6ad328dc6b864bdb096066689de6a422",
      "tree": "ad34c3e230f1392786086cf005ec91b345956e6b",
      "parents": [
        "bfb6e108a3f4869166fbc53f7f6e153f3283016a",
        "d3bce141edb95bd06fe6d1ff593f7a9a8f66460e"
      ],
      "author": {
        "name": "Johan Gustavsson",
        "email": "johan1.gustavsson.x@sonymobile.com",
        "time": "Tue Oct 03 20:16:26 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 20:16:26 2017 +0000"
      },
      "message": "Merge changes I86076b07,I7409732e,I248b1b27 am: d773fbbb5c am: 160741e742 am: c9d45b85a4\nam: d3bce141ed\n\nChange-Id: I7982b3733c6142d4694004fe7ea0e3a06f8a7820\n"
    },
    {
      "commit": "d60b9de7c4594be831d23b9614a2475ff08e0633",
      "tree": "064a745cc171c8de9161720509b9de633a1227a6",
      "parents": [
        "d3bce141edb95bd06fe6d1ff593f7a9a8f66460e",
        "593f9251c8abd3023a75507723865eace5fc62d3"
      ],
      "author": {
        "name": "tomoki hanzawa",
        "email": "tomoki.x.hanzawa@sonymobile.com",
        "time": "Tue Oct 03 20:08:21 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 20:08:21 2017 +0000"
      },
      "message": "Merge \"Support Hong Kong specific supervisory tone\" am: 78041ba297 am: cbb79ebda5\nam: 593f9251c8\n\nChange-Id: I7176f17472b32753ef0342eec954d6e18a58025f\n"
    },
    {
      "commit": "d3bce141edb95bd06fe6d1ff593f7a9a8f66460e",
      "tree": "ea2bfaa5d46c9e796ad18e9866df20c0e2266e61",
      "parents": [
        "838ec2d2ab4b6ae2f9037323caf341ff90c85b77",
        "c9d45b85a4bc8b59b60caea58517e8031a3ede89"
      ],
      "author": {
        "name": "Johan Gustavsson",
        "email": "johan1.gustavsson.x@sonymobile.com",
        "time": "Tue Oct 03 20:07:36 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 20:07:36 2017 +0000"
      },
      "message": "Merge changes I86076b07,I7409732e,I248b1b27 am: d773fbbb5c am: 160741e742\nam: c9d45b85a4\n\nChange-Id: I797853c94c87b0a183accafb2a43f74434edf223\n"
    },
    {
      "commit": "cbb79ebda5f4aec6ef5309d965d693f26ba33bd8",
      "tree": "82dab2cf5c5161474bff57d62878c074b0a345fe",
      "parents": [
        "160741e7425ba50f428a8b9982301bb5139cf2d8",
        "78041ba297e0c9e8d3550f79d751683a4dd2a332"
      ],
      "author": {
        "name": "tomoki hanzawa",
        "email": "tomoki.x.hanzawa@sonymobile.com",
        "time": "Tue Oct 03 19:59:13 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 19:59:13 2017 +0000"
      },
      "message": "Merge \"Support Hong Kong specific supervisory tone\"\nam: 78041ba297\n\nChange-Id: I4a22b757e2e55155b041c97581118d3d02813afa\n"
    },
    {
      "commit": "160741e7425ba50f428a8b9982301bb5139cf2d8",
      "tree": "065755b50f9958882ed1f6632cc2c5fa402f4a4f",
      "parents": [
        "848fa50927b712748103ca9cc8c45bc39139ae8b",
        "d773fbbb5c23ae7b67eba52eca79a19926157025"
      ],
      "author": {
        "name": "Johan Gustavsson",
        "email": "johan1.gustavsson.x@sonymobile.com",
        "time": "Tue Oct 03 19:58:04 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 19:58:04 2017 +0000"
      },
      "message": "Merge changes I86076b07,I7409732e,I248b1b27\nam: d773fbbb5c\n\nChange-Id: I7ad0e8ccb29f5f626b6f4ef4b951f4f321a607e1\n"
    },
    {
      "commit": "78041ba297e0c9e8d3550f79d751683a4dd2a332",
      "tree": "ed6da26f681b273b9e059b478289986c5992f4de",
      "parents": [
        "d773fbbb5c23ae7b67eba52eca79a19926157025",
        "ef8d73a77cb2a4a344ce29a9aaaacbc7ca4f2206"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 03 19:38:44 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 03 19:38:44 2017 +0000"
      },
      "message": "Merge \"Support Hong Kong specific supervisory tone\""
    },
    {
      "commit": "d773fbbb5c23ae7b67eba52eca79a19926157025",
      "tree": "a3a7cb45c0384574684b9e82ad92d417ffeba2eb",
      "parents": [
        "24287d0bd55ccb779ca800647f39f266c584e3f6",
        "0f6500b61b7aaf3299eef8309c67ba2e86d2d065"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 03 19:34:13 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 03 19:34:13 2017 +0000"
      },
      "message": "Merge changes I86076b07,I7409732e,I248b1b27\n\n* changes:\n  Support Singapore specific supervisory tone\n  Support Australia specific supervisory tone\n  Support GB specific supervisory tone\n"
    },
    {
      "commit": "158482dcc8a81172ef6ac5725bee2bf7329b1e96",
      "tree": "08ce7b3f080f2f692305670e0a8bdc425f77d354",
      "parents": [
        "3463e1de5b6c4fc99724cdff249aa6abaa8ebdf5",
        "8589ce7045fd4f5520aabbc773f00c7136925fd7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 03 15:53:43 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 03 15:53:43 2017 +0000"
      },
      "message": "Merge \"Split nblog off from nbaio\""
    },
    {
      "commit": "930d7fc3ca11c4628aea2e8ed0c953f47eb2873e",
      "tree": "337a8f59fbeae9929c3ca3005ca3039d48e3cf0c",
      "parents": [
        "2fc41c8889714fa0dfa527de8a84a70e9199604e",
        "7e23edf1844198b4b31c3ce384c8f535a9aad155"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 22 15:32:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 22 15:32:46 2017 +0000"
      },
      "message": "Merge \"ToneGenerator: fix dual sim ringback tone\" am: 85e8823fc7 am: fe08c18918 am: 831da6ee4c\nam: 7e23edf184\n\nChange-Id: I085f1ede562c6a21a476774b4f1200b44f67a699\n"
    },
    {
      "commit": "7e23edf1844198b4b31c3ce384c8f535a9aad155",
      "tree": "7f5a941f55e83c6674a0f307706f4d6b8fb1a526",
      "parents": [
        "05fd15038ea2f3f43123949b929e34e60adc2452",
        "831da6ee4cadc46163a4d9b793a413e72c504486"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 22 15:27:54 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 22 15:27:54 2017 +0000"
      },
      "message": "Merge \"ToneGenerator: fix dual sim ringback tone\" am: 85e8823fc7 am: fe08c18918\nam: 831da6ee4c\n\nChange-Id: Iea171fc613f8449a88593dcb4c07e63d57b586a6\n"
    },
    {
      "commit": "fe08c18918afc6c15e9f0a0b36d0cb735d330b10",
      "tree": "e7b221ceb3485f25e600338cdb7159234013d64c",
      "parents": [
        "d473cae4d0ac3ca19f926fcb80dfd68034b41697",
        "85e8823fc77c9028c18156c0e1a58a2df16607f7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 22 15:19:25 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 22 15:19:25 2017 +0000"
      },
      "message": "Merge \"ToneGenerator: fix dual sim ringback tone\"\nam: 85e8823fc7\n\nChange-Id: Ic77a7c6723b0483aeaac6c83e42722e7f6e6b7c5\n"
    },
    {
      "commit": "eae07a40aeadf4f0e339c331487c80d3216e3b6e",
      "tree": "53a457290a626d3eb24d1df3ac4d64fde1eaebb5",
      "parents": [
        "69545369eef7dcaf81b889a2fc216ec7923c9622"
      ],
      "author": {
        "name": "Krzysztof Semko",
        "email": "krzysztof.semko@sonymobile.com",
        "time": "Tue Feb 07 10:50:40 2017 +0100"
      },
      "committer": {
        "name": "Shuhei Miyazaki",
        "email": "Shuhei.Miyazaki@sonymobile.com",
        "time": "Thu Sep 21 20:39:10 2017 +0900"
      },
      "message": "ToneGenerator: fix dual sim ringback tone\n\nIf dual sim device has two SIM cards inserted,\nin airplane mode it sets \"gsm.operator.iso-country\" prop\nto a single comma, which prevents ToneGenerator to access\nprop for \"gsm.sim.operator.iso-country\" - SIM provider\ncountry code. When VoWifi is used to make a call,\nincorrect ringback tone is being played (generic one),\ninstead if one being read from gsm.sim.operator.iso-country.\n\nThis patch fix this, and allows ToneGenerator to correctly\nrecognize SIM country code.\n\nBug: 65859291\nTest: Check ringback tone during SIM2 VoWiFi in flight mode\n\nChange-Id: Ibb57d38432f3d99f2eac568aec2a949af5e2a9cd\n"
    },
    {
      "commit": "92197f86b1184133107ee66314467f4676850ab8",
      "tree": "2e35076e4f171f06c8d3e441dd7b3784226f917f",
      "parents": [
        "5d81cf35fb108d6a2412f770087861ad4be5020c",
        "282ca695834f9cf9f63536cab2d6592b18fc011a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 18 22:47:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 18 22:47:16 2017 +0000"
      },
      "message": "Fix various AAudio device selection issues am: ad2e7b902c\nam: 282ca69583\n\nChange-Id: I051d56560608444c47b5a827ef921b878e8f4a4e\n"
    },
    {
      "commit": "ad2e7b902c0432a0db40906a4b1f5b693ce439dd",
      "tree": "c4830cedbf63c641325e082fd30484a3bff58e49",
      "parents": [
        "b92c988ffc48f093ab8615896b02b8c8e10e19b2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 14 20:06:42 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 18 12:58:30 2017 -0700"
      },
      "message": "Fix various AAudio device selection issues\n\nBug: 65292224\n- Audio policy manager should not use an unavailable device when an explicit\nroute is requested. This causes a device selection made by a client to\nbecome sticky after device disconnection.\n\nBug: 64945845\n- Remove spurious device change callback occuring after registering a\nnew client to audio server by creating a specific configuration event\nfor client registration.\n- Do not keep strong references to device callback interfaces in\nAudioTrack, AudioRecord and AudioSystem.\n- Do not update selected device in AudioTrack and AudioRecord when\nnot active as the new device selection on the stream is because of other\nclients activity which is not relevant to an inactive client.\n\nBug: 65693340\n- Fix missing increment of SessionRoute ref count in getInputForAttr() for\nMMAP inputs\n\nTest: AAudio CTS tests\n\nChange-Id: I2a01b02e8b064d352004f6065495fd99aee55745\n"
    },
    {
      "commit": "f89090e284b8ef61eb8cae68c657c8a60877b9fb",
      "tree": "37656620e850132bfd6cc0ffed14e5fd9fcc4c20",
      "parents": [
        "19c197a3bc4c73a06a38513884da392d3fd0a49e",
        "c0e75a7d57df751ec1cb49da91cf64ab0c4c4938"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 14 01:43:23 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 14 01:43:23 2017 +0000"
      },
      "message": "Merge \"AudioTrack, AudioRecord: Fix latency computation\" into oc-mr1-dev am: 5deda0e784\nam: c0e75a7d57\n\nChange-Id: I1f95a6372752e2e47e7f022db0333517c387eadf\n"
    },
    {
      "commit": "13969262f704ca27c82d60e3c7cf4b271e3b5918",
      "tree": "b71db061faee7352cada209170bd02dd80fc7055",
      "parents": [
        "49997ac32b61c3e3b8e0053c8c82f06e6a438f06"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 17:24:21 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 18:03:20 2017 -0700"
      },
      "message": "AudioTrack, AudioRecord: Fix latency computation\n\nForce 64 bit arithmetic to avoid integer overflow on 32 bit\nplatforms.\n\nTest: CTS AudioTrackTest\nBug: 65536481\nChange-Id: I774a7811fce08c7cbe59f0a062fd2c2d72220203\n"
    },
    {
      "commit": "8589ce7045fd4f5520aabbc773f00c7136925fd7",
      "tree": "a02b3ba722bc13f798c9c10cc51d19b670388452",
      "parents": [
        "f24d95960d85c891fc40db6f1e9644385efb4eb3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 08 17:03:42 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 08 17:06:32 2017 -0700"
      },
      "message": "Split nblog off from nbaio\n\nnbaio is an acronym for \"non-blocking audio I/O\", and nblog means\n\"non-blocking logger\" so nblog does not belong with nbaio.\n\nThere are a lot of improvements planned for nblog, and having the\nrestructuring done will make it clearer as more files are added.\n\nTest: builds OK\nChange-Id: Ib28bada2566c1d64bdbe9f5d7a5ce40e080178ef\n"
    },
    {
      "commit": "5d874b5bcc9577b4e9054b6fb1d41cb6462dbb58",
      "tree": "fb0fef58c699fd188ec09c34d663c055babf11a4",
      "parents": [
        "72b054de2c3549b4186daf1a83b041fee4607158",
        "fd513fff31baea5bf8a067c70a92e4a01681e169"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 07 20:09:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 20:09:30 2017 +0000"
      },
      "message": "Merge \"Fix failure at AudioTrack_ListenerTest#testAudioTrackCallback\" into oc-mr1-dev am: 310dd0a2d9\nam: fd513fff31\n\nChange-Id: Ic28d34a8cf8bed962642a7e2535d6936d69495f4\n"
    },
    {
      "commit": "310dd0a2d96e97d4f3983a6e70b5e0653a521030",
      "tree": "1400f29c182aeaaf88e2be0cdd6f130a97e902a3",
      "parents": [
        "7dca8d75871e8f275932ddcd184d45fec763ac16",
        "c7bb8324c7c19ed4ab5bdafae0d750bf41c299f1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 07 20:01:37 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 07 20:01:37 2017 +0000"
      },
      "message": "Merge \"Fix failure at AudioTrack_ListenerTest#testAudioTrackCallback\" into oc-mr1-dev"
    },
    {
      "commit": "c7bb8324c7c19ed4ab5bdafae0d750bf41c299f1",
      "tree": "525bf9e32a2c8c1101d6633c9101c46235eedccd",
      "parents": [
        "da071c34f3378a36d39ee0f89cdef4e1f98c3750"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Sep 06 18:20:11 2017 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 07 10:18:36 2017 -0700"
      },
      "message": "Fix failure at AudioTrack_ListenerTest#testAudioTrackCallback\n\nAfter cold start, running the test will cause failure. The reason is\nthat with cold start, the buffer is being processed faster than the\nposition callback.\nCalling the callback earlier at the very start will fix this issue.\n\nBug: 63056426\nTest: adb shell am instrument -e class \u0027android.media.cts.AudioTrack_ListenerTest#testAudioTrackCallback\u0027\n      -w \u0027android.media.cts/android.support.test.runner.AndroidJUnitRunner\u0027\n\nChange-Id: I7416cecb2837fac4a966e832412948c357e7b8dc\n"
    },
    {
      "commit": "a488402046bffd51803cc98815824a27f510d1c5",
      "tree": "fcb4480d47b663335ef5d48cb6fa3daed4a44614",
      "parents": [
        "b8ba103f7fd4a2695d20463689d898ddf5431dac",
        "12131a23cbb03c083c6f53a30c58b9182de5e5fb"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 07 16:52:17 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 16:52:17 2017 +0000"
      },
      "message": "Merge \"AudioTrack: Fix extended timestamp offset\" into oc-mr1-dev am: 7966b44126\nam: 12131a23cb\n\nChange-Id: Icc86ada7ecf279827f7a43bd93dbdae1ff445cb0\n"
    },
    {
      "commit": "c4e60eb165608f08cd85ed2fccbdaa6700f271cd",
      "tree": "8f73643165520a2d88fb83353eb330f9e478b684",
      "parents": [
        "cea54cf940630bd0f462f2c9dcb2bfb75e5ebd68"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 06 11:14:57 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 06 12:03:53 2017 -0700"
      },
      "message": "AudioTrack: Fix extended timestamp offset\n\nThe extended timestamp server and kernel location positions\nneed the proper client side delta offset for native AudioTrack API calls.\nThe client location position is unaffected along with the legacy timestamp.\n\nTest: test_timestamp, Photos, kill audioserver\nBug: 65386236\nChange-Id: Idd71b6a31e0e86a323d0e5e343a2836e34c08673\n"
    },
    {
      "commit": "e247023e785e581349d8fb926c4a1bed239b623c",
      "tree": "850157e9f268725e25dd0e1b98dfd729e61e0e76",
      "parents": [
        "fdf4151313d35e0ef504955ae738550b6ffd338b",
        "0fbd5badd563360827c81b9096381096e9eadf9c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 06 16:26:55 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 06 16:26:55 2017 +0000"
      },
      "message": "Merge \"AudioTrack: Limit timestamp time lag after start\" into oc-mr1-dev am: cea54cf940\nam: 0fbd5badd5\n\nChange-Id: I910d96c6901bad81987191ea2485435a6fcf8a7f\n"
    }
  ],
  "next": "ef8d73a77cb2a4a344ce29a9aaaacbc7ca4f2206"
}
