)]}'
{
  "log": [
    {
      "commit": "15e991bdf8870c2c9820c2d98e0d30dae2e05a25",
      "tree": "ad4f68934ac1f3dc1f20f9dedbccf89d1f6b75d7",
      "parents": [
        "39f64a1e4903624bd6395aa2a1c6875a10ed489d",
        "0b09da7a98d5f55674dba7b380e1b8d262f709b0"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Oct 08 10:02:30 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Oct 08 10:02:30 2015 -0700"
      },
      "message": "resolved conflicts for 0b09da7a to lmp-mr1-dev\n\nChange-Id: Ib6a1aa4cee00e0449da30ae158d71403d6236487\n"
    },
    {
      "commit": "2482595baadd16f20d3992c8c9d6a14061836872",
      "tree": "1b2d060855dc645f847ff2143e359166005f829a",
      "parents": [
        "07395f4cd72cf29d1de2864cde42876db4e54411"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Sep 28 11:32:23 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Oct 07 13:53:25 2015 -0700"
      },
      "message": "DO NOT MERGE - OMX: allow only secure codec to remotely call allocateBuffer.\n\nBug: 24310423\nChange-Id: Iebcfc58b447f925ec2134898060af2ef227266a3\n(cherry picked from commit 8dde7269a5356503d2b283234b6cb46d0c3f214e)\n"
    },
    {
      "commit": "925042742d4ebc69fa2bd7829e80e2ec306b87f3",
      "tree": "1293036d78b53bd33761dae3a9028dc383cf10e7",
      "parents": [
        "ce388779cbdb5059c49a72c16b60487e68f8f418",
        "7e1d645f6822dc015bd828c12db63359517cc362"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Sep 21 18:58:28 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 21 18:58:28 2015 +0000"
      },
      "message": "am 7e1d645f: am a8f90d57: Merge \"IAudioFlinger: fix the missing initialization of variable to ensure no info leak when writing them to Parcel.\" into lmp-dev\n\n* commit \u00277e1d645f6822dc015bd828c12db63359517cc362\u0027:\n  IAudioFlinger: fix the missing initialization of variable to ensure no info leak when writing them to Parcel.\n"
    },
    {
      "commit": "9dcb4c63c6b8876a28eab3774ac92cc5e3af13c7",
      "tree": "3bda253cf775abffaaf5415c71ff2aeb4fa383d2",
      "parents": [
        "1ac11129220c71a208da4b4339ac6131132a7bd8",
        "4ae700d2bd467f18e5de8b5d1579d7e20da88e36"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Sep 21 18:58:02 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 21 18:58:02 2015 +0000"
      },
      "message": "am 4ae700d2: am 160ed868: Merge \"DO NOT MERGE Fix vulnerability in mediaserver\" into lmp-dev\n\n* commit \u00274ae700d2bd467f18e5de8b5d1579d7e20da88e36\u0027:\n  DO NOT MERGE Fix vulnerability in mediaserver\n"
    },
    {
      "commit": "1ac11129220c71a208da4b4339ac6131132a7bd8",
      "tree": "54e4f83afd8a98e5ef006240817c7d9e9faec055",
      "parents": [
        "3248baeb655623dfc9903ec75b39a2758f8cf7f4",
        "d83f22552372edfe67473c29a370e0a025a91f21"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Sep 21 18:58:00 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 21 18:58:00 2015 +0000"
      },
      "message": "am d83f2255: am 99e63e75: Merge \"Fix for security vulnerability in media server DO NOT MERGE\" into lmp-dev\n\n* commit \u0027d83f22552372edfe67473c29a370e0a025a91f21\u0027:\n  Fix for security vulnerability in media server DO NOT MERGE\n"
    },
    {
      "commit": "dae1d8ddfca7ca8cb3134116280c3a0c0dc1b2bf",
      "tree": "ebd24c0ccccffd4a1666e25d4f70bd13127fc496",
      "parents": [
        "0af5008096c9562f63808e37a60e5df150137526",
        "5d76aca578a0af0aaebb8eb8ce7cbf2bae4600e6"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Mon Sep 21 18:57:59 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 21 18:57:59 2015 +0000"
      },
      "message": "am 5d76aca5: am 21fda3ed: Merge \"DO NOT MERGE - IAudioFlinger: always initialize variables to ensure no info leak when writing them to Parcel.\" into lmp-dev\n\n* commit \u00275d76aca578a0af0aaebb8eb8ce7cbf2bae4600e6\u0027:\n  DO NOT MERGE - IAudioFlinger: always initialize variables to ensure no info leak when writing them to Parcel.\n"
    },
    {
      "commit": "a8f90d57f5b3ad4ef7194501aa20f0a0bd903e8f",
      "tree": "00b194d2ce4a0dcc37fea1082db5e7ef6d6cec90",
      "parents": [
        "fb5104ec0cc11a50d1a56224cd1ca2950c2def45",
        "40715a2ee896edd2df4023d9f6f586977887d34c"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Sep 17 21:32:32 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 17 21:32:32 2015 +0000"
      },
      "message": "Merge \"IAudioFlinger: fix the missing initialization of variable to ensure no info leak when writing them to Parcel.\" into lmp-dev"
    },
    {
      "commit": "160ed868d6beb0d55dc2194564d2f08cc9d6fbc2",
      "tree": "18ba63622c0c5f7bed51dddaf04190e1aeeae7d7",
      "parents": [
        "99e63e75b670aeca1b4af401cb9582ba9fddf64d",
        "5e7e87a383fdb1fece977097a7e3cc51b296f3a0"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Sep 17 17:04:32 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 17 17:04:32 2015 +0000"
      },
      "message": "Merge \"DO NOT MERGE Fix vulnerability in mediaserver\" into lmp-dev"
    },
    {
      "commit": "99e63e75b670aeca1b4af401cb9582ba9fddf64d",
      "tree": "51f94e7d51f24250da47e55716f0e626bc769dd8",
      "parents": [
        "13a8c5dd7f7437da67ecf8e2886e486191e95ff2",
        "4b219e9e5ab237eec9931497cf10db4d78982d84"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Sep 17 17:04:15 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 17 17:04:15 2015 +0000"
      },
      "message": "Merge \"Fix for security vulnerability in media server DO NOT MERGE\" into lmp-dev"
    },
    {
      "commit": "40715a2ee896edd2df4023d9f6f586977887d34c",
      "tree": "9b25806f7f91bad470fa77b390ca881ce964e320",
      "parents": [
        "13a8c5dd7f7437da67ecf8e2886e486191e95ff2"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Sep 16 15:01:16 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Sep 17 16:15:19 2015 +0000"
      },
      "message": "IAudioFlinger: fix the missing initialization of variable to ensure no info leak when writing them to Parcel.\n\nBug: 23953967\nChange-Id: I3a1d0144ba3832649e322c197ff0f03305ee7829\n(cherry picked from commit 4cac44b53cc9f965cc2c9706b1d7ee2cd79f4066)\n"
    },
    {
      "commit": "e1289226b73f4d4e209dbdb092261cc1f11167d0",
      "tree": "1a68e6cfa54ae333519e55cc980a1b08caba638b",
      "parents": [
        "4d27a468c09bebe8c5f179af4a66882f01d55644",
        "dc81adaa803a0691e65d7fef2c629236e08b9959"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Sep 16 22:33:13 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 16 22:33:13 2015 +0000"
      },
      "message": "am dc81adaa: am c191482e: Merge \"DO NOT MERGE - IAudioFlinger: clear config before reading it from parcel.\" into lmp-dev\n\n* commit \u0027dc81adaa803a0691e65d7fef2c629236e08b9959\u0027:\n  DO NOT MERGE - IAudioFlinger: clear config before reading it from parcel.\n"
    },
    {
      "commit": "5e7e87a383fdb1fece977097a7e3cc51b296f3a0",
      "tree": "667fbe8db495c12ef13f2cb2f197fab34bbe9a9c",
      "parents": [
        "f3eb82683a80341f5ac23057aab733a57963cab2"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Sep 16 10:26:28 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Sep 16 10:26:28 2015 -0700"
      },
      "message": "DO NOT MERGE Fix vulnerability in mediaserver\n\nICrypto.cpp: ASLR bypass using DECRYPT IPC\n\nbug: 24074485\nChange-Id: Ia12942d6b86adde28745908d36a728ab5d69a037\n"
    },
    {
      "commit": "3b76870d146b1350db8a2f7797e06897c8c92dc2",
      "tree": "21a471721a075c7848d738916f1fb293be2bb3e9",
      "parents": [
        "cc0942d0c2a57c5025063c62689ee01b39736dc2"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Sep 10 09:47:29 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Sep 16 09:42:09 2015 -0700"
      },
      "message": "DO NOT MERGE - IAudioFlinger: always initialize variables to ensure no info leak when writing them to Parcel.\n\nBug: 23953967\nChange-Id: Ibbe841da149038675e9e8daea76c77558bc8564b\n(cherry picked from commit 983dca391a76fb45df999fc40e8766b9ddb63511)\n"
    },
    {
      "commit": "4b219e9e5ab237eec9931497cf10db4d78982d84",
      "tree": "062e4c9ffb383786c57f29fba05fea148cd0cf9b",
      "parents": [
        "f3eb82683a80341f5ac23057aab733a57963cab2"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Sep 14 11:55:43 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Sep 14 18:59:06 2015 +0000"
      },
      "message": "Fix for security vulnerability in media server DO NOT MERGE\n\nbug: 23540426\nChange-Id: I7ca419e4008967a0387649e5293ac9d4be71d3c4\n"
    },
    {
      "commit": "1c7719820359f4190cd4bfd1a24d521face7b4f8",
      "tree": "bdaea984bbd7c3def97f7bfc6719562a3ca94f9e",
      "parents": [
        "f3eb82683a80341f5ac23057aab733a57963cab2"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Wed Sep 09 09:48:34 2015 -0700"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Sep 10 10:06:19 2015 -0700"
      },
      "message": "DO NOT MERGE - IAudioFlinger: clear config before reading it from parcel.\n\nBug: 23905951\nBug: 23912202\nChange-Id: Id13a9d3cae2c09e7381b841e67ddfb188274d74c\n(cherry picked from commit e995e477ad59b79145200c8f1e9e13c16c682d59)\n"
    },
    {
      "commit": "d021f7e5686074771981a6386b59e803160a1073",
      "tree": "ef6d29338877fa966a9b144b378b7543672d4a23",
      "parents": [
        "be695f0aa9b8fb3a2dc7983db71a1a78b1268b4b",
        "b18c02761fe357599f9dad17355e38ec1d3226f2"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Fri Sep 04 16:05:00 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 04 16:05:00 2015 +0000"
      },
      "message": "am b18c0276: am 2b63b91b: am c1e989e7: am 13ff64c2: Merge \"Zero out return values in media binder calls\" into klp-dev\n\n* commit \u0027b18c02761fe357599f9dad17355e38ec1d3226f2\u0027:\n  Zero out return values in media binder calls\n"
    },
    {
      "commit": "be695f0aa9b8fb3a2dc7983db71a1a78b1268b4b",
      "tree": "71baacc5f48f94508b548287771a39c78a9f6bd7",
      "parents": [
        "9bbc490e17d38a9734a2b95a308100a7d0ec6dcd",
        "5e193041ab8a541b478dd1b61c8c8cd24bca2ab5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Sep 04 16:04:59 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 04 16:04:59 2015 +0000"
      },
      "message": "am 5e193041: am 52a4fc09: am 3732a3ac: am ab203130: Merge \"Make IEffect command more robust (second try)\" into klp-dev\n\n* commit \u00275e193041ab8a541b478dd1b61c8c8cd24bca2ab5\u0027:\n  Make IEffect command more robust (second try)\n"
    },
    {
      "commit": "2b63b91b84c75afdef4213aa11b0dcc8e7d735a3",
      "tree": "472d338d65970f75ed5df6cddc4664e9e2a42d34",
      "parents": [
        "52a4fc09b483a20ee7d5970be01598ee262f7088",
        "c1e989e76a461ea69e293839b3c29b634a462bd5"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Thu Sep 03 18:05:44 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 03 18:05:44 2015 +0000"
      },
      "message": "am c1e989e7: am 13ff64c2: Merge \"Zero out return values in media binder calls\" into klp-dev\n\n* commit \u0027c1e989e76a461ea69e293839b3c29b634a462bd5\u0027:\n  Zero out return values in media binder calls\n"
    },
    {
      "commit": "52a4fc09b483a20ee7d5970be01598ee262f7088",
      "tree": "6df9c8ad33bffec0266be615e0162b15fcbe5e49",
      "parents": [
        "7d34959b10e0e8a9ac4cdd5e10a6d016513aa03f",
        "3732a3acafa7eb621bc26cca3eb00150ea12d2e2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 03 18:05:43 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 03 18:05:43 2015 +0000"
      },
      "message": "am 3732a3ac: am ab203130: Merge \"Make IEffect command more robust (second try)\" into klp-dev\n\n* commit \u00273732a3acafa7eb621bc26cca3eb00150ea12d2e2\u0027:\n  Make IEffect command more robust (second try)\n"
    },
    {
      "commit": "c1e989e76a461ea69e293839b3c29b634a462bd5",
      "tree": "f2285a73a3ae481533a578215ae6c6cef2c63fe1",
      "parents": [
        "3732a3acafa7eb621bc26cca3eb00150ea12d2e2",
        "13ff64c2db84f4e7cac3396700e333b48c42c7ee"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Thu Sep 03 17:52:44 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 03 17:52:44 2015 +0000"
      },
      "message": "am 13ff64c2: Merge \"Zero out return values in media binder calls\" into klp-dev\n\n* commit \u002713ff64c2db84f4e7cac3396700e333b48c42c7ee\u0027:\n  Zero out return values in media binder calls\n"
    },
    {
      "commit": "3732a3acafa7eb621bc26cca3eb00150ea12d2e2",
      "tree": "867b54747e20ee05ebb5b59d655e952ac2b47247",
      "parents": [
        "16e12007ab1581e1b6aa973f3c83b2a45a816881",
        "ab20313074bb109f29f677c3f09d5da1a48c94e7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 03 17:52:43 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 03 17:52:43 2015 +0000"
      },
      "message": "am ab203130: Merge \"Make IEffect command more robust (second try)\" into klp-dev\n\n* commit \u0027ab20313074bb109f29f677c3f09d5da1a48c94e7\u0027:\n  Make IEffect command more robust (second try)\n"
    },
    {
      "commit": "13ff64c2db84f4e7cac3396700e333b48c42c7ee",
      "tree": "626467528e2ff75d1d312d6879988b5ec25eaab9",
      "parents": [
        "ab20313074bb109f29f677c3f09d5da1a48c94e7",
        "892354335d49f0b9fcd10e20e0c13e3cd0f1f1cb"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Thu Sep 03 17:21:20 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 03 17:21:20 2015 +0000"
      },
      "message": "Merge \"Zero out return values in media binder calls\" into klp-dev"
    },
    {
      "commit": "a946d844a77906072f5eb7093d41db465d6514bb",
      "tree": "5607592deedd9e9538aad3736253a37dea5d38ee",
      "parents": [
        "66b24004345ff8a688e8548409b0b7d5a8902232"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Wed Sep 02 16:46:59 2015 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Wed Sep 02 18:02:12 2015 -0700"
      },
      "message": "Zero out return values in audio binder calls\n\nMore specifically when handling GET_OUTPUT_FOR_ATTR in IAudioPolicyService.\nThis prevents leaking a uninitialized `output` across binder if\ngetOutputForAttr were to encounter errors.\n\nBug: 23756261\nChange-Id: Ibff8a1249a4e8a3c89a33a540dda428b10d6ca82\n"
    },
    {
      "commit": "892354335d49f0b9fcd10e20e0c13e3cd0f1f1cb",
      "tree": "fc309fc843d7c9a627b59f0771c02edf4d1375ba",
      "parents": [
        "f394f12167fddbc755855d06b615509517c99f14"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Wed Sep 02 16:46:59 2015 -0700"
      },
      "committer": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Wed Sep 02 17:48:22 2015 -0700"
      },
      "message": "Zero out return values in media binder calls\n\nMore specifically when handling:\n* GET_STREAM_VOLUME in IAudioPolicyService, and\n* GET_CURRENT_POSITION and GET_DURATION in IMediaPlayer\n\nThis prevents leaking uninitialized values across binder in error cases.\n\nBug: 23756261\nChange-Id: I0ffd900ab12b685b0611259ade4a3efb1ec5defe\n"
    },
    {
      "commit": "25a634427dec455b79d73562131985ae85b98c43",
      "tree": "7eb4fe76d2239352ae39bf4ce75d7dc4f5e0d4bc",
      "parents": [
        "f394f12167fddbc755855d06b615509517c99f14"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Sep 01 20:07:56 2015 +0000"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 02 17:52:12 2015 +0000"
      },
      "message": "Make IEffect command more robust (second try)\n\nBug: 23540907\nChange-Id: If30cfa535ad51521053706fc40fc98d893db5bc7\n(cherry picked from commit 10e6660cc5da65b027c90489ba7ac55d1504e012)\n"
    },
    {
      "commit": "66b24004345ff8a688e8548409b0b7d5a8902232",
      "tree": "96121fe5bc2dcfbeb6962a760c7f63c7dc4e286f",
      "parents": [
        "e1dc15ecfaa5bbbda28647749bad51e6d18d0c79",
        "0ea9e2761a04c4f592d854dbde2749395735fe56"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 28 21:39:52 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 28 21:39:52 2015 +0000"
      },
      "message": "am 0ea9e276: am 184ad88d: am fba72ab0: am f394f121: Merge \"libmedia: clear reply data for IEffect command\" into klp-dev\n\n* commit \u00270ea9e2761a04c4f592d854dbde2749395735fe56\u0027:\n  libmedia: clear reply data for IEffect command\n"
    },
    {
      "commit": "184ad88ddd6bbdf01e131e8e5b75bef5be67b29b",
      "tree": "ddd3c0f0a9d0a5f6423405be8c7381c32ba1d528",
      "parents": [
        "b04cfdf51746dea51d2bb2f56fe9ef789fd30bd9",
        "fba72ab0fcf7298492dcd9e3045913435d30d3a9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 28 21:16:40 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 28 21:16:40 2015 +0000"
      },
      "message": "am fba72ab0: am f394f121: Merge \"libmedia: clear reply data for IEffect command\" into klp-dev\n\n* commit \u0027fba72ab0fcf7298492dcd9e3045913435d30d3a9\u0027:\n  libmedia: clear reply data for IEffect command\n"
    },
    {
      "commit": "fba72ab0fcf7298492dcd9e3045913435d30d3a9",
      "tree": "2401cc720a2689ec6325fd8e34b5960c1e7b785b",
      "parents": [
        "d437c77716fcf454d99b8424bb01f37643b970cc",
        "f394f12167fddbc755855d06b615509517c99f14"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 28 21:08:45 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 28 21:08:45 2015 +0000"
      },
      "message": "am f394f121: Merge \"libmedia: clear reply data for IEffect command\" into klp-dev\n\n* commit \u0027f394f12167fddbc755855d06b615509517c99f14\u0027:\n  libmedia: clear reply data for IEffect command\n"
    },
    {
      "commit": "f394f12167fddbc755855d06b615509517c99f14",
      "tree": "ba4c05bbdf64aa56ac6fc0c6bf789d23065b8b85",
      "parents": [
        "0981df6e3db106bfb7a56a2b668c012fcc34dd2c",
        "57bed83a539535bb64a33722fb67231119cb0618"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 28 20:49:57 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 28 20:49:57 2015 +0000"
      },
      "message": "Merge \"libmedia: clear reply data for IEffect command\" into klp-dev"
    },
    {
      "commit": "e1dc15ecfaa5bbbda28647749bad51e6d18d0c79",
      "tree": "7bafa996c1309cf7af7c96a7f6ec47b7a9c07f20",
      "parents": [
        "92aa0532ab7cfd70011f70bc909249b894a840d0",
        "762c713900bd764570c8fda4e238497200da66d6"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Aug 27 22:07:00 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 27 22:07:00 2015 +0000"
      },
      "message": "am 762c7139: am b04cfdf5: am d437c777: am 0981df6e: IMediaPlayer.cpp: make sure structures are initialized to 0\n\n* commit \u0027762c713900bd764570c8fda4e238497200da66d6\u0027:\n  IMediaPlayer.cpp: make sure structures are initialized to 0\n"
    },
    {
      "commit": "b04cfdf51746dea51d2bb2f56fe9ef789fd30bd9",
      "tree": "a0fd09bfc71ce313ff07a611621968cd0000c477",
      "parents": [
        "35a7b54e828336121d26060dd7e7adb5f5027d32",
        "d437c77716fcf454d99b8424bb01f37643b970cc"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Aug 27 21:51:52 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 27 21:51:52 2015 +0000"
      },
      "message": "am d437c777: am 0981df6e: IMediaPlayer.cpp: make sure structures are initialized to 0\n\n* commit \u0027d437c77716fcf454d99b8424bb01f37643b970cc\u0027:\n  IMediaPlayer.cpp: make sure structures are initialized to 0\n"
    },
    {
      "commit": "d437c77716fcf454d99b8424bb01f37643b970cc",
      "tree": "48e065894ed784e875e4005a6abfe75d71d99ac7",
      "parents": [
        "f9a51893d739000cd70caf10c83d0e603371f5b1",
        "0981df6e3db106bfb7a56a2b668c012fcc34dd2c"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Aug 27 21:45:45 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 27 21:45:45 2015 +0000"
      },
      "message": "am 0981df6e: IMediaPlayer.cpp: make sure structures are initialized to 0\n\n* commit \u00270981df6e3db106bfb7a56a2b668c012fcc34dd2c\u0027:\n  IMediaPlayer.cpp: make sure structures are initialized to 0\n"
    },
    {
      "commit": "0981df6e3db106bfb7a56a2b668c012fcc34dd2c",
      "tree": "dc6913625ac7d7897ae45adecc82cd9e454ebb6b",
      "parents": [
        "9a2be5d49d57b239bf6345f033eab01ba98f3889"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Aug 20 09:56:39 2015 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Aug 27 21:10:32 2015 +0000"
      },
      "message": "IMediaPlayer.cpp: make sure structures are initialized to 0\n\nCredit https://code.google.com/p/android/issues/detail?id\u003d183310\n\nBug: 23515142\nChange-Id: Idbd66fb148bd0ac1dd78f8651d0164f2a41e2427\n(cherry picked from commit b73b826cc16291b33649402497efbe0f946413bd)\n"
    },
    {
      "commit": "57bed83a539535bb64a33722fb67231119cb0618",
      "tree": "d27a064540c9761fd8c2c5f804232596f07e8bae",
      "parents": [
        "9a2be5d49d57b239bf6345f033eab01ba98f3889"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 26 16:34:33 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 27 00:06:18 2015 +0000"
      },
      "message": "libmedia: clear reply data for IEffect command\n\nBug: 23540907\nChange-Id: Ib89afc6b273b0eb310bbc5a1bd92b1e3d407c249\n"
    },
    {
      "commit": "ca095ac251ad02ad745d763f37ec3fcc5a8aa2ea",
      "tree": "f5e0756fd218a0e06e61ce391d2b61e6c88c555d",
      "parents": [
        "fd1d6df52f4c33f59d44abdbcdd0ec5b9a20f059",
        "8de6d690ae5843bd8e005deedea571596f79bbd3"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Aug 21 18:51:27 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 21 18:51:27 2015 +0000"
      },
      "message": "am 8de6d690: Fix build break DO NOT MERGE\n\n* commit \u00278de6d690ae5843bd8e005deedea571596f79bbd3\u0027:\n  Fix build break DO NOT MERGE\n"
    },
    {
      "commit": "8de6d690ae5843bd8e005deedea571596f79bbd3",
      "tree": "de83a9d8986206f202dd2c34bd62116be39474d6",
      "parents": [
        "c2153d0dc800d0718788dccd0f2a2d29f4647c03"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Aug 21 09:58:12 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Aug 21 18:32:29 2015 +0000"
      },
      "message": "Fix build break DO NOT MERGE\n\nrelated-to-bug: 23223325\n\nChange-Id: I7b09712b5f18912abddd50b75f6edaf860e894c1\n"
    },
    {
      "commit": "fd1d6df52f4c33f59d44abdbcdd0ec5b9a20f059",
      "tree": "457d61467a5f2f5797b695565dfd3e46310f8534",
      "parents": [
        "f839b2a33c46f3520684f0a839760cca36a6b4c7",
        "c2153d0dc800d0718788dccd0f2a2d29f4647c03"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Aug 21 15:36:21 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 21 15:36:21 2015 +0000"
      },
      "message": "am c2153d0d: DO NOT MERGE Part of fix for libmedia OOB write anywhere\n\n* commit \u0027c2153d0dc800d0718788dccd0f2a2d29f4647c03\u0027:\n  DO NOT MERGE Part of fix for libmedia OOB write anywhere\n"
    },
    {
      "commit": "5f126c0d09b55817d1f94b3845a3c220981a622d",
      "tree": "78aea84412b7abd2190379a762a486d7f9bbf5b4",
      "parents": [
        "386c576aae9a75b31abd3122cc62520087d3a339",
        "e93a33a8f2706d3918634d17c33491f69060a62c"
      ],
      "author": {
        "name": "Abhishek Arya",
        "email": "aarya@google.com",
        "time": "Fri Aug 21 15:34:50 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 21 15:34:50 2015 +0000"
      },
      "message": "am e93a33a8: am 8cc71bc8: Merge \"DO NOT MERGE Part of fix for libmedia OOB write anywhere\" into lmp-dev\n\n* commit \u0027e93a33a8f2706d3918634d17c33491f69060a62c\u0027:\n  DO NOT MERGE Part of fix for libmedia OOB write anywhere\n"
    },
    {
      "commit": "c2153d0dc800d0718788dccd0f2a2d29f4647c03",
      "tree": "24cd6439538e4bf3fd0007757d86dbcb63a465a9",
      "parents": [
        "5aa887ef44238e9a727564fe9051933f8b42e399"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Aug 17 17:57:47 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Aug 20 14:55:35 2015 -0700"
      },
      "message": "DO NOT MERGE Part of fix for libmedia OOB write anywhere\n\nClarify that decrypt destination is not a pointer for\nsecure case.\n\nb/23223325\n\nChange-Id: I642dcf790a9eb9e32175f3e0d8f040c82228e3ac\n(cherry picked from commit ed555d70d80964f40563d89a4e6d6a80f83f4b89)\n"
    },
    {
      "commit": "aa4da6fa7ca2454f0713de0a5a583b5b8160166b",
      "tree": "849d18a0d5ad54470904bfbfe7e24004ede61cb3",
      "parents": [
        "d4f0d88e701f5323621bd352cf4cbcd14bc349c4"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Aug 17 17:57:47 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Aug 20 20:16:22 2015 +0000"
      },
      "message": "DO NOT MERGE Part of fix for libmedia OOB write anywhere\n\nClarify that decrypt destination is not a pointer for\nsecure case.\n\nb/23223325\n\nChange-Id: I642dcf790a9eb9e32175f3e0d8f040c82228e3ac\n(cherry picked from commit ed555d70d80964f40563d89a4e6d6a80f83f4b89)\n"
    },
    {
      "commit": "2517d62a1c888332e7407295f935c4a55361db3a",
      "tree": "2f268164f1b40997853d00c8d197b73c2403e8c6",
      "parents": [
        "1c4549c38b7056ae6a4415eb65123d23d86c7b97",
        "9ef830c6dbd4f6000b94abee3df14b9e27a38294"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 13 22:40:25 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 13 22:40:25 2015 +0000"
      },
      "message": "Merge \"DO NOT MERGE - IAudioFlinger: add checks on binder calls\" into lmp-mr1-dev"
    },
    {
      "commit": "e4ac35fa524b011f272d396b2c12515382bddb94",
      "tree": "4ebbce6415c6ad94a2fe021b652e4ae3dced8e0d",
      "parents": [
        "39ab7cea0e3c14181e3e68b0f1bb5fa20a434b35"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 02 13:49:15 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 13 22:10:46 2015 +0000"
      },
      "message": "DO NOT MERGE - IAudioFlinger: add checks on binder calls\n\nLimit number of ports and patches listed by\nLIST_AUDIO_PATCHES and LIST_AUDIO_PORTS.\n\nAlso fix typo causing wrong pointer to be used when writing to Parcel.\n\nBug: 19573085.\nChange-Id: I41a9c710e45738a4f11990160587856c429a4646\n(cherry picked from commit f75c2fef14354024ec27bff1444f9e50b5ef55a9)\n"
    },
    {
      "commit": "96a41a2ba5985aeb9163923f54d84cdaa3d0363d",
      "tree": "f0ef2332a613beac9eb6d78ea168ffea6487ff6a",
      "parents": [
        "a3e8f60f5e409f65f12636df5fad7f20ff736df5",
        "dbe6c320b414d8139c46aaf880d5f154ef4f9af8"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 14 23:17:08 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 14 23:17:08 2015 +0000"
      },
      "message": "am dbe6c320: HDCP: buffer over flow check -- DO NOT MERGE\n\n* commit \u0027dbe6c320b414d8139c46aaf880d5f154ef4f9af8\u0027:\n  HDCP: buffer over flow check -- DO NOT MERGE\n"
    },
    {
      "commit": "23d41fb11de0a5acb12733f7cd8875ea06d99eb5",
      "tree": "911d816947d64fcca77c513f83a87259390ea72c",
      "parents": [
        "bcf2becf206b5d56c89bf2b43356fd7995003302",
        "2a9ccb66c052d16e870d2db1fa6edb9a39f6526b"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 14 23:00:51 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 14 23:00:51 2015 +0000"
      },
      "message": "am 2a9ccb66: am fd3a6e71: HDCP: buffer over flow check -- DO NOT MERGE\n\n* commit \u00272a9ccb66c052d16e870d2db1fa6edb9a39f6526b\u0027:\n  HDCP: buffer over flow check -- DO NOT MERGE\n"
    },
    {
      "commit": "fd3a6e7126023e01da119a2587cdf8505c4d1809",
      "tree": "8c5f2221ab3b593c7a65d50d083040f6571f8d34",
      "parents": [
        "438217a0a5b3d2bfc6e7cd10c395c7b642013758"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Apr 27 18:38:17 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 14 21:57:55 2015 +0000"
      },
      "message": "HDCP: buffer over flow check -- DO NOT MERGE\n\nbug: 20222489\nChange-Id: I3a64a5999d68ea243d187f12ec7717b7f26d93a3\n(cherry picked from commit 532cd7b86a5fdc7b9a30a45d8ae2d16ef7660a72)\n"
    },
    {
      "commit": "dbe6c320b414d8139c46aaf880d5f154ef4f9af8",
      "tree": "9da4023f106ea43c20ec91d39406c799420f35db",
      "parents": [
        "7acac10aae34da5ae4d628c5a270e7e3e94f7598"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Apr 27 18:38:17 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu May 14 21:54:54 2015 +0000"
      },
      "message": "HDCP: buffer over flow check -- DO NOT MERGE\n\nbug: 20222489\nChange-Id: I3a64a5999d68ea243d187f12ec7717b7f26d93a3\n(cherry picked from commit 532cd7b86a5fdc7b9a30a45d8ae2d16ef7660a72)\n"
    },
    {
      "commit": "d8e41553b96432c4d4dae80fcc042b95fd9d27d9",
      "tree": "8dbbd8d07f670ca1c56a6519d80b38fb5f61b5eb",
      "parents": [
        "a05bd3c1cdff400ad92532b06d40ddc5c638c284",
        "bd28ac7471e2c7cab0ce9df4c2d5a295adc163a1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed May 06 22:48:44 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 06 22:48:44 2015 +0000"
      },
      "message": "am bd28ac74: am 59cea261: Add some sanity checks\n\n* commit \u0027bd28ac7471e2c7cab0ce9df4c2d5a295adc163a1\u0027:\n  Add some sanity checks\n"
    },
    {
      "commit": "59cea2616269f34b1f3d046995efd8da42cd5549",
      "tree": "c2f165a35105142d715f36876ededb0311360938",
      "parents": [
        "eb204f82afd5519eb544bf8bee692e7152820c3b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 20 11:08:59 2015 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Apr 22 10:14:35 2015 -0700"
      },
      "message": "Add some sanity checks\n\nBug: 19400722\nChange-Id: Ib3afdf73fd4647eeea5721c61c8b72dbba0647f6\n"
    },
    {
      "commit": "9ef830c6dbd4f6000b94abee3df14b9e27a38294",
      "tree": "770f28993c6eb3f22d921f163b94d8ad834170a2",
      "parents": [
        "c42c4b526422fada02f3522a08143f738e9e60af"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 02 13:49:15 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 17 17:39:30 2015 +0000"
      },
      "message": "DO NOT MERGE - IAudioFlinger: add checks on binder calls\n\nLimit number of ports and patches listed by\nLIST_AUDIO_PATCHES and LIST_AUDIO_PORTS.\n\nAlso fix typo causing wring pointer to be used when writing to Parcel.\n\nBug: 19573085.\nChange-Id: I41a9c710e45738a4f11990160587856c429a4646\n"
    },
    {
      "commit": "c42c4b526422fada02f3522a08143f738e9e60af",
      "tree": "055d8f09c85491920c54dced2498f2dc1c4103cf",
      "parents": [
        "faefd08b11d1f4955b5da6c10e1a9be1a5cbefad",
        "424324b327cc0b022ff8d10e03158b4594489ee7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 25 20:25:03 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 25 20:25:03 2015 +0000"
      },
      "message": "am 424324b3: am 2fdd16b3: DO NOT MERGE - audio policy service: fix possible memory overflow\n\n* commit \u0027424324b327cc0b022ff8d10e03158b4594489ee7\u0027:\n  DO NOT MERGE - audio policy service: fix possible memory overflow\n"
    },
    {
      "commit": "2fdd16b3cbe1c1e53d1c4b305f4c0174b995ad1a",
      "tree": "24e2230b0bd1fb18c7b37effe1af168757326959",
      "parents": [
        "8e2b445fabd05132de57226de71c7860a5391954"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 06 10:44:24 2015 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 25 18:55:09 2015 +0000"
      },
      "message": "DO NOT MERGE - audio policy service: fix possible memory overflow\n\nAdd limit on number of audio ports and patches requested by\nlistaudioPorts() and listAudioPatches().\n\nBug: 19261727.\nChange-Id: I21dfdf11cf805734cc3b7b2a85762c5598f60580\n(cherry picked from commit 1d670b11313250442455a22f1056ad649d607fb2)\n"
    },
    {
      "commit": "c447ded04f11169e9b96b31cd196b2c4ffa9f31c",
      "tree": "77fedcbb54431d1d432d9bdcc58791ec5418c413",
      "parents": [
        "3190e67d5c80c1e39e3be91784110af1180cd182"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 06 08:47:05 2015 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 06 08:55:25 2015 -0800"
      },
      "message": "fix record from default input source\n\nCommit caf7f48a0e broke capture from default\ninput source on some devices: the input source is now specified as part of\nthe audio attributes and the default source was not remapped to mic source.\n\nBug: 18736417.\nChange-Id: I3f5da33cdb56f959aaef68ed1952342babc63aa0\n"
    },
    {
      "commit": "d1f69b0b17acbd96987ecb2f3378abd394d05903",
      "tree": "e3061c609dfaa2c217bb79a8d85e4571e8bd0d3d",
      "parents": [
        "8ddb02230d02968d471aa41b22433957c38827c0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 15 14:33:13 2014 -0800"
      },
      "committer": {
        "name": "Rachad Alao",
        "email": "rachad@google.com",
        "time": "Tue Dec 16 01:38:34 2014 +0000"
      },
      "message": "audioflinger: implement pause/resume for direct outputs\n\nExtend pause/resume support to direct output threads\n(was only for offload threads).\n\nIf the HAL implements pause/resume, track pause/resume is forwarded to\nthe HAL.\n\nPause, flush, resume sequence is respected by executing the HAL\ncalls in the playback thread (same as offload).\n\nMake sure the track flags on client side are consistent with the\nflags on server side.\n\nBug: 17883772.\nChange-Id: I89b360d69818f7a9204bd36e3ec63a79e106ecf1\n"
    },
    {
      "commit": "baac183f3808d7b68f184647a97bd381620415fe",
      "tree": "af81e602db02f55eb35852e3d0851499199166ed",
      "parents": [
        "275e8e9de2e11b4b344f5a201f1f0e51fda02d9c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 01 17:52:59 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 09 15:47:30 2014 -0800"
      },
      "message": "audio policy: binder calls for dynamic audio policy mixes\n\nAdd binder calls to register and unregister dynamic mixes\nto AudioPolicyManager.\n\nBug: 16009464.\n\nChange-Id: I4ef38166d0cfc88c984970969380d0cd6eb083ac\n"
    },
    {
      "commit": "275e8e9de2e11b4b344f5a201f1f0e51fda02d9c",
      "tree": "c22e1c0b8541aa04fd6c8d803e4fa6704a84e6e2",
      "parents": [
        "82a69ea8b090d57bff5e02774688b546a711bbb8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Nov 30 15:14:47 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 09 15:47:19 2014 -0800"
      },
      "message": "audio policy: add support for custom mixes\n\nAdd support for custom mixes in AudioPolicyManager.\n\nTwo methods are added to register or unregister a list of custom mixes\nwith their attributes and format.\n\ngetOutputForAttr() and getInputForAttr() first look for a match in\nregistered mixes before defaulting to normal output/input selection\n\nRemote submix device connection disconnection now takes address into\naccount to identify the correspnoding custom mix.\n\nBug: 16009464.\n\nChange-Id: I3f1c2a485a0fb71b1f984ed0adc9b68aa971e408\n"
    },
    {
      "commit": "82a69ea8b090d57bff5e02774688b546a711bbb8",
      "tree": "b4712a7df9c4431103b1d1a4a77ad5b237703637",
      "parents": [
        "ca7b4bc40604ae4f06718cb34945fdab278987ae"
      ],
      "author": {
        "name": "zunkyu.lee",
        "email": "zunkyu.lee@lge.com",
        "time": "Fri Nov 07 15:47:32 2014 +0900"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 08 16:04:24 2014 -0800"
      },
      "message": "Prevent ANR when AudioTrack is paused or re-routed\n\nIf ClientProxy was interrupted by AudioTrack::pause() just before futex syscall() in obtainBuffer() was called,\nIt will not call releaseBuffer to wake up AudioTrackThread.\nIt puts the AudioTrackThread to sleep and then a deadlock occurs.\n\nIn this case, CBLK_INTERRUPT flags can\u0027t prevent a deadlock,\nso this patch set mFutex to FUTEX_WAKE during interrupt() to avoid deadlock.\n\nA similar problem could occur due to re-route or recovery after mediaserver death.\n\nBug: 18641665\nChange-Id: I66fcae43af9a91eb55f6cdb52c644ee6c0999772\n"
    },
    {
      "commit": "be837c328ae1ea2b193d05aaa3d4214c263b5b77",
      "tree": "e57cdef76f6936c4506d270dff4f59d72d202528",
      "parents": [
        "d6e7f1e1f8b1dfa6a87c7c0b1a5c68d435096b01"
      ],
      "author": {
        "name": "seunghak.han",
        "email": "seunghak.han@lge.com",
        "time": "Sat Nov 22 15:22:35 2014 +0900"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 05 10:52:34 2014 -0800"
      },
      "message": "Track volume should be maintained even if track is restored\n\nIf track is restored when it set its volume to a non-unity value (such as mute),\nthe volume was forced to unity again.  Now, the previous volume is restored.\n\nBug: 18570664\nChange-Id: I79f34c6c7d6f535baba813fd3b8ba8e55cac8ad7\n"
    },
    {
      "commit": "caf7f48a0ef558689d39aafd187c1571ff4128b4",
      "tree": "7a2c90732783e2c90cabb6045c4ab0dcea842bf1",
      "parents": [
        "087eb332cdd64026de27c914194127f8fda1a846"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 25 17:50:47 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 25 17:50:47 2014 -0800"
      },
      "message": "AudioRecord: use audio attributes instead of audio source.\n\nAdded AudioRecord constructor with audio attributes.\nReplaced AudioPolicymanager::getInput() by getInputForAttr().\n\nNo new functionality for now.\n\nAlso:\n\n- Fixed warnings in AudioPolicyManager\n- Allocate audio session ID before calling getOutputForAttr() in\nAudioTrack.\n\nBug: 16006090.\nChange-Id: I15df21e4411db688e3096dd801cf579d76d81711\n"
    },
    {
      "commit": "72bf901ca905ce154fe7866f06d25a01aadcf974",
      "tree": "0293ab3f6cdbec518913187d77c6d13d1c47a321",
      "parents": [
        "d325005e4a3be45c57e950f8c18b329c968602ce",
        "e83b55dc29ca16092ba02f36f55fa6e0e37fd78c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 26 00:21:20 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 26 00:21:20 2014 +0000"
      },
      "message": "Merge \"audio policy: new getOutputForAttr() prototype.\" into lmp-mr1-dev"
    },
    {
      "commit": "d325005e4a3be45c57e950f8c18b329c968602ce",
      "tree": "4673f354af652344295bc5fd2b2d37d0e6b2f16b",
      "parents": [
        "512dd849d0ef9e9988fedfbaf951b4b82523957c",
        "680b795435a5a501a56610258dce5eda40a1725d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 25 23:49:04 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 25 23:49:05 2014 +0000"
      },
      "message": "Merge \"Fix AudioTrack loop mode to play audio from buffer start\" into lmp-mr1-dev"
    },
    {
      "commit": "e83b55dc29ca16092ba02f36f55fa6e0e37fd78c",
      "tree": "f8232611b6372b74579e3ed03dfbeb167011d257",
      "parents": [
        "0f78eabb733e1413d7febd00c0bad0f0add02314"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 14 10:06:21 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 25 12:48:19 2014 -0800"
      },
      "message": "audio policy: new getOutputForAttr() prototype.\n\nUpdate getOutputForAttr() prototype and group all logic\ndealing with audio attributes to stream type conversion in\naudio policy manager.\n\ngetOutputForAttr():\n- specifies the audio session (for future use)\n- returns a status code\n- receives either stream type (for legacy) or audio attributes\n- returns an updated streamtype\n\nRemove logic dealing with legacy stream types to attributes conversion\nfrom AudioTrack.\n\nUse correct type for audio sessions in other APIs (startOutput() ...).\n\nreleaseOutput() specifies the audio session (for future use).\n\nBug: 18067208.\n\nChange-Id: I1bfbe9626c04c7955d77f8a70aecfad2cb204817\n"
    },
    {
      "commit": "680b795435a5a501a56610258dce5eda40a1725d",
      "tree": "db2d003b9b147e5f51e4cf6bf05d497d8ce4acb7",
      "parents": [
        "bc0f452b9a76dd8c8244e775bc9c5aa85cae3ddf"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Nov 12 13:18:52 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 24 17:25:18 2014 -0800"
      },
      "message": "Fix AudioTrack loop mode to play audio from buffer start\n\nBug: 18217633\nChange-Id: Ica77acf0a32832d9b04eb657ef2f4f5329f8fbda\n"
    },
    {
      "commit": "223fd5c9738e9665e495904d37d4632414b68c1e",
      "tree": "33e0afab9a7479cdc4c688a742a8977c8ead21e4",
      "parents": [
        "bc0f452b9a76dd8c8244e775bc9c5aa85cae3ddf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 11 13:43:36 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 21 10:41:13 2014 -0800"
      },
      "message": "audio: new routing strategies and stream types\n\nAdded new routing strategies and stream type for internal use\nby audio policy manager and audio flinger:\n- One for accessibility to allow different routing than media\n- One for re-routing (remote submix) in preparation of dynamic\npolicies\n- Added stream type for \"internal\" audio flinger tracks used\nfor audio patches and duplication.\n\nBug: 18067208.\nChange-Id: I88f884b552e51e4a49c29125e5a1204cf58ff434\n"
    },
    {
      "commit": "a7cf01da547bad8d4e66e3e4570eddeac98b6b05",
      "tree": "a099a86ae62f0ea58c02c3eb61d328fab98f6c51",
      "parents": [
        "574aed902443d41581684dc8bc5ddd2e067f4cdf",
        "cb2129b3b568a4e31bcbda3545a468024bc972fe"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 20 18:36:27 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 20 18:36:27 2014 +0000"
      },
      "message": "Merge \"Fix missing loop count for static tracks.\" into lmp-mr1-dev"
    },
    {
      "commit": "0ebd5f95b68a3a5c9e5509f21938c9e51e74d71b",
      "tree": "0a2939a70644eb37c401705c8211d65bac553743",
      "parents": [
        "18899808001ddaea13fa4c5277502c96351f69a5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 19 19:04:52 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 20 09:15:02 2014 -0800"
      },
      "message": "AudioSystem: fix cross deadlock\n\nDo not hold gLockAPS when calling\nAudioPolicyService::registerClient() in get_audio_policy_service().\nregisterClient() will need to acquire the AudioPolicyService mutex and\nif at the same time a method called from AudioPolicyService\n(with mutex held) calls back into AudioSystem and get_audio_policy_service()\na cross deadlock occurs.\n\nSame preventive fix for get_audio_flinger().\n\nUse a separate mutex for notification client list in AudioPolicyService.\nThis prevents deadlocking if registerClient() is called as a consequence of\nAudioFlinger calling back into AudioPolicyManager while executing a method\nwith AudioPolicyService locked\n\nBug: 18403952.\nBug: 18450065.\nChange-Id: Ia832e41aede8bc6c843fc615508fbdd74e0863b5\n"
    },
    {
      "commit": "bbda5ce4782b20f3ed75482e5f73b8d999223438",
      "tree": "8dd9231b0d49d1b31aada001e9650f92ff3f3825",
      "parents": [
        "408dba5ff6dd014a19afeeeae69242f022b73b30",
        "f6778fd0c72ab54328f0e9f5ecf0017b73e99dd8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 19 18:03:04 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 19 18:03:05 2014 +0000"
      },
      "message": "Merge \"AudioSystem: Add mutex for output cache\" into lmp-mr1-dev"
    },
    {
      "commit": "f6778fd0c72ab54328f0e9f5ecf0017b73e99dd8",
      "tree": "8f31be289f16ae8d684699ba80d533b249923e18",
      "parents": [
        "35b0f7095fac4f2cc112edd4b0298a9cb1ee394f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 18 17:26:58 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 19 09:12:16 2014 -0800"
      },
      "message": "AudioSystem: Add mutex for output cache\n\nFix cross deadlock with AudioFlinger by adding\na dedicated mutex to protect access to cached output list\nand parameters.\n\nBug: 18410728.\nChange-Id: Ia31283b1972d8865a46e84e63695173c187eb781\n"
    },
    {
      "commit": "cb2129b3b568a4e31bcbda3545a468024bc972fe",
      "tree": "87f7c1114770b59e3a6166e7adbb3bcdea8601d2",
      "parents": [
        "97e6ca1a0be83e420ab238d9a1c31d3112126646"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 11 12:17:22 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 18 17:15:51 2014 -0800"
      },
      "message": "Fix missing loop count for static tracks.\n\nStaticAudioTrackServerProxy::framesReady() previously returned\nonly the contiguous frames, update to return the total\navailable frames. This resolves short-count looping in\nSoundPool for FastTracks.\n\nAlso (1) Removes the racy condition of reading two variables\nand (2) Fixes buffer-\u003emNonContig to return the correct value\nand (3) Restores behavior that loop count of 1 goes back to\nloopStart once during playback.\n\nBug: 11830751\nBug: 12070295\nBug: 17456842\nChange-Id: I64906e6036bb00a1d7375b03efe6deb69d6478ca\n"
    },
    {
      "commit": "29e6cecdd8562700ab625c5645ddd6a7753789f1",
      "tree": "e6b4da8119778e487653f7d74e087228e0b79e80",
      "parents": [
        "88ec9e992af75f9783794df5d7be31c3b018ad09"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 13 18:17:55 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 17 18:48:08 2014 -0800"
      },
      "message": "audio policy: do not prevent routing to A2DP when suspended.\n\nAllow A2DP sink selection even if A2DP is suspended.\nIt is not because use of A2DP is temporarily disabled by SCO\nselection that the policy rule routing a given use case\nto A2DP should be altered. The source will be routed to A2DP\nbut it will remain silent until suspend condition is cleared\nwhich is the purpose of suspend mode.\n\nAlso make sure that accessibility prompts are audible while in call\nby forcing stream type to STREAM_VOICE_CALL.\nFix inconsistent logic between AudioTrack::setStreamTypeFromAttributes()\nand AudioPolicyManager::getStrategyForAttr()\n\nBug: 18095151.\nChange-Id: I1c75dd8288ed3dd494eb942060eac9c9660dca50\n"
    },
    {
      "commit": "0d6db582f2ccc9f8943c5f3965e2994b7d137158",
      "tree": "bdd0de4b94942f7490dfe7b59b96bb4fa65a136a",
      "parents": [
        "538596f71dc667b2f39c27d0bc9bbf119b0e6d58"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 12 18:39:44 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 12 18:52:20 2014 -0800"
      },
      "message": "remove AudioSystem::getOutputSamplingRateForAttr()\n\nIt is safer to query the output sampling rate once the output\nhave been acquired by calling getOutputForAttr().\n\nBug: 16009464.\nChange-Id: Ib561facd19fba5359a6b837d75f1a1cd2dc51b29\n"
    },
    {
      "commit": "6d60079e97c5fd6ba7de7b60adb0a027c0608d19",
      "tree": "9ebbce57d5015eb8ac2356af7ed14b84136b9916",
      "parents": [
        "995599cbd6ada739c257716a6d8b90eee6d61473",
        "99370d2da54d7537ffda7fef1f6ef36f8b690321"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 10 23:31:32 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 10 23:31:32 2014 +0000"
      },
      "message": "am 99370d2d: am ae6965ae: am 3aef3560: am e360f0f6: IAudioPolicyService: bound array size in queryDefaultPreProcessing\n\n* commit \u002799370d2da54d7537ffda7fef1f6ef36f8b690321\u0027:\n  IAudioPolicyService: bound array size in queryDefaultPreProcessing\n"
    },
    {
      "commit": "99370d2da54d7537ffda7fef1f6ef36f8b690321",
      "tree": "1ba4953c98fd3eeaa6f9a3fc2ab3e88003da23e4",
      "parents": [
        "ca83dd27f6c662bcbb0cea204c4df7ca77a479fd",
        "ae6965ae7664aaea489a8d58358035610075c9af"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 10 23:28:27 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 10 23:28:27 2014 +0000"
      },
      "message": "am ae6965ae: am 3aef3560: am e360f0f6: IAudioPolicyService: bound array size in queryDefaultPreProcessing\n\n* commit \u0027ae6965ae7664aaea489a8d58358035610075c9af\u0027:\n  IAudioPolicyService: bound array size in queryDefaultPreProcessing\n"
    },
    {
      "commit": "ae6965ae7664aaea489a8d58358035610075c9af",
      "tree": "fd4406ad0fbd33d98a2cca8407aad354f9baa58b",
      "parents": [
        "42f785c5d5ae596d781171327c98c541f0517feb",
        "3aef35600523eb6b4ccc8086a8913e80701a031a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 10 23:20:25 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 10 23:20:25 2014 +0000"
      },
      "message": "am 3aef3560: am e360f0f6: IAudioPolicyService: bound array size in queryDefaultPreProcessing\n\n* commit \u00273aef35600523eb6b4ccc8086a8913e80701a031a\u0027:\n  IAudioPolicyService: bound array size in queryDefaultPreProcessing\n"
    },
    {
      "commit": "3aef35600523eb6b4ccc8086a8913e80701a031a",
      "tree": "04abfec97e7e0d0b54b1037b06529d2ca26ebbdd",
      "parents": [
        "4fbe49a83d41a64d44e363ccd691e7bfc41bb6af",
        "e360f0f6cad290f69e07fd3a20dcf11a1dbc4160"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 10 23:16:22 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 10 23:16:22 2014 +0000"
      },
      "message": "am e360f0f6: IAudioPolicyService: bound array size in queryDefaultPreProcessing\n\n* commit \u0027e360f0f6cad290f69e07fd3a20dcf11a1dbc4160\u0027:\n  IAudioPolicyService: bound array size in queryDefaultPreProcessing\n"
    },
    {
      "commit": "e360f0f6cad290f69e07fd3a20dcf11a1dbc4160",
      "tree": "6e19a985df2a12cf74d713b689556cfc735f0088",
      "parents": [
        "96016c2d583ccca9fffd6974cb9473f7effd6cf5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 05 12:15:36 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 10 19:43:46 2014 +0000"
      },
      "message": "IAudioPolicyService: bound array size in queryDefaultPreProcessing\n\nBug: 18226810.\nChange-Id: Ib8e2bfe835a8681aac50bf23161db14e50c9a124\n(cherry picked from commit 74adca9ad30b7f8a70d40c5237bade0d16c4ea58)\n"
    },
    {
      "commit": "e662cd5cdbe1312d6b74754d2945fffe99e4fe2c",
      "tree": "68e681598ebc7f78ca041a51011652700694f7d8",
      "parents": [
        "1609e451cf6101efe6aeaaa2da61db2cb095c9e8",
        "d2d089fc86c62843992e7d5b371ee9227189a1e6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 07 21:23:26 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 07 21:23:28 2014 +0000"
      },
      "message": "Merge \"Improve AudioTrack recovery from mediaserver death\" into lmp-mr1-dev"
    },
    {
      "commit": "c339a921642c38621f57e95b4ec41cfaa99c7a63",
      "tree": "7b8204818f224904c8df99e6b1ee66e34f2afed2",
      "parents": [
        "62fe78b66c87339a64f047561e7b4aac606310e2",
        "a36060891425c4ce0621e40344ac473ec14924dd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 07 18:38:54 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 07 18:38:54 2014 +0000"
      },
      "message": "Merge \"AudioSystem: remove obsolete method.\" into lmp-mr1-dev"
    },
    {
      "commit": "a36060891425c4ce0621e40344ac473ec14924dd",
      "tree": "f098fd77fb7661b83e3c43f31aec6f30316f4f34",
      "parents": [
        "1cf9ad1abb599ce4057189e0db154cf00b4913f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 06 18:07:23 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 06 18:07:23 2014 -0800"
      },
      "message": "AudioSystem: remove obsolete method.\n\nBug: 18067208.\nChange-Id: I9bbf9088485f5162c765ca504d9b784b956234c6\n"
    },
    {
      "commit": "62fe78b66c87339a64f047561e7b4aac606310e2",
      "tree": "95c63273d9323a8edd231c725b1e72c1369439a8",
      "parents": [
        "d556fad7475f4cd05a2199e9716ed8e01aa0ea9b",
        "85f480e7fd7c5e70c91d2f205b5c49488a84eb4d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 07 01:48:20 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 07 01:48:20 2014 +0000"
      },
      "message": "Merge \"Fix memory leak\" into lmp-mr1-dev"
    },
    {
      "commit": "85f480e7fd7c5e70c91d2f205b5c49488a84eb4d",
      "tree": "79022052fe7237ba1d3a5af8e7f4e75f3ae84a1b",
      "parents": [
        "74adca9ad30b7f8a70d40c5237bade0d16c4ea58"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 05 17:44:51 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 06 08:39:29 2014 -0800"
      },
      "message": "Fix memory leak\n\nChange-Id: I3f4110a88679b7e7841f40c6acdbf5dcde40fb19\n"
    },
    {
      "commit": "1cf9ad1abb599ce4057189e0db154cf00b4913f8",
      "tree": "1bbf6047da0636dddcac32a904d55c2cd87d2ba0",
      "parents": [
        "19a3f69d9d5398db62ee7b15f2c13052d7ee9f07",
        "2514d080c8a54ff603a45d7e336de668fe7329db"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Nov 06 02:36:17 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 06 02:36:17 2014 +0000"
      },
      "message": "Merge \"Pass resolution to Crypto plugin on format change\" into lmp-mr1-dev"
    },
    {
      "commit": "19a3f69d9d5398db62ee7b15f2c13052d7ee9f07",
      "tree": "cf8ab0afd5e431df089fb7a45499fd1981ba4fc4",
      "parents": [
        "74adca9ad30b7f8a70d40c5237bade0d16c4ea58",
        "3c1285e8f86bd497e14c14fb6df7b42072ef52bd"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Nov 06 02:33:37 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 06 02:33:37 2014 +0000"
      },
      "message": "Merge \"Add missing secure stop methods\" into lmp-mr1-dev"
    },
    {
      "commit": "d2d089fc86c62843992e7d5b371ee9227189a1e6",
      "tree": "9bbab0fe070321be1612e188c835de59375f7e26",
      "parents": [
        "ed1e55c5276a1c031e9b2f016387c7d2fe7bc47f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 05 11:48:12 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 05 14:51:19 2014 -0800"
      },
      "message": "Improve AudioTrack recovery from mediaserver death\n\n1. Fix race condition in handling of binder death notifications.\n\nAudioSystem has a mixture of APIs for both ordinary app clients,\nand the AudioFlinger and AudioPolicy services within mediaserver.\nDue to this mix of uses, it is possible for there to be \"surprising\"\nsequences of calls on the call stack.\n\nPreviously, we used a single mutex for all global variables, but\nthis caused a deadlock.  To avoid the deadlock, we unlocked the mutex\nduring the critical sequence of calls.  But this was a a\ncrucial place where it should have stayed locked;\nsee Change-Id I315c1c5066f62b05e1c13b04fae1272b5fbce977\n\nNow we use separate mutexes for the AudioFlinger, AudioPolicy, and audio port\nrelated global variables.  This allows us to correctly hold each mutex\nthroughout the atomic region, even when AudioFlinger calls AudioPolicy\nvia AudioSystem, or vice-versa.\n\n2. AudioSystem::clearAudioConfigCache now clears the IAudioFlinger reference.\n\n3. Make AudioSystem::get_audio_policy_service more like get_audio_flinger.\n\nBug: 18242291\nChange-Id: I9761443d8337df5bf66d4ca2316a9fd0bd11be94\n"
    },
    {
      "commit": "74adca9ad30b7f8a70d40c5237bade0d16c4ea58",
      "tree": "13e642689e945e69b76ac095a6bec978debf4084",
      "parents": [
        "ed1e55c5276a1c031e9b2f016387c7d2fe7bc47f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 05 12:15:36 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 05 12:33:59 2014 -0800"
      },
      "message": "IAudioPolicyService: bound array size in queryDefaultPreProcessing\n\nBug: 18226810.\nChange-Id: Ib8e2bfe835a8681aac50bf23161db14e50c9a124\n"
    },
    {
      "commit": "2514d080c8a54ff603a45d7e336de668fe7329db",
      "tree": "c02e8521f99240935f7c672c9d79846addd785cb",
      "parents": [
        "3c1285e8f86bd497e14c14fb6df7b42072ef52bd"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Nov 03 13:29:35 2014 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Nov 03 18:39:23 2014 -0800"
      },
      "message": "Pass resolution to Crypto plugin on format change\n\nChange-Id: I56cd557ce3525fe625db8c312d2557d3c8b51101\nrelated-to-bug: 16034599\n"
    },
    {
      "commit": "461b02d3eccefea48fa15c67a9cd3a5895bd2765",
      "tree": "6fa1b5cef70a6572fa528bcb04f398b185bd3763",
      "parents": [
        "0def1d9e88e5ce567e13e0081f2ee8ae3cba0232",
        "03fcdcd0aa9758b6d882b18218fcfb9a1ccffdad"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 04 01:37:34 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 04 01:37:34 2014 +0000"
      },
      "message": "Merge \"audio: fix talkback why alarm is playing\" into lmp-mr1-dev"
    },
    {
      "commit": "03fcdcd0aa9758b6d882b18218fcfb9a1ccffdad",
      "tree": "93729916df7ea6d15a72e4c8b016f7584a480715",
      "parents": [
        "b1322c78b035c9f47ebe57a39799d7a0e13bf57f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 03 15:16:04 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 03 15:16:04 2014 -0800"
      },
      "message": "audio: fix talkback why alarm is playing\n\nConvert attributes usage \"assistance accessibility\" to\na stream type guarantying that the prompt is audible\nand not muted by policy manager.\n\nBug: 17994328.\nChange-Id: I89f53f2ce84b499b859336c0a1a3a0332ee670f5\n"
    },
    {
      "commit": "d9cfeb447356cb6334379eaf5da1e49424eb5979",
      "tree": "5bae7d5985563f2cbbf9cc9cc1a5fca422cb8390",
      "parents": [
        "20f51b1ea04c410a25f214e37bcdb586e2a028cc"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 22 16:51:34 2014 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Oct 31 14:12:20 2014 -0700"
      },
      "message": "Support speaker routing for FLAG_BEACON\n\nAdd support for routing audio stream to the speaker when audio\n  attributes carry the FLAG_BEACON value:\n- associate streams with FLAG_BEACON to the up-to-now unused\n  STREAM_TTS (\"Transmitted Through Speaker\").\n  The remapping happens in AudioTrack.\n- AudioPolicyManager: define new strategy for handling the Beacon\n  behavior, that only goes to speaker. Define new volume curves\n  for STREAM_TTS that are not silence only for the speaker device\n  category. Keep ref count of other streams and never play Beacon\n  streams when anything else is playing: either don\u0027t start playback\n  if something else is playing, or unmute STREAM_TTS when it\u0027s\n  allowed to play and mute when it\u0027s done.\n- Take into account muting latency when starting an output.\n\nBug 15415971\n\nChange-Id: I26539c7ec1a486accd85bbeb1623e9c7d3a1192f\n"
    },
    {
      "commit": "3c1285e8f86bd497e14c14fb6df7b42072ef52bd",
      "tree": "82c107d9b3001bf4f9d375b7d655968abe20c2c3",
      "parents": [
        "6e8212b2a02685e50d0c093a6f44d9af636261d9"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Oct 31 00:55:16 2014 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Oct 31 00:55:16 2014 -0700"
      },
      "message": "Add missing secure stop methods\n\nb/18053197\nb/18076411\n\nChange-Id: I923dc893d48c70bf17980007b32f0ac5dfd22896\n"
    },
    {
      "commit": "20f51b1ea04c410a25f214e37bcdb586e2a028cc",
      "tree": "f0925121321ebd3b5bd64715e950a65a3d86b4fe",
      "parents": [
        "b1322c78b035c9f47ebe57a39799d7a0e13bf57f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 30 10:43:19 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 30 15:44:46 2014 -0700"
      },
      "message": "AudioTrack::flush() will no longer flush later data\n\nBug: 17832076\nChange-Id: I4915d782acb8077923e419406b0dcea5b6aab961\n"
    },
    {
      "commit": "aac745f29b0e8b18e9f9aff0d122c7d5d82f218a",
      "tree": "f0d9b87888202a6d6b48271bd28e9d909742703c",
      "parents": [
        "b80a2a8871d3af8619bf774a0c9ddbac8d598bf9",
        "63f6ffb996a7ffc920012f05c3deca731614373f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 28 21:22:05 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 28 21:22:05 2014 +0000"
      },
      "message": "Merge \"libmedia: ensure mCaptureThread exit within Visualizer destructor\" into lmp-mr1-dev"
    },
    {
      "commit": "63f6ffb996a7ffc920012f05c3deca731614373f",
      "tree": "9fda797341eadf05c1584122b85ecd8256c85491",
      "parents": [
        "dfc2a8f8a7d5062ecb2af4b940e54c3ce52795e3"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Thu Sep 25 10:33:12 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 28 13:48:33 2014 -0700"
      },
      "message": "libmedia: ensure mCaptureThread exit within Visualizer destructor\n\nIf mCaptureThread doesn\u0027t exit when Visualizer instance gets destroyed,\nrecycled member variables with random value such as danger pointer will\nbe accessed again and causes crash.\n\nThread which is created within Visualizer instance lifecycle should be\nterminated before or within destructor.\n\nCRs-Fixed: 688546\nauthored-by: wjiang@codeaurora.org\ncherry-pick from CAF commit: 4823e3d6b8c60faa4d8fee5d58728eb70e56abf2\n\nBug: 18159501\nChange-Id: Ie0b12ae8a3b9735b6ecbac0353781b8358cad644\n"
    },
    {
      "commit": "c2813e568aa476e03d159529c0af28c99536db8d",
      "tree": "95bf50e96fd0bd69d892b5bf629220b9fc874f94",
      "parents": [
        "9d2189ffcf1142b2948ce3065c32521ed7d966c4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 16 17:54:34 2014 -0700"
      },
      "committer": {
        "name": "Rachad Alao",
        "email": "rachad@google.com",
        "time": "Fri Oct 17 20:32:54 2014 +0000"
      },
      "message": "Fix AudioTrack retrograde getPosition when restoring tracks\n\nmReleased represents the number of frames written to the\ntrack, but was cleared on start() causing a mismatch if the\nclient wrote to the track before starting.  Moved the clearing\nto entering the STATE_STOPPED or STATE_FLUSHED state.\n\nBug: 18017947\nBug: 18022276\nChange-Id: I3788c98c4c3c4d9cc004378432797b3f3138e22e\n"
    },
    {
      "commit": "b6dcdbf436ffacb52a41ac8ef9b07f99fd64779f",
      "tree": "56c8eebf0dda1560737408bf8c8e20019d17193b",
      "parents": [
        "620208dc0bbd7a0792702df3ab08800fdad60cec"
      ],
      "author": {
        "name": "Chris Elliott",
        "email": "chriselliott@google.com",
        "time": "Thu Oct 16 02:17:27 2014 +0000"
      },
      "committer": {
        "name": "Chris Elliott",
        "email": "chriselliott@google.com",
        "time": "Thu Oct 16 02:18:57 2014 +0000"
      },
      "message": "Revert \"audio: prevent larger than required sleeps - DO NOT MERGE\"\n\nRevert change if we require a build beyond P\n\nThis reverts commit 620208dc0bbd7a0792702df3ab08800fdad60cec.\n\nChange-Id: I07f65e35dbd9f814725f50f7bb346f7b285f41aa"
    },
    {
      "commit": "620208dc0bbd7a0792702df3ab08800fdad60cec",
      "tree": "c079d953bc10a492f8145a3984a929bb9b936254",
      "parents": [
        "2feb18ddfdbd20941ebcc3314780a582da5608e4"
      ],
      "author": {
        "name": "Chris Elliott",
        "email": "chriselliott@google.com",
        "time": "Wed Oct 15 20:46:15 2014 +0000"
      },
      "committer": {
        "name": "Chris Elliott",
        "email": "chriselliott@google.com",
        "time": "Wed Oct 15 20:49:02 2014 +0000"
      },
      "message": "audio: prevent larger than required sleeps - DO NOT MERGE\n\nThis will be cherry picked into P build after O completes for other devices.\n\nThis reverts the revert from commit 2feb18ddfdbd20941ebcc3314780a582da5608e4.\n\nb/17962037\n\nFrom: Haynes Mathew George \u003chgeorge@codeaurora.org\u003e\nDate: Wed, 26 Mar 2014 16:18:42 -0700\nSubject: [PATCH] AudioTrack: prevent larger than required sleeps\n\nAudioTrackThread can end up waiting for larger than necessary\ntime for free space to be available in the cblk. Fix this by\nwaiting on the cblk futex instead of the (internal) condition variable.\n\nChange-Id: Iba5b266f9b4082b3833f4abd52ebc6601c8e3034"
    },
    {
      "commit": "2feb18ddfdbd20941ebcc3314780a582da5608e4",
      "tree": "56c8eebf0dda1560737408bf8c8e20019d17193b",
      "parents": [
        "8c0417c173d1fd618ae54e2d721b0ec360ea70cc"
      ],
      "author": {
        "name": "Chris Elliott",
        "email": "chriselliott@google.com",
        "time": "Wed Oct 15 00:49:17 2014 +0000"
      },
      "committer": {
        "name": "Chris Elliott",
        "email": "chriselliott@google.com",
        "time": "Wed Oct 15 00:49:17 2014 +0000"
      },
      "message": "Revert \"audio: prevent larger than required sleeps - DO NOT MERGE\"\n\nThis reverts commit 8c0417c173d1fd618ae54e2d721b0ec360ea70cc.\n\nReverting as we only wanted to include this CL the KNX01M build\n\nChange-Id: Ib53292de658078285a38710915168e1746486fea\n"
    },
    {
      "commit": "8c0417c173d1fd618ae54e2d721b0ec360ea70cc",
      "tree": "c079d953bc10a492f8145a3984a929bb9b936254",
      "parents": [
        "e6b5d4c2d58a02184dd97815b5f76980025379bc"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Thu Oct 09 20:06:00 2014 +0800"
      },
      "committer": {
        "name": "Chris Elliott",
        "email": "chriselliott@google.com",
        "time": "Tue Oct 14 17:20:37 2014 +0000"
      },
      "message": "audio: prevent larger than required sleeps - DO NOT MERGE\n\nb/17962037\n\nFrom: Haynes Mathew George \u003chgeorge@codeaurora.org\u003e\nDate: Wed, 26 Mar 2014 16:18:42 -0700\nSubject: [PATCH] AudioTrack: prevent larger than required sleeps\n\nAudioTrackThread can end up waiting for larger than necessary\ntime for free space to be available in the cblk. Fix this by\nwaiting on the cblk futex instead of the (internal) condition variable.\n\nChange-Id: I75bd14cd46f3b75afe0ea8bd9b48d7a2f95f654a"
    },
    {
      "commit": "7985dcb06e0c29d5cc12d0c0e17e03d5d863cf53",
      "tree": "e99ab2f03b3fb49d533b8cf5e8659b39f5e5d8c8",
      "parents": [
        "f0011d49c0f08753dc2dc254c5a70885a9986602"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 07 15:45:14 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 07 15:45:14 2014 -0700"
      },
      "message": "AudioTrack: fix AudioTrackThread crash upon exit\n\nIn case of error during createTrack_l(), there is a possibility\nthat a newly created AudioTrackThread is resumed by requestExit()\njust after entering the Thread class _threadLoop() but before\nentering the class threadLoop(). In this case, processAudioBuffer()\nis executed once with mCblk \u003d\u003d 0 and we assert.\n\nBug: 17894033.\nChange-Id: I93d0d0d4dbf14bcb88dad23e6ad49d2ecd47badd\n"
    },
    {
      "commit": "bb6c9a05840d924b502ce0f1868fca4881ada1ed",
      "tree": "aec6d28b7ab31fec27416c6e853c94c2eedfcd9b",
      "parents": [
        "a935c76f96b066941b34f81c42b3fe9d00db98c5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 25 14:11:47 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 25 16:44:07 2014 -0700"
      },
      "message": "audio: fix stream type for accessibility usage\n\nMake sure that accessibility prompts are heard when\na ringtone is active by forcing stream type\nto AUDIO_STREAM_RING when phone state is AUDIO_MODE_RINGTONE.\n\nBug: 17558149.\nChange-Id: Ia3bead8052fca5cbf282c267f7b9b06014fef628\n"
    },
    {
      "commit": "dfc34daba6d6cb923683d96689a0cb7c7006eee5",
      "tree": "f215c906f1322d1ff3e893e89e11f8aaec4eb2b9",
      "parents": [
        "b0ed4e3e482cbdc2fa6c7853526597f4ae3f0972"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 19 09:05:05 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 19 09:06:01 2014 -0700"
      },
      "message": "Reduce log spam from getTimestamp errors\n\nBug: 17576481\nChange-Id: I07d99e7c42b7d4f0994b5a6d9c9fe8eb29fbbe40\n"
    }
  ],
  "next": "6aadfce1d8c972faad7f4437dcd88d8cd3557611"
}
