)]}'
{
  "log": [
    {
      "commit": "0daad99906dee7e846863f036d6cf705f1b83665",
      "tree": "c8ad1b681a15ddbdccc69f01f11911eec7c26cf8",
      "parents": [
        "789be02e4c06c14edce66541b88584ad05184b6e",
        "abe2569e0429cd90c4189b460fc377cfbec7daed"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 09 10:21:45 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Dec 09 10:21:45 2020 +0000"
      },
      "message": "Merge \"IAudioPolicyService, IAudioFlinger: check C structs on server side\" into rvc-qpr-dev am: abe2569e04\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/13163297\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: I1cac4bd1f8d04eb7282ca0ff9b06ad66ead96c5a\n"
    },
    {
      "commit": "2a45115039163601f30e9b87b9ea8f1674713dce",
      "tree": "832db337f9a0ae13d92e58bdafbebb2cbbbe1628",
      "parents": [
        "fff9c8aa87a7c03e063cf6adeb4c63b895b6d145"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 07 13:48:21 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 08 21:52:16 2020 +0100"
      },
      "message": "IAudioPolicyService, IAudioFlinger: check C structs on server side\n\nAdd more checks on C structs received on server side to avoid string\noverflows in particular.\nMove sanitization helpers into a specific class in media helper library.\n\nBug: 169572641\nTest: audio smoke tests\nChange-Id: I89cb840230c85dcdddd5b128f626bb4fe303832a\nMerged-In: I89cb840230c85dcdddd5b128f626bb4fe303832a\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": "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": "639d96ca2b8e5fbd5b034e19d5833faa58b363db",
      "tree": "34c864789f77016679f9aacf05a37c2212383ed4",
      "parents": [
        "3fd4dee8960cd6bccbb21227d43dfef839d33875"
      ],
      "author": {
        "name": "Kensuke Miyagi",
        "email": "kemiyagi@google.com",
        "time": "Mon Jul 27 19:31:34 2020 +0000"
      },
      "committer": {
        "name": "Kensuke Miyagi",
        "email": "kemiyagi@google.com",
        "time": "Tue Jul 28 00:54:54 2020 +0000"
      },
      "message": "Update language to comply with Android’s inclusive language guidance\n\nSee https://source.android.com/setup/contribute/respectful-code for reference\n\n\nBUG\u003d161896447\n\nChange-Id: I2186bc432b37edb66de431bfc3b961dfcf98f148\n"
    },
    {
      "commit": "2fe0acd07f9fb2d0eefbe0fa9d25fbaf0f672596",
      "tree": "10a5a6ceaee79473c53b3dacb08b58172bcd14f2",
      "parents": [
        "90334d0f03f4bee709969433898025fc16863f01"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 13 14:30:46 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 16 13:49:20 2020 -0700"
      },
      "message": "audioflinger: add effect creation probe mode\n\nAdd an argument to IAudioFlinger::createEffect() API to\nask AudioFlinger to just run the pre flight checks but not\ncreate the actual audio effect instance and allocate resources.\nThis is the basis of an API for apps to query if a given\neffect can be created without having to allocate the resources\nand risk an exception when calling the constructor.\n\nBug: 150699608\nTest: CTS and GTS Tests for audio effects\nChange-Id: Ibdda22fd945c88c33e3c7342a7a5ed3e02d399ac\n"
    },
    {
      "commit": "9d4836695db752d6c39582c07b87663c1f9dcc93",
      "tree": "984604d5245b2aeb8fe5df54a46c2f3a7afda9a0",
      "parents": [
        "a072553e09f2477e364d11e4b22cf38369c8f411",
        "137568eea25e8dc2be7c9b30dda2220dd7afdd42"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Jan 15 15:57:04 2020 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Jan 15 15:57:04 2020 -0800"
      },
      "message": "DO NOT MERGE - Merge qt-qpr1-dev-plus-aosp-without-vendor (6129114) into stage-aosp-master\n\nBug: 146167222\nChange-Id: Ia15908f1dc4a1937cb1b8025194d1239cc9bd8b3\n"
    },
    {
      "commit": "8b0bfd91473eea4c33946347d98fb356eac15867",
      "tree": "62482792139dcb6c21a70f8bf2656af6c944137f",
      "parents": [
        "255f610f5ab71b5e36d93744dfe058daf6c96041"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Dec 23 13:11:11 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 14 20:08:09 2020 -0800"
      },
      "message": "AudioFlinger: Propagate uid info for AudioSession references\n\nEnables better tracking of permission.\nImproves dumpsys of global AudioSession references.\n\nTest: Clarity effects\nTest: adb shell dumpsys media.audio_flinger\nBug: 129355845\nChange-Id: Ia0226c7047bb38b74e8b0cb67f12ec581b496631\n"
    },
    {
      "commit": "fefebb5c9692a57aade8955996d7dee7748eb1ec",
      "tree": "b06efaa90afcd4a816bd2e438ba08a615695323e",
      "parents": [
        "a20c4e9c9239d751d688d9a9fe5d92a8c613dd13"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 13 12:45:28 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:11:43 2020 -0800"
      },
      "message": "AudioEffect: add device descriptor to AudioEffect constructor\n\nAdd the possibility to specify a target audio device when\ncreating an audio effect by passing its type and address to\nAudioEffect constructor.\nWhen doing so, the session ID must be AUDIO_SESSION_DEVICE.\n\nBug: 136294538\nTest: make\nChange-Id: I2a2eba340d3c2537285c091e9a53f305ff161a2b\nMerged-In: I2a2eba340d3c2537285c091e9a53f305ff161a2b\n"
    },
    {
      "commit": "dc857dc042bc8f111449faffe9a10aed34bfa24c",
      "tree": "7f6ba26f72cdd73ac22ab593d143cd122921e6a0",
      "parents": [
        "77b8c802dbf3d63e19ff44e7bb2fe47b37e8d6b2",
        "573c30d84c4f7174094cf39fac6c3c2f2770e5b4"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Dec 20 20:38:30 2019 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Dec 20 20:38:30 2019 +0000"
      },
      "message": "Merge \"AudioFlinger: Clear effect_uuid_t in case of short read\" into qt-qpr1-dev am: 06e89d68d6 am: 573c30d84c\n\nChange-Id: Id099fe294b572411ea38c0f0a3d2e043b7df5ac0\n"
    },
    {
      "commit": "18824a94a8114661456a103465b291fed336ab39",
      "tree": "2a38dd71236c0f41d50e69ebc38d9dbbf0934a74",
      "parents": [
        "9ed54cdf4d8970bdeb88e4488dabb56e1d6c79b7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 21 14:45:41 2019 -0700"
      },
      "committer": {
        "name": "Bryan Ferris",
        "email": "bferris@google.com",
        "time": "Fri Dec 20 11:16:25 2019 -0800"
      },
      "message": "AudioFlinger: Clear effect_uuid_t in case of short read\n\nBug: 139417189\nTest: native test, see bug\nMerged-In: I9ef0e58e2e73089eb9a347d5357e040ac69bbdd1\nChange-Id: I9ef0e58e2e73089eb9a347d5357e040ac69bbdd1\n"
    },
    {
      "commit": "94876034876afd6f642dd1a0ad7c60aee05504d9",
      "tree": "f695fedbfa6e930d034dfdb0f61e485b5292a67c",
      "parents": [
        "b7a56c52e001d2e361140b07ee1baad4c56e5b2c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 13 12:45:28 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 09 09:46:17 2019 -0800"
      },
      "message": "AudioEffect: add device descriptor to AudioEffect constructor\n\nAdd the possibility to specify a target audio device when\ncreating an audio effect by passing its type and address to\nAudioEffect constructor.\nWhen doing so, the session ID must be AUDIO_SESSION_DEVICE.\n\nBug: 136294538\nTest: make\nChange-Id: I2a2eba340d3c2537285c091e9a53f305ff161a2b\n"
    },
    {
      "commit": "b680e955f474a2f81ed35383da67209bcbdd7d10",
      "tree": "8fd48d3bca98f5cc5d96415255711817fc209553",
      "parents": [
        "9e1e25dd418773ad5e574441962dcc771d3ec2a3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 15:40:33 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Dec 05 13:00:07 2019 -0800"
      },
      "message": "media utils: dump audio HAL service before restarting audioserver\n\nAdd request to create tombstones of audio HAL servers before restarting\naudioserver process when the watchdog triggers.\n\nAdd audio device factory HAL interface API to retrieve HAL process pids when\npossible (on debug builds).\n\nAdd AudioFlinger service API to set audio HAL process pids from\nJAVA AudioService.\n\nBug: 141528385\nTest: Force watchdog and verify tombstone creation\nChange-Id: I68c1e8fb4db23e5952ad0c93d7d0b9d121b8ec18\nMerged-In: I68c1e8fb4db23e5952ad0c93d7d0b9d121b8ec18\n"
    },
    {
      "commit": "c010683e081f48eb72e21cbcf0458efc17184e6b",
      "tree": "74e8898a4399b0b2fb3693379fcf80b5be1c9199",
      "parents": [
        "8d7522888db87e9533b286431f59c7e0b804a514"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 24 14:58:31 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 03 17:42:00 2019 -0800"
      },
      "message": "Refactor opening output interface between AF and AP.\n\nRefactor interface between audio flinger and audio policy. Use device\ndescriptor instead of audio device type and address. DeviceDescriptor\ncan contain more information that may be useful when opening an output\nstream.\nIn audio policy, if multiple audio devices are passed in when opening\nan output stream, one device is extracted using the same strategy as\nwhen selecting a device for volume application. When starting source,\naudio policy manager will call audio flinger to create audio patch. In\nthat case, multiple devices will still be patched to the output stream.\n\nTest: atest AudioTrackTest AudioPlaybackCaptureTest\nTest: atest audiopolicy_tests, audio smoke test\nChange-Id: I46dc2da621614f8716c6c73cf807fe7d2d672cda\nMerged-In: I46dc2da621614f8716c6c73cf807fe7d2d672cda\n"
    },
    {
      "commit": "42896a0774caae74ea8c982417ecbefb21913bc8",
      "tree": "6e352631b91856d118f052b8c180085837e4f07a",
      "parents": [
        "484d6119d3ca9140d415dc1841d4c0c500d76a20"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 15:40:33 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 08 15:26:09 2019 -0800"
      },
      "message": "media utils: dump audio HAL service before restarting audioserver\n\nAdd request to create tombstones of audio HAL servers before restarting\naudioserver process when the watchdog triggers.\n\nAdd audio device factory HAL interface API to retrieve HAL process pids when\npossible (on debug builds).\n\nAdd AudioFlinger service API to set audio HAL process pids from\nJAVA AudioService.\n\nBug: 141528385\nTest: Force watchdog and verify tombstone creation\nChange-Id: I68c1e8fb4db23e5952ad0c93d7d0b9d121b8ec18\n"
    },
    {
      "commit": "4381040f77c2907c9a0ba27ece2e00241daadf0e",
      "tree": "b559f2cf74926949bd9f846c627ede38b734158f",
      "parents": [
        "c6fe9c424669d640d8bbe0fc7e130a34bab0b4bd"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 24 14:58:31 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Oct 28 10:38:13 2019 -0700"
      },
      "message": "Refactor opening output interface between AF and AP.\n\nRefactor interface between audio flinger and audio policy. Use device\ndescriptor instead of audio device type and address. DeviceDescriptor\ncan contain more information that may be useful when opening an output\nstream.\nIn audio policy, if multiple audio devices are passed in when opening\nan output stream, one device is extracted using the same strategy as\nwhen selecting a device for volume application. When starting source,\naudio policy manager will call audio flinger to create audio patch. In\nthat case, multiple devices will still be patched to the output stream.\n\nTest: atest AudioTrackTest AudioPlaybackCaptureTest\nTest: atest audiopolicy_tests, audio smoke test\nChange-Id: I46dc2da621614f8716c6c73cf807fe7d2d672cda\n"
    },
    {
      "commit": "3230ed8235a39adef82d7c3873e6a87007799ff8",
      "tree": "158042769963aa698a8fbd240d2abfc352220c3d",
      "parents": [
        "6dc75fb0cde69661a1d2d915c1520b251ebdfbbb"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Sep 26 11:20:54 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Sep 27 12:12:46 2019 -0700"
      },
      "message": "Remove symlinks from include dir\n\nTest: build\n\nChange-Id: Ibe4eee4fe49b7884e6d720e626d88125bbee0eb2\nMerged-In: Ibe4eee4fe49b7884e6d720e626d88125bbee0eb2\n"
    },
    {
      "commit": "cf90b4931734e42c6092318991f213b76d7e849e",
      "tree": "3c0c685cb75bbdc37172d24113f6c0dbcbf3dfb4",
      "parents": [
        "d2dc18b063c548d9646dd1127fea97ccebdba079"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Sep 26 11:20:54 2019 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Sep 27 09:02:30 2019 -0700"
      },
      "message": "Remove symlinks from include dir\n\nTest: build\n\nChange-Id: Ibe4eee4fe49b7884e6d720e626d88125bbee0eb2\n"
    },
    {
      "commit": "5ada82ee2511a31c6846c67e455ffb2c9989b623",
      "tree": "38845fc352b781bb00cfe7bf56cf1cfc23c2af37",
      "parents": [
        "dba03231c2fb2c54c8a7b313786c7bc7d3471908"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 29 17:53:54 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 30 18:07:18 2019 -0700"
      },
      "message": "audio policy: allow silencing capture per port\n\nAdd the possibility to silence a particular AudioRecord\nclient rather than silencing all clients sharing the same UID.\n\nTest: AudioRecordTest#testRecordNoDataForIdleUids\n\nChange-Id: Ic472045cd45c7222ca3a88ccf131435fd1e26475\n"
    },
    {
      "commit": "f85d129bf9365d46991cb5348d04c2a1c8d20f6f",
      "tree": "c451ee6c68d336aeb11acf8fb9b5f68ce5f36b53",
      "parents": [
        "34bbfc447ad5c3b615acf9e924a97b2a3d678ab7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 21 14:45:41 2019 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 21 14:45:41 2019 -0700"
      },
      "message": "AudioFlinger: Clear effect_uuid_t in case of short read\n\nBug: 139417189\nTest: native test, see bug\nChange-Id: I9ef0e58e2e73089eb9a347d5357e040ac69bbdd1\n"
    },
    {
      "commit": "b20cf7db9e669169bbae5f0da97018a866c3f634",
      "tree": "96e88e1850e1fb27fcc0bad53cc575e837d86c60",
      "parents": [
        "aceea8bddd0324df4414673bc39a3f38fe16e8a1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 05 19:37:34 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 19:27:20 2019 -0700"
      },
      "message": "audio policy: concurrent capture effects\n\nAdd pre processing effect management for concurrent capture scenarii.\nWhen several clients on the same input stream have enabled audio effects,\nonly the effects attached to the top priotity client are active.\nOther effects are suspended.\n\nAdd AudioFlinger API to suspend/restore audio effects build on top\nof exisiting internal effect suspend mechanism.\n\nRecordThread now supports more than one effect chain.\n\nAOSP pre processing implementation supports more than one effect session\nper input.\n\nRefactor AudioPolicyManager::closeAllInputs() to call closeInput() on\nall inputs instead of partially duplicated code.\n\nBug: 128419018\nTest: make\nChange-Id: I685286da4c2905a8894a4354679f9787b1400621\n"
    },
    {
      "commit": "3fae037db39ff89707c3a58ef1419229a00ad71d",
      "tree": "33087aa031e45fdc65add4ffaaf74e6a7872cf0f",
      "parents": [
        "48f59ed61b902f0e6cb7811bd8ee5fa60ab63abe"
      ],
      "author": {
        "name": "Richard Folke Tullberg",
        "email": "richardfolke.tullberg@sony.com",
        "time": "Fri Jan 13 09:04:25 2017 +0100"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jan 28 16:21:52 2019 -0800"
      },
      "message": "Add master audio balance\n\nTest: Change Balance through Settings, play audio\nBug: 28390736\nCo-author: Ed Savage-Jones \u003cedward.savage-jones@sony.com\u003e\nChange-Id: I0169b436ccbaa5628584d9f4954dd7c76d021aae\n"
    },
    {
      "commit": "2a5675885641ac73b7e08e582f7889351c50fa4f",
      "tree": "b6f032fa829d2a188b723df4efc0e5c08f5cd2da",
      "parents": [
        "707225ae85ab7c84edefb480fe03445866f60739",
        "b2fe78f72435f475fad855d20c1ef0309e392b8f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 03 02:35:50 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 03 02:35:50 2018 +0000"
      },
      "message": "Merge \"IAudioFlinger: fix early return in createEffect\""
    },
    {
      "commit": "b2fe78f72435f475fad855d20c1ef0309e392b8f",
      "tree": "95ce3c80168218f1e0c18eda061980329d953dde",
      "parents": [
        "c74e507ea7742da83d97768b332b17dcea60cfc0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 02 17:56:11 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 02 17:56:11 2018 -0700"
      },
      "message": "IAudioFlinger: fix early return in createEffect\n\nBug: 112161565\nTest: make\nChange-Id: I7056ed1a3454c7e0fbe692029f75fe5b50c4c42f\n"
    },
    {
      "commit": "2046ec756ee59acc4cfa1d52eb97aaa84efc9754",
      "tree": "352eca0b14dc5e4a368f0475df975ad431515d9d",
      "parents": [
        "965737edc28bd76f6424f9ff4c1f0315f28a0434"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Apr 24 14:00:55 2018 -0700"
      },
      "committer": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Jul 31 18:01:12 2018 -0700"
      },
      "message": "Update getEffectDescriptors() to include type\n\nAllows getting effect descriptors by type or uuid,\nnot just by uuid.\n\nBug: 78528249\nTest: Builds. Manually tested that an app playing audio with an effect works.\nChange-Id: I9d339a7d6d81161065e1adaf427dd2d3430436c2\n"
    },
    {
      "commit": "39b09b52e313e89c3493927b379d2e256bf04bd9",
      "tree": "04e64f327c09b0d3344884d59c35ff520c751e3e",
      "parents": [
        "cd56a1c2a0adcd21aad3a64c761aa3562d915be1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 29 12:24:40 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 10 09:02:26 2018 -0700"
      },
      "message": "audioserver: log system event for binder timeouts\n\nAdd event logging in case of audioserver watchdog to help\ncollect statistics.\n\nTest: make. Simulate watchdog and check events in logcat.\n\nChange-Id: I4716852c77d56703ad5f3dfc2500f598a2b80a12\n"
    },
    {
      "commit": "4ef19fa450e8b523741a22fabee8f62691abec37",
      "tree": "5d0eaaf73cebe029d1d8dd935d5c6fddb12ee70f",
      "parents": [
        "ab7ef300b74904bce6c5c810d9e5679abfa582e6"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 15 19:35:29 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 17 18:11:55 2018 -0700"
      },
      "message": "Update audio permission checking\n\nChange captureAudioOutputAllowed to check client pid.\n\nCheck calling uid with AID_AUDIOSERVER instead of calling pid with\nown pid. This is consistent, and works if AudioFlinger and\nAudioPolicyManager exist as different processes.\n\nRemove getpid_cached since getpid() is very fast. This removes\nany initialization issues.\n\nReplace getuid() with AID_AUDIOSERVER to remove ambiguity of\nmultiple native audio services for multiple users. Only\none exists regardless of users.\n\nDo not use multiuser UID checks for certain native services\nthat do not spawn for multiple users to prevent accidently exposure.\n\nMove permission checks to use ServiceUtilities for control and\nconsistency.\n\nRename isTrustedCallingUid to isAudioServerOrMediaServerUid\nso that permission check is explicitly known to caller.\n\nUpdate MediaLogService to use ServiceUtilities.\n\nTest: Basic sanity\nTest: AudioTrackTest, AudioRecordTest, SoundPool, SoundTrigger\nBug: 79485140\nChange-Id: Ib8ccb36929a9b4806c01626f32fa023a046d6020\n"
    },
    {
      "commit": "ef92bff8d2e8f6ec9a526fdb4fcfead0146a10f3",
      "tree": "85d8dac27ec4d7fd456743485085c6ff319b6676",
      "parents": [
        "64da22285776f07a775afd45f9fc36cea1aa05e3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 26 10:44:50 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 26 10:59:56 2018 -0700"
      },
      "message": "audioserver: return binder call permission error in reply\n\nWhen a transaction to IAudioFlinger or IAudioPolicyService is detected\nfrom an unauthorized source, return the INVALID_OPERATION status in\nreply Parcel and not as transaction status.\n\nAlso removed check on SET_RINGER_MODE as it is not implemented on client\nside and allow SET_MODE from system AIDs instead of just audioserver.\n\nBug: 78615605\nTest: manual audio smoke tests.\nChange-Id: Ia4fdfc22f049da69aaa9d45075e1c502eecf4521\n"
    },
    {
      "commit": "f1047e87767be1acd2c32f4d36028d1d0014f4c0",
      "tree": "4affc2ed3ee3f81e94f90dd4d3a012afa0ee364e",
      "parents": [
        "554e08c6b00b2a57348f4545d450915a9e8c870a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 19:18:20 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 17 09:45:32 2018 -0700"
      },
      "message": "audioflinger: filter out reserved keys from setParameters()\n\nOnly allow setParameters() for reserved keys when received from\naudioserver UID. For instance, keys used to control routing or audio\nstream configuration are reserved for use by audio policy manager.\n\nAlso use multiuser_get_app_id() instead of duplicated code to\nextract application ID from UID.\n\nBug: 77869640\nTest: manual audio smoke tests.\nChange-Id: I88852e8fddf7f705e4a084fc02d9ced1f4b0de92\n"
    },
    {
      "commit": "83028d5920884992b16f34aca167cd6c27734d3c",
      "tree": "84fcfdd9dbb1186a825a77270a69819c087ade7a",
      "parents": [
        "103f5a6268e820daa6a47c560e10a25514dd2ce1",
        "9ff780e58ff96ff98acaae4166bb218880bf9e73"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 30 16:59:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 30 16:59:41 2018 +0000"
      },
      "message": "Merge \"Support query microphones information.\" into pi-dev"
    },
    {
      "commit": "9ff780e58ff96ff98acaae4166bb218880bf9e73",
      "tree": "b54bf56b7f6ebc5950064d2908004abfe35d7162",
      "parents": [
        "2ca700737c14edc9141af170ee278853fd99fa87"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Mar 19 18:19:52 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Mar 28 10:17:36 2018 -0700"
      },
      "message": "Support query microphones information.\n\nGet list of all/currently active microphones from hal.\n\nBug: 64038649\nTest: Manual Testing and Cts test\nChange-Id: Id39cae38ba040f9bc91571e713487f87c2eb67b0\n"
    },
    {
      "commit": "96c7eed596077ff84e75b7b1c6f20c3a29219bd1",
      "tree": "cf06852ef755e4d7dccfa81a7d3d4909d6159c60",
      "parents": [
        "bebc764c6b3e90024a56c9af4517a1a68713f3e7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 17:57:01 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 27 14:49:16 2018 +0000"
      },
      "message": "audioserver: fix UID checks for multi user\n\nFix UID checks in audioserver to take into account multi user UIDs\nwhere the top part above AID_USER_OFFSET contains the user number.\n\nBug: 76439650\nTest: manual audio smoke tests.\nChange-Id: I6dbd616021bcb2639c7b7369000ce911c7e7e030\n"
    },
    {
      "commit": "3528c9330f481f236f16753cb0846c7d6ddcc7ee",
      "tree": "3fb6f04c3842c26e81a68fb847596aa237b713d9",
      "parents": [
        "12cc6e7a4162ea4137f9082a3e0fea551b21aae3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 23 17:17:22 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 22 10:02:49 2018 -0700"
      },
      "message": "audio services: monitor execution time for binder commands\n\nAdd a mechanism to monitor execution time of incoming binder\ncalls to audio flinger and audio policy and cause native audioserver\nrestart in case of timeout.\n\nBug: 69250055\nTest: manual. audio smoke tests\nChange-Id: I01b5bf2599fb2a4cd265cbbe8d4e34b2b059aaf4\n"
    },
    {
      "commit": "34c238eaf4af84787648c714289de9dcfa1668d3",
      "tree": "a48681eb6b1e2dcc17d829e2e049112277b22ad0",
      "parents": [
        "d54bacf09c2384987ad9186de67c4225db1eed1d",
        "4980df29f61d5fad95e17ca1d1969f6ca4c1f296"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 31 03:20:08 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 31 03:20:08 2018 +0000"
      },
      "message": "Merge \"audio: filter reserved binder calls\""
    },
    {
      "commit": "4980df29f61d5fad95e17ca1d1969f6ca4c1f296",
      "tree": "c7e38eb5c4c223ac0a9b08e7636adf71de7a9c62",
      "parents": [
        "5f07c65af5356a4a95410804ce19fc017d6478f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 26 18:04:09 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 29 17:28:43 2018 -0800"
      },
      "message": "audio: filter reserved binder calls\n\nBlock incoming binder calls to audio flinger and audio policy service\nfor sensitive functions if they are not coming from a system UID.\n\nBug: 72278478\nTest: audio smoke tests. CTS tests for AudioTrack and AudioRecord\nChange-Id: I78e02efffe135d5450ced125e51e2084719ca03d\n"
    },
    {
      "commit": "46a76fa5ffb88dbde2c67335dbc5cf20b75b10b6",
      "tree": "7215e85bae943107de3bf07537c28c98216f5690",
      "parents": [
        "6e075b43b0ba324a97fc0f89ef65196ed25be671"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 05 10:18:21 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 26 17:16:16 2018 -0800"
      },
      "message": "Add support for getting all available microphones characteristics.\n\nAdd MicrophoneInfo class in native side and native logic for supporting\nquery all available microphones.\n\nBug: 64038649\nTest: Run test and check the print log.\nChange-Id: Ic0a9cce55a1265a66ba08fe81b56b56cb88ba42f\n"
    },
    {
      "commit": "03570a65a46bd0d577aa4c860c4f32f4abf79c7c",
      "tree": "80f3fe537f1edeb95bd37a5a66090ce3b4f1cd1e",
      "parents": [
        "70068e8e49f3467488550d88d6130f9e00bb0624",
        "6f248bb57a6a0febe8fc0f253acc86289237ace8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 24 20:28:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 20:28:46 2018 +0000"
      },
      "message": "Merge \"AudioFlinger: Allocate client memory based on total device memory\""
    },
    {
      "commit": "6f248bb57a6a0febe8fc0f253acc86289237ace8",
      "tree": "5dcc5fe0729c85f7ef39ac298906acea444b2ae2",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 23 14:04:37 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 23 22:12:12 2018 -0800"
      },
      "message": "AudioFlinger: Allocate client memory based on total device memory\n\nTest: Debug logging\nBug: 64161002\nChange-Id: I7156748e5678c3232d1f1672439d11aecf3f458b\n"
    },
    {
      "commit": "f4ddfefc8ba59a8486d91826154cc9447821409e",
      "tree": "b24bb43846003ef5523f0d470e49389086138679",
      "parents": [
        "d6be64a3f22be3eceb0d6209c88dcad573c08191"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 16 07:37:58 2018 -0800"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jan 18 00:17:52 2018 -0800"
      },
      "message": "Don\u0027t record audio if UID is idle - media framework\n\nTo protect user\u0027s privacy if a UID is in an idle state we allow\nrecording but report silence (all zeros in the byte array) and once\nthe process goes in an active state we report the real mic data.\nThis avoids the race between the app being notified aboout its\nlifecycle and the audio system being notified about the state\nof a UID.\n\nTest: Added - AudioRecordTest#testRecordNoDataForIdleUids\n      Passing - cts-tradefed run cts-dev -m CtsMediaTestCases\n                    -t android.media.cts.AudioRecordTest\n\nbug:63938985\n\nChange-Id: I1442a9dda1553e9ea7a4a654c50555ac1ec06aa0\n"
    },
    {
      "commit": "b1cc36b5d52de7cb3d78426d41dee87f25d7164a",
      "tree": "aa88693bc980e3209f20133052fd33e059af1334",
      "parents": [
        "f14db3c3ebc1ea29b3eb5b7e9b944cabcb5f83ff"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 11 12:14:16 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 14:29:28 2017 -0800"
      },
      "message": "Revert \"Revert \"restrict binder transactions to audioserver\"\"\n\nThis reverts commit 009c1e37d07936178b59346ee8f7cb19484644b6.\n\nBug: 70388312\nTest: AudioRecord CTS, Audio smoke tests\nChange-Id: I263aa1ed7ef832d593bc0fb02000d986ad1a3f69\n"
    },
    {
      "commit": "f14db3c3ebc1ea29b3eb5b7e9b944cabcb5f83ff",
      "tree": "ebe89d037006cc16ed8a9284563a475b6eee3348",
      "parents": [
        "ea5523d88c6dc9662621db5fc62bf50eff0fe4ba"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 14:20:36 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 14:28:41 2017 -0800"
      },
      "message": "Revert \"Revert \"refactor AudioRecord and AudioFlinger openRecord()\"\"\n\nThis reverts commit 0aa3c6eba07f987fe84b5fa450274a8e730971e3.\n\nBug: 70388312\nTest: AudioRecord CTS, Audio smoke tests\nChange-Id: I45394bccf82b922aa2b68fee3e02afc280f6729c\n"
    },
    {
      "commit": "3700e162a5526ada762d081de34c9abdd085c5fe",
      "tree": "87a9cf3e64431512fc413fd5833e7cb02b2bfa2a",
      "parents": [
        "cef7b7a656aaa1d6e875a0f0ffdf6e31f17d1aa6",
        "009c1e37d07936178b59346ee8f7cb19484644b6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Dec 09 01:13:29 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 09 01:13:29 2017 +0000"
      },
      "message": "Merge \"Revert \"restrict binder transactions to audioserver\"\""
    },
    {
      "commit": "009c1e37d07936178b59346ee8f7cb19484644b6",
      "tree": "0d5dc5b43b751d7ae701cf8d1afee1835b8b1d45",
      "parents": [
        "4db794441a5ef63733e109213269bb6324387b36"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Dec 09 01:12:24 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Dec 09 01:12:24 2017 +0000"
      },
      "message": "Revert \"restrict binder transactions to audioserver\"\n\nThis reverts commit 4db794441a5ef63733e109213269bb6324387b36.\n\nChange-Id: Ifae4f59e4aed489bb22958674cf96d556b170d2d\n"
    },
    {
      "commit": "cef7b7a656aaa1d6e875a0f0ffdf6e31f17d1aa6",
      "tree": "800a56dafa0a81c311b839a71e1184912733c9a9",
      "parents": [
        "316c3176b8b839a8465d0c0dfa3878a14d3454c0",
        "0aa3c6eba07f987fe84b5fa450274a8e730971e3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 08 21:23:29 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 08 21:23:29 2017 +0000"
      },
      "message": "Merge \"Revert \"refactor AudioRecord and AudioFlinger openRecord()\"\""
    },
    {
      "commit": "0aa3c6eba07f987fe84b5fa450274a8e730971e3",
      "tree": "69c1c59218c8ae0e5165f71a392a8666c8b74ad6",
      "parents": [
        "3e1acc0c58b337dec4054d78c28b48b2e77e0784"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 18:13:22 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 08 18:18:50 2017 +0000"
      },
      "message": "Revert \"refactor AudioRecord and AudioFlinger openRecord()\"\n\nThis reverts commit 3e1acc0c58b337dec4054d78c28b48b2e77e0784.\n\nbug: 70388312\n\nChange-Id: I6782d6eceeece1bad998b02af26c0119da70a13d\n"
    },
    {
      "commit": "4db794441a5ef63733e109213269bb6324387b36",
      "tree": "b191586e568eb3c75505c5624e1e5ed3ab805c76",
      "parents": [
        "1b2de88f1659106dadf31794907f4fb66d8baec1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 14:11:40 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 06 11:13:56 2017 -0800"
      },
      "message": "restrict binder transactions to audioserver\n\nPrevent other processes from sending reserved binder transactions\nto IAudioFlinger and IAudioPolicyService.\n\nTest: Manual audio smoke tests\nTest: CTS: AudioRecordTest, AudioTrackTest, AudioEffectTest,\nAudioPreProcessingTest, AudioManagerTest\n\nChange-Id: I3643e03cb056236f5e88476d0a575cc28c220f2c\n"
    },
    {
      "commit": "3e1acc0c58b337dec4054d78c28b48b2e77e0784",
      "tree": "effae4bc8d462d03cb0bc1507ac0222ac47c90eb",
      "parents": [
        "eda72c27cab52c41016d8ce138438a2d59973231"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 01 16:07:37 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 17:33:35 2017 +0000"
      },
      "message": "refactor AudioRecord and AudioFlinger openRecord()\n\nRefactor the mechanism used by audio record tracks to query and\nattach to an input mixer/stream in audio flinger. This will:\n - reduce the number of binder transactions needed to create a record track\n - move sample rate, framecount and flags validations to audio server side\n - move audio session allocation to audio server side\n - prepare restriction of certain binder transactions to audioserver only\n\nAlso:\n - renamed openRecord() to createRecord() for consistency with AudioTrack\n - make AudioRecord mStatus update consistent when calling default\n contructor + set() or constructor with arguments\n - make AudioClient, CreateTrackXXX and  CreateRecordXXX classes derive\n from Parcelable\n - restore audio session ID validity check in AudioFlinger::createTrack()\n\nTest: CTS tests: AudioRecordTest, AudioRecordingConfigurationTest, AudioPreProcessingTest\nTest: manual test for capture use cases: camcorder, OK Google, VoIP calls\nChange-Id: I72edaa7ddef1da11c77df21e88378e3aa9012d58\n"
    },
    {
      "commit": "21da647792c0b78ab3943be0f32066015d5e8c34",
      "tree": "15ad0b64bf6eaabf24223d7fd376ef9ac00eb9cc",
      "parents": [
        "a4fa4760fa417473324e009b3f4117a2d539c486"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 09 16:29:26 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 16 11:33:12 2017 -0800"
      },
      "message": "refactor AudioTrack and AudioFlinger createTrack()\n\nRefactor the mechanism used by audio tracks to query and attach\nto an output mixer/stream in audio flinger. This will:\n- reduce the number of binder transactions needed to create a track\n- move sample rate, framecount and flags validations to audio server\nside\n- move audio session allocation to audio server side\n- prepare restriction of certain binder transactions to audioserver only\n\nTest: CTS tests for AudioTrack\n\nChange-Id: If4369aad6c080a56c0b42fbfcc97c8ade17a7439\n"
    },
    {
      "commit": "ff6900d8f991aac0b67b625f8a1d4d0461b4c50e",
      "tree": "1c81319f27784e4d611f7895d519b7754f869c26",
      "parents": [
        "ce10f65fb5b48d81798caa2c2914b016082b5089"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Aug 01 15:47:38 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Aug 09 09:15:59 2017 -0700"
      },
      "message": "Generate IAudioRecord with AIDL.\n\nUse AIDL to generate the IAudioRecord interface rather than using\na manually implemented interface.\n\nBug: 64223827\nTest: Ran the AudioNativeTest and CtsMediaTestCases CTS tests.\n\nChange-Id: Iade23c73253a97c358050bbd697ebe592b89a4c0\n"
    },
    {
      "commit": "084ad5a4e0af7f816e3279359ed49ae18f8c7d74",
      "tree": "d0ceb8d8ebeac5b823d97355ae3892c4bf4c408e",
      "parents": [
        "01e0ee177ff9f9e66b606c440fffeeb1509634d9",
        "9eae036a9822f9ba7d13b7d623310a15e23ba5f0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 27 16:32:17 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 27 16:32:18 2017 +0000"
      },
      "message": "Merge \"Use correct binder opcode names\""
    },
    {
      "commit": "25a9e5561a7f14e79b04f713a515a9464b9ea077",
      "tree": "ea551e17c5a57e4615e474feb60ebc8366f2e133",
      "parents": [
        "2efd6be69a00b55bd2c20f27a99039b5ac2c5ff3"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Apr 17 14:30:39 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Apr 18 02:31:04 2017 +0000"
      },
      "message": "Add libaudioclient_headers\n\nTest: works with BOARD_VNDK_VERSION :\u003d current\nBug: 33241851\nChange-Id: I31cf7e7cd89fe6e71d4e52f7682990146a12b2fb\n"
    },
    {
      "commit": "9eae036a9822f9ba7d13b7d623310a15e23ba5f0",
      "tree": "851af3407aa3faa0cdb60945ccd8d34f9de958e8",
      "parents": [
        "fbd7e12c373435c77aa5b20bdf321a0589521746"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 19 09:09:14 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 13 12:46:38 2017 -0700"
      },
      "message": "Use correct binder opcode names\n\nMake the binder opcode names match the method names\n\nTest: builds OK, this does not change behavior\nChange-Id: I7c56ddd1efabc81b5d0ab2d1979ba1001ec76994\n"
    },
    {
      "commit": "dcdfaecc1fa630a799e1fdb508a9b92da55abc36",
      "tree": "407138ab3b7cef085ca4f283ea24378910ce775e",
      "parents": [
        "cca34c05ca2d5e7ac6c2fbee3ac2db88f059143d"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Tue Feb 14 10:18:39 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Mar 09 12:30:24 2017 -0800"
      },
      "message": "NBLog periodic merging thread\n\nBug: 35468674\nTest: no change in functionality, everything works as before\nChange-Id: Id2cea243bc15767ca6803c9505bf23a18411500e\n"
    },
    {
      "commit": "6a308b02f138e358fb239ee2df5d54dd988f34fd",
      "tree": "730e19d7ae133e2086c37dcec42d0b88e77ba01b",
      "parents": [
        "0a2ea58394190408a3d532bfcc242ba64ca71538",
        "20b9ef0b55c9150ae11057ab997ae61be2d496ef"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 16 17:12:23 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 16 17:12:23 2016 +0000"
      },
      "message": "Merge \"Add unique audio port IDs to AudioTrack and AudioRecord\""
    },
    {
      "commit": "20b9ef0b55c9150ae11057ab997ae61be2d496ef",
      "tree": "21bd57d748dd47600b1e62bfb18d4acb08e15438",
      "parents": [
        "8526d86ab12284135ed4ca27aeb816371c10c0e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 05 11:03:16 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 12 12:29:41 2016 -0800"
      },
      "message": "Add unique audio port IDs to AudioTrack and AudioRecord\n\nThis will allow to track activity at the track level instead of\nat audio session level as only possible with current implementation.\n\nAudioTracks and AudioRecords will receive a unique audio port ID the\nfirst time they register to audio policy with\ngetOutputForAttr()/getInputForAttr() and keep this ID for their\nlifetime.\n\nThis CL is the first partial change and just updates the\naudio policy and audio flinger APIs used at track creation time.\n\nTest: basic regression test of audio playback and capture use cases\n\nChange-Id: I8d612e67738e120494f61e3f7c60bfd0b2c6a329\n"
    },
    {
      "commit": "b643627a557e44b9ab5879cf71e162af2d514ce3",
      "tree": "995bc0b0fa9a614687aa8df2f119ab7fff0c7a88",
      "parents": [
        "8526d86ab12284135ed4ca27aeb816371c10c0e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 07 19:24:50 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 08 12:14:32 2016 -0800"
      },
      "message": "fix client pid for effects applied by audio policy\n\nTest: Hangouts call, Play Music with and w/o effects\n\nChange-Id: Ia9b20f94be667dd92e0497f8ef9c0dc0e95afe28\n"
    },
    {
      "commit": "538ec5e04f389cba637b030757be317fcb8677a8",
      "tree": "c9c576057efe1f6c0bdf1a4cbf6b58dce68f5e3f",
      "parents": [
        "e085c1072f017d4910f7e49741f72e8a722b8892"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Nov 02 13:21:22 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 04 12:14:36 2016 -0700"
      },
      "message": "Split libmedia into libmedia and libaudioclient\n\nThis makes it so audioserver doesn\u0027t need to link against the entire libmedia,\nwhich has dependencies on camera, ICU, OpenGL and other things that aren\u0027t\nneeded for audio.\n\nTest: build/boot\n\nChange-Id: I99ba1a3dc3b33ca9b3abd98e7519dbf228ee62af\n"
    },
    {
      "commit": "b70868bb337f0b12f993494f4d110979a33ddd24",
      "tree": "bde43cc6ef3f51829fd1875013e0191ffa2b4915",
      "parents": [
        "fa877e53915259d8288fa6cf16d9ebe68d4a806d",
        "2f8e63b5be5b0160302cffe1f1f18e560d31d3e7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jun 04 01:21:52 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jun 04 01:21:52 2016 +0000"
      },
      "message": "Merge \"Add AudioTrack and AudioRecord flag checks\" into nyc-mr1-dev\nam: 2f8e63b5be\n\n* commit \u00272f8e63b5be5b0160302cffe1f1f18e560d31d3e7\u0027:\n  Add AudioTrack and AudioRecord flag checks\n\nChange-Id: If9043721f4763ce0f4db96c63595f92c5ba22556\n"
    },
    {
      "commit": "050677873c10d4da308ac222f8533c96cca3207e",
      "tree": "fa2d3e91f74c5d838330f52cf158be8c774eec7f",
      "parents": [
        "53c87d5bb06a168290575099378bc7bfe1dca02b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 01 18:27:28 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 03 16:46:38 2016 -0700"
      },
      "message": "Add AudioTrack and AudioRecord flag checks\n\nVerify that the requested flags are compatible with the input\nor output flags when creating and AudioRecord or AudioTrack\n\nGet rid of IAudioFlinger::track_flags_t which was redundant\nwith audio_input_flags_t and audio_output_flags_t.\n\nChange-Id: I0dd9232f857b2737e99a8c668806e45bce09cdbd\n"
    },
    {
      "commit": "8b269a1708b95d5f31ea59afb36bb42c26f91961",
      "tree": "26bed40714d9c75ae6e843c36299b6836c4ef938",
      "parents": [
        "4fce50b0b30d583909cef1610957bf33a3aa3ac7",
        "a0e10ff02b156738c0e5441104821b220eea3d68"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Tue May 24 17:27:05 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 24 17:27:05 2016 +0000"
      },
      "message": "Merge \"audioflinger: Pass pid of process creating track or opening record\" into nyc-dev\nam: a0e10ff02b\n\n* commit \u0027a0e10ff02b156738c0e5441104821b220eea3d68\u0027:\n  audioflinger: Pass pid of process creating track or opening record\n\nChange-Id: I728ffba8938a82f8b8f7b773febafd5e466c8e4d\n"
    },
    {
      "commit": "9ea77cdba8c422940adb57a790b44ac04fe0353f",
      "tree": "1e7c588ce1add16e6991eaae918d38414b17d879",
      "parents": [
        "f0f4f1e494a80ce300a68cfce0e1dc627c09c29a"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Apr 06 17:07:48 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 24 00:48:20 2016 +0000"
      },
      "message": "audioflinger: Pass pid of process creating track or opening record\n\nAudioFlinger allocates a Client heap for each unique pid.\nIf two applications use mediaplayer APIs, the same Client heap\nis reused as the pid used is not the application pid but that\nof mediaserver. With this change, the pid of the application\npid is used to decide the heap to be used.\n\nBug: 23525542\nBug: 28772898\nChange-Id: I31a695b0b321eff6e2aca80c3bc4aeb3e1cd9ac7\n"
    },
    {
      "commit": "47734c9509ecb472c2844cae46e2d916b9358321",
      "tree": "6b17e7f1540458e2f1abbe1c082353f920edc3df",
      "parents": [
        "20be7bf5ba6f3d4db36686d5af4316006cf9bb27",
        "98a9b2a491360c762e2ed46a9126f576693645a5"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon May 02 12:23:44 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon May 02 12:23:44 2016 -0700"
      },
      "message": "resolve merge conflicts of 98a9b2a to nyc-dev-plus-aosp\n\nChange-Id: Iae0a5cb698807d74ba28878d7ce1f69b6ba5219a\n"
    },
    {
      "commit": "090ef604f81447eab4aa0a5b45d6307482573560",
      "tree": "6eb6530aab79b1cdc543ef16650be519db449e37",
      "parents": [
        "cdf7931424583ff20a754999216041fb46287cb3"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Apr 27 10:39:54 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Apr 27 10:55:42 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings.\n\nBug: 28341362\nChange-Id: I625fbab25f16282c2ea929cd16283d9d146fa17b\n"
    },
    {
      "commit": "4a8308b11b92e608cdaf29f73f7919e75706f9a2",
      "tree": "2358eaecf7bb7beafd3341927c1621ac1a594ed3",
      "parents": [
        "88bd61e31184a72e34e5a8c2ae11d034e01845aa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 18 14:10:01 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 19 13:01:54 2016 -0700"
      },
      "message": "Add AudioSystem::getFrameCountHAL()\n\nAnd add comments about declaring methods in binder opcode order.\n\nBug: 28117362\nChange-Id: I3c4426fa4bb3ce9c4a207a44d3bb1103d7fef160\n"
    },
    {
      "commit": "a13cde98a880341f0a56d91da6364b093fb5d24e",
      "tree": "3974215c7cc52f2136c04e3e38568e0483c03129",
      "parents": [
        "45993ad8833063a50af83f76ec1ddeba673b5277"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 28 15:26:02 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 29 13:43:18 2016 -0700"
      },
      "message": "Use audio_module_handle_t and audio_patch_handle_t consistently\n\nBug: 27814144\nChange-Id: I54b7a73ec318779fd3addb060998f4d94141152d\n"
    },
    {
      "commit": "d848eb48c121c119e8ba7583efc75415fe102570",
      "tree": "06733e396ad546bf39be0a6699193d041883edad",
      "parents": [
        "38246e482ea3bd1e0f88f7133934ec4537b48bbd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 08 13:42:11 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 16 14:04:22 2016 -0700"
      },
      "message": "Use audio_session_t consistently\n\nBug: 27562099\nChange-Id: I328d8226191386b163f2ace41233607294c50dcd\n"
    },
    {
      "commit": "2c073da0f02c3cf7cd4795af2d861222cbcab72a",
      "tree": "080be6a2e66a503d0d8653f5fc1261811bd1b83a",
      "parents": [
        "eeecb980ff4c202d0a3c4b0bfe040dce2f73336d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 26 09:14:08 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 01 08:33:02 2016 -0800"
      },
      "message": "AudioSystem::getSamplingRate and getFrameCount now work for input\n\nAlso fix whitespace and comment in AudioIoDescriptor.\n\nBug: 25641253\nBug: 21019153\nChange-Id: I6a1e2262f44f87ec3ebce6e5274f45ed0f47eb13\n"
    },
    {
      "commit": "eeecb980ff4c202d0a3c4b0bfe040dce2f73336d",
      "tree": "decce0d925acd9efd68f2d540bbabb60c0661c6b",
      "parents": [
        "91afc2297dd1c39302dba6ff68e9839aae27d39a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 26 10:44:04 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 01 08:32:58 2016 -0800"
      },
      "message": "Add use for audio_unique_id_t\n\nBug: 25641253\nBug: 21019153\nChange-Id: I65dc128e760c245f3d90559635a8981b186c87d7\n"
    },
    {
      "commit": "4cac44b53cc9f965cc2c9706b1d7ee2cd79f4066",
      "tree": "9eadfd6e5600d051b428898b1b24a4ecd52f2798",
      "parents": [
        "bc0daa97fa04bae46e3d8fb2f1c6249da856f643"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Sep 16 15:01:16 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Sep 16 15:01:16 2015 -0700"
      },
      "message": "IAudioFlinger: fix the missing initialization of variable to ensure no info leak when writing them to Parcel.\n\nBug: 23953967\nChange-Id: I3a1d0144ba3832649e322c197ff0f03305ee7829\n"
    },
    {
      "commit": "983dca391a76fb45df999fc40e8766b9ddb63511",
      "tree": "c12d0d47aab2e732813129ea7c79d08c803ffc94",
      "parents": [
        "7a2ffb90ff8c8d6d8d32f44b8fe0f79bc608f1f1"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Sep 10 09:47:29 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Sep 10 09:53:23 2015 -0700"
      },
      "message": "IAudioFlinger: always initialize variables to ensure no info leak when writing them to Parcel.\n\nBug: 23953967\nChange-Id: Ibbe841da149038675e9e8daea76c77558bc8564b\n"
    },
    {
      "commit": "e995e477ad59b79145200c8f1e9e13c16c682d59",
      "tree": "e61842baea1867493e4c97a678fc52d7fe937cd2",
      "parents": [
        "35e03636d6fa0c7c33c67e10686657849a61aff8"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Sep 09 09:48:34 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Sep 09 11:06:23 2015 -0700"
      },
      "message": "IAudioFlinger: clear config before reading it from parcel.\n\nBug: 23905951\nBug: 23912202\nChange-Id: Id13a9d3cae2c09e7381b841e67ddfb188274d74c\n"
    },
    {
      "commit": "72e3f39146fce4686bd96f11057c051bea376dfb",
      "tree": "00e43a5392f717a49a3569de3a5bdce9aa7b6a6e",
      "parents": [
        "4a95e69406aa2e9896d865962d6d947ebbdac6fc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 20 14:43:50 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 20 17:35:37 2015 -0700"
      },
      "message": "audio flinger: do not call JAVA services until system is ready\n\nWait for system ready indication form AudioService before enabling\ncalls to scheduling service or power manager.\n\nBug: 11520969.\nChange-Id: I221927394f4a08fd86c9d457e55dd0e07949f0cf\n"
    },
    {
      "commit": "4cb668392ee0433462251afbee109405c6efacc8",
      "tree": "50e324bd1af8951136ec9b7c4a7538e514490e80",
      "parents": [
        "1de1e25cba872bd4c077c2e394f8ca9c70b65856"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri May 01 18:34:17 2015 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue May 05 02:04:33 2015 +0000"
      },
      "message": "AudioRecord keeps track of UID\n\nBug 20832981\n\nChange-Id: If5f3c61fae02d86b9d6fdf411711f854fd56c77d\n"
    },
    {
      "commit": "eaa34703cb5f1acedb20cbcdff1ab79c11ff6857",
      "tree": "240ff03be0528d0abb96a8242baf960d5a8062c7",
      "parents": [
        "afc750aa3ac536067180f9714e34f626f8c981b3"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 29 12:57:58 2015 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 29 12:57:58 2015 -0700"
      },
      "message": "Fix build.\n\nChange-Id: Ic8ae065dd912cb5ff130e8d78c98fd6bed4e11cc\n"
    },
    {
      "commit": "be71aa29a3c86d2e01cd17839d2a72ab09a1bce5",
      "tree": "ca29cd10f78ff053761eb809c391019180836742",
      "parents": [
        "f62a067a5b21c840c915d36392679346ac0abfd7"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Apr 28 12:06:02 2015 -0700"
      },
      "committer": {
        "name": "Svetoslav Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Apr 29 19:06:41 2015 +0000"
      },
      "message": "Respect the record audio app op - media\n\nChange-Id: I3a97977b6e9a09355e2008f780d22d480fb7308b\n"
    },
    {
      "commit": "f75c2fef14354024ec27bff1444f9e50b5ef55a9",
      "tree": "55e9f67a818b544ce272585969121ce914f1b31e",
      "parents": [
        "74fa6ee5904fa48f7f3caddcf0d96cd9f5575b39"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 02 13:49:15 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 02 21:13:57 2015 +0000"
      },
      "message": "IAudioFlinger: add checks on binder calls\n\nLimit number of ports and patches listed by\nLIST_AUDIO_PATCHES and LIST_AUDIO_PORTS.\n\nAlso fix typo causing wrong pointer to be used when writing to Parcel.\n\nBug: 19573085.\nChange-Id: I41a9c710e45738a4f11990160587856c429a4646\n"
    },
    {
      "commit": "40bc906252974d0b389ae4a147232d0c9a97193f",
      "tree": "95301839473e4c0d3be9ef1bd2e8c1d3677964a6",
      "parents": [
        "ae4b879d04c4b07c62241a8f507c8dce11e628e4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 09:09:33 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 08:02:57 2015 -0700"
      },
      "message": "namespace does not need a closing semicolon\n\nChange-Id: Ie8f9d42fc061f6d558f23b98414e04eb3d14b376\n"
    },
    {
      "commit": "06b46062d2f8bc82ca3061a23d197734ae51918b",
      "tree": "3aee1330c3d65579643e50d105da35919ddc295f",
      "parents": [
        "e5a9eb684921b75919b1a7fee97259b0ca48bd47"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 14 07:58:25 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 14 14:01:03 2014 -0800"
      },
      "message": "Update calls to IInterface::asBinder()\n\nto use the new static version.\n\nChange-Id: I89a5988a0ac694ffc04d88cf939e8455bf925d4c\n"
    },
    {
      "commit": "4c10981ada93478048bb0139bf95543ff55bdf38",
      "tree": "8a485480ee7e7ee4ac69489fd4bab6a30529259b",
      "parents": [
        "b306ee5f25b39a1964058bfac8e7a7c52a760c77"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sat Oct 18 14:53:53 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sat Oct 18 15:15:38 2014 -0700"
      },
      "message": "Fix crash from the this \u003d\u003d NULL change.\n\nChange-Id: If6cdca1319fffa53846eb40b5f568fc4b161abaa\n"
    },
    {
      "commit": "93c3d41bdb15e39dac0faea9c5b60f1637cd477c",
      "tree": "a0d739ad732f10bc9d4548923c78c590841b14da",
      "parents": [
        "92ce4715315bddd158c7d4028556632f0547e3b9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 01 14:48:35 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 06 00:38:23 2014 +0000"
      },
      "message": "AudioSystem: add API to query audio HW sync source\n\nAdd a method to query from the audio HAL the HW sync\nsource used for a given audio session.\nModify audio policy to select a direct output with HW sync\nwhen requested.\n\nBug: 16132368.\n\nChange-Id: I03038f9188f2d389f8a5fd76a671854013a4513e\n"
    },
    {
      "commit": "de3f8392fbf380ba6f09d009b00d7172477389a2",
      "tree": "77687cb28cf7dfb34ebb6317e246b3cad5672b86",
      "parents": [
        "03524dcc1215b2c468f5c8c8abe6f1c26239fd71"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 27 18:38:22 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 28 21:43:16 2014 +0000"
      },
      "message": "rename AudioSystem::newAudioSessionId()\n\nRename AudioSystem::newAudioSessionId() to\nAudioSystem::newAudioUniqueId() as it can be used\nalso for I/O handles.\n\nBug: 12378680.\nChange-Id: I611ea3b5eb57a4b0774437f477ee87dc4ccc2cc2\n"
    },
    {
      "commit": "cf2c0210c8afbe7d0661ccbbae3835b5ce73c0bf",
      "tree": "26824707249d553efaabe2003381b4e9159e199d",
      "parents": [
        "97117153a0d681be70bfa9dc9876541375355c47"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 25 16:20:43 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 28 12:06:00 2014 -0700"
      },
      "message": "AudioFlinger: update openInput() and openOutput()\n\nAdd parameters to openInput() and openOutput(): device address,\ninput source.\nAllow caller to specify a given I/O handle\nGroup parameters in a struct audio_config.\n\nBug: 12378680.\nChange-Id: I7e9af74c0d996561cc13cbee7d9012d2daf33025\n"
    },
    {
      "commit": "7410591dad836434c72ddee66680802708b70c10",
      "tree": "697a233ffced732dbe113c927d9de61f14ea3f2c",
      "parents": [
        "b3b1660ecb67f61f9da54efced8677fa3a6f4863"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 03 12:28:53 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 17 12:13:18 2014 -0700"
      },
      "message": "Move AudioRecord frame count calculations to server\n\nBuffer frame count and notification frame count\nare now calculated by server instead of by client.\nThe server has more information and can do a better job.\n\nAlso fix a few bugs:\n\n - If a fast track was re-created, even with same pipe depth, it would fail.\n   Now it can correctly re-create a fast track provided the pipe depth is same.\n\n - Notification frame count for fast tracks was calculated by client\n   as 1/2 of the total frame count, which is a large value due to the pipe.\n   Now the notification frame count is set by server to the HAL frame count.\n   This should reduce latency for fast tracks.\n\n - EVENT_OVERRUN were happening frequently when there was sample rate conversion,\n   because the client didn\u0027t know about the sample rate conversion,\n   and under-estimated the necessary buffer size.  Now since server\n   calculates the buffer sizes, EVENT_OVERRUN is unlikely.\n\n - RecordThread::createRecordTrack_l was checking for mono and stereo\n   for fast tracks.  This is not necessary, and now we can handle a\n   multi-channel fast track.\n\nBug: 7498763\nChange-Id: I0c581618e8db33084d5ff9ed50a592990c9749e8\n"
    },
    {
      "commit": "ec40d284218466d8f0e832e7eb88e6ea6c479c88",
      "tree": "46ae774a4f3535d07374bed459b1dcf2bb9d8803",
      "parents": [
        "6e6704c06d61bc356e30c164081e5bcffb37920c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 15 15:31:26 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 17 12:13:07 2014 -0700"
      },
      "message": "Add audio_input_flags_t to IAudioFlinger::openInput\n\nFor backward compatibility, until flags are correctly calculated,\nwe will assume that the request is for a low latency input stream.\n\nChange-Id: I76746834e870df00833dc77cbdaa2edd2ffeec95\n"
    },
    {
      "commit": "7df8c0b799d8f52d6386e03313286dbd7d5cdc7c",
      "tree": "e87404b99042b2c21ffcc0c34ac397ae14b4c2d4",
      "parents": [
        "7c6f87856c0880ee39c2107a0fc3c9b41f8c195c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 03 12:23:29 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 03 16:28:41 2014 -0700"
      },
      "message": "IAudioFlinger::openRecord now suggests notificationFrames\n\nChange-Id: I08885cc381d03c522a23289e74f0e1ed46563863\n"
    },
    {
      "commit": "4b123406c10c17852734a1b691bb9ce2a4cb7caf",
      "tree": "23cb27ad387a8a17b248b63b47f813e4a6b1dda8",
      "parents": [
        "5912117110ae6efadd862fcb0e395fdcd18aa00c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 11 09:22:20 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 27 09:09:51 2014 -0700"
      },
      "message": "IAudioFlinger interface extension for patch panel\n\nChange-Id: Iaabe0a7e315d5725e00a74a6ed40339b98f20330\n"
    },
    {
      "commit": "d776ac63ce9c013c9626226e43f7db606e035838",
      "tree": "f75ca450359caa5a69b4124399d19d0522046826",
      "parents": [
        "0c5b910e6eb2b9b2a622ccc0dd66e8fcae3eb28b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 07 09:16:09 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 09 11:32:43 2014 -0700"
      },
      "message": "IAudioFlinger::openRecord returns IMemory(s)\n\nopenRecord() now explicitly returns the control block and data buffer\nas separate IMemory references.  If the IMemory for data buffer\nis 0, this means it immediately follows the control block.\n\nChange-Id: Ic098f88f0e037f8fbe30006689e18cacacf09d06\n"
    },
    {
      "commit": "b53fc4ef8da47df8d5f580e8ee6135866ffebc33",
      "tree": "e0ae90826c9f015c3f4f48faddf93b94ed84aea6",
      "parents": [
        "33ddcb6f1049cb4b6c71bb7ea605375f9492601d",
        "47c888a9fb74f8a46fbf666f0611fd1a9491466f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 02 08:03:58 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 02 08:03:58 2014 -0700"
      },
      "message": "resolved conflicts for merge of 47c888a9 to master\n\nChange-Id: I4ba2fdc6374a93a892bb7651b0d174e495f09bf6\n"
    },
    {
      "commit": "2301acc6a9c7a3af4ad01f3d1d0f76f13eca7350",
      "tree": "6dde0cdf76066b31d3e0c0c96ea8e36990266fce",
      "parents": [
        "ecdca392ed40e89a6ef14b86446e952c35497ac4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 17 10:21:00 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 14:49:23 2014 -0700"
      },
      "message": "Update comments\n\nChange-Id: I5776313b9b49072cd666d28880f0d07cc73f827b\n"
    },
    {
      "commit": "51beebba9d4989d05831a13bbe5cdf53ecac1bf5",
      "tree": "b2c6af1099ba3c20b8dd08d39f8dcf822303971a",
      "parents": [
        "b8f8d231685afdec472136b45c527a71bfb8bcc4",
        "45faf7e02791993a487d6e038d16ff46395f1975"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 21:14:17 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 21:14:17 2014 +0000"
      },
      "message": "Merge \"Use symbol AUDIO_DEVICE_NONE from \u003csystem/audio.h\u003e\""
    },
    {
      "commit": "45faf7e02791993a487d6e038d16ff46395f1975",
      "tree": "d54ff27f6fd42e670ddebfa993a00b5202fb7633",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 17 10:23:01 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 17:29:00 2014 -0700"
      },
      "message": "Use symbol AUDIO_DEVICE_NONE from \u003csystem/audio.h\u003e\n\nChange-Id: I61f882c5e7c949bf00d3bfc745ebf3b5e1c42a58\n"
    },
    {
      "commit": "85d109a4b0eddd76a8c5cee170bc2bcc99d00118",
      "tree": "063a73398f17da98b0a9ecc5923ab05bbc3fc5d9",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 17 10:25:08 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 15:38:25 2014 -0700"
      },
      "message": "Document AudioSystem::newAudioSessionId() failures\n\nChange-Id: Iaa168722f362c36bdfa87fe20dc0a59b43cf1ca3\n"
    },
    {
      "commit": "c5a17425986b4ce3384e6956762c86018b49c4a0",
      "tree": "313484677c719c944bc7923b0c3766cba3bef5c6",
      "parents": [
        "c3df838434b37d8400eea2438083cc01a4c1cc71"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 13 14:59:59 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 14 14:49:36 2014 -0700"
      },
      "message": "Remove name output parameter from createTrack\n\nIt was only used for one log.\nA better solution will be a per-track unique ID.\n\nChange-Id: Ia440e02ae4a5a4019a9a2d08970e1ee93ac4c3a3\n"
    },
    {
      "commit": "d2304db2fcb5112292105a0949a55986a4c9875f",
      "tree": "fe2723acf4c0eebcc39443769ab8b48840ddb48e",
      "parents": [
        "33ca5cf8826f5fcd9c011e8d336138b62d982f2a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 07:40:31 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 28 12:06:05 2014 -0800"
      },
      "message": "Rename setStreamOutput to invalidateStream\n\nAnd simplify by removing the unused I/O handle parameter \u0027output\u0027.\n\nChange-Id: Ie9c4df17a7378066312d4ed8790fda7a9125c95e\n"
    },
    {
      "commit": "7074296c72b3be919ebc9dfd504f4572a188d2e7",
      "tree": "21b792b395807c9283760acd3a565d5de90c7e3e",
      "parents": [
        "9a73cd3face153cbd04ceff0cfc0efdd4837b94e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 08:00:47 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 08:01:01 2014 -0800"
      },
      "message": "Fix warning due to incorrect log format\n\nChange-Id: I58ff399ace74965ebf8e5690c20637385f9425ad\n"
    },
    {
      "commit": "e03dd22716e688faa56467561827d9b1ea0c4214",
      "tree": "22ad88aaeec5fe2c061aa495aaff9f7e34ec8c6b",
      "parents": [
        "af191eb4feac513d17dc0362e0cea5bc9e0ffe9d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 28 11:04:39 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Thu Feb 13 09:46:19 2014 -0800"
      },
      "message": "When passing a size_t via binder, use 64-bits unconditionally\n\n64-bits is almost always over-kill.  But it\u0027s easier and cleaner to change\nthe binder code to be accurate, than to rename all the the API parameter\ntypes to be 32-bit.\n\nBug: 12381724\nChange-Id: Ib8f198d814a2027760ef24e9e3feacee21a973b1\n"
    },
    {
      "commit": "d457c970c8d08519cd77280a90b61ae1e342cfe3",
      "tree": "f0f409db4d834b4d70b2244dd97dfa707496df50",
      "parents": [
        "1d6fa7af1288b550faabe4ec2cf98684236723db"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 11 08:47:07 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 11 12:39:43 2014 -0800"
      },
      "message": "Track pid for each session\n\nso they can be properly freed.\n\nChange-Id: I6f389035bc29e74e7c367c1c6d0252b180f666b3\n"
    },
    {
      "commit": "1d6fa7af1288b550faabe4ec2cf98684236723db",
      "tree": "a8801ca9a0925ba1faccf17acea4aa78d71a9d29",
      "parents": [
        "b82a9f105f89d6b3684c9f626918042bd8977912",
        "566be7c33fc56ae4c34168ecbee5316374f7e3c5"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 13:47:53 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 13:53:20 2014 +0000"
      },
      "message": "resolved conflicts for merge of 566be7c3 to master\n\nChange-Id: I7b1cc71057b2bd4f771e7bcf508a8c3abd6017ce\n"
    },
    {
      "commit": "377b2ec9a2885f9b6405b07ba900a9e3f4349c38",
      "tree": "b938e1d75a1beefae86244f287ca22f4a277740d",
      "parents": [
        "cdda7bf4d3ca9cad6979374a18dd5be79ea83d80"
      ],
      "author": {
        "name": "Kévin PETIT",
        "email": "kevin.petit@arm.com",
        "time": "Mon Feb 03 12:35:36 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 11:40:06 2014 +0000"
      },
      "message": "Make frameworks/av 64-bit compatible\n\nContains the necessary changes to make frameworks/av build and work\non a 64-bit machine.\n\nSigned-off-by: Craig Barber \u003ccraig.barber@arm.com\u003e\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\n\nChange-Id: I725feaae50ed8eee25ca2c947cf15aee1f395c43\n"
    },
    {
      "commit": "f0002d142e6d24c5438600b2c259679de710f8ac",
      "tree": "20e5013fa14f2d5339868c1b08396f7b852a2123",
      "parents": [
        "c69b91ceae6255e41c5413796fb0ed4f7af45b15",
        "74935e44734c1ec235c2b6677db3e0dbefa5ddb8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 24 16:13:50 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 24 16:13:51 2014 +0000"
      },
      "message": "Merge \"Replace control block frameCount_ by explicit in/out parameter\""
    }
  ],
  "next": "0ce5ca5e113d58cbcb7cb48615d6dbbf3fbe7c66"
}
