)]}'
{
  "log": [
    {
      "commit": "5ee65f0d441ca558bc95b60c1468f2aadfeeddbd",
      "tree": "fe143a0721ac44a3d2c34a46ad5240ea2d586f76",
      "parents": [
        "eec69d2923636b2aaa51df93bacc2b3bbb742736"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jul 15 17:29:15 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jul 16 13:03:15 2010 -0700"
      },
      "message": "Re-use existing Surface objects when reading them from parcels.\n\nThis change adds a process-global cache of previously deserialized Surface\nobjects so that if a Surface object wrapping the same ISurface gets received\nagain the same Surface can be used.  This is important because the \u0027tail\u0027\npointer in the SharedBufferClient is stored only on the client side, and needs\nto be the same for all the Surface objects wrapping an ISurface instance.  This\nsolves the problem by making there only be one Surface object wrapping an\nISurface per process.\n\nChange-Id: I4bf0b8787885c56277622fca053022d2bb638902\n"
    },
    {
      "commit": "eec69d2923636b2aaa51df93bacc2b3bbb742736",
      "tree": "d9eba8c7d89a11b94c2bb6206e014c17575fecc6",
      "parents": [
        "b0374a0e22756d956f8ebf2b19b1139e9e5e3384",
        "e33348ba54cd68d6936cffd4507037c14d4b10c2"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 00:14:38 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 16 00:14:38 2010 -0700"
      },
      "message": "Merge \"Fix bug with phantom input windows.\" into gingerbread"
    },
    {
      "commit": "b0374a0e22756d956f8ebf2b19b1139e9e5e3384",
      "tree": "d43e4cfd91056deba883fe8fa1e0237f7cccc840",
      "parents": [
        "bd623daff1f261a0e794f059d90ba5907eb5a89a",
        "76c40f74ced0b034a534ebc31ab9616425d3e711"
      ],
      "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": "e33348ba54cd68d6936cffd4507037c14d4b10c2",
      "tree": "1429dd836a48b3f49ee2a27623ff47b5c272c827",
      "parents": [
        "bd623daff1f261a0e794f059d90ba5907eb5a89a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 23:54:05 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 00:02:48 2010 -0700"
      },
      "message": "Fix bug with phantom input windows.\n\nAdd dumpsys integration for the native input dispatcher.\nAdd some InputDevice API stubs.\nAdd an appendFormat helper method to String8 for printf style\nstring formatting mainly for debugging purposes.\nUse generic ArrayList\u003cWindowState\u003e everywhere in WindowManagerService\nto eliminate unnecessary casts all over.\n\nChange-Id: I9d1e3bd90eb7222d10620200477f11b7bfd25e44\n"
    },
    {
      "commit": "2c6081ce3593712f30dacd990a97209c791d6ced",
      "tree": "4808bc521c207ea11ec0daceb98f77a6b47b00a0",
      "parents": [
        "c5ed5910c9ef066cec6a13bbb404ec57b1e92637"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 15 17:44:53 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 15 22:05:33 2010 -0700"
      },
      "message": "Implement native key pre-dispatching to IMEs.\n\nThis significantly re-works the native key dispatching code to\nallow events to be pre-dispatched to the current IME before\nbeing processed by native code.  It introduces one new public\nAPI, which must be called after retrieving an event if the app\nwishes for it to be pre-dispatched.\n\nCurrently the native code will only do pre-dispatching of\nsystem keys, to avoid significant overhead for gaming input.\nThis should be improved to be smarted, filtering for only\nkeys that the IME is interested in.  Unfortunately IMEs don\u0027t\ncurrently provide this information. :p\n\nChange-Id: Ic1c7aeec8b348164957f2cd88119eb5bd85c2a9f\n"
    },
    {
      "commit": "c5ed5910c9ef066cec6a13bbb404ec57b1e92637",
      "tree": "b06dfdac2d807dae78a2634007b6e627eefd0804",
      "parents": [
        "d9452ecd0ce6c8e0518055929ba1fd0712146405"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 18:48:53 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 18:32:33 2010 -0700"
      },
      "message": "Add support for new input sources.\n\nAdded several new coordinate values to MotionEvents to capture\ntouch major/minor area, tool major/minor area and orientation.\n\nRenamed NDK input constants per convention.\n\nAdded InputDevice class in Java which will eventually provide\nuseful information about available input devices.\n\nAdded APIs for manufacturing new MotionEvent objects with multiple\npointers and all necessary coordinate data.\n\nFixed a bug in the input dispatcher where it could get stuck with\na pointer down forever.\n\nFixed a bug in the WindowManager where the input window list could\nend up containing stale removed windows.\n\nFixed a bug in the WindowManager where the input channel was being\nremoved only after the final animation transition had taken place\nwhich caused spurious WINDOW DIED log messages to be printed.\n\nChange-Id: Ie55084da319b20aad29b28a0499b8dd98bb5da68\n"
    },
    {
      "commit": "c4b204bdc4ab974f1f96814c93d8eaa750c15122",
      "tree": "0749fd997f18ca34067b8704062c22cc13d6cfbb",
      "parents": [
        "2c40582a6c3a5781b39d0504d5aa8934982989d2",
        "727de40c6bc7c6521a0542ea9def5d5c7b1c5e06"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Jul 15 15:42:12 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 15 15:42:12 2010 -0700"
      },
      "message": "Merge \"More StrictMode work, keeping Binder \u0026 BlockGuard\u0027s thread-locals in-sync.\" into gingerbread"
    },
    {
      "commit": "6cce32b6adbb3a9725fc730ba0e0068a74657e60",
      "tree": "659b099eb08109f3e4e51e184d929f392928e722",
      "parents": [
        "d6343c26b8580f61a257a3045bfa124049201116"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jul 12 18:21:36 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 15 14:28:21 2010 -0700"
      },
      "message": "Add native C APIs for working with the Asset Manager\n\nChange-Id: I493b142c4b35e5cc1a1e85283bb5dfb306a6d261\n"
    },
    {
      "commit": "727de40c6bc7c6521a0542ea9def5d5c7b1c5e06",
      "tree": "0d2f0f400211efbaf131020d7c4d38e647f5bbe3",
      "parents": [
        "d6343c26b8580f61a257a3045bfa124049201116"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Wed Jul 07 16:06:39 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Jul 15 13:18:05 2010 -0700"
      },
      "message": "More StrictMode work, keeping Binder \u0026 BlockGuard\u0027s thread-locals in-sync.\n\nChange-Id: Ia67cabcc17a73a0f15907ffea683d06bc41b90e5\n"
    },
    {
      "commit": "76c40f74ced0b034a534ebc31ab9616425d3e711",
      "tree": "b33179a46bde9354636c76597b712a03d923547b",
      "parents": [
        "c98e431119867dbc4ae3da52d5c374607c0f67b9"
      ],
      "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": "d6a85a21418338a7797bff731fa7a551f62a9e86",
      "tree": "31cb24d80ec578524f77f82cd54f19fc2964e60a",
      "parents": [
        "562124e84d8ae63b614b14ba257680571091ef1f",
        "52d13f01a60f04d5a8a181ceb5400e32aee5637d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 15 11:16:08 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 15 11:16:08 2010 -0700"
      },
      "message": "Merge \"Support user-supplied timescales for authoring\" into gingerbread"
    },
    {
      "commit": "24651682edaf71e8a826f23a7ea09bc97c8072c4",
      "tree": "d3721d203440aaa3d8ac67890bf170a84e832b53",
      "parents": [
        "4055b780bb7e85abcf4754b84e50bf407c45bec8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 18:41:18 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 18:43:19 2010 -0700"
      },
      "message": "added BinderService\u003c\u003e template to help creating native binder services\n\nChange-Id: Id980899d2647b56479f8a27c89eaa949f9209dfe\n"
    },
    {
      "commit": "52d13f01a60f04d5a8a181ceb5400e32aee5637d",
      "tree": "ce4e0c9f23c36ddeb447ac8156cfb91034bc807a",
      "parents": [
        "ed86eaa7301d5509bce38dffce3f8ef11e4e4cd0"
      ],
      "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": "c9a11088e503b9e3ae52a3f671b2d21f5cd54f06",
      "tree": "d6841ee8f8cf79e7079bfb0f53dc053cc5bd670d",
      "parents": [
        "38eea8bf990540360b45b963195a7766c30b55d2",
        "b957b9d63c88efd3a961759424987b99219adeed"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 16:32:04 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 14 16:32:04 2010 -0700"
      },
      "message": "Merge \"first step at implementing the native sensor support\" into gingerbread"
    },
    {
      "commit": "97eb728aef51646b86925557a36732598e3fbaa1",
      "tree": "a37aedae3a4c1095b7777e46bacb235d20dc8c4f",
      "parents": [
        "36ff93aa1f489e6af6c2acce38beb0bffd6b8f8a"
      ],
      "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": "b957b9d63c88efd3a961759424987b99219adeed",
      "tree": "930432d7a5ca739d27d494734de339a938ec7fb6",
      "parents": [
        "e558010a623ead3564fe4d656a5963bf05c17edd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 13 22:21:56 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 13 22:21:56 2010 -0700"
      },
      "message": "first step at implementing the native sensor support\n\nin this commit:\n- implemented the C stub\n- implemented the binder interfaces involved\n- implemented most of the C++ client side\n\nmissing:\n- SensorManager cannot connect to the SensorServer yet\n(because there is no SensorServer yet)\n\nChange-Id: I75010cbeef31c98d6fa62fd5d388dcef87c2636b\n"
    },
    {
      "commit": "d76b67c340d1564abf8d14d976fdaf83bf2b3320",
      "tree": "59c0fff396681a622480a84f4f9c74d188970a11",
      "parents": [
        "fd03582995e0fce963dd0fa0669e3211b74c0dd7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 13 17:48:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 13 18:36:46 2010 -0700"
      },
      "message": "IME events are now dispatched to native applications.\n\nAnd also:\n\n- APIs to show and hide the IME, and control its interaction with the app.\n- APIs to tell the app when its window resizes and needs to be redrawn.\n- API to tell the app the content rectangle of its window (to layout\n  around the IME or status bar).\n\nThere is still a problem with IME interaction -- we need a way for the\napp to deliver events to the IME before it handles them, so that for\nexample the back key will close the IME instead of finishing the app.\n\nChange-Id: I37b75fc2ec533750ef36ca3aedd2f0cc0b5813cd\n"
    },
    {
      "commit": "fd03582995e0fce963dd0fa0669e3211b74c0dd7",
      "tree": "8f7fe0e2a437620a7cbe4e494f71fe8ccfdbe2eb",
      "parents": [
        "c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 30 16:10:35 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jul 13 17:04:57 2010 -0700"
      },
      "message": "Add initial gamepad support.\n\nChange-Id: I0439648f6eb5405f200e4223c915eb3a418b32b9\n"
    },
    {
      "commit": "c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6",
      "tree": "a0cbda85dcb855134d89f4f1b27f0457f4ee5e7f",
      "parents": [
        "70c6c9a1e2240e82d8eb442b34efa9629ef2bba4"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 13 15:33:35 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 13 15:45:18 2010 -0700"
      },
      "message": "Add Parcel::readExceptionCode() and Parcel::writeNoException()\n\nAdd native Parcel methods analogous to the Java versions.\n\nCurrently, these don\u0027t do much, but upcoming StrictMode work changes\nthe RPC calling conventions in some cases, so it\u0027s important that\neverybody uses these consistently, rather than having a lot of code\ntrying to parse RPC responses out of Parcels themselves.\n\nAs a summary, the current convention that Java Binder services use is\nto prepend the reply Parcel with an int32 signaling the exception\nstatus:\n\n     0: no exception\n     -1: Security exception\n     -2: Bad Parcelable\n     -3: ...\n     -4: ...\n     -5: ...\n\n... followed by Parceled String if the exception code is non-zero.\n\nWith an upcoming change, it\u0027ll be the case that a response Parcel can,\nnon-exceptionally return rich data in the header, and also return data\nto the caller.  The important thing to note in this new case is that\nthe first int32 in the reply parcel *will not be zero*, so anybody\nmanually checking for it with reply.readInt32() will get false\nnegative failures.\n\nShort summary: If you\u0027re calling into a Java service and manually\nchecking the exception status with reply.readInt32(), change it to\nreply.readExceptionCode().\n\nChange-Id: I23f9a0e53a8cfbbd9759242cfde16723641afe04\n"
    },
    {
      "commit": "7d850f23c857fe0c0deec9b9ea593d3029665a16",
      "tree": "c5b885b890b6707a42a0f54cb4f2e3d4b7e6eacd",
      "parents": [
        "e339464f1c8efe7e53b761cf44ff5be6e537ecad"
      ],
      "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": "289b9b62372ef52a06113b83dfb870e2c2fb325a",
      "tree": "e444446a331fdbe9b936a0c2570a609675468d05",
      "parents": [
        "2aaa9e9fc5ddc05cedbe530c7a41eca0e3a62b7a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 09 11:44:11 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 09 16:58:19 2010 -0700"
      },
      "message": "Add ANativeWindow API for directly drawing to the surface bits.\n\nAlso other cleanup and fixes:\n\n- We now properly set the default window format to 565.\n- New APIs to set the window format and flags from native code.\n- Tweaked glue for simpler handling of the \"destroy\" message.\n- Um, other stuff.\n\nChange-Id: Id7790a21a2fa9a19b91854d225324a7c1e7c6ade\n"
    },
    {
      "commit": "929642ee003895b6e4e85ad7e43c7c6f01b29020",
      "tree": "94498d866ffcb165ae3778ab0e5ae193257f71e4",
      "parents": [
        "fd84f97af4b44d54bba53bb85b31a6dbce07f6e2"
      ],
      "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": "fd84f97af4b44d54bba53bb85b31a6dbce07f6e2",
      "tree": "e44af27dff0ecb8b4a9a368c333687d579c0c080",
      "parents": [
        "f6120cf431804e072f34699a5d8a3fae62492cee"
      ],
      "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": "85448bbecd4e0909eecfab15b7c3605f114d0427",
      "tree": "3380a9a85e321dc7ee4397dc1b4f22564af117d8",
      "parents": [
        "f7d2b4a2e096ae1f8ac3a2ed8b2f0e30a237f732"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 07 14:27:31 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 08 11:06:59 2010 -0700"
      },
      "message": "Add new glue code for writing native apps.\n\nThis factors out the boiler-plate code from the sample\napp to a common glue code that can be used for everyone\nwriting this style of app: a dedicated app thread that\ntakes care of waiting for events and processing them.\n\nAs part of doing this, ALooper has a new facility to allow\nregistration of fds that cause ALooper_pollOnce() to return\nthe fd that has data, allowing the app to drive the loop\nwithout callbacks.  Hopefully this makes some people feel better. :)\n\nAlso do some other cleanup of the ALooper API, plus some\nactual documentation.\n\nChange-Id: Ic53bd56bdf627e3ba28a3c093faa06a92be522b8\n"
    },
    {
      "commit": "c9535de8e398d766c95144f9a831f34b2cecfd91",
      "tree": "a7f8dc10f01f25edfa4a339304d6d007c24b7ea5",
      "parents": [
        "b17f4dcfb3edba25bd8c30e60449b9bbcd600a57",
        "7cee34a051eb0087322c8b965e498f88b1aa52d3"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 07 18:14:13 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 18:14:13 2010 -0700"
      },
      "message": "Merge \"Add OBB file helper class\" into gingerbread"
    },
    {
      "commit": "b17f4dcfb3edba25bd8c30e60449b9bbcd600a57",
      "tree": "0820fc428a7c001e5eb8796ff806ee78f1b1638f",
      "parents": [
        "f3f25bf80b7d21f12442da8f82d17c79dd371692",
        "00fa7bdd69f0868fd17ea7c881c771d785b2fbbd"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Wed Jul 07 17:43:12 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 17:43:12 2010 -0700"
      },
      "message": "Merge \"More native input dispatch work.\" into gingerbread"
    },
    {
      "commit": "dacabf97c609a040ada857a7da6c560097448ae3",
      "tree": "feb67557f7f0120296bcc341d18aed20dce2b8d7",
      "parents": [
        "4b9baa69f3b3146edbc623f0670103265c4f4fe5",
        "df9b81ced437b11f8a3fcf4ba3ea6af703d121e2"
      ],
      "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": "81c929a684aefd7e18e04bcfd54407235b89a37d",
      "tree": "203523128c9f2cf1834901c1a1154989b2675725",
      "parents": [
        "2e6aff8e19ce8292a36fe211f8051dccf1fb9670"
      ],
      "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": "df9b81ced437b11f8a3fcf4ba3ea6af703d121e2",
      "tree": "c80b989df744ea74f62c800a8848813174792cc2",
      "parents": [
        "31e0ffe8444b70500cac319da084c4c45e62aca2"
      ],
      "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": "7cee34a051eb0087322c8b965e498f88b1aa52d3",
      "tree": "08bb1d6c8850bb688b4eddf7e1a24888719b5e52",
      "parents": [
        "2e6aff8e19ce8292a36fe211f8051dccf1fb9670"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Jun 01 10:34:29 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 07 09:57:50 2010 -0700"
      },
      "message": "Add OBB file helper class\n\nObbFile is a binary blob that will be used in packaging large files\nwith smaller APKs.\n\nChange-Id: Ib1594346cfa2f49113de6565af77c24efbd89d63\n"
    },
    {
      "commit": "57576c1cae63bebfa7ed880ab510e06f312586ee",
      "tree": "2cace8bce9a542422f2c3b8477f6e32dbecfd61e",
      "parents": [
        "9406f626b2d8f64a084d41f6ea379e539b162a55"
      ],
      "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": "9406f626b2d8f64a084d41f6ea379e539b162a55",
      "tree": "fa27834c4f23051b74b633dbde5376c1b2271f7a",
      "parents": [
        "682674154e3fe88f6061245145f934f25f1a2eb8",
        "058319eb73aa1d5c3b3b4b79316198e7a49484f1"
      ],
      "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": "00fa7bdd69f0868fd17ea7c881c771d785b2fbbd",
      "tree": "6fff8ad404e57af316c6ce5a20020dc209eb3cc6",
      "parents": [
        "8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 02 15:37:36 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Jul 03 19:23:01 2010 -0700"
      },
      "message": "More native input dispatch work.\n\nRemoved old input dispatch code.\nRefactored the policy callbacks.\nPushed a tiny bit of the power manager state down to native.\nFixed long press on MENU.\nMade the virtual key detection and cancelation a bit more precise.\n\nChange-Id: I5d8c1062f7ea0ab3b54c6fadb058c4d5f5a9e02e\n"
    },
    {
      "commit": "682674154e3fe88f6061245145f934f25f1a2eb8",
      "tree": "a105ce9f0ae4d88732bfc8fb1a52d4474f17bc86",
      "parents": [
        "8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 02 18:52:01 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 02 18:57:02 2010 -0700"
      },
      "message": "Add new native Looper API.\n\nThis allows us to avoid exposing the file descriptor of\nthe event queue; instead, you attach an event queue to\na looper.  This will also should allow native apps to be\nwritten without the need for a separate thread, by attaching\nthe event queue to the main thread\u0027s looper and scheduling\ntheir own messages there.\n\nChange-Id: I38489282635895ae2cbfacb88599c1b1cad9b239\n"
    },
    {
      "commit": "058319eb73aa1d5c3b3b4b79316198e7a49484f1",
      "tree": "f8bbf233ed74478f9da62ee7a3d7eb5e186b60ee",
      "parents": [
        "5460d126f024a8d6597ce4eb127b51c101724960"
      ],
      "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": "2cfd8198cc4e1dcdcae52ae8a0c86b871c87a27e",
      "tree": "a91178009f7fe7f594facd47a37eac213f84e297",
      "parents": [
        "5460d126f024a8d6597ce4eb127b51c101724960",
        "4f104d99d8657fd3fef675eb2a3e84ba9f5870e4"
      ],
      "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": "4f104d99d8657fd3fef675eb2a3e84ba9f5870e4",
      "tree": "05d4404abb8b55dbd7e2af313c9ddb21c6855b73",
      "parents": [
        "a2dd4c17bbe47876b909b09f54505deda379d2b4"
      ],
      "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": "5460d126f024a8d6597ce4eb127b51c101724960",
      "tree": "13659bb9870ce956267d30e52d3e22fcb2c5fa41",
      "parents": [
        "3ef6ebe874022c4ec8fbb00067833a6f636c1e2f",
        "03431d2fa6ee51c122a987322cf1dbd4f89a077b"
      ],
      "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": "03431d2fa6ee51c122a987322cf1dbd4f89a077b",
      "tree": "44488bf8d7a89250d1b391d22d9ca8d5d90ad63d",
      "parents": [
        "a2dd4c17bbe47876b909b09f54505deda379d2b4"
      ],
      "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": "45bac57aa00281e6b45756c691c588bdaf762521",
      "tree": "d8640827fb6576adc593b875bfb490fe5eef849d",
      "parents": [
        "a2dd4c17bbe47876b909b09f54505deda379d2b4"
      ],
      "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": "09b9005769f2b717f637131578ce6cfa6bd62bd9",
      "tree": "9f079a79030d894e6c81f919799a379e4fda3a9f",
      "parents": [
        "160edb3645f8b7012bab70ae6e6e8c4a5733082b"
      ],
      "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": "c6e1d88022db800773401c16803e1ab27fd01a7e",
      "tree": "cca803afe826f86faab92bdbb70e35f6d672a052",
      "parents": [
        "30fe6fa07a9b9c6e7498198608125add8eb40744",
        "8b49bd1a2f8117e1c22884f0150e72cbcf838f32"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 16:05:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 30 16:05:30 2010 -0700"
      },
      "message": "Merge \"Introduce official public NativeWindow type.\" into gingerbread"
    },
    {
      "commit": "8b49bd1a2f8117e1c22884f0150e72cbcf838f32",
      "tree": "ec6e43ed118268b09cbb61c8eed02c757e9602ed",
      "parents": [
        "3c80a4a044865bdf1289c7896baffa1c082d835c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 13:56:17 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 15:32:04 2010 -0700"
      },
      "message": "Introduce official public NativeWindow type.\n\nNot yet hooked up to anything in the NDK, but requires renaming\nthe existing android_native_window_t type everywhere.\n\nChange-Id: Iffee6ea39c93b8b34e20fb69e4d2c7c837e5ea2e\n"
    },
    {
      "commit": "d0097871828bb7d5d6eec06cadd92c2e3358849b",
      "tree": "c570862df0f2c38da96d8b88bb6ba10315810fc7",
      "parents": [
        "294c9fb8990ded73be52a3c1bfddbe1cebcd8b8e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 30 14:41:59 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 30 14:41:59 2010 -0700"
      },
      "message": "Fix injection of specially intercepted keys like HOME.\n\nThis change mainly unwinds a premature optimization in the\ndispatch pipeline.\nTo test HOME injection, run \u0027adb shell input keyevent 3\u0027.\n\nChange-Id: I1c4b7377c205da7c898014b8b07fc6dc1d46e4dd\n"
    },
    {
      "commit": "caad0a5c6318678902402362df1791d286636344",
      "tree": "211955c08aaa80b07583ff273a5fd86d1ccd5c97",
      "parents": [
        "24c737ccdd64475178d53677f90a300fcfbab79f",
        "c543a21a4021bf0e2f3817852d75184d01b76d62"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 30 11:32:31 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 30 11:32:31 2010 -0700"
      },
      "message": "Merge \"Support for vanilla YUV420sp \u003d\u003e RGB565 color conversion.\" into gingerbread"
    },
    {
      "commit": "3c80a4a044865bdf1289c7896baffa1c082d835c",
      "tree": "557c89a685e672e44f90f55660da1f989d00a113",
      "parents": [
        "92dbad8ab0c8e242c4c3e52c339ed3296ae7901c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 29 19:20:40 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 10:49:40 2010 -0700"
      },
      "message": "Implement default key handling for native code.\n\nThe native code now maintains a list of all keys that may use\ndefault handling.  If the app finishes one of these keys\nwithout handling it, the key will be passed back off to Java\nfor default treatment.\n\nChange-Id: I6a842a0d728eeafa4de7142fae573f8c11099e18\n"
    },
    {
      "commit": "c543a21a4021bf0e2f3817852d75184d01b76d62",
      "tree": "950bb162fcb11ef5b8fe9b39e76915ef3e646703",
      "parents": [
        "92dbad8ab0c8e242c4c3e52c339ed3296ae7901c"
      ],
      "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": "f7679a0493d59da8c759a6be639be5110c50fb98",
      "tree": "490dfab5ce66146fc6c95e2f1cd2122071e41e44",
      "parents": [
        "ddcb543ac8d9615ea78fbf8341949f54d86e6fbc",
        "c0ab2a64589b4cd49734a122b6ef976c7ef530e5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 29 17:24:10 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 29 17:24:10 2010 -0700"
      },
      "message": "Merge \"Added encoding parameters set up for H263 video encoder\" into gingerbread"
    },
    {
      "commit": "0b72e82c5f5d4ab709539c3490d6c7023f680dff",
      "tree": "c0b9adc3370bd600a9dc5bb8f4ffa4e6151d1977",
      "parents": [
        "5d7f6e614e7ead1fbe40a6886f78c31809bcbd40"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 29 16:52:21 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 29 16:52:21 2010 -0700"
      },
      "message": "Fix native input dispatch in the emulator.\n\nSet a default orientation of ROTATION_0.\nAdded some more careful checks based on whether we have valid\nabsolute axis information from the driver.\nReset key repeating during configuration changes since the keyboard\ndevice may have been removed.\n\nChange-Id: I685960828acffcb17595fc5683309e8064a76714\n"
    },
    {
      "commit": "c0ab2a64589b4cd49734a122b6ef976c7ef530e5",
      "tree": "f6ab79bf257897548e137f4680e35af2d613e775",
      "parents": [
        "e42b18677e11d27fa1d3eaa1ffcb1f98c5fc8cbf"
      ],
      "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": "2e9f93e8db509d5236229dc8540e0904c5dbb9f5",
      "tree": "9aa6aa2c4a59b808dd99604afb23eb5a0096d9a2",
      "parents": [
        "059f009d970fb37ac4e408dcf8e1d2d2cdcf0a84"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 28 15:27:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 29 10:43:54 2010 -0700"
      },
      "message": "Update native activity \u0026 event APIs to follow correct conventions.\n\nChange-Id: Ie64fb3a9c68bc9c117fa5621b75d1f609e304e0e\n"
    },
    {
      "commit": "31e0ffe8444b70500cac319da084c4c45e62aca2",
      "tree": "4501ea2d1336927e0d4d98e90f72213283cf656c",
      "parents": [
        "d4760c243fb129ebda43972c0fadf43a02c9849f",
        "349703effce5acc53ed96f7ed8556131f0c65e18"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Mon Jun 28 19:12:55 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 28 19:12:55 2010 -0700"
      },
      "message": "Merge \"Native input event dispatching.\" into gingerbread"
    },
    {
      "commit": "349703effce5acc53ed96f7ed8556131f0c65e18",
      "tree": "359217d5076e3005c724b2117a59ffec81e7a83b",
      "parents": [
        "f2b544f5ae7676f7ab4cdf3379b2ed3c60a65def"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 22 01:27:15 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 28 19:10:54 2010 -0700"
      },
      "message": "Native input event dispatching.\n\nTarget identification is now fully native.\nFixed a couple of minor issues related to input injection.\nNative input enabled by default, can be disabled by setting\nWindowManagerPolicy.ENABLE_NATIVE_INPUT_DISPATCH to false.\n\nChange-Id: I7edf66ed3e987cc9306ad4743ac57a116af452ff\n"
    },
    {
      "commit": "fe1bafecdecd49533c46521057c7c9eeb788d0fa",
      "tree": "5f00f3fb509553d049c2f93e7474562ac7aec94c",
      "parents": [
        "de1057c4a6aa41c3b88bcc4fd49d70f973f1d9eb"
      ],
      "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": "09936ed19263854e937198af03d9805a8b669ca1",
      "tree": "42f5150672ab2cdb3ab27c3f19a9a5cec92dc798",
      "parents": [
        "1cb3fdc91e1b82a5afe064714a1b530cc05577a7"
      ],
      "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": "1cb3fdc91e1b82a5afe064714a1b530cc05577a7",
      "tree": "9129d963d6743c076666de147d2f8a8f961efdd0",
      "parents": [
        "50dc3bca5afbce911636b3ba15ee953bc203a9d6",
        "51a6aef53c2421fe9ad157e7d4b0158f496abf26"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 25 13:28:06 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 25 13:28:06 2010 -0700"
      },
      "message": "Merge \"Fix a bug in sp\u003c\u003e and wp\u003c\u003e which could cause memory corruptions\" into gingerbread"
    },
    {
      "commit": "8e103da1f1b0656e3427b34b75f02d7ddf6073d5",
      "tree": "44443c8571998e48ec7ad97414418379b6809ff1",
      "parents": [
        "330dd304a471d260a73e342a240921c03c825f99",
        "53334cdb81bab4a4dfd0a41d2ef50709015a36c8"
      ],
      "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": "53334cdb81bab4a4dfd0a41d2ef50709015a36c8",
      "tree": "1dfd6bd330fac24a95168349f8d96af0f058fc7f",
      "parents": [
        "0379118827ef7e81a70e88e5910f5c7536d8b945"
      ],
      "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": "6feaa46496bae85adbe10e84611592612f898081",
      "tree": "47300b5ee67684405f2c5bea5d5642f50455d072",
      "parents": [
        "5a905ceb063bd31170d3d869efcd051cbd8e4e13"
      ],
      "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": "57e7f83c0336db3f03666f077bce4c2692a88cf6",
      "tree": "5bf133cff79513faeec94e9fc9650e8ac6973196",
      "parents": [
        "7fd22aab4506f65b7929ed1030bdd71c56f7db77"
      ],
      "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": "51a6aef53c2421fe9ad157e7d4b0158f496abf26",
      "tree": "cb0995620a549cb62cb1b090e3dc01446546a032",
      "parents": [
        "081bc5c47d8a980e6eafa70ddafcd89981586391"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 24 21:49:02 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 24 21:49:02 2010 -0700"
      },
      "message": "Fix a bug in sp\u003c\u003e and wp\u003c\u003e which could cause memory corruptions\n\nwhen assigning a smart pointer to another one, we need to make\nsure to read all the data we need from the right-hand-side\nreference (the assignee) before we decRef the assigned.\n\nThis bug would cause linked-list of smart-pointers to fail\nmiserably.\n\nChange-Id: Ibb554c15fddf909f7737c632b7c80322e80ea93f\n"
    },
    {
      "commit": "a2549bb644d8ca4b0209d6d2f0c4160521789aa9",
      "tree": "ec2bc565fb971518d2977f488cc5574243b63819",
      "parents": [
        "51e895f055f76ad0114a18e1b754a1475a62c524",
        "8d65dd26530c7559082bd738cf930e2806158ab2"
      ],
      "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": "8d65dd26530c7559082bd738cf930e2806158ab2",
      "tree": "5913164705ac85e30dc983867bc7d4ae31418525",
      "parents": [
        "1e4b9f3936d6f357e89360293e05a0e16d5fa440"
      ],
      "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": "39a0b21c65c3bbadc9a3c6b5346b45fac842d0f7",
      "tree": "10f2028a5443198543244d7e43a355c6b6333d08",
      "parents": [
        "73ccafb5b843cdcf9c8f761fc72a69b4b7942aaf"
      ],
      "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": "2c2ce8e53f5eb94916a5d0f40b2877cc7551870d",
      "tree": "9d44c319e02850d9cd51e9a8c94f043625cb7343",
      "parents": [
        "3238302b1819bb384b79402c0106a2bdfc3f35d0",
        "619346f902241736d933657a4fe10f10c50a1ba8"
      ],
      "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": "3238302b1819bb384b79402c0106a2bdfc3f35d0",
      "tree": "e7df1b81e1117b7083fa6561a052aa6de144d3c6",
      "parents": [
        "d1559d6b2db1d7e1718a15dc43a82450de2934db",
        "97d61f751899d3d68f53fb14d0025766bf1be3f7"
      ],
      "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": "619346f902241736d933657a4fe10f10c50a1ba8",
      "tree": "f80b46008c2d457def70dfab095a18d6eb61fc09",
      "parents": [
        "d1559d6b2db1d7e1718a15dc43a82450de2934db"
      ],
      "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": "97d61f751899d3d68f53fb14d0025766bf1be3f7",
      "tree": "d51681169ac25ab1014a96396f56c5d1ba7d16f9",
      "parents": [
        "ef8f96a717554a85aa63a60f8c61be2afbd12a5c"
      ],
      "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": "750600a187f699ead85ef026ab33dc2bdd1d2c29",
      "tree": "0c55c9ba12aeea2a3e1dde09bb437d8761a07920",
      "parents": [
        "e24a60aa4670fb835772b23ff665bb368fa65e30",
        "b54a91784291bf14b1f486f7d4349774073593c5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 22 14:28:15 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 22 14:28:15 2010 -0700"
      },
      "message": "Merge \"Single track optimization\" into gingerbread"
    },
    {
      "commit": "b54a91784291bf14b1f486f7d4349774073593c5",
      "tree": "b4d586ddb802ab495b884811c5bf13cdf7ee7639",
      "parents": [
        "ef1c48d6a976f56bf7f7a41a5b2e8725af988362"
      ],
      "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": "a95e4cb62f3642cb190d032dbf7dc40d9ecc6973",
      "tree": "ae4437444a3d3ebeff48dabfd1e9c11fc14620ac",
      "parents": [
        "ef730e6ececa96a3e0576140eea707f7c48cd66c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 18 18:09:33 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 22 11:21:50 2010 -0700"
      },
      "message": "First stab at attaching native event dispatching.\n\nProvides the basic infrastructure for a\nNativeActivity\u0027s native code to get an object representing\nits event stream that can be used to read input events.\n\nStill work to do, probably some API changes, and reasonable\ndefault key handling (so that for example back will still\nwork).\n\nChange-Id: I6db891bc35dc9683181d7708eaed552b955a077e\n"
    },
    {
      "commit": "e5671bfe51aeaac823cd94f8e04f01e37b4c2cd6",
      "tree": "2226b45691ea1b1e74965a106a07e9f509e35f7f",
      "parents": [
        "613dde4aa651e11dac3db859723cc6faf8fc0a82",
        "36e573bf7db5888f92c52eda26e0771aaa2406e4"
      ],
      "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": "f602d362ba4bb3adbf1eb4e38a794fb14274293a",
      "tree": "d2b5da88fbc52e10a2c9b09f9027b32c539c5022",
      "parents": [
        "07ccf5ad7edfeeebb79208ad3e8a52917fe038a8"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Jun 20 14:28:16 2010 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jun 22 09:26:41 2010 -0400"
      },
      "message": "GPS: remove GpsEventThread from GpsLocationProvider\n\nRather than polling for events from the native code in an event thread,\nwe now require the GPS HAL libraries to call our callbacks from a thread\nthat is registered with the JVM to call directly into Java.\nThis eliminates a thread from our code and removes one step in the chain\nof message passing from the GPS to the Location Manager client.\n\nChange-Id: I2745a157690310ba9a699a8369f54a7366c6b1ba\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "36e573bf7db5888f92c52eda26e0771aaa2406e4",
      "tree": "bb100aa50b9fb34e74898c6b7e41b96cfc57d3e2",
      "parents": [
        "04b243d0f5470cfaf67cce5534f9a9fb2e30855c"
      ],
      "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": "ef8f96a717554a85aa63a60f8c61be2afbd12a5c",
      "tree": "0a6550aabca59a3e91a5a3d88bdd5351ce14d043",
      "parents": [
        "d91ac98a8ead216b12af6df61d90229b74c7f0f6",
        "27b3a7a75960d026655f3acd1de8a672e80a5776"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Jun 21 15:31:01 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 21 15:31:01 2010 -0700"
      },
      "message": "Merge \"Start of work on passing around StrictMode policy over Binder calls.\" into gingerbread"
    },
    {
      "commit": "7fbdc84e87dd3a0e196b9803bb04495d11e9cb8a",
      "tree": "32691f639ef71365b602795db215f11f457397a5",
      "parents": [
        "e47e3f3855a062ba0338a57eeda2f12a0f7a1fa8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 17 20:52:56 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 21 13:59:34 2010 -0700"
      },
      "message": "More native input event dispatching.\n\nAdded ANRs handling.\nAdded event injection.\nFixed a NPE ActivityManagerServer writing ANRs to the drop box.\nFixed HOME key interception.\nFixed trackball reporting.\nFixed pointer rotation in landscape mode.\n\nChange-Id: I50340f559f22899ab924e220a78119ffc79469b7\n"
    },
    {
      "commit": "27b3a7a75960d026655f3acd1de8a672e80a5776",
      "tree": "cc5036a00b976b7757f26212abf49ed11f779cd9",
      "parents": [
        "f25c560dcdc0c04e11152fff11f521dae03522cd"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Jun 18 13:07:53 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Jun 21 12:56:35 2010 -0700"
      },
      "message": "Start of work on passing around StrictMode policy over Binder calls.\n\nThis is (intendend to be) a no-op change.\n\nAt this stage, Binder RPCs just have an additional uint32 passed around\nin the header, right before the interface name.  But nothing is actually\ndone with them yet.  That value should right now always be 0.\n\nThis now boots and seems to work.\n\nChange-Id: I135b7c84f07575e6b9717fef2424d301a450df7b\n"
    },
    {
      "commit": "2ce999fce785eb34b3a157db5ab5e17d31e2ea33",
      "tree": "b5d2e751e6b07754a049033f66c0ec379a810f2f",
      "parents": [
        "04b243d0f5470cfaf67cce5534f9a9fb2e30855c",
        "bd240c2737913d6ed1982788699f93bbc52330c0"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 21 08:54:19 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 21 08:54:19 2010 -0700"
      },
      "message": "am bd240c27: media: add AudioTrack::getMinFrameCount().\n\nMerge commit \u0027bd240c2737913d6ed1982788699f93bbc52330c0\u0027 into gingerbread\n\n* commit \u0027bd240c2737913d6ed1982788699f93bbc52330c0\u0027:\n  media: add AudioTrack::getMinFrameCount().\n"
    },
    {
      "commit": "bd240c2737913d6ed1982788699f93bbc52330c0",
      "tree": "8d1a1ddc7dd49b8d6671b7e16da158c330d8997b",
      "parents": [
        "01f7ac64488027492b2909b99d70491e7a391015"
      ],
      "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": "5c225b1680e696ae8bbf505a1997d6f720672f74",
      "tree": "932326fd02ee91d8a64adfcc9415027646c56563",
      "parents": [
        "3a0146cd29fae3c5bc29d8d535d67826284f8cc9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 16 01:53:36 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 17 13:27:16 2010 -0700"
      },
      "message": "Even more native input dispatch work in progress.\n\nAdded more tests.\nFixed a regression in Vector.\nFixed bugs in pointer tracking.\nFixed a starvation issue in PollLoop when setting or removing callbacks.\nFixed a couple of policy nits.\n\nModified the internal representation of MotionEvent to be more\nefficient and more consistent.\n\nAdded code to skip/cancel virtual key processing when there are multiple\npointers down.  This helps to better disambiguate virtual key presses\nfrom stray touches (such as cheek presses).\n\nChange-Id: I2a7d2cce0195afb9125b23378baa94fd2fc6671c\n"
    },
    {
      "commit": "9c3cda04d969912bc46184f2b326d1db95e0aba5",
      "tree": "cdeb4a4bfa83aa335ab840969fe214058a0d566e",
      "parents": [
        "60e8c33d6f6caad2e963e91abca16a85cd3be82a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 15 01:31:58 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 15 16:43:18 2010 -0700"
      },
      "message": "More work in progress on native events.\n\nRefactored the code to eliminate potential deadlocks due to re-entrant\ncalls from the policy into the dispatcher.  Also added some plumbing\nthat will be used to notify the framework about ANRs.\n\nChange-Id: Iba7a10de0cb3c56cd7520d6ce716db52fdcc94ff\n"
    },
    {
      "commit": "01f7ac64488027492b2909b99d70491e7a391015",
      "tree": "109dc569fe04f88f7ae8525708095cf3f332c37b",
      "parents": [
        "724c52244423feced2677fbd1f905e0b8b0639f2",
        "948235c06ed0d49190b2f49d9299b473c4dd61a9"
      ],
      "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": "43a9527c54b71cb17515591af37eeeef6c22e3ff",
      "tree": "9a14a3a9ba426fabd07a761a5cf0e0a4714428cb",
      "parents": [
        "46b9ac0ae2162309774a7478cd9d4e578747bfc2"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 19:35:19 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 19:35:19 2010 -0700"
      },
      "message": "Fix include paths.\n\nChange-Id: Ifda45688f9f02710a74d5d7a7d902bacf1441e2e\n"
    },
    {
      "commit": "46b9ac0ae2162309774a7478cd9d4e578747bfc2",
      "tree": "46ad021a41e25ca9f1250b709a29b724dc6b504d",
      "parents": [
        "f62c57d684b83df7d2817db976c0afdb500ae92a"
      ],
      "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": "08c7473ce9b601e170fd79c530f106bf74277a0f",
      "tree": "927414b38c952d56b90dee681efd48060747add1",
      "parents": [
        "e577e87a2d80890190f14edc4a5caf70d7c566bf"
      ],
      "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": "948235c06ed0d49190b2f49d9299b473c4dd61a9",
      "tree": "90cdddff4282d9bbf2fc7a4b0ce1cafed058daa8",
      "parents": [
        "700a95068e7c774963be318c91df5bf40d765397"
      ],
      "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": "b8bb78f54b48868465a9d69d65fda08524ab5ae1",
      "tree": "fadbdd8dd989ce2b3b29cd780fabc91d7f98dd09",
      "parents": [
        "2fd73a452268d2acb6e72a1d23a422085ed3c510"
      ],
      "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": "4d61f602bf67fe61256c23f090d6119992ad5160",
      "tree": "18eaea2ed99dea39f19ea3fe9836be3fc4503ba3",
      "parents": [
        "a6ef19a8f462ee1346a6c5ec21d047fdd5162b7e"
      ],
      "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": "c81d2c12de7e5c7097f5332f8ece295b9a699e28",
      "tree": "762a1657950caba1cd7bc3b0edf935e09224b19f",
      "parents": [
        "438d0595121a7a2cdf19741e76e3c0e21a5c173d",
        "b206319122c73c487ad2798b8090c9edcd41f4e5"
      ],
      "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": "1f24b30fe4b5d8e4050d30c92cf81cfa599cf991",
      "tree": "036faa2a163e78a7ea8f609e7f41c5f152b9ad75",
      "parents": [
        "66b89a62aa6d5599ad4d11d891b5028587d4c6be"
      ],
      "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": "b206319122c73c487ad2798b8090c9edcd41f4e5",
      "tree": "7e082d2614a22a33512148ec17ef05feef52f582",
      "parents": [
        "66b89a62aa6d5599ad4d11d891b5028587d4c6be"
      ],
      "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": "5e14010b1fc066dfcbc0a577d59492687c99667d",
      "tree": "221d256bf258e97b3e7e7c953a679a9104792374",
      "parents": [
        "1debc66521f699bbf0a8eb80cababaef8bc63607"
      ],
      "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": "1244eab2cea41df1db4eeb930fddbb9e67ff7691",
      "tree": "931554aa3de80d1bbf85113303be1827c5e5bbe8",
      "parents": [
        "dae9fd31907c62712f7a96bb2a8e288b0cca57c2"
      ],
      "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": "dae9fd31907c62712f7a96bb2a8e288b0cca57c2",
      "tree": "11a43e820abb66a26beace440e94dc7df6f54529",
      "parents": [
        "31b1975890d0159ab5ee060c94084461f8b74bd8"
      ],
      "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": "4f501f0f2b71b69cadbdb96c71e83a06751e7f0e",
      "tree": "6bec0a78ccd9c1f2fbc6b1537324aef8ffc24121",
      "parents": [
        "526f2ff1a5f648a2ae3c872acc085b2a16a6a34c"
      ],
      "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": "a557b24ac4dd568d86b08753f7c0361d04f80d46",
      "tree": "1f74017b413d818c3473e559451e9c45cd613acb",
      "parents": [
        "455d41002e17de93b1486b2b2a97a71a0d62903b"
      ],
      "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": "455d41002e17de93b1486b2b2a97a71a0d62903b",
      "tree": "ea51f57aa417fd7b5596355897e84a18352fb386",
      "parents": [
        "b7bb3b3df6cb3743ee43b71455d9525762e55b45",
        "7d2f703649e270b635018f8b7219bb0e1d62a2e5"
      ],
      "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": "7d2f703649e270b635018f8b7219bb0e1d62a2e5",
      "tree": "83ad53ba7bc4382f82258eebf5061083796dcd2d",
      "parents": [
        "a8ebe8b3f5aea0d3f09a62d6d255f99c1f911f7b"
      ],
      "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": "7a68d3686aace4781ee6c25d8ab8704bebee34af",
      "tree": "481ffa2e47ec1ca726e7043219e2f0e60039f81f",
      "parents": [
        "a8ebe8b3f5aea0d3f09a62d6d255f99c1f911f7b",
        "c2f328d0d2821e402823d6e17589da2849b67d0d"
      ],
      "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": "fae5cb2b356a1fef172b43066180a7ab4c32dbac",
      "tree": "55e73b81c3a666ab1165603238e7ca43495ff99c",
      "parents": [
        "7623da435e45c7c03ef6a00a43675deb6645f070"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 04 18:26:32 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 04 18:57:41 2010 -0700"
      },
      "message": "optimize Surface.readFromParcel()\n\nthis is called for each relayout() and used to create a full Surface (cpp)\nwhich in turn did some heavy work (including an IPC with surfaceflinger),\nmost of the time to destroy it immediatelly when the returned surface\n(the one in the parcel) was the same.\n\nwe now more intelligentely read from the parcel and construct the new\nobject only if needed.\n\nChange-Id: Idfd40d9ac96ffc6d4ae5fd99bcc0773e131e2267\n"
    }
  ],
  "next": "7623da435e45c7c03ef6a00a43675deb6645f070"
}
