)]}'
{
  "log": [
    {
      "commit": "c5251a627cd1c4c9403c80458fa10768813e7202",
      "tree": "fe4ae673410484aa9ddd73a94eb2fba87ce8401c",
      "parents": [
        "0dd714e4081b874425aef6c40b152fb918ae595e",
        "ee9effab3decc4275f4365b78c96911018e8de8c"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Sep 09 16:59:46 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 09 16:59:46 2016 +0000"
      },
      "message": "DO NOT MERGE: IOMX: work against metadata buffer spoofing am: 807e827d4c\nam: ee9effab3d\n\nChange-Id: I64bd10fa5e5e5a020c129c0b77d813a2772376a0\n"
    },
    {
      "commit": "807e827d4c1196754faaf138cb93c57c5b137e69",
      "tree": "af2fecd37fa95b1dfa1aaff16d6789d7f3131e33",
      "parents": [
        "17a10c50e20d934c1ac5956fe9019d3013e3f8b3"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 02 07:07:05 2016 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Aug 18 14:16:15 2016 -0700"
      },
      "message": "DO NOT MERGE: IOMX: work against metadata buffer spoofing\n\n- Prohibit direct set/getParam/Settings for extensions meant for\n  OMXNodeInstance alone. This disallows enabling metadata mode\n  without the knowledge of OMXNodeInstance.\n- Do not share metadata mode buffers cross process.\n- Disallow setting up metadata mode/input surface\n  after first sendCommand (except to Idle for OMXCodec quirk).\n- Disallow store-meta for input cross process.\n- Disallow emptyBuffer for surface input (via IOMX).\n- Fix checking for input surface.\n\n[backported from L]\n\nBug: 29422020\nChange-Id: I801c77b80e703903f62e42d76fd2e76a34e4bc8e\n"
    },
    {
      "commit": "9d65d13cc7c207d4ef877df2834d4fbac74741ad",
      "tree": "0d22666b8004a8e4ae781514d99b9a00e0059d16",
      "parents": [
        "4c969bf93f71e394de3aa8b08f0ed0f96c48379d",
        "3ad7688745fc44d01707157ba4edcbad8d41fc3e"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 18:33:49 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 22 18:33:49 2016 +0000"
      },
      "message": "Merge \\\\\"Revert \\\\\"Impose a size bound for dynamically allocated tables in stbl.\\\\\"\\\\\" into klp-dev am: 7e6bd6a911\nam: 3ad7688745\n\nChange-Id: I02de46ed2ce14428a45826270b557426ee2aaf47\n"
    },
    {
      "commit": "7e6bd6a911c5eba7b36b9b01804dd4d00132a175",
      "tree": "57ee9ab2cc93c2fbaaaaf8e77999dac195fc770e",
      "parents": [
        "8f73edb22a30260a2f4f7946fbedd3fd3005c5b6",
        "66c4dbb96c38630d0cd6551fc8c9bf8fa3318903"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 18:27:32 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 22 18:27:32 2016 +0000"
      },
      "message": "Merge \"Revert \"Impose a size bound for dynamically allocated tables in stbl.\"\" into klp-dev"
    },
    {
      "commit": "66c4dbb96c38630d0cd6551fc8c9bf8fa3318903",
      "tree": "ec4f2f5e250208980491f0b0fbc0ee250d3bc15c",
      "parents": [
        "25e029746796fe88e82417fb01af2e27b8bbadb2"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 18:19:15 2016 +0000"
      },
      "committer": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 18:19:15 2016 +0000"
      },
      "message": "Revert \"Impose a size bound for dynamically allocated tables in stbl.\"\n\nThis reverts commit 25e029746796fe88e82417fb01af2e27b8bbadb2.\n\nChange-Id: I91225838a8be72a3cd413f2bcb99e7dca7e62929\n"
    },
    {
      "commit": "4c969bf93f71e394de3aa8b08f0ed0f96c48379d",
      "tree": "637b8ec7d12c6d0fa0341098f22267172baf93d9",
      "parents": [
        "5c1f01675ca0f4f231f206fc7fe64d353592f726",
        "a263248bf02014dfb5d76ac4c07e7dfcdd6518c1"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 17:55:12 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 22 17:55:12 2016 +0000"
      },
      "message": "Merge \\\\\"Impose a size bound for dynamically allocated tables in stbl.\\\\\" into klp-dev am: 8f73edb22a\nam: a263248bf0\n\nChange-Id: I0389073f6b18450edc8fa70ed3ec72683a166915\n"
    },
    {
      "commit": "8f73edb22a30260a2f4f7946fbedd3fd3005c5b6",
      "tree": "64727d7547fdef61a404952709b3867f48f681d8",
      "parents": [
        "22d65757103e46bef8c6902ea08c84a775b62a0b",
        "25e029746796fe88e82417fb01af2e27b8bbadb2"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Jun 22 17:38:54 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 22 17:38:54 2016 +0000"
      },
      "message": "Merge \"Impose a size bound for dynamically allocated tables in stbl.\" into klp-dev"
    },
    {
      "commit": "25e029746796fe88e82417fb01af2e27b8bbadb2",
      "tree": "b09f9538145fdae6557e38aae36433a8faad7603",
      "parents": [
        "dc7357d20175fadfabd903370094917408bf6e3e"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Tue Jun 21 19:10:21 2016 -0700"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Jun 22 01:00:26 2016 -0700"
      },
      "message": "Impose a size bound for dynamically allocated tables in stbl.\n\nImpose a restriction of 200MiB for tables in stsc, stts, ctts and stss\nboxes. Also change Vector to std::vector for efficiency and consistency.\n\nBug: 29367429\nChange-Id: I175da524612b9fe68496c612966af51f01a5cd5e\n"
    },
    {
      "commit": "5c1f01675ca0f4f231f206fc7fe64d353592f726",
      "tree": "0d22666b8004a8e4ae781514d99b9a00e0059d16",
      "parents": [
        "8b35cb563de25a0b5f743de2eeb385a87e95ca6c",
        "4bec033dedcb2e9297001878c7837a3d46d205a3"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jun 21 22:03:33 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jun 21 22:03:33 2016 +0000"
      },
      "message": "Merge \\\\\"DO NOT MERGE: Camera: Adjust pointers to ANW buffers to avoid infoleak\\\\\" into klp-dev am: 22d6575710\nam: 4bec033ded\n\nChange-Id: I68dd7d3ea94b10104c235007fd03230ef5ae0146\n"
    },
    {
      "commit": "7a3de84808f700615816397acc7c7927987bab6e",
      "tree": "926c2963967ecb1fb82d5b4584433b30dd3e531d",
      "parents": [
        "dc7357d20175fadfabd903370094917408bf6e3e"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Jun 20 17:00:14 2016 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Jun 20 21:32:08 2016 -0700"
      },
      "message": "DO NOT MERGE: Camera: Adjust pointers to ANW buffers to avoid infoleak\n\nSubtract address of a random static object from pointers being routed\nthrough app process.\n\nBug: 28466701\nChange-Id: Idcbfe81e9507433769672f3dc6d67db5eeed4e04\n"
    },
    {
      "commit": "e66381758d6ba02494251e6097e0774a56524be5",
      "tree": "df4f40e2ccb8ca187d1b6a65a597e01ea5615605",
      "parents": [
        "08cb85206ab65cc2b9df372e4ae5f75c331ae7a1",
        "0ee3710873997f09b9a0a645e8b2de9923894f17"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jun 08 23:14:09 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 08 23:14:09 2016 +0000"
      },
      "message": "Merge \\\\\"Don\\\\\u0027t use sp\u003c\u003e\u0026\\\\\" into klp-dev am: 598f8d3218\nam: 0ee3710873\n\nChange-Id: I95ce93c3c1975b444bd6cd2c49a3b215395d2754\n"
    },
    {
      "commit": "fc47a301b7b2b044eddaedc98861d55193ec7dc0",
      "tree": "8f64350afe90fc797bba02c7a24720a9c80c31f5",
      "parents": [
        "b016207fc2442420e8d3a8633575ffe4fc29fef3"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jun 07 12:26:43 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jun 07 12:31:11 2016 -0700"
      },
      "message": "Don\u0027t use sp\u003c\u003e\u0026\n\nbecause they may end up pointing to NULL after a NULL check was performed.\n\nBug: 28166152\nChange-Id: Iab2ea30395b620628cc6f3d067dd4f6fcda824fe\n"
    },
    {
      "commit": "a0970c9faabdaca647cb22b78432511de3220399",
      "tree": "f1f32337b6812a38e1fda5417b3489e9b84de193",
      "parents": [
        "9f3762d8c76b778c8f600486a464838731105b09",
        "e896c41d85a15de06c74885fe040f3f57b63cd5d"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Sat Apr 16 00:09:00 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Apr 16 00:09:00 2016 +0000"
      },
      "message": "Merge \"SampleTable.cpp: Prevent corrupted stts block from causing excessive memory allocation.\" into klp-dev am: 5964527\nam: e896c41\n\n* commit \u0027e896c41d85a15de06c74885fe040f3f57b63cd5d\u0027:\n  SampleTable.cpp: Prevent corrupted stts block from causing excessive memory allocation.\n\nChange-Id: I5f23c14d155ea5a64b00d877a329c77cfc5b55f7\n"
    },
    {
      "commit": "a3630a418b4f65277a42cd4018cd3b0b7e134d0c",
      "tree": "faeb669973973cbe4c538f4eec492a1bb9575997",
      "parents": [
        "52636f8462b2a24f77524ca912e3579c33ac113e"
      ],
      "author": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Wed Apr 13 16:25:12 2016 -0700"
      },
      "committer": {
        "name": "Pawin Vongmasa",
        "email": "pawin@google.com",
        "time": "Thu Apr 14 23:25:16 2016 +0000"
      },
      "message": "SampleTable.cpp: Prevent corrupted stts block from causing\nexcessive memory allocation.\n\nDetails:\n\nDataSource.h\n- Added function getVector() for reading from a data source into\n  a Vector object, whose capacity grows only as much as needed\n  (in case of EOS or reading error).\nSampleTable.h\n- Changed the type of mTimeToSample from uint32_t* to\n  Vector\u003cuint32_t\u003e.\nSampleTable.cpp\n- In setTimeToSample, modified the code to use getVector()\n  instead of readAt(). If the input source has a corrupt\n  time-to-sample table size that is too big, EOS will be reached\n  before the whole table is read, and the return value from\n  getVector() will be false.\n- Also, tightened the bound for the provided time-to-sample table\n  size to guarantee that the table does not take more than\n  UINT_MAX32 bytes in memory.\n\nBug: 28076789\nChange-Id: Id207f369ab7b27787d83f5d8fc48dc53ed9fcdc9\n"
    },
    {
      "commit": "93f5bcab205f8d7cd4557eacda513867e8b8ea65",
      "tree": "8b1ad39e3a33cbe4b76e36e17a37cb705f8948d6",
      "parents": [
        "33514675f6588d70a203b2c9200792bca18d425c",
        "61a6d26aab95870279b274e565c1495748befde0"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 24 21:24:09 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 24 21:24:09 2016 +0000"
      },
      "message": "Get service by value instead of reference\nam: 61a6d26aab\n\n* commit \u002761a6d26aab95870279b274e565c1495748befde0\u0027:\n  Get service by value instead of reference\n"
    },
    {
      "commit": "61a6d26aab95870279b274e565c1495748befde0",
      "tree": "d58c9beb9e499e5983db76a52f02f2456c35ff92",
      "parents": [
        "f7a388203a1632084dbe3307d7e3265f689bc11e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 18 08:25:47 2016 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 23 19:28:09 2016 -0800"
      },
      "message": "Get service by value instead of reference\n\nto prevent a cleared service binder from being used.\n\nBug: 26040840\nChange-Id: Ifb5483c55b172d3553deb80dbe27f2204b86ecdb\n"
    },
    {
      "commit": "208bc477d92dbd2e5b4d1c0b2d000fa4c231e9d3",
      "tree": "f24b4d3f782bf473dbeb70c5e4b579bc135eaa15",
      "parents": [
        "9e1d7751b12ea976323abc1fe7760323ab142d39",
        "3d6a7149802928ecf3f58b7218b0e82699b492df"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 03 22:55:36 2015 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 03 22:55:36 2015 +0000"
      },
      "message": "DO NOT MERGE SoundPool: add lock for findSample access from SoundPoolThread\nam: 3d6a714980\n\n* commit \u00273d6a7149802928ecf3f58b7218b0e82699b492df\u0027:\n  DO NOT MERGE SoundPool: add lock for findSample access from SoundPoolThread\n"
    },
    {
      "commit": "3d6a7149802928ecf3f58b7218b0e82699b492df",
      "tree": "d1733d4792e95ae68ed843927cf38291863e4c42",
      "parents": [
        "6afc659b00c3f4a83b9f5f3c744b7119b33340b4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 02 15:55:23 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 03 18:54:00 2015 +0000"
      },
      "message": "DO NOT MERGE SoundPool: add lock for findSample access from SoundPoolThread\n\nSample decoding still occurs in SoundPoolThread\nwithout holding the SoundPool lock.\n\nBug: 25781119\nChange-Id: I11fde005aa9cf5438e0390a0d2dfe0ec1dd282e8\n"
    },
    {
      "commit": "dd184a4824acc31160895e2c6f8d93a7facfc2c8",
      "tree": "b59541270989719862e923d24637064ef10aa810",
      "parents": [
        "fc0e2a87c17b1f326b5e3302e8f534c143fd5784",
        "3b4a72acf039c58c33807b6d6fcdd5e09eafb1df"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Oct 08 16:48:33 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 08 16:48:33 2015 +0000"
      },
      "message": "am 3b4a72ac: Merge \"DO NOT MERGE - OMX: allow only secure codec to remotely call allocateBuffer.\" into klp-dev\n\n* commit \u00273b4a72acf039c58c33807b6d6fcdd5e09eafb1df\u0027:\n  DO NOT MERGE - OMX: allow only secure codec to remotely call allocateBuffer.\n"
    },
    {
      "commit": "4a03d784f7c0e3a9685d182eee92ba6580eaf5a1",
      "tree": "a7356ea6c85c6d1b4b45e0288f43b4f9fe9edae4",
      "parents": [
        "74d1927e4122a1748f89ca2ef79406fc06ee94b2"
      ],
      "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 11:27:32 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": "27362395cec5673a9cbfe7179ad5490c4e475329",
      "tree": "e157babb6cdfb2579d9382b2ce2db7da23908611",
      "parents": [
        "6035c811849a8475697268cf71b5cf923705abe8",
        "2ed42aea9c6fbca4bde52d647ff082b997b5968c"
      ],
      "author": {
        "name": "Jon Larimer",
        "email": "jlarimer@google.com",
        "time": "Tue Aug 18 15:13:39 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 18 15:13:39 2015 +0000"
      },
      "message": "am 2ed42aea: Merge \"do not dequeue from native window after we hit fatal error -- DO NOT MERGE\" into klp-dev\n\n* commit \u00272ed42aea9c6fbca4bde52d647ff082b997b5968c\u0027:\n  do not dequeue from native window after we hit fatal error -- DO NOT MERGE\n"
    },
    {
      "commit": "734e65e6e7e1ee863781c1ebd87003933bb4a752",
      "tree": "33fc593159d45ac2a84e93aa8c2d05583acfac65",
      "parents": [
        "3ce293842fed1b3abd2ff0aecd2a0c70a55086ee"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Aug 14 13:50:02 2015 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Aug 17 17:14:17 2015 +0000"
      },
      "message": "do not dequeue from native window after we hit fatal error -- DO NOT MERGE\n\nbug: 22845824\nChange-Id: I8c375790c697e02b6ab3ea54b84d3f70d5e78141\n(cherry picked from commit 346de3c26a8fbd0fa0c8102f4a21ea4dcee4432a)\n"
    },
    {
      "commit": "d6ea7f65dd31d5dacf497cc3c494d4fa3910f7c3",
      "tree": "b62ef0d8d86dd5a159fda3997b7b7369ced8a96c",
      "parents": [
        "42bd61d73e8b4d0b1101e73324a59fde51077112",
        "f26400c9d01a0e2f71690d5ebc644270f098d590"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 07 14:25:10 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 07 14:25:10 2015 +0000"
      },
      "message": "am f26400c9: Fix crash on malformed id3\n\n* commit \u0027f26400c9d01a0e2f71690d5ebc644270f098d590\u0027:\n  Fix crash on malformed id3\n"
    },
    {
      "commit": "f26400c9d01a0e2f71690d5ebc644270f098d590",
      "tree": "b96386b9c3bf83c969ed207dbd7b53eb29e6c6a3",
      "parents": [
        "d9a9a324766b26be2ff0d10537ea0b215b0261e3"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 04 16:49:28 2015 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 04 23:52:34 2015 +0000"
      },
      "message": "Fix crash on malformed id3\n\nBug: 22954006\nChange-Id: I488cb1e2c69fc7043b6040481b30fa866000515d\n"
    },
    {
      "commit": "a3e8f60f5e409f65f12636df5fad7f20ff736df5",
      "tree": "782d8d5c457afc6b57397ea6890f06b4c0067eec",
      "parents": [
        "5a75b4215821d633af18dd8dae2495299c070bf0",
        "7acac10aae34da5ae4d628c5a270e7e3e94f7598"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Mon May 11 11:10:36 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 11 11:10:36 2015 +0000"
      },
      "message": "am 7acac10a: Merge \"DO NOT MERGE: Add AUtils::isInRange, and use it to detect malformed MPEG4 nal sizes\" into klp-dev\n\n* commit \u00277acac10aae34da5ae4d628c5a270e7e3e94f7598\u0027:\n  DO NOT MERGE: Add AUtils::isInRange, and use it to detect malformed MPEG4 nal sizes\n"
    },
    {
      "commit": "67a30ebfe785f7cd5ecfb0d2fb487e54536a3d48",
      "tree": "2d7fa0640fa55b339ae5083e7d75022ab3d56720",
      "parents": [
        "6429079345404932c5be5956efc7154390d2ed0e"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Apr 01 19:32:25 2015 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Sat Apr 25 00:46:59 2015 +0000"
      },
      "message": "DO NOT MERGE: Add AUtils::isInRange, and use it to detect malformed MPEG4 nal sizes\n\nBug: 19641538\nChange-Id: I5aae3f100846c125decc61eec7cd6563e3f33777\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": "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": "68d9d71a792deed75d32fe13febc07c9c12c8449",
      "tree": "15ba0a2a541bd0b69fa286d04c9cc40d30b49871",
      "parents": [
        "1000d426bedb1ec38bdfff98fc8f004b64af13cb"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Mar 04 13:21:31 2014 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sat Mar 29 08:43:09 2014 -0700"
      },
      "message": "Support CAST V2 Authentication in MediaDrm\n\nJava API version\n\nUpdate frameworks to enable support for CAST\nV2 Authentication in the DRM Plugin.\n\nChange-Id: I9066ada0edf8e0d777c503897d8c7fc7f76f2861\nrelated-to-bug: 12702350\n"
    },
    {
      "commit": "1000d426bedb1ec38bdfff98fc8f004b64af13cb",
      "tree": "97d6e219016a2ab6613ee979f3b0648274f0f2a6",
      "parents": [
        "8bf96c011ff4128f9bf06b892a38d869192d6a25",
        "f780d28de2e3cf7f6b26b9626321dba75719736e"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Mar 28 01:45:11 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 28 01:45:11 2014 +0000"
      },
      "message": "am f780d28d: Merge \"DO NOT MERGE: Revert \"mediaplayer: keep more buffers with the BufferQueue\"\" into klp-dev\n\n* commit \u0027f780d28de2e3cf7f6b26b9626321dba75719736e\u0027:\n  DO NOT MERGE: Revert \"mediaplayer: keep more buffers with the BufferQueue\"\n"
    },
    {
      "commit": "f780d28de2e3cf7f6b26b9626321dba75719736e",
      "tree": "e5a07b57875ac19f3e86c64e650cd0e41739c231",
      "parents": [
        "3d4e4fcbcfc5c16dd794591727f5c713831ab6dc",
        "114c1b6553e3d2dc5f2780a76d92bb382234220c"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Mar 28 00:11:23 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 28 00:11:24 2014 +0000"
      },
      "message": "Merge \"DO NOT MERGE: Revert \"mediaplayer: keep more buffers with the BufferQueue\"\" into klp-dev"
    },
    {
      "commit": "114c1b6553e3d2dc5f2780a76d92bb382234220c",
      "tree": "4402098cdfb6cbaa5e633434c1b0f91b3064a2f4",
      "parents": [
        "f5ee327780ea2b538b8affafa8063f0ce0390fe0"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Mar 27 16:44:23 2014 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Mar 27 17:08:00 2014 -0700"
      },
      "message": "DO NOT MERGE: Revert \"mediaplayer: keep more buffers with the BufferQueue\"\n\nThis reverts commit b635b0e66b257ab442e230bca96afd5105cf6829.\n\nBug: 13655631\n"
    },
    {
      "commit": "65550a0e17852fe657795508e3bf05bdbfb2520b",
      "tree": "c7c08feacf4c4eee1ac0a387cbe02c0d77b07bfc",
      "parents": [
        "3089021031d6ad0f2b330567f108aec03fa13994",
        "0370be96e33ea0c8fb4069e704deccce43b7403c"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Mar 25 20:11:09 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 25 20:11:09 2014 +0000"
      },
      "message": "am 0370be96: DO NOT MERGE: camera: Fix setParameters for Preview FPS single/range values\n\n* commit \u00270370be96e33ea0c8fb4069e704deccce43b7403c\u0027:\n  DO NOT MERGE: camera: Fix setParameters for Preview FPS single/range values\n"
    },
    {
      "commit": "0370be96e33ea0c8fb4069e704deccce43b7403c",
      "tree": "9d244524a113db326aa9e86caab40c49a08248f3",
      "parents": [
        "333ceb4f66ccf790081026f645474e07d832fbdb"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Mar 18 18:15:23 2014 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Mar 25 11:20:25 2014 -0700"
      },
      "message": "DO NOT MERGE: camera: Fix setParameters for Preview FPS single/range values\n\nAs a workaround, duplicate CameraParameters into CameraParameters2 to\nprevent ABI break for some camera HALs that directly link into\nCameraParameters.\n\nCameraParameters2 implements the real fixes needed in the framework,\nwhile CameraParameters is left in to satisfy older camera HALs.\n\nBug: 12609188\nChange-Id: I82ea6f5de2183dd046d4bf5683600c97f37ab4da\n"
    },
    {
      "commit": "9cde517297827156de1c3b2ff54e272a5d4ae7c3",
      "tree": "a3a8a64a98b4bc7a01ed5a156e974dbda4c65bf2",
      "parents": [
        "a1f0c62c189f2d162cca4af736c3d440f1eff53c",
        "b635b0e66b257ab442e230bca96afd5105cf6829"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Mar 19 03:10:58 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 19 03:10:58 2014 +0000"
      },
      "message": "am b635b0e6: mediaplayer: keep more buffers with the BufferQueue\n\n* commit \u0027b635b0e66b257ab442e230bca96afd5105cf6829\u0027:\n  mediaplayer: keep more buffers with the BufferQueue\n"
    },
    {
      "commit": "b635b0e66b257ab442e230bca96afd5105cf6829",
      "tree": "ce27a9ac30a219e6895cffddd6c4f9ab873ca19a",
      "parents": [
        "43ca783effd99bba0e6e2dd6fe177a8888578ef8"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Feb 13 15:29:49 2014 -0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Mar 19 02:15:24 2014 +0000"
      },
      "message": "mediaplayer: keep more buffers with the BufferQueue\n\nChange OMX buffer allocation policy to allocate\nnBufferCountMin + what is required for the BQ.\n\nFor the BQ, try to allocate 2 additional buffers than\nthe minimum undequeued count.\n\nAlso account for the fact that BQ may return one less\nthan the actual minimum undequeued count.\n\nIn most cases the resulting number of buffers ends up\nbeing the same as with the previous policy, but we\nkeep more buffers with the BQ.\n\nChange-Id: I826db8bf7dd333b620299dba60bf1b81b228275d\nBug: 13170236"
    },
    {
      "commit": "a671f943b72155460f0c94cdd92d829cb059b571",
      "tree": "04d465f9e42df72de4d54fe1e55da60efc026adb",
      "parents": [
        "1e001f92e748de00a3e20effa464d59d75a746b3",
        "c69bc40a347c411751cb082b3eb4a82d976a68ec"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Mar 13 19:33:54 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 13 19:33:54 2014 +0000"
      },
      "message": "am c69bc40a: Merge \"Cap pts gap between adjacent frames to specified value\" into klp-dev\n\n* commit \u0027c69bc40a347c411751cb082b3eb4a82d976a68ec\u0027:\n  Cap pts gap between adjacent frames to specified value\n"
    },
    {
      "commit": "8bd4d16aa5636e98522c07ae31236420788aa749",
      "tree": "62a6de2d5849abe614ad64ca600ee00b5df6b57c",
      "parents": [
        "bc69c8ba9a8fc881603669205a56d0ca1b572a95"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Jan 10 17:36:57 2014 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Mar 11 20:58:57 2014 +0000"
      },
      "message": "Cap pts gap between adjacent frames to specified value\n\n- In the scenario of cast mirroring, encoding could be suspended\n  for prolonged periods. Limiting the pts gap to workaround the\n  problem where encoder\u0027s rate control logic produces huge frames\n  after a long period of suspension.\n\n- Repeat last frame a couple more times to get better quality\n  on static scenes.\n\n- Fix the timestamp on repeat frames (it was not set)\n\nBug: 11971963\nChange-Id: I1d68ab3d269874bf3921aa429a985c5f63e428c7\n(cherry picked from commit 94ee4b708acfa941581160b267afb79192b1d816)\n"
    },
    {
      "commit": "38efe8eb08e08610d535a164768851ac7c13d654",
      "tree": "7853a753cbfac471087604d702ad6b2c546a2269",
      "parents": [
        "4ee774f322ad3292fcfbb3c120cf250643419425",
        "6db20dcb54dad932a3ea2e3a5dca41fce5802eb4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Mar 08 02:00:05 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Mar 08 02:00:05 2014 +0000"
      },
      "message": "am 6db20dcb: Merge \"AudioTrack: When paused, return cached playback position\" into klp-dev\n\n* commit \u00276db20dcb54dad932a3ea2e3a5dca41fce5802eb4\u0027:\n  AudioTrack: When paused, return cached playback position\n"
    },
    {
      "commit": "6db20dcb54dad932a3ea2e3a5dca41fce5802eb4",
      "tree": "295ef5012f98e4b9251f28774cfb3f83710ea197",
      "parents": [
        "2f55c2c03b17795e94b325d402ac5b409e3ba0e8",
        "2048c2292c0466b184fb8f67c91f4d0ab9f5c3f3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Mar 08 00:29:56 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 08 00:29:56 2014 +0000"
      },
      "message": "Merge \"AudioTrack: When paused, return cached playback position\" into klp-dev"
    },
    {
      "commit": "72d09f6280cd701e48922a86df0d2e5f4e61cd8e",
      "tree": "7b38385ed652c44f759557fd057e04b8ed579de1",
      "parents": [
        "d7c4da3c1c33b5219d7d87ba698cd7d9c8750c41",
        "2613347d74c3f35bc6fda5df1c29c1119c22d432"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Mar 07 02:38:23 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 07 02:38:23 2014 +0000"
      },
      "message": "am 2613347d: Merge \"Added support to query ACodec whether adaptive playback is enabled.\" into klp-dev\n\n* commit \u00272613347d74c3f35bc6fda5df1c29c1119c22d432\u0027:\n  Added support to query ACodec whether adaptive playback is enabled.\n"
    },
    {
      "commit": "2613347d74c3f35bc6fda5df1c29c1119c22d432",
      "tree": "7f97cbfd6f1f9d3183a8b8e0ffbdadae662a6372",
      "parents": [
        "909498b72d740e3151561fd4435ad0a329ec9c6e",
        "933a4d3339ebbcd34a7f97b9e7350ec74b5ec29c"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Mar 07 02:33:08 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 07 02:33:08 2014 +0000"
      },
      "message": "Merge \"Added support to query ACodec whether adaptive playback is enabled.\" into klp-dev"
    },
    {
      "commit": "2048c2292c0466b184fb8f67c91f4d0ab9f5c3f3",
      "tree": "126fcbfff298dd8e0f8ddb834c93c8850b8654ac",
      "parents": [
        "a11111f9135c98cf4247bbd1a61d7df3053e549e"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Jan 08 13:59:53 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 06 18:00:39 2014 -0800"
      },
      "message": "AudioTrack: When paused, return cached playback position\n\nAn offload output can be re-used between two audio tracks having\nthe same configuration. A timestamp query for a paused track\nwhile the other is running would return an incorrect time.\nTo fix this, cache the playback position on a pause() and return\nthis time when requested until the track is resumed.\n\nBug: 12826612.\nChange-Id: Ia42b8b8fd2ba8993dfcc9abca72da48d71d78d74\n"
    },
    {
      "commit": "933a4d3339ebbcd34a7f97b9e7350ec74b5ec29c",
      "tree": "bd6e305a5ba2d5cb84e6d90779a36b9f0dc457f9",
      "parents": [
        "f7e34cfcb9d649989c8e391f23dde782d4931849"
      ],
      "author": {
        "name": "Robert Shih",
        "email": "robertshih@google.com",
        "time": "Thu Jan 23 15:26:43 2014 -0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Mar 06 16:26:30 2014 -0800"
      },
      "message": "Added support to query ACodec whether adaptive playback is enabled.\n\nBug: 11854054\nChange-Id: I6b0308aa8550c643706959277e46dad586c37297\n"
    },
    {
      "commit": "f590f948e6c0fe3c54008dd7802fd513f127792d",
      "tree": "1bd64930d69158418ac7c54c9d9a9b3a16dab973",
      "parents": [
        "3c836e7882e88de42e0e600627de433b61e78621"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 11:51:42 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 06 11:16:08 2014 -0800"
      },
      "message": "stagefright: do not offload LD-AAC decoding\n\nFor now, do not offload LD and ELD AAC decoding because there\nis no way to know if it is supported by the audio DSP implementation.\nThe longer term fix will be to have mapMimeToAudioFormat() use the\naudio object type in track metadata to refine the AAC format and the\naudio HAL list supported AAC profiles.\n\nBug: 11697128.\n\nChange-Id: Iaa88ecf3f4ae42ad48c1b42a9b007dd80eb88147\n"
    },
    {
      "commit": "d0115d8c4db2f337030dea706bc0a434c4a03ed6",
      "tree": "239450c60bc4cb8519edeb8985dbc601fe51c652",
      "parents": [
        "7e92abeafb184e8a34213d7149592e95a72601b0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 26 17:16:50 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 12:17:54 2014 -0800"
      },
      "message": "update offloaded audio track sampling rate\n\nAudioPlayer must read the sampling rate from offloaded audio sinks\nwhenever a new time position is computed as the decoder can update\nthe sampling rate on the fly.\n\nBug: 12823955.\n\nChange-Id: I997e5248cfd4017aeceb4e11689324ded2a5bc88\n"
    },
    {
      "commit": "97504893a3ee96f612e0e1b47d331583a88e289b",
      "tree": "521cd011b61b31841956c143fbaec0ef94856662",
      "parents": [
        "4287b41411b40415b4186babf5763c3cfa0391ef",
        "6b2604259c12ee28b49f26ab2adac96eefe30934"
      ],
      "author": {
        "name": "jpadmana",
        "email": "jayashree.r.padmanaban@intel.com",
        "time": "Wed Mar 05 19:26:49 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 05 19:26:49 2014 +0000"
      },
      "message": "am 6b260425: am 85b3013e: fix deadlock issues that arise when there are simultaneous effect control interface calls to proxy and to non sub-effect wrappers(eg., bundlewrapper) from audioflinger Also, return NO_ERROR when CMD_OFFLOAD succeeds\n\n* commit \u00276b2604259c12ee28b49f26ab2adac96eefe30934\u0027:\n  fix deadlock issues that arise when there are simultaneous effect control interface calls to proxy and to non sub-effect wrappers(eg., bundlewrapper) from audioflinger Also, return NO_ERROR when CMD_OFFLOAD succeeds\n"
    },
    {
      "commit": "6b2604259c12ee28b49f26ab2adac96eefe30934",
      "tree": "1515124f74fdbc0d3544034568a784155690e185",
      "parents": [
        "fc04776adc5572fcc323b1dca66dee27a537c619",
        "85b3013e06e8fe7802fe6259ecac80261e834332"
      ],
      "author": {
        "name": "jpadmana",
        "email": "jayashree.r.padmanaban@intel.com",
        "time": "Wed Mar 05 01:24:11 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 05 01:24:11 2014 +0000"
      },
      "message": "am 85b3013e: fix deadlock issues that arise when there are simultaneous effect control interface calls to proxy and to non sub-effect wrappers(eg., bundlewrapper) from audioflinger Also, return NO_ERROR when CMD_OFFLOAD succeeds\n\n* commit \u002785b3013e06e8fe7802fe6259ecac80261e834332\u0027:\n  fix deadlock issues that arise when there are simultaneous effect control interface calls to proxy and to non sub-effect wrappers(eg., bundlewrapper) from audioflinger Also, return NO_ERROR when CMD_OFFLOAD succeeds\n"
    },
    {
      "commit": "85b3013e06e8fe7802fe6259ecac80261e834332",
      "tree": "477c3b2bddfc872ba4f012796f0e3a8d5448f059",
      "parents": [
        "50c3157c5a3e0617be77716beff1ae8801d8a72f"
      ],
      "author": {
        "name": "jpadmana",
        "email": "jayashree.r.padmanaban@intel.com",
        "time": "Thu Nov 14 17:20:52 2013 +0530"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 04 16:10:47 2014 -0800"
      },
      "message": "fix deadlock issues that arise when there are simultaneous\neffect control interface calls to proxy and to\nnon sub-effect wrappers(eg., bundlewrapper) from audioflinger\nAlso, return NO_ERROR when CMD_OFFLOAD succeeds\n\nWhenever there are parallel calls to proxy and non sub-effects wrappers,\nsome of the calls are not completed. This is due to deadlock arsing out\nof Proxy waiting for the subeffect call to return and subeffect waiting\nfor proxy to release lock.\nThe call flow is changed to a cleaner and simple one - Proxy gets the\naeli(effect library info) of subeffects during the EffectGetSubEffects()\ncall. Therby, proxy will manage the sub effects by itself rather than\ngoing through effects factory.\n\nChange-Id: If4b259da5776f151c1e81a78a0239d342046d923\nSigned-off-by: jpadmana \u003cjayashree.r.padmanaban@intel.com\u003e\nBug: 12424044\n"
    },
    {
      "commit": "dd432ce03eccf280d83672f95076b6fbd561047f",
      "tree": "856afbcf97051156a5adaec3ecffee340bb59a78",
      "parents": [
        "9090338367bd9f3fc5678032332a44d457a4a2fe"
      ],
      "author": {
        "name": "Changwan Ryu",
        "email": "changwan@google.com",
        "time": "Mon Oct 28 11:08:44 2013 +0900"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Feb 03 14:12:04 2014 +0900"
      },
      "message": "[DO NOT MERGE] Support TS + AC3 for ATSC standard\n\nChange-Id: I141667f3f54b242bafdf0ab9db86852c56f49ffa\n"
    },
    {
      "commit": "9090338367bd9f3fc5678032332a44d457a4a2fe",
      "tree": "bc95b12fc9e71cd8705e6e4ffe27c7017551d806",
      "parents": [
        "adf3f9b98b482180fc1d0835c1b6212b1659e249"
      ],
      "author": {
        "name": "Changwan Ryu",
        "email": "changwan@google.com",
        "time": "Mon Oct 28 10:53:48 2013 +0900"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Mon Feb 03 14:11:45 2014 +0900"
      },
      "message": "[DO NOT MERGE] Support AC3 in stagefright\n\nChange-Id: I12016b424bd069413bd6e380ff11484e175e05f3\n"
    },
    {
      "commit": "319c5640ca2e5838e35faaddc47df00174dac1b5",
      "tree": "db03d45d4594d030509635bb678c0909150d9ede",
      "parents": [
        "fd0daeb3fd20ba1c0a0fae530ea263e382a811e5",
        "07a017d3ff9cb36e47649a9de28e469415eb8103"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jan 17 11:19:50 2014 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 17 11:19:50 2014 -0800"
      },
      "message": "am 07a017d3: Merge \"Added support for ID3v2 meta data in 3gp files\"\n\n* commit \u002707a017d3ff9cb36e47649a9de28e469415eb8103\u0027:\n  Added support for ID3v2 meta data in 3gp files\n"
    },
    {
      "commit": "328abde67f57c026ac44e927f9244c40832499c8",
      "tree": "6a5fac74c193cc93afbfc20cf792eafd22da49a7",
      "parents": [
        "1e8a57c212d26c41325e950ed629244071acc326"
      ],
      "author": {
        "name": "Oscar Rydhé",
        "email": "oscar.rydhe@sonyericsson.com",
        "time": "Thu Jan 27 14:01:24 2011 +0100"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Thu Jan 16 10:25:28 2014 +0900"
      },
      "message": "Added support for ID3v2 meta data in 3gp files\n\nAdded support for parsing ID3v2 meta data from\nthe ID32 chunk in 3gp files. The priority will be\n3gpp -\u003e ID3v2 -\u003e iTunes per field.\n\nChange-Id: I0282ecab58e3e5fa6bd738078d562c8bb8ce00ed\n"
    },
    {
      "commit": "b904d53ffaaafddb2f9b6f469b73d2a3bec3dd0d",
      "tree": "22e1841807882f29e91c14bc49815e4305337d0e",
      "parents": [
        "5a086733f8a7472bee85b371e9d02874c9317f3b",
        "8115f4b206dbd04c620f062feb3c7785e2732ab3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 20 17:26:47 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 20 17:26:47 2013 -0800"
      },
      "message": "am 8115f4b2: Merge \"stagefright: do not offload LD-AAC decoding\"\n\n* commit \u00278115f4b206dbd04c620f062feb3c7785e2732ab3\u0027:\n  stagefright: do not offload LD-AAC decoding\n"
    },
    {
      "commit": "db170bb1cae145d07efc803a3c208963de0c6087",
      "tree": "bc7f1dedcbebc5aef585e66c2baa67df8d1d8bf4",
      "parents": [
        "1777ed30bfb3b9c1edc037a1b5482d5ab8f28b9b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 11:51:42 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Dec 21 01:19:06 2013 +0000"
      },
      "message": "stagefright: do not offload LD-AAC decoding\n\nFor now, do not offload LD and ELD AAC decoding because there\nis no way to know if it is supported by the audio DSP implementation.\nThe longer term fix will be to have mapMimeToAudioFormat() use the\naudio object type in track metadata to refine the AAC format and the\naudio HAL list supported AAC profiles.\n\nChange-Id: Iaa88ecf3f4ae42ad48c1b42a9b007dd80eb88147\n"
    },
    {
      "commit": "51d166ec7985949fa69262f213a4162708ebe81e",
      "tree": "f2fb149165426fbc8e1805b8c8516f7353e8e126",
      "parents": [
        "5893736dc1776008026e660526d34943ea888fd6",
        "9060d498be0c54d3caf84e2dbf1ba62516b3e76e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 17 14:11:13 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 17 14:11:13 2013 -0800"
      },
      "message": "am 9060d498: Merge \"update offloaded audio track sampling rate\"\n\n* commit \u00279060d498be0c54d3caf84e2dbf1ba62516b3e76e\u0027:\n  update offloaded audio track sampling rate\n"
    },
    {
      "commit": "5e49afd05566820517747b9a8071c99ec0918328",
      "tree": "0dd9697822c0bd70f03bb776bc78e2da60f28991",
      "parents": [
        "a67c76538fff102cd44b2f38dd073df5f2a33605"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 26 17:16:50 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 17 13:41:37 2013 -0800"
      },
      "message": "update offloaded audio track sampling rate\n\nAudioPlayer must read the sampling rate from offloaded audio sinks\nwhenever a new time position is computed as the decoder can update\nthe sampling rate on the fly.\n\nChange-Id: I997e5248cfd4017aeceb4e11689324ded2a5bc88\n"
    },
    {
      "commit": "5ea5b020b311a68f513d4a40aca5551abc6a07d8",
      "tree": "b55283398ed05da2ed07b3ce50e0575483b9a447",
      "parents": [
        "246053380a9f628405a29a055a3f1f4fba13ed5b",
        "4dd0a8a3d66c2853faf2834565b3c5df4f68734d"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Nov 19 01:28:28 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 19 01:28:28 2013 +0000"
      },
      "message": "Merge \"WA: Queue extra buffers on output port during reconfig if input EOS-ed\" into klp-dev"
    },
    {
      "commit": "22612345ae97648d5b6db43cc1aa30aad77f7bba",
      "tree": "73b47a621118d0fa56d27929a9447e90ca27c97d",
      "parents": [
        "4215e6166fca9f87a6e9e848b3dfd4ab0d25c954"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 14 17:28:47 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 14 17:36:42 2013 -0800"
      },
      "message": "AwesomePlayer: correct stream type for offload\n\ncanOffloadStream() function in stagefright utils forces the\nstream type to AUDIO_STREAM_MUSIC when querying the audio policy\nmanager if a particular track is offloadable or not.\nThis causes MP3 ringtones to be offloaded which is not a validated use case.\n\nThe fix consists in using the actual stream type read from the AudioSink.\n\nBug: 11410937.\nChange-Id: I44b8e033a8e785a79cdc291b142f80b5580bdc4d\n"
    },
    {
      "commit": "4dd0a8a3d66c2853faf2834565b3c5df4f68734d",
      "tree": "4cc6ee6dc0c7f72f5ae0facfd84b0342c5f87afe",
      "parents": [
        "4215e6166fca9f87a6e9e848b3dfd4ab0d25c954"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Nov 06 21:04:34 2013 -0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Nov 14 13:53:56 2013 -0800"
      },
      "message": "WA: Queue extra buffers on output port during reconfig if input EOS-ed\n\nSome codecs may return input buffers before having them processed.\nThis causes a halt if we already signaled an EOS on the input\nport.  For now keep submitting output meta buffers one at a time if\nthe input EOS-ed, but the output not yet.\n\nNormally, we submit an output buffer for each input buffer that is\nwith the component (waiting to be processed).\n\nChange-Id: I8a1251bfb504f40f1e4085a1e220bf9a4d0b05d9\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nBug: 11433909\n"
    },
    {
      "commit": "5595f6de606f51ec61fbf40a269b52312507aded",
      "tree": "e76298c16e9a54166661d417012eb996e3e7f73d",
      "parents": [
        "26c8f714361bfb6403a7c457adfb8b55c89a634a",
        "e3067743d6ef2c6c1aac4361b6ed65e6d7bbe3e3"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Nov 13 18:11:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 13 18:11:54 2013 +0000"
      },
      "message": "Merge \"Only initialize sniffers once, don\u0027t hold mutex while sniffing\" into klp-dev"
    },
    {
      "commit": "caee8747b7df3b1119426594d4ba1c0e300ff6db",
      "tree": "72ea1e3c92a17f003907943f1c8929ee136f0c79",
      "parents": [
        "e100b813c4d833b48b48b74100ad0b9a82c46954",
        "89b31a3f670d8bec87bed50aaad9bcd8edec66b6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 12 00:21:51 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 12 00:21:51 2013 +0000"
      },
      "message": "Merge \"configure bitrate and bitrate mode at encoder initialization for VP8/9\" into klp-dev"
    },
    {
      "commit": "e3067743d6ef2c6c1aac4361b6ed65e6d7bbe3e3",
      "tree": "4ea5d1b5c2574b9e5f9f0a50452d1419f39bb1d6",
      "parents": [
        "e100b813c4d833b48b48b74100ad0b9a82c46954"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Nov 06 10:50:17 2013 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 11 23:43:22 2013 +0000"
      },
      "message": "Only initialize sniffers once, don\u0027t hold mutex while sniffing\n\nb/11482896\n\nChange-Id: Ie036554b4c9e7e8863cb07901d414ea457f1b2f1\n(cherry picked from commit 377fce69297a0e5b7c3b266a7602b17146785635)"
    },
    {
      "commit": "e100b813c4d833b48b48b74100ad0b9a82c46954",
      "tree": "9a4688c5998afa5dfd86cb04e01e8b47c3fd702d",
      "parents": [
        "a72911563b0e5b21b196d40249b53975bf8d8f85",
        "9c7f845780d62ea09469a8dac7117cc01adfea5c"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Nov 11 16:16:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 11 16:16:47 2013 +0000"
      },
      "message": "Merge \"StageFrightRecorder: do not use meta-data mode for software encoders\" into klp-dev"
    },
    {
      "commit": "fd6ecdd39bd83ea020f78b425e96310380d66c35",
      "tree": "74b1aaa8fdcbf75681f72fb93b96db4ab48fa34c",
      "parents": [
        "48b6cd98b23b2cf9dee88f075f7575ecb5aaf545"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Oct 11 09:51:09 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Nov 06 18:22:22 2013 -0800"
      },
      "message": "Camera HAL3/API1: Add support for the partial result quirk.\n\n- Camera2Client:\n - Detect partial result quirk\n- Camera3Device:\n - Accumulate all partial results together\n - Fire off 3A-only result once all 3A states are available\n- FrameProcessorBase:\n - Filter out partials, don\u0027t send to listeners\n- FrameProcessor:\n - Skip face detect on partials\n - Make sure to only handle a 3A update for a given frame once\n - Trigger AF notifications when AF mode or trigger changes, to\n   properly detect all AF transitions.\n\nBug: 11115603\nChange-Id: Iea8aa73c568701562a46071f7ea100624251d10b\n"
    },
    {
      "commit": "89b31a3f670d8bec87bed50aaad9bcd8edec66b6",
      "tree": "281e16d135a6c47364ca3ce8d4a4ed66e89cee9f",
      "parents": [
        "3ff5792adfdbf67662a5f8064315a55690d53944"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 05 12:36:17 2013 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 05 12:36:17 2013 -0800"
      },
      "message": "configure bitrate and bitrate mode at encoder initialization for VP8/9\n\nChange-Id: I0389264db4102cabb0c6fcb4ca223d85cc9e86fb\nrelated-to-bug: 11536167\n"
    },
    {
      "commit": "9c7f845780d62ea09469a8dac7117cc01adfea5c",
      "tree": "1c69c580de33cf8dc15a5060447e4d9109181fbe",
      "parents": [
        "1c594b637df26499ce1dae2db34f2b3290efd838"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Oct 30 10:02:12 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Oct 30 11:29:29 2013 -0700"
      },
      "message": "StageFrightRecorder: do not use meta-data mode for software encoders\n\nCamera HAL v1 uses vendor-specific camera-source meta-data mode, but\nsoftware encoders use generic gralloc-source mode, so they are not\ncompatible.\n\nChange-Id: I0d1bab8eada26dcb70c97b1eec83f06d1f331239\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nBug: 11446505\n"
    },
    {
      "commit": "9cae217050aa1347d4ac5053c305754879e3f97f",
      "tree": "dff82f277cba8f34af39eaeeb00adec01bbda26c",
      "parents": [
        "be567be3f92026f5964c1c9ecce00e30bb7df412"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jan 14 14:12:05 2013 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Oct 25 14:06:03 2013 -0700"
      },
      "message": "Assign blame for playback wakelocks.\n\nSet a work source for the playback wakelock, so that playback is\ncounted against the requesting app instead of the media server.\n\nCherrypicked from master.\n\nb/9464621\n\nChange-Id: I7329f88a288a95a582a78005a1c3d16a5a611e31\n"
    },
    {
      "commit": "2e422c472c91aa7912befd0fc038d1e11f354bc1",
      "tree": "7583e04f353f9cadf5081fafdcb8042450e3c85c",
      "parents": [
        "dedc7b0fa23c21b525dc8abb572bb8161ad66a9b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 18 13:00:29 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 18 13:53:41 2013 -0700"
      },
      "message": "Allow releaseBuffer after flush\n\nAfter AudioTrack start checks for pending flush,\nallow releaseBuffer on any previously obtained buffer.\nFor example, this can happen if the resampler has obtained\na buffer but not released the whole buffer yet.\nNote that the resampler will be reading obsolete data.\n\nBug: 11285590\nChange-Id: I0614fbb62e43604aac3089cce4b7797c87a306b5\n"
    },
    {
      "commit": "f8f15b05fe051009945c9042a1a9260280e0feb2",
      "tree": "28fd5dede6b2aae34a9b3b987049f3331ace5037",
      "parents": [
        "787c0d04ac4f9c938a1311f8e30d9d7ac2b8a6da",
        "598de6c701e989385eeffa7c5dfd61f0459a2631"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 17 00:59:33 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 17 00:59:33 2013 +0000"
      },
      "message": "Merge \"Fix race condition in AudioTrack::pause followed by start\" into klp-dev"
    },
    {
      "commit": "598de6c701e989385eeffa7c5dfd61f0459a2631",
      "tree": "090b30e255f0aed57a73ca6c9252e19da162fd97",
      "parents": [
        "014e7fa2e90827d911c37bb0ce4d2e10e14d0bb3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 16 17:02:13 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 16 17:20:11 2013 -0700"
      },
      "message": "Fix race condition in AudioTrack::pause followed by start\n\nBug: 11148722\nChange-Id: Iec88f00c8510363d4418e4b8d5b34feb06ecf04d\n"
    },
    {
      "commit": "cc21e4f1e41dfa17e7e2bef995fcd22c45f6bcd0",
      "tree": "a446f08a1adaf31ef5dddc491c620209176b67aa",
      "parents": [
        "014e7fa2e90827d911c37bb0ce4d2e10e14d0bb3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 16 15:12:32 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 16 15:12:32 2013 -0700"
      },
      "message": "AudioTrack: fix head position after restore\n\nThe head position transfered to the new track\nby restoreTrack_l() must take into account the frames that\nare dropped from the old track to avoid a non recoverable\noffset in the playback head position returned to applications.\n\nBug: 11230062.\nChange-Id: I51143a08b95e8f264ed709ae2054360315f2b8b1\n"
    },
    {
      "commit": "fee4ce338d78eeb58af1f66831ead53322d3859e",
      "tree": "f90931a7c5c4628b0e8e47976d68a9d586802b53",
      "parents": [
        "ea0fadeb5d81ef3cb7f9db458c9033d628bdb86a",
        "e93cf2ca27ae6f4a81d4ef548bbf10a34db6d98f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 07 16:16:06 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 07 16:16:06 2013 +0000"
      },
      "message": "Merge \"Cleanup openRecord error handling\" into klp-dev"
    },
    {
      "commit": "b2d71d3a35de6382096ed688a4cae3bbca3c97bf",
      "tree": "f9e480cf0fa17a8dc7abd0577df1190820c42443",
      "parents": [
        "56ce726019f700a95ce5b45beebceadae4836e30",
        "f1e98d857ec377f2c9b916073d40732e6ebb7ced"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Oct 03 18:33:55 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 03 18:33:55 2013 +0000"
      },
      "message": "Merge \"Camera API 2, Device 2/3: Implement idle and shutter callbacks\" into klp-dev"
    },
    {
      "commit": "56ce726019f700a95ce5b45beebceadae4836e30",
      "tree": "4ad17b9ec996277e80861895fb1b20f2dc408b9d",
      "parents": [
        "a306ee6bc1aef463f8984be26b8a4214490b6c55"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu May 02 16:30:48 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Oct 03 16:12:45 2013 +0000"
      },
      "message": "IOMX: Add prepareForAdaptivePlayback method\n\nprepareForAdaptivePlayback is the fallback mechanism to support\nseamless resolution change for devices that do not support dynamic\noutput buffers.  It is up to the codecs to handle this appropriately,\nbut codecs that do not handle dynamic output buffers would\nrequest enough buffers up to the requested size in this method\nto avoid port reconfiguration on resolution changes.\n\nChange-Id: I58d4aa8ef1359ea3472735bbe9140c3132039b3d\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nBug: 10192531\nRelated-to-bug: 7093648"
    },
    {
      "commit": "f1e98d857ec377f2c9b916073d40732e6ebb7ced",
      "tree": "2a435e723f17c0c7b3e6db323d68be6cfb7d5c66",
      "parents": [
        "f05e50eb06d3f70e50fa7f44c1fd32128033b49d"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Sep 06 09:32:43 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Oct 02 18:11:21 2013 -0700"
      },
      "message": "Camera API 2, Device 2/3: Implement idle and shutter callbacks\n\n- Update callback Binder interface\n- Rename frameId to be requestId to be consistent and disambiguate\n  from frameNumber.\n- Implement shutter callback from HAL2/3 notify()\n  - Add in-flight tracking to HAL2\n  - Add requestId to in-flight tracking\n  - Report requestId from shutter callback\n- Implement idle callback from HAL3 process_capture_result\n  - Add new idle tracker thread\n  - Update all idle waiting to use the tracker\n  - Add reporting from request thread, all streams to tracker\n  - Remove existing idle waiting infrastructure\n\nBug: 10549462\nChange-Id: I867bfc248e3848c50e71527e3561fe92dc037958\n"
    },
    {
      "commit": "353fb9bf940ee34a3885bc85ec7891228e958a4b",
      "tree": "10970a60eeeef1af0170cab7bf0937a465851c21",
      "parents": [
        "5fd39f777d54368a93fc9d8a6a24da0239d41fcf",
        "6218fdc2bef7b9c912bc4d132c12ee43b7b2dd37"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Oct 01 16:36:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 01 16:36:52 2013 +0000"
      },
      "message": "Merge \"MediaTimeProvider support fixes\" into klp-dev"
    },
    {
      "commit": "6218fdc2bef7b9c912bc4d132c12ee43b7b2dd37",
      "tree": "5ef5c0ecca29a36a6ebb3cc8569ff6ef4cac8c50",
      "parents": [
        "3d97e23fcd78f752443cb6c30a1ee39f49f1f987"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Sep 25 08:09:41 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Sep 30 15:12:23 2013 -0700"
      },
      "message": "MediaTimeProvider support fixes\n\nAdd MEDIA_SKIPPED event when resuming at a different time than\nseeked to.\n\nSend MEDIA_STARTED/PAUSED events only when playing (vs. when doing seek\npreviews)\n\nChange-Id: I243ebf054303755ea8863229c3211694f2c204a7\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nBug: 10954008\n"
    },
    {
      "commit": "59fe010bcc072597852454a2ec53d7b0a2002a3b",
      "tree": "b6b42e04a89ead77c9ecd9635a328686a8bb9863",
      "parents": [
        "5d6d86a4d102704f49b9235eaf282c428d7100b6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 18:48:26 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 30 12:05:38 2013 -0700"
      },
      "message": "fix volume and effect enable delay on offloaded tracks\n\nVolume: add a method to wake up the mediaserver playback\nthread when a volume command is received on an offloaded track.\n\nEffects: call effect chain process on offloaded playback threads\nasynchronously from writes to allow effect state updates while\nwaiting for async write callback.\n\nBug: 10796540.\n\nChange-Id: Id2747ae88783575d1d7ffd6fc86fbd054ab2c739\n"
    },
    {
      "commit": "2eab94f7dfd41a65e13aca379a1aed97447f8884",
      "tree": "bdd573d7a104c25ad6951dcfd58ee37ff2c03760",
      "parents": [
        "83f400056ac913250f0926326ff78697c68d18a1"
      ],
      "author": {
        "name": "jpadmana",
        "email": "jayashree.r.padmanaban@intel.com",
        "time": "Tue Jun 04 16:08:29 2013 +0530"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 16:03:30 2013 -0700"
      },
      "message": "Effects Factory changes for effects offload\n\naudio_effects.conf - commented changes to illustrate the\naddition of Proxy and sub effects to the conf file\n\nAdded an effectFactoryApi - EffectGetSubEffects for querying the\nsub effect descriptors from the factory. This api is used by the Proxy\nto get the sub effects\n\nAdded functions and data structures in factory code for\nloading the sub effects\n\ngSubEffectList - has the Proxies and their corresponding sub effects\n\n- addSubEffect() - reads a sub effect node and adds to the gSubEffectList\n- findSubEffect() - searches through the gSubEffectList to find a SubEffect\n\nBug: 8174034.\n\nChange-Id: Id7f6aa67c41db370d32beaf43a979ba4ac925928\nSigned-off-by: jpadmana \u003cjayashree.r.padmanaban@intel.com\u003e\n"
    },
    {
      "commit": "83f400056ac913250f0926326ff78697c68d18a1",
      "tree": "4dcd3ee8df9d39701190664ce5d0e9b4bb5b7cc9",
      "parents": [
        "5b8ce24b849f6cd5629b4ba508f7c78d6227d250"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 14:53:24 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 16:03:26 2013 -0700"
      },
      "message": "Revert \"Effects Factory changes for effects offload\"\n\nThis reverts commit 284c17e73bbff51cb5b1adcee98386d47733757a.\n\nChange-Id: I31db21e1ad4758b21356bfe4c4c64f15b2da8737\n"
    },
    {
      "commit": "2b59be89dc245b6e2475d9e8b0c5f2392370e71e",
      "tree": "85564dae05e9343c75e9a5d1f54f7efee4b349f7",
      "parents": [
        "d2ac3144e201398340cc5b9bb36e5efe39edd9eb"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Wed Sep 25 10:14:30 2013 -0700"
      },
      "committer": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Wed Sep 25 15:36:07 2013 -0700"
      },
      "message": "Camera: Implement getCameraCharacteristics\n\nBug: 10904541\nBug: 10360518\nChange-Id: Ie9ca6b3b0b5f2fe529e6b0decc193096e770a017\n"
    },
    {
      "commit": "e93cf2ca27ae6f4a81d4ef548bbf10a34db6d98f",
      "tree": "4de6f04ad4abc14bb0e777bcb02863196c59e34b",
      "parents": [
        "402dfba6dcd68f5fd8d8921f9751f3e47eb1449d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 24 11:52:37 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 24 12:12:47 2013 -0700"
      },
      "message": "Cleanup openRecord error handling\n\nBug: 10888816\nChange-Id: I84897dd7d30b370640b54e928f230604b873cb68\n"
    },
    {
      "commit": "3d00aa6de95fb46e36f2bab4e3facdf0b96acf06",
      "tree": "1ad12df4c11ca37280cbe6850eed9bff1e0a2f35",
      "parents": [
        "402dfba6dcd68f5fd8d8921f9751f3e47eb1449d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 24 09:53:27 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 24 11:59:59 2013 -0700"
      },
      "message": "soundpool: allocate shared memory heap by client\n\nCurrent SoundPool implementation allocates the shared memory heap\ncontaining decoded PCM samples in mediaserver process.\nWhen mediaserver process crashes, the shared memory heaps allocated by\nAudioCache cannot be mapped anymore in the new instance of mediaserver.\nThis causes a silent failure to end playback of new sounds because\nAudioFlinger believes the new AudioTracks are opened in streaming mode\nand not static mode: it sees a NULL shared memory pointer when the track\nis created.\n\nThe fix consists in allocating the memory heap in the client process. Thus\nthe heap is not lost when mediaserver restarts. The global memory usage is\nthe same as this is shared memory.\n\nAlso added a way to detect that a shared memory is passed when the track is\ncreated but cannot be mapped on mediaserver side.\n\nAlso fix a crash in SoundPool when ALOGV is enabled.\n\nBug: 10894793.\nChange-Id: Ice6c66ec3b2a409d75dc903a508b6c6fbfb2e8a7\n"
    },
    {
      "commit": "09647d29eaf429ce88c9c9709ff63dee62f2147a",
      "tree": "3626eb231080732d92a0b1bdfbd1710b52e36aa6",
      "parents": [
        "4b701cc041d635e5ec56e382043a4c5d01aedd80"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 20 11:58:40 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 23 15:53:53 2013 -0700"
      },
      "message": "Add support for level measurements in Visualizer\n\nNew commands to set a measurement mode and perform peak + RMS\n measurements.\n\nBug 8413913\n\nChange-Id: Ib25254065c79d365ebb34f9dc9caa0490e2d300d\n"
    },
    {
      "commit": "5a6cd224d07c05b496b6aca050ce5ecf96f125af",
      "tree": "c5d2fe55f0080c9660d283d040616d9a9fb6decc",
      "parents": [
        "a3b97ad288e6808c54c6275eaac1bd53108d8f11"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 20 09:20:45 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 20 12:22:29 2013 -0700"
      },
      "message": "Fix slow AudioTrack and AudioRecord destruction\n\nThere were two causes for the slowness:\n\nWhen thread was paused, it used nanosleep and sleep.  These usually\nrun to completion (except for POSIX signal, which we avoid because it\nis low-level).  Instead, replace the nanosleep and sleep by condition\ntimed wait, as that can be made to return early by a condition signal.\nAnother advantage of condition timed wait is that a condition wait was\nalready being used at top of thread loop, so it is a simpler change.\n\nThe AudioRecord destructor was missing a proxy interrupt that was correct\nin AudioTrack.  This proxy interrupt is needed in case another thread\nis blocked in proxy obtainBuffer.\n\nDoes not address the 1 second polling for NS_WHENEVER.\n\nBug: 10822765\nChange-Id: Id665994551e87e4d7da9c7b015f424fd7a0b5560\n"
    },
    {
      "commit": "ce8828a016b082f730152af2204b8ea3610dc1ec",
      "tree": "aad0c32a17516519b22bcea0d4f2fa7c81c61d28",
      "parents": [
        "d176ec1e371a686c58385692a28da677e398c302"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 16 18:07:38 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 17 11:24:02 2013 -0700"
      },
      "message": "Fix underruns when fast track denied due to SRC\n\nOpenSL ES requests a fast track.  If sample rate conversion is needed,\nthe request is denied by server, and a larger client buffer is used\nto handle the higher latency of a normal track.  However the client\nnotification period was calculated based on buffer being divided into\n2 sub-buffers.  That resulted in the notification period being too long.\nThe server pulls chunks that are smaller than half the total buffer.\nSo now the client uses 3 sub-buffers when there is SRC.\n\nAlso removed the \u0027defer wake\u0027 optimization because it was incorrect.\nThis optimization attempted to reduce the number of wakeups of client,\nwhen server releaseBuffer knows that another releaseBuffer will be\nfollowing.  But there is no way for the first releaseBuffer to predict\nhow soon the second releaseBuffer will occur.  In some cases it was\na long time, and the client underran.  So now the client is woken up\nimmediately if the total number of available frames to client is \u003e\u003d\nthe minimum number the client wants to see (the notification period).\n\nAlso fix bug where minimum frame count was not being used in the\ncalculation of notification period.\n\nBug: 10342804\nChange-Id: I3c246f4e7bc3684a344f2cf08268dc082e338e2a\n"
    },
    {
      "commit": "7f9551f75eedb3e4e1fe8feaaba48d8080635fc4",
      "tree": "2723b3ac82ab83025a52fbc8462f58875df0d94c",
      "parents": [
        "6220f993541b0317e6ace3c410dd35a8d76e30bc"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Mon Sep 09 15:48:58 2013 -0700"
      },
      "committer": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Mon Sep 09 17:24:06 2013 -0700"
      },
      "message": "MediaMuxer: Hook up setLocation method\n\nThis method is needed when mediamuxer is used for camera video recording.\n\nBug: 10594784\nChange-Id: I9bd006a07e5e2ac7019849e3f4f7cf7b8356d669\n"
    },
    {
      "commit": "284c17e73bbff51cb5b1adcee98386d47733757a",
      "tree": "d400f398fd4f2e8e383256973185b7dae243f92f",
      "parents": [
        "a19912554f3779fac0c341ac702227bf4b5fe399"
      ],
      "author": {
        "name": "jpadmana",
        "email": "rpadmanaban.jayashree@gmail.com",
        "time": "Tue Jun 04 16:08:29 2013 +0530"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 06 10:33:03 2013 -0700"
      },
      "message": "Effects Factory changes for effects offload\n\naudio_effects.conf - commented changes to illustrate the\naddition of Proxy and sub effects to the conf file\n\nAdded an effectFactoryApi - EffectGetSubEffects for querying the\nsub effect descriptors from the factory. This api is used by the Proxy\nto get the sub effects\n\nAdded functions and data structures in factory code for\nloading the sub effects\n\ngSubEffectList - has the Proxies and their corresponding sub effects\n\n- addSubEffect() - reads a sub effect node and adds to the gSubEffectList\n- findSubEffect() - searches through the gSubEffectList to find a SubEffect\n\nBug: 8174034.\n\nChange-Id: I25b0c62b2ad523a52337128b51469e628209ea3e\nSigned-off-by: jpadmana \u003crpadmanaban.jayashree@gmail.com\u003e\n"
    },
    {
      "commit": "a19912554f3779fac0c341ac702227bf4b5fe399",
      "tree": "eae1ed9c538fb796181f512770d0cb0796915e7d",
      "parents": [
        "7a4c2711d7a85ce962b9d18fee41975f9c574c0b",
        "ec3acca4a75fc4adc076b56751124f507b419622"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Sep 04 22:08:00 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 04 22:08:00 2013 +0000"
      },
      "message": "Merge \"wifi-display: do not use HDCP\u0027s encryptNative method if its unsupported\" into klp-dev"
    },
    {
      "commit": "ec3acca4a75fc4adc076b56751124f507b419622",
      "tree": "d8e15b4acf4de74c3edcdad49f3528ca668fc2a1",
      "parents": [
        "4585e8f0ff47580fdb81ed8652bde32db1770050"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Sep 03 14:35:37 2013 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Sep 03 16:02:35 2013 -0700"
      },
      "message": "wifi-display: do not use HDCP\u0027s encryptNative method if its unsupported\n\nBug: 10609422\nChange-Id: I005f1d04a4191b1503b5f3e895a98b8d6560c402\n"
    },
    {
      "commit": "6466c9e6e6278c740aed77f695f679be9f5db478",
      "tree": "cd987ec819ddecba0665cd692285069c083fb19b",
      "parents": [
        "894d6be4f9b4721c77a01919ecf03b27cec90cc9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 10:54:07 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:12:11 2013 -0700"
      },
      "message": "Add ExtendedAudioBufferProvider::framesReleased and onTimestamp\n\nand implement them in SourceAudioBufferProvider using the associated NBAIO_Source,\nand in Track using the associated AudioTrackServerProxy.\n\nChange-Id: I60dc4adba63fc1dc452ff16caf347e4a7c8242c2\n"
    },
    {
      "commit": "894d6be4f9b4721c77a01919ecf03b27cec90cc9",
      "tree": "c0356613af3c5dc3451197f8781a43c5d9d4d36c",
      "parents": [
        "a07a1c2c91dc7ee6ded319262499f20cd01edcf7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 26 10:29:28 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:12:03 2013 -0700"
      },
      "message": "Add NBAIO_Source::onTimestamp()\n\nwith dummy default implementation, and implement in MonoPipeReader.\nonTimestamp is meant to be called by the corresponding sink when it has\na new timestamp available.\n\nChange-Id: I8a90d24d1061e4a592ce5bd8ee1c9fce6bdd8a84\n"
    },
    {
      "commit": "a07a1c2c91dc7ee6ded319262499f20cd01edcf7",
      "tree": "2d7b01150635952af8d8d9e4f1a0d0d48ccfa874",
      "parents": [
        "943ba3cca8df0da24db38e97e43aaacb5b788a21"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 10:54:35 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:11:39 2013 -0700"
      },
      "message": "Instantiate SingleStateQueue\u003cAudioTimestamp\u003e\n\nas typedef AudioTimestampSingleStateQueue and use it in MonoPipe.\n\nChange-Id: Idaebb362bd9d0a81a7ed83792ab9369dc37c0e74\n"
    },
    {
      "commit": "943ba3cca8df0da24db38e97e43aaacb5b788a21",
      "tree": "f0e19f47cec090e2795df2df75b91c88c935ec01",
      "parents": [
        "572864b94e7882c2d23537525c708abcacde43b0",
        "767094dd98b01baf21de2ad09c27b3c98776cf73"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 22:08:53 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 03 22:08:53 2013 +0000"
      },
      "message": "Merge \"Add NBAIO_Sink::getTimestamp()\" into klp-dev"
    },
    {
      "commit": "767094dd98b01baf21de2ad09c27b3c98776cf73",
      "tree": "57b1a9c3b3d794bac2e1922b314046f02df18e7e",
      "parents": [
        "e45a767e13fe3396185c9d378a70f7f11eb881d0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 13:51:43 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 11:24:02 2013 -0700"
      },
      "message": "Add NBAIO_Sink::getTimestamp()\n\nwith a real implementation in AudioStreamOutSink\nfor dummy implementation initially in MonoPipe.\n\nUse in AudioFlinger::PlaybackThread::threadLoop_write()\nto keep the input to the timestamp latch up-to-date.\n\nChange-Id: I10ef277991b63bb43d55d6f3df75116ef32246cd\n"
    },
    {
      "commit": "4585e8f0ff47580fdb81ed8652bde32db1770050",
      "tree": "6aa5196aef1b75edc79199065ad825c26da64533",
      "parents": [
        "e45a767e13fe3396185c9d378a70f7f11eb881d0"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Aug 30 23:05:00 2013 +0000"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Sep 03 10:15:01 2013 -0700"
      },
      "message": "Revert \"Enhancement for OnInfo callback on DRM Framework\"\n\nThis reverts commit 5ff7836da0220b3097f36c8a5e82111816ebca62.\n\nFixes Fatal signal 6 (SIGABRT)\" when playing or downloading a video\nbug: 10542864\n\nChange-Id: I7f81a41c3acdbeb571a514b3f65e7ba37d403cca\n"
    },
    {
      "commit": "bd096fd9d8e5fc0e62f98807f4818a06f70d0812",
      "tree": "8ff27bce9f34e4bdd0f8e233494a24efef475a7d",
      "parents": [
        "573d80a8f463f648a515fc0975bf83951b272993"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 13:53:56 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 29 09:59:31 2013 -0700"
      },
      "message": "Implement Track::getTimestamp()\n\nusing a new timestamp latch in PlaybackThread, and\nAudioTrackServerProxy::framesReleased() which returns mServer.\n\nChange-Id: I1ebfba968c773faaab95648c272fd3ebd74718d6\n"
    },
    {
      "commit": "53cec22821072719ee02c856e9ac2dda2496c570",
      "tree": "1ac72eaf3ba6059680f8c3d7e39ae58a9e03adc8",
      "parents": [
        "ce70374bf105f8a6160bf5dd70affea012b2a464"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 29 09:01:02 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 29 09:19:07 2013 -0700"
      },
      "message": "Add IAudioTrack::getTimestamp()\n\nwith dummy implementation in AudioFlinger::TrackHandle, and\nimplement AudioTrack::getTimestamp() using IAudioTrack.\n\nAlso document invariant that mAudioTrack and control block are always\nnon-0 after successful initialization.\n\nChange-Id: I9861d1454cff7decf795d5d5898ac7999a9f3b7e\n"
    }
  ],
  "next": "ce70374bf105f8a6160bf5dd70affea012b2a464"
}
