)]}'
{
  "log": [
    {
      "commit": "5bbd4b4f5fc19302fa017ad6afee6eb2d489d91a",
      "tree": "2bc118a5ef332003cc7f6791968076c48b3cf84b",
      "parents": [
        "9e6d4b035d4f012d23264d3d2bc946b1ca02dba1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 19:28:00 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 20:11:12 2012 -0700"
      },
      "message": "Get alias for Bluetooth devices.\n\nBluetooth devices can be renamed by the user.  Make the\ninput system aware of the user-specified name and transparently\npass it down to applications.  This enables the keyboard\nlayout picker Settings UI to use device names that are\nconsistent with what the user set in the Bluetooth UI.\n\nBug: 6363157\nChange-Id: I8eea26ce2c69c2a3f09c8de02e9e847610e0419c\n"
    },
    {
      "commit": "9a2bbf680e3b5b98051b9f2913ab6bd31b77f79a",
      "tree": "0e6d9dc80e52a02873462a0e051e34fd6f657bbc",
      "parents": [
        "f35ea5d25b286e166bdc43a589a45b56b6358499"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 18 14:09:10 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 18 15:01:57 2012 -0700"
      },
      "message": "Improve handling of certain keyboard layout properties.\n\nAutomatically choose a default value for the \u0027number\u0027 property\nbased on the characters that the key can generate.\n\nDon\u0027t generate any character when ctrl, alt or meta is\npressed unless the behavior exactly matches the modifier keys\nthat are pressed.\n\nSimplified the basic keyboard layouts taking into account the\nnew features.\n\nBug: 6110399\nChange-Id: Ibc0f0b50c2dcf3f962a33ac77c24d2993b77637d\n"
    },
    {
      "commit": "6957b60378597ee5bffd9ac125cd8aff1142664f",
      "tree": "550b41abc78665e1a2c4257cced3dc3e5c3ba9b5",
      "parents": [
        "62d52f9ff8b57fcd5f7fc6e2373ec5851eb80757",
        "4a3862f6b0a8971b6ab5b1c46735b28e7604d0db"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 19:21:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 19:21:34 2012 -0700"
      },
      "message": "Merge \"Add Dvorak keyboard layout.\""
    },
    {
      "commit": "4a3862f6b0a8971b6ab5b1c46735b28e7604d0db",
      "tree": "4091176054868659d2fa6bec36540f56c08bd116",
      "parents": [
        "6ec6f79e1ac1714e3b837796e99f07ff88f66601"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 18:50:05 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 18:50:05 2012 -0700"
      },
      "message": "Add Dvorak keyboard layout.\n\nAdded support for mapping both scan codes and HID usages to\nKeyLayoutMap and KeyCharacterMap.  Keyboard overlays can\nnow influence how key events are mapped to key codes.\n\nBug: 6110399\nChange-Id: I6619fd2d3e1337c55928f89869dbc45b535c7ccf\n"
    },
    {
      "commit": "420489ca1f92b290f4737fb675bfd3db9cdbed29",
      "tree": "f77b82c1d51a6ef84858397b29cdd494949f1f72",
      "parents": [
        "4db3ca7f814c54ca80211053c583df5163237a60",
        "6ec6f79e1ac1714e3b837796e99f07ff88f66601"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 17:59:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 17:59:03 2012 -0700"
      },
      "message": "Merge \"Support loading keyboard layout overlays from resources.\""
    },
    {
      "commit": "6ec6f79e1ac1714e3b837796e99f07ff88f66601",
      "tree": "02aa55617bfa6dd2eb0bec29156e279c8afaaa0d",
      "parents": [
        "a3bc565882dd3984e995363642b1295fe3d24d10"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 16:52:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 17:56:32 2012 -0700"
      },
      "message": "Support loading keyboard layout overlays from resources.\n\nAdded the concept of a keyboard layout overlay, which is\na key character map file that has \"type OVERLAY\".\n\nAdded support for loading keyboard layout overlays from\nresources dynamically.  The layouts are reloaded whenever they\nare changed in the Settings application or an application\nis installed.  This is somewhat more aggressive than necessary\nso we might want to optimize it later.\n\nBefore system-ready, the input system uses just the generic\nkeyboard layouts that are included on the device system image.\nAfter system-ready, it considers the user\u0027s selected keyboard\nlayout overlay and attempts to load it as necessary.  We need to\nwait until system-ready before doing this because we need to\nbe in a state where it is safe to start applications or access\ntheir resources.\n\nBug: 6110399\nChange-Id: Iae0886d3356649b0d2440aa00910a888cedd8323\n"
    },
    {
      "commit": "3844067c3c6cca954250a734d8bd8dad673bb846",
      "tree": "62bf68255ea257d145358d498b0b1ea4752ea4fc",
      "parents": [
        "87459dbc595100f345cadb480afaa98eb07c7445",
        "a6d62b76ad8f09bd677fa115fbb71fdae2510552"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Apr 17 12:08:25 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 17 12:08:25 2012 -0700"
      },
      "message": "am a6d62b76: am 4f998a1e: am fd862e98: Add header for forward compatibility\n\n* commit \u0027a6d62b76ad8f09bd677fa115fbb71fdae2510552\u0027:\n  Add header for forward compatibility\n"
    },
    {
      "commit": "fd862e9828d544f593a622f2914d1257366ae802",
      "tree": "6236131fe9b1e6a5c82a8dbaee355806c6a8230e",
      "parents": [
        "3d7f0cb3d9724eb4a45611127e0986538e838964"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Apr 17 10:45:52 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Apr 17 10:56:17 2012 -0700"
      },
      "message": "Add header for forward compatibility\n\nChange-Id: I6e3da852d50fc14cfb6fb50f7dd867f37daea19d\n"
    },
    {
      "commit": "a47425a13c19f95057df78b8bb65bb25657e8753",
      "tree": "675c0d6bf611f2427bb3d11315d410bf9087b20a",
      "parents": [
        "c2346134bb519a54d50655cbef940fc3fdec60a9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 04:09:27 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 17:01:15 2012 -0700"
      },
      "message": "Add support for input devices that have vibrators.\n\nAdded a getVibrator() method to InputDevice which returns a Vibrator\nassociated with that input device.  Its uses the same API as the\nsystem vibrator which makes it easy for applications to be modified\nto use one or the other.\n\nBug: 6334179\nChange-Id: Ifc7f13dbcb778670f3f1c07ccc562334e6109d2e\n"
    },
    {
      "commit": "af9e8d38184c6ba4d2d3eb5bde7014a66dd8a78b",
      "tree": "50cf9dd27d673bc5b3f75e6e18e9577873eecd6c",
      "parents": [
        "cc1169831921d9295b2fc01c1eaf7e9b00836f53"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 17:32:48 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 18:54:54 2012 -0700"
      },
      "message": "Notify applications when input devices change.\n\nThis change allows the InputManager to keep track of what input\ndevices are registered with the system and when they change.\nIt needs to do this so that it can properly clear its cache of\ninput device properties (especially the key map!) when changes\noccur.\n\nAdded new API so that applications can register listeners for\ninput device changes.\n\nFixed a minor bug in EventHub where it didn\u0027t handle EPOLLHUP\nproperly so it would spam the log about unsupposed epoll events\nuntil inotify noticed that the device was gone and removed it.\n\nChange-Id: I937d8c601f7185d4299038bce6a2934fe4fdd2b3\n"
    },
    {
      "commit": "3d7f0cb3d9724eb4a45611127e0986538e838964",
      "tree": "76bd9d03c494a61de6677c0c53c002509e35643e",
      "parents": [
        "544f89aece46e8f4bbe4eed93116c8736e68ac07"
      ],
      "author": {
        "name": "Teng-Hui Zhu",
        "email": "ztenghui@google.com",
        "time": "Thu Apr 12 09:57:04 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Apr 12 10:59:57 2012 -0700"
      },
      "message": "Update header for forward compatibility\n\nChange-Id: Idf38142dc073dce14741e8da005e7d2eaf9242de\n"
    },
    {
      "commit": "49ccac530b5a798e3c4a79b66b51b8546a0deed1",
      "tree": "0b25fa1110effb7e8aa46905928b0b159daa96ab",
      "parents": [
        "db13a6bf788cc48af86c8acf6f74b416dfd84199"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 11 18:27:33 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 11 20:28:09 2012 -0700"
      },
      "message": "Refactor key code mapping.\n\nAdded handling for EV_MSC / MSC_SCAN which typically reports\nthe HID usage associated with a key.  This will enable key maps\nto map keys with HID usages that Linux does not natively recognize.\n\nRemoved keyCode and flags fields from EventHub RawEvent since\nthey don\u0027t necessarily make sense in isolation now that we\npay attention to HID usage codes too.\n\nRemoved the fallback code for mapping keys and axes.  In practice,\nan input device should be self-sufficient.  We should not ever\nneed to look at the built-in keyboard\u0027s key map.  In fact, there\nusually isn\u0027t a built-in keyboard anyhow.  This code was originally\nworking around a problem where we weren\u0027t loading the key map\nfor touch screens with virtual keys, which has long since been fixed.\n\nChange-Id: I0a319bdec44be9514f795526347397e94d53a127\n"
    },
    {
      "commit": "7b6a75872bd2df96a23453d31c2e2e7fcc373554",
      "tree": "4ef0ab122aa11dc7b039693cfce420b8be063996",
      "parents": [
        "d1f3de40ba50f0a3c4545139ea57242612f52971"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 11 14:32:02 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 11 14:32:02 2012 -0700"
      },
      "message": "Pass width/height parameters to webview\n\nWhen webview draws into an fbo layer, it needs to know the\nsize of that surface to create the rendering transform appropriately.\nThis change copies in the current viewport size to the structure that\nis passed to the webview.\n\nChange-Id: I7160b0836d00834134c799c95a439cdc045e2035\n"
    },
    {
      "commit": "9f25b7fdf216c9ef0bd2322cd223eeaf0d60f77f",
      "tree": "b0b509a261874435cab3f5f1a727c02b399bd91c",
      "parents": [
        "54ae14749bc7f9e73cfda35a8b49f9efa80a77fb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 14:30:49 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 18:23:58 2012 -0700"
      },
      "message": "Request key maps from input manager service.\n\nInstead of each application loading the KeyCharacterMap from\nthe file system, get them from the input manager service as\npart of the InputDevice object.\n\nRefactored InputManager to be a proper singleton instead of\nhaving a bunch of static methods.\n\nInputManager now maintains a cache of all InputDevice objects\nthat it has loaded.  Currently we never invalidate the cache\nwhich can cause InputDevice to return stale motion ranges if\nthe device is reconfigured.  This will be fixed in a future change.\n\nAdded a fake InputDevice with ID -1 to represent the virtual keyboard.\n\nChange-Id: If7a695839ad0972317a5aab89e9d1e42ace28eb7\n"
    },
    {
      "commit": "544f89aece46e8f4bbe4eed93116c8736e68ac07",
      "tree": "87969a0b012a964d47d87d7a10d7042e52ad51d7",
      "parents": [
        "c70e89e2a024645d425b49db2bbf3f20ed68e518"
      ],
      "author": {
        "name": "Teng-Hui Zhu",
        "email": "ztenghui@google.com",
        "time": "Mon Apr 09 14:51:48 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Apr 10 07:35:54 2012 -0700"
      },
      "message": "Update SurfaceTexture interface for forward compatibility\n\nChange-Id: I32d224428c0127800714a976b4d7bb68cc7c2464\n"
    },
    {
      "commit": "e38fdfae9196afd1bdc14c5ec6c12793af1e2550",
      "tree": "54523ccf3fc36a1b50410e2cb6e6d1f7230c40cf",
      "parents": [
        "dc0dbbd4a005f16624978b95817b33156acac526"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 06 14:51:01 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 06 14:57:19 2012 -0700"
      },
      "message": "Add a unique input device descriptor.\n\nThe purpose of the input device descriptor is to make it possible\nto associate persistent settings for each input device, such as the\nkeyboard layout.\n\nThe descriptor is a hash of the information we have about the\ndevice, such as its vendor id, product id, unique id, name,\nor location.\n\nBug: 6110399\nChange-Id: Idb80f946819b3f0dbf4e661bb0a753dbc2b60981\n"
    },
    {
      "commit": "c70e89e2a024645d425b49db2bbf3f20ed68e518",
      "tree": "3c59db831a4e09010b2ecbf3142c631c229706f0",
      "parents": [
        "8ea93aa6adc0e46c8931d31d4f940cdde97c672f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Apr 03 13:53:46 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Apr 03 14:44:38 2012 -0700"
      },
      "message": "Fix hybrid build\n\nChange-Id: Ieef556473e1878d1319f9844fb0bbb974637999e\n"
    },
    {
      "commit": "56bad16f0200b7afff12fcc45c82723cf467cfee",
      "tree": "a27204dd2fab7e108e0b1920739ddee51faf8b56",
      "parents": [
        "b6a80077dca5a17f33350075485a534d7ed8fa2b",
        "7511f9cd2ff39075ff56c2558c785caffc8b4383"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 02 17:08:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 02 17:08:13 2012 -0700"
      },
      "message": "Merge \"Add Japanese specific key codes.\""
    },
    {
      "commit": "7511f9cd2ff39075ff56c2558c785caffc8b4383",
      "tree": "25f1eeba677060cfdc52fb75ea58107c0591a8b2",
      "parents": [
        "d56feb91b4b1ac9cd0e9b37dfa20d137825fbbfd"
      ],
      "author": {
        "name": "Yang Chuang",
        "email": "Yang_Chuang@asus.com",
        "time": "Fri Feb 10 15:18:26 2012 +0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 02 15:19:45 2012 -0700"
      },
      "message": "Add Japanese specific key codes.\n\nThese keys are specific to Japanese hardware keyboard which can be\nused by input method.\n\nPatch ported from AOSP, with the addition of EISU and KANA mappings.\n\nChange-Id: I647473cdd257458e3b9d134b0fc623eae946c3e0\n"
    },
    {
      "commit": "8f3b8e32993d190a26c70c839a63d8ce4c3b16d9",
      "tree": "8e49ffa8f5405f22b8bb12be9e5607ec6a0fc00a",
      "parents": [
        "e6c966caa3aff3099e6fb00caefa10387f57b9c3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 27 16:33:45 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Apr 02 15:15:07 2012 -0700"
      },
      "message": "Allow fine-grained control over functors execution\n\nAdds non-drawing execution mode\n\nChange-Id: I82f92cf1b9a3b9ff2ca6d7427c4e02b73e04e6bf\n"
    },
    {
      "commit": "4be004163071d550d72389ea1772bf6a6f95d345",
      "tree": "d874d69c8050db4f87147c8010bc30dc5ba72736",
      "parents": [
        "a00377682123de4d55927f097feffe885330451d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 28 13:57:51 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 28 13:57:51 2012 -0700"
      },
      "message": "Move services/powermanager from frameworks/base to frameworks/native\n\nMove services/powermanager into frameworks/native so audioflinger can\nuse it.  Note that this is not the same as a PowerManagerService,\nwhich is part of systemserver and handles turning the screen on and\noff, etc.  This is just a binder interface to allow taking wakelocks.\n\nChange-Id: I1142e6d9ddbb651cc19ac07d946fa24d8feed8a3\n"
    },
    {
      "commit": "d927a1d99630c05ff773f0e9e8791ca9a965e020",
      "tree": "760f8a19e317d68f937eda312efab59200880ecd",
      "parents": [
        "f9c1f9935b349fe1a3f27be4462026dd212f8b78"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 10:42:44 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 10:42:44 2012 -0700"
      },
      "message": "Deleted the media, camera, drm related files since they are relocated\n\nChange-Id: I9bc5573ee07e30b305b5b879023aa9ec69e10b91\n"
    },
    {
      "commit": "56485fe62882065688e70fcb1f4b5c3894ed2c87",
      "tree": "253c902bca219766169277bb2d27aa6135535ddf",
      "parents": [
        "994c26b2a600a5a9fb9fbada9c6299c0488ecda7",
        "6554943a1dd6854c0f4976900956e556767b49e1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 26 16:51:22 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 16:51:22 2012 -0700"
      },
      "message": "Merge \"Use a status_t return type for GL functors\""
    },
    {
      "commit": "6554943a1dd6854c0f4976900956e556767b49e1",
      "tree": "82d43bbb28af4feeb6c358077ac1083ca3598e7b",
      "parents": [
        "a9dd820184ee4d083bd9b2af735dcf50b78fc6cd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 26 16:45:05 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 26 16:45:05 2012 -0700"
      },
      "message": "Use a status_t return type for GL functors\n\nWebView needs more fine-grained control over the behavior of the\nframework upon execution of the display lists. The new status_t\nallows WebView to requests its functor to be re-executed directly\nwithout causing a redraw of the entire hierarchy.\n\nChange-Id: I97a8141dc5c6eeb6805b6024cc1e76fce07d24cc\n"
    },
    {
      "commit": "8296628ed89d98a76a904cbca53ffeb62db8bbda",
      "tree": "64b4249682259ea70326e36ad1f1b5bf00ae0081",
      "parents": [
        "b3e2e24f789d41d6c38b8ad4c252cf9f6e2122d8",
        "30b8a65c5c2b950eaa95a0ce6792a05c30c86a08"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 12:28:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 12:28:38 2012 -0700"
      },
      "message": "Merge \"mv libcpustats from frameworks/base to /native\""
    },
    {
      "commit": "30b8a65c5c2b950eaa95a0ce6792a05c30c86a08",
      "tree": "bcab87c2c2391e97f5f8d266967da50e007f6c38",
      "parents": [
        "7061b5ffb37ea15f235effa1faaf22bb1750c7f5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 12:22:57 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 12:22:57 2012 -0700"
      },
      "message": "mv libcpustats from frameworks/base to /native\n\nOK to lose history\n\nChange-Id: I05ce0452f16a396cff6e18db5424492f3a6f6861\n"
    },
    {
      "commit": "b3e2e24f789d41d6c38b8ad4c252cf9f6e2122d8",
      "tree": "3db78e2b9860b33fc0a75cdd9e3ddba2f97410db",
      "parents": [
        "61bf87428c0f3366d0c4ec203ff96331b7ec3546",
        "9b8e496f4d143280deff137c5f30ca8907bc28db"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:43:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 11:43:06 2012 -0700"
      },
      "message": "Merge \"Provisional support for secure decryption of media streams.\""
    },
    {
      "commit": "9b8e496f4d143280deff137c5f30ca8907bc28db",
      "tree": "f6136e4a5bf55c67ac721f1fc94b8d6aadc0fa6f",
      "parents": [
        "7061b5ffb37ea15f235effa1faaf22bb1750c7f5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:13:27 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:24:04 2012 -0700"
      },
      "message": "Provisional support for secure decryption of media streams.\n\nChange-Id: Ib3982a9c960bfdb0cb7e1b174440b141b194cfbe\n"
    },
    {
      "commit": "383c4b3e63b02dfb348db7504af0efefa7b6a682",
      "tree": "a175275540540538a95ebf26fbc24d75d88317a0",
      "parents": [
        "56ca534e65427bdefb7674060f5faa94539b6995",
        "f5e18125498b768d4528e4d1c19533c2b16f338b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 11:23:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 11:23:49 2012 -0700"
      },
      "message": "Merge \"reorganize SoundPool and JetPlayer code.\""
    },
    {
      "commit": "f5e18125498b768d4528e4d1c19533c2b16f338b",
      "tree": "f86eceeef1fbda2032eb708de15aa15ee37dc4a6",
      "parents": [
        "9321ad6a7567a28116f15240688d474993539922"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 10:47:22 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 10:54:41 2012 -0700"
      },
      "message": "reorganize SoundPool and JetPlayer code.\n\nReorganize SoundPool and JetPlayer code to be ready for the\ncreation of libmedia_native.\n\nSplit SoundPool between libsoundpool (JNI) and libmedia(sound pool implementation).\nRemove dependencies on nativehelper/jni.h from JetPlayer.\n\nChange-Id: I130c6014173b714329929dd82c5dfb70b757a610\n"
    },
    {
      "commit": "4acee00352b6c420f235c9b35010849ceaa9fc14",
      "tree": "7eb45d0fe52cca80b184e15b64b175a90a4a0f54",
      "parents": [
        "39581f92482e000af2fe0575843d0752d164f9ae"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 12:07:35 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 07:25:48 2012 -0700"
      },
      "message": "Add TRACK_FAST for IAudioFlinger::createTrack\n\nCurrently not implemented by client or server\n\nChange-Id: Ib11dda57db3eeb871bcc7b546e340078776875f5\n"
    },
    {
      "commit": "39581f92482e000af2fe0575843d0752d164f9ae",
      "tree": "a5e25c538fc7e781e8d9e400b94914c7c80b851f",
      "parents": [
        "9ea03b9f29f6ec28ba4ced36c84328f48828f86d",
        "84569cc4e106ff4d6c6855b46e546572c5dda6b2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 26 07:16:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 26 07:16:37 2012 -0700"
      },
      "message": "Merge \"IAudioFlinger::createTrack and openRecord flags\""
    },
    {
      "commit": "8dd6574809cc9799cf43a7349769eaeb70b63e2d",
      "tree": "8782665a58bb383829c02be1969074a8627e8226",
      "parents": [
        "23918f214435e57db8591c057afe45c371872d90"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Mar 24 15:15:01 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Mar 24 15:35:17 2012 -0700"
      },
      "message": "remove jni.h include from IOMX.h\n\njni.h is not used in IOMX.h and is not available in pdk builds,\nremove it.\n\nChange-Id: I9bc8fd70f617942712d9f684c6fc927bf18be753\n"
    },
    {
      "commit": "062ed957e0a086b70414b62529993b28072dc86c",
      "tree": "b32de670c9addff6af78aa1542ecc3e8db56603d",
      "parents": [
        "3b3a5b100b2ec63d8f6511b655c74f629b7d1981"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Mar 23 16:15:19 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Mar 24 10:15:18 2012 -0700"
      },
      "message": "Fixed missing return value from a method should have returned status_t\n\nChange-Id: I83ad2735eaf8a8dfa5f8f29f30aec1311b3222de\n"
    },
    {
      "commit": "a982dc05d7ca919c07f50e446549ef9dceadf6bd",
      "tree": "e9b0e1564069bf39447db97b966a01c6dda66609",
      "parents": [
        "54c546223cd550d2995ec6d956a8e7963311a0a6"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 22 18:43:07 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 22 18:43:07 2012 -0700"
      },
      "message": "frameworks/base: move Zip* from libandroidfw to libutils\n\nZipUtils is needed by build/tools, move it from libandroidfw\n(frameworks/base) to libutils (frameworks/native).\n\nChange-Id: I2b4b7adcdf68eb25ee7cba5dd3b69eadf0523af3\n"
    },
    {
      "commit": "bf30911bf1894506793fccea24deca2e9208b3b4",
      "tree": "a479a90fce6bee5b635f53f6215c6ae726df6893",
      "parents": [
        "b909b6a1481b9832ede549d17e2e4478bbdd2efe",
        "2333a27ee528e97400d41838696258f29aa48688"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 22 11:06:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 22 11:06:49 2012 -0700"
      },
      "message": "Merge \"Remove enforceFrameCount\""
    },
    {
      "commit": "da9deca7bab75f39a236d04b9e43d9da833ce4a0",
      "tree": "da55de4303ab3e4a2e32c70e9fc539dbc3da5745",
      "parents": [
        "222dfc784e5c5b4eb6a4770b9f46fe96eecbd65d"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 13:36:07 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Mar 22 10:06:03 2012 -0700"
      },
      "message": "Support gapless playback for mp3 and m4a\n\nGapless playback for appropriately tagged mp3 and m4a files.\nCurrently this is implemented in OMXCodec, which most players\nuse, but should be easy to support in other players as well by\nusing the SkipCutBuffer utility class.\n\nChange-Id: I748c669adc1cfbe5ee9a7dea2fad945d48882551\n"
    },
    {
      "commit": "2333a27ee528e97400d41838696258f29aa48688",
      "tree": "29f127d908ad6409920482c839cb1aaa11e32f41",
      "parents": [
        "004f9bac41e762b52e28ade469c057f6f0e833d2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 12:16:56 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 15:41:02 2012 -0700"
      },
      "message": "Remove enforceFrameCount\n\nIt was only used to decide whether to issue a warning.\nThe warning was issued the first time track was created but\nnot at re-creation.  Now it is a verbose message every time,\nnot a warning since it happens all the time with key clicks on A2DP.\n\nChange-Id: I9d39f53c0a7eb84b666e55b1b76ff830cf8f37ba\n"
    },
    {
      "commit": "3e6792232aa0ce3e650eaa03529c9eb2fe023ca9",
      "tree": "5cd926e608dbe3e3b5e1986bd48051961f29303b",
      "parents": [
        "63b9e973e53476db36eb9cb9f14f0e5c0805d0bd",
        "d0a524fb5946dbe4f27df2c235435e6f1bf805ae"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 15:12:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 15:12:44 2012 -0700"
      },
      "message": "Merge \"Add MetaData::dumpToLog\""
    },
    {
      "commit": "d0a524fb5946dbe4f27df2c235435e6f1bf805ae",
      "tree": "afc3052ec081f95b22d990bffb5aef75867fcdc3",
      "parents": [
        "8fca15f1f2273fa429e58f783d0970251d0942e5"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 12:27:00 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 15:00:27 2012 -0700"
      },
      "message": "Add MetaData::dumpToLog\n\nUtility method for dumping the content of a MetaData object to the log.\n\nChange-Id: I2d91b991e1d9fed2215e8995a73c2b1854205074\n"
    },
    {
      "commit": "32d72b2f538673466f6e0ebf01886412e803dc4f",
      "tree": "167ad9eaf5aeaf25a60ea337b89b10dca4d23e60",
      "parents": [
        "85b51b8ae39a4aa3181d92e171baa86437475c0c",
        "f743e1f6abdb018fc58c467cdf35cbb8b81cf8c4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 07:22:40 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 07:22:40 2012 -0700"
      },
      "message": "Merge \"Whitespace\""
    },
    {
      "commit": "54fa7254838748c4149f4e340f479fc4e3b2357d",
      "tree": "f97e85512bec47cbfcf5b7e6532031f59fcc447e",
      "parents": [
        "b2e822fc2ac87703ac12d062add62408574cbf7c",
        "2ed77701f908f63e072abd0e7eb1c4af61f9347f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 20 09:15:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 20 09:15:05 2012 -0700"
      },
      "message": "Merge \"Parse mp3 encoder padding/delay\""
    },
    {
      "commit": "2ed77701f908f63e072abd0e7eb1c4af61f9347f",
      "tree": "ac0d43e3863cfaa544a46c3916bfc54630319f3d",
      "parents": [
        "4fc769e9dfd1e859a960b49102e48ed9f0d8ff38"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Mar 19 13:49:43 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 20 08:46:11 2012 -0700"
      },
      "message": "Parse mp3 encoder padding/delay\n\nGet the mp3 encoder padding and delay from a XING frame or iTunSMPB tag.\n\nChange-Id: Icde598c8857d7e7c187a718f478ee9799d6a1b8a\n"
    },
    {
      "commit": "f743e1f6abdb018fc58c467cdf35cbb8b81cf8c4",
      "tree": "cc01c648f5b8b7bd10f852dde7037c98f6e0066e",
      "parents": [
        "bf02b984738f6be5cc2e2d66b12aff7af99eb79e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 12:56:26 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 17:53:33 2012 -0700"
      },
      "message": "Whitespace\n\nFix indentation, and add blank lines in key places for clarity\n\nChange-Id: I57a0a8142394f83203161aa9b8aa9276abf3ed7c\n"
    },
    {
      "commit": "84569cc4e106ff4d6c6855b46e546572c5dda6b2",
      "tree": "fe011add47cfa96d538178b429332040f9c49775",
      "parents": [
        "f6b8f7b34f5fe94cd1d8753ec356b967293f1f9c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 06 11:22:44 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 09:04:23 2012 -0700"
      },
      "message": "IAudioFlinger::createTrack and openRecord flags\n\ncreateTrack and openRecord don\u0027t need the \"old\" flags parameter,\nwhich was either audio_policy_output_t or audio_in_acoustics_t\nshifted left by 16 bits.  But they do need \"new\" flags, which\nare defined by the application use case.  Initially, the only\napplication use case flag is timed output, but others are planned.\n\nFor output, the audio_policy_output_t flags are passed to\nAudioSystem::getOutput, which returns an audio_io_handle_t, and that\nhandle is then passed to createTrack. So createTrack doesn\u0027t need the\nold flags parameter.\n\nFor input, the audio_in_acoustics_t flags are passed to\nAudioSystem::getInput, which returns an audio_io_handle_t, and that\nhandle is then passed to openRecord. So openRecord doesn\u0027t need the\nold flags parameter.\n\nChange-Id: I18a9870911846cca69d420c19fe6a9face2fe8c4\n"
    },
    {
      "commit": "b388138ff2986d6883fa9331fa91ae5e18ae81a0",
      "tree": "7120b73c65527dd77bd2c39980b8432fd97604f5",
      "parents": [
        "5fd6deb0497d6763514f125b5fde69ee4efdc3c2",
        "3fe7ee651db0aae9485ead227c89db1e24b9e245"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 17:19:25 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 17:19:25 2012 -0700"
      },
      "message": "resolved conflicts for merge of 3fe7ee65 to ics-mr1-plus-aosp\n\nChange-Id: Ia7e1cd869779e9f512e840b768f5b43992c8a122\n"
    },
    {
      "commit": "0df689495a02c4a34943330099404bd8860981c9",
      "tree": "04a6a78a88c5f7e6022b9f98727da961b040dd20",
      "parents": [
        "2b056c6e6759d63045c22556c5418a08fcb3f80c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 05 17:06:40 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 12:22:07 2012 -0700"
      },
      "message": "AudioTrack: relax check on minimum buffer size\n\nCurrent AudioTrack implementation enforces that the requested audio\nbuffer size is at least corresponding the audio latency.\nThis requirement is too strong and leads to problems with current\nstagefright and AudioSink implementations when playing over output\nstreams with long latency.\n\nUltimately, the AudioSink design should be changed to specify a minimum\nbuffer size in time or frames units but not in buffer count units.\n\nChange-Id: I8ba603956f92ac49143a8249572665aa548f2f0f\n\nConflicts:\n\n\tmedia/libmedia/AudioTrack.cpp\n"
    },
    {
      "commit": "543ec1c808e0064371cdf491bb8ff1e08134ed93",
      "tree": "0b59ae11be2b413a9a841614a3e3cb692878a137",
      "parents": [
        "c1ac23db267c0acddfeed3204c2737d110ca0ab9",
        "4280c4a93ea17f2e9d3f651e49d8c13dc3fb92aa"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 16 11:01:20 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 16 11:01:20 2012 -0700"
      },
      "message": "Merge \"If an application calls System.exit() terminate it immediately.\""
    },
    {
      "commit": "8d3c318b2d6690a156cc22ef6599a73bee7ed482",
      "tree": "ee99ea5976af25ccc213623dbc1e2424706dacd3",
      "parents": [
        "0c269766eaf702b4caeeec56739a63619fba3c93",
        "a1c41e13b521cdd611a8fc46e43b5ae0a2c00238"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Mar 15 21:23:24 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 15 21:23:24 2012 -0700"
      },
      "message": "Merge \"Add a new camera open API that allows taking the ownership.\""
    },
    {
      "commit": "4280c4a93ea17f2e9d3f651e49d8c13dc3fb92aa",
      "tree": "f77523cff7d2f3a4d55ab2b3aa1ec0841d17cb89",
      "parents": [
        "16f5f5cc9d4c480fac3dc7f176f3f1edfbd256f4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 15 17:48:02 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 15 19:59:23 2012 -0700"
      },
      "message": "If an application calls System.exit() terminate it immediately.\n\nThere is no graceful way to kill Android application processes.\nThey typically have many threads running doing various things\nWhen System.exit() is called, those threads just keep going\nwhile the cleanup actions run until the process finally.\n\nPerforming shutdown actions can easily cause more harm than good.\nFor example, closing the Binder driver\u0027s file descriptor may\ncause other threads waiting on Binder to wake up and then crash\nin nasty ways after receiving EBADF.\n\nSo when an Android application exits, skip the cleanup and just\ncall _exit() to end it all.\n\nBug: 6168809\nChange-Id: I29790c064426a0bf7dae7cdf444eea3eef1d5275\n"
    },
    {
      "commit": "4d2ece12a69da02a76b0826440ac0887dd8dc9a7",
      "tree": "91320b52545f7d0b850f691267124b6868627a39",
      "parents": [
        "e82a54aedc45ed2c06e62a14947d4f56c823221d",
        "bf4431bd936ae39c17e4fe34263d361f7f7ffc1e"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Mar 15 10:34:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 15 10:34:00 2012 -0700"
      },
      "message": "Merge \"Move CameraParameters.h to frameworks/native.\""
    },
    {
      "commit": "a1c41e13b521cdd611a8fc46e43b5ae0a2c00238",
      "tree": "48877fa91b94c62482519f040e966997a9d214d2",
      "parents": [
        "5571ffdd9d419e3b1e050501e6f8dbfb04159b5d"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Feb 23 19:01:00 2012 -0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Mar 15 14:50:48 2012 +0800"
      },
      "message": "Add a new camera open API that allows taking the ownership.\n\nThe purpose is to let face unlock always get the camera\nsuccessfully. What happened was the camera applications may\nhave opened the camera in onResume under the lock screen.\nThis API lets face unlock take the camera from the camera\napplication. A new permission will be added, so other\napplicatoins won\u0027t be able to take the camera from the face\nunlock.\n\nbug:5584464\n\nChange-Id: Ib3d9dcbc2161815b68db42327dc01148453704c6\n"
    },
    {
      "commit": "bf4431bd936ae39c17e4fe34263d361f7f7ffc1e",
      "tree": "82e1214199dd17789dfafecf14a8eb617b8c6ea3",
      "parents": [
        "c4ffe77a710880416a7cf7c20277311bab2d7abc"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Mar 14 17:14:19 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Mar 14 17:14:19 2012 -0700"
      },
      "message": "Move CameraParameters.h to frameworks/native.\n\nCameraParameters.h is indirectly required to implement the Camera\nHAL. Move it to frameworks/native.\n\nBug: 6171735\nChange-Id: I1bf4db228333be16fc7caa3c51280a9495293011\n"
    },
    {
      "commit": "41f3f716b07265fb355ef70e89b9d7e1ad5f0a6f",
      "tree": "60a2fb8619721d5a575aef156b5ddbff0582ba98",
      "parents": [
        "81fe4fbd6ba87a0be556c57c14de0b23cf51f179"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Thu Feb 16 20:28:27 2012 +0900"
      },
      "committer": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Thu Mar 15 08:36:52 2012 +0900"
      },
      "message": "Defines MediaPlayer APIs to support multiple audio/video/timedtext\ntracks.\n\no Newly introduced APIs are (MediaPlayer):\n  getTrackInfo() / addExternalSource() / enableTrack() / disableTrack().\n\no Timed text tracks are supported only, for now.\n\no TODOs:\n - Define the audio/video behavior for enableTrack and disableTrack.\n - Refactoring AwesomePlayer / TimedTextDriver so that all types of\n   track index can be managed in the correct order and be ready for\n   supporting audio/video tracks.\n   (MediaExtractor and MediaSource for text file might be necessary.)\n\nChange-Id: Idb85e1b3f2ed49a64f377d05472dd6663ce94e07\n"
    },
    {
      "commit": "81fe4fbd6ba87a0be556c57c14de0b23cf51f179",
      "tree": "f1d31ac922a50504102dedb848a1791c4788f543",
      "parents": [
        "1f1bc8b12a85026788495567f83ffd1baf2630d8",
        "f57e2bceb9f09b0a06ebfe89cd5fd46efcfd6fc8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 16:28:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 14 16:28:38 2012 -0700"
      },
      "message": "Merge \"AudioFlinger playback thread CPU measurement in Hz\""
    },
    {
      "commit": "f57e2bceb9f09b0a06ebfe89cd5fd46efcfd6fc8",
      "tree": "14f817b15ff2ee61648f15c54a7d8f6db465ae37",
      "parents": [
        "a2d68c93941d71194995efdfedc440110d7c5532"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 06 11:27:10 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 16:03:01 2012 -0700"
      },
      "message": "AudioFlinger playback thread CPU measurement in Hz\n\nLog statistics on CPU usage in Hz in addition to wall clock time\n\nUse CPU statistics for all playback threads, not just MIXER\n(but they are disabled by default by a compile-time debug macro).\n\nThreadCpuUsage library:\n - Move statistics out of the library and leave that up to the caller\n - Add API to determine a CPU\u0027s frequency\n\nChange-Id: Ia1011123146e641fcf210ef26e78ae2b4d3b64ad\n"
    },
    {
      "commit": "6940484150b9ef96c93ddfb4b2dfedcaa373cb34",
      "tree": "0b08552bd5c5da481c31a70d9a895b17c2bb6ac5",
      "parents": [
        "5108b1b3cf51a08ddae609c384233df36ef53de3",
        "c81d31c3f801ba3d559a22c27b926ace38a7ab49"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 13:54:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 14 13:54:21 2012 -0700"
      },
      "message": "Merge \"Use correct syntax for #include \u003c\u003e \"\"\""
    },
    {
      "commit": "c81d31c3f801ba3d559a22c27b926ace38a7ab49",
      "tree": "c2de55ecf348f27e04329684d6b79543759a4365",
      "parents": [
        "05f692e8050c3650ec123b2361143a121e2e7d4b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 14:46:23 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 16:14:19 2012 -0700"
      },
      "message": "Use correct syntax for #include \u003c\u003e \"\"\n\nChange-Id: I943137108668ae66f8eba18dafe069a7951bcd8f\n"
    },
    {
      "commit": "9dc348d75688faba645c03ecd6e72de7cecc87ba",
      "tree": "5bf27444139c7889bcb966823c54c7da296410a2",
      "parents": [
        "f2fbd2eda54cc6083d302ab00367af3db2b7e793",
        "2b6c32ca4177f1a97307f9cbd81ca485df28762c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 13 15:15:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 15:15:48 2012 -0700"
      },
      "message": "Merge \"Fix spurious ANRs in native activities.\""
    },
    {
      "commit": "2b6c32ca4177f1a97307f9cbd81ca485df28762c",
      "tree": "abc217f8ff191ce1ecc7c4eb9b51185b6d47625d",
      "parents": [
        "b2679481b57d87945df02983f95ff8e6c9ba5928"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 13 15:00:09 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 13 15:00:09 2012 -0700"
      },
      "message": "Fix spurious ANRs in native activities.\n\nSome native activities experienced ANRs when the input consumer\ndeferred an input event due to client-side batching.  If the\ninput channel was fully emptied then the client had no way of\nknowing that it should wake up to handle the deferred input event.\n\nThis patch also fixes some lock issues in the native activity\ninput queue implementation.  In at least one error case, it\nwas possible for a function to exit without releasing the lock.\n\nBug: 6051176\nChange-Id: I4d9d843237e69b9834f8d8b360031b677fcab8c3\n"
    },
    {
      "commit": "1c1d1e7ed7ed2673b22642c6701659146ceaa602",
      "tree": "11321e500d5a0432928dde8172312c6c5197cf11",
      "parents": [
        "586d365e000294ab9cf1efe56657adb0fa8b756e",
        "84b832054552e00257bb04997143ca33d6d100be"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 13 13:23:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 13:23:07 2012 -0700"
      },
      "message": "Merge \"Gapless playback, step 1.\""
    },
    {
      "commit": "84b832054552e00257bb04997143ca33d6d100be",
      "tree": "cf04f15f15da2d9ddbd2112b2b89542f6270b4ce",
      "parents": [
        "f19d5f0271a9e0cdf3a79c6ccab5aa151b0b3239"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 28 16:07:44 2012 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 13 13:13:14 2012 -0700"
      },
      "message": "Gapless playback, step 1.\n\nCurrently able to play Ogg Vorbis, PCM WAV and other lossless files seamlessly\nby reusing the initial AudioTrack for subsequent players.\n\nChange-Id: Ie7cf6b9076bdf4f9211574456d192c02c04fecc7\n"
    },
    {
      "commit": "7cd59760be0f2eb3127b375d5c8e06abfb0dd151",
      "tree": "53f69cc9ead0975b8e38caec802043873a9814a3",
      "parents": [
        "a1b09a92d8879f1f385046533628547a118eb558",
        "e1dea48f92fd087573ac76c6acd03f5a19181ece"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Mar 13 12:44:54 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 12:44:54 2012 -0700"
      },
      "message": "Merge \"Switched to use the header files in /frameworks/native and deleted the duplicate header files in /frameworks/base\""
    },
    {
      "commit": "18db49a46259020387c40fff36d92edc1087a366",
      "tree": "df524d9cb807626d23cc0173be8fd09cd99353c2",
      "parents": [
        "065781397099719805a0a42023581b2622984dd4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 12 16:29:55 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 11:09:47 2012 -0700"
      },
      "message": "Whitespace and indentation\n\nFix indentation to be multiple of 4.\nMake it easier to search:\n  sp\u003c not sp \u003c to\n  \"switch (...)\" instead of \"switch(...)\" (also \"if\" and \"while\")\nRemove redundant blank line at start or EOF.\nRemove whitespace at end of line.\nRemove extra blank lines where they don\u0027t add value.\n\nUse git diff -b or -w to verify.\n\nChange-Id: I966b7ba852faa5474be6907fb212f5e267c2874e\n"
    },
    {
      "commit": "e1dea48f92fd087573ac76c6acd03f5a19181ece",
      "tree": "74f3810d794210df8f54d229006c9dcfc6bcd5ea",
      "parents": [
        "958ec9d0b2f2063a03d3ea2b9bb86897125401b0"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 12 14:37:53 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 12 21:28:57 2012 -0700"
      },
      "message": "Switched to use the header files in /frameworks/native\nand deleted the duplicate header files in /frameworks/base\n\no related-to-bug: 6044887\n\nChange-Id: I17e0692d9a9b5c8796ded36677c833ca8ab36795\n"
    },
    {
      "commit": "db9c21e75411232c2dae8df35e821142e7243a8b",
      "tree": "fac3904c20d35cb60c5b5e5ba1158b4f4dae55cb",
      "parents": [
        "b8f8809472e075a5b0318cf43b86e3dfb1bab082",
        "8d8557ad578fa43fe9b1800db03a0a53afbe78c1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 12 15:05:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 12 15:05:21 2012 -0700"
      },
      "message": "Merge \"Remove virtual from methods that don\u0027t need it\""
    },
    {
      "commit": "28b269f3418c27275bbf635e524ed501bfac6518",
      "tree": "ad59f84ecdadecadbabda38acb9b04df76f498e9",
      "parents": [
        "df0d3ab4d03d8738a606b35bf9673950844aef4a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 07 09:15:37 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 15:32:22 2012 -0800"
      },
      "message": "Use audio_policy_output_flags_t consistently\n\nThis affects:\n - IAudioFlinger::openOutput\n - AudioTrack::AudioTrack\n - AudioTrack::set\n - apps that call these\n\nChange-Id: I26fb281bac6cb87593d17697bc9cb37a835af205\n"
    },
    {
      "commit": "df0d3ab4d03d8738a606b35bf9673950844aef4a",
      "tree": "49413648363c32a9e40d0e46bcfa6fb4a4132404",
      "parents": [
        "c2a4a106d3a0131d5c93f8f512fc02f2a6e8b184",
        "f60a5d7162e22b565e5977b5f4032b9334618269"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 15:23:45 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 09 15:23:45 2012 -0800"
      },
      "message": "Merge \"Use AudioRecord::record_flags consistently\""
    },
    {
      "commit": "8d8557ad578fa43fe9b1800db03a0a53afbe78c1",
      "tree": "7c2c50359d1a8623c706f9cd89daa67a60264086",
      "parents": [
        "a9821bdd0245c433914cf2379bf7e418270995da"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 10:30:26 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 12:48:18 2012 -0800"
      },
      "message": "Remove virtual from methods that don\u0027t need it\n\nChange-Id: I30e17e61aae25b036436c0e270313c80c43e5f06\n"
    },
    {
      "commit": "f60a5d7162e22b565e5977b5f4032b9334618269",
      "tree": "d73847791d9fd2c0b23356368f5f756600b93eab",
      "parents": [
        "21b4d6b7a5959b567355aae032bd76500c148e54"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 07 09:04:02 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 08 18:11:55 2012 -0800"
      },
      "message": "Use AudioRecord::record_flags consistently\n\nChange-Id: I6f369a2b99eb515603bc7d5629a07db2b96783fe\n"
    },
    {
      "commit": "d10a5992f90bf915a5534de24751ca40ef2919e6",
      "tree": "43cd0ded93c5fa41fe2500d10c8acfa5faea39a3",
      "parents": [
        "a4ef63f6c66ef7acfd7fafdf1566430677bc0a42",
        "c9ab9f5c2cd1726a3b9e4176ce0504991cce2c70"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 08 17:45:44 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 08 17:45:44 2012 -0800"
      },
      "message": "Merge \"audio policy: use audio_devices_t when appropriate\""
    },
    {
      "commit": "c9ab9f5c2cd1726a3b9e4176ce0504991cce2c70",
      "tree": "c535d82966bb9c7e7c73ce7a241b06639524df9d",
      "parents": [
        "e8bacb4ea0bb6b3ec3d3ff5488f3eb1c768b5f90"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 08 13:42:42 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 08 15:57:09 2012 -0800"
      },
      "message": "audio policy: use audio_devices_t when appropriate\n\nChange-Id: I1b3a5879e81c789fb53d356af3d3a1ee2dca955f\n"
    },
    {
      "commit": "8c79817dc6459baa2c79db88e3c3e4d5c07d6a61",
      "tree": "d7e4dfcc8a7851d5851750989664ec81ca620d6d",
      "parents": [
        "08965ec67ada98f63f8ac879cc44c8b0e7ff046d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 07 19:36:08 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 07 19:36:08 2012 -0800"
      },
      "message": "remove files that moved to frameworks/native\n\nChange-Id: I140d291e520097b1148930f736823650e08488f7\n"
    },
    {
      "commit": "ffed04ac3c1dd01d66b3e96ec1314173309e7415",
      "tree": "50f54b8f2a9e8b24a9b997ad15f27a02d934aabc",
      "parents": [
        "b7a4007563e74b940e237caa44066cba668d3cb2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 01 09:14:51 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 06 16:43:19 2012 -0800"
      },
      "message": "IAudioFlingerClient::ioConfigChanged param2 const\n\nThe 3rd parameter (param2) to AudioFlingerClient::ioConfigChanged\nis used as an input.  So changed it from void * to const void *.\nIt is then cast to const OutputDescriptor *\nor const audio_stream_type_t * depending on the event.\n\nChange-Id: Ieec0d284f139b74b3389b5ef69c7935a8e5650ee\n"
    },
    {
      "commit": "54682583ba809a315ac1e5437d7f74483e6c7ab8",
      "tree": "46a324f12041ca796ebbb81faac08a69da7d2967",
      "parents": [
        "4f03d35f9c040222e6a46dde807fe2ff7852beb8",
        "bd6b74ce4626c6738bec3d59f7cca95655d1288f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 06 10:52:18 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 10:52:18 2012 -0800"
      },
      "message": "Merge \"AudioTrack: relax check on minimum buffer size\""
    },
    {
      "commit": "b7fdddab0d1cfa666747a0295fcea4bfea709737",
      "tree": "39d151b972ccf8131da98e5c3a00cfcae28b812f",
      "parents": [
        "bc6b837a60b2b08033c425de4576cf378a3f8c2c",
        "5fe705796026a174cb20bee840e03186a3eef7de"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Mar 06 10:23:58 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 10:23:58 2012 -0800"
      },
      "message": "Merge \"Remove unused code - MediaSourceSplitter\""
    },
    {
      "commit": "5fe705796026a174cb20bee840e03186a3eef7de",
      "tree": "6cdd00d94cf7c6be3f7a8677b7c2b5fab7abbad6",
      "parents": [
        "c730aceb64233592c5a0d8b6a429d645443b3818"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 05 19:28:02 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 05 19:30:08 2012 -0800"
      },
      "message": "Remove unused code - MediaSourceSplitter\n\nChange-Id: Icf37832a1c234501ee3ff91ff13eece2242425ae\n"
    },
    {
      "commit": "bd6b74ce4626c6738bec3d59f7cca95655d1288f",
      "tree": "ec28675f61ef6dc7fc6bf5d84b58ff8eb02ccbce",
      "parents": [
        "02b693ecd4d13e75b2bae5972242c1c23cf98764"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 05 17:06:40 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 05 17:18:36 2012 -0800"
      },
      "message": "AudioTrack: relax check on minimum buffer size\n\nCurrent AudioTrack implementation enforces that the requested audio\nbuffer size is at least corresponding the audio latency.\nThis requirement is too strong and leads to problems with current\nstagefright and AudioSink implementations when playing over output\nstreams with long latency.\n\nUltimately, the AudioSink design should be changed to specify a minimum\nbuffer size in time or frames units but not in buffer count units.\n\nChange-Id: I8ba603956f92ac49143a8249572665aa548f2f0f\n"
    },
    {
      "commit": "b93a765ba69a292c268694e7ac127833e00a9b63",
      "tree": "dbdf4f1ea5ca5e1dabb28941e294289856eaf4e0",
      "parents": [
        "c1717569db5a637b054e552e255b2bbf36f7a3f1",
        "4ed260feda32f6c51dd018e1c012e39aa63e61d4"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Mar 05 14:51:54 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 05 14:51:54 2012 -0800"
      },
      "message": "Merge \"Add channel mask in AudioSink\""
    },
    {
      "commit": "4ed260feda32f6c51dd018e1c012e39aa63e61d4",
      "tree": "92aad9d9328987cc7b44e039f3f04695fd802e3c",
      "parents": [
        "e6e47f0517b98055625abc21a85eaa702374495a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 02 14:54:07 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 02 17:26:49 2012 -0800"
      },
      "message": "Add channel mask in AudioSink\n\nAdd support for specifying a channel mask when opening an AudioSink.\n  This parameter does not replace the channel count parameter in order\n  to not have to duplicate the logic to derive a mask from the\n  channel count everywhere an AudioSink is used without a known mask.\n\nA mask of 0 (CHANNEL_MASK_USE_CHANNEL_ORDER) means a mask will\n  be automatically derived from the number of channels.\n\nUpdate existing AudioSink implementations to use the channel mask,\n  and users of AudioSink to specify the mask if available, and\n  CHANNEL_MASK_USE_CHANNEL_ORDER otherwise.\n\nChange-Id: Ifa9bd259874816dbc25ead2b03ea52e873cff474\n"
    },
    {
      "commit": "92454de63c8ac4ce86b8d5e756055b42e8de9368",
      "tree": "40f85b6f98832e016e483b7026ed62e6fc17f68f",
      "parents": [
        "45e96fd28a6f0b6a6526c9af62b083be73385c95",
        "bd3db2f54edff2632bee24a595a10257a38954d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 02 13:48:35 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 13:48:35 2012 -0800"
      },
      "message": "Merge \"Fix typos and line length in AudioRecord comments\""
    },
    {
      "commit": "720aa282791ef9405d39a15f419a41ab24f11e30",
      "tree": "51b3bff87bc9fe3f87c159ff80d16c8b6d36d644",
      "parents": [
        "d630f593d70b26018bb1cf6940fda5abb45e4395"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Feb 22 15:38:35 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Mar 01 14:41:35 2012 -0800"
      },
      "message": "Switch the way we configure for MediaPlayer retransmission.\n\nThis is a cherry-pick of I6ab07d89b2eeb0650e634b8c3b7a0b36aba4e7dd\nwith merge conflicts addressed by hand and additional changes made in\nresponse to code review feedback.\n\nMove in the direction of a more publishable API for configuring a\nmedia player for retransmission.  It used to be that we used a custom\ninvoke and a modified URL (prefixed with aahTX://).  There are many\nissues with this technique and it was never meant to stand the test of\ntime.\n\nThis CL gets rid of all that.  A new (but currently hidden) method was\nintroduced to the java level MediaPlayer API, called\nsetRetransmitTarget(InetSocketAddress), which allows an app writer to\nset the retransmit target.  For now, this method needs to be called\nbefore a call to setDataSource (which is pretty unusual for the\nMediaPlayer API) because this mid level code uses this as a cue to\ninstantiate an aahTX player instead of relying on the data source to\nselect a player.  When retranmit functionality becomes part of the\nexisting android player implemenation, this\nset-retrans-before-set-data-source behavior can go away, along with\nthe aahTX player itself.\n\nChange-Id: I3b46c5227bbf69acb2f3cc4f93cfccad9777be98\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "faf88b85e27ccdba225ec8a501803224a76b9c93",
      "tree": "28d2f577245f555703bc95ab9d331185bae21a2c",
      "parents": [
        "d8f45c16a896d76d06550a91d78e8c5a3a57275a",
        "3d3864fff49715fe528b6c4a919ef75f4c2f90e2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Mar 01 12:41:10 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 12:41:10 2012 -0800"
      },
      "message": "Merge \"Instead of hardcoding OMX component names in our code, support\""
    },
    {
      "commit": "3d3864fff49715fe528b6c4a919ef75f4c2f90e2",
      "tree": "e6726a13b58caaffe241aa3be8c727d5e2d2547d",
      "parents": [
        "ae9029938aa108153bf48157b69459362eca124e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 29 15:47:17 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Mar 01 11:30:10 2012 -0800"
      },
      "message": "Instead of hardcoding OMX component names in our code, support\n\na config file instead.\n\nChange-Id: I5835903ab9f1c4a22ccc605ca99ed966767adf57\n"
    },
    {
      "commit": "c95cd6bca069b11720e9b27d13f2be09162ca832",
      "tree": "535677b161d62f03b8459ca5694188ce65fb0b23",
      "parents": [
        "541b492d49167ad804f1ef2f13fd36f8284ac678",
        "45d8c80dea625726f9d1a6d095161c059ce55e09"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 01 10:17:21 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 01 10:17:21 2012 -0800"
      },
      "message": "Merge \"renamed audio policy output flag.\""
    },
    {
      "commit": "45d8c80dea625726f9d1a6d095161c059ce55e09",
      "tree": "3cba56ca713cb51cdb02a91fda21e4a76320b0cd",
      "parents": [
        "f79760b4aa83913e37a538a2a0a42d34a9dcf2b8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 01 09:38:00 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 01 09:43:32 2012 -0800"
      },
      "message": "renamed audio policy output flag.\n\nRenamed AUDIO_POLICY_OUTPUT_FLAG_INDIRECT to AUDIO_POLICY_OUTPUT_FLAG_NONE\nwhich is more appropriate.\n\nChange-Id: Ia14d60397df0f2dcd9bea0186400a09da35bc104\n"
    },
    {
      "commit": "71dea373f40ef4d35bb8b2f503693f390d1316da",
      "tree": "1fd9dc13f8b42959d133b57d9ebce35a025a9226",
      "parents": [
        "fe35a46f56b8d512f2af8d84e381dda52dbaea20",
        "5df628055789a14267be365beffc0626b7822e96"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 29 16:32:10 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 29 16:32:10 2012 -0800"
      },
      "message": "Merge \"Added permission check for all sensitive drm API calls\""
    },
    {
      "commit": "d67f2cf9430810eb2bdc7b6c38b45e1ef6e1b824",
      "tree": "d889978fbe1cc60223f2bde921b4a4f8f8562194",
      "parents": [
        "d555d70fd43f14cecfb7a952cc595ce338ac5844",
        "bd714b6cbe8b21ed88ef37218ab18643bdf76932"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 29 14:45:25 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 29 14:45:25 2012 -0800"
      },
      "message": "Merge \"AudioRecord const methods\""
    },
    {
      "commit": "06dd67e305c33eaf453bdbd24593bbac6b25660e",
      "tree": "6fb0845a05ef7116fc3a746ef6626edd5c6b1068",
      "parents": [
        "e70583e629e15ff77b6c12d5db39b4f62b6103ab",
        "b1badfc7484070c7cd367320cb6b8bf24ff76817"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 29 12:10:03 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 29 12:10:03 2012 -0800"
      },
      "message": "Merge \"get rid of MemoryHeapPmem\""
    },
    {
      "commit": "0c9aa1b6fca0210353af8a153cbb0380dc83ed2d",
      "tree": "ce80a6e2ddbb81f96aae6d5ac0139c504b859c13",
      "parents": [
        "b290caafa7ea4e13aae8af7877df4e4891ef46b3",
        "4484bdd2f99a753b0801f0c13ca8a2b7bc38695a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 29 09:20:24 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 29 09:20:25 2012 -0800"
      },
      "message": "Merge \"Separate the notion of \"stop\" from that of \"release\", i.e.\""
    },
    {
      "commit": "5df628055789a14267be365beffc0626b7822e96",
      "tree": "5556dd02a0b455504c0077e8385686435c15b852",
      "parents": [
        "8279570b222d46def4e541d71ef29dbfd9fbe3d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 28 13:55:55 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 28 18:50:44 2012 -0800"
      },
      "message": "Added permission check for all sensitive drm API calls\n\no all drm calls using a DecryptHandle now check the permission before proceeding\n\nChange-Id: Ic992a991357876c6e4bfbfab4f5eec1fa0634a13\n"
    },
    {
      "commit": "ee31e56a16324058025ee3090452c72901977d8a",
      "tree": "10de573d1c61a72dbc611fe033f20972957bac88",
      "parents": [
        "1b3d01de3837b7710dfccc06af37ffaec2cf8ecf",
        "3008f0329bb5a3e4ce93ec7b597893a318b5bd11"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 28 18:49:34 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 28 18:49:34 2012 -0800"
      },
      "message": "Merge \"Moves TimedTextDriver.h into include/media/stagefright/timedtext.\""
    },
    {
      "commit": "4484bdd2f99a753b0801f0c13ca8a2b7bc38695a",
      "tree": "8340a689fd485b4ae2fa0fa394d7f1b027890cfd",
      "parents": [
        "f64dfccd96286255fd382486c94cdb48921c45fa"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 28 15:54:51 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 28 15:54:51 2012 -0800"
      },
      "message": "Separate the notion of \"stop\" from that of \"release\", i.e.\n\nstop - means transition back to LOADED state and keeping the component\ninstance allocated.\n\nrelease - means we get rid of the component completely.\n\nChange-Id: I40ad01ce70821faaad43f57999249904f9144924\n"
    },
    {
      "commit": "bd714b6cbe8b21ed88ef37218ab18643bdf76932",
      "tree": "76d3ba2509d6d3981af6531e71174a232bea9257",
      "parents": [
        "f64dfccd96286255fd382486c94cdb48921c45fa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 24 16:33:14 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 28 08:50:18 2012 -0800"
      },
      "message": "AudioRecord const methods\n\nChange-Id: Ifae4fd7820b650aaca2b13c8658c292db1c46c0f\n"
    },
    {
      "commit": "b1badfc7484070c7cd367320cb6b8bf24ff76817",
      "tree": "9ee332fc9667712c73dcb079211e62d5c41b0869",
      "parents": [
        "aac99487a122c5b602853500376551b7987308ac"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 19:54:39 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 19:58:57 2012 -0800"
      },
      "message": "get rid of MemoryHeapPmem\n\nMemoryHeapPmem is not used any longer. PMEM is not a supported\ntype of memory by the system anymore. a particular device might\nuse PMEM and need something like MemoryHeapPmem, in this case this\nshould be implemented in device specific code (HAL).\n\nThis will most likely break older no longer supported targets.\n\nChange-Id: I434e4291219950018de8b793b0403bb2d92dd5cc\n"
    },
    {
      "commit": "49d2b1864c3dfec6faff74d67cb2527a8f1af5a8",
      "tree": "2717d50ecfd85f7b558b2ead2d82bed6ea237dde",
      "parents": [
        "021df141ed8fdc0bc73b8bcb17106e2c7512b372"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 18:11:20 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 18:11:20 2012 -0800"
      },
      "message": "move CursorWindow from libbinder to libandroidfw\n\nChange-Id: I3b304e4f74e0d0ec8b20c57296c62449c9a0f792\n"
    },
    {
      "commit": "6f15cc959ef11fd2fbba71bc996d4a669b518b25",
      "tree": "257f97f19a8587a02f43ba82917fe561f24cf805",
      "parents": [
        "cbd01c31bfa40f4e1b8df9d0d6f57b10aebc5fe9"
      ],
      "author": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Sun Jan 22 15:26:27 2012 -0800"
      },
      "committer": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Mon Feb 27 16:40:48 2012 -0800"
      },
      "message": "Removed dependecies between BufferQueue and SurfaceTexture\n\nRefactored SurfaceTexture and BufferQueue such that share\nno protected members.  Created an consumer facing interface\nfor BufferQueue in preparation of connecting SurfaceTexture\nand BufferQueue through a binder.\n\nChange-Id: I938e63e085128148c58d0e26c7213b30145c109f\n"
    },
    {
      "commit": "f6b53db704ed449d9376b31ee5a5c97b2796f559",
      "tree": "a08fbbdb56bb35d8bbf5a19dcfa01dfa1c5fc9c8",
      "parents": [
        "fa28f57f29007fdeacaddd31b86ba97abf235adf",
        "f217df6819f7cdf7e4ef857dd61036c1812d09f5"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Feb 27 13:35:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 27 13:35:30 2012 -0800"
      },
      "message": "Merge \"libutils: add a system-wide tracing utility\""
    },
    {
      "commit": "c7d47ec6222690c9433023cb8a5d9a1bdd5f9c70",
      "tree": "57e8c9fad3bc36827d693aceb0745252d73fd768",
      "parents": [
        "e912404f85f9b4e10d2ba4123de5098bd6b9b0d3",
        "05221052c5bf1f14db30e57ce3b60e37431c07a5"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Feb 27 13:15:53 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 27 13:23:51 2012 -0800"
      },
      "message": "Merge \"Revert \"Removed dependecies between BufferQueue and SurfaceTexture\"\""
    },
    {
      "commit": "8335f1ccccedb6655d96d9d5b697a7f0938235dd",
      "tree": "30a7f8b3e646157365dd51222665a68753fa25e3",
      "parents": [
        "57235fc65b5920f4867e66c8263efab49e92a21b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Feb 25 18:48:35 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 13:03:08 2012 -0800"
      },
      "message": "fix libgui header location\n\nChange-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe\n"
    }
  ],
  "next": "57235fc65b5920f4867e66c8263efab49e92a21b"
}
