)]}'
{
  "log": [
    {
      "commit": "845b4712f0e4d7ca802f21fba1adae0b1d0712e7",
      "tree": "6cf0b91634cf8de5dd5a85dac160937a7a436aa1",
      "parents": [
        "c8d5f7d607123966651b2bc521ba9c4470952b34"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 13:12:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 08:40:46 2012 -0700"
      },
      "message": "Use audio_channel_mask_t more consistently\n\nIn AudioRecord::getMinFrameCount() and AudioSystem::getInputBufferSize(),\ninput parameter is channel mask instead of channel count.\n\nChange-Id: I22a1c492113f3e689173c5ab97b2567cff3abe2b\n"
    },
    {
      "commit": "9be0105fbc56eb1b1813bb7c5fe258a144867a43",
      "tree": "964727f4694bb224eacdaaa68320292aab85ffd3",
      "parents": [
        "3cd4624448dcaddecc75461ef645da72e7e5c098"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Jun 22 12:35:08 2012 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Fri Jun 22 12:35:08 2012 -0700"
      },
      "message": "docs: fix several links\n\nChange-Id: I89d9fd64dc22c90680bb05415cc966c255165af9\n"
    },
    {
      "commit": "870085cce0fde0a44f0c28a5097b8c827cafb0e2",
      "tree": "199aa2f6e48b4d41d77986c812eb2cd4b97c39ce",
      "parents": [
        "689b741abc93a3b44d7a39e9b138162bad330f23",
        "2dd9134c6b2da47f4816bc0f72a0e4924aca4f84"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Apr 04 13:13:57 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 04 13:13:57 2012 -0700"
      },
      "message": "Merge \"SIP: push the logic of finding local address down to SipSessionGroup.\""
    },
    {
      "commit": "2dd9134c6b2da47f4816bc0f72a0e4924aca4f84",
      "tree": "b3d716a395d4085f84a929f27fa243c3d9bbe30e",
      "parents": [
        "54e1553df69350130df5e4518abf14a9a64931bb"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Apr 04 13:04:26 2012 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Apr 04 13:04:26 2012 -0700"
      },
      "message": "SIP: push the logic of finding local address down to SipSessionGroup.\n\nThis allows different accounts binding on different IP addresses,\nsuch as one on IPv4 and another on IPv6.\n\nBug: 4169057\nChange-Id: I0bb36669394c281330091673fa338adea8f782cd\n"
    },
    {
      "commit": "e66950506c473e660f2e5762d7a71e13808be387",
      "tree": "9ca2791a39e5b0f4a2c1fb59373225b766ff5b1d",
      "parents": [
        "54e1553df69350130df5e4518abf14a9a64931bb"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Mar 30 13:25:19 2012 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Mar 30 13:32:16 2012 -0700"
      },
      "message": "RTP: refactor a little bit and fix few minor bugs.\n\nChange-Id: I063644507f26996ded462972afcb550a4528dac8\n"
    },
    {
      "commit": "ba4d0433319393d626d2169683209e4956a087e2",
      "tree": "96912a08fd6fdc796c384a2a7a13b16e69c4bb2b",
      "parents": [
        "d927a1d99630c05ff773f0e9e8791ca9a965e020"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 11:03:25 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 11:03:25 2012 -0700"
      },
      "message": "frameworks base Android.mk file changes\n\nChange-Id: I7459b9e959a60751b8fa6e0d893cb2c820c064ce\n"
    },
    {
      "commit": "fb982db41060a2914cddb43200f3ee53627f8762",
      "tree": "be758657bb51b962f497d9dba4c0289d6494960e",
      "parents": [
        "80e4ee46008d2817dc0496e0cf8c9470c6851755"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Mar 27 15:27:25 2012 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Mar 27 15:27:25 2012 -0700"
      },
      "message": "RTP: add a null-check in AudioStream.setDtmfType().\n\nChange-Id: I52cbdea48affae3747942940451f4fd5ca47030f\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": "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": "ae75f994cc50837afe79d3bfbc576811e3602fef",
      "tree": "54200155dc1dc7f1b1e96c3cef9a48b6909af213",
      "parents": [
        "2937a9ea0a81a0400f0189221f775561ff3b0a6c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 16 11:42:24 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 16 11:51:30 2012 -0700"
      },
      "message": "Add libmedia_native\n\nChange-Id: Ib8cff8abd73723b793f08da99ad59549f219e0e7\n"
    },
    {
      "commit": "4e42c5f41fdb67ec62fbecc48038c8fe30b57bcd",
      "tree": "3f9d8f9f1a2949bc3372707d20728267d502b0d6",
      "parents": [
        "81fe4fbd6ba87a0be556c57c14de0b23cf51f179"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 15:59:35 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 16:44:34 2012 -0700"
      },
      "message": "Remove dependency on audio_* location\n\nChange-Id: I4bc66115fcb9ba22b057bd72db3f561dcb18a0d8\n"
    },
    {
      "commit": "597f8282ee1b86ba8f7384eb3060bac3b3f7cf92",
      "tree": "4c440b6de0476a6b9a6e9e7f46db645706839324",
      "parents": [
        "fb6b5bdcea04c1fa6ccd046373f5ad3a62784713"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 09:44:38 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 11:57:27 2012 -0800"
      },
      "message": "Fix build warnings\n\nChange-Id: I543e730aff2d03c18c26b116c9fe9419259808af\n"
    },
    {
      "commit": "3762c311729fe9f3af085c14c5c1fb471d994c03",
      "tree": "7d4caccad80ac7327c7bff96dafc857d5f4631ad",
      "parents": [
        "7a939077bd14521c7d351af98df7ed75a8ec9c15"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Sun Jan 08 13:19:13 2012 +0000"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/157220\n\nBug: 5449033\nChange-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c\n"
    },
    {
      "commit": "8564c8da817a845353d213acd8636b76f567b234",
      "tree": "71acbd8ace822c769aef917629bf5a079f63274d",
      "parents": [
        "c42e6a0bed2c88fd03466c5104d62d7f98e68768"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 10:07:54 2012 +0000"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157065\n\nBug: 5449033\nChange-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69\n"
    },
    {
      "commit": "6215d3ff4b5dfa52a5d8b9a42e343051f31066a5",
      "tree": "fa31802ed64676368447b67d20567fc1e806c79d",
      "parents": [
        "c9c76a82c6d0bf2362044d899013832882f32c94"
      ],
      "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": "5baa3a62a97544669fba6d65a11c07f252e654dd",
      "tree": "109755e1595b438873d34b981e31f84ea64bd2a5",
      "parents": [
        "173ab4d61077c49f115b82eff34f97fda5a7273a"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Jan 03 22:38:27 2012 +0000"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156016\n\nBug: 5449033\nChange-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298\n"
    },
    {
      "commit": "c2bd6162eddad0cdfdafc037142e043680ffa705",
      "tree": "f2ac39d98f375545b52c6d74fcef01626616ca60",
      "parents": [
        "c1bac3a6e240c1c9a14a7b515f585977fb908930"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Dec 27 17:29:35 2011 -0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Dec 28 15:11:04 2011 -0800"
      },
      "message": "SipService: grab Wi-Fi lock only when necessary.\n\nChange-Id: Ie432049156e70b6748426b959b653f21bfc504a1\n"
    },
    {
      "commit": "2b072677538de979961b5bf527109fdab1713731",
      "tree": "abe7c7d86618d0efa1ace6e3b56e20161e458ed2",
      "parents": [
        "2bd0d74a5885f72435da228a00495bae72c07f6f",
        "201469f54522436be79d4d6665721049bfc74320"
      ],
      "author": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Thu Dec 22 15:59:34 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 22 15:59:34 2011 -0800"
      },
      "message": "am 201469f5: am bb7f590a: Merge \"docs: Add developer guide cross-references, Project ACRE, round 4\" into ics-mr1\n\n* commit \u0027201469f54522436be79d4d6665721049bfc74320\u0027:\n  docs: Add developer guide cross-references, Project ACRE, round 4\n"
    },
    {
      "commit": "3aef8e1d1b2f0b87d470bcccf37ba4ebb6560c45",
      "tree": "7600f58de48f6764d476cc9d6a92ed0a5dddf278",
      "parents": [
        "8f04ae361cd34fdaea41fbedefb85cff2c684e36"
      ],
      "author": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Tue Dec 20 10:38:34 2011 -0800"
      },
      "committer": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Thu Dec 22 15:08:23 2011 -0800"
      },
      "message": "docs: Add developer guide cross-references, Project ACRE, round 4\n\nChange-Id: I1b43414aaec8ea217b39a0d780c80a25409d0991\n"
    },
    {
      "commit": "98c54a3e06c3e1909fa0f6cb19c5201f116ed5bc",
      "tree": "e7e658064f338ef775df41dd4b285bfdde28d9ca",
      "parents": [
        "7b0fdc100e1dd711ba5534534b9405475c57566b",
        "0e67685e53cbcf7682a0364cf34fd3ac0632596f"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Nov 21 21:07:56 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 21 21:07:56 2011 -0800"
      },
      "message": "am 0e67685e: am bfd85f9a: Merge \"SIP: turn off verbose logs.\" into ics-mr1\n\n* commit \u00270e67685e53cbcf7682a0364cf34fd3ac0632596f\u0027:\n  SIP: turn off verbose logs.\n"
    },
    {
      "commit": "cb6ee06f62c20ae036a206667097f20b837b11ab",
      "tree": "d84ab1e84ebc47759e20326c64d65e006435ac84",
      "parents": [
        "63b7360e9d8c6fb077bdd00c7ef08f402d5a76ba"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Nov 18 16:57:21 2011 -0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Nov 18 16:57:21 2011 -0800"
      },
      "message": "SIP: turn off verbose logs.\n\nBug: 5616713\nChange-Id: Iaf2e6878731d10d7f4f2a7cd8af71f4517780642\n"
    },
    {
      "commit": "71f2cf116aab893e224056c38ab146bd1538dd3e",
      "tree": "75a9162a0ea00830184b12a9ca51d3a1a040a5bb",
      "parents": [
        "1da79501066a74b630c8aa138db0f86ab6c690bb"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Oct 20 11:56:00 2011 +0100"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Oct 26 09:57:54 2011 +0100"
      },
      "message": "Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/143865\n\nBug: 5449033\nChange-Id: I0122812ed6ff6f5b59fe4a43ab8bff0577adde0a\n"
    },
    {
      "commit": "ee59e6a9fc69241b286acb7b55a22b8393c81222",
      "tree": "ec73f61e959d7c7924f8e5fdb3a0fb9bd1555ef9",
      "parents": [
        "c8f68e5c7ffef3bc6775edf39a251baf79b81f6b"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 27 16:39:38 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Sep 30 16:46:30 2011 -0700"
      },
      "message": "SipService: handle connectivity changes correctly.\n\nThis patch assumes that for the same network type,\nthere MUST be a DISCONNECTED between two CONNECTEDs.\nAlso removes the Wi-Fi scanning since the framework\nalready handles this when a WifiLock is held.\n\nBug: 4283795\nChange-Id: I08481e70c651cffcbb516c8cc6584c919078fa4f\n"
    },
    {
      "commit": "6d8b9b84ac83acfc193fd633ba961168867124fa",
      "tree": "92fb87adc16a34e314f46d5057e16634ffd6cd91",
      "parents": [
        "87105a3d48e4bdd60972fc327d774fa50f7ff130",
        "be57bfe853d07369f429b600039ea474b9ea5e31"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 13 21:21:18 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 13 21:21:18 2011 -0700"
      },
      "message": "Merge \"RTP: Update parameters for larger packet intervals.\""
    },
    {
      "commit": "7a685e89114ddfe35f87075dfe66a480c91c9de2",
      "tree": "f22d93aa8c23e9b8c82c6096c45b0aead7afc243",
      "parents": [
        "fa6dfdcfd741980ba1c1d1971b69fc6f8a34dfeb",
        "d17b6d526648c372be761097e55c19767d5dba7d"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 13 10:35:04 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 13 10:35:04 2011 -0700"
      },
      "message": "Merge \"SIP: fix keep-alive measurement and increase the timeout.\""
    },
    {
      "commit": "d17b6d526648c372be761097e55c19767d5dba7d",
      "tree": "ac019478843cd5bd5a2ef6406c3518b744edf963",
      "parents": [
        "dad9c673961ff8aede8af7d95e35fe8b9c088ac6"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Sep 08 16:43:50 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 13 03:02:30 2011 -0700"
      },
      "message": "SIP: fix keep-alive measurement and increase the timeout.\n\nBug: 5226511\nChange-Id: I1283790581496b1ff4e583a8d9379cdc39f78c20\n"
    },
    {
      "commit": "be57bfe853d07369f429b600039ea474b9ea5e31",
      "tree": "34036f2d7620fe2bfc3fcf3024422714638538b7",
      "parents": [
        "35d05dcba1e829782813b6ec21afceb5cffc22e6"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 06 23:45:17 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Sep 09 16:08:12 2011 -0700"
      },
      "message": "RTP: Update parameters for larger packet intervals.\n\nAlso remove some duplicated code.\n\nChange-Id: I64576e5442a962eb4b0dfa83b52a8127567ba597\n"
    },
    {
      "commit": "81a5ec5b94d889656cc2f212102c441b91b2e3c0",
      "tree": "a42a29c00fc5ca02a20dfbe4ed30119fb914763f",
      "parents": [
        "c9c541ad162d8b6dce9387251373de0a31092783",
        "35d05dcba1e829782813b6ec21afceb5cffc22e6"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Sep 08 14:07:00 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 08 14:07:00 2011 -0700"
      },
      "message": "Merge \"RTP: support payloads with larger packetization interval.\""
    },
    {
      "commit": "fa6067f87c7405c987d5879554d529e7413910c0",
      "tree": "edd13841e70631c0d1f2aea7703044d311c4e669",
      "parents": [
        "2cc2d984b13db06b1c349d13431a3ab2c11fcbc3",
        "74e0a990ae3196b8195db2a399c22516c7dd0823"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 06 14:53:14 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 06 14:53:14 2011 -0700"
      },
      "message": "Merge \"VoIP JNI: Force AEC on for tuna board\""
    },
    {
      "commit": "35d05dcba1e829782813b6ec21afceb5cffc22e6",
      "tree": "4f5287ebc5edea42a12ff4f772c5574f57cf2542",
      "parents": [
        "1ed7a407fafe50b1eb0878f560bb0618706e4e82"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 06 14:18:37 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 06 14:34:44 2011 -0700"
      },
      "message": "RTP: support payloads with larger packetization interval.\n\nRFC 3551 section 4.2 said that a receiver should accept packets\nrepresenting between 0 and 200ms of audio data. Now we add the\nability to decode multiple frames in a payload as long as the\njitter buffer is not full. This change covers G711, GSM, and\nGSM-EFR. AMR will be added later.\n\nBug: 3029736\nChange-Id: Ifd194596766d14f02177925c58432cd620e44dd7\n"
    },
    {
      "commit": "54eabd6c929c6f56da28421839b0ef2945cda876",
      "tree": "2ce5cc658af53e44cb66c2d56e86eb7a32be70e8",
      "parents": [
        "5f760064e1975a50e4abb63e560731c8b2c7b56c"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 06 12:47:12 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 06 13:06:08 2011 -0700"
      },
      "message": "SIP: avoid extreme small values in Min-Expires headers.\n\nIf the expiry time cannot be found in Contact header or Expires\nheader, use the default value of 3600 seconds, which is specified\nin RFC 3261.\n\nChange-Id: I2607a398b96743614b01713cfd9b28f40386fac1\n"
    },
    {
      "commit": "74e0a990ae3196b8195db2a399c22516c7dd0823",
      "tree": "c9028258ca3f336c6b669ab547eed2ef854247f3",
      "parents": [
        "5afd2bd02ae44d5a38f9e560047723ddab176405"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 29 14:24:31 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 02 12:10:45 2011 -0700"
      },
      "message": "VoIP JNI: Force AEC on for tuna board\n\nForce AEC on for tuna board because of the strong feedback\nof Rx audio path, even when playing over earpiece or headset.\n\nChange-Id: I9c14257d56103ba82d6cdb0b7d5a3f315638136e\n"
    },
    {
      "commit": "5f760064e1975a50e4abb63e560731c8b2c7b56c",
      "tree": "4fab26d7e7cc53ad2da7fa21ba0e16d47c0a2858",
      "parents": [
        "fbc4fe3e329285b17f2586c81d6894355dd32b12"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Aug 30 13:58:35 2011 -0700"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Aug 30 13:59:11 2011 -0700"
      },
      "message": "SIP: add the check for expiry time in Contact header.\n\nThere can be three expiry times in the same message header. We\nchoose the smaller value in Expires header and Contact header,\nand then we obey the value defined in Min-Expires header. If\nnone of them is set, the default value is used.\n\nBug: 5178284\n\nChange-Id: Ie9d4a48c93863e82e5197bb4a0db3f4fec56857c\n"
    },
    {
      "commit": "dc5bbe965f7a66238c3f9a6694f4410b3d52af3b",
      "tree": "d0553467ca37f59c4ff220db76d9d9fa2c709945",
      "parents": [
        "8868f9797c39e5fc7c9612fbb69d53f34f03f6a2"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Aug 15 01:07:34 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Aug 15 01:13:41 2011 +0800"
      },
      "message": "Handle SIP authentication response for BYE.\n\nBug: 5159669\nChange-Id: I029684334500d4d0db176783084c9b7d1db87e40\n"
    },
    {
      "commit": "53ad2c7fe212a08ae05fb4d7f27d42f9a0a4b912",
      "tree": "83ce60d0fb85d48cb7b2415a0fb67b80a912529d",
      "parents": [
        "6dd7431710c3737484044ac54d6cd6da1effb614",
        "0793586bf8f4dce71d0b4d7ff2f212129b3f76fe"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Aug 02 13:32:26 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 02 13:32:26 2011 -0700"
      },
      "message": "am 0793586b: am f8c1f129: am e1d27154: am f87743e7: Merge \"Prevent NullPointerException cases while using SipService.\"\n\n* commit \u00270793586bf8f4dce71d0b4d7ff2f212129b3f76fe\u0027:\n  Prevent NullPointerException cases while using SipService.\n"
    },
    {
      "commit": "0793586bf8f4dce71d0b4d7ff2f212129b3f76fe",
      "tree": "7d86a4f06b5725f9dc10f78f03ffaefd6c522404",
      "parents": [
        "8fb7bd4d02cd4ad2111699778e64464d979f03bb",
        "f8c1f1298ac3ede518c8d29eeb6719746c6afaf0"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Aug 02 13:30:51 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 02 13:30:51 2011 -0700"
      },
      "message": "am f8c1f129: am e1d27154: am f87743e7: Merge \"Prevent NullPointerException cases while using SipService.\"\n\n* commit \u0027f8c1f1298ac3ede518c8d29eeb6719746c6afaf0\u0027:\n  Prevent NullPointerException cases while using SipService.\n"
    },
    {
      "commit": "25ccbb97ffd3298caede635f29445073e845cfc3",
      "tree": "9df4200200c7c05e1b872991adece7075aae886a",
      "parents": [
        "01caec8c4165a6cce2f276f8016b9eadab966944"
      ],
      "author": {
        "name": "Masahiko Endo",
        "email": "masahiko.endo@gmail.com",
        "time": "Thu Jul 28 21:51:43 2011 +0900"
      },
      "committer": {
        "name": "Masahiko Endo",
        "email": "masahiko.endo@gmail.com",
        "time": "Mon Aug 01 16:24:59 2011 +0900"
      },
      "message": "Prevent NullPointerException cases while using SipService.\n\nSome SipService methods may return null, in such cases like no Wi-Fi\nconnection. Added minimum check to prevent NullPointerExceptions.\n\nChange-Id: Ia7fae57ee893f2564cbfdedb6dc614938ab60ff7\nSigned-off-by: Masahiko Endo \u003cmasahiko.endo@gmail.com\u003e\n"
    },
    {
      "commit": "5fb3ba60afe68060ac1ed291f4a108fef8c622c3",
      "tree": "767d333b00b3b4e031bca5e42c7af43afd488d0b",
      "parents": [
        "bce8effe75c5477eb42d4e1c4df609da962285a2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 25 12:02:16 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 27 09:33:22 2011 -0700"
      },
      "message": "Issue 3370834: No Echo canceler for SIP\n\nAdded detection of platfrom AEC in AudioGroup. If an AEC\nis present, the SIP stack will use it, otherwise the echo suppressor\nof the stack will be used.\n\nChange-Id: I4aa45a8868466120f5f9fae71b491fe4ae1162c2\n"
    },
    {
      "commit": "307f15faafa5a38d9b3b314df22778cd11685d7b",
      "tree": "6d54cced54f3ec5e100fe5bcb34299687fae117b",
      "parents": [
        "2d6bb33800e35b452a42a8ee0e35043d790b0b22"
      ],
      "author": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Tue Jul 12 08:30:20 2011 +0800"
      },
      "committer": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Wed Jul 13 04:12:28 2011 +0800"
      },
      "message": "Add REFER handling.\n\nHandle REFER requests including REFER with Replaces header.\n\nbug:4958680\nChange-Id: I96df95097b78bed67ab8abd309a1e57a45c6bc2f\n"
    },
    {
      "commit": "3eeb1a98f91dff53eaf00cfb6b6ee8f25917b232",
      "tree": "fb7c5e2f8a3375791c33ae4eedfc88cc446cdb7c",
      "parents": [
        "5de53944e0eed1884fdea2fc58032131dbb143fd",
        "9edfa107575b5905c9ae0a2fa0d6f0cc19595300"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Jul 04 20:37:33 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 04 20:37:33 2011 -0700"
      },
      "message": "Merge \"Keep last known keepalive interval to avoid duplicate effort.\""
    },
    {
      "commit": "9324e04dcf4d5dd4dd08b1a4d7d981e259df3fe0",
      "tree": "d802b2e1139cb38e7cb58edef418064cc3dc0340",
      "parents": [
        "f8c34ad3efd82974f166419b174431564658a7d0",
        "f89654dd2847cc574dfa6a44806289f7e69e17b7"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Sun Jul 03 20:01:55 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jul 03 20:01:55 2011 -0700"
      },
      "message": "Merge \"Do not hold wifi lock when SIP is also available over mobile network.\""
    },
    {
      "commit": "f8c34ad3efd82974f166419b174431564658a7d0",
      "tree": "f5521c82dd0ed69fee101686e94cd7fddb8b5144",
      "parents": [
        "c2b8aa0b4c822b0e307f62131650f4a6ee89bb66",
        "8ba4566c01c5848b378d1d86e9041730f5b5a13f"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Sun Jul 03 19:53:35 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jul 03 19:53:35 2011 -0700"
      },
      "message": "Merge \"Do not keep alive for re-established call.\""
    },
    {
      "commit": "9edfa107575b5905c9ae0a2fa0d6f0cc19595300",
      "tree": "e339cbbc93166473b97c749ef4aa7989180c72c3",
      "parents": [
        "f89654dd2847cc574dfa6a44806289f7e69e17b7"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jul 01 20:32:35 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jul 01 21:20:36 2011 +0800"
      },
      "message": "Keep last known keepalive interval to avoid duplicate effort.\n\nThe current implementation always starts with default minimum interval when\nthe measurement process starts. By keeping last known good interval, we can\nsave the time in re-measurement.\n\nChange-Id: I8f1720acafaa7e101855fe0c66d5c7b0e578e0d7\n"
    },
    {
      "commit": "8ba4566c01c5848b378d1d86e9041730f5b5a13f",
      "tree": "0370a20b5337e6fd5913fea7406116226fc64dd2",
      "parents": [
        "54fa6196b0058933a68cffde17b4413b098630d3"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jul 01 19:43:00 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jul 01 20:26:48 2011 +0800"
      },
      "message": "Do not keep alive for re-established call.\n\nOnly need to keep alive for caller in a newly established call.\n\nChange-Id: I36f9d9499c806c8701e3b78555de399b00593be8\n"
    },
    {
      "commit": "f89654dd2847cc574dfa6a44806289f7e69e17b7",
      "tree": "25ab43ac44c6f0e98c13460d52ab10eaac84c11c",
      "parents": [
        "a6cec8feed5c135bb5f4d6193012d13258a067c4"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jul 01 19:25:46 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jul 01 19:25:46 2011 +0800"
      },
      "message": "Do not hold wifi lock when SIP is also available over mobile network.\n\nBug: 3111564\nChange-Id: Ifc76e5c378d620e40ce4adf6ffa20807e9750fdb\n"
    },
    {
      "commit": "a6cec8feed5c135bb5f4d6193012d13258a067c4",
      "tree": "8dc11237996507354250976fadb32d390c3e5270",
      "parents": [
        "54fa6196b0058933a68cffde17b4413b098630d3"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jun 30 18:05:39 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jun 30 18:17:27 2011 +0800"
      },
      "message": "Synchronize SipWakeupTimer.onReceive()\n\nto fix the race of two threads that change mPendingIntent; one assigns a new one\nand the other nullifies it.\n\nChange-Id: I5e01f83ea1ac437811d2073839adef9bd0a30ec9\n"
    },
    {
      "commit": "129d0b08fdf9588f7c8feeb9db3def30973c092e",
      "tree": "1b1d54102c01a37d6d9fdbaaf884120f98f27337",
      "parents": [
        "99705b52ec952012bedc4aa8e1f62caff80a6a2f"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Jun 29 18:04:31 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jun 30 14:37:24 2011 +0800"
      },
      "message": "Make NAT port timeout measurement more flexible.\n\nIn two ways:\n(1) When there\u0027s a session timeout, restart the measurement at a later time\n    instead of just stalling.\n(2) When there\u0027s a port change, do not re-measure the interval if the current\n    interval works well in the past. We keep success count and decrement it\n    by half when there\u0027s a port change. When the count is below a threshold,\n    we restart the measurement process.\n\nChange-Id: I7256464435a5e2d2a239bfccaa004e9ceb1d9ce5\n"
    },
    {
      "commit": "99705b52ec952012bedc4aa8e1f62caff80a6a2f",
      "tree": "e0548343dd676125932839bd8acfbf1ae8e8995a",
      "parents": [
        "d9f10ab6fe10a4eb42bd0ed59d2abbe5816164dc"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 28 19:56:19 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 28 20:05:53 2011 +0800"
      },
      "message": "Record external IP and port from SIP responses\n\nand use them to create the contact header when sending OK response for INVITE.\n\nBug: 3461707\nChange-Id: I5b254618f4920cf10a1460631bcd336778f344ec\n"
    },
    {
      "commit": "2093561a58e602450f6e4f2aae4831edd1b840f4",
      "tree": "ca630646a0066ed77f454c978778364464625cfa",
      "parents": [
        "82155cfc88c9396de9159659cf246caeb08b5f43"
      ],
      "author": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Tue Jun 28 15:25:44 2011 +0800"
      },
      "committer": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Tue Jun 28 19:45:10 2011 +0800"
      },
      "message": "Support INVITE w/o SDP.\n\nbug:3326873\n\nChange-Id: Ie29d2c61b237fee2d8637f4ba3d293a22469cced\n"
    },
    {
      "commit": "233718c3c5a4f5b4f564af93cb2e42d80a900904",
      "tree": "54dbe6cfcf46baf1ef01309ecd258734ac79ad82",
      "parents": [
        "a084c841aa4b5c0ab2e0e7a62c58a852633adb62"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Jun 27 19:20:48 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Jun 27 19:33:24 2011 +0800"
      },
      "message": "Start keepalive process for the caller of a SIP call\n\nso that the callee can send signals (on-hold or bye) back to the caller.\nWithout the keepalive, the NAT port for the caller will be timed out during the\ncall. And the signals will be dropped by the NAT device.\n\nChange-Id: I21848d73469045b2ed9e7281556ab184c594c362\n"
    },
    {
      "commit": "1aceda35cc607856ec2e960e0c6cfc6aea87ab8e",
      "tree": "df58a646008282041c3f1e1b959a888e01f0f6fe",
      "parents": [
        "14f14863c508ff38fb2fe925c89e2bb2228fcffe"
      ],
      "author": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Thu Jun 23 19:40:36 2011 +0800"
      },
      "committer": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Mon Jun 27 16:20:28 2011 +0800"
      },
      "message": "Support Invite w/ Replaces request.\n\nbug:3326870\nChange-Id: Idbfbe7e3cc6ba83874d42bfb7d149866f454e70a\n"
    },
    {
      "commit": "e65f3a896f03bba5327ce4f3989c0422855450ca",
      "tree": "28e247e2cb528746e5567a204eb7836cabbdbc9e",
      "parents": [
        "4af085ff26fbe9e13f7002496fd505dbdb36b282"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jun 24 15:17:25 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jun 24 15:28:15 2011 +0800"
      },
      "message": "Restart NAT port timeout measurement when keepalive fails and other fixes\n\nMisc keepalive fixes including:\n+ Restart NAT port timeout measurement when keepalive fails. The max interval\n  is set to the current keepalive interval.\n+ When exception occurs during sending a keepalive, restarts registration.\n+ When exception occurs during measurement, retry for a limited times before\n  giving up.\n\nChange-Id: I7aa787a5ec7c4c9b4334aa1017371d9049b3520c\n"
    },
    {
      "commit": "4af085ff26fbe9e13f7002496fd505dbdb36b282",
      "tree": "cc1a34715027a8c83223842b370a4f07e2190a33",
      "parents": [
        "12750701d0f90ed0166f5ddcf588c1235efe830a"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jun 23 18:32:59 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jun 23 19:23:13 2011 +0800"
      },
      "message": "Execute all the due wakeup events in SipWakeupTimer.\n\nEvents are sorted by periods. So events of larger periods may have trigger\ntime (i.e., when the event should be processed) earlier than the ones of smaller\nperiods. So need to scan the whole queue looking for due events. The scan takes\nO(n) time but we expect the queue size to be small.\n\nChange-Id: I08bd3bd9d4bb8decb78f3c91c943396463ca023a\n"
    },
    {
      "commit": "12750701d0f90ed0166f5ddcf588c1235efe830a",
      "tree": "0fc43fe8805f54ad0dda88023414a416b4a260ad",
      "parents": [
        "4a267a9158a62010cd76ab93681586ea8e3d6015"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jun 23 18:23:09 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jun 23 18:23:09 2011 +0800"
      },
      "message": "Keep the keepalive process going after NAT port is changed.\n\nThis is a regression from the CL that makes the keep-alive process a reusable\ncomponent.\n\nChange-Id: I1d580588e9e303c532bf620056fc0fe88a2fdcda\n"
    },
    {
      "commit": "4a267a9158a62010cd76ab93681586ea8e3d6015",
      "tree": "123128c507d1e3cabff75914bdcc9bd7623ee1eb",
      "parents": [
        "ac320b224590c8cdea93a50338aaef5faa1f2466"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Jun 22 16:42:38 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jun 23 11:41:37 2011 +0800"
      },
      "message": "Move the keepalive process to SipSessionImpl and make it reusable.\n\nReuse the new component in the original keepalive process and the NAT port\nmapping timeout measurement process.\n\nThis is the foundation for fixing the following bug.\n\nBug: 3464181\n\nChange-Id: If7e951c000503fa64843942ad062c4d853e20c8d\n"
    },
    {
      "commit": "ac320b224590c8cdea93a50338aaef5faa1f2466",
      "tree": "9e26bce9a77bd7624e4549875fdf581cf00e59bd",
      "parents": [
        "497e4437af386930dff3bd55296d128bd4520959",
        "5621554033089d1c07d53f56e8cd9787125d6e28"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Jun 15 03:17:50 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 15 03:17:50 2011 -0700"
      },
      "message": "Merge \"Move WakeupTimer out of SipService.\""
    },
    {
      "commit": "5621554033089d1c07d53f56e8cd9787125d6e28",
      "tree": "41ef32096126e59cb66eb6fc55c1509aceeb6688",
      "parents": [
        "b3610666c63d598097706924ec9f4d688a3a724f"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 14 16:54:18 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 14 17:46:48 2011 +0800"
      },
      "message": "Move WakeupTimer out of SipService.\n\nThis is to prepare to move keepalive process to SipSessionGroup before fixing\nthe following bug.\nBug: 3464181\n\nChange-Id: I57d8f6effad76706b5a76e1269c53d558db88ae4\n"
    },
    {
      "commit": "c133781723f64d1321685d02ad6a208286bf0a42",
      "tree": "38896206672ab77f9b81a8929f985017dee65749",
      "parents": [
        "b3610666c63d598097706924ec9f4d688a3a724f"
      ],
      "author": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Mon Jun 13 17:07:41 2011 +0800"
      },
      "committer": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Mon Jun 13 17:46:41 2011 +0800"
      },
      "message": "Fix the issue of onNetwork in UI thread.\n\nbug:458435\n\nThis will temporarily start a thread for answering calls, we are\ngoing to add a handler thread to handle this soon.\n\nChange-Id: I9079038d671e1b1631c6e663fc2c3de297d97428\n"
    },
    {
      "commit": "bb0a989c17cd6135c8d9c8566507521d4d927fe0",
      "tree": "d6ade1871b2506ffc8ece9baa88fe85cc7417baa",
      "parents": [
        "2db439bdd819c99a0c96c8c60ff49be5727d9471"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Mar 10 11:33:39 2011 +0800"
      },
      "committer": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Thu Jun 09 18:19:07 2011 +0800"
      },
      "message": "Add KeepAlive Interval Measurement.\n\nChange-Id: Id5ea2fcfa0bcd45198e773a5842d39eacc8ae400\n"
    },
    {
      "commit": "34bb419e5946ab28112e9e27a4d1b3928d31e0e2",
      "tree": "3186b2ce206a101b19285660af602ec66bdbc831",
      "parents": [
        "b856f43ea7a3a5261a93e432e5ea80005e972530"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed May 11 14:15:23 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu May 12 14:09:57 2011 -0700"
      },
      "message": "update for new audio.h header location\n\nChange-Id: Ic4c62c4037800802427eb7d3c7f5eb8b25d18876\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "4b3913a3e43d3180b21d77cc2f717b446350354f",
      "tree": "aaf732cc46e6de836182cb03b1663c438d6127c8",
      "parents": [
        "4fbb31383004417b9e059ed9f51eb92c81c2773b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 11 14:13:42 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 11 14:24:58 2011 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit c80992e419ed567abef451042f09c4958534b90d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 11 14:00:07 2011 -0700\n\n    Support for the mp3 audio decoder as a software OMX component.\n\n    Change-Id: I66e10c4d0be4c3aecdef1c21b15a2c7359ceb807\n\ncommit a358d0e1bf2a88897887445f42ccdda0f5f2f528\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 11 13:11:23 2011 -0700\n\n    Support for G.711 alaw and mulaw decoders as software OMX components\n\n    Change-Id: Ia5c76c02cb83a9f94ce39a27b2251e5880218f03\n\ncommit 79088b9c9a5c8b8c97ea66cb4f90a2b0f0d34553\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 5 15:43:32 2011 -0700\n\n    Instead of using an RGB surface and conversion yuv420-\u003ergb565\n\n    convert from OMX_COLOR_FormatYUV420Planar to HAL_PIXEL_FORMAT_YV12 instead.\n\n    Change-Id: I8c4fc3c54c963f0d4ba6377f3c4ab4e0013152e5\n    related-to-bug: 4394005\n\ncommit 69469d3bd84425777b11b9fc938c5e0c61af26a7\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 10 15:46:42 2011 -0700\n\n    voip mustn\u0027t link against libstagefright.so\n\n    Change-Id: I4d0ba9a8b9dc9380b792a1bd04bcda231964862c\n\ncommit 2a9a9eeeeeb36ae3a9e680469c3016d509ff08c3\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 10 14:37:10 2011 -0700\n\n    Remove most non-OMX software decoders by default\n\n    Change-Id: Ic56514bc1b56b8fa952e8c4a164ea7379ecb69d0\n\ncommit a4de62c37b335c318217765403a9fb282b20a216\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 9 16:50:02 2011 -0700\n\n    Conditionally build the old-style software decoders.\n\n    Change-Id: I5de609e1d76c92d26d6eb81d1551462258f3f15f\n\ncommit 5d8b039f9449dc3dad1e77c42c80cc0b54b0c846\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 9 16:13:12 2011 -0700\n\n    Support for MPEG4 and H.263 video decoders as soft OMX components.\n\n    Change-Id: I5e3a4835afab89f98e3aa128d013628f5830eafe\n\ncommit b25a1bfbeb0ff6e62e1cc694ce2599c91489c7d0\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 9 11:49:10 2011 -0700\n\n    Boost Soft OMX thread priority, fix timestamp handling in vorbis Soft OMX decoder.\n\n    Change-Id: I68d26d4999f06fcc451d69e5303663fab0cba9e8\n\ncommit c0574362f8dc3319ce84d981097867062a698527\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 9 11:28:53 2011 -0700\n\n    Support for the AMR decoders (NB and WB) as Soft OMX components.\n\n    Change-Id: Ia565f59833fb52653e23f26536e7e41fc329a754\n\ncommit 3e5575a8f0e27a490cb7bde77bd9456087837f08\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 4 13:41:25 2011 -0700\n\n    Signal an error if the aac decoder failed to initialize from codec specific data.\n\n    Change-Id: I01da7831bdf722edd7d6dc5974486daa2cf2b209\n    related-to-bug: 4272179\n\ncommit f94aeaa9886e772ff4823e671ed237096649f4af\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 3 13:07:38 2011 -0700\n\n    Software OMX nodes don\u0027t (yet?) support native_window mode.\n\n    Change-Id: I7d9ca9164ef4abf66b573ca21dba12d672f8b12d\n\ncommit eefdfabac8dc659e00daa56da69aea705c49cb67\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 3 12:57:16 2011 -0700\n\n    Fixing the OMX tests to refer to appropriate files from test content.\n\n    Change-Id: I5b61c3498749bfb876abbd3946a5132356e3f6ff\n\ncommit f31b7326aef14b6a1b7946520a9688f092e844d5\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 3 11:08:38 2011 -0700\n\n    Soft OMX components are now dynamiclly loaded/unloaded, not directly linked against.\n\n    Change-Id: I1e2ecfbfab67a8869886f738eaf0c7b3c948b6d9\n\ncommit b7f0343879e4df06f0a1c9bfece24df557954e2f\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 2 15:58:36 2011 -0700\n\n    Support for the AVC software decoder as an OMX component.\n\n    Change-Id: I13c12df435ba4afbd968a9fc659f66b91c818bc2\n\ncommit 5bb9e616d6c8e1b13d531fe996b9a9affdfb2977\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Apr 29 12:05:37 2011 -0700\n\n    Fix Vorbis OMX decoder\u0027s component role.\n\n    Change-Id: I5e871e5e11b3f951c93590210e63fd7987c467b5\n\ncommit 089c91f2333062e196c7afd5fb0ca914878aa474\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Apr 29 12:05:18 2011 -0700\n\n    Support vorbis_decoder OMX testing.\n\n    Change-Id: I1985be178a12ae3f8768bc72067d9236238be170\n\ncommit 56e241fa36fc37219bc536b823bdc2ab82dc1fad\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Apr 29 12:01:46 2011 -0700\n\n    SoftVorbis OMX component now respects the number of valid frames per page.\n\n    Change-Id: I82a117a064d9b083fc58a54ad900a987a763ef03\n\ncommit fcd618ec520c376fdb78f4cbb44b8d9f5d213e2b\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Apr 29 10:59:38 2011 -0700\n\n    Support for the vorbis audio decoder as a soft OMX component.\n\n    Change-Id: Iaeb057e58ca306d3dce205c0445b74d5aefef492\n\ncommit d1fcc3203fc8003ad79c6e96b3a1fc4261743f16\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Apr 29 10:07:50 2011 -0700\n\n    VPX decoder now properly resizes buffers after a port settings change.\n\n    Change-Id: I110749a31b6cba087891d8e5dfe420830bdbf831\n\ncommit 35c7168243cb69849d88911144a2c7fdfed5c54e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Apr 28 13:23:34 2011 -0700\n\n    Support for the VPX video decoder as a Software OMX component.\n\n    Change-Id: Ic345add2d6d768d4af631160153f2e9b97fcea71\n\ncommit 923b2534b4211fc5405377b5190bfa6f2dd27f32\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Apr 28 11:34:40 2011 -0700\n\n    Table-based registration of soft omx components.\n\n    Change-Id: I7f45f0fa5b3a7950776e69c66349731f7674e937\n\ncommit 04a88f3edb2266a463da9c4481b80178be460902\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Apr 28 11:22:31 2011 -0700\n\n    Apparently OMX_GetParameter is valid in any state other than OMX_StateInvalid\n\n    OMX_SetParameter is still constrained to OMX_StateLoaded or a disabled port.\n\n    Change-Id: I1032d7cf4011982d306aa369d4158a82830d26fb\n\ncommit 9d70ca68445e7c40f5c9b2d12466e468f514de88\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Apr 27 15:03:18 2011 -0700\n\n    Use the new soft OMX aac decoder for HTTP live playback.\n\n    Change-Id: Ifbcfb732a9edb855cb46b49f6d0ac942170ee28f\n\ncommit 213fe4a10ea93cce08e8622dc3908053f29878a1\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Apr 12 16:39:45 2011 -0700\n\n    Foundation for supporting software decoders as OMX components\n\n    Change-Id: I7fdab256563b35d1d090617abaea9a26b198d816\n\nChange-Id: I83e9236beed4af985d10333c203f065df9e09a42\n"
    },
    {
      "commit": "b8df57d8767923f40bd52a0d2d1114e67fa76fa5",
      "tree": "508cbc6e93437356ac7ea6b14f9a7c434c0352bb",
      "parents": [
        "2d92d7791766e35ad6896a7a6a074d68008fe6dd",
        "d81214dae45a4b38919296af41bf756e3931675a"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu May 05 18:04:28 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 05 18:04:28 2011 -0700"
      },
      "message": "am d81214da: am a7a9c4cb: am 46524f83: Merge \"docs: add package description for RTP\" into honeycomb-mr1\n\n* commit \u0027d81214dae45a4b38919296af41bf756e3931675a\u0027:\n  docs: add package description for RTP\n"
    },
    {
      "commit": "d81214dae45a4b38919296af41bf756e3931675a",
      "tree": "2f22e2fed6c29b946d2e88ea00609f9f8dbeee54",
      "parents": [
        "2cd90733cc17dcebb682d82f9dcf847877627043",
        "a7a9c4cbbc2315a59ad27b43c83c66e272dcc2f2"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu May 05 18:02:47 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 05 18:02:47 2011 -0700"
      },
      "message": "am a7a9c4cb: am 46524f83: Merge \"docs: add package description for RTP\" into honeycomb-mr1\n\n* commit \u0027a7a9c4cbbc2315a59ad27b43c83c66e272dcc2f2\u0027:\n  docs: add package description for RTP\n"
    },
    {
      "commit": "de9acb76d9ea398d0ba4c5e62df554f5696eaa99",
      "tree": "9b669165941376a5c7fc9c6e9c8fc4cc7100f7ba",
      "parents": [
        "0369cf98743e72d052eb5542125f58d1ad2f7f61"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu May 05 16:17:40 2011 -0700"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu May 05 17:32:01 2011 -0700"
      },
      "message": "docs: add package description for RTP\n\nChange-Id: I02c181a48101be288fb4aabf497f573f00038f90\n"
    },
    {
      "commit": "24fc2fb1c541e954b83fd31ea9f786a5e9b45501",
      "tree": "e85b3ff86b73d56e16ab640919d251c046371c65",
      "parents": [
        "4dc22e77cfd2a1c3671e5646ee87c5e4c15596a0"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Apr 19 22:30:36 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 13:10:10 2011 -0700"
      },
      "message": "audio/media: convert to using the audio HAL and new audio defs\n\nChange-Id: Ibc637918637329e4f2b62f4ac7781102fbc269f5\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "d8cbd16659d1a5d098acfcfa8ee98c95036aff63",
      "tree": "5f25ad8815d9e0e3cd1fb543c0ffaea3d5594901",
      "parents": [
        "a88990cf5b5df9ac3efeca8af14e75b7f5d679b7",
        "7a492a9ad42947a3a7b777b0eb6eec56f5bb942b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 05 10:27:06 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 05 10:27:06 2011 -0700"
      },
      "message": "am 7a492a9a: am b7a76e84: am a482d83c: Merge \"Issue 4157048: mic gain for VoIP/SIP calls.\" into gingerbread\n\n* commit \u00277a492a9ad42947a3a7b777b0eb6eec56f5bb942b\u0027:\n  Issue 4157048: mic gain for VoIP/SIP calls.\n"
    },
    {
      "commit": "7a492a9ad42947a3a7b777b0eb6eec56f5bb942b",
      "tree": "f7b07a079cf640dbd2e9f2b7bd32b9e48b139ae2",
      "parents": [
        "824c6edce8f79aac9c98caabd9b8857d4c580629",
        "b7a76e84fde7fe534d46aaaa71e3224798354009"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 04 17:44:50 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 04 17:44:50 2011 -0700"
      },
      "message": "am b7a76e84: am a482d83c: Merge \"Issue 4157048: mic gain for VoIP/SIP calls.\" into gingerbread\n\n* commit \u0027b7a76e84fde7fe534d46aaaa71e3224798354009\u0027:\n  Issue 4157048: mic gain for VoIP/SIP calls.\n"
    },
    {
      "commit": "b7a76e84fde7fe534d46aaaa71e3224798354009",
      "tree": "537fe7d6705a519eeeece994c7df3004414fde58",
      "parents": [
        "179122ad56f12bd802fd29fe0b6606dd23ec5ba9",
        "a482d83ccf35ccd6cc29a9e1ace3d77b5f28d013"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 04 12:25:37 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 04 12:25:37 2011 -0700"
      },
      "message": "am a482d83c: Merge \"Issue 4157048: mic gain for VoIP/SIP calls.\" into gingerbread\n\n* commit \u0027a482d83ccf35ccd6cc29a9e1ace3d77b5f28d013\u0027:\n  Issue 4157048: mic gain for VoIP/SIP calls.\n"
    },
    {
      "commit": "d7a724e6d89420408200c20937baa3b2bd902742",
      "tree": "814c39640271aeb36e7c39060bee6fb5c9e8f7e3",
      "parents": [
        "87805ca3a477e165891baa18efe5239a70d11bc9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 29 18:22:57 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 29 18:44:03 2011 -0700"
      },
      "message": "Issue 4157048: mic gain for VoIP/SIP calls.\n\nHerring board exhibits a strong echo even in non speakerphone modes.\nTo compensate the lack of AEC or AES when not in speakerphone, the mic gain\nhad been reduced in the ADC. But this has an adverse effect on other VoIP applications\nthat have their own AEC and are penalized by the weak mic gain.\n\nThis workaround enables an acceptable mic gain for other VoIP apps while offering a\nSIP call experience which is not worse than it was with the residual echo that was\npresent even with mic gain reduction.\n\nChange-Id: I33fd37858758e94e42ef5b545d3f0dc233220bf1\n"
    },
    {
      "commit": "397de169e5462bf0c62506827819f93336b3f123",
      "tree": "1e54bf618f07565402bd46bb101e62a1ee972569",
      "parents": [
        "37c1bbb51a5013f4319447106f834a4a9e0511cb",
        "fae5e2894ff3c09f27efac2a7ee6b9cfd4ed14b0"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Mar 29 08:53:48 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 29 08:53:48 2011 -0700"
      },
      "message": "am fae5e289: am 6f67e7bf: am 2e383bc6: Merge \"Making it possible to call SIP calls with special allowed chars.\"\n\n* commit \u0027fae5e2894ff3c09f27efac2a7ee6b9cfd4ed14b0\u0027:\n  Making it possible to call SIP calls with special allowed chars.\n"
    },
    {
      "commit": "fae5e2894ff3c09f27efac2a7ee6b9cfd4ed14b0",
      "tree": "5d36d51782e524634a2e59688930e682f3b2b845",
      "parents": [
        "8ef609abe56c9872c93fc304037d1e52d4475e5e",
        "6f67e7bf831147257e078dd72a22f2e43e009122"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Mar 29 08:45:30 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 29 08:45:30 2011 -0700"
      },
      "message": "am 6f67e7bf: am 2e383bc6: Merge \"Making it possible to call SIP calls with special allowed chars.\"\n\n* commit \u00276f67e7bf831147257e078dd72a22f2e43e009122\u0027:\n  Making it possible to call SIP calls with special allowed chars.\n"
    },
    {
      "commit": "b5c72ead014a509c0f84884d1f2dac1ff9deec8e",
      "tree": "37515f9bc7852be8637b1846c4ddf0cf96418e9a",
      "parents": [
        "d973bed36cb4d4da1d97f309119f4114f60e7171"
      ],
      "author": {
        "name": "Magnus Strandberg",
        "email": "magnus.strandberg@sonyericsson.com",
        "time": "Tue Mar 22 08:03:58 2011 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonyericsson.com",
        "time": "Tue Mar 22 08:03:58 2011 +0100"
      },
      "message": "Making it possible to call SIP calls with special allowed chars.\n\nSince String.replaceFirst uses regex and since SIP user names are\nallowed to include regex charaters such as \u0027+\u0027, the code must\nfist convert the string to a literal pattern String before using\nreplaceFirst method.\n\nChange-Id: I25eac852bd620724ca1c5b2befc023af9dae3c1a\n"
    },
    {
      "commit": "3f9e08973f33a5640e52381431ef02aa184dd018",
      "tree": "782cdab1b9f2ff21bf10aaa3320f1ca2cec9c579",
      "parents": [
        "b2613555f654d485d9882c662384c4c2fcd89c2b"
      ],
      "author": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Mon Mar 21 20:21:40 2011 -0700"
      },
      "committer": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Mon Mar 21 20:21:40 2011 -0700"
      },
      "message": "Include strings.h instead of string.h for the strcasecmp prototype.\n\nChange-Id: I6b0ddc2408c30851edcffb36f1bc74245403ffc7\n"
    },
    {
      "commit": "3070af08821ee86f06a9cc6b58dbb79c82946b94",
      "tree": "350ed99dcd32f33f936639c946b0176ed6022693",
      "parents": [
        "e3f075622da4e78772abf21a5a219a0d48bc6c04"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Mar 14 14:02:13 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Mar 14 14:25:59 2011 -0700"
      },
      "message": "frameworks/base: remove LOCAL_PRELINK_MODULE\n\nChange-Id: I54dd62ebef47e7690afa5a858f3cad941b135481\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "6defd2d47e81b206d76430266120294a40592b27",
      "tree": "08690e4360fe67b6cbb1c254bc8f060dad6a0a3b",
      "parents": [
        "6478e4f0b0a6d34251ca0125eb6067f038e344aa"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Mar 03 08:58:05 2011 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Mar 08 05:59:09 2011 +0800"
      },
      "message": "NEW_API: Unhide RTP APIs.\n\nThis change unhides RTP related classes including AudioCodec,\nAudioGroup, AudioStream, and RtpStream. This allows developers\nto control audio streams directly and also makes conference\ncalls possible with the combination of the public SIP APIs.\n\nChange-Id: Idfd4edf65a1cbf3245ec2786fbc03b06438b0fb3\n"
    },
    {
      "commit": "c52f5b2ec5e13ab3d9ab016e6cab757d4ecb45c7",
      "tree": "4e4d8639ad216e4edfce2852ec7f1c5eeb38e238",
      "parents": [
        "0528bc77948e49bd75cfd4082fb8fef3a7238626"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Mar 03 07:59:00 2011 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Mar 03 08:01:01 2011 +0800"
      },
      "message": "RTP: update javadocs.\n\nChange-Id: If600df0eb1e6135aed9f3b2eacfb6bc9ed5d78ff\n"
    },
    {
      "commit": "89bc1fe73efb73b43758d41c9ff9f2f4902dd019",
      "tree": "1cc8a92462a7c12a709584ee683d5d948ed623b9",
      "parents": [
        "66d16910a84c9a67d854cf1d2d78cee94641be1f"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Feb 25 10:17:16 2011 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Feb 25 10:21:37 2011 +0800"
      },
      "message": "Activate the wifi high perf. for sip calls.\n\nbug:3487791\n\nChange-Id: I7d8d146f8542cd7df387547c7ce3d5ded27f8e97\n"
    },
    {
      "commit": "fcd0e50da51074703929e9f7b700a2cd11bd67e0",
      "tree": "03d46d3d1e2fb4710b4e4e695a4ec30b8130bd2e",
      "parents": [
        "25474a2230152700e5f7eb7e1495be40c6bd26a8"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Feb 21 11:50:25 2011 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Feb 21 11:53:58 2011 +0800"
      },
      "message": "Add rport argument for a reinvite request.\n\nbug:3461707\nChange-Id: I69a4f84dde3929c754c838fd12e624b774f44826\n"
    },
    {
      "commit": "9e25df44631e3c7881a6816cf26f34ea24055c72",
      "tree": "06a8fab71076f0d90210f7627c1410696d3e696a",
      "parents": [
        "88083d4f2b9c2dc66ba39bd2c4ffa0ff7c1fbcd4"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Feb 10 15:20:41 2011 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Feb 17 15:06:08 2011 +0800"
      },
      "message": "Make SIP AuthName APIs public.\n\nbug:3326867\nChange-Id: I766e6e28f6ad3e84de2c9e24850d472ad00271cc\n"
    },
    {
      "commit": "2ba92c71b5684dce700cf848bf157153c156df1d",
      "tree": "4a5fd1c92f47a6557552adbb65898c35866d9662",
      "parents": [
        "138757db4f19cb626ef5c1d371d4fca004304a08"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Nov 15 12:11:32 2010 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 26 11:20:01 2011 -0800"
      },
      "message": "do not merge bug 3370834 Cherrypick from master\n\nCherripick from master CL 79833, 79417, 78864, 80332, 87500\n\nAdd new audio mode and recording source for audio communications\n other than telelphony.\n\nThe audio mode MODE_IN_CALL signals the system the device a phone\n call is currently underway. There was no way for audio video\n chat or VoIP applications to signal a call is underway, but not\n using the telephony resources. This change introduces a new mode\n to address this. Changes in other parts of the system (java\n and native) are required to take this new mode into account.\nThe generic AudioPolicyManager is updated to not use its phone\n state variable directly, but to use two new convenience methods,\n isInCall() and isStateInCall(int) instead.\n\nAdd a recording source used to designate a recording stream for\nvoice communications such as VoIP.\n\nUpdate the platform-independent audio policy manager to pass the\n nature of the audio recording source to the audio policy client\n interface through the AudioPolicyClientInterface::setParameters()\n method.\n\nSIP calls should set the audio mode to MODE_IN_COMMUNICATION,\n Audio mode MODE_IN_CALL is reserved for telephony.\n\nSIP: Enable built-in echo canceler if available.\n1. Always initialize AudioRecord with VOICE_COMMUNICATION.\n2. If echo canceler is available, disable our echo suppressor.\n\nNote that this CL is intentionally not correcting the\n getAudioSourceMax() return value in MediaRecorder.java as the\n new source is hidden here.\n\nChange-Id: Ie68cd03c50553101aa2ad838fe9459b2cf151bc8\n"
    },
    {
      "commit": "14b6d0620b42d1bb3a55778ba452d838a0d89223",
      "tree": "258cc2ca7aac50e1beed414cf5beff6a24820465",
      "parents": [
        "d8bdc06f8139231f1edc1a8bf22b637ebb790605",
        "f0bb1ce70f8d5f19f0d63be070997ef237a15fe6"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Jan 24 19:41:42 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 24 19:41:42 2011 -0800"
      },
      "message": "Merge changes Ib70e0cf2,I0691cd70 into gingerbread\n\n* changes:\n  SipService: registers broadcast receivers on demand.\n  SipService: release wake lock for cancelled tasks.\n"
    },
    {
      "commit": "f46013b67219b0b2e95fcebb0e51e9816ab0ce94",
      "tree": "e8ab58bd7d809f84c1f0fe038c3437e7dd39e04d",
      "parents": [
        "40f2cacbc9ab00d34c2a4f49519921bbf6b5293a",
        "e9b54077274d0c4066093cd90dabca59b3d9a157"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jan 18 02:25:52 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 18 02:25:52 2011 -0800"
      },
      "message": "Merge \"Merge \"SipService: registers broadcast receivers on demand.\"\" into honeycomb"
    },
    {
      "commit": "e9b54077274d0c4066093cd90dabca59b3d9a157",
      "tree": "3a12354bf6a5d5cec0b4fbc8d793ba4ea5ffa04c",
      "parents": [
        "9d0577ec0c285c055da4c910dcb597fdae5bc5e5"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jan 07 11:57:22 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jan 18 16:55:44 2011 +0800"
      },
      "message": "Merge \"SipService: registers broadcast receivers on demand.\"\n\nThe previous implementation registers receivers when SipService starts up.\nIf the user doesn\u0027t use SIP at all, SipService will still process connecivity\nand wifi state change events, which involves holding wake lock and thus\nconsumes power unnecessarily.\n\nWith this CL, SipService is completely idle if the user doesn\u0027t use SIP at all.\nIt registers receivers only when at least one account is opened.\n\nBug: 3326998\nChange-Id: Idea43747f8204b0ccad3fc05a1b1c0b29c9b2557\n"
    },
    {
      "commit": "40f2cacbc9ab00d34c2a4f49519921bbf6b5293a",
      "tree": "b7cfba163128587a95a1e22693b8c5ffe750df72",
      "parents": [
        "9d0577ec0c285c055da4c910dcb597fdae5bc5e5"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jan 06 13:03:30 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jan 18 16:50:56 2011 +0800"
      },
      "message": "Merge \"SipService: release wake lock for cancelled tasks.\"\n\nBug: 3327004\nChange-Id: Ice47f973b5f2969f26eaa83a3e4795b2e153ba8b\n"
    },
    {
      "commit": "0f7de88cb9eef781117fa2f2b69ba2698237637e",
      "tree": "f6c4cc438f5b1dc814c7868021e0dc3990f82b6a",
      "parents": [
        "5220834c6ccdabf949dfe7160548ad378850d71b"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jan 06 18:44:43 2011 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jan 12 11:43:27 2011 +0800"
      },
      "message": "Merge \"Add auth. username in SipProfile.\" from gingerbread.\n\nbug:3326867\nChange-Id: Ic67dd7d4858f28224e4f01ad8b65bcd3a3c15f10\n"
    },
    {
      "commit": "f268a2f8488b6b111126a7043a5f1f559a566fa7",
      "tree": "cf8cb2f768f77b6309d046ec17bd73e787647d10",
      "parents": [
        "9ffb0a0df3a97115234bd50a73ca60efcefb4ef7"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jan 06 18:44:43 2011 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Jan 07 15:21:54 2011 +0800"
      },
      "message": "Add auth. username in SipProfile.\n\nbug:3326867\nChange-Id: I2a62c75fb3f5e9c6ec2e00b29396e93b0c183d9b\n"
    },
    {
      "commit": "f0bb1ce70f8d5f19f0d63be070997ef237a15fe6",
      "tree": "d7d5da2e2132653e8550546adcdcef2d7111ce32",
      "parents": [
        "0c01e6e060d079b0a25a44c1159db63944afce17"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jan 07 11:57:22 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jan 07 11:57:22 2011 +0800"
      },
      "message": "SipService: registers broadcast receivers on demand.\n\nThe previous implementation registers receivers when SipService starts up.\nIf the user doesn\u0027t use SIP at all, SipService will still process connecivity\nand wifi state change events, which involves holding wake lock and thus\nconsumes power unnecessarily.\n\nWith this CL, SipService is completely idle if the user doesn\u0027t use SIP at all.\nIt registers receivers only when at least one account is opened.\n\nBug: 3326998\nChange-Id: Ib70e0cf2c808e0ebab4c3c43dcab5532d24e5eeb\n"
    },
    {
      "commit": "d87be273aaea32995c87a6cbc6250cbfeeddd84d",
      "tree": "b47838a908c343597a62220190f9eba5b14f62f6",
      "parents": [
        "4bf82df2f069b5a788689064bf8d3f6b612587d4"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jan 06 17:43:24 2011 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jan 06 17:43:24 2011 +0800"
      },
      "message": "Enable built-in echo canceler if available.\n\n1. Always initialize AudioRecord with VOICE_COMMUNICATION.\n2. If echo canceler is available, disable our echo suppressor.\n\nChange-Id: Idf18d3833189a8478c1b252ebe6ce55e923280b3\n"
    },
    {
      "commit": "4bf82df2f069b5a788689064bf8d3f6b612587d4",
      "tree": "ef73af6579d45ec3eee2e939b7bd2e67a21a82e3",
      "parents": [
        "c91d8c3ea5d2a3a065f7d5074817689713ea6dda"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jan 06 15:51:45 2011 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jan 06 15:51:45 2011 +0800"
      },
      "message": "Do not set back to AudioManager.MODE_NORMAL in SipAudioCall.\n\nChange-Id: I8f68e01e5f8c73bb8afd44312cbfadb55aab4330\n"
    },
    {
      "commit": "0c01e6e060d079b0a25a44c1159db63944afce17",
      "tree": "3d3f0fd6592051c315f1805d0a942f5c1aeecc93",
      "parents": [
        "b5a8654dea9ea8443b41f8ff3668ae4074e13a07"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jan 06 13:03:30 2011 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Jan 06 13:05:29 2011 +0800"
      },
      "message": "SipService: release wake lock for cancelled tasks.\n\nBug: 3327004\nChange-Id: I0691cd70edf61f815ecb0613aca85babd89f6cc4\n"
    },
    {
      "commit": "d0da38079617e867db5d2bbdaaaa4cd49027d4eb",
      "tree": "47c270c516d1a8774f0d0aa328dacaf3803392f6",
      "parents": [
        "b4ff35df5c04aec71fce7e90a6d6f9ef7180c2ad",
        "dc78e3fe7f2ffbc810cd54e86e3a83e279d74984"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Jan 04 17:41:16 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 04 17:41:16 2011 -0800"
      },
      "message": "am dc78e3fe: am 3cf71376: RTP: Send silence packets on idle streams for every second.\n\n* commit \u0027dc78e3fe7f2ffbc810cd54e86e3a83e279d74984\u0027:\n  RTP: Send silence packets on idle streams for every second.\n"
    },
    {
      "commit": "3cf71376421f942d06b30101fbf0df7f3b23fbdd",
      "tree": "7714d04d17be68fc45429ea6e631123915a439e1",
      "parents": [
        "8f49c025ca5b4ed84290fb9e5e0b7acb1c139b35"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Jan 04 19:10:06 2011 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Jan 04 19:54:49 2011 +0800"
      },
      "message": "RTP: Send silence packets on idle streams for every second.\n\nOriginally a stream does not send packets when it is receive-only or there is\nnothing to mix. However, this causes some problems with certain firewalls and\nproxies. A firewall might remove a port mapping when there is no outgoing\npacket for a preiod of time, and a proxy might wait for incoming packets from\nboth sides before start forwarding. To solve these problems, we send out a\nsilence packet on the stream for every second. It should be good enough to\nkeep the stream alive with relatively low resources.\n\nBug: 3119690\nChange-Id: Ib9c55e5dddfba28928bd9b376832b68bda24c0e4\n"
    },
    {
      "commit": "33808c6d2448bbc944905819c213f2debf18af5a",
      "tree": "c0877297ac559f07122c98dca19990b395d01b1d",
      "parents": [
        "efe5bd77eb2a883c57912a0b4dbed122840f1fdd",
        "aec9a33f1cfc7c32690bc8e24aefaeb137ab9859"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Dec 22 11:35:14 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 22 11:35:14 2010 -0800"
      },
      "message": "am aec9a33f: am e0bd2688: Merge \"Check if VoIP API is supported in SipManager.\" into gingerbread\n\n* commit \u0027aec9a33f1cfc7c32690bc8e24aefaeb137ab9859\u0027:\n  Check if VoIP API is supported in SipManager.\n"
    },
    {
      "commit": "5bd3782f244212cd8ef51bf9f3578869b08b4e18",
      "tree": "364788179909a427cda113bd2611ed464bfa8de3",
      "parents": [
        "c724f2fba330da275f46586aeb5f0ae7bd2fae99"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Dec 20 19:08:24 2010 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Dec 21 11:51:03 2010 +0800"
      },
      "message": "Check if VoIP API is supported in SipManager.\n\nThis is to make SipManager.isVoipSupported() effective.\nAlso add NPE check now that we may return null SipAudioCall when VOIP is not\nsupported.\n\nBug: 3251016\n\nChange-Id: Icd551123499f55eef190743b90980922893c4a13\n"
    },
    {
      "commit": "635b2b77b917c1bf20ce135ce6fcc98a6a7be084",
      "tree": "84f23f52f23f50c468929fce11888aae3fadaa0c",
      "parents": [
        "38212f6fab534e1381ecf209bdf1b59e4750c664",
        "d90bc225b9d6e4f8f69d984aa63062a7b20ac65c"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Mon Dec 20 11:33:23 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 20 11:33:23 2010 -0800"
      },
      "message": "am d90bc225: am a936b256: Remove SIP realm/domain check\n\n* commit \u0027d90bc225b9d6e4f8f69d984aa63062a7b20ac65c\u0027:\n  Remove SIP realm/domain check\n"
    },
    {
      "commit": "a936b256eb1611b5d8b88d0cd61f21225152cc82",
      "tree": "29a85b92d4262d0327fbd408e544db608e7b1978",
      "parents": [
        "acf649356b1ab25098277018b5d76f55f9ef660b"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Dec 16 11:50:45 2010 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Dec 17 10:20:06 2010 +0800"
      },
      "message": "Remove SIP realm/domain check\n\nas the realm may be different from the domain.\n\nBug: 3283834\nChange-Id: I64c9f0d6d626afdb397c5d378d30afa9d6a64ca9\n"
    },
    {
      "commit": "58ee2acba8953814cc4bf65d2f28f7dd498b5779",
      "tree": "00bb9d5ae633bf92712b03088cc3ad483dff7284",
      "parents": [
        "4ea442b49c2f44c180346fe780a2b8c9766b587b"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Dec 16 20:46:50 2010 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Dec 16 20:46:50 2010 +0800"
      },
      "message": "Check port in create peer\u0027s SIP profile.\n\nSipURI returns port -1 when port is not present in the URI.\nDon\u0027t call SipProfile.Builder.setPort() when that happens.\n\nBug: 3291248\nChange-Id: I8e608cbc56ea82862df55fdba885f6a864db83ab\n"
    },
    {
      "commit": "eecf4a6f11129461088d620afadb6014edab3086",
      "tree": "c628edbdf6ef2ff5141c1732572b4bf0c428388a",
      "parents": [
        "4aedb39a49bda340f871c8fac2239de4fe549b03"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Dec 16 16:13:29 2010 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Dec 16 20:27:57 2010 +0800"
      },
      "message": "Check port in create peer\u0027s SIP profile.\n\nSipURI returns port -1 when port is not present in the URI.\nDon\u0027t call SipProfile.Builder.setPort() when that happens.\n\nChange-Id: Ic5fe7301195705a77010038cae20d6629b33135e\n"
    },
    {
      "commit": "c030a164c8a890947985d15722fe3df8785f7d04",
      "tree": "91e0a4350bfdcb4bbd231dbba4c722f87e14f02d",
      "parents": [
        "6fa74a54346d136294593a4e60d3a59d94b3493c",
        "c9cc9ab590ef879877e466c0b5f5823e11bb4c47"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Dec 06 23:36:23 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 06 23:36:23 2010 -0800"
      },
      "message": "am c9cc9ab5: am 5f86d7f5: Merge \"Fix SIP bug of different transport/port used for requests.\" into gingerbread\n\n* commit \u0027c9cc9ab590ef879877e466c0b5f5823e11bb4c47\u0027:\n  Fix SIP bug of different transport/port used for requests.\n"
    },
    {
      "commit": "f053292d7a46c30abbe6f12ca04dbc03ec964d80",
      "tree": "103509a15cb400ce8a3593dfab235557c3276238",
      "parents": [
        "daef0a040de7a9825bdbcba7b2eae66195e3a95f"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Nov 03 13:11:53 2010 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Dec 07 10:36:19 2010 +0800"
      },
      "message": "Fix SIP bug of different transport/port used for requests.\n\nbug: http://b/3156148\nChange-Id: I4fa5b274d2e90ebde12d9e99822dc193a65bad32\n"
    }
  ],
  "next": "2aef9a1e847a7612549d9a0280cde6489e540f6b"
}
