)]}'
{
  "log": [
    {
      "commit": "a0983dbcc94be77d6eb1ff4d3e609f9dc8a55eb3",
      "tree": "b0c3f95adf890f9d0eaffd7628df32798f312310",
      "parents": [
        "3e0188ff41dd932d2395d3de2d9d736f72930417",
        "0bd745eb91487821ce415272fb49a567483bde43"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 02 23:40:53 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 02 23:40:53 2020 +0000"
      },
      "message": "Merge \"aaudio: add thread safety annotation\""
    },
    {
      "commit": "0bd745eb91487821ce415272fb49a567483bde43",
      "tree": "2b3f952b01ea3dfa680317fd50a8e8db65ad45ce",
      "parents": [
        "11b45e9f0a31783c7fa1d28281a489dfe47a9982"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Oct 17 18:20:01 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 02 20:25:22 2020 +0000"
      },
      "message": "aaudio: add thread safety annotation\n\nAlso improve naming to clarify lock requirements.\n\nAnd call some locked methods that were not called before.\nAlthough they were protected with a different lock so\nit should have no effect.\n\nBug: 171296283\nTest: adb logcat *:F\nTest: In another window:\nTest: atest AAudioTestCases\nChange-Id: I6e863cbdea9250188e3f4b8f8654ef71c8951e74\n"
    },
    {
      "commit": "23c292430ce90152d03ceca3cc6b3a678626d854",
      "tree": "50c7728807bbbaf08b26ede890f639cf0ac2b48b",
      "parents": [
        "c9ae6a729ac7dfc87e969bd4693d33287edc0bf1",
        "f33115ddd726e1bb3b76565b7350a49c433afe40"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 26 18:24:08 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 26 18:24:08 2020 +0000"
      },
      "message": "Merge \"Use system/audio to/from string converters in TypeConverter\""
    },
    {
      "commit": "f33115ddd726e1bb3b76565b7350a49c433afe40",
      "tree": "69db6ec5330f39b9ae64cdf65deafe04b404d617",
      "parents": [
        "d6fe406c865072f4d139756a48487d34fed0f07f"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 25 23:03:05 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 23 00:04:22 2020 +0000"
      },
      "message": "Use system/audio to/from string converters in TypeConverter\n\nUse of system functions eliminates the need for listing all enum\nvalues in TypeConverter tables.\n\nSlight changes in the converting functions:\n\n1. \u0027channelMaskFromString\u0027 function now also accepts indexed\n   masks.\n2. Fixed UB in \u0027formatFromString\u0027 function.\n3. Removed \u0027deviceFromString\u0027 function, use\n   \u0027DeviceConverter::fromString\u0027 instead.\n\nReplaced direct includes of \u0027system/audio-base.h\u0027 with\nincludes of \u0027system/audio.h\u0027.\n\nBug: 142480271\nTest: m\nTest: atest libmedia_helper_tests\nChange-Id: Ia0e725026be80621bdc797299e63e134419b2b3d\n"
    },
    {
      "commit": "dd582929677fab6ffdb52f36cd1e16855bb7321a",
      "tree": "76c8557c340edeacb098665d331ba7a7f6f398e2",
      "parents": [
        "9bcf4989bf3e09167503e94571b15626e56f4453"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 15 20:29:51 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Oct 21 00:37:34 2020 +0000"
      },
      "message": "aaudio: cleanup thread handling\n\nFix problem when an attempt is made to join the callback from the\ncallback. It used to leave mHasThread in the wrong state.\nThis was fixed in AAudioThread and in AudioStream.\n\nAdd \"_l\" suffix to functions that need to be locked.\n\nSimplify the way that reference counted objects are passed to threads\nusing incStrong() and decStrong().\n\nBug: 171296283\nTest: atest AAudioTestCases\nChange-Id: I034049c4cb9021c6073fff441e49214ee898b804\n"
    },
    {
      "commit": "9bcf4989bf3e09167503e94571b15626e56f4453",
      "tree": "f469a96aac072841fc39bc8710002b4e25a4ccd8",
      "parents": [
        "14a1a17354d3ab55804ec688051a405dc0c320d6",
        "78d02237ebe6c90d36dca7b6da5e867ac6295318"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 20 03:29:05 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 20 03:29:05 2020 +0000"
      },
      "message": "Merge \"Revert \"Use system/audio to/from string converters in TypeConverter\"\""
    },
    {
      "commit": "78d02237ebe6c90d36dca7b6da5e867ac6295318",
      "tree": "fb81c7a5bacfec08f2d9c4d71f0559a26c95d8e3",
      "parents": [
        "0f243bbaf628bf8aa873e978feb720d3354b476c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 20 01:29:53 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 20 01:29:53 2020 +0000"
      },
      "message": "Revert \"Use system/audio to/from string converters in TypeConverter\"\n\nRevert \"audio: Align lists of enum values between framework and HAL\"\n\nRevert submission 12851233-hal-enum-strings\n\nReason for revert: breaks slider device\nReverted Changes:\nI4f64a8b61:Use system/audio to/from string converters in Type...\nIddaa92bf2:Move enums shared with HAL to audio-hal-enums.h\nIe5896775b:audio: Align lists of enum values between framewor...\n\nBug: 171262726\nChange-Id: I7568c41c5641cf120ffacbfda4751c3bb1c4e4f8\n"
    },
    {
      "commit": "14a1a17354d3ab55804ec688051a405dc0c320d6",
      "tree": "a367deee603744e4f22e7018a795bd7cdc9a81a1",
      "parents": [
        "2254ae51fa1c681eb39a79a2d60f36c5d48ad0ee",
        "e358ec63eedd7a6289984b1f2468c5c16c2ff6c8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 19 23:08:05 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 19 23:08:05 2020 +0000"
      },
      "message": "Merge \"aaudio: use strong pointer to protect callback\""
    },
    {
      "commit": "e358ec63eedd7a6289984b1f2468c5c16c2ff6c8",
      "tree": "dc2daf58088b5586cfe6be9abfb92987d6749899",
      "parents": [
        "7aed66e788c8955ddd22a1235856bb9dac34d82a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Oct 12 23:42:30 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Oct 19 20:31:17 2020 +0000"
      },
      "message": "aaudio: use strong pointer to protect callback\n\nHold a strong pointer to the AudioStream so it cannot get deleted while\nthe MMAP callback is running.\n\nAlso fixes disconnect for shared streams, which was broken\nby a previous attempt to fix b/166877425\n\nBug: 166877425\nBug: 170551030\nTest: see bug for details\nTest: atest AAudioTestCases\nTest: OboeTester V1.5.30 or later, \"TEST DISCONNECT\"\nChange-Id: I236e2d68632070d253d14ddf7b9d7076e068830a\n"
    },
    {
      "commit": "0f243bbaf628bf8aa873e978feb720d3354b476c",
      "tree": "3c065d2ff4b39a12ea3b830e82ada2597e907ece",
      "parents": [
        "e3bca196dbe931f0d7c26394c6224784224da459"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 25 23:03:05 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 16 23:00:44 2020 +0000"
      },
      "message": "Use system/audio to/from string converters in TypeConverter\n\nUse of system functions eliminates the need for listing all enum\nvalues in TypeConverter tables.\n\nSlight changes in the converting functions:\n\n1. \u0027channelMaskFromString\u0027 function now also accepts indexed\n   masks.\n2. Fixed UB in \u0027formatFromString\u0027 function.\n3. Removed \u0027deviceFromString\u0027 function, use\n   \u0027DeviceConverter::fromString\u0027 instead.\n\nReplaced direct includes of \u0027system/audio-base.h\u0027 with\nincludes of \u0027system/audio.h\u0027.\n\nBug: 142480271\nTest: m\nChange-Id: I4f64a8b6164bb5ad94cbf1da1709cb379f4a75fa\n"
    },
    {
      "commit": "55773033ed1f23c4e8f3d2704002fbd0cedbf7a5",
      "tree": "54bc894243fa3c52e611c85aed75ee6677056c13",
      "parents": [
        "7aed66e788c8955ddd22a1235856bb9dac34d82a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 01 15:08:13 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 08 18:12:55 2020 -0700"
      },
      "message": "Convert mask types from uint32_t to enum type\n\nThis applies to the following types:\n\n- audio_gain_mode_t;\n- audio_flags_mask_t;\n- audio_channel_representation_t;\n- audio_channel_mask_t;\n- audio_devices_t.\n\nEnum types are distinct thus proper overloading on the type\nis possible in C++. Also, assignments to enum types are\nless prone to errors.\n\nBug: 169889714\nTest: basic audio functionality\n      m stagefright\n      atest audiopolicy_tests\nChange-Id: I42506484b1d0b0482618b7314fad4c8012a06fb4\n"
    },
    {
      "commit": "8d97b8e3760686f2f1c74a4bb4a703f1bc465060",
      "tree": "8e5c3cf36e442a8853d45d560db9c7c1595674aa",
      "parents": [
        "301e21d47ff0c8392015a66952241e03188b70bb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 25 23:18:14 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Sep 29 21:43:35 2020 +0000"
      },
      "message": "aaudio: cache framesPerBurst and capacity\n\nThese do not change after opening the stream so we can\nsimply return a stored value and avoid querying the device.\n\nTest: atest AAudioTests\nChange-Id: I7a66c12bd695fd732194ff0a14ac9c8d9cacf923\n"
    },
    {
      "commit": "c5f4587cddb7ec90320df3d6233baffd5d8f93a1",
      "tree": "cd3dc205f82010918de2298a33f8d6bf8aec5ed2",
      "parents": [
        "734e3505e8222fd5c146dfa935f80b6ae3ce3003"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Aug 18 10:39:44 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 11 16:33:19 2020 -0700"
      },
      "message": "Convert AAudioService to AIDL\n\nThis change removes all hand-written binder code associated with\nparceling of AAudio types and IAAudioService interface.\n\nThe existing types defined in the \u0027binding\u0027 directory have not been\nreplaced by their AIDL counterparts, but rather were made convertible\nto/from them (in lieu of them being parcelables themselves).\nThe reasons are:\n- Some of those types offer additional functionality rather than\n  simply being data containers / serializers. For example, the\n  SharedMemoryParcelable type supports mmaping a memory region.\n- Reduce impact on existing code, which relies on the interface\n  offered by those type, which is different than the interface offered\n  by their AIDL counterparts.\n\nThe conversion between those types and their parcelable counterparts\nis handled at the edge of the client (inside AAudioBinderAdapter) and\nserver (inside AAudioService) code.\n\nFuture changes may gradually get rid of the duality by retiring the\ndata types in the \u0027binding\u0027 directory, inlining some of the features\nthey are offering (such as accessor methods) and replacing others with\nutility functions, operation on the parcelables directly.\n\nBug: 160253486\nTest: Manual testing using OboeTester\n      Ran atest CtsNativeMediaAAudioTestCases\n      Ran atest test_aaudio_marshalling\nChange-Id: I6eed19246a472dc31c1e2d6d2112d7562cf8940c\n"
    },
    {
      "commit": "734e3505e8222fd5c146dfa935f80b6ae3ce3003",
      "tree": "c7f54bbbf2d764150c550813ea32e09c4d6583cf",
      "parents": [
        "0412f73c6eb83e51832b9b7aaa57a4dc0239e6a5"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Aug 24 14:57:36 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 11 16:33:15 2020 -0700"
      },
      "message": "Avoid AAudioService-\u003eAAudioServiceInterface inheritence\n\nThis is required in order to prepare for divergence of\nAAudioServiceInterface from BnAAudioService: if AAudioService\ninherits from both, we would have method collisions as soon as we\nchange the signatures on one of the interfaces.\n\nWe achieve the same behavior with an adapter, which in this change is\ncompletely trivial, but will be used as soon as the interfaces\nactually diverge.\n\nBug: 160253486\nTest: Manual testing using OboeTester\n      Ran atest CtsNativeMediaAAudioTestCases\nChange-Id: I0d3e41e2378f1e6ff9cbe37461682f7373f463f2\n"
    },
    {
      "commit": "0412f73c6eb83e51832b9b7aaa57a4dc0239e6a5",
      "tree": "4c0803d4e215de220b0c2c15ca50c79959f47eda",
      "parents": [
        "10a7efe0387b11acc57cf6cea3f2ae594b1d8907"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Aug 17 14:43:36 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 11 12:39:20 2020 -0700"
      },
      "message": "Convert IAAudioClient to AIDL\n\nBug: 160253486\nTest: Manual testing using OboeTester\n      Ran atest CtsNativeMediaAAudioTestCases\nChange-Id: I18e6c03144c59ce78181abf7c509c21f2724ad22\n"
    },
    {
      "commit": "e69bfcbc7c7494bf62a100a5058aca0d36a3771e",
      "tree": "0590380e03dbdefb57c8094cb996c531ce9e739f",
      "parents": [
        "f3a626fa54d1ad52673655edaf849b5a6b7c44ab"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 20 00:10:35 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 02 21:48:03 2020 +0000"
      },
      "message": "aaudio: use natural burst size for recording\n\nThis is similar to ag/12420089\nbut is for input streams.\n\nBUG: 165675305\nTest: see bug for detailed repro steps\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I9b6dfb4d4e9c22d8aac51f86149d7c3bf29cb990\n"
    },
    {
      "commit": "b8a9dbbf791adf7f1a0ab87d7a35770074e88cc8",
      "tree": "a2f91436efd8587def9e765d333387fed6a03b7f",
      "parents": [
        "763136770b0bb6828cf7628a9b3bbf09b0741ae2"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 27 04:12:26 2020 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 27 04:12:26 2020 +0000"
      },
      "message": "Revert \"Snap for 6793014 from 424180bdc4aa18249e678daebfd0fcf936...\"\n\nRevert \"Snap for 6793014 from fd1ad6750ef332d3f50f218f4d5d148e6e...\"\n\nRevert \"Snap for 6793014 from 7594ec6384c4da320726def34f477736f9...\"\n\nRevert \"Snap for 6793014 from bbbccc3c2b7fc7c5780f6c415c4223e1d0...\"\n\nRevert \"Snap for 6793014 from 44725f06b7f7d6407b5ee82d989bdd6c7a...\"\n\nRevert \"Snap for 6793014 from f22ad3164937a8f2e309965c102b6366d5...\"\n\nRevert \"Snap for 6793014 from 11467102abddb6026aaa164c1361439c2d...\"\n\nRevert \"Snap for 6793014 from 265280bf5cb4bc14e132c3a35ae5f7ae65...\"\n\nRevert \"Snap for 6793014 from f2989f9c65556d5155dbd57f82f0c93a16...\"\n\nRevert \"Snap for 6793014 from 8b8bf0a07b0521bbe8483fbbab1222ffd6...\"\n\nRevert \"Snap for 6793014 from 3777d883a3857b1a1589181c436d9018d7...\"\n\nRevert \"Snap for 6793014 from 3157b4ee4325286f0c2ab0f26528460c8b...\"\n\nRevert \"Snap for 6793014 from a43295d1825da62af038d345a7a861ed7a...\"\n\nRevert \"Snap for 6793014 from 2076be4d27078d6ebc0a6b5e5ceb386109...\"\n\nRevert \"Snap for 6793014 from d0e31526c62b2aeb35c293ac96feb180fc...\"\n\nRevert \"Snap for 6793014 from 7a3a8c6351d5167a6ae0b33bc376efabd2...\"\n\nRevert \"Snap for 6793014 from 41471cb21bb16b5c3bcc92f84293b79684...\"\n\nRevert \"Snap for 6793014 from 42e5cca3cfb829690c9d8c6aca57a8e7d5...\"\n\nRevert \"Snap for 6793014 from 4f81304963d19f4511b1e8e7d0aad87a67...\"\n\nRevert \"Snap for 6793014 from 07602cdacf5bcc835db41f7eaa24af9964...\"\n\nRevert \"Snap for 6793014 from 14cb57e107a3abce8b14937b1f92c28d18...\"\n\nRevert \"Snap for 6793014 from ab1e4a81d09a540a5f927059e5bc03a606...\"\n\nRevert \"Snap for 6793014 from 8c65adad0bcdfb3acc561063b4048dca24...\"\n\nRevert \"Snap for 6793014 from b3061942700265e2bf04af9997775dcbbb...\"\n\nRevert \"Snap for 6793014 from 551c5953fc62e339e4ee884ec2cd0ac3be...\"\n\nRevert \"Snap for 6793014 from 4919273b2ac5c6347a18e17c5ec70d8da6...\"\n\nRevert \"Snap for 6793014 from 988d4244914e0c749655e8cb6db18ba44f...\"\n\nRevert submission 12465146-release-request-6b259cbc-1f45-4b05-bc7e-c9b893b79d68-for-git_main-busytown-release-6793014\n\nReason for revert: b/166531456\nReverted Changes:\nI5ff7a6c0d:Snap for 6793014 from f2989f9c65556d5155dbd57f82f0...\nI77bdff943:Snap for 6793014 from a43295d1825da62af038d345a7a8...\nI2ac5c520a:Snap for 6793014 from c3f124cca05579acf0a6cb589ebd...\nI023b9702f:Snap for 6793014 from 98756d6d3e2bb0ba28eb125caa7a...\nIbc7893d72:Snap for 6793014 from fd1ad6750ef332d3f50f218f4d5d...\nIc27847bee:Snap for 6793014 from 8c65adad0bcdfb3acc561063b404...\nIf20bc9352:Snap for 6793014 from 7a3a8c6351d5167a6ae0b33bc376...\nI6542d17e8:Snap for 6793014 from 3777d883a3857b1a1589181c436d...\nI66e6bb8a9:Snap for 6793014 from 8b8bf0a07b0521bbe8483fbbab12...\nI3cd190b6b:Snap for 6793014 from 424180bdc4aa18249e678daebfd0...\nIf92db7402:Snap for 6793014 from ab1e4a81d09a540a5f927059e5bc...\nIaced03c87:Snap for 6793014 from d0e31526c62b2aeb35c293ac96fe...\nI5d28c6b4b:Snap for 6793014 from 4f81304963d19f4511b1e8e7d0aa...\nI30d07bea3:Snap for 6793014 from 7594ec6384c4da320726def34f47...\nI473205f48:Snap for 6793014 from 551c5953fc62e339e4ee884ec2cd...\nI0656b41af:Snap for 6793014 from 44725f06b7f7d6407b5ee82d989b...\nI0f9796067:Snap for 6793014 from 4919273b2ac5c6347a18e17c5ec7...\nI9a38cda8f:Snap for 6793014 from 2076be4d27078d6ebc0a6b5e5ceb...\nI876a82f51:Snap for 6793014 from 11467102abddb6026aaa164c1361...\nI749d7d023:Snap for 6793014 from 41471cb21bb16b5c3bcc92f84293...\nI038daea41:Snap for 6793014 from 07602cdacf5bcc835db41f7eaa24...\nI47aa3131c:Snap for 6793014 from 14cb57e107a3abce8b14937b1f92...\nI32dba8a95:Snap for 6793014 from 3157b4ee4325286f0c2ab0f26528...\nI2ebc9f9db:Snap for 6793014 from 988d4244914e0c749655e8cb6db1...\nIae7c3370f:Snap for 6793014 from 9ffb8852294e06e2d387dc1fb868...\nI6467a7f1b:Snap for 6793014 from 42e5cca3cfb829690c9d8c6aca57...\nI8c6375203:Snap for 6793014 from b3061942700265e2bf04af999777...\nI843b2e1f3:Snap for 6793014 from 265280bf5cb4bc14e132c3a35ae5...\nIe254f7079:Snap for 6793014 from f22ad3164937a8f2e309965c102b...\nI01e0974ed:Snap for 6793014 from bbbccc3c2b7fc7c5780f6c415c42...\n\nChange-Id: I00c786b898b73e58db8bcb1dd0cf3fdaa1ae3038\n"
    },
    {
      "commit": "58f5ce146a8c2b25cc3bbd18df6e264addda2684",
      "tree": "cf2893c9d5da9aa989c88cf2fa8b14dad6d3861a",
      "parents": [
        "320910fcf1e7d7729f37f95f591093191414e73f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 12 14:29:10 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 20 01:03:06 2020 +0000"
      },
      "message": "aaudio: prevent onAudioDeviceUpdate past close\n\nTo prevent late device update callbacks, the AudioStream\nwas made into a RefBase AudioDeviceCallback.\nSo now we can use a smart pointer to delay deletion of the\nstream if any callbacks are in flight while the stream is closed.\n\nSo an AudioStream is now a RefBased object and can be used with\nandroid::sp. That required some changes to the way it is referenced\nin several places.\n\nMyPlayerBase was modified to use a weak pointer to the parent stream.\n\nBug: 161914201\nBug: 163165126\nBug: 164411271\nTest: see bug for repro of the crash\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Ic24aca3eaf5d1610504bb89c06001a37d0d4a1c3\n"
    },
    {
      "commit": "320910fcf1e7d7729f37f95f591093191414e73f",
      "tree": "e7052b3542898e68b5dbe5f5785ef0a19946bc2b",
      "parents": [
        "f356189f05884926290b1f7920241ef15674cbc6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 12 14:29:10 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Aug 18 18:51:03 2020 +0000"
      },
      "message": "aaudio: fix crash from callbacks during close\n\nMove some code from release_l() into a new close_l().\nAlso stop callbacks before freeing memory in the\nFixedBlockReader.\n\nThe AudioTrack and AudioRecord callbacks can occur\nup until their destructors are called. This can lead\nto race conditions if the AAudio stream is dismantled\nwhile the AudioTrack or AudioRecord is still alive.\nThe AudioRecord was being deleted but not the AudioTrack.\nThat caused some streams to fail if they were using\na FixedBlockReader, which is used when the app\ncalls AAudioStreamBuilder_setFramesPerDataCallback().\n\nThere was also a problem with a few functions like\nAAudioStream_getFramesPerBurst() or AAudioStream_getTimestamp(),\nwhich would crash if called after AAudioStream_release( for\nINPUT streams.\n\nBug: 161914201\nBug: 163165126\nTest: see bug for repro of the crash\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: If8f6f6f17ffe06eae98eb8b3930bca08c49a15f8\n"
    },
    {
      "commit": "8f4fe50dc17dab7d809ad215ab62dc86de888731",
      "tree": "5a83f0b41cb2ce576cf1e230321b6cdff137f818",
      "parents": [
        "a524c363821353a541442e3b23449875b797b09d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 15 23:54:50 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 06 19:00:12 2020 +0000"
      },
      "message": "aaudio: refactor references to shared FIFO\n\nReduce passing of raw pointers.\nUse shared_ptrs and unique_ptrs.\nSimplify memory management.\n\nRefactor FifoBuffer into two subclasses so that\nthe internal memory management is simpler.\n\nBug: 151650670\nTest: OboeTester \"TEST OUTPUT\"\nTest: disable EXCLUSIVE mode\nTest: OboeTester \"ECHO INPUT TO OUTPUT\"\nTest: disable INPUT EXCLUSIVE mode\nChange-Id: I10981767f8719f3cc3525df211285c53219a7979\n"
    },
    {
      "commit": "bb551703b691060c8e1a9c9878b78e3f9742e9a0",
      "tree": "2a7263751f763ec5dc2513f684f85d0f0a8f90ac",
      "parents": [
        "80f49ee74e278929c89db6e8705d009b6ab71186",
        "503495884fa9a06a7cb6473d36d69d6a13808887"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 30 19:34:19 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jul 30 19:34:19 2020 +0000"
      },
      "message": "Merge \"aaudio: Update language to comply with Android\u0027s inclusive language guidance\" am: cf7197e3ce am: 63347a7185 am: 39075258a9 am: b6e842223b am: 503495884f\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1375100\n\nChange-Id: Ib78c0f39e9163c4e8db1482db6659fbb98a88bbb\n"
    },
    {
      "commit": "39075258a92d969a6ea438cfe2ad298de01de7ad",
      "tree": "bac30dc7c62357c1678fd8e1de89a8d3c6858411",
      "parents": [
        "86b249c78a265e37a9516a50aee17919b4b22c14",
        "63347a718527003a3a3516f2eebe962f6fee860d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 30 18:33:52 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jul 30 18:33:52 2020 +0000"
      },
      "message": "Merge \"aaudio: Update language to comply with Android\u0027s inclusive language guidance\" am: cf7197e3ce am: 63347a7185\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1375100\n\nChange-Id: I0c7f3a971c70e894f739ed4b6bf7c2d5959bc16c\n"
    },
    {
      "commit": "18142aed005974bf6bee76ece8afaff7c89d0b50",
      "tree": "9e2b532577c0164b0cd6291e86d1a1cd0c9957b0",
      "parents": [
        "3fd4dee8960cd6bccbb21227d43dfef839d33875"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 28 12:44:37 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 30 09:39:06 2020 -0700"
      },
      "message": "aaudio: Update language to comply with Android\u0027s inclusive language guidance\n\nSee https://source.android.com/setup/contribute/respectful-code for reference\n\nBUG: 161896447\nTest: all changes are in comments, so just build\nChange-Id: I53a4a4c2ade03dcde940e6611f7e6b46d12ffe71\n\nChange-Id: I90ebaea4731c6ca95f312b2176792d50dea862ad\n"
    },
    {
      "commit": "ec8ca52932ecda761821230def1e1a4505b673b3",
      "tree": "7f2f6146661b7d0232d0cb0d29153e0671bc5762",
      "parents": [
        "18125ce86afecc1139cd4b128b2ec5a7e97d99e5"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue May 19 10:05:58 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 01 23:35:44 2020 +0000"
      },
      "message": "aaudio: fix race at start of stream\n\nWhen an MMAP stream is started, it is possible for the\nbeginning of the sound to be lost. One reason is because\nthe written data is placed right in front of the DSP read position.\nBut the DSP position is not well known when the stream is starting\nbecause we only have a few timestamps.\nIf the DSP advances before the data is written then the first burst\nmight be skipped\n\nThis CL places the initial write one burst ahead of the estimated DSP\nposition.\n\nThe same code is used to synchronize the read/write counters\nwhen a flush() occurs. In that case the serverMargin is zero.\n\nBug: 156313728\nBug: 157510931\nBug: 158547650\nTest: atest CtsNativeMediaAAudioTestCases\nTest: see bugs for other test cases\nChange-Id: I96170a924c69eee080a497b52cc6c1f3498c5455\n"
    },
    {
      "commit": "1a012372d22592b1a595b639f4d34aa66a9b1770",
      "tree": "e92ba590e8071db4675f203afaa69b6421d033c8",
      "parents": [
        "d2504bd81872024ab65f057c0b9730b45975b288",
        "b47fd10e664bcfd23c3725f5077421c5b1e1a285"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jun 27 03:12:14 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Jun 27 03:12:14 2020 +0000"
      },
      "message": "Merge changes I742a9d3d,Idce40ad2 into rvc-dev am: 1928cddbe9 am: b167113505 am: 1000cd1d23 am: b47fd10e66\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12003365\n\nChange-Id: I93867607e7333751b733d7412c9247e7b67a350b\n"
    },
    {
      "commit": "1000cd1d232e040409321e79fdfb522eb9a6e0bb",
      "tree": "d31ea6636bcb553e183815b3eb656115a5528cee",
      "parents": [
        "6c77aaa0a921173a4db8c8cf94791287f15748ed",
        "b16711350551e228392697e9b715b99098323d8c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jun 27 02:04:00 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Jun 27 02:04:00 2020 +0000"
      },
      "message": "Merge changes I742a9d3d,Idce40ad2 into rvc-dev am: 1928cddbe9 am: b167113505\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12003365\n\nChange-Id: I41acfc348adedee49ac5c734a9182596c56c0877\n"
    },
    {
      "commit": "b3c73bdb4f17ba09e892f4e001f3bcafe7d10461",
      "tree": "d31ea6636bcb553e183815b3eb656115a5528cee",
      "parents": [
        "81f31f39382842d8f45ebcdaf0e35dcf5ff4c09a",
        "1928cddbe98a24e173d1b83b870c67cd8f2deffb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jun 27 01:43:14 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Jun 27 01:43:14 2020 +0000"
      },
      "message": "Merge changes I742a9d3d,Idce40ad2 into rvc-dev am: 1928cddbe9\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12003365\n\nChange-Id: Ibde008c9e9c5786c4b47b3124b67db1e47447c3b\n"
    },
    {
      "commit": "4c377ef1052cc45a44ed2b1ffdd11486a9b9d1e6",
      "tree": "3b9cf2f5be3789b6d844004d5caa72b74f776b62",
      "parents": [
        "29112a133f594a4e740d46cad8d6ae301c434f48"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jun 25 10:03:23 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 26 11:54:41 2020 -0700"
      },
      "message": "aaudio: allow start when flushing\n\nThe state switch in the start() code did not allow\na start when in AAUDIO_STREAM_STATE_FLUSHING.\n\nThe bug was a regression in R and was not in Q.\n\nBug: 158603375\nBug: 159900922\nTest: test_various.cpp\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I742a9d3d07d445c0f3a80187b5a32cda5c700e82\n"
    },
    {
      "commit": "7216b3fe3d9580bf4305c01fc0df64dc7e172488",
      "tree": "2244a1ca21a329135dd894ad2c0e04258d51b03e",
      "parents": [
        "8ffa530d9c1e0179dc9389e683e022c4ca26bc38"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jun 23 23:29:18 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jun 23 23:29:33 2020 +0000"
      },
      "message": "aaudio: reduce error logging\n\nBetter logic in setState().\nDowngrade and remove some other error messages.\n\nBug: 36785118\nTest: adb logcat *:W | grep -i audio\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I2046f34baa2d9fde55e20c24b30342f234abc309\n"
    },
    {
      "commit": "e803b380e5fcd7c58010c88ec474cabc09d90f82",
      "tree": "fc1964622641712eb648d39bad0494980ae5010b",
      "parents": [
        "87477a196dd047c39233d7ea947d1eb6bf7c0f98",
        "6089de080dca67d58c2bfea18f9be20e3ae2e387"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jun 03 00:38:45 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jun 03 00:38:45 2020 +0000"
      },
      "message": "Merge \"audioflinger: fix FIXME in logBufferSizeUnderruns\" into rvc-dev am: 167afa7033 am: cf4623847e am: 6089de080d\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11690113\n\nChange-Id: Id7720190203dcad03fb6e537076239791b000c15\n"
    },
    {
      "commit": "636d345366342cbbd35f534aba970d5fe78b294f",
      "tree": "fc1964622641712eb648d39bad0494980ae5010b",
      "parents": [
        "63b96ba60a7e295a3e4811785b8a83794196ba27",
        "cf4623847e9f331f33302a600291a0168eaea3bd"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jun 03 00:26:14 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jun 03 00:26:14 2020 +0000"
      },
      "message": "Merge \"audioflinger: fix FIXME in logBufferSizeUnderruns\" into rvc-dev am: 167afa7033 am: cf4623847e\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11690113\n\nChange-Id: Ic47c309ad198747a729cd28acb5abbdba5637ebd\n"
    },
    {
      "commit": "1c4ba630e86eab1bd6485e58b1674325c67e4a92",
      "tree": "fc1964622641712eb648d39bad0494980ae5010b",
      "parents": [
        "177b641f15356a2701bbd5812ae63bec6aaa5c38",
        "167afa7033328250169f141f85e3bc71d89475c9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jun 03 00:13:23 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jun 03 00:13:23 2020 +0000"
      },
      "message": "Merge \"audioflinger: fix FIXME in logBufferSizeUnderruns\" into rvc-dev am: 167afa7033\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11690113\n\nChange-Id: I44b76e267b367c96e64457c5a60790dc5649a45f\n"
    },
    {
      "commit": "64e16a7c0a0341ec3e759d9522c037606e49ce70",
      "tree": "4de10760a43ffb42233f3da48259a3dd403ccd31",
      "parents": [
        "72c3e0bbf62dbfd5e9ecabac3910f788e0b6b187"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jun 01 13:25:51 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jun 02 14:48:16 2020 -0700"
      },
      "message": "audioflinger: fix FIXME in logBufferSizeUnderruns\n\nSome debug code was accidentally merged.\nThe hang was caused by a recursive lock of mLock.\nThe code now calls lockfree methods.\nAdded events for RELEASE and SETBUFFERSIZE.\n\nBug: 157916126\nTest: adb logcat | grep logBufferSize\nTest: launch OboeTester\nTest: disable MMAP checkbox\nTest: Tap OPEN and START\nTest: move bufferSize fader\nTest: expect to see no spam from logBufferSizeInFrames()\nTest: adb shell dumpsys media.metrics\nTest: expect to see entries like \"(bufferSizeFrames\u003d118, underrun\u003d1)\"\nChange-Id: I7d782ccea2c2470bc18a3a61cfb8767430a441d8\n"
    },
    {
      "commit": "a0a5104c49ba5ac815d0faf25effa0df79dbfd8c",
      "tree": "9c55ce76253d91e8faf8d2110504b2d635fcd8ae",
      "parents": [
        "c76c8a81b7006c6d67dd31c3b06ddd725216e34b",
        "76ade1a48604972d0180888006da5831d2ef976f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 08 00:01:42 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri May 08 00:01:42 2020 +0000"
      },
      "message": "Merge \"aaudio: align AAudioServiceMessage for 32/64 bits\" into rvc-dev am: 9ad15ff8c4 am: 76ade1a486\n\nChange-Id: I89b1b8299635d3b1f674f9895147ad0092bd47db\n"
    },
    {
      "commit": "c3282b7b634886aad47a2a19e36dac0c65d332e7",
      "tree": "9c55ce76253d91e8faf8d2110504b2d635fcd8ae",
      "parents": [
        "c8c418357ba5b6eab6ea5385f4b008f1e6548c60",
        "9ad15ff8c4e0ae23df61022e69ba38362c94c67b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 07 23:45:30 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu May 07 23:45:30 2020 +0000"
      },
      "message": "Merge \"aaudio: align AAudioServiceMessage for 32/64 bits\" into rvc-dev am: 9ad15ff8c4\n\nChange-Id: Iae33ab39ee598ddf064e9b1d1bbcad3f529a69ac\n"
    },
    {
      "commit": "3ee519e182dfc26a7d6179604c816892385f3b03",
      "tree": "4148b6fb676d79604ceb54b5a5f4c0cd1f1f1738",
      "parents": [
        "686dac0cdb04834b889b1264f7a41c5d6ce25d2a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed May 06 16:56:22 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 07 11:14:56 2020 -0700"
      },
      "message": "aaudio: align AAudioServiceMessage for 32/64 bits\n\nChromebook sometimes runs 32 and 64-bit code together.\nThat caused messages between the code to be rejected because the\nstruct sizes did not match.\nSo we used alignas(8) to force members to 8 byte boundaries.\n\nBug: 155901581\nTest: Launch OboeTester\nTest: Tap TEST OUTPUT\nTest: Tap OPEN and START\nTest: You should get \"MMAP YES\" if MMAP is supported by the device.\nChange-Id: I0cd6a59a974888ef17b06b38fa78f032d602cd57\n"
    },
    {
      "commit": "cfce8343f704c5e0c25cc89b1e2650fae3740f6e",
      "tree": "8ee765f8c2162282109abb22be7a1cb8df19caf2",
      "parents": [
        "7c8a0b89576ff7bdd0ce5418e23916a701705189",
        "5fa096aaa5bc2bf34ae68887145fb10db655931c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 05 11:31:50 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue May 05 11:31:50 2020 +0000"
      },
      "message": "Merge changes I7f8339d8,Idff0c394 into rvc-dev am: 686dac0cdb am: 5fa096aaa5\n\nChange-Id: I5c905837b6e949d2516941d160e75d4c58bc0e23\n"
    },
    {
      "commit": "cc2ebfc95d0925ad06cd368be6d7de557d1eaef5",
      "tree": "8ee765f8c2162282109abb22be7a1cb8df19caf2",
      "parents": [
        "303147efc0d6bd3f29e1da40720ddc175a78d388",
        "686dac0cdb04834b889b1264f7a41c5d6ce25d2a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 05 11:19:47 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue May 05 11:19:47 2020 +0000"
      },
      "message": "Merge changes I7f8339d8,Idff0c394 into rvc-dev am: 686dac0cdb\n\nChange-Id: If597e6b6a35e038c90090614dbdda35b0b5ce854\n"
    },
    {
      "commit": "6e463ce6fc456a3c185b80086d3605e2189eccd6",
      "tree": "5c897c19218b6ab714ad781076018079ef2b0240",
      "parents": [
        "4756a9f78b39c7aad0bd79c18b97bf8ed00b4bc6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 13 10:20:20 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue May 05 02:54:41 2020 -0700"
      },
      "message": "aaudio: steal exclusive streams\n\nAn app (B) that asks for an exclusive stream can steal\nan exclusive stream from an earlier app (A).\nApp B will be given the MMAP resource as a SHARED stream.\nThe stream for app A will be disconnected and released\nby the service.\nIf app A reopens a stream then it will get a SHARED\nstream.\n\nThe order of the opening of the streams is controlled by using a\nrecursive_mutex in AAudioService::openStream().\n\nBug: 129846760\nTest: media/libaaudio/tests/test_steal_exclusive.cpp\nTest: also\nTest: Launch AudioTroubleMaker. It should say \"EXCLUSIVE\".\nTest: Press Home button.\nTest: Siren sound from AudioTroubleMaker should continue.\nTest: Launch OboeTester\nTest: TEST OUTPUT, then Open, Start\nTest: You should get an MMAP SHARED stream on Pixel.\nTest: Go back to AudioTroubleMaker. It should say \"SHARED\".\nChange-Id: I7f8339d8ed62546520a9b46ed398418b41ca2832\n"
    },
    {
      "commit": "7415358db73ba2b7ea8925bda735c0c372642acb",
      "tree": "b132e996ec44b221806be058714d348385a6057a",
      "parents": [
        "bdc669ad0d7ed1189f2e74cd181fa56004737b51",
        "65164c32acec7d25c0db45c3bd38589fc7067d50"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 29 00:16:18 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Apr 29 00:16:18 2020 +0000"
      },
      "message": "Merge \"aaudio: remove LOG_ALWAYS_FATAL_IF from metrics\" into rvc-dev am: 1100c1d18e am: 65164c32ac\n\nChange-Id: I67e73ead31daa0f220f4b8474dd830b99e928dbf\n"
    },
    {
      "commit": "eb64895ba449f7d4297def3aaf8b695ac0c32cff",
      "tree": "b132e996ec44b221806be058714d348385a6057a",
      "parents": [
        "b4a3624bf8db0094170eaf23c283d6c68d05921d",
        "1100c1d18e0679da1152b31f787eefd282ff5b0d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 29 00:03:23 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Apr 29 00:03:23 2020 +0000"
      },
      "message": "Merge \"aaudio: remove LOG_ALWAYS_FATAL_IF from metrics\" into rvc-dev am: 1100c1d18e\n\nChange-Id: Id1014d5414e5781977e2054b60afc33dad705a0f\n"
    },
    {
      "commit": "60c0c5e2787b1f46e14ace2cdbb39699cf9fc437",
      "tree": "290b53542bd090c9a29df95878959f236b0b2a38",
      "parents": [
        "ec660f185a1e212b1d22125de81e9bd1d0ff58a3"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 28 14:16:38 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 28 14:40:26 2020 -0700"
      },
      "message": "aaudio: remove LOG_ALWAYS_FATAL_IF from metrics\n\nOld assert was for debugging. No longer needed.\nCaused a CTS failure in MediaMetrics logging.\n\nBug: 155188361\nTest: atest CtsNativeMediaAAudioTestCases\nTest: adb shell dumpsys media.metrics\nChange-Id: I592937d6a0683faf6835d3f0d5a982d02f59e7a9\n"
    },
    {
      "commit": "2e28a7bafb043969f3bf38d692abd6aa60417837",
      "tree": "a29a2d0f1a24e396947166485a3f29bb5f48dfd4",
      "parents": [
        "7c7c184132cc2ffd7156b46f54c582595c17f0b2",
        "164ceef8b6a1aa56a50e698abaa5abb4622c024d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 23:09:10 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Apr 27 23:09:10 2020 +0000"
      },
      "message": "Merge \"MediaMetrics: Track AudioTrack and AudioRecord callers\" into rvc-dev am: 2578a95a57 am: 164ceef8b6\n\nChange-Id: I726dd024cdf70328bdda6c0d4d137742b3cdb396\n"
    },
    {
      "commit": "47144e50c87f7eaf5468335f477ca4daae0866b4",
      "tree": "a29a2d0f1a24e396947166485a3f29bb5f48dfd4",
      "parents": [
        "b58dd318a0f791fd829e5bdb0a4e3013e33f8e8d",
        "2578a95a57dd9796b55095dc22b8171dd5da73c3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 22:56:09 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Apr 27 22:56:09 2020 +0000"
      },
      "message": "Merge \"MediaMetrics: Track AudioTrack and AudioRecord callers\" into rvc-dev am: 2578a95a57\n\nChange-Id: I7f325541010d6a82f84f2670bb4e5fd28c780e1c\n"
    },
    {
      "commit": "a6b270399fdacb09826e751657b7bb321652e3ac",
      "tree": "10091ff0524d2d29dcda00e63630d0f51b300655",
      "parents": [
        "669acb12c3092e581a1ecc347e6d573e96c8ca0e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 10:34:24 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 11:41:38 2020 -0700"
      },
      "message": "MediaMetrics: Track AudioTrack and AudioRecord callers\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nBug: 153658358\nChange-Id: If2b0a792cf4cc6c5b125513861b3dfb257bb3cbe\n"
    },
    {
      "commit": "1966cd5af10eb55b93a28e28f0d6a49b11c1ca3f",
      "tree": "56d3db1cc4f526f67a42f3ace215e296d3aa7f00",
      "parents": [
        "0054ead711b6022cd6112c2a206fd53023e3f0b9",
        "0f11bd974fba2b56ad3e9f3e611ad30fe1a2af2c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 24 20:04:40 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Apr 24 20:04:40 2020 +0000"
      },
      "message": "Merge \"audioflinger: add setCallerName() to AudioTrack\" into rvc-dev am: 02d69c15b6 am: 0f11bd974f\n\nChange-Id: Ia01179a9774bc46b770b843bba86eaefdf591a86\n"
    },
    {
      "commit": "450308011ee5010ecf7357c8aa46ccf9cab67776",
      "tree": "56d3db1cc4f526f67a42f3ace215e296d3aa7f00",
      "parents": [
        "04a1d7c3073a5613786dfa29f58d237ae02059dc",
        "02d69c15b683418de39901a74f1eea8ddbfcbf40"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 24 19:52:35 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Apr 24 19:52:35 2020 +0000"
      },
      "message": "Merge \"audioflinger: add setCallerName() to AudioTrack\" into rvc-dev am: 02d69c15b6\n\nChange-Id: Ic0af3ba541c33a2ae928bf8a985dd503c2a3e1cd\n"
    },
    {
      "commit": "d3813f35753a8ce43b289656de2649fdf1afaacc",
      "tree": "c13f9f04349fdfe3ad043c8bdafaa4757e3a30ff",
      "parents": [
        "cc40c5fa11767eb9a87cf6e1a5e8a99d6cec2847"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 23 16:26:15 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 24 11:13:09 2020 -0700"
      },
      "message": "audioflinger: add setCallerName() to AudioTrack\n\nAnd also to AudioRecord.\nThen log the callerName using MediaMetrics from the destructor.\n\nThis can be used to tell whether AAudio or OpenSL ES\nor Java created the object.\n\nBug: 154543374\nTest: adb shell dumpsys media.metrics --clear\nTest: Run an app that uses audio.\nTest: adb shell dumpsys media.metrics\nTest: Look for \"callerName\" in the dump.\nChange-Id: I000346e72f581d2e40ef4fd0410b579d2a1224e2\n"
    },
    {
      "commit": "faae9a49706405f29cb6513b15c968f13d5889eb",
      "tree": "57e18d652a0daac9904248d4eb13fe0b18eeac39",
      "parents": [
        "4370e4346c965ee749073d4e44689386fd5bc77f",
        "424369b7b522360797adb1e64ddfb7b09c8ea7cc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 24 14:48:18 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Apr 24 14:48:18 2020 +0000"
      },
      "message": "Merge \"aaudio: add MediaMetrics for MMAP streams\" into rvc-dev am: cc40c5fa11 am: 424369b7b5\n\nChange-Id: I56c6e3c8752cc2e4ebde8b30867d7a8c6ca327e8\n"
    },
    {
      "commit": "d74b9c0efbc0a7cce9c7aaa0204414612a64d8d9",
      "tree": "57e18d652a0daac9904248d4eb13fe0b18eeac39",
      "parents": [
        "3de3935a515ecefea19f5dbd251191fc63c20795",
        "cc40c5fa11767eb9a87cf6e1a5e8a99d6cec2847"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 24 14:41:54 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Apr 24 14:41:54 2020 +0000"
      },
      "message": "Merge \"aaudio: add MediaMetrics for MMAP streams\" into rvc-dev am: cc40c5fa11\n\nChange-Id: I95149514982f70f1eb2cef58978a46ecf3bbb5dc\n"
    },
    {
      "commit": "a9876703e89afa6db42913d48e2360b7dad98725",
      "tree": "4e51b01b2fa4be83868318a1619e3b7c2f42f36e",
      "parents": [
        "6e89a0704605f4750f87a3243495b175c67e6fbb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 20 18:16:15 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 23 18:00:10 2020 -0700"
      },
      "message": "aaudio: add MediaMetrics for MMAP streams\n\nLog events from service.\nLog start, stop, disconnect and other events.\nLog underruns and bufferSize.\n\nBug: 154543374\nTest: adb shell dumpsys media.metrics --clear\nTest: run an app that uses MMAP, like OboeTester\nTest: adb shell dumpsys media.metrics\nTest: Expect to see lots of \"audio.stream\" events.\nChange-Id: I690e5226b695d53d038d644f4438c759e08f9fbb\n"
    },
    {
      "commit": "a3155e1a1b73ff31f554e331d7fafc0379cc028e",
      "tree": "42ac4aed3beec565f3c318a344ce0de0cb58fe2a",
      "parents": [
        "a13c927e84cc21f01140f14bcb5ba32fca0fc80a",
        "6e89a0704605f4750f87a3243495b175c67e6fbb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 20 22:37:03 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Apr 20 22:37:03 2020 +0000"
      },
      "message": "Merge \"aaudio: free endpoint to prevent crashes\" into rvc-dev am: 6e89a07046\n\nChange-Id: Ieaddd431a350b4ebb9ebae0c544c7a9c573de132\n"
    },
    {
      "commit": "a13c927e84cc21f01140f14bcb5ba32fca0fc80a",
      "tree": "e28fc4beca5ce42bafa1e153e579dc6b856f0890",
      "parents": [
        "9ece4e96a0f4607d95a036a5ca7c919c2d790bcd",
        "67dc6a817304168d2b7db4e09cd622814ee39430"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 20 22:36:56 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Apr 20 22:36:56 2020 +0000"
      },
      "message": "Merge \"aaudio: prevent starting from wrong state\" into rvc-dev am: 67dc6a8173\n\nChange-Id: Idd68ebcc1ef6cc099ddfb4ff71d9ac56353dab71\n"
    },
    {
      "commit": "5edc4eaef4e3950cf1e2642b9b1bd9209b78adc1",
      "tree": "fd017115b7fc03a9c6e1614a0710a70856a77714",
      "parents": [
        "2a52ad31f4880e46056566c99246749238dc5e5f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 17 08:15:42 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 20 13:43:54 2020 -0700"
      },
      "message": "aaudio: free endpoint to prevent crashes\n\nFree the AudioEndpoint and check for nullptr to\nprevent accessing shared memory that had been freed.\nThis is to protect against calls to the stream after\nAAudioStream_release() has been called.\n\nBug: 154274446\nBug: 154274027\nTest: libaaudio/tests/test_various.cpp\nChange-Id: I194d502fd48c4d31602ffce76aca6b28753ad7d2\n"
    },
    {
      "commit": "2a52ad31f4880e46056566c99246749238dc5e5f",
      "tree": "942d94b80c67abcf0518ac63e868e6d56e666fc7",
      "parents": [
        "ccc44f3f72a8d65c1d9fa829515eab478c647ebc"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 17 10:28:41 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 20 13:41:12 2020 -0700"
      },
      "message": "aaudio: prevent starting from wrong state\n\nPrevent start after disconnect or release.\nPrevent start when already started.\n\nBug: 154272447\nTest: libaaudio/tests/test_various.cpp\nChange-Id: Ic17f45cb7d47563dbdd05a3535d419fbe3b286a4\n"
    },
    {
      "commit": "e20040df55a511f98aae5226bc4cc06ab9480a9e",
      "tree": "c484658783fb42a68616606f9f3778ed1daad187",
      "parents": [
        "a055c82b6d39838876632dbbc8e1f293094c4b80",
        "398fe58cbc76a61257934f195767b05ee0942563"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 18 00:03:55 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Apr 18 00:03:55 2020 +0000"
      },
      "message": "Merge \"aaudio: initialize the callback buffer\" into rvc-dev am: 398fe58cbc\n\nChange-Id: If8cd3a147dad141f9304e4fa16bac72ef3c55f15\n"
    },
    {
      "commit": "bf821e2c39ac948d43e3fa19f6f517317e195060",
      "tree": "f6b8d1648690a9773a61fe49873ae7a3de24597d",
      "parents": [
        "01d9c845f00cae661e1764162f36d5156871a60b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 17 11:51:43 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 17 14:55:24 2020 -0700"
      },
      "message": "aaudio: initialize the callback buffer\n\nThis can prevent some loud noises during unit tests.\n\nAlso use std::unique_ptr\n\nBug: 154342174\nTest: libaaudio/tests/test_various.cpp\nChange-Id: I1c1dc0f4a6a29cf7d7a656392a81a325847de22d\n"
    },
    {
      "commit": "511614002fca7d7e9e9fc605859362c136ef6f22",
      "tree": "80eedb44e40eeedee1818be10d18c587c706b789",
      "parents": [
        "f972bfa7e61f7a8b6297fd310aac1906291b83bb",
        "01d9c845f00cae661e1764162f36d5156871a60b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 15 22:15:49 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Apr 15 22:15:49 2020 +0000"
      },
      "message": "Merge \"AAudio AudioStreamLegacy: refine handling of AudioTrack teardown\" into rvc-dev am: 01d9c845f0\n\nChange-Id: Ib5d8e61c5104d8b1104836983a2d8d50597d5c8a\n"
    },
    {
      "commit": "68eff0530814ab4e0d29580885fec8de0bd37c96",
      "tree": "bf149b7f4be4d769714d18c4559052ec2058f0dc",
      "parents": [
        "433ccf7dca6db9ffd774cd10d539ccf9d62e3f46"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 10 18:28:41 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 15 20:24:42 2020 +0000"
      },
      "message": "AAudio AudioStreamLegacy: refine handling of AudioTrack teardown\n\nDo not systematically request a stream disconnect upon\nEVENT_NEW_IAUDIOTRACK received AudioTrack but only if the new\naudio Track properties have changed in such a way that the initial\ncontract is broken.\n\nBug: 139763500\nTest: OboeTester TEST DISCONNECT\nTest: OboeTester TEST OUTPUT while enabling/disabling Live Caption\nChange-Id: I3b43275a888e23471fcd1ce20725f5731a77a255\n"
    },
    {
      "commit": "887b1a3719b31f605147c5ee580f42f769d3e9ee",
      "tree": "f76572a43fc4ebf5c967e5537cb8c45f7ded08b8",
      "parents": [
        "da4faa6c2e50b6ab28dfd9a40289313239319d16",
        "42c1c38d7f0340f448b38dcf228b2e7753a2bcd2"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Apr 14 02:10:00 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Apr 14 02:10:00 2020 +0000"
      },
      "message": "Merge \"Include what you use: \u003cunistd.h\u003e\" am: 8a71223d5a am: 42c1c38d7f\n\nChange-Id: I7487c7d3e566736733b6510072f6a32c2c4534ac\n"
    },
    {
      "commit": "42c1c38d7f0340f448b38dcf228b2e7753a2bcd2",
      "tree": "5c2d51a723e7514ae3f31fdcbba7022e4143f31a",
      "parents": [
        "1c09d740e714fa8963a2399eed953cc2015f2519",
        "8a71223d5a998fd743ac3b25a799bc2cfedf2f86"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Apr 14 01:48:52 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Apr 14 01:48:52 2020 +0000"
      },
      "message": "Merge \"Include what you use: \u003cunistd.h\u003e\" am: 8a71223d5a\n\nChange-Id: Ia9c0bba3fa290221d00bbfd7aec4aab65db5e4f0\n"
    },
    {
      "commit": "7ae782545020eec1bfb9eb74e690ae26e2cca7fa",
      "tree": "b99f5db2f4d75aeddb175896c3fa67070b21154e",
      "parents": [
        "2ac41184ae00b2e99e55d995944288f33b2fce49"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Apr 13 15:20:50 2020 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Apr 13 15:20:50 2020 -0700"
      },
      "message": "Include what you use: \u003cunistd.h\u003e\n\nThis was transitively included, but no longer is, so it must be\nexplicitly included.\n\nExempt-From-Owner-Approval: Janitorial\nTest: build\nChange-Id: I78268a4867697bf797d40b5fead3745fdd0cc807\n"
    },
    {
      "commit": "ef0ade40f3acb3a9e95ad5f2efd2e6c4f8503824",
      "tree": "febd15b572587e578abd645ff80214c605e48fa4",
      "parents": [
        "4023d73e132d0170005e8acd922667fc8287ee86",
        "9e1f44b72a6a54520cbe07dc465af4678db315eb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 09 07:57:31 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 09 07:57:31 2020 +0000"
      },
      "message": "Merge \"aaudio: minor cleanup in clock model\" into rvc-dev"
    },
    {
      "commit": "5347dca057618fd5aec3a9f11e357d69632b60e6",
      "tree": "4912b03e4fbf60ad400945c659c4f64b508f9749",
      "parents": [
        "7631aebd245289db732defca7f0d93d6528390ed"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 08 16:31:07 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 08 16:31:07 2020 -0700"
      },
      "message": "aaudio: use minimum of one burst in buffer\n\nThe old minimum was zero, which minimized latency\nbut was probably too aggressive for some devices.\nIt is better to avoid glitches.\nBecause of other changes in AAudio MMAP, this will\nhave the same latency as earlier version,\nbut better immunity from glitches.\n\nBug: 153589709\nTest: launch OboeTester\nTest: tap TEST OUTPUT\nTest: tap OPEN and START\nTest: notice that actual buffer size will be 1 * burstSize\nChange-Id: Ie53352a0589c710be11f74e995bd12be4f7c45a8\n"
    },
    {
      "commit": "9e1f44b72a6a54520cbe07dc465af4678db315eb",
      "tree": "841f306e598f4f233af1f6f419aff78b058137aa",
      "parents": [
        "7631aebd245289db732defca7f0d93d6528390ed"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 08 16:02:05 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 08 16:02:05 2020 -0700"
      },
      "message": "aaudio: minor cleanup in clock model\n\nInit mMaxMeasuredLatenessNanos\nUse default destructor.\n\nBug: 137009840\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Ia9b42e4754047f5e87205c4adbc3329a1b96e74b\n"
    },
    {
      "commit": "d1f1cb68f567363a0b1e4cd4db6286afc6c8a1e2",
      "tree": "3b32985218612d05bf95fed08c18025d1735b2d4",
      "parents": [
        "06675ff30f63323905ff18c3c4e0d34a9fee4c60"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Mar 24 11:57:57 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Mar 27 11:33:09 2020 -0700"
      },
      "message": "Add audio attributes info when starting aaudio tracks on MMAP mix.\n\nIn aaudio, when adding tracks to mixed stream, it is needed to update\naudio attributes to HAL whenever the tracks are added or removed.\nCurrently, only the audio attributes used to open the stream will be\nsent to the HAL. In that case, adding audio attributes of the clients\nwhen starting the stream can help solve the problem. In audio flinger,\nthe client\u0027s audio attributes will be used to create MmapTrack.\n\nTest: play multiple aaudio tracks, add log\nBug: 77279923\nChange-Id: Ic1c536049e194a2bb7513425ee4828d52769d27f\n"
    },
    {
      "commit": "a3ded4badc9906ab9916d878009f1beb4791ce79",
      "tree": "7b9a6341450c779b30fed9844aa158ee5099bb4d",
      "parents": [
        "f110ec04f9c11e88d9d2f2d984a5f0d519d5f0db",
        "dbc9c5a3203dad5ffd5fe86b6f63c53020a82940"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 25 02:35:34 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Mar 25 02:35:34 2020 +0000"
      },
      "message": "Merge \"aaudio: add checks for Binder return codes\" into qt-qpr1-dev am: d37b50dfb7 am: dbc9c5a320\n\nChange-Id: I836f6955c45d6e1feda4776ff6f90c35a207b0f9\n"
    },
    {
      "commit": "38ef26a93fe283da43048cef8071de46eb379238",
      "tree": "1c4c2149674a36222da368c8f38ced9bea5592b9",
      "parents": [
        "bc8a9381f5bed2dc8804644dd57e5b1777994858"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 06 14:52:15 2020 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Mar 16 20:00:24 2020 +0000"
      },
      "message": "aaudio: use unique_ptr in FixedBlockAdapter\n\nCode cleanup.\n\nBug: 151650670\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I980862379ade9b6cc62f1743c916208e3911a00a\nMerged-In: I980862379ade9b6cc62f1743c916208e3911a00a\n(cherry picked from commit 2f39c0b0fcbc5b857df2823247d163f2ba1c14a8)\n"
    },
    {
      "commit": "4b86749458715fbd6c9106100d7ddd54bfdc90ef",
      "tree": "d2ada0e90e7fef70575bbe722ccf47b6b80db8b4",
      "parents": [
        "b5c0071bb7a1c6524deb42ac6643d8fae3106248"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Feb 12 10:58:05 2020 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Feb 18 16:40:39 2020 -0800"
      },
      "message": "aaudio: fix callback size for Legacy input\n\nSet the size of the callback buffer based on the device format\ninstead of the app format.\n\nBug: 149249791\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I0dc5724109a802eea15100782c18986a64e6acd2\n"
    },
    {
      "commit": "b00653c6d4d06736d208a6cacfeae50e886fce49",
      "tree": "4e5187fb8fbaeef03605a7667b46a5513a782820",
      "parents": [
        "cf24ad44c42d177403b8ecbb880ba54a9326b008"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 29 14:23:04 2020 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 06 12:40:51 2020 -0800"
      },
      "message": "aaudio: add checks for Binder return codes\n\nBinder code was calling readInt32() but not checking the return code.\n\nBug: 139473816\nTest: see bug for proof of concept\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I9246382b657c2a1213d27c66fc006578553f7b1e\nMerged-In: I9246382b657c2a1213d27c66fc006578553f7b1e\n"
    },
    {
      "commit": "a170e61fb4e99fc56ab328b25180d321d278867e",
      "tree": "b45a8cc52707e1b9800c3058077a3352625b0454",
      "parents": [
        "f1de76e5d1f3ec3d7adbb89645b2d6db6995f567",
        "ea5c49e1742b24df216b097034d4be86adc17226"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 30 01:28:25 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 30 01:28:25 2020 +0000"
      },
      "message": "Merge \"aaudio: less alarming message for MMAP\""
    },
    {
      "commit": "ea5c49e1742b24df216b097034d4be86adc17226",
      "tree": "bec7bafdd0c4df6ebe8b345101045d7c27bc7e1f",
      "parents": [
        "3b4c1f0320efc7a54c4ab811727c432cda73dd37"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 29 15:01:41 2020 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 29 15:01:41 2020 -0800"
      },
      "message": "aaudio: less alarming message for MMAP\n\nBug: 80192689\nTest: adb logcat | grep MMAP\nTest: run OboeTester, TEST OUTPUT, perfMode: None, OPEN\nTest: should see \"MMAP not available because\nTest:         AAUDIO_PERFORMANCE_MODE_LOW_LATENCY not used\"\nChange-Id: I164902abcfafb53a34685b9ef9ec5346842e1dda\n"
    },
    {
      "commit": "25532c7698517d734b5044dd325acdff2a857279",
      "tree": "5ee6ee79aee893567b9f572cfa1fbd12d2e510e5",
      "parents": [
        "3b4c1f0320efc7a54c4ab811727c432cda73dd37"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 29 14:23:04 2020 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 29 14:23:04 2020 -0800"
      },
      "message": "aaudio: add checks for Binder return codes\n\nBinder code was calling readInt32() but not checking the return code.\n\nBug: 139473816\nTest: see bug for proof of concept\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I9246382b657c2a1213d27c66fc006578553f7b1e\n"
    },
    {
      "commit": "5277625231db4f313115fbcb6cefca7f2dfc2ce0",
      "tree": "288802a30819352b91c3b270329fb41b577928a0",
      "parents": [
        "bccf38e3fa6bc2a372c3a0d38c6274b68c0e5fb7",
        "7c96ea7ff84e1084332548583841735b694bfebd"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Sat Jan 25 03:44:28 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 25 03:44:28 2020 +0000"
      },
      "message": "Merge \"Remove mediametrics include symlinks\""
    },
    {
      "commit": "8b4e05ecee60bf08c9121c61d69526e076495766",
      "tree": "9879d2a21175f35e47545c03ec1a2a2ba46de933",
      "parents": [
        "0bc6f60e1f036380bd48d022631e6561b90f210c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Dec 17 12:12:09 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 22 13:31:58 2020 -0800"
      },
      "message": "aaudio: add AAudioStream_release()\n\nSplit close into close and release phases.\nRelease() will release hardware and service resources.\nClose() will delete the stream object.\nThis allows us to defer the deletion and avoid race conditions.\n\nThe CLOSING state is used to indicate that a stream has been released.\n\nAdded some test cases to test_various.cpp.\nA lone call to close() will automatically call release() so we should\nhave good code coverage for testing.\n\nBug: 136288001\nTest: adb shell test_various\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Ia648838f30c521ba101f55259dbcd4594c1263cd\n"
    },
    {
      "commit": "773eeb29115ba9dbaf71ae526185b1c584cb76f2",
      "tree": "fc3231a6f9e1b8d6d0f5db2fdc483c8a75d85518",
      "parents": [
        "c55cdbafff6450155d4282a30ef025d6cecf5b3e",
        "76373c2644ac01ebe1eb79aaccf2986c3684cbdd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 22 18:34:48 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 22 18:34:48 2020 +0000"
      },
      "message": "Merge \"aaudio: add missing symbols and tests for capture privacy API\""
    },
    {
      "commit": "76373c2644ac01ebe1eb79aaccf2986c3684cbdd",
      "tree": "f93e3b973b6ab22b72b032d88c808819b74084dd",
      "parents": [
        "d1ce689ac43bfd6c75c2f15a349e475396d04dcd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 14 12:38:14 2020 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 22 18:08:11 2020 +0000"
      },
      "message": "aaudio: add missing symbols and tests for capture privacy API\n\nAdd missing symbols for new APIs added to control if an input stream\nis privacy sensitive or not.\nAlso add tests for these new APIs.\n\nBug: 137850106\nTest: test_attributes\nChange-Id: Iab6e37a312dd295f705a3dfb69acddd131dc9142\n"
    },
    {
      "commit": "c55cdbafff6450155d4282a30ef025d6cecf5b3e",
      "tree": "e5aaa53d2052ac340f67e1d0c62991ee5a26420c",
      "parents": [
        "1ecc57a716bd7ace071d2d933a725ef6a566d6be",
        "3e8bbb91f15d1d14a2339bbec8a39c5f1a66a6af"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Wed Jan 22 06:47:57 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 22 06:47:57 2020 +0000"
      },
      "message": "Merge changes from topic \"system_usages\"\n\n* changes:\n  Adding system usages to AAudio\n  Adding support for new System Usages\n"
    },
    {
      "commit": "3e8bbb91f15d1d14a2339bbec8a39c5f1a66a6af",
      "tree": "8ca1499304992e9ffdbc41787073629bac71e824",
      "parents": [
        "524159db6d53cecc93de4133e0875be937437883"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Fri Jan 10 13:37:05 2020 -0800"
      },
      "committer": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Thu Jan 16 15:59:25 2020 -0800"
      },
      "message": "Adding system usages to AAudio\n\nBug: 141006627\nTest: atest CtsNativeMediaAAudioTestCases:AAudioTests\nChange-Id: I64247a3f64f4f7cc32f6c85c2ff790f96831f707\n"
    },
    {
      "commit": "7c96ea7ff84e1084332548583841735b694bfebd",
      "tree": "eb5d7c1bcb91cea21469e46b7c014ae44635a217",
      "parents": [
        "255f610f5ab71b5e36d93744dfe058daf6c96041"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jan 10 15:46:22 2020 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 16 15:55:18 2020 -0800"
      },
      "message": "Remove mediametrics include symlinks\n\nBug: 143245419\nTest: build\nChange-Id: I6c836e60c0fe078f5ab7370aec156bdd6e8dcbf0\n"
    },
    {
      "commit": "6e7bf72a8ac96d7f88ae406e94db851c41e551c2",
      "tree": "0eb22768bda2af626c4a8f61a9dfcccfad5e7d1b",
      "parents": [
        "39415ab6bc1260796a9af9de834cabb859d29c1e"
      ],
      "author": {
        "name": "Cindy Zhou",
        "email": "zhouci@google.com",
        "time": "Thu Jan 16 12:41:08 2020 -0800"
      },
      "committer": {
        "name": "Cindy Zhou",
        "email": "zhouci@google.com",
        "time": "Thu Jan 16 21:32:47 2020 +0000"
      },
      "message": "libaaudio removing diagnostic\n\nRemoving diagnostic mode for boundsan and integer overflow before release\n\nBug: 147144481\nBug: 143307218\nTest: N/A\nChange-Id: I8910aa439a691e8ee205c998f27fa4719108646c\n"
    },
    {
      "commit": "6a87ed872a52467fc3807353dcbc706be8880641",
      "tree": "ed96c76483a60640e4973d8d8c0d3e599568a8f3",
      "parents": [
        "42afea265a65a4d0b22f5d2f2af72cbbb2631c80",
        "fb33f9bc854e269bb72520add2d4fa09d3d57cae"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Dec 11 22:28:18 2019 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Dec 11 22:28:18 2019 +0000"
      },
      "message": "Added usage to init call for audiostream registration. am: 9fb726888d am: 3e6cbbc746 am: fb33f9bc85\n\nChange-Id: If630afb27bb5fdea0384e5fca1bbe4e7bd74955a\n"
    },
    {
      "commit": "fb33f9bc854e269bb72520add2d4fa09d3d57cae",
      "tree": "ddd9f36026c4f5f1c0121f62a6c5b87439433c43",
      "parents": [
        "42c4784b2a161f51bc52e57c8d8dbbd84986101e",
        "3e6cbbc746d141134a67098e385d1cf363630175"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Dec 11 22:07:18 2019 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Dec 11 22:07:18 2019 +0000"
      },
      "message": "Added usage to init call for audiostream registration. am: 9fb726888d am: 3e6cbbc746\n\nChange-Id: Iaff4f7bf4773af90f5762f6fdb403b6e665fd499\n"
    },
    {
      "commit": "b66ad7275873ed4bc7fb50049d118856e29859eb",
      "tree": "2a987bf034917ee53eb0e4b4310a0272da5718d8",
      "parents": [
        "5882632b9a20a0935ef63189c90a9af092618929"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Fri Nov 08 18:25:39 2019 -0800"
      },
      "committer": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Wed Dec 11 13:36:32 2019 -0800"
      },
      "message": "Added usage to init call for audiostream registration.\n\nPlayer type AAudio are always initialized with AUDIO_USAGE_MEDIA. Added\nfix to initialize with assigned usage.\n\nBug: 143578354\nTest: ran native application with usage of AUDIO_USAGE_NOTIFICATION\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I170e0b55d7f90b59d9b5129b22f4a9080957994b\nMerged-In: I170e0b55d7f90b59d9b5129b22f4a9080957994b\n"
    },
    {
      "commit": "9fb726888dda17b68fd924b963d34e6ce9454ba1",
      "tree": "bf96e99b9047f37c2a0734cf77ae0c8494615a11",
      "parents": [
        "960bbfab7bd5f2fff6afdecb920f21b8eb3fee45"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Fri Nov 08 18:25:39 2019 -0800"
      },
      "committer": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Wed Dec 11 21:33:58 2019 +0000"
      },
      "message": "Added usage to init call for audiostream registration.\n\nPlayer type AAudio are always initialized with AUDIO_USAGE_MEDIA. Added\nfix to initialize with assigned usage.\n\nBug: 143578354\nTest: ran native application with usage of AUDIO_USAGE_NOTIFICATION\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I170e0b55d7f90b59d9b5129b22f4a9080957994b\n"
    },
    {
      "commit": "630f74baaf5280a78350fa1ecb7283768a5c4bf9",
      "tree": "e20620e03a8ef5db88b55dfe70edfaa926ef6c43",
      "parents": [
        "643a5692fb1d1b7b0e2c90faa217816f7b524c51",
        "d17c85023ac2058233121b8a94603687c855c997"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 19:21:53 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 06 19:21:53 2019 +0000"
      },
      "message": "Merge \"Add explicit private audio recording request\""
    },
    {
      "commit": "d17c85023ac2058233121b8a94603687c855c997",
      "tree": "39fc63d6f1037eafb71dc8046aefedfadfee9b53",
      "parents": [
        "d203cb92c9c9628b3bead45ec08f826544c1d649"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 24 15:58:35 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 04 17:58:34 2019 -0800"
      },
      "message": "Add explicit private audio recording request\n\nAdd the possibility for apps to indicate that their\ncapture use case is private and that a privileged Assistant\nshould not be able to capture concurrently.\nThis allows to override the default behavior tied to the audio\nsource (e.g VOICE_COMMUNICATION is private by default but\nUNPROCESSED is not).\n\n- Add AAudio API to set and get privacy sensitive mode on input stream\n- Add MediaRecorder API to set and get privacy sensitive mode\n- Modify AudioSource constructor to accept audio attributes instead of an\naudio source to specify the use case.\n- Modify audio policy concurrent capture logic to use audio attributes\nflag instead of audio source to decide of a capture client has\nrequested privacy mode or not.\n\nBug: 137850106\nTest: CTS AudioRecordTest and MediaRecorderTest, manual audio smoke tests\n\nChange-Id: I250ea5da4c1da809ceac0da22ae9bee15b937001\n"
    },
    {
      "commit": "b485238eb33dc86c6afaba67ceaee23508e72130",
      "tree": "6d9a4bdcb7063d3fd844477caf223add744f16bb",
      "parents": [
        "b2872d478fbb66eddd59d8a35d81796850927153"
      ],
      "author": {
        "name": "Zach Johnson",
        "email": "zachoverflow@google.com",
        "time": "Mon Dec 02 15:28:34 2019 -0800"
      },
      "committer": {
        "name": "Zach Johnson",
        "email": "zachoverflow@google.com",
        "time": "Wed Dec 04 00:27:53 2019 +0000"
      },
      "message": "Add stubs so you can use libaaudio from an APEX\n\nBug: 142747680\nTest: compile, verify APEX mounts correctly\nChange-Id: I1350a8e110f5ffc6e1f8316c46a36b8a50b73fb6\nMerged-In: I1350a8e110f5ffc6e1f8316c46a36b8a50b73fb6\n"
    },
    {
      "commit": "99c47ff1654e4991fc971467c97ee8711239c859",
      "tree": "1845298a8f7e56bb1caa35e486de6bc7d92f69f0",
      "parents": [
        "cf4c8b8e7f09cf61ff416167f27f898d6ba96eb2"
      ],
      "author": {
        "name": "Zach Johnson",
        "email": "zachoverflow@google.com",
        "time": "Mon Dec 02 15:28:34 2019 -0800"
      },
      "committer": {
        "name": "Zach Johnson",
        "email": "zachoverflow@google.com",
        "time": "Tue Dec 03 11:32:25 2019 -0800"
      },
      "message": "Add stubs so you can use libaaudio from an APEX\n\nBug: 142747680\nTest: compile, verify APEX mounts correctly\nChange-Id: I1350a8e110f5ffc6e1f8316c46a36b8a50b73fb6\n"
    },
    {
      "commit": "03a2061d53de78b22fc625c40c284c34da6b4dd3",
      "tree": "ef25c052dfa84dc7b239cf1a47cc6b68c4405610",
      "parents": [
        "30ed594000d6ac4f833bbfcea48eca21ede716f6"
      ],
      "author": {
        "name": "Cindy Zhou",
        "email": "zhouci@google.com",
        "time": "Tue Nov 05 16:18:31 2019 -0800"
      },
      "committer": {
        "name": "Cindy Zhou",
        "email": "zhouci@google.com",
        "time": "Mon Nov 25 20:17:58 2019 +0000"
      },
      "message": "Libaaudio Integer Overflow Sanitizer Bug Fix\n\nUsed built in arithmetic overflow checking function in areas where integer overflow sanitizer exposed bugs with native test test_atomic_fifo.\n\nBug: 143307218\n\nTest: Ran the following native tests:\n  test_atomic_fifo\n  test_aaudio_recovery\n  test_aaudio_marshalling\n  test_n_streams\n  test_bad_disconnect\n  test_various\n  test_session_id\n  test_aaudio_monkey\n  test_attributes\n  test_interference\n  test_flowgraph\n  test_return_stop\n  test_stop_hang\n  test_full_queue\n  test_histogram\nRan the following Cts tests:\n  CtsNativeMediaAAudioTestCases\n\nChange-Id: Ie20ffc1a535dec22d81ec27918e2d3eadda21be2\n"
    },
    {
      "commit": "30ed594000d6ac4f833bbfcea48eca21ede716f6",
      "tree": "8ae61ef14aeeb0bd630635c357c5a05815b6c63e",
      "parents": [
        "54ae7b773e2e1e1f9e373e8d803c39f2295ed2f0"
      ],
      "author": {
        "name": "Cindy Zhou",
        "email": "zhouci@google.com",
        "time": "Wed Oct 30 13:24:37 2019 -0700"
      },
      "committer": {
        "name": "Cindy Zhou",
        "email": "zhouci@google.com",
        "time": "Tue Nov 05 08:37:01 2019 -0800"
      },
      "message": "Libaaudio Enable Integer Overflow and Bound Sanitizers\n\nTurned on sanitizer flags for integer overflow and bound checking for libaaudio and libaaudio_internal.\n\nBug: 143307218\nTest: Ran the following native tests:\n  test_aaudio_recovery\n  test_aaudio_marshalling\n  test_n_streams\n  test_bad_disconnect\n  test_various\n  test_session_id\n  test_aaudio_monkey\n  test_attributes\n  test_interference\n  test_atomic_fifo\n  test_flowgraph\n  test_return_stop\n  test_stop_hang\n  test_full_queue\n  test_histogram\nRan the following Cts tests:\n  CtsNativeMediaAAudioTestCases\n  CtsMediaTestCases\n  CtsMediaHostTestCases\nChange-Id: Ie6af19a5b9618f89f5416bc253ed69351911a359\n"
    },
    {
      "commit": "200d15a9c8df0421e665b9135354610019eebdba",
      "tree": "d6b347b54f5d8d3279b34b4bf26b7e48a2840321",
      "parents": [
        "77e5c86ab8179080c8687aa21c838051f330ba0a",
        "6c63ae3b3eda136c89088a82c591ff87ef7bf149"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 28 23:05:57 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 28 23:05:57 2019 +0000"
      },
      "message": "Merge \"aaudio: set default buffer size to capacity/2\""
    },
    {
      "commit": "6c63ae3b3eda136c89088a82c591ff87ef7bf149",
      "tree": "9a6075ad26edda3263313d8cc2bd90db8b043748",
      "parents": [
        "cd75394ef902c43bdc38da88f40b62174c986ded"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Oct 28 10:28:21 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Oct 28 10:28:21 2019 -0700"
      },
      "message": "aaudio: set default buffer size to capacity/2\n\nA recent change in master caused the default buffer size to be zero. ag/9499599\nThat caused a CTS failure.\nThis change restores the behavior of Q.\n\nBug: 143308870\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Id70b0c53e80531c3ea491b56b8fc107ca5ab6e51\n"
    },
    {
      "commit": "77819b82784e4a0a9ef4ccea7618c886f175817e",
      "tree": "ed83084e698b6494774dc0cd5b9cfe4815d899f3",
      "parents": [
        "57cf28f79c1d24ed259bcd8ca6227bb06952c24c",
        "00900336c1e2a67fb852758f9790fbf8050c19c5"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Oct 25 13:30:40 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 25 13:30:40 2019 -0700"
      },
      "message": "Merge \"Remove more header symlinks\" am: a2bc7eada8 am: ec565c575d am: ef6bd3e3a5\nam: 00900336c1\n\nChange-Id: I1ee034dda7407c84110b8fa92a38a427d58203b5\n"
    },
    {
      "commit": "ec565c575d029bdef8bcdf9762276b44255e5dfb",
      "tree": "660e5fa119829f2528809ec9c7ecfb4cc27d7082",
      "parents": [
        "001b8646402131b5e55c6633971b9d9a851cd18e",
        "a2bc7eada863d845b04c85195dbb26df37bdef69"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Oct 25 13:08:26 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 25 13:08:26 2019 -0700"
      },
      "message": "Merge \"Remove more header symlinks\"\nam: a2bc7eada8\n\nChange-Id: I690dd345b0a74078b7cae24bdf3fdb2549d8c62d\n"
    },
    {
      "commit": "6b2859450f91f1cdd8b3ca2435df4dd37907cd8a",
      "tree": "4accc947ac99fa7246f5f7fc54f35b3c960636b1",
      "parents": [
        "35f148bc5a1cb1efffd9aee0223a06720a303329"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Oct 21 14:52:30 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 24 21:25:53 2019 +0000"
      },
      "message": "Remove more header symlinks\n\nTest: build\nBug: 143245419\nChange-Id: I9bb03d54c7792625b73602f2d3721e29f8f929be\n"
    },
    {
      "commit": "8d4f0062c77554f80b069cf794172454e1457892",
      "tree": "11d2883b84b96c105935e1b98a2aa672de695a8a",
      "parents": [
        "1865ec9e8a38506e2c7062793f39113f98da0543"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 03 15:55:41 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 17 12:18:25 2019 -0700"
      },
      "message": "aaudio: write if there is room\n\nGo ahead and write the data to the buffer if there is room,\neven if it exceeds the setBufferSizeInFrames().\n\nThere is no point of holding it in the application buffer.\nBy making the data available to the DSP we can reduce glitches\nor reduce latency.\n\nBecause this offers better glitch protection, we can allow\nsetBufferSizeInFrames() to accept a buffer size of zero.\nThis will provide the lowest possible latency.\n\nTest: OboeTester glitch test\nChange-Id: Ie706867c5dd57c29b4393c806cd51ae09198873e\n"
    },
    {
      "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"
    }
  ],
  "next": "e3cdab3c40cb71284a0e186d7d5a82257e7d34a1"
}
