)]}'
{
  "log": [
    {
      "commit": "32f0d1689bd2eea6f43d7fb53faaedc23bd101d7",
      "tree": "3144c04d2bba1d717b30fe54fb4e4f08c478f982",
      "parents": [
        "a4f00e2aeadc9dc5c2f4970cd61ace72438136d4"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jul 30 14:42:32 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 04 14:06:22 2019 -0700"
      },
      "message": "libaudioprocessing: Extract vendor-available part of AudioMixer\n\nSplit AudioMixer into the base part which doesn\u0027t rely on\nthe framework and can be used in vendor code and the derived part\nwhich is intended to be used by Audioflinger.\n\nTest: A/B compare output from test scripts, manual testing on the phone\nMerged-In: I24c390f67f20baa8109902099359ca6e34eebcfd\nChange-Id: I24c390f67f20baa8109902099359ca6e34eebcfd\n"
    },
    {
      "commit": "a4f00e2aeadc9dc5c2f4970cd61ace72438136d4",
      "tree": "0cad5d0e9d535b38da7d03253141cc7606e45220",
      "parents": [
        "9b6599e1e10232e9c6e67e1d6d26265b8e8da885"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jul 31 14:53:29 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 04 14:06:22 2019 -0700"
      },
      "message": "AudioMixer: Cleanups\n\n- remove unused ARRAY_SIZE;\n\n- fix indentation for TIMESTRETCH in setParameter;\n\n- move trackNames method implementation and BLOCKSIZE constant\n  into .cpp file;\n\n- whitespace fixes.\n\nTest: make\nMerged-In: Idc5da55c8c3af0d59b9a7a12d081747b0a99dafc\nChange-Id: Idc5da55c8c3af0d59b9a7a12d081747b0a99dafc\n"
    },
    {
      "commit": "ea8fa7a5eea3d55c75982787571d70a70fa5280a",
      "tree": "8e0a6e45768fee1146cfdac9a06471cb0958ef50",
      "parents": [
        "bb08e4d99b0915f4b25fefeda9c833c96ceb785a"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Feb 22 14:41:50 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Mar 06 16:54:23 2019 -0800"
      },
      "message": "Refactor adjust channels buffer provider.\n\nCombine adjust channels buffer provider and adjust channels non-destructive\nbuffer provider.\nWhen contracting mono + haptic channels to mono, do not use\nadjust_channels to avoid mixing haptic channel into audio channel.\n\nBug: 125915810\nTest: play audio-haptic coupled files\nChange-Id: I39916a3e0628a44ed4a148c265564af7135a2176\n"
    },
    {
      "commit": "c7c48f1b2522a639f09b2ed095109482809b47b0",
      "tree": "de0082ff51147bf5a6bbebf0ac71b0892f568991",
      "parents": [
        "4d4ca6ada3d9f1d535bc4bee2362ff93f88cd55f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Nov 16 16:42:32 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Feb 06 18:59:06 2019 -0800"
      },
      "message": "AudioMixer: Set initial volume to 0 for safer ramping\n\nTest: Basic audio sanity, AudioFlinger tee\nBug: 117745106\nChange-Id: I25f946a4700323ae7505ec582874939bbb012ec6\n"
    },
    {
      "commit": "77270b880570e07a5d80b23371f53638ec30fb5c",
      "tree": "4cdb67f28ef7bb47dad1ac19cadb48febf2be8a7",
      "parents": [
        "4b7f683cf9fbaa2b427f03bd067ee2588906ac44"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 18 15:41:29 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 30 15:18:23 2019 -0800"
      },
      "message": "Apply intensity control for haptic data.\n\nUse the same logic in VibrationEffect.scale to control the intensity of\nhaptic playback in audio framework. Note that as the maximum amplitude\nof vibrator is 255, convert the haptic data to pcm_8_bit before doing\nscaling.\n\nTest: Manually\nChange-Id: I6136d27c9255a215834b6e3092aa8ad696fbae04\n"
    },
    {
      "commit": "669425507df4a9ee4d062d994cf9549ed5f7723f",
      "tree": "14fa42b2652d5b976c74a14007376267ff9333d6",
      "parents": [
        "ddafe428bbd00f8212380800c2bde0466e2cab17"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 21 16:07:12 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 21 16:14:31 2018 -0800"
      },
      "message": "AudioMixer: Accept a float downmixer\n\nTest: Play Music with multichannel source using float and int16 downmixer\nBug: 121222814\nChange-Id: I1057b3a2f342e42ab56652f724111fa7cd68d1cf\n"
    },
    {
      "commit": "245cdd91559873aeacf21b7c780655ef43c01682",
      "tree": "336ec5eaea56659c21e9441c0d2b5a03102b9b32",
      "parents": [
        "dce8f8cc41cb6be63d13ad0099d61807746ff5d7"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Dec 07 17:55:15 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 12 11:33:47 2018 -0800"
      },
      "message": "Support audio-haptic coupled playback.\n\nWhen trying to play with haptic channel mask, use adjust channels\nbuffer provider to make the haptic channel the same as the output one.\nIf haptic playback is supported, use adjust channel non destructive\nbuffer provider to output haptic data to the end of the sink buffer.\nOtherwise, haptic data will be ignored.\n\nTest: Manually\nBug: 111454766\nChange-Id: Ic5f780de48c1e71de6ba5c4774d1ed2e9c8c51a0\n"
    },
    {
      "commit": "dce8f8cc41cb6be63d13ad0099d61807746ff5d7",
      "tree": "f85faa34c35ce81c45bcbd5bfed3fc93073e37f8",
      "parents": [
        "6b6a0f05248fc646d42f09cb891d8b6fda19426e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Dec 10 17:49:31 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 12 11:23:05 2018 -0800"
      },
      "message": "Add buffer provider that can adjust channels.\n\n1. Add adjust channels buffer provider, which will expand or contract\nsample data from one interleaved channel format to another. Expanded\nchannels are filled with zeros and put at the end of each frames.\nContracted channels are omitted from the end of each audio frame.\n\n2. Add adjust channels non destructive buffer provider, which could\nexpand or contract sample data from one interleaved channel format to\nanother while not destructing the buffer. Extra expanded channels are\ninterleaved in from the end of the input buffer. Contracted channels are\ncopied to the end of the output buffer. Contracted channels could be\nwritten to an output buffer with certain audio format.\n\nTest: Manually\nBug: 111454766\nChange-Id: I3f963307e73b3f7aa662d4127f78f0c61ac84510\n"
    },
    {
      "commit": "3a34df9c6e81d4638dcd763f990de89b1de3a8b5",
      "tree": "3ca216b7c13a8bc0617016ed9b177b2431de9044",
      "parents": [
        "aec9c3e4b573862dacb4b4cec4c87cf736a3a28e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Aug 21 12:32:30 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Aug 30 11:56:25 2018 -0700"
      },
      "message": "AudioMixer: Change setBufferProvider order of reset\n\nTest: stress test\nBug: 111313529\nChange-Id: I1269c1e7f1609ee6edca31625cf508ff3101a0a0\n"
    },
    {
      "commit": "09f9c0237236f21cf331bcd811da89c26fc9c627",
      "tree": "a0a580f9c4f2270437739fc9ab8d1c46d073e4e1",
      "parents": [
        "93adab132cfdd6e71cee2af14eea711b49a4c76d"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jul 27 10:22:35 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jul 27 10:22:35 2018 -0700"
      },
      "message": "Fix undefined error in ALOGV_IF.\n\nError found with clang static analyzer after\nmaking ALOGV_IF to use its parameters.\n\nBug: 111850071\nTest: build with WITH_TIDY\nChange-Id: I35bdfd6583a106d82f30063cbd629bcff1d58289\n"
    },
    {
      "commit": "b5d119596a1fea25f24f3c9209e656a684887ed8",
      "tree": "74009f018222e8855d7758051b4e5c2577d12f71",
      "parents": [
        "7bb4333ff2298d0cc1a2125e18a21c174bced01d"
      ],
      "author": {
        "name": "Yung Ti Su",
        "email": "andysu@google.com",
        "time": "Tue May 22 22:31:14 2018 +0800"
      },
      "committer": {
        "name": "Yung Ti Su",
        "email": "andysu@google.com",
        "time": "Wed May 23 12:09:15 2018 +0800"
      },
      "message": "AudioMixer: recreate Resampler if the track channel count has changed\n\nthe Resampler is recreated only if mixer channel count has changed.\nI removed the criteria since resampler need recreation when\ntrack channel count has changed.\nThis issue is due to the previous resampler still working with\nthe previous channel mask settings.\nTest: self-tested more then 50 times when a voice call ended\n          and there is an incoming Skype/LINE ringtone.\nBug: 78199280\n\nChange-Id: I042fb9214d07f198704cef3c96bf290c7d203461\n"
    },
    {
      "commit": "b3dee358b18472d6623a9d6342d7f2f7e8e45bec",
      "tree": "a3d6104f1bd6212309642fc7138a3245be5c7ee8",
      "parents": [
        "0dd0949cae167f88f280510cb49151ef32fde639",
        "e053bfaaa6477016b935c98cacf0b297b5d3d6e1"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri May 11 02:15:46 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 11 02:15:46 2018 +0000"
      },
      "message": "Merge \"libaudioprocessing: clamp application provided float audio\" into pi-dev"
    },
    {
      "commit": "1a0ecc383391e02a46be7bd4e9ec682e839b79e5",
      "tree": "51cd658083d107fa15ddf2664067516a5e4ac6f5",
      "parents": [
        "527da4c9d30c977c0105a288b20a77f0f9e8d0d3"
      ],
      "author": {
        "name": "Yung Ti Su",
        "email": "andysu@google.com",
        "time": "Mon May 07 11:09:15 2018 +0800"
      },
      "committer": {
        "name": "Yung Ti Su",
        "email": "andysu@google.com",
        "time": "Mon May 07 16:41:16 2018 +0800"
      },
      "message": "AudioMixer: Always do prepareForReformat() in setChannelMasks()\n\n    Always prepareForReformat() when channelmask has changed,\n    no matter needing a downmix or not.\n    Since ReformatBufferProvider would need to reset when\n    channelmask has changed.\n    Test: self-tested more then 50 times when a voice call ended\n          and there is an incoming Skype/LINE ringtone.\n    Bug: 78199280\n\nTest: bug is fixed.\nChange-Id: I08c74b00fcbaf8aacef7b1d1c1e840cae347accb\nSigned-off-by: Yung Ti Su \u003candysu@google.com\u003e\n"
    },
    {
      "commit": "e053bfaaa6477016b935c98cacf0b297b5d3d6e1",
      "tree": "d2076ced75198bd8f53f291f3b59ca34ffe9e037",
      "parents": [
        "c3d554d42f637a9076473b070b30ba3e8229189c"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Nov 09 22:07:34 2017 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri May 04 17:13:51 2018 -0700"
      },
      "message": "libaudioprocessing: clamp application provided float audio\n\nFor security reason, float buffers provided by application must be\nclamped to FLOAT_NOMINAL_RANGE_HEADROOM.\nWith the new all float pipeline, float are no longer clamped by their\nconversion to fixed point.\n\nThis patch adds a float buffer provider that clamps float samples\nas they are copied to audio pipeline.\n\nTest: Play music, play video in chrome (opensles format float),\n      play float pcm audio file specially crafter with \u003e\u003e 1 samples.\nBug: 68099072\nChange-Id: I220b436d9982bc43a75715a030efd0e6a0c79fa3\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "a6018899f9df9be5ad4e66fd1e38b6ef2b66d64e",
      "tree": "ee9d4e8eb22142cf70833a5995fa4c7412983050",
      "parents": [
        "08de5c2378a0e84ae41c05b26f8cb6de045023ef"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Feb 21 14:32:16 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Feb 21 15:12:13 2018 -0800"
      },
      "message": "AudioMixer: Fix aux effect pointer computation\n\nTest: Solo Tester + BT + Preset Reverb Aux Effect\nBug: 73723887\nChange-Id: Ia765d49214bf855737d0d28a1ba08ba44267aed0\n"
    },
    {
      "commit": "1bc088a918d7038603230637d640941953b314d4",
      "tree": "e231c2b22d944eaed29445fe4a35861fddb50e54",
      "parents": [
        "e54461ae132a79d0ffa9d3ec4631df13eb5c7809"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 09 15:57:31 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 16 15:50:32 2018 -0800"
      },
      "message": "Call AudioMixer only from MixerThread threadLoop.\n\nAs part of change:\nRemove track name offset by TRACK0.\nMove track name management to the Tracks class.\nSync mixer track name to FastMixer track index.\n\nFixes regression introduced by commit 8ed196a.\n\nTest: SoundPool, AudioTrack CTS, Usability\nBug: 72937362\nBug: 73004420\nChange-Id: I2f1a33f6f0da66bcd7aa91e2a4b663ff822df645\n"
    },
    {
      "commit": "8ed196ac0f4aa8ae811c012dfa6f596fddebf1bf",
      "tree": "fda78f06eeb733b00fda71fbd401b6a787b76190",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 05 13:21:11 2018 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 23 23:04:33 2018 -0800"
      },
      "message": "AudioMixer: Enable 256 tracks, up from 32 tracks\n\nClient apps can have 40 tracks, up from 14 tracks\n\nRelated code cleanup:\na) Removed State nested class\nb) Moved static functions to Track member functions\nc) Moved static function hooks to pointer-to-member-function hooks\nd) Some reorganization of touched code for recent C++ style\n\nTest: test-mixer native mixer test\nTest: SoloTester effect test\nTest: SoundPool with many tracks\nTest: CTS AudioTrackTest\nBug: 64161002\nChange-Id: I0d09620acd715d577e776bb6f76e94e87e554520\n"
    },
    {
      "commit": "c1c11b413026aa47f37960a03f83216bdf891b71",
      "tree": "48530e003c8bfbcc2c5faf2d0d0299fb6ae8605e",
      "parents": [
        "080b934e6da4c1e09c91e236f5d0705edbd6cb0c"
      ],
      "author": {
        "name": "Yahan Zhou",
        "email": "yahan@google.com",
        "time": "Tue Jan 16 12:44:04 2018 -0800"
      },
      "committer": {
        "name": "Yahan Zhou",
        "email": "yahan@google.com",
        "time": "Fri Jan 19 18:33:48 2018 +0000"
      },
      "message": "Audio mixer fix for number of frames not being a multipler of blocksize\n\nWhen the desired number of frames is not a multipler of blocksize,\nprocess__genericNoResampling will ask for 0 frames and crash.\n\nFix it.\n\nBUG: 70902559\n\nTest: cts-tradefed run cts -m CtsMediaTestCases -t\nandroid.media.cts.AudioTrackLatencyTest#testOutputLowLatency\n\nChange-Id: Id2ce771ee8a4e49fe6ea82e500017324c8918a73\n(cherry picked from commit e38b72e410def6c44f090d149879cb620fcc7955)\n"
    },
    {
      "commit": "116a49881b35f561f6ee316990d425fad56e7487",
      "tree": "26d80d6e59138bcf42902cfee61713817cc06c09",
      "parents": [
        "fa69ca3012fb4065dd892f363957a4f9a6d24757"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 30 10:15:08 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 06 19:48:37 2017 -0800"
      },
      "message": "AudioEffect: Convert aux buffer format from q4.27 to float\n\nTest: Solo Tester aux reverb\nBug: 69853407\nChange-Id: I72ca2377036e5ccfd5f4631ac6cc5e86d2e40433\n"
    },
    {
      "commit": "5effdf6d9ed17b4ff67a7e1adc56996c01c43383",
      "tree": "06e5f064d6dc9b5aea55cf9a12c39d9e68091a85",
      "parents": [
        "cd742b9174eac9f8b6a108512818f2d3a2392ea8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 27 13:51:40 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 27 14:47:19 2017 -0800"
      },
      "message": "Deprecate ditherAndClamp with memcpy_to_i16_from_q4_27\n\nTest: test-mixer and SoloTester\nBug: 69636805\nChange-Id: I5cc04d82f3e46fbfc8188a63eb2a90fb70634c90\n"
    },
    {
      "commit": "8da62466e24156861eca9a903665eae11f2bf30b",
      "tree": "a146fefb919dffa1d462b81531bcbfe4bb00e2a6",
      "parents": [
        "4311dcd79aba460ba26fba11a03b43b8d3818281"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Nov 09 22:07:59 2017 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Nov 10 23:02:41 2017 -0800"
      },
      "message": "Fix downcast that was using reinterpret_cast instead of static_cast\n\nTest: compile\nBug: 68099072\nChange-Id: Ic44941862672f4baaf0743f1df1375444d4226a2\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "952a05feddbab2097e4dc4fb72438d51da198396",
      "tree": "8cb58369709691781257115f67a8c00550b36044",
      "parents": [
        "86175456fb088c8cda6c3d6ee3f77254aa1318cd",
        "8aa96b78076a10f803329a49abcdc38204372f6f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 01 15:01:51 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon May 01 15:01:51 2017 +0000"
      },
      "message": "Merge \"Remove unused #include.\" am: 66f70d2c8f am: ad06541333 am: dfb2379a16\nam: 8aa96b7807\n\nChange-Id: I3c04d3d225e9ebeca3ab6a9bf8a632e3ef2237b4\n"
    },
    {
      "commit": "8aa96b78076a10f803329a49abcdc38204372f6f",
      "tree": "c97c94d2a5d6f4b8a59a1a14c479ff8112cf9e79",
      "parents": [
        "dc57616ef1949898a92d2ef86433dd1918be7b8e",
        "dfb2379a1669a1a50d26fd67742593c1141cd723"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 01 14:59:23 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon May 01 14:59:23 2017 +0000"
      },
      "message": "Merge \"Remove unused #include.\" am: 66f70d2c8f am: ad06541333\nam: dfb2379a16\n\nChange-Id: Ic8190f5093c56e5f1b949b7e96aa75fba14e42ad\n"
    },
    {
      "commit": "00f5e1ab711371c5cf0ef3a92920982714730401",
      "tree": "24d4dfdf9e5f4f8065f0b2574efe0fc7189a7539",
      "parents": [
        "fdb3f0a8c33b8a02c9274c84293b70929c1a1da6",
        "23b206dbf8828c7ddddfb7f3029995e63a50cc7e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 26 23:58:09 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 26 23:58:09 2017 +0000"
      },
      "message": "Merge \"AudioMixer: fix assertion for multichannel playback\" into oc-dev am: b0cc0bc266\nam: 23b206dbf8\n\nChange-Id: Ic4daba25135f4588fe25455609a524a21452a316\n"
    },
    {
      "commit": "85395896e72f8fc943c79c134e79b3ad9c783363",
      "tree": "ac326dd9dc56b5ad6587b1a81a3ed6c18953f967",
      "parents": [
        "94cfe137a105ec7db047e963e18483425e0d2272"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 25 16:47:52 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 25 16:47:52 2017 -0700"
      },
      "message": "AudioMixer: fix assertion for multichannel playback\n\nReset mPostDownmixReformatBufferProvider before changing\ndownmixerBufferProvider.\n\nTest: Play Music with multichannel files\nBug: 27526910\nChange-Id: I5803e169cb9da4e7681bc8caf1452e79e5a4d1d5\n"
    },
    {
      "commit": "3ab8d66ad1c47a5ee1f87ad9f5ee2666cf89b32d",
      "tree": "4e0b0664033e13a14ad1c05652b7ccded31ee87c",
      "parents": [
        "8ae038e457b0b01c4f082ff5504f8b880b087f77"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 03 14:35:09 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 07 14:46:29 2017 -0700"
      },
      "message": "Rename symbols to be more consistent\n\nBug: 37153050\nTest: builds OK\nChange-Id: I7e55a03ca8e1f22901db6c8f6f2ad32e4c95a0cd\n"
    },
    {
      "commit": "068561c8e84569d51df2adbbb53b56fdfd09c06b",
      "tree": "67e6c9c383b4667adc502b0ed6928a672a6a5b6d",
      "parents": [
        "ee454fcb25bff0f9c5d3455775a4cb66429e875e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 03 17:09:32 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 10 17:06:46 2017 -0800"
      },
      "message": "AudioFlinger: Split off audio processing library\n\nTest: native AudioResampler test, general playback test\nBug: 31015569\nChange-Id: Ifb248f4402a583438d756c014dcd7a4577aef713\n"
    },
    {
      "commit": "c7ad5838d2aec7ff90db36069f3577d3c4feaa95",
      "tree": "c6b6eefdbf0aba6ece79f57803d2a54b329a26c0",
      "parents": [
        "d5eb866c536c3497e778742e5fda22ac1def9fc6",
        "25ef483a8c46d8ca7cbacf96e3bce5d783a63a86"
      ],
      "author": {
        "name": "Jinguang Dong",
        "email": "dongjinguang@huawei.com",
        "time": "Tue Nov 22 18:41:21 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 22 18:41:21 2016 +0000"
      },
      "message": "Merge \"framework/av: fixbug for mistake clear mainbuffer data, root cause by not offset to fout\"\nam: 25ef483a8c\n\nChange-Id: I6c8ee1c28b51f1578a781fdc7dd1d51326046d2f\n"
    },
    {
      "commit": "7c5ec035fe1c6f30f1303eee8e0a4c76389228ee",
      "tree": "b59b1c1ad183a8e612ec8fdd1f2b9eb7b0062dc2",
      "parents": [
        "11f51b046344c8e14ef764d755cae697f6bce4e8"
      ],
      "author": {
        "name": "Jinguang Dong",
        "email": "dongjinguang@huawei.com",
        "time": "Mon Nov 14 19:57:14 2016 +0800"
      },
      "committer": {
        "name": "Jinguang Dong",
        "email": "dongjinguang@huawei.com",
        "time": "Tue Nov 22 10:36:09 2016 +0800"
      },
      "message": "framework/av: fixbug for mistake clear mainbuffer data,\nroot cause by not offset to fout\n\nTest: 1. pair and connect with bluetooth ear phone;\n      2. record video by camera ,play and pause again by\n      loop test;\n      3. Checking whether ear phone has pop sound.\n\nChange-Id: Ief4117d634b9e7a9f27c669b8de7626b15df7636\n"
    },
    {
      "commit": "54efaa90a110e50b1b9a5e4badaf30d494be56a0",
      "tree": "54a0dc254b619d92b5945c9bd0b45a40d693c188",
      "parents": [
        "d3c73b760b8dcabf0988105521b33cff1deccf13",
        "527185755453d8cbdde97e8c956daa18d8b60987"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 01 22:29:29 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 01 22:29:29 2016 +0000"
      },
      "message": "audioflinger: fix OutputTrack initial check am: af3ec7c9a0\nam: 5271857554\n\nChange-Id: Icf61ce31fb83cc5796be5122c65b483437b17365\n"
    },
    {
      "commit": "af3ec7c9a0cfc483017d4457e0e3d77de4b1a33a",
      "tree": "2de75cb35401811b038042d1b111451d3f029984",
      "parents": [
        "3e5605b8b8a8f349d70cdb0d53409cfe69cada7b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 01 11:25:19 2016 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 01 11:34:34 2016 -0700"
      },
      "message": "audioflinger: fix OutputTrack initial check\n\nCall initCheck() on newly created OutputTrack in\nDuplicatingThread::addOutputTrack() to make sure that\nthe track is successfully attached to the AudioMixer.\n\nAlso make invalid track name always fatal in AudioMixer::deleteTrackName().\n\nBug: 29953737\nChange-Id: I47f2517bd53de940e125391de99c40611ad0fc9d\n"
    },
    {
      "commit": "4d1522bdc7efaa9677ac92b620cea9e9110ec2a4",
      "tree": "e6fbaf33f9204ac58f6ab8195e19666455f09f46",
      "parents": [
        "cc516cdd0293fead98ed33fa0334c79a940c8653",
        "53529cf975f5247bfa8dfd8bcbaaeb8ceebda3f0"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 24 11:32:12 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 24 11:32:12 2016 -0700"
      },
      "message": "resolve merge conflicts of 53529cf to nyc-dev-plus-aosp\n\nChange-Id: Iae19c31b9ce2d9c604040e54d6fbf125a3d3d362\n"
    },
    {
      "commit": "bf29173d6d63536ae9f8cfd1d02153237ee23612",
      "tree": "3f6fe33288711b73e8683d671a57860d6f14219d",
      "parents": [
        "0603c5dfc34923095218307674a60429bfa5873a"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 17 15:16:07 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 17 15:16:07 2016 -0700"
      },
      "message": "Fix misc-macro-parentheses warnings.\n\nBug: 28705665\nChange-Id: I97d1dec9a4397fd7a3cab5180a833066b8abe0ab\n"
    },
    {
      "commit": "d79072e9dff59f767cce2cda1caab80ce5a0815b",
      "tree": "cab9cab36ddf4bb61675c4508d923b283fd3edd6",
      "parents": [
        "a7b723715bab4ddf6db364c825135a9bc003c7c0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 06 08:41:20 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 25 15:34:04 2016 -0800"
      },
      "message": "Remove TimedAudioTrack and associated code\n\nBug: 8278435\nChange-Id: I095c1a4888e645e14d93b0b15fbef4524a831ca1\n"
    },
    {
      "commit": "6c7f062d3149d6890daaee64828959ad6f61ea54",
      "tree": "dcab2e17178bf6d01ead75fad5df883961a6e195",
      "parents": [
        "fa907d4ee326c7bb9cbb4882ab7c0ec42bbceee3"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Thu Apr 30 18:39:16 2015 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Jun 22 16:08:40 2015 -0700"
      },
      "message": "Using centralized isAudioPlaybackRateValid to validate parameters\n\nCentralized validation code\nbug: 20701446\n\nChange-Id: I9d9941c7639c05b2afe069ff4f858c693c910bfe\n"
    },
    {
      "commit": "e09c994e7a3e73d5dbdc73d1f2d3556ec2203b0d",
      "tree": "c064071eb6abe386343478b11ab86c5d85e41c75",
      "parents": [
        "523d08709ba4a0124eb2117907d79113fbe00cfb"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 08 16:58:13 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 21 14:20:53 2015 -0700"
      },
      "message": "Improve volume input check for AudioMixer\n\nChange-Id: I5b656b123847529f2b76af2a68bd4e9b691882f4\n"
    },
    {
      "commit": "d9f493ebcd1830c76d7b1782e64c7ba9ad8ab4bd",
      "tree": "1d075b113943a8e3a032b9162100f05490213250",
      "parents": [
        "69dce3343ffe33d2ba60ab4c6755953a7ec96899",
        "db4c031f518ae5806af73756273ff32cd8d0e4f8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 12 18:42:59 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 12 18:43:00 2015 +0000"
      },
      "message": "Merge \"Update sampling rate to 192kHz for devices\" into mnc-dev"
    },
    {
      "commit": "db4c031f518ae5806af73756273ff32cd8d0e4f8",
      "tree": "62f9e0541acccc3acacf808d2a3cdad130eb819b",
      "parents": [
        "18aa27016a94d0fee243637a80fd0741f89e08f2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 06 08:46:52 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 12 09:30:51 2015 -0700"
      },
      "message": "Update sampling rate to 192kHz for devices\n\nChange-Id: I0a83206be51d7ae18ccf85b94b2127356307be69\n"
    },
    {
      "commit": "43412fc79ceda964cf9d16e3b4c563849db57d3a",
      "tree": "98c5f3ccebfd54d45ed631256b47febfe03c3505",
      "parents": [
        "70c75d8c15707d5eade38fe3e622f8500c29556b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 08 16:14:36 2015 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 08 16:29:24 2015 -0700"
      },
      "message": "AudioMixer: fix for volume ramp in float mode\n\nBug: 20912450.\nBug: 19952126.\nChange-Id: I1ff3c3f4c0dd673bbbc17ce8da14d446fdb7e8a8\n"
    },
    {
      "commit": "20bd9bfc3ae429412c8eb98619b40fb8e3671bbc",
      "tree": "fd3901e733e87aeac5ec506070f66a2702c30a7c",
      "parents": [
        "983f2e02b342ef3ac4004471cbfd4cd8d5aecf7d",
        "73e62e2ea12e46825958eba718bd8d5e23064ec5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 22 19:16:15 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 22 19:16:16 2015 +0000"
      },
      "message": "Merge \"Fix single channel playback that does not use AUDIO_CHANNEL_OUT_MONO\""
    },
    {
      "commit": "5a8a95de6dad1a3bcf3da5a37b35766e89086e13",
      "tree": "64b82016eaef26f51b75470714172c06287c9c56",
      "parents": [
        "ea44f41bb142555e747cc11382296e94af99d312"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Sat Apr 18 14:47:04 2015 -0700"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Wed Apr 22 10:57:24 2015 -0700"
      },
      "message": "Use AudioPlaybackRate to hold TimestretchBufferProvider parameters\n\nUse this struct to handle the parameters for TimestretchBufferProvider all\nacross the system.\nAdd stretch mode and fallback mode to TimestretchBuffer Provider.\n\nChange-Id: I19099924a7003c62e48bb6ead56c785cb129fba2\n"
    },
    {
      "commit": "73e62e2ea12e46825958eba718bd8d5e23064ec5",
      "tree": "db5c4e3ffa06df9196ebbc4e5d3dff90e3c81b6a",
      "parents": [
        "7184bab920699d49718e8fc3cf8a23d3c9d8d54a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 20 12:06:38 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 21 15:28:48 2015 -0700"
      },
      "message": "Fix single channel playback that does not use AUDIO_CHANNEL_OUT_MONO\n\nMono channel playback without resampling and not using\nAUDIO_CHANNEL_OUT_MONO can show low frequency garbling.\n\nBug: 20463456\nChange-Id: I0c1bbf957ea439bb8d8da57b9e78938e1acb4793\n"
    },
    {
      "commit": "c5656cc900aeb4a705e27508dd82c70030a97709",
      "tree": "930d4266db7b4d93eb7ade5629812a722dc7920f",
      "parents": [
        "857d5a20a956ef61b64ae07b018ecc2f1eb0a503"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 26 19:04:33 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Apr 09 12:37:01 2015 -0700"
      },
      "message": "Add playback rate to AudioMixer\n\nBug: 19196501\nChange-Id: I42d1f90e6297cf3f1304860d1691a5dfedd4c37d\n"
    },
    {
      "commit": "857d5a20a956ef61b64ae07b018ecc2f1eb0a503",
      "tree": "6b0e743b3c7f027aff568ac842c629291d1d4207",
      "parents": [
        "f129b03fa583d4cc26fd9c9171b8fb3b0ed8d4f4"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Mar 26 18:46:00 2015 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 08 23:31:22 2015 -0700"
      },
      "message": "Factor out buffer provider code from AudioMixer\n\nIn preparation for playback rate support and timestretching.\n\nBug: 19196501\nChange-Id: I435accb852d32110dd0b3a9917488522c567ba80\n"
    },
    {
      "commit": "0e4421286b92a81e952f53210227adbf05d97c25",
      "tree": "e9a496cd2d5ec0bc2612e845732c2bbd5447d9fd",
      "parents": [
        "7c963e92bc11d4b6a22696c51f9abf42987a1f74",
        "5b8fde71e08f57478ef25d040fc5f66294011ac6"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 20 01:52:15 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 20 01:52:16 2015 +0000"
      },
      "message": "Merge \"Enable full floating point path in AudioMixer\""
    },
    {
      "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": "650ceb93e58435c3cb1fd1860393130121023c0d",
      "tree": "5f33a1ae10e8145bbd914014ec8ce86711811883",
      "parents": [
        "9ee53a49860e91c2b012883eef09d669a7829e06"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 29 13:31:12 2015 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 27 12:44:13 2015 -0800"
      },
      "message": "Add channel index mask to AudioMixer\n\nChange-Id: Ifbcb61cc24111b7efab5e8d119d44dab26ba1778\n"
    },
    {
      "commit": "5b8fde71e08f57478ef25d040fc5f66294011ac6",
      "tree": "419c62fb9364ffec59b5010e7775c739c2e2f625",
      "parents": [
        "7f47549516ae5938759b5c834c8423378a60b3d8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Sep 02 21:14:34 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Nov 07 16:46:37 2014 -0800"
      },
      "message": "Enable full floating point path in AudioMixer\n\nChange-Id: I7becce859d6e8db413e6a7c3193ae0f2af273599\n"
    },
    {
      "commit": "7f47549516ae5938759b5c834c8423378a60b3d8",
      "tree": "85c60a5278b4ae431a574b229a090e053866d7fb",
      "parents": [
        "0f451e92f09e089e588f303f729425a54fcd804b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 25 16:36:37 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Nov 07 11:35:47 2014 -0800"
      },
      "message": "Fix AudioMixer floating interaction with downmixer\n\nPreviously _if_ the full floating point mixer is enabled, a downmixer\nwould force the mixer input for a session submix to integer, breaking\nother mixer inputs to the same submix that were in float.\n\nUse another ReformatBufferProvider after the downmixer to solve\nthis issue.\n\nUpdate the test-mixer app and the mixer_to_wave_tests shell\nscript to detect this issue.\n\nBug: 17363939\nChange-Id: I74a56333f9ee75ddde39a75392c021c5eebddbef\n"
    },
    {
      "commit": "0f451e92f09e089e588f303f729425a54fcd804b",
      "tree": "8072a98cf33396b00b0a13664732c2f0e9fd4689",
      "parents": [
        "49699b56df293b5b6c5440a6488d27e611cfc769"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Aug 04 21:28:47 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Nov 07 10:14:22 2014 -0800"
      },
      "message": "Move AudioMixer buffer provider preparation into track\n\nBug: 17363939\nChange-Id: I1f0f597b008f7369df87ba369fabaa93dec08ea1\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": "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": "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": "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": "5e58b0abe5b6c8f5bd96a8f78bbeeeb4d3892020",
      "tree": "975ed02efce4eaefcf5b0ceb5f33d212542a33a6",
      "parents": [
        "72d039f007722c92ee5ea7ffd03ece19d2781103"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 23 19:07:29 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jul 08 21:09:13 2014 -0700"
      },
      "message": "Add floating point volume handling to AudioMixer\n\nUse floating point volume in AudioMixer mixing when floating\npoint input is used with the new mixer engine.\nAudioResampler is updated to take floating point volume to match.\nBoth legacy integer and floating point mixer engines work.\n\nFor now, integer volume is used when the new mixer engine\nruns in integer input mode, for backward compatibility with\nthe legacy mixer.  The new mixer engine will generally run in\nfloating point input mode. When the legacy path is removed,\nthe integer volumes will be removed.\n\nChange-Id: I79e80c292ae7c8b8bdd0aa371a1b2c3a1b618290\n"
    },
    {
      "commit": "3348e36c51e91e78020bcc6578eda83d97c31bec",
      "tree": "ee3df8ed9f79863fc34589813710896a7e08af86",
      "parents": [
        "075abae2a954bf3edf18ad1705c2c0f188454ae0"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 07 10:21:44 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 07 10:29:36 2014 -0700"
      },
      "message": "Replace int bitDepth with audio_format_t in Resampler\n\nRemove mBitDepth from class (not used).\nReplace with audio_format_t in factory method to distinguish\nbetween float and pcm 16-bit.\n\nChange-Id: I166860796c68285077ef4458d8758d19b82523f9\n"
    },
    {
      "commit": "296b741e8eb38e749e3202182f703a2e30ee5f1f",
      "tree": "7924f384f8e3ef4f063993e8721c67eb466cf58a",
      "parents": [
        "f92f22becdf7fce1f55d5ebd80ac2caa2ad55602"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jun 17 15:25:47 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jun 30 16:35:59 2014 -0700"
      },
      "message": "Add new AudioMixer processing hooks\n\nThis change adds new process and thread hooks for\nmulti-format handling.\nIt is enabled by setting kUseNewMixer \u003d true.\n\nChange-Id: I262a3d2e4411f8cef7370a497b77a34eb55f1f86\n"
    },
    {
      "commit": "6be494077f8d7970f3a88129c5d139c5a0c88f6d",
      "tree": "8c77f163bd84e808693832666d29b42f73361fc5",
      "parents": [
        "97ae82408469286426d8dc57a361350f74e24a8b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 30 10:42:03 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 30 17:07:44 2014 -0700"
      },
      "message": "Change parameter type for volume to float in AudioMixer\n\nChange-Id: I4da1505ce852505f86f8e5b87f60e8edceeb30e0\n"
    },
    {
      "commit": "97ae82408469286426d8dc57a361350f74e24a8b",
      "tree": "09d2ac62b57d06d0d100ce5bc93fb8a05a27398d",
      "parents": [
        "5866a3b9689035580c31f1a02037b8176d7508a7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 30 10:35:47 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 30 16:44:32 2014 -0700"
      },
      "message": "Rename UNITY_GAIN to UNITY_GAIN_INT in AudioMixer\n\nChange-Id: Ic040311305026f0b4c4280a5b3bef7a447ac1da3\n"
    },
    {
      "commit": "5866a3b9689035580c31f1a02037b8176d7508a7",
      "tree": "08a64587fe6bfe3947cb18409df9d2b812c9749f",
      "parents": [
        "f8a106ae5c40735de6c75e7c12d5e0e2e22f12cf"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 29 21:33:13 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 30 15:14:13 2014 -0700"
      },
      "message": "Refactor setVolumeRampVariables in AudioMixer\n\nChange-Id: I8fcf3101bcea292de7c65433fa578f1c9cdd0974\n"
    },
    {
      "commit": "f8a106ae5c40735de6c75e7c12d5e0e2e22f12cf",
      "tree": "ae89a14bbedd04e58d6115ce550a7f462c3a53db",
      "parents": [
        "47aaf6da5d7ecc2ad28de004d1820b64b02dd344"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 29 18:52:38 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 30 14:50:20 2014 -0700"
      },
      "message": "Fix floating point output from mixer\n\nA buffer pointer was being erroneously reset to buffer start,\npotentially causing an audio glitch. The floating point\noutput mode is not enabled at this time, but will be in\nthe future.\n\nChange-Id: If8b6414d232f064f3a2e2c5a6da889a91b27fb24\n"
    },
    {
      "commit": "1d26ddf715182d6082804ff70086c47fb8c354b8",
      "tree": "83c47b23e1ba0cd3180d5845746c83c6fba3c037",
      "parents": [
        "798ce934571bc7eb5715bf1c03cbe5436a1220e3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 29 15:53:09 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 29 15:56:33 2014 -0700"
      },
      "message": "Avoid resetting BufferProviders in mixer unnecessarily\n\nChange-Id: Iad85c4dfd21be1dbf89dc11906106b34219376f8\n"
    },
    {
      "commit": "ef7c7fbd0e3fb36af14cd7d39f64c949031516a5",
      "tree": "94f9ef7ecba0cfdbfae659013923d261ccf19e40",
      "parents": [
        "e8a1ced4da17dc6c07803dc2af8060f62a8389c1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 12 16:51:41 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 23 22:11:16 2014 -0700"
      },
      "message": "Add multiple format capability to AudioMixer\n\nChange-Id: I04ac1cafd90b6ed652f8d51888ad07576678f0bc\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "e8a1ced4da17dc6c07803dc2af8060f62a8389c1",
      "tree": "eadb47a0d9349451773ef55adaa60317e1dbafad",
      "parents": [
        "68112fc4f77ab8c4a744782f78e9792afe0cbfc1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 09 15:02:21 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 19 12:27:46 2014 -0700"
      },
      "message": "Add format parameter to getTrackName() and track_t\n\nChange-Id: Ia152a839014e235fbfb656104c15d7c1b456d02e\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "68112fc4f77ab8c4a744782f78e9792afe0cbfc1",
      "tree": "4b7441d8f494bc9081de5c451794796d5a8693c8",
      "parents": [
        "e541269be94f3a1072932d51537905b120ef4733"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 14 14:13:23 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 16 16:20:54 2014 -0700"
      },
      "message": "Update AudioMixer::getTrackName to save channelMask\n\nChange-Id: I4fb4abbff1b05bdd0f6e21b5f5f4c3f2a57ae28d\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "e541269be94f3a1072932d51537905b120ef4733",
      "tree": "39646def02d7230929eb85189f48b9193b8c23a0",
      "parents": [
        "7c96d53a65085f42ac2b6d416cbc16fd36ed72ff"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 16 11:25:07 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 16 15:05:05 2014 -0700"
      },
      "message": "Use new channel count functions for audio masks\n\nChange-Id: Ia658ab4b6320d19fdb50f123c930918724ff0ef3\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "84a0c6e87c48f58a0d3be71961432c086a4d24cc",
      "tree": "a9bea7e95223dc4d1f3219d4e60dd385881ec6d8",
      "parents": [
        "99021c47f45ee8bf3317cff7d08226e76c8d8227"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 02 11:24:53 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Apr 02 14:33:26 2014 -0700"
      },
      "message": "Change references of Q19.12 to Q4.27 for clarity\n\nChange-Id: I5beb7daf6ff9bc123ff3582f7c294edcaf8652f6\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "adad3d7d935da176ff24941b4ae9edf7340e9b96",
      "tree": "7a8a2f8e31c7dd690805c1cfd9982d218c66296b",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 21 14:51:43 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 14:46:28 2014 -0700"
      },
      "message": "Use LOG_ALWAYS_FATAL instead of LOG_FATAL\n\nLOG_FATAL is compiled out in most builds, so the\nassertion checks were not being performed.\n\nChange-Id: I774f0985ab9c5ccecd8989a0f1c940386b73fc35\n"
    },
    {
      "commit": "788207057ed4b8df4719ed8089f376ef52de9ca1",
      "tree": "63659b6151de243ea608add08c3f5d2963c1bd3e",
      "parents": [
        "7ed1873acbf43280c5afe51833c3d628fe34e258"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 28 16:23:02 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Mar 01 04:20:18 2014 +0000"
      },
      "message": "Rename mSinkFormat to mMixerFormat for AudioMixer::track_t\n\nAudioMixer::SINK_FORMAT also changes to AudioMixer::MIXER_FORMAT\n\nChange-Id: Ic3f8be77d2c75c082c4fd140bc907e30c304d285\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "3375bde6c6c1821fca3eeb4840774112e26c9a68",
      "tree": "aba09d6bbf9ca0afbc360be7d608ac8d83d2983a",
      "parents": [
        "69aed5f0f4a3be3996d1e78a0473e1a72c1547da"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 28 15:51:47 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 28 17:31:44 2014 -0800"
      },
      "message": "Use float_from_q19_12 conversion in AudioMixer\n\nChange-Id: Idbe84fb9610c7e636a84468f2e2402a913435ca9\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "a1ab7cc8611c83427b57f6d4d4ce7aad9d1c0330",
      "tree": "8a519f604c7d5f0369ffaa6f9fb268c1906bfb68",
      "parents": [
        "56df9ff31d583ad3eae4f279a3df550273c58e1e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 24 19:26:52 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Feb 26 16:01:08 2014 -0800"
      },
      "message": "Add Track Sink Format to AudioMixer\n\nTrack Sink Format now allows both AUDIO_FORMAT_PCM_FLOAT and\nAUDIO_FORMAT_PCM_16_BIT (default).  The float case is not\nenabled now.\n\nChange-Id: Ibee70cab4725c8bc9905e49f1f9a9c2448f76e00\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\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": "9e0308c03d4e76d3146cbb6e30aeb3ac03f05cf5",
      "tree": "f64a6d90e2e6d2e45fa83a72422d08b3751c3914",
      "parents": [
        "e983e0a0017fce81dc3d9bea36f5abb7b7bce40b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 30 14:32:31 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 30 16:19:21 2014 -0800"
      },
      "message": "Enable new dynamic audio resampler as default\n\nThe default may still be overridden by af.resampler.quality\nin the local or build properties file.  For the build properties\ncheck the relevant device.mk files.\n\nIn the absence of being overridden, the 44.1 to 48kHz and\n48 to 44.1kHz conversion will use the DYN_MED_QUALITY resamplers\nand other conversion will use the DYN_LOW_QUALITY resamplers.\n\nChange-Id: Icf9a4af5422cddc445e1904eef93984b0abe6a44\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "e983e0a0017fce81dc3d9bea36f5abb7b7bce40b",
      "tree": "d402cf746d4cd3aa35b54c678d98d1faf998c45c",
      "parents": [
        "000a4193dd82549192277fd4b9bb571d8a4c262f",
        "ee931ff7d6620e5705f4dfba901fdb03fa4a35fd"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 30 19:19:44 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 30 19:19:45 2014 +0000"
      },
      "message": "Merge \"Remove warnings in Audio mixer resampler compilation.\""
    },
    {
      "commit": "ee931ff7d6620e5705f4dfba901fdb03fa4a35fd",
      "tree": "6b2b85da4ed2622b2075a8e5f4b8f13d0242c810",
      "parents": [
        "c69b91ceae6255e41c5413796fb0ed4f7af45b15"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 28 13:44:14 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 29 19:11:51 2014 -0800"
      },
      "message": "Remove warnings in Audio mixer resampler compilation.\n\nChange-Id: Ie68766142796772a54a90afdea188d0a5a78d4ac\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "0eed5ac1a14067d0fd51282e97b43b4fd9121842",
      "tree": "a097082c6034c43e851e3adb8aaba670f859ca60",
      "parents": [
        "de3736015c82798c431a9fa8cab5c2ec3fb181fd",
        "adf3f9b98b482180fc1d0835c1b6212b1659e249"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 29 10:02:59 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 29 10:02:59 2014 -0800"
      },
      "message": "Merge commit \u0027adf3f9b9\u0027 into manualmerge\n\nChange-Id: Icdef7d075b160eb2a5ced7c57f90c6a6a4b4c64a\n"
    },
    {
      "commit": "7e79cd2d3067cdb7b9daf639cf772d4dd149c934",
      "tree": "bbb14bc8c011b3c7e60c2b78c2a2f4366bf12639",
      "parents": [
        "99044adc6e209d31e9c5308d960e2bd5f6999f85"
      ],
      "author": {
        "name": "Gaurav Kumar",
        "email": "gaurav.kumar@broadcom.com",
        "time": "Mon Jan 06 10:57:18 2014 +0530"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Jan 29 17:46:08 2014 +0000"
      },
      "message": "AudioMixer: Remove tracks from enabledTracks after reseting outTemp\n\nIf any track goes through AudioMixer::process__genericNoResampling, and\nits getnextbuffer returns NULL, Then that track is removed by AudioMixer\nfrom enabledTracks.\n\nThus if all tracks getnextbuffer return NULL, Then this function doesn\u0027t\nreset outTemp and last buffer in AudioFlinger\u0027s mMixBuffer will be\nrepeated and noise is observed.\n\nRemove tracks from enabledTracks after reseting outTemp to zero, so that\nprocess__genericNoResampling will reset outTemp and noise won\u0027t appear.\n\nBug: 12450065\nChange-Id: I1ccac7ee4a3bf7fd930254356c072099e11e7c19\nSigned-off-by: Gaurav Kumar \u003cgaurav.kumar@broadcom.com\u003e\nSigned-off-by: Pierre Couillaud \u003cpierre@broadcom.com\u003e\n"
    },
    {
      "commit": "d8a1de6204829b0379bbd13042f1450bdb203f2b",
      "tree": "b7b513a563f76060ec82a73aa9ee9543a391b8db",
      "parents": [
        "2e70b42e2af66f4abb22a95c5d642175c007e256",
        "f551e9961a6f66d63bb57f288c4be01b00725289"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 08 19:19:00 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 08 19:19:00 2013 +0000"
      },
      "message": "Merge \"Channel counts are uint32_t\""
    },
    {
      "commit": "f551e9961a6f66d63bb57f288c4be01b00725289",
      "tree": "1253e7bc4034a35606881fe75e6c22b3a8c602cc",
      "parents": [
        "d21952fe5bc94f7bb6ee729f806c0e641fdb1a0d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 19 18:45:42 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 15:49:00 2013 -0800"
      },
      "message": "Channel counts are uint32_t\n\nChange-Id: I5676b6a291b72d7db6326f7eaf6d17588de51b05\n"
    },
    {
      "commit": "d6fadf0479b489b09b764070974d8a59855ede64",
      "tree": "239aa64bd7cdc0e69b1ad8e1ef85be7e09176a56",
      "parents": [
        "8f32537d028231abed103c68705bc5d07cedf919"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 30 14:37:29 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 14:49:46 2013 -0800"
      },
      "message": "Simplify track \u0027needs\u0027 bits\n\nUse more standard coding convention for bit masks,\nand add a FIXME about max channel count.\n\nChange-Id: I856784016703417ee480b92ae73757c472f9cf95\n"
    },
    {
      "commit": "8f32537d028231abed103c68705bc5d07cedf919",
      "tree": "17eb75d6fc15e8494cb0049df39f2e971cbb8c77",
      "parents": [
        "e25b778b11183fda65418ab2142873a030521870"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 30 14:36:47 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 14:47:41 2013 -0800"
      },
      "message": "Remove redundant this-\u003e\n\nChange-Id: Id783201e802b6ce294fa92f4bbe492adfb446686\n"
    },
    {
      "commit": "e25b778b11183fda65418ab2142873a030521870",
      "tree": "f7e2a2751de63187e29d0597eb0324e23a062d98",
      "parents": [
        "5c6ba3ad8eed1d59e5e2ffe6b70ced2d582a9def"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 30 14:37:10 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 14:43:25 2013 -0800"
      },
      "message": "Remove dead code\n\nChange-Id: Ide9196aa348cd3846b5c71d51fe6538f38ea8dc2\n"
    },
    {
      "commit": "49c34acbef91800930b0fe561e0787145a10cfcc",
      "tree": "53e636df1a5868bbea112ec3bd36e19862208adf",
      "parents": [
        "d21952fe5bc94f7bb6ee729f806c0e641fdb1a0d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 30 14:37:01 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 06 18:05:09 2013 +0000"
      },
      "message": "Fix race condition in initializing downmix\n\nThe code that initializes downmix GUID searches for an effect of\nthe right type.  If two or more AudioMixers are created, there is a\npossibility that the GUID will temporarily have the wrong value.\n\nNow the initialization is only done once, regardless of how many\nAudioMixers there are.\n\nOther minor changes:\n - use naming convention of leading \u0027s\u0027 for static member variables\n - log message for no downmix effect is now a warning instead of an error,\n   since it is not an error until there is actual content to downmix\n   without a downmix effect\n\nChange-Id: I33ab0e51cf9d24ecaf8ae868883736b0772178c4\n"
    },
    {
      "commit": "34fca34606b448e6b71c2942f63cb13a0aebd620",
      "tree": "45c5942f63ba22888ed24b5801400cde07b3fae2",
      "parents": [
        "3255095af6677caeeebf81c8891ce8db745617ff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 13 09:48:14 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 13 09:56:00 2013 -0700"
      },
      "message": "Explicit comparison to 0 for integral types\n\nChange-Id: I2bfe864d1bda719581e297a38d96abfc0e3748b9\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": "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": "ab7d72f0804fbb7e91ad9d2a16f826d97e20e5d0",
      "tree": "9eda6276ab70724dcc98e56f7ca16afeb70ff079",
      "parents": [
        "3605ab3c02516e4123c39062de301bacc8ea8d9f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 27 09:05:28 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 01 15:36:26 2013 -0800"
      },
      "message": "media.log cleanup\n\nRemove almost all of the specific logs, but leave the media.log\nlogging infrastructure in place for the next time we need it.\n\nRe-apply a few good changes that were reverted earlier:\n - check logf format vs. argument list compatibility\n - distinguish potentially modified and actually modified tracks in FastMixer\n - fix benign bug where sq-\u003eend() was called more than once\n - fix a build warning\n\nBug: 6490974\nChange-Id: I02d3e83646c738acaebb415bd0d6b548638b4ef5\n"
    },
    {
      "commit": "409e3749a5627f1b360feb1479fcd341067a90b8",
      "tree": "7b00ffd905ff1058b466b0e8176501e7d432a078",
      "parents": [
        "ceb388d6c03c38b96dc41c0ea4804b749aa077c4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 27 09:39:39 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 27 09:39:55 2013 -0800"
      },
      "message": "Revert \"Logging to investigate a crash\"\n\nThis reverts commit f0ff908da019a44115109f1b4d1b6864b35a8a29.\n"
    },
    {
      "commit": "fc900c922e219771d0cd3c075720d90026e1ca4a",
      "tree": "0c6c289fd6a6d9a19197bba46c3fe1e0b3c19923",
      "parents": [
        "4353cef86a90c83f02c4ff338d236e8361a27dd1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 18 12:47:49 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 19 10:51:47 2013 -0800"
      },
      "message": "A reference cannot be re-bound\n\nBug: 8213067\nBug: 6490974\nChange-Id: If546215641fbc9a0fb1e8af8b85cc01f0a4b26ab\n"
    },
    {
      "commit": "7f5d335f7b4caecd0dfb8f1085f352f1d2da5d2e",
      "tree": "dda17a3e4149815397c7bef198e64bc81dee3552",
      "parents": [
        "32584a7d672864b20ab8b83a3cb23c1858e908b7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 23:55:04 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 15 23:55:04 2013 +0000"
      },
      "message": "Revert \"Temporary additional logging to investigate bug\"\n\nThis reverts commit 32584a7d672864b20ab8b83a3cb23c1858e908b7\n\nChange-Id: I9dc680578b955b1af462eeb7a49d61a0d45eb81b\n"
    },
    {
      "commit": "32584a7d672864b20ab8b83a3cb23c1858e908b7",
      "tree": "87a3d8c3b801d13ceee09abab5048aef46e65332",
      "parents": [
        "ab89ac209fd1c3b0a2227168a48d7f3ae9bc43f3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 13 14:46:45 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 15 15:44:50 2013 -0800"
      },
      "message": "Temporary additional logging to investigate bug\n\nThe bug appears related to continuing to use an invalid buffer provider\nin fast mixer after track destruction, so focus the added logs in that area.\n\nAlso includes a bug fix: was calling log in an unsafe place\nnear Threads.cpp AudioFlinger::PlaybackThread::createTrack_l line 1250.\n\nDetails:\n - include caller pid or client pid where appropriate\n - increase log buffer size\n - log mFastIndex when AudioMixer sees an invalid bufferProvider.\n - log both potentially modified and actually modified tracks in FastMixer.\n - fix benign bug where sq-\u003eend() was called more than once.\n - log StateQueue push() call and return.\n - increase StateQueue size from 4 to 8 entries\n - log mixer-\u003eenable(), bufferProvider, and currentTrackMask\n - log buffer provider addresses\n - increase fast mixer log buffer again\n - check logf format vs. argument list compatibility\n - add logging to AudioMixer\n - add checking of magic field in AudioMixer to detect overwrites\n - add bool AudioMixer::enabled()\n - increase log buffer sizes yet again\n - enable assertion checking without ALOGV\n - improve a few log messages\n - check for corruption in more places\n - log in all the process hooks\n - add new mixer APIs so we can check for corruption of mixer state\n - fix a build warning\n\nBug: 6490974\nChange-Id: Ib0c4a73dcf606ef9bd898313b3b40ef61ab42f51\n"
    },
    {
      "commit": "e186b51e0a9834b287d7a509e960eaf1b688db75",
      "tree": "82b017a4c77a82fca62571eccaa3723ee93738d1",
      "parents": [
        "639482c24c911b125398b31883ba6d55faebe28b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 14 23:57:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 23:57:02 2013 +0000"
      },
      "message": "Revert \"Temporary additional logging to investigate bug\"\n\nThis reverts commit 639482c24c911b125398b31883ba6d55faebe28b\n\nChange-Id: I11f2829072ab11e18b0663024f27bf31192f1d39\n"
    },
    {
      "commit": "639482c24c911b125398b31883ba6d55faebe28b",
      "tree": "698e25baf47d4e6a10663d21ca86c3a0702fe606",
      "parents": [
        "085205bd23c3604c1b792c3046fdae0a489c04be"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 13 14:46:45 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 14 14:35:29 2013 -0800"
      },
      "message": "Temporary additional logging to investigate bug\n\nThe bug appears related to continuing to use an invalid buffer provider\nin fast mixer after track destruction, so focus the added logs in that area.\n\nAlso includes a bug fix: was calling log in an unsafe place\nnear Threads.cpp AudioFlinger::PlaybackThread::createTrack_l line 1250.\n\nDetails:\n - include caller pid or client pid where appropriate\n - increase log buffer size\n - log mFastIndex when AudioMixer sees an invalid bufferProvider.\n - log both potentially modified and actually modified tracks in FastMixer.\n - fix benign bug where sq-\u003eend() was called more than once.\n - log StateQueue push() call and return.\n - increase StateQueue size from 4 to 8 entries\n - log mixer-\u003eenable(), bufferProvider, and currentTrackMask\n - log buffer provider addresses\n - increase fast mixer log buffer again\n - check logf format vs. argument list compatibility\n - add logging to AudioMixer\n - add checking of magic field in AudioMixer to detect overwrites\n - add bool AudioMixer::enabled()\n\nBug: 6490974\nChange-Id: I1f3f18aa62d9fbd35bc32285b669f5ba40efe28e\n"
    },
    {
      "commit": "51eb3965caa8ba135bcdd8ffb7a2024a042ecdc0",
      "tree": "0444520a23aa61553f9cf8bb67ee0f8127096b6a",
      "parents": [
        "0ddd56316262ac74a95e9edb595697c163136d6d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 14 00:02:36 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 14 00:02:36 2013 +0000"
      },
      "message": "Revert \"Temporary additional logging to investigate bug\"\n\nThis reverts commit 0ddd56316262ac74a95e9edb595697c163136d6d\n\nChange-Id: I180a928af6f5a38d15a5efe44cd1fe927b5d961c\n"
    },
    {
      "commit": "0ddd56316262ac74a95e9edb595697c163136d6d",
      "tree": "2ed313557a019eeba286e27a3f4ce2e0a45fba17",
      "parents": [
        "cd27b0798f6abb34e464acc7c7e97e066cd3c6c7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 13 14:46:45 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 13 14:51:50 2013 -0800"
      },
      "message": "Temporary additional logging to investigate bug\n\nThe bug appears related to continuing to use an invalid buffer provider\nin fast mixer after track destruction, so focus the added logs in that area.\n\nAlso includes a bug fix: was calling log in an unsafe place\nnear Threads.cpp AudioFlinger::PlaybackThread::createTrack_l line 1250.\n\nDetails:\n - include caller pid or client pid where appropriate\n - increase log buffer size\n - log mFastIndex when AudioMixer sees an invalid bufferProvider.\n - log both potentially modified and actually modified tracks in FastMixer.\n - fix benign bug where sq-\u003eend() was called more than once.\n - log StateQueue push() call and return.\n\nBug: 6490974\nChange-Id: Iee7c8f40e20b6000cd8286c0ec6a14fff4a37af1\n"
    },
    {
      "commit": "ae162976dda428671af09a8fbc3f03173a7e6f3e",
      "tree": "23916ae7df8025a16a1d7e5b26a0e699e0236fb6",
      "parents": [
        "9ff1087c2c53a5b3c3c3abbc6d6c1d142f65b33a",
        "761430930a7335d714af0f7c1d497feb8f9f0a5a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 10 16:08:07 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 10 16:08:07 2012 -0800"
      },
      "message": "am 76143093: am f0ff908d: Logging to investigate a crash\n\n* commit \u0027761430930a7335d714af0f7c1d497feb8f9f0a5a\u0027:\n  Logging to investigate a crash\n"
    }
  ],
  "next": "f0ff908da019a44115109f1b4d1b6864b35a8a29"
}
