)]}'
{
  "log": [
    {
      "commit": "662f25f1aa97cb6c97c37e192859361650bf1fa4",
      "tree": "f8ab0f167b3d48364262ee2e371223709c9c27c2",
      "parents": [
        "911f7d1f565bab235d4a900955b17bdad59a06ba",
        "41852688c913af0961a72bc5e2c2155404ae2038"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 29 21:54:29 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 29 21:54:29 2019 +0000"
      },
      "message": "Merge \"aaudio: set buffer size to at least one burst\""
    },
    {
      "commit": "41852688c913af0961a72bc5e2c2155404ae2038",
      "tree": "d6963dc94c8b812786faf2b11325b77c99c24a02",
      "parents": [
        "a0a01876835b0b6342c8e695662d9d92816bf95c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 29 10:58:15 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 29 11:03:00 2019 -0700"
      },
      "message": "aaudio: set buffer size to at least one burst\n\nClip setBufferSizeInFrames() to at least one burst\nfor Legacy streams to avoid underruns.\n\nBug: 129545119\nTest: Look at BufferSize when you run this.\nTest: adb shell write_sine_callback -pn -n0\nTest: It should not glitch.\nChange-Id: Id82862d59122ba2d9dd98dff579b5c147e40fab5\n"
    },
    {
      "commit": "68646ba64107a19ac0d1af781ddd0b1edd2ed57a",
      "tree": "ac3003975099bef26b63302164468b766c6c9aad",
      "parents": [
        "36b17553b2c3aad4d8f600edd2e82f9a583ee05a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Mar 20 13:26:49 2019 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Mar 22 17:21:33 2019 -0700"
      },
      "message": "Add aaudio APC opt-out\n\nThe opt-out was only present in the java API but not on the native ones.\n\nTest: atest test_attributes\nChange-Id: I1b84f1a428508e00de65e615b59405b9ee2ba009\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "9e9a95b347ce2a86ced8b3b12603e05d1411b708",
      "tree": "dd37a955d47435239d1224a7e760f8613cba9822",
      "parents": [
        "87b4679598403fe752f57f1cfca4709ca82e97b8"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 18 12:14:15 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 18 12:17:11 2018 -0800"
      },
      "message": "aaudio: fix race condition in requestStart()\n\nSet callback enable flag before starting AudioTrack callback.\n\nBug: 72115512\nTest: Repeat:  adb shell write_sine_callback -pn -s4\nTest: 20 times and make sure framesWritten is advancing.\nChange-Id: I670fde46da0dccf8a6d03478fe2aa8b7ad596a3b\n"
    },
    {
      "commit": "3cf4c180de878a877b1de82404ba3c5537770fd6",
      "tree": "24b13d5cd7bc5bf372dd62d793b00dbd515371e4",
      "parents": [
        "aa50659081021a1708d9692be1c1576a939245b6",
        "a62fb9565d73d9ec9b56da65929afc0f686c696e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 18 01:34:13 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 18 01:34:13 2018 +0000"
      },
      "message": "Merge \"aaudio: fix USAGE, INPUT_PRESET and CONTENT_TYPE\""
    },
    {
      "commit": "a62fb9565d73d9ec9b56da65929afc0f686c696e",
      "tree": "f0291746c32af771178c350696f98bbac0f34c1f",
      "parents": [
        "d6be64a3f22be3eceb0d6209c88dcad573c08191"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jan 16 12:44:06 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jan 16 17:14:59 2018 -0800"
      },
      "message": "aaudio: fix USAGE, INPUT_PRESET and CONTENT_TYPE\n\nThe attributes were not propagating all the way down for MMAP\nstreams.\n\nBug: 72046612\nBug: 72049948\nTest: adb shell aaudio_loopback -te -pl -n1 -x -X -i6\nChange-Id: I41b592d0c3a9daef5070ad299198c8d6cd890cfc\n"
    },
    {
      "commit": "559788963268a0bc1e90e29c423ac78938c96b4a",
      "tree": "00ef867a4c27b5023d0909788ed7162bfca8f567",
      "parents": [
        "d6be64a3f22be3eceb0d6209c88dcad573c08191"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 11 14:56:09 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jan 16 16:33:25 2018 -0800"
      },
      "message": "aaudio: name threads for easier debugging\n\nName them \"AAudio_#\" where # is an increasing index.\nFor example AAudio_1, AAudio_2, etc.\n\nAlso name threads that are used for sending timestamps.\n\nTest: run write_sine_callback then dump the threads for that process.\nChange-Id: Ibd8c7be1109f6c15a4601ef154038cdce2e65e11\n"
    },
    {
      "commit": "d4ccc624201d5c74ff6e14db1b68743b41fe795c",
      "tree": "2f86fcbe969edd3e18a26863f6a5ecbf2b81a8ad",
      "parents": [
        "f9d1b99e6fb1af139604336863f6cb7d3c48510e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 20 15:32:44 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 11 18:47:47 2018 -0800"
      },
      "message": "aaudio: implement new USAGE, CONTENT_TYPE and INPUT_PRESET\n\nPass these audio attributes to AudioFlinger.\n\nBug: 68052449\nBug: 62104146\nTest: test_attributes.cpp will be moved to CTS when ready\nChange-Id: Ib8804614d95dcf1b85e51ec1f5569892e017a991\n"
    },
    {
      "commit": "e2039fd07f3ab04f8d75caf35665bce2aa0111a1",
      "tree": "51caaeaf6394e3d6b7d3cbc17978139da737eb90",
      "parents": [
        "dde976b4f5794e3eafbda289ace2d644aecc6765",
        "40cbbae84e5b57098c8cacb8ca4c0ff3ec839d51"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Dec 16 19:17:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 16 19:17:49 2017 +0000"
      },
      "message": "Merge \"aaudio: fix warning for use after free\""
    },
    {
      "commit": "40cbbae84e5b57098c8cacb8ca4c0ff3ec839d51",
      "tree": "61c7232a7cb01fd0ea11404ab252b534936f5b8b",
      "parents": [
        "ceedc87e48c92e248123b9a9476053456e62e006"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Dec 15 17:19:19 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Dec 15 17:47:45 2017 -0800"
      },
      "message": "aaudio: fix warning for use after free\n\nThe compiler was complaining because a pointer was printed after it was\nfreed. The compiler folks agree this is OK and recommended a technique that\nprevents the warning.\n\nTest: any AAudio program, look at log for close\nChange-Id: I49c005b48edc4a5dcb5c85da2a9e875befc37206\n"
    },
    {
      "commit": "823267338b2bee8c279306c07775feabfc2434a5",
      "tree": "6290eaae534daf3dadd93d8974863ea5b17a50c3",
      "parents": [
        "65f6932447d4c40d986d7c56806dc84ff7ca667b",
        "6428a766411880964e0c6609606d0f814bf5b674"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sat Dec 16 00:33:20 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 16 00:33:20 2017 +0000"
      },
      "message": "Merge \"Use %d for int32_t\" am: 240201e27b am: 63c04ff2b7\nam: 6428a76641\n\nChange-Id: I8b601680923641d7aa7f7aabed4e072fb77a24e5\n"
    },
    {
      "commit": "6428a766411880964e0c6609606d0f814bf5b674",
      "tree": "4305e1631019249459bdcfe69508e5ac7c6da555",
      "parents": [
        "3169eaa60aa85883f232e878043520ae5bd05e5e",
        "63c04ff2b789c39e52ef6a3813fd95f1197e3541"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sat Dec 16 00:20:15 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 16 00:20:15 2017 +0000"
      },
      "message": "Merge \"Use %d for int32_t\" am: 240201e27b\nam: 63c04ff2b7\n\nChange-Id: Ie30c55232b8b228fab1de5d827dc1bcf29c0f4a7\n"
    },
    {
      "commit": "0f414de66cda78cd019df9f791cb17889cfc8bca",
      "tree": "1baa4f64921ca64954c8c98f293a14da2bf91d39",
      "parents": [
        "aba76c0dbdf3ef55206c4c97d9a2f4f3d7aa69c2"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Dec 15 13:48:50 2017 -0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Dec 15 13:50:25 2017 -0800"
      },
      "message": "Use %d for int32_t\n\nDiscovered by the upcoming compiler update.\n\nTest: build\nChange-Id: I0314ae298bc84fb07fda8736a827642c849afdc9\n"
    },
    {
      "commit": "0b02f68762ad7f245c63f7dda855ed09b4f7163f",
      "tree": "1dc7299d8748f0a29679e5b09878d918174630c1",
      "parents": [
        "dc634a8b1f3f17ea99f79004830583945a27befd",
        "134f197bf7e2785ed9de336dc8e22e870c2ba6bd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 13 02:24:23 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 13 02:24:23 2017 +0000"
      },
      "message": "Merge \"aaudio: prevent stop/close from a callback\""
    },
    {
      "commit": "134f197bf7e2785ed9de336dc8e22e870c2ba6bd",
      "tree": "5151b8ba79552400756b29cfe1b6d7f74dcae8f8",
      "parents": [
        "5fb93fa294ee05a25f86312e926b5ca4e0d1d3b2"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Dec 08 13:06:11 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Dec 12 14:29:12 2017 -0800"
      },
      "message": "aaudio: prevent stop/close from a callback\n\nDetect whether AAudioStream_requestStop() is being called\nfrom a data or error callback and return error.\nAlso for start(), pause(), flush() and close().\n\nHonor AAUDIO_CALLBACK_RESULT_STOP in Legacy callback.\n\nBug: 65560631\nBug: 62943389\nBug: 63096718\nTest: test_various.cpp callback_blocker_none and callback_blocker_lowlat\nChange-Id: I29a685cd42910f70d16e23db0f9ec00b72451cfc\n"
    },
    {
      "commit": "ee995399b02c2dc60011f81e5251d24d3a0a79b5",
      "tree": "1805aa1f7860da58c76a8b6f36281982f1f6bca8",
      "parents": [
        "3a5608cf069994725f6e50950f0462e91dcd8c51"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 11 11:44:36 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Dec 12 17:12:01 2017 +0000"
      },
      "message": "aaudio: honor requested device in Legacy mode\n\nWas calling setDeviceId(), which is overwritten by set().\n\nBug: 70512693\nTest: write_sine_callback, see bug for details\nTest: input_monitor, see bug for details\nChange-Id: I484f47e898a0e92a6f88e099a115f3d091c174c2\n"
    },
    {
      "commit": "bba0900e3c6314235ae12440ad1cee43f12a57f8",
      "tree": "b68bf1cf4c15e1bb5acde0bb6b98bb168b5fa728",
      "parents": [
        "693cb2bde52b4d73c391c529f1c6bf7a02be9f72"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Nov 29 13:39:44 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Nov 30 14:47:13 2017 -0800"
      },
      "message": "aaudio: optimize float to int conversion\n\nUse new techniques from audio_utils/primitives.h\n\nTest: change volume while running\nTest:     test_linear_ramp.cpp\nTest:     adb shell write_sine_callback -pl -fi -x -s20\nTest:     adb shell write_sine_callback -pl -ff -x -s20\nChange-Id: Ib7dab07f351cf97a8cbda9608091188dec41d04c\n"
    },
    {
      "commit": "693cb2bde52b4d73c391c529f1c6bf7a02be9f72",
      "tree": "e90e62f72eed4f7c6cc88d1777abf9a9c17e5cc4",
      "parents": [
        "720e24cfe430e1719c5defb9a1f41a6b63b02eaf",
        "2329638e097622653cb2c4acc145b996e317a38b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Nov 22 18:16:26 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 22 18:16:26 2017 +0000"
      },
      "message": "Merge \"aaudio: use xruns detected in the service\""
    },
    {
      "commit": "2329638e097622653cb2c4acc145b996e317a38b",
      "tree": "d25dccdc184ac7ce8b7aceb227411592ff256484",
      "parents": [
        "10edfcf70857cc0a22afbbd3fc8f57f0c8a2953a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 20 15:45:11 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 21 10:30:58 2017 -0800"
      },
      "message": "aaudio: use xruns detected in the service\n\nThe service knows when an actual xrun occurs so we pass\nthat value to the client.\n\nBug: 38512417\nTest: write_sine_callback -pl -n1 -s20 -c2 -u\nChange-Id: I9e5ff1edd2e9378957309280162d7cda855f5adb\n"
    },
    {
      "commit": "afd5242aea820b8c7118ff35b3f1b3d5ed71ef19",
      "tree": "babebc3586faaabc05552489c6da12467c0b5197",
      "parents": [
        "ee9ab22ebabab3e3669b38badf8b0a0f504fc3b4",
        "6479d501e85147d2be48bde13a7926da5f0e56f6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 21 01:18:08 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 21 01:18:08 2017 +0000"
      },
      "message": "Merge \"aaudio: clip bufferSize at top of MMAP code\""
    },
    {
      "commit": "6479d501e85147d2be48bde13a7926da5f0e56f6",
      "tree": "fc8ceb4291751a934f51cc716304298ed9c05526",
      "parents": [
        "10edfcf70857cc0a22afbbd3fc8f57f0c8a2953a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 20 09:32:52 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 20 14:05:56 2017 -0800"
      },
      "message": "aaudio: clip bufferSize at top of MMAP code\n\nSet size to a reasonable value regardless of the user input.\n\nBug: 69469801\nTest: test_various.cpp\nChange-Id: I6c155383e70959485882c17189388be1c9e6fc8b\n"
    },
    {
      "commit": "9eba210059bb8d8502988fc9fd0cecf223c9114f",
      "tree": "99a70657c29143801e8c95f866dc0d37e71a4d4b",
      "parents": [
        "10edfcf70857cc0a22afbbd3fc8f57f0c8a2953a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 20 12:25:38 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 20 12:25:38 2017 -0800"
      },
      "message": "aaudio: fix ramp for volume smoothing\n\nIt was using numSamples instead of numFrames.\nSo timing was off.\n\nBug: 68804159\nTest: raise and lower volume without clicking\nTest: test_linear_ramp.cpp\nChange-Id: I18b10dadbc47ab9cbe9c5aefd4e6197c50a0bedc\n"
    },
    {
      "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": "6392485cb6f83d8cdcdc42786be4879d43470814",
      "tree": "779319eebdfef64121024610c065715047b44677",
      "parents": [
        "ba0a69a6a25428df90b9e864ce16b30b10415397",
        "1a55036ab9c424f1b3f223ac33da918d83dabea8"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Nov 02 04:15:49 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 02 04:15:49 2017 +0000"
      },
      "message": "Merge \"aaudio: fix loss of sync with HW FIFO index\" into oc-mr1-dev\nam: 1a55036ab9\n\nChange-Id: I569320e6fc3ff010b2301ab8cf9036b1f13908ad\n"
    },
    {
      "commit": "999e110dac3783df71e5606be1d86f1b122145c0",
      "tree": "27e8e10ba12fb0515194823d98fe26b1f74c80fc",
      "parents": [
        "73d0374fcb522fc5106c2c8f75d482cbc8a5e1c0"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 26 12:11:47 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Nov 01 15:52:30 2017 -0700"
      },
      "message": "aaudio: fix loss of sync with HW FIFO index\n\nThis fixes a problem with intermittent severe distortion\nand variable latency after restarting a stream.\n\nBug: 68003241\nTest: write_sine_callback -pl -m2 -n2 -s5 -c2 -l100\nMerged-In: Id7418adb86f2869ac74936cfbd365815a0a0e923\nChange-Id: Id7418adb86f2869ac74936cfbd365815a0a0e923\n"
    },
    {
      "commit": "a75fdf5ff87a75a52e5d782d0169ca61fe39e95c",
      "tree": "0e1e51d1152539d1dfa90ac349ae8e7a3ac8fdf9",
      "parents": [
        "1052fb1dc71dbd62f7ff2b2227ed318ca9aea1e0",
        "fbf031e8f197c916ae9c399f42926494ebdeb497"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 01 01:29:52 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 01 01:29:52 2017 +0000"
      },
      "message": "Merge \"aaudio: cleanup logs and comments\""
    },
    {
      "commit": "fbf031e8f197c916ae9c399f42926494ebdeb497",
      "tree": "13578d14ca810aaa7629770b983b81641e0bd90f",
      "parents": [
        "442459bca04f95ef2acd34e3de01f55bd5ede132"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 12 15:58:31 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Oct 31 15:36:38 2017 -0700"
      },
      "message": "aaudio: cleanup logs and comments\n\nThis CL should not change any code behavior except for log text.\nMostly it removes redundant class names from the log.\n\nTest: CTS nativemedia/aaudio\nChange-Id: I6a6d01da080f536d5345f2b0deb32e92ed1e3d47\n"
    },
    {
      "commit": "73af62a5ff0577eec6ad1be2b45fc9a15eaba920",
      "tree": "9d24c7c6a4320eb0ec5b9ae34852844ee6e8d989",
      "parents": [
        "442459bca04f95ef2acd34e3de01f55bd5ede132"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 26 12:11:47 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 26 14:03:49 2017 -0700"
      },
      "message": "aaudio: fix loss of sync with HW FIFO index\n\nThis fixes a problem with intermittent severe distortion\nand variable latency after restarting a stream.\n\nBug: 68003241\nTest: write_sine_callback -pl -m2 -n2 -s5 -c2 -l100\nChange-Id: Id7418adb86f2869ac74936cfbd365815a0a0e923\n"
    },
    {
      "commit": "29ca1b3eeac1eef316a283345f2e479f0a50f96e",
      "tree": "0aa8220363aba637abbd8e0924b0ee615d2b6ebc",
      "parents": [
        "38cefbe16a44aacb365af0aa3a5e2e9820ca1575"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 23 17:15:03 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Oct 25 01:26:58 2017 +0000"
      },
      "message": "Convert libaaudio to Android.bp\n\nSee build/soong/README.md for more information about Soong.\n\nI didn\u0027t translate the examples, since they appear to be NDK build\nfiles, not platform build files.\n\nTest: mmma frameworks/av/media/libaaudio\nChange-Id: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\nMerged-In: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\nExempt-From-Owner-Approval: simple backport\n(cherry picked from commit 0230b1ac4ae8833016f96cb7fe1eebf7efec26ef)\n"
    },
    {
      "commit": "0230b1ac4ae8833016f96cb7fe1eebf7efec26ef",
      "tree": "77a168f9388c7bd3bfe04813dd2e2872579e35dd",
      "parents": [
        "00c05a502837d834de257623980b5ea1b849e945"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 23 17:15:03 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 23 19:27:42 2017 -0700"
      },
      "message": "Convert libaaudio to Android.bp\n\nSee build/soong/README.md for more information about Soong.\n\nI didn\u0027t translate the examples, since they appear to be NDK build\nfiles, not platform build files.\n\nTest: mmma frameworks/av/media/libaaudio\nChange-Id: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\nMerged-In: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\n"
    },
    {
      "commit": "b44c69e85ced0a8909e5ca0035720a6e450c8f36",
      "tree": "585ba5b649b9695353ff99e0fdc0f758751a933d",
      "parents": [
        "32d82714da38ad86803a56870734d49bcf30c29d"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 23 17:15:03 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 23 17:46:27 2017 -0700"
      },
      "message": "Convert libaaudio to Android.bp\n\nSee build/soong/README.md for more information about Soong.\n\nI didn\u0027t translate the examples, since they appear to be NDK build\nfiles, not platform build files.\n\nTest: mmma frameworks/av/media/libaaudio\nChange-Id: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\n"
    },
    {
      "commit": "02cc0ecc732a33a33570ec490c44a686354c512b",
      "tree": "e051072cfa8de26a855a12c577bfc22a56cbae39",
      "parents": [
        "250cbc71e22b20c2a2b16f7225d8e8856d666a48",
        "58fc59b91c5a526c580ca24f74389f500ab2346d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Oct 14 22:58:58 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 15 06:01:21 2017 +0000"
      },
      "message": "resolve merge conflicts of 58fc59b91c to oc-mr1-dev-plus-aosp\n\nTest: I solemnly swear I tested this conflict resolution.\nExempt-From-Owner-Approval: weekend merge conflict resolution\nChange-Id: I70002ccad145f7b5fa4854d6aa192322b07849e9\n"
    },
    {
      "commit": "5fa7dcf26a5bec668532e086a973683edfb657a8",
      "tree": "7092f03ca491432729dcd2be0f1c1cfad2611932",
      "parents": [
        "3ccef7847f0e5174f045c85227b577abf08e02cc",
        "fe4ab105dad9fdbc23e9f681e0d342e892a74b18"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sun Oct 15 03:06:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Oct 15 03:06:50 2017 +0000"
      },
      "message": "Merge \"Add missing includes.\"\nam: fe4ab105da\n\nChange-Id: Ib95769338491b8cd3f5b1640a7839dfaff301da0\n"
    },
    {
      "commit": "cb2e7fb2a42542c3406678c4fd4ccfab9ceb8748",
      "tree": "6705febfb1f64fdb8ca5659998d919dccb175326",
      "parents": [
        "16f2c1559c5722a6cd69fef3c17dc5756ba73fe6"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 11 12:43:41 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Oct 13 18:43:30 2017 +0000"
      },
      "message": "Add missing includes.\n\nTest: mma\nBug: None\nExempt-From-Owner-Approval: trivial cleanup\nMerged-In: I97b9e5e1b6e8b3126a8668460a8c99e4ef1a907d\nChange-Id: I97b9e5e1b6e8b3126a8668460a8c99e4ef1a907d\n"
    },
    {
      "commit": "36967fb1a52f44cef9b5bdcca0f646aa136e285a",
      "tree": "8e3fd54b0c0cc9a55cd0f1c80f17698a0bca47b2",
      "parents": [
        "3d762515b88c266f6be7d8f05c83517960dbc92f"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 11 12:43:41 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 11 17:19:33 2017 -0700"
      },
      "message": "Add missing includes.\n\nTest: mma\nBug: None\nChange-Id: I97b9e5e1b6e8b3126a8668460a8c99e4ef1a907d\n"
    },
    {
      "commit": "e474bc188186007964b532bd99311a933be22832",
      "tree": "a156185ffda69c4ede19526424982fe23125bd14",
      "parents": [
        "dddb4326c090fa8ea37168d861eb11cd3a66e0c9",
        "d0a23e619a6b5995612e4865749098b04ae591d1"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 15 23:01:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 15 23:01:32 2017 +0000"
      },
      "message": "aaudio: keep track of streams using strong pointers am: 523b3047af\nam: d0a23e619a\n\nChange-Id: I86bf56dd51fe0a59ebb920fbf49e1907818b6c30\n"
    },
    {
      "commit": "523b3047af443d0a51141ddabd328d52be5a23b0",
      "tree": "2596b9d310c3c59d391634d131d2ae866ddf1d47",
      "parents": [
        "1e0c671e14660588410560a55c34718bb8af3b22"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 13 13:03:08 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 15 13:29:26 2017 -0700"
      },
      "message": "aaudio: keep track of streams using strong pointers\n\nMaintain strong pointer to service stream during service calls.\nUse simple AAudioStreamTracker instead of complex HandleTracker.\n\nBug: 65280854\nTest: affects all MMAP streams, run all CTS tests, etcetera\nChange-Id: I3d2ed8b588ea39c216dacd4dea503b11c33f36f3\n"
    },
    {
      "commit": "5e44deb3fa65eb3dd7c354d5b794240f8e70a88d",
      "tree": "9ce6e537042bedc3570f0ace4ee2d7a4381c2cec",
      "parents": [
        "49e290da74f583bc9c7d14a733414200fe480580",
        "0b97f851d03999fdd19c13f2b0afa0a441ec3d5e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 14 04:15:04 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 14 04:15:04 2017 +0000"
      },
      "message": "Merge \"aaudio: cleaned up PlayerBase implementation\" into oc-mr1-dev am: a39b3ba3ad\nam: 0b97f851d0\n\nChange-Id: I3b56f7eb66c201371de9af495fad8bf3b8310300\n"
    },
    {
      "commit": "8a8a9e5d91c8cc110b9916982f4c5242efca33e3",
      "tree": "9ef74bc0ce163de8f38837b27df4410248087772",
      "parents": [
        "ee5201b4d9115cc7ac282155573e6354cc9c6819"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Sep 12 16:25:15 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 13 14:41:46 2017 -0700"
      },
      "message": "aaudio: cleaned up PlayerBase implementation\n\nSimplify registration. Reduce use of virtual methods.\n\nThis CL, plus some CLs in AudioManager, should fix\ncrashes involving RefBase::decStrong\n\nBug: 65450109\nTest: CTS or \"write_sine_callback -m2 -pl\"\nChange-Id: Ie1decd20f8d44bdefb0faf92e6b74de4f72e86bd\n"
    },
    {
      "commit": "71ce897742a8cd0fbeb0bfc5b6580890e6faeb69",
      "tree": "170220b45b1e44a8ca2497e13bd2e8e5d217531f",
      "parents": [
        "90445b639c072f2b9c139e130d409158f6c41ba1",
        "50c9e990f5005e11df1eb050bbf09e7126128fef"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Sep 11 22:44:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:44:32 2017 +0000"
      },
      "message": "Merge \"aaudio: prevent noise upon disconnect\" into oc-mr1-dev am: aa488ac2ca\nam: 50c9e990f5\n\nChange-Id: I52f3a3764f2772061a3e4b72690a364d243ac247\n"
    },
    {
      "commit": "2d5ba532cc80b3408b9eb5d47d3144bf93ece8cd",
      "tree": "c5ec7c28e896560f742793162604ac9e3b4a518f",
      "parents": [
        "c75d97f20843388b9084561635996a01a53d0c0f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 06 14:36:11 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Sep 11 12:20:56 2017 -0700"
      },
      "message": "aaudio: prevent noise upon disconnect\n\nAlso clean up the state machine handling in the data callback.\nPrevent error callback sometimes being called twice for the same error.\n\nBug: 63342351\nBug: 63087953\nTest: add sleep(2) to write_sine_callback.cpp before the requestStop()\nChange-Id: I27737bcb0371052741f50bda9f65c5994ccf6fd9\n"
    },
    {
      "commit": "c3efae1003caf9065e1e120672b44850cd36a0bd",
      "tree": "9f9a13beacb2f6f81d3147b1442dc8f09fbfe205",
      "parents": [
        "8ec8c3898a3fd4840f12ae48cabf7c22b2de3eae",
        "331aa6d5c9ba3cce65f22e1c12483320a694d4c3"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Sep 09 07:06:22 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Sep 09 07:06:22 2017 +0000"
      },
      "message": "aaudio: fix return code from getTimestamp() am: c75d97f208\nam: 331aa6d5c9\n\nChange-Id: I8845b271acbee794c4e679d8ce485e5d89a9ce30\n"
    },
    {
      "commit": "8ec8c3898a3fd4840f12ae48cabf7c22b2de3eae",
      "tree": "87af358d56cb62a3cfd059bb85d983fa64c6bd73",
      "parents": [
        "ab2f3eb37bd517b7d0126791c0f8fb3e6f509916",
        "5badc8c1114c1d3a2934813297ab31f6e6ad5e3f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Sep 09 04:18:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Sep 09 04:18:10 2017 +0000"
      },
      "message": "Merge \"aaudio: fix problems with PlayerBase and ref counting\" into oc-mr1-dev am: e0de1cdc1e\nam: 5badc8c111\n\nChange-Id: I098386d047e5122febaf4da869dbd2345ba560a3\n"
    },
    {
      "commit": "c75d97f20843388b9084561635996a01a53d0c0f",
      "tree": "2830ecc2de864ef496f7bbbc507a5f144839732a",
      "parents": [
        "e0de1cdc1ebe4f43ac5ba4273d51b368901c87de"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 08 15:48:36 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Sep 09 04:17:53 2017 +0000"
      },
      "message": "aaudio: fix return code from getTimestamp()\n\nShould be AAUDIO_ERROR_INVALID_STATE if no timestamp available.\n\nBug: 65447871\nTest: test_timestamps.cpp should only print AAUDIO_ERROR_INVALID_STATE\nChange-Id: Id9e211ef8fce078514f4348a434e0c003372369c\n"
    },
    {
      "commit": "965650e5c36f39cb5e6d780a22ff711fbf5a37f5",
      "tree": "95b4d26ce9b2f0590e59ddeeafd9d020db06b652",
      "parents": [
        "fbe5bd5d97cdeee6f4982a7db0db42311433aacd"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 07 21:00:09 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 08 16:24:17 2017 -0700"
      },
      "message": "aaudio: fix problems with PlayerBase and ref counting\n\nCTS test was crashing because of a multiple inheritance\nproblem involving PlayerBase.\nWe now implement separate PlayerBase class that sits between\nAudioStream and the system.\n\nBug: 65450109\nTest: CTS nativemedia/aaudio\nChange-Id: I424663acc1eeacc9544769991495cb48f4110359\n"
    },
    {
      "commit": "b8ba103f7fd4a2695d20463689d898ddf5431dac",
      "tree": "e4025dced52bfff1c9bac23bdefd8fdcbebd84da",
      "parents": [
        "a7eba9bb298643b09b4d5f78ebea1c55e2365ad8",
        "3f1e4784c798418e0f2d75b77b5e458c863b6c20"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 07 16:24:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 16:24:52 2017 +0000"
      },
      "message": "Merge changes from topic \"aaudio_timestamps\" into oc-mr1-dev am: cc84034676\nam: 3f1e4784c7\n\nChange-Id: I189a652c143cab28d01353d6cf451878e36b9bfc\n"
    },
    {
      "commit": "bcc3674648bc6f554d89a2a5d7721ed41c53f83b",
      "tree": "ae3f8fcecce7f06b44088ff4c8adf3248f287f4b",
      "parents": [
        "7328a80ffc83729cc6252c79e0851a31af59c653"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 31 17:24:51 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 06 17:21:34 2017 -0700"
      },
      "message": "aaudio: fix timestamps and underruns\n\nStart the client after we get valid timing data from the server.\nThat can take a while because of the long cold start times.\nThe client is synced with the current position of the service.\nNow the client can start clean with no underruns.\n\nBug: 63918065\nTest: test_timestamps.cpp\nChange-Id: I5d01eb844e4b14cd5477d56ea1dd9e309abc1c52\n"
    },
    {
      "commit": "7328a80ffc83729cc6252c79e0851a31af59c653",
      "tree": "62c8ae222700101931459a8ee921a4c016d34871",
      "parents": [
        "187dcd4eeaeace78665dafcee6acb074ef390545"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 30 09:29:48 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 06 17:08:19 2017 -0700"
      },
      "message": "aaudio: prevent retrograde motion in Legacy timestamps\n\nUse MonotonicCounter for timestamp position.\n\nBug: 63918065\nTest: write_sine_callback.cpp and test_timestamps.cpp\nChange-Id: Iea58384e2d96adcfad586e8c522024baaecccb8c\n"
    },
    {
      "commit": "0b8529fbacaa35634ac24bb62c5890cddcb623b6",
      "tree": "f2ae5de5ae80bb6f69b929172804410e3335abf8",
      "parents": [
        "f238bd3c57632b7f4eeb6b1a6a9542058e911a5b",
        "8cf3a0788df2ee184b498086b1b8da322eeadcca"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 23:07:08 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 01 23:07:08 2017 +0000"
      },
      "message": "Merge \"Generate the IPlayer interface with AIDL.\""
    },
    {
      "commit": "8cf3a0788df2ee184b498086b1b8da322eeadcca",
      "tree": "1bd36129bbd4afa491689deca23977dbf30930f6",
      "parents": [
        "a5ec8b0ec9c94fd9474fae1d1d1dc798ae6c4d2d"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Aug 09 09:01:33 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 10:14:30 2017 -0700"
      },
      "message": "Generate the IPlayer interface with AIDL.\n\nThis removes the manually rolled IPlayer implementation and instead uses\nan aidl generated implementation. The IPlayer aidl file is moved from\nframeworks/base/.\n\nTest: run cts --module CtsMediaTestCases\nBug: 64223827\nChange-Id: Ia609f7ba1cc6f71ce919d6174dd8b5e0e1b05575\n"
    },
    {
      "commit": "77964b915ca37c268fbb686a26da6b7417291e41",
      "tree": "e0b7e4decaa64ac21b654a150f88928a2851f3ff",
      "parents": [
        "032d22e18a59941c9a03802a126a9577ab5d193b",
        "12d8c65adac8af264b839e691d51892116771476"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 28 23:27:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 28 23:27:32 2017 +0000"
      },
      "message": "Merge \"aaudio: fix hang in client when audioserver dies\" into oc-mr1-dev am: 35fcdb6a65\nam: 12d8c65ada\n\nChange-Id: I75539ee38a415265e1eb181e62aba1aeaf49132b\n"
    },
    {
      "commit": "2bc7c1838703993e126bfe9a21fee053b6c0ab67",
      "tree": "1de62456a6e61f35ca0d3d63947dc5a8f064cbfc",
      "parents": [
        "7124c1985b535a7862cd8f2706386a2a0ba676b2"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 28 11:45:01 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 28 12:55:54 2017 -0700"
      },
      "message": "aaudio: fix hang in client when audioserver dies\n\nFix timeout detection so that callback thread can die.\nPrevent AAudioBinderClient singleton from getting deleted,\nwhich caused a subsequent lock on a dead object to hang.\n\nBug: 64988439\nTest: \"write_sine -m2 -pl\" and \"adb shell killall audioserver\"\nChange-Id: I044bce385b66e69007d1997f051c9d6c042b7871\n"
    },
    {
      "commit": "963a7549ecaffad520b44d67889bacb8cd4bc34f",
      "tree": "79237488712cefece339a64a040345618dacf55a",
      "parents": [
        "e598e9986a7a7eff08d18c12138620de46c5c91c",
        "e9afda02db4ee9b6bc3a66eff31a6e7e71d31188"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 25 21:33:03 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 25 21:33:03 2017 +0000"
      },
      "message": "Merge \"aaudio: fix returned performanceMode for Legacy\" into oc-mr1-dev am: c35e23e508\nam: e9afda02db\n\nChange-Id: Ic6f0c8bc90726d9718deb74d727d06fc57805f3f\n"
    },
    {
      "commit": "09c27cab917f2f41dd58aececc3200b097fedde8",
      "tree": "9bd40d986cd0cc0cdb5d5b701abbb05013e56439",
      "parents": [
        "05e712d3be03291627eb40e9c7f6c08a9874bd23"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 24 22:12:56 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 25 11:06:58 2017 -0700"
      },
      "message": "aaudio: fix returned performanceMode for Legacy\n\nAAudio was setting the stream to PERFORMANCE_MODE_NONE\nif we got the FAST mixer but did not get the RAW flag.\nWe now consider FAST flag by itself to be LOW_LATENCY.\n\nBug: 63004643\nTest: see bug for repro case using NativeOboe app\nChange-Id: Id4643d20926a8e983cd28408f70e176976c02195\n"
    },
    {
      "commit": "39f02ddfbfd9313370d862a6c4727826379a319a",
      "tree": "aa5c61a50fff59d92db99619edd67b31e9d938c3",
      "parents": [
        "ee079fe295c41f89c2ac6316e99ee10847fb78fd"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 04 09:13:31 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 24 14:59:25 2017 -0700"
      },
      "message": "aaudio: fix EXCLUSIVE mode interfering with SHARED\n\nThe MMAP endpoints were not tracked by the EndpointManager\nso it could not broker EXCLUSIVE access. To fix this the MMAP stream\nwas refactored to use a per-client stream and a per-device endpoint.\n\nCleanup close() of MMAP stream.\nAdd AAudioServiceEndpointShared.cpp.\nExtract AAudioServiceEndpointMMAP from AAudioServiceStreamMMAP.\nTrack MMAP endpoints so we can manage EXCLUSIVE and SHARED access.\n\nBug: 64494572\nBug: 64310586\nTest: see bug, use write_sine to play a shared stream and a excl stream\nChange-Id: I5053193abfd9b8a69a2f7e1110739d65e2af5d64\nMerged-In: I5053193abfd9b8a69a2f7e1110739d65e2af5d64\n"
    },
    {
      "commit": "15f7cab18eb12870545734588b12d873d0fe5d84",
      "tree": "9757be2cd5320b6d669a94bea59e744e3a766525",
      "parents": [
        "13e4dad5f0eafbe1c46fcbde6da9b37fcd57e422"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 04 09:13:31 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 24 11:31:44 2017 -0700"
      },
      "message": "aaudio: fix EXCLUSIVE mode interfering with SHARED\n\nThe MMAP endpoints were not tracked by the EndpointManager\nso it could not broker EXCLUSIVE access. To fix this the MMAP stream\nwas refactored to use a per-client stream and a per-device endpoint.\n\nCleanup close() of MMAP stream.\nAdd AAudioServiceEndpointShared.cpp.\nExtract AAudioServiceEndpointMMAP from AAudioServiceStreamMMAP.\nTrack MMAP endpoints so we can manage EXCLUSIVE and SHARED access.\n\nBug: 64494572\nBug: 64310586\nTest: see bug, use write_sine to play a shared stream and a excl stream\nChange-Id: I5053193abfd9b8a69a2f7e1110739d65e2af5d64\n"
    },
    {
      "commit": "703ddd9df5c664a4bc2aac4c848fd89dc3b26f1f",
      "tree": "20abaa73b545d1b760ea9784dd88ade1f7faef91",
      "parents": [
        "42aaf4437223bf51f0730c7a8c40698b30c65b9b",
        "e6cef0ec624e12874966fd1cfa2c0642b5a89d0b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 17 16:01:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 17 16:01:52 2017 +0000"
      },
      "message": "Merge \"aaudio: prevent memory leak from double configure\" into oc-mr1-dev am: 8a37a466dc\nam: e6cef0ec62\n\nChange-Id: I60fbfb58f014f1addf3893b49d62d3a090276ace\n"
    }
  ],
  "next": "99306c80f061e4c11f05c21a19bfab6eac01c529"
}
