)]}'
{
  "log": [
    {
      "commit": "e2039fd07f3ab04f8d75caf35665bce2aa0111a1",
      "tree": "51caaeaf6394e3d6b7d3cbc17978139da737eb90",
      "parents": [
        "dde976b4f5794e3eafbda289ace2d644aecc6765",
        "40cbbae84e5b57098c8cacb8ca4c0ff3ec839d51"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Dec 16 19:17:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 16 19:17:49 2017 +0000"
      },
      "message": "Merge \"aaudio: fix warning for use after free\""
    },
    {
      "commit": "40cbbae84e5b57098c8cacb8ca4c0ff3ec839d51",
      "tree": "61c7232a7cb01fd0ea11404ab252b534936f5b8b",
      "parents": [
        "ceedc87e48c92e248123b9a9476053456e62e006"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Dec 15 17:19:19 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Dec 15 17:47:45 2017 -0800"
      },
      "message": "aaudio: fix warning for use after free\n\nThe compiler was complaining because a pointer was printed after it was\nfreed. The compiler folks agree this is OK and recommended a technique that\nprevents the warning.\n\nTest: any AAudio program, look at log for close\nChange-Id: I49c005b48edc4a5dcb5c85da2a9e875befc37206\n"
    },
    {
      "commit": "823267338b2bee8c279306c07775feabfc2434a5",
      "tree": "6290eaae534daf3dadd93d8974863ea5b17a50c3",
      "parents": [
        "65f6932447d4c40d986d7c56806dc84ff7ca667b",
        "6428a766411880964e0c6609606d0f814bf5b674"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sat Dec 16 00:33:20 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 16 00:33:20 2017 +0000"
      },
      "message": "Merge \"Use %d for int32_t\" am: 240201e27b am: 63c04ff2b7\nam: 6428a76641\n\nChange-Id: I8b601680923641d7aa7f7aabed4e072fb77a24e5\n"
    },
    {
      "commit": "6428a766411880964e0c6609606d0f814bf5b674",
      "tree": "4305e1631019249459bdcfe69508e5ac7c6da555",
      "parents": [
        "3169eaa60aa85883f232e878043520ae5bd05e5e",
        "63c04ff2b789c39e52ef6a3813fd95f1197e3541"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sat Dec 16 00:20:15 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 16 00:20:15 2017 +0000"
      },
      "message": "Merge \"Use %d for int32_t\" am: 240201e27b\nam: 63c04ff2b7\n\nChange-Id: Ie30c55232b8b228fab1de5d827dc1bcf29c0f4a7\n"
    },
    {
      "commit": "0f414de66cda78cd019df9f791cb17889cfc8bca",
      "tree": "1baa4f64921ca64954c8c98f293a14da2bf91d39",
      "parents": [
        "aba76c0dbdf3ef55206c4c97d9a2f4f3d7aa69c2"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Dec 15 13:48:50 2017 -0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Dec 15 13:50:25 2017 -0800"
      },
      "message": "Use %d for int32_t\n\nDiscovered by the upcoming compiler update.\n\nTest: build\nChange-Id: I0314ae298bc84fb07fda8736a827642c849afdc9\n"
    },
    {
      "commit": "0b02f68762ad7f245c63f7dda855ed09b4f7163f",
      "tree": "1dc7299d8748f0a29679e5b09878d918174630c1",
      "parents": [
        "dc634a8b1f3f17ea99f79004830583945a27befd",
        "134f197bf7e2785ed9de336dc8e22e870c2ba6bd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 13 02:24:23 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 13 02:24:23 2017 +0000"
      },
      "message": "Merge \"aaudio: prevent stop/close from a callback\""
    },
    {
      "commit": "134f197bf7e2785ed9de336dc8e22e870c2ba6bd",
      "tree": "5151b8ba79552400756b29cfe1b6d7f74dcae8f8",
      "parents": [
        "5fb93fa294ee05a25f86312e926b5ca4e0d1d3b2"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Dec 08 13:06:11 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Dec 12 14:29:12 2017 -0800"
      },
      "message": "aaudio: prevent stop/close from a callback\n\nDetect whether AAudioStream_requestStop() is being called\nfrom a data or error callback and return error.\nAlso for start(), pause(), flush() and close().\n\nHonor AAUDIO_CALLBACK_RESULT_STOP in Legacy callback.\n\nBug: 65560631\nBug: 62943389\nBug: 63096718\nTest: test_various.cpp callback_blocker_none and callback_blocker_lowlat\nChange-Id: I29a685cd42910f70d16e23db0f9ec00b72451cfc\n"
    },
    {
      "commit": "ee995399b02c2dc60011f81e5251d24d3a0a79b5",
      "tree": "1805aa1f7860da58c76a8b6f36281982f1f6bca8",
      "parents": [
        "3a5608cf069994725f6e50950f0462e91dcd8c51"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 11 11:44:36 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Dec 12 17:12:01 2017 +0000"
      },
      "message": "aaudio: honor requested device in Legacy mode\n\nWas calling setDeviceId(), which is overwritten by set().\n\nBug: 70512693\nTest: write_sine_callback, see bug for details\nTest: input_monitor, see bug for details\nChange-Id: I484f47e898a0e92a6f88e099a115f3d091c174c2\n"
    },
    {
      "commit": "bba0900e3c6314235ae12440ad1cee43f12a57f8",
      "tree": "b68bf1cf4c15e1bb5acde0bb6b98bb168b5fa728",
      "parents": [
        "693cb2bde52b4d73c391c529f1c6bf7a02be9f72"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Nov 29 13:39:44 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Nov 30 14:47:13 2017 -0800"
      },
      "message": "aaudio: optimize float to int conversion\n\nUse new techniques from audio_utils/primitives.h\n\nTest: change volume while running\nTest:     test_linear_ramp.cpp\nTest:     adb shell write_sine_callback -pl -fi -x -s20\nTest:     adb shell write_sine_callback -pl -ff -x -s20\nChange-Id: Ib7dab07f351cf97a8cbda9608091188dec41d04c\n"
    },
    {
      "commit": "693cb2bde52b4d73c391c529f1c6bf7a02be9f72",
      "tree": "e90e62f72eed4f7c6cc88d1777abf9a9c17e5cc4",
      "parents": [
        "720e24cfe430e1719c5defb9a1f41a6b63b02eaf",
        "2329638e097622653cb2c4acc145b996e317a38b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Nov 22 18:16:26 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 22 18:16:26 2017 +0000"
      },
      "message": "Merge \"aaudio: use xruns detected in the service\""
    },
    {
      "commit": "2329638e097622653cb2c4acc145b996e317a38b",
      "tree": "d25dccdc184ac7ce8b7aceb227411592ff256484",
      "parents": [
        "10edfcf70857cc0a22afbbd3fc8f57f0c8a2953a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 20 15:45:11 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 21 10:30:58 2017 -0800"
      },
      "message": "aaudio: use xruns detected in the service\n\nThe service knows when an actual xrun occurs so we pass\nthat value to the client.\n\nBug: 38512417\nTest: write_sine_callback -pl -n1 -s20 -c2 -u\nChange-Id: I9e5ff1edd2e9378957309280162d7cda855f5adb\n"
    },
    {
      "commit": "afd5242aea820b8c7118ff35b3f1b3d5ed71ef19",
      "tree": "babebc3586faaabc05552489c6da12467c0b5197",
      "parents": [
        "ee9ab22ebabab3e3669b38badf8b0a0f504fc3b4",
        "6479d501e85147d2be48bde13a7926da5f0e56f6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 21 01:18:08 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 21 01:18:08 2017 +0000"
      },
      "message": "Merge \"aaudio: clip bufferSize at top of MMAP code\""
    },
    {
      "commit": "6479d501e85147d2be48bde13a7926da5f0e56f6",
      "tree": "fc8ceb4291751a934f51cc716304298ed9c05526",
      "parents": [
        "10edfcf70857cc0a22afbbd3fc8f57f0c8a2953a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 20 09:32:52 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 20 14:05:56 2017 -0800"
      },
      "message": "aaudio: clip bufferSize at top of MMAP code\n\nSet size to a reasonable value regardless of the user input.\n\nBug: 69469801\nTest: test_various.cpp\nChange-Id: I6c155383e70959485882c17189388be1c9e6fc8b\n"
    },
    {
      "commit": "9eba210059bb8d8502988fc9fd0cecf223c9114f",
      "tree": "99a70657c29143801e8c95f866dc0d37e71a4d4b",
      "parents": [
        "10edfcf70857cc0a22afbbd3fc8f57f0c8a2953a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 20 12:25:38 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 20 12:25:38 2017 -0800"
      },
      "message": "aaudio: fix ramp for volume smoothing\n\nIt was using numSamples instead of numFrames.\nSo timing was off.\n\nBug: 68804159\nTest: raise and lower volume without clicking\nTest: test_linear_ramp.cpp\nChange-Id: I18b10dadbc47ab9cbe9c5aefd4e6197c50a0bedc\n"
    },
    {
      "commit": "4593b04bdad2ae66b22c5d3fb78276b523b7e942",
      "tree": "d855fc3d7505c608fc720474d2af565feb131738",
      "parents": [
        "ea8dd2c787f88e7289ffb8f226237587f95d8a93",
        "79edadcea74151b573d5b973d5a421baee693ec1"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 10 15:29:40 2017 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 10 15:33:45 2017 -0800"
      },
      "message": "Merge commit \u002779edadcea74151b573d5b973d5a421baee693ec1\u0027 from\noc-mr1-dev-plus-aosp into stage-aosp-master\n\nChange-Id: I04234f284e3117e8343e7c888646400c81f5a131\nMerged-In: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\n"
    },
    {
      "commit": "6392485cb6f83d8cdcdc42786be4879d43470814",
      "tree": "779319eebdfef64121024610c065715047b44677",
      "parents": [
        "ba0a69a6a25428df90b9e864ce16b30b10415397",
        "1a55036ab9c424f1b3f223ac33da918d83dabea8"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Nov 02 04:15:49 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 02 04:15:49 2017 +0000"
      },
      "message": "Merge \"aaudio: fix loss of sync with HW FIFO index\" into oc-mr1-dev\nam: 1a55036ab9\n\nChange-Id: I569320e6fc3ff010b2301ab8cf9036b1f13908ad\n"
    },
    {
      "commit": "999e110dac3783df71e5606be1d86f1b122145c0",
      "tree": "27e8e10ba12fb0515194823d98fe26b1f74c80fc",
      "parents": [
        "73d0374fcb522fc5106c2c8f75d482cbc8a5e1c0"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 26 12:11:47 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Nov 01 15:52:30 2017 -0700"
      },
      "message": "aaudio: fix loss of sync with HW FIFO index\n\nThis fixes a problem with intermittent severe distortion\nand variable latency after restarting a stream.\n\nBug: 68003241\nTest: write_sine_callback -pl -m2 -n2 -s5 -c2 -l100\nMerged-In: Id7418adb86f2869ac74936cfbd365815a0a0e923\nChange-Id: Id7418adb86f2869ac74936cfbd365815a0a0e923\n"
    },
    {
      "commit": "a75fdf5ff87a75a52e5d782d0169ca61fe39e95c",
      "tree": "0e1e51d1152539d1dfa90ac349ae8e7a3ac8fdf9",
      "parents": [
        "1052fb1dc71dbd62f7ff2b2227ed318ca9aea1e0",
        "fbf031e8f197c916ae9c399f42926494ebdeb497"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 01 01:29:52 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 01 01:29:52 2017 +0000"
      },
      "message": "Merge \"aaudio: cleanup logs and comments\""
    },
    {
      "commit": "fbf031e8f197c916ae9c399f42926494ebdeb497",
      "tree": "13578d14ca810aaa7629770b983b81641e0bd90f",
      "parents": [
        "442459bca04f95ef2acd34e3de01f55bd5ede132"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 12 15:58:31 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Oct 31 15:36:38 2017 -0700"
      },
      "message": "aaudio: cleanup logs and comments\n\nThis CL should not change any code behavior except for log text.\nMostly it removes redundant class names from the log.\n\nTest: CTS nativemedia/aaudio\nChange-Id: I6a6d01da080f536d5345f2b0deb32e92ed1e3d47\n"
    },
    {
      "commit": "73af62a5ff0577eec6ad1be2b45fc9a15eaba920",
      "tree": "9d24c7c6a4320eb0ec5b9ae34852844ee6e8d989",
      "parents": [
        "442459bca04f95ef2acd34e3de01f55bd5ede132"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 26 12:11:47 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 26 14:03:49 2017 -0700"
      },
      "message": "aaudio: fix loss of sync with HW FIFO index\n\nThis fixes a problem with intermittent severe distortion\nand variable latency after restarting a stream.\n\nBug: 68003241\nTest: write_sine_callback -pl -m2 -n2 -s5 -c2 -l100\nChange-Id: Id7418adb86f2869ac74936cfbd365815a0a0e923\n"
    },
    {
      "commit": "29ca1b3eeac1eef316a283345f2e479f0a50f96e",
      "tree": "0aa8220363aba637abbd8e0924b0ee615d2b6ebc",
      "parents": [
        "38cefbe16a44aacb365af0aa3a5e2e9820ca1575"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 23 17:15:03 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Oct 25 01:26:58 2017 +0000"
      },
      "message": "Convert libaaudio to Android.bp\n\nSee build/soong/README.md for more information about Soong.\n\nI didn\u0027t translate the examples, since they appear to be NDK build\nfiles, not platform build files.\n\nTest: mmma frameworks/av/media/libaaudio\nChange-Id: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\nMerged-In: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\nExempt-From-Owner-Approval: simple backport\n(cherry picked from commit 0230b1ac4ae8833016f96cb7fe1eebf7efec26ef)\n"
    },
    {
      "commit": "0230b1ac4ae8833016f96cb7fe1eebf7efec26ef",
      "tree": "77a168f9388c7bd3bfe04813dd2e2872579e35dd",
      "parents": [
        "00c05a502837d834de257623980b5ea1b849e945"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 23 17:15:03 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 23 19:27:42 2017 -0700"
      },
      "message": "Convert libaaudio to Android.bp\n\nSee build/soong/README.md for more information about Soong.\n\nI didn\u0027t translate the examples, since they appear to be NDK build\nfiles, not platform build files.\n\nTest: mmma frameworks/av/media/libaaudio\nChange-Id: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\nMerged-In: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\n"
    },
    {
      "commit": "b44c69e85ced0a8909e5ca0035720a6e450c8f36",
      "tree": "585ba5b649b9695353ff99e0fdc0f758751a933d",
      "parents": [
        "32d82714da38ad86803a56870734d49bcf30c29d"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 23 17:15:03 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 23 17:46:27 2017 -0700"
      },
      "message": "Convert libaaudio to Android.bp\n\nSee build/soong/README.md for more information about Soong.\n\nI didn\u0027t translate the examples, since they appear to be NDK build\nfiles, not platform build files.\n\nTest: mmma frameworks/av/media/libaaudio\nChange-Id: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\n"
    },
    {
      "commit": "02cc0ecc732a33a33570ec490c44a686354c512b",
      "tree": "e051072cfa8de26a855a12c577bfc22a56cbae39",
      "parents": [
        "250cbc71e22b20c2a2b16f7225d8e8856d666a48",
        "58fc59b91c5a526c580ca24f74389f500ab2346d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Oct 14 22:58:58 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 15 06:01:21 2017 +0000"
      },
      "message": "resolve merge conflicts of 58fc59b91c to oc-mr1-dev-plus-aosp\n\nTest: I solemnly swear I tested this conflict resolution.\nExempt-From-Owner-Approval: weekend merge conflict resolution\nChange-Id: I70002ccad145f7b5fa4854d6aa192322b07849e9\n"
    },
    {
      "commit": "5fa7dcf26a5bec668532e086a973683edfb657a8",
      "tree": "7092f03ca491432729dcd2be0f1c1cfad2611932",
      "parents": [
        "3ccef7847f0e5174f045c85227b577abf08e02cc",
        "fe4ab105dad9fdbc23e9f681e0d342e892a74b18"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sun Oct 15 03:06:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Oct 15 03:06:50 2017 +0000"
      },
      "message": "Merge \"Add missing includes.\"\nam: fe4ab105da\n\nChange-Id: Ib95769338491b8cd3f5b1640a7839dfaff301da0\n"
    },
    {
      "commit": "cb2e7fb2a42542c3406678c4fd4ccfab9ceb8748",
      "tree": "6705febfb1f64fdb8ca5659998d919dccb175326",
      "parents": [
        "16f2c1559c5722a6cd69fef3c17dc5756ba73fe6"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 11 12:43:41 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Oct 13 18:43:30 2017 +0000"
      },
      "message": "Add missing includes.\n\nTest: mma\nBug: None\nExempt-From-Owner-Approval: trivial cleanup\nMerged-In: I97b9e5e1b6e8b3126a8668460a8c99e4ef1a907d\nChange-Id: I97b9e5e1b6e8b3126a8668460a8c99e4ef1a907d\n"
    },
    {
      "commit": "36967fb1a52f44cef9b5bdcca0f646aa136e285a",
      "tree": "8e3fd54b0c0cc9a55cd0f1c80f17698a0bca47b2",
      "parents": [
        "3d762515b88c266f6be7d8f05c83517960dbc92f"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 11 12:43:41 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 11 17:19:33 2017 -0700"
      },
      "message": "Add missing includes.\n\nTest: mma\nBug: None\nChange-Id: I97b9e5e1b6e8b3126a8668460a8c99e4ef1a907d\n"
    },
    {
      "commit": "e474bc188186007964b532bd99311a933be22832",
      "tree": "a156185ffda69c4ede19526424982fe23125bd14",
      "parents": [
        "dddb4326c090fa8ea37168d861eb11cd3a66e0c9",
        "d0a23e619a6b5995612e4865749098b04ae591d1"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 15 23:01:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 15 23:01:32 2017 +0000"
      },
      "message": "aaudio: keep track of streams using strong pointers am: 523b3047af\nam: d0a23e619a\n\nChange-Id: I86bf56dd51fe0a59ebb920fbf49e1907818b6c30\n"
    },
    {
      "commit": "523b3047af443d0a51141ddabd328d52be5a23b0",
      "tree": "2596b9d310c3c59d391634d131d2ae866ddf1d47",
      "parents": [
        "1e0c671e14660588410560a55c34718bb8af3b22"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 13 13:03:08 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 15 13:29:26 2017 -0700"
      },
      "message": "aaudio: keep track of streams using strong pointers\n\nMaintain strong pointer to service stream during service calls.\nUse simple AAudioStreamTracker instead of complex HandleTracker.\n\nBug: 65280854\nTest: affects all MMAP streams, run all CTS tests, etcetera\nChange-Id: I3d2ed8b588ea39c216dacd4dea503b11c33f36f3\n"
    },
    {
      "commit": "5e44deb3fa65eb3dd7c354d5b794240f8e70a88d",
      "tree": "9ce6e537042bedc3570f0ace4ee2d7a4381c2cec",
      "parents": [
        "49e290da74f583bc9c7d14a733414200fe480580",
        "0b97f851d03999fdd19c13f2b0afa0a441ec3d5e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 14 04:15:04 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 14 04:15:04 2017 +0000"
      },
      "message": "Merge \"aaudio: cleaned up PlayerBase implementation\" into oc-mr1-dev am: a39b3ba3ad\nam: 0b97f851d0\n\nChange-Id: I3b56f7eb66c201371de9af495fad8bf3b8310300\n"
    },
    {
      "commit": "8a8a9e5d91c8cc110b9916982f4c5242efca33e3",
      "tree": "9ef74bc0ce163de8f38837b27df4410248087772",
      "parents": [
        "ee5201b4d9115cc7ac282155573e6354cc9c6819"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Sep 12 16:25:15 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 13 14:41:46 2017 -0700"
      },
      "message": "aaudio: cleaned up PlayerBase implementation\n\nSimplify registration. Reduce use of virtual methods.\n\nThis CL, plus some CLs in AudioManager, should fix\ncrashes involving RefBase::decStrong\n\nBug: 65450109\nTest: CTS or \"write_sine_callback -m2 -pl\"\nChange-Id: Ie1decd20f8d44bdefb0faf92e6b74de4f72e86bd\n"
    },
    {
      "commit": "71ce897742a8cd0fbeb0bfc5b6580890e6faeb69",
      "tree": "170220b45b1e44a8ca2497e13bd2e8e5d217531f",
      "parents": [
        "90445b639c072f2b9c139e130d409158f6c41ba1",
        "50c9e990f5005e11df1eb050bbf09e7126128fef"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Sep 11 22:44:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:44:32 2017 +0000"
      },
      "message": "Merge \"aaudio: prevent noise upon disconnect\" into oc-mr1-dev am: aa488ac2ca\nam: 50c9e990f5\n\nChange-Id: I52f3a3764f2772061a3e4b72690a364d243ac247\n"
    },
    {
      "commit": "2d5ba532cc80b3408b9eb5d47d3144bf93ece8cd",
      "tree": "c5ec7c28e896560f742793162604ac9e3b4a518f",
      "parents": [
        "c75d97f20843388b9084561635996a01a53d0c0f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 06 14:36:11 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Sep 11 12:20:56 2017 -0700"
      },
      "message": "aaudio: prevent noise upon disconnect\n\nAlso clean up the state machine handling in the data callback.\nPrevent error callback sometimes being called twice for the same error.\n\nBug: 63342351\nBug: 63087953\nTest: add sleep(2) to write_sine_callback.cpp before the requestStop()\nChange-Id: I27737bcb0371052741f50bda9f65c5994ccf6fd9\n"
    },
    {
      "commit": "c3efae1003caf9065e1e120672b44850cd36a0bd",
      "tree": "9f9a13beacb2f6f81d3147b1442dc8f09fbfe205",
      "parents": [
        "8ec8c3898a3fd4840f12ae48cabf7c22b2de3eae",
        "331aa6d5c9ba3cce65f22e1c12483320a694d4c3"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Sep 09 07:06:22 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Sep 09 07:06:22 2017 +0000"
      },
      "message": "aaudio: fix return code from getTimestamp() am: c75d97f208\nam: 331aa6d5c9\n\nChange-Id: I8845b271acbee794c4e679d8ce485e5d89a9ce30\n"
    },
    {
      "commit": "8ec8c3898a3fd4840f12ae48cabf7c22b2de3eae",
      "tree": "87af358d56cb62a3cfd059bb85d983fa64c6bd73",
      "parents": [
        "ab2f3eb37bd517b7d0126791c0f8fb3e6f509916",
        "5badc8c1114c1d3a2934813297ab31f6e6ad5e3f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Sep 09 04:18:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Sep 09 04:18:10 2017 +0000"
      },
      "message": "Merge \"aaudio: fix problems with PlayerBase and ref counting\" into oc-mr1-dev am: e0de1cdc1e\nam: 5badc8c111\n\nChange-Id: I098386d047e5122febaf4da869dbd2345ba560a3\n"
    },
    {
      "commit": "c75d97f20843388b9084561635996a01a53d0c0f",
      "tree": "2830ecc2de864ef496f7bbbc507a5f144839732a",
      "parents": [
        "e0de1cdc1ebe4f43ac5ba4273d51b368901c87de"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 08 15:48:36 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Sep 09 04:17:53 2017 +0000"
      },
      "message": "aaudio: fix return code from getTimestamp()\n\nShould be AAUDIO_ERROR_INVALID_STATE if no timestamp available.\n\nBug: 65447871\nTest: test_timestamps.cpp should only print AAUDIO_ERROR_INVALID_STATE\nChange-Id: Id9e211ef8fce078514f4348a434e0c003372369c\n"
    },
    {
      "commit": "965650e5c36f39cb5e6d780a22ff711fbf5a37f5",
      "tree": "95b4d26ce9b2f0590e59ddeeafd9d020db06b652",
      "parents": [
        "fbe5bd5d97cdeee6f4982a7db0db42311433aacd"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 07 21:00:09 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 08 16:24:17 2017 -0700"
      },
      "message": "aaudio: fix problems with PlayerBase and ref counting\n\nCTS test was crashing because of a multiple inheritance\nproblem involving PlayerBase.\nWe now implement separate PlayerBase class that sits between\nAudioStream and the system.\n\nBug: 65450109\nTest: CTS nativemedia/aaudio\nChange-Id: I424663acc1eeacc9544769991495cb48f4110359\n"
    },
    {
      "commit": "b8ba103f7fd4a2695d20463689d898ddf5431dac",
      "tree": "e4025dced52bfff1c9bac23bdefd8fdcbebd84da",
      "parents": [
        "a7eba9bb298643b09b4d5f78ebea1c55e2365ad8",
        "3f1e4784c798418e0f2d75b77b5e458c863b6c20"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 07 16:24:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 16:24:52 2017 +0000"
      },
      "message": "Merge changes from topic \"aaudio_timestamps\" into oc-mr1-dev am: cc84034676\nam: 3f1e4784c7\n\nChange-Id: I189a652c143cab28d01353d6cf451878e36b9bfc\n"
    },
    {
      "commit": "bcc3674648bc6f554d89a2a5d7721ed41c53f83b",
      "tree": "ae3f8fcecce7f06b44088ff4c8adf3248f287f4b",
      "parents": [
        "7328a80ffc83729cc6252c79e0851a31af59c653"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 31 17:24:51 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 06 17:21:34 2017 -0700"
      },
      "message": "aaudio: fix timestamps and underruns\n\nStart the client after we get valid timing data from the server.\nThat can take a while because of the long cold start times.\nThe client is synced with the current position of the service.\nNow the client can start clean with no underruns.\n\nBug: 63918065\nTest: test_timestamps.cpp\nChange-Id: I5d01eb844e4b14cd5477d56ea1dd9e309abc1c52\n"
    },
    {
      "commit": "7328a80ffc83729cc6252c79e0851a31af59c653",
      "tree": "62c8ae222700101931459a8ee921a4c016d34871",
      "parents": [
        "187dcd4eeaeace78665dafcee6acb074ef390545"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 30 09:29:48 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 06 17:08:19 2017 -0700"
      },
      "message": "aaudio: prevent retrograde motion in Legacy timestamps\n\nUse MonotonicCounter for timestamp position.\n\nBug: 63918065\nTest: write_sine_callback.cpp and test_timestamps.cpp\nChange-Id: Iea58384e2d96adcfad586e8c522024baaecccb8c\n"
    },
    {
      "commit": "0b8529fbacaa35634ac24bb62c5890cddcb623b6",
      "tree": "f2ae5de5ae80bb6f69b929172804410e3335abf8",
      "parents": [
        "f238bd3c57632b7f4eeb6b1a6a9542058e911a5b",
        "8cf3a0788df2ee184b498086b1b8da322eeadcca"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 23:07:08 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 01 23:07:08 2017 +0000"
      },
      "message": "Merge \"Generate the IPlayer interface with AIDL.\""
    },
    {
      "commit": "8cf3a0788df2ee184b498086b1b8da322eeadcca",
      "tree": "1bd36129bbd4afa491689deca23977dbf30930f6",
      "parents": [
        "a5ec8b0ec9c94fd9474fae1d1d1dc798ae6c4d2d"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Aug 09 09:01:33 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 10:14:30 2017 -0700"
      },
      "message": "Generate the IPlayer interface with AIDL.\n\nThis removes the manually rolled IPlayer implementation and instead uses\nan aidl generated implementation. The IPlayer aidl file is moved from\nframeworks/base/.\n\nTest: run cts --module CtsMediaTestCases\nBug: 64223827\nChange-Id: Ia609f7ba1cc6f71ce919d6174dd8b5e0e1b05575\n"
    },
    {
      "commit": "77964b915ca37c268fbb686a26da6b7417291e41",
      "tree": "e0b7e4decaa64ac21b654a150f88928a2851f3ff",
      "parents": [
        "032d22e18a59941c9a03802a126a9577ab5d193b",
        "12d8c65adac8af264b839e691d51892116771476"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 28 23:27:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 28 23:27:32 2017 +0000"
      },
      "message": "Merge \"aaudio: fix hang in client when audioserver dies\" into oc-mr1-dev am: 35fcdb6a65\nam: 12d8c65ada\n\nChange-Id: I75539ee38a415265e1eb181e62aba1aeaf49132b\n"
    },
    {
      "commit": "2bc7c1838703993e126bfe9a21fee053b6c0ab67",
      "tree": "1de62456a6e61f35ca0d3d63947dc5a8f064cbfc",
      "parents": [
        "7124c1985b535a7862cd8f2706386a2a0ba676b2"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 28 11:45:01 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 28 12:55:54 2017 -0700"
      },
      "message": "aaudio: fix hang in client when audioserver dies\n\nFix timeout detection so that callback thread can die.\nPrevent AAudioBinderClient singleton from getting deleted,\nwhich caused a subsequent lock on a dead object to hang.\n\nBug: 64988439\nTest: \"write_sine -m2 -pl\" and \"adb shell killall audioserver\"\nChange-Id: I044bce385b66e69007d1997f051c9d6c042b7871\n"
    },
    {
      "commit": "963a7549ecaffad520b44d67889bacb8cd4bc34f",
      "tree": "79237488712cefece339a64a040345618dacf55a",
      "parents": [
        "e598e9986a7a7eff08d18c12138620de46c5c91c",
        "e9afda02db4ee9b6bc3a66eff31a6e7e71d31188"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 25 21:33:03 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 25 21:33:03 2017 +0000"
      },
      "message": "Merge \"aaudio: fix returned performanceMode for Legacy\" into oc-mr1-dev am: c35e23e508\nam: e9afda02db\n\nChange-Id: Ic6f0c8bc90726d9718deb74d727d06fc57805f3f\n"
    },
    {
      "commit": "09c27cab917f2f41dd58aececc3200b097fedde8",
      "tree": "9bd40d986cd0cc0cdb5d5b701abbb05013e56439",
      "parents": [
        "05e712d3be03291627eb40e9c7f6c08a9874bd23"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 24 22:12:56 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 25 11:06:58 2017 -0700"
      },
      "message": "aaudio: fix returned performanceMode for Legacy\n\nAAudio was setting the stream to PERFORMANCE_MODE_NONE\nif we got the FAST mixer but did not get the RAW flag.\nWe now consider FAST flag by itself to be LOW_LATENCY.\n\nBug: 63004643\nTest: see bug for repro case using NativeOboe app\nChange-Id: Id4643d20926a8e983cd28408f70e176976c02195\n"
    },
    {
      "commit": "39f02ddfbfd9313370d862a6c4727826379a319a",
      "tree": "aa5c61a50fff59d92db99619edd67b31e9d938c3",
      "parents": [
        "ee079fe295c41f89c2ac6316e99ee10847fb78fd"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 04 09:13:31 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 24 14:59:25 2017 -0700"
      },
      "message": "aaudio: fix EXCLUSIVE mode interfering with SHARED\n\nThe MMAP endpoints were not tracked by the EndpointManager\nso it could not broker EXCLUSIVE access. To fix this the MMAP stream\nwas refactored to use a per-client stream and a per-device endpoint.\n\nCleanup close() of MMAP stream.\nAdd AAudioServiceEndpointShared.cpp.\nExtract AAudioServiceEndpointMMAP from AAudioServiceStreamMMAP.\nTrack MMAP endpoints so we can manage EXCLUSIVE and SHARED access.\n\nBug: 64494572\nBug: 64310586\nTest: see bug, use write_sine to play a shared stream and a excl stream\nChange-Id: I5053193abfd9b8a69a2f7e1110739d65e2af5d64\nMerged-In: I5053193abfd9b8a69a2f7e1110739d65e2af5d64\n"
    },
    {
      "commit": "15f7cab18eb12870545734588b12d873d0fe5d84",
      "tree": "9757be2cd5320b6d669a94bea59e744e3a766525",
      "parents": [
        "13e4dad5f0eafbe1c46fcbde6da9b37fcd57e422"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 04 09:13:31 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 24 11:31:44 2017 -0700"
      },
      "message": "aaudio: fix EXCLUSIVE mode interfering with SHARED\n\nThe MMAP endpoints were not tracked by the EndpointManager\nso it could not broker EXCLUSIVE access. To fix this the MMAP stream\nwas refactored to use a per-client stream and a per-device endpoint.\n\nCleanup close() of MMAP stream.\nAdd AAudioServiceEndpointShared.cpp.\nExtract AAudioServiceEndpointMMAP from AAudioServiceStreamMMAP.\nTrack MMAP endpoints so we can manage EXCLUSIVE and SHARED access.\n\nBug: 64494572\nBug: 64310586\nTest: see bug, use write_sine to play a shared stream and a excl stream\nChange-Id: I5053193abfd9b8a69a2f7e1110739d65e2af5d64\n"
    },
    {
      "commit": "703ddd9df5c664a4bc2aac4c848fd89dc3b26f1f",
      "tree": "20abaa73b545d1b760ea9784dd88ade1f7faef91",
      "parents": [
        "42aaf4437223bf51f0730c7a8c40698b30c65b9b",
        "e6cef0ec624e12874966fd1cfa2c0642b5a89d0b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 17 16:01:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 17 16:01:52 2017 +0000"
      },
      "message": "Merge \"aaudio: prevent memory leak from double configure\" into oc-mr1-dev am: 8a37a466dc\nam: e6cef0ec62\n\nChange-Id: I60fbfb58f014f1addf3893b49d62d3a090276ace\n"
    },
    {
      "commit": "99306c80f061e4c11f05c21a19bfab6eac01c529",
      "tree": "4c9bceacfa5110d378351fe9cfd732b805808118",
      "parents": [
        "f4eb56ca4eb80124b344a8c6f56c4d1495014c31"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 14 12:38:58 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 16 09:57:49 2017 -0700"
      },
      "message": "aaudio: prevent memory leak from double configure\n\nPrevent AudioEndpoint from being configure()d twice.\nCheck return value of AudioEndpoint.configure().\nPrevent AudioStreamInternal from being open()ed twice.\n\nBug: 64522125\nTest: adb shell dumpsys media.audio_flinger --unreachable\nChange-Id: I3ae07af5610fd1f9e539f884923f781eefcd645f\n"
    },
    {
      "commit": "3e1842c3b2e4d2a60554a3522a90f0b8dca329f3",
      "tree": "9a9a4cd179fad99f593911a01d28e6cb7f2c178e",
      "parents": [
        "847f284bedfabd7971f470619bc3aa5728c45983",
        "c2cf01efdcbc5dfcb4ff221b6dfe674759445cbc"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 11 00:01:55 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 11 00:01:55 2017 +0000"
      },
      "message": "Merge \"aaudio: deleted FifoBuffers to fix memory leak\" into oc-mr1-dev am: 39ebbc5925\nam: c2cf01efdc\n\nChange-Id: I16b24119e17cb1e9a695df8d7f7920b56d05849e\n"
    },
    {
      "commit": "39ebbc59252e0d4450ff670d93093066bab15a88",
      "tree": "61cf51499699a0aed9a5a1ca2cace3302ec817c0",
      "parents": [
        "840f6990fb01d048ebae9036e9f0dbf12b76d4cb",
        "4a8d260f776a3c37908ff49d8baae12b3b1a1f46"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 10 23:50:49 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 10 23:50:49 2017 +0000"
      },
      "message": "Merge \"aaudio: deleted FifoBuffers to fix memory leak\" into oc-mr1-dev"
    },
    {
      "commit": "3173b6f66ed39195d1071f3d13f0e6a317e61e82",
      "tree": "9d4b56cb13364858bbc39ac6bf20271c3a1b6e3a",
      "parents": [
        "38d841eafaeb1237e4060d1ff461b42827d8dbe6",
        "37417526c943ed17405177790e24f381d51492d6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 10 14:32:18 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 10 14:32:18 2017 +0000"
      },
      "message": "aaudio: fix ownership problems with file descriptors\nam: 37417526c9\n\nChange-Id: I7ab11dc9f697394656333f71d12e9deac1f8ecd4\n"
    },
    {
      "commit": "37417526c943ed17405177790e24f381d51492d6",
      "tree": "3f443cc772ae925970e992987f2ed8a8569604a4",
      "parents": [
        "5d6cc7d118a7e91d4fdd3f9dad086cfd1129e4ca"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Aug 08 13:20:45 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 09 20:59:27 2017 -0700"
      },
      "message": "aaudio: fix ownership problems with file descriptors\n\nUse unique_fd to track file descriptors.\nFix extra close of file descriptor in SharedMemoryParcelable.cpp.\nThis bug was causing unrelated file descriptors to be closed!\n\nBug: 64311216\nTest: write_sine.cpp, FD should survive aaudio close\nChange-Id: I4f38c83510a49ea22b79b96d970ee48153417249\nMerged-In: I4f38c83510a49ea22b79b96d970ee48153417249\n"
    },
    {
      "commit": "1389cc47fc04ae8715e9a5b6ed48cd2131b4ad21",
      "tree": "bf1ca351b317058f2389cec5efabcb6c48d9808f",
      "parents": [
        "d3643f0f75085115d365023237ed5fd8da24a8ef",
        "e1ca8625079c30c97b25135d6595a60b902070bc"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 10 03:41:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 10 03:41:02 2017 +0000"
      },
      "message": "Merge \"aaudio: fix ownership problems with file descriptors\" into oc-mr1-dev am: c9f2e060b0\nam: e1ca862507\n\nChange-Id: I0185a7c824c8e5e61adb5f4da17617721eac2ca7\n"
    },
    {
      "commit": "e32eb6dc4c087daa9b2467f97cccc0a53283ebcb",
      "tree": "94b787277ec84cffcb392c241155d6a8751763cf",
      "parents": [
        "2f1bc21fba397242af2510f6d31b4af73c44d1ef",
        "ff6900d8f991aac0b67b625f8a1d4d0461b4c50e"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Thu Aug 10 00:34:08 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 10 00:34:08 2017 +0000"
      },
      "message": "Merge \"Generate IAudioRecord with AIDL.\""
    },
    {
      "commit": "4a8d260f776a3c37908ff49d8baae12b3b1a1f46",
      "tree": "9768f861b072e15589d560cdfe92796035bd737e",
      "parents": [
        "e88fd530455d39e4c770870c74c1198820f62bfe"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 09 16:53:35 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 09 17:12:01 2017 -0700"
      },
      "message": "aaudio: deleted FifoBuffers to fix memory leak\n\nBug: 64522125\nTest: adb shell dumpsys media.audio_flinger --unreachable\nChange-Id: I6045f951b4d793f31cac73e793258e168f74f3f2\n"
    },
    {
      "commit": "e72481c5c16d401c776e0ba49b84b80223769b91",
      "tree": "282c04aa82bba9f854b3125fa8edade0b41f5287",
      "parents": [
        "e88fd530455d39e4c770870c74c1198820f62bfe"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Aug 08 13:20:45 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 09 14:11:57 2017 -0700"
      },
      "message": "aaudio: fix ownership problems with file descriptors\n\nUse unique_fd to track file descriptors.\nFix extra close of file descriptor in SharedMemoryParcelable.cpp.\nThis bug was causing unrelated file descriptors to be closed!\n\nBug: 64311216\nTest: write_sine.cpp, FD should survive aaudio close\nChange-Id: I4f38c83510a49ea22b79b96d970ee48153417249\n"
    },
    {
      "commit": "ff6900d8f991aac0b67b625f8a1d4d0461b4c50e",
      "tree": "1c81319f27784e4d611f7895d519b7754f869c26",
      "parents": [
        "ce10f65fb5b48d81798caa2c2914b016082b5089"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Aug 01 15:47:38 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Aug 09 09:15:59 2017 -0700"
      },
      "message": "Generate IAudioRecord with AIDL.\n\nUse AIDL to generate the IAudioRecord interface rather than using\na manually implemented interface.\n\nBug: 64223827\nTest: Ran the AudioNativeTest and CtsMediaTestCases CTS tests.\n\nChange-Id: Iade23c73253a97c358050bbd697ebe592b89a4c0\n"
    },
    {
      "commit": "d2d6f8414237f564f8c60c26d450276f95e616b9",
      "tree": "731ce09dd735c4bfe3adf2db0884dbb7befaebb6",
      "parents": [
        "932a77919784b16533588884b8044668813f2828",
        "f5095b3373511b88e3254b30c3bc3b99f2ea00f8"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Aug 08 19:43:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 08 19:43:10 2017 +0000"
      },
      "message": "Merge \"Fix double fd close in SharedMemoryParcelable.\" into oc-dr1-dev\nam: f5095b3373\n\nChange-Id: I5e27c40c343717c81361410890924a7240c3272b\n"
    },
    {
      "commit": "c936d84f55f4ac522ee122caf856b7bfd57f8705",
      "tree": "ed8ddf95fb2f795911820cb90c1704858ac445de",
      "parents": [
        "15cda5e5a6c3271ad569268483e77294fcddbf8e",
        "f5095b3373511b88e3254b30c3bc3b99f2ea00f8"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Aug 08 19:42:42 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 08 19:42:42 2017 +0000"
      },
      "message": "Merge \"Fix double fd close in SharedMemoryParcelable.\" into oc-dr1-dev\nam: f5095b3373\n\nChange-Id: Ibcee49b3636fa2c4e84ffac6311567b00fd0267b\n"
    },
    {
      "commit": "1d665bc481c88eef4de2b83caf35ed614b1e487d",
      "tree": "550780a66daaa60bf5739c7c59cc017ac96636e1",
      "parents": [
        "ddef08e7254cd593881711b9f812e062676b4b3d"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Mon Aug 07 19:19:42 2017 -0700"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Aug 08 10:03:00 2017 -0700"
      },
      "message": "Fix double fd close in SharedMemoryParcelable.\n\nBug: 64311216\n\nTest: Checked that close() does not return EBADF.\nChange-Id: Ia98c37d749dd3a6f22708657e8c7c346a9c0c5a4\n"
    },
    {
      "commit": "249617e843ed15988abaf9f0f30e613f0263eb69",
      "tree": "96797ce92a3a5ef22fa71daf2305ce2376abf9c9",
      "parents": [
        "4d519c7becf4891a7aafc3032097a088e72aeda3",
        "ea04d97050e778e7cefb755b442156310afada05"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 08 00:57:35 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 08 00:57:35 2017 +0000"
      },
      "message": "Merge \"aaudio: stop buzzing when MMAP stream disconnected\" into oc-mr1-dev"
    },
    {
      "commit": "d75cc634761653810e3b0d5aea951b5a59f47f83",
      "tree": "07adb23f89b270efdfadb01030b4904814bdcf88",
      "parents": [
        "c73d8f9b2a859fc0a7c805e0f283725ba25001d1",
        "e74240d0f0eb1a5becc3b182c997e18a7559d756"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 07 23:43:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 07 23:43:44 2017 +0000"
      },
      "message": "Merge \"aaudio: restore _get and _setSamplesPerFrame()\" into oc-mr1-dev"
    },
    {
      "commit": "ea04d97050e778e7cefb755b442156310afada05",
      "tree": "bb9a6566e18b07b6a14236713b9e4eb6253c14ba",
      "parents": [
        "fc32901189f8655d3d51064a0366ec9d8264940d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 07 12:30:44 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 07 14:34:55 2017 -0700"
      },
      "message": "aaudio: stop buzzing when MMAP stream disconnected\n\nWhen a stream is disconnected, clear the MMAP memory\nbuffer to prevent the hardware from looping on stale data\nand making a buzzing sound.\n\nBug: 63342351\nTest: play GStomper with AAudio through headphones and then unplug them\nChange-Id: I6372b0a031dea242e3830cc2d226a4c043d4467e\n"
    },
    {
      "commit": "e74240d0f0eb1a5becc3b182c997e18a7559d756",
      "tree": "2ef640b63bde1b43ff8e6a50132e93d4c2474560",
      "parents": [
        "fc32901189f8655d3d51064a0366ec9d8264940d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 15:25:43 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Aug 07 14:03:58 2017 -0700"
      },
      "message": "aaudio: restore _get and _setSamplesPerFrame()\n\nThis restores some deprecated functions that some released apps\nwere calling. Restored:\n\n    AAudioStreamBuilder_setSamplesPerFrame()\n    AAudioStream_getSamplesPerFrame()\n\nBug: 64346279\nTest: put GStomper in AAudio mode using its Settings on Marlin\nChange-Id: I2749a06cded9fc3863d233713efda2674cf7f5e3\n"
    },
    {
      "commit": "a5222e298c294781067950a7cc319d3278fa845a",
      "tree": "69ea25d3c54785ed74af3aee94c5f760d3f13da0",
      "parents": [
        "909f4a6cada3d5fb7594da7d1809ba62d1b47340"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 28 13:31:14 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 10:07:39 2017 -0700"
      },
      "message": "aaudio: improve error logging\n\nReport when INVALID_STATE returned.\nThis was used to debug monkey test errors.\nCleanup some log messages.\nImprove \"dumpsys media.aaudio\"\n\nBug: 64310586\nTest: CTS nativemedia/aaudio\nChange-Id: Ifbcac4794cda22cccbacff6352243c0ef4589c53\n"
    },
    {
      "commit": "909f4a6cada3d5fb7594da7d1809ba62d1b47340",
      "tree": "5c7e4d185460f9147171569db32803e0d08b6ef3",
      "parents": [
        "d4f732fef1773050b6d73c47e112138f46f28e25",
        "efa5600935ca69d87b0f8fb2fb9be7304f0f326e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 03:39:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 03 03:39:54 2017 +0000"
      },
      "message": "Merge \"aaudio: legacy reports EXCLUSIVE when not\" into oc-mr1-dev"
    },
    {
      "commit": "0befec600314a79c0d142c3edd99f7d1c75e1afe",
      "tree": "9aae908902a8dc73d8d9853ee8af49bca2d974de",
      "parents": [
        "dde8d48a32a625297f69c6316c7832f7ec0221fe"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 28 15:12:13 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 00:44:16 2017 +0000"
      },
      "message": "aaudio: update state for legacy mode\n\nAdd logging to the loopback test.\nUpdate state in the callback.\nImplement AAudioStreamRecord::getFramesWritten().\n\nBug: 62781173\nBug: 64214193\nTest: aaudio_loopback.cpp, look for STARTED state while running\nChange-Id: Iba867d048dcfcafe6db1d095abe2766f1aabe608\n"
    },
    {
      "commit": "efa5600935ca69d87b0f8fb2fb9be7304f0f326e",
      "tree": "52e6baa2f1cbe4b4e2f4406e998083bbedf375e3",
      "parents": [
        "eb1c0658e405e5b7e26f4b16761c5b1ce3f77d46"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 02 15:07:21 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 02 15:13:38 2017 -0700"
      },
      "message": "aaudio: legacy reports EXCLUSIVE when not\n\nLegacy streams could return EXCLUSIVE from getSharingMode()\nif requested by caller.  But that is not supported.\nTo avoid misleading developers, we force it to SHARED mode.\n\nBug: 63355841\nTest: setprop aaudio.mmap_exclusive_policy 2 \u0026\u0026 write_sine -x -pn\nChange-Id: I91c82b63293752c6aa2c4933cd2bfe8c6d41a5d3\n"
    },
    {
      "commit": "97350f9df7252c881f011a410fcd9e6d766d2bee",
      "tree": "fab6334a25607e03276648611584b8fc23b40463",
      "parents": [
        "eb1c0658e405e5b7e26f4b16761c5b1ce3f77d46"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 21 15:59:44 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 02 10:57:31 2017 -0700"
      },
      "message": "aaudio: improve accuracy of timestamps\n\nAccount for latency added by the AAudio service.\nFix input timestamps.\n\nBug: 37080396\nTest: test_timestamps.cpp input_monitor.cpp\nChange-Id: I1053cd21af722bb9b9371df4e5731bf4a0a57b0b\n"
    },
    {
      "commit": "f17f49051945a3d289a47ef6572b31c687adcebf",
      "tree": "626b5cfb2c630c1726f9c7037f17f09c4689c152",
      "parents": [
        "2eddd660f9140d50f4e49e7981580dee2356ff54",
        "d937a5cf8533cc571ef2ac03d543bc15aacffdcf"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 21 03:36:13 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 21 03:36:13 2017 +0000"
      },
      "message": "Merge \"aaudio: reduce glitching by improving sleep timing\" into oc-dr1-dev\nam: d937a5cf85\n\nChange-Id: Ic8e3f97c88ec2197a6d66a48eb091d8eea166891\n"
    },
    {
      "commit": "9328361eb4646840f2a491759b6d688004bb61bc",
      "tree": "6353fba065feb3cc47aa55f9bbd5e6639e2e03ce",
      "parents": [
        "c63c9c9a267a5dffeae3463d11053262f77b8b36",
        "d937a5cf8533cc571ef2ac03d543bc15aacffdcf"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 21 03:36:12 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 21 03:36:12 2017 +0000"
      },
      "message": "Merge \"aaudio: reduce glitching by improving sleep timing\" into oc-dr1-dev\nam: d937a5cf85\n\nChange-Id: I8db212d45e2eccf8a7d9785a406cccd49e2167d2\n"
    },
    {
      "commit": "fd34a9310659aa53e9e10d6826651577a75f6447",
      "tree": "dc284d0eb17cbd8a023a2aec52d854c809b02c38",
      "parents": [
        "679b6f6eaaeba35fcf96cb04a784308211d4b319"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 19 07:03:52 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 20 16:10:41 2017 -0700"
      },
      "message": "aaudio: reduce glitching by improving sleep timing\n\nALways sleep a minimum time to avoid busy wait in real-time thread.\nAccount for wakeup jitter in threads on the other side of a FIFO.\nAvoid race condition that caused a longer sleep than necessary.\nFix calculation of mFreeRunning for capture mode.\n\nAlso added systrace logging, which was used to debug this.\n\nBug: 63814792\nTest: Run GStomper on Walleye with MMAP on, see bug\nChange-Id: I7b20098580ff454365425bd21e43c17ade532a0a\n"
    },
    {
      "commit": "67a69ea56423af97a91cac876d10a447cdc21254",
      "tree": "e063a92b3d559d5affd8af255cc7dc6b3d46e052",
      "parents": [
        "e3dd4f59c8383bdec909e87860ede1c7c12407d2",
        "2dd56c9e2c9874471d3c9ec7d2bbfdaccbd554d4"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 18 23:00:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 23:00:50 2017 +0000"
      },
      "message": "Merge \"aaudio: fix intermittent hang and position error\" into oc-dr1-dev am: c1fe2634dc\nam: 2dd56c9e2c\n\nChange-Id: I2324f99835d005d46cc2838888c3cc65e66730a1\n"
    },
    {
      "commit": "2dd56c9e2c9874471d3c9ec7d2bbfdaccbd554d4",
      "tree": "6432b4bd2f70fa04e6be7c02477ac9162923fe68",
      "parents": [
        "d36be4e4d85a2671de4f410b5ed1a6d1314ab553",
        "c1fe2634dc228640119849692cd1defb88bc2209"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 18 22:22:19 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 22:22:19 2017 +0000"
      },
      "message": "Merge \"aaudio: fix intermittent hang and position error\" into oc-dr1-dev\nam: c1fe2634dc\n\nChange-Id: I44d29f0bc88935ccba6b365fec242568d35f6079\n"
    },
    {
      "commit": "c1fe2634dc228640119849692cd1defb88bc2209",
      "tree": "453a26bb059c59f8216f0883768706ea43620c14",
      "parents": [
        "29204646b945adf58390b7d06f2cb223d6b2c4c0",
        "940083c3049e269f6c150d5477eccb6bad32b129"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 18 22:15:39 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 18 22:15:39 2017 +0000"
      },
      "message": "Merge \"aaudio: fix intermittent hang and position error\" into oc-dr1-dev"
    },
    {
      "commit": "32cb394f830758d7703dc1f615e4d2de18c7af1b",
      "tree": "ad51a33972d77084a02392e8f63261a573469b27",
      "parents": [
        "24f8801b22a68204e5ac8187963f07098e9da34a",
        "ef28fdb8d849f1bda5799080b898e429bc29259c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 18 13:57:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 13:57:16 2017 +0000"
      },
      "message": "Merge \"audio:  reduce logspam from MMAP mode\" into oc-dr1-dev am: 4dbbda2d8c\nam: ef28fdb8d8\n\nChange-Id: I611b95222c81d279e75071e0bd369b4e5ad4bd78\n"
    },
    {
      "commit": "ef28fdb8d849f1bda5799080b898e429bc29259c",
      "tree": "41a43d7f1fdcc8043bc3fc7ad8f56de62f7ebb08",
      "parents": [
        "03e1cd73c64654d096243325ac3e6dc3f0b6e2fe",
        "4dbbda2d8c84eabc0cd7c7ee032c2280258f4ffb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 18 13:53:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 18 13:53:16 2017 +0000"
      },
      "message": "Merge \"audio:  reduce logspam from MMAP mode\" into oc-dr1-dev\nam: 4dbbda2d8c\n\nChange-Id: I05dc5fc8eed6e3623f01b87df205d009f04cc3f8\n"
    },
    {
      "commit": "4dbbda2d8c84eabc0cd7c7ee032c2280258f4ffb",
      "tree": "25332d68058c967fcd1686bd9032459b7ab4a8c4",
      "parents": [
        "d8365c54d049aade9e02ccae722f311f846cad9a",
        "c7abac4329e15cda4bbbd25f8fc4a93b70d70d0a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 18 13:47:40 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 18 13:47:40 2017 +0000"
      },
      "message": "Merge \"audio:  reduce logspam from MMAP mode\" into oc-dr1-dev"
    },
    {
      "commit": "940083c3049e269f6c150d5477eccb6bad32b129",
      "tree": "ae4c20530003d7c9086d343a3b3e7d1d5b17562e",
      "parents": [
        "af842eb79ed9943b7a4495136197e093fc7d8ba7"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 17 17:00:02 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 17 17:00:02 2017 -0700"
      },
      "message": "aaudio: fix intermittent hang and position error\n\nFix hang caused by recursive mutex.\nFix disconnect caused by getPosition() failing, which was\njust because the stream wasn\u0027t ready yet.\n\nBug: 63775537\nBug: 63709749\nTest: run \"aaudio_loopback -pl -Pl -c2 -n6 -te -m\" many times\nChange-Id: Ic1d54360b55cfc8ecc1809584c262bc0976c58bb\n"
    },
    {
      "commit": "7e5292c9262f4183b534be945bd76d7c342f20aa",
      "tree": "81bdaa936696c6a357493902db0cfea6592b9a6e",
      "parents": [
        "bf03f3e203fa11ffaa23c971c6788dedc2eea427",
        "1198d860283bfc31b39c587580463eef9fcc6720"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Jul 17 19:12:06 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 17 19:12:06 2017 +0000"
      },
      "message": "Merge \"Add parameters validation on AAudio MMap server\" into oc-dr1-dev am: 30bf42ca72\nam: 1198d86028\n\nChange-Id: I129cded669966e6e1adb3b79e3b76b4299d64bba\n"
    },
    {
      "commit": "1198d860283bfc31b39c587580463eef9fcc6720",
      "tree": "57944797a7387aabdc39243df69a909fe0c2f561",
      "parents": [
        "ef63d8b63e6cc81aaad77e46364d6360a0df5855",
        "30bf42ca7242f5f7849cbe7ce61fc994b88c5b56"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Jul 17 19:09:34 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 17 19:09:34 2017 +0000"
      },
      "message": "Merge \"Add parameters validation on AAudio MMap server\" into oc-dr1-dev\nam: 30bf42ca72\n\nChange-Id: I6e200b18f9d1c7a02b702a41715ef061b5cafdd8\n"
    },
    {
      "commit": "c7abac4329e15cda4bbbd25f8fc4a93b70d70d0a",
      "tree": "f2402076af44c039478a9bfec1017903a702aa40",
      "parents": [
        "af842eb79ed9943b7a4495136197e093fc7d8ba7"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 17 11:13:37 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 17 11:13:37 2017 -0700"
      },
      "message": "audio:  reduce logspam from MMAP mode\n\nBug: 63760826\nTest: run CTS nativemedia/aaudio and notice less logging\nChange-Id: I04564963f85577a53f40f1bad064f5e79723ac76\n"
    },
    {
      "commit": "901f65deb49786f4dffd39ac965c0bb681392c0b",
      "tree": "c80ff068d9aae5d4292387883b24b6be6b2f8ad7",
      "parents": [
        "6ac42ebf890ce99b401e1962db8ceecfb38b7a65"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jul 12 17:56:35 2017 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jul 14 13:42:46 2017 -0700"
      },
      "message": "Add parameters validation on AAudio MMap server\n\nBug: 63384314\nTest: adb shell /system/bin/write_sine -m -pl -n4 \\\n\u0026\u0026 adb shell /system/bin/write_sine -pl -n4 \\\n\u0026\u0026 adb shell /system/bin/write_sine_callback -m -pl -n4 \\\n\u0026\u0026 adb shell /system/bin/write_sine_callback -pl -n4 \\\n\u0026\u0026 adb shell /system/bin/CtsNativeMediaAAudioTestCases32\n\nChange-Id: I462f956e8fc25eb583699af6389e0f299243eafb\n"
    },
    {
      "commit": "96f7b1bcc71945aea42eb23718b632144707927e",
      "tree": "f85b801d74baa1adc346c9ab2f86dd4dbb0fdbe2",
      "parents": [
        "36cc22b90543e5a11fe7eb202a81d563d970dbc8",
        "bc1ab2ffbbc1e185da19f92e5549f6024771e3d8"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Jul 13 22:54:59 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 13 22:54:59 2017 +0000"
      },
      "message": "remove extraneous `using namespace android` and deprecate utils/Log.h am: 357552eb72 am: 8d0dd68b05\nam: bc1ab2ffbb\n\nChange-Id: Ic7a31ca72688507648b404c4ad0c51e091420d91\n"
    },
    {
      "commit": "bc1ab2ffbbc1e185da19f92e5549f6024771e3d8",
      "tree": "8188c53fba5bf53640eccc4f14684117f9fe1ead",
      "parents": [
        "556a5a06e8fab58cdf3f449c5f9de64daffae763",
        "8d0dd68b05a7a82d684ad78a0d33c8b9ddfc526f"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Jul 13 22:51:59 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 13 22:51:59 2017 +0000"
      },
      "message": "remove extraneous `using namespace android` and deprecate utils/Log.h am: 357552eb72\nam: 8d0dd68b05\n\nChange-Id: I49931f5a7becf28517e3801f6089fb720746a2ee\n"
    },
    {
      "commit": "357552eb724722dc620c56d2151bdfad07467952",
      "tree": "54dae79fff516a8d0d9e95a303a6c3680e3bf0df",
      "parents": [
        "37cd5f116dfbde69be3625e7a2112346393b0ef1"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Jul 12 13:48:26 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Jul 13 22:39:27 2017 +0000"
      },
      "message": "remove extraneous `using namespace android` and deprecate utils/Log.h\n\nThis namespace is not used by this file and its declaration is removed\nin a separate CL from utils/Log.h, which is the only place it is\ndefined, so we must remove this extraneous line.\n\nAlso, since that separate CL is deprecating utils/Log.h in favor of\nlog/log.h, we make the switch to the new header.\n\nTest: Build\nExempt-From-Owner-Approval: Owners file needs updating\nChange-Id: I34aa80765d30c79f8cb67eaf95a9995066bd672e\n"
    },
    {
      "commit": "cb4dae216758d9e9a28050f65097f1ce905c03e9",
      "tree": "4c3c49679384d70006675e9e06c7e8e8117e206c",
      "parents": [
        "0acb3209107802e2ab116f8374aab886579729bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 01 19:39:32 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 12 12:17:33 2017 -0700"
      },
      "message": "aaudio: indicate client UID and PID to audio flinger\n\nImplement correct indication of client UID and PID to audio flinger\nfor AAudio MMAP streams in both exclusive mode and shared mode.\n- Add start/stop client methods on MMAP streams used only when the MMAP\nstream is in AAudio service and carries a mix of shared streams.\n- Add \"In Service\u0027\" indication from \"client\" side to AAudioServiceStreamMMAP\nso that the behavior can be adapted accordingly.\n- Modify logic on audio flinger side with regard to mmap tracks and\naudio HAL stream activity:\n  - use same audio session for all clients on a same stream to match\n  audio policy logic to share same direct output stream for clients on same\n  session. This is also more consistent with current volume and effect\n  handling as all MMAP  clients sharing the same output stream have the\n  same volume and use case.\n  - start/stop the HAL when the stream is started/stopped with the initial client\n  handle (returned when the stream is opened) but do not create a track.\n  AAudioService implementation will always send an additional start command before\n  first client starts and a stop command after last client stops,\n  in both shared and exclusive mode.\n  - start/stop a track only if the start/stop stream command is received\n  with a handle different from the initial handle.\n- Allow more than one active client from the same UID on a MMAP input in audio policy.\n\nBug: 62950008\nTest: verify playback and capture in mmap mode\nMerged-In: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\nChange-Id: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\n"
    },
    {
      "commit": "a54f1283fdd9adbd64ecca4e14af56aaa0e8c825",
      "tree": "cdadd19276119f775480482778c2df15a6ae264f",
      "parents": [
        "20e6916035865710b7a30ac7f2eac1311e2c2e70"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 01 19:39:32 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 11 18:21:40 2017 -0700"
      },
      "message": "aaudio: indicate client UID and PID to audio flinger\n\nImplement correct indication of client UID and PID to audio flinger\nfor AAudio MMAP streams in both exclusive mode and shared mode.\n- Add start/stop client methods on MMAP streams used only when the MMAP\nstream is in AAudio service and carries a mix of shared streams.\n- Add \"In Service\u0027\" indication from \"client\" side to AAudioServiceStreamMMAP\nso that the behavior can be adapted accordingly.\n- Modify logic on audio flinger side with regard to mmap tracks and\naudio HAL stream activity:\n  - use same audio session for all clients on a same stream to match\n  audio policy logic to share same direct output stream for clients on same\n  session. This is also more consistent with current volume and effect\n  handling as all MMAP  clients sharing the same output stream have the\n  same volume and use case.\n  - start/stop the HAL when the stream is started/stopped with the initial client\n  handle (returned when the stream is opened) but do not create a track.\n  AAudioService implementation will always send an additional start command before\n  first client starts and a stop command after last client stops,\n  in both shared and exclusive mode.\n  - start/stop a track only if the start/stop stream command is received\n  with a handle different from the initial handle.\n- Allow more than one active client from the same UID on a MMAP input in audio policy.\n\nBug: 62950008\nTest: verify playback and capture in mmap mode\nChange-Id: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\n"
    },
    {
      "commit": "c25cb7709303bc9f88902185374728df3571a966",
      "tree": "b1b5205d6bbc15e7b0bae32ffe71c08807724313",
      "parents": [
        "723310ac8d40edc70fee934b28d8c1ece3b67222",
        "983bd9792caa00f00aff246c21f236974409c9ba"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 06 04:18:35 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 06 04:18:35 2017 +0000"
      },
      "message": "Merge \"aaudio: MMAP input not implement pause flush\" into oc-dr1-dev am: 014a56b57a\nam: 983bd9792c\n\nChange-Id: Id42d514e3ea583ea340e828288052a85fac8381f\n"
    },
    {
      "commit": "b336e89d57d51b80b8bf5f0a0caf7667209ffb1d",
      "tree": "58772fbc45cad4cea3c51e080c18e95981ec8c90",
      "parents": [
        "27e9c662948b1edc5219f2faba1a72fb00fd791a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 15:35:43 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 06 01:38:49 2017 +0000"
      },
      "message": "aaudio: MMAP input not implement pause flush\n\nThey should return AAUDIO_ERROR_UNIMPLEMENTED\njust like the legacy streams.\n\nBug: 63351465\nTest: CTS test_aaudio.cpp testPauseAndFlushNotSupported\nChange-Id: I42c8d45517bf0d808e648287579b9fb0c0cb3ae0\n"
    },
    {
      "commit": "04169afbaeafca6cf3bba5ee2b0f5bd3654188e9",
      "tree": "79684d632f333f3946d345deca43ef017940ea74",
      "parents": [
        "87c9ee8b15ff58bc5449c0d92333fc9f451ac48e",
        "7cb561922049c89bd059ae97a884b30a03330342"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 23:52:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 05 23:52:44 2017 +0000"
      },
      "message": "Merge \"aaudio:  only use MMAP for low latency perf mode\" into oc-dr1-dev am: 27e9c66294\nam: 7cb5619220\n\nChange-Id: Idfdd35ec698e0f24865b4e8d0fa8083394f495fe\n"
    },
    {
      "commit": "27e9c662948b1edc5219f2faba1a72fb00fd791a",
      "tree": "33ce20becd82198f8616d48b21a48bfad42a54a2",
      "parents": [
        "a5247769a8afdf03f440fcbe7c71110d46301e6b",
        "ede7c963ceb253f213754a3512fad58eec5c4aea"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 05 23:04:33 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 05 23:04:33 2017 +0000"
      },
      "message": "Merge \"aaudio:  only use MMAP for low latency perf mode\" into oc-dr1-dev"
    },
    {
      "commit": "87c9ee8b15ff58bc5449c0d92333fc9f451ac48e",
      "tree": "b8257f4ead37dab20b3c483e9918b5201c68a7e6",
      "parents": [
        "39e88a617aa8e291bc21fcc73a30c10f8fcbb5c5",
        "bfa6c20fb457aac28e02fe0ff79d44e5224d946d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 22:26:07 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 05 22:26:07 2017 +0000"
      },
      "message": "aaudio: return channelCount in legacy stream am: a5247769a8\nam: bfa6c20fb4\n\nChange-Id: I863862980f48f5f208b41448833b8144e9c7aa49\n"
    },
    {
      "commit": "ede7c963ceb253f213754a3512fad58eec5c4aea",
      "tree": "8b1d7a8aad6b5360dc0a51dc23a8465dc656a9d3",
      "parents": [
        "d51329eca85112973867a6bf0d210e82d6d1c411"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 13:54:32 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 13:54:32 2017 -0700"
      },
      "message": "aaudio:  only use MMAP for low latency perf mode\n\nThis is a quick workaround that just disables MMAP mode unless\nperformance mode is LOW_LATENCY.\n\nBug: 63176221\nTest: use write_sine and change performance mode\nChange-Id: Ic17ad45366d51d86fb4801c84ada4f6f82b5ff98\n"
    },
    {
      "commit": "a5247769a8afdf03f440fcbe7c71110d46301e6b",
      "tree": "cb73026e84bd354b6eb2f49c1b132f856f6a199d",
      "parents": [
        "d51329eca85112973867a6bf0d210e82d6d1c411"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 12:57:58 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 05 12:57:58 2017 -0700"
      },
      "message": "aaudio: return channelCount in legacy stream\n\nBug: 63336407\nTest: Use input_monitor.cpp and set requested channel count to zero\nChange-Id: Ibe7688bb94e0142ee0779c74ddec62c9552efb79\n"
    },
    {
      "commit": "38217e0d53b14e634243d1ce36fa5d3267c71056",
      "tree": "3ddf472b051c944a6c1039b2acac9ac1c01fafb9",
      "parents": [
        "ee05ff049fb5c6f394f806e58c3f2ec28e8957af",
        "b66815f31c762eef2d1b84fa6f5d9f9b158ca18c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 02 02:32:49 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Jul 02 02:32:49 2017 +0000"
      },
      "message": "aaudio: enable exclusive MMAP mode support am: d51329eca8\nam: b66815f31c\n\nChange-Id: I02e0c91d5ce2dc0ceb7b47aa27c6c63a69e90a3a\n"
    },
    {
      "commit": "d51329eca85112973867a6bf0d210e82d6d1c411",
      "tree": "f29ad645223b5ea22b709f4d3362f27aa14d6a9a",
      "parents": [
        "4501b3510f9b2af2ff63a0471de24e3feea1d0a8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 30 16:06:16 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 02 00:32:10 2017 +0000"
      },
      "message": "aaudio: enable exclusive MMAP mode support\n\nAllow exclusive MMAP mode only if the HAL indicates\nthat the FD returned for shared memory buffer can be shared\nwith any application.\n\nNOTE: the way the HAL indicates this is temporary until the audio\nHAL is modified in next HIDL release.\n\nBug: 37167970\nTest: check playback and capture in mmap exclusive and shared mode\nChange-Id: I09c1461b2f99532ded2ef9d36d483b82096fda68\n"
    },
    {
      "commit": "ee05ff049fb5c6f394f806e58c3f2ec28e8957af",
      "tree": "225a7f2b71be6bf853e721d9983a858aa51e7ef6",
      "parents": [
        "79ab080b8942004b814f01c59c144fe232ba1618",
        "c2080abab02fa8ccb7e94591a26a06f619f73bea"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jul 01 23:56:41 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jul 01 23:56:41 2017 +0000"
      },
      "message": "aaudio: improved dumpsys am: 4501b3510f\nam: c2080abab0\n\nChange-Id: Ia64a1040bca886c8bcd25ce4e7ac7c1703680798\n"
    }
  ],
  "next": "4501b3510f9b2af2ff63a0471de24e3feea1d0a8"
}
