)]}'
{
  "log": [
    {
      "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": "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"
    },
    {
      "commit": "ce70374bf105f8a6160bf5dd70affea012b2a464",
      "tree": "60d2673b83bff3622e7e299974104e572656b5a6",
      "parents": [
        "e07f53720bcf543bcfe90c228a49c2a85a3fdb4c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 19 16:33:58 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 28 17:24:58 2013 -0700"
      },
      "message": "New AudioTrack C++ API for audio timestamps\n\nThis new API is intended to replace latency(), especially for A/V sync.\nThe application will receive periodic timestamp notifications.  The period\nis unspecified, but will likely be more frequent after a pause or stop,\nset position, underrun, display on/off change, route change, or when audio\nframework notices drift.  It will be up to the higher level application\n(e.g.  Stagefright) to reconstruct a clock that updates more frequently.\n\nThe current latency() method doesn\u0027t indicate when latency changes\ndue to screen on/off state, route changes, etc.\n\nIncludes squahsed change-Id: I2082f8752040be0c234b1a6f1be2e269abf2ce7c\n Dummy implementation of AudioTrack:getTimestamp()\n Rename AudioTrack::Timestamp to AudioTimestamp.\n Renaming and pulling up to a higher level allows more modules to use it.\n\nChange-Id: Ibf7f6a207c3f8d8697f25ede2cd5200697fadb86\n(cherry picked from commit dd69eb893867634fd169c03204a6ad7c74b351e7)\n"
    },
    {
      "commit": "e07f53720bcf543bcfe90c228a49c2a85a3fdb4c",
      "tree": "388f8ab6a1b539a7bd8b903479864f1c1a3afeb0",
      "parents": [
        "8271f1a2225a34a0748624786392213a746c56d7",
        "abaa51d3ca31f0eda99e1d271e6dc64c877dbf58"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 27 16:49:13 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 27 16:49:13 2013 +0000"
      },
      "message": "Merge \"Camera2: Add flush support\" into klp-dev"
    },
    {
      "commit": "3bd3690fb0a423f9d0ba635e8db1c148ac9e93fc",
      "tree": "4f0325468fd7977d00223a9efa4c4c566125878a",
      "parents": [
        "33142e1e318c0c766a385d88d2434f62f9e2dfe7",
        "5ff7836da0220b3097f36c8a5e82111816ebca62"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Aug 26 16:09:03 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 26 16:09:03 2013 +0000"
      },
      "message": "Merge \"Enhancement for OnInfo callback on DRM Framework\" into klp-dev"
    },
    {
      "commit": "5ff7836da0220b3097f36c8a5e82111816ebca62",
      "tree": "4612e1308d3dd9961db0fae6d3372203d5937f61",
      "parents": [
        "62c1a46eec047eb5fbc4b90432ec1ce65b76fb75"
      ],
      "author": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Wed Jul 11 17:09:21 2012 +0900"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Aug 23 18:01:07 2013 -0700"
      },
      "message": "Enhancement for OnInfo callback on DRM Framework\n\nIn DRM framework, plugins can transmit DrmInfoEvent to Java layer.\nAlthough DrmInfoEvent has several entries, current implementation\ncan only convey integer and String. This change enables plugins\nuto propagate a hashmap to Java layer. The hashmap can have\none or more Strings and one byte array as value.\n\nChanges are made by Sony Corporation.\n\nbug: 10459159\n\nChange-Id: Ic19265d4ad3db4eda66a3c27e1e08873a8f2a4d7\n(cherry picked from commit 4f782bf0cb69929ebf03de239e2c9bf8e82adf5e)\n"
    },
    {
      "commit": "33142e1e318c0c766a385d88d2434f62f9e2dfe7",
      "tree": "7834e6bcc639ce13eafd275f7ceb6770fec9b865",
      "parents": [
        "2484040e0f413989e4edbe26ba3bf71122382af6",
        "87ecf19404586672008e98babc225e094292ceb5"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Aug 23 23:18:18 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 23 23:18:18 2013 +0000"
      },
      "message": "Merge \"wifi-display: pass session info to wifi display settings\" into klp-dev"
    },
    {
      "commit": "abaa51d3ca31f0eda99e1d271e6dc64c877dbf58",
      "tree": "52f4cc1078708f7c0099fded06dcb01daf6ca6bb",
      "parents": [
        "62c1a46eec047eb5fbc4b90432ec1ce65b76fb75"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 14 11:37:00 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Aug 23 14:08:27 2013 -0700"
      },
      "message": "Camera2: Add flush support\n\n- On HAL2 devices, fall back to wait until idle\n- On HAL3 devices, call HAL flush method\n\nBug: 9758581\nChange-Id: Ie1c570a15f6590a1ee6c271e3b989c48079b468a\n"
    },
    {
      "commit": "2484040e0f413989e4edbe26ba3bf71122382af6",
      "tree": "0a17a226282f38322b9761650a9536088096c657",
      "parents": [
        "62c1a46eec047eb5fbc4b90432ec1ce65b76fb75",
        "dcb89b3b505522efde173c105a851c412f947178"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Fri Aug 23 19:13:28 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 23 19:13:28 2013 +0000"
      },
      "message": "Merge \"MediaPlayer: add listener for raw track data\" into klp-dev"
    },
    {
      "commit": "62c1a46eec047eb5fbc4b90432ec1ce65b76fb75",
      "tree": "dce59b6f085880d667534b7190df11d1c52b6343",
      "parents": [
        "4b820b0e1fa069714b123fc35784541d0f94d267",
        "9cf69e0fc110f17c28e988ed0f9bf91abfaf710d"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Aug 22 23:08:10 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 22 23:08:10 2013 +0000"
      },
      "message": "Merge \"Add ability to test supported content types to MediaDrm\" into klp-dev"
    },
    {
      "commit": "9cf69e0fc110f17c28e988ed0f9bf91abfaf710d",
      "tree": "c5cb3fb67b26c852f8c7bea7e4eeb87952830842",
      "parents": [
        "75c16dde986e16ac5fd4d34b06b0cc6a90679866"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Aug 21 11:59:23 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Aug 22 09:27:35 2013 -0700"
      },
      "message": "Add ability to test supported content types to MediaDrm\n\nbug: 10244066\nChange-Id: I317f05b146db962c271893f6208890a5a6c396f1\n"
    },
    {
      "commit": "4b820b0e1fa069714b123fc35784541d0f94d267",
      "tree": "3418113d8ce7eca26303d6dce7d147e07003a0e9",
      "parents": [
        "1ce7c34e67c2cf58dd88c31f36f4bd62e375f7f0"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 21 14:39:05 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 21 14:56:46 2013 -0700"
      },
      "message": "Camera1: Rename setPreviewTexture to ...Target for clarity\n\nBug: 10312644\nChange-Id: I19976188f0359bfd177209fb40145defdae9c740\n"
    },
    {
      "commit": "1ce7c34e67c2cf58dd88c31f36f4bd62e375f7f0",
      "tree": "4febd2dd2325c391977d64c9d78a8ee955277e80",
      "parents": [
        "99ad37a47628b1ea1f8981bf974de38a49c653a0"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 21 13:57:21 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 21 14:35:48 2013 -0700"
      },
      "message": "Camera1: Set preview to be asynchronous, and remove dead code\n\n- Use the controlledByApp flag to make sure application-bound\n  preview buffer queue is asynchronous as before\n- Remove setPreviewDisplay in service, since it is no longer in\n  the binder interface\n- Rename setPreviewTexture to setPreviewTarget, to make it clear it\u0027s\n  the only game in town now. Rename only on the binder level and service\n  for now.\n\nBug: 10312644\nChange-Id: Icd33a462022f9729a63dc65c69b755cb7969857e\n"
    },
    {
      "commit": "87ecf19404586672008e98babc225e094292ceb5",
      "tree": "6351a002b70f93befda9a8b27317138d4cff4b87",
      "parents": [
        "99ad37a47628b1ea1f8981bf974de38a49c653a0"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Jun 06 12:42:59 2013 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Aug 21 11:03:28 2013 -0700"
      },
      "message": "wifi-display: pass session info to wifi display settings\n\nBug: 9371882\n\nChange-Id: I9e4b8c2154b03ce8ff3e14c465a5224bb6e8db9a\n"
    },
    {
      "commit": "46291616486979986cba3ab83e894728ef53063f",
      "tree": "6e725226e68719d0c3c445dc5530bf0392204095",
      "parents": [
        "cf2a123e7ad39700c6e5318006f9acccf69511fa"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 18 14:38:44 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 19 17:45:42 2013 -0700"
      },
      "message": "AudioSystem: new audioflinger restart detection\n\nAdd a specific method to AudioSystem for AudioService to poll\nfor AudioFlinger service restart instead of relying on current\ncallback mechanism which is flaky.\n\nBug: 9693068.\nChange-Id: Ie88bc9d25033503bc5cd2fa9d8c754d0f8045b8f\n"
    },
    {
      "commit": "dcb89b3b505522efde173c105a851c412f947178",
      "tree": "eb89386fb07021a6527b35ea3d8ecf80584c73b7",
      "parents": [
        "1cb4e1661e4144cb188c2c79b89804fcb902fd19"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Aug 06 09:44:47 2013 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Aug 19 10:53:52 2013 -0700"
      },
      "message": "MediaPlayer: add listener for raw track data\n\nBug: 10326117\n\nChange-Id: I2c0bdf8adc67b11f8dc633423bee66897548f181\n"
    },
    {
      "commit": "e9f3a3141c2eaafa3a5a3417d1e5682a909c5b31",
      "tree": "bc27152b22072be2e18ab9c01bf86c852d0b902e",
      "parents": [
        "1cb4e1661e4144cb188c2c79b89804fcb902fd19",
        "0f61d8f14aa368c9cd7076528e8096e10ed100a0"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Sat Aug 17 00:29:13 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Aug 17 00:29:13 2013 +0000"
      },
      "message": "Merge \"Refactor CameraService to handle errors properly.\" into klp-dev"
    },
    {
      "commit": "0f61d8f14aa368c9cd7076528e8096e10ed100a0",
      "tree": "ed95cb70d56dd3a732f4e1909c96e7889b23ce94",
      "parents": [
        "75c16dde986e16ac5fd4d34b06b0cc6a90679866"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Thu Aug 08 13:07:18 2013 -0700"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Fri Aug 16 14:42:28 2013 -0700"
      },
      "message": "Refactor CameraService to handle errors properly.\n\nBug: 10361136\n\n-Connect calls now return status_t error flags.\n\nChange-Id: Idca453b111e5df31327f6c99ebe853bb2e332b95\n"
    },
    {
      "commit": "1cb4e1661e4144cb188c2c79b89804fcb902fd19",
      "tree": "05514005c18fb0e5c85ff566b26526519cd8fb1a",
      "parents": [
        "75c16dde986e16ac5fd4d34b06b0cc6a90679866",
        "cbaffcffee6418d678806e63097c19fe26d48fe0"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri Aug 16 19:32:29 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 16 19:32:29 2013 +0000"
      },
      "message": "Merge \"Add MEDIA_STARTED/PAUSED/STOPPED events to media players\" into klp-dev"
    },
    {
      "commit": "cbaffcffee6418d678806e63097c19fe26d48fe0",
      "tree": "21af7d5eab33df7c6487290014f29a83b525734c",
      "parents": [
        "b8689b31813f55cbc1bf8e9ca0d46a9ee113e38a"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Aug 14 18:30:38 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Aug 15 16:04:58 2013 -0700"
      },
      "message": "Add MEDIA_STARTED/PAUSED/STOPPED events to media players\n\nThis is needed for the MediaTimeProvider java interface, so it does not\ncontinually poll for current media time.\n\nNote: NuPlayer and AwesomePlayer do not correctly handle stop (pause\ninstead), so for those we will signal PAUSED.\n\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nChange-Id: I3c61e1bda475f131323f475c18a42e3ec66c9ae1\nBug: 10326117\n"
    },
    {
      "commit": "75c16dde986e16ac5fd4d34b06b0cc6a90679866",
      "tree": "82d64dc5359021224e07e0e63fb74e4d1f3deb16",
      "parents": [
        "c85a986af84962515c10499faab3dc8f9a0948d4",
        "0167414e261f88a96b5e4bf6cb592e6ca11e5a95"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 15 16:12:08 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 15 16:12:08 2013 +0000"
      },
      "message": "Merge \"You can now opt-in to having the video decoder push blank buffers to the\" into klp-dev"
    },
    {
      "commit": "0167414e261f88a96b5e4bf6cb592e6ca11e5a95",
      "tree": "1510cccda507a05fa1b410b4a6a8d4828a1740cc",
      "parents": [
        "cd06d357ed4fcde991aa55dc97317d97cb287332"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 14 10:28:14 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 14 10:28:14 2013 -0700"
      },
      "message": "You can now opt-in to having the video decoder push blank buffers to the\n\nsurface on the transition from executing-\u003eidle by specifying the key\n\"push-blank-buffers-on-shutdown\" with a value of 1 in the call to configure.\n\nChange-Id: I1155fccf89f18e717728c985e590651597595515\n"
    },
    {
      "commit": "7f76a81b18ade3158ae27015637074ce08e837b2",
      "tree": "b2927c2cc99053ba118553a0242cf41b664fb5be",
      "parents": [
        "cd06d357ed4fcde991aa55dc97317d97cb287332",
        "2ee14000a38683220fb250d9e7300e1d71ccdaa0"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Wed Aug 14 01:27:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 14 01:27:16 2013 +0000"
      },
      "message": "Merge \"Check adaptive playback support via CodecCapabilities\" into klp-dev"
    },
    {
      "commit": "2ee14000a38683220fb250d9e7300e1d71ccdaa0",
      "tree": "2f59a1eb7737e5e426bb7be177f853a6f333146d",
      "parents": [
        "b8689b31813f55cbc1bf8e9ca0d46a9ee113e38a"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 06 15:02:22 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 13 13:42:52 2013 -0700"
      },
      "message": "Check adaptive playback support via CodecCapabilities\n\nAdded flags field to CodecCapabilities, so that applications\ncan query whether codecs support various features.  For now\nadded one video-decoder feature:\n\nkFlagSupportsAdaptivePlayback\n\nMedia playback applications can query it to see if a codec\nsupports seamless resolution changes, such as by supporting\ndynamic output buffers.\n\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nChange-Id: I09da46e8ab6b8645fa2749e33128e49eda2e865b\nRelated-to-bug: 7093648\n"
    },
    {
      "commit": "cd06d357ed4fcde991aa55dc97317d97cb287332",
      "tree": "b6bc5dab4fa6096bcd314749878760c279033e3f",
      "parents": [
        "1e0b080825a169c6ac655f11a798ff177575608c",
        "a61285dcf1da8a2cf40c499ee3a7b9fc4d74ac58"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 13 17:13:24 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 13 17:13:24 2013 +0000"
      },
      "message": "Merge \"Optionally repeat the previously submitted frame to the encoder\" into klp-dev"
    },
    {
      "commit": "a61285dcf1da8a2cf40c499ee3a7b9fc4d74ac58",
      "tree": "a360123ee73434ee45608b03a02d8fb6ff431c3b",
      "parents": [
        "1b832c3d8f2b1b24f9bc7025afd2b4a8b4e6c6f9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 31 13:50:42 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 13 10:11:46 2013 -0700"
      },
      "message": "Optionally repeat the previously submitted frame to the encoder\n\nif no new frame has been delivered by surface flinger within the timeout\ninterval.\n\nChange-Id: I282f1b726dfe5646b178d7858d6f5d4f5a264fde\n"
    },
    {
      "commit": "ac0bbe16f3eba46b3d8057b66c2aff9101fc6f7d",
      "tree": "14008bb60b6b0ac3eb77b8e39504400d2b446e43",
      "parents": [
        "1b832c3d8f2b1b24f9bc7025afd2b4a8b4e6c6f9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 09 18:32:30 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 09 19:57:53 2013 -0700"
      },
      "message": "Fix potential leak of audio input handle.\n\nThe audio input handle is ultimately owned by the audio recorder\nobject but it could be dropped on the floor if an error occurred\nbefore that object was fully initialized.\n\nRearranged some of the argument validation and merged getInput_l\nwith openRecord_l to simplify the code and prevent such a leak\nfrom occurring.\n\nBug: 10265163\nChange-Id: I124dce344b1d11c2dd66ca5e2c9aec0c52c230e2\n"
    },
    {
      "commit": "f31abb4ee82050030b3e5a0793bb2b8e30f40d31",
      "tree": "bc17b9e9d4a4dc1108c032cad4a714471180478c",
      "parents": [
        "2f583c0ac819a7bbd1228d7b8c3857c7e6a98a91",
        "02de89293b74ab1e9a77ce2367c5c499ab038968"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 07 17:19:36 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 07 17:19:37 2013 +0000"
      },
      "message": "Merge \"Cleanup comments for the new control block implementation\""
    },
    {
      "commit": "2f583c0ac819a7bbd1228d7b8c3857c7e6a98a91",
      "tree": "a142b620d9f27575b983685dbb28f131d8ab43ee",
      "parents": [
        "89a70f71cef61d10437b3901e8efc1f082a857c5",
        "362552a53523c46679e8b3cbb83b39d7ae769ff7"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Aug 07 01:44:37 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 07 01:44:38 2013 +0000"
      },
      "message": "Merge \"Adds a drm resource busy error, removes some deprecated errors\""
    },
    {
      "commit": "89a70f71cef61d10437b3901e8efc1f082a857c5",
      "tree": "a973a3c580ab5de75ffc390a7eb52293028fb9c6",
      "parents": [
        "e1e476669a5ee25f2a3c2fe30170e0f9a89f30a4",
        "d0715867861c216e88a4a7523b6da8a3cb128724"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 06 23:55:31 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 06 23:55:31 2013 +0000"
      },
      "message": "Merge \"IOMX: add updateGraphicBufferInMeta method for metadata mode\""
    },
    {
      "commit": "d0715867861c216e88a4a7523b6da8a3cb128724",
      "tree": "9b474094654a2dccb440fd9ca4a87f8afbdb9278",
      "parents": [
        "b08ab81bab9e8cd2e3a7fff02725a387070fd078"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Mon Jul 22 12:57:43 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Aug 06 13:19:26 2013 -0700"
      },
      "message": "IOMX: add updateGraphicBufferInMeta method for metadata mode\n\nThis is used to set the handle in the metadata buffer that is\nvalid in the mediaserver process, as well as to keep a reference\nfor the graphic buffers in BufferMeta.\n\nChange-Id: I46bb68d8bed894f357eeeb25368360d11b276634\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\n"
    },
    {
      "commit": "deeef54487a34034dc0cfaab20b20d557224c07c",
      "tree": "cc0aa13d8349df8a57e82374cfd2df9095cf2cbe",
      "parents": [
        "230c5bde2779c618b26edc73443280b2d9371c70"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 02 01:50:59 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 06 20:05:40 2013 +0000"
      },
      "message": "separte producer and consumer interfaces\n\nBug: 9265647\nChange-Id: Iefabc11e4bd2e2e8ffd31160476c450affe6629c\n"
    },
    {
      "commit": "230c5bde2779c618b26edc73443280b2d9371c70",
      "tree": "313a1848799a279e3a56859f0d474a459a981d5a",
      "parents": [
        "33f3177c08d238285b296d137e527ec99e34228f",
        "7cd9cf70e36ad4b8eb12e24f9adbbe6fd69edebd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 06 17:32:40 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 06 17:32:41 2013 +0000"
      },
      "message": "Merge \"AudioRecord notification frames\""
    },
    {
      "commit": "743649fa70392b668377fb507d251b346c7b2769",
      "tree": "3d23d5355c7ea676aaeee2465447dc72f093c346",
      "parents": [
        "5279e3e1187e4da0fed4349d29ea548f52e95f95",
        "73493688f4190f790ee15d9ca54831cd64f4e195"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 06 16:14:01 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 06 16:14:01 2013 +0000"
      },
      "message": "Merge \"AudioRecord::openRecord_l now take flags\""
    },
    {
      "commit": "3aa03e40668dd90390d9f1702f8c576e15b366c3",
      "tree": "01037957009952351730da4b588c3e2bcc42cda9",
      "parents": [
        "77baebfe89c99415a0ee4c2ea87bfd8a0f9e51f1",
        "eeca32671896739e84050da5992d5f151a1629de"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 05 22:59:42 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 05 22:59:43 2013 +0000"
      },
      "message": "Merge \"IAudioFlinger::openRecord track_flags_t flags is in/out\""
    },
    {
      "commit": "77baebfe89c99415a0ee4c2ea87bfd8a0f9e51f1",
      "tree": "8a8f4aa15e520fddf80ed076f54b14ed6085dc50",
      "parents": [
        "9b26847ed122a601ba857e0ef22ee2c818641120",
        "27f7b2a8fe899565487d8a326676a5f7d0a05a37"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 05 21:56:17 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 05 21:56:17 2013 +0000"
      },
      "message": "Merge \"AudioRecord::set and constructor now take flags\""
    },
    {
      "commit": "9b26847ed122a601ba857e0ef22ee2c818641120",
      "tree": "8100bc87e1c56a08005f55ea4f1d3943c6eb1e48",
      "parents": [
        "ce7842c295638ee1432041186700a71d4bf1c176",
        "6ca126d5c83386941c5cb9600099e5510e4430d6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 05 21:50:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 05 21:50:15 2013 +0000"
      },
      "message": "Merge \"Make AudioRecord and AudioTrack comments more similar\""
    },
    {
      "commit": "f86b18b1ce3cf20a39aea1fcaf90ec66f9d6d63e",
      "tree": "ffcd083e96e9edaa7e8a597165584bfd5d3eb43f",
      "parents": [
        "13c34e09fdfe0bcd2053368df4dd26028004d18f",
        "28f1351369682801e1bb40a835bdae3c97b73c1c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 05 19:47:51 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 05 19:47:51 2013 +0000"
      },
      "message": "Merge \"AudioRecord callback thread waits for priority boost\""
    },
    {
      "commit": "13c34e09fdfe0bcd2053368df4dd26028004d18f",
      "tree": "e884b091f302facb3fc9661fddc90d267e80c881",
      "parents": [
        "6c104a4a245ea72b7bdf8c7c016121189045d4bc",
        "743732236ab84e94168378cdb293964861b1ed00"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 05 14:56:23 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 05 14:56:23 2013 +0000"
      },
      "message": "Merge \"Remove default parameters for AudioTrack\""
    },
    {
      "commit": "362552a53523c46679e8b3cbb83b39d7ae769ff7",
      "tree": "fb7f5658afe720c834d0ed757cf7a11dbd471f6a",
      "parents": [
        "7f249fa9bcb64da324d19f551943fac7686d221c"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Aug 02 23:16:18 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Aug 02 23:16:18 2013 -0700"
      },
      "message": "Adds a drm resource busy error, removes some deprecated errors\n\nChange-Id: Id719fb6df9c9d955ac24803082d08f2a4a5bc766\nrelated-to-bug: 9695816\n"
    },
    {
      "commit": "7cd9cf70e36ad4b8eb12e24f9adbbe6fd69edebd",
      "tree": "71596e7e98be91b19b5fe16a74a12926a0232177",
      "parents": [
        "3151427b6b0adf99929433715bab6f1e505100c1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 01 07:22:02 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 16:22:42 2013 -0700"
      },
      "message": "AudioRecord notification frames\n\nChange-Id: I76ec536d1504eb9a558178b62bf225aace4b40d1\n"
    },
    {
      "commit": "73493688f4190f790ee15d9ca54831cd64f4e195",
      "tree": "e1655201bfb7d8339e48afd78597c5cd3bcb1b33",
      "parents": [
        "90e58b1fefc8caf70b34301a92bc86179580b6fc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 31 16:10:53 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 16:22:42 2013 -0700"
      },
      "message": "AudioRecord::openRecord_l now take flags\n\nThe new parameter \u0027flags\u0027 of type audio_input_flags_t will be used for\nrequesting a fast track, but is currently ignored.\n\nChange-Id: If68dfda8b2d4eaaca42927d721b4630c47f71f3b\n"
    },
    {
      "commit": "eeca32671896739e84050da5992d5f151a1629de",
      "tree": "d611c0a426354e80345956c945e9381e6137209b",
      "parents": [
        "27f7b2a8fe899565487d8a326676a5f7d0a05a37"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 31 16:12:48 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 16:22:42 2013 -0700"
      },
      "message": "IAudioFlinger::openRecord track_flags_t flags is in/out\n\nThis will allow AudioFlinger to tell client it is denying a request.\n\nChange-Id: Iff2be3ad6636371bbda9c9899a283c94620c1f06\n"
    },
    {
      "commit": "27f7b2a8fe899565487d8a326676a5f7d0a05a37",
      "tree": "fa0b6b4ee7cfb1e6b0e7cd0f6d6114498bb176bf",
      "parents": [
        "28f1351369682801e1bb40a835bdae3c97b73c1c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 31 16:10:22 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 16:22:42 2013 -0700"
      },
      "message": "AudioRecord::set and constructor now take flags\n\nThe new optional parameter \u0027flags\u0027 of type audio_input_flags_t will be\nused for requesting a fast track.\n\nChange-Id: Ia7e070cb57c833e608352da354fb30dc26df6918\n"
    },
    {
      "commit": "28f1351369682801e1bb40a835bdae3c97b73c1c",
      "tree": "eb6e8fad009764ef115c894f017be5b110689b65",
      "parents": [
        "f36dbfe3d517e9311be0a4d0fd6658380690e84c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 31 12:27:26 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 16:22:41 2013 -0700"
      },
      "message": "AudioRecord callback thread waits for priority boost\n\nChange-Id: Iae38fa4ac20a45751566169213a08a15deb0a2f6\n"
    },
    {
      "commit": "02de89293b74ab1e9a77ce2367c5c499ab038968",
      "tree": "9be5c99a98cd411009764c53d3e943e90cb6a3b9",
      "parents": [
        "f36dbfe3d517e9311be0a4d0fd6658380690e84c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 31 12:30:12 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 16:10:38 2013 -0700"
      },
      "message": "Cleanup comments for the new control block implementation\n\nThere was some obsolete and incomplete text left over\nafter the new control block code was submitted.\nThis cleans up all those comments to be accurate again.\n\nChange-Id: Ic52f5869cb723cde25d709514d6deea6aa6f20aa\n"
    },
    {
      "commit": "f0f33c4acd231fa95deb9eeef2c46b0129e64463",
      "tree": "c20304410af6b34407a72e6ba4859427ccaf67e6",
      "parents": [
        "f36dbfe3d517e9311be0a4d0fd6658380690e84c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 31 12:24:36 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 16:03:44 2013 -0700"
      },
      "message": "AudioRecord has no default sample rate\n\nChange-Id: I72feefdd6f3a623fd3669b80d4b264518fdc0929\n"
    },
    {
      "commit": "743732236ab84e94168378cdb293964861b1ed00",
      "tree": "b437f01649d5358e8cd65a1873c5cd71c78aa9de",
      "parents": [
        "f36dbfe3d517e9311be0a4d0fd6658380690e84c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 15:51:35 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 15:56:04 2013 -0700"
      },
      "message": "Remove default parameters for AudioTrack\n\nThe defaults aren\u0027t needed; all users must know these values.\n\nChange-Id: I0c1c97cb80bfea8e69a7cfa53ec85a91a8d48bb5\n"
    },
    {
      "commit": "6ca126d5c83386941c5cb9600099e5510e4430d6",
      "tree": "6298fbfc9a0d509fa90ab50cb21894d9fa380868",
      "parents": [
        "f36dbfe3d517e9311be0a4d0fd6658380690e84c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 31 12:25:00 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 15:31:44 2013 -0700"
      },
      "message": "Make AudioRecord and AudioTrack comments more similar\n\nChange-Id: I122a7cf7bfc162090cb27f37c325db7a23985bc7\n"
    },
    {
      "commit": "f36dbfe3d517e9311be0a4d0fd6658380690e84c",
      "tree": "65768073d7fd288eac6c28f1283589d65fe0cbad",
      "parents": [
        "1a3739169becc850999c3c06db402541119a428c",
        "82aaf94a5b18939e4d790bbc752031f3070704a3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 16:14:01 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 16:14:01 2013 +0000"
      },
      "message": "Merge \"Report underruns for fast tracks also\""
    },
    {
      "commit": "30873bfd08255e2c4e98ff5732ffff2838772617",
      "tree": "e452e0a82e8716e8a7a0fd01f896cc2adfec4f63",
      "parents": [
        "9610adc395d18e474e6e35c0bc8b9c3220e6e525"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 31 13:04:50 2013 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 31 13:04:50 2013 -0700"
      },
      "message": "Unregister any handlers still registered on now \"dead\" ALoopers\n\nupon the death of an ALooper.\n\nChange-Id: I64c0835b8db04486204f3d0fa7173ee53708a116\nrelated-to-bug: 10106648\n"
    },
    {
      "commit": "82aaf94a5b18939e4d790bbc752031f3070704a3",
      "tree": "4e39e32d0ccde726548afcbd81e253d5e316b295",
      "parents": [
        "b08ab81bab9e8cd2e3a7fff02725a387070fd078"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 17 16:05:07 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 31 09:15:00 2013 -0700"
      },
      "message": "Report underruns for fast tracks also\n\nThis fixes a regression that was introduced earlier\nby commit 9f80dd223d83d9bb9077fb6baee056cee4eaf7e5\ncalled \"New control block for AudioTrack and AudioRecord\".\nThat commit broke underrun reporting for fast tracks.\n\nAlso remove Track::mUnderrunCount, which counted the number of underrun\nevents, and was only used by dumpsys media.audio_flinger.\n\nNow dumpsys media.audio_flinger reports the number of underrun frames,\n\nIsolated underrun-related control block accesses via the proxy, so that\nthe server is not directly poking around in the control block.\n\nThe new proxy APIs are AudioTrackServerProxy::getUnderrunFrames() and\nAudioTrackServerProxy::tallyUnderrunFrames().  getUnderrunFrames() returns\na rolling counter for streaming tracks, or zero for static buffer tracks\nwhich never underrun, but do a kind of \u0027pause\u0027 at end of buffer.\ntallyUnderrunFrames() increments the counter by a specified number of frames.\n\nChange-Id: Ib31fd73eb17cbb23888ce3af8ff29f471f5bd5a2\n"
    }
  ],
  "next": "4d74828fc0f6c13d49a36147a4250bcfa8ad0a47"
}
