)]}'
{
  "log": [
    {
      "commit": "c837504ed5b9c708896bb97b1ef9225c376816a7",
      "tree": "4b86c06c7fd70680e0482475807ca8f19f00502b",
      "parents": [
        "6d858b5665aeea773ce10d81fd875a80fdb09b85"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 12 21:02:31 2021 -0800"
      },
      "committer": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Wed Feb 17 12:43:41 2021 -0800"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to frameworks/av\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  apex/Android.bp\n  camera/cameraserver/Android.bp\n  camera/tests/Android.mk\n  cmds/screenrecord/Android.bp\n  cmds/stagefright/Android.mk\n  drm/common/Android.bp\n  drm/drmserver/Android.bp\n  drm/libdrmframework/Android.bp\n  drm/libdrmframework/plugins/common/util/Android.bp\n  drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.bp\n  drm/libdrmframework/plugins/forward-lock/internal-format/common/Android.bp\n  drm/libdrmframework/plugins/forward-lock/internal-format/converter/Android.bp\n  drm/libdrmframework/plugins/forward-lock/internal-format/decoder/Android.bp\n  drm/libdrmframework/plugins/passthru/Android.bp\n  drm/libmediadrm/Android.bp\n  drm/libmediadrm/fuzzer/Android.bp\n  drm/libmediadrm/protos/Android.bp\n  drm/libmediadrm/tests/Android.bp\n  drm/mediacas/plugins/clearkey/Android.bp\n  drm/mediacas/plugins/clearkey/tests/Android.bp\n  drm/mediacas/plugins/mock/Android.bp\n  drm/mediadrm/plugins/clearkey/common/Android.bp\n  drm/mediadrm/plugins/clearkey/default/Android.bp\n  drm/mediadrm/plugins/clearkey/default/tests/Android.bp\n  drm/mediadrm/plugins/mock/Android.bp\n  media/audioserver/Android.mk\n  media/bufferpool/1.0/Android.bp\n  media/bufferpool/1.0/vts/Android.bp\n  media/bufferpool/2.0/Android.bp\n  media/bufferpool/2.0/tests/Android.bp\n  media/codec2/components/aac/Android.bp\n  media/codec2/components/amr_nb_wb/Android.bp\n  media/codec2/components/aom/Android.bp\n  media/codec2/components/avc/Android.bp\n  media/codec2/components/base/Android.bp\n  media/codec2/components/cmds/Android.bp\n  media/codec2/components/flac/Android.bp\n  media/codec2/components/g711/Android.bp\n  media/codec2/components/gav1/Android.bp\n  media/codec2/components/gsm/Android.bp\n  media/codec2/components/hevc/Android.bp\n  media/codec2/components/mp3/Android.bp\n  media/codec2/components/mpeg2/Android.bp\n  media/codec2/components/mpeg4_h263/Android.bp\n  media/codec2/components/opus/Android.bp\n  media/codec2/components/raw/Android.bp\n  media/codec2/components/vorbis/Android.bp\n  media/codec2/components/vpx/Android.bp\n  media/codec2/components/xaac/Android.bp\n  media/codec2/core/Android.bp\n  media/codec2/faultinjection/Android.bp\n  media/codec2/fuzzer/Android.bp\n  media/codec2/hidl/1.0/utils/Android.bp\n  media/codec2/hidl/1.0/vts/functional/Android.bp\n  media/codec2/hidl/1.0/vts/functional/audio/Android.bp\n  media/codec2/hidl/1.0/vts/functional/common/Android.bp\n  media/codec2/hidl/1.0/vts/functional/component/Android.bp\n  media/codec2/hidl/1.0/vts/functional/master/Android.bp\n  media/codec2/hidl/1.0/vts/functional/video/Android.bp\n  media/codec2/hidl/1.1/utils/Android.bp\n  media/codec2/hidl/client/Android.bp\n  media/codec2/hidl/services/Android.bp\n  media/codec2/sfplugin/Android.bp\n  media/codec2/sfplugin/tests/Android.bp\n  media/codec2/sfplugin/utils/Android.bp\n  media/codec2/tests/Android.bp\n  media/codec2/vndk/Android.bp\n  media/codecs/amrnb/common/Android.bp\n  media/codecs/amrnb/enc/fuzzer/Android.bp\n  media/codecs/amrnb/fuzzer/Android.bp\n  media/codecs/amrwb/dec/fuzzer/Android.bp\n  media/codecs/amrwb/enc/Android.bp\n  media/codecs/amrwb/enc/SampleCode/Android.bp\n  media/codecs/amrwb/enc/fuzzer/Android.bp\n  media/codecs/amrwb/enc/test/Android.bp\n  media/codecs/g711/decoder/Android.bp\n  media/codecs/g711/fuzzer/Android.bp\n  media/codecs/m4v_h263/dec/Android.bp\n  media/codecs/m4v_h263/dec/test/Android.bp\n  media/codecs/m4v_h263/fuzzer/Android.bp\n  media/codecs/mp3dec/fuzzer/Android.bp\n  media/extractors/Android.bp\n  media/extractors/aac/Android.bp\n  media/extractors/amr/Android.bp\n  media/extractors/flac/Android.bp\n  media/extractors/fuzzers/Android.bp\n  media/extractors/midi/Android.bp\n  media/extractors/mkv/Android.bp\n  media/extractors/mp3/Android.bp\n  media/extractors/mp4/Android.bp\n  media/extractors/mpeg2/Android.bp\n  media/extractors/ogg/Android.bp\n  media/extractors/tests/Android.bp\n  media/extractors/wav/Android.bp\n  media/img_utils/Android.bp\n  media/libaaudio/Android.bp\n  media/libaaudio/examples/Android.bp\n  media/libaaudio/examples/input_monitor/Android.bp\n  media/libaaudio/examples/loopback/Android.bp\n  media/libaaudio/examples/write_sine/Android.bp\n  media/libaaudio/src/Android.bp\n  media/libaaudio/tests/Android.bp\n  media/libaudioclient/Android.bp\n  media/libaudioclient/tests/Android.bp\n  media/libaudiofoundation/Android.bp\n  media/libaudiofoundation/tests/Android.bp\n  media/libaudiohal/Android.bp\n  media/libaudiohal/impl/Android.bp\n  media/libaudioprocessing/Android.bp\n  media/libaudioprocessing/audio-resampler/Android.bp\n  media/libaudioprocessing/tests/Android.bp\n  media/libaudioprocessing/tests/fuzzer/Android.bp\n  media/libcpustats/Android.bp\n  media/libdatasource/Android.bp\n  media/libeffects/config/Android.bp\n  media/libeffects/downmix/Android.bp\n  media/libeffects/downmix/tests/Android.bp\n  media/libeffects/dynamicsproc/Android.bp\n  media/libeffects/factory/Android.bp\n  media/libeffects/loudness/Android.bp\n  media/libeffects/lvm/benchmarks/Android.bp\n  media/libeffects/lvm/lib/Android.bp\n  media/libeffects/lvm/tests/Android.bp\n  media/libeffects/lvm/wrapper/Android.bp\n  media/libeffects/preprocessing/Android.bp\n  media/libeffects/preprocessing/benchmarks/Android.bp\n  media/libeffects/preprocessing/tests/Android.bp\n  media/libeffects/proxy/Android.bp\n  media/libeffects/visualizer/Android.mk\n  media/libheif/Android.bp\n  media/libmedia/Android.bp\n  media/libmedia/tests/codeclist/Android.bp\n  media/libmedia/xsd/Android.bp\n  media/libmedia/xsd/vts/Android.bp\n  media/libmediahelper/Android.bp\n  media/libmediahelper/tests/Android.bp\n  media/libmediametrics/Android.bp\n  media/libmediaplayerservice/Android.bp\n  media/libmediaplayerservice/datasource/Android.bp\n  media/libmediaplayerservice/nuplayer/Android.bp\n  media/libmediaplayerservice/tests/Android.bp\n  media/libmediaplayerservice/tests/stagefrightRecorder/Android.bp\n  media/libmediatranscoding/Android.bp\n  media/libmediatranscoding/tests/Android.bp\n  media/libnbaio/Android.bp\n  media/libnblog/Android.bp\n  media/libstagefright/Android.bp\n  media/libstagefright/bqhelper/Android.bp\n  media/libstagefright/bqhelper/tests/Android.bp\n  media/libstagefright/codecs/aacdec/Android.bp\n  media/libstagefright/codecs/aacenc/Android.bp\n  media/libstagefright/codecs/amrnb/dec/Android.bp\n  media/libstagefright/codecs/amrnb/enc/Android.bp\n  media/libstagefright/codecs/amrwbenc/Android.bp\n  media/libstagefright/codecs/avcdec/Android.bp\n  media/libstagefright/codecs/avcenc/Android.bp\n  media/libstagefright/codecs/common/Android.bp\n  media/libstagefright/codecs/flac/dec/Android.bp\n  media/libstagefright/codecs/flac/enc/Android.bp\n  media/libstagefright/codecs/g711/dec/Android.bp\n  media/libstagefright/codecs/gsm/dec/Android.bp\n  media/libstagefright/codecs/hevcdec/Android.bp\n  media/libstagefright/codecs/m4v_h263/dec/Android.bp\n  media/libstagefright/codecs/m4v_h263/enc/Android.bp\n  media/libstagefright/codecs/mp3dec/Android.bp\n  media/libstagefright/codecs/mpeg2dec/Android.bp\n  media/libstagefright/codecs/on2/dec/Android.bp\n  media/libstagefright/codecs/on2/enc/Android.bp\n  media/libstagefright/codecs/opus/dec/Android.bp\n  media/libstagefright/codecs/raw/Android.bp\n  media/libstagefright/codecs/vorbis/dec/Android.bp\n  media/libstagefright/codecs/xaacdec/Android.bp\n  media/libstagefright/colorconversion/Android.bp\n  media/libstagefright/data/Android.bp\n  media/libstagefright/filters/Android.bp\n  media/libstagefright/flac/dec/Android.bp\n  media/libstagefright/flac/dec/test/Android.bp\n  media/libstagefright/foundation/Android.bp\n  media/libstagefright/foundation/tests/AVCUtils/Android.bp\n  media/libstagefright/foundation/tests/Android.bp\n  media/libstagefright/foundation/tests/OpusHeader/Android.bp\n  media/libstagefright/foundation/tests/colorutils/Android.bp\n  media/libstagefright/http/Android.bp\n  media/libstagefright/httplive/Android.bp\n  media/libstagefright/id3/Android.bp\n  media/libstagefright/id3/test/Android.bp\n  media/libstagefright/mpeg2ts/Android.bp\n  media/libstagefright/mpeg2ts/test/Android.bp\n  media/libstagefright/omx/Android.bp\n  media/libstagefright/omx/tests/Android.bp\n  media/libstagefright/rtsp/Android.bp\n  media/libstagefright/tests/Android.bp\n  media/libstagefright/tests/ESDS/Android.bp\n  media/libstagefright/tests/HEVC/Android.bp\n  media/libstagefright/tests/extractorFactory/Android.bp\n  media/libstagefright/tests/fuzzers/Android.bp\n  media/libstagefright/tests/mediacodec/Android.bp\n  media/libstagefright/tests/metadatautils/Android.bp\n  media/libstagefright/tests/writer/Android.bp\n  media/libstagefright/timedtext/Android.bp\n  media/libstagefright/timedtext/test/Android.bp\n  media/libstagefright/webm/Android.bp\n  media/libstagefright/webm/tests/Android.bp\n  media/libstagefright/writer_fuzzers/Android.bp\n  media/libstagefright/xmlparser/Android.bp\n  media/libstagefright/xmlparser/test/Android.bp\n  media/libstagefright/xmlparser/vts/Android.bp\n  media/libwatchdog/Android.bp\n  media/mediaserver/Android.bp\n  media/mtp/Android.bp\n  media/mtp/tests/Android.bp\n  media/tests/benchmark/Android.bp\n  media/tests/benchmark/MediaBenchmarkTest/Android.bp\n  media/tests/benchmark/MediaBenchmarkTest/src/main/cpp/Android.bp\n  media/tests/benchmark/src/native/common/Android.bp\n  media/tests/benchmark/src/native/decoder/Android.bp\n  media/tests/benchmark/src/native/encoder/Android.bp\n  media/tests/benchmark/src/native/extractor/Android.bp\n  media/tests/benchmark/src/native/muxer/Android.bp\n  media/tests/benchmark/tests/Android.bp\n  media/utils/Android.bp\n  media/utils/fuzzers/Android.bp\n  services/audioflinger/Android.bp\n  services/audiopolicy/Android.bp\n  services/audiopolicy/common/Android.bp\n  services/audiopolicy/common/managerdefinitions/Android.bp\n  services/audiopolicy/config/Android.bp\n  services/audiopolicy/engine/common/Android.bp\n  services/audiopolicy/engine/config/Android.bp\n  services/audiopolicy/engine/interface/Android.bp\n  services/audiopolicy/engineconfigurable/Android.bp\n  services/audiopolicy/engineconfigurable/config/Android.bp\n  services/audiopolicy/engineconfigurable/config/example/automotive/Android.bp\n  services/audiopolicy/engineconfigurable/config/example/caremu/Android.bp\n  services/audiopolicy/engineconfigurable/config/example/phone/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/plugin/Android.bp\n  services/audiopolicy/engineconfigurable/tools/Android.bp\n  services/audiopolicy/engineconfigurable/wrapper/Android.bp\n  services/audiopolicy/enginedefault/Android.bp\n  services/audiopolicy/enginedefault/config/example/Android.bp\n  services/audiopolicy/manager/Android.mk\n  services/audiopolicy/managerdefault/Android.bp\n  services/audiopolicy/service/Android.mk\n  services/audiopolicy/tests/Android.bp\n  services/camera/libcameraservice/Android.bp\n  services/camera/libcameraservice/fuzzer/Android.bp\n  services/camera/libcameraservice/tests/Android.mk\n  services/mediacodec/Android.bp\n  services/mediacodec/registrant/Android.bp\n  services/mediaextractor/Android.bp\n  services/medialog/Android.bp\n  services/medialog/fuzzer/Android.bp\n  services/mediametrics/Android.bp\n  services/mediametrics/benchmarks/Android.bp\n  services/mediametrics/fuzzer/Android.bp\n  services/mediametrics/tests/Android.bp\n  services/mediaresourcemanager/Android.bp\n  services/mediaresourcemanager/fuzzer/Android.bp\n  services/mediaresourcemanager/test/Android.bp\n  services/mediatranscoding/Android.bp\n  services/mediatranscoding/tests/Android.bp\n  services/minijail/Android.bp\n  services/oboeservice/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  media/codecs/amrnb/dec/Android.bp\n  media/codecs/amrnb/dec/test/Android.bp\n  media/codecs/amrnb/enc/Android.bp\n  media/codecs/amrnb/enc/test/Android.bp\n  media/codecs/amrwb/dec/Android.bp\n  media/codecs/amrwb/dec/test/Android.bp\n  media/codecs/m4v_h263/enc/Android.bp\n  media/codecs/m4v_h263/enc/test/Android.bp\n  media/codecs/mp3dec/Android.bp\n  media/codecs/mp3dec/test/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-MIT SPDX-license-identifier-Unicode-DFS\n    legacy_by_exception_only\nto:\n  Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT\n    SPDX-license-identifier-Unicode-DFS\nto:\n  apex/testing/Android.bp\n  camera/Android.bp\n  camera/ndk/Android.bp\n  media/ndk/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/Car/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/CarEmu/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/Phone/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/SettingsNoInput/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/SettingsNoOutput/Android.bp\n  services/audiopolicy/tests/resources/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 legacy_by_exception_only\nto:\n  drm/mediadrm/plugins/clearkey/hidl/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\n\nChange-Id: I8360756b326b891b56629127091540310851c941\nMerged-in: I8360756b326b891b56629127091540310851c941\n"
    },
    {
      "commit": "f224b6d5c39e435038789e12162fb90459ca36ab",
      "tree": "6bcaa13c5e67499d01c900d882b0809ebe26ac19",
      "parents": [
        "593c2cb2a1698f7f3ace6019b8bd9de34e6edff9",
        "2349b1a90de7a7f89185056abd17d9dae78c8c03"
      ],
      "author": {
        "name": "Kris Alder",
        "email": "kalder@google.com",
        "time": "Thu Dec 17 19:35:13 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Dec 17 19:35:13 2020 +0000"
      },
      "message": "Merge \"libaaudioservice: Updated to build both static and shared library\" am: d295e4b4bd am: 6dc4d54815 am: 2349b1a90d\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1522719\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: I3ac6acaddea3c3cf932439de48b2d525fd92c5db\n"
    },
    {
      "commit": "2349b1a90de7a7f89185056abd17d9dae78c8c03",
      "tree": "2a1cc195ea3775fe6a4156dbd48c30e89570aec1",
      "parents": [
        "da86112baea3e27f5bfdee6c0732b0a6d476ff0e",
        "6dc4d54815fef551778caca0e5b234e36a3ba18e"
      ],
      "author": {
        "name": "Kris Alder",
        "email": "kalder@google.com",
        "time": "Thu Dec 17 19:08:52 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Dec 17 19:08:52 2020 +0000"
      },
      "message": "Merge \"libaaudioservice: Updated to build both static and shared library\" am: d295e4b4bd am: 6dc4d54815\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1522719\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: I02a0256e292bca37d1d34415c7988b6d0a38708a\n"
    },
    {
      "commit": "3813f74c4e035da3e831ad14d6fe1910e52c5e55",
      "tree": "e780833025c08c7870d9cc9c3915fdeb8d9414b4",
      "parents": [
        "e9ebb9efbcac3a27a26cb068ac5e8fd187bcaaa2"
      ],
      "author": {
        "name": "Mufaddal Chakera",
        "email": "mufaddal.chakera@ittiam.com",
        "time": "Wed Nov 11 11:12:48 2020 +0530"
      },
      "committer": {
        "name": "Mufaddal Chakera",
        "email": "mufaddal.chakera@ittiam.com",
        "time": "Wed Dec 16 13:45:08 2020 +0530"
      },
      "message": "libaaudioservice: Updated to build both static and shared library\n\nTest: Build libaaudioservice\nBug: 174736869\n\nChange-Id: If2fbbe199314ad21ef08338b5aed9c8991031c15\n"
    },
    {
      "commit": "f74b8a59c3ef78654b9ca42e3d63a1b66e184e2a",
      "tree": "4c674388124bbfbfebc3e9c3ae2f3963f255a7dd",
      "parents": [
        "e80bee84eab70271ac3309301fb432ce10663eca",
        "fff9c8aa87a7c03e063cf6adeb4c63b895b6d145"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 02 14:29:10 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Dec 02 14:29:10 2020 +0000"
      },
      "message": "Merge \"aaudio: use strong pointer to protect callback\" into rvc-qpr-dev am: fff9c8aa87\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/13150716\n\nChange-Id: I03ef28890bf44e5ee07d600e7c011693369e3a68\n"
    },
    {
      "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": "f2d8470b1c8efe422f73adf682e7858810d7fa4a",
      "tree": "7277bc73082c1a200acf96ae779923467198bb11",
      "parents": [
        "763b935ef71fbe678d9c402b2c9f6cbefbdb68f6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Oct 12 23:42:30 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Dec 01 12:43:19 2020 -0800"
      },
      "message": "aaudio: use strong pointer to protect callback\n\nHold a strong pointer to the AudioStream so it cannot get deleted while\nthe MMAP callback is running.\n\nAlso fixes disconnect for shared streams, which was broken\nby a previous attempt to fix b/166877425\n\nBug: 166877425\nBug: 170551030\nTest: see bug for details\nTest: atest AAudioTestCases\nTest: OboeTester V1.5.30 or later, \"TEST DISCONNECT\"\nChange-Id: I236e2d68632070d253d14ddf7b9d7076e068830a\nMerged-In: I236e2d68632070d253d14ddf7b9d7076e068830a\n(cherry picked from commit e358ec63eedd7a6289984b1f2468c5c16c2ff6c8)\n"
    },
    {
      "commit": "8e654fb2bde447d96ffe40edf339fb12a83bafc7",
      "tree": "63d1de06e932b7d5850a2dbe79b2a98e3f795d24",
      "parents": [
        "ef888a66e6fc1013af4b24fed98f48dfb462ef01",
        "c410c10dfa725baf4307312d6c8abd8af02df3c5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 01 18:08:52 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Dec 01 18:08:52 2020 +0000"
      },
      "message": "Merge \"Convert mask types from uint32_t to enum type\" am: 7cd031828f am: c410c10dfa\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1510515\n\nChange-Id: I90c3487ebb936f37eb92bf862205c9bdb5eb1d09\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": "04e805b0a206161d3913b2c675d2d110c4f21f0f",
      "tree": "4e20d50ae5dd1f1a82cd0e5fa7407b18dc55fd8d",
      "parents": [
        "bb29fdf9ae85ae6394e691ce38dafbfaa0411ff6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Mar 27 09:13:53 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Nov 19 14:52:58 2020 +0000"
      },
      "message": "aaudio: add support for 24 and 32 bit PCM\n\nAdd new formats: AAUDIO_FORMAT_PCM_I24_PACKED\nand AAUDIO_FORMAT_PCM_I32.\n\nPass formats to Legacy AudioTrack and AuddioRecord.\n\nRequest 24_PACKED in AAudio Service for MMAP streams.\nAlso add a flowgraph module for converting the I32 data\nto/from FLOAT.\n\nBug:  65067568\nBug: 157671580\n\nTest: To determine which format the MMAP path is using for the DSP,\nTest: adb shell dumpsys media.aaudio\nTest: then look for the \"Exclusive MMAP Endpoints\" and \"Format:\".\nTest: The formats listed are the internal AudioFlinger formats:\nTest:    1\u003d16_BIT, 3\u003d32_BIT, 4\u003d8_24_BIT, 5\u003dFLOAT, 6\u003d24_BIT_PACKED\n\nTest: atest AAudioTestCases\nTest: adb shell write_sine_callback -? # to list new formats\nTest: adb shell write_sine_callback -pl -f3 # MMAP LOWLAT I24_PACKED\nTest: adb shell write_sine_callback -pl -f4 # MMAP LOWLAT I32\nTest: # Legacy LOWLAT I24_PACKED\nTest: adb shell write_sine_callback -pl -f3 -m1\nTest: adb shell write_sine_callback -pl -f4 -m1 # Legacy LOWLAT I32\nTest: adb shell write_sine_callback -pn -f3 # Legacy I24_PACKED\nTest: adb shell write_sine_callback -pn -f4 # Legacy I32\nChange-Id: Ibe13bfd54425d110f50f89eb10c63872a2f99839\n"
    },
    {
      "commit": "0bd745eb91487821ce415272fb49a567483bde43",
      "tree": "2b3f952b01ea3dfa680317fd50a8e8db65ad45ce",
      "parents": [
        "11b45e9f0a31783c7fa1d28281a489dfe47a9982"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Sat Oct 17 18:20:01 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Nov 02 20:25:22 2020 +0000"
      },
      "message": "aaudio: add thread safety annotation\n\nAlso improve naming to clarify lock requirements.\n\nAnd call some locked methods that were not called before.\nAlthough they were protected with a different lock so\nit should have no effect.\n\nBug: 171296283\nTest: adb logcat *:F\nTest: In another window:\nTest: atest AAudioTestCases\nChange-Id: I6e863cbdea9250188e3f4b8f8654ef71c8951e74\n"
    },
    {
      "commit": "dd582929677fab6ffdb52f36cd1e16855bb7321a",
      "tree": "76c8557c340edeacb098665d331ba7a7f6f398e2",
      "parents": [
        "9bcf4989bf3e09167503e94571b15626e56f4453"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 15 20:29:51 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Oct 21 00:37:34 2020 +0000"
      },
      "message": "aaudio: cleanup thread handling\n\nFix problem when an attempt is made to join the callback from the\ncallback. It used to leave mHasThread in the wrong state.\nThis was fixed in AAudioThread and in AudioStream.\n\nAdd \"_l\" suffix to functions that need to be locked.\n\nSimplify the way that reference counted objects are passed to threads\nusing incStrong() and decStrong().\n\nBug: 171296283\nTest: atest AAudioTestCases\nChange-Id: I034049c4cb9021c6073fff441e49214ee898b804\n"
    },
    {
      "commit": "14a1a17354d3ab55804ec688051a405dc0c320d6",
      "tree": "a367deee603744e4f22e7018a795bd7cdc9a81a1",
      "parents": [
        "2254ae51fa1c681eb39a79a2d60f36c5d48ad0ee",
        "e358ec63eedd7a6289984b1f2468c5c16c2ff6c8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 19 23:08:05 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 19 23:08:05 2020 +0000"
      },
      "message": "Merge \"aaudio: use strong pointer to protect callback\""
    },
    {
      "commit": "e358ec63eedd7a6289984b1f2468c5c16c2ff6c8",
      "tree": "dc2daf58088b5586cfe6be9abfb92987d6749899",
      "parents": [
        "7aed66e788c8955ddd22a1235856bb9dac34d82a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Oct 12 23:42:30 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Oct 19 20:31:17 2020 +0000"
      },
      "message": "aaudio: use strong pointer to protect callback\n\nHold a strong pointer to the AudioStream so it cannot get deleted while\nthe MMAP callback is running.\n\nAlso fixes disconnect for shared streams, which was broken\nby a previous attempt to fix b/166877425\n\nBug: 166877425\nBug: 170551030\nTest: see bug for details\nTest: atest AAudioTestCases\nTest: OboeTester V1.5.30 or later, \"TEST DISCONNECT\"\nChange-Id: I236e2d68632070d253d14ddf7b9d7076e068830a\n"
    },
    {
      "commit": "55773033ed1f23c4e8f3d2704002fbd0cedbf7a5",
      "tree": "54bc894243fa3c52e611c85aed75ee6677056c13",
      "parents": [
        "7aed66e788c8955ddd22a1235856bb9dac34d82a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 01 15:08:13 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 08 18:12:55 2020 -0700"
      },
      "message": "Convert mask types from uint32_t to enum type\n\nThis applies to the following types:\n\n- audio_gain_mode_t;\n- audio_flags_mask_t;\n- audio_channel_representation_t;\n- audio_channel_mask_t;\n- audio_devices_t.\n\nEnum types are distinct thus proper overloading on the type\nis possible in C++. Also, assignments to enum types are\nless prone to errors.\n\nBug: 169889714\nTest: basic audio functionality\n      m stagefright\n      atest audiopolicy_tests\nChange-Id: I42506484b1d0b0482618b7314fad4c8012a06fb4\n"
    },
    {
      "commit": "f95ed73ea6614cdbd2297d5886b0af0e043e165c",
      "tree": "41ffd529fb3c2f7d2806602673c4b3da3d024320",
      "parents": [
        "8d97b8e3760686f2f1c74a4bb4a703f1bc465060"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 30 18:48:17 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 30 18:48:17 2020 +0000"
      },
      "message": "aaudio: disable new external timestamp\n\nDisable recent change that caused a regression and broke\nOUTPUT timestamps.\n\nBug: 169773867\nTest: OboeTester, TEST OUTPUT\nTest: \"latnc\" for MMAP streams should be a few msec not \"?\"\nChange-Id: I7c4697a34d63a1fd514298f04fc91421c2bb32b1\n"
    },
    {
      "commit": "2e0239dfded6307f5a787ac0a64f2066b8340e7b",
      "tree": "4d5bce7f68a341b59a0c09049c61fadb8b460602",
      "parents": [
        "1a207dbf25e983845ce47ae04016504a4d092a92",
        "b7d8c5aa7a9c182e695e456c4aea8f8f6c550850"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 29 00:10:23 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 29 00:10:23 2020 +0000"
      },
      "message": "Merge \"Add getExternalPosition in MMapStreamInterface.\""
    },
    {
      "commit": "b7d8c5aa7a9c182e695e456c4aea8f8f6c550850",
      "tree": "8d602524e90bf46e4cbe1e33a71fa472e7998c34",
      "parents": [
        "8dbd241e279e1a637502e38af32ef6ead483768f"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 26 17:24:52 2020 -0700"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Wed Sep 23 21:45:29 2020 +0000"
      },
      "message": "Add getExternalPosition in MMapStreamInterface.\n\nGetExternalPosition will return a recent count of the number of\naudio frames presented/received to/from an external observer. Using\nthe new API can return a precise timestamp to client, which can\nhelp on A/V sync.\n\nTest: atest AAudioTests\nBug: 158609200\nChange-Id: If74e1d859a2bb2b4dba6af0e4e9164f05d19d962\n"
    },
    {
      "commit": "c5f4587cddb7ec90320df3d6233baffd5d8f93a1",
      "tree": "cd3dc205f82010918de2298a33f8d6bf8aec5ed2",
      "parents": [
        "734e3505e8222fd5c146dfa935f80b6ae3ce3003"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Aug 18 10:39:44 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 11 16:33:19 2020 -0700"
      },
      "message": "Convert AAudioService to AIDL\n\nThis change removes all hand-written binder code associated with\nparceling of AAudio types and IAAudioService interface.\n\nThe existing types defined in the \u0027binding\u0027 directory have not been\nreplaced by their AIDL counterparts, but rather were made convertible\nto/from them (in lieu of them being parcelables themselves).\nThe reasons are:\n- Some of those types offer additional functionality rather than\n  simply being data containers / serializers. For example, the\n  SharedMemoryParcelable type supports mmaping a memory region.\n- Reduce impact on existing code, which relies on the interface\n  offered by those type, which is different than the interface offered\n  by their AIDL counterparts.\n\nThe conversion between those types and their parcelable counterparts\nis handled at the edge of the client (inside AAudioBinderAdapter) and\nserver (inside AAudioService) code.\n\nFuture changes may gradually get rid of the duality by retiring the\ndata types in the \u0027binding\u0027 directory, inlining some of the features\nthey are offering (such as accessor methods) and replacing others with\nutility functions, operation on the parcelables directly.\n\nBug: 160253486\nTest: Manual testing using OboeTester\n      Ran atest CtsNativeMediaAAudioTestCases\n      Ran atest test_aaudio_marshalling\nChange-Id: I6eed19246a472dc31c1e2d6d2112d7562cf8940c\n"
    },
    {
      "commit": "734e3505e8222fd5c146dfa935f80b6ae3ce3003",
      "tree": "c7f54bbbf2d764150c550813ea32e09c4d6583cf",
      "parents": [
        "0412f73c6eb83e51832b9b7aaa57a4dc0239e6a5"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Aug 24 14:57:36 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 11 16:33:15 2020 -0700"
      },
      "message": "Avoid AAudioService-\u003eAAudioServiceInterface inheritence\n\nThis is required in order to prepare for divergence of\nAAudioServiceInterface from BnAAudioService: if AAudioService\ninherits from both, we would have method collisions as soon as we\nchange the signatures on one of the interfaces.\n\nWe achieve the same behavior with an adapter, which in this change is\ncompletely trivial, but will be used as soon as the interfaces\nactually diverge.\n\nBug: 160253486\nTest: Manual testing using OboeTester\n      Ran atest CtsNativeMediaAAudioTestCases\nChange-Id: I0d3e41e2378f1e6ff9cbe37461682f7373f463f2\n"
    },
    {
      "commit": "0412f73c6eb83e51832b9b7aaa57a4dc0239e6a5",
      "tree": "4c0803d4e215de220b0c2c15ca50c79959f47eda",
      "parents": [
        "10a7efe0387b11acc57cf6cea3f2ae594b1d8907"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Aug 17 14:43:36 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 11 12:39:20 2020 -0700"
      },
      "message": "Convert IAAudioClient to AIDL\n\nBug: 160253486\nTest: Manual testing using OboeTester\n      Ran atest CtsNativeMediaAAudioTestCases\nChange-Id: I18e6c03144c59ce78181abf7c509c21f2724ad22\n"
    },
    {
      "commit": "1281c1d4ec7d5752d7c0981f32171a83f80b2438",
      "tree": "d62219e73d503ad08c4d60a3029d22e61b8309dd",
      "parents": [
        "af69d2203db2e0147f24c43486c36cf2b02c997f",
        "27514853147fb24d48af6a4f678c010e822b1c8e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 11 16:49:25 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Sep 11 16:49:25 2020 +0000"
      },
      "message": "Merge changes from topic \"aaudio-callback-close\" into rvc-qpr-dev am: 2751485314\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12551623\n\nChange-Id: I520180492759313fd28baea43e43ec0af1f6c334\n"
    },
    {
      "commit": "af69d2203db2e0147f24c43486c36cf2b02c997f",
      "tree": "7795d5ebeaa82c7c18f3827b8e640f19a7a66e60",
      "parents": [
        "52bc293ab6d9b3e67c52fcc5fefd500060b4f6b9",
        "79224cacfbdb30956428bbe915323233949b768d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 11 16:49:24 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Sep 11 16:49:24 2020 +0000"
      },
      "message": "aaudio: prevent onAudioDeviceUpdate past close am: 79224cacfb\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12551622\n\nChange-Id: I9530b754c9b67f968ae9b0088e627fa6434172f3\n"
    },
    {
      "commit": "52bc293ab6d9b3e67c52fcc5fefd500060b4f6b9",
      "tree": "fad3d97e165d291264d510247d06fa1594b20f58",
      "parents": [
        "60669b443009fdaf85d3e5f4782baf7b6aaa3ab7",
        "4719048ce0e6f8656a417a2f2fe6fbb848ed2ba7"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 11 16:49:21 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Sep 11 16:49:21 2020 +0000"
      },
      "message": "aaudio: fix crash from callbacks during close am: 4719048ce0\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12540591\n\nChange-Id: Ic046f39f0327c662362ceed7b090bb2cf91e2e1b\n"
    },
    {
      "commit": "5cad6399aaae8fd448f389967a30d00068b1efe0",
      "tree": "60cdccf08e4a665a3657a15303a525b934f36093",
      "parents": [
        "79224cacfbdb30956428bbe915323233949b768d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Sep 01 20:55:18 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 10 14:55:00 2020 -0700"
      },
      "message": "aaudio: fix crash on disconnect for shared streams\n\nThis fixes a regression caused by ag/12396646\nThat CL changed the way that AudioStreams are managed\nusing android::sp\u003c\u003e. Unfortunately it caused\na crash in audioserver when shared streams were disconnected.\nThe root cause was calling disconnectedRegisteredStreams()\nfrom a data processing thread, which resulted\nin deleting the object while the thread was using it.\n\nThe call was unnecessary so it was removed.\n\nBug: 161914201\nBug: 163165126\nBug: 164411271\nBug: 166877425\nTest: adb logcat *:F\nTest: Use OboeTester TEST DISCONNECT\nTest: See b/166877425 for more details\nChange-Id: I30fc7f00061a9caf5e3d9f7c8e257102c34f9d92\nMerged-In: I30fc7f00061a9caf5e3d9f7c8e257102c34f9d92\n"
    },
    {
      "commit": "79224cacfbdb30956428bbe915323233949b768d",
      "tree": "3ff5396e1b0f316f25a4af8e48c9465d91cbc2a9",
      "parents": [
        "4719048ce0e6f8656a417a2f2fe6fbb848ed2ba7"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 12 14:29:10 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 10 14:54:30 2020 -0700"
      },
      "message": "aaudio: prevent onAudioDeviceUpdate past close\n\nTo prevent late device update callbacks, the AudioStream\nwas made into a RefBase AudioDeviceCallback.\nSo now we can use a smart pointer to delay deletion of the\nstream if any callbacks are in flight while the stream is closed.\n\nSo an AudioStream is now a RefBased object and can be used with\nandroid::sp. That required some changes to the way it is referenced\nin several places.\n\nMyPlayerBase was modified to use a weak pointer to the parent stream.\n\nUse delete[] for mDistributionBuffer\n\nBug: 161914201\nBug: 163165126\nBug: 164411271\nTest: see bug for repro of the crash\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Ic24aca3eaf5d1610504bb89c06001a37d0d4a1c3\nMerged-In: Ic24aca3eaf5d1610504bb89c06001a37d0d4a1c3\n"
    },
    {
      "commit": "4719048ce0e6f8656a417a2f2fe6fbb848ed2ba7",
      "tree": "8feaf2f9358a3993b5077647ddcd8952c71f7798",
      "parents": [
        "e1f1cb5827a6c99d41e05e090b3b382f3598a58e"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 12 14:29:10 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 10 14:52:58 2020 -0700"
      },
      "message": "aaudio: fix crash from callbacks during close\n\nMove some code from release_l() into a new close_l().\nAlso stop callbacks before freeing memory in the\nFixedBlockReader.\n\nThe AudioTrack and AudioRecord callbacks can occur\nup until their destructors are called. This can lead\nto race conditions if the AAudio stream is dismantled\nwhile the AudioTrack or AudioRecord is still alive.\nThe AudioRecord was being deleted but not the AudioTrack.\nThat caused some streams to fail if they were using\na FixedBlockReader, which is used when the app\ncalls AAudioStreamBuilder_setFramesPerDataCallback().\n\nThere was also a problem with a few functions like\nAAudioStream_getFramesPerBurst() or AAudioStream_getTimestamp(),\nwhich would crash if called after AAudioStream_release( for\nINPUT streams.\n\nBug: 161914201\nBug: 163165126\nTest: see bug for repro of the crash\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: If8f6f6f17ffe06eae98eb8b3930bca08c49a15f8\nMerged-In: If8f6f6f17ffe06eae98eb8b3930bca08c49a15f8\n(cherry picked from commit 320910fcf1e7d7729f37f95f591093191414e73f)\n"
    },
    {
      "commit": "4e8396f030bc2d63714f345e1b9985adc0733211",
      "tree": "0dd44b168b2b9a763cd13518dd55c42b91546c51",
      "parents": [
        "244e5086e3a9d1e4c37350abe0c4e4c09609eba7"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Sep 01 20:55:18 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Sep 01 20:55:18 2020 +0000"
      },
      "message": "aaudio: fix crash on disconnect for shared streams\n\nThis fixes a regression caused by ag/12396646\nThat CL changed the way that AudioStreams are managed\nusing android::sp\u003c\u003e. Unfortunately it caused\na crash in audioserver when shared streams were disconnected.\nThe root cause was calling disconnectedRegisteredStreams()\nfrom a data processing thread, which resulted\nin deleting the object while the thread was using it.\n\nThe call was unnecessary so it was removed.\n\nBug: 164411271\nBug: 166877425\nTest: adb logcat *:F\nTest: Use OboeTester TEST DISCONNECT\nTest: See b/166877425 for more details\nChange-Id: I30fc7f00061a9caf5e3d9f7c8e257102c34f9d92\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": "8dff4ae2e40d385869cdb28be4af50b615af37a2",
      "tree": "054748ae814437055247bd047a7c06945afa1cc0",
      "parents": [
        "f1a36052bf6c752cec6b60bec058971765bdfa7b",
        "58f5ce146a8c2b25cc3bbd18df6e264addda2684"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 20 14:48:28 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 20 14:48:28 2020 +0000"
      },
      "message": "Merge changes Ic24aca3e,If8f6f6f1\n\n* changes:\n  aaudio: prevent onAudioDeviceUpdate past close\n  aaudio: fix crash from callbacks during close\n"
    },
    {
      "commit": "58f5ce146a8c2b25cc3bbd18df6e264addda2684",
      "tree": "cf2893c9d5da9aa989c88cf2fa8b14dad6d3861a",
      "parents": [
        "320910fcf1e7d7729f37f95f591093191414e73f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 12 14:29:10 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 20 01:03:06 2020 +0000"
      },
      "message": "aaudio: prevent onAudioDeviceUpdate past close\n\nTo prevent late device update callbacks, the AudioStream\nwas made into a RefBase AudioDeviceCallback.\nSo now we can use a smart pointer to delay deletion of the\nstream if any callbacks are in flight while the stream is closed.\n\nSo an AudioStream is now a RefBased object and can be used with\nandroid::sp. That required some changes to the way it is referenced\nin several places.\n\nMyPlayerBase was modified to use a weak pointer to the parent stream.\n\nBug: 161914201\nBug: 163165126\nBug: 164411271\nTest: see bug for repro of the crash\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Ic24aca3eaf5d1610504bb89c06001a37d0d4a1c3\n"
    },
    {
      "commit": "320910fcf1e7d7729f37f95f591093191414e73f",
      "tree": "e7052b3542898e68b5dbe5f5785ef0a19946bc2b",
      "parents": [
        "f356189f05884926290b1f7920241ef15674cbc6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Aug 12 14:29:10 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Aug 18 18:51:03 2020 +0000"
      },
      "message": "aaudio: fix crash from callbacks during close\n\nMove some code from release_l() into a new close_l().\nAlso stop callbacks before freeing memory in the\nFixedBlockReader.\n\nThe AudioTrack and AudioRecord callbacks can occur\nup until their destructors are called. This can lead\nto race conditions if the AAudio stream is dismantled\nwhile the AudioTrack or AudioRecord is still alive.\nThe AudioRecord was being deleted but not the AudioTrack.\nThat caused some streams to fail if they were using\na FixedBlockReader, which is used when the app\ncalls AAudioStreamBuilder_setFramesPerDataCallback().\n\nThere was also a problem with a few functions like\nAAudioStream_getFramesPerBurst() or AAudioStream_getTimestamp(),\nwhich would crash if called after AAudioStream_release( for\nINPUT streams.\n\nBug: 161914201\nBug: 163165126\nTest: see bug for repro of the crash\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: If8f6f6f17ffe06eae98eb8b3930bca08c49a15f8\n"
    },
    {
      "commit": "664d6f0bdd76ade5b68369b6f0cc205c2d37c49d",
      "tree": "7635338fb9e3bcca72ac9fe4aae66a8cfa896e21",
      "parents": [
        "1d2a159395df0767ecb2320aff4dd4db3d26e6b2"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Aug 11 17:15:50 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Aug 11 17:15:50 2020 -0700"
      },
      "message": "Do not initialize shared memory pointer when mmap fails.\n\nIn SharedRingBuffer, it is possible that it fails calling mmap when\ndoing allocation. When this happens, the shared memory pointer should\nbe null pointer.\n\nTest: atest CtsNativeMediaAAudioTestCases\nBug: 161570220\nChange-Id: I7ca9d8be6b9a94ca770ced36cf2b76dcc36fe8f9\n"
    },
    {
      "commit": "8f4fe50dc17dab7d809ad215ab62dc86de888731",
      "tree": "5a83f0b41cb2ce576cf1e230321b6cdff137f818",
      "parents": [
        "a524c363821353a541442e3b23449875b797b09d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 15 23:54:50 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 06 19:00:12 2020 +0000"
      },
      "message": "aaudio: refactor references to shared FIFO\n\nReduce passing of raw pointers.\nUse shared_ptrs and unique_ptrs.\nSimplify memory management.\n\nRefactor FifoBuffer into two subclasses so that\nthe internal memory management is simpler.\n\nBug: 151650670\nTest: OboeTester \"TEST OUTPUT\"\nTest: disable EXCLUSIVE mode\nTest: OboeTester \"ECHO INPUT TO OUTPUT\"\nTest: disable INPUT EXCLUSIVE mode\nChange-Id: I10981767f8719f3cc3525df211285c53219a7979\n"
    },
    {
      "commit": "bb551703b691060c8e1a9c9878b78e3f9742e9a0",
      "tree": "2a7263751f763ec5dc2513f684f85d0f0a8f90ac",
      "parents": [
        "80f49ee74e278929c89db6e8705d009b6ab71186",
        "503495884fa9a06a7cb6473d36d69d6a13808887"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 30 19:34:19 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jul 30 19:34:19 2020 +0000"
      },
      "message": "Merge \"aaudio: Update language to comply with Android\u0027s inclusive language guidance\" am: cf7197e3ce am: 63347a7185 am: 39075258a9 am: b6e842223b am: 503495884f\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1375100\n\nChange-Id: Ib78c0f39e9163c4e8db1482db6659fbb98a88bbb\n"
    },
    {
      "commit": "39075258a92d969a6ea438cfe2ad298de01de7ad",
      "tree": "bac30dc7c62357c1678fd8e1de89a8d3c6858411",
      "parents": [
        "86b249c78a265e37a9516a50aee17919b4b22c14",
        "63347a718527003a3a3516f2eebe962f6fee860d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 30 18:33:52 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jul 30 18:33:52 2020 +0000"
      },
      "message": "Merge \"aaudio: Update language to comply with Android\u0027s inclusive language guidance\" am: cf7197e3ce am: 63347a7185\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1375100\n\nChange-Id: I0c7f3a971c70e894f739ed4b6bf7c2d5959bc16c\n"
    },
    {
      "commit": "18142aed005974bf6bee76ece8afaff7c89d0b50",
      "tree": "9e2b532577c0164b0cd6291e86d1a1cd0c9957b0",
      "parents": [
        "3fd4dee8960cd6bccbb21227d43dfef839d33875"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jul 28 12:44:37 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 30 09:39:06 2020 -0700"
      },
      "message": "aaudio: Update language to comply with Android\u0027s inclusive language guidance\n\nSee https://source.android.com/setup/contribute/respectful-code for reference\n\nBUG: 161896447\nTest: all changes are in comments, so just build\nChange-Id: I53a4a4c2ade03dcde940e6611f7e6b46d12ffe71\n\nChange-Id: I90ebaea4731c6ca95f312b2176792d50dea862ad\n"
    },
    {
      "commit": "e46c8f51655115c3a305ecaca43b6b17be1a4368",
      "tree": "d219a2a366a54950d303eca66b20b68230a28b48",
      "parents": [
        "41ac4ced446869138f74d0e510b6e3b437fa84dd",
        "3244f664323e099ba6237b9907b6deece03237d9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jul 17 19:40:51 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 17 19:40:51 2020 +0000"
      },
      "message": "Merge \"aaudio: use unique_ptr for INPUT buffer\""
    },
    {
      "commit": "cdfd7937138c699f1f1544645866ae0e6efe7e7d",
      "tree": "166a66aa8f316cc05e874496d1dd4e455e8faaf8",
      "parents": [
        "99f69fed95b0add9c94f077bcbd2641fa74589a6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jul 15 22:44:43 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 16 17:33:06 2020 +0000"
      },
      "message": "aaudio: use unique_ptr for mixer buffer\n\nBug: 151650670\nTest: atest CtsNativeMediaAAudioTestCases\nTest: OboeTester \"TEST OUTPUT\"\nTest: disable EXCLUSIVE mode so we use the shared mixer\nChange-Id: Ie8bcca265cd3ee124e455116a366d1056f3ee4cb\n"
    },
    {
      "commit": "3244f664323e099ba6237b9907b6deece03237d9",
      "tree": "8f925d72210ab0c92eba47a5d9c8dd041e0a8f73",
      "parents": [
        "99f69fed95b0add9c94f077bcbd2641fa74589a6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jun 25 23:28:35 2020 +0000"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Jul 16 17:15:57 2020 +0000"
      },
      "message": "aaudio: use unique_ptr for INPUT buffer\n\nBug: 151650670\nTest: OboeTester \"RECORD and PLAY\" with EXCLUSIVE disabled\nChange-Id: I7cd2d840fc4c5fb46d8eb3c3b7c7f406e300bfcd\n"
    },
    {
      "commit": "f673a057493adfb8c13233f46e0fe4d0046b5ae9",
      "tree": "a8025d964c111e4b2c2504c38201261eecd786a8",
      "parents": [
        "566af0ed39d39a32a0d99e0b572399aaa10e4c93",
        "e2a7b9d0b38267a2046c0063d87cda953fe2feae"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jun 06 00:14:38 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Jun 06 00:14:38 2020 +0000"
      },
      "message": "Merge \"aaudio: fix race when disconnecting\" into rvc-dev am: 5a126eaf40 am: 36abeac28f am: e2a7b9d0b3\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11761087\n\nChange-Id: I23e529ac230a5f473f75fd17effc40740e208679\n"
    },
    {
      "commit": "8ab3420d891d79859a97980eea821ce6e61b9d37",
      "tree": "a8025d964c111e4b2c2504c38201261eecd786a8",
      "parents": [
        "933b484fa7563c7ad2e990c61ad0051bb648eee0",
        "5a126eaf40f04ea4871f537d4cef50c15b0686de"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 05 23:49:51 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jun 05 23:49:51 2020 +0000"
      },
      "message": "Merge \"aaudio: fix race when disconnecting\" into rvc-dev am: 5a126eaf40\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11761087\n\nChange-Id: I1874731b58a7183af8307db2cf72993f25cfb10d\n"
    },
    {
      "commit": "8e2255ad97be8c5665b6bc8973d37c241fb5814b",
      "tree": "1131a333ad55726c9783e420d3a57f35bca18ad9",
      "parents": [
        "6d5a5c10a5b9389cd84b5a10d5814e65eeb004aa"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 05 09:58:26 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Jun 05 13:08:09 2020 -0700"
      },
      "message": "aaudio: fix race when disconnecting\n\nWhen disconnecting more than one stream,\nand the apps reopen the streams,\nthere was a race condition that resulted\nin the first app getting a Legacy stream instead of an\nMMAP stream. That is because it was disconnected before the\nother streams had stopped.\n\nNow we run the stop loop before the disconnect loop\nto prevent the race.\n\nBug: 158316262\nTest: test_steal_exclusive -r0 -d0 -s\nChange-Id: Ib8efde9c2f94f6ab1ba3475d88b45d373cc8d3bb\n"
    },
    {
      "commit": "46098901840817a0a516dcfe9b2a437cec42e88c",
      "tree": "0c1c87a837223fbcc2a67d29db01aaff33085c60",
      "parents": [
        "264d7ef14b451ef8ada5986e0a8969036b67fc47",
        "2c28d9042b315eae4040fd1d018b0483e93341db"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 03 01:42:41 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jun 03 01:42:41 2020 +0000"
      },
      "message": "Merge \"aaudio: disable exclusive mode after steal\" into rvc-dev am: 4e48c2477d am: 12946d1962 am: 2c28d9042b\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11665503\n\nChange-Id: I007f3efc7868830a1a8aca972f3fec14345b36e4\n"
    },
    {
      "commit": "098f64da0f0c9e3c0be45eb51378a57321041633",
      "tree": "0c1c87a837223fbcc2a67d29db01aaff33085c60",
      "parents": [
        "1de621d426a18651ab90fc1703e928a9874b1f4c",
        "4e48c2477d084919f13ee191a6c36713d83063f3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 03 01:05:51 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jun 03 01:05:51 2020 +0000"
      },
      "message": "Merge \"aaudio: disable exclusive mode after steal\" into rvc-dev am: 4e48c2477d\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11665503\n\nChange-Id: Id7c97dae3ac6c5b1abea55dfede6a3f9e8c7f6ed\n"
    },
    {
      "commit": "836f9df5638d4edc475a5a9a69f385ed83831da0",
      "tree": "f23d43481b747647e20936462c435149aabba323",
      "parents": [
        "d40bc7615ff9bb6aac308083c51980437a9c6a21"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri May 29 13:20:28 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Jun 01 15:24:44 2020 -0700"
      },
      "message": "aaudio: disable exclusive mode after steal\n\nPrevent a process that had its exclusive stream stolen\nfrom obtaining another exclusive stream.\nThis can prevent a collision between two processes after\nthey both try to open EXCLUSIVE streams after\na DISCONNECT event.\n\nBug: 157777324\nTest: adb shell test_steal_exclusive -r0 -d100\nChange-Id: I0fe12be95a8fbd05ed03f10796e1ca716025c885\n"
    },
    {
      "commit": "28ca11af8acbe777d2479ca6fc70c1a88f8bdb19",
      "tree": "f54ba1c086ec288224d787907f12c4975a987282",
      "parents": [
        "aed64eda19f76e9d5b68688c843ef6bc689490f4",
        "3bd241dcd726b2c4119a0b6bb1246bcdc513a912"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 19 03:46:34 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue May 19 03:46:34 2020 +0000"
      },
      "message": "Merge \"aaudio: lock transport methods\" into rvc-dev am: 3bd241dcd7\n\nChange-Id: Ifdf6cdb181af51382c9d2df36c73d8db2e0bd8a9\n"
    },
    {
      "commit": "3bd241dcd726b2c4119a0b6bb1246bcdc513a912",
      "tree": "54fe12c143c4045bc1fb35a52d62fe8858b65862",
      "parents": [
        "db0b34440ac627f7d153ec7849d7590ab199d334",
        "7ebbc11051f1af7a520e9ae7e582125c63e92f95"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 19 03:28:54 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 19 03:28:54 2020 +0000"
      },
      "message": "Merge \"aaudio: lock transport methods\" into rvc-dev"
    },
    {
      "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": "e5f6cd42a9f1e86a318e429fb9fdd956bcbcefe3",
      "tree": "7c8678fb84dcec99aa1408dc1cfc66b0c652e6bc",
      "parents": [
        "fc2a78ee9796a7ecb8436e7cbe884a1d90314a45",
        "09869a1c369e0edc421a379c2ffb3cb3afbbe392"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 13 22:32:49 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed May 13 22:32:49 2020 +0000"
      },
      "message": "Merge \"MediaMetrics: Prepare statistics for protos\" into rvc-dev am: 09869a1c36\n\nChange-Id: Ia61b527808d26235709725188cf1639c1cbe69a9\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": "d8d340537fa20c68cc0e615310f87fb7bb7678f0",
      "tree": "ef6dfbecd7ff476c5a6242c3bcb6516f3e1115ae",
      "parents": [
        "68f8d17c180bfb538f43635241bf6b66015ff504",
        "e3469d1d6d7a8a894064e925b0770765bbe4bea0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 08 00:55:04 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri May 08 00:55:04 2020 +0000"
      },
      "message": "Merge \"aaudio: process callbacks asynchronously\" into rvc-dev am: e3469d1d6d\n\nChange-Id: I3037510a5c7d268645dbe9dbab9f4e9352e476b1\n"
    },
    {
      "commit": "a77869d964afe3915ae6dfcb1b832a7ccb1fe308",
      "tree": "37a516c20dbd10c7575cbe1ce90cb352dd6b49a5",
      "parents": [
        "686dac0cdb04834b889b1264f7a41c5d6ce25d2a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 07 10:39:47 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 07 14:33:39 2020 -0700"
      },
      "message": "aaudio: process callbacks asynchronously\n\nSpawn a thread to handle the disconnects for onRoutingChanged()\nand onTearDown(). This is to prevent deadlocks when calling back into\nAudioFlinger.\n\nBug: 155819038\nTest: See bug for repro steps with OboeTester\nTest: Also run TEST DISCONNECT in OboeTester. It was failing.\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: I83212fea140d3b6beca9aa737606a77a7c97b007\n"
    },
    {
      "commit": "cc2ebfc95d0925ad06cd368be6d7de557d1eaef5",
      "tree": "8ee765f8c2162282109abb22be7a1cb8df19caf2",
      "parents": [
        "303147efc0d6bd3f29e1da40720ddc175a78d388",
        "686dac0cdb04834b889b1264f7a41c5d6ce25d2a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 05 11:19:47 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue May 05 11:19:47 2020 +0000"
      },
      "message": "Merge changes I7f8339d8,Idff0c394 into rvc-dev am: 686dac0cdb\n\nChange-Id: If597e6b6a35e038c90090614dbdda35b0b5ce854\n"
    },
    {
      "commit": "6e463ce6fc456a3c185b80086d3605e2189eccd6",
      "tree": "5c897c19218b6ab714ad781076018079ef2b0240",
      "parents": [
        "4756a9f78b39c7aad0bd79c18b97bf8ed00b4bc6"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 13 10:20:20 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue May 05 02:54:41 2020 -0700"
      },
      "message": "aaudio: steal exclusive streams\n\nAn app (B) that asks for an exclusive stream can steal\nan exclusive stream from an earlier app (A).\nApp B will be given the MMAP resource as a SHARED stream.\nThe stream for app A will be disconnected and released\nby the service.\nIf app A reopens a stream then it will get a SHARED\nstream.\n\nThe order of the opening of the streams is controlled by using a\nrecursive_mutex in AAudioService::openStream().\n\nBug: 129846760\nTest: media/libaaudio/tests/test_steal_exclusive.cpp\nTest: also\nTest: Launch AudioTroubleMaker. It should say \"EXCLUSIVE\".\nTest: Press Home button.\nTest: Siren sound from AudioTroubleMaker should continue.\nTest: Launch OboeTester\nTest: TEST OUTPUT, then Open, Start\nTest: You should get an MMAP SHARED stream on Pixel.\nTest: Go back to AudioTroubleMaker. It should say \"SHARED\".\nChange-Id: I7f8339d8ed62546520a9b46ed398418b41ca2832\n"
    },
    {
      "commit": "76d7cc4578423dd14e4ccfd15cea1691108b1b37",
      "tree": "77e98ccb24caf0a5fb3693b8c538b9c33bf14717",
      "parents": [
        "f76edb9df96d63a33438e294ea0ece89e818ab9e",
        "5559ae7c9dabaf8b0bbfaf7553fef050f008f425"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 28 15:29:31 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Apr 28 15:29:31 2020 +0000"
      },
      "message": "Merge \"MediaMetrics: Use AllowUid property for services to control client access\" into rvc-dev am: 5559ae7c9d\n\nChange-Id: I2d0505ebb6ba113cd4f53467943b498aca117c62\n"
    },
    {
      "commit": "d203eb6b3cd99af3c9616df2bd0d982796b0f918",
      "tree": "0f2cfa6c24a30d32913de484c6dd52514b37a9a3",
      "parents": [
        "2578a95a57dd9796b55095dc22b8171dd5da73c3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 09:12:46 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 27 23:42:41 2020 -0700"
      },
      "message": "MediaMetrics: Use AllowUid property for services to control client access\n\nRemove implicit first client uid access.\n\nTest: adb shell dumpsys media.metrics\nBug: 149850236\nChange-Id: I4f953db4688bf5f174c3e1611f492f31d2926e96\n"
    },
    {
      "commit": "d74b9c0efbc0a7cce9c7aaa0204414612a64d8d9",
      "tree": "57e18d652a0daac9904248d4eb13fe0b18eeac39",
      "parents": [
        "3de3935a515ecefea19f5dbd251191fc63c20795",
        "cc40c5fa11767eb9a87cf6e1a5e8a99d6cec2847"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 24 14:41:54 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Apr 24 14:41:54 2020 +0000"
      },
      "message": "Merge \"aaudio: add MediaMetrics for MMAP streams\" into rvc-dev am: cc40c5fa11\n\nChange-Id: I95149514982f70f1eb2cef58978a46ecf3bbb5dc\n"
    },
    {
      "commit": "a9876703e89afa6db42913d48e2360b7dad98725",
      "tree": "4e51b01b2fa4be83868318a1619e3b7c2f42f36e",
      "parents": [
        "6e89a0704605f4750f87a3243495b175c67e6fbb"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 20 18:16:15 2020 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 23 18:00:10 2020 -0700"
      },
      "message": "aaudio: add MediaMetrics for MMAP streams\n\nLog events from service.\nLog start, stop, disconnect and other events.\nLog underruns and bufferSize.\n\nBug: 154543374\nTest: adb shell dumpsys media.metrics --clear\nTest: run an app that uses MMAP, like OboeTester\nTest: adb shell dumpsys media.metrics\nTest: Expect to see lots of \"audio.stream\" events.\nChange-Id: I690e5226b695d53d038d644f4438c759e08f9fbb\n"
    },
    {
      "commit": "887b1a3719b31f605147c5ee580f42f769d3e9ee",
      "tree": "f76572a43fc4ebf5c967e5537cb8c45f7ded08b8",
      "parents": [
        "da4faa6c2e50b6ab28dfd9a40289313239319d16",
        "42c1c38d7f0340f448b38dcf228b2e7753a2bcd2"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Apr 14 02:10:00 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Apr 14 02:10:00 2020 +0000"
      },
      "message": "Merge \"Include what you use: \u003cunistd.h\u003e\" am: 8a71223d5a am: 42c1c38d7f\n\nChange-Id: I7487c7d3e566736733b6510072f6a32c2c4534ac\n"
    },
    {
      "commit": "7ae782545020eec1bfb9eb74e690ae26e2cca7fa",
      "tree": "b99f5db2f4d75aeddb175896c3fa67070b21154e",
      "parents": [
        "2ac41184ae00b2e99e55d995944288f33b2fce49"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Apr 13 15:20:50 2020 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Apr 13 15:20:50 2020 -0700"
      },
      "message": "Include what you use: \u003cunistd.h\u003e\n\nThis was transitively included, but no longer is, so it must be\nexplicitly included.\n\nExempt-From-Owner-Approval: Janitorial\nTest: build\nChange-Id: I78268a4867697bf797d40b5fead3745fdd0cc807\n"
    },
    {
      "commit": "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": "8b4e05ecee60bf08c9121c61d69526e076495766",
      "tree": "9879d2a21175f35e47545c03ec1a2a2ba46de933",
      "parents": [
        "0bc6f60e1f036380bd48d022631e6561b90f210c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Dec 17 12:12:09 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Jan 22 13:31:58 2020 -0800"
      },
      "message": "aaudio: add AAudioStream_release()\n\nSplit close into close and release phases.\nRelease() will release hardware and service resources.\nClose() will delete the stream object.\nThis allows us to defer the deletion and avoid race conditions.\n\nThe CLOSING state is used to indicate that a stream has been released.\n\nAdded some test cases to test_various.cpp.\nA lone call to close() will automatically call release() so we should\nhave good code coverage for testing.\n\nBug: 136288001\nTest: adb shell test_various\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Ia648838f30c521ba101f55259dbcd4594c1263cd\n"
    },
    {
      "commit": "a51151aacfc820122b45a875a0b6fe0dba60b756",
      "tree": "5250165a3a49942645caf75ade6634fa5c825e22",
      "parents": [
        "bd9f1ed08bb948af54600eb60f13fd6e05068375"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jan 07 13:37:47 2020 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jan 08 11:21:31 2020 -0800"
      },
      "message": "Link with actual headers instead of symlinks\n\nand remove the symlinks.\n\nBug: 143245419\nTest: build\nChange-Id: I70e450d9db0f65048f86391c4d3f341659cd213f\n"
    },
    {
      "commit": "f7a18b2fe92a2f4b428b32794ef1d3a7d9db6949",
      "tree": "05888d1c6569ae104c0d97b24f7e903ab1f8272d",
      "parents": [
        "f6cd76eef99409ea943e995e3c8fae92a787fb36"
      ],
      "author": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Fri Dec 06 12:39:32 2019 -0800"
      },
      "committer": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Tue Dec 10 10:15:17 2019 -0800"
      },
      "message": "Remove setting LOCAL_MULTILIB from AUDIOSERVER_MULTILIB\n\nBug: 121208203\nTest: treehugger\nChange-Id: Ia8a640c4e59cd33281e88ab379a119e1d120f096\nMerged-In: I263b6b302f7220e4b712924d2df2fd2548af03b1\n"
    },
    {
      "commit": "630f74baaf5280a78350fa1ecb7283768a5c4bf9",
      "tree": "e20620e03a8ef5db88b55dfe70edfaa926ef6c43",
      "parents": [
        "643a5692fb1d1b7b0e2c90faa217816f7b524c51",
        "d17c85023ac2058233121b8a94603687c855c997"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 19:21:53 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 06 19:21:53 2019 +0000"
      },
      "message": "Merge \"Add explicit private audio recording request\""
    },
    {
      "commit": "56307881608d21b504437e51cea0806043f95a4b",
      "tree": "c0728d3ab5172b3af00bc0d1410b52cf559d4215",
      "parents": [
        "bbf2be940fdc28029d3fe76826271063cff9e675",
        "346f2cf971221d73ca84af752c4e6ec9ca247d2c"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Dec 06 00:15:34 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 06 00:15:34 2019 -0800"
      },
      "message": "Merge \"oboeservice: hold onto linked binder\" am: 6a9d20eebf am: 51c29bd32d\nam: 346f2cf971\n\nChange-Id: Ia017c274871f38209fd8edb67153f852026c71ae\n"
    },
    {
      "commit": "d17c85023ac2058233121b8a94603687c855c997",
      "tree": "39fc63d6f1037eafb71dc8046aefedfadfee9b53",
      "parents": [
        "d203cb92c9c9628b3bead45ec08f826544c1d649"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 24 15:58:35 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 04 17:58:34 2019 -0800"
      },
      "message": "Add explicit private audio recording request\n\nAdd the possibility for apps to indicate that their\ncapture use case is private and that a privileged Assistant\nshould not be able to capture concurrently.\nThis allows to override the default behavior tied to the audio\nsource (e.g VOICE_COMMUNICATION is private by default but\nUNPROCESSED is not).\n\n- Add AAudio API to set and get privacy sensitive mode on input stream\n- Add MediaRecorder API to set and get privacy sensitive mode\n- Modify AudioSource constructor to accept audio attributes instead of an\naudio source to specify the use case.\n- Modify audio policy concurrent capture logic to use audio attributes\nflag instead of audio source to decide of a capture client has\nrequested privacy mode or not.\n\nBug: 137850106\nTest: CTS AudioRecordTest and MediaRecorderTest, manual audio smoke tests\n\nChange-Id: I250ea5da4c1da809ceac0da22ae9bee15b937001\n"
    },
    {
      "commit": "37a6163f3f7e125f617ffed1d02b27dcd85b9b7f",
      "tree": "7f089e9b6ff73d7ea3fed249b5e70fccaca337e5",
      "parents": [
        "b2872d478fbb66eddd59d8a35d81796850927153"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Dec 04 14:06:50 2019 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Dec 04 23:29:21 2019 +0000"
      },
      "message": "oboeservice: hold onto linked binder\n\nBefore, in Android 10, this would have been a small leak because\nunlinkToDeath is not called, but now, objects are automatically\nunlinked. However, this presents a problem since you must hold onto\na binder in order to linkToDeath. This now holds onto the binder\nand is relying on the automatic-unlinkToDeath behavior.\n\nFixes: 145675653\nTest: atest CtsNativeMediaAAudioTestCases\narm64-v8a CtsNativeMediaAAudioTestCases: Passed: 122, Failed: 0, Ignored: 0, Assumption Failed: 0\nTest: after using app and killing which uses AAudio MMAP stream,\ndumpsys output for media.aaudio is cleaned up:\n\n------------ AAudio Service ------------\nStream Handles:\nAAudioClientTracker:\nAAudioEndpointManager:\nExclusive MMAP Endpoints: 0\n ExclusiveSearchCount:  3\n ExclusiveFoundCount:   0\n ExclusiveOpenCount:    1\n ExclusiveCloseCount:   1\n\nShared Endpoints: 0\n SharedSearchCount:     1\n SharedFoundCount:      0\n SharedOpenCount:       0\n SharedCloseCount:      0\n\nChange-Id: I2ef141320dc3ef0135fb7ef002d85377d06a75c2\n"
    },
    {
      "commit": "ef34be5426e96fa2fecc551e1fe196fbb862b220",
      "tree": "3335f4ce50a8307b0684a0c5a15fcf3b4ec84b52",
      "parents": [
        "b362012ad43022a0686cc2ca7fe2eb64d377a202"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Sep 26 13:45:25 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Oct 04 16:56:14 2019 -0700"
      },
      "message": "aaudio: add histogram to clock model\n\nMeasure distribution of MMAP timestamp lateness.\nThis is used to discover the actual DSP timing behavior.\nTurn histogram log on or off using a property.\n\nTest: adb root\nTest: adb shell setprop aaudio.log_mask 1\nTest: run an AAudio MMAP program\nTest: adb logcat | grep ClockModel\nChange-Id: I910831d1feee43c59d1af2ac3135a910fef36fb2\n"
    },
    {
      "commit": "42e1130e8be8b2527a8d17b1748592ae004e85c0",
      "tree": "61380db6ef5d30460357c8af0b962bed4c5d071a",
      "parents": [
        "c3af5ba966b7aaddfd96bac149f04a4f43c49f9c",
        "0db4d66d132006ab72f41ad76c7358e5cbae0a32"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Tue Jul 23 11:11:10 2019 +0200"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 23 10:48:45 2019 +0000"
      },
      "message": "resolve merge conflicts of 0db4d66d132006ab72f41ad76c7358e5cbae0a32 to stage-aosp-master\n\nTest: I did not test this\nMerged-In: If93118ed2c266faf2964abf21e17b0b13df493d2\nChange-Id: Iaba9829407bd2b625e91ac7a4c8bc8941fa7d569\n"
    },
    {
      "commit": "d81a84a886e13c61a613b35e4a998ad8e61a0d8f",
      "tree": "e1ca28f807ed6d384e3526de1f0f2049548f17b6",
      "parents": [
        "10b5ef5d180bc5b0a2116f112b87153b16c3de00"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Jul 17 13:55:16 2019 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Jul 18 15:25:14 2019 +0200"
      },
      "message": "Split libaaudio.so to internal and NDK part\n\nThis change moves almost everything from libaadio.so to\nseparate libaaudio_internal.so library. This is done to\navoid exporting symbols which apps are not allowed to use\nbut have them available for platform libraries by exporting\nthem from libaaudio_internal.so\n\nBug: http://b/69603741\nTest: make\nMerged-In: If93118ed2c266faf2964abf21e17b0b13df493d2\nChange-Id: If93118ed2c266faf2964abf21e17b0b13df493d2\n"
    },
    {
      "commit": "2d2f17cc1e15b7a4a21c94d6c6d125eabf740fc9",
      "tree": "c1023826407ccf2d1f88fa1e8d69ee8cae579136",
      "parents": [
        "ed84e713b3b84aa189459c2412e65a4be257bc89"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Wed Jul 17 13:55:16 2019 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu Jul 18 14:09:16 2019 +0200"
      },
      "message": "Split libaaudio.so to internal and NDK part\n\nThis change moves almost everything from libaadio.so to\nseparate libaaudio_internal.so library. This is done to\navoid exporting symbols which apps are not allowed to use\nbut have them available for platform libraries by exporting\nthem from libaaudio_internal.so\n\nBug: http://b/69603741\nTest: make\nChange-Id: If93118ed2c266faf2964abf21e17b0b13df493d2\n"
    },
    {
      "commit": "6bddd7d48f943b81c1789325478ea4e9f2b64ed9",
      "tree": "d256c13568c285104e786114c09f7004c131a151",
      "parents": [
        "17f60dd7c5b29f6d2d0f798fd01fb8ad61c3a1ef",
        "8c9e502267bcf9e61f9901e0c5820a3066986b9b"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed May 29 10:44:40 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 29 10:44:40 2019 -0700"
      },
      "message": "Merge \"Remove reference to non-existant directory\" am: d96e627971\nam: 8c9e502267\n\nChange-Id: I5dcfc42ce9160a878b4fce047ce2f681b27ea012\n"
    },
    {
      "commit": "30a1c51220085b32cfb3c413ff5b8831593ebac9",
      "tree": "185d3f6295b2310a054d3d5fff37da101082f310",
      "parents": [
        "60c33d85d08dae0a1fc33829ad0479950912151a"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue May 28 13:54:07 2019 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue May 28 13:54:07 2019 -0700"
      },
      "message": "Remove reference to non-existant directory\n\nThis was fixed when converting to Android.bp in internal master, so\nthat\u0027s the Merged-In reference.\n\nTest: treehugger\nChange-Id: I6a503ac7f3c283b7ef6a657c100901469447a22b\nMerged-In: I7061e99da18f5f7fad00527f01bf97ae6cebea2f\n"
    },
    {
      "commit": "a9e3a3cd8a6a70a5f8c18f9d11638f98404a2094",
      "tree": "7a6429dfd3e52d356b4a7d5cecc54b06c2af340c",
      "parents": [
        "19cd95e5038688a281bfb363a566d073bafb4a0c",
        "1209b4817ccc39b355fa90c8c741d83816d3fb97"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 07 17:00:25 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 07 17:00:25 2019 +0000"
      },
      "message": "Merge \"Convert aaudioservice (oboeservice) to Android.bp\""
    },
    {
      "commit": "0b22b6ba9bdc8e4322f8651d060e9319bc24af1e",
      "tree": "96ecedcfe01f570c6abaad0cf458eb8342a358f7",
      "parents": [
        "9a3ce7c3401cf161c5e2a6ecbe4c4ba3a4aa149e",
        "1b835f6a2f4b0945647a56c156f548407baf052d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 02 20:22:06 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 02 20:22:06 2019 -0700"
      },
      "message": "aaudio: protect against null client am: ef7eaaf8d8\nam: 1b835f6a2f\n\nChange-Id: I09ad84bbdf85b3a8c57b8379a4d36f8c48707239\n"
    },
    {
      "commit": "ef7eaaf8d873e9d832673fd0a8e07371fa47a0a0",
      "tree": "16af72980d4c2e09fb45be30e44a52eb4575236a",
      "parents": [
        "2ddd17ca5c49fe02c459b7026d4c271bf76c4e3c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed May 01 11:26:35 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 02 12:51:47 2019 -0700"
      },
      "message": "aaudio: protect against null client\n\nAAudioService would fail if a null client was passed.\nTwo null checks were added. One where we know the null\nclient first appears. And one where the client is first used\nin case other calls are passing null.\n\nBug: 116230453\nTest: Bug has a POC apk that triggers the bug.\nTest: Look for messages like:\nTest:      AAudio  : BnAAudioService::onTransact() client is NULL!\nChange-Id: Id9c4fc154226ab40df97335da8bc9361cfc99a73\n"
    },
    {
      "commit": "1209b4817ccc39b355fa90c8c741d83816d3fb97",
      "tree": "c9120fe362737b48f298c185e7b19a7ed8c32a78",
      "parents": [
        "1c2813bc5c609f1c3b59c92d086523a72e7b6e1e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 26 16:20:57 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 26 16:20:57 2019 -0700"
      },
      "message": "Convert aaudioservice (oboeservice) to Android.bp\n\nRemoved additional includes previously added by LOCAL_C_INCLUDES,\nnone of them are actually needed.\n\nBug: 121208203\nTest: make\nChange-Id: I7061e99da18f5f7fad00527f01bf97ae6cebea2f\n"
    },
    {
      "commit": "f15051bd11214aa0dd4c1f911321386121d5cefb",
      "tree": "e6e407817e0047f6d2b14671eb77f5a97fc36381",
      "parents": [
        "657b64c7b9de71a26e61746ff444545db99baa22",
        "a10b3d52cbd1177050a00ae108d9c110e41bad88"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 23 20:27:14 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 23 20:27:14 2019 -0700"
      },
      "message": "Merge \"aaudio: use actual DSP burst size in timing model\" into qt-dev am: bde241b71f\nam: a10b3d52cb\n\nChange-Id: I5fa54fd6be7e9d42e72cfd2a8511bd5e1f751bb4\n"
    },
    {
      "commit": "3c4e6b503848623a0ff9bb1bee78e5b0d7c248ea",
      "tree": "f9e53f6f37f77695bbc4d4576854d2cf3bb55935",
      "parents": [
        "9730f4d7d27c49bfdfa69f3b7555b5a641a8499d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Jan 22 15:53:36 2019 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 23 17:16:29 2019 +0000"
      },
      "message": "aaudio: use actual DSP burst size in timing model\n\nThis will more accurately track the read or write\nposition of the DSP.\n\nThe client sometimes aggregates multiple hardware bursts\nto avoid waking up too often. This can make it look like the DSP has\nprocessed a larger amount of memory than it really has.\nWith this change, the timing model will advance in sync with the hardware.\n\nBug: 117834966\nBug: 130911274\nTest: see bug for repro steps\nChange-Id: Id22f1f313e02f0514665ee5ac144cab4684e3bc1\n"
    },
    {
      "commit": "4e9661c889f728339f37cc2c16bdd9af4402dcff",
      "tree": "3601e838518c71859afff773997beb925ac41a35",
      "parents": [
        "df9167614fd36456c895881cd8f074e18bd7b519",
        "2ebf6629605a0d44cb83f3dfbd0130132a686cda"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 18 17:57:31 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 18 17:57:31 2019 +0000"
      },
      "message": "Merge \"AAudio: bump priority of AAudio Mixer to match FastMixer\""
    },
    {
      "commit": "2ebf6629605a0d44cb83f3dfbd0130132a686cda",
      "tree": "2190b4af2d71c552118c87c7f3c3861be8f09457",
      "parents": [
        "8946fa33044a8b216f85d962b49b52fe36642c0b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 17 11:10:25 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 18 09:04:30 2019 -0700"
      },
      "message": "AAudio: bump priority of AAudio Mixer to match FastMixer\n\nService RT thread should run at a slightly higher priority because\nit generally does less work and is more critical.\n\nBug: 71817389\nTest: Run an AAudio stream in SHARED mode.\nTest:   adb shell ps -e -T -o uid,pid,tid,ppid,pri,ni,cmd| grep AAudio\nTest: See bug for more test instructions.\nChange-Id: I762af6ac1a9883d47b4c42bfe9f8455416251a12\n"
    },
    {
      "commit": "29ccc29d482b6e4a2c46c2b8e731d44938888e32",
      "tree": "84034c7928d373aec61f9076d26065197a541693",
      "parents": [
        "2cb1a8ccbd402d74a06ee34721f5dd787ecb396f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 15 08:58:08 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 17 18:22:37 2019 +0000"
      },
      "message": "aaudio: reduce error logging, improve security\n\nReduce log spam and error logging as part of the Green Log effort.\nReplace logging of addresses with integer IDs.\n\nBug: 36785118\nBug: 122073229\nBug: 130569151\nTest: Open an AAudio stream at 44100 and look at logcat.\nTest:   adb shell write_sine_callback -pl -r44100\nTest:   adb logcat | grep -i aaudio | grep \" E \"\nTest: Should see no \"E\" logs from AAudio.\nTest: Should see no addresses from AAudio.\nChange-Id: I1d4e0bc349095f818fad52603d2bb8e7317d3681\nMerged-In: I1d4e0bc349095f818fad52603d2bb8e7317d3681\n(cherry picked from commit 7ba46558fbd28b555ba751837cc9094a7c785f75)\n"
    },
    {
      "commit": "7ba46558fbd28b555ba751837cc9094a7c785f75",
      "tree": "b71f408fcd6398781692ea48ff4e0be6d066dba0",
      "parents": [
        "8946fa33044a8b216f85d962b49b52fe36642c0b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 15 08:58:08 2019 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Apr 16 15:59:36 2019 -0700"
      },
      "message": "aaudio: reduce error logging, improve security\n\nReduce log spam and error logging as part of the Green Log effort.\nReplace logging of addresses with integer IDs.\n\nBug: 36785118\nBug: 122073229\nBug: 130569151\nTest: Open an AAudio stream at 44100 and look at logcat.\nTest:   adb shell write_sine_callback -pl -r44100\nTest:   adb logcat | grep -i aaudio | grep \" E \"\nTest: Should see no \"E\" logs from AAudio.\nTest: Should see no addresses from AAudio.\nChange-Id: I1d4e0bc349095f818fad52603d2bb8e7317d3681\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": "68646ba64107a19ac0d1af781ddd0b1edd2ed57a",
      "tree": "ac3003975099bef26b63302164468b766c6c9aad",
      "parents": [
        "36b17553b2c3aad4d8f600edd2e82f9a583ee05a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Mar 20 13:26:49 2019 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Mar 22 17:21:33 2019 -0700"
      },
      "message": "Add aaudio APC opt-out\n\nThe opt-out was only present in the java API but not on the native ones.\n\nTest: atest test_attributes\nChange-Id: I1b84f1a428508e00de65e615b59405b9ee2ba009\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "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": "ef4b27d1d1123b452316f722a0eacc282d3fa94a",
      "tree": "a0acf7f1501bebe58caa1fb15fc118072b71a305",
      "parents": [
        "dd44e3c5f2d199589c040a422b3e343c796bd362",
        "538d53267bee085e08d489546bde620520b5b188"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Dec 13 16:23:10 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 13 16:23:10 2018 -0800"
      },
      "message": "Merge \"Fix performance-for-range-copy warnings\" am: 1ce37f1de3 am: c9584831bc\nam: 538d53267b\n\nChange-Id: I15dfaa7eb997c7caf497b488384477952513cef7\n"
    },
    {
      "commit": "3ef324d11cc4b6f84c147998fcf02c3a528fc2b8",
      "tree": "9c31c781e4172fb511af7552838c6a63b0f04ac9",
      "parents": [
        "14c577fac81b8fdcc75e4bf9243f16bd624ba58b"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 11:48:12 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 11:48:12 2018 -0800"
      },
      "message": "Fix performance-for-range-copy warnings\n\nBug: 30413223\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,performance*\nChange-Id: Ia63c695575d2602ff7e67db874d423b99f4daeef\n"
    },
    {
      "commit": "a3901e95412eacedb5682eb4cda9d63d3ef9f734",
      "tree": "cbd706244c858d132efa8dd103be42b855ce4452",
      "parents": [
        "1268b28c5c65691532d3ffb503a199c677c801b9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Oct 08 13:54:38 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Dec 03 15:46:11 2018 -0800"
      },
      "message": "aaudio: reduce log spam\n\nRemove logging that is redundant or no longer needed.\n\nTest: write_sine_callback -pl\nTest: write_sine_callback -pl -r44100\nChange-Id: I9004d32509757847764b9533c5cda743c6bd81a0\n"
    },
    {
      "commit": "e816ba20c5e8bb1e5bd8cb9ee150445ae45dd5be",
      "tree": "1a8afb00bfab3bae82f0ed35aa59255be2224851",
      "parents": [
        "60109b6bf5fe16002da767bb92b7c7cbfd6a1790",
        "8f02e2d647a53bc24cc5a2341e625fedbd58a33d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Nov 28 22:34:23 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 28 22:34:23 2018 +0000"
      },
      "message": "Merge \"aaudio: fix race condition in timestamp path\""
    },
    {
      "commit": "156dc25a705c77d50f1c6a3e422a8ceea37ffa13",
      "tree": "1f36e907f21d61ee476a95e681e9d823b6460b15",
      "parents": [
        "e4bd729a5dc10abb9619e427e90a8fe1f493db42",
        "5758fc4785d6cf0f84cad0174379012292684e63"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Oct 23 10:09:06 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 23 10:09:06 2018 -0700"
      },
      "message": "Merge \"AAudio: Change dumpsys denial to Denial\" am: 4cc8f84d26 am: e4814339b2\nam: 5758fc4785\n\nChange-Id: I21b5ebf6d2d781f926b39e14213801dfdf332aba\n"
    },
    {
      "commit": "6357b5f0788d54058cb740c8be96eb87b3fd2dba",
      "tree": "f9937c171a8e022681dbb74d10401805dc42f699",
      "parents": [
        "efd99ec863f5a69f20dfacea3f6f4835962c5362"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 22 19:47:04 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 22 19:54:14 2018 -0700"
      },
      "message": "AAudio: Change dumpsys denial to Denial\n\nSee android.security.cts.ServicePermissionsTest#testDumpProtected\n\nTest: compile\nBug: 117909592\nChange-Id: Ie9972e37b8c589630e24373945ee8eaa4216b542\n"
    },
    {
      "commit": "8f02e2d647a53bc24cc5a2341e625fedbd58a33d",
      "tree": "d3d7603c7e8332f151ad95ad0ea5e060a18da687",
      "parents": [
        "efd99ec863f5a69f20dfacea3f6f4835962c5362"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 11 13:30:56 2018 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 22 11:45:13 2018 -0700"
      },
      "message": "aaudio: fix race condition in timestamp path\n\nThere was a potential race between setting the first timestamp\nand reading the first timestamp that could cause the timestamp service\nthread to exit. This would cause the client to not get any timestamps.\nThen the timing model would not advance and the stream would stall.\nThis could result in read() or write() returning zero,\nor a TIMEOUT error.\n\nThis was rare except for some devices that had different\ntiming in the HAL.\n\nBug: 68271891\nBug: 117557847\nTest: adb shell write_sine_callback -pl -m2 -n2 -s2 -c2 -l100\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Ib0974a576aaa17ff8de40899e60ed56015027bd7\n"
    },
    {
      "commit": "56d34f252ad803873fa4798b4cd0f4c6d28d2670",
      "tree": "9967806e97967f0ce9f06cabcb97ca0d2eea75d5",
      "parents": [
        "4cc873cc1dcf9e69572c2e52b68af1aebea0ad98"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 11 13:30:56 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Oct 11 13:38:12 2018 -0700"
      },
      "message": "aaudio: fix race condition in timestamp path\n\nThere was a potential race between setting the first timestamp\nand reading the first timestamp that could cause the timestamp service\nthread to exit. This would cause the client to not get any timestamps.\nThen the timing model would not advance and the stream would stall.\nThis could result in read() or write() returning zero,\nor a TIMEOUT error.\n\nThis was rare except for some devices that had different\ntiming in the HAL.\n\nBug: 68271891\nBug: 117557847\nTest: adb shell write_sine_callback -pl -m2 -n2 -s2 -c2 -l100\nTest: atest CtsNativeMediaAAudioTestCases\nChange-Id: Ib0974a576aaa17ff8de40899e60ed56015027bd7\n"
    },
    {
      "commit": "0127c1be07d63e046e136126cd465c3fa8977768",
      "tree": "4eb611ec5d010becd3583f93c640cc9468acb3b3",
      "parents": [
        "fdfae2898f0785f19de198ed00488e03bf52bca9"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Mar 29 13:48:06 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Sep 07 11:08:24 2018 -0700"
      },
      "message": "aaudio: use new flowgraph to simplify processing\n\nConstruct a flowgraph based on the source and destination\nformat and channelCount. This is groundwork for supporting 24-bit\nPCM formats.\n\nAlso cleaned up handling of device related format.\n\nThis CL removes more code than it adds.\n\nBug: 65067568\nTest: write_sine_callback.cpp -pl\nTest: write_sine_callback.cpp -pl -x\nTest: input_monitor -pl\nTest: input_monitor -pl -x\nChange-Id: Ia155bff0164912011d09b61b54f983ccf4490bd1\n"
    },
    {
      "commit": "15f97c996f29c780f52fe3504fabd08dbde066ba",
      "tree": "8998772c04ba3863be56cc2c1c98c56f688dbf48",
      "parents": [
        "0d97cec0533f47237b16b294fd92a827f2ebdc6f"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Sep 04 14:06:27 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Sep 05 09:25:11 2018 -0700"
      },
      "message": "aaudio: set to SHARED when EXCLUSIVE fails\n\nSHARED streams and endpoints were being created with sharing mode\nset to EXCLUSIVE. This was confusing the close() code and caused a hang.\n\nNow we create a modified Request object with the sharing mode set\ncorrectly.\n\nBug: 112709847\nTest: Hack AAudioServiceEndpointMMAP so isBufferShareable is false.\nTest: \u0027adb shell write_sine_callback -pl -x -s2\u0027 should not hang.\nChange-Id: I7a5c8260beaffdd706f34d35ef00a61b072adb1d\n"
    },
    {
      "commit": "882c520fd82ef5ce1420bb3eb6fc4bcbb205cb87",
      "tree": "ab17c80d971269c1f8e16b6b8011d37863b0a8e6",
      "parents": [
        "a11eb695cac183c629cab536d101e6667343992b"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Apr 23 10:32:45 2018 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Aug 23 11:59:56 2018 -0700"
      },
      "message": "aaudio: cleanup FIFO\n\nRemove unused methods and fields.\nBetter code format and alignment.\nUse unique_ptr for mFifo.\nRemove getFifoController() method that exposed pointer.\nUpdates tests and calling code as needed.\n\nTest: test_atomic_fifo.cpp\nChange-Id: I1ea66beaadeb74083307835858b757e4753affda\n"
    }
  ],
  "next": "0b21bdd6bcc8d3177c171225ade60315750c2e7e"
}
