)]}'
{
  "log": [
    {
      "commit": "0a63ec2909f10b72ea7a177373a8a5e3a1d03ab6",
      "tree": "09bf7bba0afadcb6dfebf3f716abf154bc4a8428",
      "parents": [
        "a3550b6ca700f891c7c427eecf6129200e5114ce"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 07 11:21:06 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 07 11:23:30 2019 -0800"
      },
      "message": "aaudio_loopback: Allow specifying input device id\n\nThis is useful when there are multiple audio devices in the system.\n\nTest: use aaudio_loopback on a TV device with USB soundcard connected\n      specify -d\u003cHDMI out device id\u003e -D\u003cUSB in device id\u003e\n\nChange-Id: I60e84132f5974db6f4314c58f76705018e22b7db\n"
    },
    {
      "commit": "aea65a0f1ede2446f05ce186f04a419e36f4e311",
      "tree": "9140d6d186282057f805cd71bd46824cae2ec43a",
      "parents": [
        "d6454722c21495fb5effae4176cc689ec8900f9a",
        "f1533004baafc2eacfe6caea0ebc6e462b74abaa"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 08 01:36:26 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 08 01:36:26 2019 +0000"
      },
      "message": "Merge \"aaudio: fix hang option in write_sine_callback\""
    },
    {
      "commit": "f1533004baafc2eacfe6caea0ebc6e462b74abaa",
      "tree": "6dccffebf28f33ca23eff522c61d0dc68c16577c",
      "parents": [
        "ffb2516cc730b5ac621ad8a92e827faf4e86b8ca"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 07 13:04:28 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 07 15:56:21 2019 -0800"
      },
      "message": "aaudio: fix hang option in write_sine_callback\n\nWas colliding with -z option for capacity.\nAlso print data size in output buffer.\n\nTest: adb shell write_sine_callback -pl -n2 -h8 -s10\nChange-Id: If64f0876d3a2e1a95426dddf122693dbf3a314cd\n"
    },
    {
      "commit": "05e6b175c806aa4c8a3a99a46f7b0431458a0aa7",
      "tree": "30c645cb8fc6926340182b884dabf6114c0a47db",
      "parents": [
        "ffb2516cc730b5ac621ad8a92e827faf4e86b8ca"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 07 14:46:26 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 07 14:46:26 2019 -0800"
      },
      "message": "aaudio_loopback: fix -n for sine test\n\nAllow -n to specify buffer size for -tm test.\nIt was being forced to the size of the input buffer.\n\nTest: aaudio_loopback -tm -s20 -n2\nChange-Id: I4b71238f17bb87c22602bf86e2b91cfa41e3ae55\n"
    },
    {
      "commit": "a98c1aa621d62635330fef9cc7cce886cecf01c1",
      "tree": "86df1241ed5103915c16708601d9dbb13e79fae9",
      "parents": [
        "fd1ea436c6487e32781a84fe542e0899626d6830"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 31 15:26:03 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Feb 06 17:16:36 2019 -0800"
      },
      "message": "aaudio_loopback: glitch locations, hang callback\n\nVarious improvements including:\nShow frame number of first 32 glitches.\nShow graph at first glitch.\nHang in the callback using -h{msec} option.\n\nTest: Run glitch test for 20 seconds, hang for 40 msec\nTest: adb shell aaudio_loopback -tm -s20 -h40\nChange-Id: I8e0f7bfd89efe907c38093e65e7775f48adf88f7\n"
    },
    {
      "commit": "fd1ea436c6487e32781a84fe542e0899626d6830",
      "tree": "9c91b05d2093669204bc8fe19f153b6717549dcd",
      "parents": [
        "b241bbe175635f779c47b4a9ae78db93a72e745e",
        "377c1c2d47299c63fe837ec7df02993461c7d639"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 01 19:44:23 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 19:44:23 2019 +0000"
      },
      "message": "Merge \"aaudio: cleanup code that reads timing model\""
    },
    {
      "commit": "377c1c2d47299c63fe837ec7df02993461c7d639",
      "tree": "7d2989d1b9daa9fbfba5b1b7dfe4228be6956ac0",
      "parents": [
        "def408939dec9f3a4ff21d84c44b6fcad1797396"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 12 16:06:54 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 01 00:46:25 2019 +0000"
      },
      "message": "aaudio: cleanup code that reads timing model\n\nOnly use the clock model for the position when\nit is running and when the service is not updating\nthe FIFO counter.\n\nBug: 120932593\nBug: 122374244\nTest: test_return_stop\nTest: test_return_stop -i\nChange-Id: I6d6a23b35dca5529b6221e1b3b4a4e6672093bf2\n"
    },
    {
      "commit": "18c8476f1f86c81e55812ce0d34a977d435b6c5d",
      "tree": "43289662d9b97d0dc23af18cc360c5726465c4b6",
      "parents": [
        "bd63c6ffe67b3555262e85f23a4f26b4ff057404"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Dec 18 12:15:35 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 01 00:40:08 2019 +0000"
      },
      "message": "aaudio: fix framesWritten for Legacy INPUT\n\nWas set to 2X framesRead on stop.\nIt turns out that AudioRecord::stop() does NOT reset getPosition()\nto zero. But AudioRecord::start() does.\nSo the logic handling the reset had to move to the start code.\n\nBug: 121196899\nTest: test_return_stop -i -n\nChange-Id: I93635f9ba501b71b99b1df34c7920f7bfea5ca88\n"
    },
    {
      "commit": "bd63c6ffe67b3555262e85f23a4f26b4ff057404",
      "tree": "d20e8a7fbb1fc5dc4a068fc3604d8b5a1ebd9e84",
      "parents": [
        "def408939dec9f3a4ff21d84c44b6fcad1797396"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Dec 18 12:13:34 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 01 00:39:53 2019 +0000"
      },
      "message": "aaudio test_return_stop prints frames in buffer\n\nError if more than capacity of the buffer.\n\nBug: 121196899\nTest: this is a test\nChange-Id: I805905ffd1718f3e4fec2212e674f449bd55c4a8\n"
    },
    {
      "commit": "def408939dec9f3a4ff21d84c44b6fcad1797396",
      "tree": "9d8f8c28abff7e5bb39ba07ff379eeac6f5a37e3",
      "parents": [
        "dddc39e44c6bc1c8658e5f3fd6c087abad017fdd",
        "c0682e25540ce22c2428151086ed816c2df13db4"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 01 00:35:18 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 00:35:18 2019 +0000"
      },
      "message": "Merge \"aaudio test: test drift in clock model\""
    },
    {
      "commit": "c0682e25540ce22c2428151086ed816c2df13db4",
      "tree": "daf637d3b97d9e8ec8183a7b9d7a43d908fe3e85",
      "parents": [
        "a53ffa67b35a7e57efec57811e4f915d1caac1eb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jan 22 15:52:02 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 31 14:09:13 2019 -0800"
      },
      "message": "aaudio test: test drift in clock model\n\nSimulate a sample rate clock that is slightly off from the expected\nrate. The clock model should adjust to the drift and stay locked.\n\nTest: this is a test\nChange-Id: I402d8a90c920ff9eca611ee56071441826fc9876\n"
    },
    {
      "commit": "a4e1b67d25c676acbc250ec800fdf295a664b1bc",
      "tree": "41ab4e20ad2e271ef13436f108a6342382bf71f8",
      "parents": [
        "3600359f822730ac50cacdb91fb71595df9fb93a",
        "b2c9f01aa85f6509cfa430d081f7792b5d8449ff"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 23 00:54:17 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 23 00:54:17 2019 +0000"
      },
      "message": "Merge \"aaudio: loopback test should ignore some read errs\""
    },
    {
      "commit": "a53ffa67b35a7e57efec57811e4f915d1caac1eb",
      "tree": "bb234b23e9f5a749e490a84d9fe161195af8ece7",
      "parents": [
        "9f81192d77a62564dc1e2c7dad1afe601784a7b9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Oct 10 16:21:37 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jan 19 15:43:55 2019 +0000"
      },
      "message": "aaudio: rename timestamp variables\n\nThere were several different timestamp variables with slightly\ndifferent meaning but with the same name.\nThat made it hard to debug the code.\n\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Iebf438676925c698377abe02c81f3d559829318a\n"
    },
    {
      "commit": "c8b2701a2f899bdd0fc01b2bcb38e372c855e523",
      "tree": "5584b7f208b9b0b97667979aea506e0ad62fe705",
      "parents": [
        "2048effc48a71e746c5f08bd3bc61a182605bc5f",
        "1e83beeadb4db01091f2ba62eda445304e699e3e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 19 04:40:34 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 19 04:40:34 2019 +0000"
      },
      "message": "Merge \"aaudio: call stop() from the callback\""
    },
    {
      "commit": "26ddd4c6c3c013a3c79618e09a3a356d3ee614c2",
      "tree": "e1dd49b5414630ac9d33f0153b31530546c51ec6",
      "parents": [
        "d8ef100ee9b4c8d51ce1bc433fa697e28ccfca9a",
        "3788f65b8730791b07c983772e3dfcdf7e17da8e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 17 22:36:03 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 17 22:36:03 2019 +0000"
      },
      "message": "Merge \"aaudio: only return a timestamp when STARTED\""
    },
    {
      "commit": "d8ef100ee9b4c8d51ce1bc433fa697e28ccfca9a",
      "tree": "a179c9934eaf48dbe8717870095e8958f45b7d61",
      "parents": [
        "0f5092139154e1822a471cbdbc0ada6f5930cf52",
        "19785de5ed298b2c28f398d9c27c02e173aa1f52"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 17 22:35:39 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 17 22:35:39 2019 +0000"
      },
      "message": "Merge \"aaudio test: improve test_timestamps.cpp\""
    },
    {
      "commit": "3788f65b8730791b07c983772e3dfcdf7e17da8e",
      "tree": "7ce70b68a5728b80f5ad204178ec9153e8fd6c21",
      "parents": [
        "19785de5ed298b2c28f398d9c27c02e173aa1f52"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 16 16:57:22 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 17 12:55:01 2019 -0800"
      },
      "message": "aaudio: only return a timestamp when STARTED\n\nOtherwise return INVALID_STATE\n\nBug: 122043542\nTest: adb shell test_timestamps\nChange-Id: Ie9f3c96dc051aade25ee2641799fbc024196d1e4\n"
    },
    {
      "commit": "19785de5ed298b2c28f398d9c27c02e173aa1f52",
      "tree": "9b35a9e64aa8b6eec093ebca0d391fdd176e4ef9",
      "parents": [
        "f25675d38948d6e6eefc45f893f659467eab6471"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 03 15:53:49 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 17 12:55:01 2019 -0800"
      },
      "message": "aaudio test: improve test_timestamps.cpp\n\nTest for timestamps returned when STOPPED.\nTest for no valid timestamps.\n\nBug: 122043542\nTest: adb shell test_timestamps\nChange-Id: I3f9ea636c7a469ffd6aa721776127dfeac94bc1e\n"
    },
    {
      "commit": "b2c9f01aa85f6509cfa430d081f7792b5d8449ff",
      "tree": "7d04089f576f6136c2295919454c538fd781712c",
      "parents": [
        "f25675d38948d6e6eefc45f893f659467eab6471"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 26 16:00:36 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 16 15:27:12 2019 -0800"
      },
      "message": "aaudio: loopback test should ignore some read errs\n\nIf the input stream is not yet running then it will return\nINVALID_STATE.\n\nTest: aaudio_loopback -tm\nChange-Id: I752675bf7dd7325beee16f3de24183042632f807\n"
    },
    {
      "commit": "1e83beeadb4db01091f2ba62eda445304e699e3e",
      "tree": "7fe364b5ccf5c9dc91c57429db40eaeda698631c",
      "parents": [
        "f25675d38948d6e6eefc45f893f659467eab6471"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 17 14:15:20 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 16 14:45:19 2019 -0800"
      },
      "message": "aaudio: call stop() from the callback\n\nStop the stream when the callback returns AAUDIO_CALLBACK_RESULT_STOP.\n\nRefactor start/pause/stop code to allow different paths for\nstop from the app or from the callback.\nFix error handling in joinThread().\nSimplify code path through PlayerBase.\n\nBug: 120932593\nBug: 121158739\nTest: test_return_stop\nTest: test_return_stop -i\nTest: test_return_stop    -n\nTest: test_return_stop -i -n\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I85134211348b26077693d9a71bf1331dad60da38\n"
    },
    {
      "commit": "ae4b6ecfbcbea56cca160715a2ef710d8d87a40f",
      "tree": "124f24314b3f95b48a47dc8cc6f4ab0a6a0cc88e",
      "parents": [
        "96024c18126150259ba123ef48d180c6e0a2cf7e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 15 18:34:38 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 16 09:52:55 2019 -0800"
      },
      "message": "add new audio sources for audio capture\n\nThis commit adds the following audio capture sources:\n- AUDIO_SOURCE_VOICE_PERFORMANCE: for real time live performances like Karaoke.\n- AUDIO_SOURCE_ECHO_REFERENCE: for capturing the reference signal to suppress by an echo\ncanceller. Protected by privileged permission CAPTURE_AUDIO_OUTPUT.\n\nAlso added device AUDIO_DEVICE_IN_ECHO_REFERENCE selected when the requested\ncapture source is AUDIO_SOURCE_ECHO_REFERENCE.\n\nBug: 118203066\nTest: CTS tests for audio capture\n\nChange-Id: Ieb159ea82a7b81acf762506a44e24ec80111609f\n"
    },
    {
      "commit": "384a196f7cfbe4e1a481be0b281e1b7ae1bef42a",
      "tree": "71dfe251fd9473097bc9f5a49124dfdbbff912da",
      "parents": [
        "c1b140c7139be5f3125e503354b871925ca6d652"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 17 14:14:27 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 17 14:22:56 2018 -0800"
      },
      "message": "aaudio: remove redundant message from test-return_stop.cpp\n\nIt was unnecessary and was missing a newline.\n\nTest: this is a test\nChange-Id: I6463579c759b620ac3d34dceacee8e4e9c806808\n"
    },
    {
      "commit": "762365c3ee5f212d4995e002e1c53b221b587c92",
      "tree": "ec2322a17d6bb3c9c741f0b6915239c70fa161a0",
      "parents": [
        "d00c4607a5f7d25dfe925a20a1fc5fd7cfcee67a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 10 16:02:16 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Dec 13 17:39:26 2018 -0800"
      },
      "message": "aaudio: suspend a stream when its queue is full\n\nThis will prevent log spam when AAUDIO_CALLBACK_RESULT_STOP\nis returned from an audio callback.\n\nBug: 120845500\nTest: test_return_stop.cpp\nChange-Id: Icfe1541d6fa7b045285ac3dfbb75dfed5424d49b\n"
    },
    {
      "commit": "61cf6c171c70c771c8de83549d99a979d37b5e4e",
      "tree": "0d3b77af4b067e5cb22fabb9e813a86de2dfd122",
      "parents": [
        "ef4b27d1d1123b452316f722a0eacc282d3fa94a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 10 14:00:29 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Dec 14 00:51:39 2018 +0000"
      },
      "message": "audio: add test_return_stop.cpp\n\nTest returning a STOP code from the callback.\n\nBug: 120845500\nTest: this is a test\nChange-Id: I88aa46b356443ab055c194cb430d93618980894d\n"
    },
    {
      "commit": "7f7dc87778f5874bc510e75fde6925f3ca07dd53",
      "tree": "e70047942315687eb70404b0e41e1fc55e0d055d",
      "parents": [
        "c0f1949f01104713d5ec2ae393ec4baea1268211",
        "a3901e95412eacedb5682eb4cda9d63d3ef9f734"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 06 22:14:38 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 22:14:38 2018 +0000"
      },
      "message": "Merge \"aaudio: reduce log spam\""
    },
    {
      "commit": "4d58d4d8c750c01b9435b95ffdb5552c663aae76",
      "tree": "bfe0223fa221a351fe1461c5d5ab51d08fc91b8b",
      "parents": [
        "989a1cc0ca9f96f69565e477872b29cb452a330a",
        "58f7ff570d4e06189fe9c1fa4bc2988ebb7473a0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 06 04:21:20 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 04:21:20 2018 +0000"
      },
      "message": "Merge \"aaudio: Fix converting negative FIFO counters to index\""
    },
    {
      "commit": "58f7ff570d4e06189fe9c1fa4bc2988ebb7473a0",
      "tree": "52a713b72888d1da9fa5f498724828fb24198b5e",
      "parents": [
        "79222e7a39a73f5c635958a62f6f0ccde250e04c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 03 14:16:46 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 05 23:10:30 2018 +0000"
      },
      "message": "aaudio: Fix converting negative FIFO counters to index\n\nThe index into the FIFO is calculated by using:\n\n    counter % capacity\n\nBut the counter is signed and when it is negative the\nmodulo can have a negative result. That can cause\na negative array index and an access out of bounds.\n\nThis is not normally a problem because the counter\nis 64 bits and it will not overflow until the audio\nhas run for a few million years. But a hacker might\nbe able to modify this internal counter and force\nan error.\n\nThe solution involves casting to a uint64_t before doing\nthe modulo.\n\nNote that there may still be a discontinuity when the\ncounter wraps from -1 to 0. But that will not result\nin an out-of-bounds access. It may cause a noise but\nan app could simply create a noise directly. So that is\nnot considered an exploit.\n\nBug: 120147915\nTest: test_atomic_fifo.cpp\nChange-Id: I6fe57bcb44528d29b5edb817c592e5e9a8aaf8eb\n"
    },
    {
      "commit": "e6faa59bd4806a2200f59304ecba080569d0dc0d",
      "tree": "4b048142b18403b52bfcb36e42d7b51ffe2b241b",
      "parents": [
        "b079c02b1fa4f1b5c5b6334b93af584797b4454f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 03 10:10:21 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 05 09:18:10 2018 -0800"
      },
      "message": "aaudio: improve test_atomic_fifo\n\nCheck for the effects of setting a bogus counter.\nCheck for writes to memory surrounding the FIFO.\nCheck for negative array indices.\n\nBug: 120147915\nTest: this is a test\nChange-Id: Ia30cdef7f9d60f0a98b9af964cb3b3159df37dc9\n"
    },
    {
      "commit": "a3901e95412eacedb5682eb4cda9d63d3ef9f734",
      "tree": "cbd706244c858d132efa8dd103be42b855ce4452",
      "parents": [
        "1268b28c5c65691532d3ffb503a199c677c801b9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Oct 08 13:54:38 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 03 15:46:11 2018 -0800"
      },
      "message": "aaudio: reduce log spam\n\nRemove logging that is redundant or no longer needed.\n\nTest: write_sine_callback -pl\nTest: write_sine_callback -pl -r44100\nChange-Id: I9004d32509757847764b9533c5cda743c6bd81a0\n"
    },
    {
      "commit": "830b9aa910281f8a2a4b43d8e857492bfb9c477d",
      "tree": "5c0b58bcd2e070e07b6652544152776bb124d093",
      "parents": [
        "d1f7ce14c1b97facb2e4fd4bc78677f70092953f",
        "644bdbcbcf6578825d50244e402a487d01112c5c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Nov 17 01:35:23 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Nov 17 01:35:23 2018 -0800"
      },
      "message": "Merge \"Apply version-script to libaaudio library.\" am: e18577838e am: aa68675e88\nam: 644bdbcbcf\n\nChange-Id: I43678ab4c57b2ff56121780115022078ddb5d574\n"
    },
    {
      "commit": "e0a4d2ad61d08734555e79583503d4c5aa48e821",
      "tree": "de6c06517eef6a76706dffd76fd60106bd6bcfe0",
      "parents": [
        "158ce41988f3706465514265eed1d7e4b6fb123c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 05 11:40:36 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Nov 15 13:03:22 2018 -0800"
      },
      "message": "aaudio_loopback: rectify and low pass filter\n\nHelp the autocorrelator recognize the peaks easier.\nReduce false detection of suboctaves.\n\nBetter timing for devices with high latency.\nImprove error reporting.\nSet input capacity based on output burst.\n\nBug: 119032743\nTest: see repro case in bug\nTest: aaudio_loopback -te -pl\nChange-Id: I921c81db882f46ede8988cbdbebda0765e775086\n"
    },
    {
      "commit": "e3241d23fbbcd7b83c444a3dfd57d7a4655ce306",
      "tree": "79dcf5bbf4402e703bb802a6a13c2c907f23ee25",
      "parents": [
        "a864ea5f2d034069a3ede5fef9180e702666ee37"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Nov 15 16:28:32 2018 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Nov 15 16:28:32 2018 +0100"
      },
      "message": "Apply version-script to libaaudio library.\n\nHides unintentionally exported symbols from the library\n\nBug: http://b/69603741\nTest: make\nChange-Id: Ia43ba5b519dc65691d4c010329dee12a3f89ac93\n"
    },
    {
      "commit": "92e1e814316dc7b724e43edb9e58b5007e602d6f",
      "tree": "e86e865eba07cfcb39f5ba49ac1fdb02eff26019",
      "parents": [
        "9b9ac44fbe27e0f4d2096cbe37497ff70343ed44"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 06 13:09:53 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 06 13:11:58 2018 -0800"
      },
      "message": "aaudio examples: make tests portable to O\n\nWorkaround for a recent change in the build that made command line apps\nincompatible with O.\n\nTest:  adb shell aaudio_loopback -?\nTest:  should print help and not crash\nChange-Id: If2a2288249a33c16fa5004b6b7db1a5ff9e22745\n"
    },
    {
      "commit": "9b9ac44fbe27e0f4d2096cbe37497ff70343ed44",
      "tree": "36de81fbf48a0b61371eaad470d5825558050604",
      "parents": [
        "45ebf85754dd92e7cb5aa7857b4ce9617619a8e7",
        "317bac9689aa2e100e476b6fa86d4b48881b6669"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 06 00:03:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 06 00:03:31 2018 +0000"
      },
      "message": "Merge \"AAudio: Fix setChannelCount and setSamplesPerFrame\""
    },
    {
      "commit": "45ebf85754dd92e7cb5aa7857b4ce9617619a8e7",
      "tree": "2e06e0170c64a0a9f519674d4af0d8c3624ce6ee",
      "parents": [
        "19ae31192ea7ec56acbdafc398a6b3491e6c642c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 11 12:28:54 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 05 22:02:08 2018 +0000"
      },
      "message": "aaudio test: fix looping multiple times using -l\n\nWait for stream to pause before flushing.\nRemove scary -110 result message.\n\nBug: 68271891\nTest: adb shell write_sine_callback -pl -m2 -n2 -s2 -c2 -l100\nChange-Id: Ide7e7642cbe0b9d43023106a526e8f1e205aab77\n"
    },
    {
      "commit": "5bce4c9f93ed57e78d24eb568476a5907803f82a",
      "tree": "40329bc22064241abc64ea23f4fa149868fb1a6a",
      "parents": [
        "69c9844bed34c367224d5f6219e8410664b2119b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 18 09:29:14 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 05 09:58:18 2018 -0800"
      },
      "message": "aaudio_loopback: improve tolerance to noise\n\nMake silence detector less sensitive to noise by setting the\nthreshold proportional to the measured pulse level.\n\nMake glitch detector less sensitive to noise by setting the\nthreshold proportional to the measured noise level.\n\nReport signal to noise ratio.\n\nImproved printed messages, show state as text.\n\nBug: 117834966\nTest: aaudio_loopback -pl -tm\nChange-Id: I5593cd1ade93ecbcb05f42af07626013d036f29a\n"
    },
    {
      "commit": "317bac9689aa2e100e476b6fa86d4b48881b6669",
      "tree": "38c3593ff0dbb641bdc22a0dada29e3a97536a21",
      "parents": [
        "49fb89d3a0853ef77ecd533bec586abc65754857"
      ],
      "author": {
        "name": "Zach Riggle",
        "email": "riggle@google.com",
        "time": "Fri Oct 19 13:53:03 2018 -0500"
      },
      "committer": {
        "name": "Zach Riggle",
        "email": "riggle@google.com",
        "time": "Mon Oct 22 18:31:34 2018 +0000"
      },
      "message": "AAudio: Fix setChannelCount and setSamplesPerFrame\n\nThe C API interface to these was swapped internally, meaning that\nsetChannelCount would actually invoke setSamplesPerFrame.\n\nBug: 117985878\nChange-Id: I2e7f4b5ec01323c1df1aa6c34b849a63ec9ba936\n"
    },
    {
      "commit": "d1bdb20b3bff4f04ad467b77a0c690571e49bb4c",
      "tree": "f1eef1df2b4e1f1fd5edb26b6ce685f533b91258",
      "parents": [
        "fd771a4fdfad765cee9b66b558574d4ee3f70e4a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 19 13:59:26 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 18 09:47:35 2018 -0700"
      },
      "message": "aaudio: unit test for IsochronousClockModel\n\nTest: adb push ${OUT}/data/nativetest64/test_clock_model/test_clock_model /system/bin/.\nTest: adb shell test_clock_model\nChange-Id: I6736a02674b4f8f723799e76be7d441c46f01de6\n"
    },
    {
      "commit": "dd3556092f0a20a0d4dd4646863f00c679c955a8",
      "tree": "c877b8201a1394240859f712f6a0ecdd72643c30",
      "parents": [
        "b28aea17e60aa54c96f506c17d7d1603df928626",
        "10ffb196b3eb826cdcdc2fa20461b7e5492febb7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 03 17:41:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 03 17:41:45 2018 +0000"
      },
      "message": "Merge \"aaudio: add callback size options to examples\""
    },
    {
      "commit": "10ffb196b3eb826cdcdc2fa20461b7e5492febb7",
      "tree": "cf23a7906763a40c724fe1e01c1a80ced674af90",
      "parents": [
        "0127c1be07d63e046e136126cd465c3fa8977768"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 26 12:09:00 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Oct 03 09:35:16 2018 -0700"
      },
      "message": "aaudio: add callback size options to examples\n\nThis can be used to reproduce the wrap around bug\nin the MMAP FIFO in OC_MR1.\n\nBug: 78139448\nTest: aaudio_loopback -tm -pl -Pl -z120\nChange-Id: I923e60432f1c9777355d12d76609f2d70393f61b\n"
    },
    {
      "commit": "8ffcf6179cec579e065c20e9ac7294082d271ff4",
      "tree": "a32e87c6379ef1f3e3ccdadcec3628a466f7867c",
      "parents": [
        "cd3bf88393575455f5ceecd6dd5fd7343eaf5f12"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed May 23 14:38:07 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 28 15:17:59 2018 -0700"
      },
      "message": "aaudio: turn off RAW flag for sessions\n\nImprove support for AudioEffects in LOW_LATENCY mode.\n\nIf a Session is requested then it is likely that effects will\nbe used so do not set the RAW flag. RAW flag could interfere with\ncreating effects on some devices.\n\nBug: 80203192\nTest: Native Oboe Tester\nChange-Id: I9e7ac8689de71b376b750259da36d5879fe4898d\n"
    },
    {
      "commit": "0127c1be07d63e046e136126cd465c3fa8977768",
      "tree": "4eb611ec5d010becd3583f93c640cc9468acb3b3",
      "parents": [
        "fdfae2898f0785f19de198ed00488e03bf52bca9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 29 13:48:06 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 07 11:08:24 2018 -0700"
      },
      "message": "aaudio: use new flowgraph to simplify processing\n\nConstruct a flowgraph based on the source and destination\nformat and channelCount. This is groundwork for supporting 24-bit\nPCM formats.\n\nAlso cleaned up handling of device related format.\n\nThis CL removes more code than it adds.\n\nBug: 65067568\nTest: write_sine_callback.cpp -pl\nTest: write_sine_callback.cpp -pl -x\nTest: input_monitor -pl\nTest: input_monitor -pl -x\nChange-Id: Ia155bff0164912011d09b61b54f983ccf4490bd1\n"
    },
    {
      "commit": "3610f74e60e2c253d238fd6687e24dedc76a2b72",
      "tree": "fcade8a0652301730dd91e8be98172edf9e1ae7a",
      "parents": [
        "d43d6a0b9425634141a12d09518e353d1e0a1484",
        "bb78a73db83955151feb6b150f7cb925bcabe79a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 07 00:36:25 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 00:36:25 2018 +0000"
      },
      "message": "Merge changes I7d7794fd,I81a56554\n\n* changes:\n  aaudio test: test flowgraph\n  aaudio: add simple flowgraph system\n"
    },
    {
      "commit": "4280e86dcc1e3d5d1061350680dc8f6b47213e47",
      "tree": "7a930a97245da5db205f8c856de2f2d1cd4a2486",
      "parents": [
        "cbbc3febca31d8b073f6ba3bd142ef6b53d51f73"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 18 13:17:24 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Aug 30 16:42:13 2018 -0700"
      },
      "message": "Add __INTRODUCED_IN to audio/camera/media headers.\n\nBug: https://github.com/android-ndk/ndk/issues/706\nBug: http://b/113052379\nTest: builds\nChange-Id: I519d4fd825d40c3f72515f29a7e5b12c23a1749a\nMerged-In: I519d4fd825d40c3f72515f29a7e5b12c23a1749a\n(cherry picked from commit 85a41536a4885b12120ddafb4d0b3fee8a8613b6)\n"
    },
    {
      "commit": "bb78a73db83955151feb6b150f7cb925bcabe79a",
      "tree": "fd98edb0fb0f7a3045d36a447be3cf345a34e1e4",
      "parents": [
        "64dce361eb3dbfc8c78f474b4c24dcaceb904ae1"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Mar 28 15:37:19 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 29 13:05:09 2018 -0700"
      },
      "message": "aaudio test: test flowgraph\n\nConstruct simple data flow graphs and measure the output.\n\nBug: 65067568\nTest: this is a test\nChange-Id: I7d7794fd56c2e2ced130ea501a456f2690a64b59\n"
    },
    {
      "commit": "64dce361eb3dbfc8c78f474b4c24dcaceb904ae1",
      "tree": "2f35249e3f31df10ab2923a6267432f02ad07384",
      "parents": [
        "0d97cec0533f47237b16b294fd92a827f2ebdc6f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Mar 28 15:30:39 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 29 13:05:09 2018 -0700"
      },
      "message": "aaudio: add simple flowgraph system\n\nImplement a simple data flow model that can be used to\nchain various processing modules including:\n    data format conversion\n    volume ramping\n    channel conversion\n\nBug: 65067568\nTest: test_flowgraph.cpp\nChange-Id: I81a5655406cfa8c1c7d7cef4d933879f823939a5\n"
    },
    {
      "commit": "5c4f82623287b09db3a8131dbe4508893648be90",
      "tree": "612ad7601c094717b1b586818ecc32e6db821022",
      "parents": [
        "0d97cec0533f47237b16b294fd92a827f2ebdc6f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Nov 17 12:16:22 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 29 00:18:11 2018 +0000"
      },
      "message": "aaudio: clip setBufferSizeInFrames()\n\nBug: 69469801\nTest: test_various.cpp\nChange-Id: I8ce9a6ef19ed2bf12aa1d618b6a4095c94797636\n"
    },
    {
      "commit": "882c520fd82ef5ce1420bb3eb6fc4bcbb205cb87",
      "tree": "ab17c80d971269c1f8e16b6b8011d37863b0a8e6",
      "parents": [
        "a11eb695cac183c629cab536d101e6667343992b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 23 10:32:45 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 23 11:59:56 2018 -0700"
      },
      "message": "aaudio: cleanup FIFO\n\nRemove unused methods and fields.\nBetter code format and alignment.\nUse unique_ptr for mFifo.\nRemove getFifoController() method that exposed pointer.\nUpdates tests and calling code as needed.\n\nTest: test_atomic_fifo.cpp\nChange-Id: I1ea66beaadeb74083307835858b757e4753affda\n"
    },
    {
      "commit": "9876eacdbab140e50a69bae1bd5e0020f789fab6",
      "tree": "b42cce20f11b9b7dbbd70b1254830a0897cd3623",
      "parents": [
        "d2e705a7cb2ff043fc7d2ec8a773fdf3910f5f89"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 03 12:00:50 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 03 14:26:28 2018 -0700"
      },
      "message": "aaudio_loopback: do not set buffer capacity by default\n\nThat was causing us to not get a FAST track.\n\nBug: 112186931\nTest: adb shell aaudio_loopback -te -pl -Pl -m1 -n2\nTest: should get PerformanceMode 12 on INPUT\nChange-Id: Ib8b00585a80bdd86f752a5ee37aacd92f06db347\n"
    },
    {
      "commit": "293184487fccf0f1926482ad3d9145949cdc8a3c",
      "tree": "239d61a6fda12f4fd51a69a2b54b2767edff542c",
      "parents": [
        "deb9827a463e77092fd96b4503f9fb50ee0468da"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 18 14:17:04 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 18 21:22:36 2018 +0000"
      },
      "message": "libaaudio: remove unused .mk files\n\nThey have been replaced with .bp files.\n\nBug: http://b/32019064\nTest: mmm frameworks/av/media/libaaudio\nChange-Id: I34d20c09f36f79929c0878a62673bd2a3c8ef610\n"
    },
    {
      "commit": "85a41536a4885b12120ddafb4d0b3fee8a8613b6",
      "tree": "cf225b6fcf3514af521254574a392b2534ef02ec",
      "parents": [
        "aa8b91a495fa4a23dc4c7b6f9fc81b0df869c50e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 18 13:17:24 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 18 13:42:42 2018 -0700"
      },
      "message": "Add __INTRODUCED_IN to audio/camera/media headers.\n\nBug: https://github.com/android-ndk/ndk/issues/706\nTest: builds\nChange-Id: I519d4fd825d40c3f72515f29a7e5b12c23a1749a\n"
    },
    {
      "commit": "9dcd34f438ed63b2806134368c68cd3004e4dffb",
      "tree": "8df9451253ed236a33f3f805287cf3c0c7df2541",
      "parents": [
        "5f2136e6323c1e241c918a59cd06e715480241cb"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jun 13 16:19:36 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jun 13 17:47:27 2018 -0700"
      },
      "message": "AAudio should not use legacy path if not allowed\n\nTest: mmm frameworks/av/media/libaaudio/examples \u0026\u0026 adb sync data \u0026\u0026\n      adb shell ! /data/nativetest64/write_sine_callback/write_sine_callback -m3\nChange-Id: Ie17c4037c4b61caed07748a0ae79ec950da3c802\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "a2951c5943172b122cfbfd4098b4f6738eab207d",
      "tree": "ea44b223d73a128fec8dde765a21d64efabc6b0d",
      "parents": [
        "7e8214620e57d16a79bec79e5f282ab0ab33459b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 25 15:03:47 2018 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 30 11:41:00 2018 -0700"
      },
      "message": "aaudio: loopback test improved\n\nCheck to make sure input capacity is large enough.\nAdd -B option to set input capacity.\nHandles variable callback size better when setting up the\nloop for Legacy mode.\nNarrower impulse.\n\nBug: 80230720\nTest: this is a test\nChange-Id: I9349cf8248b65850073bfb8178bbb802a93fd684\n"
    },
    {
      "commit": "8149eed55abb4a57ca9cfbcd8a47946c3e30ddbf",
      "tree": "e432ab6de1e9880d20a1032a4ddca20799e80da2",
      "parents": [
        "c2d0641bc02e08a74c458002d9460299cd1ff490"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 24 14:09:46 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 25 10:03:57 2018 -0700"
      },
      "message": "aaudio: fix various problems in autodocs\n\nNo code or functional changes.\n\nBug: 36094393\nBug: 62415051\nBug: 63161196\nBug: 67572248\nBug: 72439629\nBug: 73135767\nBug: 73156751\nTest: look at generated autodocs\nChange-Id: I31326e3402ba4ec68b0548d094d479385994b914\n"
    },
    {
      "commit": "2b6f128229bdd4a71f2830f554e26465c93c4a7a",
      "tree": "dfe0a0c61bbc31ef8d0c6794d4554aabd1959e25",
      "parents": [
        "1267e887bd9d38e2785b601e872a26acf0ec17f9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 10 15:26:30 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 10 15:26:30 2018 -0700"
      },
      "message": "aaudio: fix reset of frame counters on stop, flush\n\nThe wrong monotonic frame counters were being reset.\nA reset is needed because the service resets it 32-bit counter.\n\nBug: 79497298\nTest: NativeOboeTest app, see bug report for repro steps\nChange-Id: Iee1797b4dee47ec08142c9ddb199b861e4db5ded\n"
    },
    {
      "commit": "0926bb0100b5df3439c49777952d48ce53dd9137",
      "tree": "cbf2348465d00a1435ae72fb185ddf82f5ec8a6b",
      "parents": [
        "e5a37268101a2c9d8019938f4e5ac9eec2e52fca",
        "74ce5e8273a1c3f6ea14ab087f66f7d32ad106d7"
      ],
      "author": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Mon Apr 30 18:26:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 30 18:26:45 2018 +0000"
      },
      "message": "Merge \"aaudio: fix loopback test, track magnitude drift\" into pi-dev"
    },
    {
      "commit": "74ce5e8273a1c3f6ea14ab087f66f7d32ad106d7",
      "tree": "06c122440410717114d405889db529f5c2b35ce6",
      "parents": [
        "6f4512914d90430bf135de221897887638c79f25"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 26 16:01:28 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 30 10:06:53 2018 -0700"
      },
      "message": "aaudio: fix loopback test, track magnitude drift\n\nLoopback test was still reporting some glitches.\nThese were false alarms due to:\n  * starting input before output causing an overflow\n  * not waiting for the input to reach equilibrium with the output\n  * detecting slow drift in magnitude as a glitch\n\nI changed the logic for setting up a test\nand track slow changes in magnitude.\nNow the rare glitch seems to be a real glitch.\n\nBug: 78139448\nTest: this is a test\nChange-Id: Id16d7dc59c0f2e040fe1dfb0337e9ed987d4fd02\n"
    },
    {
      "commit": "51f07177574ec2afd19b4390ab64ff8014489a9b",
      "tree": "00df16640bc767122fd6c27808c45b91523b77b0",
      "parents": [
        "6f4512914d90430bf135de221897887638c79f25"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 27 10:18:03 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 27 10:18:03 2018 -0700"
      },
      "message": "aaudio: use fmin and fmax to block Nan\n\nThis prevents NaN from creating noise that does not respond to\nVolume changes.\n\nBug: 69224661\nTest: adb shell aaudio_loopback -c2 -C2 -tm -m2 -s20 -Pl -pl\nChange-Id: I8604f5af42cbf5637f7ea4e975f53db990cdf9de\n"
    },
    {
      "commit": "6f4512914d90430bf135de221897887638c79f25",
      "tree": "162b3ed03eeca5527f25f5032d0c6e53871707a1",
      "parents": [
        "67f280ee7f7ec076cce335c7aa7d3150ae0a3e28",
        "217a14ff1b359762eea5619c12669a68e4db4672"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 25 14:54:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 25 14:54:49 2018 +0000"
      },
      "message": "Merge \"aaudio: add unit test for FIFO\" into pi-dev"
    },
    {
      "commit": "ac9d979583c4a10c2ebcf9649d773edf7acce723",
      "tree": "58547ec377102b7b009c96dfc064c15aecfcaff8",
      "parents": [
        "e4fbad4654f0af583bb5f0eb4b7300e3e96eaacf"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 12 10:51:41 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 24 17:52:48 2018 +0000"
      },
      "message": "aaudio example: fix loopback test\n\nSupport both I16 and FLOAT format.\nSilence output at beginning when skipping buffers. Was sometimes spewing noise.\nPrint more information when it fails so we can debug the failure.\nFix getting framesPerBurst from wrong stream.\nTrack when read gets too few frames.\n\nBug: 38268031\nBug: 78139448\nTest: this is a test\nChange-Id: If562856ab2eac607a8bb15da1cc587ae631f7a1d\n"
    },
    {
      "commit": "217a14ff1b359762eea5619c12669a68e4db4672",
      "tree": "6d003021aaeb53508e5c7fd897fdd331e6f6766e",
      "parents": [
        "64da22285776f07a775afd45f9fc36cea1aa05e3"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 23 10:33:06 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 24 09:11:56 2018 -0700"
      },
      "message": "aaudio: add unit test for FIFO\n\nWrite data, read it back and verify.\nTry to trigger wrap-around conditions.\n\nBug: 78139448\nTest: this is a test\nChange-Id: I4247fcf57a25c97c6ab8ce9671d0f61556ecef6a\n"
    },
    {
      "commit": "f7da0b9c64194650d0876eff26e853a3c01cce6f",
      "tree": "c8fc1d3f3da69f169165e9a4ffdd665b7c63e90a",
      "parents": [
        "7b56f7cc71f957f52f79df63f1cf234905d36f65"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 20 17:24:38 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 23 19:42:36 2018 +0000"
      },
      "message": "aaudio: fix FIFO wrapround frame counts\n\nThe number of frames in the second part was incorrect\nwhen it wrapped past the end of the FIFO.\n\nBug: 78139448\nTest: adb shell aaudio_loopback -c2 -C2 -tm -m2 -Pl -pn\nChange-Id: Ib6a22f30f0ee5321444c6d6137d9488943c34f3d\n"
    },
    {
      "commit": "bbd5286e99bbacf9907e2ecf1f7181db17ee6e46",
      "tree": "b523037660dffe33c9aa1d8cb65938b934f16000",
      "parents": [
        "f255369091d48ba7475ee4aae840a8a9c7a15f07"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 13 11:37:42 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 18 10:18:49 2018 -0700"
      },
      "message": "aaudio: teardown stream based on a port handle\n\nNeeded for silencing specific input streams.\nPass AAudioService reference into AAudioServiceEndpointMMAP.\nUse it to find a specific stream by PortHandle then\nstop it and disconnect it.\n\nBug: 72134552\nTest: b/72134552#comment10\nChange-Id: Ibdf242f834c83b47c967c3cc634ed1083b019d4a\n"
    },
    {
      "commit": "55e5eabf96af5a2964bfab1e64d81ad9be9ac975",
      "tree": "46127c87c1c2100d983c4bfbb611ec85bc6067b8",
      "parents": [
        "b8bddf5ece276f01052ad9b706417fd8cfe72d90"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 10 15:16:38 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 13 18:14:20 2018 +0000"
      },
      "message": "aaudio: cleanup logs and add counters to dumpsys\n\nCounters will give us some history for AAudio.\nRemoved some unneeded logs.\nAdded log to help debug intermittent volume problem.\n\nBug: 64310586\nTest: adb shell logcat\nTest: adb shell dumpsys media.aaudio\nChange-Id: I012361bb4d0d0bfdedfe5ceef856b59282c8d3f0\n"
    },
    {
      "commit": "3d786cb59f5acd5484fa4fb968ba2de9dcf283ad",
      "tree": "d993b4be9f42f747a3a180349b1e554ac212732f",
      "parents": [
        "c0959648b4a3d73212cd16c1f03289eadcbacae0"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 09 11:58:09 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 13 08:56:04 2018 -0700"
      },
      "message": "aaudio: convert I16 input to float\n\nThis allows an app that requests a LOW_LATENCY FLOAT INPUT stream\nto get a FAST track when using Legacy mode.\nThis is needed because Legacy AudioRecord does not allow FAST for FLOAT\nstreams.\n\nBug: 38268031\nTest: adb shell input_monitor -m1 -pl -f2\nTest: adb shell input_monitor_callback -m1 -pl -f2\nTest: On Pixel phones you should get actual performanceMode\u003d12\nChange-Id: Ia5879ff4904f50bbb5009a3fc058800e53770710\n"
    },
    {
      "commit": "c0959648b4a3d73212cd16c1f03289eadcbacae0",
      "tree": "3cac28d06bc3966174e779bad7416fc3a535b779",
      "parents": [
        "fe463237ab61459ddc30120962c51fb089d25ec4"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 05 18:11:01 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 12 17:55:26 2018 +0000"
      },
      "message": "aaudio: fix uninitialized var in getBestTimestamp\n\nThe localPosition was used even if it was not set by another\nfunction. Now we only use it if OK.\n\nBug: 77659012\nTest: input_monitor.cpp -m1 -pn\nChange-Id: I10648c5c17d42bb31d83fb14c1bda3ec527a3924\n"
    },
    {
      "commit": "ba9cb1a8d41529d0b0d44d97e88889e2bd96b66b",
      "tree": "0935f8be4a5c1993fa68282b8e2097e61faaa450",
      "parents": [
        "ec84cede0192c5fe0d0b87f1a1865a75e6d14f38"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 09 12:13:14 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 11 19:40:54 2018 +0000"
      },
      "message": "aaudio: use ArgsParser for input callback test\n\nAllow precise configuration using command line arguments.\n\nBug: 38268031\nTest: this is a test\nChange-Id: I85801f308e99647cf58a2a6d474619cd91ca40b1\n"
    },
    {
      "commit": "32c74e9e97c843f56023bf7de30fb6316e01ee1d",
      "tree": "613ebad84a4dfe43658de55dee2087be1c6846fb",
      "parents": [
        "94525c7753f84a68d8f799712653cbd3c5824214",
        "dd574cabe69ac8a1b98b1e51952a93d3e77bb7be"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 11 16:10:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 16:10:26 2018 +0000"
      },
      "message": "Merge \"aaudio: add format option to example programs\" into pi-dev"
    },
    {
      "commit": "42452c06c6c4d1243497e4032c4a7b55e229a984",
      "tree": "5f1ac2db6e4c845fd232eef42c5f04a9155ff6bd",
      "parents": [
        "79d1ed9b6473f4d094aaa6b53f41a6ba92916e42"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 10 12:43:33 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 10 12:43:33 2018 -0700"
      },
      "message": "aaudio: mark new P symbols as API 28\n\nNew symbols involve SessionID, ContentType, Usage and InputPreset.\n\nFor example AAudioStream_getUsage(),\nand AudioStreamBuilder_setContentType()\n\nBug: 77632550\nTest: Look at auto-docs for new functions.\nChange-Id: If56529bab218c4aeb42022ec02ce8fdaa45795a4\n"
    },
    {
      "commit": "dd574cabe69ac8a1b98b1e51952a93d3e77bb7be",
      "tree": "2e1a4bf30cb43f465f6652134a92fa310d66c239",
      "parents": [
        "79d1ed9b6473f4d094aaa6b53f41a6ba92916e42"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 04 14:41:28 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 05 16:29:01 2018 -0700"
      },
      "message": "aaudio: add format option to example programs\n\nSelect format using -f0, -f1 or -f2.\nAdd support for float format to input_monitor.cpp\n\nBug: 38268031\nTest: these are tests\nChange-Id: Idd7dc6c0cc268126d4ea008bcb49693b73a8f81f\n"
    },
    {
      "commit": "19e990e480245af25ec03ff3a3f53b820b0732cd",
      "tree": "8eb6afdfc9a634c835c6cc0d8b28bd69ffbdd2f2",
      "parents": [
        "ce6c8479c587bf61dfbd7b050752fec54135ba1f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 22 13:59:34 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 23 21:50:37 2018 +0000"
      },
      "message": "aaudio: improve logging to help debugging\n\nUse __func__ more often.\nShow thread entry and exit.\nLog illegal state transitions.\nRemove some unnecessary logs.\n\nBug: 64310586\nTest: use AAudio then look at the logs\nChange-Id: I2e289698efc897640588ba534b5513ac39b15043\n"
    },
    {
      "commit": "7f68013dd65638b6688d17f53641d2f8f7fc2e09",
      "tree": "eeb8a744a7f07be954d6f945b73f5a0830c6dc6c",
      "parents": [
        "103d423a26d8dd46f6d185395a783cbb376f2837"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Mar 12 14:48:06 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 15 10:20:43 2018 -0700"
      },
      "message": "audio: check for negative sizes in conversion\n\nCheck for negative parameters in AAudioConvert_framesToBytes().\n\nBug: 74548911\nTest: run CTS\nChange-Id: I42903b9c7f710a34a8689431e57c084a9959d0e0\n"
    },
    {
      "commit": "a5891f427bbd57914090f3260430b82f6879ec8d",
      "tree": "2d939303ddaf407112f9c4ac14c7c23334515cb2",
      "parents": [
        "b95a5989190a427a7ea092dc18741af524009bdb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Mar 12 17:21:11 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Mar 14 15:58:25 2018 -0700"
      },
      "message": "aaudio: call validate() from readFromParcel()\n\nThis is to ensure that validate() is always called\nin the future.\n\nBug: 74558178\nTest: run AAudio CTS\nTest: on Marlin, adb shell write_sine_callback -pl\nChange-Id: I661f3c4e690be2268ca61b80a98bbdf9a7368c1b\n"
    },
    {
      "commit": "cdf22ce8143ac4cc84c890eec49b213fc1db7231",
      "tree": "33b8a94720707c403429aee06d4a4c0490e46b6a",
      "parents": [
        "cb9be9770df37243450ced00daf8b909bb78df6a",
        "4e98efa3b18ba1d72d28358da86f9beb5596588d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 22:46:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 22:46:46 2018 +0000"
      },
      "message": "Merge \"aaudio_loopback: general cleanup, use dlsym\""
    },
    {
      "commit": "4e98efa3b18ba1d72d28358da86f9beb5596588d",
      "tree": "8c0abcfc7d2140381bb312630ae7ef9a607319eb",
      "parents": [
        "fc74d65b875e254b61d5c01569da31909af2cd3c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Feb 05 18:41:55 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 02 12:41:36 2018 -0800"
      },
      "message": "aaudio_loopback: general cleanup, use dlsym\n\nCleanup printing.\nUse dlsym so this can run on O.\n\nTest: aaudio_loopback -tl -pl -n2\nChange-Id: I77b931e59cced32b0cc23076f9b156d082e6bf0b\n"
    },
    {
      "commit": "b62c79b1d35ef69f7392464f104b53ef6f9967b0",
      "tree": "4e4835fc680200a896f04fbfe525061021693346",
      "parents": [
        "3859e62d88d3abd8ed5679e56c6e73804ff3c9a4",
        "41f19d8e9471945b358c9ae1dffda60f195d9f5b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 02 19:23:14 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 19:23:14 2018 +0000"
      },
      "message": "Merge \"aaudio: convert mono output to stereo\""
    },
    {
      "commit": "41f19d8e9471945b358c9ae1dffda60f195d9f5b",
      "tree": "76116b8a7d57b4f696fa1bda0cbeda63fa208d45",
      "parents": [
        "54486dc5d502e563747ec5744f61af97ea9c9035"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Feb 13 14:59:10 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 01 19:13:02 2018 -0800"
      },
      "message": "aaudio: convert mono output to stereo\n\nMMAP hardware streams are often stereo.\nBut apps often want to output a mono stream.\nSince converting from mono to stereo is easy,\nwe can go ahead and open a stereo hardware stream\nand then just convert the apps mono data to stereo for the HW.\n\nAdd getDeviceChannelCount().\n\nTest:  adb shell write_sine_callback -pl -s10 -c1 -m3\nTest:  adb shell write_sine_callback -pl -s10 -c1 -m3 -x\nChange-Id: I444a38c6f5cd32d1d6113f16aacec68285a1bc82\n"
    },
    {
      "commit": "46ea3359918ad74ea2d0f217e23f1544d693f06e",
      "tree": "416931ae4ecbfbb017cb430868418fe6e533ce12",
      "parents": [
        "8e7bac6f629e59f7d1e88029c229bf623687a102",
        "02fec70d8be286ed2a9d42bd2902288949a9eea3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 27 23:52:01 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 27 23:52:01 2018 +0000"
      },
      "message": "Merge \"aaudio: set ramp frames based on sample rate\""
    },
    {
      "commit": "381708a847860bb5e71a55422916112c9ac361b5",
      "tree": "9a9dd9a6f73bec0024fd32352e38b3331b00d119",
      "parents": [
        "c2c0aabfef24cbf48cdf6755f8627386971abdd3"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Feb 14 16:02:50 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Feb 27 01:21:12 2018 +0000"
      },
      "message": "aaudio: test interference between streams\n\nCreate an MMAP stream at 48000 Hz.\nThen try to create a second MMAP stream at 44100 Hz,\nwhich will open on the Legacy path.\nThe bug will cause the first stream to be killed.\n\nBug: 73369112\nTest: this is a test\nChange-Id: Ibc7ef78b6bfd67114d6d2f47519e2a9113e75855\n"
    },
    {
      "commit": "02fec70d8be286ed2a9d42bd2902288949a9eea3",
      "tree": "eee1be1db723fd4e1877d89a7b2afcb83c70af82",
      "parents": [
        "c2c0aabfef24cbf48cdf6755f8627386971abdd3"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 16 18:25:55 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Feb 27 01:20:25 2018 +0000"
      },
      "message": "aaudio: set ramp frames based on sample rate\n\nNow it will be the same number of msec at any rate.\n\nBug: 68804159\nTest: write_sine_callback -pl -s60\nTest: then change volume. Should be smooth.\nChange-Id: I1f375e5a680198d0f8c6c398b22faf8b092e94fd\n"
    },
    {
      "commit": "ed816010d3e55a5f38c276e7fd3efdc9bb49bd26",
      "tree": "702b529aa63c5eb3dae824667635ab2b9c6ea795",
      "parents": [
        "1bfabb36f5d6f09d87e9d52778b5a1cca9512722"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Feb 06 12:40:50 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Feb 06 17:11:32 2018 -0800"
      },
      "message": "aaudio: fix routing for FAST track\n\nPass correct attribute flags instead of INPUT or OUTPUT flags.\n\nBug: 72880176\nTest: write_sine_callback -pl -c2 -m1\nChange-Id: Ia6b0b01fcc31e649e90568c9baa493f9c4927a3d\n"
    },
    {
      "commit": "58bce947568db8f6dd5e12e6548aff27af26ae96",
      "tree": "39fb5dfdedb0282935232ed4da5b3a07604f9cda",
      "parents": [
        "de2c195a218cc24eaf3a7ced149f7eb723656a97",
        "67fdd894bf7e09a544348a9f8298427bc9b3fe85"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 01 16:59:02 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 01 16:59:02 2018 +0000"
      },
      "message": "Merge \"aaudio: fix sessionId conversion\""
    },
    {
      "commit": "67fdd894bf7e09a544348a9f8298427bc9b3fe85",
      "tree": "1ca837a04fb3840e49399d81bb69a11554b8f2d7",
      "parents": [
        "254d783c0db9d7af6b863ad1819f5c4a543a939d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jan 23 15:28:55 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 24 13:31:06 2018 -0800"
      },
      "message": "aaudio: fix sessionId conversion\n\nWas not handling negative IDs correctly.\nUpdate test to allow negative IDs.\n\nBug: 72333892\nTest: CTS has test_session_id\nChange-Id: I1ca57026d6202f7d54c8efd51b14854be6cc69e4\n"
    },
    {
      "commit": "6d6f3f6d34aab02774ebf9caf641e97432ae157a",
      "tree": "35b41ff407d391e98ee76ae71f34c2d5b47d8e70",
      "parents": [
        "254d783c0db9d7af6b863ad1819f5c4a543a939d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jan 12 17:27:54 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 24 13:16:08 2018 -0800"
      },
      "message": "aaudio examples: add -u -i and -y for attributes\n\nUpdate usage() printout.\n\nTest: this is a test\nChange-Id: I4f7b5b8af26523a7ba09d95bad27f0f131508087\n"
    },
    {
      "commit": "a52b45712f1388aa3abffa00ff383f6708a4afcd",
      "tree": "6152ae2898bdb34fa82ddd049360967e52ed48fd",
      "parents": [
        "5cc83c3b8acc43b760be23a4e3b96fbbb06d8e93",
        "4fa3b94398653e20719c8d26dd75dbbabfbaabe9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 24 15:23:42 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 15:23:42 2018 +0000"
      },
      "message": "Merge \"aaudio: test matrix of state transitions\""
    },
    {
      "commit": "5cc83c3b8acc43b760be23a4e3b96fbbb06d8e93",
      "tree": "81c8578d69173d3e948a938e46d54e8385d254c4",
      "parents": [
        "bb8ad0e6ebf1a74245929720fd6336feda926ea9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 28 15:43:18 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 24 15:21:34 2018 +0000"
      },
      "message": "aaudio: fix some state transitions\n\nNow requestStop() and requestPause() do the appropriate thing\nbased on state.\nFlush is allowed when OPEN, PAUSED or STOPPED because there might\nbe pre-roll data.\n\nBug: 69810494\nTest: test_various.cpp\nChange-Id: Ie1b306b17734a58fa71b1742bb186482893656b7\n"
    },
    {
      "commit": "4fa3b94398653e20719c8d26dd75dbbabfbaabe9",
      "tree": "799f70df37d18a293e1705b9bbfe9c9b41f4f22f",
      "parents": [
        "bb8ad0e6ebf1a74245929720fd6336feda926ea9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 13 17:25:24 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 24 15:21:13 2018 +0000"
      },
      "message": "aaudio: test matrix of state transitions\n\nTest transitions from OPEN, STARTED, STOPPED and PAUSED.\n\nTest: this is a test\nChange-Id: I8e9257909f5e50834652f71b14d94a13e0e62f3f\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": "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": "7a4b8ab1bae94697d6d4daadf638d1bd9ca8b81a",
      "tree": "2076e03df781914f45d180f7c5acd9be7a83a578",
      "parents": [
        "b83456d9e3302f0222f7a55820ba0d031a0e0903",
        "eaef9b9c7b3c6c4d4435ce5e32e9fe952a2f69fe"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jan 22 22:35:42 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 22 22:35:42 2018 +0000"
      },
      "message": "Merge \"aaudio: use AAUDIO_INPUT_PRESET_VOICE_RECOGNITION\""
    },
    {
      "commit": "eaef9b9c7b3c6c4d4435ce5e32e9fe952a2f69fe",
      "tree": "a9c488f653c7d3488b6c72e8b44d82cea0437633",
      "parents": [
        "205266aacc675dfb7a7f9f985c4ca973163cb59e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 18 09:09:42 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jan 22 10:17:58 2018 -0800"
      },
      "message": "aaudio: use AAUDIO_INPUT_PRESET_VOICE_RECOGNITION\n\nChange default for InputPreset to restore low latency.\n\nBug: 72049948\nTest: see bug, adb shell aaudio_loopback -te -pl -n1 -x -X\nChange-Id: Ie987c2e65d9338353ec6e23598442394d2a2e4a9\n"
    },
    {
      "commit": "da60340a9e5ce64270f1106239b736296f280df4",
      "tree": "f5184c96a28012d2a56adb33f82fe6b0c7573a66",
      "parents": [
        "205266aacc675dfb7a7f9f985c4ca973163cb59e",
        "9e9a95b347ce2a86ced8b3b12603e05d1411b708"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 22 18:16:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 22 18:16:36 2018 +0000"
      },
      "message": "Merge \"aaudio: fix race condition in requestStart()\""
    },
    {
      "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": "6d7582e9ad858301b3eeff7b187af6c34808cb7e",
      "tree": "01cd8f75542d7581505bef8a5b9e2f09790ac0e1",
      "parents": [
        "7588ff418aca63b1dc43a85afc1e86c40dd889a3"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Jan 11 19:28:14 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Sat Jan 20 10:49:56 2018 -0800"
      },
      "message": "Audio V4: Use the framework audio.h instead of the HAL\u0027s\n\nUsing the legacy HAL interface was not needed. Only the system audio\nheader types are used by aaudio.\n\nTest: compile\nBug: 38184704\nChange-Id: I321635ef79732eb20864d1349e6a13911ece8da5\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "9831721434f8e2761bfdc4f4b30717f5efb30e65",
      "tree": "aff4b459f21183fdec12036f7eb70ed2a450401a",
      "parents": [
        "5b6921e785a91e3d2bce5edfbbc0c43890432114",
        "4e1af9fc9c1108d4514e92774f750bcd434dbbcc"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jan 19 19:08:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 19:08:45 2018 +0000"
      },
      "message": "Merge changes from topic \"aaudio_session\"\n\n* changes:\n  aaudio: implement sessionId for effects\n  aaudio test: test sessionID for effects\n  aaudio: header for SessionId for effects\n"
    },
    {
      "commit": "4e1af9fc9c1108d4514e92774f750bcd434dbbcc",
      "tree": "03dc781c49ae6b37c4661c591ece2c5a4eed8cfe",
      "parents": [
        "a11f9357196db29e6f8f05b91334524de4f3207e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 03 15:54:35 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 18 19:48:46 2018 -0800"
      },
      "message": "aaudio: implement sessionId for effects\n\nIf a sessionID other than AAUDIO_SESSION_ID_NONE is requested\nthen legacy data path will be forced.\n\nSessionID is implemented for MMAP data path but not used.\nIt is easier to implement it now then try to figure\nit out later.\n\nBug: 33268927\nTest: test_session_id.cpp will be moved to CTS when stable\nChange-Id: I3ea67f57c1cbe24a512980f1352b917ab3cb6387\n"
    },
    {
      "commit": "a11f9357196db29e6f8f05b91334524de4f3207e",
      "tree": "bf6f61bc918e26105e9607f4b390e2ef20bf0ce1",
      "parents": [
        "7e7dcaa9870760c3be5f2db28cd9149043c73fe2"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 03 15:53:25 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 18 19:43:17 2018 -0800"
      },
      "message": "aaudio test: test sessionID for effects\n\nTest AAUDIO_SESSION_ID_NONE.\nTest AAUDIO_SESSION_ID_ALLOCATE then use the allocated ID\nfor both input and output.\n\nBug: 33268927\nTest: this is a test\nChange-Id: Ia70670259137e715e75a497ef910a231b638e877\n"
    },
    {
      "commit": "7e7dcaa9870760c3be5f2db28cd9149043c73fe2",
      "tree": "89fa301496c044e84821f6e3e39a3e151b32aadc",
      "parents": [
        "473bfcf9195f7383a645527e687ea99f96a3e6aa"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 03 15:16:15 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 18 19:43:17 2018 -0800"
      },
      "message": "aaudio: header for SessionId for effects\n\nThe session ID can be associated with a group of audio effects.\nThe effects can be controlled from the Java API.\n\nBug: 33268927\nTest: test_session_id.cpp\nChange-Id: Ifaec4d48e33428221ef4f7dd2c61067554527197\n"
    },
    {
      "commit": "16756f26bef041eec07c04067703df56551a193d",
      "tree": "991db93c696c9adade930fe48ff330a5573a15d6",
      "parents": [
        "6d19eda2abd0a328588dbda8fb8dba0aa0da1b78",
        "ed0a3fefc53ae98880b39e0c1c24378297363a7c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 19 02:40:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 19 02:40:32 2018 +0000"
      },
      "message": "Merge \"aaudio: clarify autodocs\""
    }
  ],
  "next": "ed0a3fefc53ae98880b39e0c1c24378297363a7c"
}
