)]}'
{
  "log": [
    {
      "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": "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"
    },
    {
      "commit": "7623da435e45c7c03ef6a00a43675deb6645f070",
      "tree": "b789cdc5e60ccc4474bd319b1dbb4e1a7e3f3858",
      "parents": [
        "593c05ce7bcf7b6d94bd8c50da2b818cf05116b1"
      ],
      "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": "cefb01abbfdb175e0c4b298126bcb4a98bf6371f",
      "tree": "fdf01eb997e5a8053bd8527ba7ad6994b8e8776a",
      "parents": [
        "2ea200c5a7c13e6a7e8bfdb04e96066a38b19240",
        "8aba232dbce3d7a1e3efd5fa41c37810de79d0ea"
      ],
      "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": "8aba232dbce3d7a1e3efd5fa41c37810de79d0ea",
      "tree": "895d4ec947f9974da6bd1152ea393893863e9239",
      "parents": [
        "5f5df382e5b87f02399f21c916e0ebb6c48c759d"
      ],
      "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": "2ea200c5a7c13e6a7e8bfdb04e96066a38b19240",
      "tree": "4cce0e6e3096c7cf4c22fe668687b49e6bfc3c50",
      "parents": [
        "5f5df382e5b87f02399f21c916e0ebb6c48c759d",
        "65b65459e6ac59f8a257009df8014467ae0838ee"
      ],
      "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": "c2f328d0d2821e402823d6e17589da2849b67d0d",
      "tree": "8d2297a4948222dcb06974a171323a966c266046",
      "parents": [
        "ca583f0966f891efda4710074c15795d99b9d9ba"
      ],
      "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": "65b65459e6ac59f8a257009df8014467ae0838ee",
      "tree": "5f9ba01afd1e0ffe85f4b700c1a16f9b998c807d",
      "parents": [
        "501b2b400a15a43849ff84c5da4e68d23ed726cf"
      ],
      "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": "f7f6333831e7b991d92abeddfbd46c2884afa405",
      "tree": "bbe6fb84932164301709ddde62af18ad95ad405e",
      "parents": [
        "00e21f8eb57a7ae2c19516aa0290ab4fb5f251c2"
      ],
      "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": "770492cb2b19f6a36ad748cd05fbedfbb9a67dfa",
      "tree": "3c87a789492e52b3c26b1de9608f42690b86c2cd",
      "parents": [
        "cdfd5fe2c89a30a31f9de5a5481e8997f014a89b"
      ],
      "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": "cdfd5fe2c89a30a31f9de5a5481e8997f014a89b",
      "tree": "0c5bbe8bed876618e46e057b44649f0715fcf56f",
      "parents": [
        "009668bf8a51a3d6e8ee2827691c9b0285503ba1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 28 15:13:30 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 28 15:13:30 2010 -0700"
      },
      "message": "Fix a typo in Singleton\u003c\u003e\n\nit could cause the sLock field to be emitted several times\nin different compilation unit. it also prevented to\nhave 2 Singleton\u003c\u003e in the same file."
    },
    {
      "commit": "464411983a4dcafd19853d188a958fdc4f120d7c",
      "tree": "c5c890d96f05313a8d8cfe5d0b21deba05d7e503",
      "parents": [
        "198975bb010531e6e21f35582fb7040960364473",
        "dfb1dd6a8c0c0b0ecde302fae266d9a37617dfda"
      ],
      "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": "dfb1dd6a8c0c0b0ecde302fae266d9a37617dfda",
      "tree": "1a7f03afc9b8d074c1e1f19de52f41a6b86baea4",
      "parents": [
        "c0046aab0c4a5fd3ae091040c739652a0a4c029e"
      ],
      "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": "198975bb010531e6e21f35582fb7040960364473",
      "tree": "ce4cb91c18415d9d5fec44f88828c138c2d3160e",
      "parents": [
        "64ff6ab4df0fa7660584b2a2bfe9a003ca481ac5",
        "d2c2929c94bec68741b85f4174e11307fb65157f"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri May 28 04:34:13 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 28 04:34:13 2010 -0700"
      },
      "message": "Merge \"Add video frame parameter.\" into kraken"
    },
    {
      "commit": "d2c2929c94bec68741b85f4174e11307fb65157f",
      "tree": "510d29a3a37649ae4ff7111450404b6c041ee5f1",
      "parents": [
        "df0364de6f7be68e003729c262fe2731b82ae10e"
      ],
      "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": "c7b388c2b3a9558c85e3730a7c6b261392ce493e",
      "tree": "38725561e04c5e754c0c3b2a240a507ea98f6cf4",
      "parents": [
        "df0364de6f7be68e003729c262fe2731b82ae10e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 27 19:41:15 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 27 19:55:43 2010 -0700"
      },
      "message": "more clean-up of Surfaceflinger\u0027s client management\n\nSurfaceComposerClient now only exist on the WindowManager side,\nthe client side uses the new SurfaceClient class, which only\nexposes what a client needs.\n\nalso instead of keeping mappings from IBinder to SurfaceComposerClients\nwe have a SurfaceClient per Surface (referring to the same IBinder), this\nis made possible by the fact that SurfaceClient is very light.\n\nChange-Id: I6a1f7015424f07871632a25ed6a502c55abfcfa6\n"
    },
    {
      "commit": "1090a29d4e2d81f88f3ab51fbe5cf8d8264148af",
      "tree": "b87e92cf45542d618ca797bb7500ed2244bd13a7",
      "parents": [
        "b8ab347b309c00eaf69e2529bc245ac77bf1808f",
        "aed15e785607b90b4819773650cdb164fa9a7f59"
      ],
      "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": "aed15e785607b90b4819773650cdb164fa9a7f59",
      "tree": "ae5d4a1b36d2dc3298b3b7258ea1c4574f2213e5",
      "parents": [
        "6c537e53cef1b0177a1734e2a5f302d80c0a26f8"
      ],
      "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": "27a308d309efb0fe6beacbdc92fb12cfecec9b37",
      "tree": "843cf19253ac4f5aee077bc4c7bc87dcf900da43",
      "parents": [
        "64f7549b0e0e2b77e698ae88389465342d3f28d7",
        "c0f34386d6ab075aced829996ea357c31abdddac"
      ],
      "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": "64f7549b0e0e2b77e698ae88389465342d3f28d7",
      "tree": "893ac575263d5c63fd3e0b47f37a8d528a27b95d",
      "parents": [
        "f35ce7f8ee2d14b6cf0785fc671fcdfeeb1682cb",
        "2ce19af45bf4c5e311a73df474ffe88d96d118c5"
      ],
      "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": "2ce19af45bf4c5e311a73df474ffe88d96d118c5",
      "tree": "3df75d3e86308a618a3ddc47d301731af30769a8",
      "parents": [
        "d6ddcb7f00a7af95b452233d965b922632f78f21"
      ],
      "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": "c0f34386d6ab075aced829996ea357c31abdddac",
      "tree": "6eeb15c1eab9e74704d910c7a1e16d893ef65957",
      "parents": [
        "cf3fa85cdb6881827a379632c905f86fab2edc34"
      ],
      "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": "cf3fa85cdb6881827a379632c905f86fab2edc34",
      "tree": "829a1f6856aea3d12f689f5231289fe517bcf4bb",
      "parents": [
        "d6ddcb7f00a7af95b452233d965b922632f78f21",
        "5fe37c6838de9fbd959ad19ba44aa3d00d1b4e6f"
      ],
      "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": "2be352adab7f11646fda7c0240e496bbb37f7bd1",
      "tree": "e7a168546a256cd4f7c57261690796cf527ae8a2",
      "parents": [
        "57d89899c9fb978a1c097f298aa94c5db1f61bb6"
      ],
      "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": "57d89899c9fb978a1c097f298aa94c5db1f61bb6",
      "tree": "85e1c021f67a2fdb5ed33547872a769b7d55fba6",
      "parents": [
        "884372842bac11f854aa42a9c4de05a3a22cb11f"
      ],
      "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": "bd329ddbea1860a2a859f065d7c405717c7d8133",
      "tree": "410ecf83f1b3bcebbe20913aee65d61219cb0e99",
      "parents": [
        "e12a2a47059664f78e1bea4445d8a935571663ba"
      ],
      "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": "25f0bdaea6d1a34aae3faf6688cad4fbebcca969",
      "tree": "8600372f2cb6f54254d2c7e0f7018c039e07c4b6",
      "parents": [
        "4f5f2786b2c850ad0d772c7707ddbe55c3b7adf6"
      ],
      "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": "4f5f2786b2c850ad0d772c7707ddbe55c3b7adf6",
      "tree": "d41a881f2462240432f848a7d3dc25c3c0d6c483",
      "parents": [
        "8e55e88ff56edb60f001673f94abf6a109edb2d6",
        "898c4c91be8e11b6d5388c623ae80f12ac25fd27"
      ],
      "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": "5fe37c6838de9fbd959ad19ba44aa3d00d1b4e6f",
      "tree": "01048dcbfe66bad87db864c6d14fb17855b9b0ac",
      "parents": [
        "4979601f88154bdeda4cc5277940771ba6597c0f"
      ],
      "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": "898c4c91be8e11b6d5388c623ae80f12ac25fd27",
      "tree": "8f59a103707c25a05bcf4fa074e944e766c15503",
      "parents": [
        "66c46a6bd15422fe898d533d1350d6df748dd95b"
      ],
      "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": "072f5247ef893e683728263a540bb93daafda376",
      "tree": "d3f993a2bbf68c8fb05c1b8dd27991168dc89f28",
      "parents": [
        "c6a16327328cf04066ce948c3fbad34fdf1fbff4"
      ],
      "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": "66c46a6bd15422fe898d533d1350d6df748dd95b",
      "tree": "35958474462ea6ecbe3bbc6e0478646f236a6634",
      "parents": [
        "4414b9ad5427a2ac5dcb279e138e0ca9a6816140"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 19 15:11:00 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 19 15:12:59 2010 -0700"
      },
      "message": "added RWLock C++ wrapper\n\nChange-Id: Ia736bf7f6e2c49915a9ab5669551cf89dafa7961\n"
    },
    {
      "commit": "17299ab50ceb70d904e610e3b2d7fb2361a11e03",
      "tree": "aeaa2df838ca024705b0a1e4c0cb475425ffe117",
      "parents": [
        "4ec730cabb68ee8347c6aa5dc929b09651275aca"
      ],
      "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": "cd30f4f849bb215509bd2645726048271b5db01e",
      "tree": "6182174b30879d9bbee5532faa2b098b9c81715c",
      "parents": [
        "c5859388bd6c666a83017869bf8a9935defe0bd0"
      ],
      "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": "eb8f850d0b7e53956e917fd9645f808c1a09bc88",
      "tree": "07b5194b348dcd40b46fbf049066e45320099fdb",
      "parents": [
        "533844d9688f7c9269372f97db17c9bc4d19c04b"
      ],
      "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"
    },
    {
      "commit": "ae7ca4c32cb37ea82e77ad1462fbfcd4d6dfabd3",
      "tree": "e76e4f72db70f1d1291f6fa0ae334545906617c5",
      "parents": [
        "e339c5edbebedf446581f18ad70214007309bf4b"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sat May 15 13:05:04 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sat May 15 13:06:19 2010 +0800"
      },
      "message": "Fix build error.\n\nOriginal name INFINITY conflicts with the macro in math.h.\n\nChange-Id: I9845ed84fca17813dd971239a902cc1e0bad1e3e\n"
    },
    {
      "commit": "e339c5edbebedf446581f18ad70214007309bf4b",
      "tree": "7d03e881cb3e1300aef948eafb85396a58d38e1c",
      "parents": [
        "aef87aa90cf3a6cf9098477683b07994697c45fe"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu May 13 19:31:02 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sat May 15 12:40:54 2010 +0800"
      },
      "message": "Add camera focus distances API.\n\nApplications can use this API to estimate the distance\nbetween the subject and the camera.\n\nbug:1955650\nChange-Id: Ie6c8ea4971759cab6c9bcdda2c5ceb5925791c27\n"
    },
    {
      "commit": "68510e60f9671ee08f3cc18bd93400cafb7703bb",
      "tree": "87e2862b5d039f0e6211b891527e50f561b9013f",
      "parents": [
        "9db798d0f07213071a65237e9ece758c9e8c7b99"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 11:48:00 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 11:48:00 2010 -0700"
      },
      "message": "Detect and handle premature termination of a recording session\n\nChange-Id: Ifb83b19f3e68580345b23efed5d5956fb81baeb8\n"
    },
    {
      "commit": "9db798d0f07213071a65237e9ece758c9e8c7b99",
      "tree": "958d31370beae905336906f7171047968dfc7d01",
      "parents": [
        "1824486e044f4f09640fbd7bef74a20e4efb35ae"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 13 11:47:36 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 10:51:12 2010 -0700"
      },
      "message": "Audio/video initial recording time synchronization\n\nChange-Id: Iac58b63d474fe09c1d36ba6ecde91dafbb7fef9a\n"
    },
    {
      "commit": "1824486e044f4f09640fbd7bef74a20e4efb35ae",
      "tree": "88f56b045e6ec380d4353797ab0fa758425fa53f",
      "parents": [
        "21a534d955c8d45c50dafaf05cf2afbb8cf3696c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 11 14:57:02 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 10:46:56 2010 -0700"
      },
      "message": "Handle recording file size and/or duration limit\n\nChange-Id: Ib9ed1f3ebd8fef550cc130a7ef11f2905fa9aedc\n"
    },
    {
      "commit": "b0a0147f344a2d26d86be2b1bdf5bfde50ef86c2",
      "tree": "8820f5f5979f699ef5903fe65f4fe3541bff5371",
      "parents": [
        "bfcbd9a9e1bc3a8d721e906e4c621f85104c7d93"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 14 05:45:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 14 05:45:46 2010 -0700"
      },
      "message": "AudioFlinger: rename variables to clarify reference to track channel count or channel mask\n\nSome variables and structure members should be renamed to reflect the fact that they contain the\nnumber of channels in a track (channel count) or the actual channels used by a track (channel mask).\nEspecially member \"channels\" of track control block (struct audio_track_cblk_t) is actually the\nnumber of channels (channels count).\n\nChange-Id: I220c8dede9fc00c8a5693389e790073b6ed307b8\n"
    },
    {
      "commit": "e292b3bc9c28e47bb8411728ad40efb84d0471e8",
      "tree": "cb51804b07a1e1744a6ecf7a8313f05406303348",
      "parents": [
        "fae47fd008974fb78f38ae4a6d539cd8246d3159"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 13 12:07:32 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 13 12:08:29 2010 -0700"
      },
      "message": "Remove dummy surface in CameraSource\n\nbug - 2680919\n\nChange-Id: Ia0308cf57fd67058b4dd0e042b3ce97f13df475f\n"
    },
    {
      "commit": "2f0e6753d6c0d67e0e133105bf3fdc8596749412",
      "tree": "b3733f32dd6d0cb954db0c17c8b6d17ad2460b61",
      "parents": [
        "6a70cb8a3813a60b92618892188bc4e2f9e0ab2c",
        "59751dbf7d8f12aeb5c4c07719b7dbbf1f9b5d4b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 17:36:46 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 12 17:36:46 2010 -0700"
      },
      "message": "Merge \"SharedBufferStack now can grow up to 16 buffers.\" into kraken"
    },
    {
      "commit": "59751dbf7d8f12aeb5c4c07719b7dbbf1f9b5d4b",
      "tree": "a1f1d7119a8109d06cfc2f24b26284ff7627de7a",
      "parents": [
        "9f2c4fd9a14ea79e4cbbd3ab8925794711a6411c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 07 15:58:44 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 17:28:20 2010 -0700"
      },
      "message": "SharedBufferStack now can grow up to 16 buffers.\n\nthere is a new resize() api, which currently only allows growing.\n\nChange-Id: Ia37b81b73be466d2491ffed7f3a23cd8e113c6fe\n"
    },
    {
      "commit": "e8621534db97070cc40f729d1eb8074f2e69df9d",
      "tree": "54b8857783ced454e0b05b185753a652d4899b37",
      "parents": [
        "2a2174a7bdd7a557d3e17b78876b6887a02ebf80",
        "68246dcec17c245a434dad70b778960dc5c84af1"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed May 12 14:54:42 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 12 14:54:42 2010 -0700"
      },
      "message": "Merge \"ZipUtilsRO rewrite based on Dalvik Zip rewrite\" into kraken"
    },
    {
      "commit": "11777d6fa27b368eee75c46aeb0da2c609943c9d",
      "tree": "d0295e5bb67c7ed2cdd9204b5a1844d0091f89d6",
      "parents": [
        "b076e6f3e03d146cc7e76e423077a2dfe901c898",
        "b003ad17bffeba7875b9708ffeef2300ef28c916"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 12 07:55:48 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 12 07:55:48 2010 -0700"
      },
      "message": "am b003ad17: am e0dc80f8: Merge \"Support for customizable socket-read timeouts through the HTTP response.\" into froyo\n\nMerge commit \u0027b003ad17bffeba7875b9708ffeef2300ef28c916\u0027 into kraken\n\n* commit \u0027b003ad17bffeba7875b9708ffeef2300ef28c916\u0027:\n  Support for customizable socket-read timeouts through the HTTP response.\n"
    },
    {
      "commit": "b3390135890800b9c5f0ab58ae3af80ab200dd8e",
      "tree": "8b150157548ef4b694037810a881142b8e1c85f9",
      "parents": [
        "2cd841d485968181eb362338b9e66067767bd2eb",
        "d8c33747afbe98e893e0569f3bf45b67a9e8e728"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed May 12 07:55:00 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 12 07:55:00 2010 -0700"
      },
      "message": "am d8c33747: am 78624e41: Add remove method in CameraParameters class.\n\nMerge commit \u0027d8c33747afbe98e893e0569f3bf45b67a9e8e728\u0027 into kraken\n\n* commit \u0027d8c33747afbe98e893e0569f3bf45b67a9e8e728\u0027:\n  Add remove method in CameraParameters class.\n"
    },
    {
      "commit": "b003ad17bffeba7875b9708ffeef2300ef28c916",
      "tree": "3445b9dc43c54c02b1a7278dc414fb10a65240ae",
      "parents": [
        "227e443a43d70b9463b2e685688f73cfb1b72096",
        "e0dc80f878b56ed744bd06d341716fcfff4e3acc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 12 07:49:39 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 12 07:49:39 2010 -0700"
      },
      "message": "am e0dc80f8: Merge \"Support for customizable socket-read timeouts through the HTTP response.\" into froyo\n\nMerge commit \u0027e0dc80f878b56ed744bd06d341716fcfff4e3acc\u0027 into froyo-plus-aosp\n\n* commit \u0027e0dc80f878b56ed744bd06d341716fcfff4e3acc\u0027:\n  Support for customizable socket-read timeouts through the HTTP response.\n"
    },
    {
      "commit": "d8c33747afbe98e893e0569f3bf45b67a9e8e728",
      "tree": "b1bc2ccdd689301479741bfbd97b212bcdb022ed",
      "parents": [
        "a8d8cb12b3dbe5e196a3ff2549f8594a704ecde4",
        "78624e41da166712aaa5ae47e4d3467337ac810a"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed May 12 07:48:41 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 12 07:48:41 2010 -0700"
      },
      "message": "am 78624e41: Add remove method in CameraParameters class.\n\nMerge commit \u002778624e41da166712aaa5ae47e4d3467337ac810a\u0027 into froyo-plus-aosp\n\n* commit \u002778624e41da166712aaa5ae47e4d3467337ac810a\u0027:\n  Add remove method in CameraParameters class.\n"
    },
    {
      "commit": "68246dcec17c245a434dad70b778960dc5c84af1",
      "tree": "00aaacdfd3147c87c0d0d4761817a797e7af346a",
      "parents": [
        "dc3e26071399789c5966b9cd67180437f44eb9dd"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Apr 22 18:28:29 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed May 12 05:07:48 2010 -0700"
      },
      "message": "ZipUtilsRO rewrite based on Dalvik Zip rewrite\n\nChange the way zip archives are handled.  This is necessary to deal with\nvery large (~1GB) APK files, for which our current approach of mapping\nthe entire file falls over.\n\nWe now do the classic scavenger hunt for the End Of Central Directory\nmagic on a buffer of data read from the file, instead of a memory-mapped\nsection.  We use what we find to create a map that covers the Central\nDirectory only.\n\nIf the caller is interested in unpacking the file contents, we have to\ndo an additional file read to discover the size of the Local File Header\nsection so we can skip past it.\n\nThis is based on Change I745fb15abb in the dalvik tree. Both\nimplementations share a common ancestry, but the cost of unifying them\noutweighs the benefits of wrapping C calls.\n\nChange-Id: Iddacb50fe913917c2845708a530872d65fdbe620\n"
    },
    {
      "commit": "25c2af99bfedf95f0c372cbfbad33984ce983896",
      "tree": "89a8163e35498e52033138253b029e2e916fca24",
      "parents": [
        "b5e742397d4129e191d65d51da55302b504f3c99",
        "505cef3330c422c52564011f31a795a6c6135b3f"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue May 11 12:25:31 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 11 12:25:31 2010 -0700"
      },
      "message": "Merge \"Add incStrong and decStrong methods to android_native_{window,buffer}_t.\" into kraken"
    },
    {
      "commit": "e67c1607ccab2702ea745f962b5354be8f45c733",
      "tree": "ff59eaa63cad74113ed83fd2f349cf8e8151be9e",
      "parents": [
        "78624e41da166712aaa5ae47e4d3467337ac810a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 11 11:10:21 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 11 11:10:21 2010 -0700"
      },
      "message": "Support for customizable socket-read timeouts through the HTTP response.\n\nSpecify a response header of \"X-SocketTimeout: 15\" to override the default timeout\nof 5 secs with a timeout of 15 seconds. Specify a negative value to disable the\ntimeout altogether.\n\nChange-Id: I545adf3d8b3f7efe5f8d081a641c6404440a77db\nrelated-to-bug: 2675721\n"
    },
    {
      "commit": "b5e742397d4129e191d65d51da55302b504f3c99",
      "tree": "fbeabeba127c0cbe013b49ddca8c2bbcfd2befa1",
      "parents": [
        "8528fcb1998d8be708a16a854293db95a87732d5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 07 10:26:24 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 11 10:36:43 2010 -0700"
      },
      "message": "Output streamable MP4 file during MP4 file recording\n\nWhen the reserved moov box space is not big enough,\nfall back to non-streamable MP4 file.\n\nChange-Id: I93382d037d657a3f3fe2af31e4ea26e1898b4d95\n"
    },
    {
      "commit": "78624e41da166712aaa5ae47e4d3467337ac810a",
      "tree": "b7e1e6c75b4837d34bf29180974052167ac5d3f0",
      "parents": [
        "be65399baf23855094596e27c25763ff92e9e027"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue May 11 12:11:56 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue May 11 12:54:14 2010 +0800"
      },
      "message": "Add remove method in CameraParameters class.\n\nbug:2672651\nChange-Id: I537c817b5ca6a3d925f22febe9a5769156354d00\n"
    },
    {
      "commit": "e1b2b3b0d23c964470badb7faa2569b0fa0f182e",
      "tree": "87b29cd56e384b392f0493fcb31b4ea3c98361d1",
      "parents": [
        "e88ae544e3e54958dfb6e866d4444f7f7b5d2d68",
        "ca099614841bc619f217dfa088da630a7eb1ab65"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon May 10 20:04:14 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 10 20:04:14 2010 -0700"
      },
      "message": "Merge \"Add continuous focus mode constant.\" into kraken"
    },
    {
      "commit": "505cef3330c422c52564011f31a795a6c6135b3f",
      "tree": "e9c3d729f19a937065fc35b2fa6b6bc830e8788f",
      "parents": [
        "82b027e90efc816f96783d47cff1c088d07c7b5a"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon May 10 17:33:32 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon May 10 17:33:32 2010 -0700"
      },
      "message": "Add incStrong and decStrong methods to android_native_{window,buffer}_t.\n\nThis change adds the methods necessary to use sp\u003c\u003e to handle refcounting\nandroid_native_window_t and android_native_buffer_t.  The new methods forward\nthe refcounting operations to the corresponding android_native_base_t\nfunctions.\n\nChange-Id: I7de8e262728e439bc1efdf69374a2a9f6f432ced\n"
    },
    {
      "commit": "248597ae6493ff68fc52db26b095de620a26924a",
      "tree": "c479e6f6e5b08260328820a64cac761dfded6df8",
      "parents": [
        "4cfc21ecd914ac89a3160e5b19105b768546853f",
        "1707851090e6512a77247b0c260dd673ef687589"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon May 10 09:49:24 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 10 09:49:24 2010 -0700"
      },
      "message": "am 17078510: am d13efb20: Merge \"A new OggExtractor/VorbisDecoder combo to support approximate seeking.\" into froyo\n\nMerge commit \u00271707851090e6512a77247b0c260dd673ef687589\u0027 into kraken\n\n* commit \u00271707851090e6512a77247b0c260dd673ef687589\u0027:\n  A new OggExtractor/VorbisDecoder combo to support approximate seeking.\n"
    },
    {
      "commit": "1707851090e6512a77247b0c260dd673ef687589",
      "tree": "f4a77a16e591377bffb9be2dcff38ac5d5c0f350",
      "parents": [
        "56aed6bde0c52658d2cb1207c0cfe8ba0a764c59",
        "d13efb20089e44e6958cb9704864c03821f19e1c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon May 10 09:43:26 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 10 09:43:26 2010 -0700"
      },
      "message": "am d13efb20: Merge \"A new OggExtractor/VorbisDecoder combo to support approximate seeking.\" into froyo\n\nMerge commit \u0027d13efb20089e44e6958cb9704864c03821f19e1c\u0027 into froyo-plus-aosp\n\n* commit \u0027d13efb20089e44e6958cb9704864c03821f19e1c\u0027:\n  A new OggExtractor/VorbisDecoder combo to support approximate seeking.\n"
    },
    {
      "commit": "ca099614841bc619f217dfa088da630a7eb1ab65",
      "tree": "7c804ef7da518a1193d481e325909e0240bff1c7",
      "parents": [
        "7768892c82f3b037c19c608c6d8309938fd5ca21"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu May 06 16:47:30 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon May 10 15:14:56 2010 +0800"
      },
      "message": "Add continuous focus mode constant.\n\nbug:2612447\nChange-Id: I9bc3f5a47ad50722a265d50b1d28fb82a2253dc9\n"
    },
    {
      "commit": "e25cc656392d8866e163f78b60c7791455d0fb44",
      "tree": "d264b1c05e9edb2851c5ddc21a662617ea1d4ebc",
      "parents": [
        "a0a126a060b6b9ba51bc99f82ff4d322f779325e"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu May 06 16:36:58 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Mon May 10 11:21:14 2010 +0800"
      },
      "message": "Support multiple cameras in framework.\n\nChange-Id: I081f0fbdca4b633715ea7c3b3d42f8662d27598a\n"
    },
    {
      "commit": "388379f8b4cabe7bccf280d450a6db2c3149796b",
      "tree": "e874957c4767cce040920f7ed98602b872f7c447",
      "parents": [
        "75370e74629b4938c4472d6001eebf5e305dbc55"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri May 07 10:35:13 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri May 07 12:01:45 2010 -0700"
      },
      "message": "A new OggExtractor/VorbisDecoder combo to support approximate seeking.\n\nChange-Id: Id5d0c1c8b1adc62896bb5ed951f7b5cfda811e95\nrelated-to-bug: 2654400\n"
    },
    {
      "commit": "a269d195d41ced934d2153fd81fa69ffe7854740",
      "tree": "cbfe9a5b063aa4aa860f4c2e3e26f1acde99780b",
      "parents": [
        "94886d9774d11b8bc93e56103d2f0ab61458ada0",
        "ca48c88c3d5733c4405a2fc4f7d9bb7fbba3d43f"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 17:35:06 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 06 17:35:06 2010 -0700"
      },
      "message": "am ca48c88c: am 8a8658a5: Merge \"Make static versions of libutils and libbinder.\" into froyo\n\nMerge commit \u0027ca48c88c3d5733c4405a2fc4f7d9bb7fbba3d43f\u0027 into kraken\n\n* commit \u0027ca48c88c3d5733c4405a2fc4f7d9bb7fbba3d43f\u0027:\n  Make static versions of libutils and libbinder.\n"
    },
    {
      "commit": "ca48c88c3d5733c4405a2fc4f7d9bb7fbba3d43f",
      "tree": "ba82e7825548f05c8ac87f75adebcf6bf6a92bf9",
      "parents": [
        "ad2f9ff786d83851c5aaccf0e8d49f50e58fb7dd",
        "8a8658a5de261c2da72d431940877bd054bc9837"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 17:33:45 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 06 17:33:45 2010 -0700"
      },
      "message": "am 8a8658a5: Merge \"Make static versions of libutils and libbinder.\" into froyo\n\nMerge commit \u00278a8658a5de261c2da72d431940877bd054bc9837\u0027 into froyo-plus-aosp\n\n* commit \u00278a8658a5de261c2da72d431940877bd054bc9837\u0027:\n  Make static versions of libutils and libbinder.\n"
    },
    {
      "commit": "8a8658a5de261c2da72d431940877bd054bc9837",
      "tree": "2e86f445e23eb89049d528a29f4d313fae922e59",
      "parents": [
        "08e1b94c5c06dc27ad11393bc66c81c2ebc5ad27",
        "08b3d2e5ef01a5114424a871934dd9fc153352c0"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 17:31:48 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 06 17:31:48 2010 -0700"
      },
      "message": "Merge \"Make static versions of libutils and libbinder.\" into froyo"
    },
    {
      "commit": "8a1c0934b0622be6f7c451aa8773567e797ab397",
      "tree": "077ada5f08affa22e3c387dd6cc82d8d054ac869",
      "parents": [
        "799bc84d882e07cb1a3ba4d49c8ed955c583eadc",
        "71bd9fc81e3154b9cad22ca7ff2d9c6ed6fdbe6c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 06 12:43:59 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 06 12:43:59 2010 -0700"
      },
      "message": "am 71bd9fc8: am 100ef9be: Merge \"Disable vorbis seek when streaming from localhost.\" into froyo\n\nMerge commit \u002771bd9fc81e3154b9cad22ca7ff2d9c6ed6fdbe6c\u0027 into kraken\n\n* commit \u002771bd9fc81e3154b9cad22ca7ff2d9c6ed6fdbe6c\u0027:\n  Disable vorbis seek when streaming from localhost.\n"
    },
    {
      "commit": "71bd9fc81e3154b9cad22ca7ff2d9c6ed6fdbe6c",
      "tree": "ec9913964cd1f71a06350de63feac90fe33c9fa1",
      "parents": [
        "8b6ac78e7476251c8fc38c29a2b95f2dadfdbacc",
        "100ef9bee48c9beb83d885d233de6a42c64f55af"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 06 12:36:13 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 06 12:36:13 2010 -0700"
      },
      "message": "am 100ef9be: Merge \"Disable vorbis seek when streaming from localhost.\" into froyo\n\nMerge commit \u0027100ef9bee48c9beb83d885d233de6a42c64f55af\u0027 into froyo-plus-aosp\n\n* commit \u0027100ef9bee48c9beb83d885d233de6a42c64f55af\u0027:\n  Disable vorbis seek when streaming from localhost.\n"
    },
    {
      "commit": "62f7ffe106a7126ef31b199552c5cfc6599bc3d1",
      "tree": "7bd9fc2fe4a46740aec9862b7ff8f33630e8ab12",
      "parents": [
        "b5fa4dff0c4756ef7868926d4f373645ac0b00a9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 06 10:18:05 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 06 10:31:57 2010 -0700"
      },
      "message": "Disable vorbis seek when streaming from localhost.\n\nChange-Id: Icda523ae1c89e26482f1c1767fe3a8b9222bb30f\nrelated-to-bug: 2654400\n"
    },
    {
      "commit": "08b3d2e5ef01a5114424a871934dd9fc153352c0",
      "tree": "7768ecd2c0308f149cb8abb1746a0e7bc1bdae8b",
      "parents": [
        "df7ccbc8ff0d93a708a7fa1e57469d3f93ceda5c"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 00:55:09 2010 -0700"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 01:03:31 2010 -0700"
      },
      "message": "Make static versions of libutils and libbinder.\n\nFix some small static-initialization-order issues (and a static-\ninitializers-missing issue) that result from doing so.  The static\nlibraries don\u0027t actually get used for anything real at the moment --\nthey\u0027re used for perf tests of bug 2660235.\n\nBug: 2660235\nChange-Id: Iee2f38f79cc93b395e8d0a5a144ed92461f5ada0\n"
    },
    {
      "commit": "579e08e657a8dc9274b297b5dda95a4383cc3642",
      "tree": "0b1113f2c57867bd95b7cba17a315363845b389a",
      "parents": [
        "33232d26bb51bf015fdf7dbd7a34c2b67745d72a",
        "f78964490d8098387d51444c87bf520ad3f674e2"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed May 05 16:00:01 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 05 16:00:01 2010 -0700"
      },
      "message": "am f7896449: merge from open-source master\n\nMerge commit \u0027f78964490d8098387d51444c87bf520ad3f674e2\u0027 into kraken\n\n* commit \u0027f78964490d8098387d51444c87bf520ad3f674e2\u0027:\n  Add new keycodes for the convenience of Japanese IMEs\n  Call register_localized_collators() with the current locale.\n  Fixed deserialization problem in DatePicker.\n  Fix for bug 2467152 files with spaces fail to open.\n  Set alpha value for newly created dim surface.\n  telephony: Fix CID when CID is unknown\n"
    },
    {
      "commit": "f78964490d8098387d51444c87bf520ad3f674e2",
      "tree": "7384d69f165ea9a1d1a004a54b05155d29f1249e",
      "parents": [
        "fc12b5be2ee49ba2392274d413bd5d759c03c346",
        "1e936da287e1836502bf91b53468076726b7e1ee"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed May 05 15:57:42 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed May 05 15:57:42 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: Ia9e1f4e049f5870386ea29ddb6e3ef028ea918da\n"
    },
    {
      "commit": "b032bc037399110f41cfdb838a792b3c65756323",
      "tree": "c676df6b6fbb6e74c4dadcf0875556dc9ae5f396",
      "parents": [
        "f1fdf3c7e835c37a3137d5eed101f224d56f36ed"
      ],
      "author": {
        "name": "mogimo",
        "email": "mogimogio@gmail.com",
        "time": "Sat Oct 03 03:13:56 2009 +0900"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed May 05 13:37:21 2010 -0700"
      },
      "message": "Add new keycodes for the convenience of Japanese IMEs\n\nChange-Id: Ibd308cef11261147856258595f6ca0137e03e05c\n"
    },
    {
      "commit": "3300e9667e3daa374659b4a8b97dd92c4d34e501",
      "tree": "7fb447a7a23b8a992d929a5c30ca3a01cacefe18",
      "parents": [
        "51867f231355b82fd0a8804352403fec102cb0dc"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 21 16:14:15 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 05 11:34:43 2010 -0700"
      },
      "message": "Support audio and video track interleaving in the recorded mp4 file\n\nChange-Id: Ifa27eb23ee265f84fe06773b29b0eb2b0b075b60\n"
    },
    {
      "commit": "ce0bd71735532f53014cc299f684302f357c471a",
      "tree": "740a35865bd0697f3701d28e6d35237875d9a293",
      "parents": [
        "ebad36db56017000ce8b1eb813537d90248e3ad0",
        "8ea45aad100ee25067b2e83703454c71a968ba4f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 14:30:34 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 04 14:30:34 2010 -0700"
      },
      "message": "am 8ea45aad: am e083d0a2: Merge \"Support for Ogg Vorbis decoding in stagefright.\" into froyo\n\nMerge commit \u00278ea45aad100ee25067b2e83703454c71a968ba4f\u0027 into kraken\n\n* commit \u00278ea45aad100ee25067b2e83703454c71a968ba4f\u0027:\n  Support for Ogg Vorbis decoding in stagefright.\n"
    },
    {
      "commit": "8ea45aad100ee25067b2e83703454c71a968ba4f",
      "tree": "cfd4e90431c3afcbf119452c0170714e700a2a37",
      "parents": [
        "5c16039adfe3da2d9438b8814734f5c8d2570ad3",
        "e083d0a2f50906423ab548047d436c74648fc488"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 14:29:04 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 04 14:29:04 2010 -0700"
      },
      "message": "am e083d0a2: Merge \"Support for Ogg Vorbis decoding in stagefright.\" into froyo\n\nMerge commit \u0027e083d0a2f50906423ab548047d436c74648fc488\u0027 into froyo-plus-aosp\n\n* commit \u0027e083d0a2f50906423ab548047d436c74648fc488\u0027:\n  Support for Ogg Vorbis decoding in stagefright.\n"
    },
    {
      "commit": "eb5eef38198b38d97b573be550657ba64ccba299",
      "tree": "ab37f77be5d5bf436f50789a134e74d6c23fad0e",
      "parents": [
        "3bb5e4d322a6a7cda45e868dbe307c2dc3cf688e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 11:46:42 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 11:58:16 2010 -0700"
      },
      "message": "Support for Ogg Vorbis decoding in stagefright.\n\nSet the magic property media.stagefright.enable-vorbis to true to use the new implementation instead of the standalon vorbis player for file-based playback. HTTP streaming of vorbis content will always go through stagefright.\n\nChange-Id: Ie3843a99fadb22372f89540d0f8d65196e0c2af8\nrelated-to-bug: 2654400\n"
    },
    {
      "commit": "1bb8b670f99c1029def72ec408142077abd66cc4",
      "tree": "5417838dd9cbf4b7fd21a4af4f06e1e18ad8b7e5",
      "parents": [
        "b205dabaa73843e1de8f4a27d15736a8dcd7cb2b",
        "bfe7f0b12165a1ad4a73b6d8f013cb9e115a3c60"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 30 12:58:11 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 30 12:58:11 2010 -0700"
      },
      "message": "Merge \"Add support for enqueuing buffers in arbitrary order\" into kraken"
    },
    {
      "commit": "daedd81f089c296ac7355e9be47f1e4c6d645b04",
      "tree": "e8e1c014f2bbb43346478e006dedb89c02aabf94",
      "parents": [
        "1d0fa397ce6c7f654fc3086e6267e1c611dd19ea",
        "f590f702c8142fa5225a6d2ea6649515c1a2961f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 29 14:17:12 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 29 14:17:12 2010 -0700"
      },
      "message": "Merge \"cleanup. waitForCondition() now uses polymorphsim instead of templtes\" into kraken"
    },
    {
      "commit": "1d0fa397ce6c7f654fc3086e6267e1c611dd19ea",
      "tree": "39cd07fb59f20ecd68af68c64326b56325c56f13",
      "parents": [
        "9eef63113652dc0f0df92295a9fb0b0c71b92934",
        "c54c12713b98f308f848d2eb9ed7ef28ecc62c55"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 29 14:16:14 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 29 14:16:14 2010 -0700"
      },
      "message": "Merge \"fix a race condition in undoDequeue(), where \u0027tail\u0027 could be computed incorrectly.\" into kraken"
    }
  ],
  "next": "14cee9f688c32d63d8521188e7422811629bb7c2"
}
