)]}'
{
  "log": [
    {
      "commit": "9a8ded7348c5b2302dd27b285b395416bc842c49",
      "tree": "6244771b557279b7b8b8b574821b0afd80f252b2",
      "parents": [
        "aa70226152d2084f85a96b52359dbc8476a86a45"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:45:03 2012 -0800"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)\n\nChange-Id: I1de629b4632a4b3187ca1a28d6416daccd35f924\n"
    },
    {
      "commit": "aa70226152d2084f85a96b52359dbc8476a86a45",
      "tree": "d9514686932670c9cd427232b9653b53ea6c5ca7",
      "parents": [
        "53feeb42c721e8fc9285e35e679906a951f3277c"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:59 2012 -0800"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)\n\nChange-Id: I8fbdfa7a7581f481968dbb65aa40f7042936d7cb\n"
    },
    {
      "commit": "53feeb42c721e8fc9285e35e679906a951f3277c",
      "tree": "bb48afd280bf7429d61229bfba2e733aa2805711",
      "parents": [
        "52546c0ef96aa3e7e21482e0f9b6e982557c8da9"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:56 2012 -0800"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)\n\nChange-Id: I26f76452ac49e2890b14d133c065493d8df0fb4a\n"
    },
    {
      "commit": "52546c0ef96aa3e7e21482e0f9b6e982557c8da9",
      "tree": "54c28e0c5bf254aa29169a58baba8c1ff10b468e",
      "parents": [
        "3812256de32e73e38ba16e50ac0451c10223d4eb"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:50 2012 -0800"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)\n\nChange-Id: I44f267700356967dc51e8f85ebf457dc85cfb229\n"
    },
    {
      "commit": "3812256de32e73e38ba16e50ac0451c10223d4eb",
      "tree": "36738b11682c48374dc44c0b7c2a48a04986a019",
      "parents": [
        "b676a05348e4c516fa8b57e33b10548e6142c3f8"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Oct 20 11:56:00 2011 +0100"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:31 2012 -0800"
      },
      "message": "Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF)\n\nChange-Id: I5321ebd12e9c6248a108529e82c4e1af2a4405e3\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"
    }
  ]
}
