)]}'
{
  "log": [
    {
      "commit": "f8a0c47e9091d7a14e05dedc65b49af09fdc8fb8",
      "tree": "aa5272a0f53b875133d6f60ff789ea1adb106cc5",
      "parents": [
        "cb1b23b5e600abe542e3374b66c2be7976fccd72"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 05 11:50:22 2014 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 05 11:53:40 2014 -0800"
      },
      "message": "Remove no longer needed http proxy handling code, it\u0027s obsolete now\n\nsince we started to use java\u0027s HTTPConnection instead of the native\nimplementation.\n\nChange-Id: I32b08480593a859e0368dbbcf8da8f25c9e08ca9\n"
    },
    {
      "commit": "cb1b23b5e600abe542e3374b66c2be7976fccd72",
      "tree": "ee69a2b5fa337ef8b4ae8c9efc0734e7cf2751c2",
      "parents": [
        "829a57c9a52d6cd11916b926491f8addcef526ec",
        "d2506a506303ed94fd1991cf986b825b870a67c5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 05 17:13:07 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 05 17:13:07 2014 +0000"
      },
      "message": "Merge \"FINAL ATTEMPT: HTTP services are now provided from JAVA and made available to media code\""
    },
    {
      "commit": "d2506a506303ed94fd1991cf986b825b870a67c5",
      "tree": "5e5116da8f0ae6a56c93b37d0dd483ded11295d1",
      "parents": [
        "10586ad2a6996b8f9f84ed47a65ccc2d883fc19f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 29 10:32:46 2014 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 04 14:45:28 2014 -0800"
      },
      "message": "FINAL ATTEMPT: HTTP services are now provided from JAVA and made available to media code\n\nChange-Id: I7f6cdcfd2a28846d36d89dd5180ef20a22b03af8\n"
    },
    {
      "commit": "93a5845d1a56dde3be4f0bdae70044724548b7d1",
      "tree": "ef30253e091f19b53b1b092a71b9abd4acf86316",
      "parents": [
        "17b79985f4e5e6b696320e29f665adb796a2aef5"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 04 12:52:10 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 04 12:52:10 2014 -0800"
      },
      "message": "Cache media/nomedia paths\n\nInstead of checking all the parents of every path for presence of\na .nomedia file every time a new entry is inserted, build a cache\nof paths and use that when possible.\n\nChange-Id: I5b912fd54473db8f96d3511cbc2715e0b69dd16b\n"
    },
    {
      "commit": "329eec53497f766f3159139dfc97c07edb2b1c3a",
      "tree": "d5e0aac381e6a2bd3414198d7d93e5990179ce96",
      "parents": [
        "db7516e3bd24589525c42b9b4761381b547dc3be"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 27 16:30:09 2014 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 27 16:30:09 2014 -0800"
      },
      "message": "Fix invocation of notification callback in case the callback is modified\n\nfrom a separate thread.\n\nChange-Id: I741c1f2f9c796ec977a742a69cedcca10c5218ad\n"
    },
    {
      "commit": "aba671392d6606e35726c350a28d0c9b36ebfe16",
      "tree": "8f992d3d186f288c15f7df4b5522ef95cdccaffc",
      "parents": [
        "7023df08f14ec5dee76ac54c03e870f84e297636"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 22 12:40:01 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 27 10:52:18 2014 -0800"
      },
      "message": "API that allows usage of MediaCodec APIs without polling.\n\nChange-Id: Iebccdd3aec74a2cfa9ad0bf16c0c6006a3b72999\nrelated-to-bug: 11990118\n"
    },
    {
      "commit": "bdf8db082827a914e7ab6df2978e8da587adfc80",
      "tree": "da662c619d89a8c8c43ea5c2572361617face210",
      "parents": [
        "c9c93e75ba80eee7309bd4adcdfa082747009ce7",
        "83511d2f49c9e272f328730586c3d0a7852247f2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 21 23:03:33 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 21 23:03:33 2014 +0000"
      },
      "message": "Merge \"Add \"throws IOException\" to MediaCodec factory methods\""
    },
    {
      "commit": "83511d2f49c9e272f328730586c3d0a7852247f2",
      "tree": "b9b741001599ebee76df2e670cb4439353fc328e",
      "parents": [
        "4a5eb8fe18337597ece6ca1cedbbb56a0b309c39"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 16 10:10:38 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 16 12:35:15 2014 -0800"
      },
      "message": "Add \"throws IOException\" to MediaCodec factory methods\n\nandroid.media.MediaCodec\n(createByCodecName|createDecoderByType|createEncoderByType)\nnow explicitly throws IOException.\n\nRequires changes to existing code for declaration compatibility.\n\nBug: 11364276\nChange-Id: I105ecb7c4bd49bf803111253cd23bab161c988f9\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "6bb5cb24b458a11bd02e9bff37c03f6381e06b7c",
      "tree": "ec61957c8bb328444c98d3488246002a12a59860",
      "parents": [
        "f12fa0122000acaa4728163475adce1bb5aaf3c7",
        "28c6ec0215e8cf2dff5a571c703137b3a4d244f2"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Jan 16 15:48:54 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Jan 16 15:49:59 2014 +0000"
      },
      "message": "Resolved conflicts for merge of 28c6ec02 to master\n\nChange-Id: Idf1cabf2694dfa13d928df944d346f5e051b6948\n"
    },
    {
      "commit": "24d63a838211db019bf7ea970a0d844d8033b729",
      "tree": "16e122e5be24a6d3e8e811d551679aa647505757",
      "parents": [
        "c3be4ba304196f1624818dce3da43492156b62fe",
        "bc0468e67626937300e9afd182656469463d96a1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Jan 16 07:34:43 2014 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 16 07:34:43 2014 -0800"
      },
      "message": "am bc0468e6: am 6f17adba: Merge \"AArch64: Use long for pointers in media classes\"\n\n* commit \u0027bc0468e67626937300e9afd182656469463d96a1\u0027:\n  AArch64: Use long for pointers in media classes\n"
    },
    {
      "commit": "0c5b62744b1123f36dc8fe3c228a89899fec36d2",
      "tree": "72969f3a61c811ee4d4b57dd310a06753eec3e9a",
      "parents": [
        "7a993a3d548dc53acd1495da4d8bc467d047c9f6",
        "3e21cc8140e42bdcd924590e5e12446b6c55ad2a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 15 17:58:52 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 15 17:58:53 2014 +0000"
      },
      "message": "Merge \"Unhide android.media.AudioTrack.setVolume(float)\""
    },
    {
      "commit": "075e9a19ce645752f8282bc19c91b25978a7dc52",
      "tree": "fce385509995923df2b7bb567081337fed25c6e5",
      "parents": [
        "337aa376c09bb97a48afe075b4018f030445534f"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Mon Jan 06 13:45:09 2014 +0000"
      },
      "committer": {
        "name": "David Butcher",
        "email": "david.butcher@arm.com",
        "time": "Wed Jan 15 13:09:27 2014 +0000"
      },
      "message": "AArch64: Use long for pointers in media classes\n\nFor storing pointers, long is used in media classes,\nas native pointers can be 64-bit.\n\nIn addition, some minor changes have been done\nto conform with standard JNI practice (e.g. use\nof jint instead of int in JNI function prototypes)\n\nChange-Id: Idc4ca0124d03df7f9cef412488abafd020e5e774\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\n"
    },
    {
      "commit": "4896cb59a443370252d230793ee030021f719821",
      "tree": "c25fedec876008a5242cf2e789e249f3b1da65f3",
      "parents": [
        "bdc223a7f2b84ecacac0487b48d8005a24739668",
        "60bd67f7b1b85ed0ee19f77b056b90350a3d5343"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 15 01:27:58 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 15 01:27:59 2014 +0000"
      },
      "message": "Merge \"Use AUDIO_SESSION_ALLOCATE instead of hard-coded 0\""
    },
    {
      "commit": "3e21cc8140e42bdcd924590e5e12446b6c55ad2a",
      "tree": "d12eff8aef9a8f357e7e4c449f9c498f3c60f0a0",
      "parents": [
        "35f922d1d038d14f94b584baae324513610f7813"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 14 13:55:36 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 14 13:55:36 2014 -0800"
      },
      "message": "Unhide android.media.AudioTrack.setVolume(float)\n\nBug: 12534920\nChange-Id: I7d7437f87f7002c42452011e347e89ddaa0bf6a5\n"
    },
    {
      "commit": "f634bc0ff507ebbaae5a8eaed52efa5706fc0208",
      "tree": "bd4ac7315edd2ba6c3a1f9bfdf48887ead1c4d81",
      "parents": [
        "4b5593d22fbec9d7b0809fac666c60c40693aace",
        "fe834d30f4f3f51b754d55fecb36f11279733948"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 13 19:25:58 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 13 19:25:58 2014 +0000"
      },
      "message": "Merge \"Prepare for additional formats beyond 8-bit and 16-bit PCM\""
    },
    {
      "commit": "93899a5972f7ad2defd51f46f039e39613c6f7f6",
      "tree": "6b70660e2c4de7bbb8611a1a28b06065e0f40803",
      "parents": [
        "08af2ca38a45b2f92c0ae9360dd399de49d79b48",
        "2f4a2b139b4c1dde7be1d14333ad02553734c528"
      ],
      "author": {
        "name": "Zhihai Xu",
        "email": "zhihaixu@google.com",
        "time": "Sat Jan 11 01:11:45 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 11 01:11:45 2014 +0000"
      },
      "message": "Merge \"setAvrcpAbsoluteVolume is passed wrong unit parameter from AudioManager\""
    },
    {
      "commit": "2f4a2b139b4c1dde7be1d14333ad02553734c528",
      "tree": "68f751efb5586a6a2d1cc9237d678a353a0a6bcc",
      "parents": [
        "7acec30ac7d5b2fba11757a2d2e3ad351be23441"
      ],
      "author": {
        "name": "Zhihai Xu",
        "email": "zhihaixu@google.com",
        "time": "Fri Jan 10 16:44:39 2014 -0800"
      },
      "committer": {
        "name": "Zhihai Xu",
        "email": "zhihaixu@google.com",
        "time": "Fri Jan 10 16:44:39 2014 -0800"
      },
      "message": "setAvrcpAbsoluteVolume is passed wrong unit parameter from AudioManager\n\nsetAvrcpAbsoluteVolume is passed wrong unit parameter from AudioManager.\nIt cause maximize volume in Bluetooth speaker/device.\nThe volume expected by Bluetooth Avrcp should be from 0 to 15.\nBut the current volume parameter passed to Bluetooth Avrcp is from 0 to 150.\nIt is scaled by 10 times than the correct volume.\nindex \u003d rescaleIndex(index * 10, streamType, streamTypeAlias);\nShould divide the volume by 10 before pass to Bluetooth Avrcp.\n\nbug:12495379\nChange-Id: I0432f83ca4a0c134244d96b2eea14d7168e9a9ff\n"
    },
    {
      "commit": "fe834d30f4f3f51b754d55fecb36f11279733948",
      "tree": "66b8e0286d8ff992dd9e4ff7f3a333ec5eda7721",
      "parents": [
        "7dd77a875c723cce75303773ab1909fb2678f731"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 08 14:49:08 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 10 10:50:22 2014 -0800"
      },
      "message": "Prepare for additional formats beyond 8-bit and 16-bit PCM\n\nThis CL does the same thing for AudioTrack,\nthat an earlier CL did for AudioRecord:\n  \u003e Change-Id: Ic3525f049e939bdf125d9f87ed39abd2690dcf9f\n\nPull out the common parts of that earlier CL and move them to new header\nfile android_media_AudioFormat.h.\n\nUse the new function audioFormatToNative() to convert from Java\nENCODING_PCM_* to native AUDIO_FORMAT_*.\n\nUse audio_bytes_per_sample() instead of hard-coding the size of various formats.\n\nUse size_t for memory sizes.\n\nChange-Id: I7992dd6a2c9500126a6d7ae5fc1ed9f3312962d6\n"
    },
    {
      "commit": "c975437ef3338ba38b76b1a07594ccfd6e089709",
      "tree": "be423a8336081402b161deba8bc78bfcbc84a74d",
      "parents": [
        "819f2e12347e588c223923a3698daafb1c593ccf",
        "1e3395c7378a7dd293a2e8a8ac8fbf239adbad0c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 07 13:10:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 07 13:10:19 2014 +0000"
      },
      "message": "am 1e3395c7: am 105b545e: am 0dce19ca: am 79ceb53a: am c58abeea: Merge \"AArch64: Use long for pointers in MTP classes\"\n\n* commit \u00271e3395c7378a7dd293a2e8a8ac8fbf239adbad0c\u0027:\n  AArch64: Use long for pointers in MTP classes\n"
    },
    {
      "commit": "819f2e12347e588c223923a3698daafb1c593ccf",
      "tree": "df51b3b4213344bdbbeb526c544e6d866b3c527b",
      "parents": [
        "2e09e57e3de418671164e98d92e3154acf221109",
        "510616d215372e59e5e8c39b8de1125fc5b54c60"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 07 13:10:14 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 07 13:10:14 2014 +0000"
      },
      "message": "am 510616d2: am bec733af: am 23ebc24e: am 08467c57: am 9bc6acf2: Merge \"AArch64: Use long for pointers in VideoEditor classes\"\n\n* commit \u0027510616d215372e59e5e8c39b8de1125fc5b54c60\u0027:\n  AArch64: Use long for pointers in VideoEditor classes\n"
    },
    {
      "commit": "e434ddd042f7fe9ff905ab29bda14e113e3d1c55",
      "tree": "60ccd59bc12ebc6b7a1d0dcb0cf2628f6388bac7",
      "parents": [
        "ac8bd534ddc474e5aadbe6a6edde200cff52d442",
        "113e83e6f538ea217c167c6d8e11b28042ff2c53"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 07 13:10:03 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 07 13:10:03 2014 +0000"
      },
      "message": "am 113e83e6: am 58cb0f0c: am bfbe585e: am c0c92f20: am 357ea905: Merge \"AArch64: Use long for pointers in audio effect classes\"\n\n* commit \u0027113e83e6f538ea217c167c6d8e11b28042ff2c53\u0027:\n  AArch64: Use long for pointers in audio effect classes\n"
    },
    {
      "commit": "ac8bd534ddc474e5aadbe6a6edde200cff52d442",
      "tree": "419187fee145e23948bff5df9bad47ac8dd28c8d",
      "parents": [
        "98fcf484efbba3252174d6db1e21ba308a968c04",
        "99aec6b5d1cb73a3f5b57badc53e6f56b2a53c4d"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 07 13:09:57 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 07 13:09:57 2014 +0000"
      },
      "message": "am 99aec6b5: am 40b0aaa9: am 568cde55: am 80cff944: am 74675f29: Merge \"AArch64: Use long for pointers in AmrInputStream\"\n\n* commit \u002799aec6b5d1cb73a3f5b57badc53e6f56b2a53c4d\u0027:\n  AArch64: Use long for pointers in AmrInputStream\n"
    },
    {
      "commit": "0dce19caf81c3e2090e80800957216c1d5fe66b8",
      "tree": "140f81b7d4d4a3aad9826bbe566ff2e8692b11a1",
      "parents": [
        "23ebc24eee4bf8b58405daab177e46d8e3da790f",
        "79ceb53ae5b867a954476e3f6499f89664fbc669"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 07 05:01:13 2014 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 07 05:01:13 2014 -0800"
      },
      "message": "am 79ceb53a: am c58abeea: Merge \"AArch64: Use long for pointers in MTP classes\"\n\n* commit \u002779ceb53ae5b867a954476e3f6499f89664fbc669\u0027:\n  AArch64: Use long for pointers in MTP classes\n"
    },
    {
      "commit": "23ebc24eee4bf8b58405daab177e46d8e3da790f",
      "tree": "f2ca74835234fcd1795c44ac6c0eabb8db5e7314",
      "parents": [
        "e7d7908c28adf77de2cefba4f2a554b770d49def",
        "08467c5727c04c1fef40ff1e361628944275ef28"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 07 05:01:08 2014 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 07 05:01:08 2014 -0800"
      },
      "message": "am 08467c57: am 9bc6acf2: Merge \"AArch64: Use long for pointers in VideoEditor classes\"\n\n* commit \u002708467c5727c04c1fef40ff1e361628944275ef28\u0027:\n  AArch64: Use long for pointers in VideoEditor classes\n"
    },
    {
      "commit": "bfbe585ed4360b007640b227d49b6e8d7a2352b0",
      "tree": "9f597bc84cbb81294e268ff4383ce420fabbb0ca",
      "parents": [
        "568cde557abfaaa5bf584cf7c3396f9efd990e6c",
        "c0c92f206eddb6fb319bd11929c1703daf17248f"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 07 05:00:58 2014 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 07 05:00:58 2014 -0800"
      },
      "message": "am c0c92f20: am 357ea905: Merge \"AArch64: Use long for pointers in audio effect classes\"\n\n* commit \u0027c0c92f206eddb6fb319bd11929c1703daf17248f\u0027:\n  AArch64: Use long for pointers in audio effect classes\n"
    },
    {
      "commit": "568cde557abfaaa5bf584cf7c3396f9efd990e6c",
      "tree": "5664d65af6ca8c7aaa5e9f9201552cc14e61a3f3",
      "parents": [
        "c47b7d377c4785f84a22c42c6a99716cceb5973c",
        "80cff94478a39914012df816179ea57c53040903"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 07 05:00:53 2014 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 07 05:00:53 2014 -0800"
      },
      "message": "am 80cff944: am 74675f29: Merge \"AArch64: Use long for pointers in AmrInputStream\"\n\n* commit \u002780cff94478a39914012df816179ea57c53040903\u0027:\n  AArch64: Use long for pointers in AmrInputStream\n"
    },
    {
      "commit": "e2e59326f13cf291bf5b37989390fd2a55a94f0c",
      "tree": "10e48409726a6d4f96d5e48b619a57a0c0870fa3",
      "parents": [
        "9bc6acf27ac446b7e18a51a926caafd99cf34713"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Tue Dec 17 19:04:19 2013 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 07 12:52:57 2014 +0000"
      },
      "message": "AArch64: Use long for pointers in MTP classes\n\nFor storing pointers, long is used in MTP classes,\nas native pointers can be 64-bit.\n\nIn addition, some minor changes have been done\nto conform with standard JNI practice (e.g. use\nof jint instead of int in JNI function prototypes)\n\nChange-Id: I67805547251722e7b77611d47d0bb632a64d3e6d\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\n"
    },
    {
      "commit": "44ba5c1b4ef33ff50dacb2eb5553d01405e77f4d",
      "tree": "1c84566cb6974d644a0771efadc085a74329ab0b",
      "parents": [
        "670327544184dbd6274de9127ceaf20dfd5801b4"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Tue Dec 17 14:13:08 2013 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 07 12:49:41 2014 +0000"
      },
      "message": "AArch64: Use long for pointers in VideoEditor classes\n\nFor storing pointers, long is used in VideoEditor\nclasses, as native pointers can be 64-bit.\n\nIn addition, some minor changes have been done\nto conform with standard JNI practice (e.g. use\nof jint instead of int in JNI function prototypes)\n\nChange-Id: Ifff3a28f2ab6774ee89d31770ad63451c8726431\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\n"
    },
    {
      "commit": "ea7861c918567d17d40a762b38f97c053d88b839",
      "tree": "9537ff48b8f13fecd39454e3b2922958c07ed186",
      "parents": [
        "74675f29133ff36dccc95387392bf3654dc94e15"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Tue Dec 17 12:42:00 2013 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 07 12:47:51 2014 +0000"
      },
      "message": "AArch64: Use long for pointers in audio effect classes\n\nFor storing pointers, long is used in AudioEffect\nand Visualizer classes, as native pointers can be 64-bit.\n\nIn addition, some minor changes have been done\nto conform with standard JNI practice (e.g. use\nof jint instead of int in JNI function prototypes)\n\nChange-Id: Ief49bbe5baef663e268c7f6d70ac33a4df45621c\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\n"
    },
    {
      "commit": "b348c3fd87bff8641bb0c2fc475742f1847a4784",
      "tree": "eac099f5d982e312a8ac8ce35a1d28e200585d0d",
      "parents": [
        "cf1aa551eed7be4310a386b9b9e458e46847207a"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Tue Dec 17 14:10:25 2013 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Jan 07 12:44:38 2014 +0000"
      },
      "message": "AArch64: Use long for pointers in AmrInputStream\n\nFor storing pointers, long is used in AmrInputStream\nclass, as native pointers can be 64-bit.\n\nChange-Id: I78fff3eb54fc7101746b0d693cbc4e923c2bad08\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\n"
    },
    {
      "commit": "a144b121b24e6ecbbc4016d15e1d57594c23781e",
      "tree": "7d6cdae09154a3c6c985fd30a5e568d23ad46fa3",
      "parents": [
        "c2ee7bb1462fbf21e7d2d9a45df8a59ee734e1db",
        "b3ae913115c7d7ac519dc12f212f72dfce89cd8a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jan 06 22:46:43 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 06 22:46:43 2014 +0000"
      },
      "message": "Merge \"Fix RemoteController synchronization mode\""
    },
    {
      "commit": "83cc994ba40a7227c62a65ccb5addf3a23ff6350",
      "tree": "efffa833a37fc944a0f2b07d33d51512a4362b43",
      "parents": [
        "23ab74de5eda745e2ef88bd156cde83fbcd4b5da"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Jan 02 12:10:04 2014 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Jan 06 10:42:51 2014 -0800"
      },
      "message": "MediaRecorder: add getSurface() api and SURFACE video source\n\nBug: 12305192\nChange-Id: If833c5ac8a738ffa284307e0435b5cbd1b7379b1\n"
    },
    {
      "commit": "b3ae913115c7d7ac519dc12f212f72dfce89cd8a",
      "tree": "856b127b5037df54dee6c90d8b4e9ae51ec2a637",
      "parents": [
        "23ab74de5eda745e2ef88bd156cde83fbcd4b5da"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jan 02 15:08:26 2014 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jan 02 23:13:48 2014 +0000"
      },
      "message": "Fix RemoteController synchronization mode\n\nFix erroneous argument check in RemoteController syncrhonization\n  mode setter..\n\nBug 12189375\n\nChange-Id: Ib446a21f36c6e0e97752336b22aff0feb651f215"
    },
    {
      "commit": "934349e8ad37c1ad251d6992e0751635f9ab3f28",
      "tree": "3421febecb2a62146f9adc6f3c35d1882841dcc2",
      "parents": [
        "44e26f2f5c0761f8211a3baef3f4a2fb1ea5f622"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Fri Dec 20 13:28:00 2013 -0800"
      },
      "committer": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Fri Dec 20 13:28:00 2013 -0800"
      },
      "message": "ExifInterface: fix class load failure\n\nlibexif_jni was renamed as libjhead_jni\n\nChange-Id: I0ceff1ad288c7ce2255826d5d5ba9ca1f121a556\n"
    },
    {
      "commit": "94ee2f502efbf1d31559573a7b05e3addb91d5e7",
      "tree": "f7f8eeefd57c6aa61cddf6fe56099d69829457ec",
      "parents": [
        "868399cdf48a2459b58a64a906dce5d127458800",
        "52ba48a85049a2a782c3e4c23d64577253f888eb"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 18 18:25:33 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 18 18:25:33 2013 +0000"
      },
      "message": "am 52ba48a8: am f08b83be: am 4dd5c377: am be8fbb8f: Merge \"Remove unused field from MediaMuxer\"\n\n* commit \u002752ba48a85049a2a782c3e4c23d64577253f888eb\u0027:\n  Remove unused field from MediaMuxer\n"
    },
    {
      "commit": "4dd5c37711f370af4c507eedd4c7d27ec35a2d64",
      "tree": "6479d86aa278e18e3c6f053c9340966983043165",
      "parents": [
        "39d7630234127327d71a773dd563067989da4211",
        "be8fbb8fb63fddac2310dfbafa2594ed165b16b1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 18 10:14:45 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 18 10:14:45 2013 -0800"
      },
      "message": "am be8fbb8f: Merge \"Remove unused field from MediaMuxer\"\n\n* commit \u0027be8fbb8fb63fddac2310dfbafa2594ed165b16b1\u0027:\n  Remove unused field from MediaMuxer\n"
    },
    {
      "commit": "535daa191be782e147d0a115846135fe4229cf0b",
      "tree": "3b5454e660b4e891f32f043406edca74f7843a80",
      "parents": [
        "3da645f307695949623d78f280ce12e932eb057c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 18 17:51:06 2013 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 18 17:58:11 2013 +0000"
      },
      "message": "Remove unused field from MediaMuxer\n\nChange-Id: If1ebb2302654b64924084a52425366f1b69c7c30\n"
    },
    {
      "commit": "36d10e79940fcb0c9ddd9780062065dc633971fb",
      "tree": "1481d5df448f10c60ff369763404f43671fdb5e3",
      "parents": [
        "f1d58daa2f7a8e34a4aa0b4d8c9445a0a0004077",
        "3bfc6e76e627d4122a774488f36fb843bb3694fb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 16 23:27:39 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 16 23:27:39 2013 +0000"
      },
      "message": "am 3bfc6e76: am c0d6028f: am a012fee3: am 5d6332e3: Merge \"AArch64: Use long for pointers in MediaDrm and MediaMuxer\"\n\n* commit \u00273bfc6e76e627d4122a774488f36fb843bb3694fb\u0027:\n  AArch64: Use long for pointers in MediaDrm and MediaMuxer\n"
    },
    {
      "commit": "a012fee3c31803799176f3efb75cf2f929eeb062",
      "tree": "b2ac6aecd829907121c923c49ff5630ab7968cde",
      "parents": [
        "e998b6076532daaa9c2c621a09a04d67a75a5ad0",
        "5d6332e3744e37ced079e5360f1fa3e0e5681d57"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 16 13:01:19 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 16 13:01:19 2013 -0800"
      },
      "message": "am 5d6332e3: Merge \"AArch64: Use long for pointers in MediaDrm and MediaMuxer\"\n\n* commit \u00275d6332e3744e37ced079e5360f1fa3e0e5681d57\u0027:\n  AArch64: Use long for pointers in MediaDrm and MediaMuxer\n"
    },
    {
      "commit": "5d6332e3744e37ced079e5360f1fa3e0e5681d57",
      "tree": "35097831f3420ba16946b1a19b72a2f409c873a2",
      "parents": [
        "6040bd47f41fd56ee608f6a80a0babe942ea1df3",
        "656fd0402613cec0196d5e2ae0a460d044d2805b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 16 20:58:01 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 16 20:58:02 2013 +0000"
      },
      "message": "Merge \"AArch64: Use long for pointers in MediaDrm and MediaMuxer\""
    },
    {
      "commit": "6a0db5990187a71427029fb0fd64394e849aa057",
      "tree": "8dfd57e52d505162c96357350f95ec97932271de",
      "parents": [
        "d08eadd287991ec18eafe620b24e2b1bf0ce1f2d",
        "e0b14ea70b58cd04696fb37ffcf733eefc2dd717"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 13 15:59:51 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 13 15:59:51 2013 -0800"
      },
      "message": "resolved conflicts for merge of e0b14ea7 to master\n\nChange-Id: Ie018d3e2eba1eb2d655c153880e1951b68c2bd51\n"
    },
    {
      "commit": "62d509d24f91959b75219edd0ab1a6f22b82c600",
      "tree": "b9411caeea9436efa9e2fa707d84ab57525a8f68",
      "parents": [
        "13b648ebff99a3fb8c26152745d294a55f8c11b7",
        "37c69fdd826f3973966430adc1abfbefc19bc16e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 13 14:17:29 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 13 14:17:29 2013 -0800"
      },
      "message": "am 37c69fdd: Merge \"Use java.util.Objects instead on internal API\"\n\n* commit \u002737c69fdd826f3973966430adc1abfbefc19bc16e\u0027:\n  Use java.util.Objects instead on internal API\n"
    },
    {
      "commit": "e6585b32ea586743258a5457e2184ffc087f2d2f",
      "tree": "409f3c83c78e878a5efe2a0cc500659a27c77f38",
      "parents": [
        "584ace0d3f79ff43db9298798065dd5beaa66a45"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 13 12:00:26 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Dec 13 13:40:30 2013 -0800"
      },
      "message": "Use java.util.Objects instead on internal API\n\nNot needed since java.util.Objects implements all the needed\nfunctionality.\n\nChange-Id: Icd31d49a9801d1705427f028e9ac927d58e7d34c\n"
    },
    {
      "commit": "55d70620d9fda8afafb2fdec59757a710eec0e89",
      "tree": "ad265b887f5c323a7c7bf3fbf5b61308cadb4bc9",
      "parents": [
        "f51021c32c1998456e1d8f6b0effc0297c2fff05"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed Dec 11 15:22:14 2013 -0800"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Wed Dec 11 15:22:14 2013 -0800"
      },
      "message": "Add caption window color attribute\n\nThe WebVTT rendering implementation interprets window color as region\ncolor, since there is no window for non-region captions.\n\nBUG: 12020757\nChange-Id: Ie891e1343d718783fc32c712860f886de22558ec\n"
    },
    {
      "commit": "656fd0402613cec0196d5e2ae0a460d044d2805b",
      "tree": "8d53333a39e4860bf85d63fd3919a46604d5071c",
      "parents": [
        "bea98dc245bad71eb3b5fd831218b3db1f75ee21"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Thu Nov 28 10:56:06 2013 +0000"
      },
      "committer": {
        "name": "David Butcher",
        "email": "david.butcher@arm.com",
        "time": "Tue Dec 10 18:10:47 2013 +0000"
      },
      "message": "AArch64: Use long for pointers in MediaDrm and MediaMuxer\n\nFor storing pointers, long is used in MediaDrm and\nMediaMuxer classes, as native pointers can be 64-bit.\n\nChange-Id: I77f26cde627baf0dce70b6aa3a4dbd974051d9a6\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\n"
    },
    {
      "commit": "a16a979315c3458499802f5cd94150822d49597a",
      "tree": "366dd8bf3f2bba8f9051ad1e6dfc99cfe37a5435",
      "parents": [
        "19294ca0e88018867d7d31a34bb4306a3d9502c3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 22 13:53:11 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 02 11:50:46 2013 -0800"
      },
      "message": "Update comments for AudioRecord IllegalArgumentException\n\nAlso explicitly list IllegalArgumentException in throws clause of the\nconstructor helper methods, as that is a critical side-effect of these methods.\n\nChange-Id: I5cae5dfd807235fbdd827ef4ebc7cf05bfd11c02\n"
    },
    {
      "commit": "19294ca0e88018867d7d31a34bb4306a3d9502c3",
      "tree": "86444ddf4d39cf01f7552dd3d373244816646da7",
      "parents": [
        "a9838afbe3ef58b63e5d52060d5ff2776c1c603a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 22 13:52:14 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 02 11:50:45 2013 -0800"
      },
      "message": "Document need to call AudioRecord.getState() after construction\n\nChange-Id: Ia6ebb5b01ae60453b6fc7db79e2ec3d40d2b56f1\n"
    },
    {
      "commit": "a4b06fd111185f4f245d816c09074107fef960bb",
      "tree": "0ec800d319957cafa079a99b534035662bf97aab",
      "parents": [
        "2ab3ec21c0d0b13533434cacf72cc1bc0c81bb32"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 22 11:57:27 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 22 13:49:09 2013 -0800"
      },
      "message": "Fix typo nbChannels -\u003e channelMask\n\nFormal parameter name in native_setup was wrong.\n\nChange-Id: Ie76c6e0aca83c6a01f2581d988e32da730b7e427\n"
    },
    {
      "commit": "2ab3ec21c0d0b13533434cacf72cc1bc0c81bb32",
      "tree": "23ebd075131bffc6f90d95cb3d6d2143dbe1a07a",
      "parents": [
        "816fe75304f683e044b46aaf135159c0c2e11e21",
        "2458681b3ea4571d2f1254ef597475fe6a582907"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 21 23:00:23 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 21 23:00:23 2013 -0800"
      },
      "message": "am 2458681b: am 263c4310: am ce468a35: Stop wifi display discovery when no longer needed.\n\n* commit \u00272458681b3ea4571d2f1254ef597475fe6a582907\u0027:\n  Stop wifi display discovery when no longer needed.\n"
    },
    {
      "commit": "ce468a35b388ca46578934706b38dbae94941643",
      "tree": "0e403cf705d7b938c0f0f77d09052486b7e14fb3",
      "parents": [
        "90e9b1d3dc15e97bb7ecb88289c3707fe03fb1a6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 21 16:42:03 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 21 19:32:59 2013 -0800"
      },
      "message": "Stop wifi display discovery when no longer needed.\n\nKeep track of how many clients are requesting scans and scan\ncontinuously until all of them are gone then explicitly terminate the\nscan instead of letting it time out as before.\n\nSuspend wifi display scans while connecting or connected to a remote\ndisplay.  This is handled by both the display manager and media router\nsince neither has complete information about what is happening.\nMuch of this code will no longer be needed once wifi display support\nis integrated directly into the media router service.\n\nEnsure that we don\u0027t attempt to scan or connect to wifi displays\nwhile the wifi display feature is off.\n\nInfer when a connection attempt fails and unselect the wifi display\nroute automatically so it doesn\u0027t appear to be connecting forever.\n\nFix issues around correctly canceling and retrying connection attempts.\nOften we would cancel but not retry.\n\nImproved connection reliability somewhat.  It seems that discovery must\nalready be in progress in order for a connection attempt to succeed.\n\nEnsure QuickSettings uses exactly the same logic as the MediaRouteButton\nto determine when the remote display tile should be made visible.\n\nBug: 11717053\nChange-Id: I18afc977b0e8c26204b8c96adaa79f05225f7b6e\n"
    },
    {
      "commit": "ab6294e4bb2830a3bc161bcfec15904685e8b5b5",
      "tree": "1ccdc06b1f3e6a0dea8bc9b5510565e8ef6707e8",
      "parents": [
        "5d958998811d6e291e2eff86033083548b47ac2c",
        "db44cb92ecae78f0fa5a8fe60eb1d35393c67507"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Nov 20 14:34:00 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 20 14:34:00 2013 -0800"
      },
      "message": "am db44cb92: am 6b0653ff: am bfdecccc: Merge \"Only scan for wifi display when there is no active connections\" into klp-dev\n\n* commit \u0027db44cb92ecae78f0fa5a8fe60eb1d35393c67507\u0027:\n  Only scan for wifi display when there is no active connections\n"
    },
    {
      "commit": "6090995951c6e2e4dcf38102f01793f8a94166e1",
      "tree": "37f32f4b269fc26a18e3249a18459a476c473266",
      "parents": [
        "266f48cc042dda828109eb135088cdb6f0f7c1d5"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Nov 19 16:54:46 2013 -0500"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Wed Nov 20 11:31:47 2013 -0500"
      },
      "message": "Remove unused imports from frameworks/base.\n\nChange-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906\n"
    },
    {
      "commit": "a68c87eda84150b21f3d01511e60c720c6f6b695",
      "tree": "90b6fc277371243e020877f0428962e1fa68f5dd",
      "parents": [
        "245408d29018fee4b1231e52f5da1edcc3283c4a"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Nov 19 19:13:22 2013 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Nov 19 19:56:16 2013 -0800"
      },
      "message": "Only scan for wifi display when there is no active connections\n\nBug: 11717053\nChange-Id: I4ab73f6517fbfb8fcc131b89d0e934380dcf69e0\n"
    },
    {
      "commit": "30cb5c3ffa259f2a6df02a81a766c716477f4b92",
      "tree": "31af3313ad5360a79ac4bdf6df7b49236d83822a",
      "parents": [
        "0b342cf8da9feb8c4f1df96b83127bf009e6f96f",
        "2ea480cac89460ee2524cd080e90f6240e8eebf5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 15 00:42:46 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 15 00:42:46 2013 -0800"
      },
      "message": "am 2ea480ca: am 5d0b18cd: am 3de885be: Merge \"Disallow applications from initiating cast screen.\" into klp-dev\n\n* commit \u00272ea480cac89460ee2524cd080e90f6240e8eebf5\u0027:\n  Disallow applications from initiating cast screen.\n"
    },
    {
      "commit": "af574183c274f51d04487a9c8355e9f34a1150f2",
      "tree": "c325b02a379f86bc9d8eb42b0bb5d8b700cc80bb",
      "parents": [
        "1907c0d280d97776708810c9d24931aa6f818790"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 14 18:16:08 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 15 00:29:43 2013 -0800"
      },
      "message": "Disallow applications from initiating cast screen.\n\nOnly allow the system ui and settings to connect to a remote display.\nTo do this, we essentially hide the remote displays from applications\nby using the ROUTE_TYPE_REMOTE_DISPLAY then add permission checks\naround the operations that connect to them.\n\nAs a bonus, this may actually save power on devices since applications\nthat use MediaRouter will not longer be performing discover on\nremote display routes at all.\n\nBug: 11257292\nChange-Id: I9ea8c568df4df5a0f0cf3d0f11b39c87e2110795\n"
    },
    {
      "commit": "48f42fa861078d86eb1c0eb566881657a23268d3",
      "tree": "63ffd97da6e132614d9789075a4956ec107ca53f",
      "parents": [
        "8ef91cdcbe5cecc5d34adb89bd7ef98320ebcf8d",
        "7c9adaf6b90164f17164852276734f95c6d2c46f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Nov 14 15:49:03 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 14 15:49:03 2013 -0800"
      },
      "message": "am 7c9adaf6: am dc6da58a: am 2a96fc1f: Merge \"Fix RemoteController update in RemoteControlClient registration\" into klp-dev\n\n* commit \u00277c9adaf6b90164f17164852276734f95c6d2c46f\u0027:\n  Fix RemoteController update in RemoteControlClient registration\n"
    },
    {
      "commit": "320ad9fa1d45322e878496cc1c03137cabf20942",
      "tree": "7fd89a46568c69dc040eaa691fe0a39c38424817",
      "parents": [
        "dc0acc6f5d4cc8e4ed6d2a13793030350cd6262d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 13 19:59:19 2013 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 13 20:06:41 2013 -0800"
      },
      "message": "Fix RemoteController update in RemoteControlClient registration\n\nA regression was introduced when trying to limit the number of\n internal synchronization generation IDs that caused RCC\n information to be shown only for applications that requested\n audio focus after media button receiver and RCC registration,\n (such as Play Music), not for applications that requested focus\n first (such as Play Movies).\nThe correct behavior is to always check and update the\n RemoteControllers (seen by MediaFocusControl as RCD interfaces)\n whenever a RemoteControlClient is registered (even if it\u0027s a\n re-registration) when it is associated when an entry at the top\n of the remote control stack.\n\nBug 11657655\n\nChange-Id: I30716e2028f7f718a31e13401b191178735229ff\n"
    },
    {
      "commit": "12c39dd50c4063ef06b06cf26071665ca60aaac6",
      "tree": "e9ba1eb8f70b6fa750e5d292e7c7ff8462075e2a",
      "parents": [
        "26ae3286c3368a48d2a30f8016ebab6861786ec2",
        "9ffc4a65e51ae8695be0531c6fae0d33301ded60"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 11 22:07:29 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 11 22:07:29 2013 -0800"
      },
      "message": "am 9ffc4a65: am 854395ad: am c481a634: Merge \"UI tweaks.\" into klp-dev\n\n* commit \u00279ffc4a65e51ae8695be0531c6fae0d33301ded60\u0027:\n  UI tweaks.\n"
    },
    {
      "commit": "39ad0e559896b45185429ea17cd12f18f7ae842c",
      "tree": "9e8d5d137a467f6ccd3ad6d453014d89f7ca21f7",
      "parents": [
        "596e409ec9703e5071bb9a0de08787cde7745f7a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 11 17:55:08 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 11 21:48:53 2013 -0800"
      },
      "message": "UI tweaks.\n\nHide disabled routes from the chooser.\n\nFix layout of chooser dialog when the settings button is visible and\nthe list is very long to prevent truncation of the settings button.\n\nFix an issue when we fake the route connecting status when a route\nis selected.  The route changed notification needs to be propagated\nto apps.  Fake it better.\n\nImmediately disconnect from a route when the connection is lost or\na connection attempt fails.  Added a few new test displays for this\ncase.\n\nBug: 11257292\nChange-Id: I360ab5dc937ad60d97592eab54b19f034519645e\n"
    },
    {
      "commit": "08432a419b83fd22fe43d921c2f9d9f289e3ea3b",
      "tree": "f9d12347d90818c4a5ce9b157d1b46ae64cd6cad",
      "parents": [
        "f244e1428b5dc28dedc0b67ed45603a4f1401e69",
        "fa0d9c2fa8e5c2c73bd36688784f1e44eb08635b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 11 20:51:03 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 11 20:51:03 2013 -0800"
      },
      "message": "am fa0d9c2f: am 02b77575: am 1cdbbb1e: Merge \"Changes to support new screen cast settings screen.\" into klp-dev\n\n* commit \u0027fa0d9c2fa8e5c2c73bd36688784f1e44eb08635b\u0027:\n  Changes to support new screen cast settings screen.\n"
    },
    {
      "commit": "b530aeb0feab5d371684ee8040b2f11e654ae4df",
      "tree": "a92ad6aafad718f0a76381a52f61f7cf437355f8",
      "parents": [
        "7117c0c184b02d703f2a8612b2d253e44999cbfb",
        "f0b9ee9637db1ebf2ef6f056a10c05ee5400de8b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 11 16:10:53 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 11 16:10:53 2013 -0800"
      },
      "message": "resolved conflicts for merge of f0b9ee96 to master\n\nChange-Id: I1b347e895049474e11076c60074dc5918cfe1405\n"
    },
    {
      "commit": "19001d29bd37b0467ff37116edcefadd259c0a5a",
      "tree": "e56a1eebd255b68b7edc12fde20273fca13233c2",
      "parents": [
        "daee2d3a8230fe6bdb011a7ba8a658e0fe6e6a95",
        "9a05e846f3ac2f5c60f42160bcca37355647a3a7"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Nov 11 15:23:37 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 11 15:23:37 2013 -0800"
      },
      "message": "am 9a05e846: am f32962a8: am e8d0fbf2: Merge \"Fixed a bug updating presentation displays.\" into klp-dev\n\n* commit \u00279a05e846f3ac2f5c60f42160bcca37355647a3a7\u0027:\n  Fixed a bug updating presentation displays.\n"
    },
    {
      "commit": "75af171006ee80aaf7cfb56ded1378afe0084cca",
      "tree": "d26fe83b1d36b8afe4709b80fcd8897bd0db28c8",
      "parents": [
        "dd4f9e8b61c0a5639aa82480b7fdd760a2ed609c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Nov 10 18:54:03 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Nov 10 22:51:15 2013 -0800"
      },
      "message": "Changes to support new screen cast settings screen.\n\nFixed the Preference ordering code to consider the case where\ntwo preferences might have the same order.  In that case, it\nfalls back on the title to disambiguate.  Previous behavior was\nundefined (and technically not stable).\n\nExpose the wifi display device address.\n\nPerform wifi display scans every 10 seconds instead of every 15\nto improve reponsiveness.\n\nMake sure to define routes for wifi displays that we are connecting\nto even if they are not yet paired.  Simplified the logic for\nadding and removing these routes to avoid possibly getting out\nof sync and leaving stale routes behind.\n\nFix wifi display notification icon.\n\nBug: 11257292\nChange-Id: I8ac15fb17d83758c0bdce80399e12723c367b83c\n"
    },
    {
      "commit": "dd4f9e8b61c0a5639aa82480b7fdd760a2ed609c",
      "tree": "e49dd8f8a346f558902fb181d1d2e42549edc2c5",
      "parents": [
        "12c32b4d484cc7cc2278a76c6e0fc2304a74b593",
        "0abd3a6ce83ed23abe614155e776b600ef2a66c3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 11 05:59:37 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 11 05:59:38 2013 +0000"
      },
      "message": "Merge \"Update the media router dialogs and integrate into system UI.\" into klp-dev"
    },
    {
      "commit": "0abd3a6ce83ed23abe614155e776b600ef2a66c3",
      "tree": "0e1e4612ad24b020e63d494608defaf298ef8909",
      "parents": [
        "e2126baf72f007d079efcabd45c7a546db34361a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Nov 09 17:48:23 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Nov 10 14:39:19 2013 -0800"
      },
      "message": "Update the media router dialogs and integrate into system UI.\n\nPort the new style UI back into the framework from the support library.\nThere are now two dialogs: a chooser and a controller.  We use the\nsame dialogs for selecting routes within app and within quick settings.\n\nNote that the new UI does not support any grouping features since they\nare deprecated and unused.\n\nBug: 11257292\nChange-Id: I64e936a18d25ab75f0c470cbc1e7085f67004863\n"
    },
    {
      "commit": "5830b0b33618940d65197cec99d697b21908fec8",
      "tree": "181c0879f182a2f65e082903e8aefa39f7b18064",
      "parents": [
        "ed7376fc4829e93f5f2d3037633a37d652a13a7c"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Nov 08 09:46:24 2013 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Nov 08 19:02:48 2013 -0800"
      },
      "message": "Fixed a bug updating presentation displays.\n\nAlso made findRemoteDisplay public.\n\nBug: 11257292\nChange-Id: Ibc9bf3d8ee7c90293ffd8796270e8883ea458a65\n"
    },
    {
      "commit": "7da5bbedc75d7143d5b2cf36c4876f7b09a88807",
      "tree": "ee4e576c15a787bffc1bc83149c754fc17950b20",
      "parents": [
        "6c58d890f3a6993a3bcf413b84ba6fba875832f8",
        "c2b652fd4d386b79dc99af249b6ad3844e53fdf1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 07 17:47:25 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 07 17:47:25 2013 -0800"
      },
      "message": "am c2b652fd: am 5182ea4b: am d40a4d74: Merge \"Add media router service and integrate with remote displays.\" into klp-dev\n\n* commit \u0027c2b652fd4d386b79dc99af249b6ad3844e53fdf1\u0027:\n  Add media router service and integrate with remote displays.\n"
    },
    {
      "commit": "6c58d890f3a6993a3bcf413b84ba6fba875832f8",
      "tree": "f35ed5445047369a8d1af5775e55ff1e376134bf",
      "parents": [
        "42bb698dbbabd0a174ded0d209bdc3fdd5d3603c",
        "84d760257f46232601e5f47411fb4e59f57f1872"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 07 17:47:21 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 07 17:47:21 2013 -0800"
      },
      "message": "am 84d76025: am eb223425: am 1f7a8a06: Merge \"Add a platform library for remote display providers.\" into klp-dev\n\n* commit \u002784d760257f46232601e5f47411fb4e59f57f1872\u0027:\n  Add a platform library for remote display providers.\n"
    },
    {
      "commit": "d40a4d74c623175c96a2e9d865a99826e56d1132",
      "tree": "8fcb8823aab60b909ff4962d5b00fdd5681ad806",
      "parents": [
        "1f7a8a06256907e03405f89108f081289c23e97a",
        "69b07161bebdb2c726e3a826c2268866f1a94517"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 08 01:36:55 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 08 01:36:55 2013 +0000"
      },
      "message": "Merge \"Add media router service and integrate with remote displays.\" into klp-dev"
    },
    {
      "commit": "1f7a8a06256907e03405f89108f081289c23e97a",
      "tree": "8ef01bc8a8f7b2b7edfa3cb1633dc2c0f2f5b882",
      "parents": [
        "1e45fd78090693c5eff346feb32bab90f31a5e30",
        "f3c99e883f46c56e5e2877e844b902b6eb45545b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 08 01:36:41 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 08 01:36:41 2013 +0000"
      },
      "message": "Merge \"Add a platform library for remote display providers.\" into klp-dev"
    },
    {
      "commit": "69b07161bebdb2c726e3a826c2268866f1a94517",
      "tree": "8d9c94f32a045a8f5c48ca0f1380abc760eac807",
      "parents": [
        "f3c99e883f46c56e5e2877e844b902b6eb45545b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 07 00:30:16 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 07 03:25:37 2013 -0800"
      },
      "message": "Add media router service and integrate with remote displays.\n\nThis change adds a new media router service whose purpose is to track\nglobal state information associated with media routes.  This service\npublishes routes to the media router instance in application processes\nand handles requested state changes such as selecting or unselecting\nglobal routes.  The service also binds to remote display provider\nservices which can offer new remote display routes to the system.\n\nIncludes a test application for manually verifying certain aspects\nof the operation of the media router service.\n\nThe remote display provider interface is essentially a stripped down\nmedia route provider interface as defined in the support library\nmedia router implementation.  For now, it is designed to be used only\nby first parties to publish remote display routes to the system so\nit is not exposed as public API in the SDK.  In the future, the remote\ndisplay provider interface will most likely be deprecated and replaced\nwith a more featureful media route provider interface for third\nparty integration, similar to what is in the support library today.\n\nFurther patch sets integrate these new capabilities into the System UI\nand Settings for connecting remote displays.\n\nBug: 11257292\nChange-Id: I31109f23f17b474d17534d0f5f4503e388b081c2\n"
    },
    {
      "commit": "f3c99e883f46c56e5e2877e844b902b6eb45545b",
      "tree": "0a6ade21b7a25f51a21e15a5fd6776bb15fac977",
      "parents": [
        "170735d46001659e64522f451681a0618685efc6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 05 16:29:21 2013 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Nov 07 01:58:15 2013 -0800"
      },
      "message": "Add a platform library for remote display providers.\n\nThis interface allows applications to register services that offer\nremote displays to the system.  The system will then provide UI\nto allow user to connect to these displays and enable mirroring.\n\nBug: 11257292\nChange-Id: I34da5b9dfdaf71267bd3450c505bc1b7368d1b40\n"
    },
    {
      "commit": "b84a72cb5ca1acb816cfef6ea1211dde6bb43439",
      "tree": "a912e6c506273de0834a065344c6d4d5d856ebd9",
      "parents": [
        "f994e7915d46c90bb47b97bfc2dd3db90a80c73b",
        "8ca55fc980a567270d397c7392fd5fa8490f6d42"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 07 04:15:32 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 07 04:15:32 2013 +0000"
      },
      "message": "Merge \"Revert \"Add \"throws IOException\" to MediaCodec constructors (3)\"\""
    },
    {
      "commit": "8ca55fc980a567270d397c7392fd5fa8490f6d42",
      "tree": "5c5404e80d6bb6c3ed75ba738835819d9be0eeb6",
      "parents": [
        "52d8aa79a31c5042d2b43d06f08fa28489b27d1b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 07 04:06:31 2013 +0000"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 07 04:06:31 2013 +0000"
      },
      "message": "Revert \"Add \"throws IOException\" to MediaCodec constructors (3)\"\n\nThis reverts commit 52d8aa79a31c5042d2b43d06f08fa28489b27d1b.\n\nChange-Id: Ic706e0fb469931664499d00fa3a221726b258673\n"
    },
    {
      "commit": "928f9fe466942e57dc01c6df0f528a59e621d8df",
      "tree": "77ff4490315d655004dd4f12ea84275a1a097c3d",
      "parents": [
        "4220ed7ed7efd346252f1baec3360a5e34c21951",
        "52d8aa79a31c5042d2b43d06f08fa28489b27d1b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 07 01:58:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 07 01:58:52 2013 +0000"
      },
      "message": "Merge \"Add \"throws IOException\" to MediaCodec constructors (3)\""
    },
    {
      "commit": "4feaa2e0b6e512dcc87f1f936d981794586f9e00",
      "tree": "f92afaed13c32db47474c5363321f34ba077437d",
      "parents": [
        "f35fac93cdb7bce561da6978c326efb0d7672cd4",
        "1a231f5fdabb00e491d86abf878efb15588012da"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 06 08:52:07 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 06 08:52:07 2013 -0800"
      },
      "message": "am 1a231f5f: am e661b541: am 7791b84c: Merge \"AudioService: fix notifications with A2DP abs volume\" into klp-dev\n\n* commit \u00271a231f5fdabb00e491d86abf878efb15588012da\u0027:\n  AudioService: fix notifications with A2DP abs volume\n"
    },
    {
      "commit": "52d8aa79a31c5042d2b43d06f08fa28489b27d1b",
      "tree": "1b3da59936eefe7295378bf432afbd684a23174b",
      "parents": [
        "2ea312c1bf5f618f4877806b07e0fb2aa4541e6f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 04 14:42:09 2013 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 05 18:54:43 2013 -0800"
      },
      "message": "Add \"throws IOException\" to MediaCodec constructors (3)\n\nChange to add \"throws IOException\" to android.media.MediaCodec\n(createByCodecName|createDecoderByType|createEncoderByType).  The exception was\npreviously thrown through the native JNI, but not explicitly declared.\n\nRequires changes to existing code for declaration compatibility.\n\nBug: 11364276\nChange-Id: Ia0d3481397285cb1503bedde37d4651934b3a481\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "cd772d04345850e160a45613fcf6b86da0dce4cf",
      "tree": "0d6b9b378df3a20d229c20390844e52051801961",
      "parents": [
        "17d28ca3d76e943e30bdaafb98596cf35bb45087"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 30 18:31:07 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 04 12:37:53 2013 -0800"
      },
      "message": "AudioService: fix notifications with A2DP abs volume\n\nWhen A2DP absolute volume is enabled, the music stream\nsoftware volume is maxed out because the headset applies\nthe volume.\n\nWe must also max out other streams playing over A2DP otherwise\nthey are attenuated twice and are barely audible.\n\nBug: 11316102.\nChange-Id: I7e58c74cb683ad1d6f3b68abb0ef967c817fbf4f\n"
    },
    {
      "commit": "128537f600e14c941656e648205987083f4096c3",
      "tree": "27c257bdb44d2a9245ce13737d2a5fb17cc5fdc4",
      "parents": [
        "93a8c8e02870b21b5b454654aad306188fbab73d",
        "f57530e449631658cf9dddfa774ffc3df2383513"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Oct 28 15:09:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 28 15:09:02 2013 -0700"
      },
      "message": "am f57530e4: am fcd69ca4: am 66b753b0: Merge \"MediaPlayer: MTP: update state only based on source events\" into klp-dev\n\n* commit \u0027f57530e449631658cf9dddfa774ffc3df2383513\u0027:\n  MediaPlayer: MTP: update state only based on source events\n"
    },
    {
      "commit": "66b753b06bb265d3f5b25244856f8d827a9dc5af",
      "tree": "040abe078fc7a4b954dc046a6b476943507901a9",
      "parents": [
        "3a702cb5d7eac0d8504c67145dded5d45a9c1027",
        "4de8e7c1a55f024361786e9fe03fa6eec1db6cb7"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Oct 28 21:59:55 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 28 21:59:55 2013 +0000"
      },
      "message": "Merge \"MediaPlayer: MTP: update state only based on source events\" into klp-dev"
    },
    {
      "commit": "4de8e7c1a55f024361786e9fe03fa6eec1db6cb7",
      "tree": "f2fed4503e4133c6ecd19dba3b12d66f4601235a",
      "parents": [
        "a457211af55b2ad5bc58f4228ceb147ac22c92b0"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Oct 28 07:16:41 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Oct 28 09:19:26 2013 -0700"
      },
      "message": "MediaPlayer: MTP: update state only based on source events\n\nState only depends on events from the MediaPlayer (this includes\nthe pseudo-event from MTP recovery mechanism.)\n\nChange-Id: Idd62a773d2386ad6bfbfe417412c2e2ff09b3600\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nBug: 11412881\n"
    },
    {
      "commit": "cfcd53a8156aad5d5be9b7b8337ed9bf46786b93",
      "tree": "33a61d4f98a7787d490a915960127568280ee855",
      "parents": [
        "7534df88fc4b9ca34b1dfa915f1cdfb379c4196d",
        "33f713d2b3663ac05d145a0d971b009d9e0988a7"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Oct 25 14:04:52 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 25 14:04:52 2013 -0700"
      },
      "message": "am 33f713d2: am a60057c0: am d4249251: Merge \"Limit RemoteControlClient generation ID changes\" into klp-dev\n\n* commit \u002733f713d2b3663ac05d145a0d971b009d9e0988a7\u0027:\n  Limit RemoteControlClient generation ID changes\n"
    },
    {
      "commit": "d4249251e0a707d4fbc617b7556cb4c8c5163132",
      "tree": "eecd8cda5265076d3b13185a3e098059d51ce7fb",
      "parents": [
        "4a7f3adaf08e65eceaad0e69f8edcdbcb897011a",
        "0b605349176e8667c52cf75ccdd33ed63398c224"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Oct 25 20:41:39 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 25 20:41:39 2013 +0000"
      },
      "message": "Merge \"Limit RemoteControlClient generation ID changes\" into klp-dev"
    },
    {
      "commit": "0b605349176e8667c52cf75ccdd33ed63398c224",
      "tree": "b6dde372b239c3c324c15f2ce2ff4f951f5bc35a",
      "parents": [
        "02e4c3a1d870be7ced0f70f460d718924f6e348f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 23 14:48:12 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Oct 24 19:10:24 2013 -0700"
      },
      "message": "Limit RemoteControlClient generation ID changes\n\nAt the beginning of each song, the Music app re-registers its\n media button event and requests audio focus, which causes\n the reevaluation of each corresponding stack of clients. Each\n reevaluation is accompanied by the incrementation of the\n RemoteControlClient generation ID, which causes RemoteController\n to issue a notification that the client has changed. The lockscreen\n correctly interprets this as a reason to dump the current\n RemoteControlClient data (including the artwork) because it will\n receive the new data if new one is available. This is what causes\n the \"flashing\" of the wallpaper on the lockscreen: for an instant,\n no client data is available.\nThe fix consists in not causing the client generation ID to be\n incremented when registrations don\u0027t cause any change in the\n RemoteControlClient stack. Even though Music re-registers everything,\n nothing has changed: it still is the current media button receiver,\n and it still has the same RemoteControlClient.\n\nBug 11307382\n\nChange-Id: I4d2404b571e88aeedb0eca6bd19d39f7ec4fc8b1\n"
    },
    {
      "commit": "e38b99504d9bcc0fe80c720ddf064182d44da2c1",
      "tree": "8a979b665b460a01ebf1d7ae470d326d8d389d58",
      "parents": [
        "75c74a4098e25bbcdcd927038adc4f251142e1e9",
        "6a3bfe0796f09114c834dab34b7f5b62a549e51c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Oct 24 16:49:59 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 24 16:49:59 2013 -0700"
      },
      "message": "am 6a3bfe07: am 9c267f8d: am 5504537e: Merge \"Missing LoudnessEnhancer constructor and UUID in public API\" into klp-dev\n\n* commit \u00276a3bfe0796f09114c834dab34b7f5b62a549e51c\u0027:\n  Missing LoudnessEnhancer constructor and UUID in public API\n"
    },
    {
      "commit": "3661494d46d445fb68d41b0a0ec19fc06420fb34",
      "tree": "d94638a095ccb2f44a1b109e1d4957f622e62393",
      "parents": [
        "02e4c3a1d870be7ced0f70f460d718924f6e348f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 23 15:21:08 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 23 15:21:08 2013 -0700"
      },
      "message": "Missing LoudnessEnhancer constructor and UUID in public API\n\nBug 11356672\n\nChange-Id: Ia3d16712c8b9bb425a587acd87ba7fad6b4ce31c\n"
    },
    {
      "commit": "d21b70322a7e8039008e501e648b4119b8bd9680",
      "tree": "2bc2311aa14a047aa4d4a6fbec651a7c0e5a1cbd",
      "parents": [
        "eb66b5d4cd27d51a8b395c37d724063aae98b4c0",
        "16f495dfa43a9e51e3964511c9d6e5567528587d"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Thu Oct 17 10:41:19 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 17 10:41:19 2013 -0700"
      },
      "message": "am 16f495df: am 11c746ab: am a9412556: Merge \"Fix stale data in keyguard transport control display\" into klp-dev\n\n* commit \u002716f495dfa43a9e51e3964511c9d6e5567528587d\u0027:\n  Fix stale data in keyguard transport control display\n"
    },
    {
      "commit": "3b435fb2f0c868c468f3fb2cb2e3ea8314a1755a",
      "tree": "9b731344cce69ee401ff3865bdada3229b99a87c",
      "parents": [
        "49b6d38fe7308d4641046af4a2d062cdc6033c30"
      ],
      "author": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Tue Oct 15 19:15:39 2013 -0700"
      },
      "committer": {
        "name": "Adam Powell",
        "email": "adamp@google.com",
        "time": "Tue Oct 15 19:18:04 2013 -0700"
      },
      "message": "Fix stale data in keyguard transport control display\n\nMake sure that caches are cleared at the right times and views have\ntheir data populated correctly. Also fix a caching issue in\nRemoteController.\n\nBug 11218218\n\nChange-Id: Ieb833b5dc440ccd1b82050f12eb7059a4e0a412f\n"
    },
    {
      "commit": "d38b1302b7506ae7eef6c6680228c0f07f6e1895",
      "tree": "f0cc576905eb58c6dad1cdcec901b3ca25cc5456",
      "parents": [
        "5b64aa689f22fd72107db26a7ba42654599144e4",
        "cd925885283396c0379ec2dcaa94e318993f40f8"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Sun Oct 13 01:50:30 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Oct 13 01:50:30 2013 +0000"
      },
      "message": "Merge \"DO NOT MERGE: Hide new camera API.\" into klp-dev"
    },
    {
      "commit": "59ff7bd243f46c7749a2ef2f1bb1c3c769f0584f",
      "tree": "ac12dc6942bbc610e14ed9a8a5cd0c27ce386e5b",
      "parents": [
        "e6931c14baee7902ca3dd3082cf486a6f97cdc0a",
        "09872a35cb09fc8dbe97d443d083d6c5b0948b90"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Oct 11 14:21:10 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 11 14:21:10 2013 -0700"
      },
      "message": "am 09872a35: am fb059f3c: am 7a6ccb87: Merge \"Remote volume changes\" into klp-dev\n\n* commit \u002709872a35cb09fc8dbe97d443d083d6c5b0948b90\u0027:\n  Remote volume changes\n"
    },
    {
      "commit": "cd925885283396c0379ec2dcaa94e318993f40f8",
      "tree": "4f461ff3118c20640b4c921e07c86e48a423ab1e",
      "parents": [
        "6e19feb4f3da02916754636d3ade340dcd5412d5"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Oct 07 13:24:52 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Oct 11 19:26:08 2013 +0000"
      },
      "message": "DO NOT MERGE: Hide new camera API.\n\nNot yet ready.\n\nBug: 11141002\n\nChange-Id: I4704bffb9ba36af47a66dc5b49cbba00be623aae\n"
    },
    {
      "commit": "fca1e603236b8d1681f784e77e3719d1d59c1428",
      "tree": "d40948aea2db2c25a567a5f637c389b808370b35",
      "parents": [
        "5bd70c5eb3ccb5d1eed3f1f7e924a4fb96b0a053"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Oct 10 18:12:59 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Oct 11 11:36:18 2013 -0700"
      },
      "message": "Remote volume changes\n\nWhen the user plays media remotely, and presses on the volume\n keys with the screen off, verify whether not only local playback\n is active, but also if remote playback is active to see if\n the volume should be adjusted.\nWhen adjusting the volume with screen off, adjust the remote\n volume if applicable.\n\nWhen controlling volume, give priority to local media playback.\n\nBug 11169862\n\nChange-Id: I88a8c003969177d50d4c1569ec6cd2a7c153a341\n"
    },
    {
      "commit": "cfed3656c0ff1cf66aa1755d629c779662ba4386",
      "tree": "95b0b12c83b98ed480849f8e72b4ea7ced26d776",
      "parents": [
        "8b7c726444e768a4661e079c76d37fed7b6b9275",
        "f2177bae2da4c73bb2180efe154b3f7abb615370"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 09 09:13:39 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 09 09:13:39 2013 -0700"
      },
      "message": "am f2177bae: am 2d06e69c: am c04337aa: Merge \"Make RemoteController weakly referenced by IRemoteControlDisplay\" into klp-dev\n\n* commit \u0027f2177bae2da4c73bb2180efe154b3f7abb615370\u0027:\n  Make RemoteController weakly referenced by IRemoteControlDisplay\n"
    },
    {
      "commit": "4348a73bbe4e66ab691aea5971107046df806511",
      "tree": "b2becdff758fecc7c26f57f000daed4170c2f74a",
      "parents": [
        "c23ee579ac21f1f67a30d75e8ac7cbd49ba2fe7d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Oct 08 15:42:31 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Oct 08 15:42:31 2013 -0700"
      },
      "message": "Make RemoteController weakly referenced by IRemoteControlDisplay\n\nIn the RemoteController implementation, the inner class that\n implements the IRemoteControlDisplay interface must have a weak\n link to the RemoteController instance with which it is associated,\n as MediaFocusControl and RemoteControlClient hold a strong\n reference to this binder object in a different remote process.\n Without a weak reference, any object referencing RemoteController\n couldn\u0027t be independently garbage collected without a garbage\n collection in the remote process.\n\nBug 8209392\n\nChange-Id: I29e4274c45249b3cb0d3d89417c69e8fe8f62fc4\n"
    },
    {
      "commit": "f90299dfbcbae11415e81b78081f816b15f5b7a4",
      "tree": "6fa4b924a694a0a8823b97e687244a79da1f7567",
      "parents": [
        "9c27a4dff5a3d767a16c3b724de8c81a74eda829",
        "47f698b88e8be919f3cc0400fa9f1076c1df037c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Oct 07 17:53:34 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 07 17:53:34 2013 -0700"
      },
      "message": "am 47f698b8: am c38c93f4: am 1a1e24f1: Merge \"Update RemoteController info when enabling/disabling it\" into klp-dev\n\n* commit \u002747f698b88e8be919f3cc0400fa9f1076c1df037c\u0027:\n  Update RemoteController info when enabling/disabling it\n"
    },
    {
      "commit": "19566543c4833f50e7c22aff0c707388f8a338d2",
      "tree": "c067f69d8a71a182743c682506597d5722549869",
      "parents": [
        "619fc89aa176a4fa2895933d536987bb278acfb5"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Oct 07 17:10:08 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Oct 07 17:10:08 2013 -0700"
      },
      "message": "Update RemoteController info when enabling/disabling it\n\nWhen a RemoteController listener is disabled: send its listener\n \"blank\" information (no artist, \"stopped state\"...)\nWhen a RemoteController listener is enabled: have the current\n RemoteControlClient send the current information.\n\nBug 8209392\n\nChange-Id: I375bf3c42a425ada94c61453b51669d7e819dde4\n"
    },
    {
      "commit": "49fc2590c1d02c8b06a049c9c7060aad59c41b4c",
      "tree": "e3a7a20c692b1cd970ee5659894aa374d12e4620",
      "parents": [
        "6071c3dcf69af9e0f8525ba2cfa31bd4b8e63d0e",
        "9633629b7916b5694ae1bd960b9c08610b47b7aa"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Oct 07 10:15:48 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 07 10:15:48 2013 -0700"
      },
      "message": "am 9633629b: am 65d57713: am bacb5422: Merge \"Also rely on enabled notification listeners for RemoteController registration\" into klp-dev\n\n* commit \u00279633629b7916b5694ae1bd960b9c08610b47b7aa\u0027:\n  Also rely on enabled notification listeners for RemoteController registration\n"
    },
    {
      "commit": "bacb5422bc4670d2b8905d9f58d068a97836561f",
      "tree": "50c74719b3ec38cc68516f148b70662cda9b4196",
      "parents": [
        "d5102f19653f6b00ce872435c5efb5cb630deed7",
        "f108cdd9ee5efe354d87edd02a07b323298c116c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Oct 07 17:04:20 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 07 17:04:20 2013 +0000"
      },
      "message": "Merge \"Also rely on enabled notification listeners for RemoteController registration\" into klp-dev"
    },
    {
      "commit": "f108cdd9ee5efe354d87edd02a07b323298c116c",
      "tree": "02f05dca3512226d004ecccfc5f3c481a1d85154",
      "parents": [
        "a48ccdd6fb671435ed2583830b2828450bfc3cde"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 27 18:37:36 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Oct 04 17:50:44 2013 -0700"
      },
      "message": "Also rely on enabled notification listeners for RemoteController registration\n\nRegistration of a RemoteController may succeed only if:\n - the caller has the MEDIA_CONTENT_CONTROL permission,\n - or if the RemoteController.OnClientUpdateListener it\n   registers if one of the enabled notification listeners.\n\nFor using the \"enabled notification listener\" functionality,\n the CL involved:\n - making OnClientUpdateListener an interface so a 3rd-party\n   application may have its implementation extend\n   NotificationListenerService, which is required for a\n   listener to be enabled by the user.\n - add the concept of \"enabled\" status in an\n   IRemoteControlDisplay, so a RemoteController (which\n   encapsulates the IRemoteControlDisplay implementation)\n   may be registered, but later temporarily disabled by\n   the user, as a result of a user action in the security\n   settings, or a user switch.\n - making MediaFocusControl, the component tied to\n   AudioService, monitor changes in enabled notification\n   listeners, and act upon enable/disable changes.\n\nBug 8209392\n\nChange-Id: Ia8dfa2156c65668b2b0d4ae92048005912652d84\n"
    },
    {
      "commit": "0272b31b5268564fc6e6e580ac1b1701a4e7e2b7",
      "tree": "c2def943981db9c1fe5e22cee6eb975399ec4d38",
      "parents": [
        "13ca868b82d4049bc235505fd76b252a1922237c",
        "02f00de89f5173aab94b554c26cba94fe5366f94"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 11:10:58 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 04 11:10:58 2013 -0700"
      },
      "message": "am 02f00de8: am 4b292317: am 15bcc2d8: Merge \"audioservice: fix DTMF stream volume\" into klp-dev\n\n* commit \u002702f00de89f5173aab94b554c26cba94fe5366f94\u0027:\n  audioservice: fix DTMF stream volume\n"
    }
  ],
  "next": "f7ee79b6bf08c0658674dda59ca1dc2d56b1176f"
}
