)]}'
{
  "log": [
    {
      "commit": "500e510c7bd96a3d2959cdd858db4045b74a0e1a",
      "tree": "1bc7df57dc78a0db2d7c9fb3b0945ff5e681328e",
      "parents": [
        "0d681abd16873a265a10aee1e9ae8fa062309de3"
      ],
      "author": {
        "name": "Mike J. Chen",
        "email": "mjchen@google.com",
        "time": "Mon Aug 15 13:28:26 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Oct 28 10:14:48 2011 -0400"
      },
      "message": "Media framework changes for Tungsten.\n\nSquashed merge from master-tungsten of the following changes:\n\ncommit 73d09e18c4557e583a1684d44d598a1a02fd0cf2\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Mon Jun 20 13:57:44 2011 -0700\n\n    Remove TungstenMisc and rename LinearTransform\n\n    Change-Id: Ie8aa3e24e09fdbf6ef8996c26deb9c5640e20d1b\n\ncommit 3114aabe76ad733b59929d87e49c68229f5ae2e8\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Fri Jun 3 10:47:16 2011 -0700\n\n    Name changes and spelling fixes.\n\n    + Replace the term TungstenTime with the Eugene-approved term CommonTime.\n    + Fix a spelling error in a comment I noticed.\n\n    Change-Id: I8c10d618206826d16055f78c7724e24443bb03fd\n\ncommit cbf2903ab6893b6e662514e2f6d670e268a419df\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Fri Apr 15 09:27:54 2011 -0700\n\n    Migrate Tungsten code from the HC-Tungsten to the Master-Tungsten branch.\n\n    Change-Id: I95372d913a0761d90168edb4016f5ece0ea74502\n\ncommit bc7c46aa629f9883e959ef23de8da297f9eb508b\nAuthor: Jason Simmons \u003cjsimmons@google.com\u003e\nDate:   Mon Jun 20 13:59:17 2011 -0700\n\n    Create a separate class for timed AudioTracks\n\ncommit 43be3231034ff8537fdd84422a7954780038671f\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Mon Jun 27 18:59:12 2011 -0700\n\n    Move libaah_rtp over from the vendor directory.\n\n    Also move factor PipeEvent out into utils.\n\n    Change-Id: Id3877c66efe22d771cf3ef4877107e431b828e37\n\ncommit 17526eb3148c9c3d4365b6d5b47e8dc13bca71b6\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Mon Jun 27 17:06:49 2011 -0700\n\n    Name changes for the TRTP Players s/tungsten/aah/g\n\n    Change-Id: I55e9ad13003f6aa6a36955b54426a7efbe31ac51\n\ncommit 423fc1bfc0fda799c421a650c83c4b9293b1a08c\nAuthor: Jason Simmons \u003cjsimmons@google.com\u003e\nDate:   Mon Jun 20 17:56:09 2011 -0700\n\n    More timed AudioFlinger changes requested by code review:\n    * change trimTimedBufferQueue to trimTimedBufferQueue_l\n    * create one timed audio buffer heap per client process instead of one per track\n    * grow the silence buffer on demand\n    * some error handling fixes in timed getNextBuffer\n    * calculate the next output PTS in all mixer and track hooks\n\n    Change-Id: Ifc51a08b55029b7c48902ab2f22933ad7bafe1ad\n\ncommit a148e2674b1d3cb73289b82b85c333f0a66824a9\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Mon Jun 20 17:02:24 2011 -0700\n\n    Move the A@H time service into frameworks/base\n\n    Change-Id: I5c570cde70e8931e205516cb33517585804ce841\n\ncommit dfa438fa49bdaeeb2ec5fd0d17b30d881608b6b1\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Mon Jun 20 11:55:36 2011 -0700\n\n    Fix the build after Mike\u0027s code moving.\n\n    Change-Id: Ia883643ded252168bcc5a70584ab6ce97bb05266\n\ncommit 04489474ec8e73efe1bf52918831f41659033162\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Fri Jun 17 14:19:50 2011 -0700\n\n    Refactor the local/common clock services.\n\n    This change is one of a set of 5 changes made to different repositories.  Look\n    for this comment in all of them.\n\n    Refactor the local/common clock services in tungsten to match android best\n    practice.  Notable changes include\n\n    + The kernel no longer knows anything about common time.  Common time has been\n      moved completely up into user land.  This has an impact on the accuracy of the\n      timesync debugging code, and the netfilter assisted approach to network based\n      timesync is going to have to be modified.\n    + The timesync driver used by A@H is now just local time driver.\n    + The kernel no longer needs access to the linear transform math code, and it\n      has been removed.\n    + A new HAL has been introduced to expose the concept of local time to the\n      system.\n    + A non-slewable stub implementation of the local time HAL based on\n      CLOCK_MONOTONIC has been added.\n    + The TungstenTime library has been eliminated.  Its functionality has been\n      distributed among the common time binder service, the local time hal and the\n      linear transform utility code.\n    + All clients of the old TungstenTime library have been changed to be clients of\n      the binder service, the hal and the utility code.\n    + The reset_tt utilities have been removed, they no longer have a purpose in the\n      system.\n    + more progress has been made in eliminating the word \"tungsten\" from the code.\n\n    Things left to do include\n    + Finish getting rid of tungsten from the time service.\n    + Move the time service into the framework; AudioFlinger\u0027s new timed mode\n      depends on it and the service cannot continue to live in vendor tungsten.\n\n    Change-Id: I999b6cfb4a9d267818a86d747c35eecfc6693101\n\ncommit d48194545eed1116a84d81e2fb53315d2b0701a7\nAuthor: Jason Simmons \u003cjsimmons@google.com\u003e\nDate:   Thu Jun 16 14:22:46 2011 -0700\n\n    Change the interface of the AudioMixer and AudioBufferProvider to accept a presentation timestamp\n\n    Change-Id: Ice2df5628d45a7f77100e7008103b35b3d3160a4\n\ncommit 02561419db82b01ffb28df38000716c612988427\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Tue May 10 14:00:21 2011 -0700\n\n    Put in a hack for controling master volume in the policy manager.\n    Fix initial master volume reporting.\n\n    Change-Id: Ia6caf2bbc6083c5f99fab852baa40fff10fc5fc7\n\ncommit 549cdc3ba115dc654cdade261fb055c72c6cdb79\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Wed May 4 11:46:17 2011 -0700\n\n    Make certain the logic for computing the output stream mixing point is hardened\n    against underflow and overflow when input and output sample rates don\u0027t match.\n\n    Change-Id: I5ebea07c9938107b435bec7413418622767e4e16\n\ncommit 8043d8ed63f51e76d452d22be7d453d4a7794530\nAuthor: Jason Simmons \u003cjsimmons@google.com\u003e\nDate:   Wed Apr 27 18:06:27 2011 -0700\n\n    Add the patch for timed audio support to the mono resampler\n\n    Change-Id: I526f34ae9d1e8e3b0ed2fb05af3d024d5c5fe711\n\ncommit 2be89486ef23f0b0b0cc2dc25a4c0ee691043f00\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Wed Apr 27 10:38:57 2011 -0700\n\n    Extend the AudioHWInterface to allow it to specify the initial master volume used by AudioFlinger.\n\n    Change-Id: I8823330801c927494cf7ca31a6b8f9264fbfbb26\n\ncommit ff89a4d5e37e6a05a2b03f79ab4e97833dd66393\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Wed Apr 27 09:07:14 2011 -0700\n\n    Fix an issue with inconsistent volume reporting.\n\n    Changed masterVolume() to return the same value as the last call\n    to setMasterVolume when the HW layer is implementing master\n    volume control.  The masterVolume/setMasterVolume API seems to be\n    an idea which was abandonded a long time ago; as of today the\n    system only ever sets it to 1.0 at startup and then never changes\n    it.  Until we can figure out how the concept of external\n    amplifier gain control fits into the Android audio framework,\n    Tungsten is exposing this API via a hack-tastic invoke back door\n    in the TungstenRXPlayer and needs the getter/setter results to be\n    consistent.\n\n    Change-Id: I2ac730fa8fc9ee28c88f1a8e6f2e493eb5b65544\n\ncommit 086511b2d19cceb976747ac23e12b73fc7c28bea\nAuthor: Jason Simmons \u003cjsimmons@google.com\u003e\nDate:   Mon Apr 25 16:07:19 2011 -0700\n\n    Add handling of timed audio tracks in the generic resampling mixer\n\n    Change-Id: Ic3be1d21b1117f1b233808be543c28a0dcec4792\n\nChange-Id: I6ec5d2bca9b8ebc0acd395a7dd92e1a48fcdfa9b\nSigned-off-by: Mike J. Chen \u003cmjchen@google.com\u003e\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\nSigned-off-by: Jason Simmons \u003cjsimmons@google.com\u003e\n"
    },
    {
      "commit": "3a34befc6fb04a4945a849e8bda8b84e4bf973fe",
      "tree": "80dee67385fb78763b2c25f6dce9ed122bfd9aee",
      "parents": [
        "a1f10e8959cd4656aedb2613e855342102e59555"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 02 13:33:41 2011 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 09 10:21:10 2011 -0700"
      },
      "message": "Keep effects sessions active when the caller dies.\n\nDon\u0027t remove effects until the session they are in goes away or all\nAudioEffects have been explicitly released. This allows the control\npanel process to die without stopping the effects.\n\nChange-Id: I4496e5df080230ca1af149dec95c1309ab8ea888\n"
    },
    {
      "commit": "0d255b2d9061ba31f13ada3fc0f7e51916407176",
      "tree": "4df26e48710542386bddab7a0d1cbfa5d6835ac0",
      "parents": [
        "65580f9adf6c4d98449ad0716488f9fe3869aa5a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue May 24 15:53:33 2011 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jun 01 10:55:29 2011 -0700"
      },
      "message": "Use channel mask instead of channel count for track creation\n\nRecord and playback objects (resp AudioRecord and AudioTrack)\nare created using a channel mask, but this information is lost\nin the mixer because only the channel count is known to\nAudioFlinger. A channel count can always be derived from a\nchannel mask.\n\nThe change consists in:\n- disambiguiting variable names for channel masks and counts\n- passing the mask information from the client to AudioFlinger\n and the mixer.\n- when using the DIRECT ouput, only verifying the format of\n the track is compatible with the output\u0027s for PCM.\n\nChange-Id: I50d87bfb7d7afcabdf5f12d4ab75ef3a54132c0e\n"
    },
    {
      "commit": "65580f9adf6c4d98449ad0716488f9fe3869aa5a",
      "tree": "71432ddbf09fcc122be1ef5781bbc2d87f725ad8",
      "parents": [
        "e1315cf0b63b4c14a77046519e6b01f6f60d74b0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 27 17:51:52 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 27 17:51:52 2011 -0700"
      },
      "message": "Removed interface to load audio effects libraries\n\nRemoved unused functions allowing dynamic loading of audio effects libraries\nfrom effects factory API.\n\nChange-Id: I06cc5a51dc10aca87c7a8687bbb874babd711eca\n"
    },
    {
      "commit": "eda6c364c253ba97ee45a3adeb8c2b45db1f81db",
      "tree": "7e8011600b617e524645928514e5eaf3f867bb75",
      "parents": [
        "ab8a0badb8fb1e294dacf2eb6a891439f348aff9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 02 09:33:30 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 03 09:26:24 2011 -0800"
      },
      "message": "Fix issue 3371080\n\nModified default volume control logic in AudioService:\n1 IN_CALL volume if in video/audio chat\n2 NOTIFICATION if notification is playing or was playing less than 5s ago.\n3 MUSIC\n\nModified silent mode:\n- now also affect MUSIC stream type\n- entering silent mode when VOL- hard key is pressed once while selected\nstream volume is already at 0 (except for VOICE_CALL stream).\n- exiting silent mode when pressing VOL+ hard key while in silent mode\n\nPlay sound FX (audible selections, keyboard clicks) at a fixed volume.\n\nModified audio framework:\n- isStreamActive() method now implemented in AudioPolicyManagerBase (previously AudioFlinger)\n- iStreamActive() now specifies a time window during which the stream is considered\nactive after it actually stopped.\n\nChange-Id: I7e5a0724099450b9fc90825224180ac97322785f\n"
    },
    {
      "commit": "de070137f11d346fba77605bd76a44c040a618fc",
      "tree": "ba741240b391a66899514061ccda38254e539013",
      "parents": [
        "f997cabca292d70d078ae828e21c28e6df62995f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 04:45:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 10:31:57 2010 -0700"
      },
      "message": "Audio policy manager changes for audio effects\n\nAdded methods for audio effects management by audio policy manager.\n- control of total CPU load and memory used by effect engines\n- selection of output stream for global effects\n- added audio session id in parameter list for startOutput() and stopOutput().\nthis is not used in default audio policy manager implementation.\n\nModifications of audio effect framework in AudioFlinger to allow moving and reconfiguring\neffect engines from one output mixer thread to another when audio tracks in the same session\nare moved or when requested by audio policy manager.\nAlso fixed mutex deadlock problem with effect chains locks.\n\nChange-Id: Ida43484b06e9b890d6b9e53c13958d042720ebdb\n"
    },
    {
      "commit": "ffe9c25ce85e1af55d58ec025adc6367d70db7e8",
      "tree": "664f0a33a690b4d020417a9ecc81b32f696d0f0e",
      "parents": [
        "2439a8d6d99864ba0c2d94f428e6c9ee258cdd45"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 23 17:38:20 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 25 11:59:35 2010 -0700"
      },
      "message": "Various fixes and improvements in audio effects implementation\n\nEffect API:\n- Use different definitions for audio device, channels, formats... in AudioSystem and EffectApi:\n  Removed media/AudioCommon.h file created for initial version of EffectApi\n- Indicate audio session and output ID to effect library when calling EffectCreate(). Session ID can be useful to optimize\nthe implementation of effect chains in the same audio session. Output ID can be used for effects implemented in audio hardware.\n- Renamed EffectQueryNext() function to EffectQueryEffect() and changed operating mode:\n  now an index is passed for the queried effect instead of implicitly querying the next one.\n- Added CPU load and memory usage indication in effects descriptor\n- Added flags and commands to indicate changes in audio mode (ring tone, in call...) to effect engine\n- Added flag to indicate hardware accelerated effect implementation.\n- Renamed EffectFactoryApi.h to EffectsFactoryApi.h for consistency with EffectsFactory.c/h\n\nEffect libraries:\n- Reflected changes in Effect API\n- Several fixes in reverb implementation\n- Added build option TEST_EFFECT_LIBRARIES in makefile to prepare integration of actual effect library.\n- Replaced pointer by integer identifier for library handle returned by effects factory\n\nAudio effect framework:\n- Added support for audio session -1 in preparation of output stage effects configuration.\n- Reflected changes in Effect API\n- Removed volume ramp up/down when effect is inserted/removed: this has to be taken care of by effect engines.\n- Added some overflow verification on indexes used for deferred parameter updates via shared memory\n- Added hardcoded CPU and memory limit check when creating a new effect instance\n\nChange-Id: I43fee5182ee201384ea3479af6d0acb95092901d\n"
    },
    {
      "commit": "be916aa1267e2e6b1c148f51d11bcbbc79cb864c",
      "tree": "7e2be6182cde7d023ae9afec28463d69d231d7bc",
      "parents": [
        "c282e3eee921453fc9188705b4879d6289b71f9c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 01 23:49:17 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 03 03:21:53 2010 -0700"
      },
      "message": "Issue 2667801: [Audio Effect Framework] AudioFlinger, AudioMixer AudioTrack modifications.\n\nFirst drop of audio framework modifications for audio effects support.\n\n- AudioTrack/AudioRecord:\nAdded support for auxiliary effects in AudioTrack\nAdded support for audio sessions\nFixed left right channel inversion in setVolume()\n\n- IAudioFlinger:\nAdded interface methods for effect enumeraiton and instantiation\nAdded support for audio sessions.\n\n- IAudioTrack:\nAdded method to attach auxiliary effect.\n\n- AudioFlinger\nCreated new classes to control effect engines in effect library and manage effect connections to tracks or\noutput mix:\n  EffectModule: wrapper object controlling the effect engine implementation in the effect library. There\n\tis one EffectModule per instance of an effect in a given audio session\n  EffectChain: group of effects associated to one audio session. There is one EffectChain per audio session.\n\tEffectChain for session 0 is for output mix effects, other chains are attached to audio tracks\n\twith same session ID. Each chain contains a variable number of EffectModules\n  EffectHandle: implements the IEffect interface. There is one EffectHandle object for each application\n\tcontrolling (or using) an effect module. THe EffectModule maintians a list of EffectHandles.\n\nAdded support for effect modules and effect chains creation in PlaybackThread.\nmodified mixer thread loop to allow track volume control by effect modules and call effect processing.\n\n-AudioMixer\nEach track now specifies its output buffer used by mixer for accumulation\nModified mixer process functions to process tracks by groups of tracks with same buffer\nModified track process functions to support accumulation to auxiliary channel\n\nChange-Id: I26d5f7c9e070a89bdd383e1a659f8b7ca150379c\n"
    },
    {
      "commit": "05bca2fde53bfe3063d2a0a877f2b6bfdd6052cf",
      "tree": "7f99a6ebacbc1f76b561b95a04808636486b48ba",
      "parents": [
        "949c5037a6e019ff575bd481d286908c2eaa1e34"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 26 02:47:27 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 02 08:20:13 2010 -0800"
      },
      "message": "Issue 2071329: audio track is shorter than video track for video capture on sholes\n\nAdd API to retrieve number of frames dropped by audio input kernel driver.\n\nSubmitted on behalf of Masaki Sato \u003cmasaki.sato@motorola.com\u003e\n"
    },
    {
      "commit": "342e9cf388cceb807def720e40e8b0a217f4bcaa",
      "tree": "2d443e1de1a10b628016a5ceffb4b5a1cb031dd7",
      "parents": [
        "2dce41ad26cb3e9e15c9e456a84bcf5309548ca0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 19 17:37:09 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 26 18:40:39 2010 -0800"
      },
      "message": "Fix issue 2285561: New AudioFlinger and audio driver API needed for A/V sync\n\nAdded getRenderPosition() API to IAudioFlinger to retreive number of audio frames\nwritten by AudioFlinger to audio HAL and by DSP to DAC.\n\nAdded getRenderPosition() API to AudioHardwareInterface to retreive number of audio frames\nwritten by DSP to DAC.\n\nExposed AudioTrack::getPosition() to AudioSink() to make it available to media player.\n\nRemoved excessive log in AudioHardwareGeneric.\n"
    },
    {
      "commit": "b72a396826da8bd934b9531bbd40f86d7509e71c",
      "tree": "7eab39ce31d2609e7c0281e1f0541a8425d6e5e2",
      "parents": [
        "6c009eb5ff5f999b1d9bc6978d3213f9f797903f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 25 08:49:09 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 25 14:00:10 2010 -0800"
      },
      "message": "Fix issue 2378022: AudioService should direct volume control to STREAM_VOICE_CALL stream when STREAM_VOICE_CALL stream is active.\n\nModified AudioService.getActiveStreamType() so that STREAM_VOICE_CALL is selected when a track using this stream\ntype is playing.\n\nChanded isMusicActive() for a more generic isStreamActive(stream) method in AudioSystem, IAudioFlinger and AudioFlinger.\n"
    },
    {
      "commit": "f0ee6f4055e26fb35d9c526a596668a4dc9da5ba",
      "tree": "9eaa1f520448a3c83ec724cc4d02e9d4838c203f",
      "parents": [
        "66d1e82ce5d5e189442285b6225977137b65c608"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 21 08:14:22 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 21 12:29:37 2009 -0700"
      },
      "message": "Fix issue 2192181: AudioFlinger must provide separated methods to set VOICE_CALL stream volume and down link audio volume.\n\nAdded setVoiceVolume() method to AudioSystem, AudioFlinger, IAudioFlinger, AudioPolicyService.\nRemoved call to AudioHardwareInterface::setVoiceVolume() from AudioFlinger::setStreamVolume().\n"
    },
    {
      "commit": "5841db78dff14898538200287d246577b1fc37e2",
      "tree": "3d3cd806d443584a23a4ac3b3731ca3ba761c58e",
      "parents": [
        "85fa14d35468acca07ce0085d67b909f673fae07"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 09 05:16:08 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 09 05:16:08 2009 -0700"
      },
      "message": "Fix issue 2107584: media server crash when AudioFlinger fails to allocate memory for track control block.\n\nAudioFlinger: verify that mCblk is not null before using it in Track and RecordTrack contructors.\nIAudioFlinger: check result of remote transaction before reading IAudioTrack and IAudioRecord.\nIAudioTrack and IAudioRecord: check result of remote transaction before reading IMemory.\n"
    },
    {
      "commit": "fa2877b9ea48baed934b866d2ab3658b69c4c869",
      "tree": "df0324b64c7dba6cdd6b1f0baa8c14c4f4db09a9",
      "parents": [
        "285ead29c9eee092d367effd89f1c9f4f0bb9d6c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 28 08:44:33 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 00:27:19 2009 -0700"
      },
      "message": "Fix issue 2001214: AudioFlinger and AudioPolicyService interfaces should not use pointers as handles to inputs and outputs.\n\nUse integers instead of void* as input/output handles at IAudioFlinger and IAudioPolicyService interfaces.\nAudioFlinger maintains an always increasing count of opened inputs or outputs as unique ID.\n"
    },
    {
      "commit": "c2f1f07084818942352c6bbfb36af9b6b330eb4e",
      "tree": "88ac93be41edadd8cbfe6448e1421d5165883f59",
      "parents": [
        "a64c8c79af1a15911c55306d83a797fa50969f77"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 17 12:17:14 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 06:03:39 2009 -0700"
      },
      "message": "Fix issue 1795088       Improve audio routing code\n\nInitial commit for review.\nIntegrated comments after patch set 1 review.\nFixed lockup in AudioFlinger::ThreadBase::exit()\nFixed lockup when playing tone with AudioPlocyService startTone()\n"
    },
    {
      "commit": "b7056fc8525e0515c6f46676e3307088f8b64cdc",
      "tree": "d29743e9a55aa4f77fa25018e6248b459434bbbe",
      "parents": [
        "95634c8b6ad5419e310a5196bcc37f5988ed82da"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 22 19:00:22 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 26 16:12:20 2009 -0700"
      },
      "message": "some work to try to reduce the code size of some native libraries\n\n- make sure that all binder Bn classes define a ctor and dtor in their respective library.\n  This avoids duplication of the ctor/dtor in libraries where these objects are instantiated.\n  This is also cleaner, should we want these ctor/dtor to do something one day.\n\n- same change as above for some Bp classes and various other non-binder classes\n\n- moved the definition of CHECK_INTERFACE() in IInterface.h instead of having it everywhere.\n\n- improved the CHECK_INTERFACE() macro so it calls a single method in Parcel, instead of inlining its code everywhere\n\n- IBinder::getInterfaceDescriptor() now returns a \"const String16\u0026\" instead of String16, which saves calls to String16 and ~String16\n\n- implemented a cache for BpBinder::getInterfaceDescriptor(), since this does an IPC. HOWEVER, this method never seems to be called.\n  The cache makes BpBinder bigger, so we need to figure out if we need this method at all.\n"
    },
    {
      "commit": "95634c8b6ad5419e310a5196bcc37f5988ed82da",
      "tree": "ea712e322c480a83965f8f51946eda3263bdd080",
      "parents": [
        "0058db5fae0fecf66ee47aa1c35ddd6e11b6c66f",
        "f5879c1448cc6aebc51b26d3ec2399d66144f8f4"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 26 10:11:44 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue May 26 10:11:44 2009 -0700"
      },
      "message": "am de8268d6: Merge change 2331 into donut\n\nMerge commit \u0027de8268d6d1cd168510c490b17e93154d2eab767c\u0027\n\n* commit \u0027de8268d6d1cd168510c490b17e93154d2eab767c\u0027:\n  Fix issue 1846343 - part 1\n"
    },
    {
      "commit": "f5879c1448cc6aebc51b26d3ec2399d66144f8f4",
      "tree": "d5ef576af674468ebff2b7d39c60ca0c9a53a39e",
      "parents": [
        "260b80b02d35a29c7010b10e5bea504164441665"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 22 09:18:15 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 26 07:44:28 2009 -0700"
      },
      "message": "Fix issue 1846343 - part 1\n\nThis change is the first part of a fix for issue 1846343, :\n- Added new enum values for input sources in AudioRecord and MediaRecorder for voice uplink, downlink and uplink+downlink sources.\n- renamed streamType to inputSource in all native functions handling audio record.\n\nA second change is required in opencore author driver and android audio input to completely fix the issue.\n"
    },
    {
      "commit": "7562408b2261d38415453378b6188f74fda99d88",
      "tree": "6b2ac284c1b721385d695045357d9e1d60ece03a",
      "parents": [
        "615a9bfbd98b90e09d868c128db84836feb658e4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 19 19:08:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:03 2009 -0700"
      },
      "message": "move libbinder\u0027s header files under includes/binder\n"
    },
    {
      "commit": "1dd70b9f04961a06fcb73a97fca10a53b3245d3c",
      "tree": "a2704fd75e6de04107a7d40bd3e56f6f7acfa51b",
      "parents": [
        "ce80c82f58378da72d8a36f520c781cc5cac18a1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 21 07:56:33 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 21 07:56:33 2009 -0700"
      },
      "message": "Fix issue 1745312: Various cleanups in media framework\n\nAudioTrack, AudioRecord:\n  - remove useless mAudioFlinger member of AudioTrack and AudioRecord.\n  - signal cblk.cv condition in stop() method to speed up stop completion.\n  - extend wait condition timeout in obtainBuffer() when waitCount is -1 to avoid waking up callback thread unnecessarily\n\nAudioFlinger:\n  - remove some warnings in AudioFlinger.cpp.\n  - remove function AudioFlinger::MixerThread::removetrack_l()  as its content is never executed.\n  - remove useless call to setMasterVolume in AudioFlinger::handleForcedSpeakerRoute().\n  - Offset VOICE_CALL stream volume to reflect actual volume that is never 0 in hardware (this fix has been made in the open source): 0.01 + v * 0.99.\n\nAudioSystem.java:\n  - correct typo in comment\n\nIAudioflinger, IAudioFlingerClient:\n  - make AudioFlinger binder interfaces used for callbacks ONEWAY.\n\nAudioHardwareInterface:\n  - correct routeStrings[] table in AudioHardwareInteface.cpp\n"
    },
    {
      "commit": "89fa4ad53f2f4d57adbc97ae1149fc00c9b6f3c5",
      "tree": "28d26f7b71e943e25c7da6e8043d79b7b8d9cf7b",
      "parents": [
        "15f767b960b38059a74a42a33e16d8df2aec8bc1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "15f767b960b38059a74a42a33e16d8df2aec8bc1",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "ad04d9201452001dbaac4349f084cc9316190b89"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "7a2146d5807030b2629f347736be5301b61e8811",
      "tree": "50ca10276a614287673aeefe08f3d8c5eafdad33",
      "parents": [
        "5e07b5774c8b376776caa4f5b0a193767697e97e"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 13 12:57:50 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 13 12:57:50 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@131421\n"
    },
    {
      "commit": "5e07b5774c8b376776caa4f5b0a193767697e97e",
      "tree": "3260f49c6f0c5b4699ac6b80b4dc505566af17e8",
      "parents": [
        "e5198b620a9a208ec59ea8457282404725f8ff6e"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:44:00 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:44:00 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@130745\n"
    },
    {
      "commit": "7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8",
      "tree": "d9838a098f868ee2fcffc20627a8c9a33cb23377",
      "parents": [
        "2729ea9262ca60d93047e984739887cfc89e82eb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\n"
    },
    {
      "commit": "2729ea9262ca60d93047e984739887cfc89e82eb",
      "tree": "25962a3f1c5f70586af45c926c037e03c643857f",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
