)]}'
{
  "log": [
    {
      "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": "3ce28aa3cb5262775180a8b423cfb4a5670ebc59",
      "tree": "c033ef7bb7e98903661266d30f22259d12f5bc43",
      "parents": [
        "398f21348e5100289f6e5be30c8b5257fa04aaf9"
      ],
      "author": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Wed Feb 05 19:49:05 2014 +0200"
      },
      "committer": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Wed Feb 05 19:56:50 2014 +0200"
      },
      "message": "AudioFlinger: Remove code for supporting resampling in fast tracks\n\nThis isn\u0027t used at the moment.\n\nChange-Id: I4e0fb2af5f7d959dbafd5ddb7defa1c6b8e8636a\n"
    },
    {
      "commit": "732845c7e8d294bb1aaa4cd9687da62b51f1f6e6",
      "tree": "775ccbda50c8bb2403af5cb52b8891a6130ded5d",
      "parents": [
        "6466c9e6e6278c740aed77f695f679be9f5db478"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 09:26:31 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:12:20 2013 -0700"
      },
      "message": "FastMixer computes presentation timestamps for fast tracks\n\nand forwards them to each track\u0027s ExtendedAudioBufferProvider::onTimestamp().\n\nChange-Id: I06fb9586bb7e20d5c0289abdc8cac6cd3fd2f6e8\n"
    },
    {
      "commit": "7fc97ba08e2850f3f16db704b78ce78e3dbe1ff0",
      "tree": "ada9fda1321150cc75295eece5f7f82e35f0c9f3",
      "parents": [
        "fc5ea08326b510c6f82f71845d95a8758a6ab698"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 16 17:18:58 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 25 12:22:18 2013 -0700"
      },
      "message": "HAL stream format for mixer output threads must be stereo 16-bit PCM\n\nDirect and tunnel output threads can support various HAL stream formats,\nincluded encoded.  But currently there are stereo 16-bit PCM assumptions\nin several places for mixer and duplicating output threads:\n - mMixBuffer and mixBuffer()\n - AudioMixer including resampler\n - FastMixer\u0027s mixBuffer\n - effects\n - NBAIO_Format\n - anywhere FCC_2 is used\n - possibly other places\n\nUntil those assumptions are removed, this CL enforces stereo 16-bit\nPCM in mixer and duplicating threads at the place where the HAL format\nis read.  It was already being checked in checkForNewParameters_l(),\nbut not in readOutputParameters().\n\nChange-Id: Ibe344cc922743da234299097aa1bb1f54795cc9b\n"
    },
    {
      "commit": "4182c4e2a07e2441fcd5c22eaff0ddfe7f826f61",
      "tree": "c7ed5d9b71f919bf664dd0cb6cbdd1c3de2f9241",
      "parents": [
        "0d61251648b5110bfc33ef5b3d19bbf65db0a7b5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 15 14:45:07 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 19 09:30:37 2013 -0700"
      },
      "message": "Use AudioSystem::setLowRamDevice() to configure memory\n\nBug: 9798886\nChange-Id: I9321e3f369f1ed9429ae222e3926ebdeb012b8b0\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": "3d1982595cb9cb0856841f1f57fbdb4581189e99",
      "tree": "411fe41a4645e65de97c1073fccc6c6ec0e87bbe",
      "parents": [
        "551ababe67ce31778000d52958e53e1c56e1a294"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 10 17:20:54 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 10 17:20:54 2013 -0700"
      },
      "message": "Fix indentation\n\nChange-Id: Ia28720a7d0fad8cf110c2448b967d5648d42e017\n"
    },
    {
      "commit": "a07f17ca46db04c9d5d9e7d6b2878db59ca2b9ea",
      "tree": "5f35039b1b7ed7518280e9a436536600a5aac5c9",
      "parents": [
        "5e43772296d7c5b8faf4b0ce4efe68778729bc74"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 23 12:39:37 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 23 14:18:18 2013 -0700"
      },
      "message": "Remove timing jitter during startup of audio\n\nThis fixes a regression introduced recently, that increased timing jitter\nduring the startup of the FastMixer and AudioTrack callback threads.\n\nThe regression was to make requestPriority() asynchronous as a way to\navoid an apparent priority inversion in system_server.  This means that\nthe target thread could run briefly with the initial priority, before\nthe new priority takes effect.\n\nThis change removes the startup jitter for FastMixer, by making the\nrequestPriority() synchronous again for that case.  It doesn\u0027t matter\nthat this restores the priority inversion involving normal mixer thread,\nbecause it happens during startup of both threads.\n\nThe change also removes the startup jitter for the AudioTrack callback\nthread, by having the target thread check whether the requestPriority()\nhas completed yet.  If not, the target thread blocks with a timeout\nuntil the priority boost finishes.\n\nFinally, we now log an error message if the expected priority boost\ndoesn\u0027t happen.\n\nBug: 8698989\nChange-Id: Id590e9a274b70ec1ba85b44a585ee37a22e41cbc\n"
    },
    {
      "commit": "c9b2e20f7c9a71e07ef398152709c76079decbcd",
      "tree": "7e3cbee883fbe1462e24a31b8b4af5a5911e8276",
      "parents": [
        "bf04b5860182d8f4130dcb5d6d88ee68a58c99cd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 26 11:32:32 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 04 12:58:21 2013 -0800"
      },
      "message": "Miscellaneous cleanup\n\nAbbreviation framesReady to fRdy for new systrace.\nPut inline const on one line.\nUse local copy of mState in state.\nImprove logging.\nLine length 100.\n\nChange-Id: I8201c3ce0e53fd464fd33d02544e52c342d40b68\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": "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": "ecd9389c8712aedeb2a79823ea0e4fb842684269",
      "tree": "32635746bbb3c6f4b4297754d0d388fae41c6574",
      "parents": [
        "3051df27261e9952c0e642dec548515250e85f6a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 12 20:43:58 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 12 20:43:58 2013 +0000"
      },
      "message": "Revert \"Temporary additional logging to investigate bug\"\n\nThis reverts commit 3051df27261e9952c0e642dec548515250e85f6a\n\nChange-Id: I8bf5c3e91b65bd20de26f480c367c2854b62373c\n"
    },
    {
      "commit": "3051df27261e9952c0e642dec548515250e85f6a",
      "tree": "848a1795333131b9fac0c7be0b791f7f69a330d4",
      "parents": [
        "272ab546940054ad7991bef4b3a36f15175721cd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 12 12:12:42 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 12 12:40:18 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\nBug: 6490974\nChange-Id: I4c030f171343fe4b483eae0ddea4427118d8d4b1\n"
    },
    {
      "commit": "9e58b552f51b00b3b674102876bd6c77ef3da806",
      "tree": "7b01e1d9f788cbfb49a4c4fa8699334f630ea89a",
      "parents": [
        "a416756864e2c7750d59d967ec2185532fa5c2e0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 18 15:09:48 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 31 16:40:24 2013 -0800"
      },
      "message": "AudioFlinger uses media.log service for logging\n\nChange-Id: Ia0f8204334f6b233f644d897762a18c95d936b4b\n"
    },
    {
      "commit": "cb02ba7c2666b72db030b8bf4a3f2cddc3c23ead",
      "tree": "776b9595273fb31b58b5cef46242d6e4f76b88cf",
      "parents": [
        "534f712969d647b2e7a040581ac148e03ffa7585",
        "a3d2628a22f2b3d682495044897a40ea1399a662"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 20 07:39:48 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 20 07:39:49 2012 -0800"
      },
      "message": "Merge \"Add warning about following the design rules\""
    },
    {
      "commit": "b3a8364eeea621ef63b983e4c1b0771f62069fe0",
      "tree": "646bee189a8f77d41e87ffc42af3dd097f5ec254",
      "parents": [
        "ece53e018b38794f7cdf978a605f943f9ec96c3b"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Nov 30 19:42:28 2012 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Nov 30 19:44:24 2012 -0800"
      },
      "message": "audioflinger: define ANDROID_SMP, remove conditional tracing\n\nWith ANDROID_SMP set, tracing functionality is completely inline, and\nwithout the performance hits of external library calls, tracing does\nnot need to be conditionally compiled.\n\nChange-Id: I4b29a9a52c403f0d2ea137c5b7bc05a518a7ca4b\n"
    },
    {
      "commit": "371eb9756c32109ea572b91216b19bb623f6d3fd",
      "tree": "dcdd0d3ed708466f6f32b41a79d91926294dcaba",
      "parents": [
        "45f7c446777171a728f9eb257f48145dde5d19e2"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Nov 30 11:11:54 2012 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Nov 30 11:11:54 2012 -0800"
      },
      "message": "Remove conditional compilation of ATRACE functions\n\nTracing functions are meant to be dynamically controlled via sysprops.\nConditional compilation removes this functionality.\n\nChange-Id: I26bc473d104d0b3c50a228dddfda3fa2428d157a\n"
    },
    {
      "commit": "a3d2628a22f2b3d682495044897a40ea1399a662",
      "tree": "cd30e8394783418c94a49aeb41f046e364860810",
      "parents": [
        "2546219a54970e0ad53bd218586cdc48d6039b20"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 07:57:43 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 30 07:59:09 2012 -0800"
      },
      "message": "Add warning about following the design rules\n\nChange-Id: Ic4895ed5682bad10b03e97d8015e642ee1696533\n"
    },
    {
      "commit": "2d590964aa58e137d17a43e095e6443dd0fe2e98",
      "tree": "6327d555b89f3e7222f6db7aa1a0c3a8f0b293c6",
      "parents": [
        "c67d057596d81aea8fcd4868453cfcb501157297"
      ],
      "author": {
        "name": "Simon Wilson",
        "email": "simonwilson@google.com",
        "time": "Thu Nov 29 15:18:50 2012 -0800"
      },
      "committer": {
        "name": "Simon Wilson",
        "email": "simonwilson@google.com",
        "time": "Thu Nov 29 15:19:46 2012 -0800"
      },
      "message": "Use ATRACE macros instead of Tracer statics\n\nATRACE_BEGIN and ATRACE_END have replaced the static\nTracer::traceBegin and Tracer::traceEnd functions, so\nuse them instead.\n\nFixes compilation errors when tracing is enabled.\n\nChange-Id: I4d1147d2f76afcdf113e9986f0544cb848802b15\n"
    },
    {
      "commit": "80b3273cea8660fe8a5868d024d2788a1e083ffc",
      "tree": "e9d4e782be64fe03b80331cf62f98ca27c16be6f",
      "parents": [
        "94a68ecf2b56bd56994d0352cbaad56e58dcf0dc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 24 11:29:00 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 24 11:48:20 2012 -0700"
      },
      "message": "Check clock_gettime(CLOCK_MONOTONIC) for failure\n\nBug: 7100774\nChange-Id: I15a84a19bb6d6ef1d9dac4beaa03587638196404\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": "1ab212cf5cfa5b88c801840e11e3191cd10f48e4",
      "tree": "247292feb5fe019488a87ff64926643fa84e766e",
      "parents": [
        "d06ab147394b0b49679c924a51d77c91dea04d82"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 07 12:58:38 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 07 12:58:38 2012 -0700"
      },
      "message": "Add outlier statistics for fast mixer cycle times\n\nChange-Id: I31c964caeb8b5d9ae0a426224f030cdcb01114a0\n"
    },
    {
      "commit": "0d27c65ddb5c968baa6db0c26e80f5c451bc52bc",
      "tree": "62cdadd7e272d5f5f5f187767984ecb0c12b5080",
      "parents": [
        "e983aa4ff4d80af7702888e230b9aaa93a7b7e57"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 07 10:38:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 08 14:28:42 2012 -0700"
      },
      "message": "Tune the overrun correction\n\nThe new overrun correction is: if the previous write() cycle time is \u003c\n50% of expected, then sleep enough extra to make the total cycle time \u003d\n95% of expected.  This should help compensate for HAL implementations\nthat have uneven cycle times due to sample rate conversion.\n\nBug: 6881638\nChange-Id: I5ab58afdfceee7ac523177f021fbf62d743d571a\n"
    },
    {
      "commit": "2c3b2da3049627264b7c6b449a1622f002210f03",
      "tree": "f99fadbfef22ff3b7709a505623371c22e39566c",
      "parents": [
        "ee578c0330319f04a48bccbdb26b53fea0388d04"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Aug 02 17:08:54 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Aug 08 11:28:15 2012 -0700"
      },
      "message": "AudioFlinger: fix timed audio\n\n(cherry picked from commit e20ac92c564a2f4e8123885807abdf0a78de0dd7)\n\n\u003e AudioFlinger: fix timed audio\n\u003e\n\u003e Addresses Bug 6900517.\n\u003e\n\u003e Finish up support for timed audio in the new FastMixer world.  Pay special\n\u003e attention to remaining lock-less and voluntary yield free on the FastMixer\n\u003e thread.  This fixes audio playback for Q on JB.\n\u003e\n\u003e Change-Id: Iaf815e58a1b1d0a0190051794bec8dc5c9231785\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: I9bd687acc345a05867af48e71116690fdb0ce1b5\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "eb15716b59020f342df62bce5b293f0603b94861",
      "tree": "d230ab42f45394837dffc52deb8d31c8fef9c1c1",
      "parents": [
        "972af221ae7253e406e0e1ea853e56a3010ed6b1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 13 14:59:07 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 15 14:53:31 2012 -0700"
      },
      "message": "Change definition of warmup period\n\nPreviously, warmup was considered done as soon as any write() took\nmore than 0.5 nominal cycle time.  In practice, this was always the\nfirst write() that turned on power to the output path, and it didn\u0027t\naccurately account for filling the full kernel buffer queue, or for\nbuffering in the HAL sample rate conversion.\n\nNow warmup is considered done when a write() _after_ the first write\ntakes more than 0.5 nominal cycle time.\n\nThis will throttle the initial pull rate after coming out of standby.\nWhen combined with another change to throttle the pull rate for\ndevices with HAL sample rate conversion, it may help reduce some of the\nnotification glitches.  The only downside is that it will increase the\nwarmup time a bit.\n\nBug: 6508317, 6650846, 6607056\nChange-Id: I39f324c5195578170a55308e9601d3a1b41db3e0\n"
    },
    {
      "commit": "972af221ae7253e406e0e1ea853e56a3010ed6b1",
      "tree": "77175ced586c67275d09b73524b935b15eab3090",
      "parents": [
        "fc42e16d96b7e1b18b573f40df1319c56f8ab933"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 13 17:14:03 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 15 10:21:47 2012 -0700"
      },
      "message": "FastMixer compensates for SRC jitter in audio HAL\n\nForce a sleep if audio HAL write() returns too quickly.\n\nBug: 6661275\nChange-Id: Ie810f5a087b89fb24dab229a0e500af1dee53571\n"
    },
    {
      "commit": "0a14c4ce1a41bc09eb7855fa531a3af629a69139",
      "tree": "dfde5cdadeea7bbbdb8e50477ca35ac4768693f0",
      "parents": [
        "362ebcbf100f7fccd37551c77e67c4faa7241b63"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 13 14:58:49 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 14 17:49:31 2012 -0700"
      },
      "message": "Make CPU frequency statistics optional\n\nCertain CPUs with dynamic cluster swapping and hotplug\ndon\u0027t report CPU frequency accurately.  The file descriptors\nused to read the frequency become stale and report bogus data.\nSo make this feature a build time option for debugging only.\nThis will also improve performance of the fast mixer loop.\n\nChange-Id: I602f81ec3281a37992769208be08084ed1469e8c\n"
    },
    {
      "commit": "868c0abe9f26852c217bc201b337e72c68f829b8",
      "tree": "1ffcd485ce7c69bc424fc7fafb00412effd9c126",
      "parents": [
        "b4ea1ab821d652cb080910d4081f5f1318597a90"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 13 14:59:17 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 13 15:14:16 2012 -0700"
      },
      "message": "Shorten dumpsys media.audio_flinger output\n\nDon\u0027t include in FastMixer if it\u0027s not present.\nThis removes confusing clutter especially for devices\nwith a separate deep buffer output thread, or for the\nduplicating thread and A2DP output thread.\n\nChange-Id: I84933f5555593256f11ba0895ec915c09cf16963\n"
    },
    {
      "commit": "9a0d82df8fd681257bc5b29fb5e6c65fcc7cef5a",
      "tree": "9e31aa4a1c1a6b52b24c124eab362b4b4a67fb4f",
      "parents": [
        "67c0a58e05f4c19d4a6f01fe6f06267d57b49305"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 05 18:12:11 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 06 09:23:31 2012 -0700"
      },
      "message": "audioflinger: modify fast mixer overrun management\n\nDo not force sleep when an overrun occurs. This was for non\nblocking audio HAL and is unused.\nKeep statistics on overruns.\n\nBug 6605215.\n\nChange-Id: I295455d4562201aa3814c88bdd6e52c9226712af\n"
    },
    {
      "commit": "1295bb4dcff7b29c75cd23746816df12a871d72c",
      "tree": "81cf673d36c8aaf3d9d51a9f372a8425ee5fa49b",
      "parents": [
        "bf0d21fb1310e8677caa53b90e8c3aecebc7fc13"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 31 07:43:43 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jun 03 14:49:11 2012 -0700"
      },
      "message": "Fast track dumpsys\n\nBug: 6591648\nChange-Id: I696f51c682e7233ba690d97da26012084989b412\n"
    },
    {
      "commit": "04a4ca4217e9b30342d5865024c340013d7184e8",
      "tree": "5e212501d1b93a5eedad01410dc863fef49ec258",
      "parents": [
        "dadc0ddbfe309086801b479ddc91c55eeb2a9cbb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 01 10:49:51 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 01 10:51:34 2012 -0700"
      },
      "message": "Was calculating measured warmup time wrong\n\nBug: 6592923\nChange-Id: I980c6fc69d78c569147ea44ce33a7f8a41739c91\n"
    },
    {
      "commit": "fbae5dae5187aca9d974cbe15ec818e9c6f56705",
      "tree": "101ef33da2a18e0cb1c70a0e1ae085450dc60396",
      "parents": [
        "cd8a36fdc49a823f78d45e8e1a464dc261553b26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 21 09:17:20 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 21 12:36:06 2012 -0700"
      },
      "message": "Keep a copy of most recent audio played\n\nChange-Id: I6b2f97881c39998a2fae9ab79d669af6c0a37e94\n"
    },
    {
      "commit": "99c99d00beb43b939dedc9ffb07adb89f6a85ba5",
      "tree": "a93aeb409fa2399bf552ea901793514f0cf79f6b",
      "parents": [
        "552477608b137fb66af126655c6865207a82d888"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 14 16:37:13 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 17 16:29:07 2012 -0700"
      },
      "message": "systrace for audio\n\nTrace fast track buffer fill status for underruns etc.\n\nMove the definition of macro to Android.mk.\n\nNo overhead if disabled.\n\nChange-Id: If0e83e21b61b059ca38f543f8a6ffb58e08c79ee\n"
    },
    {
      "commit": "c059bd4246c1b3944965be921e5b334d51cd236c",
      "tree": "d1c5ee08f63985bc15c2d4ad9025ee6631667663",
      "parents": [
        "e00e0485b0aa1e432be8c639da0eb5285942777b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 14 17:41:09 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 17 15:01:45 2012 -0700"
      },
      "message": "Skip bad kHz values, and display them accurately\n\nOne device reports zero CPU kHz occasionally, so skip those values.\n\nPreserve accuracy of the low-order 4 bits of the the CPU frequency.\n\nChange-Id: I7d934f697412277462464fca82d112d0306a214e\n"
    },
    {
      "commit": "09474df67278c0cd621b57c4aef1deaec4d8447f",
      "tree": "eafcf9a62df5202c4a0628a9ac9798b7c49dd08b",
      "parents": [
        "d08f48c2ad2941d62b313007955c7145075d562c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 10 14:48:07 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 14 08:56:45 2012 -0700"
      },
      "message": "Improve underrun handling for fast tracks\n\nMaintain more accurate accounting of type of underrun.\nAutomatically remove track from active list after a series of \"empty\" underruns.\n\nChange-Id: If042bf80e1790dcaaf195c99dc9c0ed9b55382c1\n"
    },
    {
      "commit": "e58ccce45598bcf4b4874b0e87cd1eb8d05ba9a9",
      "tree": "03b73370e77533c245dddacdcfe91bcbf5760700",
      "parents": [
        "c20f467d54f921730aa0b2fd087ad83496aeaf4b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 11 15:19:24 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 11 15:21:26 2012 -0700"
      },
      "message": "Fix 2 bugs in fast mixer statistics\n\nWas losing the upper half of the bounds, and MHz was off.\n\nChange-Id: I61c98027b35ce7c3578ea6f3acf05aa5c48a5831\n"
    },
    {
      "commit": "d8e6fd35ec2b59ee7d873daf1f1d9d348221c7bc",
      "tree": "c5c5a16ca2990abee1a0e0e90d006e9437d3f3ce",
      "parents": [
        "c3798d7e97cb11076310f06163417c0631cce04e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 07 11:07:57 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 10 14:20:52 2012 -0700"
      },
      "message": "Use audio tag for system tracing\n\nDisabled by default; uncomment ATRACE_TAG to enable\n\nChange-Id: I99af894022a859ee5644bd853cfd8a48e4735ff9\n"
    },
    {
      "commit": "42d45cfd0c3d62357a6549c62f535e4d4fe08d91",
      "tree": "40667398d6db38a70fa2729e6d574a01b1ebefd1",
      "parents": [
        "c150ca7dda844891fa684f6898da7f7e0c40329d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 02 10:34:47 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 10 13:39:16 2012 -0700"
      },
      "message": "Update fast mixer statistics\n\nCompute statistics on fast mixer elapsed time and CPU load per cycle using a\nsimple moving average rather than by fixed blocks.  This has a couple advantages:\n - remove burstiness of CPU usage due to former floating-point calculations in fast mixer\n - gives us flexibility in how to report (e.g. could report over just the last 1 second)\n\nDisadvantage is increased RAM, and since the samples are not updated\natomically, it is possible to have an error in the statistics.  This\nshould not be much of an issue due to the relatively large number of samples.\n\nAlso add CPU raw ns and adjusted MHz statistics.\n\nChange-Id: Iaa2cd13f18250c3162aff40409b3694b769d9505\n"
    },
    {
      "commit": "288ed2103d96f3aabd7e6bea3c080ab6db164049",
      "tree": "dec8e7b3a993e86baa8916ba70dcd6b3c053d062",
      "parents": [
        "0c0abd4ad26971b5fba94734137fe0bb1a590ab6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 25 17:52:27 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 30 13:00:31 2012 -0700"
      },
      "message": "Fix race condition for non-started fast tracks\n\nThis required re-implementing how fast tracks are considered active.\nNow, they use the same logic as normal tracks, except underrun is ignored.\n\nOther changes:\n - add framesReady() to AudioBufferProvider interface\n - rebased\n - add track underrun counter state to fast mixer dump state\n - move dumpsys header to Track::appendDumpHeader()\n   so it closer to where tracks are dumped\n - display track state in dumpsys as a character code\n - measure and display warmup time and cycles in dumpsys\n - copy in the presentation complete code\n - add ExtendedAudioBufferProvider for framesReady() which returns size_t\n - simplify underrun tracking\n - deferred reset track after stop()\n - add comments\n\nChange-Id: I7db8821bc565230ec76da1f9380fe3fb09735e5b\n"
    },
    {
      "commit": "21e8c50bd13ebe44f3088e26c9c6df0e163c469c",
      "tree": "0437226abb896de30fd20123eb3089168989391a",
      "parents": [
        "8d6086781c79620ce6133df7bd27f0efdee6b4e6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 12 09:39:42 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 20 07:38:05 2012 -0700"
      },
      "message": "FastMixer update\n\nUpdates:\n - Add support for mono fast tracks\n - Add support for optional sample rate conversion on fast tracks\n - Log sample rate and frame count\n - Enable statistics\n\nChange-Id: Ife014edf4f452da361f3eaaae19209ef6ff6958b\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": "97b5d0d5b5ef766eb5dd680d05a5d199662d4ae0",
      "tree": "a7042a97ac8019ba62a7c35ef9e11711caab7021",
      "parents": [
        "0845682ff93c9765b74b53dc404d0954efc28c2e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 18:54:19 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 18 07:49:43 2012 -0700"
      },
      "message": "Fast mixer\n\nChange-Id: I61552f83507e08e4c706076b9fb15362869e6265\n"
    }
  ]
}
