)]}'
{
  "log": [
    {
      "commit": "8d012b56cbd49f33841c13aaa5b7b42020de82ed",
      "tree": "240cbe1534e19bd52b6f55e5d9623de2a7fea010",
      "parents": [
        "ac51135d48ded504af38f0bc7fda47823419332f",
        "a36381479c5c546a01188390f1e0d2e280a3dbd8"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Mar 27 22:43:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 27 22:43:14 2013 +0000"
      },
      "message": "Merge \"Camera: Add hotplug support (for fixed # of cameras)\" into jb-mr2-dev"
    },
    {
      "commit": "a36381479c5c546a01188390f1e0d2e280a3dbd8",
      "tree": "84123991a8c16817eb7f0094f90b75e0187da15a",
      "parents": [
        "2247dd0dc60096d1b5a91ccadb5539f0b100c88f"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Mar 20 15:56:31 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Mar 26 17:16:11 2013 -0700"
      },
      "message": "Camera: Add hotplug support (for fixed # of cameras)\n\n* Minor: also change addListener to fire the current status upon subscription\n* Minor: STATUS_AVAILABLE is now an alias for STATUS_PRESENT and deprecated\n\nChange-Id: I254608a7332095e3ef201ffea64cff156cfc1b3e\n"
    },
    {
      "commit": "4ee9962da3df1b4300eccdbd20910d82c5a61f63",
      "tree": "d7a8200a0376734ebf84622860927f0ac08d3076",
      "parents": [
        "db372594bf27390d2bee089e35c5fb8f67370026"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 26 15:09:04 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 26 15:09:04 2013 -0700"
      },
      "message": "media.log dump\n\nBug: 8446008\nChange-Id: Ia47b204f5c4c91b99591eec5420a25a3dc8e7631\n"
    },
    {
      "commit": "b08a63931f22a1e934b32e8fb8de9ab4877d5258",
      "tree": "33df1aa21ac9d458278805b64936a65057866e25",
      "parents": [
        "ea49f4b4ba9d182fd8a74c74d16590cb65f3a5f1"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Mar 21 11:19:00 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Mar 21 11:32:17 2013 -0700"
      },
      "message": "Camera2: getSceneMode should return NULL when there are no supported scene modes\n\nBug: 8444806\nChange-Id: Ic92924ceda3de738a7971605552baf00a4fc0546\n"
    },
    {
      "commit": "ea49f4b4ba9d182fd8a74c74d16590cb65f3a5f1",
      "tree": "7eb4fd1e14856d1d1f6600cc350218688c712b64",
      "parents": [
        "42404e895c182df761cbd2473d172e58e763ac89"
      ],
      "author": {
        "name": "Ziv Hendel",
        "email": "ziv@primesense.com",
        "time": "Thu Mar 21 03:25:32 2013 +0200"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Mar 21 11:32:06 2013 -0700"
      },
      "message": "commandStartFaceDetectionL returned the wrong value when face detection is not supported by the HAL.\nThis caused the JNI function to fail since it expected a BAD_VALUE response in that case.\n\nChange-Id: I53107a3958d541c25930b81eda638d4b6a394254\nSigned-off-by: Igor Murashkin \u003ciam@google.com\u003e\n"
    },
    {
      "commit": "f0eeb53e4763fe5063d3ce880f72d52f136fc3c5",
      "tree": "36babe49a434552ab0f094a372f1da1cd5ccb993",
      "parents": [
        "4f4c2655dc3f6fcef766db6e793b1642ad0fd605"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Sun Mar 17 03:23:18 2013 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Sun Mar 17 03:23:18 2013 -0700"
      },
      "message": "Camera: fix waitUntilDrained log message\n\nChange-Id: Iab6197e0674752de7933dd812bff430a5c487c4b\n"
    },
    {
      "commit": "26bb1d3702e01779c5ef481c2ad38568d4cc2aa8",
      "tree": "dada4b8289bec91c4832d35c4e3d5ee6b89a3173",
      "parents": [
        "16b6cbc6eb4a074c2e3e4de740b990137f5940d8"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Mar 13 17:23:00 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Mar 13 17:23:00 2013 -0700"
      },
      "message": "ProCamera: Fix rare deadlock when client destructs inside the connect call\n\nBug: 8337737\nChange-Id: Ia6fca4365fa20fdbfd6a1ec8d047639a002f2aba\n"
    },
    {
      "commit": "b05526fc3c0ccc9f9310830074e863212af433e0",
      "tree": "8dd38d847bffdb4f6e920b90e5b48ecae327b4b7",
      "parents": [
        "9ab909bff49b2eccde1b028901717c193ef723af"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 17:40:55 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 17:40:55 2013 -0700"
      },
      "message": "remove CameraServiceTest which wasn\u0027t used\n\nthis test hasn\u0027t been compiled or run in a long long time\nand isn\u0027t up to date or relevant.\n\nChange-Id: I5a7f1190d4a783e088d44e3e6ef66231cf0cfb49\n"
    },
    {
      "commit": "9ab909bff49b2eccde1b028901717c193ef723af",
      "tree": "a1fe090a01e2f23f84f04326c4224a70ecf627ef",
      "parents": [
        "7cf9a7e7d19579565e0f9dba8be9c107f2dbf548"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Mar 04 17:25:57 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Mar 11 16:32:24 2013 -0700"
      },
      "message": "Camera: Make ProCamera connect take the same paths as Camera connect\n\n* ProCamera uses the app ops manager\n* Refactored connect calls to be as common as possible\n* Removed some useless not implemented function calls in ProClient\n\nChange-Id: I5dab30d20f0c202a494a07b2cfe4c1fa04a2a076\n"
    },
    {
      "commit": "7cf9a7e7d19579565e0f9dba8be9c107f2dbf548",
      "tree": "842fc07ade8a885e0549d366b81e985bbb313dd6",
      "parents": [
        "71381051e2d048b2705c447b3d59db6e972493ee"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Mar 04 16:14:23 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Mar 11 16:32:24 2013 -0700"
      },
      "message": "(Camera)ProCamera: Remove unused functions from binder interface\n\nChange-Id: I0582268cef6e84b630bc87c8a03dcd69d54c440d\n"
    },
    {
      "commit": "71381051e2d048b2705c447b3d59db6e972493ee",
      "tree": "608f234db150d2805d0d3f0c42e29073fb8ba34e",
      "parents": [
        "a2e203bdb911bd5595723651d06ad91c330a7873"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Mar 04 14:53:08 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Mar 11 16:32:24 2013 -0700"
      },
      "message": "(Camera)FrameProcessor: Refactor to share code with ProFrameProcessor\n\nChange-Id: Ie8cd0df7caf83f9d0134f560ae31ab72f2f7d1fc\n"
    },
    {
      "commit": "a2e203bdb911bd5595723651d06ad91c330a7873",
      "tree": "e227cb82c2473d654fd9429d71733fc5a241b604",
      "parents": [
        "954a8902f7a6521e110005b4f9490a2fd5be9fe9"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Mar 01 16:22:28 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Mar 11 16:32:24 2013 -0700"
      },
      "message": "CameraService: Refactor Camera2Client to share a base with ProCameraClient\n\nChange-Id: I249e2a0fc47ae84f29c9d9c4a223fba13da3ee66\n"
    },
    {
      "commit": "75d1ef97d9799061be9631b08b56592a7cea6013",
      "tree": "47e6488f95e866c8d1fbbdf1a44b5384a955a17e",
      "parents": [
        "dbda1c852d68fde2e729ff2f8e85a406da73994b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 11 10:58:50 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 11 10:58:50 2013 -0700"
      },
      "message": "Increase size of statistics buffer\n\nBug: 8354576\nChange-Id: I327e9dc203e09df8abc21e589ce9056540618abd\n"
    },
    {
      "commit": "36185a4b38d43b712dc9790513b8ef5637aab004",
      "tree": "4a3ec70903e768f4b165bca53649c9a657bb1d1d",
      "parents": [
        "8d4c382db4f89c30a309ffa16bef33930c691681"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Wed Mar 06 23:28:51 2013 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Wed Mar 06 23:28:51 2013 -0800"
      },
      "message": "Camera: Log warning on out-of-range face detect scores\n\nBug: 7368364\nChange-Id: I7b1e995dd15e87c816b89ccf9968a222fd66d140\n"
    },
    {
      "commit": "538f498bbd5a2da51c9037a2689afc97f8bded8f",
      "tree": "1c9197aff7f824310044a6b88148e04c20c85552",
      "parents": [
        "0c57461f2c19f3a271c66f52cf8c9b2a82b13518"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 26 10:40:24 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 05 08:26:50 2013 -0800"
      },
      "message": "Add template class SingleStateQueue\n\nChange-Id: If7e2bc9b2a216524ee9cbb68682e2634933b4973\n"
    },
    {
      "commit": "a265845ecafe06c9668ce7ac67636657f4bedf86",
      "tree": "ae75ddb56a1aa950221e8961c0d2718958b61987",
      "parents": [
        "10774e144b3c99afad9a5070ccf50fdb12b5fb4e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 26 11:32:32 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 04 12:58:21 2013 -0800"
      },
      "message": "Miscellaneous cleanup\n\nAbbreviation framesReady to fRdy for new systrace.\nPut inline const on one line.\nUse local copy of mState in state.\nImprove logging.\nLine length 100.\n\nChange-Id: I8201c3ce0e53fd464fd33d02544e52c342d40b68\n"
    },
    {
      "commit": "10774e144b3c99afad9a5070ccf50fdb12b5fb4e",
      "tree": "9eaa08524904389bcbaa9c2fb4b1db34f53c79d6",
      "parents": [
        "551bb75ae1bec8db8577febcf6faaa35a37947dc",
        "d3c4b134a87b96227b90b9ec052d8a6e9880bbdf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sat Mar 02 00:04:34 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 02 00:04:35 2013 +0000"
      },
      "message": "Merge \"media.log cleanup\" into jb-mr2-dev"
    },
    {
      "commit": "d3c4b134a87b96227b90b9ec052d8a6e9880bbdf",
      "tree": "869a985fd6a51da99de24bd5a3ace41421c0a7a3",
      "parents": [
        "358538ce26ee651f6b5cff9f7432a5321386710d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 27 09:05:28 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 01 15:36:26 2013 -0800"
      },
      "message": "media.log cleanup\n\nRemove almost all of the specific logs, but leave the media.log\nlogging infrastructure in place for the next time we need it.\n\nRe-apply a few good changes that were reverted earlier:\n - check logf format vs. argument list compatibility\n - distinguish potentially modified and actually modified tracks in FastMixer\n - fix benign bug where sq-\u003eend() was called more than once\n - fix a build warning\n\nBug: 6490974\nChange-Id: I02d3e83646c738acaebb415bd0d6b548638b4ef5\n"
    },
    {
      "commit": "5324bb2889c34cb85849ff1302215751a32c6a0d",
      "tree": "6e8cb4df52a209878f6d35f7069e89649d34baf9",
      "parents": [
        "358538ce26ee651f6b5cff9f7432a5321386710d",
        "dd0bda0c47871d4964b5035a096c7c8c27fa7469"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 01 17:05:28 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 01 17:05:28 2013 +0000"
      },
      "message": "Merge \"Remove tee sink debugging at compile time\" into jb-mr2-dev"
    },
    {
      "commit": "8fdfbe27acd157d58fa35a849ec50c82464062f0",
      "tree": "19a08d59c5e5cfd56cda29b01ef1ea1b4f00ed77",
      "parents": [
        "721f17283e2493426c47bbaa267c337b2af5726e"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 27 12:55:20 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 28 15:55:15 2013 -0800"
      },
      "message": "Camera: Drop ProCamera connections when a Camera connection happens\n\n* Also adds an ICameraServiceListener with available/not available statuses\n\nBug: 8291653\nChange-Id: I24680f1a2dc109510caf451cf7c7bd180b670d84\n"
    },
    {
      "commit": "7fa43f376ebd63fda24d85c9ebf97e0ddf534083",
      "tree": "46c73e2599e85fe59accef0c7efd4780b47f26a3",
      "parents": [
        "f5daac4225905184b8d7cdd2fd87247d73e27ea7"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Feb 06 17:20:07 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Feb 27 12:47:21 2013 -0800"
      },
      "message": "Camera: Start of support for version 3.0 of camera device HAL\n\n- Refactor common CameraDevice interface out of Camera2Device\n- Initial skeleton only for Camera3Device\n\nChange-Id: I097cc76e2ad102a51712ac114235163245f5482c\n"
    },
    {
      "commit": "f5daac4225905184b8d7cdd2fd87247d73e27ea7",
      "tree": "5324b82082de8fb57ddddeb8aa154c14cddd55e9",
      "parents": [
        "5e8e702658cd61fc07b4163fdbca3e8a5589f2b9",
        "b84d935c179a275a47e07291d2a983daf844de80"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 27 20:43:26 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 27 20:43:26 2013 +0000"
      },
      "message": "Merge \"camera_client: refactor Camera/ProCamera commonalities into BasicCamera\" into jb-mr2-dev"
    },
    {
      "commit": "3c3c527a792249d07938c5c6cb9b465344a22383",
      "tree": "07e9c4f4902d084c29f6c5ab6d688f3ecbba9f4c",
      "parents": [
        "48af7e8dd40883d6154e7029d9500072b551b5fa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 27 09:39:39 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 27 09:39:55 2013 -0800"
      },
      "message": "Revert \"Logging to investigate a crash\"\n\nThis reverts commit f0ff908da019a44115109f1b4d1b6864b35a8a29.\n"
    },
    {
      "commit": "b84d935c179a275a47e07291d2a983daf844de80",
      "tree": "66feb5e92054d554eda4960b600535873a9e7fbd",
      "parents": [
        "253e3c03b0cf4d5852a497ddda0f43b630664644"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 26 14:32:34 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 26 18:54:03 2013 -0800"
      },
      "message": "camera_client: refactor Camera/ProCamera commonalities into BasicCamera\n\nChange-Id: Ie10a4094522d49683657665fe94ab0b7ccd280e9\n"
    },
    {
      "commit": "dd0bda0c47871d4964b5035a096c7c8c27fa7469",
      "tree": "fc9f45ab9ef280f0d84a32a6d5b116b0cd40be69",
      "parents": [
        "48af7e8dd40883d6154e7029d9500072b551b5fa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 26 09:20:22 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 26 11:36:38 2013 -0800"
      },
      "message": "Remove tee sink debugging at compile time\n\nBug: 8223560\nChange-Id: Iddbfb06c45d43d9f20bb428215dd4094931e19a7\n"
    },
    {
      "commit": "48af7e8dd40883d6154e7029d9500072b551b5fa",
      "tree": "ce8b71d67a3313dc19c0691bc1b26d1244a106b4",
      "parents": [
        "68e6e24cb6cdd66c2209774c4871a2c47e8bbc8b"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Feb 19 10:40:14 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Feb 25 16:11:41 2013 -0800"
      },
      "message": "CameraService and Stagefright: Support AppOps\n\nCamera:\n- Signal to AppOpsService when camera usage starts and stops\n- Listen to permissions revocations and act on them\n- Currently just kill camera connection when permissions lost\n\nStagefright:\n- Pass on client name, UID to camera as needed\n\nBug: 8181262\nChange-Id: I9e33c9d05e9daa77dbb2d795045d08eb887ec8f0\n"
    },
    {
      "commit": "68e6e24cb6cdd66c2209774c4871a2c47e8bbc8b",
      "tree": "ae8616f64c192afcfbe5528c8f33815588625a9e",
      "parents": [
        "94a90a43b2a9f83b3a4a4a59247b74ad50336860",
        "dd4abb5177b8d94cd30a787d4ce336d5110c185c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sat Feb 23 01:19:43 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 23 01:19:43 2013 +0000"
      },
      "message": "Merge \"Update tee sink\""
    },
    {
      "commit": "dd4abb5177b8d94cd30a787d4ce336d5110c185c",
      "tree": "3c8241b21bc14d7cf3191566e4ce79cd03cd3457",
      "parents": [
        "ee9cc423e2551ffbacfd226b8627737beabaec99"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 10 12:31:01 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 22 16:50:36 2013 -0800"
      },
      "message": "Update tee sink\n\nImplement rotation to reduce long-term storage use.\nImplement optional per-track tee.\nDynamically enable at runtime based on property, instead of at compile-time.\nDynamic frame count not yet implemented.\n\nBug: 8223560\nChange-Id: I3706443c6ec0cb0c6656dc288715a02ad5fea63a\n"
    },
    {
      "commit": "d127c2c8a8b68dae2f8743c310c2547e8f46d967",
      "tree": "ac671025a00cc2f9580a1c62caa4009b915e97ee",
      "parents": [
        "418e493e8d67924cfda652cb64965647ce6381cb"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 21 13:49:26 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:15 2013 -0800"
      },
      "message": "ProCamera: Add getInfo for getting static metadata (and a test)\n\nChange-Id: I3b87dfbc621d98bf41f37a892a1012baf85b5166\n"
    },
    {
      "commit": "418e493e8d67924cfda652cb64965647ce6381cb",
      "tree": "639c98f3054f1aa618f1e3fa4f10f0c7a71fb9b1",
      "parents": [
        "5076182ce4bf657e7211264d0ad3861212f24aa1"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 21 12:02:29 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:15 2013 -0800"
      },
      "message": "Camera: ProCamera - implement onResultReceived callback for metadata callbacks\n\nChange-Id: I46775402b007244bc383d6343a620eebbd492aad\n"
    },
    {
      "commit": "c0767f148e29ce821281b5965c0e25b4c143e76d",
      "tree": "d71e86b5d066b9a05e1732fa829c40affbb09411",
      "parents": [
        "5494cdc67b541034c963919aef8acb8b665e4dde"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 19:29:53 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:15 2013 -0800"
      },
      "message": "Camera: ProCamera - add createStreamCpu and unit test\n\nChange-Id: I468172dbfdd78510b273bf9d119c950cbeda7ea3\n"
    },
    {
      "commit": "5494cdc67b541034c963919aef8acb8b665e4dde",
      "tree": "cdffd46bace86e756bc6448028007db8e2fe74a0",
      "parents": [
        "9fb7fa159b2a47d6a7c0e9ef323b23298cdc7cb9"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 19:15:15 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: Change ProCamera to take IGraphicBufferProducer\n\nChange-Id: Iec62eead6d179aa5486f7719143340976bb76e7d\n"
    },
    {
      "commit": "9fb7fa159b2a47d6a7c0e9ef323b23298cdc7cb9",
      "tree": "e4956f65799199fe24373001c80a398756914a69",
      "parents": [
        "69e22433b9d7df77907579f67e47a159aa57f876"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 19:02:36 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: ProCamera2Client implement createStream,createDefaultRequest\n\nThe StreamingImage unit test should now work when TEST_DISPLAY_SECS is set.\n\nChange-Id: I9cf3ad5bd5a76096ab21bd39e631d636c4ff3d3f\n"
    },
    {
      "commit": "69e22433b9d7df77907579f67e47a159aa57f876",
      "tree": "eb271a5175ff8bac5e86ccd72637481738efddf9",
      "parents": [
        "9476926bb91bf15f7aff2a289a4805148f5a8a4e"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 18:24:43 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: ProCamera2Client - add createStream (service is stubbed) and unit test\n\nChange-Id: I1ae7ba9b24f5883c214c19a7ed0eaf0c802d69c1\n"
    },
    {
      "commit": "bfb5d5ef5bae01efac171397260a7152782d92c7",
      "tree": "15f645e0637ae880083804ab5876873a1108a0de",
      "parents": [
        "e4e5b2f23fa85cae789dc6824ea8af321e211d60"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 17:15:11 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: Add ProCamera private binder interface for an API2-light functionality\n\nChange-Id: I2af7a807c99df75ea659e6e6acc9c4fca6a56274\n"
    },
    {
      "commit": "e4e5b2f23fa85cae789dc6824ea8af321e211d60",
      "tree": "00607609c6a079439b1c1ae583c07bbf659ff6f4",
      "parents": [
        "537799199bdd7a585585dee409e0e3a86bad93b7"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 20 16:50:13 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: Add unit test infrastructure for libcameraclient\n\nChange-Id: I957538663ae8332d26f3640c63a75efc79f4ac5c\n"
    },
    {
      "commit": "bd02dd1bf1f34eb4e100d0d058f1fe5a2790d67e",
      "tree": "09dabb9a40decb5640f9b5d419565e999a5995d2",
      "parents": [
        "ee9cc423e2551ffbacfd226b8627737beabaec99"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 13 15:53:56 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 22 10:50:14 2013 -0800"
      },
      "message": "Camera: Move CameraMetadata.h from service to client library\n\nChange-Id: I940ce86f318f37ae5b73f912a6e589415150125f\n"
    },
    {
      "commit": "ee9cc423e2551ffbacfd226b8627737beabaec99",
      "tree": "b210a4f6f36ab0a6798db09baf44eadb62261231",
      "parents": [
        "3706fe79df688b84125c79838a4eeeaa11640022",
        "a6843669d4da47755ce97fb85389d4d1c52b8197"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 21 23:21:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 21 23:21:21 2013 +0000"
      },
      "message": "Merge \"replace getISurfaceTexture by getIGraphicBufferProducer\""
    },
    {
      "commit": "53c8ad31435bfb7c71a5b04dfc0314ac8f899219",
      "tree": "50b6e081a48441cf30ffe1afc47741c7340c7748",
      "parents": [
        "2f8025eef6c681920579f75d298a262b12a80ac9"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Wed Feb 20 13:39:37 2013 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Wed Feb 20 14:55:34 2013 -0800"
      },
      "message": "CameraService: Log camera module name\n\nExplicitly logs camera module loaded.  This is useful on systems with\nmultiple camera modules installed.  Also this make the camera service\nmatch audioflinger, which logs hardware module names as well.\n\nChange-Id: I280bf12df2d517f936916b8ba3cb662e671d0216\n"
    },
    {
      "commit": "a6843669d4da47755ce97fb85389d4d1c52b8197",
      "tree": "ce9b36fa01d3140cc7b2b7af91bcfb0dc6dea957",
      "parents": [
        "2f8025eef6c681920579f75d298a262b12a80ac9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 19 18:25:33 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 19 18:25:33 2013 -0800"
      },
      "message": "replace getISurfaceTexture by getIGraphicBufferProducer\n\nChange-Id: I723a3863558126f2635a544a39bb3ec88d499c60\n"
    },
    {
      "commit": "2f8025eef6c681920579f75d298a262b12a80ac9",
      "tree": "1e3c3880f6198a9ccdcadc0cf97e6de103161aba",
      "parents": [
        "a457c43cd7f4225ffbedfbdcd68dd9cf6fef1d38"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 18 12:47:49 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 19 10:51:47 2013 -0800"
      },
      "message": "A reference cannot be re-bound\n\nBug: 8213067\nBug: 6490974\nChange-Id: If546215641fbc9a0fb1e8af8b85cc01f0a4b26ab\n"
    },
    {
      "commit": "a457c43cd7f4225ffbedfbdcd68dd9cf6fef1d38",
      "tree": "62c3cfb9c8fb3c48df46aea39f4d6c3d27dab65a",
      "parents": [
        "c046148d93212f8a4da916bb860a1fa5926fe159",
        "5f6f3764989601d3b3ee65beaf1447d2a6b5f284"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 23:55:26 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 23:55:26 2013 +0000"
      },
      "message": "Merge \"Revert \"Temporary additional logging to investigate bug\"\""
    },
    {
      "commit": "5f6f3764989601d3b3ee65beaf1447d2a6b5f284",
      "tree": "b32615250ff96cb6e55206f5c78ae2e15c83cc87",
      "parents": [
        "dd9764290b3c1d801fea9505189cae29db919902"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 23:55:04 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 23:55:04 2013 +0000"
      },
      "message": "Revert \"Temporary additional logging to investigate bug\"\n\nThis reverts commit 32584a7d672864b20ab8b83a3cb23c1858e908b7\n\nChange-Id: I9dc680578b955b1af462eeb7a49d61a0d45eb81b\n"
    },
    {
      "commit": "c046148d93212f8a4da916bb860a1fa5926fe159",
      "tree": "1980477800bc27663417d5306d4af89de92533fb",
      "parents": [
        "4490bf05a9addf5a4e12e0da92f22d854e5ce9a0",
        "dd9764290b3c1d801fea9505189cae29db919902"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 23:54:53 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 23:54:53 2013 +0000"
      },
      "message": "Merge \"Temporary additional logging to investigate bug\""
    },
    {
      "commit": "dd9764290b3c1d801fea9505189cae29db919902",
      "tree": "2a9ef9c4d5a2d279f18f535441a0eeb8e9476700",
      "parents": [
        "6bde4671ae7cb383e731606d9ee548859047c961"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 13 14:46:45 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 15:44:50 2013 -0800"
      },
      "message": "Temporary additional logging to investigate bug\n\nThe bug appears related to continuing to use an invalid buffer provider\nin fast mixer after track destruction, so focus the added logs in that area.\n\nAlso includes a bug fix: was calling log in an unsafe place\nnear Threads.cpp AudioFlinger::PlaybackThread::createTrack_l line 1250.\n\nDetails:\n - include caller pid or client pid where appropriate\n - increase log buffer size\n - log mFastIndex when AudioMixer sees an invalid bufferProvider.\n - log both potentially modified and actually modified tracks in FastMixer.\n - fix benign bug where sq-\u003eend() was called more than once.\n - log StateQueue push() call and return.\n - increase StateQueue size from 4 to 8 entries\n - log mixer-\u003eenable(), bufferProvider, and currentTrackMask\n - log buffer provider addresses\n - increase fast mixer log buffer again\n - check logf format vs. argument list compatibility\n - add logging to AudioMixer\n - add checking of magic field in AudioMixer to detect overwrites\n - add bool AudioMixer::enabled()\n - increase log buffer sizes yet again\n - enable assertion checking without ALOGV\n - improve a few log messages\n - check for corruption in more places\n - log in all the process hooks\n - add new mixer APIs so we can check for corruption of mixer state\n - fix a build warning\n\nBug: 6490974\nChange-Id: Ib0c4a73dcf606ef9bd898313b3b40ef61ab42f51\n"
    },
    {
      "commit": "b1e7cd156ca3e1747374e0d20cdd1ce467210453",
      "tree": "557f25ff5a0477f0cf0f89d4c21b0291371f09a2",
      "parents": [
        "62ad9071cd61fc56355d3c2d25895382003ea362"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 14 17:11:27 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 15 12:47:35 2013 -0800"
      },
      "message": "Refactoring: Rename SurfaceTextureClient to Surface\n\nChange-Id: I4e8a8b20914cb64edc37abe68233fbc9f2b5d830\n"
    },
    {
      "commit": "ce70d400ff9fb614e334ab2b661df2933533ef57",
      "tree": "30610a5b21cfa882a9f17a7b4cc39d11e8ccdd7d",
      "parents": [
        "5881f18029deb80eb83ea88046d0593441be79c7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 14 23:57:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 23:57:02 2013 +0000"
      },
      "message": "Revert \"Temporary additional logging to investigate bug\"\n\nThis reverts commit 639482c24c911b125398b31883ba6d55faebe28b\n\nChange-Id: I11f2829072ab11e18b0663024f27bf31192f1d39\n"
    },
    {
      "commit": "5881f18029deb80eb83ea88046d0593441be79c7",
      "tree": "3de394e4626f829fed4237e756489e0fba865236",
      "parents": [
        "7e1e1e61fca5334e11a0c26ab23e6122e742d517"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 13 14:46:45 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 14 14:35:29 2013 -0800"
      },
      "message": "Temporary additional logging to investigate bug\n\nThe bug appears related to continuing to use an invalid buffer provider\nin fast mixer after track destruction, so focus the added logs in that area.\n\nAlso includes a bug fix: was calling log in an unsafe place\nnear Threads.cpp AudioFlinger::PlaybackThread::createTrack_l line 1250.\n\nDetails:\n - include caller pid or client pid where appropriate\n - increase log buffer size\n - log mFastIndex when AudioMixer sees an invalid bufferProvider.\n - log both potentially modified and actually modified tracks in FastMixer.\n - fix benign bug where sq-\u003eend() was called more than once.\n - log StateQueue push() call and return.\n - increase StateQueue size from 4 to 8 entries\n - log mixer-\u003eenable(), bufferProvider, and currentTrackMask\n - log buffer provider addresses\n - increase fast mixer log buffer again\n - check logf format vs. argument list compatibility\n - add logging to AudioMixer\n - add checking of magic field in AudioMixer to detect overwrites\n - add bool AudioMixer::enabled()\n\nBug: 6490974\nChange-Id: I1f3f18aa62d9fbd35bc32285b669f5ba40efe28e\n"
    },
    {
      "commit": "7f2f8042cf335ab1323dec3edbe9143a06109f4e",
      "tree": "debfbedbe8cf9a16d279f9a408519aa4743cc854",
      "parents": [
        "b900234f9e772bb7591a551f06ba17ee1969368f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 14 00:02:36 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 00:02:36 2013 +0000"
      },
      "message": "Revert \"Temporary additional logging to investigate bug\"\n\nThis reverts commit 0ddd56316262ac74a95e9edb595697c163136d6d\n\nChange-Id: I180a928af6f5a38d15a5efe44cd1fe927b5d961c\n"
    },
    {
      "commit": "b900234f9e772bb7591a551f06ba17ee1969368f",
      "tree": "b637fbbfb9a0405349200102eba4e4af4f298810",
      "parents": [
        "10e5eada4a265865494b93ca588f75beef14f592"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 13 14:46:45 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 13 14:51:50 2013 -0800"
      },
      "message": "Temporary additional logging to investigate bug\n\nThe bug appears related to continuing to use an invalid buffer provider\nin fast mixer after track destruction, so focus the added logs in that area.\n\nAlso includes a bug fix: was calling log in an unsafe place\nnear Threads.cpp AudioFlinger::PlaybackThread::createTrack_l line 1250.\n\nDetails:\n - include caller pid or client pid where appropriate\n - increase log buffer size\n - log mFastIndex when AudioMixer sees an invalid bufferProvider.\n - log both potentially modified and actually modified tracks in FastMixer.\n - fix benign bug where sq-\u003eend() was called more than once.\n - log StateQueue push() call and return.\n\nBug: 6490974\nChange-Id: Iee7c8f40e20b6000cd8286c0ec6a14fff4a37af1\n"
    },
    {
      "commit": "c93aff0a698265501f46393f3146b884aa357aee",
      "tree": "a53d8070243784449dc87ca193e2e121d38863b7",
      "parents": [
        "a1bf28b533907b0b234e52c72bc372b3fa49c5a3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 12 20:43:58 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 12 20:43:58 2013 +0000"
      },
      "message": "Revert \"Temporary additional logging to investigate bug\"\n\nThis reverts commit 3051df27261e9952c0e642dec548515250e85f6a\n\nChange-Id: I8bf5c3e91b65bd20de26f480c367c2854b62373c\n"
    },
    {
      "commit": "a1bf28b533907b0b234e52c72bc372b3fa49c5a3",
      "tree": "16d8b1d0e8d0e768ebf7ba769c17c264b978d68d",
      "parents": [
        "e336f9113bdd35119866a3c3f8008ca01c576660"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 12 12:12:42 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 12 12:40:18 2013 -0800"
      },
      "message": "Temporary additional logging to investigate bug\n\nThe bug appears related to continuing to use an invalid buffer provider\nin fast mixer after track destruction, so focus the added logs in that area.\n\nAlso includes a bug fix: was calling log in an unsafe place\nnear Threads.cpp AudioFlinger::PlaybackThread::createTrack_l line 1250.\n\nDetails:\n - include caller pid or client pid where appropriate\n - increase log buffer size\n\nBug: 6490974\nChange-Id: I4c030f171343fe4b483eae0ddea4427118d8d4b1\n"
    },
    {
      "commit": "e336f9113bdd35119866a3c3f8008ca01c576660",
      "tree": "a53d8070243784449dc87ca193e2e121d38863b7",
      "parents": [
        "51a920302a6f376cdb24691051d96f34f24a55bf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 04 16:26:02 2013 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 11 10:13:00 2013 -0800"
      },
      "message": "Add support for querying if a stream is active remotely\n\nBug 7485803\n\nChange-Id: I0744374f130fd2dd0714102354cffed2fa915361\n"
    },
    {
      "commit": "83fa606bd629ac32a2dab5af255188acfa30db4a",
      "tree": "41d2c6dc2fbb8ef4a30eac3593ffa22279513874",
      "parents": [
        "5fa419b962f668e6fa9adf7e14fddea97cdb736e",
        "201fc9c9feb4765a12bc39e95d25f3aa1deb8ffe"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 04 17:05:30 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 04 17:05:30 2013 +0000"
      },
      "message": "Merge \"AudioFlinger: fix RecordThread initial device\""
    },
    {
      "commit": "5fa419b962f668e6fa9adf7e14fddea97cdb736e",
      "tree": "363ec9b9202f4d341ec4351fcaddc3c89b002d94",
      "parents": [
        "1d3a2a224f6a617f62fed36e9b6664f4b682727f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 04 08:15:34 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 04 08:15:34 2013 -0800"
      },
      "message": "Fix crash when destroying a DuplicatingThread\n\nBug: 8121343\nChange-Id: I9b1fc56c753e465e8a08916022e52db6c3a36906\n"
    },
    {
      "commit": "201fc9c9feb4765a12bc39e95d25f3aa1deb8ffe",
      "tree": "fc83fba00c9101d552f794021b3f551cd947673a",
      "parents": [
        "7acd13defdb3f33b2e266f1ef8f3ac85285c5e27"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 01 17:57:04 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 01 17:57:04 2013 -0800"
      },
      "message": "AudioFlinger: fix RecordThread initial device\n\nA regression was introduced when the audio device enums where\nmodified for a 32 bit representation: the device passed when\nconstructing a RecordThread was still the concatenation of input\ndevice and output device bit fields on one 32 bit value which\nis not possible anymore.\n\nThe fix consists in modifying the RecordThread constructor to accept\nseparate values for input and output devices.\n\nChange-Id: I81fb5f4718428b54251e65d74b86e198ce15193e\n"
    },
    {
      "commit": "011aa652a9349750dd6bca1dcb1b82f19e07504e",
      "tree": "11598e68d5451cdf4965ff42cecc39fdaa28d074",
      "parents": [
        "0be9fe5864c39c11eefe335038cf6ce5473e4ec5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:09:48 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 31 16:40:24 2013 -0800"
      },
      "message": "AudioFlinger uses media.log service for logging\n\nChange-Id: Ia0f8204334f6b233f644d897762a18c95d936b4b\n"
    },
    {
      "commit": "fdf4e4f1859771b95585cbc87f8cd038ea2815c6",
      "tree": "7bbc12a9d0e9c7ad29346b04b26c55d390a0b032",
      "parents": [
        "10eb4b33545a58e4b09249c30c100bc7b992250a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:31:41 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 25 15:12:14 2013 -0800"
      },
      "message": "Add media.log service based on NBLog\n\nChange-Id: Ie45093df6ac9a739d05c8d408fab52a9a8a27e7f\n"
    },
    {
      "commit": "3a948fceb6b59121cc2e5eeb458064150870ffde",
      "tree": "6ecb6c8e785b2f4dc1a4aae297e680e09a7e7385",
      "parents": [
        "45490af027a15af9fe0fdfca21f423c74cd8e4e9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 17 17:36:00 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 17 17:40:38 2013 -0800"
      },
      "message": "AudioFlinger: fix build with debug log enabled\n\nChange-Id: Id397155ec884c41cb84b35462ea09a97a04d3ed2\n"
    },
    {
      "commit": "95819503abcfafdb37fbba1401b6cd9dd91ff2f1",
      "tree": "e5cc31fdbcec75f498fd9e25d08e509dc5e26374",
      "parents": [
        "3f965475076db28848bee63d7515e80f04e3d3c1",
        "befdd0275dbb78e1a9fa2a33a3a1de731b1fe389"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 09 07:31:45 2013 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 09 07:31:46 2013 -0800"
      },
      "message": "Merge \"Fix build warnings\""
    },
    {
      "commit": "befdd0275dbb78e1a9fa2a33a3a1de731b1fe389",
      "tree": "87cc78382de43671c5cb94988831373a2b787d52",
      "parents": [
        "b438f008d958fbe3c1ef668822c128dfe5ce97ac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 08 16:45:38 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 08 16:45:38 2013 -0800"
      },
      "message": "Fix build warnings\n\nChange-Id: I79f4d7052a4c0a9fde144063f44a9c8c9dd575d5\n"
    },
    {
      "commit": "eae312137f71af037d5f5b4071eef8e2ecd6055e",
      "tree": "c514ca8ed0e578fda7f23c530867182804818e55",
      "parents": [
        "4f6c4590f2064c289b33b2b3978a17f57f75590d"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jan 04 12:05:56 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Jan 07 10:22:24 2013 -0800"
      },
      "message": "Camera2: Fix JPEG quality metadata type, new warnings.\n\n- JPEG quality tag is now a uint8_t, not an int. Update parameter code\naccordingly.\n\n- Fix new warnings about narrowing conversions.\n\nBug: 7944244\n\nChange-Id: Ie081c57c9e9323148614b170b132ffb98c0a0b9f\n"
    },
    {
      "commit": "856ff4e4c3c43550f013e80277358fdf514342bf",
      "tree": "8c4d4a5e03726de6b40ab9ed3519e738cae2fefc",
      "parents": [
        "5570227ac334479982a9dd8c1647c00f58f47c18",
        "552f274d82fb4988fb972df69134e031d375abfe"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 21 15:04:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 21 15:04:30 2012 -0800"
      },
      "message": "Merge \"Start isolating control block accesses in a proxy\""
    },
    {
      "commit": "5570227ac334479982a9dd8c1647c00f58f47c18",
      "tree": "885046de88c68c9fc468fd02617af4cafc6a758b",
      "parents": [
        "00169223fb04a14ddb542146223540e3695c8d27",
        "f37971f624164c3ed185d3f976404a6f60f49b9a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 21 08:09:10 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 21 08:09:11 2012 -0800"
      },
      "message": "Merge \"Remove unnecessary parameter\""
    },
    {
      "commit": "10f57df484daecc356ca1720c4ba799a8bf6761a",
      "tree": "009ba67be543152cd53916c86c82b6fe23a705df",
      "parents": [
        "f93aa1fdae47ca2eddc7ca35fbde4266b114e8c5",
        "92b1343f5fbc2fc43198a0a1252fe023cc9a5061"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 20 08:32:43 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 20 08:32:43 2012 -0800"
      },
      "message": "Merge \"Fix build warnings\""
    },
    {
      "commit": "f93aa1fdae47ca2eddc7ca35fbde4266b114e8c5",
      "tree": "b6b21be3565c767dcf9aecd7656bff1c4196f3b1",
      "parents": [
        "f5961efd27adde3726b78386328b0e649b248171",
        "05f9e4fe9a97e077b5ed37214464c0a67af80871"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 20 07:39:48 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 20 07:39:49 2012 -0800"
      },
      "message": "Merge \"Add warning about following the design rules\""
    },
    {
      "commit": "f37971f624164c3ed185d3f976404a6f60f49b9a",
      "tree": "e3455056e9e0512786cfdd832e1fd8bba765bc7c",
      "parents": [
        "34d7db5dd43000cac7e8e156d79e9f97ccbb8990"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 11:06:53 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 18 16:16:30 2012 -0800"
      },
      "message": "Remove unnecessary parameter\n\nJust get the parameter on server side\n\nChange-Id: I433a63104dbb257e0d862be2ab61847cb36d1c15\n"
    },
    {
      "commit": "484566c410afdfbc4b6bc5aa1732aef37428a5b8",
      "tree": "5ce1fc6a755c32f0b6ff362fe1fc5bf0d9ee2b14",
      "parents": [
        "34d7db5dd43000cac7e8e156d79e9f97ccbb8990"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 09:46:54 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 13:31:57 2012 -0800"
      },
      "message": "Rename ISurfaceTexture and SurfaceTexture\n\nThe C++ class names don\u0027t match what the classes do, so rename\nISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to\nGLConsumer.\n\nBug 7736700\n\nChange-Id: I64520a55f8c09fe6215382ea361c539a9940cba5\n"
    },
    {
      "commit": "92b1343f5fbc2fc43198a0a1252fe023cc9a5061",
      "tree": "1b18972d51d768689868d373b1b0e4187eb1af99",
      "parents": [
        "d272d6bf640dcaebeee7405469f9cacfa4bc1b72"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 14 07:13:28 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 17 12:34:42 2012 -0800"
      },
      "message": "Fix build warnings\n\nChange-Id: I9e3cfa0c6b3467fe763ce55f759d179f02c5deea\n"
    },
    {
      "commit": "552f274d82fb4988fb972df69134e031d375abfe",
      "tree": "6c356ad9ec05a6b6e392aae86cdc296c98d13a65",
      "parents": [
        "cc492bd388898f90cec4faae3c7fde561dd52239"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 04 12:22:46 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 12 12:21:59 2012 -0800"
      },
      "message": "Start isolating control block accesses in a proxy\n\nThe proxy object will eventually be the only code that understands the\ndetails of the control block.  This should make it easier to change the\ncontrol block in the future.\n\nInitial set of control block fields that are isolated:\n - sample rate\n - send level\n - volume\n\nPrepare for streaming/static separation by adding a union to the control\nblock for the new fields.\n\nFix bug in handling of max sample rate on a track.  It was only checking\nat re-configuration, not at each mix.\n\nSimplify OutputTrack::obtainBuffer.\n\nChange-Id: I2249f9d04f73a911a922ad1d7f6197292c74cd92\n"
    },
    {
      "commit": "30c01816ddee2268fcd3d965240cba9c00301e7d",
      "tree": "3e3216ddec7d4e50d08a0496f9e3c26180e45dc5",
      "parents": [
        "ba8da49e244be1e18b19bb16b16ff5c75e165712"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 04 12:12:34 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 12 09:38:48 2012 -0800"
      },
      "message": "Prepare for track invalidation to be done by proxy\n\nDon\u0027t rely on control block to determine whether track has been marked\ninvalid.  Instead, use a local flag that can\u0027t be corrupted by client.\n\nChange-Id: I783dafe828f93c1c3d2d0e5a08105ea536436efb\n"
    },
    {
      "commit": "e1cf3c41bd27b5ab7d8e70ef8dd6fcd0f5453568",
      "tree": "8851291ff68fc422d0e76bfeec00c37d2293a8c3",
      "parents": [
        "c984e76f3091c8210cd6bb0cae0f23549a7af0ee",
        "a4f324673f615d604362d86e1878e85c126847af"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 10 16:08:07 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 10 16:08:07 2012 -0800"
      },
      "message": "am 76143093: am f0ff908d: Logging to investigate a crash\n\n* commit \u0027761430930a7335d714af0f7c1d497feb8f9f0a5a\u0027:\n  Logging to investigate a crash\n"
    },
    {
      "commit": "ef5abc369823f634c460c8f24d3cbf310542fe3b",
      "tree": "429519b3bd4fbc7f47ee2be82f2778ef1545fbdd",
      "parents": [
        "7ecb63d26cc5a45e66248a7abb69f99a76114e07"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 07 14:13:35 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 07 16:19:09 2012 -0800"
      },
      "message": "Logging to investigate a crash\n\nBug: 6490974\nChange-Id: Ib926a9258bde4ee05ed42eea662dff68e426a997\n"
    },
    {
      "commit": "07dfb08e935fdfe9f73f452cf27e3e2b052eda4f",
      "tree": "f5a698ed9390097429df61d4f19e16fcc94a797c",
      "parents": [
        "e0da485dd76267e86cff7cbd334c74435d745225",
        "2d2b40b67515208273197ac2f03c5fabd430efae"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Dec 04 16:54:51 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 04 16:54:51 2012 -0800"
      },
      "message": "Merge \"Camera2: fix metadata symbols\""
    },
    {
      "commit": "e0da485dd76267e86cff7cbd334c74435d745225",
      "tree": "275e1d886df70787b07f65c0d83cd85ade4afbad",
      "parents": [
        "e6106dff611a0056495719c62e0c92abd9afe4c1",
        "71b6e60c52ce367bc0d64ffca60848d600511b65"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Dec 04 11:30:11 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 04 11:30:11 2012 -0800"
      },
      "message": "Merge \"audioflinger: define ANDROID_SMP, remove conditional tracing\""
    },
    {
      "commit": "2d2b40b67515208273197ac2f03c5fabd430efae",
      "tree": "996412d93282b01f4973c3e4218b2762ec21b03e",
      "parents": [
        "8f7453f6770070f4789cb769bd2b6a3eabad7d68"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Nov 27 16:25:46 2012 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Dec 03 14:40:48 2012 -0800"
      },
      "message": "Camera2: fix metadata symbols\n\nChange-Id: I59e457824782de26b7b489cd92eb33d48e6ee2d9\n"
    },
    {
      "commit": "4b3a49e3a9ced6e63adab08acc5b720f8feddefa",
      "tree": "4189f95a16953fa8218544fa5ceedfc7bee94e1d",
      "parents": [
        "9862e8f3ba69c46efbafdc8438bd88848a9d55da"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 29 13:38:14 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 03 09:57:37 2012 -0800"
      },
      "message": "AudioTrack::mute() is unused so remove it\n\nIf ever needed again, it could be implemented on client side by forcing\na track volume of 0.\n\nChange-Id: I88a9b4f675b6dca2948549414f9ec2c192d29269\n"
    },
    {
      "commit": "71b6e60c52ce367bc0d64ffca60848d600511b65",
      "tree": "36ff8e80ee77a4f60a0439e234f72ccd9a03ee72",
      "parents": [
        "3e5abe9b119513bdb5b8b8d7c9aa72de7339f78f"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Nov 30 19:42:28 2012 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Nov 30 19:44:24 2012 -0800"
      },
      "message": "audioflinger: define ANDROID_SMP, remove conditional tracing\n\nWith ANDROID_SMP set, tracing functionality is completely inline, and\nwithout the performance hits of external library calls, tracing does\nnot need to be conditionally compiled.\n\nChange-Id: I4b29a9a52c403f0d2ea137c5b7bc05a518a7ca4b\n"
    },
    {
      "commit": "af348741539ae4a84aa929a54ecf359dae96f3ee",
      "tree": "b799625eeebbcc4a1ee12b9767eb11262ff88170",
      "parents": [
        "e8cb004257565111cb261f3e9c786adba881859a"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Nov 30 11:11:54 2012 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Nov 30 11:11:54 2012 -0800"
      },
      "message": "Remove conditional compilation of ATRACE functions\n\nTracing functions are meant to be dynamically controlled via sysprops.\nConditional compilation removes this functionality.\n\nChange-Id: I26bc473d104d0b3c50a228dddfda3fa2428d157a\n"
    },
    {
      "commit": "05f9e4fe9a97e077b5ed37214464c0a67af80871",
      "tree": "1cf64edb5b601e3830e8cfa027ac72d842f4e575",
      "parents": [
        "1bfcf04b27bdd5320ab70b74285b855380e83f26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 07:57:43 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 07:59:09 2012 -0800"
      },
      "message": "Add warning about following the design rules\n\nChange-Id: Ic4895ed5682bad10b03e97d8015e642ee1696533\n"
    },
    {
      "commit": "e8cb004257565111cb261f3e9c786adba881859a",
      "tree": "4b2771e072eb073abf52d558d1cb48df45b00a1f",
      "parents": [
        "a4e441095b217af3cfe68e2f8c5ec6cf188a901a",
        "7a90bc9265782788675af577c7b1c56e5d5be709"
      ],
      "author": {
        "name": "Simon Wilson",
        "email": "simonwilson@google.com",
        "time": "Thu Nov 29 15:26:48 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 29 15:26:49 2012 -0800"
      },
      "message": "Merge \"Use ATRACE macros instead of Tracer statics\""
    },
    {
      "commit": "7a90bc9265782788675af577c7b1c56e5d5be709",
      "tree": "cbb5cc744291d91a55fc27b3e07309b8d981f721",
      "parents": [
        "6eb50f7ad52687331e55400a161164a62b8ebd52"
      ],
      "author": {
        "name": "Simon Wilson",
        "email": "simonwilson@google.com",
        "time": "Thu Nov 29 15:18:50 2012 -0800"
      },
      "committer": {
        "name": "Simon Wilson",
        "email": "simonwilson@google.com",
        "time": "Thu Nov 29 15:19:46 2012 -0800"
      },
      "message": "Use ATRACE macros instead of Tracer statics\n\nATRACE_BEGIN and ATRACE_END have replaced the static\nTracer::traceBegin and Tracer::traceEnd functions, so\nuse them instead.\n\nFixes compilation errors when tracing is enabled.\n\nChange-Id: I4d1147d2f76afcdf113e9986f0544cb848802b15\n"
    },
    {
      "commit": "f15a6227840b8d04a70fbd45fbd4de06b21fdc1f",
      "tree": "c9f35b049936fb5be64c4c82e750d2275666a2c6",
      "parents": [
        "f59ab0eb162cc32df4fc0af8d1a4500c5bce3ecc",
        "6db0ac98038b0b6b5e4a157263daccca802bcc2d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 29 14:32:22 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 29 14:32:22 2012 -0800"
      },
      "message": "am 9428cdd7: am 5dea84c3: Fix log spam\n\n* commit \u00279428cdd7b9d32647d35207b3579133ee6a1f7355\u0027:\n  Fix log spam\n"
    },
    {
      "commit": "65ac1b1761c57124382355c21edbbdaaab2ee025",
      "tree": "ff99bfafc8415e59dbc609f2cdb63ce7f73673de",
      "parents": [
        "471dd1323f832a2b7daf42f7e75d2b4471dfe112"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 29 14:09:41 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 29 14:09:41 2012 -0800"
      },
      "message": "Fix log spam\n\nChange-Id: Ie6c982af906dcfd3cdea4b771dfab1f7e47745ca\n"
    },
    {
      "commit": "72421521fd06787a407d06966e11f17b86900d2a",
      "tree": "ad2b2f65cb04b425314c988bf353b5de27728158",
      "parents": [
        "8020c49368c2a9950e9f66092c6b07e46c5dac11"
      ],
      "author": {
        "name": "Ben Murdoch",
        "email": "benm@google.com",
        "time": "Wed Nov 28 13:58:29 2012 +0000"
      },
      "committer": {
        "name": "Ben Murdoch",
        "email": "benm@google.com",
        "time": "Wed Nov 28 13:58:29 2012 +0000"
      },
      "message": "Fix master build.\n\nChange-Id: Ia362f74d8cd7df76292473c26c112dffe190c599\n"
    },
    {
      "commit": "a10f9b0470f598c8edf0b11a7b4c78cdf7dd1f86",
      "tree": "c0de117fb5aeaee6dc8de71f251a90e98c0a8d65",
      "parents": [
        "85cecc25d877cb44b0b0f670c4e52dc4839a4064",
        "edac45119a3f37e3092911224385a390c123040e"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Nov 27 17:34:23 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 27 17:34:23 2012 -0800"
      },
      "message": "am b8fa1240: am aa9e3e01: Camera: Play shutter sound iff enableShutterSound(true) \u0026\u0026 ShutterCallback !null\n\n* commit \u0027b8fa1240eedeb487a7ee0cf7d60e17bed9b25cf4\u0027:\n  Camera: Play shutter sound iff enableShutterSound(true) \u0026\u0026 ShutterCallback !null\n"
    },
    {
      "commit": "5ad21fb5686d4d32f61a47eab5a3fd2c4670e32d",
      "tree": "131a3301b23d84b1564e1f9a0a853701225970f9",
      "parents": [
        "786a8daf400df7b49f6a7c19a5cea9b504d6aa9e",
        "a614426bc7e195af227a585bb0a07f43b4022d78"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 27 14:51:19 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 27 14:51:19 2012 -0800"
      },
      "message": "Merge \"New VHQ resampler\" into jb-mr1.1-dev"
    },
    {
      "commit": "a614426bc7e195af227a585bb0a07f43b4022d78",
      "tree": "18f9408e8a76815216783b24249b4e1177d982cd",
      "parents": [
        "35436ad21902edf83e3c1307b45b38d13137d31c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 19 09:00:47 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 27 13:33:45 2012 -0800"
      },
      "message": "New VHQ resampler\n\nSquashed commit of the following:\n\ncommit 12b6952da9f25e94d06dd7185bce255924e7e791\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Nov 19 15:27:26 2012 -0800\n\n    fix a typo in SINC resampler that prevented tracks to be mixed\n\n    we were always erasing the current mix instead of mixing into it.\n\n    Change-Id: Ib229245f9e5a0d384f1727640a59e9f0469211a2\n\ncommit 0019ce082df430278f14ab922e900ce33b64897d\nAuthor: Dave Bort \u003cdbort@google.com\u003e\nDate:   Tue Nov 13 01:30:32 2007 -0800\n\n    Rename \"TARGET\" to \"MODULE\" in the build system.\n\n    Part one of the grand renaming.\n\n    API_CHANGE: Third parties may need to update their makefiles.\n    Any variables with \"LOCAL\" and \"TARGET\" in their names\n    should now use \"MODULE\" instead of \"TARGET\"; e.g., LOCAL_MODULE,\n    LOCAL_MODULE_TAGS.\n\n    PRESUBMIT\u003dpassed\n    OCL\u003d39840\n\n    Change-Id: Ica9a7937d3d9552ab84db46ac6eea8a290e404fe\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\ncommit f01adc0cef0e39e75c76d9195ac26a94cac0a100\nAuthor: Glenn Kasten \u003cgkasten@google.com\u003e\nDate:   Wed Nov 14 08:32:08 2012 -0800\n\n    Fix build warnings\n\n    Change-Id: Ic43bcca166a529a6431711b05a7fa21849b6a38b\n\ncommit 9bb031a565c753a03d9c9397edea318947d80528\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sat Nov 10 04:44:30 2012 -0800\n\n    more optimizations...\n\n    calculate the offsets from the phase differently, this happens\n    to reduce the register pressure in the main loop, which in turns\n    allows the compiler to generate much better code (doesn\u0027t need\n    to spill a lot of stuff on the stack).\n\n    this gives another 15% performance increase\n\n    Change-Id: I2ce3479dd48b9e6941adb80e6d443d6e14d64d96\n\ncommit 5a951598f31217b8cd2babd0720c9608ee17291a\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sat Nov 10 03:26:39 2012 -0800\n\n    refactor code to improve neon code\n\n    we want to make sure we don\u0027t transfer data from the\n    neon unit to the arm register file, as this can be quite\n    slow. instead we do all the calculation on the neon side\n    and write the result directly to main memory.\n\n    Change-Id: Ibb56664d3ab03098ae2798b75e2b6927ac900187\n\ncommit b381ee9e83bc9fd18986e79c7809841514ed590e\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sun Nov 4 15:16:13 2012 -0800\n\n    NEON optimized SINC resampler\n\n    this currently gives us a 60% to 80% boost depending\n    on the quality level selected.\n\n    Change-Id: I7db385007e811ed7bffe5fd3403b44e300894f5b\n\ncommit bea077354210242ea193a50b0dbab0fedab25df3\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Nov 5 01:51:37 2012 -0800\n\n    minor cleanups\n\n    Change-Id: Ia12ee4fb59e90221761bec85e6450db29197591f\n\ncommit 8f4ed7decbe161a5ff38200b218f5216d80aba46\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sun Nov 4 18:49:14 2012 -0800\n\n    improve resample test\n\n    - handle stereo input\n    - input file can now be ommited, in this case\n      a linear chirp will be used automatically\n    - better usage information\n\n    Change-Id: I5d62a6c26a9054a1c1a517a065b4df5a2cdcda22\n\ncommit 5fcd634ea6cb4df27c495abe20f5f9b8ff55d128\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sun Nov 4 02:03:49 2012 -0800\n\n    change how we store the FIR coefficients\n\n    The coefficient table is now transposed and shows\n    much better its polyphase nature: we now have a FIR\n    per line, each line corresponding to a phase.\n\n    This doesn\u0027t change at all the results produced by\n    the filter, but allows us to make slightly better\n    use of the data cache and improves performance a bit\n    (although not as much as I thought it would).\n\n    The main benefit is that it is the first step\n    before we can make much larger optimizations\n    (like using NEON).\n\n    Change-Id: Iebf7695825dcbd41f25861efcaefbaa3365ecb43\n\ncommit d652231abf4c7e2ea1fc89caae730cec1f7259a1\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sat Nov 3 23:37:53 2012 -0700\n\n    improve SINC resampler performance\n\n    The improvement is about 60% by just tweaking a few\n    things to help the compiler generate better code.\n    It turns out that inlining too much stuff manually was hurting us.\n\n    Change-Id: I8068f0f75051f95ac600e50ce552572dd1e8c304\n\ncommit 9dc68ef5b94c700c4ee68790e8cbb334c90a538d\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Thu Nov 1 21:03:46 2012 -0700\n\n    new coefficients for the vhq resampler\n\n    previous coefficients were provided by a 3rd party and didn\u0027t have a\n    way to re-generate them. we\u0027re now using the \u0027fir\u0027 utility.\n\n    the performance of the filter is virtually identical, except for\n    the down-sampling case which seems slightly better now:\n       It looks like both the previous and new coefficients are generating\n    some sort of clipping for full-scale signals in the down-sampling case\n    (although the new ones seem better), the reason for that is\n    unknown (see bug: 7453062)\n\n    Also updated the HQ coefficients for the down-samplers, previous ones\n    were a little bit too conservative -- the new ones push the cut-off\n    frequency up by about 1 KHz.\n\n    Change-Id: I54a827b5c707c7cc41268ed01283758dce1d7647\n\ncommit 38e0b8560a6fc1b7124e22e0e09a84a285182f8e\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Tue Oct 30 13:51:44 2012 -0700\n\n    fix SINC resampler on non ARM architectures\n\n    make sure the C version of the code generates the same\n    output than the ARM assemply version.\n\n    Change-Id: Ide218785c35d02598b2d7278e646b1b178148698\n\ncommit a1878128b182696ba508569b4d211d0dfae92463\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Tue Oct 30 12:49:07 2012 -0700\n\n    fix another issue with generating FIR coefficients\n\n    the impulse response of a low-pass is 2*f*sinc(2*pi*f*k), we were\n    missing the 2*f scale factor. This explains why we were seeing\n    clipping and had to manually scale the filter down.\n\n    Change-Id: I86d0bb82ecdd99681c8ba5a8112a8257bf6f0186\n\ncommit 1a0fb993430acc9f601e6c538305bc407c20ac5d\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Oct 29 17:13:20 2012 -0700\n\n    fir a typo that caused up-sampling coefficiens to be wrong\n\n    up-sample coefficient were generated with a cut-off frequency of 24KHz\n    intead of ~20KHz, which caused more aliasing in the audible band.\n\n    also increased the attenuation to 1.3 dB on both up and down\n    sampling coefficient to avoid clipping.\n\n    Change-Id: Ie8aeecf1429190541b656810c6716b6aae5ece2e\n\ncommit 9520ad6862bd682ad075a9d9e3e94ada9f6e58b6\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Oct 29 17:13:16 2012 -0700\n\n    test-resample: clip instead of overflowing\n\n    Change-Id: I550e5a59e51c11e1095ca338222b094f92b96878\n\ncommit ba36656300f250f7f1fdeb75149749344260e6cb\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sun Oct 21 01:01:38 2012 -0700\n\n    a test app for the resamplers\n\n    Change-Id: I66852d90d384f1d9e77b51ad1a1ebdbaf61d0607\n\ncommit 056a08b9bfd33cf27228c992adc8293a56b01be8\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Fri Oct 26 14:11:01 2012 -0700\n\n    reenable the cubic resampler\n\n    cubic resampler was disabled because it hadn\u0027t been qualified,\n    however after I did some tests, it does improve significantly\n    the sound quality over the order-1 resampler, even if it is\n    still quite bad.\n\n    also HIGH_QUALITY resampler was partially disabled, it\u0027s now\n    fully enabled. It\u0027s a big improvement over the cubic resampler\n    in terms of aliasing noise (it\u0027s not as good in the pass-band).\n\n    Change-Id: I70e3658c255896588642697be9eb594ff4ec0f8b\n\ncommit 8c0241d3ff50ae85167f69b3bd369244894cfa44\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Fri Oct 26 13:48:42 2012 -0700\n\n    improve SINC resampler coefficients\n\n    - we increase the interpolation precision from 4 to 7 bits\n    this doesn\u0027t increase CPU power required, it only increases the\n    size of the filter table but significantly reduces the noise\n    introduced by the quantization of the impulse response.\n\n    - the parameters of the filter are set such that aliasing is\n    rejected at 80 dB below 20 KHz. Because we don\u0027t use a lot of\n    coefficient (to save compute power), there are quite a bit of\n    attenuation in the pass-band: starting at 9KHz for the\n    down-sampler (48 to 44.1), and starting at 13 KHz for the\n    up-sampler (44.1 to 48) -- the transition band is about 15 KHz.\n\n    Change-Id: I855548d2aab8a0fb0d2a2da3a364b6842d7d3838\n\ncommit 69e7dab2192adc1f780464146810629ebd01b145\nAuthor: Pixelflinger \u003cmathias.agopian@gmail.com\u003e\nDate:   Thu Oct 25 19:43:49 2012 -0700\n\n    improve fir tool: cleanup, better default, bug fixes\n\n    - all parameters can be changed on the command-line\n    - added float output\n    - added debug option\n    - added an option to generate a polyphase filter coefficients\n    - added an attenuation option in dBFS\n    - added a lot of comments and references\n    - fixed kaiser window parameter\n\n    also the default should generate a filter with 80 dB rejection\n    (of the 24 KHz aliasing) above 20 KHz and a 15 KHz transition\n    band around ~20 KHz (for 48 KHz sampling rate).\n    It\u0027s not very good but corresponds to the current code.\n\ncommit 8347499d105a50257c18e9dac652e750b06428b1\nAuthor: Glenn Kasten \u003cgkasten@google.com\u003e\nDate:   Mon Oct 22 17:09:27 2012 -0700\n\n    Increase allowed number of VHQ resamplers to 3\n\n    Bug: 7378660\n    Change-Id: I69e33ca2eb4bb9bd38e2c63df62cd1130d68baf6\n\ncommit f91cf3cad7f5c4d52614271c89ab468741c5d24c\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sun Oct 21 03:04:05 2012 -0700\n\n    Fix a typo that caused the high quality resampler to produce garbage\n\n    the problem is that if libaudio_resampler is present, it is those\n    coefficients that will always be selected, but the correct\n    meta-data.\n\n    Bug: 7385994\n    Change-Id: Ieebeb37b4dfb62a1a051bc29fae2ce056dbc6621\n\ncommit e158a9e4262a174c59469a205658bc3ca4078234\nAuthor: Dan Bornstein \u003cdanfuzz@google.com\u003e\nDate:   Fri Oct 3 10:34:57 2008 -0700\n\n    Manually merge change #111620 from tc3 to mainline, to keep the\n\n    automerger from choking on it.\n\n    p4 sync\n    p4 integrate -r -b android_to_tc3 //...@111620,111620\n    p4 resolve -a\n    p4 resolve     # resolve a couple merge travesties\n\n    PRESUBMIT\u003dpassed\n    BUG\u003d1399648\n    TBR\u003dedheyl\n    OCL\u003d111902\n\n    Change-Id: I854b01553dd92bbf9c864f5a9bd51a3d665f0ac2\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\ncommit b9f3c26032be7a6ea01a10d93d94826f449e68ab\nAuthor: Dave Bort \u003cdbort@google.com\u003e\nDate:   Fri Jan 18 14:51:05 2008 -0800\n\n    Rename \"Makefile\" to \"Android.mk\" throughout the tree.\n\n    For \u003chttp://b/issue?id\u003d960416\u003e.\n\n    I\u0027ve tested this as much as I can, but 1500 open files \u003d\n    easy to mess things up.  Please let me know if there\u0027s\n    a problem rather than rolling back this change.\n\n    PRESUBMIT\u003dpassed\n    BUG\u003d960416\n    TBR\u003djoeo\n    OCL\u003d46537\n\n    Change-Id: I5a404caf0f398a7afa7ae7abaf2f2a1c6ab490eb\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\ncommit 0c22a9a44c4103483fba1d944acf1354c5eb1617\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Oct 29 23:44:25 2007 -0700\n\n    Tweak the SINC resampler parameters and double the performance. It\u0027s using about 10% CPU in the worse case now.\n\n    Change-Id: I50ac7e6c6702a427fa36ab6d976c507155057507\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\ncommit b85e41487983ad085b859acf8251e7e54480308a\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Oct 29 04:34:36 2007 -0700\n\n    A sinc resampler for Audioflinger. It\u0027s not enabled yet, but fully functional and apparently working. It need more \"quality\" tests. In the 48-\u003e44 KHz, it takes about 25% of the CPU time.\n\n    Change-Id: I80eb5185e13ebdb907e0b85c49ba1272c23d60ec\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\ncommit ba3949ef17cac2ba71cc3096c413782a49c922e5\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Thu Aug 23 21:01:28 2007 -0700\n\n    fix a few small typos in the FIR computation\n\n    Change-Id: I6e56b514fe520f30f7487f85c64ea5d2a7c19b40\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\ncommit 7474bfa7de2604021963794dddfe44985648db6a\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Thu Aug 23 03:16:02 2007 -0700\n\n    This is a tool to compute the the reconstruction filter coefficients for a sinc audio resampler.\n\n    Change-Id: I99be2505139b8e0e7647200e1647509d4f7e6067\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\nBug: 7577965\nChange-Id: I2c84a9283a1668723bad83e1a119c849c88c3e6b\n"
    },
    {
      "commit": "786a8daf400df7b49f6a7c19a5cea9b504d6aa9e",
      "tree": "bb3a77ca020334cd0993276d5adc1811d1e3a0d9",
      "parents": [
        "35436ad21902edf83e3c1307b45b38d13137d31c"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Nov 26 10:50:55 2012 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Nov 26 16:01:48 2012 -0800"
      },
      "message": "Camera: Play shutter sound iff enableShutterSound(true) \u0026\u0026 ShutterCallback !null\n\nBug: 7564718\nChange-Id: Ie7821cdee57966d88af048759578439a3e6ecb2e\n"
    },
    {
      "commit": "da398117aff410e1856299450ef6ca4faddad75c",
      "tree": "ef69124270d1cbca68ed9055c3e5eeae61ee2cd1",
      "parents": [
        "c1d6b630da52f37db415e92741f7c011ce2959d5",
        "ca7cc8273ffd88b9b89655808ee7e3df74162b83"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 20 10:37:47 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 20 10:37:48 2012 -0800"
      },
      "message": "Merge \"AudioFlinger files reorganization\""
    },
    {
      "commit": "ca7cc8273ffd88b9b89655808ee7e3df74162b83",
      "tree": "17477e1e7a66afba5f535ba984a22cc7898797b2",
      "parents": [
        "a81a88597138de226da88fe10456d46289107e8a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 19 14:55:58 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 19 19:35:38 2012 -0800"
      },
      "message": "AudioFlinger files reorganization\n\nAudioflinger.cpp and Audioflinger.h files must be split to\nimprove readability and maintainability.\n\nThis CL splits the files as follows:\n\nAudioFlinger.cpp split into:\n- AudioFlinger.cpp: implementation of IAudioflinger interface and global methods\n- AFThreads.cpp: implementation of ThreadBase, PlaybackThread, MixerThread,\nDuplicatingThread, DirectOutputThread and RecordThread.\n- AFTracks.cpp: implementation of TrackBase, Track, TimedTrack, OutputTrack,\nRecordTrack, TrackHandle and RecordHandle.\n- AFEffects.cpp: implementation of EffectModule, EffectChain and EffectHandle.\n\nAudioFlinger.h is modified by inline inclusion of header files containing\nthe declaration of complex inner classes:\n- AFThreads.h: ThreadBase, PlaybackThread, MixerThread, DuplicatingThread,\nDirectOutputThread and RecordThread\n- AFEffects.h: EffectModule, EffectChain and EffectHandle\n\nAFThreads.h includes the follownig headers inline:\n- AFTrackBase.h: TrackBase\n- AFPlaybackTracks: Track, TimedTrack, OutputTrack\n- AFRecordTracks: RecordTrack\n\nChange-Id: I512ebc3a51813ab7a4afccc9a538b18125165c4c\n"
    },
    {
      "commit": "bc9ea63daaad764d242ce0eadfeb697abb9ce34e",
      "tree": "675f15de5cc9eda5b7a4f88001e41417eeb39db3",
      "parents": [
        "a81a88597138de226da88fe10456d46289107e8a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 19 15:27:26 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 19 15:27:26 2012 -0800"
      },
      "message": "fix a typo in SINC resampler that prevented tracks to be mixed\n\nwe were always erasing the current mix instead of mixing into it.\n\nChange-Id: Ib229245f9e5a0d384f1727640a59e9f0469211a2\n"
    },
    {
      "commit": "c45128af9231a6e26c4deef798b79e74e4fad904",
      "tree": "cef13b83707e9d7ed208f6486768c6f666cafdd9",
      "parents": [
        "7aeff3f2197de81271c3e5547486f3407be56182"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 12:47:55 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 19 11:25:58 2012 -0800"
      },
      "message": "Clean up channel count and channel mask\n\nChannel count is uint32_t.\nRemove redundant mask parameter to AudioTrack::createTrack_l()\n    and AudioRecord::openRecord_l().\n\nChange-Id: I5dc2b18eb609b2c0dc3091994cbaa4628062c17f\n"
    },
    {
      "commit": "7aeff3f2197de81271c3e5547486f3407be56182",
      "tree": "ca07944b333958597df5c497404c71fff44ecff7",
      "parents": [
        "645f38376b042759ee3cfe78b7e97a6867b65814",
        "a204922b4c04633a4e9896db3c40763bcf921ade"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 15:47:51 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 16 15:47:52 2012 -0800"
      },
      "message": "Merge \"\"if\" statements use curly braces per media style\""
    },
    {
      "commit": "645f38376b042759ee3cfe78b7e97a6867b65814",
      "tree": "88190ed6c2d46ade289508d8af6be29104bb229c",
      "parents": [
        "0dec3d6af5ad8783149134e594aadbe5dc339b4d",
        "b59a5026ecdb3dc283c448e5bbd51b1c6d42b946"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 15:38:29 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 16 15:38:30 2012 -0800"
      },
      "message": "Merge \"Fix time vs. bytes units bug in getRenderPosition\""
    },
    {
      "commit": "0dec3d6af5ad8783149134e594aadbe5dc339b4d",
      "tree": "a27c2f5104000d2c4759edb35a02eea3a0e835f2",
      "parents": [
        "7f1a70a4b15b35830d3c2fc38b129957be58754b",
        "d7101432aa28f18b1510d9c186a27eecbeba46b2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 15:23:42 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 16 15:23:42 2012 -0800"
      },
      "message": "Merge \"Don\u0027t use control block frame count after create\""
    },
    {
      "commit": "d7101432aa28f18b1510d9c186a27eecbeba46b2",
      "tree": "a799279d37072b0e69dc7438f0541b3810a766da",
      "parents": [
        "991012a8b887455cb44df782c49c610bb7cf9ec7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 13:42:25 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 15:01:47 2012 -0800"
      },
      "message": "Don\u0027t use control block frame count after create\n\nThis is part of a series to clean up the control block.\n\nChange-Id: I7f4cb05aef63053f8e2ab05b286d302260ef4758\n"
    },
    {
      "commit": "a204922b4c04633a4e9896db3c40763bcf921ade",
      "tree": "051a027c4fdc83ba3556546e9ced29709debb375",
      "parents": [
        "991012a8b887455cb44df782c49c610bb7cf9ec7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 22 17:21:07 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 14:32:45 2012 -0800"
      },
      "message": "\"if\" statements use curly braces per media style\n\nChange-Id: I130e7849fd1da7a0b7fe56c3c53919d26e3843b8\n"
    },
    {
      "commit": "411e447c4b90298f5ff635429c53f94fbce4fff9",
      "tree": "619602572b958b64fbd8a7b2a25fd96381b0885b",
      "parents": [
        "991012a8b887455cb44df782c49c610bb7cf9ec7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 02 10:00:06 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 14:26:21 2012 -0800"
      },
      "message": "Don\u0027t explicitly log tid\n\nIf needed, it can be obtained with adb logcat -v threadtime\n\nChange-Id: I91b3911d20f7bcfc3361db4052db21ff9181f1cf\n"
    },
    {
      "commit": "b59a5026ecdb3dc283c448e5bbd51b1c6d42b946",
      "tree": "454298a29609412d67b0de92d25a7c757675bf27",
      "parents": [
        "3c81bfb86cfa2b0bae4fea41cc26e3ce50af8517"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 12:01:44 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 14:16:15 2012 -0800"
      },
      "message": "Fix time vs. bytes units bug in getRenderPosition\n\nRename correctLatency since it requires thread to be locked.\nUse size_t for byte and frame counts.\n\nChange-Id: I178fdd18bdb823813b9563927bdff8c0d28ca5a5\n"
    }
  ],
  "next": "35436ad21902edf83e3c1307b45b38d13137d31c"
}
