)]}'
{
  "log": [
    {
      "commit": "d313c665e618af3194f504064bcd284fe5368682",
      "tree": "afc941c310913e7ec79af8c50fb152b1281ba2ff",
      "parents": [
        "5fb008e3800032be18c6d5f1e7ace4d7c2661e26"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Feb 24 19:56:18 2011 -0800"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Wed Mar 02 13:29:20 2011 -0800"
      },
      "message": "Add TextLayout Cache\n\n- use GenerationCache for caching\n- move GenerationCache.h from libs/hwui/utils to include/utils\n- add #define for cache activation / deactivation\n\nChange-Id: Ifaf519f0b5e33b087a453e4aa6430162d8438f20\n"
    },
    {
      "commit": "8c7c6dc413e12b2394aae06bd2ccc3db7a29c710",
      "tree": "25afe7d78bf9bd5c0aaac85d79857d995bf54df7",
      "parents": [
        "0390191392e62314d9dfeba655f737a0e2594950"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 22 11:46:35 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 22 13:21:38 2011 -0800"
      },
      "message": "Support more MPEG4-LATM audio functionality.\n\nrelated-to-bug: 3474610\n\nChange-Id: I6dab40e8b465922c62be9ee7f168718822c6caac\nNow skipping extra header that the spec claimed shouldn\u0027t be present in LATM...\n"
    },
    {
      "commit": "6f2fba428ca5e77a26d991ad728e346cc47609ee",
      "tree": "5dd07c24bd9b474ccfbcba4f63e078598fbd2b50",
      "parents": [
        "b1bdb64d641ac63097619e5ef08d5a25bfdc61bb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 01:08:02 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 05:23:10 2011 -0800"
      },
      "message": "Add new axes for joysticks and mouse wheels.\n\nAdded API on InputDevice to query the set of axes available.\nAdded API on KeyEvent and MotionEvent to convert keycodes and axes\nto symbolic name strings for diagnostic purposes.\nAdded API on KeyEvent to query if a given key code is a gamepad button.\nAdded a new \"axis\" element to key layout files to specify the\nmapping between raw absolute axis values and motion axis ids.\nExpanded the axis bitfield to 64bits to allow for future growth.\nModified the Makefile for keyboard prebuilts to run the keymap\nvalidation tool during the build.\nAdded layouts for two game controllers.\nAdded default actions for game pad button keys.\nAdded more tests.\nFixed a bunch of bugs.\n\nChange-Id: I73f9166c3b3c5bcf4970845b58088ad467525525\n"
    },
    {
      "commit": "5b025c46158f2b4eb95bc062170b7d585d967d0c",
      "tree": "b43600627edbc8c77306b284fce1a693f2971f42",
      "parents": [
        "95fd0088ccc6f3251424930b8dbb01dbe411c5d8",
        "cbeebb194b374a5eea2f1c6ed6298c09a937c4cb"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 17 14:50:14 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 17 14:50:14 2011 -0800"
      },
      "message": "Merge \"A/V synchronization at the beginning of a recording session\""
    },
    {
      "commit": "cbeebb194b374a5eea2f1c6ed6298c09a937c4cb",
      "tree": "ad64e2af7f08f8a7184207f06e2294776ab53720",
      "parents": [
        "f653aa7e6e4d79dae191596551bfb5df4df6d6e5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 16 12:28:26 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 17 14:43:16 2011 -0800"
      },
      "message": "A/V synchronization at the beginning of a recording session\n\no do not use edts/elst boxes since these optional boxes are ignored\no manipulate the first video/audio frame duration to make sure that the rest\n  of the audio/video is in sync (ideally, we should only manipulate\n  the vidoe frame duration, not the audio)\no reduce the initial audio mute/suppression period, which is used to\n  eliminate the \"recording\" sound.\n\nbug - 3405882 and 3362703\n\nChange-Id: Ib0acfb4f3843b365157288951dc122b006299c18\n"
    },
    {
      "commit": "ebbd5d14ad3b1e762d9fcfa026e19413cc857e05",
      "tree": "7f449489b302fddd176f6ab9f85c8e38024fed90",
      "parents": [
        "3b93d3fc1e56eada95246f9ee102c563d22df6d0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 17 13:01:34 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 17 13:01:34 2011 -0800"
      },
      "message": "Fix a regression with MotionEvent parceling.\n\nAlso added some more unit tests.\n\nChange-Id: I413654294d1a998eec056884e6df5eaa50f3daf4\n"
    },
    {
      "commit": "45708bf2f03f9f50c22f86cb794c2a088bab1c05",
      "tree": "e08b9a0954795be704c9473d0d31716a98e0cb09",
      "parents": [
        "88083d4f2b9c2dc66ba39bd2c4ffa0ff7c1fbcd4",
        "91c69ab01539f7ba28708f41ec1835cc2920d0a0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Feb 16 20:00:21 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 16 20:00:21 2011 -0800"
      },
      "message": "Merge \"Add support for arbitrary axes in MotionEvents.\""
    },
    {
      "commit": "d33a4ccb5c3b58406cee45a4d933d40219177f8c",
      "tree": "bd4aa2d8998465284ece77fc98cd1e9c654bb20c",
      "parents": [
        "5a5b4ba9fe40605d5e43b7ff25a58f7174509a53"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 15 10:08:07 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 16 11:23:21 2011 -0800"
      },
      "message": "Decouple AudioRecord read and audio encoding\n\nbug - 3313754\n\nChange-Id: I951dd0e21e34aa1412c391f003bc32103d0424b0\n"
    },
    {
      "commit": "91c69ab01539f7ba28708f41ec1835cc2920d0a0",
      "tree": "04f5dc37a0fa3f18a18ba08916efe0c33a1de300",
      "parents": [
        "c3451d4a4479b6244bd6d1dadf289a8d44bdcca2"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 14 17:03:18 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 15 19:14:37 2011 -0800"
      },
      "message": "Add support for arbitrary axes in MotionEvents.\n\nThis change makes it possible to extend the set of axes that\nare reported in MotionEvents by defining new axis constants.\n\nThe MotionEvent object is now backed by its C++ counterpart\nto avoid having to maintain multiple representations of the\nsame data.\n\nChange-Id: Ibe93c90d4b390d43c176cce48d558d20869ee608\n"
    },
    {
      "commit": "94f401999442ceb572200b0eeffcc31546d7a4c7",
      "tree": "e1064252c9364815b95429de3977afe85b7a9d04",
      "parents": [
        "9227faf4eade7c5825ecb9a69c9b4ff697b3deac",
        "c5b0abf900474b204c367093984ff60da4fba09c"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Feb 15 17:22:01 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 15 17:22:01 2011 -0800"
      },
      "message": "Merge \"Add AAC extractor\""
    },
    {
      "commit": "c5b0abf900474b204c367093984ff60da4fba09c",
      "tree": "e1d205abe7f7174cc450a8dc43e5919a247c6cc7",
      "parents": [
        "4c030b56160918117776b4379dcc1e258b854e2d"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Feb 02 14:12:49 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Feb 15 17:16:22 2011 -0800"
      },
      "message": "Add AAC extractor\n\nChange-Id: Iedb08525ac72e65ba98e5c791734da0720a0e3f6\n"
    },
    {
      "commit": "fe84cf13cdbccec4a499caca05f0dc309df9d318",
      "tree": "580fd28c9cd27629dc92633aa34198fcc6e65365",
      "parents": [
        "4c030b56160918117776b4379dcc1e258b854e2d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Feb 11 15:21:45 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Feb 11 15:25:03 2011 -0800"
      },
      "message": "Make available h263 DSI information from MPEG4Extractor\n\nbug - 3446863\n\nChange-Id: Idbaf7a564d544784fdbc36ed0339c98a519adc88\n"
    },
    {
      "commit": "a11faf889e61a8f01f430b3d1e397fa7ca779e75",
      "tree": "0ff8c7092fe5235820b1b59cce64dba563d935c7",
      "parents": [
        "36305fc416b85d83b22ff5214a28f75df83a7065",
        "c6c3e77d4d5cd8de3b1a56bdffdfd42774849512"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 10 15:46:15 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 10 15:46:15 2011 -0800"
      },
      "message": "am c6c3e77d: am b66b7a2c: Merge \"fix [3408713] Dialog window invisible sometimes\" into honeycomb\n\n* commit \u0027c6c3e77d4d5cd8de3b1a56bdffdfd42774849512\u0027:\n  fix [3408713] Dialog window invisible sometimes\n"
    },
    {
      "commit": "c6c3e77d4d5cd8de3b1a56bdffdfd42774849512",
      "tree": "3703fb371090adee31f311d8ac5f95f60a31418a",
      "parents": [
        "592989b3b7c088114de6ee59d609449de749fd78",
        "b66b7a2c183a1423ea629d4f73ed95f9b87d54b7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 10 15:08:33 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 10 15:08:33 2011 -0800"
      },
      "message": "am b66b7a2c: Merge \"fix [3408713] Dialog window invisible sometimes\" into honeycomb\n\n* commit \u0027b66b7a2c183a1423ea629d4f73ed95f9b87d54b7\u0027:\n  fix [3408713] Dialog window invisible sometimes\n"
    },
    {
      "commit": "8b4b97a14ad9b5b982d8fe92755efabec8ad0076",
      "tree": "1cf4a2979096202ccfe5ff7399b9d37bfaccc3dc",
      "parents": [
        "138a54cb20d8ba8253b404a76a53fe88f0d43963"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 04 13:54:26 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 10 14:37:42 2011 -0800"
      },
      "message": "Bug 3352047 Wrong message when adjusting volume\n\nAdd hidden AudioManager.getDevicesForStream and output device codes.\n\nChange-Id: I4d1c1d3b6a077cd117720817d1f733dda557b947\n"
    },
    {
      "commit": "37c2a3750138a5f9cb34d4f644642da677d435c6",
      "tree": "6cb616594c9d6eea4174c1e4c88f97145903c978",
      "parents": [
        "cc24170dc653ea5fc9fe7b9b8c596700c4d6dc99"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 09 18:38:55 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 09 18:38:55 2011 -0800"
      },
      "message": "fix [3408713] Dialog window invisible sometimes\n\nweak pointer comparison operators were implemented wrong,\nthey were using the internal \"unsafe\" pointer. We could end up\nwith two \"equal\" weak pointer pointing to different objects.\n\nthis caused KeyedVector keyed by weak pointer to work incorrectly, in\nturn causing a window that just got added to a list to be immediately\nremoved.\n\nChange-Id: Ib191010c39aafa9229109e4211f6c3b2b2f9696d\n"
    },
    {
      "commit": "f6a2bff0c9f65b318bbe2236d19423dc013123b9",
      "tree": "f4399f79fc80f7f8f0d4b653a2d87c5fb9620701",
      "parents": [
        "455644ee1cad8554aa3c2a00e3e639bca032c981"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 09 14:00:55 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 09 15:44:32 2011 -0800"
      },
      "message": "Reduce blocking time in file write\n\nbug - 3418787\n\nChange-Id: I4723662bf46ed07271be8468f84ae5d93cb793fa\n"
    },
    {
      "commit": "5ed9a80571ede30d4cb7967227bff996c9cecb9e",
      "tree": "f691e3a4ecf7053c14af2eba66e9ad375b955877",
      "parents": [
        "357a9335c24ed0844187d9f8aace53acbca48c50",
        "b9289833341ec19e016891d0ca9638f0973b9647"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 08 13:15:37 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 08 13:15:37 2011 -0800"
      },
      "message": "Merge \"Handle some edge cases when seeking while starting up OMXCodec\""
    },
    {
      "commit": "b9289833341ec19e016891d0ca9638f0973b9647",
      "tree": "2d5733d68fcc3dee05ac911db1b295bef38e9604",
      "parents": [
        "5a50351cf33dcfc9a21f393521885cd3f248952d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 08 13:10:25 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 08 13:10:25 2011 -0800"
      },
      "message": "Handle some edge cases when seeking while starting up OMXCodec\n\nThese were exposed by the new preview-seekframe while paused code.\nIn particular, the codec may have been in state RECONFIGURING when attempting\nto seek, or we may have initiated flushing of the output port and this may not\nhave completed yet by the time we want to reconfigure the output port.\n\nChange-Id: Id7640ade11dbc7205a22f648ea0b5e3e9b49cf4b\nrelated-to-bug: 3392259\n"
    },
    {
      "commit": "c2dc4729e3c88d733c0aa6d9a9af6101b2f09e35",
      "tree": "b4f2f134b82cd91f1875af223f6218f94a5425f5",
      "parents": [
        "1ee31175eca2fb5d6a95cb1aa4a9dbf66a5212cb"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 07 11:41:11 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 07 15:10:33 2011 -0800"
      },
      "message": "- Do not use global DrmManagerClient\n- Release the DrmManagerClient and DecryptHandle in DataSource\nFix for bug 3429811\n\nChange-Id: I549f72b75225751877eb0e630ce8098f8ec6316f\n"
    },
    {
      "commit": "6760f9832df60e8421c10c4928d0612662222811",
      "tree": "e732f40fefaaa209523925ec082fffd7fa299b2d",
      "parents": [
        "8adacd8e22e2a44c941e2b930cc53b7b843f4063"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 04 10:12:26 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 04 10:12:26 2011 -0800"
      },
      "message": "Improvements/fixes to ACodec.\n\n- Make sure ACodec reverts its state when it\u0027s shutdown\n- Defer \"resume\" to after handling the OutputPortSettingsChange\n\n- If the OMX_EventPortSettingsChanged event comes in while we\u0027re flushing, defer it\n  and make sure the output port can be disabled by deleting all buffers not already\n  owned by the component.\n\nChange-Id: I1f8cdffa71237b57d4275a48b834647a7b263e8b\n"
    },
    {
      "commit": "2e8fbebff4e12581ed58e25fc98134e1124d6482",
      "tree": "fce144cef31654d97ca3bd91c74d0249231cdc91",
      "parents": [
        "79cce9f445287c79b785a633fea9a17064147574",
        "6f1bd261b7fd86ac7817ca061dfb55b95150b836"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 03 17:18:46 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 03 17:18:46 2011 -0800"
      },
      "message": "am 6f1bd261: am 9c0a1003: Merge \"Fix issue 3371080\" into honeycomb\n\n* commit \u00276f1bd261b7fd86ac7817ca061dfb55b95150b836\u0027:\n  Fix issue 3371080\n"
    },
    {
      "commit": "f9f223edb408cdc9fd946dc099a86857079a639f",
      "tree": "c7e17991ac0eac00d407f0a1ebfd673d21d09b4b",
      "parents": [
        "d2f5d166c5678803dc2b13f3f1b91be0446d8b72"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 13 11:17:00 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 03 13:39:10 2011 -0800"
      },
      "message": "Bug 1804058 FLAC extractor\n\nNote: dependent on external/flac for libFLAC\n\nImplemented and tested:\n * FLAC container\n * mono and stereo\n * standard sample rates\n * standard bit depths\n * sniffer\n * media scanner\n * Vorbis comment metadata including album art\n * random access seeking with \"torture test\"\n * web browser integration for audio/flac (not audio/x-flac), but\n   note that most web servers don\u0027t correctly report the MIME type\n\nNot implemented:\n * 24-bit to 16-bit dither or noise shaping in AudioFlinger\n * 96 kHz to 44.1 or 48 kHz downsampling low pass filter in AudioFlinger\n * replay gain is better done in AudioFlinger\n * multi-channel, would need AudioFlinger support\n * Ogg container, does not seem to be very popular yet\n\nChange-Id: I300873e8c0cfc2e95403d9adb5064d16a2923f17\n"
    },
    {
      "commit": "6f1bd261b7fd86ac7817ca061dfb55b95150b836",
      "tree": "ff90681cc760c964aa4b00e34b1eb95b7c22014c",
      "parents": [
        "7fbdc7f6ecfff38693e4ca337984b591a8560574",
        "9c0a1003bd676121cf9b1c942ecebd5b486290d5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 03 10:28:24 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 03 10:28:24 2011 -0800"
      },
      "message": "am 9c0a1003: Merge \"Fix issue 3371080\" into honeycomb\n\n* commit \u00279c0a1003bd676121cf9b1c942ecebd5b486290d5\u0027:\n  Fix issue 3371080\n"
    },
    {
      "commit": "25101b0b9a84571ead15b26e9f4cd9c4298d7823",
      "tree": "8f339bdcc562671cd425144be54841f39c56754b",
      "parents": [
        "1cee14f154aadabcd9990bd73a197fbd744660ad"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 02 09:33:30 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 03 09:26:24 2011 -0800"
      },
      "message": "Fix issue 3371080\n\nModified default volume control logic in AudioService:\n1 IN_CALL volume if in video/audio chat\n2 NOTIFICATION if notification is playing or was playing less than 5s ago.\n3 MUSIC\n\nModified silent mode:\n- now also affect MUSIC stream type\n- entering silent mode when VOL- hard key is pressed once while selected\nstream volume is already at 0 (except for VOICE_CALL stream).\n- exiting silent mode when pressing VOL+ hard key while in silent mode\n\nPlay sound FX (audible selections, keyboard clicks) at a fixed volume.\n\nModified audio framework:\n- isStreamActive() method now implemented in AudioPolicyManagerBase (previously AudioFlinger)\n- iStreamActive() now specifies a time window during which the stream is considered\nactive after it actually stopped.\n\nChange-Id: I7e5a0724099450b9fc90825224180ac97322785f\n"
    },
    {
      "commit": "a257be1895218e5c3e153313db9dd703fd9cc84f",
      "tree": "457726588b7e414388795ed24f1c38a67dc96dd6",
      "parents": [
        "9d3fb3717f2acec71a3330e448ecf63ee997b1f8",
        "421d94c20321e1de528416b279bf148baba47b39"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Feb 02 16:21:24 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 02 16:21:24 2011 -0800"
      },
      "message": "am 421d94c2: am ecb4b3f0: Merge \"Pass the IGraphicBufferAlloc to SurfaceTextureClient.\" into honeycomb\n\n* commit \u0027421d94c20321e1de528416b279bf148baba47b39\u0027:\n  Pass the IGraphicBufferAlloc to SurfaceTextureClient.\n"
    },
    {
      "commit": "421d94c20321e1de528416b279bf148baba47b39",
      "tree": "9cd23e4ce3a4e2d8c416b57f69c66eda2550ee16",
      "parents": [
        "94dbc990b8840d323d358770a1ba02bb4820c681",
        "ecb4b3f02340e21eefabbea78559e85ec7ee0089"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Feb 02 15:56:20 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 02 15:56:20 2011 -0800"
      },
      "message": "am ecb4b3f0: Merge \"Pass the IGraphicBufferAlloc to SurfaceTextureClient.\" into honeycomb\n\n* commit \u0027ecb4b3f02340e21eefabbea78559e85ec7ee0089\u0027:\n  Pass the IGraphicBufferAlloc to SurfaceTextureClient.\n"
    },
    {
      "commit": "83bac216a7ba8493a7916e40b2555e73c3a5cc1a",
      "tree": "ff57384d2f89f0dd958add05408179b537dc973f",
      "parents": [
        "b799314e64d5afe050aeee394f0c29d7728c1e22"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Feb 02 15:31:47 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Feb 02 15:31:47 2011 -0800"
      },
      "message": "Pass the IGraphicBufferAlloc to SurfaceTextureClient.\n\nThis change passes a reference to the IGraphicBufferAlloc binder object\nto SurfaceTextureClient objects.  When STC objects are created they\nquery their associated ISurfaceTexture object for the\nIGraphicBufferAlloc that the SurfaceTexture uses to allocate buffers.\nHaving the SurfaceTextureClient hold this reference prevents the\nGraphicBufferAlloc in SurfaceFlinger from freeing the allocated buffers\nbefore the SurfaceTextureClient is done with them.\n\nChange-Id: Ib8e30e8b37fdd60438cbb4cb7e9174d0ba6d661c\nrelated-bug: 3362519\n"
    },
    {
      "commit": "4453b1a5b64e5926f987227660de8c8c62695697",
      "tree": "247e12e540ede87b9ce812023082bbf5a664543c",
      "parents": [
        "4b91b4b117a907288c73d44cbdb946142904877e",
        "09443aeb6470d66f5bc1938b70d74b3e2f9bbbb9"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 30 15:05:42 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jan 30 15:05:42 2011 -0800"
      },
      "message": "am 09443aeb: am 62884505: Merge \"Reset ANativeWindow crop on buffer geometry changes.\" into honeycomb\n\n* commit \u002709443aeb6470d66f5bc1938b70d74b3e2f9bbbb9\u0027:\n  Reset ANativeWindow crop on buffer geometry changes.\n"
    },
    {
      "commit": "09443aeb6470d66f5bc1938b70d74b3e2f9bbbb9",
      "tree": "296a7dcef912e7717c4433e2d8dc6c68bb50cbc4",
      "parents": [
        "935275cbe058f5a60ac2cf1a3321fd49550fd37c",
        "628845056282a0c5b1a212ce5aeeaac092b91ec8"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 30 15:03:03 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jan 30 15:03:03 2011 -0800"
      },
      "message": "am 62884505: Merge \"Reset ANativeWindow crop on buffer geometry changes.\" into honeycomb\n\n* commit \u0027628845056282a0c5b1a212ce5aeeaac092b91ec8\u0027:\n  Reset ANativeWindow crop on buffer geometry changes.\n"
    },
    {
      "commit": "0e87a19bec51383941f14186b14fffcad73b1be1",
      "tree": "8b95d3f7dd34ef5493e611dd66100ba3f2dba2a3",
      "parents": [
        "ec4c5193689c30064d87a5febfde7c300b439f6c",
        "371de9695508073fbbde8181eb230e99cb045206"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 23:10:33 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 23:10:33 2011 -0800"
      },
      "message": "am 371de969: am a1f5e82f: am a30063d8: am 25eb0464: Merge \"Normalize output from aapt d\"\n\n* commit \u0027371de9695508073fbbde8181eb230e99cb045206\u0027:\n  Normalize output from aapt d\n"
    },
    {
      "commit": "371de9695508073fbbde8181eb230e99cb045206",
      "tree": "8b725299fe6b9638dad8cc3dc538a23ae86377ac",
      "parents": [
        "bda99568d84530c6442af0602e9c12e6cb897780",
        "a1f5e82f37c77af7b1d630b5bca715d1742f1234"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 23:07:48 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 23:07:48 2011 -0800"
      },
      "message": "am a1f5e82f: am a30063d8: am 25eb0464: Merge \"Normalize output from aapt d\"\n\n* commit \u0027a1f5e82f37c77af7b1d630b5bca715d1742f1234\u0027:\n  Normalize output from aapt d\n"
    },
    {
      "commit": "a1f5e82f37c77af7b1d630b5bca715d1742f1234",
      "tree": "c7b1d7c8c18f5d74370558cbcf48ca6747661096",
      "parents": [
        "71bb59f9e6799083830077dbb7e0f1effdd3faf7",
        "a30063d80c08434ac3c7316f338c6d54110449ab"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 23:04:50 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 23:04:50 2011 -0800"
      },
      "message": "am a30063d8: am 25eb0464: Merge \"Normalize output from aapt d\"\n\n* commit \u0027a30063d80c08434ac3c7316f338c6d54110449ab\u0027:\n  Normalize output from aapt d\n"
    },
    {
      "commit": "25eb04642cb5a72f59a274bbfc92f4f65c6c343e",
      "tree": "6c59e04e7d9b961b49fccdfb139fe87baaa35855",
      "parents": [
        "bbb5a5ce1922a168335811b177cd7341350c15cc",
        "9872bf4a2d4ae1e7ded170c8e74d400fe6be9bfb"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 22:53:20 2011 -0800"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Sat Jan 29 22:53:20 2011 -0800"
      },
      "message": "Merge \"Normalize output from aapt d\""
    },
    {
      "commit": "2ece4cdc3fd0f8a45a889c711dba7165729e8ca5",
      "tree": "a76c7f3eed692edcce369a6ae198202fdd1c7500",
      "parents": [
        "0982dc6488a921d9d54d23b9180a9acf33c61526"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jan 28 18:21:54 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jan 28 18:21:54 2011 -0800"
      },
      "message": "Reset ANativeWindow crop on buffer geometry changes.\n\nThis changes the ANativeWindow API and the two implementations to reset\nthe window\u0027s crop rectangle to be uncropped when the window\u0027s buffer\ngeometry is changed.\n\nBug: 3359604\nChange-Id: I64283dc8382ae687787ec0bebe6a5d5b4a0dcd6b\n"
    },
    {
      "commit": "d6f5bde96b2fe82bc7e5d4e64266d585108c4648",
      "tree": "323f31caa5ff13610218cfaca6ee69a0a2588227",
      "parents": [
        "bc2e3fe480f1c670e483eaa9b8092902dd78ddf7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 19 15:27:27 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 28 08:04:00 2011 -0800"
      },
      "message": "Protected surface API\n\nTo be used by DRM framework, implemented by display HAL\n\nChange-Id: I054a07a94f4d5dbe792f3a597e2e49a100d90eb2\n"
    },
    {
      "commit": "804d8798d525ef8cda01998701d76166c641fc71",
      "tree": "fed70a8c775e7ee6af8b9d64a3a089e22390e64c",
      "parents": [
        "2d65afb7c4e7869c1fafefdfc98fc99014185e3b",
        "8bea1d5585822bb62996e789f59c7629dfd9ac50"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 26 14:49:23 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 26 14:49:23 2011 -0800"
      },
      "message": "am 8bea1d55: am 7fb232c4: Merge \"Make sure that key frame is generated for timelapse video recording if there are at least two input video frames from camera source.\" into honeycomb\n\n* commit \u00278bea1d5585822bb62996e789f59c7629dfd9ac50\u0027:\n  Make sure that key frame is generated for timelapse video recording if there are at least two input video frames from camera source.\n"
    },
    {
      "commit": "8bea1d5585822bb62996e789f59c7629dfd9ac50",
      "tree": "d937031df74f6969fdc8000099ad00b1c2bfee64",
      "parents": [
        "54fc78072fec46933ca5ee96c7642bd4b9fc540f",
        "7fb232c40cde91d0958be1694db2d97a126b95f9"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 26 14:45:41 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 26 14:45:41 2011 -0800"
      },
      "message": "am 7fb232c4: Merge \"Make sure that key frame is generated for timelapse video recording if there are at least two input video frames from camera source.\" into honeycomb\n\n* commit \u00277fb232c40cde91d0958be1694db2d97a126b95f9\u0027:\n  Make sure that key frame is generated for timelapse video recording if there are at least two input video frames from camera source.\n"
    },
    {
      "commit": "1155efdc715413cd7a881e5226b5f5f0b2db8f71",
      "tree": "cc5ae04c7c3ca6665503d96470160d93ee28ea8f",
      "parents": [
        "2ec4af59209ab3a7088a001bbbcb10ef0b846564",
        "2ba92c71b5684dce700cf848bf157153c156df1d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 26 14:05:18 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 26 14:05:18 2011 -0800"
      },
      "message": "am 2ba92c71: do not merge bug 3370834 Cherrypick from master\n\n* commit \u00272ba92c71b5684dce700cf848bf157153c156df1d\u0027:\n  do not merge bug 3370834 Cherrypick from master\n"
    },
    {
      "commit": "5f3ab06e90365ad6c4865e2cab358a20e12ce0eb",
      "tree": "3b80ccbe855de638f67d98a5e4c4c77c372b3423",
      "parents": [
        "373d357a8b13dc2cdc82d9e1d6144fb26e3bb202"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 25 16:31:28 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 26 12:11:22 2011 -0800"
      },
      "message": "Make sure that key frame is generated for timelapse video recording if there are at least two input video frames from camera source.\n\nThis will fix the stop failure issue where we have to wait n * time_interval before a key frame can be received by the file writer, where\n o n is the actual number of buffers advertised by the video encoder\n o time_interval is the interval settings for timelapse video recording\n   specifying the time distance between neighboring input video frames\n\nThe fix includes two parts:\no OMXCodec will not submit all n buffers at one time, but instead submit one input\n  frame at one time if it become available.\n\no Timelapse camera source made available the first two input frames and do not skip\n  them so that the first compressed output frame data can be received regardless\n  the specified time_interval\n\nbug - 3367659\n\nChange-Id: Ia68cc2cb0d71aa7dc54540e9ad82fae911ad530b\n"
    },
    {
      "commit": "c3975664926268f5245bccf8853ec54ed080ae9e",
      "tree": "233434cfdbf6029abeafa541efdf3c41f746033d",
      "parents": [
        "dca5cb32040255586b9c69f20ae9121aad6c3b1d",
        "e328d1c0bea62f4dc28210dbcab0da40f4449bf2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 26 11:48:12 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 26 11:48:12 2011 -0800"
      },
      "message": "am e328d1c0: am a9f27fa6: Merge \"Protect notification callback parameters with a mutex.\" into honeycomb\n\n* commit \u0027e328d1c0bea62f4dc28210dbcab0da40f4449bf2\u0027:\n  Protect notification callback parameters with a mutex.\n"
    },
    {
      "commit": "e328d1c0bea62f4dc28210dbcab0da40f4449bf2",
      "tree": "990e4f4a6c9755e3253d9e1dd7a0ded2962645d7",
      "parents": [
        "38a1714bf79821dad296eeddfda1b6a7ce93ebbd",
        "a9f27fa631ab21d52c75842ccaacc1cbcd75fca0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 26 11:44:17 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 26 11:44:17 2011 -0800"
      },
      "message": "am a9f27fa6: Merge \"Protect notification callback parameters with a mutex.\" into honeycomb\n\n* commit \u0027a9f27fa631ab21d52c75842ccaacc1cbcd75fca0\u0027:\n  Protect notification callback parameters with a mutex.\n"
    },
    {
      "commit": "2ffbb18053b286a81c5b89a72e4dee3d0ab4dc45",
      "tree": "9da056daa04cea797a7855d8070011fa72ec37e7",
      "parents": [
        "ff3b3ade7fa1da60d391d1a746cdc0868c24f4bf"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 26 11:19:19 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 26 11:20:42 2011 -0800"
      },
      "message": "Protect notification callback parameters with a mutex.\n\nThis avoids the race condition where notifications are dispatched to a NULL receiver\nafter notifications have been disabled.\n\nChange-Id: I6d351ffbee97616e2c35559c132a6c5e6a66948a\nrelated-to-bug: 3394139\n"
    },
    {
      "commit": "2ba92c71b5684dce700cf848bf157153c156df1d",
      "tree": "4a5fd1c92f47a6557552adbb65898c35866d9662",
      "parents": [
        "138757db4f19cb626ef5c1d371d4fca004304a08"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Nov 15 12:11:32 2010 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 26 11:20:01 2011 -0800"
      },
      "message": "do not merge bug 3370834 Cherrypick from master\n\nCherripick from master CL 79833, 79417, 78864, 80332, 87500\n\nAdd new audio mode and recording source for audio communications\n other than telelphony.\n\nThe audio mode MODE_IN_CALL signals the system the device a phone\n call is currently underway. There was no way for audio video\n chat or VoIP applications to signal a call is underway, but not\n using the telephony resources. This change introduces a new mode\n to address this. Changes in other parts of the system (java\n and native) are required to take this new mode into account.\nThe generic AudioPolicyManager is updated to not use its phone\n state variable directly, but to use two new convenience methods,\n isInCall() and isStateInCall(int) instead.\n\nAdd a recording source used to designate a recording stream for\nvoice communications such as VoIP.\n\nUpdate the platform-independent audio policy manager to pass the\n nature of the audio recording source to the audio policy client\n interface through the AudioPolicyClientInterface::setParameters()\n method.\n\nSIP calls should set the audio mode to MODE_IN_COMMUNICATION,\n Audio mode MODE_IN_CALL is reserved for telephony.\n\nSIP: Enable built-in echo canceler if available.\n1. Always initialize AudioRecord with VOICE_COMMUNICATION.\n2. If echo canceler is available, disable our echo suppressor.\n\nNote that this CL is intentionally not correcting the\n getAudioSourceMax() return value in MediaRecorder.java as the\n new source is hidden here.\n\nChange-Id: Ie68cd03c50553101aa2ad838fe9459b2cf151bc8\n"
    },
    {
      "commit": "ab2f09603079534b53499864a403d0ba16aad13b",
      "tree": "bda82420b709f75417061242d20227ec89732ff7",
      "parents": [
        "e1ec077497b4d88abf9d3aab68449325d7e2b87b",
        "12b2dc90883ef4f930a17907acdef3677b0598a5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 18:22:50 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 18:22:50 2011 -0800"
      },
      "message": "am 12b2dc90: am b1e0a870: Merge \"Fix crashes caused by some input devices.\" into honeycomb\n\n* commit \u002712b2dc90883ef4f930a17907acdef3677b0598a5\u0027:\n  Fix crashes caused by some input devices.\n"
    },
    {
      "commit": "12b2dc90883ef4f930a17907acdef3677b0598a5",
      "tree": "8a46f7bec5fdfe88cc60f22214e424c6acdb9e83",
      "parents": [
        "a2852d1f20f2948dc5cad6a4323836c7f8e1d79b",
        "b1e0a870e4099490127bb917bb4fc7a8f48db893"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 18:20:35 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 18:20:35 2011 -0800"
      },
      "message": "am b1e0a870: Merge \"Fix crashes caused by some input devices.\" into honeycomb\n\n* commit \u0027b1e0a870e4099490127bb917bb4fc7a8f48db893\u0027:\n  Fix crashes caused by some input devices.\n"
    },
    {
      "commit": "b1e0a870e4099490127bb917bb4fc7a8f48db893",
      "tree": "84d1aed66edb13896527b823539c56a7e3dc7cbe",
      "parents": [
        "f6926a63dfdc114789a6acc06396ca826eb64418",
        "58a2da843f2f22f406df8df1f011738eb8b7fcb1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 18:18:05 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 25 18:18:05 2011 -0800"
      },
      "message": "Merge \"Fix crashes caused by some input devices.\" into honeycomb"
    },
    {
      "commit": "2c91b5699e95519d9ce297ab7305b09841cd3285",
      "tree": "03d80281d6a3df5b79a89a30dd51822cb5850ce0",
      "parents": [
        "501e52f09d555cc27c637846a897b4903a116678",
        "c80daa1b05b8f1d2873df23821ae2c5344e76fb8"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jan 25 16:20:56 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 16:20:56 2011 -0800"
      },
      "message": "am c80daa1b: am f10d9404: Merge \"StagefrightMediaScanner: Close metadata retriever after we are done scanning\" into honeycomb\n\n* commit \u0027c80daa1b05b8f1d2873df23821ae2c5344e76fb8\u0027:\n  StagefrightMediaScanner: Close metadata retriever after we are done scanning\n"
    },
    {
      "commit": "58a2da843f2f22f406df8df1f011738eb8b7fcb1",
      "tree": "716c12630d5d9fe98e29e197287dc950eaa4a01c",
      "parents": [
        "30bc34f191ca8a009af313fc751e5b4bff6e39a1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 16:02:22 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 16:02:22 2011 -0800"
      },
      "message": "Fix crashes caused by some input devices.\n\nThe touch screen sometimes reports more than 10 pointers even though that\u0027s\nall we asked for.  When this happens, we start dropping events with more\nthan 10 pointers.  This confuses applications and causes them to crash.\nRaised the limit to 16 pointers.\nBug: 3331247\n\nThe default behavior was to identify all touch devices as touch screens.\nExternal devices that are plugged in are more likely to be touch pads\nnot attached to a screen.  Changed the default to be a touch pad\nand renamed some internal constants to avoid confusion.\n\nA certain mouse happens to also behave like a touch pad.  That caused\nproblems because we would see multiple concurrent traces of motion events\ncoming from the same input device so we would batch them up.\nAdded code to ensure that we don\u0027t batch events unless they come from\nthe same *source* in addition to coming from the same *device*.\n\nDue to batching or misbehaving drivers, it\u0027s possible for the set of\npointer ids to be different from what we expect when it comes time to\nsplit motion events across windows.  As a result, we can generate motion\nevents with 0 pointers.  When we try to deliver those events, we cause\nan error in the InputTransport so we tear down the InputChannel and kill\nthe application.\nAdded code to check out assumption about pointer ids and drop the\nevent gracefully instead.\n\nPatched up the tests to take into account the change in default behavior\nfor identifying touch screens and touch pads.\n\nChange-Id: Ic364bd4cb4cc6335d4a1213a26d6bdadc7e33505\n"
    },
    {
      "commit": "c80daa1b05b8f1d2873df23821ae2c5344e76fb8",
      "tree": "ce87b1caa784a0677b717372aa3504c06b661c61",
      "parents": [
        "7fadb5e77fd079c3a6c5eeae1ae81a487864b129",
        "f10d940413000732f1cd35bcb113c41019c7e3b7"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jan 25 15:48:06 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 15:48:06 2011 -0800"
      },
      "message": "am f10d9404: Merge \"StagefrightMediaScanner: Close metadata retriever after we are done scanning\" into honeycomb\n\n* commit \u0027f10d940413000732f1cd35bcb113c41019c7e3b7\u0027:\n  StagefrightMediaScanner: Close metadata retriever after we are done scanning\n"
    },
    {
      "commit": "8151dc3229888109f4ec699eb6311975b51a05b9",
      "tree": "e3d6ffb1284966f5091b80ccd0c42a530367114f",
      "parents": [
        "071b2b6739c83d3de806cda5d7be2aba33fde1af"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jan 25 15:20:04 2011 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jan 25 15:20:04 2011 -0800"
      },
      "message": "StagefrightMediaScanner: Close metadata retriever after we are done scanning\n\nThis prevents the mediaserver from leaking a file descriptor after\nthe media scanner runs\n\nBUG: 3373546\n\nChange-Id: I82a8bae82306de3da56a5c7da5b03ecf106a4efc\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "df8368925acd4593a309e06548d7f900bf8d94df",
      "tree": "39c092306bd33c66952aa4be033f86f1318b5cb1",
      "parents": [
        "af4fa5d83d70a9af9ede67c47eae72d1db0d6d74",
        "239fd805ef7c0e4116b0a89e20caaf287e91f017"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:46:40 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 14:46:40 2011 -0800"
      },
      "message": "am 239fd805: Merge \"fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)\" into gingerbread\n\n* commit \u0027239fd805ef7c0e4116b0a89e20caaf287e91f017\u0027:\n  fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)\n"
    },
    {
      "commit": "88bccab35c81907db09be3f511a2c1fd379a75b4",
      "tree": "8482a2450b68473e7f00dbd92052a876e33b9a3b",
      "parents": [
        "eb645a15b95ba917ce360b135f92cbcb6df56104",
        "d3fcd0a1c923498921107bb44fbc8b24582a170a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:46:22 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 14:46:22 2011 -0800"
      },
      "message": "am d3fcd0a1: Merge \"minor clean-up. SurfaceFlinger doesn\\\u0027t need libpixelflinger.so. (DO NOT MERGE)\" into gingerbread\n\n* commit \u0027d3fcd0a1c923498921107bb44fbc8b24582a170a\u0027:\n  minor clean-up. SurfaceFlinger doesn\u0027t need libpixelflinger.so. (DO NOT MERGE)\n"
    },
    {
      "commit": "21956040a77808909ebda426fbd3cce6c8ed059f",
      "tree": "caef5eb4375780074435043e54323cd256c07dfc",
      "parents": [
        "68d3478860fecc9b8fbf256796a832a037434555"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 18 15:51:30 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:19:13 2011 -0800"
      },
      "message": "fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)\n\nGenerally we never want to lock a buffer for write access if it is at\nthe \"head\" on the surfaceflinger side. The only exception (1) is when\nthe buffer is not currently in use AND there is at least one queued\nbuffer -- in which case, SurfaceFlinger will never use said buffer\nanymore, because on the next composition around, it will be able to\nretire the first queued buffer.\n\nThe logic above relies on SurfaceFlinger always retiring\nand locking a buffer before composition -- unfortunately this\ndidn\u0027t happen during a screenshot.\n\nThis could leave us in a situation where a buffer is locked by the\napplication for write, and used by SurfaceFlinger for texturing,\ncausing a hang.\n\nHere, we fix this issue by never assuming the exception (1), it was\nintended as an optimization allowing ANativeWindow::lockBuffer() to\nreturn sooner and was justified when most of SF composition was\ndone in software. The actual buffer locking is now ensured by\ngralloc. We could have handled screenshots in a similar way to\na regular composition, but it could have caused glitches on screen,\nessentially, taking a screenshot could cause to skip a frame.\n\nnow that we removed the notion of a \"inUse\" buffer in surfaceflinger\na lot of code can be simplified / removed.\n\nnoteworthy, the whole concept of \"unlockClient\" wrt. \"compositionComplete\"\nis also gone.\n"
    },
    {
      "commit": "728d849fc92bbf9b3bfd8c3903344ff58f3d5d06",
      "tree": "59811b37615d1e4d7c227b71cd3a378206449cb0",
      "parents": [
        "c929677e017759047d94599faa1b80ebe278fefb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Dec 13 16:47:31 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:18:15 2011 -0800"
      },
      "message": "minor clean-up. SurfaceFlinger doesn\u0027t need libpixelflinger.so. (DO NOT MERGE)\n\nChange-Id: I1ddbbbec4fa5b2521ef3787bc28efe1bc90d0060\n"
    },
    {
      "commit": "3873da3c6ee0a63de0d91e6045b7546402f4ce3d",
      "tree": "4269dbe697c68614bc642a448bd3b050bb1b8245",
      "parents": [
        "222b8e256941db75092c6a047a99e33e9e6257d2",
        "2acb67ec9fe34316231519373f59dfb76c03d57b"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jan 24 13:30:37 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 24 13:30:37 2011 -0800"
      },
      "message": "am 2acb67ec: am 67005b05: Merge \"Use optimized display lists for all hwaccelerated rendering\" into honeycomb\n\n* commit \u00272acb67ec9fe34316231519373f59dfb76c03d57b\u0027:\n  Use optimized display lists for all hwaccelerated rendering\n"
    },
    {
      "commit": "2acb67ec9fe34316231519373f59dfb76c03d57b",
      "tree": "bd7e912f3ac5c6531a7192584b4f3060d05ae071",
      "parents": [
        "99b8041cc6bef1983f7a30adf0e2f0a751a18d3a",
        "67005b05cc76a38a5b3bf6e83957dd03619e9126"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jan 24 11:15:51 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 24 11:15:51 2011 -0800"
      },
      "message": "am 67005b05: Merge \"Use optimized display lists for all hwaccelerated rendering\" into honeycomb\n\n* commit \u002767005b05cc76a38a5b3bf6e83957dd03619e9126\u0027:\n  Use optimized display lists for all hwaccelerated rendering\n"
    },
    {
      "commit": "daf98e941e140e8739458126640183b9f296a2ab",
      "tree": "e338ad021139d706004b70a38fbbe539ccfbbacf",
      "parents": [
        "57ffc00239edcfe733832771e1429fca20182207"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jan 10 14:10:36 2011 -0800"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jan 24 08:43:20 2011 -0800"
      },
      "message": "Use optimized display lists for all hwaccelerated rendering\n\nPreviously, display lists were used only if hardware acceleration\nwas enabled for an application (hardwareAccelerated\u003dtrue) *and* if\nsetDrawingCacheEnabled(true) was called. This change makes the framework\nuse display lists for all views in an application if hardware acceleration\nis enabled.\n\nIn addition, display list renderering has been optimized so that\nany view\u0027s recreation of its own display list (which is necessary whenever\nthe visuals of that view change) will not cause any other display list\nin its parent hierarchy to change. Instead, when there are any visual\nchanges in the hierarchy, only those views which need to have new\ndisplay list content will recreate their display lists.\n\nThis optimization works by caching display list references in each\nparent display list (so the container of some child will refer to its\nchild\u0027s display list by a reference to the child\u0027s display list). Then when\na view needs to recreate its display list, it will do so inside the same\ndisplay list object. This will cause the content to get refreshed, but not\nthe reference to that content. Then when the view hierarchy is redrawn,\nit will automatically pick up the new content from the old reference.\n\nThis optimization will not necessarily improve performance when applications\nneed to update the entire view hierarchy or redraw the entire screen, but it does\nshow significant improvements when redrawing only a portion of the screen,\nespecially when the regions that are not refreshed are complex and time-\nconsuming to redraw.\n\nChange-Id: I68d21cac6a224a05703070ec85253220cb001eb4\n"
    },
    {
      "commit": "c3563eb9e75e0b9ae130ec22d5c6c6b1561d783b",
      "tree": "45786dc28bd44e6c5db778c0ad64e5ad04f16f00",
      "parents": [
        "6d92cde287b6399d5c90f3eaccb73602d6d51313",
        "265cf2e76bef9ee369a7d43d567a22a0c39355ef"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Sat Jan 22 21:32:58 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 22 21:32:58 2011 -0800"
      },
      "message": "am 265cf2e7: Merge \"Fix getSwitchState.\"\n\n* commit \u0027265cf2e76bef9ee369a7d43d567a22a0c39355ef\u0027:\n  Fix getSwitchState.\n"
    },
    {
      "commit": "0bb0b8b3562fdae887eb2ec742cd2dd33b3b6668",
      "tree": "a42d3c954a36dbc5bafa2a1a3abee96f296936c6",
      "parents": [
        "8b38dca1e58bec69bd1daffb4811dad90b39f056",
        "3564d9eada7ae3f40bc4c80272fbbb867f04e018"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 14:47:15 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 21 14:47:15 2011 -0800"
      },
      "message": "am 3564d9ea: am 63d64a14: Merge \"Properly rotate video that\\\u0027s marked as such and decoded to a surface.\" into honeycomb\n\n* commit \u00273564d9eada7ae3f40bc4c80272fbbb867f04e018\u0027:\n  Properly rotate video that\u0027s marked as such and decoded to a surface.\n"
    },
    {
      "commit": "3564d9eada7ae3f40bc4c80272fbbb867f04e018",
      "tree": "d7d058f56288468b4a62c99816a691f9c033d07e",
      "parents": [
        "135531b20a2ad50c6b12e5d66ce8176bfd7ecb4b",
        "63d64a14790ae21db31b60747864b4a7565b33c3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 14:44:21 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 21 14:44:21 2011 -0800"
      },
      "message": "am 63d64a14: Merge \"Properly rotate video that\\\u0027s marked as such and decoded to a surface.\" into honeycomb\n\n* commit \u002763d64a14790ae21db31b60747864b4a7565b33c3\u0027:\n  Properly rotate video that\u0027s marked as such and decoded to a surface.\n"
    },
    {
      "commit": "5e9dc94a3c7a42d77ab454b77e1350b6fa5d2c26",
      "tree": "03559f1b3eab1a5068cecefcae558a7d4c11d8cd",
      "parents": [
        "05aa082770d812c5921d6b2f9b3559f1fd1536a8"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 14:32:31 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 14:32:31 2011 -0800"
      },
      "message": "Properly rotate video that\u0027s marked as such and decoded to a surface.\n\nChange-Id: I1e9144db3447e58c99aac3f47702ad471678789c\nrelated-to-bug: 3378148\n"
    },
    {
      "commit": "149234e91e8dc190ab1e9144177dbdc4adf6090e",
      "tree": "8dfd77b6533e7d307c943e23a27c3c84d834e660",
      "parents": [
        "65da49fef0c91ed0a0777b27a3f546df81a3cc03",
        "9a62d902ead8f94fa0ce071300e3767bfb976d8b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 13:19:42 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 21 13:19:42 2011 -0800"
      },
      "message": "am 9a62d902: am 05aa0827: Merge \"Some tweaks to HTTP live / nuplayer behaviour\" into honeycomb\n\n* commit \u00279a62d902ead8f94fa0ce071300e3767bfb976d8b\u0027:\n  Some tweaks to HTTP live / nuplayer behaviour\n"
    },
    {
      "commit": "9a62d902ead8f94fa0ce071300e3767bfb976d8b",
      "tree": "79afb54480e8efdee1e9c252923219fc29bd0f2e",
      "parents": [
        "338ebe14921cd5aab4bb886787b32d62cd852651",
        "05aa082770d812c5921d6b2f9b3559f1fd1536a8"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 13:17:42 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 21 13:17:42 2011 -0800"
      },
      "message": "am 05aa0827: Merge \"Some tweaks to HTTP live / nuplayer behaviour\" into honeycomb\n\n* commit \u002705aa082770d812c5921d6b2f9b3559f1fd1536a8\u0027:\n  Some tweaks to HTTP live / nuplayer behaviour\n"
    },
    {
      "commit": "19922adceb29a3192a63e35a07fb02412aa2a4a2",
      "tree": "35fff4a4b1be99a3e25313dcefa6b8f91bf614fe",
      "parents": [
        "c2ff2ec0d987dd1372183d2a18ea59a0c4d71c2c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 10:15:23 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 10:34:40 2011 -0800"
      },
      "message": "Some tweaks to HTTP live / nuplayer behaviour\n\n- play audio-only streams again\n- workaround for malformed streams that switch PIDs across bandwidths\n- attempt to pick a different bandwidth stream if the previously chosen one appears\n  to be malformed/unsupported.\n\nChange-Id: I426d0a40dc725aa242f619d4c9d048b69aca55c9\nrelated-to-bug: 2368598\n"
    },
    {
      "commit": "ea870e0af429050fa56568cfba8a97836e14731f",
      "tree": "7fd9a4773cd86bef5d6bdfa5786b6add3ca229be",
      "parents": [
        "35d5fb744dcbf17bbe468ea2b48be669c8225007",
        "612d7f3c092ec2c4a2ae44cb09d6dfb4e525a659"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 20 17:25:14 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 20 17:25:14 2011 -0800"
      },
      "message": "am 612d7f3c: am a423d868: Merge \"clean-up unneeded code\" into honeycomb\n\n* commit \u0027612d7f3c092ec2c4a2ae44cb09d6dfb4e525a659\u0027:\n  clean-up unneeded code\n"
    },
    {
      "commit": "612d7f3c092ec2c4a2ae44cb09d6dfb4e525a659",
      "tree": "3c7d608dd72978bb405afc6d50574848d25457d2",
      "parents": [
        "ec5179aceca4b92ea4136f0c337ba6cb909c56c7",
        "a423d868009b9961597365ce7f190aef23f4b1cc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 20 17:03:46 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 20 17:03:46 2011 -0800"
      },
      "message": "am a423d868: Merge \"clean-up unneeded code\" into honeycomb\n\n* commit \u0027a423d868009b9961597365ce7f190aef23f4b1cc\u0027:\n  clean-up unneeded code\n"
    },
    {
      "commit": "a423d868009b9961597365ce7f190aef23f4b1cc",
      "tree": "755aab7bd7af26b40e43ea2b38d2ed6f0641e19e",
      "parents": [
        "2e0f0bb3fe63c51fa3154f8ed17bfaf611edbf5d",
        "1d4549ab0312319a79fb37068a3fc63bbb0a3adc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 20 12:25:26 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 20 12:25:26 2011 -0800"
      },
      "message": "Merge \"clean-up unneeded code\" into honeycomb"
    },
    {
      "commit": "1d4549ab0312319a79fb37068a3fc63bbb0a3adc",
      "tree": "32a0c3dcb3fcae1354342ad938abb6a7d9c747e4",
      "parents": [
        "ed58d8ed8a50cbd8c5e01c4e51bcbbe4341d1dfd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 18:02:20 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 20 12:10:11 2011 -0800"
      },
      "message": "clean-up unneeded code\n\nnow that we removed the notion of a \"inUse\" buffer in surfaceflinger\na lot of code can be simplified / removed.\n\nnoteworthy, the whole concept of \"unlockClient\" wrt. \"compositionComplete\"\nis also gone.\n\nChange-Id: I210413d4c8c0998dae05c8620ebfc895d3e6233d\n"
    },
    {
      "commit": "3d822cda1e46c5e928152e4d4f7d9d47676bb5e4",
      "tree": "10dcdbdc00c5fd0bc0881f98529b78ae8c1ce310",
      "parents": [
        "069e810c6a5efc0b33fbe8c29a2d11f7c342a4d8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed Jan 19 20:35:47 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed Jan 19 20:35:47 2011 -0800"
      },
      "message": "Fix getSwitchState.\n\nInputReader::getSwitchState always returns AKEY_STATE_UNKNOWN\nbecause SwitchInputMapper::getSources() returns 0 which cannot\nmatch any source mask including AINPUT_SOURCE_ANY.  As a result\ninitial lid switch detection is broken.\n\nThis change adds a new source constant AINPUT_SOURCE_SWITCH\nthat indicates that the source has switches.\n\nChange-Id: I5321ecf0ce84f1c2b4535f6c163d3f4dcf9b7a9b\n"
    },
    {
      "commit": "e155bd0fcb57fa96c4a7b5cc70205d53acf41291",
      "tree": "81521106d865081b80000e7135174087a0f56e68",
      "parents": [
        "cd5256594b75e81bcc0708d7599fe5fa0157d0ae",
        "5f668c6e6bb2515325632691a804a7c8f24ebb09"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 19 18:58:28 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 19 18:58:28 2011 -0800"
      },
      "message": "am 5f668c6e: am 8b9df978: Merge \"Fix getSwitchState.\" into honeycomb\n\n* commit \u00275f668c6e6bb2515325632691a804a7c8f24ebb09\u0027:\n  Fix getSwitchState.\n"
    },
    {
      "commit": "5f668c6e6bb2515325632691a804a7c8f24ebb09",
      "tree": "645f1fcf27a746e4d4a00f3297224fb52375fe91",
      "parents": [
        "d3782640515019cf4b6f3577cd7917cb0ef4b68e",
        "8b9df97826f94e2e871eff734b174a4752b0d5f9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 19 18:55:51 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 19 18:55:51 2011 -0800"
      },
      "message": "am 8b9df978: Merge \"Fix getSwitchState.\" into honeycomb\n\n* commit \u00278b9df97826f94e2e871eff734b174a4752b0d5f9\u0027:\n  Fix getSwitchState.\n"
    },
    {
      "commit": "89de57a8d252a25ef2412a11a66089a9ff6ffe29",
      "tree": "26c27db9de6f06bfd9ea0e3bb6ddae805fcccbcb",
      "parents": [
        "2cb866b948c38923b31331a9b2f031eb9d791e6e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 19 18:41:38 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 19 18:41:38 2011 -0800"
      },
      "message": "Fix getSwitchState.\n\nInputReader::getSwitchState always returns AKEY_STATE_UNKNOWN\nbecause SwitchInputMapper::getSources() returns 0 which cannot\nmatch any source mask including AINPUT_SOURCE_ANY.  As a result\ninitial lid switch detection is broken.\n\nThis change adds a new source constant AINPUT_SOURCE_SWITCH\nthat indicates that the source has switches.\n\nChange-Id: I5321ecf0ce84f1c2b4535f6c163d3f4dcf9b7a9b\n"
    },
    {
      "commit": "a2a3ea5ddadd7e3c882a93906b90e60231735818",
      "tree": "7462b85b2c038961c672eef0c7294679991279ef",
      "parents": [
        "e944c0fe027d98d10d551f133aae0fb53e3f6b35",
        "1324e3b1a4246f77d516b37fa98013ffad91268e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 19 10:09:01 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 19 10:09:01 2011 -0800"
      },
      "message": "am 1324e3b1: am 4061c9aa: Merge \"Fix the presentation video resolution when it is different from the actual image resolution of the video.\" into honeycomb\n\n* commit \u00271324e3b1a4246f77d516b37fa98013ffad91268e\u0027:\n  Fix the presentation video resolution when it is different from the actual image resolution of the video.\n"
    },
    {
      "commit": "1324e3b1a4246f77d516b37fa98013ffad91268e",
      "tree": "6d0f6768bcc07bc7869022f6111145f9ee79656f",
      "parents": [
        "d3bf3eeadd59748b9cbe7535378b4bdf8dd8f117",
        "4061c9aa6d77bd7ad3b43d898b3e55fd62f57f18"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 19 10:06:23 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 19 10:06:23 2011 -0800"
      },
      "message": "am 4061c9aa: Merge \"Fix the presentation video resolution when it is different from the actual image resolution of the video.\" into honeycomb\n\n* commit \u00274061c9aa6d77bd7ad3b43d898b3e55fd62f57f18\u0027:\n  Fix the presentation video resolution when it is different from the actual image resolution of the video.\n"
    },
    {
      "commit": "08adfd29ae3634b554cfe184ab82f112ef934d7b",
      "tree": "4c18050f552689c88684288af75588b81c8c5c8c",
      "parents": [
        "c40fc87147baffa2a71d66550a0f99ca2524f4b9"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jan 16 11:30:13 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 19 08:33:07 2011 -0800"
      },
      "message": "Fix the presentation video resolution when it is different from the actual image resolution of the video.\n\nbug - 3352413\n\nChange-Id: I8f08f3896e9fb90f09119dccdb88b82af60f79f2\n"
    },
    {
      "commit": "b26c516c03beffaf60460d3589b3807c0799c344",
      "tree": "dc0df936813d0b042d5868ce7e9fabd8d86e411a",
      "parents": [
        "02bbbc1122eac6ab02c10c3c1bb34092914e3743",
        "41395459e676cf9ab4059e08446656f145662c2d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 18 14:38:27 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 18 14:38:27 2011 -0800"
      },
      "message": "am 41395459: Merge \"Filter virtual keys after touches.  (DO NOT MERGE)\" into gingerbread\n\n* commit \u002741395459e676cf9ab4059e08446656f145662c2d\u0027:\n  Filter virtual keys after touches.  (DO NOT MERGE)\n"
    },
    {
      "commit": "41395459e676cf9ab4059e08446656f145662c2d",
      "tree": "6f31fb66122790fa6378d2478c6b5c82194eb49f",
      "parents": [
        "07e6f616d122496342a5bae51323bb218d88f7f2",
        "6f71d0fedbb04c048a7294976103e42f0f046641"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 18 14:31:31 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 18 14:31:31 2011 -0800"
      },
      "message": "Merge \"Filter virtual keys after touches.  (DO NOT MERGE)\" into gingerbread"
    },
    {
      "commit": "0f6226b9f417182bbf791598000f0a153fbf191c",
      "tree": "6b10732d2ec4126ddfaea5b7948fd031d6cbc63c",
      "parents": [
        "2e3720f1e0bec9752dc920853a35a778358b1155",
        "cb1404e45639d20439d7700b06d57ca1a1aad1fa"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 17 15:57:44 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 17 15:57:44 2011 -0800"
      },
      "message": "Merge \"Add joystick support to framework.\""
    },
    {
      "commit": "cb1404e45639d20439d7700b06d57ca1a1aad1fa",
      "tree": "1d9bb7c58ea0a9ae36c242602fca59d343e8a0cd",
      "parents": [
        "e0dfee2b7075c1eac0db08d79d47381693d2f125"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Jan 15 18:14:15 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 17 13:51:00 2011 -0800"
      },
      "message": "Add joystick support to framework.\n\nChange-Id: I95374436708752e1a9cff3f85c5b9bc3e0987961\n"
    },
    {
      "commit": "bf6ccb04b93f7a2738f29f2d96a69f32f7602f51",
      "tree": "810eb2b3fc905207d1cb9d16a9c66848d205a8bc",
      "parents": [
        "f7465eb652717d89193b0208a85edc8bd1ef0b4d",
        "307003a844c90458bcfd7398c44bbae734936238"
      ],
      "author": {
        "name": "Dharmaray Kundargi",
        "email": "dharmaray@google.com",
        "time": "Mon Jan 17 11:40:16 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 17 11:40:16 2011 -0800"
      },
      "message": "am 307003a8: Merge \"integrate videoeditor preview player.\" into honeycomb\n\n* commit \u0027307003a844c90458bcfd7398c44bbae734936238\u0027:\n  integrate videoeditor preview player.\n"
    },
    {
      "commit": "307003a844c90458bcfd7398c44bbae734936238",
      "tree": "4092f65479f119a0ed84ec8a3d4aeb54ee10c35b",
      "parents": [
        "4e4f3d1df475b03a1a49954d2b3b4530e39778ab",
        "3b3cddccc105a7eaade4bb98f0eead3d3d3a2cc9"
      ],
      "author": {
        "name": "Dharmaray Kundargi",
        "email": "dharmaray@google.com",
        "time": "Mon Jan 17 10:52:23 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 17 10:52:23 2011 -0800"
      },
      "message": "Merge \"integrate videoeditor preview player.\" into honeycomb"
    },
    {
      "commit": "d97ea28b48b49c02cb9c0af015d1f11e8855d47b",
      "tree": "ce88ae76c0bfd7e67c59ccbe488b4cc24629b002",
      "parents": [
        "ecd797b12fd19a6e3cfe0e92a4a5601d395bb753",
        "cf18c4788af740773c9b2720a1c4ed5f45454b8e"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 16 18:17:34 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jan 16 18:17:34 2011 -0800"
      },
      "message": "am cf18c478: Merge \"Implement SurfaceTexture frame-available callback.\" into honeycomb\n\n* commit \u0027cf18c4788af740773c9b2720a1c4ed5f45454b8e\u0027:\n  Implement SurfaceTexture frame-available callback.\n"
    },
    {
      "commit": "376590d668e22a918439877b55faf075427b13f3",
      "tree": "d55b9baf0efec6a49de60786cc996f6ef699d067",
      "parents": [
        "0fb736c0937d9d65001e0176d90e1011226594bf"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 13 14:43:36 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 16 17:28:39 2011 -0800"
      },
      "message": "Implement SurfaceTexture frame-available callback.\n\nThis change implements the onFrameAvailable callback for the\nSurfaceTexture java class.  It includes the C++ SurfaceTexture code as\nwell as the JNI and Java code to enable the callback.\n\nChange-Id: Ifd8b8e7ad46ee70cba6da1c2e96dab8045d1ea30\n"
    },
    {
      "commit": "3b3cddccc105a7eaade4bb98f0eead3d3d3a2cc9",
      "tree": "36b8fb5fa189c1b20f057e095d554454571a3fe5",
      "parents": [
        "981df1d9931c1bd48dbb735437823b92db51e1a1"
      ],
      "author": {
        "name": "Dharmaray Kundargi",
        "email": "dharmaray@google.com",
        "time": "Sun Jan 16 16:43:20 2011 -0800"
      },
      "committer": {
        "name": "Dharmaray Kundargi",
        "email": "dharmaray@google.com",
        "time": "Sun Jan 16 16:43:20 2011 -0800"
      },
      "message": "integrate videoeditor preview player.\n\nChange-Id: I83084f494605c8e6f4d198afa8c36f9e29579667\n"
    },
    {
      "commit": "ceaf8ac31c0ee131f5c7865feb227f60def729df",
      "tree": "31619e119584facd46346dbe2bf7ca57e58058e8",
      "parents": [
        "b3f44773897588cf1ab6335444e4ca5fb0160a7f",
        "a7393dd66f0127c8acdd5f8928b0c2d0de602275"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 19:29:40 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 14 19:29:40 2011 -0800"
      },
      "message": "am a7393dd6: Merge \"Fix error reporting in Surface::cancelBuffer()\" into honeycomb\n\n* commit \u0027a7393dd66f0127c8acdd5f8928b0c2d0de602275\u0027:\n  Fix error reporting in Surface::cancelBuffer()\n"
    },
    {
      "commit": "a7393dd66f0127c8acdd5f8928b0c2d0de602275",
      "tree": "874fa7e64d5c1bc8755ddf88b8aafe1d2171ed69",
      "parents": [
        "e7df0ddee486f4705b17b4d8ed57ddbeb8b71943",
        "afc724b907336c043a38487fb5620074c9777d45"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 19:27:32 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 14 19:27:32 2011 -0800"
      },
      "message": "Merge \"Fix error reporting in Surface::cancelBuffer()\" into honeycomb"
    },
    {
      "commit": "9286cfe5017363d95798d85163ec4f28aeb0c675",
      "tree": "cd0907a081cd799a4dc67f00072006fd850c016a",
      "parents": [
        "ef6abd8a3e4b05cb9d94f29f4e8ffc7bb2ecec77",
        "83fdc69ea0beb715dd45f0a4285cb5d780f8018a"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jan 14 18:33:51 2011 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jan 14 18:33:51 2011 -0800"
      },
      "message": "merge 83fdc69e from gingerbread - do not merge\n\nChange-Id: Ib1e9e12244a44f75a93d66142e71915de6386680\n"
    },
    {
      "commit": "afc724b907336c043a38487fb5620074c9777d45",
      "tree": "874193599e69223abda180d5cf8f02376307599a",
      "parents": [
        "853548287ffe4eb85d1bd10669270292336d137a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 11:04:34 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 11:04:34 2011 -0800"
      },
      "message": "Fix error reporting in Surface::cancelBuffer()\n\nwhen we validate the surface there, most errors are in fact allowed\nbecause it is legal to cancel a buffer after a surface has been\ndestroyed (for instance). in that case make sure to not log\nerror messages as they are very confusing.\n\nChange-Id: Iecdfbaf6d9ee5da54d56cd7ea7a0d430c30934b0\n"
    },
    {
      "commit": "202b603dc11dc503450823389ae4dfa6860de490",
      "tree": "436a112dadde6f031f2baf6d9f6626b325cfb5e4",
      "parents": [
        "d707fc914ec5fe95e92a930b4badc972c91cd115",
        "3defffe06e6989506698ecdce1be3149a33774c1"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 13 13:00:10 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 13 13:00:10 2011 -0800"
      },
      "message": "am 3defffe0: Merge \"Fix remote GraphicBuffer allocation in SurfaceFlinger.\" into honeycomb\n\n* commit \u00273defffe06e6989506698ecdce1be3149a33774c1\u0027:\n  Fix remote GraphicBuffer allocation in SurfaceFlinger.\n"
    },
    {
      "commit": "f7acf162f8d682c6ebc9af41ca76795b79509193",
      "tree": "b2f5246744f5a8c15f841f6a45da4a53679eff67",
      "parents": [
        "e8d0e8a77690eca02f15b0d5e628be7cad5d0133"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jan 12 18:30:40 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 13 12:19:04 2011 -0800"
      },
      "message": "Fix remote GraphicBuffer allocation in SurfaceFlinger.\n\nThis change fixes a horrible hack that I did to allow application\nprocesses to create GraphicBuffer objects by making a binder call to\nSurfaceFlinger.  This change introduces a new binder interface\nspecifically for doing this, and does it in such a way that\nSurfaceFlinger will maintain a reference to the buffers until the app is\ndone with them.\n\nChange-Id: Icb240397c6c206d7f69124c1497a829f051cb49b\n"
    },
    {
      "commit": "282e1c4ffae2b94265fd9cc20f68669b3a6e2781",
      "tree": "85610aa847fbfd9e6e2419b57d54198c4ee38533",
      "parents": [
        "da6f7dbf9f8bf90c84147dbc57b885b3ece03e81",
        "21f62b9e461416ae61c8471f7199f104f8fe33de"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Thu Jan 13 07:44:55 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 13 07:44:55 2011 -0800"
      },
      "message": "am 21f62b9e: Merge \"Add a method enable encryption.\" into honeycomb\n\n* commit \u002721f62b9e461416ae61c8471f7199f104f8fe33de\u0027:\n  Add a method enable encryption.\n"
    },
    {
      "commit": "21f62b9e461416ae61c8471f7199f104f8fe33de",
      "tree": "bfb5396ee263d8ea97bf4934cbced60a38b2bd2d",
      "parents": [
        "ca6777b23bbe9283380efb2ba7e6d0a79d8669db",
        "56aa5321fe6f00fa3662e6f46a4b2559aa34f63e"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Thu Jan 13 07:41:53 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 13 07:41:53 2011 -0800"
      },
      "message": "Merge \"Add a method enable encryption.\" into honeycomb"
    },
    {
      "commit": "9efe47374b61afd0ce84afa64e9fa5b41dfaef22",
      "tree": "4bb85e1b5ef19ce8cad358a9a52ab05f2e6077e4",
      "parents": [
        "a29bf14e1d2857debc632ce4304a1c72dded348c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Dec 02 17:42:08 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 12 17:12:46 2011 -0800"
      },
      "message": "Squash commits of the following patches, cherry-picked from other branch - do not merge.\n\no Prepare for publishing MediaMetadataRetriever as public API\n  step one:\n  o replaced captureFrame with getFrameAtTime\n  o removed getMode\n\no Replace MediaMetadataRetriever.captureFrame() with MediaMetadataRetriever.getFrameAtTime()\n  as part of the preparation for publishing MediaMetadataRetriever as public Java API\n\no Remove captureFrame from MediaMetadataRetriever.java class\n  It has been replaced by getFrameAtTime() method\n\no Replace extractAlbumArt() with getEmbeddedPicture() in MediaMetadataRetriever.java\n\no Publish MediaMetadataRetriever.java as public API\n  o Removed setMode() methods and related mode constants\n  o Removed some of the unused the metadata keys\n  o Updated the javadoc\n  o part of a multi-project change.\n\nbug - 3309041\n\nChange-Id: I2efb6e8b8d52897186b016cb4efda6862f5584c4\n"
    },
    {
      "commit": "f152f2efa6892f844949b648aecc3b2a91e1d17e",
      "tree": "ca1355c4dd79d4df807fd12ad1e80af357e4fc0a",
      "parents": [
        "90a181021922f29c124b9f29411ddd7b0d82b168",
        "103198a10cc22a49270a787d04b8ab484d2ec235"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jan 12 15:03:37 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 12 15:03:37 2011 -0800"
      },
      "message": "am 103198a1: Merge \"Implement crop \u0026 transform for SurfaceTexture.\" into honeycomb\n\n* commit \u0027103198a10cc22a49270a787d04b8ab484d2ec235\u0027:\n  Implement crop \u0026 transform for SurfaceTexture.\n"
    },
    {
      "commit": "103198a10cc22a49270a787d04b8ab484d2ec235",
      "tree": "e630f2eaf512c5ab0394d737d1c67715f05a2b7b",
      "parents": [
        "d688e5af1c95a8b5a482c146cd789c2be45f9663",
        "b598fb90727be45e926a11abefc319819a733540"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jan 12 14:57:29 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 12 14:57:29 2011 -0800"
      },
      "message": "Merge \"Implement crop \u0026 transform for SurfaceTexture.\" into honeycomb"
    },
    {
      "commit": "999fb5a5a952ffb0c13ee5d6940fa1a39f165bcd",
      "tree": "1f28a35121b609bae59739976197f55a39b2ff1d",
      "parents": [
        "7ca0b1c58623ad1adfb3324df235d4172e44c83a",
        "068b41d5d41a4a78c96586b85ea89d464d302548"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 12 14:35:35 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 12 14:35:35 2011 -0800"
      },
      "message": "am 068b41d5: Merge \"Publish MediaMetadataRetriever.java as public API\" into honeycomb\n\n* commit \u0027068b41d5d41a4a78c96586b85ea89d464d302548\u0027:\n  Publish MediaMetadataRetriever.java as public API\n"
    },
    {
      "commit": "11eab056dd0133a390169d3581edf3eef26d6a54",
      "tree": "efcb4b7e4e289be17db5ed1356f365e0e18f87e6",
      "parents": [
        "1415bb7a948e0add9f6beb6dccbea70e9d2bedd0"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 06 12:20:35 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 12 14:14:11 2011 -0800"
      },
      "message": "Publish MediaMetadataRetriever.java as public API\n\no Removed setMode() methods and related mode constants\no Removed some of the unused the metadata keys\no Updated the javadoc\n\no part of a multi-project change.\n\nbug - 2433195\n\nChange-Id: I5ed167f1fd6a53cb143b7dc385b149431d434438\n"
    },
    {
      "commit": "56aa5321fe6f00fa3662e6f46a4b2559aa34f63e",
      "tree": "9a24368ed12f6819b0045efa2b444d6045479740",
      "parents": [
        "1125d780a8b61703b8eb28c5c77dac5f3f0022dd"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Fri Jan 07 09:01:15 2011 -0600"
      },
      "committer": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Wed Jan 12 16:00:23 2011 -0600"
      },
      "message": "Add a method enable encryption.\n\nThis is for testing and needs to be cleaned up.\n\nChange-Id: I29958f2a95c7773744e61bbd23a302b752614f87\n"
    },
    {
      "commit": "b598fb90727be45e926a11abefc319819a733540",
      "tree": "12457615a7573c7e2beaab0631ff6d204909d571",
      "parents": [
        "7a8f01abf98b6212358ea0e0401879093d2c0f93"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 09 16:33:17 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jan 12 11:28:38 2011 -0800"
      },
      "message": "Implement crop \u0026 transform for SurfaceTexture.\n\nThis change adds support for the setCrop and setTransform methods of the\nSurfaceTexture C++ class.  The crop and transform for the current\ntexture will be accessed by applications as a single texture coordinate\ntransform matrix.\n\nChange-Id: I6482bf96f680e5c175364e848936db3908d6c8f8\n"
    }
  ],
  "next": "6f71d0fedbb04c048a7294976103e42f0f046641"
}
