)]}'
{
  "log": [
    {
      "commit": "1f42a6cc1edd96030478a8bc1e05a0ff7710e539",
      "tree": "bd3201353b9cc3582c32f9960817123c546c976b",
      "parents": [
        "9d1bc9f252edae3a31decf5c18e971c6ab424b26",
        "c57ad1ed177ab58ae759a5054d8a14a306715f85"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 14 20:44:40 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 14 20:44:40 2015 +0000"
      },
      "message": "am c57ad1ed: am 55d1ea47: Merge \"DO NOT MERGE - AudioFlinger: Clear record buffers when starting RecordThread\" into lmp-dev\n\n* commit \u0027c57ad1ed177ab58ae759a5054d8a14a306715f85\u0027:\n  DO NOT MERGE - AudioFlinger: Clear record buffers when starting RecordThread\n"
    },
    {
      "commit": "c57ad1ed177ab58ae759a5054d8a14a306715f85",
      "tree": "bec088678169b14f75c48fe9b80cda92414ffcbc",
      "parents": [
        "4beea2778db2b9c236761676d105e38d60c675a6",
        "55d1ea47c8aac1d5c6e887e06e8c36bf40eca7d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 14 20:37:45 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 14 20:37:45 2015 +0000"
      },
      "message": "am 55d1ea47: Merge \"DO NOT MERGE - AudioFlinger: Clear record buffers when starting RecordThread\" into lmp-dev\n\n* commit \u002755d1ea47c8aac1d5c6e887e06e8c36bf40eca7d7\u0027:\n  DO NOT MERGE - AudioFlinger: Clear record buffers when starting RecordThread\n"
    },
    {
      "commit": "8c987fa71326eb0cc504959a5ebb440410d73180",
      "tree": "5d7b75a17bf736d15f95880a06b564f03cd03ee1",
      "parents": [
        "a8f90d57f5b3ad4ef7194501aa20f0a0bd903e8f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 24 16:36:56 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 24 16:49:57 2015 -0700"
      },
      "message": "DO NOT MERGE - AudioFlinger: Clear record buffers when starting RecordThread\n\nBug: 24211743\nBug: 24267152\nChange-Id: I58c55e56b85067b71e4e300f947b4dfc159637ba\n"
    },
    {
      "commit": "bc167f832db091e490b552a147ec73412241e1e5",
      "tree": "86972791c54bc87fe26cab132734a24971c8f0c8",
      "parents": [
        "bfadec126c43cff30aa8445d8d42265c39a03ad5",
        "84fb58bdf6bfb5bf362c0e1cc6a5bad41e8554f5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 18 18:27:54 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 18 18:27:54 2015 -0700"
      },
      "message": "resolved conflicts for merge of 84fb58bd to lmp-mr1-dev\n\nChange-Id: I9b2b1ff690d35e0da644bdb52c8c42a72e5fd4f6\n"
    },
    {
      "commit": "84fb58bdf6bfb5bf362c0e1cc6a5bad41e8554f5",
      "tree": "d86313cb7e53e112ce872189cec811c7aec89e3b",
      "parents": [
        "25c00122a640ee311e6e72df401c362ec798617d",
        "bdb5e49787dcb56fec68a2410a0985bfe388cd14"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 18 21:52:31 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 18 21:52:31 2015 +0000"
      },
      "message": "am bdb5e497: Merge \"DO NOT MERGE - audio flinger: fix fuzz test crash\" into lmp-dev\n\n* commit \u0027bdb5e49787dcb56fec68a2410a0985bfe388cd14\u0027:\n  DO NOT MERGE - audio flinger: fix fuzz test crash\n"
    },
    {
      "commit": "b97ee930e4f7ed1587b869c92b4aa1dc90b641cc",
      "tree": "b4917494c7a99ff9d4ed9552d2a5f205931593ca",
      "parents": [
        "65842db06c2d77e53cc5ac61692160d844cc7d0a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 08 10:50:03 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 18 11:25:37 2015 -0700"
      },
      "message": "DO NOT MERGE - audio flinger: fix fuzz test crash\n\nClear output stream pointer in duplicating thread\nwhen the main output to which it is attached is closed.\n\nAlso do not forward master mute and volume commands to\nduplicating threads as this is not applicable.\n\nAlso fix logic in AudioFlinger::primaryPlaybackThread_l()\nthat could accidentally return a duplicating thread.\nThis never happens because the primary thread is always\nfirst in the list.\n\nBug: 20731946.\nChange-Id: Ic8869699836920351b23d09544c50a258d3fb585\n(cherry picked from commit f6870aefc5e31d4220f3778c4e79ff34a61f48ad)\n"
    },
    {
      "commit": "cfa5bf04ff250a14b11a75bcfa35ee2d6dbab4e9",
      "tree": "b985df2fc3985bfe5589cb6955ed3369d7d9feef",
      "parents": [
        "610255e8f2d02cb3513695eacf1c37d66b3553d6",
        "5db7897ddd32e3ec3ab45ecdb6f21b6265e7e14a"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jan 07 19:19:32 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 07 19:19:33 2015 +0000"
      },
      "message": "Merge \"make libserviceutility a shared lib\" into lmp-mr1-dev"
    },
    {
      "commit": "5db7897ddd32e3ec3ab45ecdb6f21b6265e7e14a",
      "tree": "e586c65974e885af85d209c811acb3d3cd592736",
      "parents": [
        "71d13d4c94cea2113d074cf0d0c6e07ad68ff3ec"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jan 07 10:42:33 2015 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Jan 07 10:50:09 2015 -0800"
      },
      "message": "make libserviceutility a shared lib\n\nso that we have only one getpid_cached in mediaserver process\n\nbug: 18919657\n\nChange-Id: Iff3cd932c9110e874b3885f79705f49bf3e3f1fc\n"
    },
    {
      "commit": "610255e8f2d02cb3513695eacf1c37d66b3553d6",
      "tree": "de334953c45a0c9f692a83d3ac97b33cd6ffae1d",
      "parents": [
        "8140a2b7ef0650e8cce6be16efcbfce56d0ed1e4",
        "0f7b5f2b231caf87da9b20b74d086e5a9d6f4a9d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 07 15:47:53 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 07 15:47:54 2015 +0000"
      },
      "message": "Merge \"audioflinger: pause HW A/V sync output when AudioTrack underruns\" into lmp-mr1-dev"
    },
    {
      "commit": "e443ffac2a09b69470c4663ee031a527c53738d9",
      "tree": "7db596e90207472c7ff018f4778d16de8c806e62",
      "parents": [
        "0d19abb440c7e62e944efbeadf02299990f9a589"
      ],
      "author": {
        "name": "soon1.choi",
        "email": "soon1.choi@lge.com",
        "time": "Mon Jan 05 14:27:42 2015 +0900"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 05 15:34:15 2015 -0800"
      },
      "message": "DO NOT MERGE - fix memory leak in PatchPanel\n\nBefore the audio patch is created, audio patch with same handle is\nremoved from vector for patches. At this time, Patch allocated in the\nheap is not freed. This causes memory leaks in the mediaserver.\n\nBug: 18904322.\n\nChange-Id: Id0d28c36a7e7fbf473753bf4ead7518f28c1b998\n"
    },
    {
      "commit": "0f7b5f2b231caf87da9b20b74d086e5a9d6f4a9d",
      "tree": "f6f15345f054cdc13116a1443b80454e256b7c71",
      "parents": [
        "e48cf5b8f823c30af93577c1e380d752ac69b871"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 19 10:43:21 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 19 16:41:52 2014 -0800"
      },
      "message": "audioflinger: pause HW A/V sync output when AudioTrack underruns\n\nDo not standby, starve or feed 0s to the audio HAL on direct\noutput using HW A/V sync mode.\n\nBug: 17883772.\n\nChange-Id: I11e6c97ec24360d75f9b602814d40a54b60cb7a7\n"
    },
    {
      "commit": "145cf5d885c238b690ab8240137934327b85c427",
      "tree": "f9e3e2f23e92f7ba7c98f0f09a9a4cfb6b40cd47",
      "parents": [
        "71b52b5bb3be81bffa320241ca486fbf964d743e",
        "d1f69b0b17acbd96987ecb2f3378abd394d05903"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 17 17:55:25 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 17 17:55:26 2014 +0000"
      },
      "message": "Merge \"audioflinger: implement pause/resume for direct outputs\" into lmp-mr1-dev"
    },
    {
      "commit": "97bb33f58d742539f3382583d7978fca71ffa2d5",
      "tree": "be3e26027b66bfc605a45af032fb91de1bdb7c7a",
      "parents": [
        "6e430fbd927b9cc043639eb728ddc921392a60e8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Dec 12 16:23:43 2014 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Dec 15 18:13:39 2014 -0800"
      },
      "message": "Fix permission check for audio recording\n\nDefine input types covering the different usecases for audio\n  recording, and check the corresponding permissions when\n  starting to record.\nMove the permission check from audio flinger to audio policy,\n  as only the policy has the information to determine which\n  permission to enforce.\nFix missing permission when an application records audio\n  and the audio is injected by an external policy.\n\nBug 18736417\n\nChange-Id: If7ec040502242c990ac8ea464db484339bdce573\n"
    },
    {
      "commit": "d1f69b0b17acbd96987ecb2f3378abd394d05903",
      "tree": "e3061c609dfaa2c217bb79a8d85e4571e8bd0d3d",
      "parents": [
        "8ddb02230d02968d471aa41b22433957c38827c0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 15 14:33:13 2014 -0800"
      },
      "committer": {
        "name": "Rachad Alao",
        "email": "rachad@google.com",
        "time": "Tue Dec 16 01:38:34 2014 +0000"
      },
      "message": "audioflinger: implement pause/resume for direct outputs\n\nExtend pause/resume support to direct output threads\n(was only for offload threads).\n\nIf the HAL implements pause/resume, track pause/resume is forwarded to\nthe HAL.\n\nPause, flush, resume sequence is respected by executing the HAL\ncalls in the playback thread (same as offload).\n\nMake sure the track flags on client side are consistent with the\nflags on server side.\n\nBug: 17883772.\nChange-Id: I89b360d69818f7a9204bd36e3ec63a79e106ecf1\n"
    },
    {
      "commit": "94a92c69af528edf6ec17d7978a0c3bb6ab51e63",
      "tree": "409f45229ea21089bdfb2aadd131288383581b07",
      "parents": [
        "f484952edd94c1b7ee82d7b108edc1ce08671cc4",
        "99adee3c3d9cde6819741a38163954808fea270a"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Dec 11 01:59:39 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 11 01:59:40 2014 +0000"
      },
      "message": "Merge \"[audio][audioflinger] Consume all frames when a DirectThread is done.\" into lmp-mr1-dev"
    },
    {
      "commit": "99adee3c3d9cde6819741a38163954808fea270a",
      "tree": "b877a4a43bd36864d8109a42ecdc6b337e6838d1",
      "parents": [
        "9257000c453c1a6f6bf073ff0bf3ba7ef9baf183"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 10 16:46:30 2014 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Wed Dec 10 17:00:18 2014 -0800"
      },
      "message": "[audio][audioflinger] Consume all frames when a DirectThread is done.\n\nThis bug was causing movies to think there was still data left to play so they never finished.\n\nBug: 18360054\nChange-Id: If7aee81d62b7af8532abd14579677848a06fe2b1\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "275e8e9de2e11b4b344f5a201f1f0e51fda02d9c",
      "tree": "c22e1c0b8541aa04fd6c8d803e4fa6704a84e6e2",
      "parents": [
        "82a69ea8b090d57bff5e02774688b546a711bbb8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Nov 30 15:14:47 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 09 15:47:19 2014 -0800"
      },
      "message": "audio policy: add support for custom mixes\n\nAdd support for custom mixes in AudioPolicyManager.\n\nTwo methods are added to register or unregister a list of custom mixes\nwith their attributes and format.\n\ngetOutputForAttr() and getInputForAttr() first look for a match in\nregistered mixes before defaulting to normal output/input selection\n\nRemote submix device connection disconnection now takes address into\naccount to identify the correspnoding custom mix.\n\nBug: 16009464.\n\nChange-Id: I3f1c2a485a0fb71b1f984ed0adc9b68aa971e408\n"
    },
    {
      "commit": "9a1c8892f6835325db6931529dc74bf98cf0aee8",
      "tree": "8b6d6b4dcaf964cf16c68bdc5080239126d2caac",
      "parents": [
        "ab05b4ccb8ea59079d7f773aa0e090029c479bad"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 03 11:37:42 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 03 16:12:35 2014 -0800"
      },
      "message": "Fix getTimestamp if offload thread is not initialized.\n\nReturns INVALID_OPERATION.\n\nBug: 18605649\nChange-Id: I440fb687fbf9249098e049982fa83bcd1515fd80\n"
    },
    {
      "commit": "e83b55dc29ca16092ba02f36f55fa6e0e37fd78c",
      "tree": "f8232611b6372b74579e3ed03dfbeb167011d257",
      "parents": [
        "0f78eabb733e1413d7febd00c0bad0f0add02314"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 14 10:06:21 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 25 12:48:19 2014 -0800"
      },
      "message": "audio policy: new getOutputForAttr() prototype.\n\nUpdate getOutputForAttr() prototype and group all logic\ndealing with audio attributes to stream type conversion in\naudio policy manager.\n\ngetOutputForAttr():\n- specifies the audio session (for future use)\n- returns a status code\n- receives either stream type (for legacy) or audio attributes\n- returns an updated streamtype\n\nRemove logic dealing with legacy stream types to attributes conversion\nfrom AudioTrack.\n\nUse correct type for audio sessions in other APIs (startOutput() ...).\n\nreleaseOutput() specifies the audio session (for future use).\n\nBug: 18067208.\n\nChange-Id: I1bfbe9626c04c7955d77f8a70aecfad2cb204817\n"
    },
    {
      "commit": "223fd5c9738e9665e495904d37d4632414b68c1e",
      "tree": "33e0afab9a7479cdc4c688a742a8977c8ead21e4",
      "parents": [
        "bc0f452b9a76dd8c8244e775bc9c5aa85cae3ddf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 11 13:43:36 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 21 10:41:13 2014 -0800"
      },
      "message": "audio: new routing strategies and stream types\n\nAdded new routing strategies and stream type for internal use\nby audio policy manager and audio flinger:\n- One for accessibility to allow different routing than media\n- One for re-routing (remote submix) in preparation of dynamic\npolicies\n- Added stream type for \"internal\" audio flinger tracks used\nfor audio patches and duplication.\n\nBug: 18067208.\nChange-Id: I88f884b552e51e4a49c29125e5a1204cf58ff434\n"
    },
    {
      "commit": "ec0eeafa8a7fd882e8206e9cf8c4c7e1db81857b",
      "tree": "a40aab7cb04a88cc63a45cffa376ec12ce5bc3b9",
      "parents": [
        "ec9459c63d1c2969505ffdc4a100646fd07223bd"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Thu Nov 20 11:32:27 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 20 13:04:15 2014 -0800"
      },
      "message": "Fix format conversion in DuplicatingThread\n\nDuplicatingThread converts PCM data from the format of the source thread\nto PCM_16BIT before writing to all connected output tracks.\nThis needs to be done just once before writing to all tracks.\n\nBug: 18461844\nChange-Id: If05254f87f9198e09a0fa3c4e857afbb53ae7073\n"
    },
    {
      "commit": "27876c02c21cd3ab7ef01bdd1fc5400c5143584a",
      "tree": "3c096ec71dfdb81fcafe4a68165006f1371fdf5d",
      "parents": [
        "97e6ca1a0be83e420ab238d9a1c31d3112126646"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Sep 09 18:07:55 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 17 18:06:10 2014 -0800"
      },
      "message": "Prevent stopped audio tracks from mixing data\n\nStatic tracks should have zero framesReady when stopping or stopped,\nto prevent mixer from running potentially indefinitely with loop mode.\n\nBug: 16070883\n\nChange-Id: Iab9968044d1a6f8543bbcbfb246f49f27d68cace\n"
    },
    {
      "commit": "2dca6f6826c81372e67625024bbe7fa00c02b708",
      "tree": "ceeef428c0e49b6757c9b3f1edaddf5206d19ebc",
      "parents": [
        "10e898cc583473d4c3604456b48e008f90d82f70",
        "995599cbd6ada739c257716a6d8b90eee6d61473"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 10 17:14:58 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 10 17:14:58 2014 +0000"
      },
      "message": "am 995599cb: audioflinger: fix duplicating thread output buffers clear\n\n* commit \u0027995599cbd6ada739c257716a6d8b90eee6d61473\u0027:\n  audioflinger: fix duplicating thread output buffers clear\n"
    },
    {
      "commit": "995599cbd6ada739c257716a6d8b90eee6d61473",
      "tree": "88b7f8beeb6c560f5868e7f254d8b2e097caceea",
      "parents": [
        "9c0c41ff36926030778a8a41210d02602c5a9f62"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 07 17:28:28 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 10 17:03:11 2014 +0000"
      },
      "message": "audioflinger: fix duplicating thread output buffers clear\n\nAlso clear mix buffer in DuplicatingThread::threadLoop_mix()\ninstead of just sink buffer when output threads are not\nready.\n\nBug: 18262127.\nChange-Id: I4c22bbeaccdcc8d7c10c5882dde3439eb73d6ede\n(cherry picked from commit 02b5708776ba2a9b4ff8c09008483aef7dbe38c7)\n"
    },
    {
      "commit": "02b5708776ba2a9b4ff8c09008483aef7dbe38c7",
      "tree": "4b94a6347b1f33b8a9c0966fac8d37019d818219",
      "parents": [
        "e662cd5cdbe1312d6b74754d2945fffe99e4fe2c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 07 17:28:28 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 07 17:28:28 2014 -0800"
      },
      "message": "audioflinger: fix duplicating thread output buffers clear\n\nAlso clear mix buffer in DuplicatingThread::threadLoop_mix()\ninstead of just sink buffer when output threads are not\nready.\n\nBug: 18262127.\nChange-Id: I4c22bbeaccdcc8d7c10c5882dde3439eb73d6ede\n"
    },
    {
      "commit": "b10352f4bc11ae6f3d93e464074709555ecf9e06",
      "tree": "52187ad264691c11e3d1efc541fe791568a33d69",
      "parents": [
        "b1322c78b035c9f47ebe57a39799d7a0e13bf57f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 03 16:25:39 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 03 16:25:39 2014 -0800"
      },
      "message": "remove some restrictions on effect output channels\n\nDo not prevent from attaching effects to a non stereo\noutput thread, unless the output thread is a mixer thread.\n\nBug: 18157592.\nChange-Id: I6ac3187187a1b8aade7db04ea6dfbc47dacc25c3\n"
    },
    {
      "commit": "fd4c14883b268a0bc5514da135fe6b7d1ce2071b",
      "tree": "29e4594fffdc70dc7d51a3abd7586a556df1e448",
      "parents": [
        "31551f8dd625b8d40961e141d2913b0073f852ab"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Aug 06 16:02:28 2014 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Oct 27 16:03:09 2014 -0700"
      },
      "message": "Always use an address for remote submix\n\nUsage of remote submix device for audio rerouting (e.g. wifi display)\n didn\u0027t mandate the use of addresses. Use \"0\" as the default address\n when none is specificed.\nIn logs, only use hex format for audio devices\n\nBug 16009464\n\nChange-Id: Ibfb1ce6881eba8b7e34420293b8a7077a6e659e6\n"
    },
    {
      "commit": "9d0d5958969cffae5d4305025bc20d05f32e6ff2",
      "tree": "13d3ef1adc3e281778d2cab53846c337469cfec4",
      "parents": [
        "1f58bb157ded117fe931142e9906b2b6b406b534",
        "fa90e84ed0cb2abdc0e0873a06d10ccf2b3c34f6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 22 17:16:29 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 22 17:16:30 2014 +0000"
      },
      "message": "Merge \"audioflinger: new HW A/V sync ID allocation flow\" into lmp-mr1-dev"
    },
    {
      "commit": "fa90e84ed0cb2abdc0e0873a06d10ccf2b3c34f6",
      "tree": "cfb0730e677246729f44e97465edfac2f0fb45ad",
      "parents": [
        "0cfc8f2500bb76d44ad45a723a570835aeff502b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 17 18:12:31 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 22 10:04:14 2014 -0700"
      },
      "message": "audioflinger: new HW A/V sync ID allocation flow\n\nThe HW A/V sync ID is now allocated by the audio HAL before the\noutput stream is created by a call to global get_parameters() with\nkey AUDIO_PARAMETER_HW_AV_SYNC.\n\nWhen the AudioTrack is created, the HW A/V sync ID is communicated\nto the output stream by stream set_parameters() with key\nAUDIO_PARAMETER_STREAM_HW_AV_SYNC.\n\nBug: 17112525.\nChange-Id: Ia8bc6f3bf9f358aa89f3f56ac554e893a19811ad\n"
    },
    {
      "commit": "36d9256f956b2ed4d7a221d84ad05bf4ba482958",
      "tree": "bc20d87abb869e949cb479a1311b676e5b04f8bb",
      "parents": [
        "145a4c679a9ab27aceaa1d386ea9aca1c0cd4d33",
        "ac302143551a8b964f026385a524dda9ff8ea5ba"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Oct 20 21:05:02 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 20 21:05:02 2014 +0000"
      },
      "message": "am ac302143: Fix the fix\n\n* commit \u0027ac302143551a8b964f026385a524dda9ff8ea5ba\u0027:\n  Fix the fix\n"
    },
    {
      "commit": "ac302143551a8b964f026385a524dda9ff8ea5ba",
      "tree": "7c32fc205e52cb690abd0e7bbe46c749eac38b48",
      "parents": [
        "22bc10a347569a0ab2980c24783e31aba4d7414d"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Oct 20 13:15:38 2014 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Oct 20 13:15:38 2014 -0700"
      },
      "message": "Fix the fix\n\nWe need to clear the buffer a little more often.\n\nBug: 18023017\nChange-Id: If8a522b9133a4269e2435af8958f6ced322e71e9\n"
    },
    {
      "commit": "145a4c679a9ab27aceaa1d386ea9aca1c0cd4d33",
      "tree": "88670be9f175704f5de07f2bb8fef4f19a1e7f7a",
      "parents": [
        "e0459eb091d98b944d9d1c9483a08f322aa60eda",
        "22bc10a347569a0ab2980c24783e31aba4d7414d"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Oct 20 14:51:24 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 20 14:51:24 2014 +0000"
      },
      "message": "am 22bc10a3: Merge \"Clear effect buffer before sending to chain\" into lmp-dev\n\n* commit \u002722bc10a347569a0ab2980c24783e31aba4d7414d\u0027:\n  Clear effect buffer before sending to chain\n"
    },
    {
      "commit": "57088b5c8e76855b99b3e6b3e410de5b6382670e",
      "tree": "3b0f7cbcfdc6237d24ae173fc0b624977bbfaaef",
      "parents": [
        "380757ba5c927015d403e3b97cc418413330453e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Oct 17 16:39:39 2014 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Oct 17 16:39:39 2014 -0700"
      },
      "message": "Clear effect buffer before sending to chain\n\notherwise the effect might get a buffer with previous data instead\nof silence.\n\nBug: 18023017\nChange-Id: Ic6be5ce0e74552aac2a0cce9c660893f9ad27f5c\n"
    },
    {
      "commit": "f53eaf49df1e1e1c01708919e9e0a046543de9b6",
      "tree": "01274169d31d750a0a0e08c59aa56bd5b84f3ff2",
      "parents": [
        "e86f4be598b1d2c521e2b3fcd05101c3848e93e2"
      ],
      "author": {
        "name": "Hochi Huang",
        "email": "hochi.huang@mediatek.com",
        "time": "Thu Oct 09 11:36:22 2014 +0800"
      },
      "committer": {
        "name": "leozwang",
        "email": "leozwang@google.com",
        "time": "Tue Oct 14 10:38:08 2014 -0700"
      },
      "message": "    fix FM no sound issue\n\n    Review: https://partner-android-review.git.corp.google.com/#/c/184276\n\n    Signed-off-by: Carson Liao \u003ccarson.liao@mediatek.com\u003e\n\nChange-Id: I0847c8a6e6d054a9258b52402c914105d902c573\n"
    },
    {
      "commit": "2b217bb3aee87ce8486014f261c0f498f6209e80",
      "tree": "3199fbc19fc6329f1e764ad63a478dbe2308ddc3",
      "parents": [
        "b220fe0e40bc3752b62a9576fc824634a16fc3ab",
        "1b92868010b5c1409692a86f6b27e4a265b64c1a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 03 20:37:46 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 03 20:37:47 2014 +0000"
      },
      "message": "Merge \"audioflinger: fix pre processing transfer between record threads.\" into lmp-dev"
    },
    {
      "commit": "1b92868010b5c1409692a86f6b27e4a265b64c1a",
      "tree": "aa514a65d23d1bebbceef49cc6b7f2662c7bad76",
      "parents": [
        "d8b03abf1d003e2940a19f0071ea2892689dd10e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 02 19:41:47 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 02 19:41:47 2014 -0700"
      },
      "message": "audioflinger: fix pre processing transfer between record threads.\n\nFix two problems remaining with pre processing effects transfer from\none record thread to the next in case of tear down due to device connection:\n1 - the enabled state of the effects was not communicated to the new HAL\ninput stream.\n2 - the effects saved in orphan chains list were not transfered to the\nnew thread when a AudioRecord was created.\n\nBug: 17757378.\nChange-Id: I0923c98470db3b51154dc89846157780a4c21e86\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": "cb4b6e9f05d1c0b3fcc5be5ebe3f7d6f32669b1a",
      "tree": "7bf2965353146579d1af3a5015ec468029d1f5dc",
      "parents": [
        "a49c94ea49c8329a1bdefe980e1f7d335c0d1ec5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 01 14:26:10 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 01 16:52:30 2014 -0700"
      },
      "message": "audioflinger: fix failure to indicate volume to effect\n\nIf an effect is added and enabled after a track is started\nit will not receive current volume information because volume\nis indicated only to active effects and if there is a volume change.\n\nAdd a flag to force EffectChain::setVolume_l() to pass volume indication\nto all effects each time an effect is enabled.\n\nBug: 17572556.\n\nChange-Id: I6b68488c9aca8b2095fb210aa124d02e4f759660\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": "f71224ce266abb39f83ecba87783c2347631654a",
      "tree": "2ab4c81c96918d94c5ff0acc66a68606c08b47de",
      "parents": [
        "c8c05d6a5821dd56209e160066314a03d2f2ca06",
        "e659ef420dae0caae84ab78f9df8952acb9ad3a0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 30 01:11:19 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 30 01:11:20 2014 +0000"
      },
      "message": "Merge \"audioflinger: forward flush to direct output streams\" 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": "ba0b34c18da93681c0813ecdab19b0e215b6d261",
      "tree": "9f401bc394b276294b706fb42d62f35131046c55",
      "parents": [
        "a67ced9746e6f0d4e03ff8007682091afea71f6c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Sep 28 13:06:06 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Sep 28 13:42:35 2014 -0700"
      },
      "message": "Fix tee sink\n\nNote: this does not fix the bug below, but it helps to investigate the bug.\n\nBug: 17578238\nChange-Id: I0fd27a477b73ba0e1c5a658bdfad17c500f5dc67\n"
    },
    {
      "commit": "80b617cf82e0030deef4f968a6341e2867166135",
      "tree": "750b04ddad1418eac7be6fb53322f7ab4e734583",
      "parents": [
        "90869c2bef1bc47394a9f603ccebb62b2592fd2b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 17 12:30:19 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 17 12:30:19 2014 -0700"
      },
      "message": "audioflinger: remove debug log.\n\nRemove debug log left by commit ab5cdbaf.\n\nbug: 17537746.\nChange-Id: I10f672f607f8e87caaa8228fc05eff8aee7dfa15\n"
    },
    {
      "commit": "cf7863ea8d9137aadf6bfd9756eb07ebd1c81b5c",
      "tree": "3030c350f57e8d813a19be08c77c3e53502433f3",
      "parents": [
        "c7b29572d22dff51b5432a7d211875d528406da6",
        "aaa44478a373232d8416657035a9020f9c7aa7c3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 15 18:36:48 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 15 18:36:49 2014 +0000"
      },
      "message": "Merge \"audioflinger: fix pre processing effect leak\" into lmp-dev"
    },
    {
      "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": "2f035f59d1e28728d38d18a7f0f7a9c6e8b0c11b",
      "tree": "790ddf009cc4207fd4faa14bf8aa1dc3a59775cf",
      "parents": [
        "f0b31e6333839972afb2e374f6d8824180d29fc2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Sep 14 12:11:52 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 15 09:10:36 2014 -0700"
      },
      "message": "audioflinger: send mic mute command to all audio HALs\n\nMic mute should be sent to all audio HALs, not\nonly the primary HAL as telephony can use\ncapture devices on other HALs (e.g USB)\n\nBug: 17321604.\nChange-Id: I658f6084d5b5cdc5a70784661d5cea0b6f81c3a9\n"
    },
    {
      "commit": "f8fd8d6daab5ced86ce950be68070d27c24d487f",
      "tree": "4ccbca767b6711112f9aacdaf72ca40fa7473e06",
      "parents": [
        "8270e1d13a101fa946848871b9903b31ff11981f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 09 17:00:14 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 09 17:00:14 2014 -0700"
      },
      "message": "audioflinger: fix audio patch release\n\nFix error in PatchPanel:releaseAudioPatch() causing\nthe wrong patch handle to be passed to the audio HAL.\n\nBug: 17368621.\nChange-Id: I037fd2e6273508c830414b5900d07c0178b96dae\n"
    },
    {
      "commit": "3abc2ded40066f3b1df23aceb553f22d569c5cd3",
      "tree": "12bc71f5efa13cc53c28138bcae9f7b5b0b25903",
      "parents": [
        "52c6a355503dbbe9bb134af07faee982534031dd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 05 16:45:52 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 05 17:15:32 2014 -0700"
      },
      "message": "Make IPowerManager native conform to .aidl for oneway\n\nBut provide a temporary escape hatch for AudioFlinger.\nThis oneway option will be removed as soon as possible.\n\nBug: 16408906\nChange-Id: I058a50906af810787e444a96819cb781b7f639ad\n"
    },
    {
      "commit": "23c8cf958b1a756d5e0c78c46eac676676be4fdd",
      "tree": "c7f8168bbcfd431ede64ded70c06ca33902a2bcc",
      "parents": [
        "453d633ba6351c8efc2103383ca178a0674bd373",
        "329f6511ee4e03a4605c70bbda8d3a96d2544884"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 03 15:29:57 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 03 15:29:58 2014 +0000"
      },
      "message": "Merge \"Restore the ability to build tee sink for debugging\" into lmp-dev"
    },
    {
      "commit": "97d547da43c9c41711d1ed1e3f4fa87c2ee3cb9a",
      "tree": "7691517aee519ffaf4a7c5dbfd422b742d4401b7",
      "parents": [
        "b72726bad6c9253c26c82fea76bdf99e18b8ba6d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 02 14:45:53 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 02 14:45:53 2014 -0700"
      },
      "message": "audio flinger: fix use of global effect buffer\n\nWhen float mixing format is enabled, audio effects use a specific\nbuffer in 16 bit format. This buffer was not enabled when only\nglobal effects were present resulting in the mixer accumulating directly\nto the output sink buffer.\n\nBug: 16202259.\nChange-Id: I3537d36c63196d97772f0ab22dd31d04dfa7fdd6\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": "395db4bfa5b43a839f95632676d59cde99a9840d",
      "tree": "2699e187d6fc59dd4f2b60a70c9131759d2b4a88",
      "parents": [
        "2a1bcb8347ad4778a49bb340c3ed28ba27caa7d7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 25 17:15:29 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 25 17:15:29 2014 -0700"
      },
      "message": "Fix AudioMixer MONO muted track handling\n\nIncorrect handling caused \"stereo\" mode to be used.\nAugmented error handling to print more debug info.\n\nBug: 17208475\nChange-Id: I5bcaf0ba5bd5a4f7d4885f8cce43bbf42e5f1e6b\n"
    },
    {
      "commit": "735f45fbc37d7905ffb722f40727edbed82319b7",
      "tree": "e8abf5e80a5b9a05efeb9f8ea1f3ace03ffea6a4",
      "parents": [
        "a7ee3549823af3dc4b22284f1a2fe4fbf31cf30b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 18 15:51:59 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 18 16:19:01 2014 -0700"
      },
      "message": "Fix memory access error due to race during fast track removal\n\nBug: 16205169\nChange-Id: Ie15ec2a737b6ddd16b2d26030d01564ff70177f5\n"
    },
    {
      "commit": "49d00ad9164ea5ce48c85765a2b6460d9b457d38",
      "tree": "bf5a60ee980e9f7d6313f5495c4722a070fc3566",
      "parents": [
        "ca05eb4b0194bb9b37a5261fa91f89add7a6df53"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 21 11:22:03 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 12 16:06:16 2014 -0700"
      },
      "message": "Fix overruns when capturing with resampling\n\nBug: 16658148\nChange-Id: I2dd04b23a143e0948b299d408790e7a46b5a53b0\n"
    },
    {
      "commit": "e7a1737c92cf2e84754ffbc52cfec8edeffcbc75",
      "tree": "a455b627387548eb77e11e88fb7b54612516c296",
      "parents": [
        "dbdaa08cbed61b9ba4afc43f0ce0230346a1ca2f",
        "726b6a7540ac997928df1a14dfede872a82f6210"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Tue Aug 12 16:04:45 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 11 17:59:47 2014 +0000"
      },
      "message": "Merge \"Fix to support mono in effect buffer allocation.\" into lmp-dev"
    },
    {
      "commit": "726b6a7540ac997928df1a14dfede872a82f6210",
      "tree": "deb87bb07b384d104a3e1661a6ef320fa10d34f3",
      "parents": [
        "2dfe8ea7c131a045067c123efc934ef6ccdb8821"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Aug 11 12:04:54 2014 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Aug 11 14:28:45 2014 -0700"
      },
      "message": "Fix to support mono in effect buffer allocation.\n\nSince effects are now enabled for recording, mono cases are possible\nand needed to be correctly allocated.\n\nBug: 16917961\nChange-Id: I760fc421f9f90fabb3f0deadd5f9dc61cd284371\n"
    },
    {
      "commit": "cd04484f4837b8ca0041d118286ab6a98e84fc75",
      "tree": "4b9e501bb71969c0ca5049201aeae42284ac9b80",
      "parents": [
        "53a1e46e559b00653eadf6f4bb5572679b0ee734"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 07 11:04:34 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 11 10:17:18 2014 -0700"
      },
      "message": "Extend downsampling ratios greater than 2:1\n\nAlso improve robustness to choice of sampling rate or buffer size\nsuch that increasing either by 10x does not cause overflow.\n\nBug: 12979141\nBug: 15933066\nChange-Id: If7989bd745d1bee3bdf811b8b7c978543ccafb65\n"
    },
    {
      "commit": "874c4287a4e49c59ac88767751dce00fcd3edb73",
      "tree": "2a0e4adc0bd18f26c8488b74d7e3df9751d493df",
      "parents": [
        "0912a5738d6baf2df7cd62e877240e3807b4b21f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 08 15:13:39 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 08 17:07:31 2014 -0700"
      },
      "message": "audio policy: enable more than one sink per audio patch.\n\nAllow creation of audio patches with more than one sink.\nMore than one sink is enabled when:\n- Connecting an input device to output devices on the same audio HW module.\n- Connecting an output mix to output devices on the same audio HA module.\n\nAll other patches are limited to one sink.\n\nBug: 16879363.\nChange-Id: I95be6948ef29df64e51e5b8ace38c2db7f3e89f2\n"
    },
    {
      "commit": "0912a5738d6baf2df7cd62e877240e3807b4b21f",
      "tree": "58e7ad3a76e384408d02cdef7a9c9215a8000878",
      "parents": [
        "317bb9163befccd87348c11bdfc0044e629b362b",
        "389cfdbb9a92a438a0d7710321c2964c7ad55eca"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 08 17:28:48 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 07 18:49:59 2014 +0000"
      },
      "message": "Merge \"Fix effect and mono sink handling.\" into lmp-dev"
    },
    {
      "commit": "389cfdbb9a92a438a0d7710321c2964c7ad55eca",
      "tree": "7ef80332e73a04ccc3221bb0f75dc1a7932234ac",
      "parents": [
        "92ce4715315bddd158c7d4028556632f0547e3b9"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 07 17:49:53 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 08 09:59:02 2014 -0700"
      },
      "message": "Fix effect and mono sink handling.\n\nDo not permit mixing to mono sink in AudioFlinger.\nAllow effects on mono sink if not Mixer thread (e.g. Record).\n\nBug: 16863095\nChange-Id: I8b232fc1fb3f07bf017020c5d4f9ace644dec6d8\n"
    },
    {
      "commit": "7f04ec2a4ec94ada7ef89db8c50fd1e5c3a93a3b",
      "tree": "42d4ba5895c3943fd7d8e61cd75a9590a09c6f93",
      "parents": [
        "a9522673f3076ea937eb2912945d7ed646ca05df",
        "c2730ba7c5e9559b7499ef5e0d7742deb18c5110"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 07 15:54:49 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 06 23:49:20 2014 +0000"
      },
      "message": "Merge \"audio policy: add support for USB devices for voice call\" into lmp-dev"
    },
    {
      "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": "0a0e5f02037f396237461a9840b2fc7271812bdc",
      "tree": "e7e029f1a04fde3a58657c4131f439c90ae3a5e5",
      "parents": [
        "7f3f2fa386b8dd917022663bcb01f10ea67061be",
        "93c3d41bdb15e39dac0faea9c5b60f1637cd477c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 06 19:40:04 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 06 17:19:40 2014 +0000"
      },
      "message": "Merge \"AudioSystem: add API to query audio HW sync source\" into lmp-dev"
    },
    {
      "commit": "7f3f2fa386b8dd917022663bcb01f10ea67061be",
      "tree": "8bfe560b2e67fd002f8d39150d7208330e63ced3",
      "parents": [
        "92ce4715315bddd158c7d4028556632f0547e3b9",
        "322bab26dc3fe9bd9c1cbb829dc62ff44f1ae810"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Wed Aug 06 19:11:33 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 06 17:19:40 2014 +0000"
      },
      "message": "Merge \"MediaServer crashing and audio effects not applied to TTS.\" into lmp-dev"
    },
    {
      "commit": "322bab26dc3fe9bd9c1cbb829dc62ff44f1ae810",
      "tree": "51abbc969cf66fceeebbd97199f0d9ce18aaf13c",
      "parents": [
        "63c0ce7ab7bd99d51414dcb4f765bc6faabf367d"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Wed Aug 06 11:43:46 2014 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Wed Aug 06 12:06:14 2014 -0700"
      },
      "message": "MediaServer crashing and audio effects not applied to TTS.\n\nA memclear in the EffectChain was out of bounds.\n\nBug 15432115\nBug 16845751\n\nChange-Id: Ib0adc7fa730d630bb71fb87d51163a26149b16e2\n"
    },
    {
      "commit": "93c3d41bdb15e39dac0faea9c5b60f1637cd477c",
      "tree": "a0d739ad732f10bc9d4548923c78c590841b14da",
      "parents": [
        "92ce4715315bddd158c7d4028556632f0547e3b9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 01 14:48:35 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 06 00:38:23 2014 +0000"
      },
      "message": "AudioSystem: add API to query audio HW sync source\n\nAdd a method to query from the audio HAL the HW sync\nsource used for a given audio session.\nModify audio policy to select a direct output with HW sync\nwhen requested.\n\nBug: 16132368.\n\nChange-Id: I03038f9188f2d389f8a5fd76a671854013a4513e\n"
    },
    {
      "commit": "cf817a2330936947df94c11859f48771f5596a59",
      "tree": "c9c386dabb997f20b2f1046b6087b26e71b66ed9",
      "parents": [
        "e46711343b43786c049a007369a72c1c78e6c5db"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 04 20:36:31 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 05 17:16:32 2014 -0700"
      },
      "message": "audio: fix crashes upon USB device connection\n\n- Audio policy:\nReplace unknown device assertion by debug log in setDeviceConnectionState().\nIt is possible that some kernels indicate connection of a legacy device type\nwhen a USB audio device is connected.\nWe should just ignore this device.\n\n- Audio flinger:\nMake sure FastMixer thread is idle before exiting the normal mixer thread and\nclosing the output stream.\n\nChange-Id: Ia10a20176a60a8aa56765538093a555fc998508a\n"
    },
    {
      "commit": "7a9b25940309e2967820daa13a7f71e41293d165",
      "tree": "551ee8d8a32b689b5ea72ea75272c08b175f5aa1",
      "parents": [
        "d0fded31e473e909c018f534d3019fb5168bdcd6",
        "5241b8cacee86e17223695190959f4752910680f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Aug 05 15:33:24 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 05 00:34:22 2014 +0000"
      },
      "message": "Merge \"Remove unused TwoTrack process mode from AudioMixer\" into lmp-dev"
    },
    {
      "commit": "5241b8cacee86e17223695190959f4752910680f",
      "tree": "7294f55179540aaf0c3050839d5193bb98c0cb3c",
      "parents": [
        "63c0ce7ab7bd99d51414dcb4f765bc6faabf367d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 04 20:43:10 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 04 20:43:10 2014 -0700"
      },
      "message": "Remove unused TwoTrack process mode from AudioMixer\n\nLegacy code that has not been hooked up.\n\nChange-Id: Ic01a4eddfa1020089d5bc42f58b6a4697698c27a\n"
    },
    {
      "commit": "44622db93a24219123facbbe14259000f90de728",
      "tree": "e9d4700757e0546ec0f8e76330d1ff5d421374f5",
      "parents": [
        "678792e362c4cd70640934049491d9f21560c63b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 01 19:00:33 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 04 09:48:17 2014 -0700"
      },
      "message": "audio flinger: fix service fuzz test crash\n\nBug: 13744704.\nChange-Id: I572c89f88dcab2b8b612ec6860983306f9f159ab\n"
    },
    {
      "commit": "e6fa1b7fdc74bec3292d6a10c99f25f9fd989d3f",
      "tree": "06b39ec27ac3c54b02d1dde99b3be297e29cfe81",
      "parents": [
        "3c6fac2c807e4234953dcdc793029a82d1f3a089"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Jul 16 12:13:16 2014 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Jul 31 15:44:16 2014 -0700"
      },
      "message": "Remove 64-bit android_atomic uses from StateQueue.\n\nUse stdatomic.h instead.  We\u0027re trying to remove android_atomic use\nwherever possible.  The 64-bit uses seem easiest to remove first.\nThis cleans up the code, though not as much as C++ \u003catomic\u003e would,\nif it worked everywhere.\n\n(cherry picked from commit f39b560952d3706a7ff47ef0d82c1a836daeea42)\nChange-Id: I3c29bdbd5915cb9d47118834a3a742fe296cf87f\n"
    },
    {
      "commit": "318be3e7d245aea99efa194a16002395b609ab90",
      "tree": "5c390913d27d9cd5a9da253af37e74f1a10664eb",
      "parents": [
        "8b685b9e56cc207d44b08d124148e7d752ef2241",
        "b1ee3954153e9c40280f68d278526ca43c31fdcf"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jul 29 23:53:25 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 29 21:36:00 2014 +0000"
      },
      "message": "Merge \"Enable multichannel in AudioFlinger\" into lmp-dev"
    },
    {
      "commit": "a4daf0b4f934b800a49f199fb8c09409391c8fc0",
      "tree": "f2b1f47f9c09d21d0eb22f1f78d10c766e7a1c11",
      "parents": [
        "5fedaffddebd6b37f09cdc9804812945b9622498"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 28 16:34:45 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 29 15:45:38 2014 -0700"
      },
      "message": "Fix build warnings\n\nChange-Id: Ife5e40264f43fb3ccb40830228701003fe106bf5\n"
    },
    {
      "commit": "b1ee3954153e9c40280f68d278526ca43c31fdcf",
      "tree": "508023ffd2ea5af10131b4896c543e413069195c",
      "parents": [
        "9a60538b9ee2b097770dcd378281b31f4218ae56"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 28 16:28:06 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 28 16:28:06 2014 -0700"
      },
      "message": "Enable multichannel in AudioFlinger\n\nChange-Id: Ibdbdc6ea0b87cdcd15432257a3455b11b3ce14b7\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": "d530d415e60373caf875a37d2d747a51470ee45c",
      "tree": "d5dd64384cee9e4ec3bb28419e71622c9ba4a69f",
      "parents": [
        "de3f8392fbf380ba6f09d009b00d7172477389a2",
        "8661aaff9e9a4d4c1b57f6a68cdbcab006354ab2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 28 23:55:02 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 28 18:28:56 2014 +0000"
      },
      "message": "Merge \"Fix rounding in RecordThread resampler buffer computation\" into lmp-dev"
    },
    {
      "commit": "8661aaff9e9a4d4c1b57f6a68cdbcab006354ab2",
      "tree": "bb9166671a068c5a4c07a264475f30556d16d69a",
      "parents": [
        "141670d465d7673dfa6ad712ad100f84882dfa95"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 28 14:38:41 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 28 14:44:24 2014 -0700"
      },
      "message": "Fix rounding in RecordThread resampler buffer computation\n\nBug: 16525305\nChange-Id: Ie010822b0fa9dec74adde1d1b091ee44c183fc94\n"
    },
    {
      "commit": "de3f8392fbf380ba6f09d009b00d7172477389a2",
      "tree": "77687cb28cf7dfb34ebb6317e246b3cad5672b86",
      "parents": [
        "03524dcc1215b2c468f5c8c8abe6f1c26239fd71"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 27 18:38:22 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 28 21:43:16 2014 +0000"
      },
      "message": "rename AudioSystem::newAudioSessionId()\n\nRename AudioSystem::newAudioSessionId() to\nAudioSystem::newAudioUniqueId() as it can be used\nalso for I/O handles.\n\nBug: 12378680.\nChange-Id: I611ea3b5eb57a4b0774437f477ee87dc4ccc2cc2\n"
    },
    {
      "commit": "03524dcc1215b2c468f5c8c8abe6f1c26239fd71",
      "tree": "c168e631ce77c50e6627ed783a98f33f901420cb",
      "parents": [
        "7d70c5e5fe787ae5d7af8830864d208749d6337f",
        "cf2c0210c8afbe7d0661ccbbae3835b5ce73c0bf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 28 20:56:49 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 25 21:16:23 2014 +0000"
      },
      "message": "Merge \"AudioFlinger: update openInput() and openOutput()\" into lmp-dev"
    },
    {
      "commit": "cf2c0210c8afbe7d0661ccbbae3835b5ce73c0bf",
      "tree": "26824707249d553efaabe2003381b4e9159e199d",
      "parents": [
        "97117153a0d681be70bfa9dc9876541375355c47"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 25 16:20:43 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 28 12:06:00 2014 -0700"
      },
      "message": "AudioFlinger: update openInput() and openOutput()\n\nAdd parameters to openInput() and openOutput(): device address,\ninput source.\nAllow caller to specify a given I/O handle\nGroup parameters in a struct audio_config.\n\nBug: 12378680.\nChange-Id: I7e9af74c0d996561cc13cbee7d9012d2daf33025\n"
    },
    {
      "commit": "9f81de3452dfb2385bd57dc05456a045174a1ab1",
      "tree": "af5e18f9686c58444ecd82e1bac52c530d503d1c",
      "parents": [
        "0fb47759256ecdaedbc34c880238bc9d102ef160"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jul 27 15:02:23 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jul 27 15:03:00 2014 -0700"
      },
      "message": "Enable lower latency audio capture on more devices\n\nBug: 16601366\nChange-Id: I573b98631f81b7768f7cc00aa09e560008dea587\n"
    },
    {
      "commit": "9a59276fb465e492138e0576523b54079671e8f4",
      "tree": "e3e51544dc4e641cdfe0b38bfaac530167656eb8",
      "parents": [
        "e93b6b7347a7846c8fd746542364ec11b0cd5124"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 21 21:56:01 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 24 18:57:27 2014 -0700"
      },
      "message": "Add multichannel capability to AudioFlinger\n\nBut not enabled (kEnableExtendedChannels \u003d\u003d false).\n\nChange-Id: I62f7e31fbd29ad703a9a02f5d1a280b6972dd423\n"
    },
    {
      "commit": "e93b6b7347a7846c8fd746542364ec11b0cd5124",
      "tree": "d5498ae539ae460d4153026be9714129fc45a21f",
      "parents": [
        "81e50d0c782cc18eab4ef40ecd6c7f36df50fea5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 17 21:30:53 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 24 18:40:33 2014 -0700"
      },
      "message": "Add multichannel capability to AudioMixer\n\ntests/test-mixer updated to handle multichannel.\nNew mixer path is still disabled (kUseNewMixer \u003d false).\nSubsequent CL will enable multichannel capability.\n\nChange-Id: I71dafa94cc1d9af567c285e0ded7c5c94e3ff926\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": "17d0842cf33464a79a81b0e78e49514c3419d1cf",
      "tree": "df4161ca751aa1860442fa9563ed5584b56abb74",
      "parents": [
        "4730fa07a3290cc3a904dcb16dbb92fcf46c36ac",
        "42b011166ece30969667e0ff9dcf4832568c9c1a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 23 20:41:59 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 23 18:25:52 2014 +0000"
      },
      "message": "Merge \"Fix multichannel integer resampling and add tests\" into lmp-dev"
    },
    {
      "commit": "42b011166ece30969667e0ff9dcf4832568c9c1a",
      "tree": "16f653a56d0daaeb02dfd27659ac96796163e8dc",
      "parents": [
        "8bce84142802ecdc1794d59488ede629801a5cba"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun Jul 20 14:04:19 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 21 21:59:51 2014 -0700"
      },
      "message": "Fix multichannel integer resampling and add tests\n\nChange-Id: I384bf8317d4f03616bf9f2b458a8700965d5cf56\n"
    },
    {
      "commit": "a7e04803ffa0d8d4cc51a122f68bf5038422aabb",
      "tree": "e1c60583b09461df3be42a04dbae4d51e1bd75e9",
      "parents": [
        "8bce84142802ecdc1794d59488ede629801a5cba"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 21 11:49:08 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 21 11:55:33 2014 -0700"
      },
      "message": "Remove execute bit\n\nChange-Id: I1cf0c0d9375779b3074af12f4cbf9c1ec07bf4ff\n"
    },
    {
      "commit": "8bce84142802ecdc1794d59488ede629801a5cba",
      "tree": "802c25b58a915542533fbedd62ca8b81c70270ce",
      "parents": [
        "cf1f53baa636f1782ff924d6003c70c6b8542c0b",
        "a08810b2feafeec88870c7c1f01efc39ee8e0d78"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sun Jul 20 20:53:44 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 17 17:59:02 2014 +0000"
      },
      "message": "Merge \"Add RemixBufferProvider to AudioMixer\" into lmp-dev"
    },
    {
      "commit": "a08810b2feafeec88870c7c1f01efc39ee8e0d78",
      "tree": "6c33f28c0c637f0d67530058493f653e453a131b",
      "parents": [
        "34803d594232af5604d893eff7ee40bb57d459a4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 16 21:53:43 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 18 20:34:02 2014 -0700"
      },
      "message": "Add RemixBufferProvider to AudioMixer\n\nThis is used to convert between channel masks for input AudioTrack\ndata.\n\nChange-Id: Iedffaeccb99c7053992152e7b1cb6b2d33b12eef\n"
    },
    {
      "commit": "34803d594232af5604d893eff7ee40bb57d459a4",
      "tree": "13991635bf72797e6ff00a3ec739b465af53614d",
      "parents": [
        "1b2fdcb005f9fbe5ad465cec46ec5992b718b5e3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 16 21:41:35 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 18 18:05:19 2014 -0700"
      },
      "message": "Update DownmixerBufferProvider to use CopyBufferProvider\n\nChange-Id: I6b1a8755a1e6c29b916662fd376e9509cda5df55\n"
    },
    {
      "commit": "1b2fdcb005f9fbe5ad465cec46ec5992b718b5e3",
      "tree": "af0ac40d490c649b1c3a13ba0c5c9a22e1890c6b",
      "parents": [
        "91be1fbc424035e70688e60306b755893e0fb0ae"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jul 16 17:44:34 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jul 18 17:56:04 2014 -0700"
      },
      "message": "Add CopyBufferProvider class for AudioMixer\n\nAudioMixer::ReformatBufferProvider now uses it as a base class.\n\nFix ReformatBufferProvider object leak.\n\nChange-Id: If196f844eaaa124a173ffa27afe88098023c2ff9\n"
    },
    {
      "commit": "4287942b0d6fabe5f99e15cd70c470b04f345de8",
      "tree": "8ae6a614689746e0f520d884eb00bdd1c7998af4",
      "parents": [
        "c60780517a882e0905fd36a06b1c45da12e49557",
        "34803d594232af5604d893eff7ee40bb57d459a4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Jul 19 03:39:26 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 18 22:16:50 2014 +0000"
      },
      "message": "Merge \"Update DownmixerBufferProvider to use CopyBufferProvider\" into lmp-dev"
    },
    {
      "commit": "c60780517a882e0905fd36a06b1c45da12e49557",
      "tree": "a0b1dd3d1b196b287aed2fdf6983bb0d4a82b346",
      "parents": [
        "c63680d80ac262a6be4a22a66f92960e9f44d460",
        "1b2fdcb005f9fbe5ad465cec46ec5992b718b5e3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Jul 19 03:23:02 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 17 21:09:48 2014 +0000"
      },
      "message": "Merge \"Add CopyBufferProvider class for AudioMixer\" into lmp-dev"
    },
    {
      "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": "91be1fbc424035e70688e60306b755893e0fb0ae",
      "tree": "eef36fd4610590775c813de29a63d68885c11d59",
      "parents": [
        "e94754c9601d132354e5db2079762c7d1a0bddda",
        "7410591dad836434c72ddee66680802708b70c10"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 17 21:56:55 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 17 21:04:20 2014 +0000"
      },
      "message": "Merge \"Move AudioRecord frame count calculations to server\" into lmp-dev"
    },
    {
      "commit": "2e8186a258c934798129847f66171df36e95d23e",
      "tree": "4da37472f2c220fe210c1539fbd536ce5942d77d",
      "parents": [
        "d1a4f35ec10f36c33cf7391e800910da8fdebb6e",
        "5567aaf4818007cd8e77329683a91c0f5d7a8837"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 17 21:23:26 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 17 21:09:48 2014 +0000"
      },
      "message": "Merge \"Fix initial audio glitch on startup\" into lmp-dev"
    },
    {
      "commit": "5567aaf4818007cd8e77329683a91c0f5d7a8837",
      "tree": "02be3dd69b9b538662abc033d08fd0207d2fd607",
      "parents": [
        "d81d48961da30f657fb095ed00a697bd50266269"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 17 14:00:07 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 17 14:00:07 2014 -0700"
      },
      "message": "Fix initial audio glitch on startup\n\nAlso happens when restarting AudioFlinger.\n\nBug: 16322824\nChange-Id: I382b20174cb0639e04316130141f2094d7dd0cb3\n"
    }
  ],
  "next": "7410591dad836434c72ddee66680802708b70c10"
}
