)]}'
{
  "log": [
    {
      "commit": "4b820b0e1fa069714b123fc35784541d0f94d267",
      "tree": "3418113d8ce7eca26303d6dce7d147e07003a0e9",
      "parents": [
        "1ce7c34e67c2cf58dd88c31f36f4bd62e375f7f0"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 21 14:39:05 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 21 14:56:46 2013 -0700"
      },
      "message": "Camera1: Rename setPreviewTexture to ...Target for clarity\n\nBug: 10312644\nChange-Id: I19976188f0359bfd177209fb40145defdae9c740\n"
    },
    {
      "commit": "1ce7c34e67c2cf58dd88c31f36f4bd62e375f7f0",
      "tree": "4febd2dd2325c391977d64c9d78a8ee955277e80",
      "parents": [
        "99ad37a47628b1ea1f8981bf974de38a49c653a0"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 21 13:57:21 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 21 14:35:48 2013 -0700"
      },
      "message": "Camera1: Set preview to be asynchronous, and remove dead code\n\n- Use the controlledByApp flag to make sure application-bound\n  preview buffer queue is asynchronous as before\n- Remove setPreviewDisplay in service, since it is no longer in\n  the binder interface\n- Rename setPreviewTexture to setPreviewTarget, to make it clear it\u0027s\n  the only game in town now. Rename only on the binder level and service\n  for now.\n\nBug: 10312644\nChange-Id: Icd33a462022f9729a63dc65c69b755cb7969857e\n"
    },
    {
      "commit": "0f61d8f14aa368c9cd7076528e8096e10ed100a0",
      "tree": "ed95cb70d56dd3a732f4e1909c96e7889b23ce94",
      "parents": [
        "75c16dde986e16ac5fd4d34b06b0cc6a90679866"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Thu Aug 08 13:07:18 2013 -0700"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Fri Aug 16 14:42:28 2013 -0700"
      },
      "message": "Refactor CameraService to handle errors properly.\n\nBug: 10361136\n\n-Connect calls now return status_t error flags.\n\nChange-Id: Idca453b111e5df31327f6c99ebe853bb2e332b95\n"
    },
    {
      "commit": "3ee3550a2f529cbf56d87d8503f59a8f45dccf32",
      "tree": "99bf718ddc0429a1319523abaae975d3305face3",
      "parents": [
        "d72ec85d1d0b92ed82927e3925f21912a659b799"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Apr 02 15:45:11 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Apr 17 15:01:08 2013 -0700"
      },
      "message": "Camera: Add preview callback surface support\n\n- Add call to set a preview callback surface\n- Implement support for HAL2/3 devices\n- Still need HAL1 implementation\n\nChange-Id: I0dc0bd72e43d871aa487858d1665c1efca633ffe\n"
    },
    {
      "commit": "99617adda9bc46c43f511f0940bc735c73de61de",
      "tree": "67b71170ce74451ec384346407629d54cd7e403f",
      "parents": [
        "3eca0ac4428aa74f197a2a498d84490c4e30f11d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 18:42:23 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 18:42:23 2013 -0700"
      },
      "message": "remove uses of Surface in favor or IGraphicBufferProducer\n\nChange-Id: I13d7a9553aa335bca790a3a59d389d7533c83d57\n"
    },
    {
      "commit": "c073ba525404f3416c2824c435d3d926a9892f1b",
      "tree": "f9fa36f1473054c5098bffa3926be9d2cbf6bd6f",
      "parents": [
        "b39f30b0a4902ea0f28454885785da4b2629fe25"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 26 14:32:34 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 26 18:54:03 2013 -0800"
      },
      "message": "camera_client: refactor Camera/ProCamera commonalities into BasicCamera\n\nChange-Id: Ie10a4094522d49683657665fe94ab0b7ccd280e9\n"
    },
    {
      "commit": "ceb388d6c03c38b96dc41c0ea4804b749aa077c4",
      "tree": "0639ba70ce330094a9fa71ba4577eece6d4dadb1",
      "parents": [
        "0894bfb78b7872570b94d0b8d23ebbf6a8b51d35"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Feb 19 10:40:14 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Feb 25 16:11:41 2013 -0800"
      },
      "message": "CameraService and Stagefright: Support AppOps\n\nCamera:\n- Signal to AppOpsService when camera usage starts and stops\n- Listen to permissions revocations and act on them\n- Currently just kill camera connection when permissions lost\n\nStagefright:\n- Pass on client name, UID to camera as needed\n\nBug: 8181262\nChange-Id: I9e33c9d05e9daa77dbb2d795045d08eb887ec8f0\n"
    },
    {
      "commit": "1d88023e1de6b9f370eb4be944dd9c4480d01f11",
      "tree": "74f8b58c828f3045acf3ab8cb9d8f92046685fd8",
      "parents": [
        "fc42642ab78da5fe25bcbea7a568bf880268a9dc"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 16:50:13 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: Add unit test infrastructure for libcameraclient\n\nChange-Id: I957538663ae8332d26f3640c63a75efc79f4ac5c\n"
    },
    {
      "commit": "8ba01021b573889802e67e029225a96f0dfa471a",
      "tree": "110eca2effc73dcb2f46da71e9a0584e4af6e71e",
      "parents": [
        "53bc0a2fc54330534330118edd5c393f39eff8ab"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 09:46:54 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 13:31:57 2012 -0800"
      },
      "message": "Rename ISurfaceTexture and SurfaceTexture\n\nThe C++ class names don\u0027t match what the classes do, so rename\nISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to\nGLConsumer.\n\nBug 7736700\n\nChange-Id: I64520a55f8c09fe6215382ea361c539a9940cba5\n"
    },
    {
      "commit": "08ad5efcef90e24db2863c0f85972ed05fe848a2",
      "tree": "f2eff3f033d360ac8043ba4f6ffa2d11520bebee",
      "parents": [
        "9bd23229fdec1657398abc682ccccfce1c95f8aa"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Apr 19 12:35:00 2012 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Apr 19 12:53:56 2012 +0800"
      },
      "message": "Remove new camera connect API.\n\nApplications are not resumed under the lock screen now.\nThis API is not needed anymore.\n\nbug:5584464\nChange-Id: I115daf6b647348617ec0fc05b626878c945b9b29\n"
    },
    {
      "commit": "2fd2440d0175ca3e196b01b7541a9e0d4ed9a694",
      "tree": "d87e4314688e65f4c53f04021c8452051d4b31eb",
      "parents": [
        "cbcd6e869dd41158076e742a31c1ee410fc0c713"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Feb 23 19:01:00 2012 -0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Mar 15 14:50:48 2012 +0800"
      },
      "message": "Add a new camera open API that allows taking the ownership.\n\nThe purpose is to let face unlock always get the camera\nsuccessfully. What happened was the camera applications may\nhave opened the camera in onResume under the lock screen.\nThis API lets face unlock take the camera from the camera\napplication. A new permission will be added, so other\napplicatoins won\u0027t be able to take the camera from the face\nunlock.\n\nbug:5584464\n\nChange-Id: Ib3d9dcbc2161815b68db42327dc01148453704c6\n"
    },
    {
      "commit": "57c86189bc07d9ccb0fd044e66df736d0bf19639",
      "tree": "850a15dd5d48eb35aa993ceb27f3551a25622803",
      "parents": [
        "40cdc56efa47580d89a93750cefecb8ccbaf9a72"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sat Jul 30 05:00:37 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 02 15:48:41 2011 +0800"
      },
      "message": "Pass camera frame metadata from camera service to Java.\n\nbug:4460717\nChange-Id: I2fae6e1dfca6b8f3a5ee5716fc7817f5417bf657\n"
    },
    {
      "commit": "4ca2c7c913f8bd4ada13aca56d36045d42d1e00f",
      "tree": "d65d0cadafa63bd9ab2aa9e8fbb6704b27a13fbc",
      "parents": [
        "c5a57efb706ec79032fc09c43b16d11ed0876604"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jun 01 17:22:24 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Jun 27 15:44:57 2011 +0800"
      },
      "message": "Add framework support for camcorder zoom.\n\nThe purpose of ICameraRecordingProxy and ICameraRecordingProxyListener is to\nallow applications using the camera during recording.\n\nCamera service allows only one client at a time. Since camcorder application\nneeds to own the camera to do things like zoom, the media recorder cannot\naccess the camera directly during recording. So ICameraRecordingProxy is a proxy\nof ICamera, which allows the media recorder to start/stop the recording and\nrelease recording frames. ICameraRecordingProxyListener is an interface that\nallows the recorder to receive video frames during recording.\n\nICameraRecordingProxy\n  startRecording()\n  stopRecording()\n  releaseRecordingFrame()\n\nICameraRecordingProxyListener\n  dataCallbackTimestamp()\n\nThe camcorder app opens the camera and starts the preview. The app passes\nICamera and ICameraRecordingProxy to the media recorder by\nMediaRecorder::setCamera(). The recorder uses ICamera to setup the camera in\nMediaRecorder::start(). After setup, the recorder disconnects from camera\nservice. The recorder calls ICameraRecordingProxy::startRecording() and\npasses a ICameraRecordingProxyListener to the app. The app connects back to\ncamera service and starts the recording. The app owns the camera and can do\nthings like zoom. The media recorder receives the video frames from the\nlistener and releases them by ICameraRecordingProxy::releaseRecordingFrame.\nThe recorder calls ICameraRecordingProxy::stopRecording() to stop the\nrecording.\n\nThe call sequences are as follows:\n1. The app: Camera.unlock().\n2. The app: MediaRecorder.setCamera().\n3. Start recording\n   (1) The app: MediaRecorder.start().\n   (2) The recorder: ICamera.unlock() and ICamera.disconnect().\n   (3) The recorder: ICameraRecordingProxy.startRecording().\n   (4) The app: ICamera.reconnect().\n   (5) The app: ICamera.startRecording().\n4. During recording\n   (1) The recorder: receive frames from ICameraRecordingProxyListener.dataCallbackTimestamp()\n   (2) The recorder: release frames by ICameraRecordingProxy.releaseRecordingFrame().\n5. Stop recording\n   (1) The app: MediaRecorder.stop()\n   (2) The recorder: ICameraRecordingProxy.stopRecording().\n   (3) The app: ICamera.stopRecording().\n\nbug:2644213\n\nChange-Id: I15269397defc25cbbcae16abc071c8349c123122\n"
    },
    {
      "commit": "9e626526453f91999bdf3de4c2ec8e55c5d90511",
      "tree": "47ddef028c78388ea02fcfd3ae60419e97cffcc6",
      "parents": [
        "10d227074b5a67a2e738d72888ece4dd24537c66"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Apr 14 16:51:21 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 15:49:39 2011 -0700"
      },
      "message": "frameworks/base: include system/core header camera.h in Camera.h\n\nWe define struct CameraInfo in this camera/Camera.h, even though an identical\nstruct camera_info is defined in hardware/camera.h (but not in\nhardware/camera_defs.h).  We may not export struct definitions from the HAL\ninto headers which may find their way into the NDK.\n\nThis commit also renames FRAME_CALLBACK_FLAG_xxx to CAMERA_FRAME_CALLBACK_xxx.\n\nChange-Id: I3e2ddd01d61bf5371ff2fc1a397995e0f1ee11f8\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "108dddf924d714c811dd565b8f4c7a0178cca2f2",
      "tree": "84d71d367dfb079a12738ca5f6c3edc4bd13aab1",
      "parents": [
        "b1d3d37c7990d22d0659e4c8c9aac56d4c09b6ea"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Mar 28 16:10:12 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Mar 28 16:28:57 2011 -0700"
      },
      "message": "frameworks/base: some camera-interface cleanup\n\nMethods getNumberOfVideoBuffers() and getVideoBuffer() as well as struct\nimage_rect_struct are no longer used (instead, the necessary information is\npassed through ANativeWindow.)\n\nChange-Id: If4b11446fc9ccbde1f6b45bc70c0d0b8e54376eb\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "e468ac57f6e8afc6078c76d4eb1ac327112a3de0",
      "tree": "b6f657aa11261327f5f4743dd54f796e73ec328b",
      "parents": [
        "8e0e1979f0f41487b0f18aa5b9c8c52a39ca27f4"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 17 16:38:06 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 22 20:48:15 2011 -0800"
      },
      "message": "Application-managed callback buffer support for raw image\n\nbug - 3292153\n\nChange-Id: I9789f7c5cde3a3889d7375e881181e9152d95fc2\n"
    },
    {
      "commit": "bfa33aae4f54c0020a0568b16a3acb7b30b6ca3d",
      "tree": "3dae4190516dcddec996a2b7c51b5f192c3ed4ca",
      "parents": [
        "5de2001a5c3f854b63dbcea284e02f930881ca75"
      ],
      "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": "e6615671a51c85f409c071f15babb76198f1ce92",
      "tree": "2e4452bca742d7d9bf6a09b75005293cf39ea258",
      "parents": [
        "c213b812514d16dd401cd308b9203b70bfbb3d5f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 04 18:32:16 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 04 18:46:34 2011 -0800"
      },
      "message": "Fixed a typo in the enum for unknown camera error message\n\nChange-Id: Id9f8432e2ba8e1474ee020438d6456f1f450398a\n"
    },
    {
      "commit": "d8f4d4a919fb4fa6bbd405d03dc91f079c3c2e37",
      "tree": "f78c215b7bc4dcccb17827ceec3d77c0096d7b9b",
      "parents": [
        "8a674dcc94936e2306121016ab258b4c00cc9d98",
        "42005680c0817a786f07712ffa359f0883944120"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Nov 19 19:20:59 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 19 19:20:59 2010 -0800"
      },
      "message": "am fb6f4505: am 589e8381: Merge \"Improve camera documentation.\" into gingerbread\n\n* commit \u0027fb6f4505ba5c227cebb73f1269b0af5d92e6e5e6\u0027:\n  Improve camera documentation.\n"
    },
    {
      "commit": "c2c8868e59bde7f48998e1d89a0d77217bc64767",
      "tree": "bffc3c9c96072ce21e9c55372b4b39fa8ed991bc",
      "parents": [
        "ce0febae177d1816ee7a6750ed9fba52472b9a71"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Nov 19 15:56:16 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Nov 19 16:20:04 2010 +0800"
      },
      "message": "Improve camera documentation.\n\nbug:3212606\nChange-Id: Iee7106e4665c08a4c75471114010b75d63ac74ce\n"
    },
    {
      "commit": "e09591eff55fdff1868b32c3e046c62f800330fc",
      "tree": "a426ffeb610452b7020a7805f7a8a729b36f5b17",
      "parents": [
        "9065ce6207730f55566eb3b78f9b487b1a4502b6"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Oct 14 20:17:44 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Oct 25 15:02:44 2010 +0800"
      },
      "message": "Mirror the camera preview if the camera is front-facing.\n\nbug:3095272\nChange-Id: Ib1c1d1edc06a33e9d4d2dcb42bc1dd2c25b1310c\n"
    },
    {
      "commit": "95b18cb9224f79a781c827e0da45c58a644acece",
      "tree": "9c2e62994a4e7e0b151d9ec25bf1f3a36cd857a1",
      "parents": [
        "4769cc92740e3ab58e9263d42553c12bbf79e3be"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Oct 19 17:19:09 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Oct 20 18:29:18 2010 +0800"
      },
      "message": "Mirror the preview for front-facing cameras. do not merge\n\nNow overlay does ROT_90 before FLIP_V or FLIP_H. It should be FLIP_V\nor FLIP_H first. The formula should be changed after overlay is fixed.\n\nbug:3059865\nChange-Id: Ie4366bf7f1fcac7383e8dfc74b1b865997bbbcc6\n"
    },
    {
      "commit": "e2ad6734eccc4b9ea7857c747ff9469a9c11ba09",
      "tree": "adefb903549a218f19eb6f8a624bf532e6fa7580",
      "parents": [
        "f705b5aa8c3b319f7b49f9ea46207187278076f9"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Oct 18 20:42:51 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Oct 19 23:07:08 2010 -0700"
      },
      "message": "Camera framework change required for 0-memcpy recording\n\nbug - 3042125\n\nChange-Id: I46eb7a10b5394086b353fd73e4503beceeed76f1\n"
    },
    {
      "commit": "3b7b358d1a45844ca427626554ff81f472fd1583",
      "tree": "628389e34737e14cefb22954d66f4e9208bc097f",
      "parents": [
        "b5ca4618a722a21f084fe8bfc1c2992749ccd3f0"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Tue Sep 14 16:49:08 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Tue Sep 14 16:49:08 2010 -0700"
      },
      "message": "Added command type to play recording sound.\n\nAdded CAMERA_CMD_PLAY_RECORDING_SOUND command type to play recording\nsound through sendCommand. This is currently needed by time lapse\nrecording using still mode capture, which disables the shutter sound\nbut needs to play the recording sound.\n\nChange-Id: I376aa40f45b6064fd862abc065456b06fc338020\n"
    },
    {
      "commit": "b5ca4618a722a21f084fe8bfc1c2992749ccd3f0",
      "tree": "51ee3a6bdcb6301db5b34168a105409f2d4cf4a6",
      "parents": [
        "d20b4cfde2848052cf93ed13df14d75347ec64fd"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Sat Sep 11 19:31:10 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Tue Sep 14 13:57:59 2010 -0700"
      },
      "message": "Adding enable/disable option for sendCommand()\n\n- Added enum CAMERA_CMD_ENABLE_SHUTTER_SOUND which corresponds to\n  command type for enabling/disabling shutter sound.\n- The implementation checks if it is legal to disable shutter sound.\n  If it is, then any process can disable the sound. If not, then only\n  the mediaserver process is allowed to do this. Currently time lapse\n  capture needs this functionality to disable shutter sound when still\n  mode is used to capture time lapse video.\n\nChange-Id: Id147a3bcc6a345c2c6a6d52bf98fd8292386bb19\n"
    },
    {
      "commit": "4b79168835965cf0fc41ebe2a367e22b4cb20d08",
      "tree": "d70a673d243fdc72171ecbcf51094554f947987a",
      "parents": [
        "82252a9a732c7325166c36589c1dfa9f2cb8ac04"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Aug 10 16:37:53 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 23 14:31:30 2010 -0700"
      },
      "message": "Change the framework to use the new camera preview path.\n\nThis change makes the camera HAL interface take an ANativeWindow interface from\nwhich all the camera preview buffers will be allocated.  The framework code\nrunning in application processes now passes a Surface object rather than an\nISurface to the camera server via Binder when setting the preview surface.  The\ncamera server then forwards that Surface object (which implements the\nANativeWindow interface) to the camera HAL, which uses it to communicate with\nSurfaceFlinger to allocate the camera preview buffers.\n\nChange-Id: Ie438f721559cd7de5e4f848a26d96360dda07b5f\n"
    },
    {
      "commit": "9da2070b6d6d20550de7da61478c325f0928d020",
      "tree": "f1548891fab33ca03923f70cf25a2ffeab50be82",
      "parents": [
        "3be9523784cc4038f601e510faee595117cdacb3",
        "efe6039f71e9bac2138003b3287e94a7ab7e5c55"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 30 12:08:31 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 30 12:08:31 2010 -0700"
      },
      "message": "resolved conflicts for merge of 27eecb70 to gingerbread\n\nChange-Id: If064f2f4950fc1a4ff38e6927fe2120af76b26f1\n"
    },
    {
      "commit": "0319aaecb03aa83924ab4e3d9c9bc657c2e8bc06",
      "tree": "7c3ae3eecc16c50c794aff141a89b14942117364",
      "parents": [
        "0895d83cb62d269468e64a00e9e89fa7697f2f84",
        "01cff464978aa0f749f42650180b45ea56cb17de"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:52:09 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 29 17:52:09 2010 -0700"
      },
      "message": "am 4506c62a: fix inaccurate copyrights\n\nMerge commit \u00274506c62abd5767d6d42a97e8e87793a1b3bcb625\u0027 into gingerbread-plus-aosp\n\n* commit \u00274506c62abd5767d6d42a97e8e87793a1b3bcb625\u0027:\n  fix inaccurate copyrights\n"
    },
    {
      "commit": "68335fdd6e9c1d622384612605d6952503cb7fd0",
      "tree": "94e9982f93be7339bde4d8b9336f9968f5509efd",
      "parents": [
        "e32283b15bbd60179424bdc740a4e4932da4c61e"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:41:35 2010 -0700"
      },
      "message": "fix inaccurate copyrights\n\nChange-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd\n"
    },
    {
      "commit": "01cff464978aa0f749f42650180b45ea56cb17de",
      "tree": "a31c8e61281d0bbcbec93d0ab05368f73ab85994",
      "parents": [
        "ccaa41429d2afc47f0fb828a0146a1b1936188fe"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "message": "fix inaccurate copyrights\n\nChange-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd\n"
    },
    {
      "commit": "ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4",
      "tree": "9a3115e77421f95a8505067cfa60b5a73518ad68",
      "parents": [
        "0a5baa9b411fe086013d2a5e9126ed63fbad046c"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jun 10 13:32:16 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jun 11 16:47:33 2010 +0800"
      },
      "message": "Change camera interface to support multiple cameras.\n\nChange-Id: Ie88fe706d2278acf762eca87780de349434778a4\n"
    },
    {
      "commit": "35a055b8bfc6f3cbea409b2897caf936654519cb",
      "tree": "f2167d55486fd370d24e68aabe1ae37879cde8ec",
      "parents": [
        "d8a30349da270715156d3f658b165481ce10cf71"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu May 06 16:36:58 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Mon May 10 11:21:14 2010 +0800"
      },
      "message": "Support multiple cameras in framework.\n\nChange-Id: I081f0fbdca4b633715ea7c3b3d42f8662d27598a\n"
    },
    {
      "commit": "3cf613507f1e2f7bd932d921a6e222e426fd3be4",
      "tree": "20c9dd57e2227046ab1d6fc1185f4136c6dac12e",
      "parents": [
        "988e3f0b2c74095deae580157c57935a98573052"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 09 17:46:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 13:16:22 2010 -0800"
      },
      "message": "split libsurfaceflinger_client and libcamera_client out of libui\n"
    }
  ]
}
