)]}'
{
  "log": [
    {
      "commit": "ac9cef5f3288df6e65cb4488e2615cc3c07b70d0",
      "tree": "3369bd965510d5c3e8ea6257bb1368a677e535c6",
      "parents": [
        "3c1ba2cd6276ee4304ba082fbe40fd870c1746c8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 09 15:46:26 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 15 10:42:59 2017 -0700"
      },
      "message": "audio policy: add method to query dB attenuation for a certain volume and device\n\nBug: 62492975\nTest: Check dB value returned to AudioService when stream volume is\nchanged\n\nChange-Id: I8d0a945e9151d230b93634e4b9e57bab68f44fa8\n"
    },
    {
      "commit": "0b86e57b61b46652585008679e48b6961b40122d",
      "tree": "1bea7921ede728cd7589235175d0d1a8a3b78de6",
      "parents": [
        "c1c9b13223230f8d0e8bddd41e63c7046b7a98a5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 07 18:56:27 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 02:02:39 2017 +0000"
      },
      "message": "audio: Fix read of uninitialized memory\n\nFollow-up to fb12e20e426bc6bcff06e39fba45a931cf787040.\n\nBug: 62425341\nTest: m\nTest: Device boots, com.android.phone doesn\u0027t crash\nChange-Id: Ib54c7efae88cb0bff0f92e1cf1bd20a22fdcbdba\n"
    },
    {
      "commit": "9e8f432a99d78191a42ffc070230d34ebf77102d",
      "tree": "d680e026da8f520bdd0ab8b0e0a1829efc6745ba",
      "parents": [
        "405408c26b05dc4b694c5cb5afc1fe2ae9b7c419",
        "88e94d3c1e3644d1c36b9e9c2f161cfe891ce4e1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jun 03 01:36:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jun 03 01:36:44 2017 +0000"
      },
      "message": "aaudio: implement native IPLayer for legacy playback streams am: 1d32e9f8e5\nam: 88e94d3c1e\n\nChange-Id: Ic94f6da387d73dfcb727f98bfb67913d0927b3d3\n"
    },
    {
      "commit": "88e94d3c1e3644d1c36b9e9c2f161cfe891ce4e1",
      "tree": "46d368549cb4555b89f5f7d91b6f330665eb6a9e",
      "parents": [
        "e5ed4fc299dce4783cdd015595f733a51da92c19",
        "1d32e9f8e5ba52d69c6319270c8a63a995d2c4f2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jun 03 01:32:26 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jun 03 01:32:26 2017 +0000"
      },
      "message": "aaudio: implement native IPLayer for legacy playback streams\nam: 1d32e9f8e5\n\nChange-Id: I2763b2e5fcfa1f4d234195c40e955aadbcce2fa3\n"
    },
    {
      "commit": "1d32e9f8e5ba52d69c6319270c8a63a995d2c4f2",
      "tree": "4d3816933fd2e7344934ccf4e077c640f565c58f",
      "parents": [
        "a9034e0e535ea8f41a7b1d0a5c9e4e9f074be236"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 02 14:01:32 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 02 15:05:23 2017 -0700"
      },
      "message": "aaudio: implement native IPLayer for legacy playback streams\n\nMake AudioStreamTrack derive from PlayerTrackBase to\nprovide playback and volume control via IPLayer interface.\n\nBug: 62027849\nTest: verify aaudio playback regressions and registration of aaudio\nplayers in AudioService\n\nChange-Id: I5c04110f1554233eae3f1bc357a64a584d7303d1\n"
    },
    {
      "commit": "3bbd7673937aa3162385b464ed930f889df5c723",
      "tree": "301b0dd115a82bce46d837ea92b391164e845532",
      "parents": [
        "ad4dbf550debd0fa2794eba7c772b85445115181",
        "e5ed4fc299dce4783cdd015595f733a51da92c19"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 02 19:06:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jun 02 19:06:56 2017 +0000"
      },
      "message": "Merge \"add native IPlayer interface implementation\" into oc-dev am: a9034e0e53\nam: e5ed4fc299\n\nChange-Id: I6da9cbf497768e111cc24cfcdaf8b843c8dbe274\n"
    },
    {
      "commit": "e5ed4fc299dce4783cdd015595f733a51da92c19",
      "tree": "163c5269faf1479fa0f041c4abdec841504f6d77",
      "parents": [
        "a31d18c95c2404536f8c555f2b3a3165c98b837f",
        "a9034e0e535ea8f41a7b1d0a5c9e4e9f074be236"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 02 19:03:00 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jun 02 19:03:00 2017 +0000"
      },
      "message": "Merge \"add native IPlayer interface implementation\" into oc-dev\nam: a9034e0e53\n\nChange-Id: I83e86118e969a3d305850114a879b73cb9caba21\n"
    },
    {
      "commit": "b5323222bd524876dda1ebf89694f186278e2229",
      "tree": "fe007d41f19f26925d55e35ffd81351dcb40f644",
      "parents": [
        "cc12f885a86a25fd28aa1bb449c6ea0d5cc60417"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 31 15:01:56 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 01 19:23:40 2017 -0700"
      },
      "message": "add native IPlayer interface implementation\n\nGeneralized the IPlayer implementation done for OpenSL ES\nso that it can be used by other native audio players\nCreated two classes:\n - PlayerBase implementing the interfacin native AudioManager and\n IPlayer methods\n - TrackPlayerBase, a derived class specialized for AudioTrack.\n\nBug: 62027849\nTest: verify regressions with OpenSL ES buffer queue player\n\nChange-Id: If5ad21a3c1a243fba0b312001c5034102e6d6672\n"
    },
    {
      "commit": "5573544e1052e3cff3f98482a6258a3cba47372a",
      "tree": "7dd23312f7481754efd13f9e972d92bc6d3d1d53",
      "parents": [
        "e11c6f1082b3ff9ea63055c870bdc76fb57bd9d8",
        "fb12e20e426bc6bcff06e39fba45a931cf787040"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 01 19:27:18 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 01 19:27:20 2017 +0000"
      },
      "message": "Merge \"audio: Output latency update in Audio Track\""
    },
    {
      "commit": "fb12e20e426bc6bcff06e39fba45a931cf787040",
      "tree": "aa6b41e2de8d8b22fa40659e1317e103eb5f8107",
      "parents": [
        "c77b3bb4e11dd53028616454744b783a84f219de"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Thu Apr 06 12:24:42 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 30 13:51:48 2017 -0700"
      },
      "message": "audio: Output latency update in Audio Track\n\nAudioTrack needs to query latency from the output descriptor each\ntime it uses mAfLatency to calculate timestamp or return the track\nlatency. Until now, the output descriptor latency was queried and\nstored when a track is created. On a device switch, IO descriptors\ntable saved in AudioSystem is updated to reflected the latest\nlatency values.  Unless a device switch lead to a track teardown,\nAudioTrack will be unaware of the latest latency value. Therefore\nexplicitly check the latest mAfLatency value on each getTimeStamp\ncall.\n\nTest: Podkicker 2.2x, Photos 240fps and BT\nBug: 35075600\nauthored-by: Aniket Kumar Lata \u003calata@codeaurora.org\u003e\nChange-Id: I06282182364703574a7d66d2b5cd1301679dfade\n"
    },
    {
      "commit": "ef44fb4115270883da829fea91174c8cc003b777",
      "tree": "9fde4511982c15bfb11c30cff327eb50dd0de0e1",
      "parents": [
        "159db446a230334d88e5670c8ccd3489b00fdff6",
        "0bbea62ed44e8d5cc2419b2861ea0e58d81a4917"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 30 19:37:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 30 19:37:52 2017 +0000"
      },
      "message": "aaudio: fix device switch detection in legacy path am: fb00fc77f5\nam: 0bbea62ed4\n\nChange-Id: I80dfc949c206c1572f867f3ffedb6ff556a7b8f2\n"
    },
    {
      "commit": "0bbea62ed44e8d5cc2419b2861ea0e58d81a4917",
      "tree": "871c7466c9a3eca57d4e9ddddbd8af05622c6c91",
      "parents": [
        "eddd7d7a3ab59fe6be4a9f19f97b9744828cfe79",
        "fb00fc77f59ed5ebec4d38bac666e6521b6c1de0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 30 19:33:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 30 19:33:50 2017 +0000"
      },
      "message": "aaudio: fix device switch detection in legacy path\nam: fb00fc77f5\n\nChange-Id: Ie3c55199883c614e02f3fb1a038128f435e9cf29\n"
    },
    {
      "commit": "fb00fc77f59ed5ebec4d38bac666e6521b6c1de0",
      "tree": "cf7fd5f373a5a8681d7fe4ee151367ccf3f8c9f2",
      "parents": [
        "d08f04f33b80c37bd3889f461846d59f70e726c7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 25 18:17:12 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 26 18:34:13 2017 -0700"
      },
      "message": "aaudio: fix device switch detection in legacy path\n\nImplement device switch detection on legacy path (AudioTrack and\nAudioRecord) based on audio routing callbacks forcing the stream state\nto disconnected.\n\nBug: 33355262\nBug: 62090113\nTest: tested with write_sine and input_monitor command line tools.\nChange-Id: I9e0421fee233964b1bf318acb640569196a00f13\n"
    },
    {
      "commit": "6eba55b9663eb0bf50991ca5264ee94588557201",
      "tree": "5893f00d4918f39bcc423dd725b2ceca37ef2a53",
      "parents": [
        "cffd8eaa4803c8a040d4b564196c50c557594b5a",
        "e209c532b3fa3fc463d6df5d0af5f6811152f248"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 25 19:26:17 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 25 19:26:17 2017 +0000"
      },
      "message": "Merge \"aaudio: allow AudioRecord to use FAST mode for TRANSFER_SYNC\" into oc-dev am: cf423d268a\nam: e209c532b3\n\nChange-Id: Ia8c8877b69d9343f73abca99e795c3f488f6c515\n"
    },
    {
      "commit": "e209c532b3fa3fc463d6df5d0af5f6811152f248",
      "tree": "78c51a5cdb03933cb7aff7cae383108486c0c268",
      "parents": [
        "00f56e2c3642f6c84ac1d53f7c938c67463765bf",
        "cf423d268a9a99d2d592cfd9d360355ba567781d"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu May 25 19:21:45 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 25 19:21:45 2017 +0000"
      },
      "message": "Merge \"aaudio: allow AudioRecord to use FAST mode for TRANSFER_SYNC\" into oc-dev\nam: cf423d268a\n\nChange-Id: Iaa5a0f0bfda652e3c2a02fc73b0c65b43228e446\n"
    },
    {
      "commit": "34d606c66ffcd536daccf415132facd3cbfe1a8f",
      "tree": "a04c906500e93f36fb005193716cb58cb2025790",
      "parents": [
        "4cd6042ced43e41fbca6f5095612209e3dd16005",
        "75f79038715b4b1cf28e0457abfa84ccd17bb57e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 25 16:11:43 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 25 16:11:45 2017 +0000"
      },
      "message": "Merge \"Add TODOs for checking return value of wait\""
    },
    {
      "commit": "382d11ac489a917d3d009c3d05bc960f4af58176",
      "tree": "35769059a2ea44b17e0d365dd0169cb8bc0687ed",
      "parents": [
        "0556a2363ff5eb49bd35dc47f2d34cc2042de052"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon May 22 16:07:37 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed May 24 10:06:32 2017 -0700"
      },
      "message": "aaudio: allow AudioRecord to use FAST mode for TRANSFER_SYNC\n\nBug: 34093052\nTest: loopback.cpp\nChange-Id: I3bf4ee6f58fad017a038edfd50475d5dd5a4fca5\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "47d5517331f41f8583f4e47752132de96e14a96f",
      "tree": "b70ed1acc8bfb93ef9dc0514ace6b0d6fb3ac991",
      "parents": [
        "d0ebc4ce66090107dbda021cb395f1d3c11b9525"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 11:19:30 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 13:36:15 2017 -0700"
      },
      "message": "Add comments explaining about SCHED_FIFO\n\nTest: builds OK\nChange-Id: I7fa39defb081c27eb32abb241c0aa2a210744954\n"
    },
    {
      "commit": "75f79038715b4b1cf28e0457abfa84ccd17bb57e",
      "tree": "cc7badd7a19da2a8e66c087c54e3637f8593e05b",
      "parents": [
        "d0ebc4ce66090107dbda021cb395f1d3c11b9525"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 11:22:44 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 23 11:28:22 2017 -0700"
      },
      "message": "Add TODOs for checking return value of wait\n\nTest: builds OK\nChange-Id: I750b73de54deeccbae846189fdf385e636d9e4cd\n"
    },
    {
      "commit": "2f35206b77dd7d8a8c761e0a81ea327c10787036",
      "tree": "314fad5639b5c762be3ec16f1b685056678edf44",
      "parents": [
        "dc4272365d1c875471097db907f659731c36b53c",
        "d906ad023d3608925c4afda5c3b70a24667db758"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 11 05:54:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 11 05:54:44 2017 +0000"
      },
      "message": "Merge \"VolumeShaper: Fixes for updated Cts test\" into oc-dev am: 2d12b8e367\nam: d906ad023d\n\nChange-Id: I27856718a4914e396a7c387da7b4f4e4b7c245e6\n"
    },
    {
      "commit": "d906ad023d3608925c4afda5c3b70a24667db758",
      "tree": "4fceb037dc74eb16098d5229944ed941253a0fa1",
      "parents": [
        "03e1f70c17238799081a9021589adf57c0f04713",
        "2d12b8e3677c2c6b620358fa7e4699dda8c0f0bc"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 11 05:33:51 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 11 05:33:51 2017 +0000"
      },
      "message": "Merge \"VolumeShaper: Fixes for updated Cts test\" into oc-dev\nam: 2d12b8e367\n\nChange-Id: Ic4e567226fa649c425199e9068a3dac29809c980\n"
    },
    {
      "commit": "f370264dfa5237524a3535f5242a0c68cbbb13eb",
      "tree": "b0cab4fa2ae4243ce2a870c3d91e8124dc2d3510",
      "parents": [
        "549bd02a8421b0b53a1b5e8961a41cf551fce72d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 05 17:33:32 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 10 14:17:40 2017 -0700"
      },
      "message": "VolumeShaper: Fixes for updated Cts test\n\n1) Limit number of VolumeShapers that can be created.\n   a) 16 system VolumeShapers\n   b) 16 application/client VolumeShapers\n2) Return proper volume before VolumeShaper is started.\n3) Consistent xOffset definition used internally:\n   a) this is now always the position on the volumeshaper curve\n      which can go backwards if in REVERSE.\n   b) normalized time is always forward going and is scaled\n      to 0.f and 1.f depending on progress relative to\n      the curve\u0027s duration.\n4) Fix replace method.\n5) Add comments.\n\nTest: Use updated CTS VolumeShaperTest\nBug: 37536598\nChange-Id: I837ab2a481adc0abbd3f1338bfe2cb79831b11fa\n"
    },
    {
      "commit": "b71f4cbe9729faa5aafe050278df72df9e0e28dc",
      "tree": "273dad558ca8d3fd8bb7623ea9b4266b5a628b34",
      "parents": [
        "21a02aa2b83836818543dc61d66ae6a92ee4a75b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue May 02 15:26:45 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed May 03 21:55:14 2017 +0000"
      },
      "message": "Mark functions in headers with static inline\n\nFunctions in headers that are not static inline will cause duplicate\nsymbol errors when linking if the header is ever included twice\ninto different compilation units of the same module.  It also causes\n-Wunused-function warnings if they are not used in the cpp file, which\nwere hidden by the use of -isystem frameworks/av/include.\n\nBug: 31751828\nTest: m -j checkbuild\nChange-Id: I36f258bb4f5c3df54e874280beab344e63c519d5\n(cherry picked from commit 413adafb04005fc5cdfdcbb3fe1ee4cfee9765b1)\n"
    },
    {
      "commit": "58901127cfd84cbcc11fadd1ca2d3b4b9b9cbcdd",
      "tree": "aa769c21fe1156f39806519ee67b2bed397744ca",
      "parents": [
        "3243d43c0596c18845781607bae6ef8995ea624d",
        "e0ad778bfe63308a37f5b5745d92f0d7d165660a"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 18:07:06 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 03 18:07:06 2017 +0000"
      },
      "message": "Merge \"Remove reference to libc_logging.\" am: 87428f1e82 am: 46b2135bfb am: ed566c401f\nam: e0ad778bfe\n\nChange-Id: Ie6cc701a3f8e9c6753378651443642c726f53fa9\n"
    },
    {
      "commit": "e0ad778bfe63308a37f5b5745d92f0d7d165660a",
      "tree": "3319716b837ca02c13ffce53dcb2083216e0afb8",
      "parents": [
        "c8df2c1881daaf3743abf3b3dfc7299c4918de63",
        "ed566c401ff959cd8a6ef15b7be12a47218e97df"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 18:01:31 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 03 18:01:31 2017 +0000"
      },
      "message": "Merge \"Remove reference to libc_logging.\" am: 87428f1e82 am: 46b2135bfb\nam: ed566c401f\n\nChange-Id: Ia3390de121f6146e81c5bd61d9b8327e7d810a7c\n"
    },
    {
      "commit": "413adafb04005fc5cdfdcbb3fe1ee4cfee9765b1",
      "tree": "fffa5f6dad6d0bcf021b1f266a5926e848ee880f",
      "parents": [
        "2dde082e9f58b6aa7fab29f929dc11101db02846"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue May 02 15:26:45 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue May 02 22:32:23 2017 +0000"
      },
      "message": "Mark functions in headers with static inline\n\nFunctions in headers that are not static inline will cause duplicate\nsymbol errors when linking if the header is ever included twice\ninto different compilation units of the same module.  It also causes\n-Wunused-function warnings if they are not used in the cpp file, which\nwere hidden by the use of -isystem frameworks/av/include.\n\nBug: 31751828\nTest: m -j checkbuild\nChange-Id: I36f258bb4f5c3df54e874280beab344e63c519d5\n"
    },
    {
      "commit": "5a00c54fac03ab2f3ee3eb79b2837832eeef3186",
      "tree": "7211c75035bbb708876b62a0d38d8c5ebd02afcd",
      "parents": [
        "afca9ca288c46038527ee28a34b9f2206132ba55"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 25 13:05:49 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 02 10:46:20 2017 -0700"
      },
      "message": "Remove reference to libc_logging.\n\nThe libc_malloc_debug_backtrace includes the log functions so there\nis no need to also add the libc log library.\n\nTest: Built and booted a bullhead device.\nChange-Id: I00457ad0c321b385e68232ee87575588a8188db7\n"
    },
    {
      "commit": "296ee17ce39af4fa3173bbf21fbc719db4b8f329",
      "tree": "7fa4fd43ccce6f6fb95f7def38bfff2d8447fdac",
      "parents": [
        "abcced36e70ee6659d4e1896fb0ae3fb0880b859",
        "4e728d4bbc683a50096f052a31c8eb5cbb1e100e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 02 01:19:04 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 02 01:19:06 2017 +0000"
      },
      "message": "Merge \"ALOGW when failing to open audio track because of playback rate\""
    },
    {
      "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": "01e0ee177ff9f9e66b606c440fffeeb1509634d9",
      "tree": "5308e363f659cdd783ffb85533389b69bf59f6c4",
      "parents": [
        "c856d7294dfbedb4ec22e4e1f69663bb69aa442a",
        "7dc9e283f1db2353bdbf1df84546f88a6bce08a9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 27 16:30:38 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 27 16:30:38 2017 +0000"
      },
      "message": "Merge \"VolumeShaper: Improve restore\" into oc-dev am: abbb67724e\nam: 7dc9e283f1\n\nChange-Id: If6df971ee7b860544e56ea90445fdfe650856b2f\n"
    },
    {
      "commit": "39399b6b08b4e9fd7eae50e58e93b07216ad697f",
      "tree": "04c78ddb6186a54c9e0118a0b8f5270cdfc9d720",
      "parents": [
        "94cfe137a105ec7db047e963e18483425e0d2272"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 21 15:07:45 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 26 10:45:25 2017 -0700"
      },
      "message": "VolumeShaper: Improve restore\n\nConsider whether VolumeShaper has been started or not when\nrestoring (position). If the VolumeShaper hasn\u0027t been started\nwe restore in that state.  If it has been started already,\nwe advance to the end assuming the duration has been played out.\n\nTest: CTS and headset / kill audioserver\nBug: 37536598\nChange-Id: I4b55dca6f6a859563fd20bad4c8f67d2c92321c0\n"
    },
    {
      "commit": "4e728d4bbc683a50096f052a31c8eb5cbb1e100e",
      "tree": "2597097d30f48f7f657d0dbce14afac7b661aee3",
      "parents": [
        "399565a0797432001ee01524e3ec8e1b856ccccd"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Apr 06 18:00:40 2017 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Apr 24 22:13:12 2017 +0000"
      },
      "message": "ALOGW when failing to open audio track because of playback rate\n\nThis will help debuging errors linked the associated bug.\n\nTest: compile\n\nBug: 36509278\nChange-Id: I3034a8a40d20cee15dc394baf0743be3d996a155\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "9a952e5f95b7d3f013932abe174378789b3f080f",
      "tree": "7f0273329febf0c45b4ead44c7dc1d4afa0f49b8",
      "parents": [
        "9db49350911208ae3133ed576ebaed7caae57bd9",
        "71f41e219ae7a950eb9473e03c752827840f2e8e"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Apr 18 13:23:18 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 18 13:23:18 2017 +0000"
      },
      "message": "Merge \"Add libaudioclient_headers\" into oc-dev am: 11c0013ecd\nam: 71f41e219a\n\nChange-Id: I9ad685ceb29f7c964777853207be263a8e300066\n"
    },
    {
      "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": "bc942724f95c6e30e640e33c2b35157367714c1c",
      "tree": "92e60b5cf34f05eaa52481855639ff271880ec52",
      "parents": [
        "b4d43af4b3edd1b2c913d735221358077d39cdfe",
        "b588402d48c9634fa72e7e13ca6d6f2a0766cb98"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Apr 13 00:55:36 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 13 00:55:36 2017 +0000"
      },
      "message": "Merge \"AudioTrack and AudioRecord: getNotificationPeriodInFrames()\" into oc-dev"
    },
    {
      "commit": "b588402d48c9634fa72e7e13ca6d6f2a0766cb98",
      "tree": "89a3993904a7259ba57c1771283f9d6359faf50c",
      "parents": [
        "594bc3bd208cdb536502edfa4698fb7b068bb307"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Mar 27 15:26:14 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Apr 12 22:22:57 2017 +0000"
      },
      "message": "AudioTrack and AudioRecord: getNotificationPeriodInFrames()\n\nThis is needed for AAudioStream_getFramesPerBurst(),\nwhich is needed for callbacks to work correctly.\n\nBug: 34716038\nBug: 36489240\nTest: CTS test_aaudio.cpp\nChange-Id: I0e3f3f18a22bf6da8c288f0d2caec0bff0153f2f\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "3ab8d66ad1c47a5ee1f87ad9f5ee2666cf89b32d",
      "tree": "4e0b0664033e13a14ad1c05652b7ccded31ee87c",
      "parents": [
        "8ae038e457b0b01c4f082ff5504f8b880b087f77"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 03 14:35:09 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 07 14:46:29 2017 -0700"
      },
      "message": "Rename symbols to be more consistent\n\nBug: 37153050\nTest: builds OK\nChange-Id: I7e55a03ca8e1f22901db6c8f6f2ad32e4c95a0cd\n"
    },
    {
      "commit": "6d8018f0b7be9deec6b0acab10a0dca6e91d0fb8",
      "tree": "2ce104a9e93cd8604e6624517a818ef8ddedb241",
      "parents": [
        "eb12e8bd16208fdd3017e2d99fee721993efdaa4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 13:05:56 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 07 15:30:08 2017 +0000"
      },
      "message": "Improve audio logs and dumpsys media.audio_flinger\n\nInclude mFrameCount in shared memory corrupt error log.\n\nFix typo in log for primary audio interface.\n\nInclude the new server frame count in logs for fast tracks.\n\nAlways log when fast is successful for output tracks, as it helpful\n  (was already there for input).\n\nCleanup dumpsys for threads.\n\nBug: 37153050\nTest: builds OK, and logs contain more information\nChange-Id: I2b5b4d700e8eb7c261a3125fb03ddc00bf08537e\n(cherry picked from commit 1bfe09a0b1755a79abd32b41c0dd433b88fc260c)\n"
    },
    {
      "commit": "1bfe09a0b1755a79abd32b41c0dd433b88fc260c",
      "tree": "eec723f657fc89b21f3cfc91b27c68eceac4add7",
      "parents": [
        "a29cd562f6f5839cce7e3be2e547d19c2d27f15d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 13:05:56 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 29 11:39:04 2017 -0700"
      },
      "message": "Improve audio logs and dumpsys media.audio_flinger\n\nInclude mFrameCount in shared memory corrupt error log.\n\nFix typo in log for primary audio interface.\n\nInclude the new server frame count in logs for fast tracks.\n\nAlways log when fast is successful for output tracks, as it helpful\n  (was already there for input).\n\nCleanup dumpsys for threads.\n\nTest: builds OK, and logs contain more information\nChange-Id: I2b5b4d700e8eb7c261a3125fb03ddc00bf08537e\n"
    },
    {
      "commit": "3475822eaaaea89d8a52b7b49c9f753814c7d3e7",
      "tree": "44e9cea9046dacc39433d9a813bcfc8e946ddfcb",
      "parents": [
        "eecac2cab4fda565018237d52be4a9ca1fbc4434"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Mar 27 15:26:14 2017 -0700"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Tue Mar 28 10:39:19 2017 -0700"
      },
      "message": "AudioTrack and AudioRecord: getNotificationPeriodInFrames()\n\nThis is needed for AAudioStream_getFramesPerBurst()\n\nBug: 34716038\nTest: CTS test_aaudio.cpp\nChange-Id: I0e3f3f18a22bf6da8c288f0d2caec0bff0153f2f\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "4a71e75dc56415cda4cf33ea92d4efd914a44541",
      "tree": "78512269c0520ef9b5f0a6787966398a9a53d500",
      "parents": [
        "434dfd4927d8ae175302ad880710991512edcbdb",
        "b53dae6ea693561cd5e3dae1ec112949cb079b2c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 15 20:19:19 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 15 20:19:20 2017 +0000"
      },
      "message": "Merge \"ToneGenerator: support output sample rates beyond 65535 Hz\""
    },
    {
      "commit": "886deb506ea2938cfec40fc0dd2bff072850386b",
      "tree": "c766adb78101eaee0cf091d14cbd26f3377f14e1",
      "parents": [
        "1e039394f351ef77592689f32294a1c73840ad0e",
        "d3bb645f0b7f567b033b8664499d685f8ec10628"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 13 16:37:07 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 13 16:37:08 2017 +0000"
      },
      "message": "Merge \"Re-format to decrease the maximum line length of files to 100 characters\""
    },
    {
      "commit": "d3bb645f0b7f567b033b8664499d685f8ec10628",
      "tree": "1f1093b9594df4691cc99a2e2c81bc67ea0de136",
      "parents": [
        "0012417ddc1320c6df79258266da1e869036b211"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 05 18:14:37 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 13 16:36:17 2017 +0000"
      },
      "message": "Re-format to decrease the maximum line length of files to 100 characters\n\nTest: compiles OK\nChange-Id: Ibe663032cd390ed2bcca6dc921d47732e6e15e21\n"
    },
    {
      "commit": "b53dae6ea693561cd5e3dae1ec112949cb079b2c",
      "tree": "71174be39fb5389049e7cd2ac7b3398a632c7522",
      "parents": [
        "0012417ddc1320c6df79258266da1e869036b211"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 09:45:29 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 10 14:20:42 2017 -0800"
      },
      "message": "ToneGenerator: support output sample rates beyond 65535 Hz\n\nChanged type of ToneGenerator::WaveGenerator constructor parameter\nsamplingRate from unsigned short to uint32_t to permit output\nsample rates such as 96000 Hz.\n\nBug: 33969539\nTest: dialer tones work when output sink operates at 96000 Hz\nChange-Id: I5551409c467a4fd98ea4d5c9703b120a526a443e\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": "4ef88d7106c01f81109ee163cb6789073d80c6ae",
      "tree": "b851ebaf0b55c4d8174dd4a744352a3d4513beee",
      "parents": [
        "10cbff139360f3f642e0e3b3ccf2d463dbed22cf"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 21 19:47:53 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 24 21:05:58 2017 -0800"
      },
      "message": "VolumeShaper: Add AudioTrack restore\n\nMediaPlayer VolumeShaper can now be set before start().\n\nTest: CTS and Ducking\nBug: 31015569\nChange-Id: Idf63c167e164161b200e2467fbeb9409b3097dbe\n"
    },
    {
      "commit": "e2b43843fd12783188edd2c54188ea8d26864788",
      "tree": "baab518964134359128ed35e5ebfc36cf977cde4",
      "parents": [
        "b4d5ec0d8f3755ccb8d5ce51798c3004330e1120"
      ],
      "author": {
        "name": "Vijay Venkatraman",
        "email": "vijaykv@google.com",
        "time": "Thu Feb 02 13:35:37 2017 -0800"
      },
      "committer": {
        "name": "Vijay Venkatraman",
        "email": "vijaykv@google.com",
        "time": "Fri Feb 24 11:47:45 2017 -0800"
      },
      "message": "Moved headers from include/ to appropriate libs\n\ninclude/camera -\u003e camera/include/camera\ninclude/media/audiohal -\u003e media/libaudiohal/include\ninclude/media/AudioResampler*.h -\u003e media/libaudioprocessing/include\ninclude/media/Audio*.h,IAudio*.h,IEffect*.h,ToneGenerator.h -\u003e media/libaudioclient/include\ninclude/media/EffectsFactoryApi.h -\u003e media/libeffects/include\ninclude/media/stagefright -\u003e media/libstagefright/include\ninclude/media/nbaio -\u003e media/libnbaio/include\ninclude/media/\u003crest of files\u003e -\u003e media/libmedia/include\ninclude/cpustats -\u003e media/libcpustats/include/cpustats\n\nAdded symlinks from old location to new ones\n\nBug: 33241851\n\nTest: VNDK linked modules will need to add explicit lib dep.\nAll other modules should compile the same\n\nChange-Id: I0ecf754a2132640ae781a3cc31428fb8c0bd1669\n"
    },
    {
      "commit": "9fc8b5cd4a64ef07e84c69112461324d5c13a0b0",
      "tree": "2d058e73f09f1822108daad51948a34c420634e3",
      "parents": [
        "ed1abbfc73d4ade0ef08239fc56ac66d70a00a92"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 24 13:36:48 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 13 14:31:46 2017 -0800"
      },
      "message": "VolumeShaper: Initial implementation\n\nThe VolumeShaper is used to apply a volume\nenvelope to an AudioTrack or a MediaPlayer.\n\nTest: CTS\nBug: 30920125\nBug: 31015569\nChange-Id: I42e2f13bd6879299dc780e60d143c2d465483a44\n"
    },
    {
      "commit": "8345f77901ff4715a450c025807eac05aefda761",
      "tree": "dc43bae534d33505451b054f8c87b6ee2ef102a5",
      "parents": [
        "7364259af42a8348efe0ef5ab8b3a160dce303a3",
        "1da5859d05267b336325f2662a72c1456f61e430"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 31 05:08:19 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 31 05:08:19 2017 +0000"
      },
      "message": "DO NOT MERGE Revert \"Log audio information to ensure complete delivery\"\nam: 1da5859d05\n\nChange-Id: Ie5b427db9af0fdb8427e0985450328f3a2977013\n"
    },
    {
      "commit": "fff204c192f7e16c635a79f6a85786afb8522a3d",
      "tree": "534000ce7be1b2e04dedc0899d1aaa9f7dcbe499",
      "parents": [
        "35f537fc5aa479caa6fd9055cdc63989d029e8a3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 12 19:09:55 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 18 11:46:54 2017 -0800"
      },
      "message": "AudioTrack: Control deep buffer from AudioAttributes\n\nTest: AudioTrack CTS test, Play Movies\nBug: 30687201\nChange-Id: I6a46a05dbf3fd61c8d47dade5b4baee69b923195\n"
    },
    {
      "commit": "d7c5ec857930496bb8a1045dc8b87b2fdd99899c",
      "tree": "1febd0054f7833de4bfd877faea92b6c66a3d89a",
      "parents": [
        "67d0d7eb36e7c36d0a9dec9264c0cab832196d57",
        "4b058e7e5d58fb1bc6ba82eba94f7664e5b85706"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Jan 11 19:30:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 11 19:30:56 2017 +0000"
      },
      "message": "Merge \"Add missing nullptr checks for data.readCString() strings\" am: ce961d374f am: 238c48e42e am: 877f779979\nam: 4b058e7e5d\n\nChange-Id: Idc3298b161380e9ace8b7fcceb4339b0805a3123\n"
    },
    {
      "commit": "4b058e7e5d58fb1bc6ba82eba94f7664e5b85706",
      "tree": "786e108a34a3ac65d02aa5245f1ad19117aaef60",
      "parents": [
        "aff7bd0ca1f1e6f860e056792938985e571fc75d",
        "877f77997987212ae0fbfecb24b35c03a0573006"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Jan 11 19:25:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 11 19:25:56 2017 +0000"
      },
      "message": "Merge \"Add missing nullptr checks for data.readCString() strings\" am: ce961d374f am: 238c48e42e\nam: 877f779979\n\nChange-Id: Ic6e96b9ff3ecc609c40f8c5d5367a789b3732b7e\n"
    },
    {
      "commit": "877f77997987212ae0fbfecb24b35c03a0573006",
      "tree": "784bda81ca3055da5341cb11f86e0e0fddc06d90",
      "parents": [
        "7ceeb44566c54be121136a456142143e6bc4c4ac",
        "238c48e42e9e4daafc4cde73bc5c1856e7c10614"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Jan 11 19:20:24 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 11 19:20:24 2017 +0000"
      },
      "message": "Merge \"Add missing nullptr checks for data.readCString() strings\" am: ce961d374f\nam: 238c48e42e\n\nChange-Id: I2e9cb8ec6752506cc5445aee3d38ae92e4f5e514\n"
    },
    {
      "commit": "c694ff449bef4ca1e45a6506f34e66c613757311",
      "tree": "36f66657e3389dbb6b30b7e122ff415f9ce5f40c",
      "parents": [
        "20adbc00032d6df980a3300f1ae974610f16f81f"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Mon Jan 09 23:27:29 2017 -0800"
      },
      "committer": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Jan 11 16:51:37 2017 +0000"
      },
      "message": "Add missing nullptr checks for data.readCString() strings\n\nProtect the Audio Policy Manager by adding extra checks\nfor data.readCString() strings when parsing / decoding\na Binder transaction.\n\nAlso:\n * Moved audio_is_output_device() / audio_is_input_device() checks\n   inside handleDeviceConfigChange()\n   from the AudioPolicyInterface to the AudioPolicyManager\n * Removed similar redundant checks inside\n    AudioPolicyService::setDeviceConnectionState()\n\nTest: code compilation\nChange-Id: Ib32a28ba2669b73aaf32b31bb18f41c8dd7d2605\n"
    },
    {
      "commit": "c02c861e7377ab63d3d59b6220afafd625f53aaf",
      "tree": "b6d97a3748b3e61e4aa9a4a32f74f7bb4410a267",
      "parents": [
        "ad880540d13db9e39c94496fd9bc89dfbfd1e1f5",
        "cb680c9cc4009261dd2fbe40a1a585737746589d"
      ],
      "author": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Tue Jan 10 22:03:37 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 10 22:03:37 2017 +0000"
      },
      "message": "Merge \"Convert Android.mk in libaudioclient to Android.bp\" am: 0da9804f12 am: 05dfbecf27 am: 19031e678e\nam: cb680c9cc4\n\nChange-Id: If508ad957671ed199bd25fba58cd9af2a261fc3a\n"
    },
    {
      "commit": "cb680c9cc4009261dd2fbe40a1a585737746589d",
      "tree": "a87683334274fb029239fb23404d55f7e1668236",
      "parents": [
        "9033512273129383c8cc78beee61f17b50ffff49",
        "19031e678e977a25490be092dc4f7005e396a9de"
      ],
      "author": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Tue Jan 10 21:58:07 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 10 21:58:07 2017 +0000"
      },
      "message": "Merge \"Convert Android.mk in libaudioclient to Android.bp\" am: 0da9804f12 am: 05dfbecf27\nam: 19031e678e\n\nChange-Id: I528e03e58d8a34316cf8270d3bb2b5b5d828eee1\n"
    },
    {
      "commit": "19031e678e977a25490be092dc4f7005e396a9de",
      "tree": "26dcc07c19dd59bbea881dedfbbcfebaea757bf2",
      "parents": [
        "8790fb2613b493ab5ac3470deb522f79415eb6fe",
        "05dfbecf27a138d42c82160739dadf0f6b26c518"
      ],
      "author": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Tue Jan 10 21:53:37 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 10 21:53:37 2017 +0000"
      },
      "message": "Merge \"Convert Android.mk in libaudioclient to Android.bp\" am: 0da9804f12\nam: 05dfbecf27\n\nChange-Id: I855fe9d7f9d6302eda5e5f3d747a10b2d3b3b193\n"
    },
    {
      "commit": "d92d34e86cca348097cea2afa3ddb009572b9303",
      "tree": "dff68900160963ab0800da0af99d249ede268203",
      "parents": [
        "98d1217d58b1879eccee445c3510a8c563a61d11"
      ],
      "author": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Thu Dec 08 15:44:14 2016 -0800"
      },
      "committer": {
        "name": "Jack He",
        "email": "siyuanh@google.com",
        "time": "Tue Jan 10 11:13:25 2017 -0800"
      },
      "message": "Convert Android.mk in libaudioclient to Android.bp\n\n* Since system/bt depends on this library, it needs to be converted to\n  Android.bp before the conversion in system/bt can be continued.\n* Majority of work is done by androidmk Android.mk \u003e Android.bp\n* Fixed sanitize arguements\n* Removed LOCAL_EXPORT_C_INCLUDE_DIRS as Android.bp only supports\n  exporting sub-directories of current Android.bp file\n* Removed frameworks/av/media/libmedia/aidl include path as it no longer\n  exists and Android.mk failed to check that\n* Removed include path for audio-utils as it is being automatically\n  included when we link against libaudioutils\n* Android.mk file must be deleted as a library of the same name can only\n  be defined once in either Android.bp or Android.mk\n* A library defined in Android.bp can be used by either Android.bp or\n  Android.mk files. However, a library defined in Android.mk cannot be\n  used by Android.bp file. Therefore, for system/bt to link against this\n  library in the Android.bp, this library must be converted first\n\nBug: 32958753\nTest: Code compilation, no user visible effect\n\nChange-Id: I2ae87a1151ed4235122c7774096c2dbff8b1fc62\n"
    },
    {
      "commit": "5fd7ccaeba88da7e170f067bfd754b3f64ff5566",
      "tree": "5e2a0f1495c8ea9a68598cea2028e3c092049e3a",
      "parents": [
        "0ce91633d8a4f5dcb3706a7734c02ddb5099eefd",
        "c6fe843463abc965f3082738c8812506cf5ba232"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Thu Dec 29 00:25:36 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 29 00:25:36 2016 +0000"
      },
      "message": "Merge \"Add a mechanism for handling audio device configuration change\" am: 549e431947 am: a1b496ac35 am: fcc1132010\nam: c6fe843463\n\nChange-Id: I7812e3e4426e526b886c1a414ac8ddec7649291e\n"
    },
    {
      "commit": "c6fe843463abc965f3082738c8812506cf5ba232",
      "tree": "8818a3ad8b5a4f776510672fb5100e60b2ffba20",
      "parents": [
        "4532a36bf509d822a77cbc1b7837f9f1158c7796",
        "fcc113201018703727a0d6b17dd165efce00db1a"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Thu Dec 29 00:19:05 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 29 00:19:05 2016 +0000"
      },
      "message": "Merge \"Add a mechanism for handling audio device configuration change\" am: 549e431947 am: a1b496ac35\nam: fcc1132010\n\nChange-Id: I4c25c229b0bb8a385a231c7a9f444b923bb46456\n"
    },
    {
      "commit": "fcc113201018703727a0d6b17dd165efce00db1a",
      "tree": "70eca9738ea18322a92ebc4bb94a0894e1735034",
      "parents": [
        "1121dfb5f30a04393ddce02fe7808589fa9e3e25",
        "a1b496ac35a8bbdcae6b0315e91a5cf52b2af00d"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Thu Dec 29 00:12:05 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 29 00:12:05 2016 +0000"
      },
      "message": "Merge \"Add a mechanism for handling audio device configuration change\" am: 549e431947\nam: a1b496ac35\n\nChange-Id: Ie8871fad611dc16d7cd08a85e4cd748cf3c4650d\n"
    },
    {
      "commit": "f862bc6a7a35054e38cb50fa16ae7a07f683ee01",
      "tree": "12f33970e876ba71df008d7e38a58984c5b357b5",
      "parents": [
        "a05da2eea41306d526ce645ea44aa2e05054f651"
      ],
      "author": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Mon Dec 26 18:57:22 2016 -0800"
      },
      "committer": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Wed Dec 28 14:35:01 2016 -0800"
      },
      "message": "Add a mechanism for handling audio device configuration change\n\n* Added new call handleDeviceConfigChange() to the Media Framework.\n  That call can be used when there are device configuration changes\n  (e.g., Bluetooth A2DP codec configuration has changed).\n* Added new method AudioPolicyManager::handleDeviceConfigChange().\n  That method toggles the UNAVAILABLE/AVAILABLE connection state of the\n  device, so it can be reconfigured as appropriate - e.g., the audio\n  feeding parameters can be updated.\n* Fix ALOGVV compilation errors when extra logging is enabled.\n\nTest: A2DP streaming to headsets\nBug: 30958229\nChange-Id: I388abbbb3ec4d1a003b441cb0c77e00d80cad668\n"
    },
    {
      "commit": "0ca38308c75568d571016c0e24fb8246bbf239b6",
      "tree": "23d77b77109ca92dfa41a91160ac62cf244c3820",
      "parents": [
        "c7e4f8e44f40e43c884b87f7ed7a8c0caa365352"
      ],
      "author": {
        "name": "Kiran Kumar Krishna",
        "email": "kiran@motorola.com",
        "time": "Tue Nov 01 07:50:22 2016 -0500"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 11:49:23 2016 -0800"
      },
      "message": "AudioRecord: fix AudioRecordThread crash upon exit\n\nIn case of error during openRecord_l(), there is a possibility\nthat a newly created AudioRecordThread is resumed by requestExit()\njust after entering the Thread class _threadLoop() but before\nentering the class threadLoop(). In this case, processAudioBuffer()\nis executed once with mCblk \u003d\u003d 0 and we assert.\n\nTest: test case at bug\nBug: 29993798\nChange-Id: I15d4f138218f6f01a020c4fc568a5b4831cb92a7\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": "78cbdfa7b68615cc61573f39a87563d891aed652",
      "tree": "970e75d4a0bf67c437fcaf889e236fc0e1039bf9",
      "parents": [
        "1029d18fc055b6831c46f365215552bda8b793db",
        "1f82f9569d257adc1d6d1c9a58e542c3c99c0109"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 07 20:33:21 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Dec 07 20:33:21 2016 +0000"
      },
      "message": "Log audio information to ensure complete delivery\nam: 1f82f9569d\n\nChange-Id: I8c3045b0331a97b98168897d03ec1dc55235a59e\n"
    },
    {
      "commit": "abf6ff26df459d991cdbc2dca3b78046c97469db",
      "tree": "9e6ab352b182d73d3508c32c81090ec9e355f5a2",
      "parents": [
        "26a8ba63104f3c7d4e0a750b58d56ad76dbce373",
        "2148bf0e79c436b8764b9edc4c8f2730cce98a32"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 04:33:19 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 03 04:33:20 2016 +0000"
      },
      "message": "Merge \"Log audio information to ensure complete delivery\""
    },
    {
      "commit": "2148bf0e79c436b8764b9edc4c8f2730cce98a32",
      "tree": "8d380e3f69e99d4ebf76c08c51a5833dc0eca2ff",
      "parents": [
        "b54cab90d4bf84745a57232080d72a50c3b731da"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 28 19:01:02 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 01 17:36:41 2016 -0800"
      },
      "message": "Log audio information to ensure complete delivery\n\nTest: Audio playback\nBug: 30572472\nChange-Id: Ibad6fc202692cd3480ae726627252afdead083f3\n"
    },
    {
      "commit": "c64e124bca8b7813ecea19d38452dd55fee4082f",
      "tree": "de5e16718fefa194781ee1a7c57c4844fc953e97",
      "parents": [
        "559dcf59ff136768b97a7bffa10b128d06caef01",
        "cbc7183fbbb30af5611795740e0db5affb7c9e29"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Wed Nov 30 20:58:28 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 30 20:58:28 2016 +0000"
      },
      "message": "Fix security vulnerability: potential OOB write in audioserver am: e275907e57 am: 01e854056a am: 3e8ab60b7f am: 9161586309 am: ad29b47d91 am: 8b9b199891 am: 72729c449d am: 97bb7fe084 am: 3d6aada999 am: ffe82a3b4a am: ec601622f8 am: f50635bdc4 am: f1e829a54e am: a2e95f5c9b am: c6239b0d4d\nam: cbc7183fbb\n\nChange-Id: I7a13718ab24d1c4c9c64d83e148031af046921e1\n"
    },
    {
      "commit": "c6239b0d4dfa730c122f2de214dfd2e62f7f8eea",
      "tree": "8ee8f273638f8058d32d2d9bcaf9b704b82f557c",
      "parents": [
        "379254d561700c55fae6292428aefa20e45b26f6",
        "a2e95f5c9b1613cce1d2bf0f0e35b0addd137906"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Wed Nov 30 20:21:25 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 30 20:21:25 2016 +0000"
      },
      "message": "Fix security vulnerability: potential OOB write in audioserver am: e275907e57 am: 01e854056a am: 3e8ab60b7f am: 9161586309 am: ad29b47d91 am: 8b9b199891 am: 72729c449d am: 97bb7fe084 am: 3d6aada999 am: ffe82a3b4a am: ec601622f8 am: f50635bdc4 am: f1e829a54e\nam: a2e95f5c9b\n\nChange-Id: Ic25053a111913dfd4490633b9f0eff1e7fe1d359\n"
    },
    {
      "commit": "41cbae72e4e223c15ba2d85b3c27ed31d1bf5f86",
      "tree": "2a7944ba766d375d83f4173c2e82e3a229be9e52",
      "parents": [
        "f348da28b5bba5022fdf13fcadb7b2eb65c2a853",
        "e813ef9388e9f0b821c0a434521f0e194288c8ad"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sat Nov 12 00:03:55 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Nov 12 00:03:56 2016 +0000"
      },
      "message": "Merge \"AudioRecord: fix AudioRecordThread crash upon exit\""
    },
    {
      "commit": "e813ef9388e9f0b821c0a434521f0e194288c8ad",
      "tree": "b8ceeaf5896e075055fafdac5e768a0e9c49a45a",
      "parents": [
        "afe53b6b9d8e0f295112a896261cc428b41b361d"
      ],
      "author": {
        "name": "Kiran Kumar Krishna",
        "email": "kiran@motorola.com",
        "time": "Tue Nov 01 07:50:22 2016 -0500"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 11 14:00:34 2016 -0800"
      },
      "message": "AudioRecord: fix AudioRecordThread crash upon exit\n\nIn case of error during openRecord_l(), there is a possibility\nthat a newly created AudioRecordThread is resumed by requestExit()\njust after entering the Thread class _threadLoop() but before\nentering the class threadLoop(). In this case, processAudioBuffer()\nis executed once with mCblk \u003d\u003d 0 and we assert.\n\nTest: test case at bug\nBug: 29993798\nChange-Id: I15d4f138218f6f01a020c4fc568a5b4831cb92a7\n"
    },
    {
      "commit": "1f12a8ad958344c50733b948628ffa06db9c5bc6",
      "tree": "d9ce12941c1461657bf32779f6d18605defd5cf1",
      "parents": [
        "062bfceaefab29f0f71db7d5a248b3f5f0572b6a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 07 16:10:30 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 08 16:43:39 2016 -0800"
      },
      "message": "Audio: Use uid_t for uids\n\nTest: Power manager shows correct uids for audio\nBug: 32713790\nChange-Id: If5337e17283268f74dc0f00cc66ece9153d680ef\n"
    },
    {
      "commit": "4ea929819e23ecd388e1edce25a10631ee53e9e3",
      "tree": "23738cbafefdd9f9dcc839a01525533e0045c554",
      "parents": [
        "5c4ca88476ea3c26b88fc13c281db9eb20913511",
        "795a2a75542d25eefa56bebc388340ee15fdff5c"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 07 17:21:49 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Nov 07 17:21:49 2016 +0000"
      },
      "message": "Split libmedia into libmedia and libaudioclient\nam: 795a2a7554\n\nChange-Id: Ic08eddc5650d3f5d344ebcf93ad98ae5bb236c8c\n"
    },
    {
      "commit": "795a2a75542d25eefa56bebc388340ee15fdff5c",
      "tree": "5b595a348342c3ad28549329ba5653ad62db75d1",
      "parents": [
        "bf26c4eb629b514648420916fd1db40333c30ea5"
      ],
      "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 19:31:54 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": "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"
    }
  ]
}
