)]}'
{
  "log": [
    {
      "commit": "7ebbc11051f1af7a520e9ae7e582125c63e92f95",
      "tree": "7605285baef0ae3c9e08a2a887af0fa4b4739628",
      "parents": [
        "05be7e510992ebf41919c84a26b38717a7f3211f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed May 13 15:55:17 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon May 18 16:23:28 2020 -0700"
      },
      "message": "aaudio: lock transport methods\n\nThe start/pause/stop/flush/close and other binder methods\nneed to be thread safe. They do not need to run\nin parallel. So a lock was added for each.\n\nWhere virtual methods are needed, the locked method calls\na corresponding _l submethod, eg. stop() calls stop_l().\n\nThe close logic was also simplified because the \"pending\"\ntechnique is not needed now that we have the locks.\nIt was only needed because a close could have occured\nwhile in the middle of another method.\n\nThis CL was merged with changes in RVC-DEV.\n\nBug: 153358911\nTest: adb logcat *:F\nTest: in another window:  test_binder_attack\nTest: There should be no fatal error in the logcat.\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I5920cf78af4501856756c5c2fc8e77758232508a\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": "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": "f878a8dc99922d0af080bb7d5f61b00e62d00e65",
      "tree": "0edaab0445b841d11fe2c6a22551b6d243bdf2f2",
      "parents": [
        "235684f2c8d9f37c8a8358739a2c2c50164816b0"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 29 17:23:00 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 02 13:52:51 2019 -0700"
      },
      "message": "aaudio: only send timestamps if queue less than half full\n\nThis prevents the stream from getting suspended\nif not read or written fast enough.\n\nBug: 129140370\nTest: test_full_queue\nChange-Id: Icc5ddc72c99fb3c518736f2a50d6c6a0276ee196\n"
    },
    {
      "commit": "a53ffa67b35a7e57efec57811e4f915d1caac1eb",
      "tree": "bb234b23e9f5a749e490a84d9fe161195af8ece7",
      "parents": [
        "9f81192d77a62564dc1e2c7dad1afe601784a7b9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Oct 10 16:21:37 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jan 19 15:43:55 2019 +0000"
      },
      "message": "aaudio: rename timestamp variables\n\nThere were several different timestamp variables with slightly\ndifferent meaning but with the same name.\nThat made it hard to debug the code.\n\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Iebf438676925c698377abe02c81f3d559829318a\n"
    },
    {
      "commit": "762365c3ee5f212d4995e002e1c53b221b587c92",
      "tree": "ec2322a17d6bb3c9c741f0b6915239c70fa161a0",
      "parents": [
        "d00c4607a5f7d25dfe925a20a1fc5fd7cfcee67a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 10 16:02:16 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Dec 13 17:39:26 2018 -0800"
      },
      "message": "aaudio: suspend a stream when its queue is full\n\nThis will prevent log spam when AAUDIO_CALLBACK_RESULT_STOP\nis returned from an audio callback.\n\nBug: 120845500\nTest: test_return_stop.cpp\nChange-Id: Icfe1541d6fa7b045285ac3dfbb75dfed5424d49b\n"
    },
    {
      "commit": "2fe718b88ebc7e9f10e1195591dd62ae9e26ed8d",
      "tree": "de5712270006a8db8c1cdf2ba70253bffc789c4c",
      "parents": [
        "1267e887bd9d38e2785b601e872a26acf0ec17f9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon May 14 12:28:32 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue May 15 12:17:04 2018 -0700"
      },
      "message": "aaudio: fix possible race condition in close()\n\nMove increment and decrement of reference count under\nthe same lock used for finding the stream.\n\nBug: 79693915\nTest: run CTS tests\nChange-Id: I206eb09724a81f2d79a03fa756adbcbb8abf5efa\n"
    },
    {
      "commit": "6e2770ef771b7a3042d606c37f9c3af8a933439b",
      "tree": "502cf6cde6e624096f922f6dadf20a42870e2f04",
      "parents": [
        "e5a37268101a2c9d8019938f4e5ac9eec2e52fca"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue May 01 13:03:52 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue May 01 15:46:47 2018 -0700"
      },
      "message": "aaudio: use weak pointer to prevent UAF\n\nAvoid using the mServiceEndpoint smart pointer\nfrom multiple threads.\n\nBug: 74122779\nTest: see bug for test instructions\nChange-Id: Idaf9e32a163b25e51bde35d6f5ea10a372b5d916\n"
    },
    {
      "commit": "bbd5286e99bbacf9907e2ecf1f7181db17ee6e46",
      "tree": "b523037660dffe33c9aa1d8cb65938b934f16000",
      "parents": [
        "f255369091d48ba7475ee4aae840a8a9c7a15f07"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 13 11:37:42 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 18 10:18:49 2018 -0700"
      },
      "message": "aaudio: teardown stream based on a port handle\n\nNeeded for silencing specific input streams.\nPass AAudioService reference into AAudioServiceEndpointMMAP.\nUse it to find a specific stream by PortHandle then\nstop it and disconnect it.\n\nBug: 72134552\nTest: b/72134552#comment10\nChange-Id: Ibdf242f834c83b47c967c3cc634ed1083b019d4a\n"
    },
    {
      "commit": "19e990e480245af25ec03ff3a3f53b820b0732cd",
      "tree": "8eb6afdfc9a634c835c6cc0d8b28bd69ffbdd2f2",
      "parents": [
        "ce6c8479c587bf61dfbd7b050752fec54135ba1f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 22 13:59:34 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 23 21:50:37 2018 +0000"
      },
      "message": "aaudio: improve logging to help debugging\n\nUse __func__ more often.\nShow thread entry and exit.\nLog illegal state transitions.\nRemove some unnecessary logs.\n\nBug: 64310586\nTest: use AAudio then look at the logs\nChange-Id: I2e289698efc897640588ba534b5513ac39b15043\n"
    },
    {
      "commit": "94862529bf1d1506bc09a05788e56aafb5c6e7f5",
      "tree": "7eb5ea6b757f88bfb25f667a88ee684226243470",
      "parents": [
        "3a5608cf069994725f6e50950f0462e91dcd8c51"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 13 21:31:36 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Dec 05 09:28:38 2017 -0800"
      },
      "message": "aaudio: defer closing of stream until safe\n\nWhen a client asks to close the stream, we mark it as\ncloseable. When the last client finishes with the stream\nthen we actually close it.  References to the stream are counted.\n\nThis will prevent a stream from getting closed while another thread is\ntrying to start it or stop it, etc.\n\nTest: CTS nativemedia/aaudio\nChange-Id: Ic1c7eceded6bff9899f37a5e7d9f2b695b8cdc97\n"
    },
    {
      "commit": "2329638e097622653cb2c4acc145b996e317a38b",
      "tree": "d25dccdc184ac7ce8b7aceb227411592ff256484",
      "parents": [
        "10edfcf70857cc0a22afbbd3fc8f57f0c8a2953a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 20 15:45:11 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Nov 21 10:30:58 2017 -0800"
      },
      "message": "aaudio: use xruns detected in the service\n\nThe service knows when an actual xrun occurs so we pass\nthat value to the client.\n\nBug: 38512417\nTest: write_sine_callback -pl -n1 -s20 -c2 -u\nChange-Id: I9e5ff1edd2e9378957309280162d7cda855f5adb\n"
    },
    {
      "commit": "523b3047af443d0a51141ddabd328d52be5a23b0",
      "tree": "2596b9d310c3c59d391634d131d2ae866ddf1d47",
      "parents": [
        "1e0c671e14660588410560a55c34718bb8af3b22"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 13 13:03:08 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 15 13:29:26 2017 -0700"
      },
      "message": "aaudio: keep track of streams using strong pointers\n\nMaintain strong pointer to service stream during service calls.\nUse simple AAudioStreamTracker instead of complex HandleTracker.\n\nBug: 65280854\nTest: affects all MMAP streams, run all CTS tests, etcetera\nChange-Id: I3d2ed8b588ea39c216dacd4dea503b11c33f36f3\n"
    },
    {
      "commit": "bcc3674648bc6f554d89a2a5d7721ed41c53f83b",
      "tree": "ae3f8fcecce7f06b44088ff4c8adf3248f287f4b",
      "parents": [
        "7328a80ffc83729cc6252c79e0851a31af59c653"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 31 17:24:51 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 06 17:21:34 2017 -0700"
      },
      "message": "aaudio: fix timestamps and underruns\n\nStart the client after we get valid timing data from the server.\nThat can take a while because of the long cold start times.\nThe client is synced with the current position of the service.\nNow the client can start clean with no underruns.\n\nBug: 63918065\nTest: test_timestamps.cpp\nChange-Id: I5d01eb844e4b14cd5477d56ea1dd9e309abc1c52\n"
    },
    {
      "commit": "39f02ddfbfd9313370d862a6c4727826379a319a",
      "tree": "aa5c61a50fff59d92db99619edd67b31e9d938c3",
      "parents": [
        "ee079fe295c41f89c2ac6316e99ee10847fb78fd"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Aug 04 09:13:31 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 24 14:59:25 2017 -0700"
      },
      "message": "aaudio: fix EXCLUSIVE mode interfering with SHARED\n\nThe MMAP endpoints were not tracked by the EndpointManager\nso it could not broker EXCLUSIVE access. To fix this the MMAP stream\nwas refactored to use a per-client stream and a per-device endpoint.\n\nCleanup close() of MMAP stream.\nAdd AAudioServiceEndpointShared.cpp.\nExtract AAudioServiceEndpointMMAP from AAudioServiceStreamMMAP.\nTrack MMAP endpoints so we can manage EXCLUSIVE and SHARED access.\n\nBug: 64494572\nBug: 64310586\nTest: see bug, use write_sine to play a shared stream and a excl stream\nChange-Id: I5053193abfd9b8a69a2f7e1110739d65e2af5d64\nMerged-In: I5053193abfd9b8a69a2f7e1110739d65e2af5d64\n"
    },
    {
      "commit": "a5222e298c294781067950a7cc319d3278fa845a",
      "tree": "69ea25d3c54785ed74af3aee94c5f760d3f13da0",
      "parents": [
        "909f4a6cada3d5fb7594da7d1809ba62d1b47340"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 28 13:31:14 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 03 10:07:39 2017 -0700"
      },
      "message": "aaudio: improve error logging\n\nReport when INVALID_STATE returned.\nThis was used to debug monkey test errors.\nCleanup some log messages.\nImprove \"dumpsys media.aaudio\"\n\nBug: 64310586\nTest: CTS nativemedia/aaudio\nChange-Id: Ifbcac4794cda22cccbacff6352243c0ef4589c53\n"
    },
    {
      "commit": "97350f9df7252c881f011a410fcd9e6d766d2bee",
      "tree": "fab6334a25607e03276648611584b8fc23b40463",
      "parents": [
        "eb1c0658e405e5b7e26f4b16761c5b1ce3f77d46"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 21 15:59:44 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 02 10:57:31 2017 -0700"
      },
      "message": "aaudio: improve accuracy of timestamps\n\nAccount for latency added by the AAudio service.\nFix input timestamps.\n\nBug: 37080396\nTest: test_timestamps.cpp input_monitor.cpp\nChange-Id: I1053cd21af722bb9b9371df4e5731bf4a0a57b0b\n"
    },
    {
      "commit": "940083c3049e269f6c150d5477eccb6bad32b129",
      "tree": "ae4c20530003d7c9086d343a3b3e7d1d5b17562e",
      "parents": [
        "af842eb79ed9943b7a4495136197e093fc7d8ba7"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 17 17:00:02 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jul 17 17:00:02 2017 -0700"
      },
      "message": "aaudio: fix intermittent hang and position error\n\nFix hang caused by recursive mutex.\nFix disconnect caused by getPosition() failing, which was\njust because the stream wasn\u0027t ready yet.\n\nBug: 63775537\nBug: 63709749\nTest: run \"aaudio_loopback -pl -Pl -c2 -n6 -te -m\" many times\nChange-Id: Ic1d54360b55cfc8ecc1809584c262bc0976c58bb\n"
    },
    {
      "commit": "cb4dae216758d9e9a28050f65097f1ce905c03e9",
      "tree": "4c3c49679384d70006675e9e06c7e8e8117e206c",
      "parents": [
        "0acb3209107802e2ab116f8374aab886579729bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 01 19:39:32 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 12 12:17:33 2017 -0700"
      },
      "message": "aaudio: indicate client UID and PID to audio flinger\n\nImplement correct indication of client UID and PID to audio flinger\nfor AAudio MMAP streams in both exclusive mode and shared mode.\n- Add start/stop client methods on MMAP streams used only when the MMAP\nstream is in AAudio service and carries a mix of shared streams.\n- Add \"In Service\u0027\" indication from \"client\" side to AAudioServiceStreamMMAP\nso that the behavior can be adapted accordingly.\n- Modify logic on audio flinger side with regard to mmap tracks and\naudio HAL stream activity:\n  - use same audio session for all clients on a same stream to match\n  audio policy logic to share same direct output stream for clients on same\n  session. This is also more consistent with current volume and effect\n  handling as all MMAP  clients sharing the same output stream have the\n  same volume and use case.\n  - start/stop the HAL when the stream is started/stopped with the initial client\n  handle (returned when the stream is opened) but do not create a track.\n  AAudioService implementation will always send an additional start command before\n  first client starts and a stop command after last client stops,\n  in both shared and exclusive mode.\n  - start/stop a track only if the start/stop stream command is received\n  with a handle different from the initial handle.\n- Allow more than one active client from the same UID on a MMAP input in audio policy.\n\nBug: 62950008\nTest: verify playback and capture in mmap mode\nMerged-In: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\nChange-Id: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\n"
    },
    {
      "commit": "5a26e665e1abb00ed1c8a7e421e19763324776e9",
      "tree": "91ba3e7ef4123ea42403936e451836f8b993339f",
      "parents": [
        "c06dd405a61b24116ac08415709e5575b2583492"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 07 12:44:48 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 07 12:47:52 2017 -0700"
      },
      "message": "aaudio: do not assert if deleting an unopened stream\n\nBug: 63440754\nTest: write_sine.cpp, see bug for repro case\nChange-Id: I1f7ed1bd97d4cfcd54d27d41d708c6c03d3d88ac\n"
    },
    {
      "commit": "98d6d9227f6599a5aa7b023217c02a01cc4536cb",
      "tree": "847f63fabe692cdcc73dcdda8c681cd9f4087e97",
      "parents": [
        "014a56b57af9e4c744d1ac6f5a95eb1ac7e3f445"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 06 11:52:45 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 06 16:41:07 2017 -0700"
      },
      "message": "aaudio: stop calling virtual methods from destructor\n\nWas calling close(), which is abstract and virtual.\nThis may have been related to some audioserver crashes.\nAlso cleaned up some strong pointer handling.\n\nBug: 63390734\nBug: 63353455\nTest: run CTS nativemedia/aaudio many times\nChange-Id: Ib95aed60a64771b64395c67f0921c67146f9d10f\n"
    },
    {
      "commit": "4501b3510f9b2af2ff63a0471de24e3feea1d0a8",
      "tree": "486de512a65eaad91323fd521823b7230088643d",
      "parents": [
        "8dd045aaf7079fce7c3f0d8457d4e4c7055bac03"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jun 29 18:12:36 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 01 14:28:57 2017 -0700"
      },
      "message": "aaudio: improved dumpsys\n\nAdd more information about various streams and endpoints.\n\nBug: 38396780\nTest: adb shell dumpsys media.aaudio\nChange-Id: I5cc116574bfc3aa93703c182d933dbdfcbefad7a\n"
    },
    {
      "commit": "5ef003b750ae5188c36d6512584da442be125148",
      "tree": "60b325497093e81d50c9c535cc6fe061a1c9dab9",
      "parents": [
        "fef6b3d4fdd5dcde27e29990dec6ee226aa7b873"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 30 11:43:37 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jul 01 03:29:28 2017 +0000"
      },
      "message": "aaudio: disconnect when onTearDown() called\n\nIt will be called, for example, when switching from speaker to Bluetooth.\n\nBug: 62883778\nTest: run a long app and switch to or from Bluetooth\nChange-Id: Iafb9b52d85c30fee71de46abfb99a27a1daabf59\n"
    },
    {
      "commit": "b63320a36e69c52b46cd099e83fe5922070c43a1",
      "tree": "51dd78b8a7e99d34eec00ee11344a073a866e39f",
      "parents": [
        "e27d3a435c0f2393f6a53bb6b23569aa04904bd0"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 30 10:28:20 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 30 10:28:20 2017 -0700"
      },
      "message": "aaudio: fix resource leak in client tracking\n\nWas using the wrong pid.\n\nBug: 38267698\nTest: run an aaudio example like write_sine.cpp and control-C in the middle\nChange-Id: I8819fcdd78354554b926d8b8a59efa1a81fed110\n"
    },
    {
      "commit": "11e8d335b1da528ee771b19b63df23ae6fd52f41",
      "tree": "b5679b54a7acfbdf455c95355da8c0b9a4dbc51c",
      "parents": [
        "1fa57e8d3149703e794997edffa4e03bfb0a6887"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed May 24 09:59:02 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jun 29 21:40:21 2017 -0700"
      },
      "message": "aaudio: close MMAP stream if client dies\n\nNotify client when audio service dies. Clear connection.\nNotify AAudio service when client dies. Close client streams.\n\nUse sp\u003c\u003e to track ServiceStreams.\n\nBug: 38267698\nTest: test_no_close.cpp\nChange-Id: I5f1699ed3b8b7bd960947c0028a89ca8419ce7a0\n"
    },
    {
      "commit": "2ac035fdc577a843d07f385dbe3c4e2229d886dc",
      "tree": "5715d5f033318a3cbd5a89b73ee32334bdc6ea9a",
      "parents": [
        "f3ffd1ced8c4709388f8ed5c9a49284f36aa5b97"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 23 14:51:14 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jun 29 18:26:52 2017 +0000"
      },
      "message": "aaudio: prevent apps from affecting a stream they do not own\n\nBug: 62951648\nTest: need test that hacks a stream handle from another user ID\nChange-Id: I342f2a4cf9350c949f346b3c867d7f9e035c76b4\n"
    },
    {
      "commit": "ec89b2e2f8c84a7d3936db1a888034f4a4b0df16",
      "tree": "37bfd6b5e440bb91bb1b172ca0ea349c94056a61",
      "parents": [
        "0d3c68179e395757ab053cf6c480db7841c4d9d5"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jun 20 15:05:06 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Jun 24 09:04:47 2017 -0700"
      },
      "message": "aaudio: fix CTS for MMAP mode\n\nImprove calculation of buffer capacity based on requested minimum.\nAdjust timing of start() to reduce underflows.\nTrack ServiceEndpoints based on requested deviceId.\nFix getFramesRead() and flush() behavior.\nFix timeouts due to ClockModel lateness bug.\nMisc cleanup.\n\nBug: 37755299\nTest: test_aaudio.cpp\nChange-Id: I637c16e87fbe14b6f28c60aeea0b9dfed965ecd0\n"
    },
    {
      "commit": "9dca9824da74d50be02bc81f539cc77b7bde678a",
      "tree": "fc1191a65e3677298cc50195ed8a9781d5545d2a",
      "parents": [
        "629afae6135e6dc1e88ab4080f984fb30b3cdd7c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 26 14:27:43 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 30 15:36:21 2017 -0700"
      },
      "message": "aaudio: remove deprecated aaudio_audio_format_t\n\nShould be using aaudio_format_t\n\nBug: 62141619\nTest: compile and run CTS test_aaudio.cpp\nChange-Id: Ibbba2769dfd8bcd9c108d87c19fe1fad2ba43df1\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "942bdc0aebc88dc8b12c0e7742ec0003bbb8b80f",
      "tree": "2791ba38cdc9b1839a9d17bc20e53fde6a4c8f7c",
      "parents": [
        "441f2ccb103fdb6fe6409eac870ea30ee3ccfb33"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed May 03 11:36:50 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 04 17:23:47 2017 -0700"
      },
      "message": "aaudio: plug some resource leaks\n\nClose some file descriptors for shared memory that were not getting closed.\n\nBug: 37947848\nTest: see bug for test procedure\nChange-Id: Icdc13188b0a49d08b67babff0852c3a4eda8fd2b\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "71f35bb687476694882a617ba4a810a0bb56fe23",
      "tree": "93e01bfc7cb0b942e0ee16892c26d5a184b3e541",
      "parents": [
        "24059088a46160f731903cc66404184a531d0478"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 13 16:05:07 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Apr 21 05:11:26 2017 +0000"
      },
      "message": "aaudio: fix SHARED MMAP mode in server plus other bugs\n\nFixed some buffer miscalculations, and some NPEs in the close() code.\nAdded debugging and some general cleanup.\nFixed data conversion.\nFixed start/pause/flush in server.\nAdded reference counting in server for endpoints.\nPrograms can now be ran more than once.\nGeneral code cleanup.\nReconnect with service if server dies.\nMove stop() logic into server for better synchronization.\nAdd sleep to prevent race condition when closing an MMAP stream.\n\nBug: 33398120\nTest: two write_sine_callback.cpp can be run simultaneously\nChange-Id: Ibb006215a498868c222228d675ff961d7e0bf514\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "c0c70e3c7dd10bc2c0caffcab1f3f5fb406b35fb",
      "tree": "2544186372c9778460821e410c09a0edba8a17bf",
      "parents": [
        "d1b4d0a6a65476236f972cfc181a1db2b96d93ef"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 09 13:18:38 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 12 18:26:12 2017 +0000"
      },
      "message": "AAudioService: integrated with audioserver\n\nCall the MmapStreamInterface from AudioFlinger instead of the FakeHAL.\nFix sending timestamps from the thread.\nAdd shared mode in service.\n\nBug: 35260844\nBug: 33398120\nTest: CTS test_aaudio.cpp\nChange-Id: I44c7e4ecae4ce205611b6b73a72e0ae8a5b243e5\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n(cherry picked from commit 7f6b40d78b1976c78d1300e8a51fda36eeb50c5d)\n"
    },
    {
      "commit": "3316d5e6d375a4f09c681205e9094d30a0bfc4a2",
      "tree": "53d62d5e3493f6a51c9af8557ca4d4f0f5498e8c",
      "parents": [
        "3db4f4f85cfe90013952590b1aaea97dc62a243d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Feb 15 11:23:01 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 16 16:27:55 2017 -0800"
      },
      "message": "libaaudio: changes for API council\n\nRemoved typedefs like aaudio_sample_rate_t\nRemoved use of handles. Just pass back opaque pointers.\nSimplified gettersi in Stream.\nRemoved getters from Builder.\nUpdate libaaudio.map.txt\n\nTest: CTS test_aaudio.cpp\nChange-Id: I63eaec3e5a8ecc516cfc1f950f4b4f54df1bd518\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "5ed503c7a66c90f93759c90237a9b432dbd93f9f",
      "tree": "e8868af7a85c42ad915cef8ec05ca642937d25ba",
      "parents": [
        "82e1a5e928b6b73c6b568ed8bc4d0b81e503afd8"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Feb 01 09:38:15 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Feb 01 12:20:40 2017 -0800"
      },
      "message": "liboboe: rename Oboe to AAudio\n\nAll of the edits were done using scripts in media/liboboe/scripts.\nThe conversion is done using SED, which is called from\nconvert_oboe_aaudio.sh\nThe conversion can be reverted when debugging using revert_all_aaudio.sh\nThe string substitutions are in oboe_to_aaudio.sed\n\nBug: 34749573\nTest: cts/tests/tests/nativemedia/aaudio\n\nChange-Id: Ia10b34472a90df2652b87607c99156e9084e57aa\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "dec33abe3739b2116ef6fbac36f7ca5d26f9d190",
      "tree": "1c64bd04521ab7dee9bb21b8d5d7bd0435ca302f",
      "parents": [
        "a77cf16037e73d1bee1852e13d92c9c7521de376"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jan 17 14:48:16 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jan 30 17:18:08 2017 -0800"
      },
      "message": "OboeAudioService: add thread to service for passing timestamps\n\nCleanup several TODOs.\n\nTest: test_aaudio in CTS\nChange-Id: I7fc956b6a21cbb592f98e1e5a8f43ebd6926d796\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "2355edbcacfcb6e852a8707d893aaca788d42fdc",
      "tree": "c01ff46849cd0f88cc7f695a81073f2c40c94a47",
      "parents": [
        "cac8d4ea54ece7aeb4b2ffa7aafd06fbec731a62"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 26 13:54:02 2016 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 18 08:27:08 2017 +0000"
      },
      "message": "OboeService: initial commit\n\nThis builds a standalone service that is easy to test.\n\nBug: 33269952\nTest: test_oboe_api\n\nChange-Id: I1890b1b974e728c2c0c15e24aa02121c2774bd56\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    }
  ]
}
