)]}'
{
  "log": [
    {
      "commit": "a416756864e2c7750d59d967ec2185532fa5c2e0",
      "tree": "8eaae79c575fa6925b9f279adcab5dd8911653da",
      "parents": [
        "92b2bbbb79eb89fe4262c354e8d183c2ba325111",
        "6f1c1918d0dfece10f728711b055441e4d135c73"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 01 00:39:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 01 00:39:48 2013 +0000"
      },
      "message": "Merge \"Add media.log service based on NBLog\""
    },
    {
      "commit": "a6a88d9c445e261972c2433254e0a996336e78a4",
      "tree": "3bcb34c468d9f0f525fb68dbb237e5b709a03465",
      "parents": [
        "1bd947a7c99853ad4ee67d59db89524be1e5acfc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 30 10:41:25 2013 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 30 10:41:25 2013 -0800"
      },
      "message": "Plumbing to reflect minor changes in the HDCP module API that allow for\n\nsupport of _decryption_ modules in addition to what we already supported.\n\nChange-Id: Ic37b87dc170ba8def3817991d25df798f21e950b\n"
    },
    {
      "commit": "6f1c1918d0dfece10f728711b055441e4d135c73",
      "tree": "e82c0166e895f9c61c11ff0800d2871298e63b30",
      "parents": [
        "11d8dfcc063425ae7d59229f54b6752fd8987c10"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:31:41 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 25 15:12:14 2013 -0800"
      },
      "message": "Add media.log service based on NBLog\n\nChange-Id: Ie45093df6ac9a739d05c8d408fab52a9a8a27e7f\n"
    },
    {
      "commit": "2e4664677d72ce54201d3fd0beb0e10280add93c",
      "tree": "7368a987e0b7a636791798fe22da6b7370b9ce1c",
      "parents": [
        "7ac90e913d96e49e636b02f2c3984c71080dafff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 10 14:26:24 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 10 14:52:24 2013 -0800"
      },
      "message": "Fix AudioRecord\n\nBug: 7965744\nChange-Id: Ic024e7fb32f7459b8093c2cf6cd5752aade21ddb\n"
    },
    {
      "commit": "a589764c3c0617c7a8996e929ce2d6db1cc01d77",
      "tree": "f4e107e86ab093909990bfa02ff9c67b09044085",
      "parents": [
        "f78f2629f5f6f5fc37a2089a85107fed97f12192"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 04 16:57:33 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 04 16:59:27 2013 -0800"
      },
      "message": "Fix bug in AudioRecord() constructor\n\nIt was calling set() with wrong parameter list.\nThis goes back to commit be916aa1267e2e6b1c148f51d11bcbbc79cb864c from 2010.\n\nChange-Id: I2f6917765baf58260bf35e89a2cc59c199734ff6\n"
    },
    {
      "commit": "d5681bc9a38fe4cd1d591e6ae62b9c68fb851041",
      "tree": "88d51865d4e4f98d05408975762b85894050e6b7",
      "parents": [
        "49d24d3fcd01aef0ec1fa4abd9c1b85473f64c0f",
        "e3aa659e9cee7df5c12a80d285cc29ab3b2cbb39"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 21 15:04:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 21 15:04:30 2012 -0800"
      },
      "message": "Merge \"Start isolating control block accesses in a proxy\""
    },
    {
      "commit": "49d24d3fcd01aef0ec1fa4abd9c1b85473f64c0f",
      "tree": "b2803e0ba9269ce4513f41d1a37984450f6fbfd7",
      "parents": [
        "df84d70d1da102995a5f1591c4af7c1807e4acd8",
        "8d6cc842e8d525405c68e57fdf3bc5da0b4d7e87"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 21 08:09:10 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 21 08:09:11 2012 -0800"
      },
      "message": "Merge \"Remove unnecessary parameter\""
    },
    {
      "commit": "0fd58c9758d2083915864d3cc63df7495b497e52",
      "tree": "4b643a4a10f451e1b88531d496fce14bb2d43f48",
      "parents": [
        "7cd2dd3ae3278a50396886cf0b5c9a1277601816",
        "89b629b398e87095cf262692f4e476d605fe87ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 20 08:58:04 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 20 08:58:05 2012 -0800"
      },
      "message": "Merge \"Fix bug with discarded AudioRecord::read count\""
    },
    {
      "commit": "8d6cc842e8d525405c68e57fdf3bc5da0b4d7e87",
      "tree": "d3296fc4f886ae058cb353cec79576b7e4428897",
      "parents": [
        "53bc0a2fc54330534330118edd5c393f39eff8ab"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 11:06:53 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 18 16:16:30 2012 -0800"
      },
      "message": "Remove unnecessary parameter\n\nJust get the parameter on server side\n\nChange-Id: I433a63104dbb257e0d862be2ab61847cb36d1c15\n"
    },
    {
      "commit": "8ba01021b573889802e67e029225a96f0dfa471a",
      "tree": "110eca2effc73dcb2f46da71e9a0584e4af6e71e",
      "parents": [
        "53bc0a2fc54330534330118edd5c393f39eff8ab"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 09:46:54 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 13:31:57 2012 -0800"
      },
      "message": "Rename ISurfaceTexture and SurfaceTexture\n\nThe C++ class names don\u0027t match what the classes do, so rename\nISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to\nGLConsumer.\n\nBug 7736700\n\nChange-Id: I64520a55f8c09fe6215382ea361c539a9940cba5\n"
    },
    {
      "commit": "89b629b398e87095cf262692f4e476d605fe87ed",
      "tree": "c31e756185bc90379f70710ffe9b16ae34b2d470",
      "parents": [
        "66c8dd24358a08a59944e9fc13d686e0ff91eee9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 17 11:44:20 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 17 17:26:44 2012 -0800"
      },
      "message": "Fix bug with discarded AudioRecord::read count\n\nFormerly, if an AudioRecord::read() got a timeout on obtainBuffer()\nafter already successfully transferring some data, then it returned zero.\nThis had the effect of discarding a partial transfer, which resulted in\na gap in the audio data delivered to the app.  Now if a timeout occurs\nafter a partial transfer, it returns that partial transfer count so that\nno data is lost.\n\nChange-Id: I0d9c2f4e495a400b56ef916a06613ba26537ca97\n"
    },
    {
      "commit": "e3aa659e9cee7df5c12a80d285cc29ab3b2cbb39",
      "tree": "90fdb6e9da1a03f4f24691aae27ae94ff913f1c7",
      "parents": [
        "84b6440fa1d1274267deabe0bd8dc626b5548e4c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 04 12:22:46 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 12 12:21:59 2012 -0800"
      },
      "message": "Start isolating control block accesses in a proxy\n\nThe proxy object will eventually be the only code that understands the\ndetails of the control block.  This should make it easier to change the\ncontrol block in the future.\n\nInitial set of control block fields that are isolated:\n - sample rate\n - send level\n - volume\n\nPrepare for streaming/static separation by adding a union to the control\nblock for the new fields.\n\nFix bug in handling of max sample rate on a track.  It was only checking\nat re-configuration, not at each mix.\n\nSimplify OutputTrack::obtainBuffer.\n\nChange-Id: I2249f9d04f73a911a922ad1d7f6197292c74cd92\n"
    },
    {
      "commit": "a8190fc518b6769257896605f3aee091aeb60b50",
      "tree": "6b235739b3e020180516761cb19f2163cacdb094",
      "parents": [
        "083d1c1492d496960d5b28f4664ff02101736677"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 03 17:06:56 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 03 17:11:19 2012 -0800"
      },
      "message": "Split off the current control block to separate file\n\nPrepare for a new implementation of step() etc.\n\nChange-Id: I268421976ba577aa1fb5d7015de5441c05861190\n"
    },
    {
      "commit": "083d1c1492d496960d5b28f4664ff02101736677",
      "tree": "5640adaecd5293c1088bf6bf3475b4887f4f9cb2",
      "parents": [
        "4bae3649d504d590a546717a8e49f96a30d9a745"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 15:00:36 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 03 11:38:57 2012 -0800"
      },
      "message": "Emphasize distinction between streaming and static\n\nUpdate comments and improve error checks to match\n\nChange-Id: I7370d6e59a7ef26dfb284a8b058d5ab2e0a42ccf\n"
    },
    {
      "commit": "4bae3649d504d590a546717a8e49f96a30d9a745",
      "tree": "0e9cc2e5390671a4021d85193b1ad31544040f3c",
      "parents": [
        "e4756fe3a387615acb63c6a05788c8db9b5786cb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 13:41:12 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 03 10:42:52 2012 -0800"
      },
      "message": "flush() comments and checks\n\nflush() is only useful for streaming mode.\nIt is a no-op if track is active or uses a static buffer.\n\nChange-Id: I918ac181ffae3d16a0d67d8a7208f4aec61b5bd6\n"
    },
    {
      "commit": "e4756fe3a387615acb63c6a05788c8db9b5786cb",
      "tree": "7e0b0278f71c7667784612a83af8f43ff08bf708",
      "parents": [
        "391f1bb93d5720bfe1a025307178b3208a3ce7d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 29 13:38:14 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 03 09:57:37 2012 -0800"
      },
      "message": "AudioTrack::mute() is unused so remove it\n\nIf ever needed again, it could be implemented on client side by forcing\na track volume of 0.\n\nChange-Id: I88a9b4f675b6dca2948549414f9ec2c192d29269\n"
    },
    {
      "commit": "391f1bb93d5720bfe1a025307178b3208a3ce7d7",
      "tree": "c4e999ee780e57f73ae4504a93cc82a84fe67537",
      "parents": [
        "fd5bc3be56ba5e2109daa216bd086825d6cd4ea3",
        "01437b7cdaecf53acb46b50ff8b5d86b9d36eb20"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 03 09:27:27 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 03 09:27:28 2012 -0800"
      },
      "message": "Merge \"AudioTrack inline short const methods\""
    },
    {
      "commit": "01437b7cdaecf53acb46b50ff8b5d86b9d36eb20",
      "tree": "da1b17ed3bd02368e33b0c83c872db25f78bd36c",
      "parents": [
        "24ee6aaf1368e3a07061948273c629d05cb9b12a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 29 07:32:49 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 15:23:44 2012 -0800"
      },
      "message": "AudioTrack inline short const methods\n\nChange-Id: I142917edb454d510bbe545e94e6eaea30b650fae\n"
    },
    {
      "commit": "5876f2f28f31c1bd99864ba3bb1590e3d6765018",
      "tree": "5b567d43dec9c01e4a9aafc0b0c93071c4927978",
      "parents": [
        "24ee6aaf1368e3a07061948273c629d05cb9b12a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 10:52:16 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 10:53:09 2012 -0800"
      },
      "message": "Remove last bits of IAudioFlinger::channel_count\n\nChange-Id: I9e13678e0aa32a86eb27367a4aff4b32b8aec8cc\n"
    },
    {
      "commit": "37a9e8e13bcc9ac614c1b733ec2c66764c29679a",
      "tree": "829d04b74d229edb6a7472f71b0b6502ec64e5fe",
      "parents": [
        "b58fdddc227e7245701508904056805625b9ec5f",
        "2f6107ec8e67eea1f73b9558a5ad34caec52867f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 29 14:32:21 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 29 14:32:21 2012 -0800"
      },
      "message": "am 2f6107ec: am b64def9a: Merge \"[wfd] Support a low(er) power state by triggering PAUSE/RESUME.\" into jb-mr1.1-dev\n\n* commit \u00272f6107ec8e67eea1f73b9558a5ad34caec52867f\u0027:\n  [wfd] Support a low(er) power state by triggering PAUSE/RESUME.\n"
    },
    {
      "commit": "2f6107ec8e67eea1f73b9558a5ad34caec52867f",
      "tree": "d14c5bad33fc76c96885250d73ad8172fad739c6",
      "parents": [
        "5ea87edbc97cd693fb7a9a8e00e712978315693c",
        "b64def9a555bfbf533a2da41ba0189b9842a76fb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 29 14:27:59 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 29 14:27:59 2012 -0800"
      },
      "message": "am b64def9a: Merge \"[wfd] Support a low(er) power state by triggering PAUSE/RESUME.\" into jb-mr1.1-dev\n\n* commit \u0027b64def9a555bfbf533a2da41ba0189b9842a76fb\u0027:\n  [wfd] Support a low(er) power state by triggering PAUSE/RESUME.\n"
    },
    {
      "commit": "5131d127a042ee88f903370be88845dc8c9f8578",
      "tree": "b6c2153d94a2dd57b8dfaaa12742c60c4fec0187",
      "parents": [
        "79c56d3f17d3193a0a86eb3c9bfdea90b89ae3f9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 16 10:38:11 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 29 10:33:51 2012 -0800"
      },
      "message": "[wfd] Support a low(er) power state by triggering PAUSE/RESUME.\n\nChange-Id: Ibe42bfa73816bbfeb7e652d435254d0171b89727\nrelated-to-bug: 7638150\n"
    },
    {
      "commit": "2546219a54970e0ad53bd218586cdc48d6039b20",
      "tree": "7f030d87274d48d4a65acccfb03d993502785953",
      "parents": [
        "ff82370c7c04340d50673d425f48acafd00f2bc9",
        "7b7f17dc9b30ff4ecdf0aea9bcfa1c518d4ac1e7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Nov 28 09:44:19 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 28 09:44:19 2012 -0800"
      },
      "message": "am 7b7f17dc: am b7c8e918: Add support for HLS playlists of type \\\u0027event\\\u0027.\n\n* commit \u00277b7f17dc9b30ff4ecdf0aea9bcfa1c518d4ac1e7\u0027:\n  Add support for HLS playlists of type \u0027event\u0027.\n"
    },
    {
      "commit": "7b7f17dc9b30ff4ecdf0aea9bcfa1c518d4ac1e7",
      "tree": "c4d499fae337e16f9e36f75417bc4e5f61a4f82b",
      "parents": [
        "5d7b2778d0e9849fa601d722ec2efcee7d032d4f",
        "b7c8e91880463ff4981e3e53e98e45d68e2fe374"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Nov 28 09:42:18 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 28 09:42:18 2012 -0800"
      },
      "message": "am b7c8e918: Add support for HLS playlists of type \\\u0027event\\\u0027.\n\n* commit \u0027b7c8e91880463ff4981e3e53e98e45d68e2fe374\u0027:\n  Add support for HLS playlists of type \u0027event\u0027.\n"
    },
    {
      "commit": "b7c8e91880463ff4981e3e53e98e45d68e2fe374",
      "tree": "3de921dd21aa2f4899487d3c56e4bfd28f4c004f",
      "parents": [
        "41829f30e60cdb7ae8eb1f0266834d245164f70e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 27 15:02:53 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 27 15:50:08 2012 -0800"
      },
      "message": "Add support for HLS playlists of type \u0027event\u0027.\n\nrelated-to-bug: 6870049\n\nSquashed commit of the following:\n\ncommit eee2f3ba6bb7335f4e285632726db85645669929\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 15:02:01 2012 -0800\n\n    Make everything a lot less verbose by default.\n\n    Change-Id: I884d7a7901aa1e7d4ff590f065ca57a79d2af8b3\n\ncommit 6bbdb837ed5bd88008e45efb8faf595e4051ba26\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 14:34:46 2012 -0800\n\n    HLS now properly signals media time changes at discontinuities including\n\n    the start of playback (which may not necessarily be at time 0 if the playlist\n    is of type \u0027event\u0027 and hasn\u0027t completed yet).\n\n    Change-Id: I5ab747d024f9b8d0df72a4e06a12ebb29f62802e\n\ncommit 1555589832b1878a144a976a643e1af4d61f877c\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 14:32:28 2012 -0800\n\n    As part of a time discontinuity, clients of IStreamListener can now\n\n    signal the corresponding media time after the discontinuity, i.e. the first PTS\n    timestamp following the discontinuity will be considered equivalent to the\n    specified media time and media buffers timestamped accordingly.\n\n    Change-Id: Id7db7679b7faa6efd6270620ff52e34e884f3e92\n\ncommit 5c24c605c073a11c426d025b1e7478fc1ad8365a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 13:00:56 2012 -0800\n\n    NuPlayer sources now expose flags() and can announce\n\n    that duration may change (increase) dynamically, in which case duration\n    will be polled at 1 second intervals and communicated to the upper layers.\n\n    Change-Id: I45102909b7a19eed0dda576747e3814d742a0eea\n\ncommit ecb71de8e281e61971a2cd73e7161a97540bc357\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 12:57:47 2012 -0800\n\n    Stop caching duration in MediaPlayer, duration could increase dynamically.\n\n    Change-Id: I7bb2f16c0abe49debdf45c776d2266aa069d7791\n\ncommit 544aec5823e6d7a3e97e15b6b23546616bcd343e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 08:46:28 2012 -0800\n\n    An attempt to add support for \"event\" style HLS playlists.\n\n    Change-Id: I3dfb2e801ecaff8f5d8bdb3a4fca1b18aeeb2c60\n\nChange-Id: I48cf7f65a654d33f2f49ded74f8be22aed9e3b98\n"
    },
    {
      "commit": "2b691b90507ec45a98636a855c46de5dbe27c84a",
      "tree": "a74fbe1863be31bb94a90e89c2bfe6c32134e41c",
      "parents": [
        "33cf49b168a88a88167c46b01787a57b49cd875f"
      ],
      "author": {
        "name": "Zbigniew Mazur",
        "email": "zbigniew.mazur@sonyericsson.com",
        "time": "Thu Oct 11 13:56:41 2012 +0200"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Fri Nov 23 09:49:30 2012 +0100"
      },
      "message": "AudioTrack::dump null mCblk check test\n\nThis fix is protecting AudioTrack::dump from SIGSEGEV\nwhen calling dumpsys shell command.\n\nChange-Id: I30d136e195a12d6fdad41e14f557b0ad9e59b8a2\n"
    },
    {
      "commit": "4d9cef6c007afd195a8f36d35d46b359bf909331",
      "tree": "6ada6f23d2e14157c2f06a64cc3548ddf3c3fb84",
      "parents": [
        "a6b47a17fb1288936b491f30cd751172a572df5c",
        "a42ff007a17d63df22c60dd5e5fd811ee45ca1b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 19 11:53:52 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 19 11:53:53 2012 -0800"
      },
      "message": "Merge \"Clean up channel count and channel mask\""
    },
    {
      "commit": "a42ff007a17d63df22c60dd5e5fd811ee45ca1b3",
      "tree": "58ba8c1bf24f27680d48b6040132a02bfaedc0ff",
      "parents": [
        "aa25c0321bd4b9eb46a4d1cb4ac5fa47af30eeb4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 12:47:55 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 19 11:25:58 2012 -0800"
      },
      "message": "Clean up channel count and channel mask\n\nChannel count is uint32_t.\nRemove redundant mask parameter to AudioTrack::createTrack_l()\n    and AudioRecord::openRecord_l().\n\nChange-Id: I5dc2b18eb609b2c0dc3091994cbaa4628062c17f\n"
    },
    {
      "commit": "a6b47a17fb1288936b491f30cd751172a572df5c",
      "tree": "8813f1d51d92ab330f2440deacb2f69849167a0b",
      "parents": [
        "aa25c0321bd4b9eb46a4d1cb4ac5fa47af30eeb4"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 19 09:49:18 2012 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 19 09:49:18 2012 -0800"
      },
      "message": "delete -\u003e free\n\nStrings duplicated with strdup() should be free()d, not deleted.\n\nChange-Id: I42bb3df9625bb8d35f80b02d15364b94c36496f8\n"
    },
    {
      "commit": "aa25c0321bd4b9eb46a4d1cb4ac5fa47af30eeb4",
      "tree": "efd13606a807054398ad8e3ab12981fb85a97a82",
      "parents": [
        "77035d10a740914313500811b31a90ab948bd267",
        "d65d73c4ae74d084751b417615a78cbe7a51372a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 15:47:51 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 16 15:47:52 2012 -0800"
      },
      "message": "Merge \"\"if\" statements use curly braces per media style\""
    },
    {
      "commit": "77035d10a740914313500811b31a90ab948bd267",
      "tree": "1acab688b22d1a915308bac9cac8b9ad8f3e0b18",
      "parents": [
        "67ba2b6b8018ce7556cdd880dbf28d06a92ebb78",
        "26c77556efc30800466b60b3975bc35a70c8c28b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 15:38:29 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 16 15:38:30 2012 -0800"
      },
      "message": "Merge \"Fix time vs. bytes units bug in getRenderPosition\""
    },
    {
      "commit": "67ba2b6b8018ce7556cdd880dbf28d06a92ebb78",
      "tree": "085267f87c37752d3b6b4d79956f03ca74005df5",
      "parents": [
        "e65d2797bc33897e1f61b702cf182e801b33990a",
        "b603744e96b07b1d5bf745bde593fb2c025cefcf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 15:23:42 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 16 15:23:42 2012 -0800"
      },
      "message": "Merge \"Don\u0027t use control block frame count after create\""
    },
    {
      "commit": "b603744e96b07b1d5bf745bde593fb2c025cefcf",
      "tree": "0c8ae15dbd430ccfcb872c701de48907ec48afc8",
      "parents": [
        "f91a3abb7d136e75f0f5d999193b8c8297d97628"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 13:42:25 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 15:01:47 2012 -0800"
      },
      "message": "Don\u0027t use control block frame count after create\n\nThis is part of a series to clean up the control block.\n\nChange-Id: I7f4cb05aef63053f8e2ab05b286d302260ef4758\n"
    },
    {
      "commit": "d65d73c4ae74d084751b417615a78cbe7a51372a",
      "tree": "5f9f492220c0983554fb102ddc558462dc1ca26c",
      "parents": [
        "f91a3abb7d136e75f0f5d999193b8c8297d97628"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 17:21:07 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 14:32:45 2012 -0800"
      },
      "message": "\"if\" statements use curly braces per media style\n\nChange-Id: I130e7849fd1da7a0b7fe56c3c53919d26e3843b8\n"
    },
    {
      "commit": "827e5f1237757aee78b677efcf0f7c44fd0dd3d8",
      "tree": "dfebb3c40be3ca42b017a2e9546930b5a718a86d",
      "parents": [
        "f91a3abb7d136e75f0f5d999193b8c8297d97628"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 02 10:00:06 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 14:26:21 2012 -0800"
      },
      "message": "Don\u0027t explicitly log tid\n\nIf needed, it can be obtained with adb logcat -v threadtime\n\nChange-Id: I91b3911d20f7bcfc3361db4052db21ff9181f1cf\n"
    },
    {
      "commit": "26c77556efc30800466b60b3975bc35a70c8c28b",
      "tree": "71f2a577ff2969ecfea36d73c7931e8afbb14fed",
      "parents": [
        "a1c1a7e4c9cb37726e4afc10d6678666087f8e1d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 12:01:44 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 14:16:15 2012 -0800"
      },
      "message": "Fix time vs. bytes units bug in getRenderPosition\n\nRename correctLatency since it requires thread to be locked.\nUse size_t for byte and frame counts.\n\nChange-Id: I178fdd18bdb823813b9563927bdff8c0d28ca5a5\n"
    },
    {
      "commit": "e33054eb968cbf8ccaee1b0ff0301403902deed6",
      "tree": "b91f7abd2927e25a4cb7c50a8ef197c643ca9db6",
      "parents": [
        "7d9c126be8dfe3016683eeb2b7a2d88ba5b24c0b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 12:54:39 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 15 16:43:40 2012 -0800"
      },
      "message": "Use size_t for frame counts\n\nAlso fix typo: bufferCount should be frameCount.\n\nChange-Id: Ibed539504db75ef99dc21c8ff1bf2987122063a5\n"
    },
    {
      "commit": "60a839204713e0f8258d082af83262b1eb33a6c3",
      "tree": "5b8ef6ace475c96637bb6498b1c0a602611f9a58",
      "parents": [
        "3b16c766d1ae2cfd8487e8ffb2b23936fc0a8e17"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 12:56:37 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 16:45:53 2012 -0800"
      },
      "message": "Clean up frame size in AudioTrack and AudioFlinger\n\nTrackBase::mFrameSize, mChannelMask, and mChannelCount are now const.\nUse TrackBase::mFrameSize instead of re-calculating frame size.\nAudioFlinger only sees 16-bit PCM format, conversion from 8-bit is\n  now entirely on the client side.  Previously a small part of the\n  responsibility was on server side also.\nsize_t is unsigned, so use %u in logs.\nFix theoretical bug where TrackBase constructor was over-allocating space\n  for non-linear AudioTrack or 8-bit PCM AudioRecord (probably benign).\n\nChange-Id: I7cbbba0bf4dba29ea751d8af341ab8e5cbbdc206\n"
    },
    {
      "commit": "3b16c766d1ae2cfd8487e8ffb2b23936fc0a8e17",
      "tree": "56e1f373606202e5d5277f9645158d91b1a0a80c",
      "parents": [
        "b4a17e834b718eff1ba2eac4232de6e73a4bf9f5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 08:44:39 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 16:19:23 2012 -0800"
      },
      "message": "Use uint32_t for sample rate\n\nChange-Id: Ie240b48fb54b08359f69ecd4e5f8bda3d15cbe80\n"
    },
    {
      "commit": "b4a17e834b718eff1ba2eac4232de6e73a4bf9f5",
      "tree": "7695be77fbe32e402270bea057a1d300451398bf",
      "parents": [
        "6d92e415c6551d881429151c1902d301a7bf7cf0",
        "22eb4e239fbe9103568147d566d7482e480350b8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 16:14:31 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 14 16:14:32 2012 -0800"
      },
      "message": "Merge \"Update audio comments\""
    },
    {
      "commit": "6d92e415c6551d881429151c1902d301a7bf7cf0",
      "tree": "f75659dfc79addf5165a5c46e7d68555fb7438dd",
      "parents": [
        "acc8706f91f799ea63c10ecad4959c55e0873d93",
        "a552d6049ccf674b083d011ce7b8a443a9cd68a4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 15:43:41 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 14 15:43:41 2012 -0800"
      },
      "message": "Merge \"Remove deprecated AudioSystem methods\""
    },
    {
      "commit": "22eb4e239fbe9103568147d566d7482e480350b8",
      "tree": "132fa6ac8c0bc47fd6d3b1cc67d1724dc3b939a2",
      "parents": [
        "2d81f665461409f0c5d0be674a35a0aea63a4fc8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 07 14:03:00 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 11:58:17 2012 -0800"
      },
      "message": "Update audio comments\n\nChange-Id: I85d7d2f6381b251db5695202fec75128883a8662\n"
    },
    {
      "commit": "b26e3e9f2ab0334bff21a4fa4851dbf6e57fba5d",
      "tree": "15c8aca0fbda54b73689628b74c48ebb194a2f75",
      "parents": [
        "2d81f665461409f0c5d0be674a35a0aea63a4fc8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 08:32:08 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 11:12:07 2012 -0800"
      },
      "message": "Fix build warnings\n\nChange-Id: Ic43bcca166a529a6431711b05a7fa21849b6a38b\n"
    },
    {
      "commit": "a552d6049ccf674b083d011ce7b8a443a9cd68a4",
      "tree": "dffb6cd91f147c095a016c004353c68d049611e6",
      "parents": [
        "2d81f665461409f0c5d0be674a35a0aea63a4fc8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 13 15:01:05 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 13 15:54:20 2012 -0800"
      },
      "message": "Remove deprecated AudioSystem methods\n\nChange-Id: I952d504e03af9a1d3e1e0aa379c82dfb00197d9f\n"
    },
    {
      "commit": "b36a7a68af073b1e7fd5cad6aa2c52223fd30efd",
      "tree": "ffab4964484a5eac7e9ca8f50a40c03cf4cd4e82",
      "parents": [
        "93a7efd45c28becb994f0818ea29c00ec45eea57"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 12 15:46:10 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 13 08:51:39 2012 -0800"
      },
      "message": "Simplify AudioRecord::restoreTrack_l()\n\nFinish removing CBLK_RESTORING and CBLK_RESTORED from control block flags,\nand remove constant RESTORE_TIMEOUT_MS.\n\nAlso minor cleanup:\n - Cache mCblk in local variable cblk and make cblk allocatable in a register.\n - Use \"iMem\" for sp\u003cIMemory\u003e.\n - Add missing error log to AudioRecord; it was already in AudioTrack.\n\nThis is part of a series to clean up the control block.\n\nChange-Id: Ia5f5ab4763c392bc06a45851b167ddaee29e3455\n"
    },
    {
      "commit": "83a0382dc17364567667a4e6135db43f5bd92efc",
      "tree": "c3738c183fa49d9ccd023e27b37024860ccfff22",
      "parents": [
        "bc0f6b92bba33ca9c2e76f2a520d290f055da6b2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 12 07:58:20 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 12 15:13:34 2012 -0800"
      },
      "message": "Move frame size out of the control block\n\nThis is part of a series to clean up the control block.\n\nChange-Id: Ifab1c42ac0f8be704e571b292713cd2250d12a3f\n"
    },
    {
      "commit": "bc0f6b92bba33ca9c2e76f2a520d290f055da6b2",
      "tree": "680eed54d506a181ba8a6844e93d32a9a69747e4",
      "parents": [
        "e35a582d02586cb43ad9e344138b4edad62868b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 12 14:32:06 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 12 14:32:06 2012 -0800"
      },
      "message": "Fix regression for AudioTrack::write() 8-bit PCM\n\nBug: 7526532\nChange-Id: I8ddd1f0e9d035b54401788dcc422591281dcd97a\n"
    },
    {
      "commit": "b929e417853694e37aba1ef4399f188987b709d9",
      "tree": "670f2da01fd3d33df6da2998c78273e0701300ad",
      "parents": [
        "a47f3165f53c8e8fb8907a94de7417e2c3047eeb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 08 12:13:58 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 08 12:18:59 2012 -0800"
      },
      "message": "Move buffers pointer out of the control block\n\nThis is part of a series to clean up the control block.\n\nChange-Id: Ie474557db7cb360f2d9a0f11600a68f5a3d46f07\n"
    },
    {
      "commit": "a47f3165f53c8e8fb8907a94de7417e2c3047eeb",
      "tree": "d6f691af946f8754b8534347c9b0b3ec535e776e",
      "parents": [
        "659004c2949620d8adb29e1d950a2dd1c75ba9a9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 07 10:13:08 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 08 11:22:38 2012 -0800"
      },
      "message": "Simplify AudioTrack::restoreTrack_l()\n\nRemove CBLK_RESTORING and CBLK_RESTORED from control block flags,\nfor AudioTrack only.  They are still used by AudioRecord.\n\nThis is part of a series to clean up the control block.\n\nChange-Id: Iae4798f5b527c492bdaf789987ff3a1dadd0cb37\n"
    },
    {
      "commit": "659004c2949620d8adb29e1d950a2dd1c75ba9a9",
      "tree": "0619d1c2fa1515119ddd92648724e89a1073e76a",
      "parents": [
        "755e8e1dcf36f282b727ff22d87d3c2fac70d30a",
        "b1c0993b215c5c3eebd1c6bafc22bba23d57a70b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 08 10:35:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 08 10:35:07 2012 -0800"
      },
      "message": "Merge \"Add all-channel AudioTrack::setVolume() API\""
    },
    {
      "commit": "755e8e1dcf36f282b727ff22d87d3c2fac70d30a",
      "tree": "e0c8468a87427f51deba8d018931afb4394b3f1d",
      "parents": [
        "864585df53eb97c31e77b3ad7c0d89e4f9b42588",
        "d5ed6e88a9bea1879e41d7defaf1edea7c09f554"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 08 10:04:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 08 10:04:07 2012 -0800"
      },
      "message": "Merge \"Fix call to restoreTrack_l() without lock held\""
    },
    {
      "commit": "d5ed6e88a9bea1879e41d7defaf1edea7c09f554",
      "tree": "99a34f51474700f4873e3f817b6b9f2c47001fc3",
      "parents": [
        "8fa3ad0e4c77f7868348ad2a4cacc34c34e7c39e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 02 13:05:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 07 16:11:56 2012 -0800"
      },
      "message": "Fix call to restoreTrack_l() without lock held\n\nAlso document lock order\n\nChange-Id: I2c1f273a0a51fa79ee3dd766de8d23083e270051\n"
    },
    {
      "commit": "864585df53eb97c31e77b3ad7c0d89e4f9b42588",
      "tree": "529492712326aa5aa997aa2d2f66a65baf4356b1",
      "parents": [
        "8fa3ad0e4c77f7868348ad2a4cacc34c34e7c39e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 06 16:15:41 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 07 08:32:40 2012 -0800"
      },
      "message": "Remove CBLK_DIRECTION from control block flags\n\nThis is part of a series to clean up the control block.\n\nChange-Id: I0265fece3247356b585d4d48fbda6f37aea8a851\n"
    },
    {
      "commit": "8fa3ad0e4c77f7868348ad2a4cacc34c34e7c39e",
      "tree": "b2ca5d7c9f8ff86f0e69359251a873478115c503",
      "parents": [
        "9d91e2a52b74380dae2662c8c00477c013b83c2c",
        "e0b07179a48ee50fda931d2aa1b3c751d167e4d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 07 08:29:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 07 08:29:31 2012 -0800"
      },
      "message": "Merge \"Remove CBLK_FAST from control block flags\""
    },
    {
      "commit": "9d91e2a52b74380dae2662c8c00477c013b83c2c",
      "tree": "4efa95627996831eb5dd6a92701ca79fdf262688",
      "parents": [
        "1f315f2550a06debd7e43fb508b2e1a8cd7a9046",
        "05d499958e4030938ed77a924ebdd9899f36752e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 07 08:09:22 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 07 08:09:23 2012 -0800"
      },
      "message": "Merge \"Remove unused fields in AudioTrack::Buffer\""
    },
    {
      "commit": "e0b07179a48ee50fda931d2aa1b3c751d167e4d7",
      "tree": "d495cc851dba53652011108297d100e64a4c4acd",
      "parents": [
        "48c6b2628f8a6037309c7957b07129d850187aa3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 06 15:03:34 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 06 17:25:22 2012 -0800"
      },
      "message": "Remove CBLK_FAST from control block flags\n\nThis is part of a series to clean up the control block.\n\nChange-Id: Ic881a3560d9547cb63fcc0cefec87aa3da480e0d\n"
    },
    {
      "commit": "05d499958e4030938ed77a924ebdd9899f36752e",
      "tree": "c1eb564773575a2905de4b99f2a352e315611a5e",
      "parents": [
        "48c6b2628f8a6037309c7957b07129d850187aa3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 06 14:25:20 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 06 14:37:04 2012 -0800"
      },
      "message": "Remove unused fields in AudioTrack::Buffer\n\nChange-Id: Iab75f6e2348d8b6d1f3cec95aeb3fcd5135dfb50\n"
    },
    {
      "commit": "26ba972eafde73a26271ecf027a1d5988ce50eb8",
      "tree": "855c95819711ccf8e641bf77d428ea9d81955415",
      "parents": [
        "48c6b2628f8a6037309c7957b07129d850187aa3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 16:24:32 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 06 14:27:51 2012 -0800"
      },
      "message": "Removed unused fields in AudioRecord::Buffer\n\nChange-Id: I89fc6d8f695b48516d956b0a9a4a43d408f369f9\n"
    },
    {
      "commit": "d2c38fc4d5dc742d7441444316849510dd2b7363",
      "tree": "5f7da68ffa30a22cc567a71af0d0fbf2c3ffb4c3",
      "parents": [
        "cce9dfb4b17ef5a42c5805aeeae28d3390e4655f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 14:58:02 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 06 10:33:38 2012 -0800"
      },
      "message": "Cache mCblk in local variable cblk\n\nUse \"iMem\" for sp\u003cIMemory\u003e\n\nChange-Id: I2f1fbbc517fbd77cfc92f6c3b1f253c26bae93b0\n"
    },
    {
      "commit": "8e825a57202ce6cb2ddac67683ee5885334ce75d",
      "tree": "967d141640b7c6cbb737cd6c1ec6a6335fec9310",
      "parents": [
        "7eb54958353458953ad052418c1c98a1b5338b7d",
        "9c5fdd83f9b9f49be35107971feb33528d60b945"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 05 16:32:24 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 05 16:32:24 2012 -0800"
      },
      "message": "Merge \"Simplify control block flag names\""
    },
    {
      "commit": "b1c0993b215c5c3eebd1c6bafc22bba23d57a70b",
      "tree": "7b2d2eb6d08c5460fc896e083983ef6e65b5db45",
      "parents": [
        "ad4e408b8ea397caadbfee85e1e39515e7e08104"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 27 16:21:04 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 05 15:12:51 2012 -0800"
      },
      "message": "Add all-channel AudioTrack::setVolume() API\n\nAdd combined channel APIs setVolume to AudioTrack,\nand remove obsolete getVolume.\n\nChange-Id: I0c87bfdbff4f4292259fa33e65f67badbafd270b\n"
    },
    {
      "commit": "847d05dc8fa144dcf8f4f435d6a6ac1727f00937",
      "tree": "c079d882c6070ba620cad05b2b5254b4ba2ecf50",
      "parents": [
        "f27bdebd0c611f9618577f65346f44574146dc00"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 27 16:05:09 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 05 13:49:59 2012 -0800"
      },
      "message": "Remove deprecated AudioTrack APIs\n\nChange-Id: I88be6525f3e33df529c0c3cb701d12a484809477\n"
    },
    {
      "commit": "9c5fdd83f9b9f49be35107971feb33528d60b945",
      "tree": "cd8f20f3c4355d55057cc70369be9c2d3f890838",
      "parents": [
        "ad4e408b8ea397caadbfee85e1e39515e7e08104"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 05 13:38:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 05 13:43:51 2012 -0800"
      },
      "message": "Simplify control block flag names\n\nUse only one symbol per flag\n\nChange-Id: Ia3582e2134abd60c896d11337face65383e79c7c\n"
    },
    {
      "commit": "9a08ebc8de71e260efb86cd1a04559b075b38ebc",
      "tree": "3974062bbee1bc0287d7f0d1ac00a1db1108e584",
      "parents": [
        "821cea93f38065592456d6644600f5ee1123fe72"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 02 09:59:51 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 02 13:24:50 2012 -0700"
      },
      "message": "Fix spurious wakeup waiting for new IAudioTrack\n\nIf there was a spurious wakeup while waiting for another thread to create\na new IAudioTrack, we assumed that the track has been created when it\nmight not have been.\n\nChange-Id: I5f3999b4f7a06a00aabd65a746cc7222fff396ab\n"
    },
    {
      "commit": "85ab62c4b433df3f1a9826bed1c9bec07a86c750",
      "tree": "0c5443a20824924cb7403f4cabfee84062489793",
      "parents": [
        "5fe6138bd839297a1eed16885102b3bdfc98c040"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 11:11:38 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 12:19:25 2012 -0700"
      },
      "message": "Line length 100\n\nChange-Id: Ib28fd7b9ce951a6933f006e7f8812ba617625530\n"
    },
    {
      "commit": "c41590251aa84c078c942d258e838aad814b73a5",
      "tree": "1db58d721d614ebd28f52b7a1dc632d943d6506d",
      "parents": [
        "db3a20ea484514f7f23d4ef3c30fe4780ab940d2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 30 10:51:39 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 30 10:51:39 2012 -0700"
      },
      "message": "Remove obsolete references to libmedia_native\n\nBug: 6654403\nChange-Id: I3993d62987cf0dd85db10bf002a5cce53d4f01bd\n"
    },
    {
      "commit": "18a6d9029e18a93748d3d9c33f04c1b360aeb7ae",
      "tree": "a64555ce99d75dae8638cc1273917dd880d8ffaa",
      "parents": [
        "692c3e54c63aaaf7e9ef4d89761f98975bd34f33"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 24 11:27:56 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 26 16:18:24 2012 -0700"
      },
      "message": "Fix typo\n\nChange-Id: I8cc2969eb329a830ee866622a8633adcb4e967cc\n"
    },
    {
      "commit": "b1eb1a0dd38a36dd0c0626d3d57043dbd0042a92",
      "tree": "dd1bdc77dd66e946b9ef20f56dda332e8b6de8b4",
      "parents": [
        "e384d75b95b9db30d64a18ada93e070cf07de306"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 22 17:44:24 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 22 18:26:50 2012 -0700"
      },
      "message": "stagefright: discard audio at start of capture\n\nThe new camcorder start sound is longer than previous one and we\nmust discard more audio when capture starts.\n\nIdeally, camcorder should use synchronous record start.\n\nBug 7394330.\n\nChange-Id: I219b4e231aba706776dc7ccc4f1c996eaf22f61a\n"
    },
    {
      "commit": "d7086030fcf731e4bcef6c033cc6418cd04e6b91",
      "tree": "51f233eeff7c3e17e980d1fb0f41a2ba3f030b16",
      "parents": [
        "dca0ac2193e87c57d871dd208073107408c13c0a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 10 12:11:16 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 10 12:11:16 2012 -0700"
      },
      "message": "Support querying active record sources\n\nAdd support for querying whether there is currently a recording\n underway from the specified audio source.\n\nBug 7314859\n\nChange-Id: I986b231a10ffd368b08ec2f9c7f348d28eaeb892\n"
    },
    {
      "commit": "cc0f1cfb69ce8b8985fc2c0984847a06a13ad22d",
      "tree": "f3522fd1ad371d1e592c8c8cfd8d0ce1d98f80c2",
      "parents": [
        "d9aa7b4db46bea5966401f9fcfbecb3269ec55c7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 24 11:27:18 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 25 17:13:18 2012 -0700"
      },
      "message": "Implement android.media.AudioManager.getProperty()\n\nBug: 6635041\nChange-Id: I3386a4a6c226bc4eceaf65556119e4fb15f73224\n"
    },
    {
      "commit": "207e18540fefbaf530a4fdf506d266f34ddec84f",
      "tree": "d8e7d7db4c874aabfe35c5fdd4a5dcf7bf72047d",
      "parents": [
        "086f958a7e539acffb637b42f5a6998184544179"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Sep 20 16:00:17 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 21 09:24:08 2012 -0700"
      },
      "message": "Remove legacy code and APIs in wifi display related code.\n\nChange-Id: Ia010e7a00534f9356b3247369d0ffd65591d91aa\n"
    },
    {
      "commit": "efbb781c15abf8e085f5ab8d39710bd58ea0b6e4",
      "tree": "a2f28698970fc1b62495cee5d617e1037a0a957d",
      "parents": [
        "74e58c55bc5259b957a51f1bb44a5911ad1f8400"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 18 10:36:32 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 19 09:28:08 2012 -0700"
      },
      "message": "HDCP module binderized\n\nChange-Id: I866768b1e3f3b232f1934a35b65f66befc12f3f6\n"
    },
    {
      "commit": "896adcd3ae6a1c7010e526327eff54e16179987b",
      "tree": "8c999b21698b1b7b45ac1d290ef3c64c808f380d",
      "parents": [
        "4362f5300162ed55f56cf167eccf7f2e5b89d435"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 13 11:18:23 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 13 17:03:00 2012 -0700"
      },
      "message": "audioflinger: send priority request from a thread\n\nWhen creating a fast AudioTrack, a request is sent to SchedulingPolicyService\nto elevate the requesting thread priority. This generates a binder\ncall into system_server process and to a JAVA service via JNI.\nIf the thread from which the track was created is in the system_server\nprocess and does not have the \"can call java\" attribute, a crash occurs because\nthe binder optimization reuses the same thread to process the returning binder\ncall and no JNI env is present.\n\nThe fix consists in sending the priority change request from the AudioFlinger\nmixer thread, not from the binder thread.\n\nThis also reverts the workaround in commit 73431968\n\nBug 7126707.\n\nChange-Id: I3347adf71ffbb56ed8436506d4357eab693078a3\n"
    },
    {
      "commit": "73431968e3c5cf420b5d63c54cf72d10ff7ee7bc",
      "tree": "11239e23b4a170e479addf4a102200b46e6c8ebb",
      "parents": [
        "359cf1cac2a7851a59dfe4960a1a5992ac6fdb84"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 12 19:42:34 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 12 19:42:34 2012 -0700"
      },
      "message": "Workaround for track recreation bug\n\nIgnore thread can call Java parameter to work around bug where\n AudioTrack instance gets recreated when key clicks are enabled\n and WFD gets turned on, with the wrong parameters.\n\nChange-Id: Ia42c8704b46fe3ffea560b05b60939fa2e4b29e1\n"
    },
    {
      "commit": "fd48021dfc3278b048ba99ecffe7f996751fb440",
      "tree": "95df204b201380b95ae273ab9788d81fce8e3f62",
      "parents": [
        "6ce3d19cd35a49add6893298f70b87917fc60d52",
        "e7c992c675e0075cd60b0b11c06d5956e3ddd7a3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 16:11:37 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Sep 09 16:11:37 2012 -0700"
      },
      "message": "am e7c992c6: am 5abc91d6: Merge \"Fix libmedia and libstagefright to get expat header files from the approved location.\"\n\n* commit \u0027e7c992c675e0075cd60b0b11c06d5956e3ddd7a3\u0027:\n  Fix libmedia and libstagefright to get expat header files from the approved location.\n"
    },
    {
      "commit": "e7c992c675e0075cd60b0b11c06d5956e3ddd7a3",
      "tree": "f97adde9ae532e442c68e00e6143d613751ec7d2",
      "parents": [
        "371e121745c2e43e3c26fd1a854eaf6d3324f057",
        "5abc91d61718e334e05c6d4858bd868bd5a5769c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 16:07:48 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Sep 09 16:07:48 2012 -0700"
      },
      "message": "am 5abc91d6: Merge \"Fix libmedia and libstagefright to get expat header files from the approved location.\"\n\n* commit \u00275abc91d61718e334e05c6d4858bd868bd5a5769c\u0027:\n  Fix libmedia and libstagefright to get expat header files from the approved location.\n"
    },
    {
      "commit": "e8057dd8208f0a185109992339a995c518b12780",
      "tree": "35734a3eee8059df684d13ef53b625a209f9659e",
      "parents": [
        "8b1525663322685ff34d9c09176feebd102e1c3d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 14:58:14 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 09 14:58:14 2012 -0700"
      },
      "message": "Fix libmedia and libstagefright to get expat header files from the approved location.\n\nFound during a libexpat upgrade.\n\nChange-Id: I9e5abd502a884975d898486edde374fb2519164e\n"
    },
    {
      "commit": "261fd2119c70fda3af64453881a6346dd48eb956",
      "tree": "bebeb91c3c8538d93c0bdf520948e7e304a8a3ab",
      "parents": [
        "d06ab147394b0b49679c924a51d77c91dea04d82",
        "6f744d75d3439f7984245e3c489cc7cf91cea41c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 07 09:18:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 09:18:44 2012 -0700"
      },
      "message": "Merge \"AudioRecord: Fix minimum frame count calculation.\" into jb-mr1-dev"
    },
    {
      "commit": "6f744d75d3439f7984245e3c489cc7cf91cea41c",
      "tree": "a4e050390092ea08271e55d8178565be47c06ab7",
      "parents": [
        "0b73d4730202fcad53aefc4314a06e7b95f442f0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 06 11:52:36 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 06 11:52:36 2012 -0700"
      },
      "message": "AudioRecord: Fix minimum frame count calculation.\n\nAudioRecord::set() was calling getMinFrameCount() with\na channel count instead of a channel mask.\n\nChange-Id: Iabace7686426430fd53deac0c71b0c36aa64171c\n"
    },
    {
      "commit": "455d02eca342d8159637af317a5d83219d267812",
      "tree": "2c8a516e25ac9866d681021cd138b582a9f76bba",
      "parents": [
        "0b73d4730202fcad53aefc4314a06e7b95f442f0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 05 17:48:03 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 05 17:48:03 2012 -0700"
      },
      "message": "Update remote display API.\n\nRenamed disconnect() to dispose() to emphasize the fact that\nthis method is intended to clean up the IRemoteDisplay\ncompletely, not just temporarily disconnect the current client\n(which might be useful someday).\n\nOther minor tweaks.\n\nChange-Id: I1209639eb0cd8af09c724206642d7e52aab48257\n"
    },
    {
      "commit": "e104596061b219e9bce6d4db49a9d15242f8d2e5",
      "tree": "d28e83486d2079284c3e04e260fe6a8952d9599f",
      "parents": [
        "6c75ad21705cde0a11f78c755dc70bdec76890e6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 04 21:38:42 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 05 08:47:36 2012 -0700"
      },
      "message": "Implement remote display service stubs.\n\nChange-Id: I582ed000026bba6d116db8304e15a3c52f8a9a01\n"
    },
    {
      "commit": "cd89e8014368af1bbdfa08406d5d2eb0bbbfcca1",
      "tree": "372818c0898b8c0db85e0ebd482359e14ddba066",
      "parents": [
        "892020e46b97adfa012be7a9dd688a2d6d528de4",
        "da7ff5321539ac07ec76d0d03bd1b9b09a1823bf"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 14:03:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 14:03:25 2012 -0700"
      },
      "message": "Merge \"Added an additional virtual method IStreamSource::flags().\" into jb-mr1-dev"
    },
    {
      "commit": "da7ff5321539ac07ec76d0d03bd1b9b09a1823bf",
      "tree": "dbbf951396f9dbae58a76bdeaa8d0bba9f9cebf6",
      "parents": [
        "dc91c885f267005e06f439a3bd592b3d8706bb50"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 13:40:12 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 13:40:12 2012 -0700"
      },
      "message": "Added an additional virtual method IStreamSource::flags().\n\nChange-Id: I89e62d84328e12f08c8f73cbfd53cfb42569de97\n"
    },
    {
      "commit": "c3ae93f21280859086ae371428ffd32f39e76d50",
      "tree": "542d16fac64eb1f6e40c32517d60c2da5078e900",
      "parents": [
        "c9936c72c128a4a9288424fb082d7e7fe4b9b91f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 30 10:59:30 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:31:00 2012 -0700"
      },
      "message": "Update audio comments\n\nChange-Id: Ie7504d0ddb252f7e4d4f99ed0b44cfc7b1049816\n"
    },
    {
      "commit": "bcf09f8c995221e75c7cd328f25c7cc6d2b5f7c9",
      "tree": "12db95dcd0186648022458280b950cf4aa154849",
      "parents": [
        "86b1961a8d61086ef8d5475182f2a3cf4392b42c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 30 14:51:40 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 30 14:51:40 2012 -0700"
      },
      "message": "Only run the wifi display RTSP server on demand, and only on the wifi direct\n\ninterface.\n\nChange-Id: I7d3c44cb79cd40e73499f2d7ccf35c69b628e6d7\n"
    },
    {
      "commit": "d8ee4e56f92eeb44ddc0997efe280b9f28ad814d",
      "tree": "8ae19d56b416a17a218c4c405939acad3fe8cb1e",
      "parents": [
        "f147b722ad2405c7f92ea8691f36b04a82d62bb1",
        "d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 15:29:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 29 15:29:11 2012 -0700"
      },
      "message": "Merge \"Initial checkin of support for acting as a wifi display source\" into jb-mr1-dev"
    },
    {
      "commit": "d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480c",
      "tree": "3c4c7a83313d169b13c79c9660afeb804d27b975",
      "parents": [
        "eb941f9a0c8474324732a99387cc6d8cb4ab01ef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 11:41:50 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 15:06:57 2012 -0700"
      },
      "message": "Initial checkin of support for acting as a wifi display source\n\nChange-Id: I08f17efa0c7d007e17408feb7d4fbef0a19f531a\n"
    },
    {
      "commit": "1b19c9d120869c3182373a9b06a1ed98898df882",
      "tree": "f004f06f4d23698432b71da01873147a8da7c44e",
      "parents": [
        "eb941f9a0c8474324732a99387cc6d8cb4ab01ef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 11:34:22 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 11:34:22 2012 -0700"
      },
      "message": "Preliminary support for HDCP as a binder service for wifi display support.\n\nChange-Id: Ie0de1c086c629a668d1c7863992eef56fb94157c\n"
    },
    {
      "commit": "6a8ea471a9f3b001bd0ffa3381eba12975dfc59f",
      "tree": "3590178bb20b7042efdaca9f7f87822f7ea1968a",
      "parents": [
        "3411fc2f3a44b22d69a359a3eb26f756d6116e4f",
        "a997e7a7c5aa2fc7e95316218316f8b7b98786ba"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 20 15:46:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 15:46:07 2012 -0700"
      },
      "message": "Merge \"Revert \"Swap the order of creating IAudioTrack and thread\"\" into jb-mr1-dev"
    },
    {
      "commit": "44a7e42f0310831e6a846d1b6bb40bf3a399bf6d",
      "tree": "aba58d779eb8a1d8fe4616d33b8eb6e1672d6f00",
      "parents": [
        "b3e12a4d15a329821979bf287c49a9630486e23f"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Jun 21 17:29:24 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 13 09:48:56 2012 -0700"
      },
      "message": "Add the ability to dynamicaly register MediaPlayer types.\n\nAdd the ability to dynamically register low level MediaPlayer\nfactories which will be probed at setDataSource time to determine the\nproper MediaPlayerBase to instantiate.\n\nThis change is in preparation for moving libaah_rtp out of\nframeworks/base and into phantasm platform directory.\n\nChange-Id: Icf8904db3ab9e3c85df6e780d5546d9988cb9076\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "a997e7a7c5aa2fc7e95316218316f8b7b98786ba",
      "tree": "4f98e352833c4de61728588cacc08d40d1d01778",
      "parents": [
        "8da4cd7d706d9f551bf2d08cd8b61907a10cd38d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 07 09:44:19 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 07 15:13:42 2012 -0700"
      },
      "message": "Revert \"Swap the order of creating IAudioTrack and thread\"\n\nThis reverts commit 5d464eb0b8cffb994a754ff108795e858a882414.\nIt caused the wrong thread ID -1 to be passed to IAudioFlinger::createTrack().\n\nChange-Id: Ic221d2bb4af572d3d2d752af19238c52f6728e3a\n"
    },
    {
      "commit": "5d464eb0b8cffb994a754ff108795e858a882414",
      "tree": "e5d78a91a03a1895cc03cfeb89c26aac49d15a9e",
      "parents": [
        "0ec23ce0d1ff79566c402bc30df3074f6e25a22b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 17:19:53 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:58:43 2012 -0700"
      },
      "message": "Swap the order of creating IAudioTrack and thread\n\nSimplifies the error recovery in case IAudioTrack fails.\n\nChange-Id: I6aee41a2ac747a5689fb4836b04174e6107bf32f\n"
    },
    {
      "commit": "0ec23ce0d1ff79566c402bc30df3074f6e25a22b",
      "tree": "8925eca2b9f4b9bccb7fa4d032ab80070179912d",
      "parents": [
        "e4e2a37dbe2a4d923232305549101f779a2e3638"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 12:56:08 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:54:48 2012 -0700"
      },
      "message": "Clean up start() parameters\n\nDocument where int is used instead of AudioSystem::sync_event_t\n  (probably because of a header file dependency).\nTrackBase::start() and RecordTrack::start() don\u0027t need default parameters.\n\nChange-Id: I82f4a4d078be900f3aa4bd926697e32f5ed68ec8\n"
    },
    {
      "commit": "58e5aa34f01d663654d8bafad65db1dda42161ff",
      "tree": "706a80113457f48feae3eab9f8720bcc3da2b397",
      "parents": [
        "1d491ff06f4b9c90ff24fe953b90d0843eaf1c04"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 20 14:08:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:43:19 2012 -0700"
      },
      "message": "effect_descriptor_t const correctness\n\nChange-Id: Iad008f20d35a18acf500f773900164552fd0c19e\n"
    },
    {
      "commit": "955e78180ac6111c54f50930b0c4c12395e86cf7",
      "tree": "b4c12804643f73e9acbbf1db58f5ffa7e0bd7bc7",
      "parents": [
        "ea682976030a3930f6ee49b33b7e21abfc68174a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 10:32:45 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 18:06:19 2012 -0700"
      },
      "message": "AudioRecord locking\n\nFix race conditions for EVENT_MARKER and EVENT_NEW_POS callbacks.\nMarker and new position update fields are protected by lock.\n\ngetSampleRate() doesn\u0027t need a lock because it reads from shared memory\ncontrol block.\n\nEnforce that the parameter passed with EVENT_MARKER and EVENT_NEW_POS\ncannot not be changed by the callback handler, and will not change during\nthe call by another thread.\n\nSession ID should never change; log if it does.\n\nChange-Id: Ia2c63cf1a71b10bb06c37981bd76437f83fffa91\n"
    },
    {
      "commit": "a189a6883ee55cf62da1d7bf5bf5a8ab501938a4",
      "tree": "7ab4133c0ce507e289baacf76d745de27f9e8136",
      "parents": [
        "28b76b334f92a15a2be3cc9e2f7d229a3275d1ac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 20 12:16:30 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 11:35:16 2012 -0700"
      },
      "message": "Use struct assignment instead of explicit memcpy\n\nfor POD structs effect_descriptor_t and effect_config_t\n\nChange-Id: Ib2fc47f85fb65ed91b0abb1f87217c49b5eb571d\n"
    },
    {
      "commit": "28b76b334f92a15a2be3cc9e2f7d229a3275d1ac",
      "tree": "c605d3e995f4b6be55dd4b10e1c998b059990d0d",
      "parents": [
        "fd4e20c226eca185fc789de761beae64855bfbbb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 17:24:41 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 11:31:59 2012 -0700"
      },
      "message": "Use audio_channel_mask_t for channel mask\n\nChange-Id: I1c1896da48983aa9f1462a4b471f910498816f60\n"
    },
    {
      "commit": "dcda3b325f465aa6ec2be11db1c56c8a5e867f33",
      "tree": "0f7709ccea7f3c3cb5a63747adb7d5bfb82e194a",
      "parents": [
        "2bdb2f25861f3a3ac9cf3b7af561975fc9b9eead",
        "d64cd233eef39430561c1e1df423336a199cc5d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 08:27:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 16 08:27:30 2012 -0700"
      },
      "message": "Merge \"AudioRecord::stop() return void\""
    },
    {
      "commit": "2bdb2f25861f3a3ac9cf3b7af561975fc9b9eead",
      "tree": "58b79b403e5ec36812aa8ef233cb404b2fcd7341",
      "parents": [
        "1ea6d23396118a9cfe912b7b8a4e6f231e318ea2",
        "190313ec68e81c10d200ff3c20ac152cf90760d6"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 17:54:32 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 13 17:54:32 2012 -0700"
      },
      "message": "am 190313ec: am 65e8d62a: Merge \"Fixed sample video corrupted in MediaCodec mode.\" into jb-dev\n\n* commit \u0027190313ec68e81c10d200ff3c20ac152cf90760d6\u0027:\n  Fixed sample video corrupted in MediaCodec mode.\n"
    },
    {
      "commit": "d64cd233eef39430561c1e1df423336a199cc5d7",
      "tree": "34f6adda18ee4c4f2d1dea9ea4dbf0c84c2d0bfe",
      "parents": [
        "68337edf595a0c345ba4b8adcd4f1e541a1d7eb7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 21 10:21:23 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 15:55:04 2012 -0700"
      },
      "message": "AudioRecord::stop() return void\n\nlike AudioTrack::stop()\n\nChange-Id: Iab62f4665151345f1ad5874c97a21d1a331f0154\n"
    }
  ],
  "next": "190313ec68e81c10d200ff3c20ac152cf90760d6"
}
