)]}'
{
  "log": [
    {
      "commit": "01bded1246cd770b54b8011527f5c29e1b5663e3",
      "tree": "1f5a10e4db7e61b4ad526f2356a8f4edd307a993",
      "parents": [
        "50b0f02dea21f31ec1fbe45b86893aa9233483b8",
        "a3355430a36bbfa7b2c0d90eb30834f1c5dac337"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Jun 16 01:05:43 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 16 01:05:43 2011 -0700"
      },
      "message": "Merge \"Allow camera to be disabled via Device Policy Manager\""
    },
    {
      "commit": "7394a4f358fa9908a9f0a7c954b65c399f4268e6",
      "tree": "76bde6cdaf308c987975d57a5a0d0794613ad65d",
      "parents": [
        "afcedc9e6f17d8213d9bd8f6c36643dcc816d0ef"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Jun 13 18:16:26 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Jun 13 18:16:26 2011 -0700"
      },
      "message": "audio: update for audio/audio_policy header names/locations\n\nChange-Id: I36c49352eee57559403cd1597f56a8485a360289\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "afcedc9e6f17d8213d9bd8f6c36643dcc816d0ef",
      "tree": "d36ad40b3c4ca6758c09a31d216252b9c0a23460",
      "parents": [
        "aaf95a50b2202acb14fa437d065afc611a9265ff"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Jun 10 16:05:23 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Sat Jun 11 11:02:38 2011 -0700"
      },
      "message": "CameraService: return stide when dequeueing a buffer\n\nChange-Id: I11c7f0b57f7d619cdc392b2d34c538ae898de7ac\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "26adde897188059057b3ffcfde1d60171fc6888c",
      "tree": "8ad4e488ac2efc5e0f5234f4b690c1818eb6e1e8",
      "parents": [
        "6e49bd393f263bd17a65eb5c1a0e649933c78504"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Jun 06 17:21:32 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Jun 07 11:43:20 2011 -0700"
      },
      "message": "frameworks/base: updates for camera HAL memory management\n\n-- when the camera HAL allocates memory\n\t-- it requests is as N buffers by S bytes each\n\t-- it may specify a file descriptor to get mmapped; if -1, then we use ashmem\n-- when issuing data and data-timestamp callbacks, the camera HAL specifies a\n   buffer index\n-- range checking is performed on the buffer indices\n-- memory requested by a camera HAL is not incStrong\u0027ed, and needs to be\n   expliciftly released by the camera HAL (by calling the release method on the\n   camera_memory_t handle)\n\nChange-Id: I0f09603aa786c238590e7288388ab673787e6032\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "0512ab559d4670c2204078470d7ef5d376811c57",
      "tree": "088654e0dd81abeca06fa9a4d8bc70ee43da8c42",
      "parents": [
        "158b194da537c18a6ad1d7ef3cd63c87b2310269"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 04 17:58:57 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 03 16:12:37 2011 -0700"
      },
      "message": "Remove dead code related to gettid\n\nThe gettid system call is always available now.\n\nChange-Id: Ib78b41781eda182dc8605daf456bbea7ff7c2dc0\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": "a3355430a36bbfa7b2c0d90eb30834f1c5dac337",
      "tree": "7273f455fc8d672547d5a0828ac6cd23df230116",
      "parents": [
        "2cf9c5073ca3342ee52673ad68763fadd2c2be79"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri May 20 14:54:25 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon May 30 20:05:38 2011 +0800"
      },
      "message": "Allow camera to be disabled via Device Policy Manager\n\nbug:4185309\n\nChange-Id: I8be89d892b8f540fd05913c93f97b92346a0a282\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": "e1315cf0b63b4c14a77046519e6b01f6f60d74b0",
      "tree": "c10fd288fd0d0d85c619e7e635a249765202fabc",
      "parents": [
        "a3e73df3b402f1ebdbef7c8a8e3111d852e7bd35"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 17 19:16:02 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 27 15:15:00 2011 -0700"
      },
      "message": "New effect library API\n\nMoved and renamed media/EffectApi.h to hardware/audio_effect.h\nModified the effect library API to expose a library info structure\ncontaining an interface functions table.\nAlso removed enums for audio channels, audio format and devices\nfrom effect API and use values from system/audio.h instead.\n\nModified effects factory to support new library interface format and\nload libraries and efffects listed in audio_effects.conf file.\nThe file audio_effects.conf is first loaded from /vendor/etc and\nthen from /system/etc/audio_effects.conf if not found.\n\nModified existing effect libraries to implement the new library interface.\n\nChange-Id: Ie52351e071b6d352fa2fbc06c3846686f8c45df9\n"
    },
    {
      "commit": "162f7d15ac5c8c23d1c3de171239f3a4e6e06b2a",
      "tree": "49cf782cd7ee56fce1f5def5482799e1800b8635",
      "parents": [
        "a4ec6711259414cccf6da6b9a0c60fc4817992f0",
        "249c6a61f21bc90e25e4b77f18c98af1ac363e69"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 23 09:06:03 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 23 09:06:03 2011 -0700"
      },
      "message": "Merge \"HAVE_ANDROID_OS AUDIOFLINGER_SECURITY_ENABLED dead\""
    },
    {
      "commit": "6708b9a3fb654f5623ba5a696288fdba310a5e1a",
      "tree": "46bf064d0c57fa017823e9825aff06700a3f4a4f",
      "parents": [
        "86e152e70a1aab83cba2c75c76d7c0e2d00b61dc",
        "b469b9490b3cd9e0f0466d9b9ab228f6c793b82e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 13 10:24:24 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 13 10:24:24 2011 -0700"
      },
      "message": "Merge \"Fix audio effect framework issues\""
    },
    {
      "commit": "b469b9490b3cd9e0f0466d9b9ab228f6c793b82e",
      "tree": "7491d71638aed90347fb1fe85cec01f28a16bbcf",
      "parents": [
        "43ec1dfc5dc3934680a52a026c5519ddc51bdbd3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 09 12:09:06 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 13 08:34:45 2011 -0700"
      },
      "message": "Fix audio effect framework issues\n\nFix two issues in audio effect framework reported by partners.\n\n1 - Fixed duplicated audio buffer sent to effect process function when\npausing a track.\nModified Effectchain::process_l() function to clear the effect chain\ninput buffer before calling the effect process functions when no track\nis active on the session. Previous code was clearing the buffer after\ncalling the process functions and  when transitioning from active\nto inactive, the last processed buffer was passed again once to effect\nprocess function before being cleared.\n\n2 - Fixed potential mutex cross deadlock when disconnecting an effect\nwhile playback is active. This is because EffectChain::process_l()\nwas calling PlaybackThread::hasAudioSession() thus creating an inversion\nin the mutex lock order (EffectChain mutex locked before ThreadBase mutex).\nThe fix consists in removing the call to hasAudioSession() from process_l()\nand requires each effect chain to keep count of the number of audio tracks\nattached to it (previously only the active tracks were accounted for).\n\nChange-Id: Iee4246694ea8c7a66c012120c629d72dd38f9c35\n"
    },
    {
      "commit": "64760240f931714858a59c1579f07264d7182ba2",
      "tree": "5fad3bbdc4f7a19cff980b719edb75577c7f9a4b",
      "parents": [
        "b84d042a1216694e1db6b1fc2b053d348cab5593"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed May 11 14:15:23 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu May 12 14:09:57 2011 -0700"
      },
      "message": "update for new audio.h header location\n\nChange-Id: Ic4c62c4037800802427eb7d3c7f5eb8b25d18876\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "249c6a61f21bc90e25e4b77f18c98af1ac363e69",
      "tree": "643109c8eefbc8284272f3e1ead1cf76073b80ec",
      "parents": [
        "d2b0088df550e3ddfa44dbdfd1cd9a79ff80a2de"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 05 08:37:41 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 05 09:15:56 2011 -0700"
      },
      "message": "HAVE_ANDROID_OS AUDIOFLINGER_SECURITY_ENABLED dead\n\nRemove dead code from the days when Android ran in emulator.\n\nChange-Id: Ibadbbde0538239ad9b2811a3a2e8f8a6d3b6389c\n"
    },
    {
      "commit": "8ce2364512f7c32c824f5ec5719688830ba72427",
      "tree": "e9a4d9af9512132c16ae5fdbd888c8f1ceac50a5",
      "parents": [
        "8951a97b1f8462c37e740ea5082eea0445d2c501"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Sun May 01 11:33:26 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 16:40:14 2011 -0700"
      },
      "message": "frameworks/base: android_native_buffer_t -\u003e ANativeWindowBuffer\n\nChange-Id: Idc2eabaa805bb6d308ebb315872623f28d428417\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "8951a97b1f8462c37e740ea5082eea0445d2c501",
      "tree": "8817cddc9d87a872846d4b576bdb96310fa2bd01",
      "parents": [
        "9e626526453f91999bdf3de4c2ec8e55c5d90511"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Apr 14 16:55:59 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 15:49:40 2011 -0700"
      },
      "message": "frameworks/base: switch CameraService to a HAL module\n\nThis patch changes CameraService to load a camera HAL module, instead of\nlinking directly against a library that implements the CameraHardwareInterface\nclass.\n\nCameraHardwareInterface no longer defines the API to the camera HAL.  Instead,\nthis is now in HAL header hardware/camera.h.  We keep CamerHardwareInterface as\na class local to CameraService, which wraps around the new HAL calls.  In the\nfuture, we may remove this class entirely and have CameraService call the HAL\nmethods directly.\n\nChange-Id: I5c61ac40078fc0b50bbac5881a556fe6c8837641\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "9e626526453f91999bdf3de4c2ec8e55c5d90511",
      "tree": "47ddef028c78388ea02fcfd3ae60419e97cffcc6",
      "parents": [
        "10d227074b5a67a2e738d72888ece4dd24537c66"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Apr 14 16:51:21 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 15:49:39 2011 -0700"
      },
      "message": "frameworks/base: include system/core header camera.h in Camera.h\n\nWe define struct CameraInfo in this camera/Camera.h, even though an identical\nstruct camera_info is defined in hardware/camera.h (but not in\nhardware/camera_defs.h).  We may not export struct definitions from the HAL\ninto headers which may find their way into the NDK.\n\nThis commit also renames FRAME_CALLBACK_FLAG_xxx to CAMERA_FRAME_CALLBACK_xxx.\n\nChange-Id: I3e2ddd01d61bf5371ff2fc1a397995e0f1ee11f8\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "5a61d2f277af3098fc10b2881babca16391362da",
      "tree": "b242a8b77bdf78a631cdc014051c7b5d79457215",
      "parents": [
        "799a70e7028a4d714436c3a744a775acfbd31aae"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Apr 19 19:04:32 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 16:20:22 2011 -0700"
      },
      "message": "audioflinger: don\u0027t do work in constructor, instead do it in onFirstRef\n\nChange-Id: I22d9e01821816c3beb52b014330386c7fd2f0411\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "799a70e7028a4d714436c3a744a775acfbd31aae",
      "tree": "86e61ba1b01137b9c5c687a589a5dd9cfcb699f6",
      "parents": [
        "fce7a473248381cc83a01855f92581077d3c9ee2"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Apr 18 16:57:27 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 16:20:22 2011 -0700"
      },
      "message": "audioflinger: enumerate all the possible audio interfaces\n\nKeep track of the primary interface that handles the master volume,\netc.\n\nChange-Id: Ib0701fccff8d8783a99035a241ab7c8ec75c00ac\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "fce7a473248381cc83a01855f92581077d3c9ee2",
      "tree": "e002e1edd8a11f2be56ce9538ab1b13aa289bc9e",
      "parents": [
        "db5cb14318bb24cd6ea14ff7ceea0d5e1f83d903"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Apr 19 22:30:36 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 13:10:10 2011 -0700"
      },
      "message": "audio/media: convert to using the audio HAL and new audio defs\n\nChange-Id: Ibc637918637329e4f2b62f4ac7781102fbc269f5\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "6b80e0be94d3f92ec4aa2b7cace816780d3f338d",
      "tree": "cf5fc0a267ccd922c4139de394ea7d7a506416de",
      "parents": [
        "dab0bea38ab2c2d6b52907b7f5684834c4979251"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Apr 19 22:06:30 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 10:48:38 2011 -0700"
      },
      "message": "audioflinger: move legacy audio hw/policy out to libhardware_legacy\n\nChange-Id: I4adcec73d3c08bcbe15bb19e1ba2ff18b195af45\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "dab0bea38ab2c2d6b52907b7f5684834c4979251",
      "tree": "19d78d36cb01510a67345467f1c6bc81f6d7f03d",
      "parents": [
        "2e40530f7cbb024b60c491f42dadb2597d4de07e",
        "5bfdfd1e7b4514c6f6143b6b97ef37013f6e53a9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 26 12:44:53 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 26 12:44:53 2011 -0700"
      },
      "message": "am 48dca4de: am 969357e3: am 223995dc: Fix issue 4335692: HDMI media volume\n\n* commit \u002748dca4de70890d324b5830a58bb9fa273164151a\u0027:\n  Fix issue 4335692: HDMI media volume\n"
    },
    {
      "commit": "5bfdfd1e7b4514c6f6143b6b97ef37013f6e53a9",
      "tree": "1f7617ef536b7c1259f480534e17853aff0d6fdc",
      "parents": [
        "7e0c6792de74ff647e3d3ec0eddab3bd57bb761c",
        "d9046e0a29fb794a7f6fddaa248b814e7b253c42"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 26 01:14:07 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 26 01:14:07 2011 -0700"
      },
      "message": "am 969357e3: am 223995dc: Fix issue 4335692: HDMI media volume\n\n* commit \u0027969357e31c93e168e7a4cb3b41c33a6ec26f4a26\u0027:\n  Fix issue 4335692: HDMI media volume\n"
    },
    {
      "commit": "023eeac54c428d78b755fa3c856f20d17abb8a40",
      "tree": "41558b1eb0a74fec20fc4023b14cf44d318e3e7f",
      "parents": [
        "6c00983982d167bdb348c437f0480a480f38696c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 25 13:34:51 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 25 13:34:51 2011 -0700"
      },
      "message": "Fix issue 4335692: HDMI media volume\n\nForced music stream volume to max when not muted and output device is HDMI.\n\nChange-Id: Ibd287cea8ae1d3f36fea6651a113bd5cf2dbad13\n"
    },
    {
      "commit": "5820e52f9bf3c40839d33457975b6c9629ab1c79",
      "tree": "b3ca36c6552981cbe8455a2b5b6b25fcedd5c8ea",
      "parents": [
        "b661326137b5329e714be57d4b9321c7410385c5",
        "4d0243980123378e9dd69022bf4ddca729d84126"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Apr 11 17:32:37 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 11 17:32:37 2011 -0700"
      },
      "message": "am 07c25b65: am 4430670f: am ca7ad44a: Merge \"audioflinger: Enable ARMv5TE optimized resampler\"\n\n* commit \u002707c25b651216daac884bd503c02b788418165b50\u0027:\n  audioflinger: Enable ARMv5TE optimized resampler\n"
    },
    {
      "commit": "4d0243980123378e9dd69022bf4ddca729d84126",
      "tree": "297e2b94a1675f8053588a445238acd6e8f99da4",
      "parents": [
        "17b32853e0bb44a7a34c436141ee26e1405243a9",
        "16bc76ae6b1ee053626695814742c807b42cbce6"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Apr 11 17:27:12 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 11 17:27:12 2011 -0700"
      },
      "message": "am 4430670f: am ca7ad44a: Merge \"audioflinger: Enable ARMv5TE optimized resampler\"\n\n* commit \u00274430670f48f75661293371dab8db55865f5f56e0\u0027:\n  audioflinger: Enable ARMv5TE optimized resampler\n"
    },
    {
      "commit": "0c0a1c0c37dbd2646a732da706d6777283c83e44",
      "tree": "cfd6eb43fd04ff7cc23e8930bc2355b599d2b8c3",
      "parents": [
        "ba0de09f9a221f14e812e2b6498b48cf782c7396"
      ],
      "author": {
        "name": "Jim Huang",
        "email": "jim.huang@linaro.org",
        "time": "Wed Apr 06 14:19:29 2011 +0800"
      },
      "committer": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Thu Apr 07 21:08:39 2011 +0800"
      },
      "message": "audioflinger: Enable ARMv5TE optimized resampler\n\nPreviously, the optimized asm option is only enabled when\n__ARM_ARCH_5E__ is defined, which is assigned in armv5te.mk\nrather than armv7-a series targets.  This patch checks the ARM CPU\nfeature about half-word multiply instructions to enable ARMv5TE\nresampler optimization routines properly.\n\nChange-Id: I4c5a5d8c932416f23bedb0b389db958349f21ea4\n"
    },
    {
      "commit": "c30268b9d118309a0514bcf280a03ee69f81403f",
      "tree": "792168ccd1a37180a9f248aa394de46291605e7b",
      "parents": [
        "9d91771564c264903363d7879d052f2427b78aa0",
        "4bcae82f9b07d1a39956c45a6f5bec0b696c4dd1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 06 13:03:11 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 06 13:03:11 2011 -0700"
      },
      "message": "Merge \"Miscellaneous code cleanup in audio framework\""
    },
    {
      "commit": "9d91771564c264903363d7879d052f2427b78aa0",
      "tree": "5286c51dfdc6105fdd5dd6d822d8df1c12ef3736",
      "parents": [
        "46bc5b885f9cb39502bc082c97e0c73b99083042",
        "8b1027d3f873fc15c70f8645f1856936b69241a4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 06 12:22:29 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 06 12:22:29 2011 -0700"
      },
      "message": "Merge \"remove more unused references to ISurface\""
    },
    {
      "commit": "4bcae82f9b07d1a39956c45a6f5bec0b696c4dd1",
      "tree": "99532d06a61440bc66fa091e58ff23bc405a3ec0",
      "parents": [
        "7fb4b427d5fca79c09d69b212ddca41539c215a2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 04 10:50:50 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 06 10:24:18 2011 -0700"
      },
      "message": "Miscellaneous code cleanup in audio framework\n\nChanges:\n - Move declaration of kClassPathName to top of file so it can be used\n   in more than one place, instead of \"android/media/AudioSystem\".\n - Make private methods static.\n - Add comment to stream_type, audio_mode, force_use types that they must match\n   values in AudioSystem.java.\n - Add comment about unused types mp3_sub_format and vorbis_sub_format.\n - Fix typos.\n - Use @ in javadoc comments.\n - Delete dead APIs setMode, getMode, setRouting, getRouting in AudioSystem.java\n   (they are all hidden, deprecated, and unused by rest of framework)\n - Delete unused private log method.\n - Fix pathname for android_media_AudioSystem.cpp.\n - Improve code formatting for space after \u003d\u003d and !\u003d.\n - Add logging of delta for changing audio policy manager ref count.\n\nChange-Id: I18037c7beb8ab76d1fda08c11e589f6e591d36e1\n"
    },
    {
      "commit": "8b1027d3f873fc15c70f8645f1856936b69241a4",
      "tree": "937508beb7e2632939b5ea349ca945da2380b2cc",
      "parents": [
        "abf471f9d25f7a3104c5723657e3c6c329f3f08c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 05 15:44:20 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 05 20:11:55 2011 -0700"
      },
      "message": "remove more unused references to ISurface\n\nChange-Id: I2201f1ca2bb8f203a081d94a0134f798778dfbef\n"
    },
    {
      "commit": "38ccae2c0324daa305f3fe77d25fdf5edec0b0e1",
      "tree": "c7aec92091f634a6994ed7e836a2a1ba4e22c035",
      "parents": [
        "7fb4b427d5fca79c09d69b212ddca41539c215a2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 28 18:37:07 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 05 12:05:41 2011 -0700"
      },
      "message": "New fix for issue 4111672: control block flags\n\nThe first fix (commit 913af0b4) is problematic because it makes threads\nin mediaserver process block on the cblk mutex. This is not permitted\nas it can cause audio to skip or worse have a malicious application\nprevent all audio playback by keeping the mutex locked.\n\nThe fix consists in using atomic operations when modifying the control\nblock flags.\n\nAlso fixed audio_track_cblk_t::framesReady() so that it doesn\u0027t block\nwhen called from AudioFlinger (only applies when a loop is active).\n\nChange-Id: Ibf0abb562ced3e9f64118afdd5036854bb959428\n"
    },
    {
      "commit": "108dddf924d714c811dd565b8f4c7a0178cca2f2",
      "tree": "84d71d367dfb079a12738ca5f6c3edc4bd13aab1",
      "parents": [
        "b1d3d37c7990d22d0659e4c8c9aac56d4c09b6ea"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Mar 28 16:10:12 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Mar 28 16:28:57 2011 -0700"
      },
      "message": "frameworks/base: some camera-interface cleanup\n\nMethods getNumberOfVideoBuffers() and getVideoBuffer() as well as struct\nimage_rect_struct are no longer used (instead, the necessary information is\npassed through ANativeWindow.)\n\nChange-Id: If4b11446fc9ccbde1f6b45bc70c0d0b8e54376eb\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "5f7fcf29a7475a20cf38bf72da67746135d504c3",
      "tree": "f5e03d6a8f7d6b70b91cc95bc2324a1cc6492f10",
      "parents": [
        "f490e1765c44f63bde8e8acd905f36f92a840ddf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "message": "merge libsurfaceflinger_client into libgui\n\nthis is the first step in unifying surfacetexture and surface.\nfor this reason the header files were not moved, as most of them\nwill eventually go away.\n\nNOTE: currently we keep libsurfaceflinger_client.so as an empty\nlibrary to workaround prebuilt binaries wrongly linking against\nit.\n\nChange-Id: I130f0de2428e8579033dc41394d093f4e1431a00\n"
    },
    {
      "commit": "1caf58cd652edab4e05bfef8ccaa1497c450f5e9",
      "tree": "42aa3d8f381b451341a463266f3059c5ead47897",
      "parents": [
        "bc2661e26894905b1c3f5c59963708700bbcecaa",
        "33797ea64d067dfeaacbfd7ebe7f3383b73961b5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 18 14:43:41 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 18 14:43:41 2011 -0700"
      },
      "message": "Merge \"Fix issue 4111672: AudioTrack control block flags\""
    },
    {
      "commit": "33797ea64d067dfeaacbfd7ebe7f3383b73961b5",
      "tree": "03aad0239e15dbb12e56c29f4d886e72e111ee2f",
      "parents": [
        "00d48b9495265457dfb265e766296212b5447b0e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 17 09:36:51 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 18 08:56:45 2011 -0700"
      },
      "message": "Fix issue 4111672: AudioTrack control block flags\n\nMake sure that all read/modify/write operations on the AudioTrack\nand AudioRecord control block flags field are protected by the\ncontrol block\u0027s mutex.\n\nAlso fix potential infinite loop in AudioTrack::write() if the\nwritten size is not a multiple of frame size.\n\nChange-Id: Ib3d557eb45dcc3abeb32c9aa56058e2873afee27\n"
    },
    {
      "commit": "8eb69d60c09c1c4683066a94c889df28d0e9d233",
      "tree": "06d7e2a8ab38ab235cba0bab8e020ef5aeba7b60",
      "parents": [
        "27c174483a8ae9688d5d4897c19074f62c7f1701"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 11:48:13 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 14:43:12 2011 -0700"
      },
      "message": "Fix missing AOSP copyright headers for more files\n\no Update the copyright date on InputDispatcher_test.cpp and InputReader_test.cpp\n  because these two files were moved from other places to the current location,\n  and were actually created in 2010.\n\nbug - 4119349\n\nChange-Id: Ic93b81ddafb58e9e72a2e9e02ca3d9f173d6dca7\n"
    },
    {
      "commit": "ce80563f6fb49b0c40281f9a527e288799b4a577",
      "tree": "4e4bfcb5c2868142c41b0898beaa44697a755510",
      "parents": [
        "8980847d149cfca1d0564d9454c262764b6ee164"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 15 14:26:03 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 15 14:26:03 2011 -0700"
      },
      "message": "Improvement for issue 3489986: BT SCO volume\n\nThis change makes sure that the VOICE_CALL stream volume tracks\nthe BLUETOOTH_SCO stream volume when SCO audio is enabled.\nThe down link audio volume now reflects what is being displayed\nwhen pressing volume hard keys on the device while in a video chat\nwith a BT SCO headset.\n\nVolume settings on the headset and the device are still independent as\nwe do not support handsfree profile yet.\n\nChange-Id: Ie0d2714730ea359b9318b9cbe6f0b2557ef0f976\n"
    },
    {
      "commit": "4f46fed004b76d462ef859aa94a3c056b0e79b60",
      "tree": "afd68cec4f63a8576a539064a48b80dbe7ff92e4",
      "parents": [
        "9a5f9b7dbe9ecdebfbd9e8f96452c42213b08a31",
        "9ee159b79022b2e1a050acb3890ce948e99e9ccb"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Mar 02 19:51:04 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 02 19:51:04 2011 -0800"
      },
      "message": "Merge \"- To track the usage of all audio output devices - To track the currently used audio device - The devices are separated as speaker and other audio devices - Provide the collected data to battery application through pullBatteryData()\""
    },
    {
      "commit": "9ee159b79022b2e1a050acb3890ce948e99e9ccb",
      "tree": "3f8c908cd6d5a69f1f6c5eb7c4e0a833890107e9",
      "parents": [
        "5f5354e35ab3b2a0cb4cabb6d0aa5a160225ccc8"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Feb 24 14:51:45 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Mar 02 16:53:24 2011 -0800"
      },
      "message": "- To track the usage of all audio output devices\n- To track the currently used audio device\n- The devices are separated as speaker and other audio devices\n- Provide the collected data to battery application through pullBatteryData()\n\nChange-Id: I374c755266b5ac6b1c6c630400f4daf901ea8acc\n"
    },
    {
      "commit": "1c4967155109ab083a4149347596f7ebd3662a67",
      "tree": "c8370b3f11ca492ed2896afcb14a9cae881171d1",
      "parents": [
        "f96ebc66c0feb441733da6d08bca6d8de96cd9f0",
        "532492cd60a3ee2613cd3d664c9f4581d9929bc5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 02 15:19:38 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 02 15:19:38 2011 -0800"
      },
      "message": "Merge \"Fix issue 3388775.\""
    },
    {
      "commit": "c0bff9b96152179650dc9508799a38e35ef2a321",
      "tree": "711b978cd32555fe181cb36260f702753c19396e",
      "parents": [
        "59e7879a8482284a434268d51b4b438f0625d1be",
        "243f5f91755c01614a8cafe90b0806396e22d553"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 01 11:46:15 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 01 11:46:15 2011 -0800"
      },
      "message": "Merge \"Fix issue 3479042.\""
    },
    {
      "commit": "532492cd60a3ee2613cd3d664c9f4581d9929bc5",
      "tree": "b53c6be95d7d54e1fa4ef0369ec38bcccd844055",
      "parents": [
        "d2d38d5c937c552555aec8aa2eb9822a19b2476b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 01 10:28:01 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 01 11:42:43 2011 -0800"
      },
      "message": "Fix issue 3388775.\n\nDo not select A2DP output for media strategy when it is suspended because\nBT SCO is active. Media audio will be routed to speakers or SCO HS\n(depending on phone state and activity on stream VOICE_CALL) which is less\nconfusing than not hearing anything while music progress bar is moving.\n\nChange-Id: Iff8cc1ea9bf9bde0b33035c4d91398db0934b836\n"
    },
    {
      "commit": "243f5f91755c01614a8cafe90b0806396e22d553",
      "tree": "d6f4e9f1593f468967f75a82f21d8058a93c5ed1",
      "parents": [
        "8ddeebb93cb41e7a8e9fe763afb6c6016b21fa61"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 28 16:52:51 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 28 16:52:51 2011 -0800"
      },
      "message": "Fix issue 3479042.\n\nThe problem is that when an AudioRecord using the resampler is restarted,\nthe resampler state is not reset (as there is no reset function in the resampler).\nThe consequence is that the first time the record thread loop runs, it calls the resampler\nwhich consumes the remaining data in the input buffer and when this buffer is released\nthe input index is incremented over the limit.\n\nThe fix consists in implementing a reset function in the resampler.\n\nA similar problem was also present for playback but unoticed because the track buffer is always\ndrained by the mixer when a track stops. The only problem for playback was that the initial\nphase fraction was wrong when restarting a track after stop (it was correct after a pause).\n\nChange-Id: Ifc2585d685f4402d29f4afc63f6efd1d69265de3\n"
    },
    {
      "commit": "043b22dbe3b98a8fdd6b0ea77df4089ff44b6539",
      "tree": "89c89d943b159a8f9d6c1c98379ff54f42767337",
      "parents": [
        "60181854194007eef9471c2774a9912ce8c42cfa"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Feb 27 16:41:21 2011 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Feb 27 16:41:21 2011 -0800"
      },
      "message": "Fix bug 3376700 Volume too loud at lowest setting\n\nChange volume attenuation curve to provide more attenuation at\n low volume settings, and finer steps at high volume.\nSee bug entry for link to doc with curve values.\n\nChange-Id: I750548b2161a4c550ef982ba793156e4518119e8\n"
    },
    {
      "commit": "e468ac57f6e8afc6078c76d4eb1ac327112a3de0",
      "tree": "b6f657aa11261327f5f4743dd54f796e73ec328b",
      "parents": [
        "8e0e1979f0f41487b0f18aa5b9c8c52a39ca27f4"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 17 16:38:06 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 22 20:48:15 2011 -0800"
      },
      "message": "Application-managed callback buffer support for raw image\n\nbug - 3292153\n\nChange-Id: I9789f7c5cde3a3889d7375e881181e9152d95fc2\n"
    },
    {
      "commit": "586b21780680c4d19723b5a9484e55ec47464c5f",
      "tree": "ca05505bad4f38a6b3a48d1244bfdc27bf17a239",
      "parents": [
        "727a6f859841a1d421b680f56d4d4ca5ff8c6e4b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 11 14:39:34 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 11 14:53:23 2011 -0800"
      },
      "message": "Fix issue 3400751.\n\nAdd a delay before restoring output path when a notification ends so that\nshort sounds can be heard on proper device before the path is actualy switched.\n\nChange-Id: I1d2dd8e7e28e15fbcab344256f88499b26297372\n"
    },
    {
      "commit": "727a6f859841a1d421b680f56d4d4ca5ff8c6e4b",
      "tree": "fc3fc9199fa75a1bab26c40c38ca6658ad704f1a",
      "parents": [
        "f03034408506051f2f836e59305fcd5f662bf19a",
        "12932bfdc7163e654d5ef25f1cb1802ded2704f1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 11 14:48:20 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 11 14:48:20 2011 -0800"
      },
      "message": "Merge \"Fix issue 3425342.\""
    },
    {
      "commit": "12932bfdc7163e654d5ef25f1cb1802ded2704f1",
      "tree": "b1afb31da5c37e8210d64b022e66901f156ad6d0",
      "parents": [
        "fcac8fa9421f442f024018628a6042d7a14fbfb0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 11 10:29:06 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 11 14:42:13 2011 -0800"
      },
      "message": "Fix issue 3425342.\n\nChange the device selection order as follows to enable easier use of\nA2DP while the device is docked:\n1 - wired Headset\n2 - A2DP Headset\n3 - SPDIF/HDMI\n4 - Dock\n\nAlso do not limit notifications volume when on dock.\n\nChange-Id: I55ea6bea9f2d9ff284b54023e541b2788d0f1eb8\n"
    },
    {
      "commit": "6b2718c67aa7b1a8e3b0f25a73a0d5f72c59ffc3",
      "tree": "4f2fb8a9f016de59ddb591ade3e6851a74b6de3a",
      "parents": [
        "fcac8fa9421f442f024018628a6042d7a14fbfb0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 04 13:54:26 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 10 14:37:42 2011 -0800"
      },
      "message": "Bug 3352047 Wrong message when adjusting volume\n\nAdd hidden AudioManager.getDevicesForStream and output device codes.\n\nChange-Id: I4d1c1d3b6a077cd117720817d1f733dda557b947\n"
    },
    {
      "commit": "8473bb556421ac08f4e03abd5d149852114c9238",
      "tree": "2482264bd24755eac958bbf4a5e4e6152d76a24e",
      "parents": [
        "2b1222f8938356669672f35e0e53e176c78c40ef",
        "e08d819989d394ed171ba6f1e6d0fa14c29fc42d"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Feb 07 13:44:12 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 07 13:44:12 2011 -0800"
      },
      "message": "am be806fe8: am cc8f87e9: am f664d6f9: am b083d3b8: Merge \"Initialize resampling buffer per track.\"\n\n* commit \u0027be806fe8c1c7bb3ae70ae27dce41d672410af26a\u0027:\n  Initialize resampling buffer per track.\n"
    },
    {
      "commit": "802da7bc462f6f9df6e681cc75c51dc0a056a4a1",
      "tree": "7c790352639bd38de380849726a10e7e47e04c5f",
      "parents": [
        "ca0dd6114d7f5195373b40ff477b17a1b778c13d",
        "d2dcb08808aed82218b258726fa66f8e095a3f9c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 04 14:00:17 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 04 14:00:17 2011 -0800"
      },
      "message": "Merge \"Bug 3366668 Use BinderService template\""
    },
    {
      "commit": "e08d819989d394ed171ba6f1e6d0fa14c29fc42d",
      "tree": "17e548e1a86710ac25d23c141cba4d429f822f89",
      "parents": [
        "1bca832a1e023988a0103e3d87a47c96bfa0045a",
        "e26308ad434c575b2985ac442d2990bb1bc19f5d"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Feb 04 10:32:50 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 04 10:32:50 2011 -0800"
      },
      "message": "am cc8f87e9: am f664d6f9: am b083d3b8: Merge \"Initialize resampling buffer per track.\"\n\n* commit \u0027cc8f87e9410dd4de9a2fda4738429e6c6087c789\u0027:\n  Initialize resampling buffer per track.\n"
    },
    {
      "commit": "e26308ad434c575b2985ac442d2990bb1bc19f5d",
      "tree": "6a64d050ea2a8c034be43c383198f91e647b426c",
      "parents": [
        "5c009b036e01d2a351b02c47b8f20f384aa663fd",
        "2151d7b8c2dd77c9887691db30396937be778141"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Feb 04 10:27:54 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 04 10:27:54 2011 -0800"
      },
      "message": "am b083d3b8: Merge \"Initialize resampling buffer per track.\"\n\n* commit \u0027b083d3b816378ef3b9dceb33b2c2e20510b2632b\u0027:\n  Initialize resampling buffer per track.\n"
    },
    {
      "commit": "2151d7b8c2dd77c9887691db30396937be778141",
      "tree": "d2e10de09bc049edf1d0568a392855dfd765c3d0",
      "parents": [
        "13e05b3f569965d97ec7d7f65e4cd46c6a22c23d"
      ],
      "author": {
        "name": "Yuuhi Yamaguchi",
        "email": "yuuhi.x.yamaguchi@sonyericsson.com",
        "time": "Fri Feb 04 15:24:34 2011 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonyericsson.com",
        "time": "Fri Feb 04 15:24:34 2011 +0100"
      },
      "message": "Initialize resampling buffer per track.\n\nWhen resampling too short sound, AudioMixer uses previous\ntracks buffer. So we re-initialize the temporary buffer per\nloop to avoid it.\n\nChange-Id: I55a59a3b14faa8445e09c450478fe79cef704760\n"
    },
    {
      "commit": "117cd9286424888c1c5bf202ebf1e08ae1e6affe",
      "tree": "1aec3e46dbbebfe06fdc875ca8571298ad61e22d",
      "parents": [
        "8782cb4dc783cdcac8498148ab1894b4780c18df",
        "db130fbd3ccd37e247e49494a84f8a9841ecd593"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 03 18:44:32 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 03 18:44:32 2011 -0800"
      },
      "message": "Merge \"Bug 3366885 Remove LVMX switch\""
    },
    {
      "commit": "8782cb4dc783cdcac8498148ab1894b4780c18df",
      "tree": "ade3e3ee37bab3e3d7429943cc1dc2e51995779a",
      "parents": [
        "a205abd16ba836b27cfb8ba6b03611e8e8120978",
        "1bca832a1e023988a0103e3d87a47c96bfa0045a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 03 17:18:46 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 03 17:18:46 2011 -0800"
      },
      "message": "am 6f1bd261: am 9c0a1003: Merge \"Fix issue 3371080\" into honeycomb\n\n* commit \u00276f1bd261b7fd86ac7817ca061dfb55b95150b836\u0027:\n  Fix issue 3371080\n"
    },
    {
      "commit": "db130fbd3ccd37e247e49494a84f8a9841ecd593",
      "tree": "eddfcd84debc055e78baa446fafb3e88032577e4",
      "parents": [
        "856990b491d84b7ed4fefe337485c8997ba9dd02"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 03 17:18:19 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 03 17:18:19 2011 -0800"
      },
      "message": "Bug 3366885 Remove LVMX switch\n\nChange-Id: I0bf98c6f85f00b3296874571e1c049dcc4e2fcca\n"
    },
    {
      "commit": "d2dcb08808aed82218b258726fa66f8e095a3f9c",
      "tree": "a3d8b06e91ffe5347917516eb4262d4111bb1c7a",
      "parents": [
        "856990b491d84b7ed4fefe337485c8997ba9dd02"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 03 16:55:26 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 03 17:05:22 2011 -0800"
      },
      "message": "Bug 3366668 Use BinderService template\n\nChange-Id: I93d7f3fc9dc9b6a365723d8a51a73a5aabdb4f93\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": "2a30be33a39b07bf4f945d9506ffda0fd076e6c2",
      "tree": "39e315f0abd398d2e8d5d444fad30031468326a9",
      "parents": [
        "6386eb945fddbd82e421013f76bbd537b92d6669",
        "5092d8c066a1a98343bbc16e33a6753e577b5e7f"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jan 29 11:03:55 2011 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jan 29 11:04:41 2011 -0800"
      },
      "message": "Merge 0ef57993 from gingerbread\n\nChange-Id: If10fee1ae387a8130356dd62fe678495402d5edf\n"
    },
    {
      "commit": "144f78906f1eefaf8cbde9298a1422fcea094447",
      "tree": "2e8a393fe19a343c8aa470ae33f5cc0f64dc44ad",
      "parents": [
        "02235c39040120295314a402841b17f68752ec99",
        "2ef89309d41daac3d69fa78b31cd09cb2c262ca1"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jan 29 08:57:47 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 08:57:47 2011 -0800"
      },
      "message": "am 4eeb1047: Merge 13212f83 from gingerbread-plus-aosp\n\n* commit \u00274eeb10470ffafe8c508027f363ac66b58da5bf00\u0027:\n  Fix issue 2988031.\n"
    },
    {
      "commit": "2ef89309d41daac3d69fa78b31cd09cb2c262ca1",
      "tree": "699025e929ec01e6188363e025a53e02d569ad10",
      "parents": [
        "60e91863e185f84ec36fa3293e57ac9aa8500749",
        "c812fd3e5a35f09b0d5d6e4cafb40d21b75053ac"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jan 29 08:54:06 2011 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jan 29 08:54:06 2011 -0800"
      },
      "message": "Merge 13212f83 from gingerbread-plus-aosp\n\nChange-Id: I9a8ee0c7e7896aea85e7a7c18ee82927091cb670\n"
    },
    {
      "commit": "5092d8c066a1a98343bbc16e33a6753e577b5e7f",
      "tree": "5b7cd832cfaab93ec925af9babdd4fdc5eb7f5df",
      "parents": [
        "97a38b4f1be201bbbfa23d298bb779fffd624a3d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 27 11:32:34 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 27 11:32:34 2011 -0800"
      },
      "message": "Fix issue 2988031.\n\nLimit SYSTEM stream volume when a headset is connected and music is playing.\n\nChange-Id: Ieb44ae5bb53ffa9cd5fe8e317798eed279b78df8\n"
    },
    {
      "commit": "bfa2f13fd3f463dbceea4d3a18c3124e70df0a05",
      "tree": "23546faa4e073e21f7a1c4fa026cd81044cc49d0",
      "parents": [
        "b1d099197a9385f3afc9411da32a341546991d85"
      ],
      "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": "Wed Jan 26 11:20:01 2011 -0800"
      },
      "message": "do not merge bug 3370834 Cherrypick from master\n\nCherripick from master CL 79833, 79417, 78864, 80332, 87500\n\nAdd new audio mode and recording source for audio communications\n 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\nAdd a recording source used to designate a recording stream for\nvoice communications such as VoIP.\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\nSIP calls should set the audio mode to MODE_IN_COMMUNICATION,\n Audio mode MODE_IN_CALL is reserved for telephony.\n\nSIP: Enable built-in echo canceler if available.\n1. Always initialize AudioRecord with VOICE_COMMUNICATION.\n2. If echo canceler is available, disable our echo suppressor.\n\nNote that this CL is intentionally not correcting the\n getAudioSourceMax() return value in MediaRecorder.java as the\n new source is hidden here.\n\nChange-Id: Ie68cd03c50553101aa2ad838fe9459b2cf151bc8\n"
    },
    {
      "commit": "61dca6702ce50d937fc764c55bb0842b40dcd0e4",
      "tree": "afed90c2745038d5eb95f0d75c2f98a5d3fa4717",
      "parents": [
        "7aa9f73b06525781245b8c2970f09f48050a276d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jan 24 15:28:26 2011 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jan 25 10:04:31 2011 -0800"
      },
      "message": "Bug 3376700 Add support in APM for stream-specific volume curves\n\nThe stream volume was handled the same way for all different stream,\n the only potential difference between each of them being the number\n of steps available to the user to change the volume. This was\n mapped to 99 steps of 0.5dB amplitude, offering a maximum attenuation\n of -49.5dB.\nThis change consists in defining for each stream a curve with two\n knees (3 segments) for conversion from volume index to attenuation.\n This curve is defined in the AudioPolicyManager in\n initializeVolumeCurves(), and can therefore be overridden by the\n platform.\nNote that this change doesn\u0027t modify the volume curves: this CL\n enables the curves to be changed by overriding this default\n behavior.\n\nChange-Id: I575b66799c52df2906db248943b15120b8a79ea2\n"
    },
    {
      "commit": "b517e006b51c95db9c44bf5f104f562d431ae597",
      "tree": "92595dc209798655c6c41444b68a9b6809b54510",
      "parents": [
        "6e3edc2dffb0d424b02ac57b55114b0d13163f56"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 19 18:36:13 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 20 12:05:25 2011 -0800"
      },
      "message": "do not merge - Fix issue 3371096.\n\nEffectModule::process() was copying effect chain input buffer to\noutput buffer if no effect was active instead of accumulating it.\n\nChange-Id: If4ca75601ea69a088d0f71d88aec53e90a1dec89\n"
    },
    {
      "commit": "73337489229cc9b50371c7a9fcd86e9f00ea46d0",
      "tree": "59fcf0e06094891a67e52540d735e59c48b1517d",
      "parents": [
        "662cb2487ed513ff3ac26b104b5715c01d78419c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 19 18:36:13 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 19 18:36:13 2011 -0800"
      },
      "message": "Fix issue 3371096.\n\nEffectModule::process() was copying effect chain input buffer to\noutput buffer if no effect was active instead of accumulating it.\n\nChange-Id: I2838af2e7b6654d0a76547625929a5453da68d02\n"
    },
    {
      "commit": "935752053ef2691dbb6d5a6d149e0e362c6e3c74",
      "tree": "d0c6d5a1666aa6935a032a07d7c947bc8381a747",
      "parents": [
        "de16890e98cdd241398ed155cd47daf061584a77"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 18 18:39:02 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 19 09:04:27 2011 -0800"
      },
      "message": "Tentative fix for issue 3362362.\n\nThe problem is likely that one method is called on the AudioPolicyManagerBase\ninstance while it is still being constructed by AudioPolicyService.\n\nTo avoid this, the AudioPolicyService mutex is held by the constructor until the\nplatform specific AudioPolicyManager is constructed and the member\nmpPolicyManager initialized.\n\nAlso added an initCheck() method to AudioPolicyInterface to verify successful\ninitialization of AudioPolicyManager.\n\nA similar change is done in AudioFlinger constructor.\nAlso added some missing protections in AudioFlinger methods where the\nplayback thread list is parsed.\n\nChange-Id: I006b244ec057e1bb0aa5ebe426ef006e3b171056\n"
    },
    {
      "commit": "eb0d0c48ebfcee5e8141ae25fe42a9eac6aae230",
      "tree": "3475e7f5e88c9ec50a000e86c43f5cf20c4c0379",
      "parents": [
        "aee6c07b3572bf2510cd9e7d29c454fcfedde31d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jan 09 15:33:01 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jan 09 16:05:30 2011 -0800"
      },
      "message": "Fix issue 3317627.\n\nThe fix consists in selecting the digital audio device (SPDIF/HDMI)\nwhen available if the routing strategy is STRATEGY_PHONE.\n\nChange-Id: Ie500ae92f5c01f2511988543852ba559c6e5994b\n"
    },
    {
      "commit": "bfa33aae4f54c0020a0568b16a3acb7b30b6ca3d",
      "tree": "3dae4190516dcddec996a2b7c51b5f192c3ed4ca",
      "parents": [
        "5de2001a5c3f854b63dbcea284e02f930881ca75"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Dec 20 11:51:31 2010 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 06 13:31:53 2011 -0800"
      },
      "message": "Add camera service support for SurfaceTexture.\n\nThis change enables the use of a SurfaceTexture in place of a Surface as\nthe destination of camera preview frames.\n\nChange-Id: Ic70d404c8fe261e9d5da6f1de93d6babb5b191cb\n"
    },
    {
      "commit": "626c85f3a9ec8e34a1e4af31eddf118d75ee6416",
      "tree": "6430f67b042ec913493476605a4a67d5cde5855c",
      "parents": [
        "b5e8536e41bbbbfe336e1d9614c73278e51590eb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 17 10:27:02 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 17 10:27:02 2010 -0800"
      },
      "message": "Fix issue 3217707.\n\nThe problem is that when the A2DP headset is disconnected, there is a transition\nperiod during which the A2DP sink pumps data at a very high pace.\nThis makes that:\n1 the audio flinger mixer thread spins and starves binder threads thus delaying\nthe completion of the A2DP output stream shutdown\n2 we read the audio http audio stream faster than normal and we reach the end of stream\nfor audio while video is still playing if the streamed file is small enough.\n\nThe fix consists in detecting abnormal short write intervals and sleep to restore\na normal write pace.\n\nChange-Id: Iab127882494ab0e26266371dc0ce5c2ff6fa476e\n"
    },
    {
      "commit": "0b456a6a33de8cb7c641724579382a31a1beaa2c",
      "tree": "b111bee6a8d1c3eb9f2ccf52161d50748cafe96f",
      "parents": [
        "10f0d3f2fcd721e0d5639106f83668b0360bc173"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 16 09:44:42 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 16 09:44:42 2010 -0800"
      },
      "message": "Fix speakerphone routing to analog dock\n\nThe audio routing policy when speakerphone is on and a dock with built-in\nspeakers is connected should be to output audio to teh dock speakers\n\nAlso removed route to SCO car kit if forced usage is not SCO as the SCO\nsocket might not be established.\n\nChange-Id: I1aa2954092e28de935304b90f7a7a64d661934c7\n"
    },
    {
      "commit": "f3a8d32fd475ec68d966fa6f12a4c975ba80b659",
      "tree": "b64cef369c553e79b0ce9f4b74485aed40fd9e53",
      "parents": [
        "d27f1e6959cdcdadfa471b9824686d784ca55def"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 14 16:31:33 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 15 11:01:48 2010 -0800"
      },
      "message": "Change audio routing policy for HDMI\n\nHDMI device should have a higher priority than analog dock audio but a lower priority\nthan wired headsets.\nAlso modified AudioService so that HDMI is mapped to DEVICE_OUT_AUX_DIGITAL device and not\nDEVICE_OUT_DGTL_DOCK_HEADSET as before to enable discrimination between SPDIF going to\ndigital dock and SPIDF going to HDMI.\n\nChange-Id: I887d0c73479784dd2edaf41ce1a7d8d0bdcbb4bd\n"
    },
    {
      "commit": "b3fd981d5f8bbf629dd8a07b06b4b656b70cb944",
      "tree": "1d725343a79410a5fc5f849439df2017e1b465c5",
      "parents": [
        "d69c7f654cc772b03717999c1b24402d5c40e69f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 10 11:46:12 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 10 11:46:12 2010 -0800"
      },
      "message": "Fix audio mode log.\n\nSince the new audio mode IN_COMMUNICATION was added, the audio mode log\nwas broken.\n\nChange-Id: I4fdafc3b98a1b0ceb55058a9e47fed99b3dbe6ad\n"
    },
    {
      "commit": "986ef2ad4c96952711d87af481f3afb40aa10775",
      "tree": "d685585e64bfe6a46d7deabd1190fea460ebef3a",
      "parents": [
        "b41ad26dba96d70f53fff46d10eb589c2b3eb6f8"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Dec 09 11:08:14 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Dec 10 07:19:13 2010 -0800"
      },
      "message": "We requires camera hal\u0027s implementation should not track the ref count of any outstanding video frames and ignore\nreleaseRecordingFrame() call after it receives disableMsgType(CAMERA_MSG_VIDEO_FRAME).\n\nChange-Id: I2ecb9b3b11dab6bf868ccf8effda1b8df5bcde3c\n"
    },
    {
      "commit": "03dfce9672b36c1a334959a602f909b8410bec50",
      "tree": "9c1ae20251cb7251d619b42ddbfe6124866e4324",
      "parents": [
        "cb0cb25002f1b5fe0d02c997bac487b5b6c5c682"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 07 19:38:17 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 08 16:13:59 2010 -0800"
      },
      "message": "remove support for PUSH_BUFFER surfaces and overlays\n\nthe same functionality is now supported through\nthe h/w composer HAL, and YUV support in the GPU.\n\nChange-Id: I8146605449954b8e8fd7f78810b7d873c2d8f5bf\n"
    },
    {
      "commit": "6baa5de62a91b151af7a19036706b3d45143a32e",
      "tree": "615273d172f64e3e0a3c36a0e2de1a27a67b21d1",
      "parents": [
        "5a68e17d07369a16b16a16dcdc539c293b8c2810"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Dec 06 19:45:24 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Dec 06 19:53:01 2010 -0800"
      },
      "message": "Don\u0027t drop video frames but to release them.\n\nbug - 3259009\n\nChange-Id: Ib7634f10a7fe7b7ce7014b79b07957d194bae1a7\n"
    },
    {
      "commit": "ed7c671a57f89d389c9d6cd67e0698f160f69916",
      "tree": "db18d745439110927961642e9256101b8ed9ff39",
      "parents": [
        "075a1f660b77fe47b165db1aff97cdd05e300391"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 01 14:25:39 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 01 14:25:39 2010 -0800"
      },
      "message": "Fix issue 2641884: Bluetooth volume is dependent on in call volume.\n\nThe problem is that the code in AudioPolicyManagerBase::checkAndSetVolume() that forces\nvoice volume to max when setting bluetooth SCO volume is not called if the bluetooth stream\nvolume did not actually change. So even if we re apply volumes when switching to bluetooth\ndevice, the volume voice volume is not changed and remains what it was when routed to earpiece\nWhat makes things worse on Passion is that stream volumes are limited when connected to bluetooth\nand their actual value does not change as soon as they exceed the limit threshold.\n\nChange-Id: Id7c317db45b392a1c20dca2859678e3c64a371ed\n"
    },
    {
      "commit": "094b148b8587a67c19585e2af2cc7b53868bfb89",
      "tree": "b74e47e85328ad9a3b58717eb02135a231428f26",
      "parents": [
        "e178aafa2282cb0027bcb6ba1d52913e8cfda175",
        "1110ebc912bf2d8c072d1e4bc3688a52674e708c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 01 12:11:10 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 01 12:11:10 2010 -0800"
      },
      "message": "resolved conflicts for merge of 0d28be68 to master\n\nChange-Id: Iec5f810c366d3e1c14a6f6294b0aea4ffb30ae3e\n"
    },
    {
      "commit": "075a1f660b77fe47b165db1aff97cdd05e300391",
      "tree": "0e02b17b5a8e2803b93293005c3157a0d05a310c",
      "parents": [
        "03b55cc9d3529995925c8df0d4a35269e591188c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 02 12:02:20 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 01 09:45:33 2010 -0800"
      },
      "message": "Fix issue 3142808.\n\nThere is a bug in the way audio policy manager handles A2DP interface suspend/restore\nwhen SCO is used. This bug is not new but has been triggered by a change in the timing\nof the events received by audio policy manager when a call is setup and torn down\nintroduced by commit 164a8f86c7e48992691368c4895709c3bdb835a4.\n\nThe fix consists in grouping the control of A2DP suspended state in a single function\nthat is called systematically when conditions affecting this state are changed:\n- call state change\n- device connection/disconnection\n- change in forced usage.\n\nChange-Id: I46ee2399ee5547b60511fc6cfd32e2720091b0f8\n"
    },
    {
      "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": "b2ee05b6c453b7da24b23139489ad92bb2c79621",
      "tree": "c87270874c46e1835b4c825bdd78109006856d3a",
      "parents": [
        "12ac08f2e1ffb74fd4efdc726066db15e6d3d50d"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Oct 21 12:50:37 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Oct 25 14:56:22 2010 +0800"
      },
      "message": "Remove the FLIP_H/ROT_90 workaround from CameraService.do not merge\n\nNow overlay does flip before rotation.\nbug:3114236\nChange-Id: I1780e56154566435a0ceeb2f101de7ed0a0613cb\n"
    },
    {
      "commit": "95b18cb9224f79a781c827e0da45c58a644acece",
      "tree": "9c2e62994a4e7e0b151d9ec25bf1f3a36cd857a1",
      "parents": [
        "4769cc92740e3ab58e9263d42553c12bbf79e3be"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Oct 19 17:19:09 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Oct 20 18:29:18 2010 +0800"
      },
      "message": "Mirror the preview for front-facing cameras. do not merge\n\nNow overlay does ROT_90 before FLIP_V or FLIP_H. It should be FLIP_V\nor FLIP_H first. The formula should be changed after overlay is fixed.\n\nbug:3059865\nChange-Id: Ie4366bf7f1fcac7383e8dfc74b1b865997bbbcc6\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"
    }
  ],
  "next": "b36f2df1daf7e733be7c51f93792f8fc4252544c"
}
