)]}'
{
  "log": [
    {
      "commit": "2662ac9220c9e07cd343e78bf3a0c21ca3e4ffd1",
      "tree": "35ef8577dcf4d7b411a4944654ee01d7a544f1ee",
      "parents": [
        "18910b47dfaba1b9ef830687ad19b0db764c944e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 30 10:59:30 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:31:00 2012 -0700"
      },
      "message": "Update audio comments\n\nChange-Id: Ie7504d0ddb252f7e4d4f99ed0b44cfc7b1049816\n"
    },
    {
      "commit": "7f7d27eb0ee5dc7b0f52dd2c89791d14bfe82f29",
      "tree": "2dbe613d3b8eb996496eb8d8b8e2f89d439b78e4",
      "parents": [
        "f351faed1f54aac8a06b6685dc77a7764d7cf543"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 02 16:37:07 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:18:16 2012 -0700"
      },
      "message": "Remove dead code\n\nRecordThread::isValidSyncEvent() returns false, so most of\nRecordThread::setSyncEvent() is never executed.\n\nChange-Id: I0cf848beb46a367a45126d2df3073c5afa2ca59c\n"
    },
    {
      "commit": "f351faed1f54aac8a06b6685dc77a7764d7cf543",
      "tree": "7e4161d4030b94fb864eb126f3488e7d0a8331b6",
      "parents": [
        "9f6f0a7eb1d7f2c35f3547779364a1a8d6d4a24c",
        "fc7992bd8220824f1404c0c54ac516d9e28b58c2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:05:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 15:05:01 2012 -0700"
      },
      "message": "Merge \"Move libnbaio out of AudioFlinger\" into jb-mr1-dev"
    },
    {
      "commit": "fc7992bd8220824f1404c0c54ac516d9e28b58c2",
      "tree": "972da8ca10068930ebb465a72c76be69a0ca6a79",
      "parents": [
        "6db33a9272da8f011be1c51675220b81655fd470"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 29 11:10:32 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 10:53:37 2012 -0700"
      },
      "message": "Move libnbaio out of AudioFlinger\n\nlibnbaio is now a separate shared library from AudioFlinger, rather\nthan a static library used only by AudioFlinger.\n\nAudioBufferProvider interface is now also independent of AudioFlinger,\nmoved to include/media/\n\nChange-Id: I9bb62ffbc38d42a38b0af76e66da5e9ab1e0e21b\n"
    },
    {
      "commit": "a1e4e309e9a32afa3a26576fa592789168db182e",
      "tree": "e30c5038742fb20d603dccd1cfc4c059486cdde8",
      "parents": [
        "2863918926c82d6002de160c9d499be9b6a3856e"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 28 13:38:23 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 30 09:50:42 2012 -0700"
      },
      "message": "Camera2: Require 2 JPEG thumbnail resolutions.\n\nInclude (0,0) as a required thumbnail resolution, to allow turning off\nthumbnails.\n\nChange-Id: I3c4efe2d6a4f576a11ce5b75a3d573812a100b80\n"
    },
    {
      "commit": "2863918926c82d6002de160c9d499be9b6a3856e",
      "tree": "0472a1111aec68c9cd0dbf7a1dad647156af1e44",
      "parents": [
        "177bd3489e73ed86cf47c485c88292bf399bd48a"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 28 11:34:14 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 30 09:50:42 2012 -0700"
      },
      "message": "Camera2: Move preview callback processing to its own thread.\n\nTo reduce delays for HAL callbacks, manage preview callbacks in their\nown thread.\n\nBug: 6243944\nChange-Id: I7bef56949ac889ffce4e031bf40291a771a46f3e\n"
    },
    {
      "commit": "177bd3489e73ed86cf47c485c88292bf399bd48a",
      "tree": "e5b2620d301ffe78c86026d0cb5317778f020f61",
      "parents": [
        "8408eac568a981dee551cda99306038d7066b8b3"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 28 01:25:43 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 30 09:50:41 2012 -0700"
      },
      "message": "Camera2: Move still capture processing to separate thread.\n\nTo avoid stalling HAL when it queues up new buffers for still capture,\nprocess still captures in a separate thread. Also move Camera2Heap to\nits own class so it can be used by the CaptureProcessor.\n\nBug: 6243944\nChange-Id: Id38e2a52367c0985812fcd4fd9af3ef90beef43f\n"
    },
    {
      "commit": "a16733eeb9c40db4793bec408f29b4204e5f23b1",
      "tree": "2d6be1f74599089be1d4d778d02c45c50eec8494",
      "parents": [
        "2e19c3c02957208371cdd491e6342ea7ddb440d9"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 27 23:41:56 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 28 14:45:07 2012 -0700"
      },
      "message": "Camera2: Factor out FrameProcessor.\n\nMove FrameProcessor to its own file, add necessary interfaces to\nCamera2Client.\n\nBug: 6243944\nChange-Id: I8d1b8280a65d2822461ebe6b6c9de17992b34276\n"
    },
    {
      "commit": "2e19c3c02957208371cdd491e6342ea7ddb440d9",
      "tree": "ba960541c34212c11b10980f06e3afec8af35968",
      "parents": [
        "2352a815fe99a00702dd00c5d1c6cfdfadba10fd"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Sun Aug 26 09:29:28 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 28 01:29:02 2012 -0700"
      },
      "message": "Camera2: Factor out Camera2Client::Parameters\n\nMove the parameter structure and the various utility methods using it\nto its own class. Rename LockedParameters to SharedParameters to match\nthe Mutex naming convention.\n\nAlso move CameraMetadata to camera2 directory for organization.\n\nNo functional changes.\n\nBug: 6243944\nChange-Id: Ie60b535936ecfda9bf23361d52604abf515c83d0\n"
    },
    {
      "commit": "f17b6cf6aa7548ca82e7fed96d71db7821103e57",
      "tree": "708a7173885143204487ce9b3b32d08df88ab34a",
      "parents": [
        "c8474b68e435cd840ba66791fb09e3da59f1d93c"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Sat Aug 25 17:12:18 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 27 09:56:20 2012 -0700"
      },
      "message": "Camera2: Fix metering/focusing region coordinates, minor bugs\n\n- Use active pixel array-based coordinates instead of the normalized\n  camera API coordinates for ae/awb/af regions\n- Fix calculation of UV stride for YV12 format\n\nBug: 6243944\nChange-Id: I80cbd989858b0a3cb75c6f536c145e16e44fdb25\n"
    },
    {
      "commit": "c8474b68e435cd840ba66791fb09e3da59f1d93c",
      "tree": "7c5ee6a72015cd28d37e9f564ac0f3a625a2a609",
      "parents": [
        "cab96a4a7a2900fa991ab77ae45ba8d4be97e054"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Aug 24 16:30:44 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 27 09:56:08 2012 -0700"
      },
      "message": "Camera2: Move frame processing to its own thread.\n\nTo avoid blocking the HAL on possibly long-running binder calls,\nmove frame receiption and processing to its own thread.\n\nBug: 6243944\nChange-Id: I6385be4410b2f68e2331755027afc10c342187cf\n"
    },
    {
      "commit": "cab96a4a7a2900fa991ab77ae45ba8d4be97e054",
      "tree": "3622d5ac476753b4771d63dbd80a15e26f419dea",
      "parents": [
        "690921927f289da73556ea71c28981194af8ffcd"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Aug 24 11:29:22 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 27 09:14:50 2012 -0700"
      },
      "message": "Camera2: Use CameraMetadata wrapper class.\n\nWrap the use of the camera_metadata library inside a CameraMetadata\nclass to avoid memory leaks, improve code clarity, and increase type\nsafety.\n\nBug: 6243944\nChange-Id: I90ca592b5875e27e4c58ea1ca680582dc3c3b56a\n"
    },
    {
      "commit": "0c676cd04ff15cc7eacf6144b4aead6deaccf60c",
      "tree": "aa78389096aa639ab092b38eb2e58db1a2971567",
      "parents": [
        "30e65e7e2ec01e13e45b5e38552a34d2fbb3f866"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 22 09:27:41 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 22 09:28:22 2012 -0700"
      },
      "message": "Make tee sink compile OK again\n\nChange-Id: Ie865ceeabaeb698a62c11eac9f96e303c44c28ae\n"
    },
    {
      "commit": "30e65e7e2ec01e13e45b5e38552a34d2fbb3f866",
      "tree": "f028cfdc6fc9d8309a5ba1cb0cb6eb020bbc3964",
      "parents": [
        "76dc8dacbb3e2a8c91cb526293270f9093cf8f8b"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 21 13:30:45 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 21 17:45:25 2012 -0700"
      },
      "message": "Camera2: Replace MediaConsumer with BufferItemConsumer.\n\nGet rid of MediaConsumer, which was largely duplicated code, and\nreplace it with the simpler BufferItemConsumer.\n\nBug: 6243944\nChange-Id: I242d80c5fe39f2ee581ec8bb46f362997d994b0a\n"
    },
    {
      "commit": "76dc8dacbb3e2a8c91cb526293270f9093cf8f8b",
      "tree": "7d74c6729903711a4506d0cef8eadc252bccf5c6",
      "parents": [
        "cd3ed11664d16939f1f5763a896d7fc75dd3642e"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 21 16:09:31 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 21 17:41:13 2012 -0700"
      },
      "message": "Camera2: Ignore NOT_FOUND errors for face detect mode on frame receipt.\n\nReduce log spamming due to incomplete implementations.\n\nChange-Id: I6eb9d657591bd5f1476dd8c96e4a00b8a03e2a5e\n"
    },
    {
      "commit": "228a53805808a24cb19fcf13b1f0bdc2ed89bbe1",
      "tree": "96b41c80d1080b83e286d450daf161782fe66627",
      "parents": [
        "3cc89794d92b833feff15ca76dfa196cc886e43f"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 13 12:16:06 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 20 16:08:00 2012 -0700"
      },
      "message": "Camera2: Add support for preview callbacks\n\n- Move camera overall state enum to be part of parameters\n- No longer use ICameraLock to guard access to overall state enum\n- Add callback flag management\n- Add callback stream and management\n\nBug: 6243944\n\nChange-Id: Ideb3dc523a23c05e440e429ebf838b1900a96573\n"
    },
    {
      "commit": "3cc89794d92b833feff15ca76dfa196cc886e43f",
      "tree": "d9b54775638b0b4c6aec370485c9bc7f62e14244",
      "parents": [
        "ce088d274b4530fb813a030216d675b0e7262711"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 16 16:03:59 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 16 17:11:01 2012 -0700"
      },
      "message": "Camera2: Fix SCENE_MODE\n\nNow can set scene mode back to auto.\n\nBug: 7001465\n\nChange-Id: Ia25ba54d13de662bef5bf79957987513a7313c18\n"
    },
    {
      "commit": "8ce89d9e2b132bf58a030acec88acf0a998926a1",
      "tree": "00a9c5d1799d3ef29365c5c5596797dadf09a079",
      "parents": [
        "93b68548124ec9b01b9bf4ddf010afa06a503547"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Aug 10 08:40:26 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 14 11:31:27 2012 -0700"
      },
      "message": "Camera2: Skeleton for output frame processing, plus face detect\n\n- Plumbing for processing output metadata frames from the HAL\n- Support for passing face detection metadata from said frames\n  to the application.\n- Switch calls on ICameraClient interface to use separate mutex to\n  avoid deadlock scenarios with messages being communicated from the\n  HAL to the camera user while calls from the user to the service are\n  active.\n\nBug: 6243944\n\nChange-Id: Id4cf821d9c5c3c0069be4c0f669874b6ff0d1ecd\n"
    },
    {
      "commit": "106e8a42038f9e90d5ff97f8ab6f1a42258bde9e",
      "tree": "af631b5e756cf711d5d9d34db2dffe02cf64e7e3",
      "parents": [
        "0dbb356050d0db9e0043dd43045c1864a933332b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 02 13:37:12 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:38:18 2012 -0700"
      },
      "message": "const methods\n\nChange-Id: I92e32ee16274c032c9d0ce910676be2a7fa52471\n"
    },
    {
      "commit": "0dbb356050d0db9e0043dd43045c1864a933332b",
      "tree": "4fe3b2ab60f96691faaaf50f163c92946954e6de",
      "parents": [
        "d23eedca9b5a1812891c05d89850ab7ee707040d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 02 16:36:50 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:35:47 2012 -0700"
      },
      "message": "Simplify AudioFlinger::PlaybackThread::isValidSyncEvent()\n\nChange-Id: I3e4af69b929d4ca04afaac26c7e41c89fce25b9c\n"
    },
    {
      "commit": "d23eedca9b5a1812891c05d89850ab7ee707040d",
      "tree": "9f0c4309ded6a390c49bbe70590ea568a7167307",
      "parents": [
        "a959904968f1d300fe86334bf5099ae2dc39ee28"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 02 13:35:47 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:31:55 2012 -0700"
      },
      "message": "Discard setSyncEvent() return value\n\nsetSyncEvent() returns a status_t which is sometimes ignored.\nEmphasize this is intentional by casting to void.\n\nChange-Id: Ic614988347cba36bd2504d7ad321594a355b0d9d\n"
    },
    {
      "commit": "a959904968f1d300fe86334bf5099ae2dc39ee28",
      "tree": "bf95afcaab7a56642d1bf6b88ad2699eeaf5af04",
      "parents": [
        "bd828233d3eda966bf7145108dde74616abd97fb",
        "3ed292031dc50c56110cdadb1e3778117e3be76a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:30:17 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 13 11:30:17 2012 -0700"
      },
      "message": "Merge \"Replace hard-coded \"2\" by a constant and comment\" into jb-mr1-dev"
    },
    {
      "commit": "fcfc61da927e98d18cdcb53da8fa0a8a32ee1422",
      "tree": "7dd8aadcffc35c98504f35d69fe467c0a8e8f397",
      "parents": [
        "7edbacf24e60c01e2d3b10715ec8f9cc2f55c11a",
        "ff4c64d6b1b58494a1b15f1a664e5c421d095d15"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Aug 10 12:44:02 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 10 12:44:02 2012 -0700"
      },
      "message": "am ff4c64d6: am c64a1787: Merge \"Fix initialization of audio mixer track resources for MIPS.\"\n\n* commit \u0027ff4c64d6b1b58494a1b15f1a664e5c421d095d15\u0027:\n  Fix initialization of audio mixer track resources for MIPS.\n"
    },
    {
      "commit": "603b12efa16e7afb4e6c75f6b353216c83e8e135",
      "tree": "feb2ae7d5cfc866f62c331db8bc7b63c766b4065",
      "parents": [
        "174181eec57c963a2a17bd156d81c3f18b3ba75c"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 08 09:25:58 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Aug 10 09:24:52 2012 -0700"
      },
      "message": "Camera2: Swap AF notification order, minor bug fix.\n\nIn continuous AF modes, when an AF trigger/cancel is received in the\nmiddle of a passive AF scan, we want to send both an AF move stop\ncallback and an AF done callback. Swap the order of sending to\nsimplify life when the app just wants to pay attention to the AF done\ncallback during an active AF trigger.\n\nBug: 6243944\nChange-Id: I127d1675bc37ef828ef89c70b8cfab75f9428a2f\n"
    },
    {
      "commit": "174181eec57c963a2a17bd156d81c3f18b3ba75c",
      "tree": "9eea6b8bf3577f1f24d80b5d37d714fe6374a734",
      "parents": [
        "a59bf2c58311dfc28f46220383d66869e8f3f57f"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Aug 03 13:53:39 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Aug 10 09:19:18 2012 -0700"
      },
      "message": "Camera2: Add trigger support, and implement autofocus\n\n- Add skeletons for all triggering actions into Camera2Device\n- Add support for AF triggers to HAL\n- Add support for AF notifications from HAL\n\nBug: 6243944\nChange-Id: I21025440849ae41f7083e1dcb72c99f8e5b2d5f7\n"
    },
    {
      "commit": "31d377b7622279034326fbd8b9803a738a39fb30",
      "tree": "e9bec6bf0588eb4fbb68a84a0a7720d20e90001c",
      "parents": [
        "9352d1168c09903d4ea27b695ef683316c544ae5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Aug 09 17:43:46 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Aug 09 17:46:53 2012 -0700"
      },
      "message": "Update state only if calls to native window are successful\n\nChange-Id: I7a20f3ca787e11ca9c8c904b257e3c8a4e529136\n"
    },
    {
      "commit": "3ed292031dc50c56110cdadb1e3778117e3be76a",
      "tree": "7aee0b1a5f518733eebcca574807d4de62066c06",
      "parents": [
        "0d27c65ddb5c968baa6db0c26e80f5c451bc52bc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 07 15:24:44 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 09 15:34:46 2012 -0700"
      },
      "message": "Replace hard-coded \"2\" by a constant and comment\n\nBug: 6679403\nChange-Id: I6c2701f9afedc26540dfad0b4e23348bbc4cb01a\n"
    },
    {
      "commit": "0d27c65ddb5c968baa6db0c26e80f5c451bc52bc",
      "tree": "62cdadd7e272d5f5f5f187767984ecb0c12b5080",
      "parents": [
        "e983aa4ff4d80af7702888e230b9aaa93a7b7e57"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 07 10:38:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 08 14:28:42 2012 -0700"
      },
      "message": "Tune the overrun correction\n\nThe new overrun correction is: if the previous write() cycle time is \u003c\n50% of expected, then sleep enough extra to make the total cycle time \u003d\n95% of expected.  This should help compensate for HAL implementations\nthat have uneven cycle times due to sample rate conversion.\n\nBug: 6881638\nChange-Id: I5ab58afdfceee7ac523177f021fbf62d743d571a\n"
    },
    {
      "commit": "2c3b2da3049627264b7c6b449a1622f002210f03",
      "tree": "f99fadbfef22ff3b7709a505623371c22e39566c",
      "parents": [
        "ee578c0330319f04a48bccbdb26b53fea0388d04"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Aug 02 17:08:54 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Aug 08 11:28:15 2012 -0700"
      },
      "message": "AudioFlinger: fix timed audio\n\n(cherry picked from commit e20ac92c564a2f4e8123885807abdf0a78de0dd7)\n\n\u003e AudioFlinger: fix timed audio\n\u003e\n\u003e Addresses Bug 6900517.\n\u003e\n\u003e Finish up support for timed audio in the new FastMixer world.  Pay special\n\u003e attention to remaining lock-less and voluntary yield free on the FastMixer\n\u003e thread.  This fixes audio playback for Q on JB.\n\u003e\n\u003e Change-Id: Iaf815e58a1b1d0a0190051794bec8dc5c9231785\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: I9bd687acc345a05867af48e71116690fdb0ce1b5\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "ee578c0330319f04a48bccbdb26b53fea0388d04",
      "tree": "883382e0eabdcdff6c04a7df4b50d9cebffaf1c7",
      "parents": [
        "d8f178d613821c3f61a5c5e391eb275339e526a9"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Jul 23 17:05:46 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Aug 08 11:28:15 2012 -0700"
      },
      "message": "AudioFlinger: Better handling for master volume/mute\n\n(cherry picked from commit 93d906837e0e89aa1d9c913ab2b531b809f9bb9e)\n\n\u003e AudioFlinger: Better handling for master volume/mute\n\u003e\n\u003e Changes to address bug 6842827.\n\u003e\n\u003e When a HAL is loaded, cache whether or not the HAL supports\n\u003e set_master_volume/mute in the AudioHwDevice structure.  Store an\n\u003e AudioHwDevice in AudioStream(In|Out) structures instead of just an\n\u003e audio_he_device_t.  This give threads (PlaybackThreads in\n\u003e particular) access to the cached capabilities.\n\u003e\n\u003e When setting master volume/mute, change the system to always set the\n\u003e setting on all HAL which support it and also to set the setting on all\n\u003e PlaybackThreads.  Change PlaybackThreads to apply the setting at the\n\u003e in SW mix stage of the pipeline if its assigned HAL does not support\n\u003e the setting, or to ignore the setting of the assigned HAL does support\n\u003e it.\n\u003e\n\u003e Change-Id: Ia14137a30b4c3ee6f2d7ddcc8cba87bf5eec87f4\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: Icb6bc13764e100a2003eb1dee2231132ab287d98\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "d8f178d613821c3f61a5c5e391eb275339e526a9",
      "tree": "93038d06c70535eeebc364e9f86cedbec074802c",
      "parents": [
        "3478eaa23c19dbbe473be70e8f3cc0c904d2465c"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Jul 20 14:51:35 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Aug 08 11:28:15 2012 -0700"
      },
      "message": "Change audio flinger to user HAL master mute if available\n\n(cherry picked from commit 91de9b56282d126ffb36344266af5fee3cefcfdd)\n\n\u003e Change audio flinger to user HAL master mute if available\n\u003e\n\u003e Hand merge from ics-aah\n\u003e\n\u003e \u003e Change audio flinger to user HAL master mute if available: DO NOT MERGE\n\u003e \u003e\n\u003e \u003e Replicate the pattern used for HAL master volume support to make use\n\u003e \u003e of master mute support if the HAL supports it.  This is part of the\n\u003e \u003e change needed to address bug 6828363.  Because of the divergences\n\u003e \u003e between ICS and master, this change will need to be merged by hand.\n\u003e \u003e\n\u003e \u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\u003e \u003e Change-Id: I6d83be524021d273d093bcb117b8f2fe57c23685\n\u003e\n\u003e Change-Id: I32280582905c969aaec2bb166ec5c61df82d737a\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: I5cd709187221d307fe25c5117ccaadca5f6b197b\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "97197157cf619fb716710eb67915fdfa93502750",
      "tree": "2226298f6d10b7744b1808308a89b77f03653e3e",
      "parents": [
        "8da4cd7d706d9f551bf2d08cd8b61907a10cd38d"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 06 14:25:19 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 06 14:27:11 2012 -0700"
      },
      "message": "Camera2: Reduce redundant device dumpsys\n\nBug: 6243944\nChange-Id: Ifdc15ee62156a7adfd133f0d0d8b772dd1e9d5a3\n"
    },
    {
      "commit": "8da4cd7d706d9f551bf2d08cd8b61907a10cd38d",
      "tree": "d859052f6839fedf654ce8cea7dea2d567ad710f",
      "parents": [
        "d9f0253353db0b859c0ca2b32eddc24e3e9d4d86"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Aug 04 19:58:07 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Aug 04 20:46:14 2012 -0700"
      },
      "message": "Fix a deadlock in commandSetVideoBufferCountL()\n\no The lock to be acquired in recordingEnabled() has aleady been acquired in sendCommand()\n  before the call to commandSetVideoBufferCountL().\n\nChange-Id: I664d51ef449c9eb3576d5d56f73f29c98444ff3f\n"
    },
    {
      "commit": "160d4af9d933fe9461bb213e5876fc5c8c2178c2",
      "tree": "b69bfc44345106f724d8fe5febd48762720fe164",
      "parents": [
        "36cdfb185877a7f573621d19ed2b2e1cac13d62e"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Aug 03 09:40:16 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Aug 03 14:31:38 2012 -0700"
      },
      "message": "Camera2: Add notification handling skeleton.\n\nWire up skeleton methods for handling all currently defined\nnotifications.\n\nBug: 6243944\nChange-Id: I84b3f60111416ba6fbcdb086f1310225142e2b70\n"
    },
    {
      "commit": "36cdfb185877a7f573621d19ed2b2e1cac13d62e",
      "tree": "dbb4713666c0f6cd1de3b1400325fada0fe05c1d",
      "parents": [
        "983cf231ab2d176a14595cdae46ff1b0c239af47"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 02 17:34:15 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 02 17:49:48 2012 -0700"
      },
      "message": "Camera2: Break out individual commands\n\n- List all commands that need implementing in sendCommand\n- Write skeleton methods for each one\n- Implements playRecordingSound command\n- Partially implements enableShutterSound command\n\nBug: 6243944\nChange-Id: I7866df75adca09483f407d3a4f630e847dbc7721\n"
    },
    {
      "commit": "983cf231ab2d176a14595cdae46ff1b0c239af47",
      "tree": "01942a13a082e2116f8df5dbaca1a902ac52a299",
      "parents": [
        "15d7245ed2193e4956ea87998321cbc16a3b0a46"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Aug 01 16:39:55 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Aug 02 17:06:05 2012 -0700"
      },
      "message": "Dynamically configure the number of video buffers used by camera source, if supported\n\no related-to-bug: 6920805\n\nChange-Id: I413bb50954cc84e32ed40bcb713842dc7b58e2b6\n"
    },
    {
      "commit": "15d7245ed2193e4956ea87998321cbc16a3b0a46",
      "tree": "18f36b8fc450f4a0784bade5771b5bc20fbe9c94",
      "parents": [
        "1bf1c000be916b5e3388ef9039beedda01fa2bdd",
        "d6f8e08a9ca7f2fe41717acd351426a7ecb0c175"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 02 17:01:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 17:01:07 2012 -0700"
      },
      "message": "Merge \"Camera2: Fix exposure compensation step value.\" into jb-mr1-dev"
    },
    {
      "commit": "1bf1c000be916b5e3388ef9039beedda01fa2bdd",
      "tree": "d45f3a7e978671fe9097bc93f8c8ff42693bee0a",
      "parents": [
        "4a76bcea7a23356185c4fa9491d5a73256b80cd0",
        "750d74b0b64470dccdb7310bf33e0d0e582f2059"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 02 17:00:19 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 17:00:20 2012 -0700"
      },
      "message": "Merge \"Camera2: Minor logging updates.\" into jb-mr1-dev"
    },
    {
      "commit": "4a76bcea7a23356185c4fa9491d5a73256b80cd0",
      "tree": "ff109075175e3c1a8200fea09b2d3b28129ad21f",
      "parents": [
        "ac9b96003da5dad9ae6fc8d054d7b24ef24693fe",
        "3a609147811105d40766f8f8f5904bf71cb123cb"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 02 16:59:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 02 16:59:41 2012 -0700"
      },
      "message": "Merge \"Camera2: Check PIDs to ensure camera exclusive access.\" into jb-mr1-dev"
    },
    {
      "commit": "d6f8e08a9ca7f2fe41717acd351426a7ecb0c175",
      "tree": "721dabfcc1ce1ea6dba72ce475e8940965a274be",
      "parents": [
        "750d74b0b64470dccdb7310bf33e0d0e582f2059"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 02 16:00:35 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 02 16:51:48 2012 -0700"
      },
      "message": "Camera2: Fix exposure compensation step value.\n\nFix floating-point divide error.\n\nChange-Id: I61b140c1090d6773b9b530d19a2ec03cf784b85e\n"
    },
    {
      "commit": "750d74b0b64470dccdb7310bf33e0d0e582f2059",
      "tree": "b03bcb7d01335be267b46e1851e5e0c392fff4d9",
      "parents": [
        "3a609147811105d40766f8f8f5904bf71cb123cb"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 01 09:05:04 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 02 16:51:48 2012 -0700"
      },
      "message": "Camera2: Minor logging updates.\n\nImprove double-verbose logging, report a few more errors/startup\nconditions.\n\nBug: 6243944\nChange-Id: I2e814f786b35f57b63220d1b7c39f39cb6c3ace3\n"
    },
    {
      "commit": "3a609147811105d40766f8f8f5904bf71cb123cb",
      "tree": "27cc2e751e60d6daf4960efe47a3bc035376887c",
      "parents": [
        "428b77a2b94b74665a47375b3fdb893b98d71269"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 31 14:36:26 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Aug 02 16:51:48 2012 -0700"
      },
      "message": "Camera2: Check PIDs to ensure camera exclusive access.\n\nBug: 6243944\nChange-Id: I4b36af2c92b7266a4aa896a2b048c56b6406cb9a\n"
    },
    {
      "commit": "3c0a0e8541846427db0587c2fffb90f60ee680b0",
      "tree": "5ec5cfb29970fe635f34145ba9642f96fd91e9b7",
      "parents": [
        "ffd99cb795c92caee7f4bd0b26af9ae37b100fc3"
      ],
      "author": {
        "name": "Paul Lind",
        "email": "plind@mips.com",
        "time": "Wed Aug 01 18:49:49 2012 -0700"
      },
      "committer": {
        "name": "Paul Lind",
        "email": "plind@mips.com",
        "time": "Wed Aug 01 18:49:49 2012 -0700"
      },
      "message": "Fix initialization of audio mixer track resources for MIPS.\n\nThe value 1 \u003c\u003c 32 (maxNumTracks defaults to 32) is surprisingly not defined\nin C, and differs on MIPS than the other arch.\n\nTherefore the track resources were not initialized properly, resulting\nin failure to play any audio.\n\nThe fix allows the mConfiguredNames bitmask to be correctly set to all\n1\u0027s in the 32-track case, for all arch.\n\nChange-Id: Ied3e1305952e9567602e2cd76c5ef3acb0809ee0\nSigned-off-by: Paul Lind \u003cplind@mips.com\u003e\n"
    },
    {
      "commit": "9007619d1f786a75dae0fff31feadbf9aed9cfb8",
      "tree": "dd3f273e129ea9864e87d4df79eb78dab157744e",
      "parents": [
        "44cda3a4e7ca3de0db9cb49145def3803b03ebb4",
        "35f859b338c0922094ecfc37fb8157530df6b305"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 01 16:15:35 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 01 16:15:36 2012 -0700"
      },
      "message": "Merge \"Shutter sound is heard at the end of the recorded video\" into jb-mr1-dev"
    },
    {
      "commit": "35f859b338c0922094ecfc37fb8157530df6b305",
      "tree": "62fc06cc2c07cd7e7a559f0f3b744ce30a24fdd1",
      "parents": [
        "25f0d7ba1987de61c75f8c68b19de48e0ad9736c"
      ],
      "author": {
        "name": "Patric Frederiksen",
        "email": "patric.frederiksen@sonymobile.com",
        "time": "Tue Jul 10 13:38:35 2012 +0200"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 01 15:54:55 2012 -0700"
      },
      "message": "Shutter sound is heard at the end of the recorded video\n\nOn fast hardware, which is more common, the shutter sound is\nplayed and recorded before video recording is stopped.\n\nBefore we call play shutter sound before calling stop recording.\nWith this fix we call play shutter sound after calling stop recording.\n\nChange-Id: I06a3e65fd2700f1d2457fea5ff0f64500eac436f\n"
    },
    {
      "commit": "44cda3a4e7ca3de0db9cb49145def3803b03ebb4",
      "tree": "2ed0b1d13971820bd5dcd80ece0f7ab05150e2a8",
      "parents": [
        "3788a393bbcadebf38ac01ef9b2ecc46f07db011"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 01 09:40:18 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 01 10:46:10 2012 -0700"
      },
      "message": "Don\u0027t wait for presentation complete if terminated\n\nChange-Id: Ia04cf6c620693457dca87b4ffea5dd0fe71efdce\n"
    },
    {
      "commit": "5665fde6d4520c8e6cec81a4e1e9c86f1537f689",
      "tree": "774c48425035787b816a743cefd39ba86d1a2145",
      "parents": [
        "428b77a2b94b74665a47375b3fdb893b98d71269",
        "510a3d6b8018a77683dac466127ffd0af34bef6e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 01 09:48:26 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 01 09:48:27 2012 -0700"
      },
      "message": "Merge \"Start adding support for multiple record tracks\" into jb-mr1-dev"
    },
    {
      "commit": "510a3d6b8018a77683dac466127ffd0af34bef6e",
      "tree": "1f3410b20a4dcbe77dd9b40800bdd569ceaff384",
      "parents": [
        "25f0d7ba1987de61c75f8c68b19de48e0ad9736c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 14:24:34 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 01 09:11:11 2012 -0700"
      },
      "message": "Start adding support for multiple record tracks\n\nReplace single mTrack by vector mTracks.\nDestroy record tracks similarly to playback tracks.\nDump all record tracks, in addition to the active record track.\n\nChange-Id: I503f10b51928b6b92698fe1c51a9ddd3215df1f4\n"
    },
    {
      "commit": "428b77a2b94b74665a47375b3fdb893b98d71269",
      "tree": "63a1133d9c9d92592786a3d0680ac197f14daab8",
      "parents": [
        "836b81f3c5a5bacb800f698f90ded6bd6e6bc5ce"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Jul 30 09:55:30 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 31 14:53:42 2012 -0700"
      },
      "message": "Camera2: Improve formatting of debugging dump\n\nBug: 6243944\nChange-Id: Id8730357f3adcd96923132f9f702e296e0dfd357\n"
    },
    {
      "commit": "836b81f3c5a5bacb800f698f90ded6bd6e6bc5ce",
      "tree": "f3a29d05d3d6c8b49a46887a20d268641419e48e",
      "parents": [
        "25f0d7ba1987de61c75f8c68b19de48e0ad9736c"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 27 11:35:21 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 31 14:53:42 2012 -0700"
      },
      "message": "Camera2: Improve threading safety\n\nMerge mutex lock for accessing internal parameters with the parameter\nstructure, forcing a lock to be held before the parameters can be accessed.\n\nBug: 6243944\nChange-Id: I86e44f395de0d80ff7c3ff3530f25b60015512d2\n"
    },
    {
      "commit": "0ec23ce0d1ff79566c402bc30df3074f6e25a22b",
      "tree": "8925eca2b9f4b9bccb7fa4d032ab80070179912d",
      "parents": [
        "e4e2a37dbe2a4d923232305549101f779a2e3638"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 12:56:08 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:54:48 2012 -0700"
      },
      "message": "Clean up start() parameters\n\nDocument where int is used instead of AudioSystem::sync_event_t\n  (probably because of a header file dependency).\nTrackBase::start() and RecordTrack::start() don\u0027t need default parameters.\n\nChange-Id: I82f4a4d078be900f3aa4bd926697e32f5ed68ec8\n"
    },
    {
      "commit": "e4e2a37dbe2a4d923232305549101f779a2e3638",
      "tree": "7038669149e9478745fbb5e05f320cee8fd5cb88",
      "parents": [
        "3dca4c7a5622fc6aa03397d749c4b4c1201cc4f3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 23 12:55:09 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:49:58 2012 -0700"
      },
      "message": "Extract methods to enter standby and standby mode\n\nAlso move initial standby from to threadLoop to avoid a race condition.\n\nChange-Id: I65afca83c36fb41b983b3b1d3dab35d4029560e3\n"
    },
    {
      "commit": "28567defef0ba95cb38f2d80eba30b01db207a77",
      "tree": "4a8ca4bafe5e754fe76266c0a947de84624d94f7",
      "parents": [
        "82f517ba654ca4891b82ebe604dbd004b66a7b2d",
        "803cbf6190f16f7b2c43cbc51d0df21ec888abdd"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 25 16:09:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 25 16:09:34 2012 -0700"
      },
      "message": "Merge \"Camera2: Use more buffers for video encoding.\""
    },
    {
      "commit": "82f517ba654ca4891b82ebe604dbd004b66a7b2d",
      "tree": "3f4daa2e10e5bd1c69f6b0de86b5227ee8f728fe",
      "parents": [
        "0a7af18d0308295405491f86603e3d119450aba0",
        "78822d73af1e7f6b8b297fc7f98ef7f8257cc10a"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 25 16:08:39 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 25 16:08:40 2012 -0700"
      },
      "message": "Merge \"Camera2: Revamp recording support to allow opaque formats.\""
    },
    {
      "commit": "803cbf6190f16f7b2c43cbc51d0df21ec888abdd",
      "tree": "59dfc0f1cadc394645ee8bd0547aebf4a8c28604",
      "parents": [
        "78822d73af1e7f6b8b297fc7f98ef7f8257cc10a"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 25 15:23:36 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 25 15:23:36 2012 -0700"
      },
      "message": "Camera2: Use more buffers for video encoding.\n\nTo avoid starvation, set the number of simultaneously available buffers\nto the encoder to 8.\n\nBug: 6243944\nChange-Id: I6d0e9f3c0426d62d374c0ae0d427bf5189141adf\n"
    },
    {
      "commit": "0a7af18d0308295405491f86603e3d119450aba0",
      "tree": "bed6e2fe6df1d948db29bc84ff5d0a3bee02d6a6",
      "parents": [
        "58e5aa34f01d663654d8bafad65db1dda42161ff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 16:09:19 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:48:11 2012 -0700"
      },
      "message": "Use valueAt instead of editValueAt when possible\n\nChange-Id: I885b169f4b176a6b5c2ca9a534214b4ffff1700e\n"
    },
    {
      "commit": "58e5aa34f01d663654d8bafad65db1dda42161ff",
      "tree": "706a80113457f48feae3eab9f8720bcc3da2b397",
      "parents": [
        "1d491ff06f4b9c90ff24fe953b90d0843eaf1c04"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 20 14:08:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:43:19 2012 -0700"
      },
      "message": "effect_descriptor_t const correctness\n\nChange-Id: Iad008f20d35a18acf500f773900164552fd0c19e\n"
    },
    {
      "commit": "1d491ff06f4b9c90ff24fe953b90d0843eaf1c04",
      "tree": "006faa29a2ad0ca2ea18c8e876c43749d72d138d",
      "parents": [
        "bf5bea96f236adb5eef78c2f414ef82b3602a0f7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 14:28:13 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:41:03 2012 -0700"
      },
      "message": "Fix races in AudioRecord stop()\n\nChange-Id: Id0ac1915f57fef4a938c7f90989c1162a8b6c51c\n"
    },
    {
      "commit": "78822d73af1e7f6b8b297fc7f98ef7f8257cc10a",
      "tree": "bb28c6e7d7affcf849f862c42c6664fc67eefd81",
      "parents": [
        "bf5bea96f236adb5eef78c2f414ef82b3602a0f7"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 18 17:52:18 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 24 16:59:22 2012 -0700"
      },
      "message": "Camera2: Revamp recording support to allow opaque formats.\n\n- Avoid memcpy of buffer data by using metadata mode\n- Temporarily add MediaConsumer BufferQueue class\n\nBug: 6243944\nChange-Id: I7a8c4222b7dbd14f1b1d86fda06d38eb640e87c1\n"
    },
    {
      "commit": "69d799679c8c0308e42057e7b5ad63a7ae806480",
      "tree": "fd433daeb23326b7818031fcca0f8b87f77dbc3e",
      "parents": [
        "f1b3ee26cafc80900bae681bddf47446a6a3733f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 14:02:22 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 23 10:56:34 2012 -0700"
      },
      "message": "Use upmix/downmix utility routines\n\nChange-Id: I9ae2ec938fb695ec576ea008a42205325af7bbf1\n"
    },
    {
      "commit": "e78d5c7bfda1e80223436df3faeb4a9e2e719bcf",
      "tree": "6aa675b9bac094a8af8f7d5b7a931c0c2c21f6d9",
      "parents": [
        "789e325341e73743630f45e92b77d07e31c3957e",
        "2267106c98f461b730c772a913da946c391a178c"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 18:39:32 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 18:39:33 2012 -0700"
      },
      "message": "Merge \"Camera2: Stop preview: Wait until HAL is drained\""
    },
    {
      "commit": "789e325341e73743630f45e92b77d07e31c3957e",
      "tree": "f1212122587a95153efd013b483cceb1ca1618ca",
      "parents": [
        "afa1669ef8b3cf172a695f8959d94849cb9f7195",
        "9e4c3db01ba4eb1e5acbed113f78a31374900df6"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 18:39:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 18:39:22 2012 -0700"
      },
      "message": "Merge \"Camera2: Add more verbose logging\""
    },
    {
      "commit": "afa1669ef8b3cf172a695f8959d94849cb9f7195",
      "tree": "51ff5a99dcc7d91d53dbcab1a3d857d1fe19dc74",
      "parents": [
        "f5545b962794b78a97cafa73d0b592f55ffe06d8",
        "898a9a9b867e5d209671feee4c92266f90a55aa3"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 18:38:59 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 18:39:00 2012 -0700"
      },
      "message": "Merge \"Camera2: Fix recording bugs\""
    },
    {
      "commit": "2267106c98f461b730c772a913da946c391a178c",
      "tree": "64c4fe71a71405291467077ddceda6df768d2d92",
      "parents": [
        "9e4c3db01ba4eb1e5acbed113f78a31374900df6"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 18:30:37 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 18:30:37 2012 -0700"
      },
      "message": "Camera2: Stop preview: Wait until HAL is drained\n\nOnce camera returns from stopPreview, all preview activity needs to\nhave stopped. So wait until that\u0027s true.\n\nBug: 6243944\nChange-Id: Ifa6cf171bd69015883e26dafb1e49e5ac098025a\n"
    },
    {
      "commit": "e65c89113232d070dd9153c54ca19301bca7a162",
      "tree": "09997cb32d82da8d2549044a95eb31c8c35cf39d",
      "parents": [
        "76da2635edbe0e6d023c665d5c344a3b7e070d73"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 20 15:57:23 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 20 15:57:23 2012 -0700"
      },
      "message": "fix audio effect not destroyed when needed.\n\ncommit a5f44eba contained an error which made that audio effect\nmodules where not destroyed but left in the destroyed state\nrendering them unuseable after being released.\n\nBug 6805168.\n\nChange-Id: Ia4e683b3c970ffd01846c482fde73d799ff219de\n"
    },
    {
      "commit": "33e6e35b03a726e35203e97550f32154c91d5f13",
      "tree": "2648568f97f1b3f13335a044d267caa15d1d4e78",
      "parents": [
        "cd2d61016527bf48bd2e9a920bb3fdbb875eb3e4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 15:56:57 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 12:33:33 2012 -0700"
      },
      "message": "Miscellaneous audio record fixes\n\nCall AudioSystem::stopInput() if exitPending() after wait() returns.\n\nAcquire lock before clearing mActiveThread.\n\nChange-Id: Ia55e4c4b3accc65ad5479cbdc094fd919152af9f\n"
    },
    {
      "commit": "cd2d61016527bf48bd2e9a920bb3fdbb875eb3e4",
      "tree": "17db61cdcaeda8479f9f523c7689727a5b979470",
      "parents": [
        "a08412711b3266d336134b16a45e98baa8d11b9d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 18 16:49:32 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 12:27:12 2012 -0700"
      },
      "message": "Use constructor to initialize instead of memcpy\n\nAlso don\u0027t check for thread parameter as it\u0027s always non-NULL\n\nChange-Id: Id23ded1370556ef3f76f81f5f0c6fa644bcba681\n"
    },
    {
      "commit": "be5f05e0fdfc4e3799653702187861a2afa072ee",
      "tree": "1cc15fea099c579aded967ec174f00307b2517eb",
      "parents": [
        "cf9465b83405a1ec26a164b079d9898c09d87fcd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 18 15:24:02 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 11:08:14 2012 -0700"
      },
      "message": "Internal dump methods return void not status_t\n\nOnly the IAudioFlinger::dump() needs to return a status_t.\n\nChange-Id: Iffeb2a7db4846df850b6b2ed960276f1fd75dba0\n"
    },
    {
      "commit": "9e4c3db01ba4eb1e5acbed113f78a31374900df6",
      "tree": "a8548d961144da923801f77ab621748530d81d22",
      "parents": [
        "898a9a9b867e5d209671feee4c92266f90a55aa3"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 11:07:52 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 11:07:52 2012 -0700"
      },
      "message": "Camera2: Add more verbose logging\n\nUntil ATRACE works in emulator, add more verbose logs to help debugging\n\nBug: 6243944\nChange-Id: Ic5fbf764f2717e5edd05d37e0f7d826f1d494179\n"
    },
    {
      "commit": "898a9a9b867e5d209671feee4c92266f90a55aa3",
      "tree": "f27edb5a194a91270307f3289fd8ef6ac392b99d",
      "parents": [
        "4865aa8a84465108e044480c1d976677f138fca6"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 11:05:20 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jul 20 11:05:20 2012 -0700"
      },
      "message": "Camera2: Fix recording bugs\n\n - Release recording stream on shutdown\n - Return recording gralloc buffers to queue when they are received by\n   camera service after recording has been stopped (which is normal\n   behavior thanks to pipeline latencies in camera pipelines)\n\nBug: 6243944\nChange-Id: Ia13a501c726613fd1e404733456dbd10d7b00132\n"
    },
    {
      "commit": "5ad92f620fbbb6a8281f10169a23d38e3601e07a",
      "tree": "c7b3d9ada1999b57f72e02e1e63ad062260d18f1",
      "parents": [
        "bb4350d3b9e9485ae59e084de270f86aecef8066"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 10:02:15 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 10:02:15 2012 -0700"
      },
      "message": "Revert 94479fd5405642c67efd14cebe722feb9cbe6e77\n\nChange-Id: I5ca78d5462badf541868785b2ba2e3f6d0cf492a\n"
    },
    {
      "commit": "bb4350d3b9e9485ae59e084de270f86aecef8066",
      "tree": "2f38f108eb3dd420695cd07cd47a55ea030d51b5",
      "parents": [
        "cb4184c917f88a3c8d70c8bc6b99fc951b11cc37"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 15:56:38 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 09:05:12 2012 -0700"
      },
      "message": "Use audio_devices_t more places\n\nChange-Id: Id0ace02ca6f480a6c46e11880acf6cdc66d83184\n"
    },
    {
      "commit": "ea682976030a3930f6ee49b33b7e21abfc68174a",
      "tree": "24bb02a54f694b57a7c7b2d30c5f7e9949c6e6cf",
      "parents": [
        "a189a6883ee55cf62da1d7bf5bf5a8ab501938a4",
        "f5926136ad328e95a79336b051d6f853443eaab9"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 17 14:13:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 17 14:13:34 2012 -0700"
      },
      "message": "Merge \"CameraService: Add more information to service dump.\""
    },
    {
      "commit": "f5926136ad328e95a79336b051d6f853443eaab9",
      "tree": "196d7d93abbd276f70839291eb711094d345f8c7",
      "parents": [
        "dcda3b325f465aa6ec2be11db1c56c8a5e867f33"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 17 13:54:20 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 17 13:54:20 2012 -0700"
      },
      "message": "CameraService: Add more information to service dump.\n\nAdd dumpsys information even when there\u0027s no active client. Including:\n- Camera module version / name / author\n- Number of camera devices\n- Static information for each device\n\nChange-Id: Ib97e325f6be5f989b342d24f1ae17aa9e796f8ed\n"
    },
    {
      "commit": "a189a6883ee55cf62da1d7bf5bf5a8ab501938a4",
      "tree": "7ab4133c0ce507e289baacf76d745de27f9e8136",
      "parents": [
        "28b76b334f92a15a2be3cc9e2f7d229a3275d1ac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 20 12:16:30 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 11:35:16 2012 -0700"
      },
      "message": "Use struct assignment instead of explicit memcpy\n\nfor POD structs effect_descriptor_t and effect_config_t\n\nChange-Id: Ib2fc47f85fb65ed91b0abb1f87217c49b5eb571d\n"
    },
    {
      "commit": "fd4e20c226eca185fc789de761beae64855bfbbb",
      "tree": "7f752ff15fa1f70181281b5dad8c7c987c559b60",
      "parents": [
        "d96c5724818fb47917bb5e7abe37799735e1ec0e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 04 11:51:12 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 16:49:01 2012 -0700"
      },
      "message": "Run audio at priorities 2 and 3 above kernel 1\n\nAlso run the watchdog at same priority as the fast mixer.\nrequestPriority() originally used only the caller\u0027s pid to decide which\ncgroup to assign, but in the future it might look at the priority also.\nSo it\u0027s safer to use same priority as the fast mixer to be sure we\nrun in the same cgroup.\n\nBug: 6461925\nChange-Id: Ia59c93e4b22dacbb6746bfa6ad491be7b72f2b8d\n"
    },
    {
      "commit": "d96c5724818fb47917bb5e7abe37799735e1ec0e",
      "tree": "e7cc73da27068c8c770e53fe0ed00bf7276aea5f",
      "parents": [
        "dcda3b325f465aa6ec2be11db1c56c8a5e867f33"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 25 13:44:49 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 11:57:11 2012 -0700"
      },
      "message": "Don\u0027t call virtual methods in destructor\n\nThe result of calling virtual methods from a destructor is undefined.\n\nChange-Id: I0fd4a19626e5ae564a60b753315b5f6c4b8d1f2c\n"
    },
    {
      "commit": "1ea6d23396118a9cfe912b7b8a4e6f231e318ea2",
      "tree": "31327ae0fe7ad1e34a3766bf6246c26752704ce7",
      "parents": [
        "68337edf595a0c345ba4b8adcd4f1e541a1d7eb7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 14:31:33 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 16:35:52 2012 -0700"
      },
      "message": "Use atomic ops for thread suspend count\n\nThere was a theoretical but unlikely race if two binder threads\nexecuted suspend() or restore() concurrently.  Also added comments.\n\nChange-Id: I0908acc810b83bdd66455b27ca3429de1662a2cd\n"
    },
    {
      "commit": "9cca4c6d976d2d4127286e9eaa54d1b99880c25c",
      "tree": "47231eca97c6ad4f51f32247f61bd863078bfa51",
      "parents": [
        "04cd0186305e2b59d23c9147787046c6662029cc"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jun 15 15:41:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 13 12:31:01 2012 -0700"
      },
      "message": "Camera2: Add recording support\n\n- Support startRecording/stopRecording\n- Support lock/unlock/connect\n- Some rearrangement of class definitions for clarity/consistency\n\nBug: 6243944\n\nChange-Id: I00c600a798572d2f69bb3f2bab3d79e4bd9a91e5\n"
    },
    {
      "commit": "1879fff068422852c1483dcf8365c2ff0e2fadfc",
      "tree": "f374fae563e2854ce20b4da16e9cae0d883aecd7",
      "parents": [
        "bf04a5d7f287fc712e0ed91849dc85c90c1e182d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 11 15:36:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 13:43:08 2012 -0700"
      },
      "message": "Add tid parameter to IAudioFlinger::openRecord\n\nNot yet implemented\n\nChange-Id: I35523fb15ad71727ecc9f4bb870f07e4b7397dc4\n"
    },
    {
      "commit": "bf04a5d7f287fc712e0ed91849dc85c90c1e182d",
      "tree": "f9fd2ffd8df5a02c9c9373f5362da76204e5a676",
      "parents": [
        "39c54f68804c1ce5c85ec588f3c2c63447a807b4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:07:11 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:36:34 2012 -0700"
      },
      "message": "Simplify AudioRecord::getInputFramesLost()\n\nThis also fixes a benign race in reading mActive without a lock.\n\nChange-Id: I19e953d4f275e5c266ca1ca3fece7b6c02ad1707\n"
    },
    {
      "commit": "39c54f68804c1ce5c85ec588f3c2c63447a807b4",
      "tree": "04b272355171e4dbfbc95652c477011264ad1518",
      "parents": [
        "4fe1ec4f40b58abff6cec147aa786cb65698161a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 09:12:23 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 11 09:02:23 2012 -0700"
      },
      "message": "Remove dead code\n\nChange-Id: If22a6c4e572b0734eba0c5a7ce29a2c61c581e5d\n"
    },
    {
      "commit": "4fe1ec4f40b58abff6cec147aa786cb65698161a",
      "tree": "6e289895d6a4daf62862422798a5b954c99ed5df",
      "parents": [
        "04270daf50f0c602d7c57a257a693e68246cbeb7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 27 16:33:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 11 09:00:45 2012 -0700"
      },
      "message": "Fix check for invalid channel count\n\nChange-Id: Id9e3dce0e3d5971786212d3f70e17a17e32ce92b\n"
    },
    {
      "commit": "04270daf50f0c602d7c57a257a693e68246cbeb7",
      "tree": "bebd6ac579df8b08aca04b61b2292c42c9b6aefc",
      "parents": [
        "254af180475346b6186b49c297f340c9c4817511"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 12:55:49 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 15:51:29 2012 -0700"
      },
      "message": "Record overflow cleanup\n\nAdd comments and rename one method for clarity\n\nChange-Id: I04a9147e46e88a072256c0211b112d52202419e2\n"
    },
    {
      "commit": "254af180475346b6186b49c297f340c9c4817511",
      "tree": "bee0e313aaa97645167e86f4678e513ab38d1c99",
      "parents": [
        "4d2132c866228eaef563e8141ebf06aa25ee9ff7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 14:59:05 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 10:05:31 2012 -0700"
      },
      "message": "Use audio_channel_mask_t more places\n\nUse it in AudioSystem::getOutput(), AudioSystem::getInput(),\nIAudioPolicyService::getOutput(), IAudioPolicyService::getInput(),\nand various other places in AudioFlinger.\n\nNot done: AudioTrack and OutputDescriptor.\n\nChange-Id: I70e83455820bd8f05dafd30c63d636c6a47cd172\n"
    },
    {
      "commit": "4d2132c866228eaef563e8141ebf06aa25ee9ff7",
      "tree": "1f1a46a174ec55ea2cf8fa468048fd585514da0e",
      "parents": [
        "2df8f55055fe431a508148cf525df1ba40f03113",
        "cec4abb2a39eafa75cf6894170a200322aa7226e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 10 09:46:45 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 10 09:46:45 2012 -0700"
      },
      "message": "Merge \"audio policy: fix delayed command insertion\""
    },
    {
      "commit": "2df8f55055fe431a508148cf525df1ba40f03113",
      "tree": "1ab69032f07ee78a7de0df5c64ca801744f0ca15",
      "parents": [
        "a34f8ec169986c5a28600c0decaa4e2db70df8e4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 16:46:23 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 08:38:01 2012 -0700"
      },
      "message": "Add comments on use of volatile for track count\n\nand add acquire load at the read\n\nChange-Id: Ib41a58f5b1f6af87a8bd63d3f77d2ec0e48cb479\n"
    },
    {
      "commit": "a34f8ec169986c5a28600c0decaa4e2db70df8e4",
      "tree": "d3a4830dd528dbef48be7e9f919217d69f91f269",
      "parents": [
        "9f34a36d9cdb9595c288e50ffe00da038bc8abb9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 12:57:49 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 08:34:14 2012 -0700"
      },
      "message": "Remove \u0027volatile\u0027 from mMute and add comments\n\nChange-Id: I386ba27b2305a397aba70331c6bf0d35ea727cf6\n"
    },
    {
      "commit": "9f34a36d9cdb9595c288e50ffe00da038bc8abb9",
      "tree": "6b7e7720d4856de8d88b44f5eae3f62993761b2e",
      "parents": [
        "7d6c35bf132a46c0a8a9826491882495fc98bd8c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 20 16:46:41 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 08:28:31 2012 -0700"
      },
      "message": "Whitespace and indentation\n\nChange-Id: I424052b4ff9218147a5cfc8e6dcd67fe8105d229\n"
    },
    {
      "commit": "7d6c35bf132a46c0a8a9826491882495fc98bd8c",
      "tree": "75860c2ae1264af58a4ee7e849ce982a9d00f486",
      "parents": [
        "a51b4acf038ecd7728a98b85749eefc165aa358a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 12:45:10 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 08:25:35 2012 -0700"
      },
      "message": "Move constant initializations from onFirstRef() to constructor\n\nChange-Id: I57f55b0bd1edee105c58c3a055f95f1e4a2c9646\n"
    },
    {
      "commit": "a21795c5d1d4ca9a6361e4b2db3e1f053e67b1c9",
      "tree": "8052661f7b84736d863a553b4c3e0037729363e9",
      "parents": [
        "ffb829430ff20ccd6c13e6ed894f2373b2d93939"
      ],
      "author": {
        "name": "Patric Frederiksen",
        "email": "patric.frederiksen@sonymobile.com",
        "time": "Tue Jul 10 13:38:35 2012 +0200"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Tue Jul 10 13:41:23 2012 +0200"
      },
      "message": "Shutter sound is heard at the end of the recorded video\n\nOn fast hardware, which is more common, the shutter sound is\nplayed and recorded before video recording is stopped.\n\nBefore we call play shutter sound before calling stop recording.\nWith this fix we call play shutter sound after calling stop recording.\n\nChange-Id: I06a3e65fd2700f1d2457fea5ff0f64500eac436f\n"
    },
    {
      "commit": "6648821933dc06c0b09ab2c8b32135edddcd4291",
      "tree": "7f39b4c3e3fdb1376a6cb3d0f8007bc3eaaf2fda",
      "parents": [
        "94479fd5405642c67efd14cebe722feb9cbe6e77"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 12:57:20 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 17:06:27 2012 -0700"
      },
      "message": "AudioFlinger::getBuffer() always returns non-NULL\n\nChange-Id: I543d3db507597cacbfdad5d9ea71732137fe54fb\n"
    },
    {
      "commit": "94479fd5405642c67efd14cebe722feb9cbe6e77",
      "tree": "c316a649b478f44addc797a8d41cbcc370933397",
      "parents": [
        "01542f2704f39956da09ae2840e192dab760091f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 15:39:54 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 15:39:54 2012 -0700"
      },
      "message": "Fix build\n\nRevert after system/core audio_devices_t is submitted\n\nChange-Id: I5a8ee1a7b711e834501e927f41c62efa6a6600b6\n"
    },
    {
      "commit": "cec4abb2a39eafa75cf6894170a200322aa7226e",
      "tree": "12acac661f194a4b56553c25abf7cc3c73f43281",
      "parents": [
        "2c75ef40330522fb50bbd7a0aa105573355b323c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 03 12:23:02 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 09 13:55:08 2012 -0700"
      },
      "message": "audio policy: fix delayed command insertion\n\nWhen inserting a delayed command in the audio policy service\ncommand thread queue, later similar commands are filtered out.\nIn case of volume commands and delayed unmuting, this can cause\na problem where a new volume command can cause the timing of a\ndelayed unmuting command to not be honored.\n\nThis change makes that a volume command gets the time stamp of\nany delayed command it replaces.\n\nBug 6720482.\n\nChange-Id: I216f85ac0ea46e4a046d3483e9e9b7ffe6c34a08\n"
    },
    {
      "commit": "01542f2704f39956da09ae2840e192dab760091f",
      "tree": "596fdb0f5c6a2e9490db1bc87e4c65d028849ba3",
      "parents": [
        "c1dae24a08b67b98e18e4239d4f3a74d600d353c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 12:46:15 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 12:11:09 2012 -0700"
      },
      "message": "Only write to mDevice once\n\nThis fixes a bug where readers might see intermediate values.\nAlso add comments about how mStandby and mDevice are used.\n\nChange-Id: Idc84e56c21381a45137a2ca5ff9c57d437201869\n"
    },
    {
      "commit": "c1dae24a08b67b98e18e4239d4f3a74d600d353c",
      "tree": "d0923bff8eb16c7b060a37379dc2fc9a298e8554",
      "parents": [
        "2c75ef40330522fb50bbd7a0aa105573355b323c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 13:13:53 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 16:25:07 2012 -0700"
      },
      "message": "Remove debug code HAVE_REQUEST_PRIORITY and SOAKER\n\nChange-Id: I73a2afe72d8acb53e57e6b4e6fb5133e22b7875a\n"
    },
    {
      "commit": "a5f44ebaf58911805b4fb7fb479b19fd89d2e39b",
      "tree": "8221f3963c5be8d22bde7c3afdf98c1654333950",
      "parents": [
        "dd8104cc5367262f0e5f13df4e79f131e8d560bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 25 11:38:29 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 03 11:35:41 2012 -0700"
      },
      "message": "audioflinger: fix effect disconnect deadlock\n\nFix possible deadlock when several EffectHandles on the same\nEffectModule are destroyed simultaneously:\n A wp on an EffectHandle should not be promoted to a local sp\nwith ThreadBase mutex held as the EffectHandle destructor can be\ncalled when the sp gets out of scope which will call\nThreadBase::disconnectEffect() and try to acquire the mutex.\n\nUse raw pointers instead of weak pointers for the list of handles\non an EffectModule.\n\nBug 6679606.\n\nChange-Id: Ice8b602fb03a7d363c44ce3dced8a53540d96270\n"
    },
    {
      "commit": "dd8104cc5367262f0e5f13df4e79f131e8d560bb",
      "tree": "46c95f24576ec352d7d5d363606db9a46a44e9c3",
      "parents": [
        "f1da96d8cf60842538e00a9c950cc451f7da2c10"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 12:42:44 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 10:24:45 2012 -0700"
      },
      "message": "Use audio_channel_mask_t more consistently\n\nIn IAudioFlinger::createTrack() and IAudioFlinger::openRecord(),\ndeclare input parameter to use correct type audio_channel_mask_t.\n\nIn IAudioFlinger::getInputBufferSize(), input parameter is now channel mask\ninstead of channel count.\n\nRemove unused IAudioFlinger::channelCount(audio_io_handle_t).\n\nIn AudioRecord::getMinFrameCount() and AudioSystem::getInputBufferSize(),\ninput parameter is channel mask instead of channel count.\n\nChange-Id: Ib2f1c29bea70f016b3cfce83942ba292190ac965\n"
    },
    {
      "commit": "f1da96d8cf60842538e00a9c950cc451f7da2c10",
      "tree": "b64f770259b25809f5fa1820a686f1cafb8de0e1",
      "parents": [
        "415fa7599f48494f99206b8d6e1974abb52c5923"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 16:10:16 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 10:22:13 2012 -0700"
      },
      "message": "Remove longStandbyExit\n\nIt was never set (the assignment was within an \"if\" that was never true).\n\nChange-Id: I01cc68e9df6b190eece621b2aa9858b4361880ce\n"
    },
    {
      "commit": "415fa7599f48494f99206b8d6e1974abb52c5923",
      "tree": "3cfdad6a05f9bece6cefc1bcaffc4f0a81f577c8",
      "parents": [
        "d5903ec1332630f2992a6f0d5ca69d13a185c665"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 16:11:18 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 10:18:11 2012 -0700"
      },
      "message": "Fix uninitialized field EffectModule::mPinned\n\nAlso mark EffectModule::mId and EffectModule::mSessionId const, and\ndocument the initialization of other fields in EffectModule.\n\nChange-Id: Ic1ca008e75e9b5924743ffc35bef80057f3a0669\n"
    }
  ],
  "next": "d5903ec1332630f2992a6f0d5ca69d13a185c665"
}
