)]}'
{
  "log": [
    {
      "commit": "0319aaecb03aa83924ab4e3d9c9bc657c2e8bc06",
      "tree": "7c3ae3eecc16c50c794aff141a89b14942117364",
      "parents": [
        "0895d83cb62d269468e64a00e9e89fa7697f2f84",
        "01cff464978aa0f749f42650180b45ea56cb17de"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:52:09 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 29 17:52:09 2010 -0700"
      },
      "message": "am 4506c62a: fix inaccurate copyrights\n\nMerge commit \u00274506c62abd5767d6d42a97e8e87793a1b3bcb625\u0027 into gingerbread-plus-aosp\n\n* commit \u00274506c62abd5767d6d42a97e8e87793a1b3bcb625\u0027:\n  fix inaccurate copyrights\n"
    },
    {
      "commit": "01cff464978aa0f749f42650180b45ea56cb17de",
      "tree": "a31c8e61281d0bbcbec93d0ab05368f73ab85994",
      "parents": [
        "ccaa41429d2afc47f0fb828a0146a1b1936188fe"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "message": "fix inaccurate copyrights\n\nChange-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd\n"
    },
    {
      "commit": "1b58c743e6748272e98cd04d3c0f63e371a44329",
      "tree": "a5e8e6c7832300ea64389fa66a251f6ef39a1bcf",
      "parents": [
        "ff4a7fa411401910e6e5ac88aeb6e0080a8cc8b1",
        "be1ad8d186d0db6e0a3c8885c95a354cbbfc52af"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 28 16:30:56 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 28 16:30:56 2010 -0700"
      },
      "message": "Merge \"fix [2873058] Surface::dequeueBuffer blocks on last buffer, i.e. cannot dequeue all allocated buffers at once.\" into gingerbread"
    },
    {
      "commit": "25f4395b932fa9859a6e91ba77c5d20d009da64a",
      "tree": "01098a211d6c782708b840c28ebd396a6eb72a7b",
      "parents": [
        "23e1de74359f4bb1763aef0adfebe073122b032c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 05:40:18 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 05:49:21 2010 -0700"
      },
      "message": "Audio effects: modified command() parameter types.\n\nThe type of the cmd, cmdSize and *pReplySize parameters of the effect control interface command()\nfunction have been modified from int to uint32_t. This is more consistent with their role.\n\nChange-Id: I84d289fc262d6753747910f06f485597dfee6591\n"
    },
    {
      "commit": "be1ad8d186d0db6e0a3c8885c95a354cbbfc52af",
      "tree": "e1f9f9723f7c2d3027efb665482a4530f383adcf",
      "parents": [
        "163fbcf84010b98e0374110454d85b804bc8d13b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 27 20:11:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 27 20:11:35 2010 -0700"
      },
      "message": "fix [2873058] Surface::dequeueBuffer blocks on last buffer, i.e. cannot dequeue all allocated buffers at once.\n\nthis situation happened when the last buffer needed to be resized\n(or allocated, the first time). the assumption was that the buffer\nwas in use by SF itself as the current buffer (obviously, this\nassumption made no sense when the buffer had never been allocated, btw).\n\nthe system would wait until some other buffer became the \"front\" buffer.\n\nwe fix this problem by entirely removing the requirement that the\nbuffer being resized cannot be the front buffer. instead, we just\nallocate a new buffer and replace the front buffer by the new one.\n\nthe downside is that this uses more memory (an extra buffer) for a\nbrief amount of time while the old buffer is being reallocated and\nbefore it has actually been replaced.\n\nChange-Id: I022e4621209474ceb1c671b23deb4188eaaa7285\n"
    },
    {
      "commit": "23e1de74359f4bb1763aef0adfebe073122b032c",
      "tree": "f7c8a84104ae81d565a867208d606fd3887d47fe",
      "parents": [
        "8b4179f44917ec4845ade406a49a713cd568fe8a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 23 00:19:11 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 27 00:41:31 2010 -0700"
      },
      "message": "Audio Effects: added methods to effects java classes to store and load current effect settings in\na single call.\n\nAddional changes:\n- Fixed simulator build\n- Use effect interface UUIDs from OpenSL ES includes when available\n- Added cleanspec rules to remove now obsolete test effect libraries\n- Fixed bug in AudioEffect JNI setParameter function.\n\nChange-Id: Ic25ddb135e2cec5a68c181d727321f5ac7a1ab6b\n"
    },
    {
      "commit": "542db5d438988360d491a5add1040a2df9aa90c9",
      "tree": "2780e2456a9b540e245fa3e3c8e62d60c284b8dc",
      "parents": [
        "348a8eab84f4bba76c04ca83b2f5418467aa1a48"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 21 14:51:35 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 22 14:51:53 2010 -0700"
      },
      "message": "Allows the authoring engine to skip frame.\n\nThis is 1st part of the work to allow audio and video resync if\nwe found out that audio and video are out of sync during authoring\n\n- also fixed a problem in AACEncoder::read() where the buffer acquired\n  from the buffer group does not release when error out at\n  reading from source.\n\nChange-Id: I8a2740097fcfdf85e6178869afeb9f3687a99118\n"
    },
    {
      "commit": "348a8eab84f4bba76c04ca83b2f5418467aa1a48",
      "tree": "b75461fcab7782b8029426e9976b8d805a3b1fd3",
      "parents": [
        "66d6f1fcd9cb80a603b833e93779eb0dfb5e67ee"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 22 09:20:13 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 22 09:21:05 2010 -0700"
      },
      "message": "Various changes to improve rtsp networking, reduce packet loss and adapt to ALooper API changes.\n\nChange-Id: I110e19d5ce33e597add3ffbd3e3ff3815862396d\n"
    },
    {
      "commit": "ef3f986ebeee48af0e8cbfa651260974bbd1ed4d",
      "tree": "fd724e069bae865cd2f21eb877772f71586084f3",
      "parents": [
        "2beeb50b1bba9e92f6cacfeca37fe9fa9d36ead1",
        "abd1f4f870925d6776dbe4b930b759a1ab6595ca"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 21 10:36:08 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 21 10:36:08 2010 -0700"
      },
      "message": "Merge \"Support finer seek control on MediaSources.\" into gingerbread"
    },
    {
      "commit": "abd1f4f870925d6776dbe4b930b759a1ab6595ca",
      "tree": "1b86ec19a16a2a340afecfd6207b1fd8236228b9",
      "parents": [
        "3108231d90e8aa324923fd8864ca2477948c5d25"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 20 15:04:28 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 21 08:51:29 2010 -0700"
      },
      "message": "Support finer seek control on MediaSources.\n\nrelated-to-bug: 2858448\n\nChange-Id: Ifb4b13b990fd5889113e47e2c62249ac43391fa1\n"
    },
    {
      "commit": "2beeb50b1bba9e92f6cacfeca37fe9fa9d36ead1",
      "tree": "ce966d62f6fbb94178763ec53760f6961ffffd58",
      "parents": [
        "3108231d90e8aa324923fd8864ca2477948c5d25"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 16 07:43:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 21 06:28:01 2010 -0700"
      },
      "message": "Added support for auxiliary audio effects to AudioTrack and MediaPlayer.\n\nAdded methods to AudioTrack and MediaPlayer java classes to enable use of\nauxiliary audio effects. The effect can be attached and detached by specifying its\nID and the send level controlled.\n\nChange-Id: Ie74ff54a453096a742688476f612ce355543b6f3\n"
    },
    {
      "commit": "3108231d90e8aa324923fd8864ca2477948c5d25",
      "tree": "30ceda3e1126c4d57284fd1f866d78935ebade6f",
      "parents": [
        "24ecd378305a3bf6fde74c8773bca09d0fd06c58",
        "faed5cd124a54b8db3429f4c26b3220bbec4c8bb"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 20 14:29:39 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 20 14:29:39 2010 -0700"
      },
      "message": "Merge \"Progress status notification\" into gingerbread"
    },
    {
      "commit": "24ecd378305a3bf6fde74c8773bca09d0fd06c58",
      "tree": "33785e7ef2a38a0c6b1818b717c03f932aaeadf3",
      "parents": [
        "3c3ddfa39635a2d39f4ee7c966fb9403fe1ec9d8",
        "de070137f11d346fba77605bd76a44c040a618fc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 11:25:35 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 20 11:25:35 2010 -0700"
      },
      "message": "Merge \"Audio policy manager changes for audio effects\" into gingerbread"
    },
    {
      "commit": "de070137f11d346fba77605bd76a44c040a618fc",
      "tree": "ba741240b391a66899514061ccda38254e539013",
      "parents": [
        "f997cabca292d70d078ae828e21c28e6df62995f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 04:45:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 10:31:57 2010 -0700"
      },
      "message": "Audio policy manager changes for audio effects\n\nAdded methods for audio effects management by audio policy manager.\n- control of total CPU load and memory used by effect engines\n- selection of output stream for global effects\n- added audio session id in parameter list for startOutput() and stopOutput().\nthis is not used in default audio policy manager implementation.\n\nModifications of audio effect framework in AudioFlinger to allow moving and reconfiguring\neffect engines from one output mixer thread to another when audio tracks in the same session\nare moved or when requested by audio policy manager.\nAlso fixed mutex deadlock problem with effect chains locks.\n\nChange-Id: Ida43484b06e9b890d6b9e53c13958d042720ebdb\n"
    },
    {
      "commit": "3c3ddfa39635a2d39f4ee7c966fb9403fe1ec9d8",
      "tree": "6003c16314885bf515785ba2648334434bff2762",
      "parents": [
        "95c2580db188dee19cab05d29351c7ca5973cf3b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 20 09:21:17 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 20 09:25:38 2010 -0700"
      },
      "message": "Support a single format change at the beginning of audio playback. This way the AAC+ decoder may change its output format from what is originally encoded in the audio stream and we\u0027ll still play it back correctly.\n\nChange-Id: Icc790122744745e9a88099788d4818ca1e265a82\nrelated-to-bug: 2826841\n"
    },
    {
      "commit": "faed5cd124a54b8db3429f4c26b3220bbec4c8bb",
      "tree": "f0d4576711cdcc0af89e9f509d5a94eae995bdeb",
      "parents": [
        "59f566c4ec3dfc097ad8163523e522280b27e5c3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 15 19:08:20 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 20 08:39:57 2010 -0700"
      },
      "message": "Progress status notification\n\n- Keep track of per-track progress\n\nChange-Id: Ibd36f0e8c78581928c8aa2f5e23c5e7e0615c2cc\n"
    },
    {
      "commit": "ada2ac8e09b6d3f2b3c3155a852ba0fffae1b592",
      "tree": "de59f8968f64985ba7a37aeb0305daa85ee0bc03",
      "parents": [
        "59f566c4ec3dfc097ad8163523e522280b27e5c3",
        "cab112421da6e8eac19ffddbbe3d76067cffee78"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 16 00:08:50 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 16 00:08:50 2010 -0700"
      },
      "message": "Merge \"Several improvements in audio effects volume control.\" into gingerbread"
    },
    {
      "commit": "cab112421da6e8eac19ffddbbe3d76067cffee78",
      "tree": "c2e8bb3057c5de25454eae1286ff0868933680aa",
      "parents": [
        "5462fc9a38fa8c9dff434cd53fa5fb1782ae3042"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 15 12:50:15 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 15 12:50:15 2010 -0700"
      },
      "message": "Several improvements in audio effects volume control.\n\n- Fixed crash when deleting an effect chained before an effect having volume control\n- Changed EFFECT_FLAG_VOLUME_CTRL to implicitely include EFFECT_FLAG_VOLUME_IND\n(not need to set both in effect descriptor).\n- Volume control changes from one effect to another if needed according to effect enable state\n- EFFECT_CMD_SET_VOLUME is only sent when their is an actual change in volume\n\nChange-Id: Ieebaf09157e2627366023569d95516646e03e26c\n"
    },
    {
      "commit": "8f5f2fcee5c12d08df71d17017410c50951fc2e3",
      "tree": "4cfeb1085495bacbc93775b43e0022fed69ca993",
      "parents": [
        "98fe12aba55e8b8bb14b23c4c3cdba9a99a9753c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 02 11:39:06 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 14 17:29:17 2010 -0700"
      },
      "message": "Support user-supplied timescales for authoring\n\n- also, change all the real time unit to microseconds in MPEG4Writer\n\nChange-Id: I260f512f2eb670ade7b8858a56335a5d639de756\n"
    },
    {
      "commit": "98fe12aba55e8b8bb14b23c4c3cdba9a99a9753c",
      "tree": "bbf2323ac43fa63695957708fc065b0658a515c0",
      "parents": [
        "d54329e48d2ee6bc6b24d148770eec562e10e739"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 09 10:44:29 2010 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jul 14 10:09:31 2010 -0700"
      },
      "message": "Use the OpenSL ES definition of SL_IID_EQUALIZER for the EQ\neffect UUID instead of defining it locally.\n\nChange-Id: Id6018fef20d286899cf7503fec3521dcd56db7e0\n"
    },
    {
      "commit": "e44b1efb293f878d4af8e824a6b3d070167bf2d6",
      "tree": "7418a2e26b5a3d6beb61ac5dcff499327ef09ecc",
      "parents": [
        "a480a6f7f204fa1712e1484a6ba9e6c8772fa110"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 09 13:34:17 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 12:27:18 2010 -0700"
      },
      "message": "Modifications in audio effect engine state management.\n\n- Separate the updating of effect engine state from the process call in EffectModule so that the state\nof all effects in the same effect chain is updated simultaneusly before all process functions are called.\n- Added a mechanism for the effect engine to continue being called for processing after receiving the disable\ncommands untils it considers that the framework can stop calling the process function without causing\na glitch or loosing some effect tail.\n- Updated test reverb and equalizer to support this new feature\n\nChange-Id: Icb56ae2c84c076d4dbad6cf733b1a62f823febe7\n"
    },
    {
      "commit": "b914122eb9cb54bbeae4ec03bfebb194aecdccbd",
      "tree": "92968131eb8b5cd486338c484f743d67d48ba2c5",
      "parents": [
        "cb28102ad3976339ec445afbcb4130f2991b38d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 08 11:16:11 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 08 21:25:55 2010 -0700"
      },
      "message": "Add runtime dumpsys support for media recorder client\n\nChange-Id: I4c8a81720f3be2db54678a7e84fe12849255046b\n"
    },
    {
      "commit": "cb28102ad3976339ec445afbcb4130f2991b38d7",
      "tree": "61f43d35dbf97dfc8020229e3fc9f7850ed1edcb",
      "parents": [
        "6c5c25fae5aa68a52c6fa75649dd559a9ca98932"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 08 15:32:51 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 08 15:32:51 2010 -0700"
      },
      "message": "Added JAVA classes to control bass boost, equalizer, reverberation and virtualizer Effects.\n\nDefined the following JAVA classes on top of AudioEffect class to facilitate control\noff built-in audio effects with APIs aligned with interfaces defined in OpenSL ES\nspecification:\n- BastBoot.java\n- Equalizer.java\n- PresetReverb.java\n- EnvironmentalReverb.java\n- Virtualizer.java\n\nSplit reverb API header file in two, one for preset reverb and one for environmental reverb.\nSome changes in test reverb to support preset reverb.\n\nChange-Id: Ie0a5ba06002e63dfd6da22cace5568c1e0b76ea1\n"
    },
    {
      "commit": "6c5c25fae5aa68a52c6fa75649dd559a9ca98932",
      "tree": "825ab3a8deb612c3eb8daae783670d1273c64521",
      "parents": [
        "8cafde196d36ab207f35fed89b9c1b9d468abb58",
        "da7581b7b61b84f15e8d671c86fd117c322b009e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 16:23:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 16:23:30 2010 -0700"
      },
      "message": "Merge \"Added Visualizer effect.\" into gingerbread"
    },
    {
      "commit": "145bfe5eb3e08c9689c28f6bf3287a979438b04b",
      "tree": "ba140d50bbed7d0f8cb76fb3bd7920ecc5c4a6ce",
      "parents": [
        "91952e5221d2151e10738d7228575c4afe444f5e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 01 15:02:14 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 07 12:11:53 2010 -0700"
      },
      "message": "Allow application to set two more encoding paramters: video profile and level\n\nChange-Id: I673e681cefe184d5c556c612c54600a24a2143e5\n"
    },
    {
      "commit": "da7581b7b61b84f15e8d671c86fd117c322b009e",
      "tree": "61fb39ca1eaa0a5b8a71d70683f32d238a8e74e7",
      "parents": [
        "215381ea729086b8359b7f59bdc2bd7cf55a0c45"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 02 08:12:41 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 11:00:28 2010 -0700"
      },
      "message": "Added Visualizer effect.\n\nThe visualizer enables application to retrieve part of the currently playing audio for visualization purpose.\nIt is not an audio recording interface and only returns partial and low quality audio content as a waveform or\na frequency representation (FFT).\n\nRemoved temporary hack made in MediaPlayer for animated wall papers based on audio visualization (snoop() method.\n\nThis commit also includes a change in AudioEffect class:\n - the enable()/disable() methods have been replaced bya more standard setEnabled() method.\n - some fixes in javadoc\n\nChange-Id: Id092a1340e9e38dae68646ade7be054e3a36980e\n"
    },
    {
      "commit": "11cc270ac5fd522c9e6491a7933516a96da4f62e",
      "tree": "3c914ff40df97e4a64a1635ca2965bd2e0abd4f6",
      "parents": [
        "3ecb233c9c121af3e68ece11705043b1dbef505b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 07 09:17:41 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 07 09:27:31 2010 -0700"
      },
      "message": "ALooperRoster no longer holds strong references to handlers and loopers.\n\nChange-Id: I038d69b0a34eda1bfc5216d92c837a5ddf4fb802\n"
    },
    {
      "commit": "3ecb233c9c121af3e68ece11705043b1dbef505b",
      "tree": "f55fad6a47e06cf2ac37d89eb463f3613e102138",
      "parents": [
        "34bbea84b8374f5d0ebe72b0be4418ace984fac0",
        "e2b20987c2652a984d10520ef3542d50d91119c5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 07 06:57:27 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 06:57:27 2010 -0700"
      },
      "message": "Merge \"An AHandler can now find its associated ALooper.\" into gingerbread"
    },
    {
      "commit": "e2b20987c2652a984d10520ef3542d50d91119c5",
      "tree": "bb37d8c872710f99d2e358bf4a683f81fb6a2e0e",
      "parents": [
        "cbb56d14dad2785baf7a723b43aa6f1da32dc51f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 02 15:15:44 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 02 15:16:13 2010 -0700"
      },
      "message": "An AHandler can now find its associated ALooper.\n\nChange-Id: Ic7087b8dcbc0d9abda272df0cb01b04b006f82ad\n"
    },
    {
      "commit": "34bbea84b8374f5d0ebe72b0be4418ace984fac0",
      "tree": "3e933eb60e037a7c91e007eea606b1d9ae9b868f",
      "parents": [
        "cbb56d14dad2785baf7a723b43aa6f1da32dc51f",
        "42d7f83904b8a91ce33e87a44de109572679ac1f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 02 10:02:17 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 02 10:02:17 2010 -0700"
      },
      "message": "Merge \"Add an option to ALooper::start that allows it to call back into java or not.\" into gingerbread"
    },
    {
      "commit": "42d7f83904b8a91ce33e87a44de109572679ac1f",
      "tree": "e21c52008ad600d445d0345321a7f32ce87524da",
      "parents": [
        "3eaa4e92dbebb5b27cb89f329f31fac6fb6fe1f0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 02 08:00:52 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 02 08:00:52 2010 -0700"
      },
      "message": "Add an option to ALooper::start that allows it to call back into java or not.\n\nChange-Id: Iec172901a04a575d8d350bd162565f04677c3f26\n"
    },
    {
      "commit": "cbb56d14dad2785baf7a723b43aa6f1da32dc51f",
      "tree": "d31bf86d83e176dde457f01156a85de8fa146ab6",
      "parents": [
        "65e7dee628b79e205460a933f3b87ea6cda09002",
        "bbc2b8289458cfde931b133bad0c9d1026674ee7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 02 08:00:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 02 08:00:30 2010 -0700"
      },
      "message": "Merge \"Added AMessage::debugString() for debugging purposes.\" into gingerbread"
    },
    {
      "commit": "bbc2b8289458cfde931b133bad0c9d1026674ee7",
      "tree": "f5132d9e83837fcf2b4214f2335d0d6be1b31b15",
      "parents": [
        "3eaa4e92dbebb5b27cb89f329f31fac6fb6fe1f0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 01 14:11:31 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 01 16:36:55 2010 -0700"
      },
      "message": "Added AMessage::debugString() for debugging purposes.\n\nChange-Id: Id43ffd2c56d659dc29f37e277f8c7b38f11c1591\n"
    },
    {
      "commit": "19c9a1e2bb6ead5e1e895aea8be573fe0f8cc7bb",
      "tree": "ae116a41e703a6e2536ecedfdd2f74196e597cf5",
      "parents": [
        "3eaa4e92dbebb5b27cb89f329f31fac6fb6fe1f0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 01 08:19:52 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 01 09:08:38 2010 -0700"
      },
      "message": "Support for writing the extracted data to an .mp4 file in the stagefright commandline tool.\n\nChange-Id: I972324a8fc9757e6e8116b0270ec0882106f8733\n"
    },
    {
      "commit": "3eaa4e92dbebb5b27cb89f329f31fac6fb6fe1f0",
      "tree": "add045741d098b9832bda550cfd9474a758b3db5",
      "parents": [
        "1c8ed2e906576fd8d7fa03f577bdec518cbe13d7"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Jun 22 20:50:55 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jul 01 10:57:15 2010 +0800"
      },
      "message": "Add multiple camera support for in MediaProfiles.\n\nChange-Id: Ie89568a0f5f5fd08ede77e33f9a559215d6bed9a\n"
    },
    {
      "commit": "1c8ed2e906576fd8d7fa03f577bdec518cbe13d7",
      "tree": "ee70e9d3c97ec661f3882cc3394c5377dfa96eaa",
      "parents": [
        "d329e21495eda9dbc531fdd0c26c77f1593ac3f4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 30 10:32:20 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 30 10:32:39 2010 -0700"
      },
      "message": "Support for vanilla YUV420sp \u003d\u003e RGB565 color conversion.\n\nChange-Id: I22e5b554909e169eaf153d1f25b636f6f04a1871\n"
    },
    {
      "commit": "d329e21495eda9dbc531fdd0c26c77f1593ac3f4",
      "tree": "eea2f662a7089684c57020dd5f8313c978172470",
      "parents": [
        "e1e7b764b78f29b93bfe6123483e82381e4ed65d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 29 16:29:19 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 29 16:44:19 2010 -0700"
      },
      "message": "Added encoding parameters set up for H263 video encoder\n\nAlso:\n- Allowed start() call when encoder already starts and stop() call when encoder has not started yet\n- Handled default value for audio/video sources/encoders and file output format\n\nChange-Id: I03b2f7d3cf570baa0fd011a8c0ad200f2f2a5da1\n"
    },
    {
      "commit": "37047fceba836f341d0108beed0991b0f8dfc543",
      "tree": "6b60725c1d6af1ca91a46961bbecff9b996d07c2",
      "parents": [
        "93d6b102a13afa23bfa80d74c399d93d542e6ad6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 25 17:06:47 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 28 15:32:26 2010 -0700"
      },
      "message": "Separate MediaRecorderClient with MediaPlayerClient\n\n- An alternative would be to define a common base class that\n  both MediaRecorderClient and MediaPlayerClient can derive.\n  But since the common code, onTransact() and notify() uses\n  some Binder code, having a common base class may not gain\n  us too much in terms of code reuse.\n\nChange-Id: Ibc06720278ad173fceacff3d267b7060856c6316\n"
    },
    {
      "commit": "93d6b102a13afa23bfa80d74c399d93d542e6ad6",
      "tree": "a91ad03d514d09014e3b771a91d76e85564bf1e5",
      "parents": [
        "658bd258af206ebc662301979482ba4bfd88481a"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 24 19:04:27 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 25 16:20:42 2010 -0700"
      },
      "message": "Provide progress status report during authoring\n\n- Track either the number of A/V frames authored, or the time elapsed\n- Track the completion of the authoring\n- Add multiple camera support for authoring by accepting a camera id parameter\n- Set file type based on the OUTPUT_FORMAT requested\n\nChange-Id: I0f9d31b3b7a8fa43eb53f572410fb0ebd4fa0bb7\n"
    },
    {
      "commit": "658bd258af206ebc662301979482ba4bfd88481a",
      "tree": "901c00b5d6d8b28b2c40fcb550f185f720abdc12",
      "parents": [
        "1f80fe4a1fb18dbf797720b5c3b4c1b437406faf",
        "ffe9c25ce85e1af55d58ec025adc6367d70db7e8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 25 12:35:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 25 12:35:30 2010 -0700"
      },
      "message": "Merge \"Various fixes and improvements in audio effects implementation\" into gingerbread"
    },
    {
      "commit": "ffe9c25ce85e1af55d58ec025adc6367d70db7e8",
      "tree": "664f0a33a690b4d020417a9ecc81b32f696d0f0e",
      "parents": [
        "2439a8d6d99864ba0c2d94f428e6c9ee258cdd45"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 23 17:38:20 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 25 11:59:35 2010 -0700"
      },
      "message": "Various fixes and improvements in audio effects implementation\n\nEffect API:\n- Use different definitions for audio device, channels, formats... in AudioSystem and EffectApi:\n  Removed media/AudioCommon.h file created for initial version of EffectApi\n- Indicate audio session and output ID to effect library when calling EffectCreate(). Session ID can be useful to optimize\nthe implementation of effect chains in the same audio session. Output ID can be used for effects implemented in audio hardware.\n- Renamed EffectQueryNext() function to EffectQueryEffect() and changed operating mode:\n  now an index is passed for the queried effect instead of implicitly querying the next one.\n- Added CPU load and memory usage indication in effects descriptor\n- Added flags and commands to indicate changes in audio mode (ring tone, in call...) to effect engine\n- Added flag to indicate hardware accelerated effect implementation.\n- Renamed EffectFactoryApi.h to EffectsFactoryApi.h for consistency with EffectsFactory.c/h\n\nEffect libraries:\n- Reflected changes in Effect API\n- Several fixes in reverb implementation\n- Added build option TEST_EFFECT_LIBRARIES in makefile to prepare integration of actual effect library.\n- Replaced pointer by integer identifier for library handle returned by effects factory\n\nAudio effect framework:\n- Added support for audio session -1 in preparation of output stage effects configuration.\n- Reflected changes in Effect API\n- Removed volume ramp up/down when effect is inserted/removed: this has to be taken care of by effect engines.\n- Added some overflow verification on indexes used for deferred parameter updates via shared memory\n- Added hardcoded CPU and memory limit check when creating a new effect instance\n\nChange-Id: I43fee5182ee201384ea3479af6d0acb95092901d\n"
    },
    {
      "commit": "2dec2b5be2056c6d9428897dc672185872d30d17",
      "tree": "8ec375d6e5ec4c10c90552d0f6e02462cb598b64",
      "parents": [
        "d4b91aac78e565a135f8ef1bfda7e6317debaf35"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jun 20 08:20:54 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 25 10:24:35 2010 -0700"
      },
      "message": "Enable passing parameters to the MediaWriter at runtime (at start() call).\n\n- estimate the moov box size for mp4 file writer based on the file\n  size/duration limit and target bit rate.\n- can switch to use 64 bit file offset at runtime\n\nrebased\n\nChange-Id: Ibbe1f57e91ab2605820d5d96e8048d11e5559c53\n"
    },
    {
      "commit": "d3d4e5069e1af0437c4f5a7b4ba344bda5b937af",
      "tree": "596bf02fa9495c743c1069ecb99b5f134afac850",
      "parents": [
        "47c778f4a5fa639b2082fcc74080d33ac847b232"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 24 19:55:31 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 24 21:59:25 2010 -0700"
      },
      "message": "Track maximum amplitude and fix getMaxAmplitude()\n\n- only start to track the max amplitude after the first call to getMaxAmplitude()\n\nChange-Id: I64d3d9ca0542202a8535a211425e8bccceca50fc\n"
    },
    {
      "commit": "7bf4fab9e5590d345b93b559f35b2fb0f6b17ca8",
      "tree": "85f02ad188f4de9109bf461c03c071f44853d35d",
      "parents": [
        "2439a8d6d99864ba0c2d94f428e6c9ee258cdd45",
        "608d77b1cf4fb9f63dc861e4e1fa3e80a732f626"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 24 09:05:08 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 24 09:05:08 2010 -0700"
      },
      "message": "Merge \"Remove most stagefright property overrides, remove VorbisPlayer and VorbisMetadataRetriever as this functionality is now provided by stagefright.\" into gingerbread"
    },
    {
      "commit": "608d77b1cf4fb9f63dc861e4e1fa3e80a732f626",
      "tree": "924276911b6c7b1cc35951709030559111aabe2c",
      "parents": [
        "d255a4e04d06796441ae234e8f3a8277578b3446"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 16:40:57 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 16:40:57 2010 -0700"
      },
      "message": "Remove most stagefright property overrides, remove VorbisPlayer and VorbisMetadataRetriever as this functionality is now provided by stagefright.\n\nChange-Id: Ieafe75a4550c273ad59b4518d7cd4c0fce0f7cce\nrelated-to-bug: 2370115\n"
    },
    {
      "commit": "1acfe8649f8169caf2ff098c2dc2de880d9a3760",
      "tree": "bed86c364188e3cedfb45228c13605784b4f934f",
      "parents": [
        "dadd0d1e7d5fbb88fd3420438c590a0bb4c18af5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 23 00:18:40 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 23 14:09:18 2010 -0700"
      },
      "message": "Fixed some meta data issues in the recorded mp4 file\n\n- Mainly correcting the location of stbl box which should be a child of minf box.\n  This resolved the issue where the mis-muxed encoded file could not be played by QT/VLC.\n\n- Enabled the the recorded tracks by setting the flags to 0x07 by default\n\n- Allows for encoding either 32-bit or 64-bit offsets. By default encoding\n  32-bit offsets to reduce the metadata overhead\n\n- Fixed a edts box issue where an empty elst box was used at the end\n\nChange-Id: I570621a26714a81dc9400271aa5d3a07b483172f\n"
    },
    {
      "commit": "dadd0d1e7d5fbb88fd3420438c590a0bb4c18af5",
      "tree": "44ad049a0b4cc00150f502e296dfb82d257f6913",
      "parents": [
        "41b2d090b23889c56bf0a889a8c9c2fb934015e8",
        "a514bdb58b5de4986679f72b7204b4764f7a2778"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 22 18:29:57 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 22 18:29:57 2010 -0700"
      },
      "message": "Merge \"Added support for audio sessions in MediaPlayer and AudioTrack.\" into gingerbread"
    },
    {
      "commit": "41b2d090b23889c56bf0a889a8c9c2fb934015e8",
      "tree": "43fab4c19b15672a3234801c5c708694ccad0cbf",
      "parents": [
        "58ae9c530247668f8af36e30d228c716c226b3d4",
        "15304d601cbf83be6519ca53e1a26b97d50d0192"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Jun 22 17:20:44 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 22 17:20:44 2010 -0700"
      },
      "message": "Merge \"media: add AudioRecord::getMinFrameCount().\" into gingerbread"
    },
    {
      "commit": "a514bdb58b5de4986679f72b7204b4764f7a2778",
      "tree": "84b1ebf0c2b500bfb4995e373f8fee5b63b6c9fd",
      "parents": [
        "58ae9c530247668f8af36e30d228c716c226b3d4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 21 09:27:30 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 22 17:14:04 2010 -0700"
      },
      "message": "Added support for audio sessions in MediaPlayer and AudioTrack.\n\nAudio sessions are used to associate audio effects to particular instances (or groups) of MediaPlayers or AudioTracks.\n\nChange-Id: Ib94eec43241cfcb416590f435ddce7ab39a07640\n"
    },
    {
      "commit": "15304d601cbf83be6519ca53e1a26b97d50d0192",
      "tree": "41885f15dd2e97b841b10e094e8de84ac190c754",
      "parents": [
        "c7fa90a661dd9f6107af6a1d9e6dcaa1cb9a34e3"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Jun 22 08:01:13 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Jun 23 08:01:04 2010 +0800"
      },
      "message": "media: add AudioRecord::getMinFrameCount().\n\nChange-Id: I952071ab10aa49aa96b727d157b68470d69fff3d\n"
    },
    {
      "commit": "58ae9c530247668f8af36e30d228c716c226b3d4",
      "tree": "797e765affac5a32c0a4a431d22afdfcd194eba1",
      "parents": [
        "40f388ef8bad7a9ab16db8f90904656cd39c793d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 22 11:27:37 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 22 11:27:37 2010 -0700"
      },
      "message": "Single track optimization\n\nWe don\u0027t need to do interleave when the total number of tracks to be recorded is one.\nMetadata-wise, we only need to have one chunk in chunk offset table, and a\nsingle entry in the stsc table.\n\nChange-Id: I46f0e4b3860620311e7a91b68a9067acaa137bb2\n"
    },
    {
      "commit": "0cd1e0bf7a0db4dcc111ee0732cbe2ec6e02b5af",
      "tree": "36f231c03fdb43166d4f5f013b9e68d5253dcb9e",
      "parents": [
        "c7fa90a661dd9f6107af6a1d9e6dcaa1cb9a34e3",
        "f60cafe0e6aad8f9ce54660fa88b651ae4e749e6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 22 10:05:02 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 22 10:05:02 2010 -0700"
      },
      "message": "Merge \"Audio/video sync during recording (second part)\" into gingerbread"
    },
    {
      "commit": "f60cafe0e6aad8f9ce54660fa88b651ae4e749e6",
      "tree": "eabfca8c6c979a1000f49efca5c33ab9039245ba",
      "parents": [
        "e6de2667d6bf4bb7b926da6784cc7eb886b93e83"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Jun 19 09:04:18 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 21 17:34:01 2010 -0700"
      },
      "message": "Audio/video sync during recording (second part)\n\nChange-Id: Iba0b35f57fdeac7ee1da16899406bf4b957a2c8c\n"
    },
    {
      "commit": "33005a932c60a0780fe9b7307d5988df3d9f6c26",
      "tree": "2519156995c4fabaae1dfdaa091e70b973a41547",
      "parents": [
        "1616fa4a567bae928dfd28ebf1ec45cd701f27f1"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Jun 16 06:33:13 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 21 09:51:18 2010 +0800"
      },
      "message": "media: add AudioTrack::getMinFrameCount().\n\nChange-Id: If15162583d1d16d89f59be0793106afe77417f35\n"
    },
    {
      "commit": "1616fa4a567bae928dfd28ebf1ec45cd701f27f1",
      "tree": "282b72dc29d1d944f0691aae47e39abfc179c579",
      "parents": [
        "628eff9967c4efd04204656d9756df9e32cf523c",
        "801a1186eb1d2ce195b15222701865932e08f3dc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 14 09:02:13 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 14 09:02:13 2010 -0700"
      },
      "message": "Merge \"Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.\" into kraken"
    },
    {
      "commit": "628eff9967c4efd04204656d9756df9e32cf523c",
      "tree": "1b87d7b8c0eb1fac2c535c899f5761e9bf543558",
      "parents": [
        "623a0de03d72c17b4cf0701280c6cb1df365ea6c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 22 18:58:52 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 17:42:16 2010 -0700"
      },
      "message": "Native input dispatch rewrite work in progress.\n\nThe old dispatch mechanism has been left in place and continues to\nbe used by default for now.  To enable native input dispatch,\nedit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy.\n\nIncludes part of the new input event NDK API.  Some details TBD.\n\nTo wire up input dispatch, as the ViewRoot adds a window to the\nwindow session it receives an InputChannel object as an output\nargument.  The InputChannel encapsulates the file descriptors for a\nshared memory region and two pipe end-points.  The ViewRoot then\nprovides the InputChannel to the InputQueue.  Behind the\nscenes, InputQueue simply attaches handlers to the native PollLoop object\nthat underlies the MessageQueue.  This way MessageQueue doesn\u0027t need\nto know anything about input dispatch per-se, it just exposes (in native\ncode) a PollLoop that other components can use to monitor file descriptor\nstate changes.\n\nThere can be zero or more targets for any given input event.  Each\ninput target is specified by its input channel and some parameters\nincluding flags, an X/Y coordinate offset, and the dispatch timeout.\nAn input target can request either synchronous dispatch (for foreground apps)\nor asynchronous dispatch (fire-and-forget for wallpapers and \"outside\"\ntargets).  Currently, finding the appropriate input targets for an event\nrequires a call back into the WindowManagerServer from native code.\nIn the future this will be refactored to avoid most of these callbacks\nexcept as required to handle pending focus transitions.\n\nEnd-to-end event dispatch mostly works!\n\nTo do: event injection, rate limiting, ANRs, testing, optimization, etc.\n\nChange-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25\n"
    },
    {
      "commit": "a7d1a2dd776bf356c228785a94ba8e0ff6a2ec7f",
      "tree": "5c1bfd25a405fcf485512ffb3ced827b3d2ab630",
      "parents": [
        "6f5aae1bcba130d5b8092a19fca3627aa565df56"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 10 12:28:15 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 11 13:48:48 2010 -0700"
      },
      "message": "Initial checkin for pause and resume control\n\nChange-Id: Ibdcf7bea5fb66baa81878704ba4091dfcfe382ee\n"
    },
    {
      "commit": "801a1186eb1d2ce195b15222701865932e08f3dc",
      "tree": "1a08ae38cebaddbe6992807f124e6d44c47aeea2",
      "parents": [
        "e71d10e7ad55ccbcb0756c007caef1c959090384"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 09 00:17:29 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 11 06:26:31 2010 -0700"
      },
      "message": "Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.\n\nAdded AudioEffect C++ class. AudioEffect is the base class for effect specific implementations,\nOpenSL ES effect interfaces and audio effect JNI.\n\nAdded the AudioEffect JNI and AudioEffect JAVA class. AudioEffect is the base class\nto implement more specific JAVA classes to control audio effects from JAVA applications.\n\nChange-Id: If300a1b708f2e6605891261e67bfb4f8330a4624\n"
    },
    {
      "commit": "ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4",
      "tree": "9a3115e77421f95a8505067cfa60b5a73518ad68",
      "parents": [
        "0a5baa9b411fe086013d2a5e9126ed63fbad046c"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jun 10 13:32:16 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jun 11 16:47:33 2010 +0800"
      },
      "message": "Change camera interface to support multiple cameras.\n\nChange-Id: Ie88fe706d2278acf762eca87780de349434778a4\n"
    },
    {
      "commit": "0a5baa9b411fe086013d2a5e9126ed63fbad046c",
      "tree": "d2f568256c27d816aa5cac3ef365ebe460536a3a",
      "parents": [
        "28b6844dec4297b16777fd45fd77ff33aa495de2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:17:50 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 15:16:57 2010 -0700"
      },
      "message": "Switch stagefright\u0027s approach to prefetching to the new model. The java MediaPlayer is now notified about rebuffering start/end via info messages.\n\nChange-Id: If8185ba329ce8b6663b1ad39a4efb0ad3be81df2\n"
    },
    {
      "commit": "61ea6c1bc242841663cb6f3601f89fd929882d0b",
      "tree": "8d520cc017cc8f899064db22551147f6aae752be",
      "parents": [
        "80737bac407a36e99267f65fe162b8e282822af4",
        "5994b4798b01f3dd340577c9ea9657f09093a770"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 15:15:29 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 10 15:15:29 2010 -0700"
      },
      "message": "Merge \"Initial check-in of new caching/prefetching data source implementation.\" into kraken"
    },
    {
      "commit": "d35bd5fb4e09c2cd8608497c279cbb2ef9c3a029",
      "tree": "202a1dc44facac79bb0175f2dce9ec1381850854",
      "parents": [
        "98c7c319907f4ed3915461ca62b1027590d351e5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:12:39 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:24:49 2010 -0700"
      },
      "message": "Support \"pausing\" of MediaSources with the effect that they no longer pull on their upstream source until a subsequent read-with-seek.\n\nChange-Id: Ie4153a10ab36c1135f5fcfb572958129d886bcc3\n"
    },
    {
      "commit": "5994b4798b01f3dd340577c9ea9657f09093a770",
      "tree": "1fa0f3bcca95eb3b7dd79c781ccca2fe0630f134",
      "parents": [
        "98c7c319907f4ed3915461ca62b1027590d351e5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:09:36 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:23:56 2010 -0700"
      },
      "message": "Initial check-in of new caching/prefetching data source implementation.\n\nChange-Id: I97a6e3f03c69c9b1219f1f06bd109c0102f2c504\n"
    },
    {
      "commit": "36ef8cf54e2bf2f96b8c7f47cd534c00ccb7b64f",
      "tree": "ea437c86609ee36a52c071cd066d029793633639",
      "parents": [
        "ddcc4a66d848deef6fb4689e64e30cd9bd2684fe"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 08 19:54:15 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 08 20:10:02 2010 -0700"
      },
      "message": "allow re-targetting of surfaces\n\nSurfaces can now be parcelized and sent to remote\nprocesses. When a surface crosses a process\nboundary, it looses its connection with the\ncurrent process and gets attached to the new one.\n\nChange-Id: I39c7b055bcd3ea1162ef2718d3d4b866bf7c81c0\n"
    },
    {
      "commit": "ddcc4a66d848deef6fb4689e64e30cd9bd2684fe",
      "tree": "e34375b6ca52818e02b45af527e68e4b42c92be1",
      "parents": [
        "365a963142093a1cd8efdcea76b5f65096a5b115"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 08 11:58:53 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 08 12:30:58 2010 -0700"
      },
      "message": "Remove some hard-coded encoding parameters\n\nChange-Id: I7a8ccd5d57891a6a585c8da2ee53acb094955913\n"
    },
    {
      "commit": "365a963142093a1cd8efdcea76b5f65096a5b115",
      "tree": "40c76b80d8b9bf3e4410db69789465dbb71ff015",
      "parents": [
        "cc2fc006594cccbf1a58a2933c1d18cf0f2e021f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 04 13:59:27 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 08 11:54:21 2010 -0700"
      },
      "message": "Initial check-in for collecting stats from authoring engine at runtime\n\nChange-Id: I93a9d8bd260efc5e7fc135b726e3f1307c6df794\n"
    },
    {
      "commit": "d07139e2e817a9b3ae9c87ba4e1e8d65d3e549da",
      "tree": "c539b7d9d79fa55387eb62149418cc34f78826f2",
      "parents": [
        "cda17c606b0fe3ccda4dc68a6d43882410ea2462"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 07 14:41:41 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 08 10:01:47 2010 -0700"
      },
      "message": "Second part of speeding up video recording frame rate\n\n1. Avoid copying the input recording frames to the encoder via OMX interface\n   for TI video encoder\n   This is a missing change for part one which help reduces the CPU load.\n\n2. Release output buffers as early as possible. This is a little bit helpful, but not critical.\n\nTODO:\nWe should save the underlying pointers allocated by the OMX component before we replace them\nand restore them before we call OMX_FreeBuffer()!\n\nChange-Id: Ib3a88978f4c3b1153808872eaa7ac4c265a811ff\n"
    },
    {
      "commit": "cda17c606b0fe3ccda4dc68a6d43882410ea2462",
      "tree": "0c238863237c3c7e98b497c2e27f09d5080b67e6",
      "parents": [
        "c46e8b9fdce32bafb0b84cdb16affbdd35c2e3ba"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 13:05:37 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 13:05:37 2010 -0700"
      },
      "message": "Initial checkin of mpeg2 transport stream parser for stagefright.\n\nChange-Id: I328ce77404daf7127933b48c9d58ed504fb8fc6f\n"
    },
    {
      "commit": "c46e8b9fdce32bafb0b84cdb16affbdd35c2e3ba",
      "tree": "22d8bac8c427e2906c5aa03b212918077d005078",
      "parents": [
        "c00d6f3ffc0eace26954e1863568820bd21794c0",
        "72961230a5890071bcca436eb5630172ce84ec41"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 12:50:05 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 07 12:50:05 2010 -0700"
      },
      "message": "Merge \"Initial checkin of \"foundation\" library for future stagefright development.\" into kraken"
    },
    {
      "commit": "72961230a5890071bcca436eb5630172ce84ec41",
      "tree": "a699be99c292a92bda91f7eca5671a5817488447",
      "parents": [
        "cbbf27f76b4798cbd91feb70d7555dac0cbf85cb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 10:18:57 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 10:22:07 2010 -0700"
      },
      "message": "Initial checkin of \"foundation\" library for future stagefright development.\n\nChange-Id: I11714dcaa647d0437a13e4c5b953b35e712da8f3\n"
    },
    {
      "commit": "c00d6f3ffc0eace26954e1863568820bd21794c0",
      "tree": "ec5042915f77bbb3cb374b251fbcc2749ec67076",
      "parents": [
        "cbbf27f76b4798cbd91feb70d7555dac0cbf85cb",
        "653252be963c07c99109d20f942d1f30c52a9360"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 07 10:19:58 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 07 10:19:58 2010 -0700"
      },
      "message": "Merge \"Remove hard-coded pixel format for recording frames in CameraSource. Retrieve the pixel format from Camera HAL at runtime.\" into kraken"
    },
    {
      "commit": "cbbf27f76b4798cbd91feb70d7555dac0cbf85cb",
      "tree": "86f01bba0af27f8bfc9a8f28c9ecab3f52f3d022",
      "parents": [
        "a21b4e224e8622c0e3280c33b8ebd24fcc515580"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 01 15:12:58 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 04 18:57:41 2010 -0700"
      },
      "message": "split surface management from surface\u0027s buffers management\n\nChange-Id: If3c5655d1231f8f0c49ba68f972b1b20c93b3f87\n"
    },
    {
      "commit": "a21b4e224e8622c0e3280c33b8ebd24fcc515580",
      "tree": "bce77c1ce11b21c73f78bb8168593c9f2b8d73c9",
      "parents": [
        "dea96b8d54daf9ef76beb7e72e69c9f1c923c1d8",
        "d38bee5858f5387afc28dcb97139b760ac8a1c63"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Jun 04 03:38:25 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 04 03:38:25 2010 -0700"
      },
      "message": "Merge \"Add KEY_SUPPORTED_METERING_MODES and fix some typos.\" into kraken"
    },
    {
      "commit": "d38bee5858f5387afc28dcb97139b760ac8a1c63",
      "tree": "b090f27b94303923007f1cdd4b075be16cbba904",
      "parents": [
        "cd3514492c2d49aeb88eedae40b54dcdd3fcbd9a"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Jun 04 14:18:32 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Jun 04 17:18:17 2010 +0800"
      },
      "message": "Add KEY_SUPPORTED_METERING_MODES and fix some typos.\n\nbug:2737111\nChange-Id: I108ae7057786921bf99385ad66dbc1f02d6a1448\n"
    },
    {
      "commit": "dea96b8d54daf9ef76beb7e72e69c9f1c923c1d8",
      "tree": "6b4ff3bdd28e7a571c60cd90e7af7cbc0d26d0b6",
      "parents": [
        "cd3514492c2d49aeb88eedae40b54dcdd3fcbd9a",
        "be916aa1267e2e6b1c148f51d11bcbbc79cb864c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 04 00:14:46 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 04 00:14:46 2010 -0700"
      },
      "message": "Merge \"Issue 2667801: [Audio Effect Framework] AudioFlinger, AudioMixer AudioTrack modifications.\" into kraken"
    },
    {
      "commit": "653252be963c07c99109d20f942d1f30c52a9360",
      "tree": "6d5fb73f2aa6a51c60320bfd59b4081b2616dd7e",
      "parents": [
        "c282e3eee921453fc9188705b4879d6289b71f9c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 03 11:48:31 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 03 11:51:39 2010 -0700"
      },
      "message": "Remove hard-coded pixel format for recording frames in CameraSource.\nRetrieve the pixel format from Camera HAL at runtime.\n\nChange-Id: I63f820f54c59c2019dfd195320b9928da3362536\n"
    },
    {
      "commit": "be916aa1267e2e6b1c148f51d11bcbbc79cb864c",
      "tree": "7e2be6182cde7d023ae9afec28463d69d231d7bc",
      "parents": [
        "c282e3eee921453fc9188705b4879d6289b71f9c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 01 23:49:17 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 03 03:21:53 2010 -0700"
      },
      "message": "Issue 2667801: [Audio Effect Framework] AudioFlinger, AudioMixer AudioTrack modifications.\n\nFirst drop of audio framework modifications for audio effects support.\n\n- AudioTrack/AudioRecord:\nAdded support for auxiliary effects in AudioTrack\nAdded support for audio sessions\nFixed left right channel inversion in setVolume()\n\n- IAudioFlinger:\nAdded interface methods for effect enumeraiton and instantiation\nAdded support for audio sessions.\n\n- IAudioTrack:\nAdded method to attach auxiliary effect.\n\n- AudioFlinger\nCreated new classes to control effect engines in effect library and manage effect connections to tracks or\noutput mix:\n  EffectModule: wrapper object controlling the effect engine implementation in the effect library. There\n\tis one EffectModule per instance of an effect in a given audio session\n  EffectChain: group of effects associated to one audio session. There is one EffectChain per audio session.\n\tEffectChain for session 0 is for output mix effects, other chains are attached to audio tracks\n\twith same session ID. Each chain contains a variable number of EffectModules\n  EffectHandle: implements the IEffect interface. There is one EffectHandle object for each application\n\tcontrolling (or using) an effect module. THe EffectModule maintians a list of EffectHandles.\n\nAdded support for effect modules and effect chains creation in PlaybackThread.\nmodified mixer thread loop to allow track volume control by effect modules and call effect processing.\n\n-AudioMixer\nEach track now specifies its output buffer used by mixer for accumulation\nModified mixer process functions to process tracks by groups of tracks with same buffer\nModified track process functions to support accumulation to auxiliary channel\n\nChange-Id: I26d5f7c9e070a89bdd383e1a659f8b7ca150379c\n"
    },
    {
      "commit": "2b8aba228e6ebd45fe29714baa477f3ea2320095",
      "tree": "526afba8fc95868ce67ff91554a81b1ad8a7d6ae",
      "parents": [
        "ba0fab325cd8379378a2c8ad14dd1c44bf2760f3"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Jun 03 16:34:18 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Jun 03 16:34:18 2010 +0800"
      },
      "message": "Add camera metering mode API.\n\nbug:2737111\nChange-Id: Ie986fee56ebeaaed2d2efb757701dfe3ffdec8d8\n"
    },
    {
      "commit": "ba0fab325cd8379378a2c8ad14dd1c44bf2760f3",
      "tree": "71db14ce33c3c0642152d98376feeceb5ad6353d",
      "parents": [
        "aed27b016043c9f2cb33cf851f20698130be110c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 28 14:22:23 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 28 17:19:16 2010 -0700"
      },
      "message": "more clean-up in preparation of bigger changes\n\nthe most important change here is the renaming of\nISurfaceFlingerClient to ISurfaceComposerClient\n\nChange-Id: I94e18b0417f50e06f21377446639c61f65f959b3\n"
    },
    {
      "commit": "aed27b016043c9f2cb33cf851f20698130be110c",
      "tree": "8a28a6b2da1afe0051cefa3d7012a41a155d0eb1",
      "parents": [
        "49dedddca375f0b3a7070f7fae33966c230d4d8e",
        "7278cf32f1aa6a322f6dff1f8b7dacf7b6dddba6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 28 10:53:09 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 28 10:53:09 2010 -0700"
      },
      "message": "Merge \"Avoid copying for input recording frames in CameraSource\" into kraken"
    },
    {
      "commit": "7278cf32f1aa6a322f6dff1f8b7dacf7b6dddba6",
      "tree": "d64ace45412715114585df61c53d2f5ea58d7999",
      "parents": [
        "8a74f1bc3f64943cafdc7c6c7e1900b4a3e9e4b1"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 27 16:05:58 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 28 10:44:20 2010 -0700"
      },
      "message": "Avoid copying for input recording frames in CameraSource\n\nThis is the part one.\n\n- Let CameraSource be a MediaBufferObserver. It releases the recording frame when the ref count of a MediaBuffer containing\n  the recording frame drops to 0.\n\n  This reduces the CPU load from 90+% down to 50-60%.\n\nPart two is related to the avoidance of copying the input video frames to the video encoder.\nHowever, we are not able to use OMX_UseBuffer directly. Still work on the second part.\n\nChange-Id: I906f1d054ae8bdcf82e1617f1fc120152f2eb2eb\n"
    },
    {
      "commit": "0b0279e0d20a8beb69aa2af5f4cb278841710dfb",
      "tree": "21b77e3b0348f35a45db76125ac9f112bd74551e",
      "parents": [
        "5b39604a55f1624ced347da7b790c4206d2d999f"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri May 28 17:32:41 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri May 28 17:32:41 2010 +0800"
      },
      "message": "Add video frame parameter.\n\nThe image format of preview frames and video frames may be different.\nWe need another parameter for video frame format.\n\nbug:2720893\nChange-Id: I966a31b0ce8cab25cdde65db65a18c8cbe9c7bd6\n"
    },
    {
      "commit": "5b39604a55f1624ced347da7b790c4206d2d999f",
      "tree": "71bde464029685210f228e6a8e43e9b4f1f71097",
      "parents": [
        "5a4001ddb2536d65d966970fc0579bf6bd11b5a0",
        "cbe48a0678729eb863b259b4744e6ad12faf0475"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 26 17:01:16 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 26 17:01:16 2010 -0700"
      },
      "message": "Merge \"Avoid repeatedly allocating and freeing memory in CameraSource\" into kraken"
    },
    {
      "commit": "cbe48a0678729eb863b259b4744e6ad12faf0475",
      "tree": "d0331f351a139dddc9fe42eacebbb964864132fa",
      "parents": [
        "1cb8fa1e670786bf83ccde7571c5ac1fc087d4f1"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 20 02:44:49 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 26 16:54:18 2010 -0700"
      },
      "message": "Avoid repeatedly allocating and freeing memory in CameraSource\n\nChange-Id: Ia3760820da0559e4e908dedae1f1df05f9a6a242\n"
    },
    {
      "commit": "2941c27e381ebda1cecff9fca2a67bba999e46e4",
      "tree": "57eb641552023d29a7cce091a117cf00c3e09cd3",
      "parents": [
        "cfe92f710d17f71b1cef70bd7f6ec5879309b24f",
        "d71a1be83ff31cdb6599c351f9832cefc8d447ba"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 25 23:48:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 25 23:48:30 2010 -0700"
      },
      "message": "Merge \"Fix issue 2667797: [Audio Effect Framework] new base class and binder interfaces for effect control.\" into kraken"
    },
    {
      "commit": "cfe92f710d17f71b1cef70bd7f6ec5879309b24f",
      "tree": "f1fea14a0e5b17383a75e9a6bd018de33cee34e4",
      "parents": [
        "6c3a699ef1c885e39d9b697fae7304455e8d9f83",
        "3f6b0cdd8cd57e2cca56a5dd4cfa726b9185d2e8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 25 17:56:07 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 25 17:56:07 2010 -0700"
      },
      "message": "Merge \"fix [2712278] The preview buffer left some black borders in left and bottom edges\" into kraken"
    },
    {
      "commit": "3f6b0cdd8cd57e2cca56a5dd4cfa726b9185d2e8",
      "tree": "e5d25b48359d27a362e3db605736629f2a4c2e09",
      "parents": [
        "fb6ae6666644c9a37a5d34dd03eb637333cf946b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 25 17:51:34 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 25 17:51:34 2010 -0700"
      },
      "message": "fix [2712278] The preview buffer left some black borders in left and bottom edges\n\nwe were incorrectly flagging push_buffer surfaces as invalid\n\nChange-Id: I4dfd4ffbbe8a71f7e23e835db8d71966416c29bb\n"
    },
    {
      "commit": "d71a1be83ff31cdb6599c351f9832cefc8d447ba",
      "tree": "e4bd66e6f5f7386067622eafa8c8cea56c6f4797",
      "parents": [
        "9bca89d50d0c51d8e3f3e74d610b7d9a2dc98ed3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 21 07:47:50 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 24 23:33:42 2010 -0700"
      },
      "message": "Fix issue 2667797: [Audio Effect Framework] new base class and binder interfaces for effect control.\n\nAdded IEffect and IEffectClient binder interfaces to exchange effect module control\nand status information between application and media server processes.\n\nChange-Id: I10e8e894898e52ed9956a765d0ef7075eb2593af\n"
    },
    {
      "commit": "9bca89d50d0c51d8e3f3e74d610b7d9a2dc98ed3",
      "tree": "5ae925c3dd3f2c13541204789892021d1bf185d8",
      "parents": [
        "fb6ae6666644c9a37a5d34dd03eb637333cf946b",
        "135ad07e33d30e5202deb21061a0e3ecf0ffad35"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 24 23:23:29 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 24 23:23:29 2010 -0700"
      },
      "message": "Merge \"Fix issue 2667796: [Audio Effect Framework] Effect factory and libraries.\" into kraken"
    },
    {
      "commit": "fb6ae6666644c9a37a5d34dd03eb637333cf946b",
      "tree": "003b7afd1dc7507f230900ab80b90ef4c2d8ec23",
      "parents": [
        "68f929b84acf0c985b9ae3157322c022798e5eb2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 21 17:24:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 24 18:26:01 2010 -0700"
      },
      "message": "added the notion of fixed-size buffers\n\nthe new native_window_set_buffers_geometry allows\nto specify a size and format for all buffers to be\ndequeued. the buffer will be scalled to the window\u0027s\nsize.\n\nChange-Id: I2c378b85c88d29cdd827a5f319d5c704d79ba381\n"
    },
    {
      "commit": "68f929b84acf0c985b9ae3157322c022798e5eb2",
      "tree": "07960003b243ae58aeecabf83a4e47c78e5d83b6",
      "parents": [
        "1cb8fa1e670786bf83ccde7571c5ac1fc087d4f1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 21 14:51:33 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 24 13:47:24 2010 -0700"
      },
      "message": "fix a bug when reallocating a window\u0027s buffers is needed\n\nwe need to mark the buffers that need to be reallocated,\nNOT the buffer\u0027s indices.\n\nChange-Id: I809e2e1b03b56c4d2ab983c25523dae99aa1da74\n"
    },
    {
      "commit": "6b19faca7040ba4ef67637801926ead2559c22e9",
      "tree": "50a8fba4e70e2de45857a6ec438036a39a3baa56",
      "parents": [
        "082a4d89ae4bd156052346bbac7031ed7d741c9d"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri May 21 17:52:42 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon May 24 17:31:17 2010 +0800"
      },
      "message": "Improve GPS EXIF parameters comments.\n\nChange-Id: I33f7487821b283fe746baa09a71a703ae763d66d\n"
    },
    {
      "commit": "082a4d89ae4bd156052346bbac7031ed7d741c9d",
      "tree": "3a628b33555c747fa45da6ae566490a0e281bc3d",
      "parents": [
        "1f5be9e90868b92b99868fef232fe973f9d58713"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 21 14:19:50 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 21 14:34:32 2010 -0700"
      },
      "message": "added native_window_set_buffer_count()\n\nthis method can be used to change the number of buffers\nassociated to a native window. the default is two.\n\nChange-Id: I608b959e6b29d77f95edb23c31dc9b099a758f2f\n"
    },
    {
      "commit": "1f5be9e90868b92b99868fef232fe973f9d58713",
      "tree": "6081dd574c9ddd30d42608e8c9943ab8e454645d",
      "parents": [
        "26fe83eb91aada45a75054753d4782e6bfc2fd04",
        "dd9a3a7cb9bd5f68bc6b1fe709e10b6bd1f5b433"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 21 13:53:28 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 21 13:53:28 2010 -0700"
      },
      "message": "Merge \"fix the threading issue for setBuffercount()\" into kraken"
    },
    {
      "commit": "135ad07e33d30e5202deb21061a0e3ecf0ffad35",
      "tree": "9779bcb604cc51cba5fd42cc3c53e33c230f5109",
      "parents": [
        "64105f956f15969dbe1ec7319f6caa2a984e588b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 21 06:05:13 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 21 07:05:56 2010 -0700"
      },
      "message": "Fix issue 2667796: [Audio Effect Framework] Effect factory and libraries.\n\nFirst effect factory and effect library API implementation.\nAlso added default effect libraries for reverb and equalizer effects.\nThese libraries are for functional test only and are not fine tuned with\nregard to audio quality. They will probably be replaced by other implementations\nbefore the release.\n\nChange-Id: I6868f8612146ae282c64052765c61a52ec789ec8\n"
    },
    {
      "commit": "dd9a3a7cb9bd5f68bc6b1fe709e10b6bd1f5b433",
      "tree": "34c1de4abc49bbb44f74e959e723344799eceb36",
      "parents": [
        "956c553ab0ce72f8074ad0fda2ffd66a0305700c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 18 17:06:55 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 20 18:00:42 2010 -0700"
      },
      "message": "fix the threading issue for setBuffercount()\n\nthis change introduces R/W locks in the right places.\non the server-side, it guarantees that setBufferCount()\nis synchronized with \"retire\" and \"resize\".\non the client-side, it guarantees that setBufferCount()\nis synchronized with \"dequeue\", \"lockbuffer\" and \"queue\"\n"
    },
    {
      "commit": "093437c388e5dff6903a3d43f2ca9f8a1ba4744a",
      "tree": "e60f6bdcb9589bd8476123a6aff0bb3836daa675",
      "parents": [
        "cf14f10b7bf39a84205333b87d5c5b7db9598de3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 20 14:56:53 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 20 14:56:53 2010 -0700"
      },
      "message": "Support for media extraction from .mkv/.mka Matroska files in stagefright.\n\nChange-Id: I4c26579828ad575523ccf58b0b5cb144046c04ca\nrelated-to-bug: 2483739\n"
    },
    {
      "commit": "956c553ab0ce72f8074ad0fda2ffd66a0305700c",
      "tree": "fe111ecd29e01c270246f5f338c56806d6d5b136",
      "parents": [
        "e1f61055b4abb96a86d1ff24b5a7777dfe40fe5f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 15:45:22 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 19 07:21:25 2010 -0700"
      },
      "message": "Initial software encoder checkins\n\nChange-Id: I27f387db23594e46384c4eb3a0093ce220bb6b60\n"
    },
    {
      "commit": "e1f61055b4abb96a86d1ff24b5a7777dfe40fe5f",
      "tree": "8674f05b32d3abbadbbdc251e65c9936bc135ab2",
      "parents": [
        "d1b449aad6c087a69f5ec66b7facb2845b73f1cb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 17 17:27:26 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 17 17:27:26 2010 -0700"
      },
      "message": "fix some bugs in SharedBufferStack::resize\n\nadded buffers should now be labeled properly.\n\nChange-Id: I28aa753fbe89ab89134e7753575319478934c7fa\n"
    },
    {
      "commit": "d1b449aad6c087a69f5ec66b7facb2845b73f1cb",
      "tree": "b16f7d28fdac76c90d66be56161116fe09822992",
      "parents": [
        "ae77ffa16bda593fb3751e41d45327d867f3c8e1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 14 03:26:45 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 17 02:23:47 2010 -0700"
      },
      "message": "Fix issue 2553359: Pandora does not work well with Passion deskdock / Cardock.\n\nThe problem is due to a too big difference between the buffer size used at the hardware interface and at the A2DP interface.\nWhen no resampling occurs we don\u0027t notice problems but the timing is very tight. As soon as resampling is activated, the AudioTrack underruns.\nThis is because the AudioTrack buffers are not resized when moving the AudioTrack from hardware to A2DP output.\nThe AudioTrack buffers are calculated based on a hardware output buffer size of 3072 bytes. Which is much less than the A2DP output buffer size (10240).\n\nThe solution consists in creating new tracks with new buffers in AudioFlinger when the A2DP output is opened\ninstead of just transfering active tracks from hardware output mixer thread to the new A2DP output mixer thread.\nTo avoid synchronization issues between mixer threads and client processes, this is done by invalidating tracks\nby setting a flag in their control block and having AudioTrack release the handle on this track (IAudioTrack)\nand create a new IAudioTrack when this flag is detected next time obtainBuffer() or start() is executed.\n\nAudioFlinger modifications:\n- invalidate the tracks when setStreamOutput() is called\n- make sure that notifications of output opening/closing and change of stream type to output mapping are sent synchronously to client process.\nThis is necessary so that AudioSystem has the new stream to output mapping when the AudioTrack detects the invalidate flag in the client process.\nPreviously their were sent when the corresponding thread loop was executed.\n\nAudioTrack modifications:\n- move frame count calculation and verification from set() to createTrack() so that is is updated every time a new IAudioTrack is created.\n- detect track invalidate flag in obtainBuffer() and start() and create a new IAudioTrack.\n\nAudioTrackShared modifications\n- group all flags (out, flowControlFlag, forceReady...) into a single bit filed to save space.\n\nChange-Id: I9ac26b6192230627d35084e1449640caaf7d56ee\n"
    }
  ],
  "next": "ae77ffa16bda593fb3751e41d45327d867f3c8e1"
}
