)]}'
{
  "log": [
    {
      "commit": "0f7c0b43056fdc719662971bcde5d2c851e3981a",
      "tree": "8b2b04060bd507336132f1517ea0b9c2be107d06",
      "parents": [
        "02320e5a69c140d1f3f4e6eb69b4029151b7093e",
        "940335776b6d4eb91b13c4e56bc20bed3ac0011b"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 25 23:38:16 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 25 23:38:16 2012 -0700"
      },
      "message": "am 94033577: Handle reconfiguration properly.\n\n* commit \u0027940335776b6d4eb91b13c4e56bc20bed3ac0011b\u0027:\n  Handle reconfiguration properly.\n"
    },
    {
      "commit": "940335776b6d4eb91b13c4e56bc20bed3ac0011b",
      "tree": "9384212a5c15f70029f9914393bec39f60e8a59b",
      "parents": [
        "aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 25 23:30:18 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 25 23:30:18 2012 -0700"
      },
      "message": "Handle reconfiguration properly.\n\nBug 6388957.\n\nChange-Id: I61a86ed6fdad99497535249acda5e4a325911918\n"
    },
    {
      "commit": "02320e5a69c140d1f3f4e6eb69b4029151b7093e",
      "tree": "2ff65316c0e34464f7e3a865d00129c1746574c3",
      "parents": [
        "f0bcc5e1522d9176e2d3077eb9163ed5add7d819",
        "aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 25 22:22:09 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 25 22:22:09 2012 -0700"
      },
      "message": "am aeb8fd46: Add Fraunhofer AAC encoder with AAC-ELD support.\n\n* commit \u0027aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b\u0027:\n  Add Fraunhofer AAC encoder with AAC-ELD support.\n"
    },
    {
      "commit": "aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b",
      "tree": "f8b459d895acef1717c96cb7133675dda3e458b7",
      "parents": [
        "e0fa467e1150c65a7b1b1ed904c579b40f97c9df"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 19 00:14:27 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 25 22:02:58 2012 -0700"
      },
      "message": "Add Fraunhofer AAC encoder with AAC-ELD support.\n\nChange-Id: I6cd499d257d72f50a5b508bed97796a591a51506\n"
    },
    {
      "commit": "f0bcc5e1522d9176e2d3077eb9163ed5add7d819",
      "tree": "9ecd8c1476717790c7710f60449f4378f5be57bd",
      "parents": [
        "034b4c45a8774789883ca6920d533ef5e868d3c8",
        "e0fa467e1150c65a7b1b1ed904c579b40f97c9df"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 25 21:38:50 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 25 21:38:50 2012 -0700"
      },
      "message": "am e0fa467e: Move frame count calculations for fast tracks\n\n* commit \u0027e0fa467e1150c65a7b1b1ed904c579b40f97c9df\u0027:\n  Move frame count calculations for fast tracks\n"
    },
    {
      "commit": "034b4c45a8774789883ca6920d533ef5e868d3c8",
      "tree": "9ecd8c1476717790c7710f60449f4378f5be57bd",
      "parents": [
        "016dbeedb8afb07ef521eaa411430e93ca47b70e",
        "e370bb62b89d2f2980f519392010ea08a24c558e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 25 21:38:49 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 25 21:38:49 2012 -0700"
      },
      "message": "am e370bb62: Bump up the max number of items in an AMessage, remove overly stringent\n\n* commit \u0027e370bb62b89d2f2980f519392010ea08a24c558e\u0027:\n  Bump up the max number of items in an AMessage, remove overly stringent\n"
    },
    {
      "commit": "e0fa467e1150c65a7b1b1ed904c579b40f97c9df",
      "tree": "44ae1e182fd15695fccf5d1f396f99edc7942ee5",
      "parents": [
        "e370bb62b89d2f2980f519392010ea08a24c558e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 14:35:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 25 18:41:32 2012 -0700"
      },
      "message": "Move frame count calculations for fast tracks\n\nFor fast tracks: move the default and minimum frame count calculations\nfrom client to server.  If accepted, the default and minimum frame count\nis the fast mixer (HAL) frame count.  If denied, the default and minimum\nframe count is the same as it currently is for normal tracks.\n\nFor normal tracks: there is no change yet, preserve legacy behavior for\nnow but add a FIXME to change this later.\n\nBug fix: the test for buffer alignment matches channelCount was wrong.\n\nBug fix: check for 8-bit data in shared memory, which isn\u0027t supported.\n\nOptimizations:\n - in set(), only call AudioSystem::getOutputSamplingRate() when needed\n - in createTrack_l(), only call AudioSystem::getSamplingRate() and\n   AudioSystem::getFrameCount() when needed\n\nChange-Id: I79d2fe507db1a8f7bb094c71da8a129951dbb82f\n"
    },
    {
      "commit": "e370bb62b89d2f2980f519392010ea08a24c558e",
      "tree": "1b6f05a3447497841b259f00f03af2150e165c61",
      "parents": [
        "e4f70a7ea72c2a9fca60e6b64a258604e9333580"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 25 14:24:30 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 25 14:28:29 2012 -0700"
      },
      "message": "Bump up the max number of items in an AMessage, remove overly stringent\n\nCHECK() limiting us to just audio/* or video/* tracks.\n\nrelated-to-bug: 6399405\nChange-Id: I9bdaf7e709665ecc22da8839c8b16c081dbf4535\n"
    },
    {
      "commit": "016dbeedb8afb07ef521eaa411430e93ca47b70e",
      "tree": "67acb2b5ae89a7a5cade85a08e04d951775ebbb1",
      "parents": [
        "bb28e578c1eb95ab9b7ee2f8bde5a929ca10e5a2"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Apr 25 14:14:55 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Apr 25 14:18:30 2012 -0700"
      },
      "message": "Add option to stagefright for writing decoded PCM\n\nChange-Id: I8edce3e7d60b3f56b4eb1ed75ca80285c5ae3972\n"
    },
    {
      "commit": "bb28e578c1eb95ab9b7ee2f8bde5a929ca10e5a2",
      "tree": "681aa2af68175b9bd71688c015706248453157e0",
      "parents": [
        "e4f70a7ea72c2a9fca60e6b64a258604e9333580",
        "ab16fea045f2ec90a928a35f3c9c02da0a27252f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 25 06:44:22 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 25 06:44:22 2012 -0700"
      },
      "message": "Merge \"Move frame count calculations for fast tracks\""
    },
    {
      "commit": "e4f70a7ea72c2a9fca60e6b64a258604e9333580",
      "tree": "ac205f9ce8e920e040ec6650f5d974eb12470217",
      "parents": [
        "c1d8115e8a0bdaeb2b723d395b9a85a02c90c933",
        "5c61b361d1c55a93a215cfb2c325b4987f57f1c5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Apr 24 18:02:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 24 18:02:41 2012 -0700"
      },
      "message": "Merge \"Software AVC encoder is now OMX-based\""
    },
    {
      "commit": "ab16fea045f2ec90a928a35f3c9c02da0a27252f",
      "tree": "ade4a728be983d87f73bd1160defac904e34a283",
      "parents": [
        "1dc28b794587be22c90a97070d928f94586db638"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 14:35:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 17:51:09 2012 -0700"
      },
      "message": "Move frame count calculations for fast tracks\n\nFor fast tracks: move the default and minimum frame count calculations\nfrom client to server.  If accepted, the default and minimum frame count\nis the fast mixer (HAL) frame count.  If denied, the default and minimum\nframe count is the same as it currently is for normal tracks.\n\nFor normal tracks: there is no change yet, preserve legacy behavior for\nnow but add a FIXME to change this later.\n\nBug fix: the test for buffer alignment matches channelCount was wrong.\n\nBug fix: check for 8-bit data in shared memory, which isn\u0027t supported.\n\nOptimizations:\n - in set(), only call AudioSystem::getOutputSamplingRate() when needed\n - in createTrack_l(), only call AudioSystem::getSamplingRate() and\n   AudioSystem::getFrameCount() when needed\n\nChange-Id: I79d2fe507db1a8f7bb094c71da8a129951dbb82f\n"
    },
    {
      "commit": "c1d8115e8a0bdaeb2b723d395b9a85a02c90c933",
      "tree": "09339f44279672f1bfa79cbb9c667830f17ae9a4",
      "parents": [
        "1dc28b794587be22c90a97070d928f94586db638"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 24 12:48:18 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 24 14:45:25 2012 -0700"
      },
      "message": "Make sure OMXCodec and ACodec both accept more than 2 channels of audio\n\nand fill in the OMX channel mask properly.\n\nChange-Id: I915950a0b252142b9eb3277cf7c6e0d9f5875305\n"
    },
    {
      "commit": "5c61b361d1c55a93a215cfb2c325b4987f57f1c5",
      "tree": "f7729a4d1c9765bbf4d4bb0ddfc8a95704f52297",
      "parents": [
        "9adb12830ac2da72c91b842d24725ced6d236b16"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 29 03:52:42 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Apr 24 13:07:20 2012 -0700"
      },
      "message": "Software AVC encoder is now OMX-based\n\no related-to-bug: 6383440\n\nChange-Id: I0b1ae50a704b0979857ea447585eabe86602149a\n"
    },
    {
      "commit": "1dc28b794587be22c90a97070d928f94586db638",
      "tree": "81fc99726926ceb84a331350434beb2666695cf1",
      "parents": [
        "9e786c78898d738b1cb21cd8bdfcc49dbcacfce6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 10:01:03 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 10:52:04 2012 -0700"
      },
      "message": "Use scheduling policy service\n\nChange-Id: I3c09da1dc0de5039d0c15ce7fb2bc373fa398712\n"
    },
    {
      "commit": "9e786c78898d738b1cb21cd8bdfcc49dbcacfce6",
      "tree": "c507a242297eca7b9816b987df7596c14e3dd1aa",
      "parents": [
        "a636433cbd09c0708b85f337ef45c0cdef3bcb4d",
        "6f9add864e3513917fd35302b766e26aa40e6818"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 23 21:37:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 23 21:37:00 2012 -0700"
      },
      "message": "Merge \"remove dependency on SurfaceTexture::connect()\""
    },
    {
      "commit": "a636433cbd09c0708b85f337ef45c0cdef3bcb4d",
      "tree": "8a629f33d648d1ddd8b79305f02763c539fef7cd",
      "parents": [
        "9adb12830ac2da72c91b842d24725ced6d236b16"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 19 09:35:04 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 16:54:41 2012 -0700"
      },
      "message": "Use C APIs instead of C++ APIs for policy\n\nThe C++ APIs are going away.\n\nNote: we use tid \u003d\u003d 0 which is not supported yet by the C APIs,\ndo not submit this until that is added.\n\nChange-Id: I0e90789e6c81c69f2544e899c52421ea5d1342be\n"
    },
    {
      "commit": "9adb12830ac2da72c91b842d24725ced6d236b16",
      "tree": "e0dcae866fd287bd0527d23ab2ddbf9143d1dee8",
      "parents": [
        "adb6e8dc714f38e261b1593efa4eb17bac5e1678",
        "db46b48d24e03f5bcb8de6d0ff852ec4153401e7"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 23 16:17:23 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 23 16:17:23 2012 -0700"
      },
      "message": "Merge \"Downmix support for 5.1 and quad with side channels\""
    },
    {
      "commit": "db46b48d24e03f5bcb8de6d0ff852ec4153401e7",
      "tree": "4d526d6d7e9b7fd92b46f3a8d48c2adfe7f54a63",
      "parents": [
        "36513e357dfc6c53898d4b4f768c9fd4822f4653"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 23 11:29:26 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 23 14:52:34 2012 -0700"
      },
      "message": "Downmix support for 5.1 and quad with side channels\n\nIn DOWNMIX_TYPE_FOLD mode, add support for variants of quad and\n 5.1 channel masks where the \"side\" channels are used instead of\n the \"back\" channels. These variants have the same channel order,\n so they can share the same downmix function.\n\nChange-Id: I5f9cb7cb120927189de680c2a968d6136dc1fc43\n"
    },
    {
      "commit": "adb6e8dc714f38e261b1593efa4eb17bac5e1678",
      "tree": "b6053f7390d2e678035707a34e5c3f63decd8bc9",
      "parents": [
        "36513e357dfc6c53898d4b4f768c9fd4822f4653",
        "ca8b28013c0558a4a3323a1a0f58520277200086"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 14:34:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 23 14:34:55 2012 -0700"
      },
      "message": "Merge \"Fix regression in AudioTrack::pause()\""
    },
    {
      "commit": "6f9add864e3513917fd35302b766e26aa40e6818",
      "tree": "fe2297763ed3de40ffb9c83c42c458c401144ac0",
      "parents": [
        "36513e357dfc6c53898d4b4f768c9fd4822f4653"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 23 13:56:43 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 23 14:22:07 2012 -0700"
      },
      "message": "remove dependency on SurfaceTexture::connect()\n\nChange-Id: I97ce29ecfde4df171120a3570db9575b32c8d362\n"
    },
    {
      "commit": "ca8b28013c0558a4a3323a1a0f58520277200086",
      "tree": "56e351a74a524a059ed1759a6612cf88f6fd5b82",
      "parents": [
        "4a6c9c59a0297c3c6fcfadddaed7a9a976046daf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 13:58:16 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 14:15:45 2012 -0700"
      },
      "message": "Fix regression in AudioTrack::pause()\n\nBug: 6379646\nChange-Id: I12b53bc4118499ddc73a53a981f3f56328140868\n"
    },
    {
      "commit": "36513e357dfc6c53898d4b4f768c9fd4822f4653",
      "tree": "6ab626c739d992b26709b0bbf395ec5c2d26975e",
      "parents": [
        "4a6c9c59a0297c3c6fcfadddaed7a9a976046daf",
        "dc7431e70b4b030b5f42d0dfc3ef244d4f583dd2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 23 11:54:01 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 23 11:54:01 2012 -0700"
      },
      "message": "Merge \"Make sure NuMediaExtractor is thread safe.\""
    },
    {
      "commit": "dc7431e70b4b030b5f42d0dfc3ef244d4f583dd2",
      "tree": "74201c84c06f59e3c431e90449abd19a4c2f798e",
      "parents": [
        "0818e739bdbcf16f6dfb21d507002ceaaf664ee4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 23 11:21:47 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 23 11:21:47 2012 -0700"
      },
      "message": "Make sure NuMediaExtractor is thread safe.\n\nChange-Id: If261c4d87d5569a0d7cfd75afe311803a6ce0109\n"
    },
    {
      "commit": "4a6c9c59a0297c3c6fcfadddaed7a9a976046daf",
      "tree": "b447ce3b8b8c0fc8a7df052107025ddcbf88c2e3",
      "parents": [
        "66e820f17ec112385602c29d0dae71418128ed5e",
        "1d685d767a5dd1003eb62f6ad1a26b39645a474f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 10:45:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 23 10:45:36 2012 -0700"
      },
      "message": "Merge \"Fix ToneGenerator regression\""
    },
    {
      "commit": "66e820f17ec112385602c29d0dae71418128ed5e",
      "tree": "06984930d0a06f30c2a1753fdd8c4d0e1018731a",
      "parents": [
        "0818e739bdbcf16f6dfb21d507002ceaaf664ee4",
        "58912562617941964939a4182cda71eaeb153d4b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 10:43:46 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 23 10:43:46 2012 -0700"
      },
      "message": "Merge \"AudioFlinger normal mixer uses FastMixer\""
    },
    {
      "commit": "1d685d767a5dd1003eb62f6ad1a26b39645a474f",
      "tree": "7cd0c7e395f7072994dfcd34f3421c1f17db138d",
      "parents": [
        "0818e739bdbcf16f6dfb21d507002ceaaf664ee4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 10:36:10 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 10:36:10 2012 -0700"
      },
      "message": "Fix ToneGenerator regression\n\nBug: 6378847\nChange-Id: Ib3324c7a5951ac95f99993bfae27ea02bfda08ff\n"
    },
    {
      "commit": "58912562617941964939a4182cda71eaeb153d4b",
      "tree": "f0d9551f41e729540b5c0bc23bd5f0b4682d346e",
      "parents": [
        "a08f041125c7688aa33aef1b229278641ae1c375"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 03 10:45:00 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 09:24:28 2012 -0700"
      },
      "message": "AudioFlinger normal mixer uses FastMixer\n\nChange-Id: I3131bb22d2d057e9197a2ebfa6aa1cfaab9e5321\n"
    },
    {
      "commit": "0818e739bdbcf16f6dfb21d507002ceaaf664ee4",
      "tree": "a4689ae348be4c1dc9b718578ada4d1215025d28",
      "parents": [
        "a08f041125c7688aa33aef1b229278641ae1c375",
        "6b7b8227cc8753fde4094ca8af2d381c2740826f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 23 08:42:31 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 23 08:42:31 2012 -0700"
      },
      "message": "Merge \"Make sure we restore our input buffer to its original state if we want to revisit it.\""
    },
    {
      "commit": "a08f041125c7688aa33aef1b229278641ae1c375",
      "tree": "e1c13206d012859067d44f8b2e776383f28962e0",
      "parents": [
        "3463fa2799a14631222c15245ac1ad85d19b77ca",
        "3acbd053c842e76e1a40fc8a0bf62de87eebf00f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Apr 22 14:54:57 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Apr 22 14:54:57 2012 -0700"
      },
      "message": "Merge \"Configure policy of mediaserver threads\""
    },
    {
      "commit": "3acbd053c842e76e1a40fc8a0bf62de87eebf00f",
      "tree": "1d6dcc01039a1af770131c6b427efa27a2e5755f",
      "parents": [
        "f853499c6a088ef8506cacbb3ccdffa87e0cec3e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 28 10:39:56 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Apr 22 14:50:01 2012 -0700"
      },
      "message": "Configure policy of mediaserver threads\n\nChange-Id: Ifd825590ba36996064a458f64453a94b84722cb0\n"
    },
    {
      "commit": "3463fa2799a14631222c15245ac1ad85d19b77ca",
      "tree": "2afbae74238a6d8c15e7bae869c1e88a3b5ce091",
      "parents": [
        "f853499c6a088ef8506cacbb3ccdffa87e0cec3e",
        "a0a98ca6ec9b599af79a597cb7c5350b61a77624"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Apr 22 13:25:56 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Apr 22 13:25:56 2012 -0700"
      },
      "message": "Merge \"Made AudioRecord a subclasss of RefBase\""
    },
    {
      "commit": "a0a98ca6ec9b599af79a597cb7c5350b61a77624",
      "tree": "1cd1d5c29575765d0978eae823d6a2245aed51d1",
      "parents": [
        "21e8c50bd13ebe44f3088e26c9c6df0e163c469c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 16:40:28 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 16:40:28 2012 -0700"
      },
      "message": "Made AudioRecord a subclasss of RefBase\n\nMade AudioRecord a subclass of RefBase to allow using strong\nreferences and solve concurrency issues.\n\nIssue 6254582.\n\nChange-Id: Ic1f3845958f477e8b2d23d3d25bf0f666addcb3b\n"
    },
    {
      "commit": "f853499c6a088ef8506cacbb3ccdffa87e0cec3e",
      "tree": "dcb35fbedd788b5269c121c08532ecaad755046c",
      "parents": [
        "fc554559032e394de1b28b918efb8ba9f72162fd",
        "1948eb3ea6eee336e8cdab9b0c693f93f5f19993"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 16:17:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 20 16:17:38 2012 -0700"
      },
      "message": "Merge \"Add support for deep audio buffers\""
    },
    {
      "commit": "6b7b8227cc8753fde4094ca8af2d381c2740826f",
      "tree": "032b06700dcc8c468d8aa0ddae5e984aee1716ce",
      "parents": [
        "fc554559032e394de1b28b918efb8ba9f72162fd"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 20 15:47:48 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 20 15:47:48 2012 -0700"
      },
      "message": "Make sure we restore our input buffer to its original state if we want to revisit it.\n\nChange-Id: Iab62562c4dea13520751c37c9448c0b19c82d739\n"
    },
    {
      "commit": "1948eb3ea6eee336e8cdab9b0c693f93f5f19993",
      "tree": "448eed49a4ba18fb1ab4f2fb1b2c0d5cef6d242f",
      "parents": [
        "21e8c50bd13ebe44f3088e26c9c6df0e163c469c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 13 16:50:19 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 14:17:02 2012 -0700"
      },
      "message": "Add support for deep audio buffers\n\nAllow AudioSink to use deep audio buffering when the\nsource is audio only and its duration is more than\na certain threshold.\nThis helps improve battery life but implies higher\naudio latency.\n\nChange-Id: Ie79915b61c370292f05aabda9779356570e03cbb\n"
    },
    {
      "commit": "fc554559032e394de1b28b918efb8ba9f72162fd",
      "tree": "1464ba30ae81d8dbbe660987ca3ce71cd511c6a0",
      "parents": [
        "c95cfbb87d0ac5e773037019a96bfc29972d4b4e",
        "a53d87c7b1428fe02f535c31dafd64cb1362fde9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 20 12:15:23 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 20 12:15:23 2012 -0700"
      },
      "message": "Merge \"Add the ability to query the amount of cached data to NuMediaExtractor.\""
    },
    {
      "commit": "c95cfbb87d0ac5e773037019a96bfc29972d4b4e",
      "tree": "016435873185a80476d7ab1f3dae8696b2c04ebb",
      "parents": [
        "8d314b709fdd81bb64bdaa8d72a0b19c355cefb9"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Apr 12 11:53:11 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Apr 20 10:09:25 2012 -0700"
      },
      "message": "TimedAudioTrack: Optimize the queue trim operation.\n\nHand merge from ics-aah\n\n\u003e TimedAudioTrack: Optimize the queue trim operation.\n\u003e\n\u003e Don\u0027t perform the end PTS calculation for each buffer during trimming.\n\u003e Instead, only calculate the ending PTS of a buffer if there is no next\n\u003e buffer in the queue.  This optimization assumes that the buffers being\n\u003e queued are in monotonic media time order (a fair assumption for now)\n\u003e and that the timestamps in the audio are contiguous (not a requirement\n\u003e for this API, but a reality of how it is being used right now).\n\u003e\n\u003e In the case where the audio is discontinuous on purpose, it is\n\u003e that this optimization will cause the system hold one extra buffer\n\u003e which it could have safely trimmed.  It should not be much of an issue\n\u003e since in real life the audio is almost always contiguous, and as long\n\u003e as the media clock is running and the mixer is mixing, the buffer will\n\u003e be used up and discard as part of the normal flow anyway.\n\u003e\n\u003e Change-Id: I00061e85ee7d5651fcf80751646c7d7415894a14\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: I0054b58e1389fa005aa990cb5710caf4af7b706a\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "8d314b709fdd81bb64bdaa8d72a0b19c355cefb9",
      "tree": "e76be79a37ce2a3985bc0361c28d794136624b3e",
      "parents": [
        "21e8c50bd13ebe44f3088e26c9c6df0e163c469c"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Apr 19 12:08:17 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Apr 20 10:09:25 2012 -0700"
      },
      "message": "TimedAudioTrack: Fix continuity threshold handling.\n\nHand merge from ics-aah\n\n\u003e TimedAudioTrack: Fix continuity threshold handling.\n\u003e\n\u003e Fix issues with continuity threshold handling; notably\n\u003e + If the steady-state continuity threshold is exceeded, be sure to\n\u003e   clear the on-time flag.  Failure to do this will result in the\n\u003e   system picking a new mix point which simply satisfies the\n\u003e   steady-state continuity threshold instead of the startup threshold.\n\u003e   Since we are putting a discontinuity in presentation anyway, we\n\u003e   really want to pick a perfect point, not just an OK point.\n\u003e + Tighten the steady-state continuity threshold.  It was currently set\n\u003e   to 100mSec which is enormous.  4mSec (the new setting) is much more\n\u003e   appropriate.  On systems with a VCXO (like tungsten) this should\n\u003e   never be wrong by more than a sample.  If TimedAudioTracks are ever\n\u003e   to be used on VCXO-less systems, this threshold should probably be a\n\u003e   a parameter configurable by applications on a track by track basis\n\u003e   so they can make the tradeoff between allowed error and frequency of\n\u003e   disruptive corrections.\n\u003e + Reset the on-time flag if the mixer provides no PTS during a mix\n\u003e   operation.  This makes for a convenient way for the HAL to reset\n\u003e   timed tracks when it makes changes for delay compensation across\n\u003e   multiple outputs.\n\u003e\n\u003e Change-Id: I2cb23de5a3d1f75618abc1c8ab903db883837aa8\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: Ibd28c9d290494b0b19eb01caf2d9bfdef606a9b4\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "21e8c50bd13ebe44f3088e26c9c6df0e163c469c",
      "tree": "0437226abb896de30fd20123eb3089168989391a",
      "parents": [
        "8d6086781c79620ce6133df7bd27f0efdee6b4e6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 12 09:39:42 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 20 07:38:05 2012 -0700"
      },
      "message": "FastMixer update\n\nUpdates:\n - Add support for mono fast tracks\n - Add support for optional sample rate conversion on fast tracks\n - Log sample rate and frame count\n - Enable statistics\n\nChange-Id: Ife014edf4f452da361f3eaaae19209ef6ff6958b\n"
    },
    {
      "commit": "a53d87c7b1428fe02f535c31dafd64cb1362fde9",
      "tree": "91d1c0a816d28e2b4103522753119ae0b7b5a3e5",
      "parents": [
        "8d6086781c79620ce6133df7bd27f0efdee6b4e6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 16:25:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 16:53:42 2012 -0700"
      },
      "message": "Add the ability to query the amount of cached data to NuMediaExtractor.\n\nChange-Id: I0966270a2bd36698330beaa03f47d02fc6a40c44\nrelated-to-bug: 6364341\n"
    },
    {
      "commit": "8d6086781c79620ce6133df7bd27f0efdee6b4e6",
      "tree": "e69c38010ec52f70406054c1dc8152d44c2a94c3",
      "parents": [
        "1345ef0f49f83f37953e6d30616611a92294144a",
        "5b8987e7de9d04b09153f329c680d2316cdb44ec"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 13:51:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 13:51:16 2012 -0700"
      },
      "message": "Merge \"Allow propagation of error information and description from the CryptoPlugin to\""
    },
    {
      "commit": "5b8987e7de9d04b09153f329c680d2316cdb44ec",
      "tree": "2b08e1f8abd0d4b869ce8923b1462530b916a7eb",
      "parents": [
        "fd9e14bc28f377065e43ec6833d754ca151b3941"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:52:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:53:59 2012 -0700"
      },
      "message": "Allow propagation of error information and description from the CryptoPlugin to\n\nthe higher layers.\n\nChange-Id: I9f434ad55cdf575803c208bedf47b607baff2330\nrelated-to-bug: 6365261\n"
    },
    {
      "commit": "1345ef0f49f83f37953e6d30616611a92294144a",
      "tree": "66f1d6f9eb6fc31073faa3699789e9cd08c19993",
      "parents": [
        "eee7f9dd0d3410877dd58a14c4b80aacbeb32d72",
        "05cd06e19f968c7320e8e85fc7122125f284741c"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 19 10:43:22 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 10:43:22 2012 -0700"
      },
      "message": "Merge \"Revert \"Temporary revert of new AAC codec to fix build\"\""
    },
    {
      "commit": "eee7f9dd0d3410877dd58a14c4b80aacbeb32d72",
      "tree": "5b9a77f68e00cdb3cd8090cda4628f9033ae175f",
      "parents": [
        "fd9e14bc28f377065e43ec6833d754ca151b3941",
        "692ac36c4b6a09fed5113a4f45f00a041665a769"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Apr 19 10:36:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 10:36:16 2012 -0700"
      },
      "message": "Merge \"Make timed text source type explicit in TimedTextDriver\""
    },
    {
      "commit": "05cd06e19f968c7320e8e85fc7122125f284741c",
      "tree": "6e07a257d0b4bef76fb07e3b8eebdac1033deefd",
      "parents": [
        "f356cc9c9995ba292bf116f1cb28a6caa1b65fd2"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 19 10:34:44 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 19 10:34:44 2012 -0700"
      },
      "message": "Revert \"Temporary revert of new AAC codec to fix build\"\n\nThis reverts commit f356cc9c9995ba292bf116f1cb28a6caa1b65fd2.\n"
    },
    {
      "commit": "fd9e14bc28f377065e43ec6833d754ca151b3941",
      "tree": "c63aa194d876cc7a971d6099378a9b62a9419dc7",
      "parents": [
        "2d359a85ef5b72f1cb47df227b44fe4f3c5fbd60",
        "f28c8792f64e10c3c477d86bf4804a8566ff524e"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 09:09:19 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 09:09:19 2012 -0700"
      },
      "message": "Merge \"Turn off debug in downmix effect\""
    },
    {
      "commit": "2d359a85ef5b72f1cb47df227b44fe4f3c5fbd60",
      "tree": "50cbb5bf04e41f33392563ca8847aaec8311cd3d",
      "parents": [
        "324c81a9f45614cb1d924ba0bcecddc120b2d69f",
        "3476de62fb10e76412452ef4c6bd71936c9f7db1"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 09:08:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 09:08:43 2012 -0700"
      },
      "message": "Merge \"Add support for scaling mode parameter\""
    },
    {
      "commit": "324c81a9f45614cb1d924ba0bcecddc120b2d69f",
      "tree": "7e55e877248c15ada3d5a4afd1d9cd12cc31a387",
      "parents": [
        "a43af9853f4dfdea03c01037f1c73cf29441f89b",
        "f356cc9c9995ba292bf116f1cb28a6caa1b65fd2"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 19 00:31:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 00:31:34 2012 -0700"
      },
      "message": "Merge \"Temporary revert of new AAC codec to fix build\""
    },
    {
      "commit": "a43af9853f4dfdea03c01037f1c73cf29441f89b",
      "tree": "2d701c68a6988428b919b58443560c5e726b49e1",
      "parents": [
        "c2dabeb11d625fadfd923e6461405f5fbf383320",
        "08ad5efcef90e24db2863c0f85972ed05fe848a2"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Apr 19 00:29:33 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 00:29:33 2012 -0700"
      },
      "message": "Merge \"Remove new camera connect API.\""
    },
    {
      "commit": "f356cc9c9995ba292bf116f1cb28a6caa1b65fd2",
      "tree": "410f778810d722a9de4b9fe1ef63f390854d56e7",
      "parents": [
        "c2dabeb11d625fadfd923e6461405f5fbf383320"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 19 00:25:44 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 19 00:25:44 2012 -0700"
      },
      "message": "Temporary revert of new AAC codec to fix build\n\nChange-Id: I5c7f0360883fc68e313d10b1aa5dac1463fae7fb\n"
    },
    {
      "commit": "c2dabeb11d625fadfd923e6461405f5fbf383320",
      "tree": "6e07a257d0b4bef76fb07e3b8eebdac1033deefd",
      "parents": [
        "9bd23229fdec1657398abc682ccccfce1c95f8aa",
        "095c2da8d6c2058b02142c940f6e6346d6581780"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 18 23:39:23 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 23:39:23 2012 -0700"
      },
      "message": "Merge \"Make AAC 5.1 work Fix bug with pausing audio\""
    },
    {
      "commit": "08ad5efcef90e24db2863c0f85972ed05fe848a2",
      "tree": "f2eff3f033d360ac8043ba4f6ffa2d11520bebee",
      "parents": [
        "9bd23229fdec1657398abc682ccccfce1c95f8aa"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Apr 19 12:35:00 2012 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Apr 19 12:53:56 2012 +0800"
      },
      "message": "Remove new camera connect API.\n\nApplications are not resumed under the lock screen now.\nThis API is not needed anymore.\n\nbug:5584464\nChange-Id: I115daf6b647348617ec0fc05b626878c945b9b29\n"
    },
    {
      "commit": "f28c8792f64e10c3c477d86bf4804a8566ff524e",
      "tree": "6699a532aeae112ce0be9dcf1bfa3f05493481ab",
      "parents": [
        "9bd23229fdec1657398abc682ccccfce1c95f8aa"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 18:38:42 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 18:38:42 2012 -0700"
      },
      "message": "Turn off debug in downmix effect\n\nChange-Id: I4eda43166d23b3297cf769056a6db720401799aa\n"
    },
    {
      "commit": "3476de62fb10e76412452ef4c6bd71936c9f7db1",
      "tree": "9c814922fd33670a7cdd23c9597cbd19ad5e1ef9",
      "parents": [
        "fbe308d428e42fe249ec317f76e3d11feb3264d5"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Apr 15 17:15:07 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 18:27:39 2012 -0700"
      },
      "message": "Add support for scaling mode parameter\n\nSupport VISUALIZER_PARAM__SCALING_MODE parameter.\n\nModify process() function to use new volume scaling parameter,\n used to set whether captured values are maximized by current\n headroom in the buffer (default existing behaviora) or left\n as is and thus affected by volume.\n\nModify AudioEffect to allow subclasses to override the following\n events: control status changed, enable status changed, command\n executed.\nIn Visualizer class (a subclass of AudioEffect), reset the\n scaling mode and capture size on the actual effect\n as cached when control is regained.\n This will allow the effect to be properly\n configured whenever Visualizers with different scaling\n modes or capture sizes are released (e.g. from java\n release() method).\n\nChange-Id: I05cb9f925a296dceca91bafa9fe294ef2b2c2bd5\n"
    },
    {
      "commit": "9bd23229fdec1657398abc682ccccfce1c95f8aa",
      "tree": "5a6790d8f19a3249b28a8b8da9e68e3a14bbde36",
      "parents": [
        "0ca3cf94c0dfc173ad7886ae162c4b67067539f6"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 16 13:43:48 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 17:40:48 2012 -0700"
      },
      "message": "Fix multichannel downmix pause bug on video player\n\nPausing a video player will cause the track audio mixer to be\n disabled, which causes the downmixer to be deleted. When reenabled,\n the track channel mask hasn\u0027t changed but the downmixer is there\n anymore.\nFixed by:\n- instanciating a downmixer when the AudioMixer track\n gets initialized (in getTrackName(), now taking a channel mask\n as input), and deleted when in deleteTrackName().\n- when the channel changes on a track, check whether it\n needs a downmixer or not. Preparing a track for downmix\n automatically removes the old downmixer if there was one.\n\nAlso: initialize the track downmixerBufferProvider field\n when AudioMixer is instanciated, so we can safely call\n delete on it in AudioMixer\u0027s destructor, in case\n deleteTrackName() wasn\u0027t called before the mixer was\n destroyed.\n\nChange-Id: I589b0781cda5b3c82f85b561c52b08546cac21f8\n"
    },
    {
      "commit": "692ac36c4b6a09fed5113a4f45f00a041665a769",
      "tree": "ef8feed68e5caaa9523a0dba8cfbe0fc6659e49d",
      "parents": [
        "52bef17f5953cd07b1655a3371d833f4de01caae"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 18 17:01:53 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 18 17:06:21 2012 -0700"
      },
      "message": "Make timed text source type explicit in TimedTextDriver\n\no related-to-bug: 5542712\n\nChange-Id: Ifdc730e616336e8b16783e8a5766f27df62a0592\n"
    },
    {
      "commit": "0ca3cf94c0dfc173ad7886ae162c4b67067539f6",
      "tree": "bc156e7822e663626b78ec2ad09ef3970fbb48c5",
      "parents": [
        "ee685f6d19a6cc3b0bf02e69eb5dea11a2aeb601"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 18 09:24:29 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 18 15:04:46 2012 -0700"
      },
      "message": "rename audio policy output flags\n\nChange-Id: I27c46bd1d1b2b5f96b87af7d05b951fef18a1312\n"
    },
    {
      "commit": "ee685f6d19a6cc3b0bf02e69eb5dea11a2aeb601",
      "tree": "5094cbde555e23f9514ae394cd17d1e2195d4ac4",
      "parents": [
        "c34ee0429c4663a97f6a5c342633eeac46de081e",
        "8add6cf4976de9b7bca7b73b1473a1e5f7201087"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Apr 18 14:50:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 14:50:38 2012 -0700"
      },
      "message": "Merge \"Set gralloc consumer usage bits in SurfaceMediaSource.\""
    },
    {
      "commit": "c34ee0429c4663a97f6a5c342633eeac46de081e",
      "tree": "21766854964496809e8a75cf1122532164cea72b",
      "parents": [
        "e1083a99b6d4de9dbd4ee546324ef346380581ee",
        "f69e53033f23f9f70fcdb28a3c2e650de0147459"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 18 13:22:46 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 13:22:46 2012 -0700"
      },
      "message": "Merge \"Some refactoring and cleanup of now obsolete crypto fields.\""
    },
    {
      "commit": "f69e53033f23f9f70fcdb28a3c2e650de0147459",
      "tree": "3654454a30b35e3060d6aef8bec5e56bb8696af6",
      "parents": [
        "97b5d0d5b5ef766eb5dd680d05a5d199662d4ae0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 18 12:22:58 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 18 12:22:58 2012 -0700"
      },
      "message": "Some refactoring and cleanup of now obsolete crypto fields.\n\ncodec commandline tool no longer supports decryption.\n\nChange-Id: I7b10be6524631b20ac5d361d47949b00addf4a93\n"
    },
    {
      "commit": "e1083a99b6d4de9dbd4ee546324ef346380581ee",
      "tree": "57d388d875c104a6a513a4c0f19ad2c90a41b369",
      "parents": [
        "13692a5d885405701a8a9b16af98a2e693085216",
        "acb86cccbd9d245439a04cef0bcefa589addaa4c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 10:47:50 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 10:47:50 2012 -0700"
      },
      "message": "Merge \"Configure the resampler with the correct channel count when downmixing\""
    },
    {
      "commit": "13692a5d885405701a8a9b16af98a2e693085216",
      "tree": "8d3c3e43bc11d0dd19116117522ffad292e692f8",
      "parents": [
        "97b5d0d5b5ef766eb5dd680d05a5d199662d4ae0",
        "9d06df4ecfe39e7e46873f7cd75a71e32a01d4f7"
      ],
      "author": {
        "name": "Eddy Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Apr 18 10:34:57 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 10:34:57 2012 -0700"
      },
      "message": "Merge \"Fixed leaks in SurfaceMediaSource_test\""
    },
    {
      "commit": "acb86cccbd9d245439a04cef0bcefa589addaa4c",
      "tree": "597fe66a314f3bc8a4c1746f9d9bbff0a8bd1067",
      "parents": [
        "97b5d0d5b5ef766eb5dd680d05a5d199662d4ae0"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 16 12:43:57 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 09:29:45 2012 -0700"
      },
      "message": "Configure the resampler with the correct channel count when downmixing\n\nWhen a track needs to be downmixed and resampled, it gets downmixed\n first before being resampled. Therefore the resampler needs to\n be configured with the channel count of the output of the downmixer\n instead of that of the track.\nRemoved frame size checks that don\u0027t apply anymore now that we support\n frame sizes that are not powers of 2 (e.g. 12 for 5.1 16bits), and\n changed test performed for every buffer during playback into an\n assert.\n\nChange-Id: Ia220f00ee382f4f7848b661c58555bdca664e194\n"
    },
    {
      "commit": "97b5d0d5b5ef766eb5dd680d05a5d199662d4ae0",
      "tree": "a7042a97ac8019ba62a7c35ef9e11711caab7021",
      "parents": [
        "0845682ff93c9765b74b53dc404d0954efc28c2e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 18:54:19 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 18 07:49:43 2012 -0700"
      },
      "message": "Fast mixer\n\nChange-Id: I61552f83507e08e4c706076b9fb15362869e6265\n"
    },
    {
      "commit": "0845682ff93c9765b74b53dc404d0954efc28c2e",
      "tree": "c7a315e7ecbd659683279bd80b660ac1a195148a",
      "parents": [
        "52bef17f5953cd07b1655a3371d833f4de01caae",
        "dc998c809e084b617990b281e2ed5271830cc2e0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 18 07:37:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 18 07:37:55 2012 -0700"
      },
      "message": "Merge \"Add template class StateQueue\""
    },
    {
      "commit": "dc998c809e084b617990b281e2ed5271830cc2e0",
      "tree": "7d05323b201206ccb6cecf72d82faf82055afd70",
      "parents": [
        "eee482b84bb456e87fa42e8ad02fd2d803839586"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 18:53:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 18 07:34:34 2012 -0700"
      },
      "message": "Add template class StateQueue\n\nChange-Id: Iccc5eb42bc295a22b2e429a4551f083cd7b6831a\n"
    },
    {
      "commit": "52bef17f5953cd07b1655a3371d833f4de01caae",
      "tree": "e0e800e83a0f1befa071fd215bf331155367d675",
      "parents": [
        "f7ffb8bf0a58037f0bc9662c5275005a4e539948",
        "eec46abb88dcc50621fd2d3f17a6b8d24fd07a19"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Apr 17 19:32:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 19:32:13 2012 -0700"
      },
      "message": "Merge \"Fix for multiple audio/timed track feature implementation - part one\""
    },
    {
      "commit": "095c2da8d6c2058b02142c940f6e6346d6581780",
      "tree": "b71ae20e524e816542771d1cb761049eafe7b9fa",
      "parents": [
        "99a80e10f2d0e88c0509a298bdd1df0308b55a7b"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 12 17:09:00 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Tue Apr 17 18:48:42 2012 -0700"
      },
      "message": "Make AAC 5.1 work\nFix bug with pausing audio\n\nChange-Id: Icd6b095dac8d1a68b027de853d11ae02cc070b10\n"
    },
    {
      "commit": "f7ffb8bf0a58037f0bc9662c5275005a4e539948",
      "tree": "686df49dd97aed806b48b6ca3bba90cfc27d1ab7",
      "parents": [
        "4835705370584f6904c80afebcc6e8b9fdb110a5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Apr 14 09:06:57 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 17 16:02:22 2012 -0700"
      },
      "message": "audioflinger: update to new audio HAL.\n\nUpdated audio flinger to new function prototypes\nfor open_output_stream() and open_input_stream().\n\nCheck audio hw device version when loading a module and\nreject devices with a version different from current one.\n\nChange-Id: I9d4c81a1f59a15db78b3989417c2a411c638fe88\n"
    },
    {
      "commit": "4835705370584f6904c80afebcc6e8b9fdb110a5",
      "tree": "a6569e176526eb2785a3953801d3dc55d85bd6ac",
      "parents": [
        "183058b1515e276a03d5aae28c7814f367a7b330"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 15:01:10 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 15:01:10 2012 -0700"
      },
      "message": "NuMediaExtractor accidentally returned what looked like errors to the caller...\n\nChange-Id: Iec0c62ba98c8a8afc5cb423a76b8f53778aeb867\nrelated-to-bug: 6276111\n"
    },
    {
      "commit": "183058b1515e276a03d5aae28c7814f367a7b330",
      "tree": "a014f4c46ed4fd5048b0b4ef2f475dc58c13c4f1",
      "parents": [
        "eee482b84bb456e87fa42e8ad02fd2d803839586",
        "1608735ef488ecd8c3c012a3b0d4b1d4ef3d93c7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 11:25:29 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 11:25:29 2012 -0700"
      },
      "message": "Merge \"Support widevine:// URLs in NuMediaExtractor / java MediaExtractor.\""
    },
    {
      "commit": "1608735ef488ecd8c3c012a3b0d4b1d4ef3d93c7",
      "tree": "c77756706095cdb6852e56392e8365bcaa7d9232",
      "parents": [
        "a98db787397633155fd71b06ecaa765a7ad20cf2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 13 14:54:36 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 11:22:11 2012 -0700"
      },
      "message": "Support widevine:// URLs in NuMediaExtractor / java MediaExtractor.\n\nAllow anyone to talk to drm services.\n\nChange-Id: I5c2f3c419d01de30c3d6e2bc85b1fe5c9c37b392\nrelated-to-bug: 6276111\n"
    },
    {
      "commit": "eee482b84bb456e87fa42e8ad02fd2d803839586",
      "tree": "0e89c90dc86877dcfbc05b88f609bafc04886e34",
      "parents": [
        "4e2293f29f2e719af1245d365747ea06d074b345",
        "2120fe5bd4e14b53d8bef4a220e8a32830cf8cf9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 17 07:19:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 07:19:36 2012 -0700"
      },
      "message": "Merge \"ToneGenerator requests fast track\""
    },
    {
      "commit": "9d06df4ecfe39e7e46873f7cd75a71e32a01d4f7",
      "tree": "ef69b0f39d2992098afab3e530bdf2a51da83bb6",
      "parents": [
        "a98db787397633155fd71b06ecaa765a7ad20cf2"
      ],
      "author": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Mon Apr 16 22:47:07 2012 -0700"
      },
      "committer": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Mon Apr 16 22:47:07 2012 -0700"
      },
      "message": "Fixed leaks in SurfaceMediaSource_test\n\nmEglSurface was being reused which resulted in\nEGLSurfaces being lost.\n\nChange-Id: Ica07cd24b0e4f3d4b2156f55b7de8e83d5466136\n"
    },
    {
      "commit": "4e2293f29f2e719af1245d365747ea06d074b345",
      "tree": "d07878412ffeca6ccd4e7e4bbbc0b4fb68370a59",
      "parents": [
        "99a80e10f2d0e88c0509a298bdd1df0308b55a7b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 12 09:39:07 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 17:43:58 2012 -0700"
      },
      "message": "AudioMixer new cmd: remove sample rate converter\n\nAdd a new command REMOVE to remove any sample rate converter\n   on a track, without having to delete the track name.\nAdd comments.\nRemove some dead code.\nFix whitespace and comparison to NULL.\n\nChange-Id: Id55a23ab5ee673189e99675b4e6fa5df7b617987\n"
    },
    {
      "commit": "2120fe5bd4e14b53d8bef4a220e8a32830cf8cf9",
      "tree": "1de225f1859d80bff8323c89411e6fb4515ec4ac",
      "parents": [
        "fbe308d428e42fe249ec317f76e3d11feb3264d5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 11 12:33:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 15:56:17 2012 -0700"
      },
      "message": "ToneGenerator requests fast track\n\nAlso add comments to AudioTrack::set() parameter list\n\nChange-Id: I28c76e9d813778d86b15d75cf7f01a17c258b6d9\n"
    },
    {
      "commit": "99a80e10f2d0e88c0509a298bdd1df0308b55a7b",
      "tree": "09b41dfbf809c560fdeebb433a725041ef3fe517",
      "parents": [
        "a5e821439996de6005b2fa36b3bdd31f003ce23f",
        "77d837ae86c791c46ce019b58e09ac62780bf973"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 14:56:12 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 14:56:12 2012 -0700"
      },
      "message": "Merge \"Order of evaluation of parameters is not specified\""
    },
    {
      "commit": "a5e821439996de6005b2fa36b3bdd31f003ce23f",
      "tree": "04520106c0140dfeae4baff583749bf250e7b81f",
      "parents": [
        "a98db787397633155fd71b06ecaa765a7ad20cf2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 13:47:17 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 14:31:24 2012 -0700"
      },
      "message": "AudioMixer: fix crash in destructor\n\nCommit deeb1282 made that track-\u003eresampler is only set to NULL when\ngetTrackName() is called. It remains uninitialized for all unused tracks\ncausing a crash when deleted by Audiomixer destructor.\n\nIssue 6309441.\n\nChange-Id: I49451387a6afe81299b8368ef206524df32f74c4\n"
    },
    {
      "commit": "8add6cf4976de9b7bca7b73b1473a1e5f7201087",
      "tree": "ada5e81de0598988dfc4f190b898ea831ccefb43",
      "parents": [
        "1803c3ae573e5fa3f3a1abe24ae802e30e5d5495"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Apr 13 16:06:16 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Apr 16 14:07:26 2012 -0700"
      },
      "message": "Set gralloc consumer usage bits in SurfaceMediaSource.\n\nBufferQueue is no longer setting these for its endpoints; set the bits\nto GRALLOC_USAGE_HW_VIDEO_ENCODER | GRALLOC_USAGE_HW_TEXTURE.  In the\nlonger term, the set flags should be just\nGRALLOC_USAGE_HW_VIDEO_ENCODER, but that requires other changes.\n\nChange-Id: I4170658de49bf88d829d34605a15684e72a90706\n"
    },
    {
      "commit": "77d837ae86c791c46ce019b58e09ac62780bf973",
      "tree": "4d4b7ec2d5a4699dc0c6fb650d6ff2c5c7242ebe",
      "parents": [
        "fbe308d428e42fe249ec317f76e3d11feb3264d5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 14:01:22 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 14:01:22 2012 -0700"
      },
      "message": "Order of evaluation of parameters is not specified\n\nChange-Id: Id545e54c2ec8ed2f70ede630542ed999a9b2c5e2\n"
    },
    {
      "commit": "eec46abb88dcc50621fd2d3f17a6b8d24fd07a19",
      "tree": "0b3e4cfec4f7f76a99bc82907c205253fb7c2ebe",
      "parents": [
        "25736fd247ba757feefe15d3071f7e747c64fea4"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 11 17:56:22 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Apr 16 12:08:10 2012 -0700"
      },
      "message": "Fix for multiple audio/timed track feature implementation - part one\n\no getTrackInfo now returns all tracks, rather than just the timed text tracks.\no the index of the track info is kept to the same as the track index if the\n  track is not from an external source\no correctly maps the selectTrack() and unselectTrack() calls to the right\n  track index\n\no TODO:\n  1) note that the selectTrack() and unselectTrack() only works for timed text\n  track at present; 2) the lock is timed text specific\n\no related-to-bug: 6110705\n\nChange-Id: Ib1feeef2184bc992930ace0d1197b6c00a2636d7\n"
    },
    {
      "commit": "a98db787397633155fd71b06ecaa765a7ad20cf2",
      "tree": "312df209f64c9ed371bb7855ca6243352207fd62",
      "parents": [
        "b388e531613730572067e193b6b66afb5d042233",
        "918c7652b9a38c02e26c0c46541cea82070c0e43"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 16 11:11:02 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 11:11:02 2012 -0700"
      },
      "message": "Merge \"Change NuMediaExtractor\u0027s API to support different kinds of data sources.\""
    },
    {
      "commit": "b388e531613730572067e193b6b66afb5d042233",
      "tree": "e84e7e8d25a909390498236462a90c241dc3c236",
      "parents": [
        "fbe308d428e42fe249ec317f76e3d11feb3264d5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Apr 14 13:32:48 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Apr 14 13:32:48 2012 -0700"
      },
      "message": "Fix ALOG_ASSERT in AudioFlinger\n\nFix broken ALOG_ASSERT in updateFramesPendingAfterTrim_l() introduced by\ncommit 1c345196.\n\nChange-Id: Ie1b2653069283f23ff0367f2628828e37fb0749c\n"
    },
    {
      "commit": "fbe308d428e42fe249ec317f76e3d11feb3264d5",
      "tree": "ec5519aa319720a34151463529558d923a53d580",
      "parents": [
        "25736fd247ba757feefe15d3071f7e747c64fea4",
        "a28976b04c70cef3c8e79137478b6a7bc05608ac"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Apr 13 16:00:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 16:00:41 2012 -0700"
      },
      "message": "Merge \"Make mediascanner use filedescriptors instead of paths\""
    },
    {
      "commit": "25736fd247ba757feefe15d3071f7e747c64fea4",
      "tree": "3e28d7c387df9a96a63a454270c68f1b13e918cb",
      "parents": [
        "db9b87e30a2ffe71554150e33066738ab134bc3c"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Tue Mar 27 15:38:43 2012 +0900"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Apr 13 13:55:24 2012 -0700"
      },
      "message": "To return default track info even if there\u0027s no metadata for a\nsubtitle track.\n\nIt would rather return empty data than return NULL data for an existing track.\n\nChange-Id: Ie0c18e6851bfbe2c471041589670a3012605b584\n"
    },
    {
      "commit": "db9b87e30a2ffe71554150e33066738ab134bc3c",
      "tree": "fe8e9e337a167f7a79823a66e66fa8d1a2e0b6f9",
      "parents": [
        "1803c3ae573e5fa3f3a1abe24ae802e30e5d5495",
        "613c8ae1b7a2b4f43b33a72dc2fff0bc8b7d4c6f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Apr 13 13:49:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 13:49:37 2012 -0700"
      },
      "message": "Merge \"Add external timed text source using a passed file descriptor\""
    },
    {
      "commit": "a28976b04c70cef3c8e79137478b6a7bc05608ac",
      "tree": "3b61bb606b73f705d58d05282aa73d672cbaa9e6",
      "parents": [
        "1803c3ae573e5fa3f3a1abe24ae802e30e5d5495"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Apr 13 13:28:12 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Apr 13 13:46:48 2012 -0700"
      },
      "message": "Make mediascanner use filedescriptors instead of paths\n\nMedia scanner needs to open the files now, because media server doesn\u0027t\nhave the required permission.\n\nb/6330061\n\nChange-Id: I2364d93dcc0530c15676664fc4a8c306351dde08\n"
    },
    {
      "commit": "613c8ae1b7a2b4f43b33a72dc2fff0bc8b7d4c6f",
      "tree": "e301e98ae7b69f611ce9d3a9d0ab57c556ecb8cc",
      "parents": [
        "d2469c3fe382203eb7cd5060c94ed204bec98116"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Apr 13 13:02:57 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Apr 13 13:08:57 2012 -0700"
      },
      "message": "Add external timed text source using a passed file descriptor\n\no Also fixed a minor issue where the file length should be of type off64_t rather than size_t\n\no related-to-bug: 5542712\n\nChange-Id: I35fd8ceea0bc75e553b7f4a99932cf58ea560c4e\n"
    },
    {
      "commit": "918c7652b9a38c02e26c0c46541cea82070c0e43",
      "tree": "5ac94f452e54c8027bd3e67b773a62b047349d56",
      "parents": [
        "1803c3ae573e5fa3f3a1abe24ae802e30e5d5495"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 13 11:16:48 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 13 11:51:05 2012 -0700"
      },
      "message": "Change NuMediaExtractor\u0027s API to support different kinds of data sources.\n\nChange-Id: I080aa2ce28300a72a85751509334dbdc491936c6\nrelated-to-bug: 6276111\n"
    },
    {
      "commit": "1803c3ae573e5fa3f3a1abe24ae802e30e5d5495",
      "tree": "456c8dab540997e82f751cccff998a13a7e1264a",
      "parents": [
        "d3030da2ac3c0ebb8b7bdf38418263caf405b863",
        "5892e3e173f20e01956f318ae7dce43d46c5fc1d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 12 14:07:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 12 14:07:06 2012 -0700"
      },
      "message": "Merge \"Add metadata keys to communicate encrypted fragments and associated info.\""
    },
    {
      "commit": "5892e3e173f20e01956f318ae7dce43d46c5fc1d",
      "tree": "dafebc2a4cff31fe8788df3f70eba9192aff34c0",
      "parents": [
        "b34364269683363ca54aeed4952937cf37da7e06"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 12 13:05:44 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 12 13:15:48 2012 -0700"
      },
      "message": "Add metadata keys to communicate encrypted fragments and associated info.\n\nChange-Id: I90a27c9bbe649328b88144b161c420916673846f\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "d3030da2ac3c0ebb8b7bdf38418263caf405b863",
      "tree": "d968ad7f783793049510b4badfee39fc066b1147",
      "parents": [
        "1c345196edc61694f29307a1826a64a0d26028dc"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Apr 12 11:56:36 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Apr 12 11:56:36 2012 -0700"
      },
      "message": "Fix the build\n\nforgot to upload final fixup during merge.  sry about that\n\nChange-Id: I2ddd2c08d8efa83c0a8d1e378ae4c28686145154\n"
    },
    {
      "commit": "1c345196edc61694f29307a1826a64a0d26028dc",
      "tree": "425a9fb3abcd532f061d45d74ddf0a04b88bac3a",
      "parents": [
        "9fbdee13d09447550dd22ae72c2dbabdce7f0a80"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Tue Mar 27 14:00:17 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Apr 12 10:14:32 2012 -0700"
      },
      "message": "TimedAudio: Track of the number of pending frames.\n\nThis is a manual merge from ics-aah\n\n\u003e TimedAudio: Track of the number of pending frames.\n\u003e\n\u003e Keep track of the number of frames pending in the timed audio queue so\n\u003e we can implement framesReady in O(1) time instead of O(N).  This\n\u003e change partially addresses bug 6020970; the bug will be completely\n\u003e addressed once this change has been up-integrated into master.\n\u003e\n\u003e Change-Id: I599eb15ea1f6d715b97b30e65214fb6fadd169df\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: I6cbbbc3afc8efd066fe94865326ede0c6b3db2bd\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "9fbdee13d09447550dd22ae72c2dbabdce7f0a80",
      "tree": "9568a7d3610f1596b8da38cc921c3782691391cd",
      "parents": [
        "b34364269683363ca54aeed4952937cf37da7e06"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Mar 26 17:51:46 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Apr 12 10:14:32 2012 -0700"
      },
      "message": "TimedAudio: Fix a cause of audio popping.\n\nThis is a manual merge from ics-aah\n\n\u003e TimedAudio: Fix a cause of audio popping.\n\u003e\n\u003e Fix an issue with buffer lifecycle management which could cause audio\n\u003e pops on timed outputs.  There were two issues at work here.\n\u003e\n\u003e 1) During trim operations for the queued timed audio data, buffers\n\u003e    were being trimmed based on their starting PTS instead of when the\n\u003e    chunk of audio data actually ended.  This means that if you have a\n\u003e    very large chunk of audio data (larger than the mixer lead time),\n\u003e    then a buffer at the head of the queue could be eligible to be\n\u003e    trimmed before its data had been completely mixed into the output\n\u003e    stream, even though the output stream was fully buffered and in no\n\u003e    danger of underflow.\n\u003e 2) The implementation of getNextBuffer and releaseBuffer for timed\n\u003e    audio tracks was not keeping anything like a reference to the data\n\u003e    that it handed out to the mixer.  The original architecture here\n\u003e    seemed to be expecting a ring buffer design, but timed audio tracks\n\u003e    use a packet based design.  Pieces of packets are handed out to the\n\u003e    mixer which then frequently will hold onto that chunk of data\n\u003e    across two mix operations, using the first part of the chunk to\n\u003e    finish a mix buffer and then using the end of the chunk for the\n\u003e    start of the next mix buffer.  If the buffer that the mixer is\n\u003e    holding a piece of got trimmed before the start of the next mix\n\u003e    operation, it would return to its heap and could be filled with who\n\u003e    knows what by the time it actually got mixed.  On debug builds,\n\u003e    they seem to get zero\u0027ed out as they go back to the heap causing\n\u003e    obvious pops in presentation.\n\u003e\n\u003e This change addresses both issues.  Trim operations are now based on\n\u003e ending presentation time for a chunk of audio, not the start.  Also,\n\u003e when the head of the queue is in flight to the mixer, it can no longer\n\u003e be trimmed immediately, merely flagged for trim by the mixer when the\n\u003e mixer finally does call releaseBuffer.\n\u003e\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\u003e Change-Id: Ia1ba08cb9dea35a698723ab2d9bcbf804f1682fe\n\nChange-Id: I2c5e2f0375c410f0de075886aac56ff6317b144c\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "b34364269683363ca54aeed4952937cf37da7e06",
      "tree": "f6110a12bcafb9688ce54e720d74565d792588c5",
      "parents": [
        "1fe40b374fc13c477d42b3fc59f3d21f1e552aea",
        "705868c0f2a6e85a39addefe4db9f2130627c219"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 12 08:31:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 12 08:31:00 2012 -0700"
      },
      "message": "Merge \"Make it possible to pass empty opaque data as (NULL, 0) to ICrypto.\""
    },
    {
      "commit": "1fe40b374fc13c477d42b3fc59f3d21f1e552aea",
      "tree": "6300b57f1a820e013bad812e621df7bbc5e48cd6",
      "parents": [
        "e5becb51c64cb8a3f6bbd8a417f54510567f37dd",
        "b7ddcc9460f488f0b032aeb27b52a423318a97ea"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 11 23:19:19 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 23:19:19 2012 -0700"
      },
      "message": "Merge \"Add support for a new AAC decoder library.\""
    },
    {
      "commit": "705868c0f2a6e85a39addefe4db9f2130627c219",
      "tree": "bf8bc411b75def4b2a70589290cb3343bf8189e8",
      "parents": [
        "e5becb51c64cb8a3f6bbd8a417f54510567f37dd"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 11 15:41:45 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 11 15:41:45 2012 -0700"
      },
      "message": "Make it possible to pass empty opaque data as (NULL, 0) to ICrypto.\n\nChange-Id: Ifee1744890b645e008c9aff3783625a7bfbcff27\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "e5becb51c64cb8a3f6bbd8a417f54510567f37dd",
      "tree": "79ad3e29d8f4b966825e1d71b8304b17abe05436",
      "parents": [
        "9b8ae38ac8c5384d178bfe3f61907f973b98c740",
        "f95439afa8eb2484969d4a928b0fdd6a4d3a38d7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 11 13:43:59 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 13:43:59 2012 -0700"
      },
      "message": "Merge \"Changes to add support for H263-1999/2000 formats for streaming\""
    },
    {
      "commit": "9b8ae38ac8c5384d178bfe3f61907f973b98c740",
      "tree": "a13dcc1838e5263f2044156bb7c7c7111e8004df",
      "parents": [
        "b92dee530c72c3e22f2fee585e0cc53ae9c02f2e",
        "f4b7d94062c896dca565d849c6188cd3489be257"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 11 13:41:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 11 13:41:34 2012 -0700"
      },
      "message": "Merge \"Better error logging during meta data retrieval. Fixed the stagefright\""
    }
  ],
  "next": "f4b7d94062c896dca565d849c6188cd3489be257"
}
