)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "f0ff908da019a44115109f1b4d1b6864b35a8a29",
      "tree": "26878ce2fbb731f6cdd47a55ff1cfae54e9e58ee",
      "parents": [
        "47c1a5f7c13d82aa8834fd4543bd1d713b97808e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 07 14:13:35 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 07 16:19:09 2012 -0800"
      },
      "message": "Logging to investigate a crash\n\nBug: 6490974\nChange-Id: Ib926a9258bde4ee05ed42eea662dff68e426a997\n"
    },
    {
      "commit": "85ab62c4b433df3f1a9826bed1c9bec07a86c750",
      "tree": "0c5443a20824924cb7403f4cabfee84062489793",
      "parents": [
        "5fe6138bd839297a1eed16885102b3bdfc98c040"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 11:11:38 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 12:19:25 2012 -0700"
      },
      "message": "Line length 100\n\nChange-Id: Ib28fd7b9ce951a6933f006e7f8812ba617625530\n"
    },
    {
      "commit": "599fabc596687efa4b71b8f3ebbb957c7cae0c72",
      "tree": "4fa21abc3355a8ac8d4c91a6e101d76bb3c17b80",
      "parents": [
        "692c3e54c63aaaf7e9ef4d89761f98975bd34f33"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 08 12:33:37 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 26 15:50:45 2012 -0700"
      },
      "message": "Document AudioMixer hard-coded limits\n\nChange-Id: I83ea8bed375f251260945db788bdb5f280dba12d\n"
    },
    {
      "commit": "d192e5f15c395daa87f4f198154379ee7c93d528",
      "tree": "9dcd60888b97045ccf108808efb0c51fba974392",
      "parents": [
        "e50eb89bad3cb457ed7930225c47c6c4cb8534f5",
        "f12b1c8162d5b8cd1021daf0e32c769dac3d5d56"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 04 12:05:44 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 04 12:05:44 2012 -0700"
      },
      "message": "resolved conflicts for merge of f12b1c81 to master\n\nChange-Id: I914a11706bd01a198e2137e0c12af0fc92ffa02b\n"
    },
    {
      "commit": "ac6020508acedd316391dee42329040bf45f8d90",
      "tree": "034a8ac9c453dfce993c8d2568121a9b6d042bd0",
      "parents": [
        "d69fd4d2567f9fce02252ce10d7ae3a28fc79e04"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 01 14:04:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 04 09:44:04 2012 -0700"
      },
      "message": "Integrate improved coefficient sinc resampler: VHQ\n\nSummary:\nVery high quality is enabled only for 44.1 -\u003e 48 or 48 -\u003e 44.1,\n  and uses low quality for all other use cases.\nTrack estimated CPU load and throttles the quality based on load;\n  as currently configured it should allow up to 2 instances of very high quality.\nMedium quality and high quality are currently disabled unless explicitly requested.\n\nDetails:\nOnly load .so the first time it is needed.\nCleanup code style: formatting, indentation, whitespace.\nRestore medium quality resampler, but it is not used (see next line).\nFix memory leak for sinc resampler.\nCheck sample rate in resampler constructor.\nAdd logs for debugging.\nRename DEFAULT to DEFAULT_QUALITY for consistency with other quality levels.\nRenumber VERY_HIGH_QUALITY from 255 to 4.\nUse enum src_quality consistently.\nImprove parsing of property af.resampler.quality.\nFix reentrancy bug - allow an instance of high quality and an instance\n  of very high quality to both be active concurrently.\n\nBug: 7229644\nChange-Id: I0ce6b913b05038889f50462a38830b61a602a9f7\n"
    },
    {
      "commit": "d06e132358d44f02c22527b4f463df1f58da9216",
      "tree": "26cd7f3324f6c50726ed0377f3137e38f316aab3",
      "parents": [
        "4b2247510410ef71718199ea028ace8609e92fdd"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 12 15:47:07 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 12 15:49:56 2012 -0700"
      },
      "message": "Communicate audio session ID to downmixer\n\nThe audio downmixer effect might need the audio session Id, pass it\n from the track creation in AudioFlinger to the downmix effect\n creation in AudioMixer.\n\nChange-Id: I836873eebd6711f1048fce81cd2eb29b94f0ad0c\n"
    },
    {
      "commit": "fe3156ec6fd9fa57dde913fd8567530d095a6550",
      "tree": "2c4b8250d0089a7d9f396d40005f4fefd95f46f3",
      "parents": [
        "66765846726c02db16a0f024f2217990a90802c0"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 10 18:58:27 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 10 18:58:27 2012 -0700"
      },
      "message": "Communicate audio session ID to downmixer\n\nThe audio downmixer effect might need the audio session Id, pass it\n from the track creation in AudioFlinger to the downmix effect\n creation in AudioMixer.\n\nChange-Id: I5e29540542ae89cf4a0cdb537b3e67f04442a20a\n"
    },
    {
      "commit": "037ac53aac0f51f2ccfaaa91822365c1c73c4365",
      "tree": "6552c46685738bf5baf41d8708066b823aaf64f5",
      "parents": [
        "7f3a8e4cb89fadffe31a12859721866d5ca02353",
        "0efd035854ad2c8d20100a740e054c4bf7b3e9a4"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Aug 10 12:48:51 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 10 12:48:51 2012 -0700"
      },
      "message": "am 0efd0358: am fcfc61da: am ff4c64d6: am c64a1787: Merge \"Fix initialization of audio mixer track resources for MIPS.\"\n\n* commit \u00270efd035854ad2c8d20100a740e054c4bf7b3e9a4\u0027:\n  Fix initialization of audio mixer track resources for MIPS.\n"
    },
    {
      "commit": "fcfc61da927e98d18cdcb53da8fa0a8a32ee1422",
      "tree": "7dd8aadcffc35c98504f35d69fe467c0a8e8f397",
      "parents": [
        "7edbacf24e60c01e2d3b10715ec8f9cc2f55c11a",
        "ff4c64d6b1b58494a1b15f1a664e5c421d095d15"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Aug 10 12:44:02 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 10 12:44:02 2012 -0700"
      },
      "message": "am ff4c64d6: am c64a1787: Merge \"Fix initialization of audio mixer track resources for MIPS.\"\n\n* commit \u0027ff4c64d6b1b58494a1b15f1a664e5c421d095d15\u0027:\n  Fix initialization of audio mixer track resources for MIPS.\n"
    },
    {
      "commit": "3c0a0e8541846427db0587c2fffb90f60ee680b0",
      "tree": "5ec5cfb29970fe635f34145ba9642f96fd91e9b7",
      "parents": [
        "ffd99cb795c92caee7f4bd0b26af9ae37b100fc3"
      ],
      "author": {
        "name": "Paul Lind",
        "email": "plind@mips.com",
        "time": "Wed Aug 01 18:49:49 2012 -0700"
      },
      "committer": {
        "name": "Paul Lind",
        "email": "plind@mips.com",
        "time": "Wed Aug 01 18:49:49 2012 -0700"
      },
      "message": "Fix initialization of audio mixer track resources for MIPS.\n\nThe value 1 \u003c\u003c 32 (maxNumTracks defaults to 32) is surprisingly not defined\nin C, and differs on MIPS than the other arch.\n\nTherefore the track resources were not initialized properly, resulting\nin failure to play any audio.\n\nThe fix allows the mConfiguredNames bitmask to be correctly set to all\n1\u0027s in the 32-track case, for all arch.\n\nChange-Id: Ied3e1305952e9567602e2cd76c5ef3acb0809ee0\nSigned-off-by: Paul Lind \u003cplind@mips.com\u003e\n"
    },
    {
      "commit": "52008f821a5202502a82a8ba2c024e69bd336350",
      "tree": "5daaddaa46d47bec27af0bc5350f414452710b00",
      "parents": [
        "0a7af18d0308295405491f86603e3d119450aba0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Mar 18 09:34:41 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 18:49:08 2012 -0700"
      },
      "message": "Share local time frequency for all tracks \u0026 mixers\n\nChange-Id: I5e6f0e371f728a5225c2fa6f778c109449d33602\n"
    },
    {
      "commit": "254af180475346b6186b49c297f340c9c4817511",
      "tree": "bee0e313aaa97645167e86f4678e513ab38d1c99",
      "parents": [
        "4d2132c866228eaef563e8141ebf06aa25ee9ff7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 14:59:05 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 10:05:31 2012 -0700"
      },
      "message": "Use audio_channel_mask_t more places\n\nUse it in AudioSystem::getOutput(), AudioSystem::getInput(),\nIAudioPolicyService::getOutput(), IAudioPolicyService::getInput(),\nand various other places in AudioFlinger.\n\nNot done: AudioTrack and OutputDescriptor.\n\nChange-Id: I70e83455820bd8f05dafd30c63d636c6a47cd172\n"
    },
    {
      "commit": "9bd23229fdec1657398abc682ccccfce1c95f8aa",
      "tree": "5a6790d8f19a3249b28a8b8da9e68e3a14bbde36",
      "parents": [
        "0ca3cf94c0dfc173ad7886ae162c4b67067539f6"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 16 13:43:48 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 17:40:48 2012 -0700"
      },
      "message": "Fix multichannel downmix pause bug on video player\n\nPausing a video player will cause the track audio mixer to be\n disabled, which causes the downmixer to be deleted. When reenabled,\n the track channel mask hasn\u0027t changed but the downmixer is there\n anymore.\nFixed by:\n- instanciating a downmixer when the AudioMixer track\n gets initialized (in getTrackName(), now taking a channel mask\n as input), and deleted when in deleteTrackName().\n- when the channel changes on a track, check whether it\n needs a downmixer or not. Preparing a track for downmix\n automatically removes the old downmixer if there was one.\n\nAlso: initialize the track downmixerBufferProvider field\n when AudioMixer is instanciated, so we can safely call\n delete on it in AudioMixer\u0027s destructor, in case\n deleteTrackName() wasn\u0027t called before the mixer was\n destroyed.\n\nChange-Id: I589b0781cda5b3c82f85b561c52b08546cac21f8\n"
    },
    {
      "commit": "acb86cccbd9d245439a04cef0bcefa589addaa4c",
      "tree": "597fe66a314f3bc8a4c1746f9d9bbff0a8bd1067",
      "parents": [
        "97b5d0d5b5ef766eb5dd680d05a5d199662d4ae0"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 16 12:43:57 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 09:29:45 2012 -0700"
      },
      "message": "Configure the resampler with the correct channel count when downmixing\n\nWhen a track needs to be downmixed and resampled, it gets downmixed\n first before being resampled. Therefore the resampler needs to\n be configured with the channel count of the output of the downmixer\n instead of that of the track.\nRemoved frame size checks that don\u0027t apply anymore now that we support\n frame sizes that are not powers of 2 (e.g. 12 for 5.1 16bits), and\n changed test performed for every buffer during playback into an\n assert.\n\nChange-Id: Ia220f00ee382f4f7848b661c58555bdca664e194\n"
    },
    {
      "commit": "4e2293f29f2e719af1245d365747ea06d074b345",
      "tree": "d07878412ffeca6ccd4e7e4bbbc0b4fb68370a59",
      "parents": [
        "99a80e10f2d0e88c0509a298bdd1df0308b55a7b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 12 09:39:07 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 17:43:58 2012 -0700"
      },
      "message": "AudioMixer new cmd: remove sample rate converter\n\nAdd a new command REMOVE to remove any sample rate converter\n   on a track, without having to delete the track name.\nAdd comments.\nRemove some dead code.\nFix whitespace and comparison to NULL.\n\nChange-Id: Id55a23ab5ee673189e99675b4e6fa5df7b617987\n"
    },
    {
      "commit": "a5e821439996de6005b2fa36b3bdd31f003ce23f",
      "tree": "04520106c0140dfeae4baff583749bf250e7b81f",
      "parents": [
        "a98db787397633155fd71b06ecaa765a7ad20cf2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 13:47:17 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 14:31:24 2012 -0700"
      },
      "message": "AudioMixer: fix crash in destructor\n\nCommit deeb1282 made that track-\u003eresampler is only set to NULL when\ngetTrackName() is called. It remains uninitialized for all unused tracks\ncausing a crash when deleted by Audiomixer destructor.\n\nIssue 6309441.\n\nChange-Id: I49451387a6afe81299b8368ef206524df32f74c4\n"
    },
    {
      "commit": "7d5b26230a179cd7bcc01f6578cd80d8c15a92a5",
      "tree": "563086c1185e0e54770d8c60c8eec1aefdddb89f",
      "parents": [
        "4b75a9c8b93a90749bc5d22912ad0d96c12f4ecf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 04 18:54:36 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 09 11:27:14 2012 -0700"
      },
      "message": "AudioMixer uses downmix effect for multichannel content\n\nIn the AudioMixer structure associated with each track, add an object\n  that acts as the buffer provider when the track has more than two\n  channels of input in the mixer. This object, DownmixerBufferProvider,\n  gets audio from the actual buffer provider of the track, and applies\n  a downmix effect on it.\nThe downmix effect is created and configured when the track gets\n  created in AudioFlinger, which causes AudioMixer::getTrackName()\n  to be called with the new track\u0027s channel mask. It is released\n  when the track is disabled in the mixer.\n\nChange-Id: I05281ed5f61bef663a8af7ca7d5ceac3517c82db\n"
    },
    {
      "commit": "deeb1282621f3177ad667360b40eef8e4fedb298",
      "tree": "595d49e01dc93258bc061052f103e45e2811b129",
      "parents": [
        "a1472d9883e35edd280201c8be3191695007dfd4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Mar 25 11:59:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Apr 01 14:57:33 2012 -0700"
      },
      "message": "AudioMixer default track parameters\n\nMove the default initialization of track parameters from the AudioMixer\nconstructor to getTrackName().  This fixes a bug where the defaults were\nonly valid the first time a name was allocated.\n\nAlso added a switch case for parameter FORMAT.\n\nChange-Id: I07abd3aaf7f4efe9825a761d2bc662aaee2c6db0\n"
    },
    {
      "commit": "ccf89b54f973f11082150d02ed957f7e967fbc8b",
      "tree": "b3446119a9b6c03dcca98d1d9ee31a83adb8acad",
      "parents": [
        "63c1faa8dea7feb90255d31ef2a133d8f2818844",
        "5c94b6c7689a335e26a86e8a0d04b56dc627738e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 08:19:04 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 08:19:04 2012 -0700"
      },
      "message": "Merge \"AudioMixer can be configured for fewer max tracks\""
    },
    {
      "commit": "63c1faa8dea7feb90255d31ef2a133d8f2818844",
      "tree": "973c66b51e7e85b6ea753b5643f7d99c66d82dde",
      "parents": [
        "7153494670bdac8b650cb10b8b1838651e0ca418",
        "17a736c3e1d062d7fc916329eb32aef8935614af"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 07:24:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 07:24:21 2012 -0700"
      },
      "message": "Merge \"Update comments\""
    },
    {
      "commit": "5c94b6c7689a335e26a86e8a0d04b56dc627738e",
      "tree": "05dcb7c6007c923a4f3ef04371e62834940a66b0",
      "parents": [
        "6da08fc33642b832d1cde2e46815a5fd67dd0016"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 20 17:01:29 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 20 17:27:10 2012 -0700"
      },
      "message": "AudioMixer can be configured for fewer max tracks\n\nChange-Id: I371b17cef071d083eecf35cd3627a3adff907a33\n"
    },
    {
      "commit": "ea7939a079b3600cab955760839b021326f8cfc3",
      "tree": "570fb56838735a46a28e28a4f083d763f758ea24",
      "parents": [
        "eb76ff27c13386eb5a2dad73b1a8366f80eb0ff7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 12:56:26 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 17:53:33 2012 -0700"
      },
      "message": "Whitespace\n\nFix indentation, and add blank lines in key places for clarity\n\nChange-Id: I57a0a8142394f83203161aa9b8aa9276abf3ed7c\n"
    },
    {
      "commit": "17a736c3e1d062d7fc916329eb32aef8935614af",
      "tree": "7fb73e48de8641ce6ad7b65fb4204bc60cd3e5f0",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 14 08:52:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 14:12:01 2012 -0700"
      },
      "message": "Update comments\n\nChange-Id: I327663a020670d0a72ff57bd0b682e2ce0528650\n"
    },
    {
      "commit": "5798d4ebf236357a4b13246f40e52b90a34d09a4",
      "tree": "b9cb82b889bee3c6b32bfa2d2870bd88034b0fdd",
      "parents": [
        "73f4bc33e0d458933460250a47c64aa868c05f97"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 08 12:18:35 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 12 15:56:50 2012 -0700"
      },
      "message": "Clean up assertion checks\n\nUse ALOG_ASSERT instead of assert.\nUse compile-time asserts where appropriate.\nFix typo in an ALOGV.\n\nChange-Id: I58f1c1ffc14319a022c88b5a88b8d0368660da8b\n"
    },
    {
      "commit": "01c4ebf6b794493898114a502ed36de13137f7e5",
      "tree": "7f663fdad4040a40411e79d837c14e52e11a65b9",
      "parents": [
        "d6fd85a157ce2054b2304e6d171fa87ae09c363d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 22 10:47:35 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 24 13:42:13 2012 -0800"
      },
      "message": "AudioBufferProvider comments and cleanup\n\nAdd comments about which methods implement the AudioBufferProvider interface.\n\nSimplified the definition of kInvalidPts.  \u003cstdint.h\u003e is very hard to work\nwith, there seems to be no way to use it reliably to get INT64_MAX without\nhaving a separate source file, which is ugly because it means kInvalidPts\nis not a compile-time constant.  So I just deleted AudioBufferProvider.cpp\nand used a hard-coded constant instead.\n\nAdded a default constructor for Buffer so that the fields aren\u0027t random\n(especially .raw which is used to determine if the buffer is valid).\n\nMake the pts for getNextBuffer default to kInvalidPTS so code that\ndoesn\u0027t need a pts doesn\u0027t have to specify a value.\n\nRename the parameter to AudioMixer::setBufferProvider to make it clearer.\n\nChange-Id: I87e7290884d4ed975b019f62d1ab6ae2bc5065a5\n"
    },
    {
      "commit": "3b81acab52b7140c1b8b20be2d67be3e221637e7",
      "tree": "0b225360603f19ba2f60fb1cf7a616dfe51d99b1",
      "parents": [
        "1b094ee8f7fe7eca65bf3d2f983ba95eef6db93d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 15:26:23 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 17 09:41:56 2012 -0800"
      },
      "message": "Remove bit fields to improve performance\n\nuint16_t enabled is (mostly) changed to bool in a separate CL\n\nChange-Id: Ied9f8c034b2479cee9a8778cee7b8ff92ae75b7b\n"
    },
    {
      "commit": "a111792f1314479c649d1d44c30c2caf70c00c2a",
      "tree": "f67b5f32a61a259f292b7d0d992f31b8e2ff857c",
      "parents": [
        "761defc341c5ce9019a42919c441f035f665ec0d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 10:53:32 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 17 09:39:07 2012 -0800"
      },
      "message": "Simplify code\n\nUse DefaultKeyedVector::valueFor to avoid extra test\nMake local variables as local as possible\nNo double parentheses\nNo typedef for single use\nNo parentheses around indirect function call\nNo AudioFlinger:: prefix when not needed\nRemove unnecessary casts\nRemove block with only one line\n\nSaves 128 bytes\n\nChange-Id: I3a87430eeb01b81e7b81a1c38f6fdd3274ec48f3\n"
    },
    {
      "commit": "4ff14bae91075eb274eb1c2975982358946e7e63",
      "tree": "e9e54fddb9832d30b69c2a11c9ed2884397f2f95",
      "parents": [
        "951bd8d1ad9581a414e171ad8605a9515d0ad667"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Feb 08 16:37:41 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 16 13:45:11 2012 -0800"
      },
      "message": "Upintegrate Audio Flinger changes from ICS_AAH\n\nBring in changes to audio flinger made to support timed audio tracks\nand HW master volume control.\n\nChange-Id: Ide52d48809bdbed13acf35fd59b24637e35064ae\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "99e53b86eebb605b70dd7591b89bf61a9414ed0e",
      "tree": "8939550ada02fe21121550a83952ebf7638c0dac",
      "parents": [
        "6dbc1359f778575d09d6da722b060a6d72c2e7c5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 08:59:58 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 14 09:17:59 2012 -0800"
      },
      "message": "Update comments\n\nWe no longer put the filename at start of file.\n\nChange-Id: Ic435b159a23105681e3d4a6cb1ac097bc853302e\n"
    },
    {
      "commit": "63d2daed17ab749baa80bc808fb5083b688b771b",
      "tree": "735cfc77d2082c044816fe367f33401fd5b472c7",
      "parents": [
        "4f9b0c54011eb8fd2ccfb393c2dcd51cd07800e0",
        "c59c004a3a6042c0990d71179f88eee2ce781e3c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 08:39:39 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 08:39:39 2012 -0800"
      },
      "message": "Merge \"AudioFlinger methods const and inline\""
    },
    {
      "commit": "4c340c6521b634f159d2d6bc4e9359226fd8edf8",
      "tree": "7cfdf3bedccd84f751909ee5866871576250f274",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 12:33:54 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 15:36:47 2012 -0800"
      },
      "message": "Use bool instead of int\n\nThe .h is not modified to avoid increasing data size.\n\nChange-Id: Ide4a821a5b16424ffa03471dfff98dc3e9b5f751\n"
    },
    {
      "commit": "c59c004a3a6042c0990d71179f88eee2ce781e3c",
      "tree": "68e0c9bb6d5bb10a1a8263ebefbb5601946702ee",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 02 14:06:11 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 15:25:24 2012 -0800"
      },
      "message": "AudioFlinger methods const and inline\n\nThis saves 1063 bytes and probably improves performance.\n\nChange-Id: I11cf0dfd925fbaec75e3d1b806852a538eae5518\n"
    },
    {
      "commit": "a0d68338a88c2ddb4502f95017b546d603ef1ec7",
      "tree": "f052125f4720fde00179d41d4ee04e02934052e4",
      "parents": [
        "87f155d6655b2d3b27e69281a29e85c6407e4d26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 16:47:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 07:57:01 2012 -0800"
      },
      "message": "Use NULL not 0 for raw pointers\n\nUse if (p !\u003d NULL) instead of if (ptr)\n\nChange-Id: Iaec3413a59ccbf233c98fcd918cc7d70ac5da9fa\n"
    },
    {
      "commit": "84afa3b51ac48f84ed62489529ce78cba7fca00e",
      "tree": "ee9ba57cdc17668c9362b70f6bfbfcbd40a253ad",
      "parents": [
        "5c0ad10b14ec2287f90f95912d98e66eef006e2a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 25 15:28:08 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 07:37:14 2012 -0800"
      },
      "message": "Constructor initialization and const fields\n\nIn constructors, initialize member fields in the initialization list\nrather than constructor body where possible.  This allows more fields\nto be const, provided they are never modified.\n\nAlso initialize POD fields in constructor, unless it\u0027s obvious they\ndon\u0027t need to be initialized.  In that case, put a comment instead.\n\nRemove explicit clear() in destructors on fields that are now const.\n\nGive AudioSessionRef a default constructor, so it\u0027s immutable fields can\nbe marked const.\n\nAdd comment about ~TrackBase() trick.\n\nInitialize fields in declaration order to make it easier to confirm that\nall fields are set.\n\nMove initialization of mHardwareStatus from onFirstRef() to constructor.\n\nUse NULL not 0 to initialize raw pointers in initialization list.\n\nRename field mClient to mAudioFlingerClient, and getter from client()\nto audioFlingerClient().\n\nChange-Id: Ib36cf6ed32f3cd19003f40a5d84046eb4c122052\n"
    }
  ],
  "next": "e9dd0176933d6233916c84e18f3e8c0d644ca05d"
}
