)]}'
{
  "log": [
    {
      "commit": "782a30d2abbf20bf617c19983829fe78cdc235f1",
      "tree": "824f3768fd99df018be0164572a7ed7aa82b56f8",
      "parents": [
        "d971d188737cb179dba19a27e513e07c78252bf5",
        "f4aeab2bd69bead05ed75ae3254f53a6ab2316b5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 19 16:35:00 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 19 16:35:01 2017 +0000"
      },
      "message": "Merge \"Track: Check buffer size of static tracks\" into lmp-dev"
    },
    {
      "commit": "a35816475b907f3cead491f1c39ea72967f49fe5",
      "tree": "4b1bfcaa3885a8d64b625e44313021237bde2601",
      "parents": [
        "8818bf1fbb9ea6b65cd61543ed7db986c3d65d13",
        "24ef54ecb8e825f51b2750dbb8b2ea2139cebd8c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jun 16 23:54:39 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jun 16 23:54:39 2017 +0000"
      },
      "message": "AudioFlinger: Fix memory allocation for client-less tracks am: 1159ffd5e3 am: f242b890c4\nam: 24ef54ecb8\n\nChange-Id: I0b413afa5c0e41fadcd0320f7481172cc2398018\n"
    },
    {
      "commit": "f4aeab2bd69bead05ed75ae3254f53a6ab2316b5",
      "tree": "683ef1ac8035e7bc783d68e7ebd8a7e20dc84893",
      "parents": [
        "ea83248dfb1822e0c0d507f38b13d90a9641261e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 12 17:22:46 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jun 15 18:08:47 2017 -0700"
      },
      "message": "Track: Check buffer size of static tracks\n\nMerged-In: Ia7edd9a802905214a27961dbcec6352f6ef98f73\nTest: Native POC\nBug: 38340117\nChange-Id: I633caf563d3607dbe4b9be10be1687efce33469c\n"
    },
    {
      "commit": "1159ffd5e3f832206982d45a7b030b943cc4775e",
      "tree": "aef16a6e9d49e0d1b59bef3b487f21244e1ab8ee",
      "parents": [
        "ef3a4aead0eb4d6b0615159489d4a187ce90de2c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 13 18:50:48 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 12 17:52:06 2017 -0700"
      },
      "message": "AudioFlinger: Fix memory allocation for client-less tracks\n\nTest: Ringtone with BT\nBug: 35350587\nBug: 38340117\nChange-Id: If247d319d58f8f4d18b49f58ec950491871ebb2d\n(cherry picked from commit afb31487f3156a7284d2f0d06646c7bc00d99537)\n"
    },
    {
      "commit": "64e843f1c312382e3e1a6f6e17f8d895e9c6efe8",
      "tree": "ef414eb6b5d745aba49a9bb3823470ace97265e6",
      "parents": [
        "b6aa3901ceb4b51ca1e51799e8cc95f630d49c33"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 13 18:48:39 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 14 16:39:50 2017 -0800"
      },
      "message": "DO NOT MERGE AudioFlinger: Check framecount overflow when creating track\n\nTest: Native POC\nBug: 34749571\nChange-Id: I7529658e52ac7e64d162eb5338f10fb25eaa8fe7\n"
    },
    {
      "commit": "eaa3969f757291f151efedde17ec529b8659024d",
      "tree": "da8f3a44d66a2c8f16114aab652a58079487cce9",
      "parents": [
        "e5a54485e08400a976092cd5b1c6d909d0e1a4ab"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 13 18:48:39 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Feb 15 00:38:02 2017 +0000"
      },
      "message": "AudioFlinger: Check framecount overflow when creating track\n\nTest: Native POC\nBug: 34749571\nChange-Id: I7529658e52ac7e64d162eb5338f10fb25eaa8fe7\n(cherry picked from commit 1883f69de5f2c4e71df58d5b71d7c39f9779b50c)\n"
    },
    {
      "commit": "4c053ea158b29fa2cdd4c6f39d3c8da4ee5a7a02",
      "tree": "129617d405d098b749beafbcd87c58321bf2b055",
      "parents": [
        "8b76b592be5bc162fb5a6d7e8c47812544b6b345"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Sep 28 14:41:07 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 02 16:50:26 2014 -0700"
      },
      "message": "Fix uncertainty of one normal mix buffer in AudioTrack::getTimestamp\n\nThe per-thread timestamp latch was not synchronized with the per-track\nreleased frames.  Now the value of each track\u0027s released frames is\nlatched along with the timestamp.\n\nBug: 17531839\nBug: 17669342\nChange-Id: I9d50c8c6a5de55a3f4561ac40e20d497376c1257\n"
    },
    {
      "commit": "a49c94ea49c8329a1bdefe980e1f7d335c0d1ec5",
      "tree": "c095d3a59114c8a893e3657ad5efc6fdb40f2c9b",
      "parents": [
        "d0b9efe7d8300e48f7a99c1dd746d60060206b3c",
        "6954127b7ace022677ac407ff943c2793f8a11be"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 01 23:09:52 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 01 23:09:53 2014 +0000"
      },
      "message": "Merge \"Revert \"Fix uncertainty of one normal mix buffer in AudioTrack::getTimestamp\"\" into lmp-dev"
    },
    {
      "commit": "6954127b7ace022677ac407ff943c2793f8a11be",
      "tree": "3e038561671d256e03d63fb88a32e529e198701a",
      "parents": [
        "54464ba861aaafd11ee5645f5d1ecd1171c6e9fe"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 01 22:38:43 2014 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 01 22:45:18 2014 +0000"
      },
      "message": "Revert \"Fix uncertainty of one normal mix buffer in AudioTrack::getTimestamp\"\n\nThis reverts commit 54464ba861aaafd11ee5645f5d1ecd1171c6e9fe.\n\nBug: 17733142.\n\nChange-Id: I9886d40032b2f7d96bee03e600e14f78943d8052\n"
    },
    {
      "commit": "955e24d3a8e218d4711cabc6558781e095011132",
      "tree": "1b27aa45a2224cbdc9e247935c811e8ab62af40a",
      "parents": [
        "6c7ae72f0eccf456744474785afd25f9e205881c",
        "54464ba861aaafd11ee5645f5d1ecd1171c6e9fe"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 30 01:44:18 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 30 01:44:18 2014 +0000"
      },
      "message": "Merge \"Fix uncertainty of one normal mix buffer in AudioTrack::getTimestamp\" into lmp-dev"
    },
    {
      "commit": "54464ba861aaafd11ee5645f5d1ecd1171c6e9fe",
      "tree": "c04a12c44ee589fec8baebafe200fe95529fa76a",
      "parents": [
        "a67ced9746e6f0d4e03ff8007682091afea71f6c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Sep 28 14:41:07 2014 -0700"
      },
      "committer": {
        "name": "Rachad Alao",
        "email": "rachad@google.com",
        "time": "Tue Sep 30 01:10:58 2014 +0000"
      },
      "message": "Fix uncertainty of one normal mix buffer in AudioTrack::getTimestamp\n\nThe per-thread timestamp latch was not synchronized with the per-track\nreleased frames.  Now the value of each track\u0027s released frames is\nlatched along with the timestamp.\n\nBug: 17531839\nBug: 17669342\nChange-Id: I96252782911bd42a2534cc4030521b7eeb99a7b9\n"
    },
    {
      "commit": "e659ef420dae0caae84ab78f9df8952acb9ad3a0",
      "tree": "9b21158041ed871365f939fc37034858328ef115",
      "parents": [
        "dc2e6ddc933e40632e79a866d9ece870db1a975e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 29 13:06:46 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 29 17:39:39 2014 -0700"
      },
      "message": "audioflinger: forward flush to direct output streams\n\nTrack flush should be forwarded to the audio HAL when playing\non a direct output stream.\n\nBug: 17704953.\nChange-Id: Iafc94327fe9aebf1d4eaa97b76c6767b7ac5babe\n"
    },
    {
      "commit": "aaa44478a373232d8416657035a9020f9c7aa7c3",
      "tree": "95a4724c0d7ebbe065551f0aeaf5d65283ab3e04",
      "parents": [
        "f0b31e6333839972afb2e374f6d8824180d29fc2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 12 17:41:50 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 15 09:31:31 2014 -0700"
      },
      "message": "audioflinger: fix pre processing effect leak\n\nWhen a capture thread was closed, the effects attached to this thread\nwere left dangling and the associated effect chain destroyed.\nWhen their last client was disconnected, the effects were not released\nproperly from the effect library because the destruction process could\nnot be completed without the effect being attached to a thread.\n\nA similar problem prevented a RecordTrack to be properly released if\nits client was destroyed after the capture thread.\n\nThe fix consists in allowing the effect or record track to be properly\nreleased even if its parent thread cannot be promoted.\n\nAlso save any effect chain still present on a closed capture thread\nin case a new client wants to reuse the effects on the same session later.\n\nBug: 17110064.\nChange-Id: I5cd644daa357afd1f3548f9bcb28e6152d95fdb8\n"
    },
    {
      "commit": "329f6511ee4e03a4605c70bbda8d3a96d2544884",
      "tree": "7c80c71e7eb84ba39106205214c9e58b5f6aed1e",
      "parents": [
        "9dd4a2ddd7caf8cbe50d8a76e0ec3e0274d2bce6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 28 16:23:16 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 02 13:54:21 2014 -0700"
      },
      "message": "Restore the ability to build tee sink for debugging\n\nThis changelist does not enable tee sink, but makes it possible to do so.\nTee sink had suffered some bit rot since it is not built by default.\n\nAlso fixes a crash for \u003e 2 byte per sample or \u003e 2 channels.\nStill does not write correct header for floating-point;\nthat will be best solved by moving to libsndfile.\n\nBug: 16990102\nChange-Id: I8e92c588ccc513d7802d696fcfb324e815772df6\n"
    },
    {
      "commit": "c2730ba7c5e9559b7499ef5e0d7742deb18c5110",
      "tree": "efa845ec9fd1cb5cc2a2cf20b62538b74668b173",
      "parents": [
        "92ce4715315bddd158c7d4028556632f0547e3b9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 20 15:47:07 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 06 11:42:07 2014 -0700"
      },
      "message": "audio policy: add support for USB devices for voice call\n\nAdd possibility to use sink and source devices not on\nthe primary HW module for voice calls (e.g. USB headsets).\n\nBug: 15520724.\n\nChange-Id: Ib27db4ba759b6d91ea1104dc2e35c87733517b30\n"
    },
    {
      "commit": "4dc680607181e6a76f4e91a39366c4f5dfb7b03e",
      "tree": "5212b6ff474b8ef68a68cb1cf144f54e5348de77",
      "parents": [
        "d530d415e60373caf875a37d2d747a51470ee45c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 28 17:26:49 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 28 18:10:29 2014 -0700"
      },
      "message": "audio policy: pass session ID to capture activity methods\n\nIndicate the audio session ID when calling getInput(),\nstartInput(), stopInput(), releaseInput().\n\nBug: 12378680.\nChange-Id: I763793752f93e2f4e1445a5ab217c895af011038\n"
    },
    {
      "commit": "83b8808faad1e91690c64d7007348be8d9ebde73",
      "tree": "b541b1172f804e04bd19b29f7878a1becf6205d7",
      "parents": [
        "c15c265676da2226a18a5373812608b19d4719d7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 20 18:31:16 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 24 02:56:47 2014 +0000"
      },
      "message": "audio flinger: add patch connection between hw modules\n\nAdd support for audio device connections between different audio\nhw modules.\nThe patch is performed by creating a bridge between the playback\nthread connected to the sink device and the record thread connected\nto the source device using a pair of specialized PlaybackTrack and\nRecordTrack.\n- Added PatchTrack and PatchRecord classes.\n- Added TrackBase type to indicate more clearly the track behavior.\n- A TrackBase can allocate the buffer or reuse an existing one.\n- Factored some code in openOutput() and openInput() for internal use\nby PatchPanel.\n\nBug: 14815883.\n\nChange-Id: Ib9515fcda864610458a4bc81fa8f59096ff4d7db\n"
    },
    {
      "commit": "529c61b7e4468a3e21f302f2a92a660249daa722",
      "tree": "26133aeea97d8ea2d564a6ff0193e471c575914f",
      "parents": [
        "ada688878122d6504cccebb9121f9d4f8f701e38"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 18 15:31:02 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 18 15:32:41 2014 -0700"
      },
      "message": "Fix copy/paste bug\n\nintroduced by Change-Id: I4e9b7fa99858b488ac98a441fa70e31dbba1b865\n\nChange-Id: I9a0c8800f5cf3767cc259776f95c96cad972e392\n"
    },
    {
      "commit": "6e6704c06d61bc356e30c164081e5bcffb37920c",
      "tree": "825e014f01a7eb5a2f3282965d2a5ba9a21b4071",
      "parents": [
        "7b24ee381e806dcb53308c1cafc8a45f4e2d8300"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 03 10:20:00 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 17 12:13:05 2014 -0700"
      },
      "message": "Improve dumpsys for capture threads\n\nShow per-track sample rate, and whether there is a fast capture thread\n\nChange-Id: If6a08a40d1eeba0690aa8da3c541f845ec101b7f\n"
    },
    {
      "commit": "5e58b0abe5b6c8f5bd96a8f78bbeeeb4d3892020",
      "tree": "975ed02efce4eaefcf5b0ceb5f33d212542a33a6",
      "parents": [
        "72d039f007722c92ee5ea7ffd03ece19d2781103"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 23 19:07:29 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jul 08 21:09:13 2014 -0700"
      },
      "message": "Add floating point volume handling to AudioMixer\n\nUse floating point volume in AudioMixer mixing when floating\npoint input is used with the new mixer engine.\nAudioResampler is updated to take floating point volume to match.\nBoth legacy integer and floating point mixer engines work.\n\nFor now, integer volume is used when the new mixer engine\nruns in integer input mode, for backward compatibility with\nthe legacy mixer.  The new mixer engine will generally run in\nfloating point input mode. When the legacy path is removed,\nthe integer volumes will be removed.\n\nChange-Id: I79e80c292ae7c8b8bdd0aa371a1b2c3a1b618290\n"
    },
    {
      "commit": "3348e36c51e91e78020bcc6578eda83d97c31bec",
      "tree": "ee3df8ed9f79863fc34589813710896a7e08af86",
      "parents": [
        "075abae2a954bf3edf18ad1705c2c0f188454ae0"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 07 10:21:44 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 07 10:29:36 2014 -0700"
      },
      "message": "Replace int bitDepth with audio_format_t in Resampler\n\nRemove mBitDepth from class (not used).\nReplace with audio_format_t in factory method to distinguish\nbetween float and pcm 16-bit.\n\nChange-Id: I166860796c68285077ef4458d8758d19b82523f9\n"
    },
    {
      "commit": "ab5cdbaf65ca509681d2726aacdf3ac8bfb6b3fa",
      "tree": "0d406acdfea2d44cd430ef16ee2a25b7722e4b1d",
      "parents": [
        "29a8b2fe294a34ac7f004203426961a599e725ea"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 09 17:22:27 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 19 10:05:57 2014 -0700"
      },
      "message": "AudioTrack: add support for compressed audio\n\nAdd support for compressed audio playback by use\nof an AudioTrack attached to a direct output thread.\n\nBug: 9428304.\n\nChange-Id: I4a61be9cf0e31003ca85935d6e0ee38ca8192e03\n"
    },
    {
      "commit": "3bcffa136909c1fb6e88ee4efd12ccac18360a85",
      "tree": "6aedd2a1ead0fa545a93229fa2965477ec627de7",
      "parents": [
        "0ac53364b79dc72ee0c09f0efc46a22ab4374dbf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 12 18:38:45 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 13 08:56:56 2014 -0700"
      },
      "message": "force command flush after releasing a reference to shared memory\n\nAfter releasing a reference to a shared memory interface,\nIPCThreadState::self()-\u003eflushCommands() must be called to ensure\nthat the corresponding reference is also cleared immediately in the\nremote process. Otherwise the binder implementaiton will not\npush the clear systematically causing the memory region not to be freed.\n\nSee issues 10711502 and 2801375.\n\nBug: 14057166.\nChange-Id: If55f36f00d452d6cf00cf83bd2fba1c8f3abcb57\n"
    },
    {
      "commit": "0ac53364b79dc72ee0c09f0efc46a22ab4374dbf",
      "tree": "d2ae61d98423e9ea9ed865b7637a897f610344a1",
      "parents": [
        "421c34ef58f89f4cc39737118bb58b762e84e1c9",
        "ced6e74215937182fe2f9f6b0867f7c28ccd02c1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 11 17:10:46 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 10 22:06:31 2014 +0000"
      },
      "message": "Merge \"Fix non-monotonic AudioTrack::getTimestamp after pause\" into lmp-preview-dev"
    },
    {
      "commit": "ced6e74215937182fe2f9f6b0867f7c28ccd02c1",
      "tree": "576dcfc6d7631c817a3ecd65387e3ae64b41230a",
      "parents": [
        "0d843fdc91c98d447c3c3e357020d07b783c7bc0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 09 17:12:32 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 10 15:51:52 2014 -0700"
      },
      "message": "Fix non-monotonic AudioTrack::getTimestamp after pause\n\nBug: 15523502\nChange-Id: Ifd4aa7fca197bc041c1620fc3f7d953a8902551a\n"
    },
    {
      "commit": "c263ca0ad8b6bdf5b0693996bc5f2f5916e0cd49",
      "tree": "d513a586c518ed6f061cf446a5f2e3e18017b4f2",
      "parents": [
        "cc839bd4727be02d9352f46d043a7e9cc9c7d642"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 04 20:31:46 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 05 03:36:20 2014 +0000"
      },
      "message": "Squashed commit of the following:\n\ncommit 9128d6ffec43731d723f9b394f243d940f4c7e41\nAuthor: Glenn Kasten \u003cgkasten@google.com\u003e\nDate:   Tue May 13 10:38:42 2014 -0700\n\n    Use of fast capture by normal capture\n\n    Will only configure fast capture path if the input buffer size is less than\n    10 ms and the input sample rate is same as the primary output sample rate.\n\n    Change-Id: I4a7cdc6069d750845412c626d27e83f72a1ab397\n\ncommit 2e5e0806a5abe7499848358ef5fde5c26405000d\nAuthor: Glenn Kasten \u003cgkasten@google.com\u003e\nDate:   Mon Jun 2 08:29:22 2014 -0700\n\n    Add mPrimaryOutputSampleRate\n\n    Change-Id: I46b527fc3f2b5a5720a74b4f0b9a8f2e0d570b09\n\ncommit baf1d73467923996d1b1f2a9237260cc5697e050\nAuthor: Andy Hung \u003chunga@google.com\u003e\nDate:   Fri May 30 10:42:03 2014 -0700\n\n    Change parameter type for volume to float in AudioMixer\n\n    Change-Id: I4da1505ce852505f86f8e5b87f60e8edceeb30e0\n\ncommit 40fe20fa9760cd03c69778c2021cf7a490d75ece\nAuthor: Andy Hung \u003chunga@google.com\u003e\nDate:   Fri May 30 10:35:47 2014 -0700\n\n    Rename UNITY_GAIN to UNITY_GAIN_INT in AudioMixer\n\n    Change-Id: Ic040311305026f0b4c4280a5b3bef7a447ac1da3\n\ncommit 37c9a2b49f876abc5ff537a9ec036d7f0a423775\nAuthor: Andy Hung \u003chunga@google.com\u003e\nDate:   Thu May 29 21:33:13 2014 -0700\n\n    Refactor setVolumeRampVariables in AudioMixer\n\n    Change-Id: I8fcf3101bcea292de7c65433fa578f1c9cdd0974\n\ncommit 397070eca31f121d5d3993de1bfea99aaea5d4f3\nAuthor: Andy Hung \u003chunga@google.com\u003e\nDate:   Thu May 29 18:52:38 2014 -0700\n\n    Fix floating point output from mixer\n\n    A buffer pointer was being erroneously reset to buffer start,\n    potentially causing an audio glitch. The floating point\n    output mode is not enabled at this time, but will be in\n    the future.\n\n    Change-Id: If8b6414d232f064f3a2e2c5a6da889a91b27fb24\n\ncommit 2e61aa5b33b2247bbc5d4eaa0b519df9accd4bbc\nAuthor: Andy Hung \u003chunga@google.com\u003e\nDate:   Fri May 23 21:22:17 2014 -0700\n\n    Add multiple format capability to FastMixer\n\n    Floating point data from MixerThread into FastMixer.\n    Multiple output format capability from FastMixer to Sink.\n\n    Change-Id: I0da17810ee71381a39a006c46faec71108d22c26\n\ncommit b9ea653c702a785bbd23a66c5e588d40b4192c4e\nAuthor: Andy Hung \u003chunga@google.com\u003e\nDate:   Thu May 29 15:53:09 2014 -0700\n\n    Avoid resetting BufferProviders in mixer unnecessarily\n\n    Change-Id: Iad85c4dfd21be1dbf89dc11906106b34219376f8\n\ncommit 7f1a6d6da21c616f80cf9ba21bea11b419ec561b\nAuthor: Andy Hung \u003chunga@google.com\u003e\nDate:   Tue May 27 12:32:17 2014 -0700\n\n    Update dynamic resampler buffer fetching\n\n    Make the criteria tight for fetching to avoid storing\n    excessive frame data internal to the resampler.\n    This should reduce jitter in frame delivery computation.\n\n    Bug: 14962343\n    Change-Id: I7adaf714d11c272696ccdbf218bda994c7217477\n\ncommit b5e4aac07b9a02f0c803c090058602b03ac09ebb\nAuthor: Glenn Kasten \u003cgkasten@google.com\u003e\nDate:   Tue May 27 12:30:54 2014 -0700\n\n    Allow kFastTrackMultiplier to be specified per device\n\n    Change-Id: I4eaaaf038df720cec4f5d9221d1b632970f9e3dd\n\ncommit b93cd97a52af31122df2da2cc0415cda888c8c73\nAuthor: Andy Hung \u003chunga@google.com\u003e\nDate:   Fri May 23 21:13:31 2014 -0700\n\n    Rename mixBuffer to mMixerBuffer in FastMixer\n\n    Likewise mixBufferState becomes mMixerBufferState.\n    This harmonizes with the naming in AF::MixerThread.\n\n    Change-Id: I1255d7c07cc2c6ee925d7430925236d2bd163122\n\ncommit 8340758622b9711365a8801806cbdf934803c63f\nAuthor: Andy Hung \u003chunga@google.com\u003e\nDate:   Mon May 12 16:51:41 2014 -0700\n\n    Add multiple format capability to AudioMixer\n\n    Change-Id: I04ac1cafd90b6ed652f8d51888ad07576678f0bc\n    Signed-off-by: Andy Hung \u003chunga@google.com\u003e\n\ncommit 6b695b9d094820c232a897a3fabbe83d2b7193fe\nAuthor: Glenn Kasten \u003cgkasten@google.com\u003e\nDate:   Thu Mar 13 14:59:31 2014 -0700\n\n    Start adding FastCapture based on FastThread WIP\n\n    This version supports at most one fast capture client.\n\n    Change-Id: Idf609bfc80ae22433433d66a5232c043c65506df\n\ncommit e951ad05a2c388471d7e2806d91e7d51325a150a\nAuthor: Glenn Kasten \u003cgkasten@google.com\u003e\nDate:   Mon May 12 11:06:26 2014 -0700\n\n    Move validation of frameCount from set to openRecord_l\n\n    This move is needed because frameCount is validated on server side for\n    fast tracks (as should be done for normal tracks too).\n\n    Change-Id: I6d99e80869fd90fab373cf60ef348c01f075fbca\n\ncommit 73e76992dbba794894837c38e5472312ea829cf3\nAuthor: Glenn Kasten \u003cgkasten@google.com\u003e\nDate:   Tue May 13 10:41:52 2014 -0700\n\n    Allow track buffer \"allocation\" to be from pipe\n\n    Change-Id: Ib9ac170f8e8b7746b3588157a56cbee3b753a1cb\n\ncommit 60de1d7ded05c6304037d4858b401094b1d2b4d3\nAuthor: Andy Hung \u003chunga@google.com\u003e\nDate:   Fri May 9 15:02:21 2014 -0700\n\n    Add format parameter to getTrackName() and track_t\n\n    Change-Id: Ia152a839014e235fbfb656104c15d7c1b456d02e\n    Signed-off-by: Andy Hung \u003chunga@google.com\u003e\n\nChange-Id: Ied0ade8b25d23e89bb03319a7e3135c238f735b9\n"
    },
    {
      "commit": "e348c5b72ad889389c7c1c900c121f0fbee221b5",
      "tree": "9c77581ad7520309c0bb90f11bba766a6cd61b28",
      "parents": [
        "9382378b6b271949bdce527ea3da748c13c4c692",
        "c0bf836f8a4e34d66c10a2bb8b8cee0db04790cc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 18:47:50 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 18:47:50 2014 -0700"
      },
      "message": "resolved conflicts for merge of c0bf836f to master\n\nChange-Id: I5cf238fa56d6fff443b212870cf9dd7f1110e7da\n"
    },
    {
      "commit": "ad71caf25e31ecfc4ecf2c925e38fd87905fbc8e",
      "tree": "74b759675cdc008e10e9b4fa94344e9dd54f8868",
      "parents": [
        "acbd9492996348bf4565fbaa5a14772f0f4ace38",
        "3b6da6bfb50a1c0324fb4c87326d3a477944d5fe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 01:28:18 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 22 01:28:18 2014 +0000"
      },
      "message": "am 3b6da6bf: Merge \"Move frameworks/av off private API.\"\n\n* commit \u00273b6da6bfb50a1c0324fb4c87326d3a477944d5fe\u0027:\n  Move frameworks/av off private API.\n"
    },
    {
      "commit": "ee499291404a192b059f2e04c5afc65aa6cdd74c",
      "tree": "1c1537b599b21c331b15493f776adcbff307ac2f",
      "parents": [
        "d084206d5a4a5364211af46e4201311933e83bfc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 17:55:51 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 18:15:33 2014 -0700"
      },
      "message": "Move frameworks/av off private API.\n\nBug: 11156955\nChange-Id: Ib3bb9d66a2bf92977c2445b62aa074a2d7a45aea\n"
    },
    {
      "commit": "9382378b6b271949bdce527ea3da748c13c4c692",
      "tree": "9b20c4e7b8e8dc733937f9125cd22b4c11c046a7",
      "parents": [
        "d83062287758be57d1d0908b30bb18aa9b367f38",
        "b108091734ee7668084cc1063187c2b10ddb7bb7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 18:01:17 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 18:01:17 2014 -0700"
      },
      "message": "resolved conflicts for merge of b1080917 to master\n\nChange-Id: Iabbe3e95e29f28461ff722b550e8a9f35bd2528f\n"
    },
    {
      "commit": "acbd9492996348bf4565fbaa5a14772f0f4ace38",
      "tree": "396267d5b424f0335491e80a95920ae200b956d9",
      "parents": [
        "4c9bde7a3e636d3ecccd7905d142dbbb80e977a0",
        "d084206d5a4a5364211af46e4201311933e83bfc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 00:39:10 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 22 00:39:10 2014 +0000"
      },
      "message": "am d084206d: Merge \"Move frameworks/av off __futex_syscall3.\"\n\n* commit \u0027d084206d5a4a5364211af46e4201311933e83bfc\u0027:\n  Move frameworks/av off __futex_syscall3.\n"
    },
    {
      "commit": "77e1512aee8092069514973379a59a318e721be3",
      "tree": "875411e1d44b2cf12e99134af2d7cfb7f9acceae",
      "parents": [
        "ce473c32705e2d1c5fcc817198101e1220b3c8f7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 17:31:18 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 17:31:18 2014 -0700"
      },
      "message": "Move frameworks/av off __futex_syscall3.\n\nBug: 11156955\nChange-Id: I943080bc51b6efa781059b48b5b5ecc4fa287512\n"
    },
    {
      "commit": "b4db73d022f3de3530bc2b3c9c831ccfdd1a2ead",
      "tree": "76def5c5d352697b31806a6c0b842ef1a0bc8925",
      "parents": [
        "1e54e6dfc1bb8d33089ed8857f0f194e696f85e2",
        "e541269be94f3a1072932d51537905b120ef4733"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 19 22:06:18 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 19 22:06:18 2014 +0000"
      },
      "message": "Merge \"Use new channel count functions for audio masks\""
    },
    {
      "commit": "c56f3426099a3cf2d07ccff8886050c7fbce140f",
      "tree": "9e486a809f9d500a70fd26c4e1d2596ded190dbe",
      "parents": [
        "7c96d53a65085f42ac2b6d416cbc16fd36ed72ff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 21 17:53:17 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 19 09:46:25 2014 -0700"
      },
      "message": "Pass stereo gains as packed minifloat\n\nThis will allow (eventually) a greater dynamic range for gains.\nHowever there are still a few remaining places in effects and mixer\nthat will also need to be changed in order to get the full benefit.\n\nAlso fixes a minor bug: was not checking for NaN in AudioTrack C++.\n\nChange-Id: I63bce9e82e0a61546d8ff475fb94bcb700d99c96\n"
    },
    {
      "commit": "e541269be94f3a1072932d51537905b120ef4733",
      "tree": "39646def02d7230929eb85189f48b9193b8c23a0",
      "parents": [
        "7c96d53a65085f42ac2b6d416cbc16fd36ed72ff"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 16 11:25:07 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 16 15:05:05 2014 -0700"
      },
      "message": "Use new channel count functions for audio masks\n\nChange-Id: Ia658ab4b6320d19fdb50f123c930918724ff0ef3\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "deb9081a61b446dbe50461082974a4228899f178",
      "tree": "c33345fcecaed0e76e22173f5ca1fdfe8286b028",
      "parents": [
        "cbe6fddebe3ec84176037de7f9681d2407fa1113",
        "755b0a611f539dfa49e88aac592a938427c7e1b8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 14 15:06:00 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 14 15:06:01 2014 +0000"
      },
      "message": "Merge \"Pull up mFlags and isFastTrack from Track to TrackBase\""
    },
    {
      "commit": "755b0a611f539dfa49e88aac592a938427c7e1b8",
      "tree": "ae3e77f36be2bf2b98bd06ec71b458d29b50c867",
      "parents": [
        "5b17c0b5b418c340d3e5201a72ee8c88c1755355"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 13 11:30:28 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue May 13 13:26:35 2014 -0700"
      },
      "message": "Pull up mFlags and isFastTrack from Track to TrackBase\n\nChange-Id: I6bd48292310be4e05758a11f617f50585904422d\n"
    },
    {
      "commit": "021cf9634ab09c0753a40b7c9ef4ba603be5c3da",
      "tree": "03fb2a864179983e482cae4dac6a502a6dcef136",
      "parents": [
        "aa0315f9fdcf99e84a969a4f81192150ddaef260"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 13 10:18:14 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 13 13:09:17 2014 -0700"
      },
      "message": "AudioFlinger: add specific mutex for client lists\n\nAdd a specific mutex to protect access to mClients and\nmNotificationClients lists. This avoids locking the main AudioFlinger\nmutex from inside thread loops and allows not to worry about\ncross deadlocks when sending a config event with status reply while\nkeeping the ThreadBase or AudioFlinger mutex locked.\nAs a way of consequence, remove notification client list passed to\nprocessConfigEvents_l() and audioConfigChanged() as the list\ncan now be accessed by locking client mutex only.\n\nChange-Id: I228022204b6709a8bb60cc96d9514a6ffe59b62e\n"
    },
    {
      "commit": "fe9570c7b937b49d3603ccb394aed732b79bc6be",
      "tree": "9bc651997eec71010c91543e390472a6f155f775",
      "parents": [
        "16821ec9e1619f4edcc87f21ea1537580109b14d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 07 08:42:25 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 09 16:15:49 2014 -0700"
      },
      "message": "Remove obsolete IAudioRecord::getCblk()\n\nChange-Id: Id20b5efd765b9796b0e391610e06dc928a829ebf\n"
    },
    {
      "commit": "d776ac63ce9c013c9626226e43f7db606e035838",
      "tree": "f75ca450359caa5a69b4124399d19d0522046826",
      "parents": [
        "0c5b910e6eb2b9b2a622ccc0dd66e8fcae3eb28b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 07 09:16:09 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 09 11:32:43 2014 -0700"
      },
      "message": "IAudioFlinger::openRecord returns IMemory(s)\n\nopenRecord() now explicitly returns the control block and data buffer\nas separate IMemory references.  If the IMemory for data buffer\nis 0, this means it immediately follows the control block.\n\nChange-Id: Ic098f88f0e037f8fbe30006689e18cacacf09d06\n"
    },
    {
      "commit": "1a7be1ec9c769203e6c8e26378de0ab8e2ad493d",
      "tree": "68773b199cc4adcb96124270863244477570c78e",
      "parents": [
        "f131f87369ec06fc27fc1f14ea72f0ca1a066509",
        "91820d46b5f3065c2fded3cdf65d305715b33bb1"
      ],
      "author": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Tue Apr 29 11:34:16 2014 -0700"
      },
      "committer": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Tue Apr 29 11:34:16 2014 -0700"
      },
      "message": "Merge commit \u002791820d46b5f3065c2fded3cdf65d305715b33bb1\u0027 into HEAD\n"
    },
    {
      "commit": "1b24cf32e02a1372e57b3a2a432bc0adfe496e6d",
      "tree": "220f4583ae1081df62fa5c861eed3e9e90a24515",
      "parents": [
        "4845b69f70ff457be8d8908f6eb61e2af67e00d3",
        "e80631aa1992ca50af679cd6a018c0ffda7f9b17"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Apr 15 23:37:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 15 23:37:19 2014 +0000"
      },
      "message": "am e80631aa: am 839d11d1: Merge changes I0a744dc7,Id993a70d\n\n* commit \u0027e80631aa1992ca50af679cd6a018c0ffda7f9b17\u0027:\n  media: use size_t for integer iterator to Vector::size()\n  media: 64 bit compile issues\n"
    },
    {
      "commit": "e80631aa1992ca50af679cd6a018c0ffda7f9b17",
      "tree": "6b3fcc9fbb5b02976e4bb2163e994952303bead5",
      "parents": [
        "d4a3cae8cc4cf924925ae57723e61c89f6c4fd51",
        "839d11d1f7be9dff2f06c7d30a9eb39cb6782078"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Apr 15 22:35:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 15 22:35:00 2014 +0000"
      },
      "message": "am 839d11d1: Merge changes I0a744dc7,Id993a70d\n\n* commit \u0027839d11d1f7be9dff2f06c7d30a9eb39cb6782078\u0027:\n  media: use size_t for integer iterator to Vector::size()\n  media: 64 bit compile issues\n"
    },
    {
      "commit": "3ab368e0810d894dcbc0971350c095049478a055",
      "tree": "a50053c391da8c02797158395f2ecfec83218855",
      "parents": [
        "db43b34c3428e480f8c4c66e7e88f4001f37f91e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Apr 15 14:55:53 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Apr 15 14:57:31 2014 -0700"
      },
      "message": "media: use size_t for integer iterator to Vector::size()\n\nChange-Id: I0a744dc7815a86a993df9b0623440be620ec8903\n"
    },
    {
      "commit": "adad3d7d935da176ff24941b4ae9edf7340e9b96",
      "tree": "7a8a2f8e31c7dd690805c1cfd9982d218c66296b",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 21 14:51:43 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 14:46:28 2014 -0700"
      },
      "message": "Use LOG_ALWAYS_FATAL instead of LOG_FATAL\n\nLOG_FATAL is compiled out in most builds, so the\nassertion checks were not being performed.\n\nChange-Id: I774f0985ab9c5ccecd8989a0f1c940386b73fc35\n"
    },
    {
      "commit": "2d3ca68363f723fbe269d3ce52dab4985dfc7154",
      "tree": "c1f8c7bbae0e128158ce90a9985d0219dd719182",
      "parents": [
        "164985121796cf214c7a83d32005d9b01125b558"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Fri Mar 07 13:43:49 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 17 18:32:07 2014 -0700"
      },
      "message": "audioflinger: OffloadThread fix for resume underrun\n\nAudioFlinger can miss resuming h/w on a pause-\u003eresume transition\nif sufficient data isn\u0027t available\n\nBug: 11358524.\nChange-Id: Ic3c75256290d3515fd4a96dfcc900909fbe5bc15\n"
    },
    {
      "commit": "164985121796cf214c7a83d32005d9b01125b558",
      "tree": "5e84c9a2511f94338b116962ef4eb7ba5903b708",
      "parents": [
        "8d6c292a0bed3d63b5b7297d09a604af6327c663"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 17 17:22:08 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 17 18:31:43 2014 -0700"
      },
      "message": "AudioFlinger: Change track ready condition in STOPPING_1 state\n\nSet FS_FILLED only if framesReady() \u003e 0\n\nChange-Id: Ibb1d2e988ff17fcf3a7ab61031a3f85df82f18d5\n"
    },
    {
      "commit": "8d6c292a0bed3d63b5b7297d09a604af6327c663",
      "tree": "344c2297ed00e1e10998490bc4e2f00358536133",
      "parents": [
        "9ff25ced1404c896df9e6ed3a6ad289305559361"
      ],
      "author": {
        "name": "Krishnankutty Kolathappilly",
        "email": "kkolat@codeaurora.org",
        "time": "Tue Feb 04 16:23:42 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 17 18:30:13 2014 -0700"
      },
      "message": "audioflinger: Handle pause /resume in stopping state\n\n-Pre-requisite:\n Perform seek on the clip. After seek the data remaining till EOS\n is little more than the driver and common block buffering.\n-Framework state:\n Offload thread is waiting for signal from the HAL for a free\n buffer. Audio Player calls sink stop on reaching EOS. Audio\n track is waiting on obtain buffer for a free space in common\n block to send the last buffer. The track is moved to stopping\n state as input EOS is reached.\n-Issue:\n Perform pause/ resume in this state(STOPPING), Audio playback\n does not resume.\n-Fix\n Ensure resume is called in stopping state if frames ready is\n greater than zero.\n\nBug: 12870871\n\nChange-Id: Ib1378c4ee5ce4bea655691e93de0775f7b1d2804\nSigned-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n"
    },
    {
      "commit": "3ef14ef30359376006a233f6a21a165d4b65a7df",
      "tree": "78947d5e8dee6f3942fdc7891dd40777b21dd7de",
      "parents": [
        "15e5798908ccac14e10c84834eaf08c42931bd06"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 13 15:08:51 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 14 14:49:37 2014 -0700"
      },
      "message": "Make error handling more similar for output and capture\n\nAnd simplify error case\n\nChange-Id: I0bb1ec252945d672cc4cef137977b912f1b23d51\n"
    },
    {
      "commit": "05997e21af6c4517f375def6563af4b9ebe95f39",
      "tree": "6a0892e14e34751cd10e11f6f73e92401f540505",
      "parents": [
        "0e0e846f3d86906ff990025981e514d6bcf44d8e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 13 15:08:33 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 14 14:49:36 2014 -0700"
      },
      "message": "Whitespace and comments\n\nChange-Id: I99752cca74a459c4746ea4718acb0115439e50bd\n"
    },
    {
      "commit": "e857b65c1d3aa055281cb48f59c9b5eb4a062dd0",
      "tree": "9d0780a2aebbb8839ec74fe16b1b868e6d45e3e9",
      "parents": [
        "ce9be73c7e7f379d68e1a0d0210a6f7b9418269f",
        "3c9130a8a12ce962dc8d22e04243b135b9e98b01"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 07 02:26:36 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 07 02:26:36 2014 +0000"
      },
      "message": "am 3c9130a8: Merge \"Make frameworks/av 64-bit compatible\"\n\n* commit \u00273c9130a8a12ce962dc8d22e04243b135b9e98b01\u0027:\n  Make frameworks/av 64-bit compatible\n"
    },
    {
      "commit": "0504a198d6595e29e58d1d66ae59fac1d662384a",
      "tree": "3fad07457b2212da593c80bd278cb7660ce53d6a",
      "parents": [
        "d384a2c44810ce1b51277cc4ab4c5415ff7de6ee",
        "632c3790523896260dc43fd6cd40a158765cdb15"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Mar 05 20:01:14 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 05 20:01:14 2014 +0000"
      },
      "message": "am 632c3790: am 7c206e5b: am e0cd1051: audioflinger: update track ready condition\n\n* commit \u0027632c3790523896260dc43fd6cd40a158765cdb15\u0027:\n  audioflinger: update track ready condition\n"
    },
    {
      "commit": "e0cd1051ed9fea0629745c29020516ae62298461",
      "tree": "03273a98e8fc21f916bd0de1163913c51171b953",
      "parents": [
        "e010f65e6337267cb15f8894c950a3f64370dd36"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Fri Dec 27 16:09:28 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 04 15:58:25 2014 -0800"
      },
      "message": "audioflinger: update track ready condition\n\nSignal track ready if the track isStopping().\n\nBug: 12423190\nChange-Id: I95e14905df10ebf301e398263478c8ca25d7e2ce\n"
    },
    {
      "commit": "25f4aa83efaa9179e65a20583a6d441de2c3ff3f",
      "tree": "996653f52a07bb6dc99d058943f852f3182ea637",
      "parents": [
        "deca2ae0a7cf8bc54ff3f30b7dc39bbc78b94c0d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 07 10:50:43 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 12:56:13 2014 -0800"
      },
      "message": "Move handleSyncStartEvent and clearSyncStartEvent to RecordTrack\n\nChange-Id: I611a63e63acf3eb17e2072c1a77b91fe9e62e36a\n"
    },
    {
      "commit": "6dd62fb91d82dedcfa3ab38c02eb0940b4ba932a",
      "tree": "5c463a944686864894c2be528a52df9d275dd221",
      "parents": [
        "f3b785ae6ea135115b54ac58cedc12b444483902"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 05 16:35:58 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 12:52:35 2014 -0800"
      },
      "message": "Multi-client recording\n\nSupports multiple clients both at native sample rate and with resampling.\n\nChange-Id: Icea55b4fd30751761b7debaa3ce016c79e712d8d\n"
    },
    {
      "commit": "1d6fa7af1288b550faabe4ec2cf98684236723db",
      "tree": "a8801ca9a0925ba1faccf17acea4aa78d71a9d29",
      "parents": [
        "b82a9f105f89d6b3684c9f626918042bd8977912",
        "566be7c33fc56ae4c34168ecbee5316374f7e3c5"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 13:47:53 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 13:53:20 2014 +0000"
      },
      "message": "resolved conflicts for merge of 566be7c3 to master\n\nChange-Id: I7b1cc71057b2bd4f771e7bcf508a8c3abd6017ce\n"
    },
    {
      "commit": "377b2ec9a2885f9b6405b07ba900a9e3f4349c38",
      "tree": "b938e1d75a1beefae86244f287ca22f4a277740d",
      "parents": [
        "cdda7bf4d3ca9cad6979374a18dd5be79ea83d80"
      ],
      "author": {
        "name": "Kévin PETIT",
        "email": "kevin.petit@arm.com",
        "time": "Mon Feb 03 12:35:36 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 11:40:06 2014 +0000"
      },
      "message": "Make frameworks/av 64-bit compatible\n\nContains the necessary changes to make frameworks/av build and work\non a 64-bit machine.\n\nSigned-off-by: Craig Barber \u003ccraig.barber@arm.com\u003e\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\n\nChange-Id: I725feaae50ed8eee25ca2c947cf15aee1f395c43\n"
    },
    {
      "commit": "9601c6efcb2552960d6f125d073525b581c1b7ec",
      "tree": "3f01719f2e687abdb58e0405413766ce25f6f362",
      "parents": [
        "e175d77bb610675ba2f70f24449189995ddeaf5b",
        "b220884bf3129253cc5bc8d030bc475411ea4911"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Feb 10 17:14:09 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 10 17:14:09 2014 +0000"
      },
      "message": "Merge \"Pretty up audioflinger dumpsys\""
    },
    {
      "commit": "b220884bf3129253cc5bc8d030bc475411ea4911",
      "tree": "def105f8d0928679900588536f8b1911c3d179fa",
      "parents": [
        "bbbb1e80f461616cd9814de125f95f5b89cf5870"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 07 14:00:50 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Feb 10 08:01:14 2014 -0800"
      },
      "message": "Pretty up audioflinger dumpsys\n\nChange-Id: I57e44b4c36b99f7149542bbcf9645521c6152dfa\n"
    },
    {
      "commit": "8f762d577f2dcf34357eb8731070ae465649ec9a",
      "tree": "dd74d379fd4067025aae50732e5964904132e903",
      "parents": [
        "bbbb1e80f461616cd9814de125f95f5b89cf5870",
        "4944acb7355b3aa25748fd25945a363a69d65444"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 07 23:36:33 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 07 23:36:34 2014 +0000"
      },
      "message": "Merge \"Fix whitespace\""
    },
    {
      "commit": "a793625031a3e326a261a0843598c35a5784bbde",
      "tree": "f18a01ac2ead0114a2a46783b3ef79a013fb85e7",
      "parents": [
        "19f420ea68424a608e982d39ab76676a05337685",
        "6e0d67d7b496ce17c0970a4ffd3a6f808860949c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 07 20:49:21 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 07 20:49:22 2014 +0000"
      },
      "message": "Merge \"Use Format_isValid() and Format_isEqual() instead of direct comparison\""
    },
    {
      "commit": "4944acb7355b3aa25748fd25945a363a69d65444",
      "tree": "009b66c5edcb85e6974ee9462919fd72fba381c5",
      "parents": [
        "f74f213c0cd0612101e00a73704429dac1a92fe3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 19 08:39:20 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 07 11:22:31 2014 -0800"
      },
      "message": "Fix whitespace\n\nChange-Id: I9add0872030a26933f6b6dad1be299154611cc56\n"
    },
    {
      "commit": "7844f679be8d94c5cdf017f53754cb68ee2f00da",
      "tree": "60b91c8d8d95f49d98b1c35110b6f4fe5498cb62",
      "parents": [
        "0f02f265123b7ef2fd6ac09ff70cde26eb5559ad"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Jan 15 12:32:55 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 06 11:48:22 2014 -0800"
      },
      "message": "AudioFlinger: Modify flush handling for offload path\n\nDo not allow an offload track to directly control the offload thread\nbehavior. OffloadThread can check for any pending flush reporting\nby its active tracks and decide to flush the HW or not.\n\nBug: 12530661\nChange-Id: Ib33f023c942f6c091b618004136b153c38a6eef6\n"
    },
    {
      "commit": "6e0d67d7b496ce17c0970a4ffd3a6f808860949c",
      "tree": "e9d0c68908bcbbcb3eb5ef28b2b2c0db5488fa39",
      "parents": [
        "cc1e0e807ee9a9f163a4685cbd6efd6ae55849cf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 09:41:08 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 17:10:57 2014 -0800"
      },
      "message": "Use Format_isValid() and Format_isEqual() instead of direct comparison\n\nChange-Id: Ie87607aa514976947540a77775e6425c4e56e7d9\n"
    },
    {
      "commit": "0f11b51a57bc9062c4fe8af73747319cedabc5d6",
      "tree": "3a9156d700b18a53f856ac8ae51a44604af36fe1",
      "parents": [
        "0520e05f9083cf13fa7062629bc6606f4b39f08a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 16:18:54 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 07:48:43 2014 -0800"
      },
      "message": "Fix unused parameter warnings in audio\n\nChange-Id: I665ba3358dd9502f0adec70d486e7bf8a2e1b0fe\n"
    },
    {
      "commit": "f0002d142e6d24c5438600b2c259679de710f8ac",
      "tree": "20e5013fa14f2d5339868c1b08396f7b852a2123",
      "parents": [
        "c69b91ceae6255e41c5413796fb0ed4f7af45b15",
        "74935e44734c1ec235c2b6677db3e0dbefa5ddb8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 24 16:13:50 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 24 16:13:51 2014 +0000"
      },
      "message": "Merge \"Replace control block frameCount_ by explicit in/out parameter\""
    },
    {
      "commit": "0bcfa88149e2404b34d13c622e3921e1b846cdf8",
      "tree": "67d09151548315f58bda189ed8a6cc0ab75daff1",
      "parents": [
        "3f65a84030c2ae95d72a9458ebfbb6d14e96daf5"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Fri Dec 27 16:09:28 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 08 13:54:53 2014 -0800"
      },
      "message": "audioflinger: update track ready condition\n\nSignal track ready if the track isStopping().\n\nBug: 12423190\nChange-Id: Ie279995d5f90fa8211a20dfbeacc1cf9b921d0bf\n"
    },
    {
      "commit": "74935e44734c1ec235c2b6677db3e0dbefa5ddb8",
      "tree": "dc7bc2c9f496097e95ff36440fcd79886517ba53",
      "parents": [
        "bd72d22097f78f5bd668b223bc8c94e351311e31"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 19 08:56:45 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 20 08:40:55 2013 -0800"
      },
      "message": "Replace control block frameCount_ by explicit in/out parameter\n\nin IAudioFlinger::createTrack and IAudioFlinger::openRecord\n\nChange-Id: I09c644c80e92c8e744b1b99055988a2588b2a83d\n"
    },
    {
      "commit": "663c2247b71086e30bfd3192979d1dd7f15c539e",
      "tree": "caedda5629d70de2fcab7506a81852e6c62ea473",
      "parents": [
        "30ff92cba19c5acd747631365db1e1084e45ab34"
      ],
      "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": "Wed Nov 20 14:17:01 2013 -0800"
      },
      "message": "Consistent error checking for sp\u003cIMemory\u003e and pointer()\n\nThere have been concerns that an sp\u003cIMemory\u003e could be non-0, but the\nassociated pointer() still be NULL.  There are rumors this may happen\nwhen a non-0 sp\u003cIMemory\u003e is passed in by client but the shared memory cannot\nbe re-mapped into mediaserver.\n\nThere\u0027s also evidence in the early (2009/03/03) pre-git code of checking\npointer() for NULL, after a local allocate() returned a non-0 sp\u003cIMemory\u003e.\nIt\u0027s not clear if this is \"cargo cult\" paranoia, or if there was a\ngenuine reason for the check.\n\nIn any case, we now consistently check pointer() for sp\u003cIMemory\u003e\ninput parameters in createTrack() and queueTimedBuffer().\n\nWe also check after successful allocate().  If allocate() returns a\nnon-0 sp\u003c\u003e but NULL pointer(), then treat it as if the allocate() had\nreturned 0.\n\nChange-Id: I3013ac5766b493d443ecef71711ec861076a623e\n"
    },
    {
      "commit": "30ff92cba19c5acd747631365db1e1084e45ab34",
      "tree": "529f382c59fc9f686e1ec49b279bdaf6303af1d1",
      "parents": [
        "7ae751960d8b31e6e301c18122d1146da8fe5983"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 20 11:57:08 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 20 14:02:40 2013 -0800"
      },
      "message": "Code simplification for timed allocate\n\nChange-Id: I5acccd7418c5b4a4dc0112147c750fef9f74bf33\n"
    },
    {
      "commit": "1fc6cb5be26734938b3999e6bf4ce0e625e7d284",
      "tree": "ceca20e265134ebd5158b56d9341301ffd4242cc",
      "parents": [
        "d21952fe5bc94f7bb6ee729f806c0e641fdb1a0d",
        "ce275b7dd20e3d4781a46126c753e6eb998e6c0f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 29 18:20:38 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 29 18:20:38 2013 -0700"
      },
      "message": "am ce275b7d: am 1c594b63: Merge \"audioflinger: enable effects after registration if needed\" into klp-dev\n\n* commit \u0027ce275b7dd20e3d4781a46126c753e6eb998e6c0f\u0027:\n  audioflinger: enable effects after registration if needed\n"
    },
    {
      "commit": "1c594b637df26499ce1dae2db34f2b3290efd838",
      "tree": "0d231e939a18d3f28f1e19658a7b7ed2e61ed1fb",
      "parents": [
        "fd4779740ec3e9e865d5514464df26d015354388",
        "d72b7c0180ee83fc3754629ed68fc5887a125c4c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 30 01:13:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 30 01:13:52 2013 +0000"
      },
      "message": "Merge \"audioflinger: enable effects after registration if needed\" into klp-dev"
    },
    {
      "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": "462fd2fa9eef642b0574aa7409de0bde3fec8d43",
      "tree": "65446a138d197f062bf199480b96cca4df560fcf",
      "parents": [
        "f7d89bd79d170be3b299717ac11aff62909314c5"
      ],
      "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 11:13:17 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\nChange-Id: I7329f88a288a95a582a78005a1c3d16a5a611e31\n"
    },
    {
      "commit": "a153b68f2260a8ed7fbb236fa659b13264ac5ac0",
      "tree": "fde0bd5a83da59bde7dc9b146a8a8af48d911adc",
      "parents": [
        "6a7327f110b86613e6e8c7de105c49803acacc1d",
        "77177fa20773d02b4f9c4147ecb98107f019fa7d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 18 15:09:03 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 18 15:09:03 2013 -0700"
      },
      "message": "am 77177fa2: am 95c03858: Merge \"Allow releaseBuffer after flush\" into klp-dev\n\n* commit \u002777177fa20773d02b4f9c4147ecb98107f019fa7d\u0027:\n  Allow releaseBuffer after flush\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": "9138d32050411c04cc45c25094352cf8b6e01df9",
      "tree": "47baaae0e9ea8f737c8ce1af5a52e3872432df70",
      "parents": [
        "653edc77815c76769b6ac1871add6f47a95d1dc5",
        "e45796dee9c072cdb13a00b407e68be2cd55e2f2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 17 16:23:39 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 17 16:23:39 2013 -0700"
      },
      "message": "am e45796de: am dedc7b0f: Merge \"Fix flush() followed by start()\" into klp-dev\n\n* commit \u0027e45796dee9c072cdb13a00b407e68be2cd55e2f2\u0027:\n  Fix flush() followed by start()\n"
    },
    {
      "commit": "12022ff8d223ccf4dfae019c81e4a93a3f44985c",
      "tree": "ba799e32b0699249e7fb8e6f5d6fa4120b978d67",
      "parents": [
        "f8f15b05fe051009945c9042a1a9260280e0feb2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 17 11:32:39 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 17 11:33:31 2013 -0700"
      },
      "message": "Fix flush() followed by start()\n\nBug: 11259166\nChange-Id: I72526cdfd4e3ff4b06e6a317e577f57cc285205d\n"
    },
    {
      "commit": "d72b7c0180ee83fc3754629ed68fc5887a125c4c",
      "tree": "9c6bef31eaca96d7420a65fcdd2438666c5668dd",
      "parents": [
        "15ad2470b2f2ac34473eb568b606ad75e8e63ac6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Oct 12 16:17:46 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Oct 12 16:37:00 2013 -0700"
      },
      "message": "audioflinger: enable effects after registration if needed\n\nThis fixes a bug where effects were not properly reenabled after\nbeing moved from one playback thread to another. The effect\nis enabled but the audio policy manager sees it as disabled.\n\nBug: 11181933.\nChange-Id: I19cac7acbaf61c546e667fd85ed7d4eda1c716d8\n"
    },
    {
      "commit": "34717c83733def81287e2b4ba2f62b416325c7ae",
      "tree": "bdc06557b16690a491298f6a73653bae249a6c84",
      "parents": [
        "cff0d41463dfa0bcb33805794f1341d029e86f04",
        "3424d6e17637e0743ddf3bf4688af8ee36e69264"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 01 20:58:58 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 01 20:58:58 2013 -0700"
      },
      "message": "am 3424d6e1: am 1adf20ce: Merge \"fix volume and effect enable delay on offloaded tracks\" into klp-dev\n\n* commit \u00273424d6e17637e0743ddf3bf4688af8ee36e69264\u0027:\n  fix volume and effect enable delay on offloaded tracks\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": "0230a2a8a413076a138db4c4e1dea018104fd5e2",
      "tree": "1d78509ed7b005fe0bc3a998c8eda13a93f65876",
      "parents": [
        "d2b80a1fb90cb4dc3f569e716af0279c1e1ea72d",
        "c6bed216e3a759a855ac4b9b743fbaed2d5929c1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 11:22:17 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 20 11:22:17 2013 -0700"
      },
      "message": "am c6bed216: am a3b97ad2: Merge \"audioflinger: implement getTimestamp() for offloaded tracks\" into klp-dev\n\n* commit \u0027c6bed216e3a759a855ac4b9b743fbaed2d5929c1\u0027:\n  audioflinger: implement getTimestamp() for offloaded tracks\n"
    },
    {
      "commit": "d2b80a1fb90cb4dc3f569e716af0279c1e1ea72d",
      "tree": "9094262e799f5ff66acd45a0bae59a7de863349c",
      "parents": [
        "bd1be321f7d3626305c1c6d0b006768b5130fedd",
        "ce3e7cb0bd09e7861d417b7d45c1e5921f10a93f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 11:20:56 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 20 11:20:56 2013 -0700"
      },
      "message": "am ce3e7cb0: am fbb2609f: Merge \"audioflinger: fix lost offload thread resume event\" into klp-dev\n\n* commit \u0027ce3e7cb0bd09e7861d417b7d45c1e5921f10a93f\u0027:\n  audioflinger: fix lost offload thread resume event\n"
    },
    {
      "commit": "a3b97ad288e6808c54c6275eaac1bd53108d8f11",
      "tree": "eb4ee28ecd01cf4a4548004e8a2d9154ce0f2c73",
      "parents": [
        "fbb2609f132f23a983d376dec9ae6bfebfcacc4c",
        "accc147666bfd37fc8b4ef745f18a8c751555ec2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 16:56:33 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 20 16:56:34 2013 +0000"
      },
      "message": "Merge \"audioflinger: implement getTimestamp() for offloaded tracks\" into klp-dev"
    },
    {
      "commit": "accc147666bfd37fc8b4ef745f18a8c751555ec2",
      "tree": "a091aa566ed09e8efe881a16e3806ee4169de3f0",
      "parents": [
        "5baf2af52cd186633b7173196c1e4a4cd3435f22"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 09:36:34 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 09:36:34 2013 -0700"
      },
      "message": "audioflinger: implement getTimestamp() for offloaded tracks\n\nBug: 9587132.\nChange-Id: Ie9d5f4cca96306d08bc9a2dbd6edd8953096702d\n"
    },
    {
      "commit": "ede6c3b8b1147bc425f7b923882f559a513fe23b",
      "tree": "ac3986f0521aa4a5af705299ab423ec9d5e98bfa",
      "parents": [
        "5baf2af52cd186633b7173196c1e4a4cd3435f22"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 19 14:37:46 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 19 15:53:20 2013 -0700"
      },
      "message": "audioflinger: fix lost offload thread resume event\n\nIt was possible that a resume request signaled by addTrack_l()\nwhile waiting for an async write callback is lost. This is because\nmSignalPending was not set and waitingAsyncCallback_l() would pause the\nthread loop before executing prepareTracks_l().\n\nThe fix consists in using signal_l() method to wake the thread\nloop o that mSignalPending is set.\n\nAlso make sure that sleepTime is reset to 0 when resuming to make sure\nthat we write any remaining bytes to the HAL.\n\nBug: 10810347.\n\nChange-Id: If9a3b22cc3b9e6eb384a56c48c40e6258d0896ad\n"
    },
    {
      "commit": "dc8cae8c118e4aef4ef1f7b2c6f79becc1df4a05",
      "tree": "ea0f76bad13db737ca85146367304b3397a111a3",
      "parents": [
        "b81332964f2f3fb83f056b539a4eeea245bb7999",
        "bf5e23979a03da96ce1d63126c480103232f174b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 18 14:26:49 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 18 14:26:49 2013 -0700"
      },
      "message": "am bf5e2397: am 5baf2af5: more support for audio effect offload\n\n* commit \u0027bf5e23979a03da96ce1d63126c480103232f174b\u0027:\n  more support for audio effect offload\n"
    },
    {
      "commit": "5baf2af52cd186633b7173196c1e4a4cd3435f22",
      "tree": "9c6752456812c4a927574a71e1d2ec2495ff6ce3",
      "parents": [
        "9a98b6de791aeb130192df10744f5b35f8b6ef1a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 12 17:37:00 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 18 11:52:40 2013 -0700"
      },
      "message": "more support for audio effect offload\n\nOffloading of audio effects is now enabled for offloaded\noutput threads. If an effect not supporting offload is enabled,\nthe AudioTrack is invalidated so that it can be recreated in PCM\nmode.\n\nFix some issues in effect proxy related to handling of effect\ncommands to offloaded and non offloaded effects.\n\nAlso fixed a bug on capture index in software Visualizer effect.\n\nBug: 8174034.\n\nChange-Id: Ib23d3c2d5a652361b0aaec7faee09102f2b18fce\n"
    },
    {
      "commit": "d455cdfad40ca0558b8f4f800ec192027e272c14",
      "tree": "611c503995f513534951637d07c82ac9c4053236",
      "parents": [
        "fb61216af1971be53222eaf818ab272798c05359",
        "c91eb6059a6af8b84c48e0ce727b01829f9cd789"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 13 17:31:47 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 13 17:31:47 2013 -0700"
      },
      "message": "am c91eb605: am 972a173d: audioflinger: longer offload thread standby delay\n\n* commit \u0027c91eb6059a6af8b84c48e0ce727b01829f9cd789\u0027:\n  audioflinger: longer offload thread standby delay\n"
    },
    {
      "commit": "972a173d7d1de1a3b5a617aae3e2abb6e05ae02d",
      "tree": "f506c9ef80a8a31bfd58a254617fdecb26dbbcf5",
      "parents": [
        "99bf6267f0a4e2c3153be49ced59ae164d55ea6d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 04 09:42:59 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 13 12:14:07 2013 -0700"
      },
      "message": "audioflinger: longer offload thread standby delay\n\n- Increase offloaded output thread standby delay to 1 second\nto allow transition between tracks with going to stanby\nif reusing the same audio track (gapless)\n\n- Make sure pause/flush/resume sequence is sent to the HAL\nin the right order\n\n- Fix format display in track dump\n\nBug: 8174034.\nChange-Id: I43ef6f8fdbf7427e4eff6cc2d0665d7d1463ea8a\n"
    },
    {
      "commit": "f523897787b64cf2217d0ab4946b564420c675fe",
      "tree": "bf4361fd297eabb324294ce8e30e95b50176a85e",
      "parents": [
        "d5577f26de1ae3a0dc6fbea9c60a07d585f894bf",
        "8a220740cd77eb844123d3914190a94513797b40"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Sep 12 09:21:43 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 12 09:21:43 2013 -0700"
      },
      "message": "am 8a220740: am dc33c542: Merge \"Fix AudioTrack shared memory leak\" into klp-dev\n\n* commit \u00278a220740cd77eb844123d3914190a94513797b40\u0027:\n  Fix AudioTrack shared memory leak\n"
    },
    {
      "commit": "dc33c542351449ceee95cc50a9009f495e7c72ba",
      "tree": "0f44c9770a45605876de1e051801bee5781a56ad",
      "parents": [
        "efc4d4899e03fb8464017dd48539106cec2163de",
        "0c72b24f91c68442eb374bd1b338c394105b8262"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Sep 12 15:13:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 12 15:13:45 2013 +0000"
      },
      "message": "Merge \"Fix AudioTrack shared memory leak\" into klp-dev"
    },
    {
      "commit": "d5577f26de1ae3a0dc6fbea9c60a07d585f894bf",
      "tree": "9f39de6f98f3955cbd94ac2f9a66f36165847234",
      "parents": [
        "0fc610ade6ecd2cec75df4b9d91ed3298601400a",
        "4823964d198228289ff21530bf8b01bb2ef196bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 11 17:25:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 11 17:25:02 2013 -0700"
      },
      "message": "am 4823964d: am efc4d489: Merge \"audioflinger: add HOTWORD audio source.\" into klp-dev\n\n* commit \u00274823964d198228289ff21530bf8b01bb2ef196bb\u0027:\n  audioflinger: add HOTWORD audio source.\n"
    },
    {
      "commit": "efc4d4899e03fb8464017dd48539106cec2163de",
      "tree": "40e6503137bc0720b515c05b2d39771d1d25c7c7",
      "parents": [
        "a911f51c21430ac92f1d796b2338878fd98382e9",
        "9a54bc27876acd5d8be5b1fc3dc46701fe76fbb3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 12 00:15:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 12 00:15:15 2013 +0000"
      },
      "message": "Merge \"audioflinger: add HOTWORD audio source.\" into klp-dev"
    },
    {
      "commit": "0c72b24f91c68442eb374bd1b338c394105b8262",
      "tree": "d5b7396b593f2157fead8f0c5c41d45c1c236009",
      "parents": [
        "6220f993541b0317e6ace3c410dd35a8d76e30bc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 11 09:14:16 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 11 12:47:29 2013 -0700"
      },
      "message": "Fix AudioTrack shared memory leak\n\nBug: 2801375\nChange-Id: I50e15164fe310f69ea019dca5b49171a02bc6992\n"
    },
    {
      "commit": "9a54bc27876acd5d8be5b1fc3dc46701fe76fbb3",
      "tree": "15f25097fc7fc2548d41a29c94c22710472f01ca",
      "parents": [
        "84b7fb0c88ddd05ed7c148c82fe1691040a9404d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 09 09:08:44 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 10 14:39:28 2013 -0700"
      },
      "message": "audioflinger: add HOTWORD audio source.\n\nHOTWORD is a special capture audio source that uses\nthe same audio tuning as VOICE_RECOGNITION but allows an\nactive capture to be preempted.\n\nBug: 10640877.\n\nChange-Id: Iea09a11cbcdbacc8d434e5230e7559dcd1b44ac0\n"
    },
    {
      "commit": "8136cfae9c22ae8ff42eec9ed751833dda605444",
      "tree": "b6e71058c48bcdd37046ddfa60e3da80b5cc1015",
      "parents": [
        "a041f2fce87fa7a0926365d8e8fbc66019ac0661",
        "8a910716892d17a2ac62c7e9884af0e9d75b26bc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 09 14:29:08 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 09 14:29:08 2013 -0700"
      },
      "message": "am 8a910716: am 6ca83fad: Merge \"audioflinger: no effects on offloaded tracks\" into klp-dev\n\n* commit \u00278a910716892d17a2ac62c7e9884af0e9d75b26bc\u0027:\n  audioflinger: no effects on offloaded tracks\n"
    },
    {
      "commit": "813e2a74853bde19e37d878c596a044b3f299efc",
      "tree": "b95aa8b59f49b4348b2112047ee80e572637d706",
      "parents": [
        "84b7fb0c88ddd05ed7c148c82fe1691040a9404d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Aug 31 12:59:48 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 09 09:09:21 2013 -0700"
      },
      "message": "audioflinger: no effects on offloaded tracks\n\nInvalidate offloaded tracks when an effect is enabled\nso that the track is recreated in PCM mode and the effect\ncan be applied.\nThis is temporary until effect offloading is implemented.\n\nBug: 8174034.\n\nChange-Id: I77b8b54a10db6cb8334be76d863ea7e720eaad09\n"
    },
    {
      "commit": "344202e13a91c9d3d109fd8f4a67f5b23efa7800",
      "tree": "53b9fd4dd46d79e97367486f8368f55f99bf4275",
      "parents": [
        "9a3418485c9581d2b294e3aafdecdac015b08329",
        "55817ab9c1868f1e6a59155f55c768f01509cda5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 16:11:26 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 03 16:11:26 2013 -0700"
      },
      "message": "am 55817ab9: am fe346c70: Fix miscellanous AudioTrack::getTimestamp() bugs\n\n* commit \u002755817ab9c1868f1e6a59155f55c768f01509cda5\u0027:\n  Fix miscellanous AudioTrack::getTimestamp() bugs\n"
    },
    {
      "commit": "1462a2b84a578b5541683c824e0f77ebf2aa82ae",
      "tree": "a8d522f1f7fe438432bacb0b3f6eacaae2257e20",
      "parents": [
        "f701ddad1a4f58c368e3b642530849dcb57bb22c",
        "a4a82c5f8f3eccfa10ce30a52cbb4b1c5c983282"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 16:11:24 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 03 16:11:24 2013 -0700"
      },
      "message": "am a4a82c5f: am 6466c9e6: Add ExtendedAudioBufferProvider::framesReleased and onTimestamp\n\n* commit \u0027a4a82c5f8f3eccfa10ce30a52cbb4b1c5c983282\u0027:\n  Add ExtendedAudioBufferProvider::framesReleased and onTimestamp\n"
    }
  ],
  "next": "fe346c707f59d763ded93bc3d27b51f0c0408258"
}
