)]}'
{
  "log": [
    {
      "commit": "3a85e5623164d7dce0912224962d6ad85bdffea4",
      "tree": "6092d1cc4603c12810f3d39c833a4ff4e223b0d5",
      "parents": [
        "77994d70fe8d4805126361bbd0afbcac1cd1d2f0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 11 18:08:51 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 11 18:08:51 2017 -0700"
      },
      "message": "fix mmap fd leak inn HIDL audio stream\n\nDo not dup the fd received from HAL in StreamHalHidl::createMmapBuffer()\n\nBug: 38232872\nTest: verify that MMAP streams can be opened and closed multiple times\nChange-Id: I4813f78bd1ae1e8c705d1769a59710c9437bf246\n"
    },
    {
      "commit": "4ec4e6b1073b0dc1b608aeeaf4e3129ea1a725c8",
      "tree": "f42a53bfd8e47fb76e9721d83c4df808bb5691ef",
      "parents": [
        "832fcce0c4bdc748bc4cb75101615e77769ec4e8",
        "d2ae9cd57cfbb6f2f4dd0a91dbc7ea2e9e5fc447"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 03 18:49:48 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 03 18:49:48 2017 +0000"
      },
      "message": "Merge \"audiohal: Check for EINTR and retry when waiting for EventFlag\""
    },
    {
      "commit": "d2ae9cd57cfbb6f2f4dd0a91dbc7ea2e9e5fc447",
      "tree": "457d4d95e4dd0575af0e884ecc8124e1f9465647",
      "parents": [
        "881fc5c65fc7d8c56af0dea181d751fcec3a2b1c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 03 09:15:01 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 03 09:15:01 2017 -0800"
      },
      "message": "audiohal: Check for EINTR and retry when waiting for EventFlag\n\nEINTR can be returned in the case when a futex wait has been\ninterrupted by a signal. We need to retry in that case.\n\nBug: 35813113\nChange-Id: I7eaee5298f5c0bc5cd62309c3fd8349ee3eae629\nTest: make\n"
    },
    {
      "commit": "d15f127a54b4b04a89ca07f52c0508326bf46a92",
      "tree": "69c682b727a6d95f4ec54536957a207c7ea9d53c",
      "parents": [
        "881fc5c65fc7d8c56af0dea181d751fcec3a2b1c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Feb 28 09:10:43 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Feb 28 09:10:43 2017 -0800"
      },
      "message": "audiohal: Add diagnostic message to check the number of bytes written\n\nTemporary change for investigating b/35813113. Need to test\nthe hypothesis that sometimes either legacy HAL, or the wrapper\nreports more bytes written than being asked for.\n\nBug: 35813113\nChange-Id: I6916d39e40d332b45a95aad05674009266e9cd96\nTest: make\n"
    },
    {
      "commit": "23feba2593973e8ab251db8b63d8c2e228acbd51",
      "tree": "816f326cb47823013305838386933af97fae9f06",
      "parents": [
        "9b2cd918052fdfda587c45b7b2b9a9e132ce6b7b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 23 11:00:55 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 23 11:06:49 2017 -0800"
      },
      "message": "audiohal: Enforce flush of hwbinder commands queue after cleaning client refs\n\nIn binderized mode, the exact time of destroying the server object\nis not defined. Enforce destruction by flusing hwbinder commands\nqueue after releasing the last client reference.\n\nBug: 35394629\nTest: capture trace while following repro steps, verify that server-side object\n      gets destroyed\n\nChange-Id: Id2756cab0f36ed4eaf290d3f5a1c750c9c75b1d3\n"
    },
    {
      "commit": "b4e779137c1849b7b3b09ee782e8bc14de9e2655",
      "tree": "b739c1807605f847f8227c44b59d1ef59cb9c771",
      "parents": [
        "2d6140b8dce137f89029b12468e25d5911f23420"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Feb 15 10:23:09 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Feb 15 10:28:20 2017 -0800"
      },
      "message": "audiohal: Remove timeouts in eventflag waits\n\nHaving a timeout is causing issues on hal driver thread startup.\nIf thread startup is delayed, then eventflag wait exits with\ntimeout. This leaves fmqs in an intermediate state, and a pending\nwakeup for the server enables the client and the server to run\nin parallel, causing races.\n\nThe legacy HAL interface didn\u0027t have any timeouts for read / write\noperations, so there is no good reason for having them in\nthe wrapping interface.\n\nThe only difference with legacy HAL is that Treble HAL can be in\na separate process, and can crash, but this is handled separately.\n\nTest: Check logs on startup, must be no fmq read / write errors\nBug: 35346610\nChange-Id: Id3f79d31305afab194a4543bfb4501665518a27b\n"
    },
    {
      "commit": "83f042776b131b149f803fff6ab184ae2c4d98cd",
      "tree": "d3c78a3313c94799261a927c84cddc7c0ebdd398",
      "parents": [
        "ba05ff122c080be9fafe1f8112052cacfcd2b6fe"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Feb 07 10:45:09 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 09 15:51:36 2017 -0800"
      },
      "message": "audioflinger: Adjust priority of hal threads\n\nHALs are prohibited from using framework binder, and there is\nno equivalent scheduling policy service in hwbinder. Thus, in order\nto match priorities of FastCapture / Mixer threads with their\ncounterparts in the HAL, it is needed to request the priority boost\nfrom audioflinger on behalf of the HAL.\n\nTest done to verify the priority was correctly set.\n\nBug: 34131400\nChange-Id: If8b6b031c0fcba771fae901a5b8e7da89b3a1570\nTest: check priority match between audioflinger\u0027s and hal\u0027s threads\n"
    },
    {
      "commit": "c8381909c97dd939706d8b1b9069dcfb4e2bf52f",
      "tree": "9736c5a84c73424258f0e64d68b5cfc7009eec76",
      "parents": [
        "67999b020e1eec218f5aa669ebc969636f53956b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jan 31 13:56:25 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Feb 03 09:03:08 2017 -0800"
      },
      "message": "audiohal: Make sure audio data transfer related commands go via FMQ\n\nWhen outputting audio, the framework issues several HAL calls\nfrom the same thread that writes into data FMQ. These calls\nalso need to be served on the same thread that writes audio data\nto HAL. The same thing happens when audio input is commenced.\n\nAdd a command FMQ for passing different commands to the HAL thread.\nThis way, depending on the calling thread, the same call may go\neither via hwbinder or via the command queue.\n\nThis dramatically reduces jitter in RTT measurements (although\ndoesn\u0027t improve the latency).\n\nBug: 30222631\nTest: scripted RTT app\nChange-Id: Ic212e33d4e2b1cf404973fe9d60762523eef9f40\n"
    },
    {
      "commit": "efbd36c8f57f41b0ef061cde5a88a3d384538fc9",
      "tree": "268b180eb5dc1bb13d783fb3b91c0f577b26686d",
      "parents": [
        "217fc01b390d88993c1c94669b251f952fe2c44e",
        "085ae9a0c72e1d1ed76533973b20ead13f5b3cac"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 23 15:56:43 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 23 15:56:44 2017 +0000"
      },
      "message": "Merge \"Cleanup MQDescriptor usage with typedefs\""
    },
    {
      "commit": "d635199dcaae89ac50391bdfee4a12d4c88c519d",
      "tree": "c3ade6e5b14b85afca693969e2f860071c4cb0cb",
      "parents": [
        "67d0d7eb36e7c36d0a9dec9264c0cab832196d57"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 12 09:35:16 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 12 09:39:17 2017 -0800"
      },
      "message": "Update StreamHalHidl to use IStreamOut.WriteStatus new field\n\nUpdated the client code to use the new field:\nIStreamOut.WriteStatus.presentationPositionRetval for providing\nlegacy-compatible results when calling \u0027get_presentation_position\u0027\nimmediately after \u0027write\u0027.\n\nBug: 30222631\nTest: Loopback RTT, media CTS\nChange-Id: Idf3f1d29288ddf17a5015f96291648d64d124ec7\n"
    },
    {
      "commit": "085ae9a0c72e1d1ed76533973b20ead13f5b3cac",
      "tree": "0d86fd55c287d412d682b6877e18a33b518373b1",
      "parents": [
        "db057a5a6556f4ea81b710fc90ab6e8816d1525e"
      ],
      "author": {
        "name": "Hridya Valsaraju",
        "email": "hridya@google.com",
        "time": "Tue Jan 10 09:42:17 2017 -0800"
      },
      "committer": {
        "name": "Hridya Valsaraju",
        "email": "hridya@google.com",
        "time": "Tue Jan 10 09:43:16 2017 -0800"
      },
      "message": "Cleanup MQDescriptor usage with typedefs\n\nTest: mm\nBug: 34054917\n\nChange-Id: Iccfed3af89f3527318c1c3621b6f26ebd6a2e970\n"
    },
    {
      "commit": "e83be8af690ef1ac820a63414d522e77ca9d4db6",
      "tree": "1d485de3ff2b31b17acb29c10673b1790e619012",
      "parents": [
        "db057a5a6556f4ea81b710fc90ab6e8816d1525e"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Jan 06 11:06:33 2017 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Jan 09 10:50:58 2017 -0800"
      },
      "message": "Remove usage of getStatus.\n\n- remove from libaudiohal\n- remove from services/radio\n- remove from soundtrigger\n- remove from omx\n\nBug: 31348667\nTest: compiles\nChange-Id: I75bb7b7388527dacfdc5bf128712cb8690bc286b\n"
    },
    {
      "commit": "e1c4b5d7a94c21b8ce0c5707b4af84de596fbb79",
      "tree": "8c448787f6c4f7bfe7647cc32601350247d4066a",
      "parents": [
        "2b934d36939c571a47cc972670176bc0356c54be"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 22 09:22:45 2016 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 04 20:50:54 2017 -0800"
      },
      "message": "Re-implement HIDL stream read and write using FMQ\n\nResult: no hwbinder calls due read / write session.\n\nTest: make, perform Loopback RTT, check traces\nBug: 30222631\n\nChange-Id: I4a8792525ec374111302cfd5c0a2e41f9f4cc418\n"
    },
    {
      "commit": "b8753077cf128ad6492c10e632e118333eb00aee",
      "tree": "3dfdac2ba745d9ddea48c4ca7012e5a77e1705f8",
      "parents": [
        "be154ab3306c7629ae568a88512700a5d9bc2668"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 21 12:04:10 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 21 12:04:10 2016 -0800"
      },
      "message": "fix ENABLE_TREBLE build broken by commit af35aadb\n\nTest: build marlin-eng with and without ENABLE_TREBLE\nChange-Id: Ia8cd2c8b01e2e14557b65ae8ce9c9c4827f596f5\n"
    },
    {
      "commit": "af35aadb7ab558035b6cf45bd3930ecaa3a3b330",
      "tree": "ef709fefc01bbf3efb1f0bcddd9ecee0920977e4",
      "parents": [
        "e2bc75d146276c3cfe2b349073cf46f7706fa38d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 14:25:36 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 20 12:57:13 2016 -0800"
      },
      "message": "audio HAL: implement mmap stream functions\n\nBug: 33398120\nTest: make marlin-eng with ENABLE_TREBLE true\n\nChange-Id: I10df5440b9946398a73a7ee309eca860eae0bfcd\n"
    },
    {
      "commit": "f558e0218d2677a813c9c600886f673894eec927",
      "tree": "a2e02a7e9999fe3eb08071d09acd30d9e50f87a8",
      "parents": [
        "d71f16268227c15a0ac2043e15900db5df2c417d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Nov 14 17:45:17 2016 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 01 09:36:07 2016 -0800"
      },
      "message": "libaudiohal: Implement simple HIDL client\n\nThis client requires both HIDL client and server to be of the same\nABI version (e.g. 32-bit).\n\nEffectHalHidl::process and EffectHalHidl::processReverse are stubs.\n\nSome extra warnings are logged due to unimplemented functions\nin the legacy HAL.\n\nBug: 30222631\nChange-Id: Id074131dec6d6c4f1031695abcf3ea066e92a5af\nTest: Play Music (play / EQ), YouTube, Loopback RTLT, Ok Google on N5X\n"
    }
  ]
}
