)]}'
{
  "log": [
    {
      "commit": "bd47b7bcfe7f5a97fef81143f4282c41590626fe",
      "tree": "257411619c7fea24b864fe294fe666bf1b3f1563",
      "parents": [
        "6861a4e9f929c2cb4a3131244e01e676c5b28f55"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jun 07 10:34:20 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jun 07 12:04:12 2012 -0700"
      },
      "message": "Camera2: Minor bugfixes and cleanup\n\n- Use CameraParameter-defined enum strings instead of writing our own\n- Remember last window binder sent properly\n\nBug: 6243944\nChange-Id: I68b1d042becaa6ebb4776fd2865dc0a29db7b87e\n"
    },
    {
      "commit": "6861a4e9f929c2cb4a3131244e01e676c5b28f55",
      "tree": "b0d4919e162c3504869a5d7aaa7196198fd5931f",
      "parents": [
        "ac45eb3dfa7347f7b8c98be1111b2a5f9e344c46"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jun 07 10:32:12 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jun 07 12:04:12 2012 -0700"
      },
      "message": "Camera2: Add setParameters call\n\n- Validate new parameters and transfer to internal parameters\n\n- Add several utility functions to convert between CameraParameter\n  strings and camera2/internal parameter enums\n\nBug: 6243944\nChange-Id: I323798dbfa028066f4963a6357766a781dde7cb6\n"
    },
    {
      "commit": "ac45eb3dfa7347f7b8c98be1111b2a5f9e344c46",
      "tree": "b6ff408c4e05ca1714cbd64b029de981f70d36c0",
      "parents": [
        "7f61084a428a5c7afbeff2fa9e9839baf9018020"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jun 07 10:24:51 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jun 07 10:24:51 2012 -0700"
      },
      "message": "Camera2: Add basic concurrency guards.\n\n- Serialize access through ICamera interface\n- Serialize access to internal parameter structure\n\nBug: 6243944\nChange-Id: I82c9811c1d059b2bca5cca7e3d73890120dbbe59\n"
    },
    {
      "commit": "7f61084a428a5c7afbeff2fa9e9839baf9018020",
      "tree": "d65ebb3b01ca2cbfde25849372a2e57f95f649c8",
      "parents": [
        "3cca136b73b0f4d058019230eb2070cc23e2bbb0"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jun 07 10:20:51 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jun 07 10:20:51 2012 -0700"
      },
      "message": "Camera2: Add internal parameter state to dump.\n\nBug: 6243944\nChange-Id: Id02943001ef92a9c5717b295eb4af1a18669b08b\n"
    },
    {
      "commit": "3cca136b73b0f4d058019230eb2070cc23e2bbb0",
      "tree": "1ffe815d439cf1c5acd3aefd49faa8235b499e15",
      "parents": [
        "a7daa16ee5c2ec9cbb1b4c9dd195cbf9bb0173f7"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jun 07 10:07:18 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jun 07 10:15:06 2012 -0700"
      },
      "message": "Camera2: Use new param structure, improve static camera info queries\n\n- Stop using CameraParameters for internal parameter storage, use a\n  straightforward structure instead.\n\n- Improve querying for camera static characteristics for creating\n  defaults for API-facing CameraParameters.\n\nBug: 6243944\n\nChange-Id: I965cdca7b242ef10ac1be931ebe7c186f997bb63\n"
    },
    {
      "commit": "a189097d0c96fac9afa86e644312ffbb0027b124",
      "tree": "6f1b57686b9a7763a7bb1208827f5c0e56bc9176",
      "parents": [
        "6db981c45a964f0d9df4c3451f064dff7954d78e"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu May 31 11:18:52 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu May 31 15:52:14 2012 -0700"
      },
      "message": "Camera2: Switch to using ATRACE\n\nBug: 6243944\nChange-Id: Ib2aa1875c72b20ae764d9de95b4122b736738df2\n"
    },
    {
      "commit": "6db981c45a964f0d9df4c3451f064dff7954d78e",
      "tree": "44842725c8aed171117d6aa37ad059277f50068d",
      "parents": [
        "611f61998863d3a3ffae4e5f2b723b7319c59ddf"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon May 21 18:54:30 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu May 31 12:43:17 2012 -0700"
      },
      "message": "Camera service: Minimally functional preview for camera 2 devices.\n\n- Camera app starts up\n- Basic preview operation with defaults\n- Shutdown sequence is very minimal\n\nBug: 6243944\n\nChange-Id: I67673b7c1fc08956d218d99f9171e74a7a82bf07\n"
    },
    {
      "commit": "611f61998863d3a3ffae4e5f2b723b7319c59ddf",
      "tree": "05a534a25b5e52f1a61f79eca67c329dab327ac6",
      "parents": [
        "a383a7e03686d746612007e58a894779ae63e994"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu May 31 12:28:23 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 31 12:38:53 2012 -0700"
      },
      "message": "Add basic Camera2Client dump, minor fixes to CameraService dump.\n\nBug: 6243944\nChange-Id: I52caaa6146050c38976768e99b0eeea1d13a3f51\n"
    },
    {
      "commit": "f69c70ded4316ea3ee504ac779bd024433ed4ef7",
      "tree": "35a9f7b23fff4fb40321cf4c009d268bed27bea8",
      "parents": [
        "dd72c3017aef65d099460cfc6c0402bc2ba85bc3"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Sun May 20 15:59:14 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue May 29 13:47:50 2012 -0700"
      },
      "message": "Camera service: Initialization for camera2 clients and devices\n\n- Refactor initialization code to hide device type from CameraService\n- Add metadata queue class to Camera2Device\n- Initialization of Camera2Device, Camera2Client\n- Conversion from HAL2 device static metadata to camera API\n  parameters.\n\nBug: 6243944\nChange-Id: I524145b45438e906d8493dae202704ce8f090aeb\n"
    },
    {
      "commit": "61ab9f93315ea817cd1ac110e2a95da4dab6b4d1",
      "tree": "595ab34a38c8ece6155608553f7cba196a036786",
      "parents": [
        "44631c2939369e66df7021b1f359ded319971d26"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu May 17 10:30:54 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu May 17 16:58:04 2012 -0700"
      },
      "message": "Camera service: Add skeleton support for camera2 devices.\n\n- Add Camera2Client, which maps the current android.hardware.Camera\n  API to the new camera2 semantics\n- Add Camera2Device, a C++ wrapper for the HAL camera 2 device\n\nNo functionality besides create/destroy; all client methods return\nerror or null.\n\nBug: 6243944\nChange-Id: I6bd5136fa1efd8279b8cd2d9847d9b0bb2862294\n"
    },
    {
      "commit": "44631c2939369e66df7021b1f359ded319971d26",
      "tree": "42029a0db4f3ee1791678e13842c6f4bda61bc24",
      "parents": [
        "ba3c33da6a8ecda13e584c617f3ae9a06a27fbaf",
        "5e08d60617fc63c2e41f9069ff89f5c00db2617d"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu May 17 10:55:43 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 17 10:55:43 2012 -0700"
      },
      "message": "Merge \"Break out CameraClient from CameraService.\""
    },
    {
      "commit": "5e08d60617fc63c2e41f9069ff89f5c00db2617d",
      "tree": "31a5cd4e2d204973c265fc0efc07e77d5c5720d3",
      "parents": [
        "8ceaedfe124f6c9e51610a7dc2270579f8264fa7"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed May 16 14:59:25 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed May 16 16:17:06 2012 -0700"
      },
      "message": "Break out CameraClient from CameraService.\n\nTo allow for different low-level implementations of the current camera\nAPI, the Client class inside CameraService has to be inheritable. This\nchange breaks it up into the common section accessed by the camera\nservice, and the full implementation for camera device HAL version 1.\n\nThe full implementation is moved out to CameraClient.h/.cpp.\n\nThere are no functionality changes, just code reorganization.\n\nBug: 6243944\nChange-Id: I8a79b31a3ae3617198dc6bb5576a9f2e2d9c95de\n"
    },
    {
      "commit": "ba3c33da6a8ecda13e584c617f3ae9a06a27fbaf",
      "tree": "cea6d0cfb19ce358b809d0639ddaf90313d194e6",
      "parents": [
        "8ceaedfe124f6c9e51610a7dc2270579f8264fa7"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed May 16 15:34:52 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed May 16 15:39:52 2012 -0700"
      },
      "message": "Remove old fake camera.\n\nThe fake camera implementation was moved to the emulator a while back.\nNo reason to keep around this old broken code that\u0027s not used\nanywhere.\n\nChange-Id: I5dd87f766821d6e85c5eefb7122047d4ec4a3225\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": "d8973a71a3d1dd670e5dcdf6e94ec0cd45444eec",
      "tree": "5499bb2d33aa98100c1fdb4cef50a715f3d95f66",
      "parents": [
        "559bf2836f5da25b75bfb229fec0d20d540ee426"
      ],
      "author": {
        "name": "Keun young Park",
        "email": "keunyoung@google.com",
        "time": "Wed Mar 28 14:13:09 2012 -0700"
      },
      "committer": {
        "name": "Keun young Park",
        "email": "keunyoung@google.com",
        "time": "Wed Mar 28 14:13:09 2012 -0700"
      },
      "message": "Fix deadlock in camera destruction after client app\u0027s crash\n\n* why deadlock happened: when an app (CTS camera test) crashes while using\n  camera, its binder is closed and reference counter is decreased. If camera\n  is inside callback, sp\u003cClient\u003e inside callback will hold the Client instance,\n  and Client instance is destroyed when the callback ends as sp\u003cClient\u003e to hold\n  it no longer exists. The destructor of Client instance tries to clean up\n  camera H/W which tries to stop threads created by camera HAL including the\n  thread context where the callback is running. This causes deadlock where the\n  callback thread itself is waiting for itself to terminate.\n  Note that the deadlock will not happen if camera callback is not active. In\n  that case, closing of binder will force the destruction of Client instance,\n  and the destruction happens in binder thread.\n\n* Fix: Forces Client descruction in binder thread\n- remove sp\u003cClient\u003e from callbacks to prevent destruction in callback context\n- add client lock to allow callback to use raw pointer safely. This prevents\n  the destructor from deleting the instance while callback is using it.\n- add status change inside destructor with client lock to safely destroy Client\n\nBug: 6214383\nChange-Id: Ic6d6396d4d95ce9e72a16ec2480ae65c100fe806\n"
    },
    {
      "commit": "559bf2836f5da25b75bfb229fec0d20d540ee426",
      "tree": "d7dd708b17eeca96a3e5d8bcc25a51ff3d1b5d0d",
      "parents": [
        "b0b2b4d890cf3bfb274797a759642b4e733343d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 10:29:14 2012 -0700"
      },
      "committer": {
        "name": "Anatol Pomozov",
        "email": "anatol.pomozov@gmail.com",
        "time": "Wed Mar 28 12:07:41 2012 -0700"
      },
      "message": "AV Android make files changes\n\no plus a few file relocation: ActivityManager.cpp/h, SoundPool.h, etc\no remove some runtime dependencies to libandroid, libandroid_runtime, etc\n\nChange-Id: I047a47c5fb361dd5cf85cd98798c39f629a75d10\n"
    },
    {
      "commit": "b12153e36ae5e514d96c77d660b327d1a8f5000f",
      "tree": "fbfe8dc937f925b7075786b969522fb9012ae69b",
      "parents": [
        "6469edeeac6079b118e8f81252116c40574c9841"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 16 11:42:24 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 16 11:51:30 2012 -0700"
      },
      "message": "Add libmedia_native\n\nChange-Id: Ib8cff8abd73723b793f08da99ad59549f219e0e7\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": "df712ea86e6350f7005a02ab0e1c60c28a343ed0",
      "tree": "75401d5ef563d1ae76aaae4965f65bb39f92736c",
      "parents": [
        "d3393c35259588e8ad61a43d1d1aa1568e943307"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Feb 25 18:48:35 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 13:03:08 2012 -0800"
      },
      "message": "fix libgui header location\n\nChange-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe\n"
    },
    {
      "commit": "9eeafeb52fecf90882e9b44eeefcb7c3e16aa915",
      "tree": "0a09b02937d7097e042367163fbe4c9d4b5b2230",
      "parents": [
        "5ce96d97feafc6989f6141bb2633eae3d87ddf28"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 24 18:25:41 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 24 18:26:01 2012 -0800"
      },
      "message": "remove dependency on android_native{s_priv|buffer}.h\n\nChange-Id: Ie4b95f7061c240f37c504414259f92d72c4ffc89\n"
    },
    {
      "commit": "9f3d5919b45c360f88510f7455279aebe810d56b",
      "tree": "df1a4f2627c5461d17ec2559fa524b6dcea603cb",
      "parents": [
        "5f29ca38b71506ad7c7cb9925efbddf588e9655b"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 26 14:06:07 2011 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jan 10 17:05:52 2012 -0800"
      },
      "message": "Add ANativeWindow timestamp support to camera service.\n\nThis allows the camera HAL to set ANativeWindow timestamps, which\nare used by SurfaceTexture.\n\nBug-Id: 5081132\nChange-Id: I123ea4c9d1824fb72146fad81ad03d1491e0a7f8\n"
    },
    {
      "commit": "29357bc2c0dd7c43ad3bd0c8e3efa4e6fd9bfd47",
      "tree": "3bdafe4b02fe36f6ee29c3170f0b0d2799bebf86",
      "parents": [
        "d709ca9c6a0fa1c8f40cbe624a119398643c5087"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Sun Jan 08 13:19:13 2012 +0000"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/157220\n\nBug: 5449033\nChange-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c\n"
    },
    {
      "commit": "0e5ace70ca8067fc2c3259fe041352d1dab7e1e2",
      "tree": "da9649b4ca178078ae86b4ef85e6b0c937086949",
      "parents": [
        "5ff1dd576bb93c45b44088a51544a18fc43ebf58",
        "afb3f7fd1a093c333a90cadfe484fe2643e57031"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jan 06 15:51:44 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 06 15:51:44 2012 -0800"
      },
      "message": "am 4bc873e6: am 7944704e: Merge \"Switch camera sounds to always use the system enforced audio stream.\" into ics-mr1\n\n* commit \u00274bc873e6ff73200af866f8c9efca66ad8ed23682\u0027:\n  Switch camera sounds to always use the system enforced audio stream.\n"
    },
    {
      "commit": "60a78ac9535878984b0777788760b9ee7465c5e6",
      "tree": "ec9e13131339633dcd8a9785bdf0db7588020d95",
      "parents": [
        "071ccd5a9702500f3f7d62ef881300914926184d"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jan 05 15:34:53 2012 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jan 06 10:24:01 2012 -0800"
      },
      "message": "Switch camera sounds to always use the system enforced audio stream.\n\nInstead of picking between the music stream and the enforced audio\nstream, change the camera service to always play sounds through\nenforced system stream. Also update the currently-hidden CameraSound\nAPI to match.\n\nBug: 5778365\nChange-Id: I3cc64b1d1ff567dbac8020a665d5b19846197ff3\n"
    },
    {
      "commit": "5ff1dd576bb93c45b44088a51544a18fc43ebf58",
      "tree": "c002dcda87f08329197b01395539bd25f10ca737",
      "parents": [
        "8a08dcc0a5de19a904e77d5f31bed3dff9a59890"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 10:07:54 2012 +0000"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157065\n\nBug: 5449033\nChange-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69\n"
    },
    {
      "commit": "df64d15042bbd5e0e4933ac49bf3c177dd94752c",
      "tree": "ff04eb3e1a1ce8c8d8559b93a438f278d984aa87",
      "parents": [
        "b8a805261bf0282e992d3608035e47d05a898710"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156801\n\nBug: 5449033\nChange-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea\n"
    },
    {
      "commit": "b8a805261bf0282e992d3608035e47d05a898710",
      "tree": "7a43908b8e936ac1f30eef0542b40d667c47aa23",
      "parents": [
        "94023fa6744e24f26f0aba1699ec278649bd66df"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Jan 03 22:38:27 2012 +0000"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156016\n\nBug: 5449033\nChange-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298\n"
    },
    {
      "commit": "d620506220a15177942a8168d09c517740e908d0",
      "tree": "997518a6958befe0d739f8867f56d63338bd7391",
      "parents": [
        "7c56bb3ac1fb758a222a0c23805704a2789657b6"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Nov 14 20:30:14 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Nov 29 14:28:05 2011 +0800"
      },
      "message": "Add camera focus move callback.\n\nbug:5534973\nChange-Id: Iaadcb2738ad040f94849be30ee531326f6199431\n"
    },
    {
      "commit": "3856b090cd04ba5dd4a59a12430ed724d5995909",
      "tree": "a24e4c98fa6049fd8085826be838000f9a67e39b",
      "parents": [
        "1d2acaffde56ad79e6e96f228d7857863462397c"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Oct 20 11:56:00 2011 +0100"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Oct 26 09:57:54 2011 +0100"
      },
      "message": "Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/143865\n\nBug: 5449033\nChange-Id: I0122812ed6ff6f5b59fe4a43ab8bff0577adde0a\n"
    },
    {
      "commit": "8888a75f01d904541e409e858d23e4150ace34b6",
      "tree": "1eb29ccaddc5a26faa3a22774418952eb35fd21b",
      "parents": [
        "2e5bcd4a0d1f3078acfd88785aa29923ae03a3bb"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Oct 20 10:47:26 2011 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Oct 20 10:48:21 2011 +0800"
      },
      "message": "Fix 5487571: Make sure shutter sound is played when it\u0027s enforced\n\nChange-Id: I0c7adf452217b8308243836b40b1fba8f2029240\n"
    },
    {
      "commit": "ff4f55c8d77e276dbcceedb4e560ca1d91ba38ba",
      "tree": "7ccb6943f3cdf945985698523a2421224fe569db",
      "parents": [
        "0cc79c66329b9ffa7d7bdfafa5d245a11fd3660d"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Mon Oct 17 19:03:12 2011 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Mon Oct 17 19:04:00 2011 +0800"
      },
      "message": "Fix 5468644: Use the proper audio stream type to play sound.\n\nChange-Id: I80dd37da277b1810959a2dbdd852078b26f70cf5\n"
    },
    {
      "commit": "5861a9a98c641261c4807c976c750e4611b3a57d",
      "tree": "baba94df5819920a68548a58fd0e9fc28d74d62d",
      "parents": [
        "003124e20eb0744aab36ad1bde05e15ac122ad75"
      ],
      "author": {
        "name": "Tyler Luu",
        "email": "tluu@ti.com",
        "time": "Thu Oct 06 00:00:03 2011 -0500"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Oct 07 09:24:05 2011 -0700"
      },
      "message": "Add initialize method to CameraHardwareInterface\n\nAdd intialize() method to CameraHardwareInterface so we can\nreturn a proper error value to CameraService if open of camera\nhardware module fails.\n\nb/5405235\n\nChange-Id: I09c627034ddd22a5753c5163392c4fcff301e0b9\nSigned-off-by: Tyler Luu \u003ctluu@ti.com\u003e\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "6c904e26d4cd7a79f589e613fa7b2866a9fccb15",
      "tree": "6af862be56e12cdec873fef7e99129a288a79c3d",
      "parents": [
        "3e754efaddf3e221bcae6fe836d7553185d01944",
        "90f4bc2a3d361252df898fa31a99f4120aeefb27"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Oct 07 03:20:26 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 07 03:20:26 2011 -0700"
      },
      "message": "Merge \"Allow shutter/recording sound to be adjusted unless it\u0027s forced.\""
    },
    {
      "commit": "b9f588677910cac6ffc0346092bfcfe1c6620b90",
      "tree": "739803b1d5906d94945de8238e43ea61f4ea3ba8",
      "parents": [
        "d3523f89a867afa111bb332887bf006ec3ae93e6"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Oct 07 13:13:54 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Oct 07 18:01:09 2011 +0800"
      },
      "message": "Allow Camera.setDisplayOrientation to be called when preview is active.\n\nbug:5422679\n\nChange-Id: I4c936ab00428fc158b5947fe8f10b1028869bbdb\n"
    },
    {
      "commit": "90f4bc2a3d361252df898fa31a99f4120aeefb27",
      "tree": "ce19a06399c465a18e3bde2f38cf7d59f56fbb08",
      "parents": [
        "1b8ba61cb178bb6429bd214db9c615c350d0823a"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Oct 07 13:37:42 2011 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Oct 07 13:39:18 2011 +0800"
      },
      "message": "Allow shutter/recording sound to be adjusted unless it\u0027s forced.\n\nChange-Id: I7080d5f50a87f92c8e9395d4cf8f927a6760fa70\n"
    },
    {
      "commit": "a8e409f8f9b40737d0b03355894b5e141d0aff6b",
      "tree": "8799a5eecc61038ccf054d905ca3f4492ae18f30",
      "parents": [
        "77d2e08add3ba24fdc527809408028efe3e06b6b"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 30 21:33:10 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Sep 01 13:37:14 2011 +0800"
      },
      "message": "Add video snapshot camera parameter.\n\nThe API is still hidden.\n\nbug:5187868\n\nChange-Id: I59e1b5774ca32be049723d1a0887faa90d8884bb\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": "c3da3434cb57f47284ea06bb9065eaa2fe033efb",
      "tree": "4d42795a629910980240489569777d70282921ed",
      "parents": [
        "b7c5f8fa2ee707f010b60ff7bea07c2bf1e17e2d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 29 17:55:48 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 01 14:06:20 2011 -0700"
      },
      "message": "connect/disconnect is now called from our EGL wrapper\n\nthe original connect/disconnect hooks are deprecated\nand replace by api_connect/api_disconnect. the original\nhooks are no no-ops.\napi_connect/api_disconnect is now only called from the\nandroid framework.\n\nBug: 5057915\nChange-Id: I8ca64cd1acd6cabf915bf54689ec2e5f6dfa495a\n"
    },
    {
      "commit": "ff09ef8f18eed29bce50c7817df2fd52d2b50cf6",
      "tree": "f02ccfe423ba130129a964b7e59e66ca2cae3469",
      "parents": [
        "a3924af33a8005a0aeb20b97fd06e0c523b0d1af"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Jul 28 05:30:59 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Jul 29 07:14:38 2011 +0800"
      },
      "message": "Add frame metadata parameter to camera data_callback.\n\nbug:4460717\nChange-Id: Ib47d7d7df20af8155a719f3dabefe030893bfebc\n"
    },
    {
      "commit": "85fb61eb8b39d4d3fcebc796c3f7ade1d58567aa",
      "tree": "062e10a3423f078c6ee4956c00cee5a1d2c39c37",
      "parents": [
        "a7280a59259018d997896c043fd2db95f631f12e"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Jul 26 15:56:44 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Jul 27 10:03:43 2011 -0700"
      },
      "message": "libcameraservice: call put_parameters on camera HAL\n\nChange-Id: I492d1034ade50f9e157141debaa9783a90a04a91\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "2cd60e3069e93c11676019c8405d3941cd2ac5b7",
      "tree": "e32f72c949478de5c93885b2518dde05e6540162",
      "parents": [
        "9bc7af17974f448291a44912566ec7472a0d798b",
        "7574da5a501fc9289fee49fdaf1fdb9d47dae2b6"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Jul 19 14:47:20 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 19 14:47:20 2011 -0700"
      },
      "message": "Merge \"Disconnect the native window in CameraService::Client::disconnect.\""
    },
    {
      "commit": "7574da5a501fc9289fee49fdaf1fdb9d47dae2b6",
      "tree": "091907efea3f17c12e2cb199679ba138991e8641",
      "parents": [
        "8ebe5be6b0b3caa7d9d6277a1216ed786bd1e66a"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jul 20 05:35:02 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jul 20 05:35:02 2011 +0800"
      },
      "message": "Disconnect the native window in CameraService::Client::disconnect.\n\nbug:5048372\nChange-Id: I6886907a672ddf5580b988ca5bc13e3dc26d4385\n"
    },
    {
      "commit": "9bc7af17974f448291a44912566ec7472a0d798b",
      "tree": "9df5ca7ddd582ba6d76478bb48982734ace645ad",
      "parents": [
        "2e460c5b7f48aaabff33698ba6b11b04906eefa8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 18 16:15:08 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 19 13:05:12 2011 -0700"
      },
      "message": "use SurfaceTexture new scaling mode in SF\n\nSF now obeys SurfaceTexture\u0027s scaling mode instead\nof inferring it from the buffer\u0027s size\n\nChange-Id: I4d50e9851abedd7e64bfcfc8af9eefb9fb668529\n"
    },
    {
      "commit": "630e65cc858d7592446c5f9174e713e29d58588b",
      "tree": "980f69c76a8501ef9294d57365d4b9c28fb513dc",
      "parents": [
        "4a621e6d3438876eb1d9001719c688a2329ee675",
        "0ed3ec00d0242c9dc77532fe0cf0082645b6662c"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jul 18 15:19:20 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 18 15:19:20 2011 -0700"
      },
      "message": "Merge \"CameraService: (dis)connect from preview windows\""
    },
    {
      "commit": "0ed3ec00d0242c9dc77532fe0cf0082645b6662c",
      "tree": "26598624682ba4fa9b14e853d286517cba87fd0e",
      "parents": [
        "61c7ef5bde2c7ed94a078396aa65da67b47e5402"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jul 13 15:13:14 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jul 14 17:48:33 2011 -0700"
      },
      "message": "CameraService: (dis)connect from preview windows\n\nThis change makes CameraService connect and disconnect from preview\nwindows (Surfaces and SurfaceTextures) that get set.\n\nChange-Id: I726971688367d5ce0d9aa90c44168037bce33deb\n"
    },
    {
      "commit": "319d2e3f4e17a14c9af55ee0a7bcd180d1ce68a5",
      "tree": "2977cbd0292d1be3b4014130bb2be99e60cc0599",
      "parents": [
        "8deb152167af1dbf39d532737f105368ee8973f5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 12 16:02:46 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 12 16:04:12 2011 -0700"
      },
      "message": "get rid of overlay HAL\n\nChange-Id: I461f633d172ab10e05326ef10544c67dea664c0e\n"
    },
    {
      "commit": "619d29fa1f5efab134441418d82a82a573b4de46",
      "tree": "173b48d845a616b1de063a7d449fc75fedbc3d3a",
      "parents": [
        "bca946c7a54343f1517347bc74d3fff4e6303d3b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 08 18:52:57 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 08 19:54:07 2011 -0700"
      },
      "message": "Eliminate single-process mode.\nBug: 5010576\n\nChange-Id: Id450dc83efed4897d1e4ff451530fed14457aace\n"
    },
    {
      "commit": "1e06f435434681f8750cc21763868fd025e8480e",
      "tree": "a064310008fa01610255ac7b8187e2b588675dee",
      "parents": [
        "34bac59216838c056ffc27fa8dc9c0bf583eaf82"
      ],
      "author": {
        "name": "Sundar Raman",
        "email": "sunds@ti.com",
        "time": "Fri Jun 17 09:05:09 2011 -0500"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Jun 27 13:48:50 2011 -0700"
      },
      "message": "CameraService: Decouple dequeue and lock\n\nDecouple lockBuffer from dequeueBuffer. Add lock_buffer to preview_stream_ops,\nso HALs will be fully in charge of managing buffers.\n\nChange-Id: I7b53487d618bdf08ba904c5a0f41af462a7ca773\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\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": "01bded1246cd770b54b8011527f5c29e1b5663e3",
      "tree": "1f5a10e4db7e61b4ad526f2356a8f4edd307a993",
      "parents": [
        "50b0f02dea21f31ec1fbe45b86893aa9233483b8",
        "a3355430a36bbfa7b2c0d90eb30834f1c5dac337"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Jun 16 01:05:43 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 16 01:05:43 2011 -0700"
      },
      "message": "Merge \"Allow camera to be disabled via Device Policy Manager\""
    },
    {
      "commit": "afcedc9e6f17d8213d9bd8f6c36643dcc816d0ef",
      "tree": "d36ad40b3c4ca6758c09a31d216252b9c0a23460",
      "parents": [
        "aaf95a50b2202acb14fa437d065afc611a9265ff"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Jun 10 16:05:23 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Sat Jun 11 11:02:38 2011 -0700"
      },
      "message": "CameraService: return stide when dequeueing a buffer\n\nChange-Id: I11c7f0b57f7d619cdc392b2d34c538ae898de7ac\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "26adde897188059057b3ffcfde1d60171fc6888c",
      "tree": "8ad4e488ac2efc5e0f5234f4b690c1818eb6e1e8",
      "parents": [
        "6e49bd393f263bd17a65eb5c1a0e649933c78504"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Jun 06 17:21:32 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Jun 07 11:43:20 2011 -0700"
      },
      "message": "frameworks/base: updates for camera HAL memory management\n\n-- when the camera HAL allocates memory\n\t-- it requests is as N buffers by S bytes each\n\t-- it may specify a file descriptor to get mmapped; if -1, then we use ashmem\n-- when issuing data and data-timestamp callbacks, the camera HAL specifies a\n   buffer index\n-- range checking is performed on the buffer indices\n-- memory requested by a camera HAL is not incStrong\u0027ed, and needs to be\n   expliciftly released by the camera HAL (by calling the release method on the\n   camera_memory_t handle)\n\nChange-Id: I0f09603aa786c238590e7288388ab673787e6032\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "a3355430a36bbfa7b2c0d90eb30834f1c5dac337",
      "tree": "7273f455fc8d672547d5a0828ac6cd23df230116",
      "parents": [
        "2cf9c5073ca3342ee52673ad68763fadd2c2be79"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri May 20 14:54:25 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon May 30 20:05:38 2011 +0800"
      },
      "message": "Allow camera to be disabled via Device Policy Manager\n\nbug:4185309\n\nChange-Id: I8be89d892b8f540fd05913c93f97b92346a0a282\n"
    },
    {
      "commit": "8ce2364512f7c32c824f5ec5719688830ba72427",
      "tree": "e9a4d9af9512132c16ae5fdbd888c8f1ceac50a5",
      "parents": [
        "8951a97b1f8462c37e740ea5082eea0445d2c501"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Sun May 01 11:33:26 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 16:40:14 2011 -0700"
      },
      "message": "frameworks/base: android_native_buffer_t -\u003e ANativeWindowBuffer\n\nChange-Id: Idc2eabaa805bb6d308ebb315872623f28d428417\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "8951a97b1f8462c37e740ea5082eea0445d2c501",
      "tree": "8817cddc9d87a872846d4b576bdb96310fa2bd01",
      "parents": [
        "9e626526453f91999bdf3de4c2ec8e55c5d90511"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Apr 14 16:55:59 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 15:49:40 2011 -0700"
      },
      "message": "frameworks/base: switch CameraService to a HAL module\n\nThis patch changes CameraService to load a camera HAL module, instead of\nlinking directly against a library that implements the CameraHardwareInterface\nclass.\n\nCameraHardwareInterface no longer defines the API to the camera HAL.  Instead,\nthis is now in HAL header hardware/camera.h.  We keep CamerHardwareInterface as\na class local to CameraService, which wraps around the new HAL calls.  In the\nfuture, we may remove this class entirely and have CameraService call the HAL\nmethods directly.\n\nChange-Id: I5c61ac40078fc0b50bbac5881a556fe6c8837641\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\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": "fce7a473248381cc83a01855f92581077d3c9ee2",
      "tree": "e002e1edd8a11f2be56ce9538ab1b13aa289bc9e",
      "parents": [
        "db5cb14318bb24cd6ea14ff7ceea0d5e1f83d903"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Apr 19 22:30:36 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 13:10:10 2011 -0700"
      },
      "message": "audio/media: convert to using the audio HAL and new audio defs\n\nChange-Id: Ibc637918637329e4f2b62f4ac7781102fbc269f5\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "8b1027d3f873fc15c70f8645f1856936b69241a4",
      "tree": "937508beb7e2632939b5ea349ca945da2380b2cc",
      "parents": [
        "abf471f9d25f7a3104c5723657e3c6c329f3f08c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 05 15:44:20 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 05 20:11:55 2011 -0700"
      },
      "message": "remove more unused references to ISurface\n\nChange-Id: I2201f1ca2bb8f203a081d94a0134f798778dfbef\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": "5f7fcf29a7475a20cf38bf72da67746135d504c3",
      "tree": "f5e03d6a8f7d6b70b91cc95bc2324a1cc6492f10",
      "parents": [
        "f490e1765c44f63bde8e8acd905f36f92a840ddf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "message": "merge libsurfaceflinger_client into libgui\n\nthis is the first step in unifying surfacetexture and surface.\nfor this reason the header files were not moved, as most of them\nwill eventually go away.\n\nNOTE: currently we keep libsurfaceflinger_client.so as an empty\nlibrary to workaround prebuilt binaries wrongly linking against\nit.\n\nChange-Id: I130f0de2428e8579033dc41394d093f4e1431a00\n"
    },
    {
      "commit": "8eb69d60c09c1c4683066a94c889df28d0e9d233",
      "tree": "06d7e2a8ab38ab235cba0bab8e020ef5aeba7b60",
      "parents": [
        "27c174483a8ae9688d5d4897c19074f62c7f1701"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 11:48:13 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 14:43:12 2011 -0700"
      },
      "message": "Fix missing AOSP copyright headers for more files\n\no Update the copyright date on InputDispatcher_test.cpp and InputReader_test.cpp\n  because these two files were moved from other places to the current location,\n  and were actually created in 2010.\n\nbug - 4119349\n\nChange-Id: Ic93b81ddafb58e9e72a2e9e02ca3d9f173d6dca7\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": "986ef2ad4c96952711d87af481f3afb40aa10775",
      "tree": "d685585e64bfe6a46d7deabd1190fea460ebef3a",
      "parents": [
        "b41ad26dba96d70f53fff46d10eb589c2b3eb6f8"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Dec 09 11:08:14 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Dec 10 07:19:13 2010 -0800"
      },
      "message": "We requires camera hal\u0027s implementation should not track the ref count of any outstanding video frames and ignore\nreleaseRecordingFrame() call after it receives disableMsgType(CAMERA_MSG_VIDEO_FRAME).\n\nChange-Id: I2ecb9b3b11dab6bf868ccf8effda1b8df5bcde3c\n"
    },
    {
      "commit": "03dfce9672b36c1a334959a602f909b8410bec50",
      "tree": "9c1ae20251cb7251d619b42ddbfe6124866e4324",
      "parents": [
        "cb0cb25002f1b5fe0d02c997bac487b5b6c5c682"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 07 19:38:17 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 08 16:13:59 2010 -0800"
      },
      "message": "remove support for PUSH_BUFFER surfaces and overlays\n\nthe same functionality is now supported through\nthe h/w composer HAL, and YUV support in the GPU.\n\nChange-Id: I8146605449954b8e8fd7f78810b7d873c2d8f5bf\n"
    },
    {
      "commit": "6baa5de62a91b151af7a19036706b3d45143a32e",
      "tree": "615273d172f64e3e0a3c36a0e2de1a27a67b21d1",
      "parents": [
        "5a68e17d07369a16b16a16dcdc539c293b8c2810"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Dec 06 19:45:24 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Dec 06 19:53:01 2010 -0800"
      },
      "message": "Don\u0027t drop video frames but to release them.\n\nbug - 3259009\n\nChange-Id: Ib7634f10a7fe7b7ce7014b79b07957d194bae1a7\n"
    },
    {
      "commit": "e4db265e478bdac2381d85cf3dd41bbda14271b4",
      "tree": "9f99fa66754dea7d1a1d77742ddda06f63b3576b",
      "parents": [
        "32cb1ba657a1094bb815f4d39f3e4bf12ce8437e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 23 09:11:35 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 24 13:35:31 2010 -0800"
      },
      "message": "Revert \"Temporary workaround for issue 3187563\"\n\nThis reverts commit 065299b58d1c00cd24e442fa192561decf7b1fec.\n\nThe work around for issue 3187563 is not needed any more since the new kernel\nDMA driver implementation (commit 7953250be7c9a1c3417e21b20032b571d495d218)\nfixes the root cause.\n\nChange-Id: Ibaac2826b63c8e5825ae2e5cab2fb2f0e51ab7b4\n"
    },
    {
      "commit": "e3aac34f9e0d825aaad597f70e2b3dcb615ef313",
      "tree": "0f7f64c156d4690c9e86768ef19920ba7e422a41",
      "parents": [
        "b50a8033f1c7c2b58913212825f9200f1a9e5652"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 11 16:47:38 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 11 16:47:38 2010 -0800"
      },
      "message": "Temporary workaround for issue 3187563\n\nThe audio HAL does not always handle properly simultaneous input and output stream\nstate changes. This happens in particular when starting video record because output\nstream starts and stops while input is active.\n\nTemporary disable the video record jingle the time the audio HAL issues are solved.\n\nChange-Id: I3b923d81af543a335deae9e22d7f396bb5791d91\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": "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": "012716a857641a977afd16ff6be4bf66fc403884",
      "tree": "99310083065ae33d75b6b5c87a45a9b2dab096fc",
      "parents": [
        "23d2071ab44d7b5e3b16e8a81e11884faf01092f"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Oct 08 22:04:43 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Oct 12 15:52:44 2010 +0800"
      },
      "message": "Fix camera display orientation.\n\nbug:3036262\nChange-Id: I6fc3dc381fcfaceba09fd5bd14afb85045b3d676\n"
    },
    {
      "commit": "b36f2df1daf7e733be7c51f93792f8fc4252544c",
      "tree": "67cc64d0fd46312a304aafd24cdd1167d793c919",
      "parents": [
        "214a2bdcf6f8f26a0218f2d7a8d822c7b3a71d03",
        "2c423a4dc0988e3195c781d56f119514789b604b"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Sep 27 20:50:22 2010 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Sep 27 20:50:22 2010 -0700"
      },
      "message": "resolved conflicts for merge of 191a25e1 to master\n\nChange-Id: I6f4940e337a992bf84e50bc1d22432593937499c\n"
    },
    {
      "commit": "4a73f3da3501db6e95473a4a653d6319c6d618e2",
      "tree": "0083cf53310b1a1ebf15563cf2782c350afcfd3d",
      "parents": [
        "e2dc4aa0578dea9ab8c13ea4b69b7e6d0d1711d8"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Sep 23 17:17:43 2010 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Sep 27 11:49:56 2010 -0700"
      },
      "message": "The old overlay should be destroyed if orientation changes.\n\nPreviously the orientation was wrong after suspend and resume.\nWhen the camera app is resumed behide the lock screen, it\norinteation is portrait. When users slide to unlock the screen,\nsurfaceChanged is called and the orientation is landscape.\nThe camera app stops the preview, sets the display orientation,\nand starts the preview. Overlay should be destroyed if the\norientation has changed.\n\nbug:3031640\nChange-Id: I38b527f9ea78c91b538463292152c023383b4695\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": "0667de7038238c31af77865eb6d83c5ae9ca1b1e",
      "tree": "272f8749351c143f79d995bd1311c60eddb980d6",
      "parents": [
        "5de4999e6dd8a3f2740d20e30e8a3fccdcb76362"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Sep 03 16:40:32 2010 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Sep 09 16:23:35 2010 -0700"
      },
      "message": "Only enable CAMERA_MSG_PREVIEW_FRAME when necessary.\n\nNow camera driver uses ANativeWindow for display.\nCameraService should not request preview callback from\ncamera hardware if applications have not requested it.\n\nbug:2951018\nChange-Id: I85f74ea4a61104feca018867bc9d6dfe3a9479f5\n"
    },
    {
      "commit": "3abe8d29864d3e8a9f40be43e5faa10e57a4fac5",
      "tree": "c18a7deca9573c4284349b778d4c7a770231cc78",
      "parents": [
        "3ddc7c3f56c6657809764d56d36948dda381d9fb"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 31 17:08:58 2010 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 31 17:18:38 2010 -0700"
      },
      "message": "Remove setPreviewDisplay in CameraService::Client::~Client().\n\nmSurface is released in destructor and setPreviewWindow(0) is\ncalled in Client::disconnect(). setPreviewDisplay is not needed\nin destructor.\n\nbug:2964479\nChange-Id: I329901659a2af407816c34e02f37143b28183a89\n"
    },
    {
      "commit": "8f3e6aa2951358c0dea593a2448171a3f97cc0eb",
      "tree": "29073542e3377ad44789a7d97bc66f9224f8c552",
      "parents": [
        "4b79168835965cf0fc41ebe2a367e22b4cb20d08"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 23 17:23:08 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 23 17:25:55 2010 -0700"
      },
      "message": "Add the setPreviewWindow camera HAL API to the camera stub.\n\nChange-Id: Ic669f9d5f5ae8f1fe5bd055f55aa4a18fa6d84cd\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": "b7a67942823e8339eb298238f117aaa6d7b63111",
      "tree": "cd07930a4e5c17f61ae9b06f96fbfa4debde66cc",
      "parents": [
        "f1cca5ade334859bf23cf8aa5e73bad653681c8c"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 17 15:45:37 2010 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Aug 19 21:44:06 2010 -0700"
      },
      "message": "Handle the camera open failure better.\n\nCheck if camera hardware is NULL to avoid mediaserver crash.\n\nChange-Id: Ibde0251f30bdb6b36a5d5380222d7be25ec9449c\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": "5462fc9a38fa8c9dff434cd53fa5fb1782ae3042",
      "tree": "76ee9bdf73fb2460d074025ed451e56f8ec34a11",
      "parents": [
        "65ab47156e1c7dfcd8cc4266253a5ff30219e7f0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 18:41:18 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 18:43:19 2010 -0700"
      },
      "message": "added BinderService\u003c\u003e template to help creating native binder services\n\nChange-Id: Id980899d2647b56479f8a27c89eaa949f9209dfe\n"
    },
    {
      "commit": "65ab47156e1c7dfcd8cc4266253a5ff30219e7f0",
      "tree": "da088916c7cadadcddf47467f20cc8b0b6ff7f41",
      "parents": [
        "98fe12aba55e8b8bb14b23c4c3cdba9a99a9753c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "message": "move native services under services/\n\nmoved surfaceflinger, audioflinger, cameraservice\n\nall native services should now reside in this location.\n\nChange-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8\n"
    }
  ]
}
