)]}'
{
  "log": [
    {
      "commit": "9806555d3930be43e11106281dee354820ac1c88",
      "tree": "b5aa448cc0bfede361540f45b97c81ad398a9df4",
      "parents": [
        "6a3969cc3bcbfc84dbcc27aa726eb96bc03a830b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 03 11:33:01 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 03 11:47:08 2012 -0700"
      },
      "message": "Respect channel mask in ACodec and NuPlayer.\n\nRefactor conversion from MetaData into AMessage while we\u0027re at it.\n\nChange-Id: I5479129836ea4316e8de28cf1b472bf19e3ac4ab\nrelated-to-bug: 6439076\n"
    },
    {
      "commit": "4f6eed0d1c7972a983c075bdcf03089569e13fe1",
      "tree": "6eebbc397b99bf33e8c9991fada609d86d144caf",
      "parents": [
        "27431de020e535c31365884316f656bc60b4fe4f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Apr 30 14:38:12 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 01 10:30:58 2012 -0700"
      },
      "message": "Impl for supporting two video scaling modes\n\no allows the video scaling mode to change at any time\no also remove the scaling mode logic in OMXCodec.cpp\n\no related-to-bug: 5454345\n\nChange-Id: I6f1714eb0c2774591ce650d56c1e779b8afd085f\n"
    },
    {
      "commit": "4c9cd95b27a638701be2ffa1713273ba2f624770",
      "tree": "c7f5f7820aa39c965706b7ea504d9b53f5147688",
      "parents": [
        "0c0abd4ad26971b5fba94734137fe0bb1a590ab6",
        "f60c660f048d5f5e2458cff243c20400d73757a7"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Apr 30 12:45:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 30 12:45:27 2012 -0700"
      },
      "message": "Merge \"Added support for HE-AAC recording\" into jb-dev"
    },
    {
      "commit": "8b71241ce7353731ab75322c46e090ee35014a33",
      "tree": "afc21859dae503e57aa5a3cc777512800d1fd64e",
      "parents": [
        "83faee053cfd4251dbb591b62039f563ffdac399"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Apr 27 09:33:24 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 30 09:40:47 2012 -0700"
      },
      "message": "Fix mono gapless playback for decoders that output stereo\n\nThe old AAC decoder always outputs stereo, even for mono source material, so we\nneed to use the number of channels of the output when calculating the number of\nbytes to skip, not the number of channels in the source.\nThis makes OMXCodec skip the right amount of data, and prevents NuPlayer from\nwriting half a frame and then asserting when the AudioSink doesn\u0027t accept it.\nAlso move use of the SkipCutBuffer from NuPlayer to ACodec, so that it also\nworks when using the new Java APIs, and make SkipCutBuffer derive from RefBase.\nb/774846\n\nChange-Id: I34df9fea3e6730617eae559afaa556f4085ef0a0\n"
    },
    {
      "commit": "f60c660f048d5f5e2458cff243c20400d73757a7",
      "tree": "b2bf22e36da46fd25979df618f8661b4b0510dad",
      "parents": [
        "83faee053cfd4251dbb591b62039f563ffdac399"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Sat Apr 28 21:58:22 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Apr 30 09:18:24 2012 -0700"
      },
      "message": "Added support for HE-AAC recording\n\nFixed bug in decoder related to sample rates / channel counts\nMade decoder follow Fraunhofer pattern\nLog if bitrate not available\nBug: 6275957\n\nChange-Id: I47a8e29358fa4a88ebc73fe02d46a2bfb96c64fe\n"
    },
    {
      "commit": "9d07855aaff8a6b502a3ab058002cdd4a278b965",
      "tree": "4b9eebadf7b227b51814f02b6d38bc48e27a3da6",
      "parents": [
        "940335776b6d4eb91b13c4e56bc20bed3ac0011b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 25 16:00:45 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 26 10:44:39 2012 -0700"
      },
      "message": "NuMediaExtractor API to unselect tracks and finer control over seeking.\n\nChange-Id: I44d5a2b01d34b771bb0ff48b12829e33314c2374\nrelated-to-bug: 6276111\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "2d531e1b5865d61d5ca25d77d53017b1ad180efa",
      "tree": "f5b15fd8836013c8fa568596aaada9e823d0b7db",
      "parents": [
        "d2469c3fe382203eb7cd5060c94ed204bec98116",
        "bdddc659a941afdb7f4958f582c6901c07246097"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 10 18:53:56 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 10 18:53:56 2012 -0700"
      },
      "message": "Merge \"Refactored SurfaceMediaSource\""
    },
    {
      "commit": "bdddc659a941afdb7f4958f582c6901c07246097",
      "tree": "37423f7b734d26e086328f1f9b337e1499c026b8",
      "parents": [
        "3f502bfc6d04d08369cf147284c5c4c2ac7c9a0e"
      ],
      "author": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Fri Mar 30 16:04:43 2012 -0700"
      },
      "committer": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Mon Apr 09 22:58:28 2012 -0700"
      },
      "message": "Refactored SurfaceMediaSource\n\nSurfaceMediaSource takes advantage of BufferQueue to avoid\nduplicated code.\n\nChange-Id: I5e60b8eca21e6c3cf728d363cd8f3786125182d1\n"
    },
    {
      "commit": "4b75a9c8b93a90749bc5d22912ad0d96c12f4ecf",
      "tree": "ae217f5c50a37349dce944c5d8a065a8740c88a9",
      "parents": [
        "3f502bfc6d04d08369cf147284c5c4c2ac7c9a0e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 06 11:06:28 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 06 12:16:27 2012 -0700"
      },
      "message": "New API to support submitting encrypted buffers to the decoder.\n\nChange-Id: I69dd60e43078c4211c6123cf6e0ce90e676bf873\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "f15cb4472aaca54c13f8250e4c7872470c4bed83",
      "tree": "975cf1b8f7e6f505358836940d03069b92d1b48d",
      "parents": [
        "a4c5a550e2a3bc237179b8684e51718e05894492",
        "8f883be3bd1fffd4e30bc7298c34085a4055be2b"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 04 10:17:01 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 04 10:17:01 2012 -0700"
      },
      "message": "Merge \"frameworks/av/media portion of removing YouTube specific error codes\""
    },
    {
      "commit": "a4c5a550e2a3bc237179b8684e51718e05894492",
      "tree": "be7b6d154763ed772738a0126d10e6317920767d",
      "parents": [
        "1a9ed11a472493cac7f6dfcbfac2064526a493ed"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 29 10:12:40 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 04 08:44:57 2012 -0700"
      },
      "message": "audio policy: load audio hw modules.\n\nAudio HW modules are now loaded upon request from audio policy manager\naccording to the configuration in audio_policy.conf.\nRemoved hard coded HW module loading by AudioFlinger at init time.\nAdded methods to IAudioFlinger and AudioPolicyInterface\nto control the loading of audio HW modules.\nAdded methods to open an output or input stream on a specific hw module.\n\nChange-Id: I361b294ece1a9b56b2fb39cc64259dbb73b804f4\n"
    },
    {
      "commit": "1a9ed11a472493cac7f6dfcbfac2064526a493ed",
      "tree": "5f4a3c6856f294b3c0371afd87df96277215107b",
      "parents": [
        "290ca3a767a974ce9d041e5bcb0c69153f7851d5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 20 18:36:01 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 03 16:53:25 2012 -0700"
      },
      "message": "audio policy: add configuration file\n\nremoved outputs to stream mapping cache in audio system: the output for a\ngiven stream type must always be queried from audio policy manager as the cache\nis not always updated fast enough by audioflinger callback.\n\nremoved AudioFlinger::PlaybackThread::setStreamValid() not used anymore if\nstream to output mapping is not cached.\n\nChange-Id: Ieca720c0b292181f81247259c8a44359bc74c66b\n"
    },
    {
      "commit": "8f883be3bd1fffd4e30bc7298c34085a4055be2b",
      "tree": "bf827e7e33a3094d61978b9020e6522cb5ffd731",
      "parents": [
        "b4c0c4b800332fe55c60aa328ece8d849cee3a4d"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 03 16:11:51 2012 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 03 16:11:51 2012 -0700"
      },
      "message": "frameworks/av/media portion of removing YouTube specific error codes\n\nChange-Id: Id0d84d3aaaf340cd5287611c9dc7cb8d11466772\nrelated-to-bug: 5883949\n"
    },
    {
      "commit": "1bd139a2a68690e80398b70b27ca59550fea0e65",
      "tree": "e3be78f22aa021c4e372409128775c2093d46dae",
      "parents": [
        "d22da88fd555f1262357c7dcdeface8445e3a012"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 14:19:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 14:19:20 2012 -0700"
      },
      "message": "New Crypto services talking to the new crypto \"HAL\".\n\nChange-Id: I69ed31e7a8b4d69d1209d2d516f94d258f072566\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "4a446bd090efb36ce06ae8966d42357fd5472715",
      "tree": "36860e04f75412175c9780d1bff0d9ab8bb04e20",
      "parents": [
        "73d227557ba5192735356bacab9f77b44980793b",
        "69829f3bd09ee4e6be49fee8795c5df24c4da70e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 08:29:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 03 08:29:44 2012 -0700"
      },
      "message": "Merge \"Add a few more APIs to MediaCodecList.\""
    },
    {
      "commit": "69829f3bd09ee4e6be49fee8795c5df24c4da70e",
      "tree": "ea8e438b08c8bbd6f50bae88a0528280728f643c",
      "parents": [
        "deeb1282621f3177ad667360b40eef8e4fedb298"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 30 13:02:09 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 02 15:18:44 2012 -0700"
      },
      "message": "Add a few more APIs to MediaCodecList.\n\nChange-Id: I5ac193cd40c82bbcd87c1e55003b78102e8d4674\n"
    },
    {
      "commit": "2d6486f9112a6f0d23f17eaaad94bac62e16caab",
      "tree": "72c98b32d9865c49038dac2189dd13b410eef511",
      "parents": [
        "dca856f5cb849b8feab2d24f3248f25d887211ee",
        "edf47a8cba2d1d8985b64bf4a4fac661ba34f35a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 02 11:25:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 02 11:25:14 2012 -0700"
      },
      "message": "Merge \"Update AudioParameter\""
    },
    {
      "commit": "dca856f5cb849b8feab2d24f3248f25d887211ee",
      "tree": "7310d419fe1dd1805cfe4d07aaeeae17de938d4e",
      "parents": [
        "49a692c3a659aee0a065304d1f845ee1290687ca",
        "4a4a0959bca78e03e3c3f486ba17829c28314d8c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 02 11:19:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 02 11:19:11 2012 -0700"
      },
      "message": "Merge \"AudioTrack client fast policy\""
    },
    {
      "commit": "4110c101c3d0dd8dbc44c8d2d0edd3e2e7d6652f",
      "tree": "7bb39d31afac7348bb91093cc0e1c2d9aa49cba2",
      "parents": [
        "a1472d9883e35edd280201c8be3191695007dfd4"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Mar 29 09:31:28 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 02 09:19:03 2012 -0700"
      },
      "message": "Add gapless playback support for NuPlayer\n\nThis makes NuPlayer use a SkipCutBuffer when needed, and adds a new\nAudioSink method to retrieve the number of frames written so far, so\nNuPlayerRenderer can calculate how much data it can write without blocking.\nAlso make some more methods const.\n\nChange-Id: Id7d253ad8a7b85e9a84ca2baafbe32817b16c744\n"
    },
    {
      "commit": "4a4a0959bca78e03e3c3f486ba17829c28314d8c",
      "tree": "5fbfe5302ca28741483ae64d0ccf2630830f167e",
      "parents": [
        "a1472d9883e35edd280201c8be3191695007dfd4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 11:38:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 02 07:34:39 2012 -0700"
      },
      "message": "AudioTrack client fast policy\n\nChange-Id: I42ce691df3f586ac061b62237f35a263a0116f1f\n"
    },
    {
      "commit": "edf47a8cba2d1d8985b64bf4a4fac661ba34f35a",
      "tree": "b97857a666d64b1633ba6598db61158010de4cc8",
      "parents": [
        "a1472d9883e35edd280201c8be3191695007dfd4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Apr 01 13:49:17 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Apr 01 13:49:17 2012 -0700"
      },
      "message": "Update AudioParameter\n\nUse definitions for AUDIO_PARAMETER_STREAM_* from \u003chardware/audio.h\u003e\ninstead of repeating these constants.\n\nString constants are const char * const.\n\nChange-Id: I1c9ebe0bc9c827d719d3181aea55251c6db28ec4\n"
    },
    {
      "commit": "40a1da57d21bbc883630e7a854a279685fe1fa61",
      "tree": "6155cbbdaa553b0672f27fb298a6fc0f9ac3eb2c",
      "parents": [
        "42c56b364a0fcd93568f85b63d52a871a756184c",
        "a011e35b22f95f558d81dc9c94b68b1465c4661d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 30 16:00:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 30 16:00:16 2012 -0700"
      },
      "message": "Merge \"implemented synchronous audio capture\""
    },
    {
      "commit": "a011e35b22f95f558d81dc9c94b68b1465c4661d",
      "tree": "3f8c46c8c7e30f36c3b629174a26bc4ca2a860b2",
      "parents": [
        "b4c0c4b800332fe55c60aa328ece8d849cee3a4d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 29 15:51:43 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 29 19:50:49 2012 -0700"
      },
      "message": "implemented synchronous audio capture\n\nAdded the infrastructure to support the synchronization of playback and\ncapture actions on specific events.\nThe first requirement for this feature is to synchronize the audio capture\nstart with the full rendering of a given audio content.\nThe applications can further be extended to other use cases\n(synchronized playback start...) by adding new synchronization events and\nnew synchronous control methods on player or recorders.\n\nAlso added a method to query the audio session from a ToneGenerator.\n\nChange-Id: I51f1167290d9cafdf2fbcdf9e4785156973af44c\n"
    },
    {
      "commit": "df7e6ea0c755fb95a77d21010105e3a2eac69ff8",
      "tree": "eddde11859c63816d83f985f3480ac3ec46bcfc3",
      "parents": [
        "ecdd39c5af016e2fa57cbfd837aa670b706dabd3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 29 17:12:13 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 29 17:12:13 2012 -0700"
      },
      "message": "reduce IPCs in BufferQueue\n\nChange-Id: I1f8c32a771a411476d225adc62d1f07c24f39a3e\n"
    },
    {
      "commit": "cb5b766bb0a3ed992998a5bd66de0ee1d2223b81",
      "tree": "e4d3d93e823d0c5c691549d9966f7660de1373df",
      "parents": [
        "559bf2836f5da25b75bfb229fec0d20d540ee426"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 28 16:38:37 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Mar 29 09:28:47 2012 -0700"
      },
      "message": "Add ABuffer support to SkipCutBuffer\n\nAdd support for ABuffer to SkipCutBuffer, and make it (re)allocate an\nappropriately sized buffer when needed, rather then relying on the\ncaller to tell it ahead of time how big the buffers are going to be.\n\nChange-Id: I8b5c9ba5dd2fc13ef8870b7d4fe93a1bfdc7a626\n"
    },
    {
      "commit": "559bf2836f5da25b75bfb229fec0d20d540ee426",
      "tree": "d7dd708b17eeca96a3e5d8bcc25a51ff3d1b5d0d",
      "parents": [
        "b0b2b4d890cf3bfb274797a759642b4e733343d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 10:29:14 2012 -0700"
      },
      "committer": {
        "name": "Anatol Pomozov",
        "email": "anatol.pomozov@gmail.com",
        "time": "Wed Mar 28 12:07:41 2012 -0700"
      },
      "message": "AV Android make files changes\n\no plus a few file relocation: ActivityManager.cpp/h, SoundPool.h, etc\no remove some runtime dependencies to libandroid, libandroid_runtime, etc\n\nChange-Id: I047a47c5fb361dd5cf85cd98798c39f629a75d10\n"
    },
    {
      "commit": "15147270aa1c56503902b424f946389294875665",
      "tree": "921f7bb25e8b743485ccc62bc6ee5ddaa345fb54",
      "parents": [
        "b14f18245d64b38aae1c02db79b2ad516d69891c",
        "ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:43:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 11:43:06 2012 -0700"
      },
      "message": "Merge \"Provisional support for secure decryption of media streams.\""
    },
    {
      "commit": "ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6",
      "tree": "99d5bb3a2f48f9a3ba3eaaf17e630b589e97bef1",
      "parents": [
        "cc1110dc92e53e9cc0afbb043e6ef8295bd9c5d5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:13:27 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:24:04 2012 -0700"
      },
      "message": "Provisional support for secure decryption of media streams.\n\nChange-Id: Ib3982a9c960bfdb0cb7e1b174440b141b194cfbe\n"
    },
    {
      "commit": "131c36ef343a604e9aee10c830ebe9c55a743379",
      "tree": "67c436447533b4074c1823865550ca1885bb33e7",
      "parents": [
        "1f08900408927bd2b3bef59aaa15ab68ec765c06",
        "2e66a7896c9a9da3a15fc6cff9be28b4174d8719"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 11:23:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 11:23:49 2012 -0700"
      },
      "message": "Merge \"reorganize SoundPool and JetPlayer code.\""
    },
    {
      "commit": "2e66a7896c9a9da3a15fc6cff9be28b4174d8719",
      "tree": "bc6d8e86ae45de8f4b1a36eda9d11f774bde9bea",
      "parents": [
        "ef36d496477d1e2ae99c3cd43eee5cf7e82b0883"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 10:47:22 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 10:54:41 2012 -0700"
      },
      "message": "reorganize SoundPool and JetPlayer code.\n\nReorganize SoundPool and JetPlayer code to be ready for the\ncreation of libmedia_native.\n\nSplit SoundPool between libsoundpool (JNI) and libmedia(sound pool implementation).\nRemove dependencies on nativehelper/jni.h from JetPlayer.\n\nChange-Id: I130c6014173b714329929dd82c5dfb70b757a610\n"
    },
    {
      "commit": "cc1110dc92e53e9cc0afbb043e6ef8295bd9c5d5",
      "tree": "6f8e74838af9af9701f9e4cbabb45a827ba30ad2",
      "parents": [
        "b83d38feeeb88a8a2a6219e1fca2480b5a14fb0d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 12:07:35 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 07:25:48 2012 -0700"
      },
      "message": "Add TRACK_FAST for IAudioFlinger::createTrack\n\nCurrently not implemented by client or server\n\nChange-Id: Ib11dda57db3eeb871bcc7b546e340078776875f5\n"
    },
    {
      "commit": "b83d38feeeb88a8a2a6219e1fca2480b5a14fb0d",
      "tree": "7e1392f0427d0300d8140ef0a6c18dc32f393831",
      "parents": [
        "8f7f7ad54c698cb57a2a369cf1ae5b917853917b",
        "a075db4ff9b086ac2885df77bb6da0869293df92"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 07:16:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 07:16:37 2012 -0700"
      },
      "message": "Merge \"IAudioFlinger::createTrack and openRecord flags\""
    },
    {
      "commit": "8f7f7ad54c698cb57a2a369cf1ae5b917853917b",
      "tree": "50bad78e439f16ab5502bf6ee1ee53d6c5b18534",
      "parents": [
        "f500abaa4a1456dfb0a269b9ca97d8e27562c09c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Mar 24 15:15:01 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Mar 24 15:35:17 2012 -0700"
      },
      "message": "remove jni.h include from IOMX.h\n\njni.h is not used in IOMX.h and is not available in pdk builds,\nremove it.\n\nChange-Id: I9bc8fd70f617942712d9f684c6fc927bf18be753\n"
    },
    {
      "commit": "be9b24b86d2c84f2dc45bb8c8d1578b55cbd151d",
      "tree": "06bf4f1d019a2a4a3972e2ef7df64fb4d053318e",
      "parents": [
        "ef36d496477d1e2ae99c3cd43eee5cf7e82b0883"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Mar 23 16:15:19 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Mar 24 10:15:18 2012 -0700"
      },
      "message": "Fixed missing return value from a method should have returned status_t\n\nChange-Id: I83ad2735eaf8a8dfa5f8f29f30aec1311b3222de\n"
    },
    {
      "commit": "a411f779465504ff3e1a59c8ffa43d18385852b8",
      "tree": "a152f05bd2b5dd70ee5bfaa261fcbdeb5ee6d8ac",
      "parents": [
        "a98478bfbcc0f7fb4b164d3dce40ca96df75667d",
        "291f4d505aff81969e6666049d3cc3446f836af2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 22 11:06:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 22 11:06:49 2012 -0700"
      },
      "message": "Merge \"Remove enforceFrameCount\""
    },
    {
      "commit": "a98478bfbcc0f7fb4b164d3dce40ca96df75667d",
      "tree": "44a6ad7c4a9fb330ebdf560a2d8f446b43278498",
      "parents": [
        "898b11f2aeaaa2bed84d963a3fcfd3b229e00b99"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 13:36:07 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Mar 22 10:06:03 2012 -0700"
      },
      "message": "Support gapless playback for mp3 and m4a\n\nGapless playback for appropriately tagged mp3 and m4a files.\nCurrently this is implemented in OMXCodec, which most players\nuse, but should be easy to support in other players as well by\nusing the SkipCutBuffer utility class.\n\nChange-Id: I748c669adc1cfbe5ee9a7dea2fad945d48882551\n"
    },
    {
      "commit": "291f4d505aff81969e6666049d3cc3446f836af2",
      "tree": "f2ad96c1acfb08c190148f8f12a7f86825cd7728",
      "parents": [
        "ccf89b54f973f11082150d02ed957f7e967fbc8b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 12:16:56 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 15:41:02 2012 -0700"
      },
      "message": "Remove enforceFrameCount\n\nIt was only used to decide whether to issue a warning.\nThe warning was issued the first time track was created but\nnot at re-creation.  Now it is a verbose message every time,\nnot a warning since it happens all the time with key clicks on A2DP.\n\nChange-Id: I9d39f53c0a7eb84b666e55b1b76ff830cf8f37ba\n"
    },
    {
      "commit": "2f694b3ef6af235e7ba850d57538eece9f136499",
      "tree": "2430918606f606e50b15b83b019480238ab5c762",
      "parents": [
        "4949c36978b844f65abf84027e1cf2dcf82c1184",
        "feba11fd788c99b0b63e0bce724730817688d82f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 15:12:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 15:12:44 2012 -0700"
      },
      "message": "Merge \"Add MetaData::dumpToLog\""
    },
    {
      "commit": "feba11fd788c99b0b63e0bce724730817688d82f",
      "tree": "60cdb535b8e065dca3bac358c300f5e973aa7066",
      "parents": [
        "f6e7ad1543ce19f05600d9414360c74c83e467bb"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 12:27:00 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 15:00:27 2012 -0700"
      },
      "message": "Add MetaData::dumpToLog\n\nUtility method for dumping the content of a MetaData object to the log.\n\nChange-Id: I2d91b991e1d9fed2215e8995a73c2b1854205074\n"
    },
    {
      "commit": "7153494670bdac8b650cb10b8b1838651e0ca418",
      "tree": "94c6c21f7100bdb9aefc82bb0c6d77482742a455",
      "parents": [
        "a26ff6f22f4e86d09514c2819237bd9748455018",
        "ea7939a079b3600cab955760839b021326f8cfc3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 07:22:40 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 07:22:40 2012 -0700"
      },
      "message": "Merge \"Whitespace\""
    },
    {
      "commit": "6da08fc33642b832d1cde2e46815a5fd67dd0016",
      "tree": "71497d4c025e37113e7844566bfb06ece7c0d8fe",
      "parents": [
        "fa6494d086e697543efa3d16440647e14ea09f30",
        "b636abde14f2612ea236257846b9ab15d87d4623"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 20 09:15:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 20 09:15:05 2012 -0700"
      },
      "message": "Merge \"Parse mp3 encoder padding/delay\""
    },
    {
      "commit": "b636abde14f2612ea236257846b9ab15d87d4623",
      "tree": "2aa58e136a7d4cf3f00ebdbcdffc49f0ddef35ca",
      "parents": [
        "9e50385f34676d8fcb3b473ec4c9f5c388a4c887"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Mar 19 13:49:43 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 20 08:46:11 2012 -0700"
      },
      "message": "Parse mp3 encoder padding/delay\n\nGet the mp3 encoder padding and delay from a XING frame or iTunSMPB tag.\n\nChange-Id: Icde598c8857d7e7c187a718f478ee9799d6a1b8a\n"
    },
    {
      "commit": "ea7939a079b3600cab955760839b021326f8cfc3",
      "tree": "570fb56838735a46a28e28a4f083d763f758ea24",
      "parents": [
        "eb76ff27c13386eb5a2dad73b1a8366f80eb0ff7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 12:56:26 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 17:53:33 2012 -0700"
      },
      "message": "Whitespace\n\nFix indentation, and add blank lines in key places for clarity\n\nChange-Id: I57a0a8142394f83203161aa9b8aa9276abf3ed7c\n"
    },
    {
      "commit": "a075db4ff9b086ac2885df77bb6da0869293df92",
      "tree": "2496dbf3d7fbb569b843780535bcea450157eb25",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 06 11:22:44 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 09:04:23 2012 -0700"
      },
      "message": "IAudioFlinger::createTrack and openRecord flags\n\ncreateTrack and openRecord don\u0027t need the \"old\" flags parameter,\nwhich was either audio_policy_output_t or audio_in_acoustics_t\nshifted left by 16 bits.  But they do need \"new\" flags, which\nare defined by the application use case.  Initially, the only\napplication use case flag is timed output, but others are planned.\n\nFor output, the audio_policy_output_t flags are passed to\nAudioSystem::getOutput, which returns an audio_io_handle_t, and that\nhandle is then passed to createTrack. So createTrack doesn\u0027t need the\nold flags parameter.\n\nFor input, the audio_in_acoustics_t flags are passed to\nAudioSystem::getInput, which returns an audio_io_handle_t, and that\nhandle is then passed to openRecord. So openRecord doesn\u0027t need the\nold flags parameter.\n\nChange-Id: I18a9870911846cca69d420c19fe6a9face2fe8c4\n"
    },
    {
      "commit": "f9d660a5e0196240add5daf0199f128d471e592c",
      "tree": "f67d9d6c7d7e22e8cedefaae1bf0e7a4872deda5",
      "parents": [
        "dfaf549e3e310bc22444f4404b19f4907b24c286"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Thu Feb 16 20:28:27 2012 +0900"
      },
      "committer": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Thu Mar 15 08:36:52 2012 +0900"
      },
      "message": "Defines MediaPlayer APIs to support multiple audio/video/timedtext\ntracks.\n\no Newly introduced APIs are (MediaPlayer):\n  getTrackInfo() / addExternalSource() / enableTrack() / disableTrack().\n\no Timed text tracks are supported only, for now.\n\no TODOs:\n - Define the audio/video behavior for enableTrack and disableTrack.\n - Refactoring AwesomePlayer / TimedTextDriver so that all types of\n   track index can be managed in the correct order and be ready for\n   supporting audio/video tracks.\n   (MediaExtractor and MediaSource for text file might be necessary.)\n\nChange-Id: Idb85e1b3f2ed49a64f377d05472dd6663ce94e07\n"
    },
    {
      "commit": "d191213ab0146526541913f3fed2d5aa95f58899",
      "tree": "a016c5591605a25a4ca1e43f3c439592f8c02789",
      "parents": [
        "27e52c70cf02ee5f7f6b49df80674c5fbf8a7a2e",
        "b4d307481960b6b348fae4b4e8edefd003c3d36c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 13:54:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 14 13:54:21 2012 -0700"
      },
      "message": "Merge \"Use correct syntax for #include \u003c\u003e \"\"\""
    },
    {
      "commit": "b4d307481960b6b348fae4b4e8edefd003c3d36c",
      "tree": "d357f30c9cf6541cbe3de6de7cc71a860f66c80b",
      "parents": [
        "f67fdc6d8bb31226ffeeecbff6aca610befd0110"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 14:46:23 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 16:14:19 2012 -0700"
      },
      "message": "Use correct syntax for #include \u003c\u003e \"\"\n\nChange-Id: I943137108668ae66f8eba18dafe069a7951bcd8f\n"
    },
    {
      "commit": "36a4d2cc7a44eb42d0d9ef5fe50b6747a7a34cab",
      "tree": "eec0f805e2e83ed1d720519748527c03affafc29",
      "parents": [
        "5e7616cc0e5493241211333134555d74aec89982",
        "6b74d671a1321a6ecc4a40b6c87beedfecc1ec44"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 13 13:23:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 13:23:07 2012 -0700"
      },
      "message": "Merge \"Gapless playback, step 1.\""
    },
    {
      "commit": "6b74d671a1321a6ecc4a40b6c87beedfecc1ec44",
      "tree": "44092c52e8439f1991f23601287d424db916c814",
      "parents": [
        "887c5d2ac34d81bde66dadbd7b2ff07501744778"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 28 16:07:44 2012 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 13 13:13:14 2012 -0700"
      },
      "message": "Gapless playback, step 1.\n\nCurrently able to play Ogg Vorbis, PCM WAV and other lossless files seamlessly\nby reusing the initial AudioTrack for subsequent players.\n\nChange-Id: Ie7cf6b9076bdf4f9211574456d192c02c04fecc7\n"
    },
    {
      "commit": "5e7616cc0e5493241211333134555d74aec89982",
      "tree": "e2a972018a13cbf8c2ad6c3d7592dbbb73fec3a8",
      "parents": [
        "e53b9ead781c36e96d6b6f012ddffc93a3d80f0d",
        "6c6b4d0d2b98a7ceee8b697daaf611f8df3254fb"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Mar 13 12:44:54 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 12:44:54 2012 -0700"
      },
      "message": "Merge \"Switched to use the header files in /frameworks/native and deleted the duplicate header files in /frameworks/base\""
    },
    {
      "commit": "e53b9ead781c36e96d6b6f012ddffc93a3d80f0d",
      "tree": "4bcde0bc9a797851ec1bee4f630c8c4f0735f623",
      "parents": [
        "b87396f9ebabbb7b47683bceca96cbe635a1ca00"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 12 16:29:55 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 11:09:47 2012 -0700"
      },
      "message": "Whitespace and indentation\n\nFix indentation to be multiple of 4.\nMake it easier to search:\n  sp\u003c not sp \u003c to\n  \"switch (...)\" instead of \"switch(...)\" (also \"if\" and \"while\")\nRemove redundant blank line at start or EOF.\nRemove whitespace at end of line.\nRemove extra blank lines where they don\u0027t add value.\n\nUse git diff -b or -w to verify.\n\nChange-Id: I966b7ba852faa5474be6907fb212f5e267c2874e\n"
    },
    {
      "commit": "6c6b4d0d2b98a7ceee8b697daaf611f8df3254fb",
      "tree": "307356be51d237ee22f88affdc3376270d571be9",
      "parents": [
        "aa4397f07c43bd83bc3100b749401dc3d15e7622"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 12 14:37:53 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 12 21:28:57 2012 -0700"
      },
      "message": "Switched to use the header files in /frameworks/native\nand deleted the duplicate header files in /frameworks/base\n\no related-to-bug: 6044887\n\nChange-Id: I17e0692d9a9b5c8796ded36677c833ca8ab36795\n"
    },
    {
      "commit": "2d6ef93773465cd3e66146fac35050a472c589f7",
      "tree": "2a4a9d42d5911e3f04712560014671ab742465ca",
      "parents": [
        "0643d428cebcfe885ec2777253d45ee6e05da6fe",
        "688aac7675f18bdd7bff13334759e20bc4e6c390"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 12 15:05:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 12 15:05:21 2012 -0700"
      },
      "message": "Merge \"Remove virtual from methods that don\u0027t need it\""
    },
    {
      "commit": "18868c5db2f90309c6d11e5837822135e4a0c0fa",
      "tree": "58c7505f59a1a93ab729fc039aa5cb1eaa49652e",
      "parents": [
        "f2015b625cd6bea86da7401e725332c35b90e7cf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 07 09:15:37 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 15:32:22 2012 -0800"
      },
      "message": "Use audio_policy_output_flags_t consistently\n\nThis affects:\n - IAudioFlinger::openOutput\n - AudioTrack::AudioTrack\n - AudioTrack::set\n - apps that call these\n\nChange-Id: I26fb281bac6cb87593d17697bc9cb37a835af205\n"
    },
    {
      "commit": "f2015b625cd6bea86da7401e725332c35b90e7cf",
      "tree": "3ec55cd1f89c6c1ae8ea4614e32c654df9c72869",
      "parents": [
        "5e9ce08417c36aa572c3f18b40ff9335d409b1e9",
        "679ab0b0792846a89162ce41c953819d70030112"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 15:23:45 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 15:23:45 2012 -0800"
      },
      "message": "Merge \"Use AudioRecord::record_flags consistently\""
    },
    {
      "commit": "688aac7675f18bdd7bff13334759e20bc4e6c390",
      "tree": "1c210a88c1cff71f1117b54fc347802ee7bdc390",
      "parents": [
        "083c154162c88a9f63aeaa10a4b52dd454bda9ff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 10:30:26 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 12:48:18 2012 -0800"
      },
      "message": "Remove virtual from methods that don\u0027t need it\n\nChange-Id: I30e17e61aae25b036436c0e270313c80c43e5f06\n"
    },
    {
      "commit": "679ab0b0792846a89162ce41c953819d70030112",
      "tree": "ecd714f568d940051e492b313f3af5bd5d9b4193",
      "parents": [
        "f3c2e3bd65449b413c378219e08c71bf744cfbf3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 07 09:04:02 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 08 18:11:55 2012 -0800"
      },
      "message": "Use AudioRecord::record_flags consistently\n\nChange-Id: I6f369a2b99eb515603bc7d5629a07db2b96783fe\n"
    },
    {
      "commit": "a19ffb656616feec70613ba67ddfe15a504a4e76",
      "tree": "4fdde29e9a31aa2ea250b4d2cf2b26bc556d3432",
      "parents": [
        "5e5631bbf2403b8242e77977792318d65362ed91",
        "6374252107fd6539397598195ea6defd5870fafb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 08 17:45:44 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 08 17:45:44 2012 -0800"
      },
      "message": "Merge \"audio policy: use audio_devices_t when appropriate\""
    },
    {
      "commit": "6374252107fd6539397598195ea6defd5870fafb",
      "tree": "ab13f5d0fd4aeaee695d58d7f8f4723d923754ae",
      "parents": [
        "f2eda12fb968829ee6f67e9b45e01eb4e2105c09"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 08 13:42:42 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 08 15:57:09 2012 -0800"
      },
      "message": "audio policy: use audio_devices_t when appropriate\n\nChange-Id: I1b3a5879e81c789fb53d356af3d3a1ee2dca955f\n"
    },
    {
      "commit": "b81cc8c6f3eec9edb255ea99b6a6f243585b1e38",
      "tree": "a3cad338817394b18b441bbb3f31853bfd9ed4f5",
      "parents": [
        "f8edf68a1e39da273eafe8c85bdbedc26636c4ec"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 01 09:14:51 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 06 16:43:19 2012 -0800"
      },
      "message": "IAudioFlingerClient::ioConfigChanged param2 const\n\nThe 3rd parameter (param2) to AudioFlingerClient::ioConfigChanged\nis used as an input.  So changed it from void * to const void *.\nIt is then cast to const OutputDescriptor *\nor const audio_stream_type_t * depending on the event.\n\nChange-Id: Ieec0d284f139b74b3389b5ef69c7935a8e5650ee\n"
    },
    {
      "commit": "22f9dd98d9c4c3e0e58586cf6a6008ca6ee946e5",
      "tree": "fab85d9d97dadde1495cab326bae501b06fe6293",
      "parents": [
        "56617834920554fc68a818da17b56e0c2ad8f254",
        "d8d6185c978c9b27ca69e7791785e0983ed9e8b8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 06 10:52:18 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 10:52:18 2012 -0800"
      },
      "message": "Merge \"AudioTrack: relax check on minimum buffer size\""
    },
    {
      "commit": "56617834920554fc68a818da17b56e0c2ad8f254",
      "tree": "323318e555d12b54d11fa6c776cbad548b663cc3",
      "parents": [
        "70a1577d42c6e222c98f0245e7b81b0e8bc238f7",
        "054a5a69374efae97924c83c2ee7ec7210bf3283"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Mar 06 10:23:58 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 10:23:58 2012 -0800"
      },
      "message": "Merge \"Remove unused code - MediaSourceSplitter\""
    },
    {
      "commit": "054a5a69374efae97924c83c2ee7ec7210bf3283",
      "tree": "ccd1e4c1571bf8e00367601743780c15510f4f77",
      "parents": [
        "985ed9a1a22ec7e6e245d3fb8e93d3a23bdc539b"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 05 19:28:02 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 05 19:30:08 2012 -0800"
      },
      "message": "Remove unused code - MediaSourceSplitter\n\nChange-Id: Icf37832a1c234501ee3ff91ff13eece2242425ae\n"
    },
    {
      "commit": "d8d6185c978c9b27ca69e7791785e0983ed9e8b8",
      "tree": "cda49b71e787cf1bcf68671e237389f70706cff3",
      "parents": [
        "985ed9a1a22ec7e6e245d3fb8e93d3a23bdc539b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 05 17:06:40 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 05 17:18:36 2012 -0800"
      },
      "message": "AudioTrack: relax check on minimum buffer size\n\nCurrent AudioTrack implementation enforces that the requested audio\nbuffer size is at least corresponding the audio latency.\nThis requirement is too strong and leads to problems with current\nstagefright and AudioSink implementations when playing over output\nstreams with long latency.\n\nUltimately, the AudioSink design should be changed to specify a minimum\nbuffer size in time or frames units but not in buffer count units.\n\nChange-Id: I8ba603956f92ac49143a8249572665aa548f2f0f\n"
    },
    {
      "commit": "eb7de4504bdb3a0182021ca6f022cccca01dbf1e",
      "tree": "5fbdeee952d005de5d8aef0bebea9ca3f3f557f3",
      "parents": [
        "cdfc4fcd2a1fd8436700c1197a9ff098ac1f625e",
        "786618ffe881aceb64d65a6a2e2d76ede6e01ec0"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Mar 05 14:51:54 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 05 14:51:54 2012 -0800"
      },
      "message": "Merge \"Add channel mask in AudioSink\""
    },
    {
      "commit": "786618ffe881aceb64d65a6a2e2d76ede6e01ec0",
      "tree": "3e88f6c457f47529026207badf835dfa448ec8b8",
      "parents": [
        "e7c795f3300814aa3f26ceb845f29695383c7edc"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 02 14:54:07 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 02 17:26:49 2012 -0800"
      },
      "message": "Add channel mask in AudioSink\n\nAdd support for specifying a channel mask when opening an AudioSink.\n  This parameter does not replace the channel count parameter in order\n  to not have to duplicate the logic to derive a mask from the\n  channel count everywhere an AudioSink is used without a known mask.\n\nA mask of 0 (CHANNEL_MASK_USE_CHANNEL_ORDER) means a mask will\n  be automatically derived from the number of channels.\n\nUpdate existing AudioSink implementations to use the channel mask,\n  and users of AudioSink to specify the mask if available, and\n  CHANNEL_MASK_USE_CHANNEL_ORDER otherwise.\n\nChange-Id: Ifa9bd259874816dbc25ead2b03ea52e873cff474\n"
    },
    {
      "commit": "985ed9a1a22ec7e6e245d3fb8e93d3a23bdc539b",
      "tree": "7dbfd88fc5703819e53002c7ce8a4cc6634dbc01",
      "parents": [
        "e7c795f3300814aa3f26ceb845f29695383c7edc",
        "417c27304c67057779693007a7bc08e4dd80c262"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 02 13:48:35 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 13:48:35 2012 -0800"
      },
      "message": "Merge \"Fix typos and line length in AudioRecord comments\""
    },
    {
      "commit": "c795b64060c3af9d7961fc1371e4ccfa8ee3e450",
      "tree": "aafa8ecde306b5420e96b7a6e0965d1f1f4c4fa6",
      "parents": [
        "4b77dc28097288cb062fce6bf5de0fb3394877a9"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Feb 22 15:38:35 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Mar 01 14:41:35 2012 -0800"
      },
      "message": "Switch the way we configure for MediaPlayer retransmission.\n\nThis is a cherry-pick of I6ab07d89b2eeb0650e634b8c3b7a0b36aba4e7dd\nwith merge conflicts addressed by hand and additional changes made in\nresponse to code review feedback.\n\nMove in the direction of a more publishable API for configuring a\nmedia player for retransmission.  It used to be that we used a custom\ninvoke and a modified URL (prefixed with aahTX://).  There are many\nissues with this technique and it was never meant to stand the test of\ntime.\n\nThis CL gets rid of all that.  A new (but currently hidden) method was\nintroduced to the java level MediaPlayer API, called\nsetRetransmitTarget(InetSocketAddress), which allows an app writer to\nset the retransmit target.  For now, this method needs to be called\nbefore a call to setDataSource (which is pretty unusual for the\nMediaPlayer API) because this mid level code uses this as a cue to\ninstantiate an aahTX player instead of relying on the data source to\nselect a player.  When retranmit functionality becomes part of the\nexisting android player implemenation, this\nset-retrans-before-set-data-source behavior can go away, along with\nthe aahTX player itself.\n\nChange-Id: I3b46c5227bbf69acb2f3cc4f93cfccad9777be98\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "f08d7d0ee19c225d5b67fb49046290adfd9ab4bc",
      "tree": "e4e9dde9142e435062a76f1fa53025dc0b274b2a",
      "parents": [
        "5c28615c285ec720b0777fa21139e07e48f9f621",
        "afc16d667afa23f5aa00154ccad62f8c45cf5419"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Mar 01 12:41:10 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 12:41:10 2012 -0800"
      },
      "message": "Merge \"Instead of hardcoding OMX component names in our code, support\""
    },
    {
      "commit": "afc16d667afa23f5aa00154ccad62f8c45cf5419",
      "tree": "e7a7573397177303112c1809f0087b25c8a30397",
      "parents": [
        "df94a547d8036619d15975873a1ff5736b0f14fe"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 29 15:47:17 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Mar 01 11:30:10 2012 -0800"
      },
      "message": "Instead of hardcoding OMX component names in our code, support\n\na config file instead.\n\nChange-Id: I5835903ab9f1c4a22ccc605ca99ed966767adf57\n"
    },
    {
      "commit": "3030fcefcfcfc48789612659206b957cd0489a54",
      "tree": "2e359e135c7eb575cec715b0cfe1f4b6a51bb3b4",
      "parents": [
        "e8286332f3817a8b7cc4cfd8f6450a3913533660"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 01 09:38:00 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 01 09:43:32 2012 -0800"
      },
      "message": "renamed audio policy output flag.\n\nRenamed AUDIO_POLICY_OUTPUT_FLAG_INDIRECT to AUDIO_POLICY_OUTPUT_FLAG_NONE\nwhich is more appropriate.\n\nChange-Id: Ia14d60397df0f2dcd9bea0186400a09da35bc104\n"
    },
    {
      "commit": "ec539ae64d8a3eadf9115ec7ebe31e4e47788a2e",
      "tree": "4875df8b78a6291ddc002b70c05f170cfac58436",
      "parents": [
        "bc4b08ba67a0245e092aee8f08ba30ef22d421bf",
        "606ee61616efdba4696ae591ad10a4be33d8c946"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 29 14:45:25 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 29 14:45:25 2012 -0800"
      },
      "message": "Merge \"AudioRecord const methods\""
    },
    {
      "commit": "5687da3359c7939dbd982de9fa2e5f19e41ae411",
      "tree": "d576294f7567041ffca6ed4443a0cb3132f55ac0",
      "parents": [
        "41acadea86b763f4cc6f7aeb292f943d4570ac90",
        "c95c2ddcdfc974f42408a377fbe2de51b94a8c94"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 29 09:20:24 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 29 09:20:25 2012 -0800"
      },
      "message": "Merge \"Separate the notion of \"stop\" from that of \"release\", i.e.\""
    }
  ],
  "next": "c95c2ddcdfc974f42408a377fbe2de51b94a8c94"
}
