)]}'
{
  "log": [
    {
      "commit": "ef34be5426e96fa2fecc551e1fe196fbb862b220",
      "tree": "3335f4ce50a8307b0684a0c5a15fcf3b4ec84b52",
      "parents": [
        "b362012ad43022a0686cc2ca7fe2eb64d377a202"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 26 13:45:25 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Oct 04 16:56:14 2019 -0700"
      },
      "message": "aaudio: add histogram to clock model\n\nMeasure distribution of MMAP timestamp lateness.\nThis is used to discover the actual DSP timing behavior.\nTurn histogram log on or off using a property.\n\nTest: adb root\nTest: adb shell setprop aaudio.log_mask 1\nTest: run an AAudio MMAP program\nTest: adb logcat | grep ClockModel\nChange-Id: I910831d1feee43c59d1af2ac3135a910fef36fb2\n"
    },
    {
      "commit": "b362012ad43022a0686cc2ca7fe2eb64d377a202",
      "tree": "d9359117a82ba444644e4db01667273db710fdde",
      "parents": [
        "23d0190155401048bebd98a20a7467e7edd9344d",
        "b31b66f3e0fbf24e03acd2f18ccfd627a8565443"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 01 19:24:39 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 01 19:24:39 2019 +0000"
      },
      "message": "Merge \"aaudio: offset MMAP timestamps\""
    },
    {
      "commit": "b31b66f3e0fbf24e03acd2f18ccfd627a8565443",
      "tree": "00c121e1b683b6bf0ba56c0c8cf342958d529728",
      "parents": [
        "3b93ca583af5296df1b4d45e4d16b5fba82205d2"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Sep 30 09:33:41 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Oct 01 10:21:50 2019 -0700"
      },
      "message": "aaudio: offset MMAP timestamps\n\nThis can be used to debug and analyze problems\nwith the AAudio MMAP IsochronousClockModel.\nThat is a model of the DSP that is used by AAudio\nto predict the read/write timing of the DSP.\nIf there is an error in the model or in the timestamps\nthen the DSP and CPU pointers can cross, which causes\nan audio glitch.\nBy changing the offset we can force glitches and indirectly\nmeasure the time distribution of the DSP transfers.\n\nTest: adb shell setprop aaudio.out_mmap_offset_usec\nBug: 123096058\nChange-Id: I9a3df345a6820baf20a24d261642b3c8c0c2a27e\n"
    },
    {
      "commit": "e3cdab3c40cb71284a0e186d7d5a82257e7d34a1",
      "tree": "3d47cb676cf9bbe0e21c1c8bc12ba76b8682c9a7",
      "parents": [
        "b92d0b3e79b3ee2c5b407a09e8b043ddac46ea18",
        "34e2d2d9ad4f7911f6e93789bd83543a32bab36b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Sep 30 20:34:51 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 30 20:34:51 2019 +0000"
      },
      "message": "Merge \"aaudio: make fewer assumptions about MMAP timestamp\""
    },
    {
      "commit": "34e2d2d9ad4f7911f6e93789bd83543a32bab36b",
      "tree": "93e61bd9c655e5b35199f463100b6f986f112b17",
      "parents": [
        "3b93ca583af5296df1b4d45e4d16b5fba82205d2"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 26 12:46:10 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Sep 30 11:28:27 2019 -0700"
      },
      "message": "aaudio: make fewer assumptions about MMAP timestamp\n\nAllow any amount of lateness.\nThis will allow the ClockModel to work with a wider range\nof DSP behaviors. It should also handle timing jitter\ncaused by resampling in the DSP.\nUse a drift value to stabilize the early and late ends of\nthe clock model window.\n\nTest: run OboeTester Glitch Test\nBug: 123096058\nChange-Id: Ic6e03d7878b26c4bf1d05708cff0ca2a771a9f80\n"
    },
    {
      "commit": "a10bd516e59e0960121486a491ccfedac67cc4b3",
      "tree": "1de94bfe68a438ac280f8a766a375c2993ec4753",
      "parents": [
        "3b93ca583af5296df1b4d45e4d16b5fba82205d2"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 27 11:49:17 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 27 11:49:17 2019 -0700"
      },
      "message": "aaudio: fix detection of input overflows\n\nWas incorrectly looking at the buffer size instead of the buffer\ncapacity.\n\nTest: OboeTester ECHO INPUT to OUTPUT\nTest: set Input margin to 4\nTest: XRun# for input should stay at zero\nBug: 141700208\nChange-Id: I21ecdac19f5361a1b33f4dc2aaec170de9e28fc6\n"
    },
    {
      "commit": "35e524ea1324ffdaccd50e3caf661518e7fc0782",
      "tree": "41c16164485ad3564417d64cfb8d271888386ec2",
      "parents": [
        "3aac50996a4296a64e9269bd87cc2c930285ddd1",
        "89d816939fcf3a8769e56c8b9a4e61ac7b92fa68"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Jul 24 00:43:57 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 24 00:43:57 2019 -0700"
      },
      "message": "Merge \"Apply version-script to libaaudio library.\" am: 2255c50a92 am: 49742b2ab1 am: 57b5bd3f10 am: 16634a9f51\nam: 89d816939f\n\nChange-Id: I150646d20a7a2c8db3a708aac0c7d5abf845d619\n"
    },
    {
      "commit": "16634a9f51ba22f7d8099c3e8160eaffa9adff9d",
      "tree": "895a11f1efa6ab2b995b18dc829f3066485f2669",
      "parents": [
        "301f8ee66fbcb83fe5f72f90b04d4be17f05fd1c",
        "57b5bd3f10965d46b18741417da06c4f03cf2ba9"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Jul 23 23:46:27 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 23 23:46:27 2019 -0700"
      },
      "message": "Merge \"Apply version-script to libaaudio library.\" am: 2255c50a92 am: 49742b2ab1\nam: 57b5bd3f10\n\nChange-Id: I66e3edfcd3e2c54260dc6c8ef923387fdf485e69\n"
    },
    {
      "commit": "57b5bd3f10965d46b18741417da06c4f03cf2ba9",
      "tree": "8ce034aa0d1511cf7d1a53819d1988270b45b7af",
      "parents": [
        "09722ef6dd6ed2378475e9b4b92c7fc8107e2dbb",
        "49742b2ab11f9cc9866f274f7a1333eaff909c70"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Jul 23 23:41:57 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 23 23:41:57 2019 -0700"
      },
      "message": "Merge \"Apply version-script to libaaudio library.\" am: 2255c50a92\nam: 49742b2ab1\n\nChange-Id: I8c75fa1b4d19dd5315c10c0975a57a81a8f23ff5\n"
    },
    {
      "commit": "49742b2ab11f9cc9866f274f7a1333eaff909c70",
      "tree": "148e5f6fbbb7720c046a147fa213b0d051e67558",
      "parents": [
        "42e1130e8be8b2527a8d17b1748592ae004e85c0",
        "2255c50a920f106f91a099fec2ac6692b696a61d"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Jul 23 23:17:47 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 23 23:17:47 2019 -0700"
      },
      "message": "Merge \"Apply version-script to libaaudio library.\"\nam: 2255c50a92\n\nChange-Id: I1f8d59c8056d3ced187f75f8e603fe2517df64aa\n"
    },
    {
      "commit": "42e1130e8be8b2527a8d17b1748592ae004e85c0",
      "tree": "61380db6ef5d30460357c8af0b962bed4c5d071a",
      "parents": [
        "c3af5ba966b7aaddfd96bac149f04a4f43c49f9c",
        "0db4d66d132006ab72f41ad76c7358e5cbae0a32"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Jul 23 11:11:10 2019 +0200"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 23 10:48:45 2019 +0000"
      },
      "message": "resolve merge conflicts of 0db4d66d132006ab72f41ad76c7358e5cbae0a32 to stage-aosp-master\n\nTest: I did not test this\nMerged-In: If93118ed2c266faf2964abf21e17b0b13df493d2\nChange-Id: Iaba9829407bd2b625e91ac7a4c8bc8941fa7d569\n"
    },
    {
      "commit": "b5a33ac9b301763ef4f7c0bd233f2d514dd0a59d",
      "tree": "90455127b384719a40d0ae38bbbf13db90f448e9",
      "parents": [
        "ddac14243d96289f6b9743f8e1c77ea082ba70f9",
        "355090b61552436c366df69b021743a9876dd2d0"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Mon Jul 22 11:30:23 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 22 11:30:23 2019 -0700"
      },
      "message": "Merge \"Split libaaudio.so to internal and NDK part\" into qt-dev-plus-aosp\nam: 355090b615\n\nChange-Id: Ib8bd4d7d492162a6c1c2956f7b1616d53acb618b\n"
    },
    {
      "commit": "76ee1ffe600499099bdf6f10a2bb2a50deaad315",
      "tree": "71a2a093ab5a5b8d42d8468562446052c8d62a26",
      "parents": [
        "f5b0727d72a1c525f01bf10a31864382faa6f70a"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Jul 17 13:55:16 2019 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Jul 18 16:04:47 2019 +0200"
      },
      "message": "Split libaaudio.so to internal and NDK part\n\nThis change moves almost everything from libaadio.so to\nseparate libaaudio_internal.so library. This is done to\navoid exporting symbols which apps are not allowed to use\nbut have them available for platform libraries by exporting\nthem from libaaudio_internal.so\n\nBug: http://b/69603741\nTest: make\nMerged-In: If93118ed2c266faf2964abf21e17b0b13df493d2\nChange-Id: If93118ed2c266faf2964abf21e17b0b13df493d2\n"
    },
    {
      "commit": "8e8a96881165d8251aaa9a575a568062bd06430e",
      "tree": "fa98df9a0eb75cfe2a41a4bb00b637b2e4dcd304",
      "parents": [
        "d81a84a886e13c61a613b35e4a998ad8e61a0d8f"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Jun 04 15:14:02 2019 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Jul 18 15:25:35 2019 +0200"
      },
      "message": "Apply version-script to libaaudio library.\n\nIn previous attempt it was mistakenly applied to cc_library_header\ninstead of the actual library. Do it correctly this time.\nThe intention of this change is to hide unintentionally\nexported symbols from the library.\n\nBug: http://b/69603741\nTest: make\nChange-Id: I47967abea0b39aec05e80823c9eb3fe53f9fa591\n"
    },
    {
      "commit": "d81a84a886e13c61a613b35e4a998ad8e61a0d8f",
      "tree": "e1ca28f807ed6d384e3526de1f0f2049548f17b6",
      "parents": [
        "10b5ef5d180bc5b0a2116f112b87153b16c3de00"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Jul 17 13:55:16 2019 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Jul 18 15:25:14 2019 +0200"
      },
      "message": "Split libaaudio.so to internal and NDK part\n\nThis change moves almost everything from libaadio.so to\nseparate libaaudio_internal.so library. This is done to\navoid exporting symbols which apps are not allowed to use\nbut have them available for platform libraries by exporting\nthem from libaaudio_internal.so\n\nBug: http://b/69603741\nTest: make\nMerged-In: If93118ed2c266faf2964abf21e17b0b13df493d2\nChange-Id: If93118ed2c266faf2964abf21e17b0b13df493d2\n"
    },
    {
      "commit": "2d2f17cc1e15b7a4a21c94d6c6d125eabf740fc9",
      "tree": "c1023826407ccf2d1f88fa1e8d69ee8cae579136",
      "parents": [
        "ed84e713b3b84aa189459c2412e65a4be257bc89"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Jul 17 13:55:16 2019 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Jul 18 14:09:16 2019 +0200"
      },
      "message": "Split libaaudio.so to internal and NDK part\n\nThis change moves almost everything from libaadio.so to\nseparate libaaudio_internal.so library. This is done to\navoid exporting symbols which apps are not allowed to use\nbut have them available for platform libraries by exporting\nthem from libaaudio_internal.so\n\nBug: http://b/69603741\nTest: make\nChange-Id: If93118ed2c266faf2964abf21e17b0b13df493d2\n"
    },
    {
      "commit": "767fef712550d09f52bca9439d2db98335da54f5",
      "tree": "f85c138fa095285cc5051ffe412df78a94fb52d6",
      "parents": [
        "d033c19191965b680e072be00f18dc34920afef3",
        "50e7b07a85e0a81fc890ce66799e5dbd4fa27660"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Jul 12 10:42:03 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 12 10:42:03 2019 -0700"
      },
      "message": "Merge \"libaaudio: remove unused deps\" am: 10b5ef5d18 am: 24225f9ba0\nam: 50e7b07a85\n\nChange-Id: I7293d2d30276de35afac80d6b7d11216c9d5f942\n"
    },
    {
      "commit": "24225f9ba085f07aa9727bb3c7f373e873d51a8e",
      "tree": "9dfad2da3583c9c4facb96c708c3b423ad12763c",
      "parents": [
        "ffc1f570a2e8bc3ba591d75610bc15d3b2b244a9",
        "10b5ef5d180bc5b0a2116f112b87153b16c3de00"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Jul 12 10:24:03 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 12 10:24:03 2019 -0700"
      },
      "message": "Merge \"libaaudio: remove unused deps\"\nam: 10b5ef5d18\n\nChange-Id: Ia61bc23c2bea2e474637faa718ff7d40f7d23ed8\n"
    },
    {
      "commit": "0de8047d0d20b3cc2fb5b92a8c39247e2aa3cf5b",
      "tree": "59933bbd81d4e32f27c4446ca158700d3dd00cf2",
      "parents": [
        "61e027adbfdc0e3a1cdeadf353daee79646fa6a4"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Jul 11 16:06:55 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Jul 11 16:06:55 2019 -0700"
      },
      "message": "libaaudio: remove unused deps\n\nBug: 137311188\nTest: library still builds\nChange-Id: I81c8889893b2b9f8463f364109be2120ed9b8d04\n"
    },
    {
      "commit": "fceeee75b8a0cc4bdb22bc4c818ee8d42bf6db4f",
      "tree": "8b0b5dbd7a540402d17137cce39ae694c5d5dbe4",
      "parents": [
        "3439c875dd21991992afe033005e4f2ebed919bd"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 14 11:18:45 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 28 21:44:40 2019 +0000"
      },
      "message": "aaudio: account for hardware jitter in clock model\n\nThis will allow AAudio to track the DSP better when\nthe DSP has variable timing, such as when resampling.\n\nKeep track of the maximum lateness.\nDo not assume it is only one burst.\nAccount for the lateness on the input streams\nso we don\u0027t try to read the data before the DSP\nhas written it.\n\nBug: 123643363\nTest: record through iRig UA using Oboe Tester\nTest: see bug for details\nChange-Id: I49eb852c6d0324e8a26ee912da5108021ec113fe\n"
    },
    {
      "commit": "fe38abd0f042eec39a699811551f8351d9920c12",
      "tree": "1ebe6b98705e2c862cb381ddd0d119f0c621cc46",
      "parents": [
        "85b23e2654bc50f377b0803e095089c90a4de3a6",
        "7061679b69cd2b3fa2da058c725b14c2a3672d26"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 14 14:38:58 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jun 14 14:38:58 2019 -0700"
      },
      "message": "Merge \"aaudio: fix STOP hang  by unlocking around join()\" into qt-dev\nam: 7061679b69\n\nChange-Id: I16184388fda3a89fedb605fe4ce9fd3e00952fbf\n"
    },
    {
      "commit": "13d3d83b02506c73f921d825036b66f855d9647e",
      "tree": "5a1042879707caae6bf42de2c0810eaae24a7b72",
      "parents": [
        "e81a326d90dfce1249917b796f69b48fe1c59971"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jun 10 14:36:48 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jun 13 13:11:17 2019 -0700"
      },
      "message": "aaudio: fix STOP hang  by unlocking around join()\n\nUnlock and lock around the join() because the callback\nthread that we are joining may be blocked by the lock.\nCheck for DISCONNECTED state so the error callback is\nalso joined correctly.\nRemove unnecessary waitForStateChange that could cause\na timeout delay on DISCONNECT.\n\nBug: 134963902\nTest: test_stop_hang (see bug report)\nChange-Id: I5080fa655da35b3221234a2bcafb6ccd71d3ca27\n"
    },
    {
      "commit": "1815a762fc746458ff71627fc9272256d65e8a1c",
      "tree": "f0342fd2fb4738e31eda3e87141bfeb43e57a368",
      "parents": [
        "37af99969fedd47e22a4b93f57512cb5b81d86ee"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 24 08:52:27 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 30 15:57:20 2019 -0700"
      },
      "message": "aaudio: fix IsochronousClockModel drift calculation\n\nCorrect an error that caused the timing window to jump\nforward in time by one burst when a late timestamp was detected.\n\nBug: 133513175\nBug: 122680738\nBug: 123643363\nTest: aaudio_loopback -tm -s20\nChange-Id: I65c05d2ab123bcd347cb900de055c49c0c9beada\n"
    },
    {
      "commit": "34a740d5360edd1f0bfd6a13b4d75667f550a512",
      "tree": "6565a7a0c7bda1c3a1e1b5594a8249b4ed38879d",
      "parents": [
        "92e11689bbbdab1fed786436c624d6530d56c848",
        "16c66dd1e60d6b65b846f371c2ae4bf2b673545f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 06 17:07:54 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 06 17:07:54 2019 +0000"
      },
      "message": "Merge \"aaudio: fix multichannel legacy streams\" into qt-dev"
    },
    {
      "commit": "16c66dd1e60d6b65b846f371c2ae4bf2b673545f",
      "tree": "f93c6935379a10245958db1e490208a31894a1bc",
      "parents": [
        "2ddd17ca5c49fe02c459b7026d4c271bf76c4e3c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 01 17:54:10 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 03 15:44:44 2019 -0700"
      },
      "message": "aaudio: fix multichannel legacy streams\n\nTwo fixes for multichannel playback over USB from\nAAudio legacy streams:\n1: AAudio use a channel index mask and not a positional mask\nwhen channel count is greater than 2.\n2: audio policy gives priority to an output mixer which can support\nthe requested channel mask without downmixing\n\nBug: 131685020\nTest: play multichannel audio over USB\nChange-Id: I13f2da48d47fcf81f522096d90ba59a89379cffb\n"
    },
    {
      "commit": "ef7eaaf8d873e9d832673fd0a8e07371fa47a0a0",
      "tree": "16af72980d4c2e09fb45be30e44a52eb4575236a",
      "parents": [
        "2ddd17ca5c49fe02c459b7026d4c271bf76c4e3c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed May 01 11:26:35 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 02 12:51:47 2019 -0700"
      },
      "message": "aaudio: protect against null client\n\nAAudioService would fail if a null client was passed.\nTwo null checks were added. One where we know the null\nclient first appears. And one where the client is first used\nin case other calls are passing null.\n\nBug: 116230453\nTest: Bug has a POC apk that triggers the bug.\nTest: Look for messages like:\nTest:      AAudio  : BnAAudioService::onTransact() client is NULL!\nChange-Id: Id9c4fc154226ab40df97335da8bc9361cfc99a73\n"
    },
    {
      "commit": "3c4e6b503848623a0ff9bb1bee78e5b0d7c248ea",
      "tree": "f9e53f6f37f77695bbc4d4576854d2cf3bb55935",
      "parents": [
        "9730f4d7d27c49bfdfa69f3b7555b5a641a8499d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jan 22 15:53:36 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 23 17:16:29 2019 +0000"
      },
      "message": "aaudio: use actual DSP burst size in timing model\n\nThis will more accurately track the read or write\nposition of the DSP.\n\nThe client sometimes aggregates multiple hardware bursts\nto avoid waking up too often. This can make it look like the DSP has\nprocessed a larger amount of memory than it really has.\nWith this change, the timing model will advance in sync with the hardware.\n\nBug: 117834966\nBug: 130911274\nTest: see bug for repro steps\nChange-Id: Id22f1f313e02f0514665ee5ac144cab4684e3bc1\n"
    },
    {
      "commit": "29ccc29d482b6e4a2c46c2b8e731d44938888e32",
      "tree": "84034c7928d373aec61f9076d26065197a541693",
      "parents": [
        "2cb1a8ccbd402d74a06ee34721f5dd787ecb396f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 15 08:58:08 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 17 18:22:37 2019 +0000"
      },
      "message": "aaudio: reduce error logging, improve security\n\nReduce log spam and error logging as part of the Green Log effort.\nReplace logging of addresses with integer IDs.\n\nBug: 36785118\nBug: 122073229\nBug: 130569151\nTest: Open an AAudio stream at 44100 and look at logcat.\nTest:   adb shell write_sine_callback -pl -r44100\nTest:   adb logcat | grep -i aaudio | grep \" E \"\nTest: Should see no \"E\" logs from AAudio.\nTest: Should see no addresses from AAudio.\nChange-Id: I1d4e0bc349095f818fad52603d2bb8e7317d3681\nMerged-In: I1d4e0bc349095f818fad52603d2bb8e7317d3681\n(cherry picked from commit 7ba46558fbd28b555ba751837cc9094a7c785f75)\n"
    },
    {
      "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": "628286b620d10a2395252a5bab7067bee0f221f6",
      "tree": "668fd26f6f15f6ba6f4b813d7ca8879a5dd14525",
      "parents": [
        "fe610f0fa30cf58c448f718c05d53208431baf08",
        "a31eb276a30e07c6431da1e5ea093fd8f3e3bf55"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Mon Mar 11 09:13:27 2019 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Mon Mar 11 09:13:27 2019 -0700"
      },
      "message": "DO NOT MERGE - Merge PPRL.190305.001 into master\n\nBug: 127812889\nChange-Id: I96d8fdd0e8a40a783a2f4ee91a01dbad44a22956\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": "8cb1c83742196077a6c58019a08cf83ed9aaf0eb",
      "tree": "65d75a1c4ebcd6d7d9198111b7cb356e1529b3a6",
      "parents": [
        "dba05b7c7c2782c88056a3f53615a66a6945426e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 03 14:16:46 2018 -0800"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Wed Jan 16 18:55:54 2019 +0000"
      },
      "message": "RESTRICT AUTOMERGE: 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: 120789744\nTest: test_atomic_fifo.cpp\nChange-Id: I6fe57bcb44528d29b5edb817c592e5e9a8aaf8eb\n(cherry picked from commit f4f81427681d2a736fc9b783dd967bc0661cca73)\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": "cc22cfb153385266367133a1e96185af32796362",
      "tree": "d246b5261c941f261167142045b7d37587ea5477",
      "parents": [
        "a3354a219068001848efa811a6cdf96c08b318bc"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Jun 13 16:19:36 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 20 00:31:27 2018 +0000"
      },
      "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\nMerged-In: Ie17c4037c4b61caed07748a0ae79ec950da3c802\nChange-Id: Ie17c4037c4b61caed07748a0ae79ec950da3c802\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\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\""
    }
  ],
  "next": "fbf031e8f197c916ae9c399f42926494ebdeb497"
}
