)]}'
{
  "log": [
    {
      "commit": "6215d3ff4b5dfa52a5d8b9a42e343051f31066a5",
      "tree": "fa31802ed64676368447b67d20567fc1e806c79d",
      "parents": [
        "c9c76a82c6d0bf2362044d899013832882f32c94"
      ],
      "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": "5baa3a62a97544669fba6d65a11c07f252e654dd",
      "tree": "109755e1595b438873d34b981e31f84ea64bd2a5",
      "parents": [
        "173ab4d61077c49f115b82eff34f97fda5a7273a"
      ],
      "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": "9d062cfe94dcd24b1d61fc83e5de565cb67965b1",
      "tree": "f220da0b5c284a40df6782ab20af495f00c4dd4e",
      "parents": [
        "4e2ecdd8a78f25f4c234877d5321ebd4e4c0e8f7"
      ],
      "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": "f806871f3016a8184de4c9dcfbe0b9069dc0d72c",
      "tree": "101cdbebf89847c8d2a670f1bfd8cf44222e2ad9",
      "parents": [
        "d47d4f7b7713a4a05da7ea55c3e698b939fe81b1"
      ],
      "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": "4091f0ba080a1f9c3af4c8f95b3b6eb03b9d576e",
      "tree": "a69a94cd7e42ff7aa38702674c83f31b289f7d74",
      "parents": [
        "bd9d2bcdebfa66a0f71fa67aa256dcae4ccd93da"
      ],
      "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": "7b6da3c7a2cdc44a35f3af3b4110eabda6f6a4b7",
      "tree": "ca2c9d289f57e1b4d1de52dd50db96b11f20ccfb",
      "parents": [
        "59797e6bece0ac2d649d8d93d02ed81979950145"
      ],
      "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": "17f254105b399c7a4216da2d477e7f9cbdbd7319",
      "tree": "8e07078c56028499010422825a01eca37a8a1e8d",
      "parents": [
        "3c02c12c73fa8719e49a5da6534750196efe3eba",
        "9143aaafeefae694cb4210eb1590b0b151618734"
      ],
      "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": "d303362ac21fb9de40f2f2366cbe7ecaa113dc12",
      "tree": "44ab449f27a946e7d5d0fe70ca6beead88411cdb",
      "parents": [
        "85b10b0dd0e568699f349ba500ddc8d3e6c1c12d"
      ],
      "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": "9143aaafeefae694cb4210eb1590b0b151618734",
      "tree": "0d9f75530233d7d35685e37fe7d934df9caaee4a",
      "parents": [
        "5e3cdc765536ded778f3be81dc923c3af3c680a1"
      ],
      "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": "98bb251c8b527600e7a4cca6cc33499710bbfbf1",
      "tree": "76188de45f4b4fc862f7527e2eddc14c8bc38e27",
      "parents": [
        "abf82f9ea4960ead8716b183aac1792820cccdd1"
      ],
      "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": "bb1e275c0e684dd213f124da77110cdd9d6f090c",
      "tree": "0a20f8da5c8e09ca8663053ae39e544bfd315243",
      "parents": [
        "0175028b73eefc503f67d5686b71e1957677e0de"
      ],
      "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": "982d2da4eef0a48d84d88e3e1d2d1dbdbb413a27",
      "tree": "2a5036e97e04b0467eab8f73a283f0a0730c0d61",
      "parents": [
        "03116780a17cb6db7c926d01630cb9f68a19539b"
      ],
      "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": "f0d6a48c6ad852b84687127f14b1ffde02416dc4",
      "tree": "6b4eed1bc3c71d8b61638d27c67cd43420aed92d",
      "parents": [
        "2043b01b207aae3458da395bc6d501d76e59425c"
      ],
      "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": "eb12309583a2e8361392087536474fa4bcd8b60c",
      "tree": "a6465025439f5638f8ae15af0b5af9996c3eb4d9",
      "parents": [
        "f2cc48fe8bea26bd07cb943b8308a19336536867",
        "13528f78f961426680b42986772159e34ba82ad8"
      ],
      "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": "13528f78f961426680b42986772159e34ba82ad8",
      "tree": "7634ce4dee2632d5c93890f69544919844caabb2",
      "parents": [
        "2e29de7cab35e4cf7c8f177b546cc95b101ed5c8"
      ],
      "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": "ff86f37b95327538b97b6b8ef5d3c6ed0cd7f902",
      "tree": "59deccf2daa7d8c8167574cacf878a4ee279f149",
      "parents": [
        "09d7ed7b395d66be97c6bcb052039f5c0dce646c"
      ],
      "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": "f10720093bdc3ad254fd582e3bd4e9b05a57490d",
      "tree": "31f0c9f836123817518f95a6cf45ba88f066bdb9",
      "parents": [
        "c85ca5d6b573e1a663a10950578220b4580c285c"
      ],
      "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": "42419ce28a09eb63e29a8fef87e6f5534f41902f",
      "tree": "f4c758095b56ee9257e90acc4050da046783663d",
      "parents": [
        "14f14863c508ff38fb2fe925c89e2bb2228fcffe"
      ],
      "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": "04c453dccad920b9556b6e9000617a06d04d724e",
      "tree": "28d84334fc7820f4d5bd494a8c29691f5d159212",
      "parents": [
        "748caa8a7e97f8ba995bde28e3ac5956467b7267"
      ],
      "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": "a269b87bd7fecbd977c6c2a054ea333d40408bfb",
      "tree": "f9ee8843a8c38b4926ca8d50d4cec76a9668538a",
      "parents": [
        "4d7c1ce651bd5e283e694fa34641e1dc080613c0"
      ],
      "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": "9c7ac0d142eaf4b083a309299ab023932a9bb109",
      "tree": "eacc12f5b030d872cf460ae77747eece8938c8fd",
      "parents": [
        "9d216f7b0ef66e4d2e32f86cd7e31608fcce49b6"
      ],
      "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": "24fc2fb1c541e954b83fd31ea9f786a5e9b45501",
      "tree": "e85b3ff86b73d56e16ab640919d251c046371c65",
      "parents": [
        "4dc22e77cfd2a1c3671e5646ee87c5e4c15596a0"
      ],
      "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": "c8a04b536bb8ad12a87e6dd68d66cff1e7fcd7e7",
      "tree": "8e8018a9898f9785eeef5e8484c93d51cee4f052",
      "parents": [
        "fb96b5ece35ed3c0f3e682d1f9864d7700fe63fc"
      ],
      "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": "40c364136f09e82602692f359bcf8aa9b0df18d3",
      "tree": "0f4c13679a5dca5199c38285c5e85455e794e9b5",
      "parents": [
        "45538666db67a3fd528765b22bd4da30280128ef"
      ],
      "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": "e00cab707dcaf6f05adb5ccb9c80fdf25c483427",
      "tree": "1e69fd3c108e675a5a68b598f31882df58b602fb",
      "parents": [
        "16dc3073a2f06a77d9873e536f633a4adf575fce"
      ],
      "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": "ff2dc46c121c166f10684da069d07ae11d4f9b9a",
      "tree": "7d0c7c8843a38a3248035893409b7261e93e531f",
      "parents": [
        "68e4a7ac849b681b1fb769857fc04f64262480c4"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Dec 20 11:51:31 2010 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 06 13:31:53 2011 -0800"
      },
      "message": "Add camera service support for SurfaceTexture.\n\nThis change enables the use of a SurfaceTexture in place of a Surface as\nthe destination of camera preview frames.\n\nChange-Id: Ic70d404c8fe261e9d5da6f1de93d6babb5b191cb\n"
    },
    {
      "commit": "74920cb1a84907f8732d67f4fae7a4768665d5d2",
      "tree": "3de44e605897479b668e431887f6c266bc3b193f",
      "parents": [
        "337885be6e0eadda2d54977104c5738b03f6fb34"
      ],
      "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": "d2112306330ce0c162bee4b864991962ca2b655a",
      "tree": "d169f93867e853220c40d38826fe81b4a1ad9eff",
      "parents": [
        "ff3c470778a69d262470e9707fce58dd485c6cc9"
      ],
      "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": "2db9044563ee39407b65831af0d381944b9ed9fb",
      "tree": "42e5c49bda5afc7abe5da910dbdcf586fdbb14a0",
      "parents": [
        "9889e2b1923e94fdbe046e1599008d4696e56e64"
      ],
      "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": "214835773f7a11c9262ee1f612a8b2792ea72ea2",
      "tree": "144878c1b1e184ff2424e6f806af167a3d258e21",
      "parents": [
        "a9639b97f47ede69b96c5588e468fdf4dd22ddc8"
      ],
      "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": "065299b58d1c00cd24e442fa192561decf7b1fec",
      "tree": "7e3abaf094a23902a19904a3b47c1ffa5cc942dd",
      "parents": [
        "d781089731127bd9199d47f53b170895868b8750"
      ],
      "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": "d55f7e56b9761227f0a310b34d9016fde91613d6",
      "tree": "8b20f666b14e4e01ec0b208fe8e75e5881db03e7",
      "parents": [
        "197eee425c813e35144b2e52f7282b17a57289a5"
      ],
      "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": "38311859e809118f2cba3597d056abffe4eb80c0",
      "tree": "0debf077cf395ecb9e5c28979e6bce7325aef34f",
      "parents": [
        "067222d11f95e2547b638b6daf5d4c06c6dc49ef"
      ],
      "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": "b0f7d95bf84ca7b315391a0a28a287319d3f3af2",
      "tree": "37187c704b1ad34c95c3146b5b996de6e2c5c1c4",
      "parents": [
        "26b6df74b9bcc693a5b57347d427b352cdc0541a"
      ],
      "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": "de8652cbc120d2d79ec321bc54506fc5577e7928",
      "tree": "28d86a677b683e3fdf5c77ce99ed541edfa522c7",
      "parents": [
        "cc8f44bc819a76ac8d0127c57a303bd839240a62",
        "191a25e1da9a9b746b76bde23b5d458c172d8e09"
      ],
      "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": "b3347bc6d797d402b21b9b524de15c10b134c13d",
      "tree": "031c491d939f6c650b4c90096f1703ead90dd2a5",
      "parents": [
        "4e9751f0770c8bfe6f7d57465cba754af5aa942b"
      ],
      "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": "4e94c30ed5ddb79b168291b28bfad79eaed022ed",
      "tree": "68da325f20f2d0e02e40afaa72da5b25169cf0da",
      "parents": [
        "088146a4213f5099b8fcc93e1b75538c53f61404"
      ],
      "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": "088146a4213f5099b8fcc93e1b75538c53f61404",
      "tree": "ef4e7f1a9b97228a48a8ff3db316236d17237820",
      "parents": [
        "1510770165b7bc675e5171560e907c0269dbe0fa"
      ],
      "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": "d02c812a212e5675d862ce0564cd3dfe016cdf14",
      "tree": "1c1c2d2efb628954a74c3509e8958bedd0d054e9",
      "parents": [
        "de6386b8a66eade182ffb0eee8124c0814de960c"
      ],
      "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": "8d7a59c362e0d30729b5803357cdf88db44ff04e",
      "tree": "696c5618c28d5f4e68910604a75f5d939b432c63",
      "parents": [
        "7a9f6faa3c1a058d27548a329df464f2eaf1f7d1"
      ],
      "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": "85cfdd011241a5f2fb7fabc65b5943a39af7e1de",
      "tree": "556bd6f34ae8d300d9fa05fe46bb0dc4d8aa43e0",
      "parents": [
        "7fdaa2329e755c0e5c25724a43b8c361b88e9623"
      ],
      "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": "e7044384b24051c9ac1ceef951beb97bbf8cf0f3",
      "tree": "b91aefc34bc41e167480c6f9cb2c1de3743fafd0",
      "parents": [
        "eba1274978911ea188eead128645299669d02f60"
      ],
      "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": "154a320069a316491c25b716f2aeea8c51a758e8",
      "tree": "a134148c3f13d24f3aca4ebc574899669d3efa63",
      "parents": [
        "4609b0a8fcfbed9b893301232dfa3b70bb30e4e2",
        "27eecb704a27c1c73ed3449eba0307d8138b9c2e"
      ],
      "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": "24651682edaf71e8a826f23a7ea09bc97c8072c4",
      "tree": "d3721d203440aaa3d8ac67890bf170a84e832b53",
      "parents": [
        "4055b780bb7e85abcf4754b84e50bf407c45bec8"
      ],
      "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": "08e83bb3b7cc41f603867acbeb1168019cf535fe",
      "tree": "79594e01ef6c3306b890cb944d6f15d3098075c4",
      "parents": [
        "c9a11088e503b9e3ae52a3f671b2d21f5cd54f06"
      ],
      "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"
    },
    {
      "commit": "3ef6ebe874022c4ec8fbb00067833a6f636c1e2f",
      "tree": "b7e829606ef87bad5cc508d035645213b86e3896",
      "parents": [
        "43d9b0aeb891e10fdb2bd797d0d4c4417abf3bdb",
        "7df7447112371fb5e46f6084b55ac2ccdfde139d"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jul 02 07:48:03 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 02 07:48:03 2010 -0700"
      },
      "message": "am 7df74471: Merge \"Flush binder buffer after setting raw heap to avoid leaking a reference.\" into froyo\n\nMerge commit \u00277df7447112371fb5e46f6084b55ac2ccdfde139d\u0027 into gingerbread\n\n* commit \u00277df7447112371fb5e46f6084b55ac2ccdfde139d\u0027:\n  Flush binder buffer after setting raw heap to avoid leaking a reference.\n"
    },
    {
      "commit": "fe1bac67620bec6aa05d0b5100fc6372d98ba178",
      "tree": "72a60dab71dc054fc026437f2f4ccccb34f9213d",
      "parents": [
        "4fb91d9f1bede8ad49365913804532ca57206455"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jul 01 21:06:45 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jul 02 12:56:54 2010 +0800"
      },
      "message": "Flush binder buffer after setting raw heap to avoid leaking a reference.\n\nThe problem was:\n\n1. In handleShutter(), thread A in CameraService calls\n   registerBuffers(IMemoryHeap) and it\u0027s received by thread B\n   in system_server. [transaction 1]\n2. While thread A is waiting for the reply, thread B calls\n   back to thread A to get the id of the heap\n   (IMemoryHeap.getHeapID). [transaction 2]\n3. Thread A replies transaction 2 and is preemptied in kernel.\n   Thread B gets the reply and finishes registerBuffers and send\n   reply for transaction 1.\n4. When thread A runs again, it gets the reply for transaction 1\n   and returns to handleShutter().\n5. At this point the transaction buffer for transaction 2 (which\n   holds a reference to IMemoryHeap) is not freed because the\n   BC_FREE_BUFFER command is kept in thread A\u0027s local command\n   queue and not sent to the kernel.\n6. Normally when thread A makes next transaction, the\n   BC_FREE_BUFFER command will be sent together (piggyback) with\n   the commands for that transaction. But in this case thread A\n   is a callback thread from camera driver, so it does not make\n   any binder calls afterwards, and the IMemoryHeap is never freed\n   (until the next time handleShutter is called).\n\nChange-Id: I435a258187509bdbbaf353339eb9ea577610cbd2\n"
    },
    {
      "commit": "b8bb78f54b48868465a9d69d65fda08524ab5ae1",
      "tree": "fadbdd8dd989ce2b3b29cd780fabc91d7f98dd09",
      "parents": [
        "2fd73a452268d2acb6e72a1d23a422085ed3c510"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jun 10 13:32:16 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jun 11 16:47:33 2010 +0800"
      },
      "message": "Change camera interface to support multiple cameras.\n\nChange-Id: Ie88fe706d2278acf762eca87780de349434778a4\n"
    },
    {
      "commit": "71d714ccbf03948d67ab6cebad49703160e5895e",
      "tree": "65e87f48eb73d85f22d80e651bc2260f9bf8e577",
      "parents": [
        "2feafeffb8c2a5e02cb7998194d129ab0f43f9b0"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 09 15:57:48 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 09 21:30:43 2010 -0700"
      },
      "message": "Remove the lock/unlock workaround from CameraService\n\nbug - 2677772\n\nChange-Id: I7c996daad8b3bfc89e9fa2d655dc18c9a5c68f2f\n"
    },
    {
      "commit": "7768892c82f3b037c19c608c6d8309938fd5ca21",
      "tree": "947c3641443572adf1c18b3ddb42d25fced9c9b5",
      "parents": [
        "e25cc656392d8866e163f78b60c7791455d0fb44"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Mon May 10 14:36:24 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Mon May 10 14:36:24 2010 +0800"
      },
      "message": "Fix for build without a hardware camera.\n\nChange-Id: Ib5a0b58ea9e02ae1df9d258de541726189147567\n"
    },
    {
      "commit": "e25cc656392d8866e163f78b60c7791455d0fb44",
      "tree": "d264b1c05e9edb2851c5ddc21a662617ea1d4ebc",
      "parents": [
        "a0a126a060b6b9ba51bc99f82ff4d322f779325e"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu May 06 16:36:58 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Mon May 10 11:21:14 2010 +0800"
      },
      "message": "Support multiple cameras in framework.\n\nChange-Id: I081f0fbdca4b633715ea7c3b3d42f8662d27598a\n"
    },
    {
      "commit": "b00e246669a1da84b1dd7e3f014eedc21747562f",
      "tree": "e7c4b1f8785ef9c97f49d24850f4461376e8dc31",
      "parents": [
        "55fb51aa411b574646cc3068ce36e73789b81616"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Apr 26 17:48:26 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 28 11:55:47 2010 -0700"
      },
      "message": "Use timestamp from camera driver for CameraSource\n\nChange-Id: I09ddec69997c43b8f17fdd21304c76cb4c5ab8cf\n"
    },
    {
      "commit": "e86ae1bed1dfe7db8fadcdab8b39d60754063fc0",
      "tree": "4d2a3c8c23c3573aa8dc0fbeb8c76c1490fd929f",
      "parents": [
        "931bf89d327ecf07301231fd86b17deac535feaa"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Mar 05 11:33:03 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Mar 05 15:21:02 2010 -0800"
      },
      "message": "Still do dump() if we cannot get mServiceLock for a while.\n"
    },
    {
      "commit": "5a48712501982c7276c1455e280e0b95149bdd0b",
      "tree": "335603441add0116c3cffe84c64f0056a3d30fbb",
      "parents": [
        "102f49f361b9d8d780b0f683f417f8c02a4e25f3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 19:42:32 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 20:45:21 2010 -0800"
      },
      "message": "fix [2447659] fix improper usage of the YCbCr_420_SP format\n"
    },
    {
      "commit": "8f2423e8f394ae0666f1b61f83df4c0c7a4782d9",
      "tree": "cf8ea7a6f5a60e1ff45b7eeb44c2a83576787161",
      "parents": [
        "4b71fc0fa8dee98764b55aefc176599bd982f53e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 17:33:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 17:33:37 2010 -0800"
      },
      "message": "get rid off the YUV formats at the libui layer\n"
    },
    {
      "commit": "000479f9e325b4e426a67033abd92d47da412725",
      "tree": "16b93ea777744aa24ffe7d3a191bb90529ad4ce5",
      "parents": [
        "28a5dc229ed25c771cde25668928edc788073029"
      ],
      "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"
    },
    {
      "commit": "256430093679e1d62b54fb0c852126e54d162f6f",
      "tree": "028c49d18e0e77bc69f8967dda61619ee324f7a2",
      "parents": [
        "75d76bcf52587e4bfe00b7377d100510a3489674"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 28 11:19:57 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 28 11:52:43 2010 -0800"
      },
      "message": "API Extension: Support for optionally specifying a map of extra request headers when specifying the uri of media data to be played.\n\nrelated-to-bug: 2393577\n\nOriginal change by Andrei Popescu \u003candreip@google.com\u003e\n"
    },
    {
      "commit": "d1d7706fce19a9a0cf71ff9b65f3aba9b89eeb3b",
      "tree": "e4945abf24f406374fcc51fec3935fe3aeb57195",
      "parents": [
        "09ac3c3cbc6278af127cffedb9d534449e63b683"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jan 22 17:49:48 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Jan 26 11:07:07 2010 -0800"
      },
      "message": "Add support for setting camera display orientation.\n"
    },
    {
      "commit": "e1ceec234c618729cc7bd35fecb11744b52c1cc8",
      "tree": "d478c2160bfb90b429f13089a92d182ddf0b62e0",
      "parents": [
        "177b580f56e91bc5519b8772e696b14f8b5757e2"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jan 21 17:31:06 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jan 21 20:20:08 2010 -0800"
      },
      "message": "Add an orientation parameter for overlay, so we can do camera preview in portrait mode.\n"
    },
    {
      "commit": "f5d95cbc1a6974afeb4d3155bdaa8dae55722a39",
      "tree": "a999860303c704ecfd8ac0848a005fc0b8447dc3",
      "parents": [
        "51d3e798985944a3be1aafb1e01216a6627625e0"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Thu Jan 07 21:48:32 2010 -0500"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Fri Jan 08 15:46:24 2010 -0500"
      },
      "message": "less log spew\n"
    },
    {
      "commit": "c95a176d6f0aa48314d98f5c1f50821ac86137a7",
      "tree": "dc6956e0ef9272ced30318b3cbdba85764aa584e",
      "parents": [
        "7fd0fee968f4a3e474e1ea9933fc03552fe5f50a"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Jan 04 08:55:04 2010 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Jan 04 08:55:04 2010 -0800"
      },
      "message": "Remove some logging from camera operations. Bug 2346606.\n"
    },
    {
      "commit": "524dc046b1225087f481878a5c3ae7f733c9f0e2",
      "tree": "27cfbc540b394b8a0a80e20658ee20842f178530",
      "parents": [
        "bcab01f6d0158c4d928f42b034949dc9608665a6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 27 05:07:55 2009 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 27 05:07:55 2009 -0800"
      },
      "message": "Fix issue 2192673: Music Pausing Even when notifications are set to silent.\n\nDo not play ringtones, notifications or camera sounds if ringer mode is silent.\n"
    },
    {
      "commit": "05fd0df0f3ec71ec6ea874439feda960ef882d0b",
      "tree": "80289875489b6479d749267d5b45c8d5092ed7f7",
      "parents": [
        "ae0cf6dc9eb92282ef92b00ac68bfaca8aad2a1e"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Nov 10 17:08:08 2009 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Nov 10 17:08:08 2009 -0800"
      },
      "message": "Fix potential deadlock in stopPreview/stopRecord.\n\nSome camera HALs spin up a preview thread and need to wait for\nthe thread to exit. This can create a potential deadlock. In\nstopPreview, we take the main lock. If a preview callback occurs\nwhile the lock is held, the preview thread will block. If the\ncamera HAL is waiting for the preview thread to exit, this will\ncause a deadlock.\n\nThis patch breaks out the preview buffer heap into a separate\nmutex. This mutex is never held when the main lock is held, thus\npreventing the deadlock from occuring.\n"
    },
    {
      "commit": "c8093c11286e3c65fb6de686db17b87b0efb1e56",
      "tree": "68f24cfe8ea87bf8b1e228c9b4afab420c8986d5",
      "parents": [
        "8b1243e5e4930598e8e78ebd18e7b6cd6fb0445f"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Fri Nov 06 11:47:13 2009 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Fri Nov 06 11:47:13 2009 -0800"
      },
      "message": "Hold a lock while we access the preview heap.\n\ncopyFrameAndPostCopiedFrame was not holding a lock while it accessed\nthe preview heap. If the client process is torn down while the heap\nis accessed, the memcpy could access memory that was deallocated.\n\nThis patch creates a local sp reference to the preview heap while\nholding the lock, then releases the lock. This should prevent the\nheap from being pulled out from underneath us.\n"
    },
    {
      "commit": "4cb04c4654e9718a73b378e7b9962dee454efa8d",
      "tree": "b0ca9496027477f28833f0f85288bb6611f80c52",
      "parents": [
        "38a9becfdd23e582571f624b624680cc5938d423"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Oct 23 17:39:46 2009 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Oct 29 13:20:26 2009 +0800"
      },
      "message": "Use image rect information to display zoomed picture.\n"
    },
    {
      "commit": "dd158c9a9059ae01de0f1f914617d6e21e7c54c3",
      "tree": "cbf5bb06a8cccb39bcefaf1c189c460e21ff14a1",
      "parents": [
        "9e58e6427c8e5fefb65432ea4b56c6cb31e80bbd"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu Oct 15 10:02:22 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu Oct 15 15:18:08 2009 -0700"
      },
      "message": "Don\u0027t callback on NULL client. Bug 2180510.\n\nWe weren\u0027t checking to see if there was a valid camera client when\ncalling the notify callback function. Now we grab a strong pointer\nbefore the callback to guarantee that the client is not destroyed\nbefore we complete the callback. This change also fixes other\nplaces in the code where we weren\u0027t holding a local strong pointer.\n"
    },
    {
      "commit": "2133640028ef53b33a93ecfb593d30c95fed84c6",
      "tree": "c938899c65206b0633d4fd7fe0e3e4f7380c60ec",
      "parents": [
        "4625758d0b909ccfc9f40b707666b1b21e9e8ffd"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Oct 07 19:18:20 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Oct 07 19:22:02 2009 -0700"
      },
      "message": "Retry overlay create if it fails. Bug 2153980.\n\nOccasionally we see references to the overlay hanging around long\nenough to cause problems in applications when they tried to destroy\nthe overlay and re-create it. This patch causes the camera HAL to\nretry the overlay creation call if it fails every 20ms up to 50\ntimes before it gives up.\n"
    },
    {
      "commit": "36f68b8f24df906c969581b0b8e1a47f95dc03cb",
      "tree": "b1c8987ccd5b30c5527fc9abcfe275f163d8d8c5",
      "parents": [
        "5bba632d877c2878384ff21566c8eb6a1a22f37b"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Sep 28 16:14:58 2009 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Oct 06 13:25:10 2009 -0700"
      },
      "message": "Add zoom functions and sendCommand.\n\nb2060030\n"
    },
    {
      "commit": "244f8c26365a303d9dd861bd48a29a4b48578da1",
      "tree": "33c20568a94d606507507ec5cedf2a01eba8de58",
      "parents": [
        "54c06152e0d9c666aec61ae5d9686d7d3327ea34"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Sep 15 14:51:56 2009 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Sep 15 18:29:03 2009 +0800"
      },
      "message": "Fix 2083478: Camera needs an auto-focus cancel API\n\nChange-Id: I13bda991b32aee47e82b5cf9d43b3021c416a9a2\n"
    },
    {
      "commit": "6085b4e7b5c592c398904748b56f95a77ced4ed5",
      "tree": "ae189070e63dad037fd6881303d71578f89c098c",
      "parents": [
        "93f00def4b63511be91057b2bc69f1dda6f038e9"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Sep 13 17:10:24 2009 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Sep 13 17:12:35 2009 -0700"
      },
      "message": "Pass return code from Camera HAL for setParameters().\nbug 2116866\n"
    },
    {
      "commit": "fd98ff8b391085a3f01bf3dcf2fffc6181e299fb",
      "tree": "16068d9b43a4980b364026a8fdff46a9090a87dc",
      "parents": [
        "b0dccf73ddb5a695fe24f1435411feea5876609f"
      ],
      "author": {
        "name": "Snigdha Sinha",
        "email": "snigdha.sinha@motorola.com",
        "time": "Mon Aug 31 13:02:23 2009 -0500"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Sep 08 18:28:15 2009 -0700"
      },
      "message": "CameraService change for OVERLAY_FORMAT_DEFAULT\n\nOriginally from: https://partner.source.android.com/g/#change,829\n"
    },
    {
      "commit": "da83f4674a564007baac03db062a289c8158d940",
      "tree": "c1476d13a17ddff1bbd3769d3406ab3d639318d2",
      "parents": [
        "ddb79c9fd53893aa126599330a9289497e5f5c93"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Wed Aug 12 12:01:27 2009 -0500"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Aug 13 10:46:28 2009 -0700"
      },
      "message": "Modified the camera HAL interface to use the same generic callback architecture as camera services\n"
    },
    {
      "commit": "a553c25b33c99b345cf1c8688f8df0ed8df14e5a",
      "tree": "025c461b13e66ad0ceac8d0f8d9b13fd88ae168a",
      "parents": [
        "ebd7bc54028949619bbf3fa5ed6c1188f588c230"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 17 12:17:14 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 06:03:39 2009 -0700"
      },
      "message": "Fix issue 1795088       Improve audio routing code\n\nInitial commit for review.\nIntegrated comments after patch set 1 review.\nFixed lockup in AudioFlinger::ThreadBase::exit()\nFixed lockup when playing tone with AudioPlocyService startTone()\n"
    },
    {
      "commit": "6d2090e2148996f98a5e9bc7e359e41c226f4efb",
      "tree": "f585f655447a5df7b791fe01f26b97c836cc5014",
      "parents": [
        "f47042614e80891a3439d418e7061f642d9d593d"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Wed Jul 15 18:44:27 2009 -0500"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Thu Jul 16 14:31:20 2009 -0700"
      },
      "message": "Hardware overlay support\n\nEnable hardware overlay support for camera and video playback use cases\n"
    },
    {
      "commit": "6698d16b951370a0cc6aa87bcd2ca91122a57410",
      "tree": "7a411a1832eec82df97587fddc64b93b9fe909ff",
      "parents": [
        "c3f60ddaeadb69c1e85198e609e575f55ecc28ac",
        "04c7d0f842ae1d3b52c426fccf7178861493431d"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Jul 08 17:26:05 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Jul 08 17:26:05 2009 -0700"
      },
      "message": "resolved conflicts for merge of 04c7d0f8 to master\n"
    },
    {
      "commit": "59c1a935295cb30c2ba2f759855e89c174b42a07",
      "tree": "ecb4f9b555dca38af549fa469f97e734d9fcc799",
      "parents": [
        "a5188a09bd20c376b4f0645b0df4c52f8e114e21"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Jul 08 15:56:53 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Jul 08 15:59:25 2009 -0700"
      },
      "message": "Add timestamps to video frames to improve A/V sync.\nBug 1927069.\n"
    },
    {
      "commit": "0795684839b60fc5e7edb14c301e7797b6645d05",
      "tree": "847d9538d5dd290d6cec29a00b3354206521c734",
      "parents": [
        "9fa8914eac00fb4ecc68371824a4b1b47466c225",
        "b8a10fe45657f2dcc50cae8a06805f8438a6937e"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jul 01 11:20:08 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jul 01 11:20:08 2009 -0700"
      },
      "message": "am b8a10fe4: Allow setPreviewDisplay after startPreview.\n\nMerge commit \u0027b8a10fe45657f2dcc50cae8a06805f8438a6937e\u0027\n\n* commit \u0027b8a10fe45657f2dcc50cae8a06805f8438a6937e\u0027:\n  Allow setPreviewDisplay after startPreview.\n"
    },
    {
      "commit": "b8a10fe45657f2dcc50cae8a06805f8438a6937e",
      "tree": "4391154a42118f9872199fa4467f966c623e29a5",
      "parents": [
        "33a7030f56d83126baa656820bf884ea02772751"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Jun 23 23:37:36 2009 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jul 01 01:41:25 2009 +0800"
      },
      "message": "Allow setPreviewDisplay after startPreview.\n"
    },
    {
      "commit": "c0767064c646976e036b851118b7afffed0ce5f6",
      "tree": "9b6bc2dc9bffaeb866288530e744895783543f20",
      "parents": [
        "8e5916b20fe2c084c2a1266acecf19200bb561d1",
        "c6a482e778e7b5fc5790edf22e554c93f53b1112"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 20:34:35 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 20:34:35 2009 -0700"
      },
      "message": "am c6a482e7: Merge change 5199 into donut\n\nMerge commit \u0027c6a482e778e7b5fc5790edf22e554c93f53b1112\u0027\n\n* commit \u0027c6a482e778e7b5fc5790edf22e554c93f53b1112\u0027:\n  Only remove client after the hardware is teared down, so a new client\n"
    },
    {
      "commit": "d5d1ebd7682aaf09cd54243910437da43f12295e",
      "tree": "a248cb7747c1dcec40b1bf00b7350e732b7c091c",
      "parents": [
        "82a32714f07d25259b91163d383ccdb74a166d2d"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Wed Jun 24 19:59:31 2009 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jun 25 11:03:55 2009 +0800"
      },
      "message": "Only remove client after the hardware is teared down, so a new client\nis rejected before old client is done.\n\nAlso check mUsers in all cases to make sure there are no existing client.\n"
    },
    {
      "commit": "5310745b14f2f03e70af2e9592a73cee7d3f8324",
      "tree": "492740c3de101be0c76cee1f2eab8b75fe40c46a",
      "parents": [
        "2ac3412001f7dceb0d3a7641359e3718179b2613",
        "82a32714f07d25259b91163d383ccdb74a166d2d"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 13:53:24 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 13:53:24 2009 -0700"
      },
      "message": "am 82a32714: Merge change 5190 into donut\n\nMerge commit \u002782a32714f07d25259b91163d383ccdb74a166d2d\u0027\n\n* commit \u002782a32714f07d25259b91163d383ccdb74a166d2d\u0027:\n  Fix 1933269: startPreview failed.\n"
    },
    {
      "commit": "6fcba313e9ad5566aa55316f2dde5940dd5ca5b4",
      "tree": "7f9b1333f7a7f593f5e0698a9b03dddaaf8bc119",
      "parents": [
        "4133751d51a04172aa65e24658b4207ef764de91"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Wed Jun 24 13:44:37 2009 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Wed Jun 24 15:50:57 2009 +0800"
      },
      "message": "Fix 1933269: startPreview failed.\n\nThe reason we need this count is a new CameraService::connect() request may\ncome in while the previous Client\u0027s destructor has not been run or is still\nrunning. If the last strong reference of the previous Client is gone but\ndestructor has not been run, we should not allow the new Client to be created\nbecause we need to wait for the previous Client to tear down the hardware\nfirst.\n"
    },
    {
      "commit": "a44e01d46b2373a8358e66fa877ab6780e507fd7",
      "tree": "b3a7d3ef14efdbdc503d927546c648dfc3124162",
      "parents": [
        "b178edb4d7cf35702a3326527b217e12a3a0c1f6",
        "8570e5fcf15f6b7c22c3023e8b4757c6a880a598"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 22 03:44:04 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 22 03:44:04 2009 -0700"
      },
      "message": "am 8570e5fc: Merge change 4907 into donut\n\nMerge commit \u00278570e5fcf15f6b7c22c3023e8b4757c6a880a598\u0027\n\n* commit \u00278570e5fcf15f6b7c22c3023e8b4757c6a880a598\u0027:\n  Add more debug messages for CameraService.\n"
    },
    {
      "commit": "1f25ec8b1ef7501626fef3324482d8efa5ee0f2a",
      "tree": "a14c499fcfb08841c99e4672917dd9de950dfd6f",
      "parents": [
        "77c5c405486548fcb3e02f67cfd23117ae78fb85"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Mon Jun 22 16:03:41 2009 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Mon Jun 22 17:06:32 2009 +0800"
      },
      "message": "Add more debug messages for CameraService.\n"
    },
    {
      "commit": "79423590054c909cacd0012df17cc135bd26c148",
      "tree": "1d52fb62fb9f9524280bd8b5a76597bf3961b668",
      "parents": [
        "b91f20fd0bb16f92371aad090dee9802dd57a629",
        "7f148d65051e577cc4a002183ec55d625b51de85"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 16 08:37:35 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jun 16 08:37:35 2009 -0700"
      },
      "message": "am 7f148d65: Merge change 4316 into donut\n\nMerge commit \u00277f148d65051e577cc4a002183ec55d625b51de85\u0027\n\n* commit \u00277f148d65051e577cc4a002183ec55d625b51de85\u0027:\n  Revert \"dumpstate: Temporarily disable dumping /proc/slabinfo to avoid kernel crash.\"\n  Enable more debug message to debug the Camera startPreview bug.\n"
    },
    {
      "commit": "4b4900b6b7138b2a7911760df1e8921f85d95411",
      "tree": "02efda45daae7913b1a6f6f7411fac860440c2d9",
      "parents": [
        "8742e120608328e2505f15903a33e538e68bd519"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Jun 16 17:15:04 2009 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Jun 16 17:19:02 2009 +0800"
      },
      "message": "Enable more debug message to debug the Camera startPreview bug.\n"
    },
    {
      "commit": "259f55a51310156d8d7362ff1932407c9087597d",
      "tree": "1c4ee36b6de56ce174a26172ff3ce432b34c2d7c",
      "parents": [
        "d46134946dd6c227d60cc27915b6fd477e36a598",
        "084af5e1977e2278e68a69615f55d5fe3bb6c1a4"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 10 00:20:15 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 10 00:20:15 2009 -0700"
      },
      "message": "am 084af5e1: Merge change 3551 into donut\n\nMerge commit \u0027084af5e1977e2278e68a69615f55d5fe3bb6c1a4\u0027\n\n* commit \u0027084af5e1977e2278e68a69615f55d5fe3bb6c1a4\u0027:\n  Allow the owner to reconnect to Camera.\n"
    },
    {
      "commit": "c8b24085f5cac97aafe81c32d9817e52eda6b35c",
      "tree": "352549dcd8713ba1529c2fa9d645b5ee8fdda6b5",
      "parents": [
        "bac43254b219c827f3d1fd286f4a7f19e9ee2f05"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Jun 09 13:56:44 2009 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Jun 09 13:58:51 2009 +0800"
      },
      "message": "Allow the owner to reconnect to Camera.\n"
    },
    {
      "commit": "aaf834a284a025cedd8ec1cf01d09e1790c1dcf8",
      "tree": "6314488c2ccaa1ab96923a1c771593ee65e7a726",
      "parents": [
        "7f36a5729f17fcb37a7b65a13fd86b0d922caca9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 22 19:00:22 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 26 16:12:20 2009 -0700"
      },
      "message": "some work to try to reduce the code size of some native libraries\n\n- make sure that all binder Bn classes define a ctor and dtor in their respective library.\n  This avoids duplication of the ctor/dtor in libraries where these objects are instantiated.\n  This is also cleaner, should we want these ctor/dtor to do something one day.\n\n- same change as above for some Bp classes and various other non-binder classes\n\n- moved the definition of CHECK_INTERFACE() in IInterface.h instead of having it everywhere.\n\n- improved the CHECK_INTERFACE() macro so it calls a single method in Parcel, instead of inlining its code everywhere\n\n- IBinder::getInterfaceDescriptor() now returns a \"const String16\u0026\" instead of String16, which saves calls to String16 and ~String16\n\n- implemented a cache for BpBinder::getInterfaceDescriptor(), since this does an IPC. HOWEVER, this method never seems to be called.\n  The cache makes BpBinder bigger, so we need to figure out if we need this method at all.\n"
    },
    {
      "commit": "67d5fc6b5982ab091ad419a5adfc8b81e97d1de1",
      "tree": "7f8052530ebba1a2c8a26f609196ae7d6b3fe59e",
      "parents": [
        "51ec709aeeba4a3f6ce335786d1b126222c89020",
        "7283fb18022674daee4dcdc3a218190791f8cd0e"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu May 21 10:27:18 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu May 21 10:27:18 2009 -0700"
      },
      "message": "am 7283fb18: Merge commit \\\u00277b7225c8fdbead25235c74811b30ff4ee690dc58\\\u0027 into manual_merge\n\nMerge commit \u00277283fb18022674daee4dcdc3a218190791f8cd0e\u0027\n\n* commit \u00277283fb18022674daee4dcdc3a218190791f8cd0e\u0027:\n  AI 149133: Enable the camera permission check.\n"
    },
    {
      "commit": "7283fb18022674daee4dcdc3a218190791f8cd0e",
      "tree": "68bbd8da7ea525fc53695a1ed6f1b234fbafa1ff",
      "parents": [
        "8c690ea9976d644db3c96eddbbbd2d50eac56913",
        "7b7225c8fdbead25235c74811b30ff4ee690dc58"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu May 21 10:17:23 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu May 21 10:17:23 2009 -0700"
      },
      "message": "Merge commit \u00277b7225c8fdbead25235c74811b30ff4ee690dc58\u0027 into manual_merge\n\nConflicts:\n\tcamera/libcameraservice/CameraService.cpp\n"
    },
    {
      "commit": "a59fa9b6cba9cae0f7d02e240dbd10603cc127a5",
      "tree": "4312fdaa243462b3860466e2849ad2d795e2dee4",
      "parents": [
        "9178bd31ae83e681c7ab326811772327fc2e8b47",
        "db79edc5dc39e103356cad8781148a8794520bc5"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 21 09:42:24 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu May 21 09:42:24 2009 -0700"
      },
      "message": "am db79edc5: Merge change 2168 into donut\n\nMerge commit \u0027db79edc5dc39e103356cad8781148a8794520bc5\u0027\n\n* commit \u0027db79edc5dc39e103356cad8781148a8794520bc5\u0027:\n  Fix permission hole in camera service. Some debugging code was added\n"
    },
    {
      "commit": "7b7225c8fdbead25235c74811b30ff4ee690dc58",
      "tree": "d0bf06abdbc0d7414245dd88d909439232cb7fab",
      "parents": [
        "221c95526d3e3e23288478b6dd2d24b5ec7e97d5"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "nobody@android.com",
        "time": "Thu May 21 09:18:18 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu May 21 09:18:18 2009 -0700"
      },
      "message": "AI 149133: Enable the camera permission check.\n  Some debugging code was added to camera service. Later it was #ifdef\u0027d\n  out, but this change also removed the camera permission check. This\n  change puts the permission check back in.\n  BUG\u003d1869264\n\nAutomated import of CL 149133\n"
    },
    {
      "commit": "b1f3b8f7cb6c1d22b63bade2d75d54ceb4196070",
      "tree": "14ba5b9ba911b4cef058505a64be162dad9b09bb",
      "parents": [
        "6690dc54546809c973f7f630e6488fcd81dfaa82"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed May 20 20:02:59 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed May 20 20:02:59 2009 -0700"
      },
      "message": "Fix permission hole in camera service. Some debugging code was added\nto CameraService::onTransact() method during development. Later on\nthe entire onTransact() method was #ifdef\u0027d out, which inadvertently\nomitted the permissions check code. This change restores the code.\n"
    },
    {
      "commit": "0795272aa226f4e965968a03daddc53ce30b7cda",
      "tree": "6b4e8ba5e57c5dcf2dd770c24e14c43eda42fdd7",
      "parents": [
        "25ba5b6564224dceefa086b5c439ef28dad530ca"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 19 19:08:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:03 2009 -0700"
      },
      "message": "move libbinder\u0027s header files under includes/binder\n"
    },
    {
      "commit": "d6289b1b03d209219c2dd3126ee8839a45682b33",
      "tree": "1c7d73bff30577aaf680aea9f72df5a219a1ca2d",
      "parents": [
        "b4735b6c04c6bca3219115395748a1b5ef02ff6c"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu May 07 19:27:32 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon May 11 07:36:58 2009 -0700"
      },
      "message": "Modify camera framework to use new streamlined binder interface.\nThis is the second half of bug 1837832. Modifies the camera client\nand camera service to use the new binder interface. Removes the\nold binder interface. There will be one more part to this change\nto surface the undefined callbacks to the Java layer so that\npartners can implement new features without having to touch the\nstack.\n"
    },
    {
      "commit": "ab5b424db30b478570d83a30497319a72e91068c",
      "tree": "eb53e9dd45cd164185ccd1916ae02d30d077ec2a",
      "parents": [
        "a0e3cd3853da1d14da4918c49d25128622cf0610"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Apr 22 16:21:26 2009 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Apr 22 16:22:01 2009 +0800"
      },
      "message": "Remove debug messages.\n\tmodified:   core/java/android/hardware/Camera.java\n\n\tmodified:   camera/libcameraservice/CameraService.cpp\n"
    },
    {
      "commit": "e251f32b765afa514648d6a5a2d2da5d0f0a2514",
      "tree": "add7d11e0778675d84c02a135cf10403d695fa95",
      "parents": [
        "a0c9e8526b094e3b4f2c2747622059215d00516f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Apr 20 19:35:28 2009 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Apr 20 19:35:28 2009 -0700"
      },
      "message": "Remove dangling media recorder client reference when setCamera() is used.\n"
    },
    {
      "commit": "a7f1e5c540ff7b94c212facdcd89459cba3e4edc",
      "tree": "b274b0d2709ce9eb453c7297f2fe87e824c75eec",
      "parents": [
        "321ae681cad03d00ad1efc6f06f74268e00172a9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "",
        "time": "Fri Mar 27 16:27:16 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Mar 27 16:27:16 2009 -0700"
      },
      "message": "AI 143177: am: CL 142889 Fix issue #1736153\tCamera shutter sound can be muted by new AlarmClock setting.\n  Current implementation of Camera service plays the camera shutter sound over the ALARM stream so that it cannot be muted by silent mode in order to comply to some country specific requirement. A recent change made it possible for the user to mute the ALARM stream thus making this stream not suitable any more for the camera shutter sound.\n  The fix consists in creating a new stream type only accessible by native code and that cannot be muted and use it to play camera sounds.\n  Original author: elaurent\n  Merged from: //branches/cupcake/...\n\nAutomated import of CL 143177\n"
    },
    {
      "commit": "eeea9222132fe5979e40dcc85f5eba300157dfbc",
      "tree": "222d6010f339edc928cfde08d716e21430197367",
      "parents": [
        "cc95667b9cb1c8e61b4addd6b1aff7f09902d5c8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "",
        "time": "Thu Mar 26 01:57:59 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 26 01:57:59 2009 -0700"
      },
      "message": "Automated import from //branches/cupcake/...@142889,142889\n"
    }
  ],
  "next": "e25b51baf43bab5b8c19546a93c0bf73025ffbee"
}
