)]}'
{
  "log": [
    {
      "commit": "697a8a54a27d054efed7b47a6131a78b1388083e",
      "tree": "c69453b50f90c7a00a30ce0b73f80a1b1af0c8b8",
      "parents": [
        "ea589f5aabe6f713c8009013cfa5d2c563f30eed"
      ],
      "author": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Thu Jun 01 09:49:05 2017 -0700"
      },
      "committer": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Fri Jun 02 08:15:10 2017 -0700"
      },
      "message": "Prints sample Ms deltas to audioserver file.\n\nerases previous content for each histogram set.\n\nTest: more /data/misc/audioserver/sample_results.txt\n\nChange-Id: I55847f3e61af76992a73084fe2b5c87c88fc504c\n"
    },
    {
      "commit": "8f779cf33939910f7d058e0488eac744dba512d8",
      "tree": "18f31b5359414a1ab1216623159921a0b857672b",
      "parents": [
        "83cb1714b2aef243c251eb6ab4d2b2bca67a76fc",
        "2d1631eec3f4a5f8d43f5178246a6de31e47532d"
      ],
      "author": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Wed May 31 19:34:01 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 31 19:34:02 2017 +0000"
      },
      "message": "Merge \"Added documentation, inline comments, and temp debug features.\""
    },
    {
      "commit": "2d1631eec3f4a5f8d43f5178246a6de31e47532d",
      "tree": "3142a494111b9df2939dc71296753c706dd464dd",
      "parents": [
        "201079a8f9ee7811c3ec5302712526428fb8de7e"
      ],
      "author": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Tue May 30 16:12:36 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 31 17:34:43 2017 +0000"
      },
      "message": "Added documentation, inline comments, and temp debug features.\n\nchecks location of outlier timestamps.\n\nTest: dumpsys media.log\n\nChange-Id: I84fcb310bf8f94b97db115796264f1dd5d9486bd\n"
    },
    {
      "commit": "56c762451589c08de28a34109f90d9db12f87450",
      "tree": "385ec9c8e834c6a001de321c49ffef77fb9d9157",
      "parents": [
        "d1d95ebdb8669e9b8e3fb27cf95d109b3fc4538e",
        "201079a8f9ee7811c3ec5302712526428fb8de7e"
      ],
      "author": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Tue May 23 16:29:50 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 23 16:29:52 2017 +0000"
      },
      "message": "Merge \"Produce log warning when a glitch occurred.\""
    },
    {
      "commit": "201079a8f9ee7811c3ec5302712526428fb8de7e",
      "tree": "69f92efb0b9b6d3a3ddce8206ac835e6b23e2a50",
      "parents": [
        "cced674a438191eb59b39816c79ccff6bf9c21fd"
      ],
      "author": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Thu May 18 16:36:29 2017 -0700"
      },
      "committer": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Mon May 22 16:41:27 2017 -0700"
      },
      "message": "Produce log warning when a glitch occurred.\n\nA glitch is assumed to occur when the sum of the three\nlatest buffer periods cause CPU time to be unavailable\nfor the next buffer. For example, if a buffer period\nis 4 ms, requires 3 ms of CPU time, and a running sum of\n3 consecutive buffer periods is examined, this sum cannot\nexceed 13 \u003d 3*4 + (4-3), where 3*4 is the expected total\ntime and (4-3) is the CPU time left available by one 4 ms\nperiod. Glitch examples:\n4 + 4 + 6; 5 + 4 + 5; 2 + 2 + 10\n\nSee NBLog::Reader::alertIfGlitch.\nBoolean NBLog::Reader::findGlitch should be set to true\nfor the notification to occur.\n\nNote: this function needs to be developed to track glitch\noccurrences over time and notify when a difference in\ntrend occurs.\n\nTest: dumpsys media.log\n      logcat | grep NBLog\n\nChange-Id: Ibf120afd990a71eb40863157a28c3a5a4a610c64\n"
    },
    {
      "commit": "b05d4e2559e27d50ea56b28c1f1bd3161455616d",
      "tree": "46295e34fec8eaba0fb88844afc5f482166f8225",
      "parents": [
        "0e39f08a8560ec9d27786ab282b060739f341bf5",
        "cced674a438191eb59b39816c79ccff6bf9c21fd"
      ],
      "author": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Tue May 16 17:12:40 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 16 17:12:43 2017 +0000"
      },
      "message": "Merge \"media.log: improve histogram appearance\""
    },
    {
      "commit": "dd92d7e37298d57be41f8ffd1bab6786cf8b74b9",
      "tree": "efb1586f4ed4d4fd9039951328f9597eb55aae51",
      "parents": [
        "f7e2da4ca19db264d47c96ae07152aef6bce5c30"
      ],
      "author": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Mon May 15 14:56:53 2017 -0700"
      },
      "committer": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Mon May 15 14:59:32 2017 -0700"
      },
      "message": "Fixed order for NBLog::FormatEntry::begin()\n\nTest: dumpsys media.log\nChange-Id: I9579e8d41a5fd97b4c9c3b697bd8c13ee3b8c295\n"
    },
    {
      "commit": "cced674a438191eb59b39816c79ccff6bf9c21fd",
      "tree": "1475510ba2a6de8ffafc2bc01d696de5de490e7a",
      "parents": [
        "f7e2da4ca19db264d47c96ae07152aef6bce5c30"
      ],
      "author": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Wed May 10 14:42:54 2017 -0700"
      },
      "committer": {
        "name": "Sanna Catherine de Treville Wager",
        "email": "scwager@google.com",
        "time": "Mon May 15 14:46:53 2017 -0700"
      },
      "message": "media.log: improve histogram appearance\n\nremoved whitespace\nfix histogram column appearance, removed y-axis labels\nadded axis labels and removed unnecessary characters in columns\nminor code cleanup\n\nNew appearance:\n[446203.725] Histogram flush - FastMixer: 6F660152\n  Occurrences\n      1  19  15   1   1\n\n          |\n          |   |\n          |   |\n          |   |\n      |   |   |   |   |\n   ------------------------\n      0   3   4   6  29    ms\n\nOld appearance:\n[54.234] Histogram flush - AudioOut_D:\nHistogram 33640BF1\n            [ 1][ 1][ 1][ 3][54][69][ 1][ 2][ 1]\n        64|                      []\n        32|                  []  []\n        16|                  []  []\n         8|                  []  []\n         4|                  []  []\n         2|______________[]__[]__[]______[]____\n              4   5   6   8   9  10  11  13  15\n\nTest: dumpsys media.log\nChange-Id: Iece8feec66db1cef66db4cb12d4db3f7e433b7d5\n"
    },
    {
      "commit": "b8c35f94470d1518e2def0582aaec4e038c92af0",
      "tree": "0ef68bf31016198ef4a9f26d33025fa332c2abd4",
      "parents": [
        "6f51c153ea5e4187a313e47ac8bad9a1a999d4e1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Apr 27 16:15:51 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Apr 28 16:41:36 2017 -0700"
      },
      "message": "Fix trivial warnings hidden by -isystem\n\nFix the trivial warnings that are hidden by the use of -isystem to\ninclude frameworks/av and caught by -Werror.\n\nTest: m -j checkbuild\nBug: 31751828\nChange-Id: I155f9f772ce0a84b364313814cb7cf528b9de4eb\n"
    },
    {
      "commit": "6f51c153ea5e4187a313e47ac8bad9a1a999d4e1",
      "tree": "ca8da064baf8dd1602966a377d6c5ae804e663db",
      "parents": [
        "f461f38e08ca8afb89e1dc33beae43905f47f9f8"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Apr 28 12:46:17 2017 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Apr 28 16:41:36 2017 -0700"
      },
      "message": "Fix non-trivial warnings hidden by -isystem\n\nThese warnings were hidden by -isystem.\n\nBug: 31751828\nTest: m -j checkbuild\nChange-Id: Ibb1aa07a6827fcbd29fc15291fcd90280c0f608d\n"
    },
    {
      "commit": "7d7bb17ea8a7ed9b37bb4a7caa7d158e848ce9d0",
      "tree": "9d209f13986323194e7a00a7f285e81c502f9ee6",
      "parents": [
        "4501f601c7786f154eb7c4b849cfeb684450e2d5",
        "c5cb6b35a63385cb16711d064127a95655da929a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 18 20:23:43 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 18 20:23:43 2017 +0000"
      },
      "message": "Merge \"Use option to flush the entire buffer on -EOVERFLOW\" into oc-dev am: 4bba89e4e1\nam: c5cb6b35a6\n\nChange-Id: I2b62bfaad94bad8dec9c0e652fa8db8050dd32af\n"
    },
    {
      "commit": "03539407b0208fadba3d3f3a9b8c3cd899228b67",
      "tree": "17957b5bd513605f0c8392b12f1fec2977dc4c1c",
      "parents": [
        "6cb102d4a1cbaaacecde61d4e2a261c910c55e1c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 17 16:40:46 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 17 16:53:33 2017 -0700"
      },
      "message": "Use option to flush the entire buffer on -EOVERFLOW\n\nThis was the previous behavior prior to project system/media commit\nfc3d70736e4c24cbdc8c91076013c01e487fd4d5.\nThe new behavior introduced by that commit is to preserve as much of the\nbuffer as possible.  But that introduced a regression in applications with\nso many overflows that they can\u0027t recover.  So now the flush is optional.\nIn the case of PipeReader, we do need the flush.\n\nTest: at bug\nBug: 36725187\nChange-Id: I25609c7a656a05228fb4e7d4082b2857f4195a34\n"
    },
    {
      "commit": "5ede4eef66a3908d1289e2b3baaa692c5492914b",
      "tree": "aadf840aefc92e28c42c5ae5d67f275280d46898",
      "parents": [
        "96165b46d5fd1381de6b8f8cb29e0453566755c1",
        "1c446273e6ebfe55ef293a0b7e78525b1b40ce84"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 13 15:19:19 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 13 15:19:20 2017 +0000"
      },
      "message": "Merge \"Change raw pointer mNamedReaders to reference\""
    },
    {
      "commit": "b3461d58e4410b6381d2d852a8598bfb7ed625cb",
      "tree": "23b40760a976e22d07a0250452d9899ad10d0dbb",
      "parents": [
        "7f2c3e456176494c25d4e2e03de453ed42223d77",
        "4f03349cda382b70d1bda3137e2aa307bf993633"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Sat Apr 08 03:41:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 08 03:41:46 2017 +0000"
      },
      "message": "Merge changes I10d5387a,If73be46d\n\n* changes:\n  NBLog add log scale to histograms\n  NBLog improve Histograms:\n"
    },
    {
      "commit": "1c446273e6ebfe55ef293a0b7e78525b1b40ce84",
      "tree": "e88e1f2b206b3f9229e2918322df1c3a0ddfe19d",
      "parents": [
        "eef598c5539aa2be5a106f2483b19e368e4b8c0e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 07 09:49:07 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 07 14:46:53 2017 -0700"
      },
      "message": "Change raw pointer mNamedReaders to reference\n\nUsing a reference for mNamedReaders ensures it is never updated.\n\nAlso:\n - add FIXME related to lack of lock protection for mNamedReaders.\n - add a few other FIXME\n - add section breaks\n\nBug: 37153050\nTest: builds OK\nChange-Id: I8b80acb5cc943795becdc2d24debc11b09620753\n"
    },
    {
      "commit": "4f03349cda382b70d1bda3137e2aa307bf993633",
      "tree": "0578baf4a24e11381adeb97ad2c675163a848d43",
      "parents": [
        "ad82aa66ff659a5a98fa5beebf16f7b053be47dd"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Mon Apr 03 19:17:03 2017 -0700"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Tue Apr 04 17:21:53 2017 -0700"
      },
      "message": "NBLog add log scale to histograms\n\nBug: 36490717\nTest: Log histograms, check that scale displayed is logarithmic\nChange-Id: I10d5387ad9eef80e7994ccb8246347e1413e9058\n"
    },
    {
      "commit": "ad82aa66ff659a5a98fa5beebf16f7b053be47dd",
      "tree": "a8713a36afdaf2e87fb7ea93eef19ca706f27ba2",
      "parents": [
        "f42f15685ee622b1e341c8958f616c17801a1ad0"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Mon Apr 03 19:15:20 2017 -0700"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Tue Apr 04 16:54:29 2017 -0700"
      },
      "message": "NBLog improve Histograms:\n\n- Use single map for simpler code\n- Flush only current thread, keep unflushed entries between dumpsys calls\n\nBug: 36490717\nTest: add histogram logs and check they behave as expected\nChange-Id: If73be46daa8d96c62fdd2b76076efa77cd54fa30\n"
    },
    {
      "commit": "0b9e783197bcd5e5866e1f23ebcde78f786b38bf",
      "tree": "625f2f48670c2e1720a727d8b3760f568aaaa304",
      "parents": [
        "4f3de352284f0d52716f01e627a9ee49414e9817",
        "f42f15685ee622b1e341c8958f616c17801a1ad0"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Sat Apr 01 20:48:54 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 01 20:48:55 2017 +0000"
      },
      "message": "Merge changes I19384478,I71c4df28,I2e0b48c6,I7fb9b899\n\n* changes:\n  NBLog change timespec to int64_t nanoseconds\n  NBLog: add buffer hex dump\n  Add histogram entries (timestamp and flush)\n  Add unique IDs to log entry\n"
    },
    {
      "commit": "f42f15685ee622b1e341c8958f616c17801a1ad0",
      "tree": "de2c3924e1688df16ba46aebab8c5f0910cbb836",
      "parents": [
        "2aedf3732cd36b69a892b6b46ba3b91682ae42b3"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Mar 30 19:16:22 2017 -0700"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Mar 31 17:46:40 2017 -0700"
      },
      "message": "NBLog change timespec to int64_t nanoseconds\n\nBug: 36794556\nTest: No change in functionality, everything keeps working\nChange-Id: I19384478d94243a9d2a6fb48950963d8b9ec1efa\n"
    },
    {
      "commit": "2aedf3732cd36b69a892b6b46ba3b91682ae42b3",
      "tree": "bbb813d7be1580246f20a6d1084c07c8459f81f1",
      "parents": [
        "537ad7dab88ee1b489331094a325726a26b8c1b1"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Wed Mar 29 11:27:03 2017 -0700"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Mar 31 12:36:34 2017 -0700"
      },
      "message": "NBLog: add buffer hex dump\n\nBug: 36724290\nTest: create and print entries, check dump matches expected content\nChange-Id: I71c4df287535b460838afc2d3ce651744850bf49\n"
    },
    {
      "commit": "537ad7dab88ee1b489331094a325726a26b8c1b1",
      "tree": "6802a41bd8f10166d42d437b5a4a110e2d17d1fe",
      "parents": [
        "bd0c6b47a93840e166f34308eb7660d81e949666"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Tue Mar 21 16:24:30 2017 -0700"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Mar 31 12:36:33 2017 -0700"
      },
      "message": "Add histogram entries (timestamp and flush)\n\nAdd functions to write these entries into log\n\nAdd functionality to dump them in dumpsys\n\nBug: 36490717\nTest: Write format entries and histogram entries in the log.\n      Verify that format entries and histograms are dumped correctly\n\nChange-Id: I2e0b48c63031e62875c08461b98653ecfe1442be\n"
    },
    {
      "commit": "bd0c6b47a93840e166f34308eb7660d81e949666",
      "tree": "a3656aaed131ed4cef317e58231caeabb2933ca3",
      "parents": [
        "1ca75129a63a1064df311f7c33049d48ac8cdb2d"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Mar 16 13:54:23 2017 -0700"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Mar 31 12:36:00 2017 -0700"
      },
      "message": "Add unique IDs to log entry\n\nBug: 36366838\nTest: add hash entry to logs and display it in dump\nChange-Id: I7fb9b8997e46456331a946e03bfe040c47fa20b8\n"
    },
    {
      "commit": "397ddfb447810cd17c65d695635b76aec514acdd",
      "tree": "d551a78707c9d4d912974b89949859ae19f63245",
      "parents": [
        "eecac2cab4fda565018237d52be4a9ca1fbc4434",
        "1ca75129a63a1064df311f7c33049d48ac8cdb2d"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Wed Mar 22 17:42:35 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 22 17:42:36 2017 +0000"
      },
      "message": "Merge \"NBLog exchange author and timestamp positions in log\""
    },
    {
      "commit": "1ca75129a63a1064df311f7c33049d48ac8cdb2d",
      "tree": "a4efa87ad38e74791923595189ff3ff6055e87da",
      "parents": [
        "6ea1d7e449e5796068a4fcd7f22cad4316b0b8cf"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Mar 16 14:19:59 2017 -0700"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Mon Mar 20 09:30:23 2017 -0700"
      },
      "message": "NBLog exchange author and timestamp positions in log\n\nBug: 36366826\nTest: no change in functionality\nChange-Id: I137695b57b9f2b84d6059b37972e06b115e10d1f\n"
    },
    {
      "commit": "5020a3488745ed0837af1d165b56975634f6eb3c",
      "tree": "30701e397cba40b7a20b256b80a0c09b51aa2e75",
      "parents": [
        "08b8bd759ac0ebd1c742b1f92d539d0e5e554982",
        "6ea1d7e449e5796068a4fcd7f22cad4316b0b8cf"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Mar 10 19:26:00 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 10 19:26:01 2017 +0000"
      },
      "message": "Merge \"Check corruption in NBLog Reader snapshots\""
    },
    {
      "commit": "89e5a2b102b484fe19dbda2a0b118edfefc70241",
      "tree": "7d569d72d3a2e16c77a10e08de04746fab6ad52e",
      "parents": [
        "ca47e6d574cd3d02821b87657a80d84b328d4f26",
        "dcdfaecc1fa630a799e1fdb508a9b92da55abc36"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Mar 09 22:55:06 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 09 22:55:06 2017 +0000"
      },
      "message": "Merge \"NBLog periodic merging thread\""
    },
    {
      "commit": "6ea1d7e449e5796068a4fcd7f22cad4316b0b8cf",
      "tree": "399be993f9b80208df888b10b53295c6cd990380",
      "parents": [
        "dcdfaecc1fa630a799e1fdb508a9b92da55abc36"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Tue Feb 14 16:17:31 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Mar 09 12:30:43 2017 -0800"
      },
      "message": "Check corruption in NBLog Reader snapshots\n\nBug: 35642225\nTest: Keeps working with uncorrupted buffers, not tested with corruption\nChange-Id: I327badc97c9518b41a7085aebbd74f9452463a8e\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": "05d19b08f3affa6fa8407e779f67e7ad1c1ca84f",
      "tree": "d2c99a03302a60a9ab3db1a9f5cc90640686009a",
      "parents": [
        "4ec4e6b1073b0dc1b608aeeaf4e3129ea1a725c8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 28 16:28:19 2017 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 03 12:37:45 2017 -0800"
      },
      "message": "fallout of cleaning-up libutils includes\n\nTest: run \u0026 compile\nBug: n/a\nChange-Id: I63585ed5a764b9ce7af2187b79ca0c83e683fd7f"
    },
    {
      "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": "cd5dd016657b351d9c74dcdff87547a781108ccb",
      "tree": "7406a11b1a06b2abf94c72e216cb3810a4a15fc1",
      "parents": [
        "40a4498b967d000c93e8561db5fdd0488cc1d824"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Mon Feb 13 12:09:28 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Feb 17 11:27:56 2017 -0800"
      },
      "message": "Implement entry iterators\n\nSome code refactoring\n\nBug: 35329553\nTest: manual\nChange-Id: I06e4ac1207b5c707d663ab2f141bb08d80272642\n"
    },
    {
      "commit": "40a4498b967d000c93e8561db5fdd0488cc1d824",
      "tree": "a95deb459b6b0ea0de8e711a0cb545c49eb33769",
      "parents": [
        "4da7820be451847bad698ac0f687b964d9b5d34f"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Feb 03 13:39:57 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Feb 16 17:04:01 2017 -0800"
      },
      "message": "Implement log merging.\n\nStill missing:\n * Put in separate periodical thread\n\nBug: 35329293\nTest: manual\nChange-Id: Ie8802fb7972e20d8dec493376ea253bb782f3a46\n"
    },
    {
      "commit": "4da7820be451847bad698ac0f687b964d9b5d34f",
      "tree": "5f0f110685f4f4d4c908834a589748addbf39bbd",
      "parents": [
        "c20cb50c1c14cd765874511872f087c875f43ed9"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Fri Feb 03 12:53:39 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Feb 16 14:22:28 2017 -0800"
      },
      "message": "Minor code style changes and namespace fix\n\nBug: 35329090\nTest: recompile, no change of functionality\nChange-Id: Ied3ec7d95ce29896e8bf1851b08345da74bf8299\n"
    },
    {
      "commit": "c20cb50c1c14cd765874511872f087c875f43ed9",
      "tree": "4da5367ebd84ebeac6dd927d535a5b1dd84c79e4",
      "parents": [
        "2f77a2229be73b222098c45aed73728842667e12"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Wed Feb 01 12:35:24 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Feb 16 14:22:16 2017 -0800"
      },
      "message": "Added process name to PID log\n\nBug: 35357686\nTest: included in CL\nChange-Id: Ie4d3cb66a2c766ce87ebabcc9c0d3aa988702e09\n"
    },
    {
      "commit": "fe1e1449cadff4f946c33403aecc73b4b4a11e56",
      "tree": "500bb66d15abbbd9b48dce430480cc35d4e6245b",
      "parents": [
        "5a3b54df3014ece49eb1f339e5598c01c6126251"
      ],
      "author": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Mon Jan 30 12:02:03 2017 -0800"
      },
      "committer": {
        "name": "Nicolas Roulet",
        "email": "nicoroulet@google.com",
        "time": "Thu Feb 02 16:45:04 2017 -0800"
      },
      "message": "Implemented typed, thread-specific logging system. Currently supported types are:\n * Strings\n * Integers\n * Floats\n * Timestamps\n * Process IDs\n\nAdded printf-like formatted logging using mentioned types.\n\nTest: included in this CL\nBug: 29421410\nChange-Id: Ie07b78d8d39c32fcc8a122ffa9b1b7082800b990\n"
    },
    {
      "commit": "535e161e2e404dffb8389dd331be0132704b6d82",
      "tree": "61afd43df445dbf8329bd248493770ee506b5814",
      "parents": [
        "af86dcee9d97e02e9069548684ef8c9db5190ff9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 05 12:19:36 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 29 11:12:19 2016 -0800"
      },
      "message": "media.log: re-implement NBLog using audio_utils_fifo\n\nNBLog previously has its own shared memory circular buffer code.\nNow NBLog operates on top of the circular buffer code in audio_utils.\n\nTest: media.log still works\nChange-Id: Ib3026d2a96e6c0b433603e8baf19164ad97a1e1f\n"
    },
    {
      "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": "c661ae6165338fd5f0bca50a63058b4bcd6def4b",
      "tree": "1fabefad176045b256eb3282f391b9e1ae4ee654",
      "parents": [
        "bf2e61f54c7dcc37c97b4908c9ed6871cf3d2b49"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 25 13:17:47 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 26 15:42:11 2016 -0700"
      },
      "message": "Remove unneeded links with dynamic libraries\n\nVarious media components were linking against dynamic libraries that weren\u0027t needed.\n\nTest: built and booted\n\nChange-Id: I7379506fd06d4e28e0eff0001fd073a2d3860f8e\n"
    },
    {
      "commit": "e90894f52e30c7d6aeb83ef8576d0c489a1c8f2f",
      "tree": "f0ceca91f714d9ae25e2f509c7614a76d719cfd4",
      "parents": [
        "0358e6e645d6fb53918f9d64b68f58e73069c9bb"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Oct 04 00:14:41 2016 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Oct 05 10:36:20 2016 -0700"
      },
      "message": "Convert libnbaio to Android.bp\n\nSee build/soong/README.md for more information.\n\nTest: mmma -j frameworks/av/media/libnbaio\nChange-Id: Ifd5f13ad6ab1c9590623c3b58adea5ef3ea6af60\n"
    },
    {
      "commit": "a0c91339814f37ea78365afb436c9f3d1f0a0090",
      "tree": "b0075232d68758a314754a9293c65ea15091ca95",
      "parents": [
        "5090f7d3211b5517a7602c910c04462f7eee0727"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 19 10:01:12 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 26 14:53:38 2016 -0700"
      },
      "message": "Update NBAIO to use the new audio HAL abstraction layer\n\nMoved the HAL access abstraction layer to a separate library so it\ncan be used both by audioflinger and libnbaio.\n\nBug: 30222631\nTest: manual with Loopback app, Hangouts, YouTube\n\nChange-Id: Id622c2f1aa8f55a775d34f369a596c2c4d29d5be\n"
    },
    {
      "commit": "1b291841a58ce6b2b291232dfdd56134b2185c48",
      "tree": "d2eebced63ee2d64c58f604c68fd328c88816d2d",
      "parents": [
        "6b11f552f99ce7bd40ea164f65ac1590a3f4198b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 18 14:55:21 2016 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 12 15:52:22 2016 -0700"
      },
      "message": "Fix RecordThread running too often if fast capture is active\n\nBug: 30159297\nChange-Id: Ieca804450168391c162fc4862398586fcc5d7e4e\n"
    },
    {
      "commit": "ad6d52d38917069e3d8e68cec1625855b9d96200",
      "tree": "7a5000195073bc8c7a42fc55113297d8015c2ad2",
      "parents": [
        "510b50593bd332cfd50cedce54fed260f6c8d5e4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 18 13:42:03 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 20 22:44:20 2016 +0000"
      },
      "message": "Flush FastCapture PipeReader when starting after stop\n\nDiscards stale frames.\n\nBug: 30199985\nChange-Id: Ie93a3784bf052aba6989d2ff1be92b1980b0c207\n"
    },
    {
      "commit": "6b3305184ca24ac7561e245638250e04399a4401",
      "tree": "b12e604f064b7d12b851ce360c6fae316b1cc2fc",
      "parents": [
        "03e015d2e6d38de6e7041766b37fe03746e9c940",
        "e875c8016198b4d84225fcf45d905fc424e53553"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 21 23:32:44 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 21 23:32:44 2016 +0000"
      },
      "message": "Merge \"Make build warnings be errors\" into nyc-dev"
    },
    {
      "commit": "57c4e6f7464d458eb52d209c2a63524913d6406d",
      "tree": "b7fae46bbc981c62460d572b51d6f68b9f9b847d",
      "parents": [
        "560a198f1f95a085e24944b20df536e75e21cedb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 18 14:54:07 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 18 17:36:37 2016 -0700"
      },
      "message": "Fix build warnings\n\nChange-Id: I33178dbe0bfc087d6599579ca0529ad853c669ed\n"
    },
    {
      "commit": "e875c8016198b4d84225fcf45d905fc424e53553",
      "tree": "dacbd6c32ea580d1e1dd6181066aeece4cda9442",
      "parents": [
        "560a198f1f95a085e24944b20df536e75e21cedb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 18 14:52:27 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 18 15:14:48 2016 -0700"
      },
      "message": "Make build warnings be errors\n\nChange-Id: Ia9e32a36f5c0268c8e85ebf25168821d8ad0162d\n"
    },
    {
      "commit": "818e7a32ce3633980138aff2c2bfcc5158b3cfcc",
      "tree": "61104149c08955e55a10b9353f80ed140ad3df26",
      "parents": [
        "6ae5843c281301a9ffd1059d185620a9337e15a2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 16 18:08:07 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 19 13:15:16 2016 -0800"
      },
      "message": "Implement server side playback timestamps with 64 bit accuracy\n\nProvide server timestamps if the HAL doesn\u0027t provide it.\nProvide monotonic - boottime translation.\nIntegrate record timestamps and playback timestamps together.\n\nBug: 17472992\nBug: 22871200\nBug: 26400089\nBug: 26682703\nChange-Id: If1974f94232fcce7ba0bbcdf63d9e54ed51918ff\n"
    },
    {
      "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": "97f230b39bfedeea6ee1a2fc9be847dcbdcb163a",
      "tree": "f4571d9419064360c6944eafcf42f34dbfe8ec84",
      "parents": [
        "a8f995b01f14c86631ea36b38ce31c1d668ac2d3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 29 11:49:12 2015 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 29 13:14:47 2015 -0700"
      },
      "message": "Check for integer overflow on malloc in SourceAudioBufferProvider\n\nBug: 20674676\nChange-Id: I90f6ba28a158284998923131bbf372aa6d93964a\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": "9b82924cbd203f1678c2f78aa73b15909efa3e81",
      "tree": "977b62e2a5d909c8806808614ff5117f75359130",
      "parents": [
        "2590fc421ccf5e8199d511ff3022b428ee9122e9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 12 15:35:41 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 19 10:24:55 2014 -0800"
      },
      "message": "Remove explicit instantiation of SingleStateQueue\n\nRefactoring now possible due to changes in the Android\natomic include.\n\nChange-Id: Ia0094d322d9ad3d8c186307306821376ca8002c4\n"
    },
    {
      "commit": "e3c7c6480c8752b9b003c5e31ce7753cecf7e24b",
      "tree": "de701bf39adcc9028f2a42b117499efada26cae8",
      "parents": [
        "f1c2e1d4e15301476a9dfc4c78eb40a46f8962d6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 12 09:13:58 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 12 09:15:24 2014 -0700"
      },
      "message": "Fix compile error when LOG_NDEBUG enabled\n\nBug: 16977404\nChange-Id: Ia7d6ea00d7b89ba10ff70f542b5f4c7ed2c2147e\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": "87cebadd48710e42474756fc3513df678de045ce",
      "tree": "6f8a07d9ec9b4ebad70367430190a689cb1a5db3",
      "parents": [
        "77a3374a6170fb5f0168169bc4bc3fa9baf318eb",
        "f285c91efbae23783fe94dc5ad19a2560e157685"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 10:14:43 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 10:14:43 2014 -0700"
      },
      "message": "resolved conflicts for merge of f285c91e to master\n\nChange-Id: I4c995e297d09c0854a42142cc57dce8b771acf65\n"
    },
    {
      "commit": "8b5f642eb2364ea7fe46a5b3af51b48b58f12183",
      "tree": "3804f0168793993d3558bcb33970904f45db8949",
      "parents": [
        "85e6e87c41bba51729cee8958a5c30157c8dc674"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 01:22:06 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 01:22:06 2014 -0700"
      },
      "message": "Move frameworks/av from fdprintf to POSIX dprintf.\n\nBug: 11156955\nChange-Id: Ia98cd16b4c1f7be87cf060b7456de4f40896bacb\n"
    },
    {
      "commit": "e541269be94f3a1072932d51537905b120ef4733",
      "tree": "39646def02d7230929eb85189f48b9193b8c23a0",
      "parents": [
        "7c96d53a65085f42ac2b6d416cbc16fd36ed72ff"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 16 11:25:07 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 16 15:05:05 2014 -0700"
      },
      "message": "Use new channel count functions for audio masks\n\nChange-Id: Ia658ab4b6320d19fdb50f123c930918724ff0ef3\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "5e4c4f12337ff4d7ceb105bcd441bb7aea6ab070",
      "tree": "6b1150d91934edae729b4ec643daabae9545ab6f",
      "parents": [
        "c26d923712a59e669d18191d93fbe3696789d592"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 09 14:50:48 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 09 16:34:50 2014 -0700"
      },
      "message": "Fix bit rot in AudioStreamInSource\n\nIt obviously had not been compiled in a while.\n\nChange-Id: If514f474808e557a67a671c3b833572ad4a88338\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": "d1adad7acdff96f6518935214d93a655cc447570",
      "tree": "36e22d8950d9ab5ca4862e6d230780e2355f50a6",
      "parents": [
        "029a64e0327ecc1215a3d17ce50f508edae1c4a6",
        "0d79b935f533220613f492ab06a12f5cc9591805"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 30 15:53:01 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 30 15:53:01 2014 -0700"
      },
      "message": "resolved conflicts for merge of 0d79b935 to master\n\nChange-Id: If6de8c1b1d7707918e2a60ea8583749e0127edb8\n"
    },
    {
      "commit": "95d287db3aa5c93533d8e4a723e24f33ea29ffa0",
      "tree": "43fd98048b3dd5924b3836bdb429f05d72397a2f",
      "parents": [
        "92dfd8e67e099577d07eaeb28aad533fd5514d8a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Mon Apr 28 14:11:45 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Mon Apr 28 14:11:45 2014 -0700"
      },
      "message": "Fix format warnings\n\nChange-Id: Id7aded4287cc8d5387a20389d3ef6220d67d1d88\n"
    },
    {
      "commit": "92dfd8e67e099577d07eaeb28aad533fd5514d8a",
      "tree": "c2df92dbe30769db409737fd29fdb96b4546fa17",
      "parents": [
        "4513aa2cda9e636e4ac675dab9a1353b22e951ae"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 11 14:29:59 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Mon Apr 28 14:10:21 2014 -0700"
      },
      "message": "Add private method NBLog::Reader::dumpLine()\n\nThis allows us to abstract out fdprintf vs ALOGI\nso that callers don\u0027t need an \u0027if\u0027 at every location.\n\nChange-Id: I4c68185fc19f32caeaed93347e6b7d09b8d4c4d8\n"
    },
    {
      "commit": "3f35eb55f0e2bc5a4dda7f58ed52654403a87efa",
      "tree": "0aef3a05fa58a840a3289372c00e102bfaca6ce3",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 21 13:54:25 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 15:23:33 2014 -0700"
      },
      "message": "Fix log spam when MonoPipe is unable to get local frequency\n\nLocal frequency does not change, so only ask for it the first time a\nMonoPipe is constructed in a given client process.  Thereafter use a\npreviously cached value.  Likewise, if the local frequency is unavailable,\nonly log this the first time.\n\nChange-Id: Ib1fc7251c3832e02fe03811db39a87e500f1df50\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": "f69f9869514730aebe5724c461768507084dfff7",
      "tree": "0f14d23d8b7a26669317bb29055301a473821f2e",
      "parents": [
        "8eec77066635c30b8ddce79cf9433357cf3afa1a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 07 08:37:57 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 07 08:39:09 2014 -0800"
      },
      "message": "NBAIO::Format_from_SR_C requires audio_format_t parameter\n\nChange-Id: I4b65f6ed2f6ca3608b3a5f88f52a93af0b9b1f4a\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": "43d9b8706b3916ee0f1d745a2832f792c3406ca8",
      "tree": "ba8fd8933eb7e1e994625e51f607ab4c32a2ceba",
      "parents": [
        "c326e1c3d122917462f1cda4f03d9c639ad92902"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 09:03:34 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 09:08:05 2014 -0800"
      },
      "message": "Remove restriction for HAL streams of AUDIO_FORMAT_PCM_16_BIT\n\nChange-Id: I6b89a3ac4b77b9a5a84e3b623987186c3d2db89d\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": "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": "ac3e9db88ddb1f24bc6c8fb744a37dfdeec332bb",
      "tree": "7e569cdaab0966b7e3c1c02118361f223fdaaf98",
      "parents": [
        "7a0662afeba50b78f43ce24539230cace30c3cfd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 08:00:31 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 06 08:40:37 2014 -0800"
      },
      "message": "Add mFrameSize but do not remove mFrameBitShift yet\n\nChange-Id: Icb1edefeb6a0e659503f6b7a92c9d15784df9865\n"
    },
    {
      "commit": "3e8027a04c20a4b7028f1615538b36219386c9e5",
      "tree": "547552b1b32c40961d9130d10b28b05b173b1782",
      "parents": [
        "c02c96161dde9d6ca7b408cf08fcf10bd8e61a54"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 15 09:24:38 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 11:49:18 2014 -0800"
      },
      "message": "Move StateQueueInstantiations to libinstantssq\n\nThis removes a circular dependency between libmedia and libnbaio\n\nChange-Id: I3692cbbe2b76028a953b36606b62cdda70c8c26f\n"
    },
    {
      "commit": "c02c96161dde9d6ca7b408cf08fcf10bd8e61a54",
      "tree": "e325f99ffb91639a73aab6155ae35fd27f115258",
      "parents": [
        "4e01ef6b2f6d288b9aa83b5817adad02cecc429f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 15 09:25:11 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 11:49:18 2014 -0800"
      },
      "message": "Fix bug with not reporting lost bytes\n\nChange-Id: I431d989dbd115b43822e9e48fd4c2b8e6322cfe3\n"
    },
    {
      "commit": "4e01ef6b2f6d288b9aa83b5817adad02cecc429f",
      "tree": "26ad87d5007224b80c6a240e7765ccf9b507e09a",
      "parents": [
        "9a73cd3face153cbd04ceff0cfc0efdd4837b94e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 11 14:29:59 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 11:48:04 2014 -0800"
      },
      "message": "Add private method NBLog::Reader::dumpLine()\n\nThis allows us to abstract out fdprintf vs ALOGI\nso that callers don\u0027t need an \u0027if\u0027 at every location.\n\nChange-Id: I4c68185fc19f32caeaed93347e6b7d09b8d4c4d8\n"
    },
    {
      "commit": "1d6fa7af1288b550faabe4ec2cf98684236723db",
      "tree": "a8801ca9a0925ba1faccf17acea4aa78d71a9d29",
      "parents": [
        "b82a9f105f89d6b3684c9f626918042bd8977912",
        "566be7c33fc56ae4c34168ecbee5316374f7e3c5"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 13:47:53 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 13:53:20 2014 +0000"
      },
      "message": "resolved conflicts for merge of 566be7c3 to master\n\nChange-Id: I7b1cc71057b2bd4f771e7bcf508a8c3abd6017ce\n"
    },
    {
      "commit": "377b2ec9a2885f9b6405b07ba900a9e3f4349c38",
      "tree": "b938e1d75a1beefae86244f287ca22f4a277740d",
      "parents": [
        "cdda7bf4d3ca9cad6979374a18dd5be79ea83d80"
      ],
      "author": {
        "name": "Kévin PETIT",
        "email": "kevin.petit@arm.com",
        "time": "Mon Feb 03 12:35:36 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 11:40:06 2014 +0000"
      },
      "message": "Make frameworks/av 64-bit compatible\n\nContains the necessary changes to make frameworks/av build and work\non a 64-bit machine.\n\nSigned-off-by: Craig Barber \u003ccraig.barber@arm.com\u003e\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\n\nChange-Id: I725feaae50ed8eee25ca2c947cf15aee1f395c43\n"
    },
    {
      "commit": "c99144dd2766c499701a7bd7db2d9d8697127186",
      "tree": "8b8e96c191387c4e1454945c2a5a31b2b4164c71",
      "parents": [
        "ddc0630dd80847dad5253bb285a16e3ed9cc0320",
        "4d7b3f876b21997680ae32a340d746ed1cae6ab1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 07 21:49:24 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 07 21:49:24 2014 +0000"
      },
      "message": "Merge \"Change Format_frameBitShift() API for non-power-of-2 sizes\""
    },
    {
      "commit": "ddc0630dd80847dad5253bb285a16e3ed9cc0320",
      "tree": "aad7fff243b29ad9d73c0bb43e1779065606d31e",
      "parents": [
        "c7a38829841b764f509e6a688a507b8c0da82c2e",
        "1ec712f180072a7eb2131be09862921ae62dc2b4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 07 21:30:56 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 07 21:30:56 2014 +0000"
      },
      "message": "Merge \"Add FIXMEs about audio_format_t assumption\""
    },
    {
      "commit": "c7a38829841b764f509e6a688a507b8c0da82c2e",
      "tree": "6e0868e5dfc0bc3700b3da60cd4cbbd609254d31",
      "parents": [
        "a793625031a3e326a261a0843598c35a5784bbde",
        "c4b8b32dec91a11a83d0a7ab49747606d16d39a5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 07 21:07:08 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 07 21:07:08 2014 +0000"
      },
      "message": "Merge \"Change NBAIO_Format from typedef to struct\""
    },
    {
      "commit": "a793625031a3e326a261a0843598c35a5784bbde",
      "tree": "f18a01ac2ead0114a2a46783b3ef79a013fb85e7",
      "parents": [
        "19f420ea68424a608e982d39ab76676a05337685",
        "6e0d67d7b496ce17c0970a4ffd3a6f808860949c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 07 20:49:21 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 07 20:49:22 2014 +0000"
      },
      "message": "Merge \"Use Format_isValid() and Format_isEqual() instead of direct comparison\""
    },
    {
      "commit": "19f420ea68424a608e982d39ab76676a05337685",
      "tree": "91f2c7b49994a6197962ce58f84285b7a41fd375",
      "parents": [
        "f74f213c0cd0612101e00a73704429dac1a92fe3",
        "cc1e0e807ee9a9f163a4685cbd6efd6ae55849cf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 07 19:55:54 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 07 19:55:54 2014 +0000"
      },
      "message": "Merge \"Add Format_isValid() and Format_isEqual() to NBAIO\""
    },
    {
      "commit": "2a16afb8dc056877f34124ba5befe75171de930f",
      "tree": "449494a5a09436937471685be64da42f7744861c",
      "parents": [
        "b28c68321689fc2bed5d5c5935d7cadac9ca0ff9",
        "0f11b51a57bc9062c4fe8af73747319cedabc5d6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 04 23:19:01 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 04 23:19:01 2014 +0000"
      },
      "message": "Merge \"Fix unused parameter warnings in audio\""
    },
    {
      "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": "0f11b51a57bc9062c4fe8af73747319cedabc5d6",
      "tree": "3a9156d700b18a53f856ac8ae51a44604af36fe1",
      "parents": [
        "0520e05f9083cf13fa7062629bc6606f4b39f08a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 16:18:54 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 07:48:43 2014 -0800"
      },
      "message": "Fix unused parameter warnings in audio\n\nChange-Id: I665ba3358dd9502f0adec70d486e7bf8a2e1b0fe\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": "aaa42e57797db140ead1068dce6340ffd33fa005",
      "tree": "3a42c6ef70959a6528b2706f06d517cf767ca8db",
      "parents": [
        "03f696e3eb89c0642f9a2b761ff2cfc6af003d16",
        "081559cc5afb6c8f2f9847e1de739f66a5a07a6b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Jan 11 05:51:27 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 11 05:51:27 2014 +0000"
      },
      "message": "am 081559cc: am 514ac2ba: am e311b15c: Merge \"Fix c++11 narrowing\"\n\n* commit \u0027081559cc5afb6c8f2f9847e1de739f66a5a07a6b\u0027:\n  Fix c++11 narrowing\n"
    },
    {
      "commit": "e311b15cf821f65f68af2cdfe01e864cbc9a86ce",
      "tree": "442e530b17dc541fbff5b00427859f5c50bccd16",
      "parents": [
        "61540b5fe82cad1c6baa018f02bd2554e62e4364",
        "3b546caeb0a576c4d7d7f1e8d2fdfed2bb8bdeed"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Jan 11 04:20:10 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 11 04:20:11 2014 +0000"
      },
      "message": "Merge \"Fix c++11 narrowing\""
    },
    {
      "commit": "481fb67a595f23c5b7f5be84b06db9b84a41a42f",
      "tree": "095712959d22a6fdfaa101c262ccad183576cb6d",
      "parents": [
        "84acd489b93e04bea7aab06d8abb024eef2576fd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 30 14:39:28 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 05 13:47:07 2013 -0800"
      },
      "message": "Add RecordThread media.log and deferred deallocation\n\nThis change allows a media.log buffer for RecordThread.\n\nUnlike playback threads which stick around forever, the RecordThread comes\nand goes for every capture session.  This means that the media.log buffer\nfor a RecordThread would disappear too, and so was useless.  Now when a\nthread exits, it\u0027s associated media.log buffer is just marked for deferred\ndeallocation.  It is only actually freed when the memory is needed.\n\nOther changes:\n - Fix bug in unregistering comparison, it was comparing the wrong pointers\n - Increased size of log area so we can log for RecordThread also\n\nChange-Id: If45d4c03a793b86390a0112ec3acc5d41b2e3635\n"
    },
    {
      "commit": "3b546caeb0a576c4d7d7f1e8d2fdfed2bb8bdeed",
      "tree": "06f5ff682b7809091f39ca7c2beae8f435d741a0",
      "parents": [
        "d5255d1de125d15afae6cfc35701a5255b5e2933"
      ],
      "author": {
        "name": "synergydev",
        "email": "synergye@codefi.re",
        "time": "Fri Oct 25 12:36:28 2013 -0700"
      },
      "committer": {
        "name": "synergydev",
        "email": "synergye@codefi.re",
        "time": "Fri Oct 25 12:38:30 2013 -0700"
      },
      "message": "Fix c++11 narrowing\n\nThe best fix for these narrowing\nviolations is to use static casting\n\nAs an example, this change would the following for libnaio:\nerror: non-constant-expression cannot be narrowed from\ntype \u0027uint32_t\u0027 (aka \u0027unsigned int\u0027) to \u0027long\u0027 in initializer list\n\nconst struct timespec req \u003d {0, ns};\n                                ^~\n\nChange-Id: I04ed1de4497dc19772194afef3ebf8fe0c8b82bc\n"
    },
    {
      "commit": "fe346c707f59d763ded93bc3d27b51f0c0408258",
      "tree": "3e6f12ac7b37bc8ef10845c4c7ccdcfef4b51cd5",
      "parents": [
        "4d0815d694e5a2edb3ce48427de50f55d0f84c0b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 30 13:28:22 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:19:03 2013 -0700"
      },
      "message": "Fix miscellanous AudioTrack::getTimestamp() bugs\n\nCheck that get_presentation_position is non-NULL before calling.\n\nAudioTrack::getTimestamp not implemented for fast tracks.\n\nFix typo in Track::getTimestamp().\n\nFix bugs in AudioTrack::getTimestamp after stop:\n - getTimestamp while stopped is not allowed.\n - stop, start, getTimestamp now returns the correct value.\n\nChange-Id: Ie8d9dc1f28d8927634e04175a68b147ffc2ea8eb\n"
    },
    {
      "commit": "4d0815d694e5a2edb3ce48427de50f55d0f84c0b",
      "tree": "446da0a3f51945bcfc0de108c169eab70a652674",
      "parents": [
        "732845c7e8d294bb1aaa4cd9687da62b51f1f6e6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 29 14:40:55 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:12:31 2013 -0700"
      },
      "message": "Implement MonoPipe::getTimestamp\n\nusing SingleStateQueue observer\n\nChange-Id: I7b1928b087f1e676c7b291df6cefa7707301662c\n"
    },
    {
      "commit": "6466c9e6e6278c740aed77f695f679be9f5db478",
      "tree": "cd987ec819ddecba0665cd692285069c083fb19b",
      "parents": [
        "894d6be4f9b4721c77a01919ecf03b27cec90cc9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 10:54:07 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:12:11 2013 -0700"
      },
      "message": "Add ExtendedAudioBufferProvider::framesReleased and onTimestamp\n\nand implement them in SourceAudioBufferProvider using the associated NBAIO_Source,\nand in Track using the associated AudioTrackServerProxy.\n\nChange-Id: I60dc4adba63fc1dc452ff16caf347e4a7c8242c2\n"
    },
    {
      "commit": "894d6be4f9b4721c77a01919ecf03b27cec90cc9",
      "tree": "c0356613af3c5dc3451197f8781a43c5d9d4d36c",
      "parents": [
        "a07a1c2c91dc7ee6ded319262499f20cd01edcf7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 26 10:29:28 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:12:03 2013 -0700"
      },
      "message": "Add NBAIO_Source::onTimestamp()\n\nwith dummy default implementation, and implement in MonoPipeReader.\nonTimestamp is meant to be called by the corresponding sink when it has\na new timestamp available.\n\nChange-Id: I8a90d24d1061e4a592ce5bd8ee1c9fce6bdd8a84\n"
    },
    {
      "commit": "a07a1c2c91dc7ee6ded319262499f20cd01edcf7",
      "tree": "2d7b01150635952af8d8d9e4f1a0d0d48ccfa874",
      "parents": [
        "943ba3cca8df0da24db38e97e43aaacb5b788a21"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 10:54:35 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:11:39 2013 -0700"
      },
      "message": "Instantiate SingleStateQueue\u003cAudioTimestamp\u003e\n\nas typedef AudioTimestampSingleStateQueue and use it in MonoPipe.\n\nChange-Id: Idaebb362bd9d0a81a7ed83792ab9369dc37c0e74\n"
    },
    {
      "commit": "767094dd98b01baf21de2ad09c27b3c98776cf73",
      "tree": "57b1a9c3b3d794bac2e1922b314046f02df18e7e",
      "parents": [
        "e45a767e13fe3396185c9d378a70f7f11eb881d0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 13:51:43 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 11:24:02 2013 -0700"
      },
      "message": "Add NBAIO_Sink::getTimestamp()\n\nwith a real implementation in AudioStreamOutSink\nfor dummy implementation initially in MonoPipe.\n\nUse in AudioFlinger::PlaybackThread::threadLoop_write()\nto keep the input to the timestamp latch up-to-date.\n\nChange-Id: I10ef277991b63bb43d55d6f3df75116ef32246cd\n"
    }
  ],
  "next": "ecba7488c5cceaacef95836b1b476433451e7761"
}
