)]}'
{
  "log": [
    {
      "commit": "49a6d9c78aaa07ab83494d628cc6b7a2386a2b55",
      "tree": "70acc7a3307c66d6ac1b7ee5cc59d88ebfacad34",
      "parents": [
        "9fa7856094a8705be2061e532c36e74d103719b8",
        "55f730f7c1a0b5f963f47fdd65c43609a143f18c"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Dec 02 00:41:55 2020 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Dec 02 00:41:55 2020 -0800"
      },
      "message": "Merge rvc-qpr-dev-plus-aosp-without-vendor@6881855\n\nBug: 172690556\nMerged-In: I72658443fde61aa5f10463fcc42772daf4143ed0\nChange-Id: Ifb9605a1f9407357ddc755551e2d1d51c7f09bfc\n"
    },
    {
      "commit": "e3b59ac285356dfe1bd416d46672fe0b1f10dc6f",
      "tree": "cc260c7b2867101599cdba75b53b4e0578c7345f",
      "parents": [
        "7aacb78d8d049af5e9949de9fc34be4650b5b176"
      ],
      "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": "Tue Nov 24 22:56:29 2020 +0000"
      },
      "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\nMerged-In: I42506484b1d0b0482618b7314fad4c8012a06fb4\n"
    },
    {
      "commit": "375283dd6031a71e44fc17efad05b741302c78e5",
      "tree": "da9cbab41fb7a3610201cfe17d09d7a5e9d3a37e",
      "parents": [
        "b77e219423638bd958a5673dba017ea72aaa2e39"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 21 18:14:43 2020 -0700"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue Sep 15 18:02:58 2020 +0000"
      },
      "message": "Add package name when creating AudioTrack.\n\nThe package name can be used when starting an external vibration, which\nis used by vibrator service to check if the application has the\npermission to start vibration.\n\nBug: 165910728\nBug: 162343845\nTest: atest AudioTrackTest MediaPlayerTest\nTest: start audio-coupled-haptic playback\nChange-Id: I6d12c4e141c037ee94ee79cbb9bf537421ec9507\nMerged-In: I6d12c4e141c037ee94ee79cbb9bf537421ec9507\n"
    },
    {
      "commit": "2e40c302d6117ec6eb65f25832a71488367b4dfb",
      "tree": "ce2cff004a09076114faabf595b1a116bcb461ff",
      "parents": [
        "054de8d6440fd30238fa9330bcc038cda745b244",
        "924eccfd6f6d3aaed5db627a0bdcfcaaf9b09a18"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Aug 28 08:38:54 2020 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Aug 28 21:23:54 2020 -0700"
      },
      "message": "Merge Android R (rvc-dev-plus-aosp-without-vendor@6692709)\n\nBug: 166295507\nMerged-In: Ie94127c1e981cb18671d5137ba0d39355d1353da\nChange-Id: Ib22ad33bda8d561af537499b6d31ab6134eeae02\n"
    },
    {
      "commit": "0a30ce1b6152e42f6d972b14471d610ebfc5003c",
      "tree": "056216ef58c3de58080ca10cf10581ed01c4c441",
      "parents": [
        "d0a6433acb8b00939e0186ac7c3ca6194477cada",
        "8375b9299c05d81d106b5d31aed4aad02a6e1bdb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 29 20:41:07 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 29 20:41:07 2020 +0000"
      },
      "message": "Merge \"Update language to comply with Android\u0027s inclusive language guidance\" am: 65703e6ae7 am: 8375b9299c\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1375267\n\nChange-Id: Ic494129c436b443fd011477dd45de752cec1e3b9\n"
    },
    {
      "commit": "447cea7337270f18307539a8d6a056ae3a0996fd",
      "tree": "ece2230a5058d31f2b01951ab7b0d7e0df00cf02",
      "parents": [
        "c0ef095e07f03141a320f03d15eef1875d4f8f6c"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue Jul 28 22:35:18 2020 +0000"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue Jul 28 22:35:24 2020 +0000"
      },
      "message": "Update language to comply with Android\u0027s inclusive language guidance\n\nSee https://source.android.com/setup/contribute/respectful-code for reference\n\n \nBUG\u003d161896447\n\nChange-Id: Ic4d826f7d099a1f22f58517541d21a3e840955ce\n"
    },
    {
      "commit": "a629bd13e9f224b8472365135757f0676636f8e2",
      "tree": "4bdce444fd726634f20803fd279ab254a478c262",
      "parents": [
        "752adf7f1a340cbb6599fcff1842cf3659c75612"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 05 16:03:53 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 12 10:43:37 2020 -0700"
      },
      "message": "MediaMetrics: Prepare audio device usage protos for statsd\n\nMediaMetricsAudioRecordDeviceUsageReported\nMediaMetricsAudioThreadDeviceUsageReported\nMediaMetricsAudioTrackDeviceUsageReported\nMediaMetricsAudioDeviceConnectionReported\n\nAdd track traits to identify static AudioTracks.\nFix AudioTrack/AudioRecord flag communication.\nMove debug logging to verbose (delivered protos show in dumpsys).\nUnknown strings which fail validation become empty.\nTest statsd type validation.\n\nTest: atest mediametrics_tests\nTest: adb shell dumpsys media.metrics (after BT connection)\nTest: statsd_testdrive (294-297)\nBug: 149850236\nChange-Id: I53c5d18a346af54941007b9938a8ab10e34b7038\n"
    },
    {
      "commit": "167afa7033328250169f141f85e3bc71d89475c9",
      "tree": "83ddee08eb8bb8abc7bf73293c4b69bc7afa8e94",
      "parents": [
        "a9d7640540c6a499c170072faa7d2d2b81d4ec34",
        "64e16a7c0a0341ec3e759d9522c037606e49ce70"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jun 03 00:04:55 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 03 00:04:55 2020 +0000"
      },
      "message": "Merge \"audioflinger: fix FIXME in logBufferSizeUnderruns\" into rvc-dev"
    },
    {
      "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": "10fb4beafb1eaa496842e925d779b018d4f1639f",
      "tree": "d91daa42f84e39c973ea3af2f0443bf88820e319",
      "parents": [
        "3fdcc3469075ce68a9e419409819a605dea220d6"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 27 22:22:22 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 28 12:56:16 2020 -0700"
      },
      "message": "AudioTrack: Fix start logging spam.\n\nTest: OboeTester in OpenSL ES mode\nBug: 154868033\nChange-Id: I0dc7b78c8982a5ce1ac79b1494af0f16b4a7bb48\n"
    },
    {
      "commit": "e658962c4246669810fc756b098f7fee8d220659",
      "tree": "0621da52970b335d9bd06bec6078e9d8ad879de3",
      "parents": [
        "eca178fbbf489c06f1dd275658dc8a438328565e",
        "cc6ed2d53901850ebd06c8e8303a20f90bb2d890"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 19 17:33:36 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 19 17:33:36 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: lower FAST denied warning level\" into rvc-dev"
    },
    {
      "commit": "cc6ed2d53901850ebd06c8e8303a20f90bb2d890",
      "tree": "d5a71eafe4a16e09ba2b8ec99e563bf5a7256c1c",
      "parents": [
        "05be7e510992ebf41919c84a26b38717a7f3211f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon May 18 13:06:54 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon May 18 15:45:15 2020 -0700"
      },
      "message": "AudioFlinger: lower FAST denied warning level\n\nChanged ALOGW to ALOGD because the warning was causing\npeople to think a bug had occured.\n\nBug: 139825832\nTest: Enter:  adb logcat | grep \"denied by server\"\nTest: Launch OboeTester\nTest: Tap TEST OUTPUT\nTest: select SRate: 32000\nTest: Tap OPEN\nTest: logcat should show \"AUDIO_OUTPUT_FLAG_FAST denied by server\"\nTest: Should be level D instead of W\nChange-Id: I1f3f231d4304a1132964fbb1efce5922e7b91ae7\n"
    },
    {
      "commit": "ea84038803580b4c35ce4cb60918c0c384127417",
      "tree": "d8c91402af2f630e4f1c36f7798d161767d01301",
      "parents": [
        "38e65911a65a51edf2efd5ca63c4e00daac24852"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 05 21:50:17 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 13 11:15:49 2020 -0700"
      },
      "message": "MediaMetrics: Prepare statistics for protos\n\n1) Add AudioRecord to Analytics trigger.\n2) Log RecordThread statistics.\n3) Rename DURATIONNS to EXECUTETIMENS to avoid confusion.\n4) Use streamType from server not client.\n5) Split MMAP types to MMAP_PLAYBACK and MMAP_CAPTURE.\n6) Use string flags for AudioTrack and AudioRecord.\n7) Compute underrun frames for MixerThread.\n8) Log BT connection state.\n\nTest: adb shell dumpsys media.metrics\nTest: atest mediametrics_tests\nTest: adb shell dumpsys stats --metadata\nBug: 149850236\nChange-Id: Iacf3f117c00ec9f377e62862080252aef9dc084f\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": "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": "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": "06a730b1fe80592767b45643cd86bf6006091965",
      "tree": "6043dcb5cf4d85adcca26b1ec162faee2b4f6afc",
      "parents": [
        "b744fafc831e1a13cc5e054aa4812281c3c5c7fc"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 09 13:28:31 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 09 13:28:31 2020 -0700"
      },
      "message": "AudioClient: Fix clang-tidy warnings\n\nTest: atest AudioTrackTest\nTest: atest AudioRecordTest\nBug: 153658358\nChange-Id: Id24db96188a777336f41d74d4fbdfd90147ee8bc\n"
    },
    {
      "commit": "48e98cf8dbd9fa212a0e129822929dc40e6c3898",
      "tree": "7df330d170114ea0cfab3c2010a0c20263e20129",
      "parents": [
        "f7d6ba94b17aa44f2c4ebbfcd73b667e583b2202"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 27 08:03:37 2020 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 06 08:50:43 2020 -0800"
      },
      "message": "Fix race condition in AudioTrack::releaseBuffer()\n\nIgnore releaseBuffer() if it is for a different IAudioTrack than was\nused for obtainBuffer().\n\nBug: 136268149\nTest: at bug comments #32 and #45\nChange-Id: I2e1955c60479edcba6e7d66c98b9faef088b65d9\n"
    },
    {
      "commit": "f6eb4c388b6499752c2ee47b663956dcbf0dd7e4",
      "tree": "032329fc713202ce01d5e17420f47bd6025f041c",
      "parents": [
        "c62ad13ad8da6b31168f0d9f3e5f2a770ed0bbee"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Feb 25 14:06:25 2020 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Feb 26 16:16:44 2020 -0800"
      },
      "message": "Add callback for codec format change.\n\nWhen creating native audio track, a IAudioTrackCallback will be created\nsystematically. All callbacks will be cached in Threads and protected by\na lock. Whenever there is a callback event from audio HAL, it will\nfinally trigger callback to native audio track. Currently, there is only\none callback event, which is codec format change.\n\nBug: 150301890\nTest: manual\nChange-Id: I32293627ed923b17dd25f11f0ee0a0c35cd7c01f\n"
    },
    {
      "commit": "305996c854ee76becf0fad73505f0fe9abde4c5d",
      "tree": "b86a512fa23a42e0b798744050860498a8857811",
      "parents": [
        "2496ffbc450029ee9ec26980a101e71352b4f635"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 27 08:03:37 2020 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 30 18:32:43 2020 +0000"
      },
      "message": "Fix race condition in AudioTrack::releaseBuffer()\n\nIgnore releaseBuffer() if it is for a different IAudioTrack than was\nused for obtainBuffer().\n\nBug: 136268149\nTest: at bug comments #32 and #45\nChange-Id: I2e1955c60479edcba6e7d66c98b9faef088b65d9\n"
    },
    {
      "commit": "b68f5ebb53434e800c43715127e2d1032e3a9b54",
      "tree": "7e1c75e02cb63d4c9d1f0b7dc3322001e1463b33",
      "parents": [
        "3b4c1f0320efc7a54c4ab811727c432cda73dd37"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 03 16:49:17 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 28 13:03:22 2020 -0800"
      },
      "message": "MediaMetrics: Add AudioFlinger logging\n\nTest: atest mediametrics_tests\nTest: mediametrics dumpsys\nBug: 138583596\nChange-Id: I2086c5a780744d409052fde4c5ebc1dc92d95ea8\n"
    },
    {
      "commit": "8b0bfd91473eea4c33946347d98fb356eac15867",
      "tree": "62482792139dcb6c21a70f8bf2656af6c944137f",
      "parents": [
        "255f610f5ab71b5e36d93744dfe058daf6c96041"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Dec 23 13:11:11 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 14 20:08:09 2020 -0800"
      },
      "message": "AudioFlinger: Propagate uid info for AudioSession references\n\nEnables better tracking of permission.\nImproves dumpsys of global AudioSession references.\n\nTest: Clarity effects\nTest: adb shell dumpsys media.audio_flinger\nBug: 129355845\nChange-Id: Ia0226c7047bb38b74e8b0cb67f12ec581b496631\n"
    },
    {
      "commit": "f27e987d277c186010e8bdd1d5e781158b31f9af",
      "tree": "87703f33fe40f06c2faa78daa4105bb6cb8db79d",
      "parents": [
        "b7b870db0c6cc0c6375b154400a813b84f5056b4"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sat Dec 07 06:28:46 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 17 11:20:57 2019 -0800"
      },
      "message": "Naming consistency: MediaAnalytics to MediaMetrics\n\nBug: 145780674\nTest: build, boot, dumpsys media.metrics\nTest: atest mediametrics_tests CtsNativeMediaMetricsTestCases\nChange-Id: Icbfa98da9e61702aee9a1d807b5e126b4b9c6458\n"
    },
    {
      "commit": "7dd39723b34c8378fc5eabb4d4ccacf32f55ffe2",
      "tree": "222de47bcb84931d714d250fe51d3249771edc18",
      "parents": [
        "61d4a093f4b4041b145fbd7a3ab5ec04679f87d9"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Sep 05 15:14:30 2019 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 13 10:59:51 2019 -0700"
      },
      "message": "Improve visibility of IMemory security risks\n\nThis change renames the IMemory raw pointer accessors to\nunsecure*() to make it apparent to coders and code reviewers\nthat the returned buffer may potentially be shared with\nuntrusted processes, who may, after the fact, attempt to\nread and/or modify the contents. This may lead to hard to\nfind security bugs and hopefully the rename makes it harder\nto forget.\n\nThe change also attempts to fix all the callsites to make\neverything build correctly, but in the processes, wherever the\ncallsite code was not obviously secure, I added a TODO requesting\nthe owners to either document why it\u0027s secure or to change the\ncode. Apologies in advance to the owners if there are some false\npositives here - I don\u0027t have enough context to reason about all\nthe different callsites.\n\nTest: Completely syntactic change. Made sure code still builds.\nChange-Id: I5fb99aa797c488406083178a6b05355d98710d3b\n"
    },
    {
      "commit": "ed6032042bad063d7907c35d45a062f68eb2aeca",
      "tree": "9f64b445b5289ad813795cb108ffc4da11108685",
      "parents": [
        "12d07c503a8ec317b4d5e7aef49036a1c36600a8",
        "eb6e65034b3ac0979bfe8b5161d57cc279a3b945"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 01 16:47:57 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 01 16:47:57 2019 +0000"
      },
      "message": "Merge \"AudioTrack: Fix callback timing if less than one AF mixer period.\" into qt-dev"
    },
    {
      "commit": "eb6e65034b3ac0979bfe8b5161d57cc279a3b945",
      "tree": "1b0869da92a82e2038f053d29258458e1db79d4c",
      "parents": [
        "2f7a6072bbafd4faba8cbaf170d3cb72e37e3454"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 29 13:47:40 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 30 10:52:12 2019 -0700"
      },
      "message": "AudioTrack: Fix callback timing if less than one AF mixer period.\n\nCallback may wait nearly the entire period when double buffered\nwhich can lead to random glitches.  Limit this to half the mixer period.\n\nTest: aaudio test write_sine_callback -pl -n1 -r44100 -s20\nBug: 129545307\nBug: 131601263\nChange-Id: I6b7478728fe7ead570251662ee48a8f8adad0d5d\n"
    },
    {
      "commit": "09f1ed2cb4479c93859557f5b4d40e1c3732f6f2",
      "tree": "27f2c1c23755b45acdfd0832bb9e493f6b890aaa",
      "parents": [
        "2f7a6072bbafd4faba8cbaf170d3cb72e37e3454"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 24 17:45:17 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 29 09:59:31 2019 -0700"
      },
      "message": "audio: improve audio routing callbacks\n\nDo not force audio device changed callback when the client\n(AudioTrack or AudioRecord) registers to AudioFlinger but only when\nit starts playback or capture. Doing so prevents a spurious callback\nhapping at registration time where a stale device\n(previously selected by AudioFlinger thread) but irrelevant to this\nclient is indicated. This causes a disconnection of AAudio streams\ndespite no real device change.\n\nBug: 128630993\nTest: CTS: android.nativemedia.aaudio.AAudioTests, android.media.cts.RoutingTest\n      CTS Verifier: Audio Input/Output Routing Notifications Test\n\nChange-Id: Ia7f1d11490989b0287c97479466c1c07a223aab3\n"
    },
    {
      "commit": "cf3b71546d5bb04ba45d1d784108f1681f75c827",
      "tree": "1adddca53fd68c81789997a7f6636477209dadac",
      "parents": [
        "8263e3519b6801f019e471efe4a6045b7046e4d3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 19 18:29:21 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 19 18:39:40 2019 -0700"
      },
      "message": "AudioTrack: Fix timestamp spam\n\nTest: logcat check during Photos playback, seek, etc.\nBug: 130586209\nChange-Id: I71c5e6b83f94485be8f2e9bb164314756a16c87a\n"
    },
    {
      "commit": "e9a90980ea48c3bb95d6aba755b4bb2095ba3e80",
      "tree": "d7a5ed3f900a75222ff0dec565292a9eada84f46",
      "parents": [
        "fa36d4b242bd0dcd2f1ce2ea6e0f838b7191a042",
        "393f0e05e3fa7351c81a470e5bd841451bcc13ae"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 11 01:47:12 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 11 01:47:12 2019 +0000"
      },
      "message": "Merge \"audiopolicy: fix attributes match helper function\" into qt-dev"
    },
    {
      "commit": "393f0e05e3fa7351c81a470e5bd841451bcc13ae",
      "tree": "47d865b1e143a717167b2fff0dd6da2e30b3966b",
      "parents": [
        "698d353587d6d0563a6451b2d701358e6cb4496e"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Apr 10 09:09:08 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 10 12:30:39 2019 -0700"
      },
      "message": "audiopolicy: fix attributes match helper function\n\nRegression caught on Attributes referred by their flags only\n(like BT SCO).\nClient may have more flags than the product strategy, checks\nto be done on all the flags of the product strategy are requested\nby the client.\n\nBug: 130284799\nTest: make\n\nChange-Id: Ie8d41a592342bc0a7a0326f9766e7e7503154e62\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "3b8c633f3907218cda99f1f65e633b76419640bf",
      "tree": "1b886e30ef072a48d9d99cc3adac29a82d102384",
      "parents": [
        "98731a2c2559d9986b0892c6a8c8ffca17cd68fc"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 03 19:29:36 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 09 15:49:14 2019 -0700"
      },
      "message": "AudioTimestamp: advance first timestamp time after start if stale\n\nTest: Photos, File playback, AudioTrackSurroundTest#testPlaySineSweepBytes\nBug: 113294730\nBug: 118506063\nBug: 119895849\nBug: 120631792\nChange-Id: I83ec1e4c0ae2318fb69744a6265663a50682c485\n"
    },
    {
      "commit": "98731a2c2559d9986b0892c6a8c8ffca17cd68fc",
      "tree": "3cd6a839c5eb38b181a19c59ae008ae0c4186bee",
      "parents": [
        "0e5a1b3bb64d9a5d38903770e018379856401efd"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 08 19:19:07 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 09 15:27:46 2019 -0700"
      },
      "message": "AudioTimestamp: Use current time when data pipeline is empty\n\nHandles change in Q, where we do not return an invalid kernel time\nin the extended timestamp when there is a reported error from the HAL.\n\nTest: Photos, File playback, AudioTrackSurroundTest#testPlaySineSweepBytes\nBug: 113294730\nBug: 118506063\nBug: 119895849\nBug: 120631792\nChange-Id: I90f2c7c314baa474c3dd3a24042f1d4b8bc0a12b\n"
    },
    {
      "commit": "8ebc68057e12e10a1adf644e12f10ff593576a07",
      "tree": "a5c1079714ff1edd89f19b1b2974c6de76a4ca86",
      "parents": [
        "62683a3fad1d6d699d5175a0e3e1ed9743900b5c",
        "ca35367b3d176f234bf955d2df95a45126b02287"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 07 18:45:35 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 07 18:45:35 2019 +0000"
      },
      "message": "Merge \"Clean up AudioTrackThread and AudioRecordThread constructor\""
    },
    {
      "commit": "d097981afa129353c42660869e284ae1784506c2",
      "tree": "c035d2a90097094a87c153fe97b3b5b5ba766c7a",
      "parents": [
        "f03cb213d22b238cbd0b72ded36048f0549f921f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Feb 21 15:51:44 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 06 14:50:35 2019 -0800"
      },
      "message": "AudioFlinger: Send Thread statistics to mediametrics\n\nUnify with AudioRecord and AudioTrack mediametrics.\n\nTest: mediametrics dumpsys after record, playback\nTest: CTS Audio(Record|Track)Test#testMediaMetrics\nBug: 114112762\nChange-Id: I6eb554cbf6ff760f9dea568abd3cde82366b51a7\n"
    },
    {
      "commit": "ca35367b3d176f234bf955d2df95a45126b02287",
      "tree": "af6bf618e16955aa03ecaf6cb4326affefd3c830",
      "parents": [
        "eb46cf924deae98c5edaad20da3bd123217ab947"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 06 11:54:38 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 06 11:54:38 2019 -0800"
      },
      "message": "Clean up AudioTrackThread and AudioRecordThread constructor\n\nRemove unused argument.\n\nTest: compile\nChange-Id: I1f589941686ddcdff166298f8bfe0564b147c137\n"
    },
    {
      "commit": "eb46cf924deae98c5edaad20da3bd123217ab947",
      "tree": "0e451ec457ded176ce8fc4bf6dcef686832c5a10",
      "parents": [
        "bb08e4d99b0915f4b25fefeda9c833c96ceb785a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 06 10:13:38 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Mar 06 10:15:57 2019 -0800"
      },
      "message": "AudioTrackThread, AudioRecordThread: enable Java calling\n\nWhen an AudioTrack or AudioRecord is created by system server,\nif restoreTrack_l() or restoreRecord_l() is called from AudioTrackThread\nor AudioRecordThread, and that then calls audioserver through binder,\nwhich then calls a Java service, binder recursion may call Java\non the original calling thread.\n\nTest: bluetooth calls don\u0027t crash\nBug: 126948865\nBug: 127619936\nChange-Id: I41fcb666d07c4ab985f5590e40e0c310709e786d\n"
    },
    {
      "commit": "4463ff504dc0c13116f252466bdbba61e0b32a81",
      "tree": "59daf000cec82575573c42de2cba9809cc6f0bf2",
      "parents": [
        "ba2cf0f2e39d8302babbda3a98127daaf2ea7376"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 07 13:56:09 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 07 18:34:25 2019 -0800"
      },
      "message": "AudioSystem: more locking work on audio device callback\n\ncommit 24a9fb0d left some locking issues with management of device\ncallbacks in AudioSystem, AudioTrack and AudioRecord.\n\nThis change makes that the AudioSystem mutex is not held when\ncallbacks are called into AudioTrack and AudioRecord removing cross\ndeadlock risks and allowing AudioRecord and AudioTrack to hold their\nmutexes while installing and handling the callbacks\n\nTest: CTS RoutingTest, AudioTrackTest, AudioRecordTest\nChange-Id: I5d17e77ca26220092deb0bd6e5a33dc32348d460\n"
    },
    {
      "commit": "24a9fb0d4a3acd5d0c2ef96147650464a91eb8d9",
      "tree": "a96ff333beb672fc64379e4e35dc1e67998b6b43",
      "parents": [
        "a6d5e8b33ce1f7e3133d7474ac3bed3550c309a8"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Jan 18 17:51:34 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 07 02:53:09 2019 +0000"
      },
      "message": "libaudioclient: force onAudioDeviceUpdate on registration\n\nThis CL forces the onAudioDeviceUpdate on register event.\nIt also fixes the loss of callback on AudioTrack or AudioRecord\nclient if received before ioHandle is assigned.\n\nTest: audio smoke tests\nTest: CTS for AudioTrack and AudioRouting\n\nChange-Id: I119b5c407da68a5b55162550bea5fa7e724165d1\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "58d4be5a5a5d24f18b7a207148c7caa317fef366",
      "tree": "37e0a5e790187815757bd906c7767cfcea0e1f74",
      "parents": [
        "6054a7765cfd65c34d49a5a435bee1d0cdfb2d32"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Nov 06 15:30:12 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 05 00:18:00 2019 +0000"
      },
      "message": "audio: get rid of hardcoded translation stream \u003c--\u003e attributes\n\nIMPORTANT NOTE:\n    CL depends on another CL in frameworks/base\n    https://partner-android-review.googlesource.com/c/platform/frameworks/base/+/1206275\n\nAudioProductStrategies offers the possibility to dynamically\ntranslate attributes to stream types (and vice versa) within\naudio policy engine.\nLegacy engine has hard coded rules to maintain the translation\nservice.\n\nThis patch removes the hardcoded translation within the helper\nand replaces them by AudioProductStrategy APIs.\n\nTest: AudioPolicyTests: AudioProductStrategiesAllStreamsTest\nIt loops on all stream types supported by strategy and ensures\ndevice selection matches. Hard coded stuff would prevent right device\nselection.\nTest: CTS: AudioTrackTest AudioRecordTest\nTest: audio smoke test on sailfish, walleye blueline\n\n\nChange-Id: I76589df5555136ed49dbacc7aac9b0b5e828bef2\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "ab2f2f35111cf1237b8d1a42ebe33a001f28daa8",
      "tree": "a9b1107cf1d7cf8ba26a204e558b240d940b17de",
      "parents": [
        "aaaa003cb570f965908db1a08d53c4bddb588d61",
        "e79290d111a9c72aff5eecf2a5eed63d3168c112"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 31 11:10:10 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jan 31 11:10:10 2019 -0800"
      },
      "message": "Merge \"Set default value to mAttributes in AudioTrack\" am: 1128b3fa1a am: 46c631d921\nam: e79290d111\n\nChange-Id: I239ab1a947eb13195e6acbfa8f096965dd14d5ae\n"
    },
    {
      "commit": "5fa32ed75e09b1f01e6fdea509ef49492f729c7f",
      "tree": "0ff92513f38f3c04deda7e232c505814f8dcc9aa",
      "parents": [
        "caa0b292536bf8f4d455536404fed785e038c51a"
      ],
      "author": {
        "name": "Ippei Murata",
        "email": "ippei.x.murata@sony.com",
        "time": "Mon Oct 01 17:37:50 2018 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "Tomoharu.Kasahara@sony.com",
        "time": "Thu Jan 31 01:08:13 2019 +0000"
      },
      "message": "Set default value to mAttributes in AudioTrack\n\nmAttributes in AudioTrack can not be set in AudioTrack::set()\nwhen pAttributes is NULL.\nAudioTrack::getPosition() sometimes returns wrong value\nsince mAttributes is undefined value.\nThis change sets default values to mAttributes.\n\nBug: 123607740\nTest: manual\nChange-Id: Ie590c17efc466cc89cbd7e9f89fc3ebeed98eace\n"
    },
    {
      "commit": "69b73291138bf97fcdf09a4320e77f28568cf874",
      "tree": "5f6f2e069accd87b1d0ec04af4a67cd73d9f936b",
      "parents": [
        "0dd741827750e4163fb618e817b51088badb65ad"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 25 05:34:47 2019 +0000"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 25 05:44:51 2019 +0000"
      },
      "message": "DO NOT MERGE: Revert \"Revert \"Add libprocessgroup dependency and fix sched_policy include\"\"\n\nThis reverts commit 7194e6da8a37a0e222b2f81e2d55a8013e657a13.\n\nReason for revert: AOSP is fixed with new vendor image\n\nChange-Id: I15797a30abcc304379db05bec1b25a0bd95b2ff4\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "7194e6da8a37a0e222b2f81e2d55a8013e657a13",
      "tree": "c0a7b13fc0c2db08e5884f2cf598708aebecde70",
      "parents": [
        "855ae44d9f4acc7ac8720464ef94d159c9063e8b"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 23 20:58:02 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 23 20:58:22 2019 -0800"
      },
      "message": "DO NOT MERGE: Revert \"Add libprocessgroup dependency and fix sched_policy include\"\n\nThis reverts commit 26992263865c4b30d733b1cdc0efce0d3db7d5c9.\n\nReason for revert: Broke AOSP\n\nChange-Id: Icdd182baad6a81b8fdbfd862b7eb3aada282f42f\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "26992263865c4b30d733b1cdc0efce0d3db7d5c9",
      "tree": "dcdf65d9af6cd566721cd37282b4c759e818ee42",
      "parents": [
        "4162cd732558f2e4fb1c9bf70da3e87ba23523fc"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Dec 19 17:09:28 2018 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Sun Jan 20 22:05:52 2019 +0000"
      },
      "message": "Add libprocessgroup dependency and fix sched_policy include\n\nlibaudioclient and libmedia are using get_sched_policy and\nset_sched_policy which are now implemented inside libprocessgroup.\nAdd required dependencies and include required headers.\n\nExempt-From-Owner-Approval: janitorial\n\nBug: 111307099\nTest: builds, boots\n\nMerged-In: I83dd6878839122e3ea71b7be6f6f312376897d56\nChange-Id: I83dd6878839122e3ea71b7be6f6f312376897d56\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "7435e7da371e60bed90909be6cc57a3f111fb6b4",
      "tree": "70b40fae27adde22ca7b1b9f57120fd7957cfc22",
      "parents": [
        "aa1523c14af06a2f213e570d12ce01b71422b26a"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Dec 19 17:09:28 2018 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 18 02:37:14 2019 +0000"
      },
      "message": "Add libprocessgroup dependency and fix sched_policy include\n\nlibaudioclient and libmedia are using get_sched_policy and\nset_sched_policy which are now implemented inside libprocessgroup.\nAdd required dependencies and include required headers.\n\nExempt-From-Owner-Approval: janitorial\n\nBug: 111307099\nTest: builds, boots\n\nChange-Id: I83dd6878839122e3ea71b7be6f6f312376897d56\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "f4de6114c20c3b3376806b359d527330f1891826",
      "tree": "6661fb92de4c7f145d0ae7de9d109d8a145601eb",
      "parents": [
        "341dd3bb36c4ceb77c80b8e8db9f0e1d647dc9ce"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 19 12:40:08 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 19 12:40:08 2018 -0800"
      },
      "message": "Do not allow set sample rate when haptic channels exists.\n\nAs haptic playback via audio require sample rate is the same as the HAL\none, sample rate should not be changed after AudioTrack is created.\n\nBug: 121271890\nTest: Manually\nChange-Id: I1549017b3ca8523735190f62f8c9a4fb8b95e000\n"
    },
    {
      "commit": "25194a64e0bb77049d279fdb982c02425095ec01",
      "tree": "f3812f7beecd278352111c85e5b684e3937ca4af",
      "parents": [
        "20d51cca2c61b65be88b5bad43e6f363e29373b8",
        "a2b32728760a75352aadf5383e7615afd5bf435c"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 21:17:01 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 11 21:17:01 2018 -0800"
      },
      "message": "Merge \"Fix cert-dcl16-c clang-tidy warnings in libaudioclient.\" am: 8774dda490 am: e8f69f37be\nam: a2b3272876\n\nChange-Id: Ib7f787d7ca149015badfe75ec2d52f80bde0f952\n"
    },
    {
      "commit": "50fa06cf6196e6235cd24a44e5bf464b28f91a7b",
      "tree": "848bcdc1e9c24817a3e1f05d079ed7f0da0d636e",
      "parents": [
        "14c577fac81b8fdcc75e4bf9243f16bd624ba58b"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 13:51:36 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 13:51:36 2018 -0800"
      },
      "message": "Fix cert-dcl16-c clang-tidy warnings in libaudioclient.\n\nBug: 120614316\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,cert-dcl16-c\nChange-Id: If3d86617594250e2a9ed79c46bf39852a9a723b2\n"
    },
    {
      "commit": "a94fbb22404ef26d12fbb3ad0376df15f84f47ec",
      "tree": "b4a8052d5ce8726541ba7a25e3f1f449d351acd9",
      "parents": [
        "b079c02b1fa4f1b5c5b6334b93af584797b4454f"
      ],
      "author": {
        "name": "Michael Chan",
        "email": "mzchan@dolby.com",
        "time": "Tue Apr 24 14:31:19 2018 +1000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 05 15:35:35 2018 -0800"
      },
      "message": "Implement AudioTrack.isDirectPlaybackSupported method\n\nThe method checks whether the provided AudioFormat can be played\nvia currently connected output devices w/o SRC or downmixing\nby the framework.\n\nThe implementation methods are called \u0027isDirectOutputSupported\u0027\nto match APM\u0027s terminology.\n\nBug: 120044865\nTest: atest CtsMediaTestCases:AudioTrackTest#testBuilderValidate\nChange-Id: I11769f796c34583fb2641415d2faab00ac526123\n"
    },
    {
      "commit": "973db02ac18fa1de9ce6221f47b01af1bdc4bec2",
      "tree": "e2dda15a881c963a14520117128b5b9857834759",
      "parents": [
        "f4a342abd2959904caa18b5a0671e8107581ff24"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 20 14:54:31 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 04 12:06:37 2018 -0800"
      },
      "message": "audio flinger: return port ID as track ID to client\n\nReturn the port ID allocated by audio policy manager instead of the\ninternal track ID allocated by audio flinger when an AudioTrack or\nAudioRecord is created.\nThis information is more useful for logs and allows to associate information coming\nfrom audiopolicy manager with a specific client instance.\n\nBug: 111438757\nTest: Manual playback and capture tests\nChange-Id: Ib467d8fcc34d9a8aa7bcaac0770a741982b847c5\n"
    },
    {
      "commit": "ac917aca235ff5170f00c2ee933f41f07a40232d",
      "tree": "2927cc6419b7fe615ccdc977224f6f3ed656f58e",
      "parents": [
        "e4eb88fa5fe62a9b6b709fbf2ff26f37acf6db20"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Nov 28 14:03:52 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Nov 28 14:44:17 2018 -0800"
      },
      "message": "Add selectPresentation API to IAudioTrack\n\nThe Java AudioTrack interface has a setPresentation API. This\ncalls the setParameters API in IAudioTrack. However, this does\nnot eventuate into a call into the android.hardware.audio@4.0\nIStreamOut selectPresentation API.\n\nAdd selectPresentation API to IAudioTrack and call down to the\nandroid.hardware.audio@4.0 IStreamOut selectPresentation API.\nTranslate into calls to setParameters API for legacy HAL\ninterfaces.\n\nBug: 63901775\nTest: compile\nChange-Id: Id634a107f3f93ab18dc80d2bd0af67bda35e859f\n"
    },
    {
      "commit": "0248a2a3ae176e4f306dbf3d869792bb93312ed5",
      "tree": "e9f5d8a65fca2a0afc53b2b5b3ebe672b4bf4b05",
      "parents": [
        "2a6038e529574bfa183ab1de1fffd01a1504fc3a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 21 10:05:57 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 21 10:05:57 2018 -0800"
      },
      "message": "Fix double track thread initialization\n\nBug: 119870459\nTest: cts-tradefed run cts -m CtsMediaTestCases -t android.media.cts.AudioTrackOffloadTest\nChange-Id: I15f314ee5696ead90a09991bfe10e1ae3ff013e0\n"
    },
    {
      "commit": "a60e9a209ed7dbeaa563b3145904038064615432",
      "tree": "997b5121a13729113a1cd6aaf85dfe6f58c40cd9",
      "parents": [
        "c40d87ea8409b23e6326ffe2233e02a99ecfac15"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Nov 15 16:13:36 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Nov 16 17:29:51 2018 -0800"
      },
      "message": "AudioTrack offload: fix EVENT_STREAM_END  not called\n\nIf the track thread is paused, EVENT_STREAM_END will not delivered\n for offload. This event is required for PRESENTATION_END to\n be delivered for Java AudioTrack offload.\n\nBug: 86837964\nTest: cts-tradefed run cts -m CtsMediaTestCases -t android.media.cts.AudioTrackOffloadTest\n\nChange-Id: I491cdb0a6faa69e5c37139c0364b5c9079ff1f14\n"
    },
    {
      "commit": "f4158d855b941e5c7ffcc4f119f2bd146986b0c4",
      "tree": "cdd9cc09d90ff6d43ee200233f9fa16e6124f5b6",
      "parents": [
        "0917fc25390c5f362332630e2d980480d1444e0d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Sep 25 12:43:58 2018 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 24 10:46:30 2018 -0700"
      },
      "message": "AudioTrack: new transfer mode for Java offload support\n\nNew transfer mode for java AudioTrack using offload\n  path, where data is provided through the write method,\n  and the callback is used to notify the track owner\n  more data can be written on the track.\n\nBug 86837964\nTest: adb shell clof --source /sdcard/Music/my.mp3\n\nChange-Id: I47c760b7fb8f1431945ca24ff4a26311b63cb761\n"
    },
    {
      "commit": "6ec546dad994d3cc7ffbdf9be42d69811805085a",
      "tree": "64bb14daa86cb6ae0445bc52564369ca0ced94ae",
      "parents": [
        "66b4c2c74829721f7e12de810b936e5e323a51dd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 10 16:52:14 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 11 14:16:09 2018 -0700"
      },
      "message": "audio: fix AudioTrack and AudioRecord restore\n\nAllow retry on failure to reconnected to audioserver when restoring an\nAudioTrack or AudioRecord and do not change state to inactive when\nreconnection fails. In case of failure due to temporary race conditions this will\nincrease the chances of success and avoid ending up in an inconsistent\nactive state if a later reconnection succeeds.\n\nBug: 113109529\nTest: AudioTrack CTS tests and manual playback smoke tests.\nTest: AudioRecord CTS tests and manual capture smoke tests.\nChange-Id: I570724eb46f3a0f830267396aba06297bd37df7a\n"
    },
    {
      "commit": "4c94e03cac24f172e8367e351b66adf709b2cee6",
      "tree": "0115b73acebf2f3165e1ce20d7bdb65cab08136b",
      "parents": [
        "61c80f1f4a07886a01abada34beefed9db1bec4b",
        "51e09f9cae7b3195a2799b876eea8949faae912c"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Sep 18 10:26:55 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Sep 18 10:26:55 2018 -0700"
      },
      "message": "Merge \"Suppress implicit-fallthrough warnings in libaudioclient.\" am: 058002e0e3 am: 8a7c2de43f\nam: 51e09f9cae\n\nChange-Id: Ifcae7a82849a698a2406279e18c74be454c596b2\n"
    },
    {
      "commit": "ffe3558cb1024b39ce1e0e1dc2fb20bb3663299a",
      "tree": "05195cdd37c3c2c68aa26a66b5af1afb823c65ec",
      "parents": [
        "f8d13dee65d3708ea527e9f565be85031d7021ba"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 13 13:59:28 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Sep 17 12:45:53 2018 -0700"
      },
      "message": "Suppress implicit-fallthrough warnings in libaudioclient.\n\nAdd FALLTHROUGH_INTENDED for clang compiler.\n\nBug: 112564944\nTest: build with global -Wimplicit-fallthrough.\nChange-Id: Icafaff606364fe7bffaad1e9c2e763c444ea999c\n"
    },
    {
      "commit": "fb8ede2a020e741cb892ee024fcfba7e689183f2",
      "tree": "702e8497e892eaa0d4d8fb7d28ec78fc2762a1f2",
      "parents": [
        "9d84af54244f7ff086afdcc6e477fe4d04874652"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 12 19:03:24 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 13 17:54:36 2018 -0700"
      },
      "message": "AudioTrack: Add client side track id for logging\n\nTest: Audio sanity test, check logcat\nBug: 115400221\nChange-Id: I7c74af8962f7d3b72a7b843df906c54f79f6f009\n"
    },
    {
      "commit": "d9f80435b643029819635d15416fcde0b9998829",
      "tree": "b508fd5e4958c104c7d960da765773b3621f16be",
      "parents": [
        "eb6c38a9eb693c1f5035aaece4396d37810ced65",
        "bca742946f0c20e4227b23f2b52c43350e73ca5c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 21 00:14:43 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 21 00:14:43 2018 +0000"
      },
      "message": "Merge \"Fix or suppress some google-runtime-int warnings.\""
    },
    {
      "commit": "eb6c38a9eb693c1f5035aaece4396d37810ced65",
      "tree": "57e10278b5b1637e17367d014b16394ad57876b3",
      "parents": [
        "1e1e06ba5fec2db825aaaa59fa566aa718df5291",
        "6e8bf981aca33625e133ab8f9daafd1652b0eced"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 21 00:10:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 21 00:10:47 2018 +0000"
      },
      "message": "Merge \"Prevent old callback events when track is recycled\""
    },
    {
      "commit": "bca742946f0c20e4227b23f2b52c43350e73ca5c",
      "tree": "9400059ddc2f410c677d6bb66ac32f925bc49737",
      "parents": [
        "51d361e77c038003d7aeab39e9d91ffb31332c1e"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Aug 10 16:06:07 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 20 16:01:29 2018 -0700"
      },
      "message": "Fix or suppress some google-runtime-int warnings.\n\n* Use time_t for tv_sec type.\n* Use \u0027auto\u0027 to avoid explicitly use of \u0027long\u0027.\n* Use (u)int16_t instead of (unsigned) short.\n\nBug: 112478838\nTest: build with WITH_TIDY\u003d1\nChange-Id: I023e579b071688731064e51dc94f404274cd59e2\n"
    },
    {
      "commit": "6e8bf981aca33625e133ab8f9daafd1652b0eced",
      "tree": "f2d0795e2315bd37e6b598394d042e5068ac3120",
      "parents": [
        "25af42f8bff5a973205bbc36d8617a133e908c51"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Fri Jun 09 16:17:33 2017 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Wed Aug 08 13:04:48 2018 +0900"
      },
      "message": "Prevent old callback events when track is recycled\n\nWhen a track is reused from SoundPool and started again, the\nprevious callback events could be done after track started,\nthen the new playback will be stopped unintentionally.\nClear the old cblk flags when recycled track is started again\nto avoid triggering unexpected callback events.\n\nBug: 112269355\nTest: Playback with SoundPool frequently\nChange-Id: I111b085d08b73c333fbb0fc2896efe1c013c584c\n"
    },
    {
      "commit": "4c5ed30aeb86b2b1aeaf7809d569e46bc75d330c",
      "tree": "26ab9e972b27d67481e428fa3d3c56c68b806aa4",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 09 11:16:21 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 09 12:03:42 2018 -0700"
      },
      "message": "AudioTrack: Allow flush in flush state to clear subsequent written data\n\nFixes Photos a/v sync issue introduced by\ncommit 1d3556d6a068f141ac390a04f6a9d92a70f8d7ed\n\nTest: Photos, pause, then seek several times, then play.\nTest: CTS AudioTrackTest, Bluetooth, Offload, Gallery, Play Music.\nBug: 79327282\nChange-Id: I9de8edd88b526b5a9dbc9cd720bf725474949dfc\n"
    },
    {
      "commit": "0967c6c06d030636e2c584ce3e24924357a3a854",
      "tree": "9614233f9011d7645c95a1b84b610aa609845fe3",
      "parents": [
        "2383098d54b6503875bdf0c6b649fa66f22d79ac",
        "1d3556d6a068f141ac390a04f6a9d92a70f8d7ed"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 05 19:36:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 05 19:36:31 2018 +0000"
      },
      "message": "Merge \"AudioTrack: Prevent server from reading client data after stop\" into pi-dev"
    },
    {
      "commit": "1d3556d6a068f141ac390a04f6a9d92a70f8d7ed",
      "tree": "e89b4aa887013efbc8227dcf4c56addf4ab284b9",
      "parents": [
        "1f03085b596f185d91ccae11b7c0d9f0bc8cd206"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 29 16:30:14 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 02 14:19:24 2018 -0700"
      },
      "message": "AudioTrack: Prevent server from reading client data after stop\n\nPrior to this CL, if an AudioTrack client wrote audio data after\nAudioTrack stop(), but before the track was drained by the server,\nthe newly written client data would be consumed in the drain.\n\nWe now limit the server read to the client write position on stop.\nThis interlocking is essential for rapid asynchronous AudioTrack\ncommand processing.\n\nTest: AudioTrack CTS, SoundPool looping, bug test case\nBug: 75788313\nChange-Id: Ib70e3dc46afe047a8c6cf1fb906a618b3c66cc7f\n"
    },
    {
      "commit": "b13b35d7e2732227c1593257d4ef1353bf672a1f",
      "tree": "81298c334193e551bbfa240ad585678ece8b7eeb",
      "parents": [
        "5915fa32fb6ec38b90a57162bf72c3ef714f03d7"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 30 17:21:14 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 30 17:57:10 2018 -0700"
      },
      "message": "Add retries in restoreTrack_l if the track does not start\n\nConnecting to a BT A2DP device supporting multiple codecs causes\na lot of churn on the audio service side, and it can reject\nstarting playback of a previously created track. As a\nworkaround, allow restoreTrack_l to retry in this case.\n\nBug: 74409267\nTest: switching between 2 HD BT headsets while playing audio\nChange-Id: I5d2ecf4da9ff680af7ae5bb837081b22ecd84f85\n"
    },
    {
      "commit": "3cb0605ea4300ee997c2c7983533af8ea74df8ad",
      "tree": "b701ba15851691b54975e7869f2fe73c5d430603",
      "parents": [
        "7e193a143f52180abfc9c1c9c82f7c70f6ae5f74",
        "77973c438b758da730a72ab3bb85b67f6767bf6b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 08 20:48:09 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 08 20:48:09 2018 +0000"
      },
      "message": "Merge \"Pull out commonly used constants to \u003caudio_utils/clock.h\u003e\""
    },
    {
      "commit": "de15b8c160c720c48b93796016801e7ae0b6bd2d",
      "tree": "49044f23ead7f0dca058f477f5b1365a16a6e144",
      "parents": [
        "a2544c5431224995ade19611642d2b534939fb14"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 30 16:35:56 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Feb 07 11:55:19 2018 -0800"
      },
      "message": "link media.metrics native strings to api-controlled java strings\n\nadd comments to native media.metrics code pointing to how they\nare (and aren\u0027t) to be kept in synch with their java counterparts\nthat are part of the public API (and therefore pretty much fixed).\n\nBug: 72492234\nTest: compilation\nChange-Id: Ic096545a5cdfb2160c6b66438d345d8e625384b9\n"
    },
    {
      "commit": "de2c195a218cc24eaf3a7ced149f7eb723656a97",
      "tree": "90f7ece00616bf5c905fe14ae1b17ee864041685",
      "parents": [
        "4b8dbfc9e85ca7c2cc4acdcddca997f197fee718",
        "a70eef730d7665c9f4b2dfd25faf072785f80a2d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 01 16:46:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 01 16:46:08 2018 +0000"
      },
      "message": "Merge changes from topic \"fix-b-63901775-add-presentation\"\n\n* changes:\n  Audio presentation selection for AudioTrack native\n  Add presentation API interface\n"
    },
    {
      "commit": "77973c438b758da730a72ab3bb85b67f6767bf6b",
      "tree": "af7ef411c2b8e911ed6559e70720b9ef2c9357ac",
      "parents": [
        "d24be7ca2491048892905734cb8a1e77440df948"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 31 14:03:52 2018 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 31 14:03:52 2018 -0800"
      },
      "message": "Pull out commonly used constants to \u003caudio_utils/clock.h\u003e\n\nTest: builds OK\nChange-Id: I7d2c4cb8982a3d792edf8fad7a7bae0ac3c4331c\n"
    },
    {
      "commit": "a70eef730d7665c9f4b2dfd25faf072785f80a2d",
      "tree": "3139b8b7898a5a539b9c1ee0533e1a386da459e9",
      "parents": [
        "9ee64f139ceff98ea5f9afcc2eaab42901922d56"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Thu Jan 04 14:23:50 2018 +1100"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 25 12:33:52 2018 -0800"
      },
      "message": "Audio presentation selection for AudioTrack native\n\nBug: 63901775\nTest: make\nChange-Id: I63c9bdef880c7c387fd05f093b8d1094307a2754\nSigned-off-by: Previr Rangroo \u003cprang@dolby.com\u003e\n"
    },
    {
      "commit": "8839430158e22382f0f6450c9274071eca945989",
      "tree": "7e3e0a574c5370a95bacf7281a62c5092f41036c",
      "parents": [
        "03570a65a46bd0d577aa4c860c4f32f4abf79c7c"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Jan 24 14:52:05 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Wed Jan 24 17:06:59 2018 -0800"
      },
      "message": "add getMetrics() apis for AudioTrack and AudioRecord\n\nadd getMetrics() method to access media.metrics for AudioTrack and\nAudioRecord.\n\nBug: 72179020\nBug: 72178968\nTest: tweaked CTS\nChange-Id: Id69862887b8b58655f59057e06f96b20a8e7d332\n"
    },
    {
      "commit": "a10a2d361758752715744023b4109e8007fa34d4",
      "tree": "cd90dc862524a47f4ea851b848d2c68e73383ed6",
      "parents": [
        "d6be64a3f22be3eceb0d6209c88dcad573c08191"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 16 12:02:58 2018 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Jan 16 12:02:58 2018 -0800"
      },
      "message": "prevent null pointer in audio track media metrics\n\nDisable a piece of audio track metrics code that triggered a\nnull pointer exception.\n\nBug: 72027185\nTest: manual\n"
    },
    {
      "commit": "ed30470cf0a20c0c1edb2b82075985ccaa6c75c1",
      "tree": "b90723f645ab06ca927b3e9a7d81fdef1f99d57e",
      "parents": [
        "21f6d6cbecf190724b044251576edf6ee6f48364"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 12 14:00:57 2017 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu Jan 11 14:57:53 2018 -0800"
      },
      "message": "collect media.metrics from audiotrack\n\ninitial pass at collecting metrics information from audiotrack.\n\nBug: 70569777\nTest: manual via dumpsys media.metrics\nChange-Id: Ia6ed6d93bd487e4323b86dd4ffabae232f79f94b\n"
    },
    {
      "commit": "49f36ba3b4624ddd3d7efa34c95128a73bda6208",
      "tree": "9427c132f2f998021c1ae06078174c3396bc5f54",
      "parents": [
        "b3ded702104331ae35597eef28f670e407a1b519"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 06 13:02:02 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 22 20:05:46 2017 +0000"
      },
      "message": "Logs use either %#x or 0x%x for flags, channel mask, format, device\n\nPreferred is %#x but 0x%x is also permitted because it is widely used.\n\nThe benefit is that it reduces ambiguity and possible confusion,\nwithout needing to read the source code for each log.\n\nTest: builds OK and logs are less ambiguous\nChange-Id: Ie2404e071d22278b8bba1e094ad336887844212c\n"
    },
    {
      "commit": "f32d7814f56f0a07b8aaacc88a0d8d00349fc916",
      "tree": "59bb1786ea61480ec92be9fb482480e96a83c5de",
      "parents": [
        "eda72c27cab52c41016d8ce138438a2d59973231"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 30 14:44:07 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 30 16:44:25 2017 -0800"
      },
      "message": "AudioTrack: fix status reporting\n\nMake sure mStatus is updated when set() is executed\nfrom outside of the constructor\nAlso update mStatus when createTrack_l() is executed.\n\nTest: manual test of audio playback use cases\nTest: AudioTrack contructor test.\nChange-Id: I70700c84800e144cbf34dac2f9d1526eaf7df292\n"
    },
    {
      "commit": "d114b624ea2ec5c51779b74132a60b4a46f6cdba",
      "tree": "e9abd0ce3d951d80d5831e49d3ba5d6623fc4ab8",
      "parents": [
        "a221a7c81776add538e6cd82cddfa427364beb79"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 27 18:37:04 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 28 08:53:15 2017 -0800"
      },
      "message": "audio track: dump more data\n\nAdd more information to AudioTrack::dump();\n\nTest: run dumpsys media.player\nChange-Id: Ia0799c65c02dd27b623b53d550ebf08c5c1b724c\n"
    },
    {
      "commit": "21da647792c0b78ab3943be0f32066015d5e8c34",
      "tree": "15ad0b64bf6eaabf24223d7fd376ef9ac00eb9cc",
      "parents": [
        "a4fa4760fa417473324e009b3f4117a2d539c486"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 09 16:29:26 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 16 11:33:12 2017 -0800"
      },
      "message": "refactor AudioTrack and AudioFlinger createTrack()\n\nRefactor the mechanism used by audio tracks to query and attach\nto an output mixer/stream in audio flinger. This will:\n- reduce the number of binder transactions needed to create a track\n- move sample rate, framecount and flags validations to audio server\nside\n- move audio session allocation to audio server side\n- prepare restriction of certain binder transactions to audioserver only\n\nTest: CTS tests for AudioTrack\n\nChange-Id: If4369aad6c080a56c0b42fbfcc97c8ade17a7439\n"
    },
    {
      "commit": "4593b04bdad2ae66b22c5d3fb78276b523b7e942",
      "tree": "d855fc3d7505c608fc720474d2af565feb131738",
      "parents": [
        "ea8dd2c787f88e7289ffb8f226237587f95d8a93",
        "79edadcea74151b573d5b973d5a421baee693ec1"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 10 15:29:40 2017 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 10 15:33:45 2017 -0800"
      },
      "message": "Merge commit \u002779edadcea74151b573d5b973d5a421baee693ec1\u0027 from\noc-mr1-dev-plus-aosp into stage-aosp-master\n\nChange-Id: I04234f284e3117e8343e7c888646400c81f5a131\nMerged-In: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\n"
    },
    {
      "commit": "156c6873a5e69af71f3c28b236c5831b9cb2ac95",
      "tree": "3e36c1490f5f2d22e6e79fac3d4f59a9559403ee",
      "parents": [
        "ef9fc7792d4995da68cb71a3e9f2304e565a016d"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Oct 06 09:47:15 2017 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Nov 02 11:14:55 2017 -0700"
      },
      "message": "Add AudioRouting interface for MediaPlayer\n\nBug: 64038649\nTest: Run cts in RoutingTest\n      Switch output device when playing music/video with MediaPlayer\n\nChange-Id: I5b5c288e6557199b0a6986785f9335a18a80ab89\n"
    },
    {
      "commit": "bdfaf7e6081a3a4fc5b0b613d9b2d42f488cb0a9",
      "tree": "dab6953412fc5b7013c2772a808c1b875bb9a2d0",
      "parents": [
        "67d876b17e6589a47c5f8906201ec2494119104f",
        "53a82d0a1ae2875cff9d8253f9b6ba2fff5f93a4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Oct 31 16:08:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 31 16:08:30 2017 +0000"
      },
      "message": "Merge \"Limit notification period when a fast track denied\" am: 89a1e53856 am: 66446e6135\nam: 53a82d0a1a\n\nChange-Id: Idf2b0e981ddbae38aeb4838595e303d0b8b1da2f\n"
    },
    {
      "commit": "53a82d0a1ae2875cff9d8253f9b6ba2fff5f93a4",
      "tree": "6f8a316ed5da93173aa8a5dd91096cf007f255d7",
      "parents": [
        "db42765c36920975fbe0c02252397d1a5813197b",
        "66446e6135fa9acbfffb96f3c70a8889e60a9a79"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Oct 31 16:06:25 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 31 16:06:25 2017 +0000"
      },
      "message": "Merge \"Limit notification period when a fast track denied\" am: 89a1e53856\nam: 66446e6135\n\nChange-Id: I4403db70ddcbcc5f29332342531c33eb12563661\n"
    },
    {
      "commit": "9bf34d542787dd322f7ad56f8bb8607633004009",
      "tree": "f2918d263cb486b80e38917c3f5a809b370a4deb",
      "parents": [
        "55c45b33092551b11ba79a35b7dae6c3fba999f5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 24 14:26:23 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 27 10:45:37 2017 -0700"
      },
      "message": "Limit notification period when a fast track denied\n\nIf client requests a fast track and this request is denied, then don\u0027t\nallow notification period to exceed FMS_20.  FMS_20 is the minimum task\nwakeup period in ms for which CFS operates reliably.  This reduces\nglitching when an app uses a buffer size that is too small for the endpoint.\nThe theory is that if the app wanted a fast track but couldn\u0027t get it,\nthen at least wake it up as often as possible (while still not waking\nup so often than CFS can\u0027t handle it).\n\nAlso clarify in the log when the denial is by client vs server.\n\nTest: as described in bug\nBug: 63040475\nChange-Id: I2c171bda7929a8f309c2286d868e09887680d234\n"
    },
    {
      "commit": "92197f86b1184133107ee66314467f4676850ab8",
      "tree": "2e35076e4f171f06c8d3e441dd7b3784226f917f",
      "parents": [
        "5d81cf35fb108d6a2412f770087861ad4be5020c",
        "282ca695834f9cf9f63536cab2d6592b18fc011a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 18 22:47:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 18 22:47:16 2017 +0000"
      },
      "message": "Fix various AAudio device selection issues am: ad2e7b902c\nam: 282ca69583\n\nChange-Id: I051d56560608444c47b5a827ef921b878e8f4a4e\n"
    },
    {
      "commit": "ad2e7b902c0432a0db40906a4b1f5b693ce439dd",
      "tree": "c4830cedbf63c641325e082fd30484a3bff58e49",
      "parents": [
        "b92c988ffc48f093ab8615896b02b8c8e10e19b2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 14 20:06:42 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 18 12:58:30 2017 -0700"
      },
      "message": "Fix various AAudio device selection issues\n\nBug: 65292224\n- Audio policy manager should not use an unavailable device when an explicit\nroute is requested. This causes a device selection made by a client to\nbecome sticky after device disconnection.\n\nBug: 64945845\n- Remove spurious device change callback occuring after registering a\nnew client to audio server by creating a specific configuration event\nfor client registration.\n- Do not keep strong references to device callback interfaces in\nAudioTrack, AudioRecord and AudioSystem.\n- Do not update selected device in AudioTrack and AudioRecord when\nnot active as the new device selection on the stream is because of other\nclients activity which is not relevant to an inactive client.\n\nBug: 65693340\n- Fix missing increment of SessionRoute ref count in getInputForAttr() for\nMMAP inputs\n\nTest: AAudio CTS tests\n\nChange-Id: I2a01b02e8b064d352004f6065495fd99aee55745\n"
    },
    {
      "commit": "f89090e284b8ef61eb8cae68c657c8a60877b9fb",
      "tree": "37656620e850132bfd6cc0ffed14e5fd9fcc4c20",
      "parents": [
        "19c197a3bc4c73a06a38513884da392d3fd0a49e",
        "c0e75a7d57df751ec1cb49da91cf64ab0c4c4938"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 14 01:43:23 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 14 01:43:23 2017 +0000"
      },
      "message": "Merge \"AudioTrack, AudioRecord: Fix latency computation\" into oc-mr1-dev am: 5deda0e784\nam: c0e75a7d57\n\nChange-Id: I1f95a6372752e2e47e7f022db0333517c387eadf\n"
    },
    {
      "commit": "13969262f704ca27c82d60e3c7cf4b271e3b5918",
      "tree": "b71db061faee7352cada209170bd02dd80fc7055",
      "parents": [
        "49997ac32b61c3e3b8e0053c8c82f06e6a438f06"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 17:24:21 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 18:03:20 2017 -0700"
      },
      "message": "AudioTrack, AudioRecord: Fix latency computation\n\nForce 64 bit arithmetic to avoid integer overflow on 32 bit\nplatforms.\n\nTest: CTS AudioTrackTest\nBug: 65536481\nChange-Id: I774a7811fce08c7cbe59f0a062fd2c2d72220203\n"
    },
    {
      "commit": "5d874b5bcc9577b4e9054b6fb1d41cb6462dbb58",
      "tree": "fb0fef58c699fd188ec09c34d663c055babf11a4",
      "parents": [
        "72b054de2c3549b4186daf1a83b041fee4607158",
        "fd513fff31baea5bf8a067c70a92e4a01681e169"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 07 20:09:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 20:09:30 2017 +0000"
      },
      "message": "Merge \"Fix failure at AudioTrack_ListenerTest#testAudioTrackCallback\" into oc-mr1-dev am: 310dd0a2d9\nam: fd513fff31\n\nChange-Id: Ic28d34a8cf8bed962642a7e2535d6936d69495f4\n"
    },
    {
      "commit": "310dd0a2d96e97d4f3983a6e70b5e0653a521030",
      "tree": "1400f29c182aeaaf88e2be0cdd6f130a97e902a3",
      "parents": [
        "7dca8d75871e8f275932ddcd184d45fec763ac16",
        "c7bb8324c7c19ed4ab5bdafae0d750bf41c299f1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 07 20:01:37 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 07 20:01:37 2017 +0000"
      },
      "message": "Merge \"Fix failure at AudioTrack_ListenerTest#testAudioTrackCallback\" into oc-mr1-dev"
    },
    {
      "commit": "c7bb8324c7c19ed4ab5bdafae0d750bf41c299f1",
      "tree": "525bf9e32a2c8c1101d6633c9101c46235eedccd",
      "parents": [
        "da071c34f3378a36d39ee0f89cdef4e1f98c3750"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Sep 06 18:20:11 2017 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 07 10:18:36 2017 -0700"
      },
      "message": "Fix failure at AudioTrack_ListenerTest#testAudioTrackCallback\n\nAfter cold start, running the test will cause failure. The reason is\nthat with cold start, the buffer is being processed faster than the\nposition callback.\nCalling the callback earlier at the very start will fix this issue.\n\nBug: 63056426\nTest: adb shell am instrument -e class \u0027android.media.cts.AudioTrack_ListenerTest#testAudioTrackCallback\u0027\n      -w \u0027android.media.cts/android.support.test.runner.AndroidJUnitRunner\u0027\n\nChange-Id: I7416cecb2837fac4a966e832412948c357e7b8dc\n"
    },
    {
      "commit": "a488402046bffd51803cc98815824a27f510d1c5",
      "tree": "fcb4480d47b663335ef5d48cb6fa3daed4a44614",
      "parents": [
        "b8ba103f7fd4a2695d20463689d898ddf5431dac",
        "12131a23cbb03c083c6f53a30c58b9182de5e5fb"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 07 16:52:17 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 16:52:17 2017 +0000"
      },
      "message": "Merge \"AudioTrack: Fix extended timestamp offset\" into oc-mr1-dev am: 7966b44126\nam: 12131a23cb\n\nChange-Id: Icc86ada7ecf279827f7a43bd93dbdae1ff445cb0\n"
    },
    {
      "commit": "c4e60eb165608f08cd85ed2fccbdaa6700f271cd",
      "tree": "8f73643165520a2d88fb83353eb330f9e478b684",
      "parents": [
        "cea54cf940630bd0f462f2c9dcb2bfb75e5ebd68"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 06 11:14:57 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 06 12:03:53 2017 -0700"
      },
      "message": "AudioTrack: Fix extended timestamp offset\n\nThe extended timestamp server and kernel location positions\nneed the proper client side delta offset for native AudioTrack API calls.\nThe client location position is unaffected along with the legacy timestamp.\n\nTest: test_timestamp, Photos, kill audioserver\nBug: 65386236\nChange-Id: Idd71b6a31e0e86a323d0e5e343a2836e34c08673\n"
    },
    {
      "commit": "e247023e785e581349d8fb926c4a1bed239b623c",
      "tree": "850157e9f268725e25dd0e1b98dfd729e61e0e76",
      "parents": [
        "fdf4151313d35e0ef504955ae738550b6ffd338b",
        "0fbd5badd563360827c81b9096381096e9eadf9c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 06 16:26:55 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 06 16:26:55 2017 +0000"
      },
      "message": "Merge \"AudioTrack: Limit timestamp time lag after start\" into oc-mr1-dev am: cea54cf940\nam: 0fbd5badd5\n\nChange-Id: I910d96c6901bad81987191ea2485435a6fcf8a7f\n"
    },
    {
      "commit": "ffa3695a012d22c6c81cf311232c5c84c06f9219",
      "tree": "9efbe30bf98b6a75977fe842083808e8b9d69806",
      "parents": [
        "90153cae7ffd321338f90678a80abd62fb56e877"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 17 10:41:51 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Sep 05 17:02:15 2017 -0700"
      },
      "message": "AudioTrack: Limit timestamp time lag after start\n\nTest: Photos with long pause and resume\nBug: 63614330\nBug: 63976584\nChange-Id: I81ac650c821600fee507c72c3b0c1be60f5e7ab6\n"
    },
    {
      "commit": "8cf3a0788df2ee184b498086b1b8da322eeadcca",
      "tree": "1bd36129bbd4afa491689deca23977dbf30930f6",
      "parents": [
        "a5ec8b0ec9c94fd9474fae1d1d1dc798ae6c4d2d"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Aug 09 09:01:33 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 10:14:30 2017 -0700"
      },
      "message": "Generate the IPlayer interface with AIDL.\n\nThis removes the manually rolled IPlayer implementation and instead uses\nan aidl generated implementation. The IPlayer aidl file is moved from\nframeworks/base/.\n\nTest: run cts --module CtsMediaTestCases\nBug: 64223827\nChange-Id: Ia609f7ba1cc6f71ce919d6174dd8b5e0e1b05575\n"
    },
    {
      "commit": "2b01f009428797ee9154649411a64b522946e966",
      "tree": "4a92acd2cccf15d8d916bbdaa7fea1265911ab93",
      "parents": [
        "38217e0d53b14e634243d1ce36fa5d3267c71056"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 05 12:01:36 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 05 12:45:52 2017 -0700"
      },
      "message": "Replace old audio time conversion macros and functions\n\nTest: Play Movies, Youtube, CTS\nBug: 25569135\nChange-Id: Ib6e304f149c381dc7af7f4aa959c3d79d7bdb2aa\n"
    },
    {
      "commit": "66feec9ff333bbf0b2590f1b321fbf880e1405a4",
      "tree": "ebb1043a6aaf48ac109eb7022a999ae4bc31f0cc",
      "parents": [
        "d4ef5f1eafa099eb40e68a1dfc7b701e4a8d0b1a",
        "2ac7694396640821f6723672e25b2372220bf060"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 27 01:18:39 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 27 01:18:41 2017 +0000"
      },
      "message": "Merge \"Set initial audio device for AudioTrack and AudioRecord\" into oc-dr1-dev"
    },
    {
      "commit": "325b2997d92c4ba2c116b47e6c3d0d0045c5386b",
      "tree": "111e8c240efa9f7574f454babb623ce8d3b1de78",
      "parents": [
        "912c1c196c0783efa90ef35e73dc8efd170a6ba8",
        "9ae8c597d9a0c8cedc4047fc4716d7361453f6ab"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 26 19:35:24 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 26 19:35:28 2017 +0000"
      },
      "message": "Merge \"Set initial audio device for AudioTrack and AudioRecord\""
    },
    {
      "commit": "2ac7694396640821f6723672e25b2372220bf060",
      "tree": "0cd5a8c58898fcb145f4b879ea64aeb260266ce2",
      "parents": [
        "ffd80b92df8521dd28ab5fd08b1098a58cb280e8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 22 17:17:09 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 26 16:29:08 2017 +0000"
      },
      "message": "Set initial audio device for AudioTrack and AudioRecord\n\nBug: 62090113\nTest: run AAudio test and verify a valid device is reported just\nafter opening playback or capture streams in legacy mode.\n\nMerged-In: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n\nChange-Id: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n"
    },
    {
      "commit": "9ae8c597d9a0c8cedc4047fc4716d7361453f6ab",
      "tree": "4c8824f15e744d82243f4a3caab1d67b208afd47",
      "parents": [
        "5af194cf79f280034430f2f65b02a89f261dbbc8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 22 17:17:09 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 26 08:04:19 2017 -0700"
      },
      "message": "Set initial audio device for AudioTrack and AudioRecord\n\nBug: 62090113\nTest: run AAudio test and verify a valid device is reported just\nafter opening playback or capture streams in legacy mode.\n\nChange-Id: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n"
    }
  ],
  "next": "adbb75af4d3224194b9b772855db93fae19cf4ce"
}
