)]}'
{
  "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": "3b5eb8b823e41f94b2907b091742248725dc240b",
      "tree": "7dcda48d342ffe1425321d6fe932e724d8e75602",
      "parents": [
        "1fc13af79fa716b8f4c04c409346214604c69b1c",
        "470213eb4edf666ba6b48e0c98cab978fe489f38"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 14 16:21:57 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jun 14 16:21:57 2019 -0700"
      },
      "message": "Merge \"aaudio test: trigger race condition and hang\" into qt-dev\nam: 470213eb4e\n\nChange-Id: Ieb73926a90a7d62f537db9288fb9282fac20bc5d\n"
    },
    {
      "commit": "470213eb4edf666ba6b48e0c98cab978fe489f38",
      "tree": "bc117f8256eb0a457829ba3bc44c8e6adb5e460b",
      "parents": [
        "63655808d78f8e6219fd0915671cca7d87363bbc",
        "42471cc7beb1703730e15401362b8bf02d1b0cfa"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 14 22:57:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 14 22:57:20 2019 +0000"
      },
      "message": "Merge \"aaudio test: trigger race condition and hang\" into qt-dev"
    },
    {
      "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": "42471cc7beb1703730e15401362b8bf02d1b0cfa",
      "tree": "efe02448c69110531e4ef7ae3fb2d551cef49d79",
      "parents": [
        "e81a326d90dfce1249917b796f69b48fe1c59971"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jun 10 14:39:01 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 14 11:35:40 2019 -0700"
      },
      "message": "aaudio test: trigger race condition and hang\n\nClose a stream at the same time the callback\nis trying to stop the stream.  This replicates\na hang that was detected in SynthMark.\n\nBug: 134963902\nTest: this is a test\nChange-Id: I7c87ecfefa2498fd1f4f9a1e406118c42a78545b\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": "1dd3c386666471372f861423f17aaf398b329830",
      "tree": "1ab7c54919119c5e6f5ed86ec87d51de8db7e99a",
      "parents": [
        "f1273c07a7b718504c1d0bbff5bcea4ef0379c38",
        "6309d88219a68fa0195a5138b738241f237e2d6b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 03 18:35:34 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 18:35:34 2019 +0000"
      },
      "message": "Merge \"AAudio Fix some documentation @link issues\""
    },
    {
      "commit": "66abdd2ff0de06c87a54e059c37147f4c6f486f8",
      "tree": "97e5714e1482dc44fc3f69ecdabf792bdf695a5a",
      "parents": [
        "8ee2c52fc8e82324f94decf4f969ddaeb5fe6f31",
        "b6cc72b87f3701f1da12ec6b9d1fece592ad5734"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 03 17:02:27 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 17:02:27 2019 +0000"
      },
      "message": "Merge \"Add aaudio APC opt-out to libaaudio.map.txt\""
    },
    {
      "commit": "6309d88219a68fa0195a5138b738241f237e2d6b",
      "tree": "f64cd1ae7122bdadd1dfbaea8d17bd6a7abe9484",
      "parents": [
        "b02be352c78d9db1c876a114199a9d4259c194e2"
      ],
      "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": "Wed Apr 03 01:26:49 2019 +0000"
      },
      "message": "AAudio Fix some documentation @link issues\n\nTest: None\nChange-Id: I70cf5752e3b7115bc2ba751bd7d4c789d4e953f7\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "82e8615faf73b8744b84534c0b864789a717251f",
      "tree": "f36bd0e27aa61ad6d3ac08c7d33d1a41e11fa54d",
      "parents": [
        "42bc932ed13a2f6ea10ee643c37512136abd15d6",
        "a7138f1d2204d69c223925f39d6ab9d3c11d9632"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 02 23:26:50 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 02 23:26:50 2019 +0000"
      },
      "message": "Merge \"audio tests: test for up message queue getting full\""
    },
    {
      "commit": "a7138f1d2204d69c223925f39d6ab9d3c11d9632",
      "tree": "64c716b6793645e01edf4430a2643337b6d3631a",
      "parents": [
        "f878a8dc99922d0af080bb7d5f61b00e62d00e65"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 29 17:21:25 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 02 14:12:30 2019 -0700"
      },
      "message": "audio tests: test for up message queue getting full\n\nThis can cause a stream to get suspended if not processed.\n\nBug: 129140370\nTest: this is a test\nTest: test_full_queue\nChange-Id: Ib8961ad708cb258c08a956c6ced813f23c437fc4\n"
    },
    {
      "commit": "9c63fbe4e0ccbc32086fe96d14877293763f3846",
      "tree": "901c81a2c6350a209ddb6715c160d6bf7fd58c33",
      "parents": [
        "ea58eede918025b277dadd69192590c4ad0a6b74",
        "11966872eedd949041dfe0a905794654a3df49cf"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 01 20:11:13 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 01 20:11:13 2019 +0000"
      },
      "message": "Merge \"Remove subdirs from Android.bp\""
    },
    {
      "commit": "53c7ddc86cfb214791f2efc85f2e6ea0a35b9b95",
      "tree": "f98f2c287464eaf18e3b88be8f7b8c17734314a3",
      "parents": [
        "662f25f1aa97cb6c97c37e192859361650bf1fa4",
        "bad0f578565f8fa360b8eb72b1d497afae89e2b0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 29 22:00:30 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 29 22:00:30 2019 +0000"
      },
      "message": "Merge \"aaudio examples: allow -n0 for minimum buffer size\""
    },
    {
      "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": "bad0f578565f8fa360b8eb72b1d497afae89e2b0",
      "tree": "ad04d0ee9f0b89d3d9dda9c5fc0fd94f54aab8be",
      "parents": [
        "41852688c913af0961a72bc5e2c2155404ae2038"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 29 11:03:13 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 29 12:45:59 2019 -0700"
      },
      "message": "aaudio examples: allow -n0 for minimum buffer size\n\nDefault buffer size will be 2.\n\nBug: 129545119\nTest: should see requested BufferSize \u003d 0\nTest: adb shell write_sine_callback -pl -n0\nChange-Id: I85d2792537aebec17d96dc7df6f79e34b9f8fddd\n"
    },
    {
      "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": "11966872eedd949041dfe0a905794654a3df49cf",
      "tree": "7ad77e435903461790f78282853777f389b7bfd0",
      "parents": [
        "71028253b21dfee4e3908916c4182cd0ea140f11"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Fri Feb 22 17:54:19 2019 -0800"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Thu Mar 28 23:54:38 2019 -0700"
      },
      "message": "Remove subdirs from Android.bp\n\nsubdirs is meaningless now.\n\nTest: Builds\n\nBug: 129513796\n\nChange-Id: I60130e38b5924b73c5520d884868dd580f5345bf\n"
    },
    {
      "commit": "fb7e846fa2b56548f8946fd1ffb71708f9fd0110",
      "tree": "e01ac02506b6719ec81fc556a36993eb6bfcb6d1",
      "parents": [
        "d0e36ea48dcda1c5d5fa30753cba171360487da5"
      ],
      "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": "Thu Mar 28 20:10:13 2019 +0000"
      },
      "message": "AAudio Fix some documentation @link issues\n\nTest: None\nChange-Id: I21421db8c4be0421fc5ce5f492a85ba84c8a3b3b\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "b6cc72b87f3701f1da12ec6b9d1fece592ad5734",
      "tree": "04ad482fd5ae2eaee83aaa2e9714f0fb24d9bfcb",
      "parents": [
        "b99cc75f01c8e4d76295f3efcd768ebd9d8942c3"
      ],
      "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 to libaaudio.map.txt\n\nThe opt-out was not published in the map.txt\n\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Ie4dec4abd9c569e2459dd02f9f372e30dd42267f\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\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": "0a63ec2909f10b72ea7a177373a8a5e3a1d03ab6",
      "tree": "09bf7bba0afadcb6dfebf3f716abf154bc4a8428",
      "parents": [
        "a3550b6ca700f891c7c427eecf6129200e5114ce"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 07 11:21:06 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 07 11:23:30 2019 -0800"
      },
      "message": "aaudio_loopback: Allow specifying input device id\n\nThis is useful when there are multiple audio devices in the system.\n\nTest: use aaudio_loopback on a TV device with USB soundcard connected\n      specify -d\u003cHDMI out device id\u003e -D\u003cUSB in device id\u003e\n\nChange-Id: I60e84132f5974db6f4314c58f76705018e22b7db\n"
    },
    {
      "commit": "aea65a0f1ede2446f05ce186f04a419e36f4e311",
      "tree": "9140d6d186282057f805cd71bd46824cae2ec43a",
      "parents": [
        "d6454722c21495fb5effae4176cc689ec8900f9a",
        "f1533004baafc2eacfe6caea0ebc6e462b74abaa"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 08 01:36:26 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 08 01:36:26 2019 +0000"
      },
      "message": "Merge \"aaudio: fix hang option in write_sine_callback\""
    },
    {
      "commit": "f1533004baafc2eacfe6caea0ebc6e462b74abaa",
      "tree": "6dccffebf28f33ca23eff522c61d0dc68c16577c",
      "parents": [
        "ffb2516cc730b5ac621ad8a92e827faf4e86b8ca"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 07 13:04:28 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 07 15:56:21 2019 -0800"
      },
      "message": "aaudio: fix hang option in write_sine_callback\n\nWas colliding with -z option for capacity.\nAlso print data size in output buffer.\n\nTest: adb shell write_sine_callback -pl -n2 -h8 -s10\nChange-Id: If64f0876d3a2e1a95426dddf122693dbf3a314cd\n"
    },
    {
      "commit": "05e6b175c806aa4c8a3a99a46f7b0431458a0aa7",
      "tree": "30c645cb8fc6926340182b884dabf6114c0a47db",
      "parents": [
        "ffb2516cc730b5ac621ad8a92e827faf4e86b8ca"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 07 14:46:26 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 07 14:46:26 2019 -0800"
      },
      "message": "aaudio_loopback: fix -n for sine test\n\nAllow -n to specify buffer size for -tm test.\nIt was being forced to the size of the input buffer.\n\nTest: aaudio_loopback -tm -s20 -n2\nChange-Id: I4b71238f17bb87c22602bf86e2b91cfa41e3ae55\n"
    },
    {
      "commit": "a98c1aa621d62635330fef9cc7cce886cecf01c1",
      "tree": "86df1241ed5103915c16708601d9dbb13e79fae9",
      "parents": [
        "fd1ea436c6487e32781a84fe542e0899626d6830"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 31 15:26:03 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Feb 06 17:16:36 2019 -0800"
      },
      "message": "aaudio_loopback: glitch locations, hang callback\n\nVarious improvements including:\nShow frame number of first 32 glitches.\nShow graph at first glitch.\nHang in the callback using -h{msec} option.\n\nTest: Run glitch test for 20 seconds, hang for 40 msec\nTest: adb shell aaudio_loopback -tm -s20 -h40\nChange-Id: I8e0f7bfd89efe907c38093e65e7775f48adf88f7\n"
    },
    {
      "commit": "fd1ea436c6487e32781a84fe542e0899626d6830",
      "tree": "9c91b05d2093669204bc8fe19f153b6717549dcd",
      "parents": [
        "b241bbe175635f779c47b4a9ae78db93a72e745e",
        "377c1c2d47299c63fe837ec7df02993461c7d639"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 01 19:44:23 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 19:44:23 2019 +0000"
      },
      "message": "Merge \"aaudio: cleanup code that reads timing model\""
    },
    {
      "commit": "377c1c2d47299c63fe837ec7df02993461c7d639",
      "tree": "7d2989d1b9daa9fbfba5b1b7dfe4228be6956ac0",
      "parents": [
        "def408939dec9f3a4ff21d84c44b6fcad1797396"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 12 16:06:54 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 01 00:46:25 2019 +0000"
      },
      "message": "aaudio: cleanup code that reads timing model\n\nOnly use the clock model for the position when\nit is running and when the service is not updating\nthe FIFO counter.\n\nBug: 120932593\nBug: 122374244\nTest: test_return_stop\nTest: test_return_stop -i\nChange-Id: I6d6a23b35dca5529b6221e1b3b4a4e6672093bf2\n"
    },
    {
      "commit": "18c8476f1f86c81e55812ce0d34a977d435b6c5d",
      "tree": "43289662d9b97d0dc23af18cc360c5726465c4b6",
      "parents": [
        "bd63c6ffe67b3555262e85f23a4f26b4ff057404"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Dec 18 12:15:35 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 01 00:40:08 2019 +0000"
      },
      "message": "aaudio: fix framesWritten for Legacy INPUT\n\nWas set to 2X framesRead on stop.\nIt turns out that AudioRecord::stop() does NOT reset getPosition()\nto zero. But AudioRecord::start() does.\nSo the logic handling the reset had to move to the start code.\n\nBug: 121196899\nTest: test_return_stop -i -n\nChange-Id: I93635f9ba501b71b99b1df34c7920f7bfea5ca88\n"
    },
    {
      "commit": "bd63c6ffe67b3555262e85f23a4f26b4ff057404",
      "tree": "d20e8a7fbb1fc5dc4a068fc3604d8b5a1ebd9e84",
      "parents": [
        "def408939dec9f3a4ff21d84c44b6fcad1797396"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Dec 18 12:13:34 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 01 00:39:53 2019 +0000"
      },
      "message": "aaudio test_return_stop prints frames in buffer\n\nError if more than capacity of the buffer.\n\nBug: 121196899\nTest: this is a test\nChange-Id: I805905ffd1718f3e4fec2212e674f449bd55c4a8\n"
    },
    {
      "commit": "def408939dec9f3a4ff21d84c44b6fcad1797396",
      "tree": "9d8f8c28abff7e5bb39ba07ff379eeac6f5a37e3",
      "parents": [
        "dddc39e44c6bc1c8658e5f3fd6c087abad017fdd",
        "c0682e25540ce22c2428151086ed816c2df13db4"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Feb 01 00:35:18 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 00:35:18 2019 +0000"
      },
      "message": "Merge \"aaudio test: test drift in clock model\""
    },
    {
      "commit": "c0682e25540ce22c2428151086ed816c2df13db4",
      "tree": "daf637d3b97d9e8ec8183a7b9d7a43d908fe3e85",
      "parents": [
        "a53ffa67b35a7e57efec57811e4f915d1caac1eb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jan 22 15:52:02 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 31 14:09:13 2019 -0800"
      },
      "message": "aaudio test: test drift in clock model\n\nSimulate a sample rate clock that is slightly off from the expected\nrate. The clock model should adjust to the drift and stay locked.\n\nTest: this is a test\nChange-Id: I402d8a90c920ff9eca611ee56071441826fc9876\n"
    },
    {
      "commit": "a4e1b67d25c676acbc250ec800fdf295a664b1bc",
      "tree": "41ab4e20ad2e271ef13436f108a6342382bf71f8",
      "parents": [
        "3600359f822730ac50cacdb91fb71595df9fb93a",
        "b2c9f01aa85f6509cfa430d081f7792b5d8449ff"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 23 00:54:17 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 23 00:54:17 2019 +0000"
      },
      "message": "Merge \"aaudio: loopback test should ignore some read errs\""
    },
    {
      "commit": "a53ffa67b35a7e57efec57811e4f915d1caac1eb",
      "tree": "bb234b23e9f5a749e490a84d9fe161195af8ece7",
      "parents": [
        "9f81192d77a62564dc1e2c7dad1afe601784a7b9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Oct 10 16:21:37 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jan 19 15:43:55 2019 +0000"
      },
      "message": "aaudio: rename timestamp variables\n\nThere were several different timestamp variables with slightly\ndifferent meaning but with the same name.\nThat made it hard to debug the code.\n\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Iebf438676925c698377abe02c81f3d559829318a\n"
    },
    {
      "commit": "c8b2701a2f899bdd0fc01b2bcb38e372c855e523",
      "tree": "5584b7f208b9b0b97667979aea506e0ad62fe705",
      "parents": [
        "2048effc48a71e746c5f08bd3bc61a182605bc5f",
        "1e83beeadb4db01091f2ba62eda445304e699e3e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 19 04:40:34 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 19 04:40:34 2019 +0000"
      },
      "message": "Merge \"aaudio: call stop() from the callback\""
    },
    {
      "commit": "26ddd4c6c3c013a3c79618e09a3a356d3ee614c2",
      "tree": "e1dd49b5414630ac9d33f0153b31530546c51ec6",
      "parents": [
        "d8ef100ee9b4c8d51ce1bc433fa697e28ccfca9a",
        "3788f65b8730791b07c983772e3dfcdf7e17da8e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 17 22:36:03 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 17 22:36:03 2019 +0000"
      },
      "message": "Merge \"aaudio: only return a timestamp when STARTED\""
    },
    {
      "commit": "d8ef100ee9b4c8d51ce1bc433fa697e28ccfca9a",
      "tree": "a179c9934eaf48dbe8717870095e8958f45b7d61",
      "parents": [
        "0f5092139154e1822a471cbdbc0ada6f5930cf52",
        "19785de5ed298b2c28f398d9c27c02e173aa1f52"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 17 22:35:39 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 17 22:35:39 2019 +0000"
      },
      "message": "Merge \"aaudio test: improve test_timestamps.cpp\""
    },
    {
      "commit": "3788f65b8730791b07c983772e3dfcdf7e17da8e",
      "tree": "7ce70b68a5728b80f5ad204178ec9153e8fd6c21",
      "parents": [
        "19785de5ed298b2c28f398d9c27c02e173aa1f52"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 16 16:57:22 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 17 12:55:01 2019 -0800"
      },
      "message": "aaudio: only return a timestamp when STARTED\n\nOtherwise return INVALID_STATE\n\nBug: 122043542\nTest: adb shell test_timestamps\nChange-Id: Ie9f3c96dc051aade25ee2641799fbc024196d1e4\n"
    },
    {
      "commit": "19785de5ed298b2c28f398d9c27c02e173aa1f52",
      "tree": "9b35a9e64aa8b6eec093ebca0d391fdd176e4ef9",
      "parents": [
        "f25675d38948d6e6eefc45f893f659467eab6471"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 03 15:53:49 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jan 17 12:55:01 2019 -0800"
      },
      "message": "aaudio test: improve test_timestamps.cpp\n\nTest for timestamps returned when STOPPED.\nTest for no valid timestamps.\n\nBug: 122043542\nTest: adb shell test_timestamps\nChange-Id: I3f9ea636c7a469ffd6aa721776127dfeac94bc1e\n"
    },
    {
      "commit": "b2c9f01aa85f6509cfa430d081f7792b5d8449ff",
      "tree": "7d04089f576f6136c2295919454c538fd781712c",
      "parents": [
        "f25675d38948d6e6eefc45f893f659467eab6471"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 26 16:00:36 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 16 15:27:12 2019 -0800"
      },
      "message": "aaudio: loopback test should ignore some read errs\n\nIf the input stream is not yet running then it will return\nINVALID_STATE.\n\nTest: aaudio_loopback -tm\nChange-Id: I752675bf7dd7325beee16f3de24183042632f807\n"
    },
    {
      "commit": "1e83beeadb4db01091f2ba62eda445304e699e3e",
      "tree": "7fe364b5ccf5c9dc91c57429db40eaeda698631c",
      "parents": [
        "f25675d38948d6e6eefc45f893f659467eab6471"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 17 14:15:20 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 16 14:45:19 2019 -0800"
      },
      "message": "aaudio: call stop() from the callback\n\nStop the stream when the callback returns AAUDIO_CALLBACK_RESULT_STOP.\n\nRefactor start/pause/stop code to allow different paths for\nstop from the app or from the callback.\nFix error handling in joinThread().\nSimplify code path through PlayerBase.\n\nBug: 120932593\nBug: 121158739\nTest: test_return_stop\nTest: test_return_stop -i\nTest: test_return_stop    -n\nTest: test_return_stop -i -n\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I85134211348b26077693d9a71bf1331dad60da38\n"
    },
    {
      "commit": "7436115ffe6a5387d8fc11780a4f6ce104c7fb1b",
      "tree": "57462d493e0241141f2f051afbf4890bd3f3b4d1",
      "parents": [
        "8cb1c83742196077a6c58019a08cf83ed9aaf0eb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 03 10:10:21 2018 -0800"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Wed Jan 16 18:55:57 2019 +0000"
      },
      "message": "RESTRICT AUTOMERGE: aaudio: improve test_atomic_fifo\n\nCheck for the effects of setting a bogus counter.\nCheck for writes to memory surrounding the FIFO.\nCheck for negative array indices.\n\nBug: 120789744\nTest: this is a test\nChange-Id: Ia30cdef7f9d60f0a98b9af964cb3b3159df37dc9\n(cherry picked from commit fcdc02782c939aac336da48f8859ba1dccae3806)\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": "384a196f7cfbe4e1a481be0b281e1b7ae1bef42a",
      "tree": "71dfe251fd9473097bc9f5a49124dfdbbff912da",
      "parents": [
        "c1b140c7139be5f3125e503354b871925ca6d652"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 17 14:14:27 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 17 14:22:56 2018 -0800"
      },
      "message": "aaudio: remove redundant message from test-return_stop.cpp\n\nIt was unnecessary and was missing a newline.\n\nTest: this is a test\nChange-Id: I6463579c759b620ac3d34dceacee8e4e9c806808\n"
    },
    {
      "commit": "762365c3ee5f212d4995e002e1c53b221b587c92",
      "tree": "ec2322a17d6bb3c9c741f0b6915239c70fa161a0",
      "parents": [
        "d00c4607a5f7d25dfe925a20a1fc5fd7cfcee67a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 10 16:02:16 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Dec 13 17:39:26 2018 -0800"
      },
      "message": "aaudio: suspend a stream when its queue is full\n\nThis will prevent log spam when AAUDIO_CALLBACK_RESULT_STOP\nis returned from an audio callback.\n\nBug: 120845500\nTest: test_return_stop.cpp\nChange-Id: Icfe1541d6fa7b045285ac3dfbb75dfed5424d49b\n"
    },
    {
      "commit": "61cf6c171c70c771c8de83549d99a979d37b5e4e",
      "tree": "0d3b77af4b067e5cb22fabb9e813a86de2dfd122",
      "parents": [
        "ef4b27d1d1123b452316f722a0eacc282d3fa94a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 10 14:00:29 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Dec 14 00:51:39 2018 +0000"
      },
      "message": "audio: add test_return_stop.cpp\n\nTest returning a STOP code from the callback.\n\nBug: 120845500\nTest: this is a test\nChange-Id: I88aa46b356443ab055c194cb430d93618980894d\n"
    },
    {
      "commit": "7f7dc87778f5874bc510e75fde6925f3ca07dd53",
      "tree": "e70047942315687eb70404b0e41e1fc55e0d055d",
      "parents": [
        "c0f1949f01104713d5ec2ae393ec4baea1268211",
        "a3901e95412eacedb5682eb4cda9d63d3ef9f734"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 06 22:14:38 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 22:14:38 2018 +0000"
      },
      "message": "Merge \"aaudio: reduce log spam\""
    },
    {
      "commit": "4d58d4d8c750c01b9435b95ffdb5552c663aae76",
      "tree": "bfe0223fa221a351fe1461c5d5ab51d08fc91b8b",
      "parents": [
        "989a1cc0ca9f96f69565e477872b29cb452a330a",
        "58f7ff570d4e06189fe9c1fa4bc2988ebb7473a0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 06 04:21:20 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 06 04:21:20 2018 +0000"
      },
      "message": "Merge \"aaudio: Fix converting negative FIFO counters to index\""
    },
    {
      "commit": "58f7ff570d4e06189fe9c1fa4bc2988ebb7473a0",
      "tree": "52a713b72888d1da9fa5f498724828fb24198b5e",
      "parents": [
        "79222e7a39a73f5c635958a62f6f0ccde250e04c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 03 14:16:46 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 05 23:10:30 2018 +0000"
      },
      "message": "aaudio: Fix converting negative FIFO counters to index\n\nThe index into the FIFO is calculated by using:\n\n    counter % capacity\n\nBut the counter is signed and when it is negative the\nmodulo can have a negative result. That can cause\na negative array index and an access out of bounds.\n\nThis is not normally a problem because the counter\nis 64 bits and it will not overflow until the audio\nhas run for a few million years. But a hacker might\nbe able to modify this internal counter and force\nan error.\n\nThe solution involves casting to a uint64_t before doing\nthe modulo.\n\nNote that there may still be a discontinuity when the\ncounter wraps from -1 to 0. But that will not result\nin an out-of-bounds access. It may cause a noise but\nan app could simply create a noise directly. So that is\nnot considered an exploit.\n\nBug: 120147915\nTest: test_atomic_fifo.cpp\nChange-Id: I6fe57bcb44528d29b5edb817c592e5e9a8aaf8eb\n"
    },
    {
      "commit": "e6faa59bd4806a2200f59304ecba080569d0dc0d",
      "tree": "4b048142b18403b52bfcb36e42d7b51ffe2b241b",
      "parents": [
        "b079c02b1fa4f1b5c5b6334b93af584797b4454f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 03 10:10:21 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 05 09:18:10 2018 -0800"
      },
      "message": "aaudio: improve test_atomic_fifo\n\nCheck for the effects of setting a bogus counter.\nCheck for writes to memory surrounding the FIFO.\nCheck for negative array indices.\n\nBug: 120147915\nTest: this is a test\nChange-Id: Ia30cdef7f9d60f0a98b9af964cb3b3159df37dc9\n"
    },
    {
      "commit": "a3901e95412eacedb5682eb4cda9d63d3ef9f734",
      "tree": "cbd706244c858d132efa8dd103be42b855ce4452",
      "parents": [
        "1268b28c5c65691532d3ffb503a199c677c801b9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Oct 08 13:54:38 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 03 15:46:11 2018 -0800"
      },
      "message": "aaudio: reduce log spam\n\nRemove logging that is redundant or no longer needed.\n\nTest: write_sine_callback -pl\nTest: write_sine_callback -pl -r44100\nChange-Id: I9004d32509757847764b9533c5cda743c6bd81a0\n"
    },
    {
      "commit": "73c0d52c98386a53985358b4ec9205e284276010",
      "tree": "b0cc94805e479a6003c64fd06277d32f3d2e088e",
      "parents": [
        "60b79bb0d7d5d6d4ee70f2c86f437760d5d41bf6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 05 11:40:36 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Nov 21 23:15:38 2018 +0000"
      },
      "message": "aaudio_loopback: rectify and low pass filter\n\nHelp the autocorrelator recognize the peaks easier.\nReduce false detection of suboctaves.\n\nBetter timing for devices with high latency.\nImprove error reporting.\nSet input capacity based on output burst.\n\nBug: 119032743\nTest: see repro case in bug\nTest: aaudio_loopback -te -pl\nMerged-In: I921c81db882f46ede8988cbdbebda0765e775086\nChange-Id: I921c81db882f46ede8988cbdbebda0765e775086\n"
    },
    {
      "commit": "60b79bb0d7d5d6d4ee70f2c86f437760d5d41bf6",
      "tree": "8786db7867b6005ff302f47df9a6c34a7d574a7f",
      "parents": [
        "4dbee07e1881660d7c6b36a64766fe247416a423"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 06 13:09:53 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Nov 21 23:15:28 2018 +0000"
      },
      "message": "aaudio examples: make tests portable to O\n\nWorkaround for a recent change in the build that made command line apps\nincompatible with O.\n\nTest:  adb shell aaudio_loopback -?\nTest:  should print help and not crash\nChange-Id: If2a2288249a33c16fa5004b6b7db1a5ff9e22745\nMerged-In: If2a2288249a33c16fa5004b6b7db1a5ff9e22745\n"
    },
    {
      "commit": "4dbee07e1881660d7c6b36a64766fe247416a423",
      "tree": "7b6b429d3ff0b0f5531a39b32faf7eb4a0137376",
      "parents": [
        "08345adddbe1ab403717376ab5a9db0576890112"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 11 12:28:54 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Nov 21 23:15:15 2018 +0000"
      },
      "message": "aaudio test: fix looping multiple times using -l\n\nWait for stream to pause before flushing.\nRemove scary -110 result message.\n\nBug: 68271891\nTest: adb shell write_sine_callback -pl -m2 -n2 -s2 -c2 -l100\nChange-Id: Ide7e7642cbe0b9d43023106a526e8f1e205aab77\nMerged-In: Ide7e7642cbe0b9d43023106a526e8f1e205aab77\n"
    },
    {
      "commit": "08345adddbe1ab403717376ab5a9db0576890112",
      "tree": "1f8fee01643563496bc0a40161461d1d9994711a",
      "parents": [
        "d19e9fde7611b124aef9af4b3d0cfd15f377576f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 18 09:29:14 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Nov 21 23:15:05 2018 +0000"
      },
      "message": "aaudio_loopback: improve tolerance to noise\n\nMake silence detector less sensitive to noise by setting the\nthreshold proportional to the measured pulse level.\n\nMake glitch detector less sensitive to noise by setting the\nthreshold proportional to the measured noise level.\n\nReport signal to noise ratio.\n\nImproved printed messages, show state as text.\n\nBug: 117834966\nTest: aaudio_loopback -pl -tm\nChange-Id: I5593cd1ade93ecbcb05f42af07626013d036f29a\nMerged-In: I5593cd1ade93ecbcb05f42af07626013d036f29a\n"
    },
    {
      "commit": "d19e9fde7611b124aef9af4b3d0cfd15f377576f",
      "tree": "a6f5ed72571075f105ad2d66d25b7e7841cb28f4",
      "parents": [
        "08974d0cae7a84c117219cb71cfa9a775ae83029"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 26 12:09:00 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Nov 21 23:14:55 2018 +0000"
      },
      "message": "aaudio: add callback size options to examples\n\nThis can be used to reproduce the wrap around bug\nin the MMAP FIFO in OC_MR1.\n\nBug: 78139448\nTest: aaudio_loopback -tm -pl -Pl -z120\nChange-Id: I923e60432f1c9777355d12d76609f2d70393f61b\nMerged-In: I923e60432f1c9777355d12d76609f2d70393f61b\n"
    },
    {
      "commit": "08974d0cae7a84c117219cb71cfa9a775ae83029",
      "tree": "0a94cc3f9d9986389b28889f4ddf18bd9c0f06f8",
      "parents": [
        "a1270b044b4cc3447cb5b47af55a21638599475c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 03 12:00:50 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Nov 21 23:14:04 2018 +0000"
      },
      "message": "aaudio_loopback: do not set buffer capacity by default\n\nThat was causing us to not get a FAST track.\n\nBug: 112186931\nTest: adb shell aaudio_loopback -te -pl -Pl -m1 -n2\nTest: should get PerformanceMode 12 on INPUT\nChange-Id: Ib8b00585a80bdd86f752a5ee37aacd92f06db347\nMerged-In: Ib8b00585a80bdd86f752a5ee37aacd92f06db347\n"
    },
    {
      "commit": "07b09a7969011c067f582e7056f222d55c0069f0",
      "tree": "f8dd08c09f079b5b60d3918dfd66bfb8255bb539",
      "parents": [
        "3c5f38911073e9db8a2ecfc7c55d42b45d31c8c2",
        "cc22cfb153385266367133a1e96185af32796362"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 20 02:52:16 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 20 02:52:16 2018 +0000"
      },
      "message": "Merge \"AAudio should not use legacy path if not allowed\""
    },
    {
      "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": "830b9aa910281f8a2a4b43d8e857492bfb9c477d",
      "tree": "5c0b58bcd2e070e07b6652544152776bb124d093",
      "parents": [
        "d1f7ce14c1b97facb2e4fd4bc78677f70092953f",
        "644bdbcbcf6578825d50244e402a487d01112c5c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Nov 17 01:35:23 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Nov 17 01:35:23 2018 -0800"
      },
      "message": "Merge \"Apply version-script to libaaudio library.\" am: e18577838e am: aa68675e88\nam: 644bdbcbcf\n\nChange-Id: I43678ab4c57b2ff56121780115022078ddb5d574\n"
    },
    {
      "commit": "e0a4d2ad61d08734555e79583503d4c5aa48e821",
      "tree": "de6c06517eef6a76706dffd76fd60106bd6bcfe0",
      "parents": [
        "158ce41988f3706465514265eed1d7e4b6fb123c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 05 11:40:36 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Nov 15 13:03:22 2018 -0800"
      },
      "message": "aaudio_loopback: rectify and low pass filter\n\nHelp the autocorrelator recognize the peaks easier.\nReduce false detection of suboctaves.\n\nBetter timing for devices with high latency.\nImprove error reporting.\nSet input capacity based on output burst.\n\nBug: 119032743\nTest: see repro case in bug\nTest: aaudio_loopback -te -pl\nChange-Id: I921c81db882f46ede8988cbdbebda0765e775086\n"
    },
    {
      "commit": "e3241d23fbbcd7b83c444a3dfd57d7a4655ce306",
      "tree": "79dcf5bbf4402e703bb802a6a13c2c907f23ee25",
      "parents": [
        "a864ea5f2d034069a3ede5fef9180e702666ee37"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Nov 15 16:28:32 2018 +0100"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Nov 15 16:28:32 2018 +0100"
      },
      "message": "Apply version-script to libaaudio library.\n\nHides unintentionally exported symbols from the library\n\nBug: http://b/69603741\nTest: make\nChange-Id: Ia43ba5b519dc65691d4c010329dee12a3f89ac93\n"
    },
    {
      "commit": "92e1e814316dc7b724e43edb9e58b5007e602d6f",
      "tree": "e86e865eba07cfcb39f5ba49ac1fdb02eff26019",
      "parents": [
        "9b9ac44fbe27e0f4d2096cbe37497ff70343ed44"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 06 13:09:53 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 06 13:11:58 2018 -0800"
      },
      "message": "aaudio examples: make tests portable to O\n\nWorkaround for a recent change in the build that made command line apps\nincompatible with O.\n\nTest:  adb shell aaudio_loopback -?\nTest:  should print help and not crash\nChange-Id: If2a2288249a33c16fa5004b6b7db1a5ff9e22745\n"
    },
    {
      "commit": "9b9ac44fbe27e0f4d2096cbe37497ff70343ed44",
      "tree": "36de81fbf48a0b61371eaad470d5825558050604",
      "parents": [
        "45ebf85754dd92e7cb5aa7857b4ce9617619a8e7",
        "317bac9689aa2e100e476b6fa86d4b48881b6669"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 06 00:03:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 06 00:03:31 2018 +0000"
      },
      "message": "Merge \"AAudio: Fix setChannelCount and setSamplesPerFrame\""
    },
    {
      "commit": "45ebf85754dd92e7cb5aa7857b4ce9617619a8e7",
      "tree": "2e06e0170c64a0a9f519674d4af0d8c3624ce6ee",
      "parents": [
        "19ae31192ea7ec56acbdafc398a6b3491e6c642c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 11 12:28:54 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 05 22:02:08 2018 +0000"
      },
      "message": "aaudio test: fix looping multiple times using -l\n\nWait for stream to pause before flushing.\nRemove scary -110 result message.\n\nBug: 68271891\nTest: adb shell write_sine_callback -pl -m2 -n2 -s2 -c2 -l100\nChange-Id: Ide7e7642cbe0b9d43023106a526e8f1e205aab77\n"
    },
    {
      "commit": "5bce4c9f93ed57e78d24eb568476a5907803f82a",
      "tree": "40329bc22064241abc64ea23f4fa149868fb1a6a",
      "parents": [
        "69c9844bed34c367224d5f6219e8410664b2119b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 18 09:29:14 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 05 09:58:18 2018 -0800"
      },
      "message": "aaudio_loopback: improve tolerance to noise\n\nMake silence detector less sensitive to noise by setting the\nthreshold proportional to the measured pulse level.\n\nMake glitch detector less sensitive to noise by setting the\nthreshold proportional to the measured noise level.\n\nReport signal to noise ratio.\n\nImproved printed messages, show state as text.\n\nBug: 117834966\nTest: aaudio_loopback -pl -tm\nChange-Id: I5593cd1ade93ecbcb05f42af07626013d036f29a\n"
    },
    {
      "commit": "317bac9689aa2e100e476b6fa86d4b48881b6669",
      "tree": "38c3593ff0dbb641bdc22a0dada29e3a97536a21",
      "parents": [
        "49fb89d3a0853ef77ecd533bec586abc65754857"
      ],
      "author": {
        "name": "Zach Riggle",
        "email": "riggle@google.com",
        "time": "Fri Oct 19 13:53:03 2018 -0500"
      },
      "committer": {
        "name": "Zach Riggle",
        "email": "riggle@google.com",
        "time": "Mon Oct 22 18:31:34 2018 +0000"
      },
      "message": "AAudio: Fix setChannelCount and setSamplesPerFrame\n\nThe C API interface to these was swapped internally, meaning that\nsetChannelCount would actually invoke setSamplesPerFrame.\n\nBug: 117985878\nChange-Id: I2e7f4b5ec01323c1df1aa6c34b849a63ec9ba936\n"
    },
    {
      "commit": "d1bdb20b3bff4f04ad467b77a0c690571e49bb4c",
      "tree": "f1eef1df2b4e1f1fd5edb26b6ce685f533b91258",
      "parents": [
        "fd771a4fdfad765cee9b66b558574d4ee3f70e4a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 19 13:59:26 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 18 09:47:35 2018 -0700"
      },
      "message": "aaudio: unit test for IsochronousClockModel\n\nTest: adb push ${OUT}/data/nativetest64/test_clock_model/test_clock_model /system/bin/.\nTest: adb shell test_clock_model\nChange-Id: I6736a02674b4f8f723799e76be7d441c46f01de6\n"
    },
    {
      "commit": "dd3556092f0a20a0d4dd4646863f00c679c955a8",
      "tree": "c877b8201a1394240859f712f6a0ecdd72643c30",
      "parents": [
        "b28aea17e60aa54c96f506c17d7d1603df928626",
        "10ffb196b3eb826cdcdc2fa20461b7e5492febb7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 03 17:41:45 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 03 17:41:45 2018 +0000"
      },
      "message": "Merge \"aaudio: add callback size options to examples\""
    },
    {
      "commit": "10ffb196b3eb826cdcdc2fa20461b7e5492febb7",
      "tree": "cf23a7906763a40c724fe1e01c1a80ced674af90",
      "parents": [
        "0127c1be07d63e046e136126cd465c3fa8977768"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 26 12:09:00 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Oct 03 09:35:16 2018 -0700"
      },
      "message": "aaudio: add callback size options to examples\n\nThis can be used to reproduce the wrap around bug\nin the MMAP FIFO in OC_MR1.\n\nBug: 78139448\nTest: aaudio_loopback -tm -pl -Pl -z120\nChange-Id: I923e60432f1c9777355d12d76609f2d70393f61b\n"
    },
    {
      "commit": "8ffcf6179cec579e065c20e9ac7294082d271ff4",
      "tree": "a32e87c6379ef1f3e3ccdadcec3628a466f7867c",
      "parents": [
        "cd3bf88393575455f5ceecd6dd5fd7343eaf5f12"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed May 23 14:38:07 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 28 15:17:59 2018 -0700"
      },
      "message": "aaudio: turn off RAW flag for sessions\n\nImprove support for AudioEffects in LOW_LATENCY mode.\n\nIf a Session is requested then it is likely that effects will\nbe used so do not set the RAW flag. RAW flag could interfere with\ncreating effects on some devices.\n\nBug: 80203192\nTest: Native Oboe Tester\nChange-Id: I9e7ac8689de71b376b750259da36d5879fe4898d\n"
    },
    {
      "commit": "0127c1be07d63e046e136126cd465c3fa8977768",
      "tree": "4eb611ec5d010becd3583f93c640cc9468acb3b3",
      "parents": [
        "fdfae2898f0785f19de198ed00488e03bf52bca9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 29 13:48:06 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 07 11:08:24 2018 -0700"
      },
      "message": "aaudio: use new flowgraph to simplify processing\n\nConstruct a flowgraph based on the source and destination\nformat and channelCount. This is groundwork for supporting 24-bit\nPCM formats.\n\nAlso cleaned up handling of device related format.\n\nThis CL removes more code than it adds.\n\nBug: 65067568\nTest: write_sine_callback.cpp -pl\nTest: write_sine_callback.cpp -pl -x\nTest: input_monitor -pl\nTest: input_monitor -pl -x\nChange-Id: Ia155bff0164912011d09b61b54f983ccf4490bd1\n"
    },
    {
      "commit": "3610f74e60e2c253d238fd6687e24dedc76a2b72",
      "tree": "fcade8a0652301730dd91e8be98172edf9e1ae7a",
      "parents": [
        "d43d6a0b9425634141a12d09518e353d1e0a1484",
        "bb78a73db83955151feb6b150f7cb925bcabe79a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 07 00:36:25 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 00:36:25 2018 +0000"
      },
      "message": "Merge changes I7d7794fd,I81a56554\n\n* changes:\n  aaudio test: test flowgraph\n  aaudio: add simple flowgraph system\n"
    },
    {
      "commit": "4280e86dcc1e3d5d1061350680dc8f6b47213e47",
      "tree": "7a930a97245da5db205f8c856de2f2d1cd4a2486",
      "parents": [
        "cbbc3febca31d8b073f6ba3bd142ef6b53d51f73"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 18 13:17:24 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Aug 30 16:42:13 2018 -0700"
      },
      "message": "Add __INTRODUCED_IN to audio/camera/media headers.\n\nBug: https://github.com/android-ndk/ndk/issues/706\nBug: http://b/113052379\nTest: builds\nChange-Id: I519d4fd825d40c3f72515f29a7e5b12c23a1749a\nMerged-In: I519d4fd825d40c3f72515f29a7e5b12c23a1749a\n(cherry picked from commit 85a41536a4885b12120ddafb4d0b3fee8a8613b6)\n"
    }
  ],
  "next": "bb78a73db83955151feb6b150f7cb925bcabe79a"
}
