)]}'
{
  "log": [
    {
      "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": "59686720182dcaa1a1a4757964df38c16f1a5246",
      "tree": "83c8de9fcaf2149d9a41be8ea866cec2ee2d0f4f",
      "parents": [
        "685ef09bcaf5de6abf2064d552296f70eaec6761",
        "d3922f72601d82c6fc067a98916fda0bd1291c5f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 04 17:05:30 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 04 17:05:30 2013 +0000"
      },
      "message": "Merge \"AudioFlinger: fix RecordThread initial device\""
    },
    {
      "commit": "d3922f72601d82c6fc067a98916fda0bd1291c5f",
      "tree": "65611e81a91807c46758ae234a802cdb7c72c3e2",
      "parents": [
        "2a330d6cbb25f0cdd6208aeee53b4a3b88dae3b0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 01 17:57:04 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 01 17:57:04 2013 -0800"
      },
      "message": "AudioFlinger: fix RecordThread initial device\n\nA regression was introduced when the audio device enums where\nmodified for a 32 bit representation: the device passed when\nconstructing a RecordThread was still the concatenation of input\ndevice and output device bit fields on one 32 bit value which\nis not possible anymore.\n\nThe fix consists in modifying the RecordThread constructor to accept\nseparate values for input and output devices.\n\nChange-Id: I81fb5f4718428b54251e65d74b86e198ce15193e\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": "2592f6e68edbed386e004d5b045233f15e7b9ba1",
      "tree": "81e9f664a0cfa6339e4c3acbee32eea0ab37c83e",
      "parents": [
        "2e4664677d72ce54201d3fd0beb0e10280add93c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 17 17:36:00 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 17 17:40:38 2013 -0800"
      },
      "message": "AudioFlinger: fix build with debug log enabled\n\nChange-Id: Id397155ec884c41cb84b35462ea09a97a04d3ed2\n"
    },
    {
      "commit": "d5681bc9a38fe4cd1d591e6ae62b9c68fb851041",
      "tree": "88d51865d4e4f98d05408975762b85894050e6b7",
      "parents": [
        "49d24d3fcd01aef0ec1fa4abd9c1b85473f64c0f",
        "e3aa659e9cee7df5c12a80d285cc29ab3b2cbb39"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 21 15:04:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 21 15:04:30 2012 -0800"
      },
      "message": "Merge \"Start isolating control block accesses in a proxy\""
    },
    {
      "commit": "c4974312e5a1e2ab94eca56045f991baf1508d73",
      "tree": "17beaaaec5b9ac92e524f473e92ec6236dce6629",
      "parents": [
        "66c8dd24358a08a59944e9fc13d686e0ff91eee9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 14 07:13:28 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 17 12:34:42 2012 -0800"
      },
      "message": "Fix build warnings\n\nChange-Id: I9e3cfa0c6b3467fe763ce55f759d179f02c5deea\n"
    },
    {
      "commit": "e3aa659e9cee7df5c12a80d285cc29ab3b2cbb39",
      "tree": "90fdb6e9da1a03f4f24691aae27ae94ff913f1c7",
      "parents": [
        "84b6440fa1d1274267deabe0bd8dc626b5548e4c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 04 12:22:46 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 12 12:21:59 2012 -0800"
      },
      "message": "Start isolating control block accesses in a proxy\n\nThe proxy object will eventually be the only code that understands the\ndetails of the control block.  This should make it easier to change the\ncontrol block in the future.\n\nInitial set of control block fields that are isolated:\n - sample rate\n - send level\n - volume\n\nPrepare for streaming/static separation by adding a union to the control\nblock for the new fields.\n\nFix bug in handling of max sample rate on a track.  It was only checking\nat re-configuration, not at each mix.\n\nSimplify OutputTrack::obtainBuffer.\n\nChange-Id: I2249f9d04f73a911a922ad1d7f6197292c74cd92\n"
    },
    {
      "commit": "5736c35b841de56ce394b4879389f669b61425e6",
      "tree": "b14624b7de512d74aab43e22b1f84fe08c29f647",
      "parents": [
        "efc0cfb61e34c3bc688a7cbcc1ccef23922251c1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 04 12:12:34 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 12 09:38:48 2012 -0800"
      },
      "message": "Prepare for track invalidation to be done by proxy\n\nDon\u0027t rely on control block to determine whether track has been marked\ninvalid.  Instead, use a local flag that can\u0027t be corrupted by client.\n\nChange-Id: I783dafe828f93c1c3d2d0e5a08105ea536436efb\n"
    },
    {
      "commit": "e4756fe3a387615acb63c6a05788c8db9b5786cb",
      "tree": "7e0b0278f71c7667784612a83af8f43ff08bf708",
      "parents": [
        "391f1bb93d5720bfe1a025307178b3208a3ce7d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 29 13:38:14 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 03 09:57:37 2012 -0800"
      },
      "message": "AudioTrack::mute() is unused so remove it\n\nIf ever needed again, it could be implemented on client side by forcing\na track volume of 0.\n\nChange-Id: I88a9b4f675b6dca2948549414f9ec2c192d29269\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": "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": "81784c37c61b09289654b979567a42bf73cd2b12",
      "tree": "a0a3fa9225bea006c2e037a337b43bf4ba7c0743",
      "parents": [
        "4d9cef6c007afd195a8f36d35d46b359bf909331"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 19 14:55:58 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 19 19:35:38 2012 -0800"
      },
      "message": "AudioFlinger files reorganization\n\nAudioflinger.cpp and Audioflinger.h files must be split to\nimprove readability and maintainability.\n\nThis CL splits the files as follows:\n\nAudioFlinger.cpp split into:\n- AudioFlinger.cpp: implementation of IAudioflinger interface and global methods\n- AFThreads.cpp: implementation of ThreadBase, PlaybackThread, MixerThread,\nDuplicatingThread, DirectOutputThread and RecordThread.\n- AFTracks.cpp: implementation of TrackBase, Track, TimedTrack, OutputTrack,\nRecordTrack, TrackHandle and RecordHandle.\n- AFEffects.cpp: implementation of EffectModule, EffectChain and EffectHandle.\n\nAudioFlinger.h is modified by inline inclusion of header files containing\nthe declaration of complex inner classes:\n- AFThreads.h: ThreadBase, PlaybackThread, MixerThread, DuplicatingThread,\nDirectOutputThread and RecordThread\n- AFEffects.h: EffectModule, EffectChain and EffectHandle\n\nAFThreads.h includes the follownig headers inline:\n- AFTrackBase.h: TrackBase\n- AFPlaybackTracks: Track, TimedTrack, OutputTrack\n- AFRecordTracks: RecordTrack\n\nChange-Id: I512ebc3a51813ab7a4afccc9a538b18125165c4c\n"
    }
  ]
}
