)]}'
{
  "log": [
    {
      "commit": "9c47c97ecac581d66b6febafd156618247e86742",
      "tree": "c49b5394e42b293c0333754bf01c71d387227833",
      "parents": [
        "6ab6061131a10b7f38074c156fd529fa3719a32b"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Feb 08 04:09:38 2017 -0800"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Thu Feb 16 11:16:06 2017 -0800"
      },
      "message": "Enable full migration of OMX to Treble.\n\n1. Toggling between Treble and non-Treble OMX will now be controlled by\ntwo properties: \"persist.hal.binderization\" and\n\"persist.media.treble_omx\". (Before this CL, this was controlled by\n\"debug.treble_omx\".)\n- If persist.media.treble_omx is not set, it will assume a default value\nof -1.\n- If persist.media.treble_omx is -1, persist.hal.binderization will be\nused to determine whether OMX will be created as a Treble or non-Treble\nservice.\n- If persist.media.treble_omx is 1, OMX will be created as a Treble\nservice.\n- If persist.media.treble_omx has any other value, OMX will be created\nas a non-Treble service.\n- persist.media.treble_omx can be changed without rebooting, but it will\nonly take effect after media.codec and mediaserver processes are killed.\n\n2. Remove all dependencies on non-Treble service. This was not done for\nMediaCodec, MediaPlayerService::Client, MediaRecorderClient, stagefright\ncommand, and omx_tests command. OMXClient and media.codec process will\nnow pick the right version of OMX based on properties mentioned above.\nBefore this CL, media.codec would always present the non-Treble version\nof OMX regardless of the flag.\n\n3. Provide workarounds for some HIDL issues.\n- A sequence of nested binder and hwbinder calls require many threads to\nhandle. (b/35283480) The workaround is to increase the number of threads\nin the thread pool of media.codec process.\n- android.hidl.base@1.0::IBase::unlinkToDeath takes a strong pointer\ninstead of a weak pointer. (b/35233970) This causes an infinite\nrecursion in the destructor of ServiceDeathNotifier in\nMediaPlayerService::Client and MediaRecorderClient. The workaround moves\ncalls to unlinkToDeath() outside of the destructor.\n\nTest: Recorded and played videos with Camera app. Ran stagefright and\nomx_tests commands.\nBug: 31399200\n\nChange-Id: Id1940ed982838e10bf10fe8ed5b7bb912a5a2d3a\n"
    },
    {
      "commit": "dbb1afd703c1435e0be5d5fd85248ab48dac2b02",
      "tree": "15d98e08641ee0fbcecec3e6ace4d2a19e9bf32f",
      "parents": [
        "66c42ee95b42bea78cfc8035a1ea4e00c34d6cac"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Dec 01 12:52:10 2016 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Dec 01 13:10:25 2016 -0800"
      },
      "message": "Remove unneeded libcutils references\n\nmediaserver, mediadrmserver, cameraserver don\u0027t actually use libcutils\n\nChange-Id: Ieac17ec8bce73910672db4e3e239bc6cbe5f0be0\n"
    },
    {
      "commit": "c661ae6165338fd5f0bca50a63058b4bcd6def4b",
      "tree": "1fabefad176045b256eb3282f391b9e1ae4ee654",
      "parents": [
        "bf2e61f54c7dcc37c97b4908c9ed6871cf3d2b49"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 25 13:17:47 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 26 15:42:11 2016 -0700"
      },
      "message": "Remove unneeded links with dynamic libraries\n\nVarious media components were linking against dynamic libraries that weren\u0027t needed.\n\nTest: built and booted\n\nChange-Id: I7379506fd06d4e28e0eff0001fd073a2d3860f8e\n"
    },
    {
      "commit": "c8deb6dde12f68f7625ea50fd398942bb896d37b",
      "tree": "c9f298f3be35855ea384338f25ab078a35cbe1f1",
      "parents": [
        "eaa26fe35d6faa7eba9adb424ee55b50e89f59cb",
        "f68051a6beb8bb390d12fb700f1721be3f95e54f"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sun Sep 25 00:03:19 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Sep 25 00:03:19 2016 +0000"
      },
      "message": "Merge \"Add missing liblog dependency\" am: 9200a9aab7 am: cb092999cb\nam: f68051a6be\n\nChange-Id: I412248e299c26325a1992b58f4edeec83fdbfe0f\n"
    },
    {
      "commit": "b8c32f06401c8948a69fa896a9afd768528b299f",
      "tree": "03f478cad7b90b0ed6fc1cf63a5e8a96aab40090",
      "parents": [
        "7449b5e025eeb79b04d67c4595c0497b942fe785"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Sep 23 17:15:38 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Sep 24 15:15:46 2016 -0700"
      },
      "message": "Add missing liblog dependency\n\nBug: http://b/31289077\nBug: http://b/27171986\nTest: remove liblog from libcutils and recompile\nChange-Id: Ic2e8a3d9e62d778d32863a4b794dc4c80b1b1b2b\n"
    },
    {
      "commit": "38e5def8d85d5db568c4bf4d5388d82685bdab87",
      "tree": "f11fd526b90ffa9e7e5fdd9eaa65aee25a16bb68",
      "parents": [
        "9959f5aa7e66764e6f2fc4325e7657fcc2776427"
      ],
      "author": {
        "name": "Srinath Sridharan",
        "email": "srinathsr@google.com",
        "time": "Mon Jul 18 16:01:50 2016 -0700"
      },
      "committer": {
        "name": "Srinath Sridharan",
        "email": "srinathsr@google.com",
        "time": "Mon Jul 18 23:33:01 2016 +0000"
      },
      "message": "Making sure mediaserver can write into foreground cpuset\n\nIf multiple writepids, all must be in one line to take effect.\nElse, only the last one will take effect.\n\nbug: 30192722\nbug: 28312446\n\nChange-Id: I35eea3f604fb5f0c2c0a6bce9e22cfde9d5805a9\n"
    },
    {
      "commit": "caba519fa5d7c8f223678d729776c5045d6339fb",
      "tree": "d0863c04eea66b9b359d46b4b57ca3498e8f36e1",
      "parents": [
        "af0c7dfd5744b7c9e67e9afd26af417aadc6dc20"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Tue Jul 12 14:09:11 2016 -0700"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Tue Jul 12 14:09:11 2016 -0700"
      },
      "message": "Put mediaserver and audioserver in the foreground stune group.\n\nbug 29512132\n\nChange-Id: Id727977d832bdb291790e603e8a65416b9f0c76a\n"
    },
    {
      "commit": "58f3e5541361cb04d64b8ad6a676ad0d77a4ee57",
      "tree": "c9141eb0d37fe71c38956b341840845e7d3a697c",
      "parents": [
        "d298fb880ba440793ce206e5f519d4f7c8c8bb54"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Fri Apr 15 14:27:22 2016 +0200"
      },
      "committer": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Tue Apr 26 08:48:12 2016 +0000"
      },
      "message": "Move system services into correct cpusets.\n\nTo foreground:\n- cameraserver\n- mediaserver\n- audioserver\n- mediacodec\n- drmserver\n- mediadrmserver\n- mediaextractor\n\nBug: 24949295\nChange-Id: I182e5cf6fa4b33d87a0a2f77b0b03fa8d76b8e27\n"
    },
    {
      "commit": "d7c2909c90e462c45bb2fa9e69ecc82836f22629",
      "tree": "a8ec648171b6ef6e24258f0c474ba451e40c61d3",
      "parents": [
        "984b4f2db2f5969afff6420739f6d785f4a14bf3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 30 15:13:26 2016 +0000"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 30 15:13:26 2016 +0000"
      },
      "message": "Revert \"Revert \"Make build warnings be errors\"\"\n\nThis reverts commit 984b4f2db2f5969afff6420739f6d785f4a14bf3.\n\nChange-Id: I4d0f420a063c611afe5b5c9fa809e34799f66ea1\n"
    },
    {
      "commit": "984b4f2db2f5969afff6420739f6d785f4a14bf3",
      "tree": "617bd547225bd6d87363bd35db1f8bf245161f06",
      "parents": [
        "20b89a97a8294c05b8da86f415b0b1bf65ac0fe0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 28 22:36:24 2016 +0000"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 28 22:36:24 2016 +0000"
      },
      "message": "Revert \"Make build warnings be errors\"\n\nThis reverts commit 20b89a97a8294c05b8da86f415b0b1bf65ac0fe0.\n\nChange-Id: I8d840d89bb1eaaa33af64fa04dd422f56b4c2a58\n"
    },
    {
      "commit": "20b89a97a8294c05b8da86f415b0b1bf65ac0fe0",
      "tree": "a8ec648171b6ef6e24258f0c474ba451e40c61d3",
      "parents": [
        "f4044e892d3939fb99ee545a5e8e8e2999f476b2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 22 14:03:12 2016 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 23 11:53:20 2016 -0700"
      },
      "message": "Make build warnings be errors\n\nChange-Id: I207ec8e429bad1fe6bb3821892670af47f15b1d6\n"
    },
    {
      "commit": "d56db1d2bee182d1851097a9c712712fc094d117",
      "tree": "243fda59e2b4d51491af628b49b3a35b267e0051",
      "parents": [
        "cf7913e2389a5e850e01aa6f905d252ee54c9891"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Dec 17 16:50:35 2015 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Mar 02 10:27:36 2016 -0800"
      },
      "message": "Camera: Switch camera2 to auto-gen C++ binder interfaces\n\n - Move camera service AIDL files to frameworks/av\n - Build C++ interface stubs with AIDL tools\n - Add necessary native-side parcelables and update existing ones\n - Remove manually-written stubs, rearrange remaining manual stubs\n - Adjust implementations to work with auto-generated stubs\n   - Adjust method signatures for auto-gen differences\n   - Add rich error messages using binder::Status\n\nBug: 25091611\nChange-Id: I6f69f34b9d1a3f8d1fb7db87357363f8fa8483ff\n"
    },
    {
      "commit": "ae0cff1d48b2cd10aeff9627398faf684894eece",
      "tree": "4aef282efa85820a4bba79027e26ea6fb394b904",
      "parents": [
        "f70077e43576f876bac08f3cf1f702b3c19b8184"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 24 13:57:49 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 24 15:44:12 2016 -0800"
      },
      "message": "Restore media.log service\n\nBug: 26306954\nChange-Id: I00319f4869f46941e4c814a29b2f69a62e572743\n"
    },
    {
      "commit": "e924b6729bd9c0ef3f043e1f150a1923ecc94999",
      "tree": "6c76c37b7c594230c7178497d3d3864935cd102e",
      "parents": [
        "f25f8410c01922c58d78ec35da420c3b4fed7e38"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 18 09:27:35 2016 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 18 09:27:35 2016 -0800"
      },
      "message": "mediaserver still needs icu\n\nBug: 26742500\nChange-Id: I4c0a124b19c84debdbe6e458b975feb69f7a433f\n"
    },
    {
      "commit": "1f36e3b27abfb16bc5e788e253d367eff4886dba",
      "tree": "9beb331c3175fd92fa5d184322590ab82a6e21f9",
      "parents": [
        "e564c201c290c24f94e1478fea3fca2e7422980d"
      ],
      "author": {
        "name": "Chien-Yu Chen",
        "email": "cychen@google.com",
        "time": "Thu Dec 03 16:42:53 2015 -0800"
      },
      "committer": {
        "name": "Chien-Yu Chen",
        "email": "cychen@google.com",
        "time": "Mon Jan 25 13:07:12 2016 -0800"
      },
      "message": "Add cameraserver process\n\nMove camera service from mediaserver to cameraserver.\n\nBug: 24511454\nChange-Id: I9a818c2786ade304777c44b3536f18ee9cd2a6f7\n"
    },
    {
      "commit": "dcb346b7dc5b88c3e85db8a70bbd6a2fee8192b9",
      "tree": "e0038e85e097843f469a6befe9fae1014435f4f5",
      "parents": [
        "ebdddf82b07fa2c4134c3c00dbbbaa1ad3286726"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 09 10:47:29 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 08 11:29:11 2015 -0800"
      },
      "message": "Run audio services in audioserver instead of mediaserver\n\naudioflinger, audiopolicy, (fm) radio, soundtrigger moved to audioserver.\nmedialog is removed from mediaserver.\naudioserver has same permissions and rights as mediaserver.\n\nmediaserver is allowed to specify client uid to audioserver.\n\nSubsequent CL will add medialog to audioserver.\n\nTBD: Pare down permissions.\n\nBug: 24511453\nChange-Id: Iccaa08b874a502710d142e72f8abbb3d97c44cfa\n"
    },
    {
      "commit": "dc6d89a52807fc216012467dcba6091c608dae56",
      "tree": "f005da706f84464d6009595496d919a19a5e3226",
      "parents": [
        "e6d2838dcb92a3277c59f4a13c4703b98b837bce",
        "9abb6302e30ed276cf36904bbf09697ccc065a1f"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Aug 21 18:24:24 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 21 18:24:24 2015 +0000"
      },
      "message": "am 9abb6302: am f7ddd009: Merge \"bundle init.rc contents with its service\"\n\n* commit \u00279abb6302e30ed276cf36904bbf09697ccc065a1f\u0027:\n  bundle init.rc contents with its service\n"
    },
    {
      "commit": "c6dd768006362ced8ef7ae3606cac40312099fd7",
      "tree": "7d14c1f9bb07a565a0d00a9b032489ba7dbc216f",
      "parents": [
        "d7c2effc0494a88b8b11ecf3c01f883b04c465e1"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Aug 14 13:01:03 2015 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Aug 19 17:23:25 2015 -0700"
      },
      "message": "bundle init.rc contents with its service\n\nBug: 23186545\nChange-Id: I18c6062f9e30d72e5a7ffd67c61b9eeec5c24e3b\n"
    },
    {
      "commit": "6697ab9e63ef0b631a8a6c5d49f6413b91daaaef",
      "tree": "9d036250ff19da7866faf3121639ced609ae7200",
      "parents": [
        "ed2abf42e155909c8da201a7b8b06e527fe07cfb"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Jun 10 15:12:38 2015 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Jun 11 13:49:27 2015 +0100"
      },
      "message": "Switch to using shared over local code for initializing ICU\n\nA static library now exists in external/icu/android_utils.\n\nContains cherry-picks from commits:\n4b60b068c27a40731bd4a0049cb632da18bf521d\n2f3406517d1fd4486b8b90eb2635d784fad17a48\n\nBug: 21730722\n\nChange-Id: Ibc264ed881465736ce74fa493deb83cc15f9fceb\n"
    },
    {
      "commit": "4b60b068c27a40731bd4a0049cb632da18bf521d",
      "tree": "9565fcd81affa99e9215abb4b0deda71bf683a35",
      "parents": [
        "2f3406517d1fd4486b8b90eb2635d784fad17a48"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Jun 10 15:12:38 2015 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Jun 11 12:59:18 2015 +0100"
      },
      "message": "Switch to using shared over local code for initializing ICU\n\nA static library now exists in external/icu/android_utils.\n\nBug: 21730722\nChange-Id: I8302b585d3c87fd1a975301ceca4ceebaccbcac9\n"
    },
    {
      "commit": "2f3406517d1fd4486b8b90eb2635d784fad17a48",
      "tree": "55ff130219cf9ac6b68ebf58b0aa848159852b90",
      "parents": [
        "356f08476db6191cdcbad20caf69d7bd642a09b2"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jun 09 17:42:34 2015 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jun 10 08:52:17 2015 +0000"
      },
      "message": "mediaserver : Initialize ICU on startup.\n\nIn change 2b29e461c in external/icu, we stopped hardcoding the ICU\ndata path at compile time to avoid two sets of mappings in zygote forked\nprocesses. This means we\u0027ll have to tell ICU where its data is if the\nprocess in question isn\u0027t forked from the zygote.\n\nbug: 21705078\nChange-Id: I829d9fa34fe8209aa8a6d55145ca26fdf0d934e8\n"
    },
    {
      "commit": "67e7f543c7f1c4fe4ee1989ceb0aebe44a63b49e",
      "tree": "7de894fc9626b36de6eed70812962380ca217f22",
      "parents": [
        "9e6955a19bf77ebf27b770e910efbe1ebf1ceac0"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Fri Mar 13 10:47:08 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Tue Apr 14 14:16:12 2015 -0700"
      },
      "message": "media: use ResourceManagerService with MediaCodec\n\nBug: 19620911\nChange-Id: I235a97e5195b28645b7834dda0dd77307d93f4a8\n"
    },
    {
      "commit": "f097cae65bfce7200938c5bd89e7e9b61cba78b3",
      "tree": "c69ed57deac44c243d914a3c8fa7b88bf3327ca6",
      "parents": [
        "db93079daf06a94e50622d0383b9ed8e767e2f92"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Apr 13 12:17:21 2015 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Apr 13 17:20:19 2015 -0700"
      },
      "message": "TimestretchBufferProvider integration with Sonic Library\n\nUsing Sonic as backbone for time stretching algorithm.\nAdding libsonic to needed makefiles.\n\nbug: 19196501\nChange-Id: I1ea9221d2f56e4e79fba8746ce0ad350b5079e82\n"
    },
    {
      "commit": "2110e04cdfbf9ad85ce154ce5f778ee5ccfc95eb",
      "tree": "5051da296e1fbc067db7ac190334d7d98a4410eb",
      "parents": [
        "dfd7409c1b708f6c429aa43722ca8493a91d8df0"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Tue Mar 24 08:41:51 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:22:42 2015 -0700"
      },
      "message": "Split ManagerDefault into manager and engine\n\nThis patch defines an interface for a new component: policy engine.\nThe APIs found under this interface are the one we may want to customize\nand to configure easily.\nThis patch also split the current manager code into manager and engine to\nprovide a default version of the policy engine.\n\nChange-Id: I97cf59760b53d248fe9efe466ae5e73bd7e5cc06\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "98cc191247388132b6fd8a4ecd07abd6e4c5a0ed",
      "tree": "b447149a320aabc6fb28f2522e6a55db835ce537",
      "parents": [
        "ad3183e2d4cecd02f6261270a7ea1c68be0efa0f"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@intel.com",
        "time": "Wed Mar 18 17:52:40 2015 +0100"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 01 10:19:16 2015 -0700"
      },
      "message": "Split ManagerDefault into Manager and ManagerDefinitions\n\nThis patch splits the managerdefault into a manager and a manager\ndefintion library that contains all pillar elements of a policy manager.\n\nIt renames the file with the name of the main class they contains.\n\nIt splits the AudioPort into AudioPort and AudioPatch.\n\nChange-Id: I992cf0b8aed895805cc003ba0980d2c9e92c985b\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@intel.com\u003e\n"
    },
    {
      "commit": "231c3d169ad029689f9d688b68179af7e96b8d78",
      "tree": "09dbf8d4dc47f5698c08190f498357b455a396c7",
      "parents": [
        "84b784dd4f340331d36b1be3de05a6c814d9795c"
      ],
      "author": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Wed Mar 11 15:10:32 2015 -0700"
      },
      "committer": {
        "name": "Ronghua Wu",
        "email": "ronghuawu@google.com",
        "time": "Mon Mar 23 17:02:28 2015 -0700"
      },
      "message": "media: add ResourceManagerService\n\nBug: 19620911\nChange-Id: Iea173d310d31781bc50effe3d9bd6553cb5139eb\n"
    },
    {
      "commit": "4e09069a29fc18d0799808cc26f71e9b068e98ad",
      "tree": "c546f0130241ac0fea083fca8ec2582e22785aaa",
      "parents": [
        "dedc86dcb6d63e93518c8974c077e50912d15e9c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 05 15:12:40 2015 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 10 18:20:33 2015 -0700"
      },
      "message": "radio service initial implementation\n\nFirst implementation of broadcast radio service.\n\nThis native service runs in mediaserver process and\ncontrols broadcast radio hardware modules.\nThere is one ihardware module per broadcast radio class.\nThe service allows serveral clients to control tuners\non hardware modules and manages resource conflicts.\n\nChange-Id: I21469a084c7ccd65042b8ac5f724d060044c45ab\n"
    },
    {
      "commit": "56ec4ffcbae8aeac6c5245fc7b825d02e2e6cefd",
      "tree": "914941adb956f3af389b9a7b955f3534eec4fe7a",
      "parents": [
        "8f7b7fa417566e9a6a29ea9f0e220b3cd6d1a9e3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jan 23 16:45:18 2015 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Feb 18 17:29:20 2015 -0800"
      },
      "message": "Refactor AudioPolicyManager\n\nAudioPolicyManager implementation is now split into the\nfollowing files:\n\nfiles managerdefault/Gains.*\n  class AudioGain\n  class VolumeCurvePoint\n  class StreamDescriptor\n\nfiles managerdefault/Devices.*\n  class DeviceDescriptor\n  class DeviceVector\n\nfiles managerdefault/Ports.*\n  class AudioPort\n  class AudioPortConfig\n  class AudioPatch\n\nfiles managerdefault/IOProfile.*\n  class IOProfile\n\nfiles managerdefault/HwModule.*\n  class HwModule\n\nfiles managerdefault/AudioInputDescriptor.*\n  class AudioInputDescriptor\n\nfiles managerdefault/AudioOutputDescriptor.*\n  class AudioOutputDescriptor\n\nAll files for libaudiopolicyservice are moved under service/\n\nAll files for libaudiopolicymanager are moved under manager/\n\nChange-Id: I43758be1894e37d34db194b51a19ae24461e066e\n"
    },
    {
      "commit": "c52fb038dc91712fc5159226006e03ce59b21b9a",
      "tree": "226c3461133ec9c183f7c1543b1108820c8def60",
      "parents": [
        "49d44ef14da70f3159cf7908cab58c32ed3dbf26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 02 15:04:55 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 02 15:04:55 2015 -0800"
      },
      "message": "Cleanup annoying whitespace that causes red markers\n\nChange-Id: I0b1be110b0e0a9606d272c4d023f40ff93522725\n"
    },
    {
      "commit": "b7a11d83f749ad0200778c4815e907d011d4b5d3",
      "tree": "28c744c0e8fe9c1f198ddd0999b4c5d95de9610a",
      "parents": [
        "24c01a8417fe195e5ba2187dbbdf9bd1e3a6553f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 18 17:40:41 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 04 15:34:20 2014 -0700"
      },
      "message": "add sound trigger native service\n\nChange-Id: I0cd954c1c7d28a334e786d0004431d4f6a1227ec\n"
    },
    {
      "commit": "d83062287758be57d1d0908b30bb18aa9b367f38",
      "tree": "0efd8542cfb286a9d59c3c13ca455be14ba06f2f",
      "parents": [
        "7ac0039611ea7ea18f9545f96a8f5cb31dcdebe5",
        "98c6be0e30fa28e752b13f3dd5986d41710bb7ae"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 22 00:40:14 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 22 00:40:14 2014 +0000"
      },
      "message": "Merge \"audio policy: split audio policy library\""
    },
    {
      "commit": "98c6be0e30fa28e752b13f3dd5986d41710bb7ae",
      "tree": "f4184b5bd860b09ffa8172257212862e0352425d",
      "parents": [
        "272b7f26c300d2029f278cf2af523cf94e513b89"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 21 08:14:08 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 21 08:58:19 2014 -0700"
      },
      "message": "audio policy: split audio policy library\n\nSplit audio policy library into a service part and a policy part.\nThis will allow OEMs to customize the policy part:\n- libaudiopolicyservice for the service.\n- libaudiopolicymanager for the policy.\n\nTwo build options can be defined in device make file to select\nthe policy library:\n- USE_LEGACY_AUDIO_POLICY \u003d 1: this will use the legacy policy\nin hardware/libhardware_legacy implemented by AudioPolicyManagerBase class.\nThis policy is loaded as a harware module and exposes the audio policy HAL\ndefined in include/hardware/audio_policy.h and is in a library called\naudio_policy.XXX.so (e.g audio_policy.default.so)\n\nThe legacy HAL will not be updated with new features.\n\nIf USE_LEGACY_AUDIO_POLICY is not defined, the policy is implemented by\na class named AudioPolicyManager exposing an interface defined in\nAudioPolicyInterface.h.\nThe corresponding library is libaudiopolicymanager.so.\n\nNew features will be added only to AudioPolicyInterface.h\n\nThe default implementation is provided here in file AudioPolicyManager.cpp\n\nOEMs wanting to cutomize the policy can implement the AudioPolicyManager class\nand provide the libaudiopolicymanager.so library.\nIn this case the device make file should define:\n- USE_CUSTOM_AUDIO_POLICY \u003d 1\n\nFor now, USE_LEGACY_AUDIO_POLICY \u003d 1 is forced in audio policy service make file.\nThis will be removed when the new audio policy is enabled.\n\nChange-Id: I066799dacc9b182b468a43d48ff7798c9109a414\n"
    },
    {
      "commit": "c56f3426099a3cf2d07ccff8886050c7fbce140f",
      "tree": "9e486a809f9d500a70fd26c4e1d2596ded190dbe",
      "parents": [
        "7c96d53a65085f42ac2b6d416cbc16fd36ed72ff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 21 17:53:17 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 19 09:46:25 2014 -0700"
      },
      "message": "Pass stereo gains as packed minifloat\n\nThis will allow (eventually) a greater dynamic range for gains.\nHowever there are still a few remaining places in effects and mixer\nthat will also need to be changed in order to get the full benefit.\n\nAlso fixes a minor bug: was not checking for NaN in AudioTrack C++.\n\nChange-Id: I63bce9e82e0a61546d8ff475fb94bcb700d99c96\n"
    },
    {
      "commit": "314869117d5e3365fc3e43fee01209d18515ca42",
      "tree": "a1975d895276c929a5e5a20166124368f2e21eb9",
      "parents": [
        "37e05edf1cfe297f9c7d382787ecab53d5a2b5c8",
        "c7e5040aa8b8e4da86814bf560346c7571e48087"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 18 00:14:12 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 18 00:14:12 2014 +0000"
      },
      "message": "Merge \"move audio policy service to a separate library\""
    },
    {
      "commit": "758799cef41fc5495f59eeb6249d02ce9154cde8",
      "tree": "5cbfa825fd668d81c6fe6a8ec485dd8ebb2fd151",
      "parents": [
        "beb57a5a08207af80180b93dd80d611a85997c43",
        "3c7801882bbb6d5f3cc641525a54cb8a6c4aca34"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 14 14:22:08 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 14 14:22:08 2014 -0700"
      },
      "message": "resolved conflicts for merge of 3c780188 to master\n\nChange-Id: Ic579d346c27ff05ea6444faaa60fa6caaec86fbf\n"
    },
    {
      "commit": "af783aa91f7a279153fb8bab8d0d6b9f737996e9",
      "tree": "25c5b54bf884f220cce4ee21a9cbaf6583820f91",
      "parents": [
        "19afb3869eb6a3e3733dc1f7420e1d4c3c03d376"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Sun Mar 02 19:48:19 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Mar 12 11:24:53 2014 -0700"
      },
      "message": "mediaserver and associated services are 32-bit only\n\nalso 32-bit only command-line apps\n\nChange-Id: I9ac557a8d02bbf6986a9b5c3cdce23d400b306a3\n"
    },
    {
      "commit": "c7e5040aa8b8e4da86814bf560346c7571e48087",
      "tree": "8cd35c3ea6a2f9849d27a8299705dd7aea494894",
      "parents": [
        "1ac1638077277de52d1dd4c54db71e67753f1960"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 06 14:35:55 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 11 13:52:14 2014 -0700"
      },
      "message": "move audio policy service to a separate library\n\nChange-Id: Ibc3ef07aa9860b7fd4f9aaff27b0dbe0dcbf1cbf\n"
    },
    {
      "commit": "0f11b51a57bc9062c4fe8af73747319cedabc5d6",
      "tree": "3a9156d700b18a53f856ac8ae51a44604af36fe1",
      "parents": [
        "0520e05f9083cf13fa7062629bc6606f4b39f08a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 16:18:54 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 07:48:43 2014 -0800"
      },
      "message": "Fix unused parameter warnings in audio\n\nChange-Id: I665ba3358dd9502f0adec70d486e7bf8a2e1b0fe\n"
    },
    {
      "commit": "7226c059cda892ffa384b455ecfc49989e9bf6f0",
      "tree": "10e13405a2bd59737a6e2ab41c52317e058d0621",
      "parents": [
        "269a7e210949c4b28ba84dc71b9f99f6ef14f94e"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Fri Jan 17 14:46:21 2014 -0800"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Fri Jan 17 14:46:21 2014 -0800"
      },
      "message": "Fix build. Missing vendor_tag header.\n"
    },
    {
      "commit": "ecba7488c5cceaacef95836b1b476433451e7761",
      "tree": "83245c19c2dda5c557531edb19478056034b5db5",
      "parents": [
        "5544c66ba0aa789a997b376df503a5ffae425dc7"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "message": "Add liblog\n\nBug: 8580410\nChange-Id: If493d87d60d71be664ad75b140c62acadb75b0d0\n"
    },
    {
      "commit": "da0dc0af0effe9fbfb3ce3187c8472fca2baf3c6",
      "tree": "67aa5a912048834766759d1842f7e54a20f74481",
      "parents": [
        "ec77122351b4e78c1fe5b60a208f76baf8c67591"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "message": "Add liblog\n\nBug: 8580410\nChange-Id: If493d87d60d71be664ad75b140c62acadb75b0d0\n"
    },
    {
      "commit": "8029ea41c8851c527ed5829e8c26fbf939661f34",
      "tree": "5ef58bfba85abac9234c739ab65ef4d195e285b6",
      "parents": [
        "2f8025eef6c681920579f75d298a262b12a80ac9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 20 16:47:28 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 20 16:47:28 2013 -0800"
      },
      "message": "Permit conditional registry of mediaserver extensions\n\nChange-Id: I94dc0d038e702dfe1779a50a1de0fae9bad15057\n"
    },
    {
      "commit": "feb2179f15bde8241814c8c35f8dace13a923ee7",
      "tree": "9d8e325d2d38e6366944f186008accea0fb123b5",
      "parents": [
        "fc900c922e219771d0cd3c075720d90026e1ca4a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 20 16:47:28 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 20 16:47:28 2013 -0800"
      },
      "message": "Permit conditional registry of mediaserver extensions\n\nChange-Id: I94dc0d038e702dfe1779a50a1de0fae9bad15057\n"
    },
    {
      "commit": "fdf4e4f1859771b95585cbc87f8cd038ea2815c6",
      "tree": "7bbc12a9d0e9c7ad29346b04b26c55d390a0b032",
      "parents": [
        "10eb4b33545a58e4b09249c30c100bc7b992250a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:31:41 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 25 15:12:14 2013 -0800"
      },
      "message": "Add media.log service based on NBLog\n\nChange-Id: Ie45093df6ac9a739d05c8d408fab52a9a8a27e7f\n"
    },
    {
      "commit": "6f1c1918d0dfece10f728711b055441e4d135c73",
      "tree": "e82c0166e895f9c61c11ff0800d2871298e63b30",
      "parents": [
        "11d8dfcc063425ae7d59229f54b6752fd8987c10"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:31:41 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 25 15:12:14 2013 -0800"
      },
      "message": "Add media.log service based on NBLog\n\nChange-Id: Ie45093df6ac9a739d05c8d408fab52a9a8a27e7f\n"
    },
    {
      "commit": "7acd13defdb3f33b2e266f1ef8f3ac85285c5e27",
      "tree": "c1b190f6e1e14b1d144d5ad8a275cf20556a26b8",
      "parents": [
        "b32761634799f00488f890cd3e38f47ce7cc3452"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:17:05 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:24:49 2013 -0800"
      },
      "message": "Remove obsolete audioflinger reference\n\nChange-Id: I9ae754c908f3b0102c3828c71d6f542851a74341\n"
    },
    {
      "commit": "2a330d6cbb25f0cdd6208aeee53b4a3b88dae3b0",
      "tree": "ee5cf0c2ca89c31227b665448c426980d699c209",
      "parents": [
        "5faf610fa384a81dbefb7ac67d2452216e3acead"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:17:05 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:24:49 2013 -0800"
      },
      "message": "Remove obsolete audioflinger reference\n\nChange-Id: I9ae754c908f3b0102c3828c71d6f542851a74341\n"
    },
    {
      "commit": "4e1e73ebe1049538678d0343e4b2e51eb54352f8",
      "tree": "717818f3dc5bbbf97da2fa8ed47fe8d007dae7f9",
      "parents": [
        "a799a40491f8fbd3cdc8681bff6f7fac3933db95"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 17 12:16:50 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 17 18:15:17 2012 -0700"
      },
      "message": "Ignore SIGPIPE during write() to broken pipe\n\nThis happens occasionally when taking a bugreport.\n\nBug: 6447319\nChange-Id: Ia6531a4a3658461f8fd3f7106e7996da7cc5933a\n"
    },
    {
      "commit": "879d503a5d4460a4265279985c63af954afe4a2c",
      "tree": "290f4e6dae0a80845a66e9ab1f4ca12eb41e1dda",
      "parents": [
        "44ddca42f472b839dd0352a3582fdb57684d907e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 17 12:16:50 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 17 18:15:17 2012 -0700"
      },
      "message": "Ignore SIGPIPE during write() to broken pipe\n\nThis happens occasionally when taking a bugreport.\n\nBug: 6447319\nChange-Id: Ia6531a4a3658461f8fd3f7106e7996da7cc5933a\n"
    },
    {
      "commit": "3d51d5cb53cc630709a0ba78d0e60501a675f2d5",
      "tree": "c01dc8011b4e0061343c8b60b0da3508c63ae822",
      "parents": [
        "b4ea1ab821d652cb080910d4081f5f1318597a90"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 12 18:10:35 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 13 15:18:29 2012 -0700"
      },
      "message": "Add NOTICE and MODULE_LICENSE_APACH2 to libs build under /frameworks/av/\n\nChange-Id: I0a3af3e2abdedebd5934f3d941d01c32cfc75e26\nrelated-to-bug: 6647465\n"
    },
    {
      "commit": "559bf2836f5da25b75bfb229fec0d20d540ee426",
      "tree": "d7dd708b17eeca96a3e5d8bcc25a51ff3d1b5d0d",
      "parents": [
        "b0b2b4d890cf3bfb274797a759642b4e733343d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 10:29:14 2012 -0700"
      },
      "committer": {
        "name": "Anatol Pomozov",
        "email": "anatol.pomozov@gmail.com",
        "time": "Wed Mar 28 12:07:41 2012 -0700"
      },
      "message": "AV Android make files changes\n\no plus a few file relocation: ActivityManager.cpp/h, SoundPool.h, etc\no remove some runtime dependencies to libandroid, libandroid_runtime, etc\n\nChange-Id: I047a47c5fb361dd5cf85cd98798c39f629a75d10\n"
    },
    {
      "commit": "8e5b72c39cf0e4d4bec6f843bb54f6409b073c64",
      "tree": "db5db6697bf2a34fd3ebf117269bf4c5ffe7f03f",
      "parents": [
        "d191213ab0146526541913f3fed2d5aa95f58899",
        "0e9350254736c4aea154a7a871dd212038050f70"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 13:56:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 14 13:56:25 2012 -0700"
      },
      "message": "Merge \"Prepare frameworks/native/services/audioflinger\""
    },
    {
      "commit": "b4d307481960b6b348fae4b4e8edefd003c3d36c",
      "tree": "d357f30c9cf6541cbe3de6de7cc71a860f66c80b",
      "parents": [
        "f67fdc6d8bb31226ffeeecbff6aca610befd0110"
      ],
      "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": "0e9350254736c4aea154a7a871dd212038050f70",
      "tree": "a3a6f653b383e5767c6ed6b6c47c464099339298",
      "parents": [
        "f67fdc6d8bb31226ffeeecbff6aca610befd0110"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 16:09:39 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 16:13:17 2012 -0700"
      },
      "message": "Prepare frameworks/native/services/audioflinger\n\nPart of this change will be reverted after the move is complete.\n\nChange-Id: Ie7f6355368258f2b1344f4ef754da9151a06e41d\n"
    },
    {
      "commit": "22f3efdefddc855ea0763275310850bf55bd4fd1",
      "tree": "8982998eb1ac559f98e7c198fdeb5a6e853c0b07",
      "parents": [
        "9770988e61961d34033fd2c12f0de85a267df68f",
        "33df529414c248972587d97cbb2e3309e0a7eeff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:22:45 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:22:45 2012 -0800"
      },
      "message": "Merge \"Fix missing tag in mediaserver ServiceManager: log\""
    },
    {
      "commit": "33df529414c248972587d97cbb2e3309e0a7eeff",
      "tree": "1b70171fcd19e781e778d798fd7841c3eaa9fc06",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 19 14:09:14 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 14:40:14 2012 -0800"
      },
      "message": "Fix missing tag in mediaserver ServiceManager: log\n\nChange-Id: I2d5525ffee0b66c0bc361a02b313ec4dd61e6552\n"
    },
    {
      "commit": "df64d15042bbd5e0e4933ac49bf3c177dd94752c",
      "tree": "ff04eb3e1a1ce8c8d8559b93a438f278d984aa87",
      "parents": [
        "b8a805261bf0282e992d3608035e47d05a898710"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156801\n\nBug: 5449033\nChange-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea\n"
    },
    {
      "commit": "837b8184e1307991578de5d5d25b62a67bb225f6",
      "tree": "dff89f05576533422f8e5caf2c25efac5c4455d0",
      "parents": [
        "eebeceec684a36222b4559e3157b0db04c0a67ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 30 09:05:19 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 12 13:40:06 2011 -0800"
      },
      "message": "Delete obsolete includes\n\nChange-Id: I960a179a026ff8d710b43b64cb358f18ee04de16\n"
    },
    {
      "commit": "65ab47156e1c7dfcd8cc4266253a5ff30219e7f0",
      "tree": "da088916c7cadadcddf47467f20cc8b0b6ff7f41",
      "parents": [
        "98fe12aba55e8b8bb14b23c4c3cdba9a99a9753c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "message": "move native services under services/\n\nmoved surfaceflinger, audioflinger, cameraservice\n\nall native services should now reside in this location.\n\nChange-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8\n"
    },
    {
      "commit": "c2f1f07084818942352c6bbfb36af9b6b330eb4e",
      "tree": "88ac93be41edadd8cbfe6448e1421d5165883f59",
      "parents": [
        "a64c8c79af1a15911c55306d83a797fa50969f77"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 17 12:17:14 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 06:03:39 2009 -0700"
      },
      "message": "Fix issue 1795088       Improve audio routing code\n\nInitial commit for review.\nIntegrated comments after patch set 1 review.\nFixed lockup in AudioFlinger::ThreadBase::exit()\nFixed lockup when playing tone with AudioPlocyService startTone()\n"
    },
    {
      "commit": "7562408b2261d38415453378b6188f74fda99d88",
      "tree": "6b2ac284c1b721385d695045357d9e1d60ece03a",
      "parents": [
        "615a9bfbd98b90e09d868c128db84836feb658e4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 19 19:08:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:03 2009 -0700"
      },
      "message": "move libbinder\u0027s header files under includes/binder\n"
    },
    {
      "commit": "615a9bfbd98b90e09d868c128db84836feb658e4",
      "tree": "8820d731b046206d781bb302cc79d7303c44dbbb",
      "parents": [
        "8bae84582c2836a605d3ec3382a5e2f0b233ca52"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 18 15:08:03 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:02 2009 -0700"
      },
      "message": "checkpoint: split libutils into libutils + libbinder\n"
    },
    {
      "commit": "89fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5",
      "tree": "28d26f7b71e943e25c7da6e8043d79b7b8d9cf7b",
      "parents": [
        "15f767b960b38059a74a42a33e16d8df2aec8bc1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "15f767b960b38059a74a42a33e16d8df2aec8bc1",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "ad04d9201452001dbaac4349f084cc9316190b89"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "2729ea9262ca60d93047e984739887cfc89e82eb",
      "tree": "25962a3f1c5f70586af45c926c037e03c643857f",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
