)]}'
{
  "log": [
    {
      "commit": "0986e7907ffc8387b04fb201e285784bcd11b9b7",
      "tree": "96733235d1e92e0f329ded11b9b55c0d67a4ca83",
      "parents": [
        "7d3a558b9ebf2256517ec99cd09c066cc7dbc92c"
      ],
      "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": "23f25cda0c73f8eb878844dea32fb0bd419edca2",
      "tree": "c1945d31c382864db8da0b829ccb017d2c31bbd6",
      "parents": [
        "bb04b631b60e0286c02e0fd4dd7ab764a001e0ce"
      ],
      "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": "cef3cd79489fa7897ffbacbc4e435651fb04f10d",
      "tree": "fd0d5f2763f08b01314ec7015c0a2e027e916c20",
      "parents": [
        "a77f93f76a40128ecc3d017ead6d1105f96b282a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 10 01:03:50 2009 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 13 09:25:13 2010 -0800"
      },
      "message": "Create base class for audio policy manager.\n\nFirst implementations of audio policy manager in Eclair branch have shown that most code is common to all platforms.\nCreating AudioPolicyManagerBase base class will improve code maintainability and readability.\n\nAudio policy manager code for platforms using generic audio previously in AudioPolicyManagerGeneric is replaced by AudioPolicyManagerBase.\nAudio policy manager test code previously in AudioPolicyManagerGeneric is moved to AudioPolicyManagerBase.\n\nAlso added a wake lock for delayed commands in AudioPolicyService.\n"
    },
    {
      "commit": "eb14a783be073b5fd6e8c8c9bc87d2d1919f2c9e",
      "tree": "7e288ac01c4a713d13e46c872b5dd682667dbe20",
      "parents": [
        "f0cdfa9955725c99cd4df6b933e4cb732847ebd1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 17 03:12:59 2009 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Dec 22 16:20:46 2009 -0800"
      },
      "message": "Fix issues 2333450 and 2333559:\n\nAdd new config values to AudioSystem::FOR_DOCK force usage to differenciate car and desk docks.\nUse a receiver for the sticky Intent.ACTION_DOCK_EVENT in AudioService to detect the type\nof dock and select force usage accordingly.\n"
    },
    {
      "commit": "6154412ee8e07e9cde129cccb944dd7ed9dcef53",
      "tree": "bb568c3907b2da5ae9098457ec19ec80762b8036",
      "parents": [
        "6d42d80653f2c41f3e72a878a1d9a6f9693b89f7"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Dec 07 18:40:56 2009 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Dec 07 20:42:52 2009 -0800"
      },
      "message": "Partially fix bug 2111240 Detect docking / undocking event by reporting\nto the AudioPolicyManager a new forced usage AudioSystem::FOR_DOCK\nwhich can take the FORCE_NONE, FORCE_BT_DOCK or FORCE_WIRED_ACCESSORY\nvalues. This CL is complemented by an update of the APM to take into\naccount the FOR_DOCK usage.\n"
    },
    {
      "commit": "923d7d721d37f6ba5148e7d79d61a4fa48e79df2",
      "tree": "79d0aae61449c8c048cfc494cf5a3354174749dc",
      "parents": [
        "3c58d279abed1da56b0ece74ded5854c509a42a4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 12 12:09:06 2009 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 12 12:09:06 2009 -0800"
      },
      "message": "Fix issue 2242614: Wired headset not recognized: bogus \"state\" in ACTION_HEADSET_PLUG broadcast.\n\nThe headset state indicated by HeadsetObserver in the broadcast intent ACTION_HEADSET_PLUG was not 0 or 1 as specified in the java doc but contained a bit field indicating the type of headset connected.\n\nModified HeadsetObserver to broacast a state conforming to java doc.\nAdded an extra to intent ACTION_HEADSET_PLUG to indicate if headset has a microphone or not.\nRemoved handling of non standard headset indications from HeadsetObserver.\nRemoved platform specific devices from output devices defined in AudioSystem.\nModified AudioService to use new ACTION_HEADSET_PLUG intent extra instead of bitfield in state.\n"
    },
    {
      "commit": "f22a0975c442f1f216f16db3ddb27015d72c6532",
      "tree": "d335d2d1232687c9e96253ceb4ba0a3e13f13ab8",
      "parents": [
        "31f62008db4b2c3bfd24379b76570fd9bd1de2b3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 02 05:31:33 2009 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 02 10:38:22 2009 -0800"
      },
      "message": "Fix 2194140: [Passion] Support Audience chip.\n\nAdded new input device DEVICE_IN_BACK_MIC.\nAdded new audio source AUDIO_SOURCE_CAMCORDER.\n"
    },
    {
      "commit": "415f3e2875b8b0b860d0dd6a69ff6868571c36bb",
      "tree": "9ce2631d183fa93c398c4691bbb8dd9a220cb2af",
      "parents": [
        "6270d52c0dded8658733a392f3ef1f521bc5dbee"
      ],
      "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": "327c27be19ad333c4835c84397152a0b2cb33081",
      "tree": "829f4323a59b922a47f6e7a60750be8e2c64a089",
      "parents": [
        "42b1648212d31dbc63518ca8379f145fef1efcb8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 27 00:48:47 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 27 05:58:10 2009 -0700"
      },
      "message": "Fix issue 2045911: Camera Shutter tone does not play correctly while listening to music.\n\nAdd the possibility to delay routing and volume commands in AudioPolicyClientInterface. The delay is not blocking for the caller.\n"
    },
    {
      "commit": "ddb78e7753be03937ad57ce7c3c842c52bdad65e",
      "tree": "a1f4d8105448525973897933a3494dd4d439274c",
      "parents": [
        "4c35e2c59afa28f9ed3fab1788570ef933f29b1a"
      ],
      "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": "3026a023b8979b7ddcb3fe97bbc45531c89fda92",
      "tree": "02433741f7668e4255134bb9d5a9fcf1dbace0ae",
      "parents": [
        "2c3fc83ac5b267d6a551deb36b30064a2e617944"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 27 07:12:26 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 27 12:21:29 2009 -0700"
      },
      "message": "Fix issue 2001517: AudioTrack compatibility issue.\n\nModified enum values in AudioFormat.java and AudioSystem.h.\nAdded code for backward compatibility in AudioTrack.java and AudioRecord.java.\n"
    },
    {
      "commit": "a553c25b33c99b345cf1c8688f8df0ed8df14e5a",
      "tree": "025c461b13e66ad0ceac8d0f8d9b13fd88ae168a",
      "parents": [
        "ebd7bc54028949619bbf3fa5ed6c1188f588c230"
      ],
      "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": "63e45f2854c86a9edf71e4159c9d93ad9a1e8f0d",
      "tree": "ddef80c0f1a0feae601e75a1886ba66d17141ff7",
      "parents": [
        "052eb7131bae3b8c6939cf147ab7b0c6d736202a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "",
        "time": "Fri Mar 27 18:18:46 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Mar 27 18:18:46 2009 -0700"
      },
      "message": "AI 143327: am: CL 143177 am: CL 142889 Fix issue #1736153\tCamera shutter sound can be muted by new AlarmClock setting.\n  Current implementation of Camera service plays the camera shutter sound over the ALARM stream so that it cannot be muted by silent mode in order to comply to some country specific requirement. A recent change made it possible for the user to mute the ALARM stream thus making this stream not suitable any more for the camera shutter sound.\n  The fix consists in creating a new stream type only accessible by native code and that cannot be muted and use it to play camera sounds.\n  Original author: elaurent\n  Merged from: //branches/cupcake/...\n  Original author: android-build\n  Merged from: //branches/donutburger/...\n\nAutomated import of CL 143327\n"
    },
    {
      "commit": "9066cfe9886ac131c34d59ed0e2d287b0e3c0087",
      "tree": "d88beb88001f2482911e3d28e43833b50e4b4e97",
      "parents": [
        "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553"
      ],
      "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": "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "076357b8567458d4b6dfdcf839ef751634cd2bfb"
      ],
      "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": "3001a035439d8134a7d70d796376d1dfbff3cdcd",
      "tree": "343ccdba15a594ff6e50c874a145232753315a30",
      "parents": [
        "da996f390e17e16f2dfa60e972e7ebc4f868f37e"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 19 10:57:31 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 19 10:57:31 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@132276\n"
    },
    {
      "commit": "da996f390e17e16f2dfa60e972e7ebc4f868f37e",
      "tree": "00a0f15270d4c7b619fd34d8383257e1761082f4",
      "parents": [
        "d24b8183b93e781080b2c16c487e60d51c12da31"
      ],
      "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": "d24b8183b93e781080b2c16c487e60d51c12da31",
      "tree": "fbb89154858984eb8e41556da7e9433040d55cd4",
      "parents": [
        "f1e484acb594a726fb57ad0ae4cfe902c7f35858"
      ],
      "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": "f013e1afd1e68af5e3b868c26a653bbfb39538f8",
      "tree": "7ad6c8fd9c7b55f4b4017171dec1cb760bbd26bf",
      "parents": [
        "e70cfafe580c6f2994c4827cd8a534aabf3eb05c"
      ],
      "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": "54b6cfa9a9e5b861a9930af873580d6dc20f773c",
      "tree": "35051494d2af230dce54d6b31c6af8fc24091316",
      "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"
    }
  ]
}
