)]}'
{
  "log": [
    {
      "commit": "a9565fba8b0bd53e72bb0784764a06844d9ce7b7",
      "tree": "f7fa8385ca921f5546bbb1c24a20aae9095ca786",
      "parents": [
        "a67eacace769095eb04b01681c99d931e68a4b08",
        "62948f53a2c71ee6da13016b940824984af63a69"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 10 20:22:05 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 10 20:22:05 2017 +0000"
      },
      "message": "Merge \"audio effects: filter reserved effect commands\" into klp-dev am: f57dc8b72f am: dc2efe3808 am: 4324bdc8f7 am: acbb8e7dd1 am: c6358fa910\nam: 62948f53a2\n\nChange-Id: Ia99ed9e04cf2d90ee3f201efd9f238fb06e3be88\n"
    },
    {
      "commit": "acbb8e7dd14793991a3e231f086fadc76e903216",
      "tree": "22cf4629c6137993b8742bfea7df875ac3dbbc27",
      "parents": [
        "abbc9ab00608f0502fbe30384c0b1b612dd59114",
        "4324bdc8f7a995bf05be8c6db8e9b1528b46c197"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 10 20:09:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 10 20:09:02 2017 +0000"
      },
      "message": "Merge \"audio effects: filter reserved effect commands\" into klp-dev am: f57dc8b72f am: dc2efe3808\nam: 4324bdc8f7\n\nChange-Id: I161bc14d3059af24463cfa4f473305b516a3bcd8\n"
    },
    {
      "commit": "0882414c30cbe31dfe69fa261e3286fa04c553ba",
      "tree": "5559abaf90754b43d118e1962d9569fa5cb9638d",
      "parents": [
        "1159ffd5e3f832206982d45a7b030b943cc4775e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 15 18:43:46 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jun 17 21:47:52 2017 +0000"
      },
      "message": "audio effects: filter reserved effect commands\n\nBlock effect commands reserved for framework use when\nreceived on server side IAudioEffect. Applications have no reason\nto use these commands and they present a unnecessary attack surface.\n\nBug: 62019992\nTest: run CTS tests for audio effects\nChange-Id: Ie680d5d5650f99dbabf93891703e1cde2c2e852d\n"
    },
    {
      "commit": "bc7f347ff5dc890ad0fa306f58d145e934e31ed4",
      "tree": "0164bf05d87776c3e073a32fba021b041f7a45b1",
      "parents": [
        "ec982d462866b8b985b4ed13a2e99556de094c0d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 19:27:57 2016 -0800"
      },
      "message": "DO NOT MERGE - improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n- Check reply size before writing status in EffectHandle::command()\n\nBug: 32707507\nBug: 32095713\n\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "84c392104e905bfacc753ec0ddb96ce7813d1889",
      "tree": "0e240354e488fc2694c20c30404dbc1cc98833b3",
      "parents": [
        "98c2151dc33db451ebf7351bdbcb70c163f602b9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 18:22:49 2016 -0800"
      },
      "message": "DO NOT MERGE - improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n- Check reply size before writing status in EffectHandle::command()\n\nBug: 32707507\nBug: 32095713\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "b47a5ab10732758aa84a064a0729314f3897d802",
      "tree": "e199df1695a26ec44920c5f7336a25f8160bd56a",
      "parents": [
        "1576f5968c4458af357065bf0f10acf71754cc21"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 17:43:51 2016 -0800"
      },
      "message": "DO NOT MERGE - improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n- Check reply size before writing status in EffectHandle::command()\n\nBug: 32707507\nBug: 32095713\n\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "39ca98f547e786a6c0258f17bd496a206f4a0ac3",
      "tree": "bcc9d473e7ddb2eb8fef08a62a4d0e21e87d3c66",
      "parents": [
        "72729c449d9f7a6f217be629066cb683ad27b37b",
        "b45c856249d678df55d609e734fee66fa0b333e1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 00:47:04 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 03 00:47:04 2016 +0000"
      },
      "message": "Effect: Use local cached data for Effect commit am: dd79ccda92 am: 82c8c7656f am: 9851dee7da am: 4242950061 am: a661c82829\nam: b45c856249\n\nChange-Id: I6cb0c8e2dbaa2ebe3d4fd4f283a2028ac099f3c3\n"
    },
    {
      "commit": "42429500612b768902442c9fe594327511462cc5",
      "tree": "db679b7d174cfb79cc290af0ecedea5c38306946",
      "parents": [
        "9161586309fd018a1503dc5227f2cb329b935213",
        "9851dee7da476848ae9ef5e8fe07d3634d50c208"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 00:40:33 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 03 00:40:33 2016 +0000"
      },
      "message": "Effect: Use local cached data for Effect commit am: dd79ccda92 am: 82c8c7656f\nam: 9851dee7da\n\nChange-Id: I3d375c671122e61cf0b530457c37c1cd5c06e563\n"
    },
    {
      "commit": "82c8c7656f7c7b7269fd7f7a9f1e657109824123",
      "tree": "656627902f4f2db291620bee9b17c251b9fa164f",
      "parents": [
        "01e854056a73ee914bbac079389c720e813e4c57",
        "dd79ccda92c1e9b982b2d0f8877d98e5258fbb73"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 00:36:01 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 03 00:36:01 2016 +0000"
      },
      "message": "Effect: Use local cached data for Effect commit\nam: dd79ccda92\n\nChange-Id: Ide8165907e03b9d400eaa33a222ceeae782d6509\n"
    },
    {
      "commit": "1576f5968c4458af357065bf0f10acf71754cc21",
      "tree": "656627902f4f2db291620bee9b17c251b9fa164f",
      "parents": [
        "e275907e576601a3579747c3a842790bacf111e2",
        "dd79ccda92c1e9b982b2d0f8877d98e5258fbb73"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 00:32:27 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 03 00:32:27 2016 +0000"
      },
      "message": "Merge \"Effect: Use local cached data for Effect commit\" into klp-dev"
    },
    {
      "commit": "72729c449d9f7a6f217be629066cb683ad27b37b",
      "tree": "a6b4eec1bebefc9e08adb56308caf33c87ba9ea1",
      "parents": [
        "e6dfef5e91847a0a3af510761dddf4d920f7b375",
        "8b9b199891bb1374e0aa9f68c911999285d04af4"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Wed Nov 30 19:38:50 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 30 19:38:50 2016 +0000"
      },
      "message": "Fix security vulnerability: potential OOB write in audioserver am: e275907e57 am: 01e854056a am: 3e8ab60b7f am: 9161586309 am: ad29b47d91\nam: 8b9b199891\n\nChange-Id: Id1d62d9ebabab42f5ca82ff2fbbcf14d130466f4\n"
    },
    {
      "commit": "9161586309fd018a1503dc5227f2cb329b935213",
      "tree": "b4017c17bc9ddbd82a9e92f57e41dc609da2eff4",
      "parents": [
        "8b850ec8d52d436f273ecbd745fa906f0aeb54a7",
        "3e8ab60b7f65dd4c5c9efa4a1c388a51fbbb5d11"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Wed Nov 30 19:23:21 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 30 19:23:21 2016 +0000"
      },
      "message": "Fix security vulnerability: potential OOB write in audioserver am: e275907e57 am: 01e854056a\nam: 3e8ab60b7f\n\nChange-Id: Ib575df34ec5bb7dc2cd83a859e10abe94e894317\n"
    },
    {
      "commit": "e275907e576601a3579747c3a842790bacf111e2",
      "tree": "6a6550b1636a64348b4d53d38fdb3039482f5c98",
      "parents": [
        "501aee7a542a8c461d48c27cb1148a0936e3a9e5"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Tue Nov 22 18:02:48 2016 -0800"
      },
      "committer": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Tue Nov 29 12:17:49 2016 -0800"
      },
      "message": "Fix security vulnerability: potential OOB write in audioserver\n\nBug: 32705438\nBug: 32703959\nTest: cts security test\nChange-Id: I8900c92fa55b56c4c2c9d721efdbabe6bfc8a4a4\n"
    },
    {
      "commit": "dd79ccda92c1e9b982b2d0f8877d98e5258fbb73",
      "tree": "eb7a2f14f528ad018d570b1412fcdcf3c03d57ea",
      "parents": [
        "501aee7a542a8c461d48c27cb1148a0936e3a9e5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 15 17:19:58 2016 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Nov 16 02:33:53 2016 +0000"
      },
      "message": "Effect: Use local cached data for Effect commit\n\nTest: POC, Cts Effect, BassBoost, EnvReverb, Equalizer,\nTest: LoudnessEnhancer, PresetReverb, Virtualizer, Visualizer\nBug: 32220769\nChange-Id: Iea96ba0daf71691ee8954cca4ba1c10fe827626e\n"
    },
    {
      "commit": "134e20847763b64ae4afb968f55801c0cfb26c5f",
      "tree": "307050ea3490fe852fb16185ca9905eca944a3f6",
      "parents": [
        "a44d1479c6f4264898a2ea44e358a1290da1e9b5",
        "f0f864a1e45b63a6614e90f86a576e7dfa0008c1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 10 19:52:27 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 10 19:52:27 2016 +0000"
      },
      "message": "Effects: Check get parameter command size am: 3d34cc76e3 am: 59920bf785 am: 14d87911d7 am: 79a088a065 am: 58e5681c96\nam: f0f864a1e4\n\nChange-Id: I4e1a1cbcc97223abf9f87a0e575f198342c2accf\n"
    },
    {
      "commit": "79a088a065f04239f404c4f94bc0d8bcc82ffaad",
      "tree": "3ccd5506f9dd4185a308776a29c63a434b94dd82",
      "parents": [
        "354864c4438b3110dd58710845246872d267aca6",
        "14d87911d7409ce7ccea00980fafccf2bd60e301"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 10 19:33:22 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 10 19:33:22 2016 +0000"
      },
      "message": "Effects: Check get parameter command size am: 3d34cc76e3 am: 59920bf785\nam: 14d87911d7\n\nChange-Id: Icbc43a1d34af774dcf500cdb3548d0399f0b6943\n"
    },
    {
      "commit": "3d34cc76e315dfa8c3b1edf78835b0dab4980505",
      "tree": "fb24b34565049a9208769dc0424aba9d0cd666fd",
      "parents": [
        "2c28e5b1266a12163fed8236d34830f69f8216a2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Nov 04 19:40:53 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Nov 05 02:52:49 2016 +0000"
      },
      "message": "Effects: Check get parameter command size\n\nTest: Custom test.\nBug: 32438594\nBug: 32624850\nBug: 32635664\nChange-Id: I9b1315e2c02f11bea395bfdcf5c1ccddccbad8a6\n"
    },
    {
      "commit": "18e5ce689152760c29dbe83e68371b116a8f0605",
      "tree": "f0626a37f128d36bc34f78063e803c95a02a7000",
      "parents": [
        "1dd4973234911d447f7cae02c4beace1ef231bbd",
        "1ab50af9c1c1617a3d25dfc0458b428db69630c0"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 19 19:24:45 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 19 19:24:45 2016 +0000"
      },
      "message": "Add EFFECT_CMD_SET_PARAM parameter checking am: e4a1d91501 am: 19d8a61324 am: ebd9f1029e am: d37cf46848 am: ced0dd635e am: 00acbf03be\nam: 1ab50af9c1\n\nChange-Id: I5be11eba820ccb3f6c3bb97b3fa417504306bb3f\n"
    },
    {
      "commit": "d37cf46848ff1eeedcf2c05bf00c18582941a412",
      "tree": "bec8df82d205971616059be56b15999e3e69f605",
      "parents": [
        "83cf293b73ed9ddff3162b75083f6a75dd07b7f2",
        "ebd9f1029e5e317e0fcf37163b741a0e48a39fa1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Aug 19 19:04:15 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 19 19:04:15 2016 +0000"
      },
      "message": "Add EFFECT_CMD_SET_PARAM parameter checking am: e4a1d91501 am: 19d8a61324\nam: ebd9f1029e\n\nChange-Id: Ic2fa5bba22d9ffc7b69ea97e2e4bc44d8a0fa42d\n"
    },
    {
      "commit": "e4a1d91501d47931dbae19c47815952378787ab6",
      "tree": "427ee53e773dbdbb8b60f10ac9c8ae068bd30fdd",
      "parents": [
        "17a10c50e20d934c1ac5956fe9019d3013e3f8b3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Aug 17 14:11:13 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 18 15:56:23 2016 -0700"
      },
      "message": "Add EFFECT_CMD_SET_PARAM parameter checking\n\nBug: 30204301\nChange-Id: Ib9c3ee1c2f23c96f8f7092dd9e146bc453d7a290\n"
    },
    {
      "commit": "97dc6890807d2cf861bac781acad375173906e62",
      "tree": "9809fc859f6dd936c532ed064dc443bb8758eef3",
      "parents": [
        "69367123bee39b647d9c72e8f88cea4d241123e0",
        "4d942ffdf7cfbfe43133bf1c87eda4e4569f3507"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jun 21 17:52:29 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jun 21 17:52:29 2016 +0000"
      },
      "message": "Check effect command reply size in AudioFlinger am: 110bc9547a am: 075c8f7713 am: c971a59f4c am: 195f7c6125 am: 1e1b7e4c3d am: d34a9dfc5e\nam: 4d942ffdf7\n\nChange-Id: I5d59510f7bd7c8b72deef4de177193028af1f4c7\n"
    },
    {
      "commit": "195f7c6125d7c0a48c9f7f0aeb0311ba076a8df7",
      "tree": "0cf37057165f2c538565caa6eec53e26346c053b",
      "parents": [
        "719fd3c0625705777f1ef0667005b111733c2e0b",
        "c971a59f4c2491a2e5143f7118debd7c92fa3333"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jun 21 17:41:26 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jun 21 17:41:26 2016 +0000"
      },
      "message": "Check effect command reply size in AudioFlinger am: 110bc9547a am: 075c8f7713\nam: c971a59f4c\n\nChange-Id: I86d971f1a537a34e90e4f0697c9c9a43e509cfc4\n"
    },
    {
      "commit": "110bc9547a0c851ff1f20f5d7579b34f942947b8",
      "tree": "b719fae497302d432d53af62476ca1508f4854cc",
      "parents": [
        "dc7357d20175fadfabd903370094917408bf6e3e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 20 15:22:52 2016 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 20 15:22:52 2016 -0700"
      },
      "message": "Check effect command reply size in AudioFlinger\n\nBug: 29251553\nChange-Id: I1bcc1281f1f0542bb645f6358ce31631f2a8ffbf\n"
    },
    {
      "commit": "d11da70f0e1d06ee6c7b2f83fcfb06257a1c90f2",
      "tree": "3620c1269dd9a73cf533cbed5888459edbf87abf",
      "parents": [
        "70b2313318aaf245d185b6ddb188606608bdf7c9"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Thu May 28 12:14:12 2015 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Thu May 28 14:28:40 2015 -0700"
      },
      "message": "Fix for audio effects in offload path for mono content\n\nEffects path is always stereo, and it should be initialized as thus even\nif the source is mono. Fixed condition check before initialization.\n\nbug: 18157592\nChange-Id: Idd7241931e4ba6085fd804345128d898c8511e11\n"
    },
    {
      "commit": "63238efb0d674758902918e3cdaac322126484b7",
      "tree": "07fdf37a2bc73a886d8ea41f69e722ed914754af",
      "parents": [
        "d7e1d08c2ac21cdd2f3b7f83fec7094f6a98fc08"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 02 15:50:29 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 03 08:50:40 2015 -0800"
      },
      "message": "Remove redundant semicolon from namespace closing\n\nChange-Id: I163f9d3d216c283ae1160ce4802e5247cf44fba7\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "b1f5b0dd237c2767ad7bc0b081d03aafc87589ea",
      "tree": "ccbb2f862d303a5cac8cbaf291338ed4e0ec5199",
      "parents": [
        "43bdc1de363a3c72c7dcf9c9a898bac109dc7cb5",
        "01d3acba9de861cb2b718338e787cff3566fc5ec"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 10 18:55:32 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 10 18:55:32 2014 +0000"
      },
      "message": "Merge \"Fix clang warnings in AudioFlinger\""
    },
    {
      "commit": "01d3acba9de861cb2b718338e787cff3566fc5ec",
      "tree": "597410f74cf8cc6e3103a5f6b209c3f40cd388c6",
      "parents": [
        "ec95f0e82a680931e9c7c9011dbbd68d5ab484c8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 06 08:24:07 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 10 08:22:42 2014 -0800"
      },
      "message": "Fix clang warnings in AudioFlinger\n\nChange-Id: I0fa61025c979709ad7d655bc717df5f194b6089e\n"
    },
    {
      "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": "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": "e75da4004b2c814987aa2adf8a76190f92d99c65",
      "tree": "35c6bc8914384e610eba3633a08e2f5e78b062b5",
      "parents": [
        "663c2247b71086e30bfd3192979d1dd7f15c539e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 20 13:54:52 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 20 14:51:07 2013 -0800"
      },
      "message": "Fix bug in creation of EffectHandle when out of memory\n\nIf there is insufficient client memory to create the EffectHandle,\nit was returning a handle which would be useless.  Now it correctly\nreports the out-of-memory error back to client.\n\nChange-Id: I894e65d5d17df39383032c1527be6ccd35f578bb\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": "98232ab7c20bfbdfe176d2c25bb810dbb5e7b4f1",
      "tree": "1c7a424cd5c6592a4253cb8b9f9779e193d61262",
      "parents": [
        "a6c7d98033c161592a062c61eaa6b7fd635e3006",
        "a2340b3059b9d6e4286d0db7069df477c164df0c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 30 14:13:39 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 30 14:13:39 2013 -0700"
      },
      "message": "am a2340b30: Merge \"Don\\\u0027t call audio effect process on offloaded playback threads\" into klp-dev\n\n* commit \u0027a2340b3059b9d6e4286d0db7069df477c164df0c\u0027:\n  Don\u0027t call audio effect process on offloaded playback threads\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": "fed6292af65a0b97b583ecbd3c232b3811a3f37b",
      "tree": "24d1dc7750659a108dd48ec46ba89a9a49bd019d",
      "parents": [
        "d2ac3144e201398340cc5b9bb36e5efe39edd9eb"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 25 18:50:33 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 26 11:43:58 2013 -0700"
      },
      "message": "Don\u0027t call audio effect process on offloaded playback threads\n\nAn audio effect process command is not meant to be called for\n playback threads belonging to offloaded playback.\n\nBug 10933817\n\nChange-Id: Idc7b6a0224791bbf8d61648474d3c288617c498f\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": "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": "6e2ebe97f2ad0a21907f20f9ee644c4eacbb7a40",
      "tree": "ea9d525f25620253ea86f434452bc37fbad73f76",
      "parents": [
        "e198c360d5e75a9b2097844c495c10902e7e8500"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 13 09:14:51 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 13 09:55:59 2013 -0700"
      },
      "message": "Use curly braces in \u0027if\u0027 to make it easier to add logs\n\nChange-Id: I58b33fefdd8bf703647414157a99a3223be3531c\n"
    },
    {
      "commit": "bfb1b832079bbb9426f72f3863199a54aefd02da",
      "tree": "5007d22456776dc77d124be84bcfe8bc4152bbb2",
      "parents": [
        "fc5ea08326b510c6f82f71845d95a8758a6ab698"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 07 09:53:42 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 25 14:08:09 2013 -0700"
      },
      "message": "AudioFlinger: offload playback, non-blocking write\n\n- Added specialized playback thread class for offload playback,\nderived from directoutput thread.\nThis thread type handles specific state transitions for offloaded\ntracks and offloading commands (pause/resume/drain/flush..) to audio HAL.\nAs opposed to other threads, does not go to standby if the track is paused.\n\n- Added support for asynchronous write and drain operations at audio HAL.\nUse a thread to handle async callback events from HAL: this avoids locking\nplayback thread mutex when executing the callback and cause deadlocks when\ncalling audio HAL functions with the playback thread mutex locked.\n\n- Better accouting for track activity: call start/stop and release Output\nmethods in audio policy manager when tracks are actually added and removed\nfrom the active tracks list.\nAdded a command thread in audio policy service to handle stop/release commands\nasynchronously and avoid deadlocks with playback thread.\n\n- Track terminated status is not a state anymore. This condition is othogonal\nto state to permitted state transitions while terminated.\n\nChange-Id: Id157f4b3277620568d8eace7535d9186602564de\n"
    },
    {
      "commit": "153b9fe667e6e78e0218ff0159353097428c7657",
      "tree": "360a76911071e362a94af32ccf67ce9619629708",
      "parents": [
        "20f4754b7e687d3718a0a0a585f2c9ac22e2567d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 15 11:23:36 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 19 09:30:37 2013 -0700"
      },
      "message": "Make AudioFlinger::instantiate() more resilient when called from separate module\n\nBug: 8834855\nChange-Id: I4cd842cdfb09d2aaaaab9df9ac3bec6179709bd3\n"
    },
    {
      "commit": "7e1139c0377b6806942fb2a043737b3b9cf0ae91",
      "tree": "4058659d99edb14cb95a7b7265db54eb8c6ef867",
      "parents": [
        "62a8f67f33faf19d0ff815672dd19bb71dd0d650"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 06 18:29:01 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 06 18:33:08 2013 -0700"
      },
      "message": "AudioFlinger: do not cache audio device when 0.\n\nAudioFlinger should not cache the audio device\npassed to the audio HAL when it is AUDIO_DEVICE_NONE\nbut keep previous valid selection instead.\n\nBug: 9323399.\nChange-Id: I6f9480e55a21be4115453e6a5eebc5cf2536c476\n"
    },
    {
      "commit": "d0ebb538599cc25726b856e0f5deeb8215db8c92",
      "tree": "f8b5bfbd9332676485198bca0132bb16bedf404b",
      "parents": [
        "d2c90696403bb3c9e28d7b51d65c9468bdf8e78b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 02 16:41:41 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 02 16:47:13 2013 -0700"
      },
      "message": "audioflinger: add effect config status check\n\nCheck the result of the effect engine configuration command\nand do not attempt to send parameters to, enable, or process\nthe effect if configuration fails.\n\nBug 8512027\n\nChange-Id: I8c78a05d79fba36b1a387aa5cf2700612301ac91\n"
    },
    {
      "commit": "ca7cc8273ffd88b9b89655808ee7e3df74162b83",
      "tree": "17477e1e7a66afba5f535ba984a22cc7898797b2",
      "parents": [
        "a81a88597138de226da88fe10456d46289107e8a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 19 14:55:58 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 19 19:35:38 2012 -0800"
      },
      "message": "AudioFlinger files reorganization\n\nAudioflinger.cpp and Audioflinger.h files must be split to\nimprove readability and maintainability.\n\nThis CL splits the files as follows:\n\nAudioFlinger.cpp split into:\n- AudioFlinger.cpp: implementation of IAudioflinger interface and global methods\n- AFThreads.cpp: implementation of ThreadBase, PlaybackThread, MixerThread,\nDuplicatingThread, DirectOutputThread and RecordThread.\n- AFTracks.cpp: implementation of TrackBase, Track, TimedTrack, OutputTrack,\nRecordTrack, TrackHandle and RecordHandle.\n- AFEffects.cpp: implementation of EffectModule, EffectChain and EffectHandle.\n\nAudioFlinger.h is modified by inline inclusion of header files containing\nthe declaration of complex inner classes:\n- AFThreads.h: ThreadBase, PlaybackThread, MixerThread, DuplicatingThread,\nDirectOutputThread and RecordThread\n- AFEffects.h: EffectModule, EffectChain and EffectHandle\n\nAFThreads.h includes the follownig headers inline:\n- AFTrackBase.h: TrackBase\n- AFPlaybackTracks: Track, TimedTrack, OutputTrack\n- AFRecordTracks: RecordTrack\n\nChange-Id: I512ebc3a51813ab7a4afccc9a538b18125165c4c\n"
    }
  ]
}
