)]}'
{
  "log": [
    {
      "commit": "190cdbab6ba24519d6b5e8bec6c2c74e6650e284",
      "tree": "515d0a75f7bf43b802fb3247f3ce86efa7526af8",
      "parents": [
        "27a14b22e03dbd677e100f273e359a0daf2e79c6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 26 10:19:24 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 26 10:19:24 2013 -0700"
      },
      "message": "Identify network servers and clients with a OS version related string\n\nand put the logic to create that string in one location instead of many...\n\nChange-Id: I1f729f2e7376cd3b45eea0e48f7bd10084b41b39\n"
    },
    {
      "commit": "5beac28a34e557251bd4bbd77a6d9303a69d4319",
      "tree": "bddefa894193bdb535c5f0090e7edab2e3d9eca4",
      "parents": [
        "3a29ea87c8fdcd45987bcc9cd2b68961ac971d27"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Mar 22 15:26:39 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Mar 22 15:26:39 2013 -0700"
      },
      "message": "Load crypto plugins from additional shared libraries\n\nCurrently crypto plugins are expected to be in libdrmdecrypt.so.\nWhen there are multiple plugins supporting different schemes,\nthis approach requires source code integration across\nvendors which is unmanagable.  Also, for integration with\nMediaDrm where the crypto keys are obtained from a drm server,\nthe MediaCrypto plugin needs to interoperate with the MediaDrm\nplugin. This change allows {MediaCrypto, MediaDrm} pairs that\nare logically related to be implemented in a common shared\nlibrary.\n\nChange-Id: I7f6638f29171f91609fc2d944396365568630b56\n"
    },
    {
      "commit": "3a29ea87c8fdcd45987bcc9cd2b68961ac971d27",
      "tree": "799496b667decd5c7cffeef3e56e3865b393f357",
      "parents": [
        "aab193b107e302e145b5c3d6e6c87f92ac296186",
        "11287471298193ff51ffb429686f5d63a84a621b"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Wed Mar 20 17:00:50 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 20 17:00:50 2013 +0000"
      },
      "message": "Merge \"Add the presentation rotation support\" into jb-mr2-dev"
    },
    {
      "commit": "aab193b107e302e145b5c3d6e6c87f92ac296186",
      "tree": "0150308f9b4bf86e2ea73a23da6720f5fd989c3c",
      "parents": [
        "42404e895c182df761cbd2473d172e58e763ac89",
        "cc82dc6d500023eba6048616301a4b12682458db"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 20 16:48:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 20 16:48:55 2013 +0000"
      },
      "message": "Merge \"Implementing MediaDrm APIs\" into jb-mr2-dev"
    },
    {
      "commit": "11287471298193ff51ffb429686f5d63a84a621b",
      "tree": "b3a4e927f0887148de2cce86b01947c699790d9f",
      "parents": [
        "4f4c2655dc3f6fcef766db6e793b1642ad0fd605"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Mar 12 15:43:56 2013 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Mar 15 16:16:16 2013 -0700"
      },
      "message": "Add the presentation rotation support\n\nbug:7991013\n\nChange-Id: I10cb034b432876c724baa4974efcb3d67b8a99b6\n"
    },
    {
      "commit": "b7be24f055426f00fd1ae1af07d5dd40dbcedfe7",
      "tree": "16452ef5ba382cf37a6f63b49f6a399a1cf85d98",
      "parents": [
        "db57fae81950e32af019b32421b93d204d67e951",
        "5883d53cf8300d8b13a1a6ef3310d72a55e191c0"
      ],
      "author": {
        "name": "Tenghui Zhu",
        "email": "ztenghui@google.com",
        "time": "Thu Mar 14 22:42:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 14 22:42:44 2013 +0000"
      },
      "message": "Merge \"Make limitations of MPEG4Writer explicit\" into jb-mr2-dev"
    },
    {
      "commit": "5883d53cf8300d8b13a1a6ef3310d72a55e191c0",
      "tree": "d280c84919e427787e307504606c5a2527124e59",
      "parents": [
        "dbda1c852d68fde2e729ff2f8e85a406da73994b"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Mar 12 10:40:20 2013 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Thu Mar 14 10:47:31 2013 -0700"
      },
      "message": "Make limitations of MPEG4Writer explicit\n\no No more than 2 tracks will be supported\no No more than one video and/or one audio tracks will be supported\no Only take video and/or audio track (for instance, no text tracks)\no If there is no track before start() is called, bail out.\n\nAt the same time, make sure the errors from addSource() report to\naddTrack(), not to start().\n\nBug: 7991013\n\nChange-Id: I1ca35aaeb75b5448d75ed2c6c10dd12ecea720ab\n"
    },
    {
      "commit": "8fb6f96e1cc246bc5630e1f5a0eb90f5459331b7",
      "tree": "50f65eabb52b7f241baa88268178021bcff5a156",
      "parents": [
        "27d11e240dad419f08e7edcd0857ee7806c65d76",
        "33da402287605e40e189289b11a08b8f5d515818"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 13 21:42:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 13 21:42:14 2013 +0000"
      },
      "message": "Merge \"remove uses of Surface in favor or IGraphicBufferProducer\" into jb-mr2-dev"
    },
    {
      "commit": "cc82dc6d500023eba6048616301a4b12682458db",
      "tree": "1f36f887af92cb4bee147e962b85ce10f35d587a",
      "parents": [
        "c93484ab9fdf044fd32f2388a3ce29040d2ba319"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 08 10:18:35 2013 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 13 13:39:48 2013 -0700"
      },
      "message": "Implementing MediaDrm APIs\n\nChange-Id: I9ff8eeb7d0c383b5c0c68cd54eb54ce7d2d22fe6\n"
    },
    {
      "commit": "33da402287605e40e189289b11a08b8f5d515818",
      "tree": "440b60a701b5d4e4d93293732cf5a4a8bef3727c",
      "parents": [
        "b05526fc3c0ccc9f9310830074e863212af433e0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 18:42:23 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 18:42:23 2013 -0700"
      },
      "message": "remove uses of Surface in favor or IGraphicBufferProducer\n\nChange-Id: I13d7a9553aa335bca790a3a59d389d7533c83d57\n"
    },
    {
      "commit": "9dffd24e00a1b2abd5e2dcc2366c0327ec3701b8",
      "tree": "593867dda4cf659baf90444ddd152cba2d68c86c",
      "parents": [
        "9ab909bff49b2eccde1b028901717c193ef723af"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 12 11:01:43 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 12 13:44:58 2013 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit f4edf442741886cdbe071e2d15f6e6247269f7c5\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Mar 12 09:09:18 2013 -0700\n\n    Pass additional flags to the sink, use TCP by default in wolfiecast mode.\n\n    Change-Id: I41e11a2375d4199656e45c4f149d8441d0016092\n\ncommit 6302602ed280a38287f507159abfb40a1da38c5a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Mar 12 08:51:58 2013 -0700\n\n    tweaks\n\n    Change-Id: Ie29e422d7258be522f4bb1f6c5afcf74c937e547\n\ncommit a38a860e4979ba563cadbaafa21b084439449d26\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Mar 11 16:57:43 2013 -0700\n\n    Report average lateness all the way from NuPlayerRenderer...\n\n    Change-Id: I2e7700703ae656515e44b9c25610d26c75778111\n\ncommit a7d49b11675ea88be4029dd8451d1649db94571d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Mar 11 14:54:19 2013 -0700\n\n    Make TimeSyncer smarter, enable TunnelRenderer\n\n    Change-Id: I27377a60cd8feb01589da456967fddd34532c20e\n\ncommit 0f214c8ef68179f7b61512c37040939554013151\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Mar 7 15:57:56 2013 -0800\n\n    convert source timestamps to sink timestamps, report lateness.\n\n    Change-Id: I051a60fbbceca2f7b508ae3dac6e01e402bae39e\n\ncommit 04a4f8e16bad09157b5615a5fa45310438955832\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Mar 7 09:00:28 2013 -0800\n\n    Sync time between sink and source.\n\n    Change-Id: Ie8b4d75c957aa48310e7c81d1279761b9f821efe\n\ncommit aebe20e6184e3636a99082f8ece08e708015cb8d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Mar 6 09:03:12 2013 -0800\n\n    play with back pressure\n\n    Change-Id: I51eb69257e6a79e76f5f9c75ff99d8adbd083947\n\nChange-Id: Ifdf57228667fed7fc71c5090a2c3f7cea1037c5c\n"
    },
    {
      "commit": "dbda1c852d68fde2e729ff2f8e85a406da73994b",
      "tree": "53bccb4964a3d3b1063237b5b10eeb80eb1b6d2d",
      "parents": [
        "96aeef2b4f51b06cb7f9ccbb04df48b305550b67",
        "afde4e56566af19b36f1fe5e7aa7f226bf1703dd"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Mar 08 23:13:07 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 08 23:13:08 2013 +0000"
      },
      "message": "Merge \"Clean up the native code to match Java update\" into jb-mr2-dev"
    },
    {
      "commit": "afde4e56566af19b36f1fe5e7aa7f226bf1703dd",
      "tree": "5b0cdd040810962afa5688be1def2eb6babf0de4",
      "parents": [
        "10774e144b3c99afad9a5070ccf50fdb12b5fb4e"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Feb 22 14:32:59 2013 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Fri Mar 08 14:48:05 2013 -0800"
      },
      "message": "Clean up the native code to match Java update\n\n1. Add flags to match the java side change.\n2. Update the interface.\n\nbug:7991013\n\nChange-Id: I8ffe84c466b2a68e2e1e48b35b78db9e44640265\n"
    },
    {
      "commit": "8d4c382db4f89c30a309ffa16bef33930c691681",
      "tree": "d3d999474ebca69ef02bde7ff11d96153e7c0f21",
      "parents": [
        "060c68497a9ab59fd71ffbe7c9a7cd3e58489265",
        "ba6218eae3dbcf3f962b3561b26374a214dbf5e2"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Mar 06 17:42:23 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 06 17:42:23 2013 +0000"
      },
      "message": "Merge \"Correct MediaCodec + Surface behavior\" into jb-mr2-dev"
    },
    {
      "commit": "ba6218eae3dbcf3f962b3561b26374a214dbf5e2",
      "tree": "4b7922c6822c116b67123022fa48489a23724fe7",
      "parents": [
        "a7a5917a064710edea9cfacc8eda44532150e852"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Mar 05 14:31:02 2013 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Mar 05 16:29:55 2013 -0800"
      },
      "message": "Correct MediaCodec + Surface behavior\n\nAssorted tweaks:\n- Allow signalEndOfInputStream() before ACodec is in Executing\n  state (added message to two more states).\n- Return an error if signalEndOfInputStream() is called a second\n  time on the same stream.\n- Require AndroidOpaque color format in createInputSurface().\n- Disallow dequeueInputBuffer() after an input surface has been\n  created (boolean flag in MediaCodec tracks it).\n- Discard input surface when encoder is re-configure()ed (drop\n  OMXNodeInstance\u0027s ref when we go back to Loaded).\n\nBug 7991062\n\nChange-Id: Iff30f3036e14eb5a2f6536910dcf11aba33031ee\n"
    },
    {
      "commit": "060c68497a9ab59fd71ffbe7c9a7cd3e58489265",
      "tree": "468aeb141c52dc4f04f693550316223f255549cd",
      "parents": [
        "7b288449777a071cb800c69468e28b4e5857a690",
        "538f498bbd5a2da51c9037a2689afc97f8bded8f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 06 00:18:04 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 06 00:18:04 2013 +0000"
      },
      "message": "Merge \"Add template class SingleStateQueue\" into jb-mr2-dev"
    },
    {
      "commit": "a7a5917a064710edea9cfacc8eda44532150e852",
      "tree": "506ee93cee969d2f1be4cda5346c12a514dd4441",
      "parents": [
        "0c57461f2c19f3a271c66f52cf8c9b2a82b13518",
        "f779bb50d9746d9526541c3e6dcdf619cac941b7"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Mar 05 17:41:25 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 05 17:41:25 2013 +0000"
      },
      "message": "Merge \"Implement Surface input to MediaCodec.\" into jb-mr2-dev"
    },
    {
      "commit": "538f498bbd5a2da51c9037a2689afc97f8bded8f",
      "tree": "1c9197aff7f824310044a6b88148e04c20c85552",
      "parents": [
        "0c57461f2c19f3a271c66f52cf8c9b2a82b13518"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 26 10:40:24 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 05 08:26:50 2013 -0800"
      },
      "message": "Add template class SingleStateQueue\n\nChange-Id: If7e2bc9b2a216524ee9cbb68682e2634933b4973\n"
    },
    {
      "commit": "f779bb50d9746d9526541c3e6dcdf619cac941b7",
      "tree": "cee03011ebf84cfcd704ead0744e0b53dd91c4f7",
      "parents": [
        "10774e144b3c99afad9a5070ccf50fdb12b5fb4e"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Feb 19 07:28:30 2013 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Mar 04 15:03:53 2013 -0800"
      },
      "message": "Implement Surface input to MediaCodec.\n\nAlso, renamed a CHECK_INTERFACE macro that was clashing with the\nBinder version.\n\nBug 7991062\n\nChange-Id: If5e6ed0a06d9f67975497676e4b05abe3aa3d6c0\n"
    },
    {
      "commit": "a265845ecafe06c9668ce7ac67636657f4bedf86",
      "tree": "ae75ddb56a1aa950221e8961c0d2718958b61987",
      "parents": [
        "10774e144b3c99afad9a5070ccf50fdb12b5fb4e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 26 11:32:32 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 04 12:58:21 2013 -0800"
      },
      "message": "Miscellaneous cleanup\n\nAbbreviation framesReady to fRdy for new systrace.\nPut inline const on one line.\nUse local copy of mState in state.\nImprove logging.\nLine length 100.\n\nChange-Id: I8201c3ce0e53fd464fd33d02544e52c342d40b68\n"
    },
    {
      "commit": "d3c4b134a87b96227b90b9ec052d8a6e9880bbdf",
      "tree": "869a985fd6a51da99de24bd5a3ace41421c0a7a3",
      "parents": [
        "358538ce26ee651f6b5cff9f7432a5321386710d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 27 09:05:28 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 01 15:36:26 2013 -0800"
      },
      "message": "media.log cleanup\n\nRemove almost all of the specific logs, but leave the media.log\nlogging infrastructure in place for the next time we need it.\n\nRe-apply a few good changes that were reverted earlier:\n - check logf format vs. argument list compatibility\n - distinguish potentially modified and actually modified tracks in FastMixer\n - fix benign bug where sq-\u003eend() was called more than once\n - fix a build warning\n\nBug: 6490974\nChange-Id: I02d3e83646c738acaebb415bd0d6b548638b4ef5\n"
    },
    {
      "commit": "3c3c527a792249d07938c5c6cb9b465344a22383",
      "tree": "07e9c4f4902d084c29f6c5ab6d688f3ecbba9f4c",
      "parents": [
        "48af7e8dd40883d6154e7029d9500072b551b5fa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 27 09:39:39 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 27 09:39:55 2013 -0800"
      },
      "message": "Revert \"Logging to investigate a crash\"\n\nThis reverts commit f0ff908da019a44115109f1b4d1b6864b35a8a29.\n"
    },
    {
      "commit": "48af7e8dd40883d6154e7029d9500072b551b5fa",
      "tree": "ce8b71d67a3313dc19c0691bc1b26d1244a106b4",
      "parents": [
        "68e6e24cb6cdd66c2209774c4871a2c47e8bbc8b"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Feb 19 10:40:14 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Feb 25 16:11:41 2013 -0800"
      },
      "message": "CameraService and Stagefright: Support AppOps\n\nCamera:\n- Signal to AppOpsService when camera usage starts and stops\n- Listen to permissions revocations and act on them\n- Currently just kill camera connection when permissions lost\n\nStagefright:\n- Pass on client name, UID to camera as needed\n\nBug: 8181262\nChange-Id: I9e33c9d05e9daa77dbb2d795045d08eb887ec8f0\n"
    },
    {
      "commit": "a457c43cd7f4225ffbedfbdcd68dd9cf6fef1d38",
      "tree": "62c3cfb9c8fb3c48df46aea39f4d6c3d27dab65a",
      "parents": [
        "c046148d93212f8a4da916bb860a1fa5926fe159",
        "5f6f3764989601d3b3ee65beaf1447d2a6b5f284"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 23:55:26 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 23:55:26 2013 +0000"
      },
      "message": "Merge \"Revert \"Temporary additional logging to investigate bug\"\""
    },
    {
      "commit": "5f6f3764989601d3b3ee65beaf1447d2a6b5f284",
      "tree": "b32615250ff96cb6e55206f5c78ae2e15c83cc87",
      "parents": [
        "dd9764290b3c1d801fea9505189cae29db919902"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 23:55:04 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 23:55:04 2013 +0000"
      },
      "message": "Revert \"Temporary additional logging to investigate bug\"\n\nThis reverts commit 32584a7d672864b20ab8b83a3cb23c1858e908b7\n\nChange-Id: I9dc680578b955b1af462eeb7a49d61a0d45eb81b\n"
    },
    {
      "commit": "c046148d93212f8a4da916bb860a1fa5926fe159",
      "tree": "1980477800bc27663417d5306d4af89de92533fb",
      "parents": [
        "4490bf05a9addf5a4e12e0da92f22d854e5ce9a0",
        "dd9764290b3c1d801fea9505189cae29db919902"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 23:54:53 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 23:54:53 2013 +0000"
      },
      "message": "Merge \"Temporary additional logging to investigate bug\""
    },
    {
      "commit": "dd9764290b3c1d801fea9505189cae29db919902",
      "tree": "2a9ef9c4d5a2d279f18f535441a0eeb8e9476700",
      "parents": [
        "6bde4671ae7cb383e731606d9ee548859047c961"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 13 14:46:45 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 15:44:50 2013 -0800"
      },
      "message": "Temporary additional logging to investigate bug\n\nThe bug appears related to continuing to use an invalid buffer provider\nin fast mixer after track destruction, so focus the added logs in that area.\n\nAlso includes a bug fix: was calling log in an unsafe place\nnear Threads.cpp AudioFlinger::PlaybackThread::createTrack_l line 1250.\n\nDetails:\n - include caller pid or client pid where appropriate\n - increase log buffer size\n - log mFastIndex when AudioMixer sees an invalid bufferProvider.\n - log both potentially modified and actually modified tracks in FastMixer.\n - fix benign bug where sq-\u003eend() was called more than once.\n - log StateQueue push() call and return.\n - increase StateQueue size from 4 to 8 entries\n - log mixer-\u003eenable(), bufferProvider, and currentTrackMask\n - log buffer provider addresses\n - increase fast mixer log buffer again\n - check logf format vs. argument list compatibility\n - add logging to AudioMixer\n - add checking of magic field in AudioMixer to detect overwrites\n - add bool AudioMixer::enabled()\n - increase log buffer sizes yet again\n - enable assertion checking without ALOGV\n - improve a few log messages\n - check for corruption in more places\n - log in all the process hooks\n - add new mixer APIs so we can check for corruption of mixer state\n - fix a build warning\n\nBug: 6490974\nChange-Id: Ib0c4a73dcf606ef9bd898313b3b40ef61ab42f51\n"
    },
    {
      "commit": "b1e7cd156ca3e1747374e0d20cdd1ce467210453",
      "tree": "557f25ff5a0477f0cf0f89d4c21b0291371f09a2",
      "parents": [
        "62ad9071cd61fc56355d3c2d25895382003ea362"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 14 17:11:27 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 15 12:47:35 2013 -0800"
      },
      "message": "Refactoring: Rename SurfaceTextureClient to Surface\n\nChange-Id: I4e8a8b20914cb64edc37abe68233fbc9f2b5d830\n"
    },
    {
      "commit": "62ad9071cd61fc56355d3c2d25895382003ea362",
      "tree": "3795e34e35b63dbe73daac08d151501c43a91733",
      "parents": [
        "0d026335f6040df997d35b7e81f8c9f8be8cdec0"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 13 09:27:28 2013 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 15 10:03:04 2013 -0800"
      },
      "message": "Add support for fragmented mp4 to MPEG4Extractor\n\nThis makes FragmentedMP4Extractor obsolete. It will be removed in a\nseparate change.\n\nChange-Id: Ida74c07ccf84983e20a1320ee24ffc7a5c083859\n"
    },
    {
      "commit": "ce70d400ff9fb614e334ab2b661df2933533ef57",
      "tree": "30610a5b21cfa882a9f17a7b4cc39d11e8ccdd7d",
      "parents": [
        "5881f18029deb80eb83ea88046d0593441be79c7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 14 23:57:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 23:57:02 2013 +0000"
      },
      "message": "Revert \"Temporary additional logging to investigate bug\"\n\nThis reverts commit 639482c24c911b125398b31883ba6d55faebe28b\n\nChange-Id: I11f2829072ab11e18b0663024f27bf31192f1d39\n"
    },
    {
      "commit": "5881f18029deb80eb83ea88046d0593441be79c7",
      "tree": "3de394e4626f829fed4237e756489e0fba865236",
      "parents": [
        "7e1e1e61fca5334e11a0c26ab23e6122e742d517"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 13 14:46:45 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 14 14:35:29 2013 -0800"
      },
      "message": "Temporary additional logging to investigate bug\n\nThe bug appears related to continuing to use an invalid buffer provider\nin fast mixer after track destruction, so focus the added logs in that area.\n\nAlso includes a bug fix: was calling log in an unsafe place\nnear Threads.cpp AudioFlinger::PlaybackThread::createTrack_l line 1250.\n\nDetails:\n - include caller pid or client pid where appropriate\n - increase log buffer size\n - log mFastIndex when AudioMixer sees an invalid bufferProvider.\n - log both potentially modified and actually modified tracks in FastMixer.\n - fix benign bug where sq-\u003eend() was called more than once.\n - log StateQueue push() call and return.\n - increase StateQueue size from 4 to 8 entries\n - log mixer-\u003eenable(), bufferProvider, and currentTrackMask\n - log buffer provider addresses\n - increase fast mixer log buffer again\n - check logf format vs. argument list compatibility\n - add logging to AudioMixer\n - add checking of magic field in AudioMixer to detect overwrites\n - add bool AudioMixer::enabled()\n\nBug: 6490974\nChange-Id: I1f3f18aa62d9fbd35bc32285b669f5ba40efe28e\n"
    },
    {
      "commit": "6269d53cce5c1c9350565d3d72d92116594260cb",
      "tree": "debfbedbe8cf9a16d279f9a408519aa4743cc854",
      "parents": [
        "e336f9113bdd35119866a3c3f8008ca01c576660"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Feb 04 15:59:38 2013 -0800"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Tue Feb 12 11:10:12 2013 -0800"
      },
      "message": "Add the native MediaMuxer support.\n\nMediaAdapter: a helper class to convert the push model to pull model.\nMediaMuxer: the real muxer.\n\nbug:7991013\n\nChange-Id: If3b79551bc6332bc81f5c2740885e579a5c4abf9\n"
    },
    {
      "commit": "e336f9113bdd35119866a3c3f8008ca01c576660",
      "tree": "a53d8070243784449dc87ca193e2e121d38863b7",
      "parents": [
        "51a920302a6f376cdb24691051d96f34f24a55bf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 04 16:26:02 2013 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 11 10:13:00 2013 -0800"
      },
      "message": "Add support for querying if a stream is active remotely\n\nBug 7485803\n\nChange-Id: I0744374f130fd2dd0714102354cffed2fa915361\n"
    },
    {
      "commit": "c71601c3b1dd63afc9be462194809813e4dbacf1",
      "tree": "f91f7e9da453d188934ef99d136f2606a52fe3d9",
      "parents": [
        "0955986e6c1c27ba752e293246086ea79c49d39c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 07 10:56:14 2013 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 07 10:56:14 2013 -0800"
      },
      "message": "Allow for dynamic reconfiguration of the video bitrate used\n\nto encode video while running as a wfd source.\n\nChange-Id: I44f7b2350c88fc5807047c61bfe594ef8fa79275\n"
    },
    {
      "commit": "0be9fe5864c39c11eefe335038cf6ce5473e4ec5",
      "tree": "a5a21ccd28ea763c36d3c4a0aae1d455baf9636d",
      "parents": [
        "1cca13c79ff7e3f36a2fc6e564b60f5e57d00919",
        "fdf4e4f1859771b95585cbc87f8cd038ea2815c6"
      ],
      "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": "279dcd89ab1d2de91dfe95e461412a0f577a6891",
      "tree": "fa0ae875d3404f6fae47823e4c3b2d09207dae9b",
      "parents": [
        "150a516ce434bd1df81e3c3070915e3f549bca59"
      ],
      "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": "fdf4e4f1859771b95585cbc87f8cd038ea2815c6",
      "tree": "7bbc12a9d0e9c7ad29346b04b26c55d390a0b032",
      "parents": [
        "10eb4b33545a58e4b09249c30c100bc7b992250a"
      ],
      "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": "10eb4b33545a58e4b09249c30c100bc7b992250a",
      "tree": "412dc200ac801d561fd2df61c462c2d8485fcb9e",
      "parents": [
        "bb9c2e1155d0a844f04aec981b44a9e562522fde"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 14 14:53:13 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 25 15:01:24 2013 -0800"
      },
      "message": "Add non-blocking event logger NBLog\n\nChange-Id: I6c136cf3d7f46a8af84c69ecfc199dab394c10dc\n"
    },
    {
      "commit": "856ff4e4c3c43550f013e80277358fdf514342bf",
      "tree": "8c4d4a5e03726de6b40ab9ed3519e738cae2fefc",
      "parents": [
        "5570227ac334479982a9dd8c1647c00f58f47c18",
        "552f274d82fb4988fb972df69134e031d375abfe"
      ],
      "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": "5570227ac334479982a9dd8c1647c00f58f47c18",
      "tree": "885046de88c68c9fc468fd02617af4cafc6a758b",
      "parents": [
        "00169223fb04a14ddb542146223540e3695c8d27",
        "f37971f624164c3ed185d3f976404a6f60f49b9a"
      ],
      "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": "f37971f624164c3ed185d3f976404a6f60f49b9a",
      "tree": "e3455056e9e0512786cfdd832e1fd8bba765bc7c",
      "parents": [
        "34d7db5dd43000cac7e8e156d79e9f97ccbb8990"
      ],
      "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": "484566c410afdfbc4b6bc5aa1732aef37428a5b8",
      "tree": "5ce1fc6a755c32f0b6ff362fe1fc5bf0d9ee2b14",
      "parents": [
        "34d7db5dd43000cac7e8e156d79e9f97ccbb8990"
      ],
      "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": "552f274d82fb4988fb972df69134e031d375abfe",
      "tree": "6c356ad9ec05a6b6e392aae86cdc296c98d13a65",
      "parents": [
        "cc492bd388898f90cec4faae3c7fde561dd52239"
      ],
      "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": "e1cf3c41bd27b5ab7d8e70ef8dd6fcd0f5453568",
      "tree": "8851291ff68fc422d0e76bfeec00c37d2293a8c3",
      "parents": [
        "c984e76f3091c8210cd6bb0cae0f23549a7af0ee",
        "a4f324673f615d604362d86e1878e85c126847af"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 10 16:08:07 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 10 16:08:07 2012 -0800"
      },
      "message": "am 76143093: am f0ff908d: Logging to investigate a crash\n\n* commit \u0027761430930a7335d714af0f7c1d497feb8f9f0a5a\u0027:\n  Logging to investigate a crash\n"
    },
    {
      "commit": "a4f324673f615d604362d86e1878e85c126847af",
      "tree": "41d0b30039b3048ff965e49e61b0b95c3ae6ab74",
      "parents": [
        "917279c99c7677a02a120909dc4f9092339f2827",
        "ef5abc369823f634c460c8f24d3cbf310542fe3b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 10 15:34:56 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 10 15:34:56 2012 -0800"
      },
      "message": "am f0ff908d: Logging to investigate a crash\n\n* commit \u0027f0ff908da019a44115109f1b4d1b6864b35a8a29\u0027:\n  Logging to investigate a crash\n"
    },
    {
      "commit": "ef5abc369823f634c460c8f24d3cbf310542fe3b",
      "tree": "429519b3bd4fbc7f47ee2be82f2778ef1545fbdd",
      "parents": [
        "7ecb63d26cc5a45e66248a7abb69f99a76114e07"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 07 14:13:35 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 07 16:19:09 2012 -0800"
      },
      "message": "Logging to investigate a crash\n\nBug: 6490974\nChange-Id: Ib926a9258bde4ee05ed42eea662dff68e426a997\n"
    },
    {
      "commit": "e9810fae2ca6620337b75a787786cc0ea52adecd",
      "tree": "f848298646fb0163e6911ad8622adcc12a8eba3f",
      "parents": [
        "07dfb08e935fdfe9f73f452cf27e3e2b052eda4f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 03 15:20:40 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 05 10:34:34 2012 -0800"
      },
      "message": "Respect sample aspect ratio in NuPlayer.\n\nrelated-to-bug: 7569402\nChange-Id: I302de95d83b180bd2dc72ddd0c69a665dbce2527\n"
    },
    {
      "commit": "8f7453f6770070f4789cb769bd2b6a3eabad7d68",
      "tree": "787fcacb821498bd7493739157bcdb83873ae386",
      "parents": [
        "ec7dcac79c121ef015ee237891a5c90e67a977ab"
      ],
      "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": "ec7dcac79c121ef015ee237891a5c90e67a977ab",
      "tree": "5d7a9bbbc5a00e82f3f8383f5411e227f9a58b96",
      "parents": [
        "4b3a49e3a9ced6e63adab08acc5b720f8feddefa"
      ],
      "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": "4b3a49e3a9ced6e63adab08acc5b720f8feddefa",
      "tree": "4189f95a16953fa8218544fa5ceedfc7bee94e1d",
      "parents": [
        "9862e8f3ba69c46efbafdc8438bd88848a9d55da"
      ],
      "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": "ab5bfb15f63887f999f11239e12d78a7babcd112",
      "tree": "353145e9f4318ed0ff4c7709f5d705bf1a63a55f",
      "parents": [
        "ce768c847c0df30ee9725b888e95167444477e55"
      ],
      "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": "f59ab0eb162cc32df4fc0af8d1a4500c5bce3ecc",
      "tree": "6851003e7af892906473b96685a03767068b6168",
      "parents": [
        "4aefd5fc4dde13a8f3c9c27ec4055b771c0ee341",
        "53faa7ee457eb9b27be1fd814e42ffe43c8520a0"
      ],
      "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": "2e57f4c428be32a574e31b0f4aeeae8de24e5895",
      "tree": "543aedc7a1c8299b135cfd1ef792c7689adb8e52",
      "parents": [
        "d5ab37a1a0e74a75537b9514289434651635a820",
        "cb9d270eecb7108e19323f522c5e82dcc80a5f32"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Nov 29 14:32:18 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 29 14:32:18 2012 -0800"
      },
      "message": "am 296cb9dd: am 0dbe5a93: Added optional intra macroblock refresh support for encoding\n\n* commit \u0027296cb9ddd916c43983bfb4ddab9c69ed555d4cc4\u0027:\n  Added optional intra macroblock refresh support for encoding\n"
    },
    {
      "commit": "53faa7ee457eb9b27be1fd814e42ffe43c8520a0",
      "tree": "121339964fd8d4cb89e4d0ba0fafc801972f1290",
      "parents": [
        "6b4f9facb1d0caf06d511bd1d5a020c6af793c2b",
        "471dd1323f832a2b7daf42f7e75d2b4471dfe112"
      ],
      "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": "cb9d270eecb7108e19323f522c5e82dcc80a5f32",
      "tree": "cc71ef8cc847f6093e270226ed87e3cced4caa6e",
      "parents": [
        "45be8448daafeab8f37cb82cd2219f95bc218a6a",
        "e97adde42fabc3928a2ac0b8cdc88e35b24b85dc"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Nov 29 14:25:47 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 29 14:25:47 2012 -0800"
      },
      "message": "am 0dbe5a93: Added optional intra macroblock refresh support for encoding\n\n* commit \u00270dbe5a9321b24b6883fbb2fe97cd9d525128b0b5\u0027:\n  Added optional intra macroblock refresh support for encoding\n"
    },
    {
      "commit": "bf4950aa265ec7b54777d122b27037461638af0f",
      "tree": "5ef033aaa0bbf12936d00ddf64a7c6d242b4206f",
      "parents": [
        "7a7ea64c1daf025eafaba49617ee47add296254a"
      ],
      "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": "e97adde42fabc3928a2ac0b8cdc88e35b24b85dc",
      "tree": "32cb87f38949e632da3cd71ea661069b7b07a531",
      "parents": [
        "a4c5bc0f18fe272146426ab2eccad6215279c9f3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Nov 15 14:00:26 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Nov 28 13:21:07 2012 -0800"
      },
      "message": "Added optional intra macroblock refresh support for encoding\n\no related-to-bug: 7524791\n\nChange-Id: I95ac4ee925e2dbeb00b3cfb2e29c611698c5cc9f\n"
    },
    {
      "commit": "1bfcf04b27bdd5320ab70b74285b855380e83f26",
      "tree": "062f450ff86fc4732dc78437ef0adbdbab6dc877",
      "parents": [
        "72421521fd06787a407d06966e11f17b86900d2a",
        "61c195615176903bb077a10d6b88ba112fefa250"
      ],
      "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": "61c195615176903bb077a10d6b88ba112fefa250",
      "tree": "10204c708282416431c07c097d3e450427fa9d6b",
      "parents": [
        "5dd0a57f26c6c8dadc35454e69813145141386c4",
        "a4c5bc0f18fe272146426ab2eccad6215279c9f3"
      ],
      "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": "a4c5bc0f18fe272146426ab2eccad6215279c9f3",
      "tree": "9a067b002555730b806f7a86b87a92784ff64fbe",
      "parents": [
        "5ad21fb5686d4d32f61a47eab5a3fd2c4670e32d"
      ],
      "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": "1dc9b1b88cfedc61a0795ea646b728ee129fc2e6",
      "tree": "cb98fce5efd9e9931efe81918c2b633c22e46b31",
      "parents": [
        "a98a8877396fdcdf04e64cf8674ede9d4212c97b",
        "8680acaf8ccbb245b296e49ef0fa5ca311ac0fd3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 27 09:41:11 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 27 09:41:11 2012 -0800"
      },
      "message": "am 9abbd0fb: am 3eb46d17: Merge \"Fix of uninitialized mIsDrm variable.\"\n\n* commit \u00279abbd0fb822aa0076f6de03f2092db47760b924d\u0027:\n  Fix of uninitialized mIsDrm variable.\n"
    },
    {
      "commit": "761ad2c39ab2b6d40379c5926caaf9d8bd5dce15",
      "tree": "2dd9fad7c2a00e2a0d78a505dcd439fb736d3dbc",
      "parents": [
        "98c47abf4d04ca5df2c8fc403332d08d65e8ce1e",
        "9ca2596be1e624ebf1e39f645d3b3a9c3ed18eb2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 27 08:49:34 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 27 08:49:34 2012 -0800"
      },
      "message": "Merge \"Fix of uninitialized mIsDrm variable.\""
    },
    {
      "commit": "9ca2596be1e624ebf1e39f645d3b3a9c3ed18eb2",
      "tree": "9fd32e3ff7909bf14f1b2a4204046367a6e22706",
      "parents": [
        "f0e3acd06af00c07bfb541090b5349618fa67507"
      ],
      "author": {
        "name": "Henrik B Andersson",
        "email": "henrikb.andersson@sonymobile.com",
        "time": "Wed Oct 31 13:02:47 2012 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Tue Nov 27 10:17:01 2012 +0100"
      },
      "message": "Fix of uninitialized mIsDrm variable.\n\nThe mIsDrm is a bool that isn\u0027t initialized.\nThis causes it to be true in most default cases.\n\nChange-Id: I41b534514bf6a3ca88a9f0994b814d55fcd7453b\n"
    },
    {
      "commit": "a98a8877396fdcdf04e64cf8674ede9d4212c97b",
      "tree": "be45aa8c1d52dfcc257238b50efaad8b67e112d5",
      "parents": [
        "517817df397fd331add3f53fa5b8cbbfe6cdc7d3",
        "115d8138fa0a288163bbeefaf763135f1fc5b677"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 26 14:39:20 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 26 14:39:20 2012 -0800"
      },
      "message": "am 5bc5bf39: am 79fd6853: Merge \"MediaCodec: Add a method for getting the component name\"\n\n* commit \u00275bc5bf39120ae27ef46a8b13f85bf44ea19c7d5e\u0027:\n  MediaCodec: Add a method for getting the component name\n"
    },
    {
      "commit": "c45128af9231a6e26c4deef798b79e74e4fad904",
      "tree": "cef13b83707e9d7ed208f6486768c6f666cafdd9",
      "parents": [
        "7aeff3f2197de81271c3e5547486f3407be56182"
      ],
      "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": "8601efe463bf3331fa2a389ee13db25f21d28eb9",
      "tree": "03f0ae8a7bed86d1b704dbf90ce884794f754d5a",
      "parents": [
        "f0e3acd06af00c07bfb541090b5349618fa67507"
      ],
      "author": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Tue Sep 25 11:43:02 2012 +0300"
      },
      "committer": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Mon Nov 19 19:07:37 2012 +0200"
      },
      "message": "MediaCodec: Add a method for getting the component name\n\nIf the codec was chosen based on mime type, the caller does\nnot know what component actually was chosen. This allows\ngetting essential information (such as supported color formats,\nfor a video encoder) for this component.\n\nChange-Id: Ie471f40f8104b37d27ced3dba5a54facc6504b1b\n"
    },
    {
      "commit": "d7101432aa28f18b1510d9c186a27eecbeba46b2",
      "tree": "a799279d37072b0e69dc7438f0541b3810a766da",
      "parents": [
        "991012a8b887455cb44df782c49c610bb7cf9ec7"
      ],
      "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": "3c81bfb86cfa2b0bae4fea41cc26e3ce50af8517",
      "tree": "dfd51439479c50b920dfc1c1e47e905adcea3177",
      "parents": [
        "56938ef8dc82b49ddbc201a8855c91ba46d73bfb",
        "2ed5cf016c1b45426ae25ab105e02ff4bb992f28"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 16 08:19:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 16 08:19:31 2012 -0800"
      },
      "message": "Merge \"Add GSM 6.10 decoder\""
    },
    {
      "commit": "2ed5cf016c1b45426ae25ab105e02ff4bb992f28",
      "tree": "ee20237cc679f6770dca37ddeb65128195029992",
      "parents": [
        "f550f56d4bc0fa165c675bbf2e41217c41089fcd"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Nov 15 14:31:56 2012 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 16 07:35:42 2012 -0800"
      },
      "message": "Add GSM 6.10 decoder\n\nSupports Microsoft frame packing only, since that\u0027s what the sample\nfile used.\nb/6620569\n\nChange-Id: Ia89d95bcbf0f8dcbaad42148a7401728f60e079d\n"
    },
    {
      "commit": "7da35f231725aa6e0b2ac8714a7d66471368df77",
      "tree": "43c0c280293fce41ffe26176177f1cdec4e1831d",
      "parents": [
        "de5191e8b02f727756eb9d6e812af415d6cd0768"
      ],
      "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": "520a9af9438c29b24e328dd2b7a287c7a96a4e6b",
      "tree": "48d6cbcf8f8bd84e05c00855e0ede8d03e14e04c",
      "parents": [
        "1127d65d536ebbe447ee17ce0926a7ce4a2a3c08"
      ],
      "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": "1127d65d536ebbe447ee17ce0926a7ce4a2a3c08",
      "tree": "5babfd3aecd195c92b12847592f415c6bad513e4",
      "parents": [
        "1513ad2d2de0962cc3b3121e6fae73d8ee1a4639"
      ],
      "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": "1513ad2d2de0962cc3b3121e6fae73d8ee1a4639",
      "tree": "4baf59541c549bfc5b0367f1477dec1021954a35",
      "parents": [
        "8f1c74943c454fec3f1adf87312c4a4c89829d90",
        "020f79fd967736d36c7ec860814e2e93866a020f"
      ],
      "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": "020f79fd967736d36c7ec860814e2e93866a020f",
      "tree": "b0912d848ca1b2324b3be5580498ad69f65d0f8e",
      "parents": [
        "17158f4a36ed16c779477a56ec831da55e8128fe"
      ],
      "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": "f6fd99cc07deb0fa4f3e8fc278836bd90649964f",
      "tree": "14b64d2db5bc12467e71ae015d105b3a441e7ae6",
      "parents": [
        "17158f4a36ed16c779477a56ec831da55e8128fe"
      ],
      "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": "5aab59a2bd0a2cd80240ffd66c1b963b5fe06d65",
      "tree": "5625489fba1f480481ecb9ea7ad3375985bd03b1",
      "parents": [
        "9c6c02eb5badf4ffcd44fc88f2587def2fd628b6"
      ],
      "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": "2f6226ad7a3fa81dc102001fbc1d1288e55a0947",
      "tree": "d928e3a19343cff33e0d157c4c657e3931e8cbd6",
      "parents": [
        "e0461d1d47c3e3cac625ce062b641519da37ba94"
      ],
      "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": "e0461d1d47c3e3cac625ce062b641519da37ba94",
      "tree": "2014c1d429fdeedfde2497c9cfb6a68ebf490919",
      "parents": [
        "1ec74dab269d21535a89d058da82a7d28aacbb12"
      ],
      "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": "1ec74dab269d21535a89d058da82a7d28aacbb12",
      "tree": "66e55e23d27ce8a9eaa6c78e7bf396f2acf47480",
      "parents": [
        "4f3ebe4090a3be3bb7622cc01b2f9af476914798",
        "164d6539e0620d08b0395efcdd0e4aaf437daf54"
      ],
      "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": "a96bd95dcfe886436652debbda77ceb634729da0",
      "tree": "293bcff0960a789cc5b437a458c65795bd8b4c14",
      "parents": [
        "891b11da870ad3f860c1d2610ef4d8836ed6c590"
      ],
      "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": "891b11da870ad3f860c1d2610ef4d8836ed6c590",
      "tree": "e6b9b1be319590d43afc496a55d779724b3db10c",
      "parents": [
        "b2800e8f1360cbc3c5af2bea228b9622b1ddc9dd",
        "c26741598a840f7c1d12ee457fb26f68fcdbcc70"
      ],
      "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": "b2800e8f1360cbc3c5af2bea228b9622b1ddc9dd",
      "tree": "e1e86686fca8bdb6059476d13754684d8a04a87d",
      "parents": [
        "a7c616bf961e58d99449637688e947816fce795e",
        "8424361609e0a94b9a240b43920529a84a63ed15"
      ],
      "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": "c26741598a840f7c1d12ee457fb26f68fcdbcc70",
      "tree": "01156c9a64d61fe07a82d913c1aaa3aeb30adf94",
      "parents": [
        "96f1528dd637c6e806456d56c635ab2e92b0bd9b"
      ],
      "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": "8424361609e0a94b9a240b43920529a84a63ed15",
      "tree": "b02439b49ce632e2fcdd858b3b31bc701a5303e0",
      "parents": [
        "96f1528dd637c6e806456d56c635ab2e92b0bd9b"
      ],
      "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": "6608582c5fc4dc4041d18d0e619fb3042380607b",
      "tree": "bf20be6b2305583e4fb27736b58574e5fbf009eb",
      "parents": [
        "96f1528dd637c6e806456d56c635ab2e92b0bd9b"
      ],
      "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": "2c1f9010e4ccf12667043b6ba00d2dc758dbbfc0",
      "tree": "096144440e2fd709059fc06949666f1f4e2517cd",
      "parents": [
        "ac65726b26a63635d3461f96b4b979add5a8f7dc",
        "c4bae46d8bc833f200c2d460df73d42130efb5bc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 06 10:27:58 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 06 10:27:59 2012 -0800"
      },
      "message": "Merge \"AudioRecord comments\""
    },
    {
      "commit": "164d6539e0620d08b0395efcdd0e4aaf437daf54",
      "tree": "1ef93ad08047935309369c603310cb78a16acf8f",
      "parents": [
        "480421bb48af5df4f15498845447f3fde20a4069"
      ],
      "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": "7c28540fccf996bed1744686aca1ee9e67b9cf22",
      "tree": "6365349c39177ed75b32bc7fcb88ac469c88d16d",
      "parents": [
        "fb242fa66643d1bd5362077a44c02c86c8064564"
      ],
      "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": "c4bae46d8bc833f200c2d460df73d42130efb5bc",
      "tree": "2c800085866d236f1c0f599e12249826ed4e8016",
      "parents": [
        "3d07702e3b95579370aa74d40b56c63685cbb518"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 15:41:48 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 02 10:56:20 2012 -0700"
      },
      "message": "AudioRecord comments\n\nChange-Id: Ibec910608948d778dc655d900255a80384e9b06f\n"
    },
    {
      "commit": "3d07702e3b95579370aa74d40b56c63685cbb518",
      "tree": "2fdb76a9b150bfb5fdb0e3c2cb6f9dd8f30c1826",
      "parents": [
        "2fdabbab3cbfb68755036607cda15f7123f42b9b",
        "fb6a5c31c003ee56a04098a8b4930c7178d3e62a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 02 10:51:32 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 02 10:51:33 2012 -0700"
      },
      "message": "Merge \"Add NBAIO support for more sample rates\""
    },
    {
      "commit": "c5b0fa3b2f6d9ac3aa274b973c331399312adf76",
      "tree": "45705d9702ff7ed3b71ac8c24ebad391c1df09c4",
      "parents": [
        "73f954e8c735ece75411a81f1967c1839e466c6f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 15:45:06 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 02 10:18:37 2012 -0700"
      },
      "message": "AudioTrack comments\n\nChange-Id: I08988f635c5bc6f4c35e9c4188f3d6fa557bc4c2\n"
    },
    {
      "commit": "269019581b7bdd73f4c4e618a3a5bbc541058e72",
      "tree": "cbf49090bb4b54022a993af711e614a85c445c62",
      "parents": [
        "8af901cdea0af7e536579dee6d56e69987035a01",
        "5520b9c29c3eba005fb5a5044cbf44687254965e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 01 16:03:19 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 01 16:03:19 2012 -0700"
      },
      "message": "am d37ee8fb: am 96076964: Make video encoders\\\u0027 bitrate mode (constant, variable, ...) configurable\n\n* commit \u0027d37ee8fb36c972bf8d07868700a2c47358e25eb4\u0027:\n  Make video encoders\u0027 bitrate mode (constant, variable, ...) configurable\n"
    },
    {
      "commit": "7b4262221c06951e9df75d5414c0a7daab365177",
      "tree": "3090340b35cf168294f5c1f2bc287dfcc626c5a0",
      "parents": [
        "bd4e99c1636c75f6db0be70434b9f276bfecd96d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 01 15:48:44 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 01 15:48:44 2012 -0700"
      },
      "message": "Make video encoders\u0027 bitrate mode (constant, variable, ...) configurable\n\nthrough the desired output format. Configure the video encoder to use\nconstant bitrate mode for WFD.\n\nChange-Id: Id7bd619598153c13448a9c5acd69d80f8a01f333\nrelated-to-bug: 7459597\n"
    },
    {
      "commit": "8af901cdea0af7e536579dee6d56e69987035a01",
      "tree": "46df7448209503f57a43e8c63f2334edaaf80e04",
      "parents": [
        "34238f2970c7630d173203662e0d572cc47b1ef7"
      ],
      "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": "fb6a5c31c003ee56a04098a8b4930c7178d3e62a",
      "tree": "7d152c7a3f6c49601356f714b82ec2b11e24e272",
      "parents": [
        "d8a71417484ed7d937ef612d6499704d0c325874"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 01 09:47:30 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 10:11:25 2012 -0700"
      },
      "message": "Add NBAIO support for more sample rates\n\nThis will be used for audio capture but it is not scalable,\nand we need a better approach in the long term.\n\nChange-Id: I8b12f6b64a3fd8e8a8c425c82574260fe8ffbed6\n"
    },
    {
      "commit": "e3f641fd9348bf7f4c07f6cc707347fccea1439c",
      "tree": "0b9e59cf60f2ee5edd7e6fe1fb3d6ea6aed8577f",
      "parents": [
        "a70995f9dec3c2915792113c9c228b5b6474a915"
      ],
      "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": "72c6686ad04feb976ea3d2f816c784e485b55506",
      "tree": "afe501842403a5e0a1a0c4a4830a4751d4c8ef19",
      "parents": [
        "4a114f03a79e157cab9396f986ef947df2255f1d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 03 10:16:58 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 03 10:16:58 2012 -0700"
      },
      "message": "Better power savings with wifi display code.\n\nNo more polling the encoder for work to do, the encoder instead notifies\nif there\u0027s activity.\n\nChange-Id: Ia707211b4f5c5a6e6b70d750233d204a2d6bb778\nrelated-to-bug: 7248248\n"
    },
    {
      "commit": "fa0e033ab5a0ab5d96e90c9f6d4d53bedc74514b",
      "tree": "36a07a0e8484abeb2d8ec882833c6aef8aa7f231",
      "parents": [
        "90689fda75c343ab9328ced63e58f45eabaa33cc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Oct 01 16:03:44 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Oct 01 16:03:44 2012 -0700"
      },
      "message": "ALooper::GetNowUs() now relies on systemTime instead of gettimeofday.\n\nChange-Id: Ia31eb0940b02581327a8bf51af6df135f9ab6de3\nrelated-to-bug: 7266324\n"
    },
    {
      "commit": "90689fda75c343ab9328ced63e58f45eabaa33cc",
      "tree": "76f0bb939e69791e346c25fc195f147e598591f7",
      "parents": [
        "799688d0520149edc7f18ebe69c1ddd453a73cce"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Oct 01 15:59:54 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Oct 01 15:59:54 2012 -0700"
      },
      "message": "Optionally have SurfaceMediaSource return absolute timestamps\n\nbased on systemTime().\n\nChange-Id: I2eff15dd149a4b737d6e7473d1907cf0c80b6b38\nrelated-to-bug: 7266706\n"
    },
    {
      "commit": "a54dee4002624e0885b39451cb29028406f5bf8e",
      "tree": "d4b0c2d5c54ad2cac66c8311f6ca7f6edf8aa67e",
      "parents": [
        "8292f6d078a12062bbb090eed49d1ea025ff58f3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Oct 01 11:22:05 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Oct 01 11:24:04 2012 -0700"
      },
      "message": "Remove double negatives from SurfaceMediaSource\n\nensure mStarted actually reflects the state of SurfaceMediaSource\n\nChange-Id: I92557896993ad8da23fe6940e997402ad63b8cbc\nrelated-to-bug: 7258622\n"
    }
  ],
  "next": "9bb6e65def86afb36a03643c50456e646cdf98a8"
}
