)]}'
{
  "log": [
    {
      "commit": "d79072e9dff59f767cce2cda1caab80ce5a0815b",
      "tree": "cab9cab36ddf4bb61675c4508d923b283fd3edd6",
      "parents": [
        "a7b723715bab4ddf6db364c825135a9bc003c7c0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 06 08:41:20 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 25 15:34:04 2016 -0800"
      },
      "message": "Remove TimedAudioTrack and associated code\n\nBug: 8278435\nChange-Id: I095c1a4888e645e14d93b0b15fbef4524a831ca1\n"
    },
    {
      "commit": "0f6a0435713c435e1aaeacbfd9ce7abb6a5b19a9",
      "tree": "fc94098dd19cc6b1959df58ff4e8a7384d4d96d0",
      "parents": [
        "77342f72fdf96603938a95fcbb9888ec90e71e68"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jun 18 16:32:00 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Jun 20 12:43:37 2014 -0700"
      },
      "message": "libnbaio: 64-bit compile warnings\n\nChange-Id: I9517c32193031dcc7af7b2104e985d66805b84aa\n"
    },
    {
      "commit": "55e599daff7712142095f546b7e5bf2dcda807a8",
      "tree": "255a9372144a9ad83b4560f12f02f29903aa3252",
      "parents": [
        "f69f9869514730aebe5724c461768507084dfff7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 10:54:55 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 07 08:39:09 2014 -0800"
      },
      "message": "Miscellaneous cleanup for NBAIO\n\nFinish removing Format_frameBitShift\nFix type of mFrameSize\nAdd FIXME\n\nChange-Id: I02039b97cb93af1a180e88f6575210bd752faf20\n"
    },
    {
      "commit": "d42bc56e5883274edf1f0b45cad5c324eceff9b8",
      "tree": "24770cf4f093fa89dbcb4bb3b400e96806dd0f40",
      "parents": [
        "43d9b8706b3916ee0f1d745a2832f792c3406ca8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 08:02:27 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 09:08:11 2014 -0800"
      },
      "message": "Remove checks for specific sample rates and channel counts\n\nChange-Id: Idadfe7c11dc831e82f95015f02dd9b9861b401c8\n"
    },
    {
      "commit": "c326e1c3d122917462f1cda4f03d9c639ad92902",
      "tree": "28c1092bd5c9ca835477f45e0d159fc3c828cfff",
      "parents": [
        "983f0578ccd2928af40c9689f6fe90110d02b92e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 08:01:38 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 09:04:38 2014 -0800"
      },
      "message": "Remove Format_frameBitShift()\n\nChange-Id: Iae2e80a7330c5dd0f70a263051aa44c23cfe3541\n"
    },
    {
      "commit": "983f0578ccd2928af40c9689f6fe90110d02b92e",
      "tree": "6db4203ee5171fe4f9a9ca2e8e5877a5c299bd95",
      "parents": [
        "2b7b910f4b417ab3930379298f538d0dfc857e88"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 08:23:11 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 08:52:32 2014 -0800"
      },
      "message": "Re-implement Format_frameSize(), to support non-power-of-2\n\nChange-Id: I671bd4f03ce70de685770fd7992e2e023133c9b4\n"
    },
    {
      "commit": "2b7b910f4b417ab3930379298f538d0dfc857e88",
      "tree": "75cb553bb49adfbd8e99f7d265ffe070a27b0e97",
      "parents": [
        "f95a3c4122d67273d930c7d83c3df99f136603ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 08:02:51 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 08:52:06 2014 -0800"
      },
      "message": "Split mPacked into 4 separate fields\n\nChange-Id: I940324dce9b51fd8d7e2e362e12ad74b70e658dd\n"
    },
    {
      "commit": "f95a3c4122d67273d930c7d83c3df99f136603ed",
      "tree": "3aa730e7dd0db5481ed18f4e59745a9dcb53413c",
      "parents": [
        "4d693d6b8cc1283f92f5301daf19a07abc772a2b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 07:59:49 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 08:40:49 2014 -0800"
      },
      "message": "Add format parameter to Format_from_SR_C\n\nChange-Id: I891138b7754342fe2a4f02de30ee616dbd078474\n"
    },
    {
      "commit": "4d7b3f876b21997680ae32a340d746ed1cae6ab1",
      "tree": "85983b9a71a2c18e6ec2748505ca092aa2f08b99",
      "parents": [
        "1ec712f180072a7eb2131be09862921ae62dc2b4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 10:38:16 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 17:11:01 2014 -0800"
      },
      "message": "Change Format_frameBitShift() API for non-power-of-2 sizes\n\nChange-Id: Ie39ff51ab8c403ca9d9898396297efdaa3193588\n"
    },
    {
      "commit": "1ec712f180072a7eb2131be09862921ae62dc2b4",
      "tree": "e4ce2a1d2896413bf0fb4e8370d4b61b7a814890",
      "parents": [
        "c4b8b32dec91a11a83d0a7ab49747606d16d39a5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 09:47:15 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 17:11:01 2014 -0800"
      },
      "message": "Add FIXMEs about audio_format_t assumption\n\nChange-Id: I0d38241b61f70013573f4a0b9306547afe5f38ad\n"
    },
    {
      "commit": "c4b8b32dec91a11a83d0a7ab49747606d16d39a5",
      "tree": "0f2dac4e728016b9c9244efef0a58062dad6725d",
      "parents": [
        "6e0d67d7b496ce17c0970a4ffd3a6f808860949c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 09:39:01 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 17:11:01 2014 -0800"
      },
      "message": "Change NBAIO_Format from typedef to struct\n\nThis will make it easier to support arbitrary sample rates,\nchannel counts, and sample formats in NBAIO.\n\nChange-Id: I5eda412648b094358f5eefc38300e9ec8a734cd3\n"
    },
    {
      "commit": "6e0d67d7b496ce17c0970a4ffd3a6f808860949c",
      "tree": "e9d0c68908bcbbcb3eb5ef28b2b2c0db5488fa39",
      "parents": [
        "cc1e0e807ee9a9f163a4685cbd6efd6ae55849cf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 09:41:08 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 17:10:57 2014 -0800"
      },
      "message": "Use Format_isValid() and Format_isEqual() instead of direct comparison\n\nChange-Id: Ie87607aa514976947540a77775e6425c4e56e7d9\n"
    },
    {
      "commit": "cc1e0e807ee9a9f163a4685cbd6efd6ae55849cf",
      "tree": "5defc52d8f1743923308ba7d970e1392c7866607",
      "parents": [
        "51d53cd993043d9286e12cba884e6ee4d10b5fac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 09:48:42 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 17:07:22 2014 -0800"
      },
      "message": "Add Format_isValid() and Format_isEqual() to NBAIO\n\nThis is in preparation for changing the typedef to a struct.\n\nChange-Id: I8eb1c7d98fd12f997641e462359864fdb834abe6\n"
    },
    {
      "commit": "51d53cd993043d9286e12cba884e6ee4d10b5fac",
      "tree": "0559856f5ca00b74b86445f863f1ad1b2c359f72",
      "parents": [
        "b42398bb30e47313f42f91292657a9b8cc752511"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 09:38:33 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 15:42:51 2014 -0800"
      },
      "message": "Change Format_Invalid from enum to global const\n\nThis is in preparation for changing the typedef to a struct\n\nChange-Id: I36d1fe81d2f974224750f753453753303c224591\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": "b64497eb8724c4c372fffdbf3ee30543432953c5",
      "tree": "f9a5c97f77d045bcf5b4c19e4353da07d00f6fd1",
      "parents": [
        "719ae96a5308273100a68d112f131c61f9b3db81"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 01 09:47:30 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 10:11:25 2012 -0700"
      },
      "message": "Add NBAIO support for more sample rates\n\nThis will be used for audio capture but it is not scalable,\nand we need a better approach in the long term.\n\nChange-Id: I8b12f6b64a3fd8e8a8c425c82574260fe8ffbed6\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": "2c3b2da3049627264b7c6b449a1622f002210f03",
      "tree": "f99fadbfef22ff3b7709a505623371c22e39566c",
      "parents": [
        "ee578c0330319f04a48bccbdb26b53fea0388d04"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Aug 02 17:08:54 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Aug 08 11:28:15 2012 -0700"
      },
      "message": "AudioFlinger: fix timed audio\n\n(cherry picked from commit e20ac92c564a2f4e8123885807abdf0a78de0dd7)\n\n\u003e AudioFlinger: fix timed audio\n\u003e\n\u003e Addresses Bug 6900517.\n\u003e\n\u003e Finish up support for timed audio in the new FastMixer world.  Pay special\n\u003e attention to remaining lock-less and voluntary yield free on the FastMixer\n\u003e thread.  This fixes audio playback for Q on JB.\n\u003e\n\u003e Change-Id: Iaf815e58a1b1d0a0190051794bec8dc5c9231785\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: I9bd687acc345a05867af48e71116690fdb0ce1b5\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\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"
    }
  ]
}
