)]}'
{
  "log": [
    {
      "commit": "e4db265e478bdac2381d85cf3dd41bbda14271b4",
      "tree": "9f99fa66754dea7d1a1d77742ddda06f63b3576b",
      "parents": [
        "32cb1ba657a1094bb815f4d39f3e4bf12ce8437e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 23 09:11:35 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 24 13:35:31 2010 -0800"
      },
      "message": "Revert \"Temporary workaround for issue 3187563\"\n\nThis reverts commit 065299b58d1c00cd24e442fa192561decf7b1fec.\n\nThe work around for issue 3187563 is not needed any more since the new kernel\nDMA driver implementation (commit 7953250be7c9a1c3417e21b20032b571d495d218)\nfixes the root cause.\n\nChange-Id: Ibaac2826b63c8e5825ae2e5cab2fb2f0e51ab7b4\n"
    },
    {
      "commit": "32cb1ba657a1094bb815f4d39f3e4bf12ce8437e",
      "tree": "a0292b292615574c1b55df946aa0e9424038619c",
      "parents": [
        "91a822eb44e7d70f92954304c5d574bb7350bcfd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 23 17:59:39 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 24 13:04:01 2010 -0800"
      },
      "message": "Fix issue 3225810.\n\nTake a wake lock whenever A2DP output stream is active.\n\nChange-Id: Ie50e6d4cb34c8a1ba97b301ef25e10aeb153d8f3\n"
    },
    {
      "commit": "f5aafb209d01ba2ab6cb55d1a12cfc653e2b4be0",
      "tree": "75b6429a6bb8b78943b770cad6924a7aaa94dc32",
      "parents": [
        "b9ff444a7eaf7ffd43970c0477110c6808bd4a7c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 18 08:40:16 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 19 15:49:42 2010 -0800"
      },
      "message": "Fix issue 3157123.\n\nUse a Mutex wherever atomic operations were used in AudioTrack,\nAudioRecord, AudioFlinger and AudioEffect classes.\n\nChange-Id: I6f55b2cabdcd93d64ef19446735b8f33720f8dbc\n"
    },
    {
      "commit": "f1fb01a7f00b8da90a36268aba8584a872e99175",
      "tree": "faa835310fc53729ef0bc3e46914f830b414d4d7",
      "parents": [
        "8fff6bb0000e43f02c9d04ca90f941fdefdc1356"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Nov 15 12:11:32 2010 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Nov 16 10:23:37 2010 -0800"
      },
      "message": "Add new audio mode for audio communications other than telelphony.\n\nThe audio mode MODE_IN_CALL signals the system the device a phone\n call is currently underway. There was no way for audio video\n chat or VoIP applications to signal a call is underway, but not\n using the telephony resources. This change introduces a new mode\n to address this. Changes in other parts of the system (java\n and native) are required to take this new mode into account.\nThe generic AudioPolicyManager is updated to not use its phone\n state variable directly, but to use two new convenience methods,\n isInCall() and isStateInCall(int) instead.\n\nChange-Id: Id744cd26520ea1d1a4795eabe6a1f0c58789af76\n"
    },
    {
      "commit": "56ecd20263d7f63476f756fc5d8b043b325c7bfb",
      "tree": "601ad5cd05a0cd81c1fb44bcb1914966f4401812",
      "parents": [
        "54f5501a61bfc13930f9f8d08cbd71a69924d4cc"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Nov 09 14:06:52 2010 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Nov 12 14:35:52 2010 -0800"
      },
      "message": "Add support for audio recording source in generic audio policy mgr.\n\nUpdate the platform-independent audio policy manager to pass the\n nature of the audio recording source to the audio policy client\n interface through the AudioPolicyClientInterface::setParameters()\n method.\n\nChange-Id: I6b4fd0f8a3acea0d7d30bbad98edd1977dc012bf\n"
    },
    {
      "commit": "e3aac34f9e0d825aaad597f70e2b3dcb615ef313",
      "tree": "0f7f64c156d4690c9e86768ef19920ba7e422a41",
      "parents": [
        "b50a8033f1c7c2b58913212825f9200f1a9e5652"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 11 16:47:38 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 11 16:47:38 2010 -0800"
      },
      "message": "Temporary workaround for issue 3187563\n\nThe audio HAL does not always handle properly simultaneous input and output stream\nstate changes. This happens in particular when starting video record because output\nstream starts and stops while input is active.\n\nTemporary disable the video record jingle the time the audio HAL issues are solved.\n\nChange-Id: I3b923d81af543a335deae9e22d7f396bb5791d91\n"
    },
    {
      "commit": "c643d77a099b0e86ad12de9b498f6f780e03184e",
      "tree": "d270c6607604f0003448ea28a627d4c0cd6f17a5",
      "parents": [
        "0bc8984f6b98a63ba74de7bca697173108dfdd3b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Nov 08 18:38:14 2010 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Nov 09 14:32:43 2010 -0800"
      },
      "message": "Add recording source for voice communication\n\nAdd a recording source used to designate a recording stream for\nvoice communications such as VoIP.\n\nChange-Id: I4091d67069b1a0170c1a5ca5e6acd51eb0aa08f9\n"
    },
    {
      "commit": "b235dee7be544a6c990ba4f8d89ab03e38c826f8",
      "tree": "e7a5bde7a394323e8544cd4b7646493f91e93cf5",
      "parents": [
        "0821a824a718a28fa5144309bf09ea40411c8ae0"
      ],
      "author": {
        "name": "Praveen Bharathi",
        "email": "pbharathi@motorola.com",
        "time": "Wed Oct 06 15:23:14 2010 -0500"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 01 18:41:19 2010 -0700"
      },
      "message": "Added support for dock headset observer\n\nChange-Id: I06b2e65e3bfa10735e6c7fd3349afa9ae7d45292\nSigned-off-by: Praveen Bharathi \u003cpbharathi@motorola.com\u003e\n"
    },
    {
      "commit": "e09591eff55fdff1868b32c3e046c62f800330fc",
      "tree": "a426ffeb610452b7020a7805f7a8a729b36f5b17",
      "parents": [
        "9065ce6207730f55566eb3b78f9b487b1a4502b6"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Oct 14 20:17:44 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Oct 25 15:02:44 2010 +0800"
      },
      "message": "Mirror the camera preview if the camera is front-facing.\n\nbug:3095272\nChange-Id: Ib1c1d1edc06a33e9d4d2dcb42bc1dd2c25b1310c\n"
    },
    {
      "commit": "e2ad6734eccc4b9ea7857c747ff9469a9c11ba09",
      "tree": "adefb903549a218f19eb6f8a624bf532e6fa7580",
      "parents": [
        "f705b5aa8c3b319f7b49f9ea46207187278076f9"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Oct 18 20:42:51 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Oct 19 23:07:08 2010 -0700"
      },
      "message": "Camera framework change required for 0-memcpy recording\n\nbug - 3042125\n\nChange-Id: I46eb7a10b5394086b353fd73e4503beceeed76f1\n"
    },
    {
      "commit": "012716a857641a977afd16ff6be4bf66fc403884",
      "tree": "99310083065ae33d75b6b5c87a45a9b2dab096fc",
      "parents": [
        "23d2071ab44d7b5e3b16e8a81e11884faf01092f"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Oct 08 22:04:43 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Oct 12 15:52:44 2010 +0800"
      },
      "message": "Fix camera display orientation.\n\nbug:3036262\nChange-Id: I6fc3dc381fcfaceba09fd5bd14afb85045b3d676\n"
    },
    {
      "commit": "173e75df12ad5398f3650a30e430dcac0cbcf278",
      "tree": "7d56796ba185ac2d4b93fbca152f656331f16b48",
      "parents": [
        "2eb16c2250c57a8009ab58e9aeb1606ab62bbbbc",
        "8746c2cf3192033237b465a2834817bf473b9583"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 07 12:23:39 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 07 12:23:39 2010 -0700"
      },
      "message": "am ce2e2184: am 37947afe: Merge \"Fixed AudioFlinger not always pausing tracks\" into gingerbread\n\nMerge commit \u0027ce2e2184bbc5530f4fac3220fdf3d1b3fc08a4c3\u0027\n\n* commit \u0027ce2e2184bbc5530f4fac3220fdf3d1b3fc08a4c3\u0027:\n  Fixed AudioFlinger not always pausing tracks\n"
    },
    {
      "commit": "af59ce2407fa4e6e5d8f1664a4df2daf1badd407",
      "tree": "6a7eacbbcc46026be5fa06535c80e3de357c4e79",
      "parents": [
        "50817931e4cb4ae0019fd13c831a2839349834c5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 05 14:41:42 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 05 14:41:42 2010 -0700"
      },
      "message": "Fixed AudioFlinger not always pausing tracks\n\nIf the pause request is received before the AudioTrack buffer was\ncompletelly filled and the track ready for mixing, the pause is\nnot executed: the track just underruns and stays in pausing state.\n\nThe fix consists in considering the track ready for mixing immediately\nif pausing.\n\nChange-Id: Ia6cb4703fee2126e41011a6400ea8eeb3a3e5456\n"
    },
    {
      "commit": "9ad6e8bd9fab860e639f6ce95479e4b2a9b03ff5",
      "tree": "73867627d0857a5bbbfbafeeacd2146d33ae585b",
      "parents": [
        "02d615bcb70a1bfe26dd5e3d719d621ee5c4ed87",
        "b3788b6d0f5a003d3d3e621ad605e2f3f4cb11e8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 30 19:47:21 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 30 19:47:21 2010 -0700"
      },
      "message": "am de12c3cf: am 220ab887: Merge \"Issue 3032913: improve AudioTrack recovery time\" into gingerbread\n\nMerge commit \u0027de12c3cf56e3f27b2efc60eeae8b5e422747f2b9\u0027\n\n* commit \u0027de12c3cf56e3f27b2efc60eeae8b5e422747f2b9\u0027:\n  Issue 3032913: improve AudioTrack recovery time\n"
    },
    {
      "commit": "44d9848d6656777a18019223e0d35f2fcc67719a",
      "tree": "fe71003d3400dcbdfe078f8d8fad1b1fde960b2c",
      "parents": [
        "922855214d0e8ae4159794d7f751f780b3243552"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 30 16:12:31 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 30 17:21:23 2010 -0700"
      },
      "message": "Issue 3032913: improve AudioTrack recovery time\n\nThis issue showed that when an AudioTrack underruns during a too long period\nof time and is therefore disabled by audioflinger mixer, it takes an additional\ndelay of up to 3 seconds to recover.\nThis fix adds a simple mechanism to recover immediately when the client application\nis ready to write data again in the AudioTrack buffer\n\nAlso throttle warnings on record overflows\n\nChange-Id: I8b2c71578dd134b9e60a15ee4d91b70f3799cb3d\n"
    },
    {
      "commit": "9e2e2d2bc86372bde4673c31ef416b2f29d87ac2",
      "tree": "46608b895445f505be207ec4cfb76f38c79340c2",
      "parents": [
        "b91d92d7147c10dd19987706d30dea011ff459af",
        "307e7f5295fefe8e21113dabebf434cac0d71e6d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 28 17:39:54 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 28 17:39:54 2010 -0700"
      },
      "message": "am b047e3cd: am aeb2c62e: Merge \"Fix several audio effects problems.\" into gingerbread\n\nMerge commit \u0027b047e3cdf24b32e26f366fcd4cd0eee8ae6c592c\u0027\n\n* commit \u0027b047e3cdf24b32e26f366fcd4cd0eee8ae6c592c\u0027:\n  Fix several audio effects problems.\n"
    },
    {
      "commit": "dac69110ed1073bf0a9827a3f78698896dd05d97",
      "tree": "db990d1cf1867854ffbf39585c0ce19e436c56b9",
      "parents": [
        "036fad5034d05beecae19da6da46e1ce7be78e64"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 28 14:09:57 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 28 14:23:39 2010 -0700"
      },
      "message": "Fix several audio effects problems.\n\nFixed the following issues in LVM effect bundle wrapper:\n- memory leaks in EffectCreate() in case effect creation fails at various stages\n- Added saturation when accumulating to output buffer\n- Fixed problems with enabled effects count when an effect is released while enabled\n- Do not allocate temporary buffer for accumulation each time process() is called\n\nFixed the following issues in effects framework (AudioFlinger)\n- Release effect synchronously in the library when deleted from effect chain\n- Do not call the effect process function if no tracks are present in the same\naudio session\n\nChange-Id: Ifbd80a163415cfb3c0a337c12082853ea45d9c91\n"
    },
    {
      "commit": "b36f2df1daf7e733be7c51f93792f8fc4252544c",
      "tree": "67cc64d0fd46312a304aafd24cdd1167d793c919",
      "parents": [
        "214a2bdcf6f8f26a0218f2d7a8d822c7b3a71d03",
        "2c423a4dc0988e3195c781d56f119514789b604b"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Sep 27 20:50:22 2010 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Sep 27 20:50:22 2010 -0700"
      },
      "message": "resolved conflicts for merge of 191a25e1 to master\n\nChange-Id: I6f4940e337a992bf84e50bc1d22432593937499c\n"
    },
    {
      "commit": "4a73f3da3501db6e95473a4a653d6319c6d618e2",
      "tree": "0083cf53310b1a1ebf15563cf2782c350afcfd3d",
      "parents": [
        "e2dc4aa0578dea9ab8c13ea4b69b7e6d0d1711d8"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Sep 23 17:17:43 2010 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Sep 27 11:49:56 2010 -0700"
      },
      "message": "The old overlay should be destroyed if orientation changes.\n\nPreviously the orientation was wrong after suspend and resume.\nWhen the camera app is resumed behide the lock screen, it\norinteation is portrait. When users slide to unlock the screen,\nsurfaceChanged is called and the orientation is landscape.\nThe camera app stops the preview, sets the display orientation,\nand starts the preview. Overlay should be destroyed if the\norientation has changed.\n\nbug:3031640\nChange-Id: I38b527f9ea78c91b538463292152c023383b4695\n"
    },
    {
      "commit": "f43c92f8d7b1d81cc7248031970d68dc65579be0",
      "tree": "019766b0a196126bea18f01296d519e7f32e6cb2",
      "parents": [
        "1d30fc0c9f416c26f1c40560f645a08b2c947687",
        "7bfa78d39ecdc39eeccdbc07f3bb9538176f4209"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 24 10:34:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 24 10:34:28 2010 -0700"
      },
      "message": "am 692dfafe: am 880dfe4f: Merge \"Fix issue 3007862\" into gingerbread\n\nMerge commit \u0027692dfafe02d04cdbab5367546e166580c92e4d2e\u0027\n\n* commit \u0027692dfafe02d04cdbab5367546e166580c92e4d2e\u0027:\n  Fix issue 3007862\n"
    },
    {
      "commit": "84e9a10fde8a4ae3da4f88d7911c154933aa457f",
      "tree": "f6d4eb3c73c82ac83000f11049ebda3f19fd9dc3",
      "parents": [
        "1f78badb5398c17526be021e3c9e3c4aa24536ec"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 23 16:10:16 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 24 09:32:40 2010 -0700"
      },
      "message": "Fix issue 3007862\n\nRemoved a cross deadlock condition between audioflinger and audio policy\nservice mutexes.\nAudioflinger::createEffect() locks audioflinger mutex and then calls\nAudioSystem::getOutputForEffect() which ends up in\nAudioPolicyService::getOutputForEffect() which locks audio policy service\nmutex. If at the same time, the command thread in audio policy service is\nprocessing a command(set volume, set route...), the mutex is locked and the\ncommand will call one audioflinger method which in turn will attempt to\nlock audioflinger mutex.\nThe fix consists in releasing audioflinger mutex before calling\ngetOutputForEffect().\n\nChange-Id: Id44e7feb36e0a295731f6aa97cf32d022edd34d0\n"
    },
    {
      "commit": "cc08406f74b67b1b7e532ef8ed534c0476ced636",
      "tree": "3ac2f1df4895cc1da9537341b13ed42762f6c592",
      "parents": [
        "ebad184047143b8439e4ce1bd80dacb8d0573e0e",
        "8fe26ff7c76fb0c80c41c603b384d63814da97f7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 22 17:04:48 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 22 17:04:48 2010 -0700"
      },
      "message": "am 11746caa: am 08959c63: Merge \"Request permission for global audio effects.\" into gingerbread\n\nMerge commit \u002711746caaa852984ff186bf5b8807e2c14cd7c1bc\u0027\n\n* commit \u002711746caaa852984ff186bf5b8807e2c14cd7c1bc\u0027:\n  Request permission for global audio effects.\n"
    },
    {
      "commit": "fac4895de4ae63928ff0cf2ccece106eb6d33f72",
      "tree": "38909e0176ac47546dd9c58390a38db07f406444",
      "parents": [
        "9fb467e5c50795afda3675efd5ba0e5cd552fd75"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 22 14:17:38 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 22 15:58:38 2010 -0700"
      },
      "message": "Request permission for global audio effects.\n\nApplications creating an audio effect on the output mix must\nhave the MODIFY_AUDIO_SETTINGS permission.\n\nChange-Id: I57d88533f91ad0d33680107d79abcec28f7263b5\n"
    },
    {
      "commit": "3b7b358d1a45844ca427626554ff81f472fd1583",
      "tree": "628389e34737e14cefb22954d66f4e9208bc097f",
      "parents": [
        "b5ca4618a722a21f084fe8bfc1c2992749ccd3f0"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Tue Sep 14 16:49:08 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Tue Sep 14 16:49:08 2010 -0700"
      },
      "message": "Added command type to play recording sound.\n\nAdded CAMERA_CMD_PLAY_RECORDING_SOUND command type to play recording\nsound through sendCommand. This is currently needed by time lapse\nrecording using still mode capture, which disables the shutter sound\nbut needs to play the recording sound.\n\nChange-Id: I376aa40f45b6064fd862abc065456b06fc338020\n"
    },
    {
      "commit": "b5ca4618a722a21f084fe8bfc1c2992749ccd3f0",
      "tree": "51ee3a6bdcb6301db5b34168a105409f2d4cf4a6",
      "parents": [
        "d20b4cfde2848052cf93ed13df14d75347ec64fd"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Sat Sep 11 19:31:10 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Tue Sep 14 13:57:59 2010 -0700"
      },
      "message": "Adding enable/disable option for sendCommand()\n\n- Added enum CAMERA_CMD_ENABLE_SHUTTER_SOUND which corresponds to\n  command type for enabling/disabling shutter sound.\n- The implementation checks if it is legal to disable shutter sound.\n  If it is, then any process can disable the sound. If not, then only\n  the mediaserver process is allowed to do this. Currently time lapse\n  capture needs this functionality to disable shutter sound when still\n  mode is used to capture time lapse video.\n\nChange-Id: Id147a3bcc6a345c2c6a6d52bf98fd8292386bb19\n"
    },
    {
      "commit": "d20b4cfde2848052cf93ed13df14d75347ec64fd",
      "tree": "037be644ae6bba3932b652525b28c431bb4d5abe",
      "parents": [
        "c59ad085c9737e8d56328732be6864de302acae9",
        "df268bacee4fac7b07ed129d14707c981a9ed895"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 13 14:42:59 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 13 14:42:59 2010 -0700"
      },
      "message": "am 4d987850: am bd2e9ec6: Merge \"Fix volume problems with insert revert\" into gingerbread\n\nMerge commit \u00274d9878502f7661ed34540a485a5942d859e209c7\u0027\n\n* commit \u00274d9878502f7661ed34540a485a5942d859e209c7\u0027:\n  Fix volume problems with insert revert\n"
    },
    {
      "commit": "e0aed6ddcb4e3c301b80aa26706b6052dab42c41",
      "tree": "4a85e38eefe3ad4ac70ca1b182660aefacc07658",
      "parents": [
        "a1754133ee6640346b5fd6daa4666f5d2285379a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 10 17:44:44 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 13 09:08:28 2010 -0700"
      },
      "message": "Fix volume problems with insert revert\n\n- Use a constant input level to the reverb engine and implement volume control in the\ninsert reverb. This avoids the volume spikes when an effect that was inserted after\nthe reverb is disabled or removed.\n- Fix clicks (one silent buffer) at the end of the reverb disable period.\n- Modified volume management in audioflinger so that the volume ramp is also done by\nthe insert effect if present when the track is paused (avoids clicks).\n- Increased room level for all presets.\n\nAlso fixed problems with output stage session (-1):\n- effect bundle wrapper was not designed to support session -1\n- the permission check in audioflinger for using session -1 failed due to a wrong usage of\ngetCallingPid()\n\nChange-Id: Id1ff51327263364bf71d3f2668fa5cde4311d84f\n"
    },
    {
      "commit": "0667de7038238c31af77865eb6d83c5ae9ca1b1e",
      "tree": "272f8749351c143f79d995bd1311c60eddb980d6",
      "parents": [
        "5de4999e6dd8a3f2740d20e30e8a3fccdcb76362"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Sep 03 16:40:32 2010 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Sep 09 16:23:35 2010 -0700"
      },
      "message": "Only enable CAMERA_MSG_PREVIEW_FRAME when necessary.\n\nNow camera driver uses ANativeWindow for display.\nCameraService should not request preview callback from\ncamera hardware if applications have not requested it.\n\nbug:2951018\nChange-Id: I85f74ea4a61104feca018867bc9d6dfe3a9479f5\n"
    },
    {
      "commit": "e5fe2601b25e3220c3c4cfb79695ddb8a2f817ac",
      "tree": "e1b0441d450ab5658507817548853d26236e077f",
      "parents": [
        "e3e76c456baee122de6715ae280130abaddc906c",
        "a52682416e89da1a5c086eee359f7c35cb126ea8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 02 12:51:11 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 02 12:51:11 2010 -0700"
      },
      "message": "am 937056c1: am 32ec1ad1: Merge \"Fix problem in AudioEffect::command() status.\" into gingerbread\n\nMerge commit \u0027937056c1a7ce71e6881305a31f76e62a76685f24\u0027\n\n* commit \u0027937056c1a7ce71e6881305a31f76e62a76685f24\u0027:\n  Fix problem in AudioEffect::command() status.\n"
    },
    {
      "commit": "aeae3de947fa0b1e670c8472b32288962f97b4f5",
      "tree": "b90cc3f792c8c4151b32e002181e1b036d4495ba",
      "parents": [
        "8f45bd725549436eeacd12ee69349e2332ed8da5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 02 11:56:55 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 02 11:56:55 2010 -0700"
      },
      "message": "Fix problem in AudioEffect::command() status.\n\nThe *pReplyData argument of the command() function was left unitialized by EffectHandle::command()\nwhen command was EFFECT_CMD_ENABLE, EFFECT_CMD_DISABLE and EFFECT_CMD_SET_PARAM_COMMIT.\n\nChange-Id: I91a19817ead2a8cfbdd8e2d77ca270c7ce9d5bd4\n"
    },
    {
      "commit": "84284e7a4e8d7f781f3a90605047aea1bb21dbf6",
      "tree": "f45de58ac77edc412426bdb4dead27253aa8c824",
      "parents": [
        "1040127473ee48c1c3b8c279ae05d38dbfb6e4c2",
        "3abe8d29864d3e8a9f40be43e5faa10e57a4fac5"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Sep 01 08:58:32 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 01 08:58:32 2010 -0700"
      },
      "message": "Merge \"Remove setPreviewDisplay in CameraService::Client::~Client().\""
    },
    {
      "commit": "3abe8d29864d3e8a9f40be43e5faa10e57a4fac5",
      "tree": "c18a7deca9573c4284349b778d4c7a770231cc78",
      "parents": [
        "3ddc7c3f56c6657809764d56d36948dda381d9fb"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 31 17:08:58 2010 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 31 17:18:38 2010 -0700"
      },
      "message": "Remove setPreviewDisplay in CameraService::Client::~Client().\n\nmSurface is released in destructor and setPreviewWindow(0) is\ncalled in Client::disconnect(). setPreviewDisplay is not needed\nin destructor.\n\nbug:2964479\nChange-Id: I329901659a2af407816c34e02f37143b28183a89\n"
    },
    {
      "commit": "1040127473ee48c1c3b8c279ae05d38dbfb6e4c2",
      "tree": "9b605b6d453dad7412b579f245dd6e7dcc8c124e",
      "parents": [
        "3ef9f98aebb76018d2ee48ae4ac727a05efa63df",
        "2e0448f9be36784d07581d1c2ef7a0c0ecba0663"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 31 15:49:15 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 31 15:49:15 2010 -0700"
      },
      "message": "am 55e79374: am f560ceab: Merge \"Audio Effects: fix problems in volume control.\" into gingerbread\n\nMerge commit \u002755e7937462d107b469a58651d3d51e15086f8e9e\u0027\n\n* commit \u002755e7937462d107b469a58651d3d51e15086f8e9e\u0027:\n  Audio Effects: fix problems in volume control.\n"
    },
    {
      "commit": "8f45bd725549436eeacd12ee69349e2332ed8da5",
      "tree": "d1f48f9af5991d462fb22fb37a5dd0a3d7f2251a",
      "parents": [
        "06124758ff402512f3c7a5fb2b35d8d09a0d6c2e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 31 13:50:07 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 31 15:26:23 2010 -0700"
      },
      "message": "Audio Effects: fix problems in volume control.\n\n- Fixed click when re-enabling effect during the turn off phase:\nmake sure the effect states where effect is processed are the same\nwhere volume control is delegated to effect.\n- Fixed click when effect is deleted while still active: do not apply\nvolume ramp if an effect having volume control was just removed from the\neffect chain.\n\nAlso fixed a crash when PCM dump is enabled in effect bundle wrapper.\n\nChange-Id: Ib562f5cf75c69af75df0e862536262e2514493e4\n"
    },
    {
      "commit": "ea798dd9f37b34acfa3cf8d945dbe7f7e90e7196",
      "tree": "5a9d2208819406e3859139031255e6f8f3267bf0",
      "parents": [
        "f015774f9d5a8b7af547ccad92d98b5cfd4009fb",
        "da701fe59d6676d45c1be49a1ed14045bdf92eec"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 30 15:07:45 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 30 15:07:45 2010 -0700"
      },
      "message": "am 44217848: am ae6bdc23: Merge \"Fix issue 2952766.\" into gingerbread\n\nMerge commit \u00274421784895a58bb7bcf90236a9e443b372b5b80e\u0027\n\n* commit \u00274421784895a58bb7bcf90236a9e443b372b5b80e\u0027:\n  Fix issue 2952766.\n"
    },
    {
      "commit": "c1c88e27a6f07a530fca184f515c16d51e46d56f",
      "tree": "0b447693ea5dd115a462a582155ffa086527509a",
      "parents": [
        "14cc6fcf8803ae7289a1e342532c26fe257b3d3f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 27 17:10:36 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 27 17:10:36 2010 -0700"
      },
      "message": "Fix issue 2952766.\n\nThe problem is that the audio policy manager does not handle the input devices\nwhen forced use for telephony is changed.\nThe problem does not appear in a call over PSTN becasue only teh output devices drives the\nrouting of in call audio to/from the base band.\n\nThe fix consists in modifying AudioPolicyManagerBase::setForceUse() to check for active inputs\nand update the input device if needed.\n\nChange-Id: I0d36d1f5eef1cce527929180c29b025439902f10\n"
    },
    {
      "commit": "8f3e6aa2951358c0dea593a2448171a3f97cc0eb",
      "tree": "29073542e3377ad44789a7d97bc66f9224f8c552",
      "parents": [
        "4b79168835965cf0fc41ebe2a367e22b4cb20d08"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 23 17:23:08 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 23 17:25:55 2010 -0700"
      },
      "message": "Add the setPreviewWindow camera HAL API to the camera stub.\n\nChange-Id: Ic669f9d5f5ae8f1fe5bd055f55aa4a18fa6d84cd\n"
    },
    {
      "commit": "4b79168835965cf0fc41ebe2a367e22b4cb20d08",
      "tree": "d70a673d243fdc72171ecbcf51094554f947987a",
      "parents": [
        "82252a9a732c7325166c36589c1dfa9f2cb8ac04"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Aug 10 16:37:53 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 23 14:31:30 2010 -0700"
      },
      "message": "Change the framework to use the new camera preview path.\n\nThis change makes the camera HAL interface take an ANativeWindow interface from\nwhich all the camera preview buffers will be allocated.  The framework code\nrunning in application processes now passes a Surface object rather than an\nISurface to the camera server via Binder when setting the preview surface.  The\ncamera server then forwards that Surface object (which implements the\nANativeWindow interface) to the camera HAL, which uses it to communicate with\nSurfaceFlinger to allocate the camera preview buffers.\n\nChange-Id: Ie438f721559cd7de5e4f848a26d96360dda07b5f\n"
    },
    {
      "commit": "011df6ab59853b5e2f5654031d842fb1231198c0",
      "tree": "20b5ab370d15e79f25700a590d21266ee60e230f",
      "parents": [
        "deb7457f43b58ddcb6fbc425321989236cd42f5a",
        "d24afc43d340c4753f09631ad20c525cee943d3e"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Aug 23 12:02:21 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 23 12:02:21 2010 -0700"
      },
      "message": "am caaf7fe3: am 271c1bfd: Merge \"Handle the camera open failure better.\" into gingerbread\n\nMerge commit \u0027caaf7fe3a407c764f643585d050c16f5fb56503c\u0027\n\n* commit \u0027caaf7fe3a407c764f643585d050c16f5fb56503c\u0027:\n  Handle the camera open failure better.\n"
    },
    {
      "commit": "69e0b8c5556df1d4db1a730db1c13409a96749c7",
      "tree": "85544bdbad81b05030b1bdd23aa61013b023eadf",
      "parents": [
        "a0ced19fa96f26a25de708588a34ebfd452f250e",
        "58ac7a3e15fc9ab5432aa94037c268fef7bcb667"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Aug 21 09:40:43 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Aug 21 09:40:43 2010 -0700"
      },
      "message": "am 3a899b85: am 0b9a12bf: Merge \"Fix issue 2929440\" into gingerbread\n\nMerge commit \u00273a899b85102f6d51585b3d46ced3038c8602f202\u0027\n\n* commit \u00273a899b85102f6d51585b3d46ced3038c8602f202\u0027:\n  Fix issue 2929440\n"
    },
    {
      "commit": "b7a67942823e8339eb298238f117aaa6d7b63111",
      "tree": "cd07930a4e5c17f61ae9b06f96fbfa4debde66cc",
      "parents": [
        "f1cca5ade334859bf23cf8aa5e73bad653681c8c"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 17 15:45:37 2010 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Aug 19 21:44:06 2010 -0700"
      },
      "message": "Handle the camera open failure better.\n\nCheck if camera hardware is NULL to avoid mediaserver crash.\n\nChange-Id: Ibde0251f30bdb6b36a5d5380222d7be25ec9449c\n"
    },
    {
      "commit": "25cbe0ecd6df8be7e40537c5d85c82f105038479",
      "tree": "f2c3888144a92d90f8f3c92756ffef99b1c1bd63",
      "parents": [
        "c059860c73678a202bfa33062723e8f82fb779d9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 18 18:13:17 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 19 08:15:08 2010 -0700"
      },
      "message": "Fix issue 2929440\n\nFixed regression introduced by change a54d7d3d7dd691334189aab20d23c65710092869 in audioflinger mixer thread:\nWhen the output stream is suspended, the sleep time between two writes must match the actual duration\nof one output stream buffer otherwise the playback rate is not respected.\n\nChange-Id: Ic5bebe890290d1f44aeff9dd3c142d18e26fff2a\n"
    },
    {
      "commit": "a1a6cba3664a04d214b372526658ba227e4d5366",
      "tree": "594a5d2de8b0b2f55d8ea7592d485ea1c8f67bf2",
      "parents": [
        "1e66e00113a063ed9af618d376961bcc036157de",
        "b7ca29605de716eacd47b69d967315405584f9df"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 13 17:23:53 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 13 17:23:53 2010 -0700"
      },
      "message": "am f28608cd: am c8d0d630: Merge \"Fix issue 2909189: System property ro.audio.silent no longer mutes system.\" into gingerbread\n\nMerge commit \u0027f28608cdf4f6a0075d0811ccd32123baf4daec31\u0027\n\n* commit \u0027f28608cdf4f6a0075d0811ccd32123baf4daec31\u0027:\n  Fix issue 2909189: System property ro.audio.silent no longer mutes system.\n"
    },
    {
      "commit": "571d49c1c316f5e07b74ed7b5df6bdec7cbc1a14",
      "tree": "1d9ea67e8cb754435b6b9e262f90b52010287e9e",
      "parents": [
        "def871da284aa51f129943a86d44ba9ee9d68d28"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 11 05:20:11 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 11 05:20:11 2010 -0700"
      },
      "message": "Fix issue 2909189: System property ro.audio.silent no longer mutes system.\n\nFixed regression introduced by commit 2a6b80bc65c4782b5a7168b300e1dc5ec9f617ee:\nmaster mute was not working if no effect chains were present on session 0.\n\nChange-Id: I66d107e045d159cb94d29c7476fa1e12d92f2ae7\n"
    },
    {
      "commit": "bc417c0531332635df9525df4683274a08fb987f",
      "tree": "31bd0fa84c97515e46abddc36f2884fc2fd3a338",
      "parents": [
        "2bb8c0e7c4e4093f4161ff5e98cef51c87193859",
        "bcc4fdd9de1b0f6b645c663f98bda838bd41242d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 09 20:00:11 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 09 20:00:11 2010 -0700"
      },
      "message": "am 1ece7d68: am 2a6b80bc: Fixed several audio effects problems.\n\nMerge commit \u00271ece7d6873027068a3e7b055597045e9387b217c\u0027\n\n* commit \u00271ece7d6873027068a3e7b055597045e9387b217c\u0027:\n  Fixed several audio effects problems.\n"
    },
    {
      "commit": "8569f0d3bf4c6787707e348a7cf73b9c4199cb32",
      "tree": "6e2ce2c28fe5fba3b8cafd9375244bc6f658632d",
      "parents": [
        "8bf59e735760af0b6a85747fd90bf8cf1e5388d7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 29 23:43:43 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 09 05:48:20 2010 -0700"
      },
      "message": "Fixed several audio effects problems.\n\n- Fixed constant inversions in AudioEffect.java\n- Do not return error when enabling an already enabled effect\n- Update cached effect state in native AudioEffect class when effect is enabled/disabled by command() method\n- Remove click when restarting effect during disable sequence\n- Fixed problem in master mute management when volume control is delegated to effect.\n\nChange-Id: I6df4ce9fcc54fdc7345df858f639d20d802d6712\n"
    },
    {
      "commit": "9da2070b6d6d20550de7da61478c325f0928d020",
      "tree": "f1548891fab33ca03923f70cf25a2ffeab50be82",
      "parents": [
        "3be9523784cc4038f601e510faee595117cdacb3",
        "efe6039f71e9bac2138003b3287e94a7ab7e5c55"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 30 12:08:31 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 30 12:08:31 2010 -0700"
      },
      "message": "resolved conflicts for merge of 27eecb70 to gingerbread\n\nChange-Id: If064f2f4950fc1a4ff38e6927fe2120af76b26f1\n"
    },
    {
      "commit": "bc286dce1af6670824fba4167e0750b631168d72",
      "tree": "f6d30ddc5cee2a6562bb510d7bacf20806b9f9bb",
      "parents": [
        "c4e47d1e81c4e4403663cb911e98dbf3ada9942c",
        "0319aaecb03aa83924ab4e3d9c9bc657c2e8bc06"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:54:42 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 29 17:54:42 2010 -0700"
      },
      "message": "am 0c51c98f: am 4506c62a: fix inaccurate copyrights\n\nMerge commit \u00270c51c98fd9edf0bdc8f2c567470fc332b5ae3adf\u0027\n\n* commit \u00270c51c98fd9edf0bdc8f2c567470fc332b5ae3adf\u0027:\n  fix inaccurate copyrights\n"
    },
    {
      "commit": "0319aaecb03aa83924ab4e3d9c9bc657c2e8bc06",
      "tree": "7c3ae3eecc16c50c794aff141a89b14942117364",
      "parents": [
        "0895d83cb62d269468e64a00e9e89fa7697f2f84",
        "01cff464978aa0f749f42650180b45ea56cb17de"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:52:09 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 29 17:52:09 2010 -0700"
      },
      "message": "am 4506c62a: fix inaccurate copyrights\n\nMerge commit \u00274506c62abd5767d6d42a97e8e87793a1b3bcb625\u0027 into gingerbread-plus-aosp\n\n* commit \u00274506c62abd5767d6d42a97e8e87793a1b3bcb625\u0027:\n  fix inaccurate copyrights\n"
    },
    {
      "commit": "01cff464978aa0f749f42650180b45ea56cb17de",
      "tree": "a31c8e61281d0bbcbec93d0ab05368f73ab85994",
      "parents": [
        "ccaa41429d2afc47f0fb828a0146a1b1936188fe"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "message": "fix inaccurate copyrights\n\nChange-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd\n"
    },
    {
      "commit": "e679114b6c7e087a59c2b2c3b55603c43da4ef38",
      "tree": "27eabc001f4ab0bd0d8c3827ae773982f9536343",
      "parents": [
        "cc759794489c2c39aaef229fba4ace32e394bb81",
        "24fd262e7c16d391ce1c5a8835a83677d099445f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 29 07:46:03 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 29 07:46:03 2010 -0700"
      },
      "message": "am ba676a00: am a54d7d3d: Fixed underrun in audioflinger mixer.\n\nMerge commit \u0027ba676a00c1b9ba59b30fe805b83d03d1768fffbd\u0027\n\n* commit \u0027ba676a00c1b9ba59b30fe805b83d03d1768fffbd\u0027:\n  Fixed underrun in audioflinger mixer.\n"
    },
    {
      "commit": "60e182437228312cc28469a5b0dfde77ac848e1a",
      "tree": "a530ccd1f62a8a46aeaa433ee92fed6666c3d6ea",
      "parents": [
        "39e94f8f723d445447fdee0822291e664b631f60"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 29 06:50:24 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 29 06:50:24 2010 -0700"
      },
      "message": "Fixed underrun in audioflinger mixer.\n\nWhen all audio tracks have been disabled and the mixer is running idle before the output stream is placed in standby,\nthe mixer sometimes fails to write to the output stream on time to avoid underrun.\n\nThis is because the sleep period used to wait before the next write to output stream is too close to the actual buffer duration.\nIn fact this sleep time is not critical as if we write too early to the output stream, the kernel driver will wait for free buffers\nfrom the audio DSP DMA and we will sleep anyways.\n\nThe fix consists in dividing the calculated wait period by 2 to increase the margin.\n\nChange-Id: I5730887dc2ccce2a511bc858494a6f7da6b392a0\n"
    },
    {
      "commit": "cc759794489c2c39aaef229fba4ace32e394bb81",
      "tree": "602b6377b8b4571c927d054fde8510e8bb119dd3",
      "parents": [
        "6fd53c964e4d5cbcdc71bbac612b6bef7695298b",
        "248ae8439dbdd14672dbfc02b63193098392c995"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 29 05:22:10 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 29 05:22:10 2010 -0700"
      },
      "message": "am 45dc4f82: am 493941b8: Allow creation of an audio effect on a session with no audio tracks.\n\nMerge commit \u002745dc4f82a00e52b12389b22a7cfbbee5609e8e28\u0027\n\n* commit \u002745dc4f82a00e52b12389b22a7cfbbee5609e8e28\u0027:\n  Allow creation of an audio effect on a session with no audio tracks.\n"
    },
    {
      "commit": "39e94f8f723d445447fdee0822291e664b631f60",
      "tree": "99147be3db86a4bacc908e61498a9ada95ce725c",
      "parents": [
        "1b58c743e6748272e98cd04d3c0f63e371a44329"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 01:32:47 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 29 02:34:40 2010 -0700"
      },
      "message": "Allow creation of an audio effect on a session with no audio tracks.\n\nThis is necessary to allow creating and enabling an effect attached to a particular player\nsession before the playback is started. As a matter of fact, the implementation of the mediaplayer\ndoes not create the AudioTrack before playback starts.\n\nChange-Id: I1266e8885f9d756acc949303321aaac0fbf83e34\n"
    },
    {
      "commit": "ed0de3c123aaa86147993721d4794648a65aab75",
      "tree": "c60dc3ffbc36f10adfe01d864e22f1d5b87443d4",
      "parents": [
        "da90dff17b6ce79d0a7d8ab2dbe2aa69cd1c11aa",
        "e99819aa8cc397d02255b59b91c6e6850afee3a7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 07:53:24 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 28 07:53:24 2010 -0700"
      },
      "message": "am 6fa88882: am 62d83a0c: Merge \"Audio effects: modified command() parameter types.\" into gingerbread\n\nMerge commit \u00276fa8888254deb4961dc64c6ac03dc103c9cd8bcf\u0027\n\n* commit \u00276fa8888254deb4961dc64c6ac03dc103c9cd8bcf\u0027:\n  Audio effects: modified command() parameter types.\n"
    },
    {
      "commit": "25f4395b932fa9859a6e91ba77c5d20d009da64a",
      "tree": "01098a211d6c782708b840c28ebd396a6eb72a7b",
      "parents": [
        "23e1de74359f4bb1763aef0adfebe073122b032c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 05:40:18 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 05:49:21 2010 -0700"
      },
      "message": "Audio effects: modified command() parameter types.\n\nThe type of the cmd, cmdSize and *pReplySize parameters of the effect control interface command()\nfunction have been modified from int to uint32_t. This is more consistent with their role.\n\nChange-Id: I84d289fc262d6753747910f06f485597dfee6591\n"
    },
    {
      "commit": "ccaa41429d2afc47f0fb828a0146a1b1936188fe",
      "tree": "de8102d8322f1006344faac66148528b26248203",
      "parents": [
        "51da506d87b071ea01bc8f4707a2045869394e83"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 22 15:27:48 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 22 15:28:19 2010 -0700"
      },
      "message": "move native services under services/\n\nmoved surfaceflinger, audioflinger, cameraservice\n\nall native services should now reside in this location.\n\nChange-Id: Icd7336f7289db35df9c8c1857a5122bb8a6f1c86\n"
    },
    {
      "commit": "8184a5734690b30f4de0f6b6c16daf1e089f67df",
      "tree": "e3fbbdace9d5b0193130827d77558ad9db51a536",
      "parents": [
        "7a42770f47225483a885b168d05e81b6a81189c0",
        "45239b5fa6bf75d76bd5e603b443bd68502345f5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 13:37:19 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 13:37:19 2010 -0700"
      },
      "message": "resolved conflicts for merge of dd206093 to master\n\nChange-Id: I21dd2321a4839d034d49092baccbf40986f17dae\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": "bbf6dcd2aa8eb877e6412aaade25a077f62a6284",
      "tree": "5077dba2bb0d9fbca46670506bfd683ee9383752",
      "parents": [
        "f913c25c713cbe0fe16dd1cc17bdfaba6b77070f",
        "296ac39f69df0b398685ab19e9bb257fdb7aa75d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 19 10:23:00 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 19 10:23:00 2010 -0700"
      },
      "message": "am 3c6ea955: am 7203272f: Merge \"Fixed problems in audio effect volume control.\" into gingerbread\n\nMerge commit \u00273c6ea95553d3a0e416874c583a41efff3f6fbc57\u0027\n\n* commit \u00273c6ea95553d3a0e416874c583a41efff3f6fbc57\u0027:\n  Fixed problems in audio effect volume control.\n"
    },
    {
      "commit": "f997cabca292d70d078ae828e21c28e6df62995f",
      "tree": "8e82ee801d8465366f659028f7105ee3ca38d4cc",
      "parents": [
        "46bf665ea3687f06069ebd1a0acd01ed7b5ac9cb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 19 06:24:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 19 06:31:30 2010 -0700"
      },
      "message": "Fixed problems in audio effect volume control.\n\nFixed the following problems in audio effect volume control in AudioFlinger:\n- Make sure that the volumes returned by EffectChain::setVolume_l() are correct even is\nno change is detected since last call\n- Do not use isEnabled() to validate volume control but mState \u003e\u003d ACTIVE instead as the volume control\nmust be also active in STOPPING and STOPPED states.\n\nChange-Id: Id62da3164fad500ee8a5efd6cd78c77e8fdcb541\n"
    },
    {
      "commit": "521bcb0ff5054e5be40f5194026da3463504ae3b",
      "tree": "3d4771eb995a8ad56fa443d0a416558baf3dfd23",
      "parents": [
        "a6163d6948d9a89670720eea8d30b59c5b70fe37",
        "c8f6b8569ac99f8b7e53b9687358642306fe3ee0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 16 09:12:40 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 16 09:12:40 2010 -0700"
      },
      "message": "am f16b3f10: am b0374a0e: Merge \"Several improvements in audio effects volume control.\" into gingerbread\n\nMerge commit \u0027f16b3f104f60738447db60bcf2c44c7610e17199\u0027\n\n* commit \u0027f16b3f104f60738447db60bcf2c44c7610e17199\u0027:\n  Several improvements in audio effects volume control.\n"
    },
    {
      "commit": "cab112421da6e8eac19ffddbbe3d76067cffee78",
      "tree": "c2e8bb3057c5de25454eae1286ff0868933680aa",
      "parents": [
        "5462fc9a38fa8c9dff434cd53fa5fb1782ae3042"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 15 12:50:15 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 15 12:50:15 2010 -0700"
      },
      "message": "Several improvements in audio effects volume control.\n\n- Fixed crash when deleting an effect chained before an effect having volume control\n- Changed EFFECT_FLAG_VOLUME_CTRL to implicitely include EFFECT_FLAG_VOLUME_IND\n(not need to set both in effect descriptor).\n- Volume control changes from one effect to another if needed according to effect enable state\n- EFFECT_CMD_SET_VOLUME is only sent when their is an actual change in volume\n\nChange-Id: Ieebaf09157e2627366023569d95516646e03e26c\n"
    },
    {
      "commit": "c0b9c87b2581af430e143822918935d15ac69911",
      "tree": "cde3f95f43230ca1ba9f485015aa53f62acc1518",
      "parents": [
        "094c96da874d84eae46f76cc036fa7b7993eb999",
        "8c4acff42ee9d8ee8ed75f0b69c0a5bb99645270"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 20:18:50 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 14 20:18:50 2010 -0700"
      },
      "message": "am c74034b6: am 24651682: added BinderService\u003c\u003e template to help creating native binder services\n\nMerge commit \u0027c74034b6bf0940dc80c4d4efa1e677ad0d2dfd6c\u0027\n\n* commit \u0027c74034b6bf0940dc80c4d4efa1e677ad0d2dfd6c\u0027:\n  added BinderService\u003c\u003e template to help creating native binder services\n"
    },
    {
      "commit": "094c96da874d84eae46f76cc036fa7b7993eb999",
      "tree": "c57cc7ee13225544f863726abd4fb33595edd473",
      "parents": [
        "8972e1a30cd9b57a238a2ef617ed340d8043eb44",
        "46d2cc5755ea30771bbd6b34a1a7fae513c94ca2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 18:48:58 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 14 18:48:58 2010 -0700"
      },
      "message": "am 78983a91: am 4055b780: Merge \"move native services under services/\" into gingerbread\n\nMerge commit \u002778983a9133d3dd3f08b1ec462a7e2f9e7bfa9e2f\u0027\n\n* commit \u002778983a9133d3dd3f08b1ec462a7e2f9e7bfa9e2f\u0027:\n  move native services under services/\n"
    },
    {
      "commit": "5462fc9a38fa8c9dff434cd53fa5fb1782ae3042",
      "tree": "76ee9bdf73fb2460d074025ed451e56f8ec34a11",
      "parents": [
        "65ab47156e1c7dfcd8cc4266253a5ff30219e7f0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 18:41:18 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 18:43:19 2010 -0700"
      },
      "message": "added BinderService\u003c\u003e template to help creating native binder services\n\nChange-Id: Id980899d2647b56479f8a27c89eaa949f9209dfe\n"
    },
    {
      "commit": "65ab47156e1c7dfcd8cc4266253a5ff30219e7f0",
      "tree": "da088916c7cadadcddf47467f20cc8b0b6ff7f41",
      "parents": [
        "98fe12aba55e8b8bb14b23c4c3cdba9a99a9753c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "message": "move native services under services/\n\nmoved surfaceflinger, audioflinger, cameraservice\n\nall native services should now reside in this location.\n\nChange-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8\n"
    }
  ]
}
