)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "6f71d0fedbb04c048a7294976103e42f0f046641",
      "tree": "134e67a8de24e3cba2eafeea87f486342537b576",
      "parents": [
        "7e2f9cc81da788006790365ff11f06551fc1bc26"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 24 14:39:33 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 11 20:56:04 2011 -0800"
      },
      "message": "Filter virtual keys after touches.  (DO NOT MERGE)\n\nAdds a new virtualKeyQuietTimeMillis configuration resource that sets\nthe duration for which virtual keys will be dropped after recent touches\non screen.  The default value is 0; it is intended to be overridden\nper device using a resource overlay.\n\nThis change is designed to help in two cases:\n\n1. Swipes from touchscreen into virtual key area.\n2. Accidental taps in virtual key area while using on-screen keyboard.\n\nBug: 3089163\nChange-Id: Id6733c83c2e2bc8d9553aa0e5c1fd74b741bec6e\n"
    },
    {
      "commit": "3b7983cfea8885e394e7d625a31cbd0ae71e8edb",
      "tree": "11c78be0e9a99d1c13f3e1c145519c92cc80df31",
      "parents": [
        "e15c4e4d63841af70538ae9f1988b53d1bbd15e4",
        "9e0bb6d5eef5dfe2da60c50f3aaa39512307d11d"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Jan 11 14:55:56 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 11 14:55:56 2011 -0800"
      },
      "message": "am 9e0bb6d5: am 0544d059: Merge \"DRM Framework bug fixes.\"\n\n* commit \u00279e0bb6d5eef5dfe2da60c50f3aaa39512307d11d\u0027:\n  DRM Framework bug fixes.\n"
    },
    {
      "commit": "fbab3b67afc904450613204400d9e8779feb5659",
      "tree": "dfbfe3cbe7754bb41942f6a26e8a284a2121920f",
      "parents": [
        "ffe3f1cb16d37e56ab69ad345f47c6d3f52b916c",
        "d369dc42506ec003f1839bb9e27edada411324b5"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jan 10 12:30:33 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 10 12:30:33 2011 -0800"
      },
      "message": "Merge \"Fix a bug in SurfaceTexture::setBufferCount.\" into honeycomb"
    },
    {
      "commit": "0569e58988bae5f08733e21e8d8adfa61fe89b7f",
      "tree": "99c06fa3b3c21338314ee4fb5dd66179d821d20d",
      "parents": [
        "6b9db1d8c808439abc12d572283b7fab50fb5257",
        "13d1cb56dfdfc89888de6a0389b0fe6cf7e36c27"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jan 10 12:09:09 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 10 12:09:09 2011 -0800"
      },
      "message": "am 13d1cb56: Merge \"Avoid deadlock in OMX::freeNode by making sure OMXCodecObserver does not hold the last reference of OMXCodec object - do not merge\" into gingerbread\n\n* commit \u002713d1cb56dfdfc89888de6a0389b0fe6cf7e36c27\u0027:\n  Avoid deadlock in OMX::freeNode by making sure OMXCodecObserver does not hold the last reference of OMXCodec object - do not merge\n"
    },
    {
      "commit": "748ba9a9512dee65d5b09cfe26a34ded753f4aab",
      "tree": "219bfa7d2f9d89063d89dfb02dd3c0a5bc088fe6",
      "parents": [
        "9cac3c31d29134f9bf4de10765b81ed45c13d31a",
        "7caa130a98baa64768dcd409bc110ce9acb0cbff"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 10 11:26:38 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 10 11:26:38 2011 -0800"
      },
      "message": "Merge \"NuPlayer now properly sends MEDIA_SET_VIDEOSIZE notifications.\" into honeycomb"
    },
    {
      "commit": "7caa130a98baa64768dcd409bc110ce9acb0cbff",
      "tree": "251f888c616e61c6a59101ea15165dcc3b4a5294",
      "parents": [
        "aa6b9f55d60702211dd2d08403c7296347f0bd7d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 10 10:38:31 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 10 10:38:31 2011 -0800"
      },
      "message": "NuPlayer now properly sends MEDIA_SET_VIDEOSIZE notifications.\n\nChange-Id: I99b4223ad6ecfd8839a3c0e737fef3165565d76d\nrelated-to-bug: 3336496\n"
    },
    {
      "commit": "6328185b6cc632f85ff640f6e854ab33815ae97f",
      "tree": "291f9958559183fd6741cc9532549e076dce3420",
      "parents": [
        "9aac2e2b9541c424ca02483631b08949f0e90c8c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jan 10 08:55:02 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jan 10 10:27:02 2011 -0800"
      },
      "message": "Avoid deadlock in OMX::freeNode by making sure OMXCodecObserver does not hold the last reference of OMXCodec object - do not merge\n\ncherry-picked from: I4c79b66a900c527e3ae6a833f76d5da1b75c5a89\n\nbug - 3336424\n\nChange-Id: I2d8ecb79a5422342988c195c012c9e6327ac457a\n"
    },
    {
      "commit": "681e89c08264af948735d00552c4bd08180b06b4",
      "tree": "411b93b4f29c85ca922bbb6544320a54fab08fcb",
      "parents": [
        "aa6b9f55d60702211dd2d08403c7296347f0bd7d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jan 10 08:55:02 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jan 10 08:57:50 2011 -0800"
      },
      "message": "Avoid deadlock in OMX::freeNode by making sure OMXCodecObserver does not hold the last reference of OMXCodec object\n\nbug - 3336424\n\nChange-Id: I4c79b66a900c527e3ae6a833f76d5da1b75c5a89\n"
    },
    {
      "commit": "d369dc42506ec003f1839bb9e27edada411324b5",
      "tree": "3b4f8881a614aa1e44ff337ee136b8eb8306ed2a",
      "parents": [
        "7dc00d5eb27de41f93a7e232b3cd374c84eb77d1"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 09 13:25:39 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 09 16:40:06 2011 -0800"
      },
      "message": "Fix a bug in SurfaceTexture::setBufferCount.\n\nWe need to reset mCurrentTexture and mLastQueued in setBufferCount\nbecause it frees all of the buffers associated with the buffer slots.\n\nChange-Id: Ie2f834ec1c07ce7a4ab9b2b5fc5fe8c294010c60\n"
    },
    {
      "commit": "9e0bb6d5eef5dfe2da60c50f3aaa39512307d11d",
      "tree": "6fe7314d0efe510a50473c23e148d8c8ef43ca40",
      "parents": [
        "ac8d79266b1629f7d0cda81408faf8d05f09c50a",
        "0544d05990c0f43a143e98e71f7fc60277872806"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Jan 07 15:34:08 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 07 15:34:08 2011 -0800"
      },
      "message": "am 0544d059: Merge \"DRM Framework bug fixes.\"\n\n* commit \u00270544d05990c0f43a143e98e71f7fc60277872806\u0027:\n  DRM Framework bug fixes.\n"
    },
    {
      "commit": "ee35aff74494e6c0b718e219427af6a6c573b928",
      "tree": "4e67db5f8013c5430b1cfb435469c90aabdb7199",
      "parents": [
        "ccdf3853b505f56a8bc52ee038dfe07aa87eb088"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 06 11:12:17 2011 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jan 07 12:42:07 2011 -0800"
      },
      "message": "Add support for the \"compilation\" tag in mp3, mp4 and ogg, and also add\nsupport for two common ways of specifying album artist in ogg files.\nb/3311831\n\n(cherry-picked from GB because of weird automerger failure)\n\nChange-Id: Ibf12a3d6bc8bbc2ac5ea815de6b33414b8f53f0f\n"
    },
    {
      "commit": "0544d05990c0f43a143e98e71f7fc60277872806",
      "tree": "21cb5efc60e01aca32ab2c79016c41dd598d41c3",
      "parents": [
        "3c902a62eddebc75adb5286e55e1107e0b63551f",
        "f05913aaa0cc96eab32be3431de1a80d405527a1"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Jan 07 11:10:49 2011 -0800"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Fri Jan 07 11:10:49 2011 -0800"
      },
      "message": "Merge \"DRM Framework bug fixes.\""
    },
    {
      "commit": "d1da80a4b3d50c1be120b0e873363da711428a81",
      "tree": "1dc4872a7cb9ec8c46596520f71f6b88cd6e709d",
      "parents": [
        "240cf3d17e40c012eb4a830d60f4a6a3607373f0",
        "ba77a3f9cb1d68b2ed4813aaae856444578e3a75"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 06 20:29:11 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 06 20:29:11 2011 -0800"
      },
      "message": "am ba77a3f9: Add support for the \"compilation\" tag in mp3, mp4 and ogg, and also add support for two common ways of specifying album artist in ogg files. b/3311831\n\n* commit \u0027ba77a3f9cb1d68b2ed4813aaae856444578e3a75\u0027:\n  Add support for the \"compilation\" tag in mp3, mp4 and ogg, and also add support for two common ways of specifying album artist in ogg files. b/3311831\n"
    },
    {
      "commit": "ba77a3f9cb1d68b2ed4813aaae856444578e3a75",
      "tree": "171f4e1d0d27fd4739fb614e4553bf7a22e60ded",
      "parents": [
        "f54ad8daf6f9dc2b9670ab1abbbfa4308b40bc6a"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 06 11:12:17 2011 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jan 06 15:05:06 2011 -0800"
      },
      "message": "Add support for the \"compilation\" tag in mp3, mp4 and ogg, and also add\nsupport for two common ways of specifying album artist in ogg files.\nb/3311831\n\nChange-Id: Iba1152013b7577168af71f947d7249560419fa05\n"
    },
    {
      "commit": "478353e23188cdd6f3dd3674f122b50ec37438b4",
      "tree": "6efc6d698b584c8bc5e0428624eb18b75ea3b15e",
      "parents": [
        "1932fef94a14d0a1b86213864a2bcc690e0faa5e",
        "ff2dc46c121c166f10684da069d07ae11d4f9b9a"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 06 13:36:47 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 06 13:36:47 2011 -0800"
      },
      "message": "Merge \"Add camera service support for SurfaceTexture.\" into honeycomb"
    },
    {
      "commit": "ff2dc46c121c166f10684da069d07ae11d4f9b9a",
      "tree": "7d0c7c8843a38a3248035893409b7261e93e531f",
      "parents": [
        "68e4a7ac849b681b1fb769857fc04f64262480c4"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Dec 20 11:51:31 2010 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 06 13:31:53 2011 -0800"
      },
      "message": "Add camera service support for SurfaceTexture.\n\nThis change enables the use of a SurfaceTexture in place of a Surface as\nthe destination of camera preview frames.\n\nChange-Id: Ic70d404c8fe261e9d5da6f1de93d6babb5b191cb\n"
    },
    {
      "commit": "1932fef94a14d0a1b86213864a2bcc690e0faa5e",
      "tree": "4bdd44f22782447b3bd30f9273634ad1476d1ffc",
      "parents": [
        "cc9585fb38534f0c882cf58d3db9038198beb1b1",
        "c0dbe3a4457020bdba6ce311d383faecb7950a90"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 06 13:26:51 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 06 13:26:51 2011 -0800"
      },
      "message": "Merge \"Colorconverter may not support some src/dst bitmap configurations.\" into honeycomb"
    },
    {
      "commit": "68e4a7ac849b681b1fb769857fc04f64262480c4",
      "tree": "c13a745fc7c54db14529326e1ade56c44d1b922a",
      "parents": [
        "0a53d5c81b5553d6063b8133492275ce88186978"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Dec 20 11:27:26 2010 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 06 13:20:47 2011 -0800"
      },
      "message": "Add the SurfaceTexture C++ implementation.\n\nThis change adds the C++ implementation of SurfaceTexture and related\nclasses. The goal of this is for a SurfaceTexture to be passed to\ncamera service or Stagefright in place of a Surface to allow camera\npreview or decoded video frames to be streamed to an OpenGL ES texture\nthat an application can use.\n\nChange-Id: I55c83a7017f1ecb81c9c9e3252cbd118b914296c\n"
    },
    {
      "commit": "0a53d5c81b5553d6063b8133492275ce88186978",
      "tree": "dc6573bc4f7011bc5e7be5e6a976f684e52ac061",
      "parents": [
        "42edf0f8cf8ca85dd5010558ff399e2c9a4c779c"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Dec 20 11:21:07 2010 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 06 13:12:35 2011 -0800"
      },
      "message": "Add the ISurfaceComposer::createGraphicBuffer IPC.\n\nThis change adds a new binder method to the ISurfaceComposer interface.\nThis IPC is intended to allow SurfaceFlinger clients to allocate gralloc\nbuffers using SurfaceFlinger as a proxy to gralloc.\n\nChange-Id: Ide9fc283aec5da6268ba62cfed0c3319a50b640d\n"
    },
    {
      "commit": "c0dbe3a4457020bdba6ce311d383faecb7950a90",
      "tree": "dc45eb16d59ec3687f218fd4f679700df547710f",
      "parents": [
        "eec06d3679db96ec41a017d542c878f3b7070b0e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 06 11:26:54 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 06 12:42:33 2011 -0800"
      },
      "message": "Colorconverter may not support some src/dst bitmap configurations.\n\nLet it return an appropriate error code instead of asserting.\n\nChange-Id: I7fe0dfa169e1cbdecb04c5fcbe8501e73362d05e\nrelated-to-bug: 3328212\n"
    },
    {
      "commit": "6c30cfb0c5da16c44cc69b2d2282012aed903dc4",
      "tree": "d7b6ff0c1f6893c6841814de53822f0e48bd0c06",
      "parents": [
        "93fde2109ee9022f84431e85b1419371d18db860",
        "a8ce773607c26dd4336f57856afce507fb98a279"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 05 17:57:55 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 05 17:57:55 2011 -0800"
      },
      "message": "am a8ce7736: am 35e8dcb9: Merge \"Suppress the recording sound in the recorded video\" into gingerbread\n\n* commit \u0027a8ce773607c26dd4336f57856afce507fb98a279\u0027:\n  Suppress the recording sound in the recorded video\n"
    },
    {
      "commit": "a8ce773607c26dd4336f57856afce507fb98a279",
      "tree": "68cacac6f4874a07c4cfbfeceaec5e375aa41bc4",
      "parents": [
        "3a2c6bf0fcae9421cccf113ff972df7aaeb6d3e9",
        "35e8dcb9df8c3d77ede120e3f1aaf842b2928639"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 05 17:55:27 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 05 17:55:27 2011 -0800"
      },
      "message": "am 35e8dcb9: Merge \"Suppress the recording sound in the recorded video\" into gingerbread\n\n* commit \u002735e8dcb9df8c3d77ede120e3f1aaf842b2928639\u0027:\n  Suppress the recording sound in the recorded video\n"
    },
    {
      "commit": "a4bbc386a05a3d36f7bc9cdc5223adfa1b1f05e4",
      "tree": "c39a748a5bfa6cf22506cdc4e50ebfca576e5021",
      "parents": [
        "f31161a0e71c0446283610e9bf7a11e0be12bd5e",
        "08e10cb404c0f1620ca9db7494ccbb8adcca5ee5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 05 14:50:00 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 05 14:50:00 2011 -0800"
      },
      "message": "Merge \"Seek/Duration support for completed http live streams in NuPlayer.\""
    },
    {
      "commit": "08e10cb404c0f1620ca9db7494ccbb8adcca5ee5",
      "tree": "086fb4cd33084ec2e4df66ec32bfc3a94c1b538d",
      "parents": [
        "2cdee233125a6cc4b00a2962d5a50273d6bb5410"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 05 12:17:08 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 05 14:48:31 2011 -0800"
      },
      "message": "Seek/Duration support for completed http live streams in NuPlayer.\n\nChange-Id: I55bbe75d87140c07b1927d14ad24130fce803463\nrelated-to-bug: 3321475\n"
    },
    {
      "commit": "7ca6041ac9c57630ca051c1575760b8f3cb81361",
      "tree": "26c6b4816be1bee16386ba534abaa593e815b431",
      "parents": [
        "ae0238cae5aa3656c4da128c8951cedc902e6092",
        "853f6fdef791382ed0c10660255754107e684a20"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 05 12:53:13 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 05 12:53:13 2011 -0800"
      },
      "message": "Merge \"Fixed a typo in the enum for unknown camera error message\""
    },
    {
      "commit": "ac1325bcd394bdc8903b26e8593cc06753d79f29",
      "tree": "e1e4fc40e4f7bc45ca2bcddf0747e2d32e320b0b",
      "parents": [
        "3f476b34049d062942eafcf48396f593e00bd324",
        "5af0b916f850486cff4797355bf9e7dc3352fe00"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Wed Jan 05 11:56:42 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 05 11:56:42 2011 -0800"
      },
      "message": "Merge \"Add decryption support to MountService.\""
    },
    {
      "commit": "5af0b916f850486cff4797355bf9e7dc3352fe00",
      "tree": "596919e498d72eadbc42b3307ac4f81542d34746",
      "parents": [
        "cf7775a88f8c88fc3a902799fc1d5100f6f7e0d6"
      ],
      "author": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Mon Nov 29 09:05:25 2010 -0600"
      },
      "committer": {
        "name": "Jason parks",
        "email": "jparks@google.com",
        "time": "Wed Jan 05 12:32:49 2011 -0600"
      },
      "message": "Add decryption support to MountService.\n\n* Implement the decryptStorage() method on the Mount Service.\n  This method makes the calls into vold to decrypt the encrypted\n  volumes and mount them.\n\nChange-Id: I4f6e07a111cf0b36611d590debf9f6579c5ac5f7"
    },
    {
      "commit": "876e44dfb5aabcd34e052a6a8a9f8ba8f07744ba",
      "tree": "357f6ce2426b3e5a717c05aaa39c01e2849e7531",
      "parents": [
        "2cdee233125a6cc4b00a2962d5a50273d6bb5410",
        "a1d2d8f7a5fd956ab82acc641415e09ff6c00a7e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 05 10:27:55 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 05 10:27:55 2011 -0800"
      },
      "message": "Merge \"Use video output if necessary for timelapse video recording\""
    }
  ],
  "next": "853f6fdef791382ed0c10660255754107e684a20"
}
