)]}'
{
  "log": [
    {
      "commit": "ed99c2b5a99a8bfc163a6ffa0b767c82032b09b5",
      "tree": "83282572ca34b0e9c03acf1f5d5f39336e74cac2",
      "parents": [
        "ae9f2761b79b112f42c285a288b3ecb7f919b345"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 12 08:31:24 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 15:42:28 2016 -0800"
      },
      "message": "NBAIO: re-implement NBAIO Pipe and MonoPipe using fifo\n\nAlso removed const from NBAIO_Sink::availableToWrite() because\nat least one implementation can no longer implement the const-ness.\n\nTest: normal mixer, tee sink, and remote submix still work\nChange-Id: I8461177efdf53bba8295b147e97835b018804903\n"
    },
    {
      "commit": "53dbe77b9f50cdd0de88b9d25dd643e90c8ba68b",
      "tree": "c69d11cf3119aaa816cea8a59cc0b63f52a53e69",
      "parents": [
        "81879df8dc51df4d8a3880349e9e1e6b5e3cebfb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 06 10:46:38 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 07 09:12:17 2015 -0800"
      },
      "message": "Move roundup from frameworks/av to system/media\n\nChange-Id: I1083ab739e445e5bd3e3082fc1d3a20cc19601d5\n"
    },
    {
      "commit": "c26d923712a59e669d18191d93fbe3696789d592",
      "tree": "735e84b0df3d43ff26b192e89beb756ac952b4bc",
      "parents": [
        "110135b9610fee8bfa5bac2d9ef4fc4c24991c36"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 09 13:37:29 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 09 16:34:46 2014 -0700"
      },
      "message": "Allow placement of Pipe buffer to be specified\n\nChange-Id: I2f6b68089ecfe85cd975d29ad0d0afd13c487002\n"
    },
    {
      "commit": "4d693d6b8cc1283f92f5301daf19a07abc772a2b",
      "tree": "d377025ddacd76f5e923390236a70424897fdf6e",
      "parents": [
        "ac3e9db88ddb1f24bc6c8fb744a37dfdeec332bb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 07:53:11 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 08:40:43 2014 -0800"
      },
      "message": "Use mFrameSize instead of mBitShift\n\nChange-Id: Idac335ae70cc9300bb3325839fe8ef1e9e097245\n"
    },
    {
      "commit": "72e54af9fcdc4754914fe2bf8de699523538b315",
      "tree": "7fe0f7ca51dbaff80125ea7b12a7a0cc052315e0",
      "parents": [
        "e983e0a0017fce81dc3d9bea36f5abb7b7bce40b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 09:37:35 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 10:53:38 2014 -0800"
      },
      "message": "Use const NBAIO_Format\u0026 in parameter lists\n\nThis is in preparation for changing the typedef to a struct.\n\nChange-Id: I8d73a6b29580c65105afd78f24db7e2f4a1eb872\n"
    },
    {
      "commit": "2dd4bdd715f586d4d30cf90cc6fc2bbfbce60fe0",
      "tree": "d0f594b402b6d2a4de89386c30c3db4adab89894",
      "parents": [
        "0a24726a64ba1c50aa6ee1610de2d80602d49fe6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 29 11:10:32 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 10:53:37 2012 -0700"
      },
      "message": "Move libnbaio out of AudioFlinger\n\nlibnbaio is now a separate shared library from AudioFlinger, rather\nthan a static library used only by AudioFlinger.\n\nAudioBufferProvider interface is now also independent of AudioFlinger,\nmoved to include/media/\n\nChange-Id: I9bb62ffbc38d42a38b0af76e66da5e9ab1e0e21b\n"
    },
    {
      "commit": "010662326b9c43c703725f933e95e0897f8a6bdd",
      "tree": "29a39db792c50d29f266d9df86af2d1de2d4c752",
      "parents": [
        "a1472d9883e35edd280201c8be3191695007dfd4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 27 11:50:44 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 02 07:44:17 2012 -0700"
      },
      "message": "Non-blocking audio I/O interface, WIP\n\nYet another abstraction similar to AudioTrack::Buffer and AudioBufferProvider,\nbut with support for streaming, non-blocking, and eventually PTS.\n\nThis is intended to be used as follows:\n - primary HAL output stream implements a Sink\n - primary HAL input stream implements a Source\n - Pipe implements a Sink\n - PipeReader implements a Source or TimedSource (not shown yet),\n   which supports \"read at PTS\"\n - fast AudioTrack on server side will implement a Source using cblk\n - normal AudioTrack on server side will not be changed initially\n - fast AudioRecord on server side will implement a Sink using cblk\n - normal AudioRecord on server side will not be changed initially\n - fast mixer thread will read from Sources and write to a Sink,\n   or (unlikely) implement a Source and multiple Sinks\n - Visualization and PCM logger will read from Source or TimedSource\n - A2DP normal mixer will be connected directly to its output stream\n   and there will be a kind of OutputTrack for duplication that will\n   read from a Sink with non-blocking write fed by the fast mixer.\n\nPatch set 3 changes:\n - Add more implementations of NBAIO interfaces:\n   added SourceAudioBufferProvider, MonoPipe, MonoPipeReader.\n - Added Format_sampleRate and Format_channelCount.\n - Extract out the roundUp() method.\n - Respond to most comments from previous code review.\n - The new classes are untested.\n\nPatch set 4 changes:\n - Fix bugs in MonoPipe::write() and MonoPipeReader::read()\n - Fix bug initializing mFrameBitShift too early\n - renamed roundUp() to roundup()\n - Fix Android.mk\n - Add LOG_TAG an LOG_NDEBUG, use ALOG_ASSERT and utils/Log.h instead of assert\n - Fix build warnings\n - Move constructor and destructor bodies from .h to .cpp\n - Line length 100\n - Following naming conventions for #include double-include protector macros\n - Include what you use\n - More NBAIO logging\n - MonoPipe write can be blocking\n\nPatch set 5 changes:\n - Address code review comments\n - Use a static library so unused implementations don\u0027t take memory\n - Comment out libsndfile dependency\n - Remove debugging LOGV and LOG_NDEBUG\n\nPatch set 6 changes (would be 6 at old location, actually 2 at new location):\n - Address code review comments on patchset 5\n - For MonoPipe, allow the full pipe to be used, no need to omit one slot\n - Don\u0027t do atomic releasing stores unless needed\n\nStill to do:\n - I\u0027m not happy with the Pipe class names\n - Update build/ for new static library?\n\nChange-Id: Ie6c61f05ce06b676b033be448a8ef9025a2ffcfd\n"
    }
  ]
}
