)]}'
{
  "log": [
    {
      "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": "9b1e4f1a18ac2489e24b4272a0a7ccfd0018efcc",
      "tree": "d8af67ab7fa0bbc023a6c01709cda812e6959830",
      "parents": [
        "07b1bb529a1ae76c46a71b01338c166f9490629d",
        "0f056290cb16763453f18bbef80cde673041dbbc"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 13 16:31:10 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 13 16:31:10 2011 -0700"
      },
      "message": "Merge \"Add support for platform-specific recording start time offset\""
    },
    {
      "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": "0f056290cb16763453f18bbef80cde673041dbbc",
      "tree": "8250c642980de9496f6ae88bd1b00f798dba1eb4",
      "parents": [
        "70ccfd44c4bfe95ddecc2df6c3695efc48229d72"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon May 09 18:49:31 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 10 10:32:19 2011 -0700"
      },
      "message": "Add support for platform-specific recording start time offset\n\no This start time offset is used in the media framework to eliminate\n  the recording sound in the recorded file.\n\nChange-Id: I97926a74f0743b8a4f985d51334e8d1486a318ea\nrelated-to-bug: 4390777\n"
    },
    {
      "commit": "c777a8526a6517e5fbfa713651da280fd1bdd502",
      "tree": "c9c4c009cd13885f63e83b51f33547951f8cebf8",
      "parents": [
        "d2b0088df550e3ddfa44dbdfd1cd9a79ff80a2de"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon May 02 17:01:47 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon May 02 17:04:19 2011 -0400"
      },
      "message": "MediaScanner: Fix bug in \"no media\" handling logic\n\nDon\u0027t let the \"no media\" status of one directory leak to the remaining files\nand directories in the same parent.\n\nBug: 4364077\n\nChange-Id: I30943222dc292818cff00ee8169be7a695eed174\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "4f9e47f2c03ce36261c4717cd7e131d7940bb068",
      "tree": "5c3fc9eacd2d81b02cb45c050336c28ea924842e",
      "parents": [
        "d0675ede6de2249256d20271a19ccbf9f11745b8"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Apr 25 17:28:22 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Apr 29 10:24:03 2011 -0700"
      },
      "message": "Add setParameter/getParameter to MediaPlayer API.\nfor bug 1982947\n\nChange-Id: If3f40e4f18cbba155af29944af38bdc627f8cd53\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": "db5cb14318bb24cd6ea14ff7ceea0d5e1f83d903",
      "tree": "68c1ef5ba3875e713795d49d7bb39b41c74d27a2",
      "parents": [
        "6b80e0be94d3f92ec4aa2b7cace816780d3f338d"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Apr 19 22:20:55 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 10:48:38 2011 -0700"
      },
      "message": "libmedia: move AudioParameter out of AudioSystem\n\nChange-Id: I9eb7e002d141936258050d4fa4f0ccd8202bfc54\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "f87d18a374f0275b1adb89a495931390f7407fd2",
      "tree": "7a8ad9522891a6c742c954d12451c8d0e7577943",
      "parents": [
        "b5fe7f5346de1623331d784634cc10fa406771c4",
        "040e4a14ef9cafd5d08d9a180e6237fb79687995"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Apr 25 10:21:43 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 25 10:21:43 2011 -0700"
      },
      "message": "Merge \"Return status code from invoke()\""
    },
    {
      "commit": "c5182e31b23dc381d21ef43b7f7d682ffc54bd79",
      "tree": "ab36b201a453458e64f75f53b4d5dc2bfb4888df",
      "parents": [
        "7c1bc4cb2260f666a2fba9e64bb9de95121f0b22"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Apr 24 11:15:09 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Apr 25 09:21:54 2011 -0700"
      },
      "message": "MediaScanner: reimplement the \".nomedia\" feature for hiding files from the media provider\n\nPreviously we ignored any files and directories that had name started with \u0027.\u0027\nand ignored any directories that contained a \".nomedia\" file.\nNow to support transferring any file via MTP, we now add these previously ignored files\nto the media database, but will not mark them as audio, video, image or playlist files.\nThat way they will be included in the files table but will be hidden from the\naudio, video, images and playlist views that are used by apps like Music and Gallery.\n\nBug: 3405327\n\nChange-Id: I2d7285bd32e06c1a5c4ef6a8a15f8f8b2c33b39b\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "b483c4724846c0b8d4e82afcbb7c17f671bae81c",
      "tree": "3323eb5f46357ffff206c880b36fcf30dd984e02",
      "parents": [
        "fa4e195a735ab99e02388ac5c5611e73a76c7c72"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Apr 11 17:23:27 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Apr 13 11:11:34 2011 -0700"
      },
      "message": "- Add another parameter in notify() to be able to send timed text sample\nthrough listener during video playback.\n- Add OnTimedTextListener in the MediaPlayer\nFor feature request 800939.\n\nChange-Id: I65072c27acb4c0037109a72be38c73e9f667420f\n"
    },
    {
      "commit": "cc8ace7989f663fe6c6c1ed0febca0d9d1f19c7a",
      "tree": "f788a310454b02147ac7669e661cdb9afaf0d92e",
      "parents": [
        "c30268b9d118309a0514bcf280a03ee69f81403f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 07 09:41:46 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 07 09:41:46 2011 -0700"
      },
      "message": "Do not disable effect in AudioEffect destructor.\n\nCurrent implementation of AudioEffect class destructor disables\nthe effect before disconnecting from IAudioEffect interface.\nThis is problematic when more than one client has a handle on the same\neffect engine as destroying one handle will disable the effect which is\nnot the intended behavior.\n\nChange-Id: I10eacf981506469a7ef4eb9a1650813f0848de5d\n"
    },
    {
      "commit": "040e4a14ef9cafd5d08d9a180e6237fb79687995",
      "tree": "c14582b7bb0b2596aeeca669ce2ec51dc4eaef3b",
      "parents": [
        "c30268b9d118309a0514bcf280a03ee69f81403f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 06 18:29:01 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 06 21:33:03 2011 -0700"
      },
      "message": "Return status code from invoke()\n\nChange-Id: Ie64b418d2a1f44e07942399c285b460c68f8e14f\nrelated-to-bug: 4199781\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": "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": "0511969950188634f4212fcf63680c43207baedd",
      "tree": "79c5aa1f2d5ccd38c5944bc7a60815025770ccb9",
      "parents": [
        "c8a8472a0205dd698c8d81bf7e09026ca1013d1e",
        "9b7d950f1f3b0c526712b713dbceb0e22762c015"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 21 14:06:33 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 21 14:06:33 2011 -0700"
      },
      "message": "Merge \"Fix issue 3483718: audio streaming and A2DP.\""
    },
    {
      "commit": "9b7d950f1f3b0c526712b713dbceb0e22762c015",
      "tree": "087e6194a7eb4c3996860312bd340ca06f080cbb",
      "parents": [
        "ebd5d2541d4e5351fd1f1a23fc9ef047cfa67575"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 21 11:49:00 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 21 11:49:00 2011 -0700"
      },
      "message": "Fix issue 3483718: audio streaming and A2DP.\n\nThe problem is that when switching from A2DP to device speakers or headset,\nThe AudioTrack binder interface to AudioFlinger must be destroyed and restored\nto accomodate new buffer size requirements. Current AudioTrack implementation\ndid not restore properly the PCM buffer write index which caused a mismatch between\nthe written frame count in the mediaplayer renderer and the AudioTrack. The renderer\ncould then believe the AudioTrack buffer was full and stop writing data preventing the\nAudioTrack to reach a bufffer full condition and resume playback.\n\nThe rendered was also modified to refresh the AudioTrack frame count (buffer size)\ninside the write loop in NuPlayer::Renderer::onDrainAudioQueue() as this count can change\nfrom one write to the next.\n\nAlso modified AudioTrack::obtainBuffer() to check for track invalidated status before\nquerying for available space in the buffer. This avoids writing to the old track\u0027s\nbuffer until full before detecting the invalidated condition and create a new track.\n\nChange-Id: I16a857e464e466880847f52f640820aa271539ad\n"
    },
    {
      "commit": "af8791e112c8072452bd14ef3c43a47511d19542",
      "tree": "dc914f57bfb84ec7a1729581d66c06e0cad89125",
      "parents": [
        "ebd5d2541d4e5351fd1f1a23fc9ef047cfa67575"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 21 10:25:44 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 21 11:13:59 2011 -0700"
      },
      "message": "Support passing headers to MediaMetadataRetriever\u0027s setDataSource API\n\nChange-Id: Ib1a5c08fc5034cac05034db27007a35c9b660b26\nrelated-to-bug: 3506316\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": "c901f74404435cc1cf2717016e2b0092b6dcea24",
      "tree": "c858ff6c3a41df6279cbb30ab4d838d26a1d13b9",
      "parents": [
        "0ab985cf1ec0110022be22ff03aa300bb59b9c96",
        "f432a761e73bef8be43f83377ecea8abef72ce86"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 12:38:58 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 17 12:38:58 2011 -0700"
      },
      "message": "am 782ffe91: am 9c0c5b56: am 2f1f2248: Fix missing AOSP copyright headers for a bunch of media framework files\n\n* commit \u0027782ffe91da665c6b1fb9e297faa6e0dc6035f40c\u0027:\n  Fix missing AOSP copyright headers for a bunch of media framework files\n"
    },
    {
      "commit": "27c174483a8ae9688d5d4897c19074f62c7f1701",
      "tree": "9da8616575a69c53a3a8a9a7da3cfa12390e339e",
      "parents": [
        "8031ec79eb657a0ae84325410578ea87f50eeb54"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 11:02:04 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 11:10:40 2011 -0700"
      },
      "message": "Fix missing AOSP copyright headers for a bunch of media framework files\n\nbug - 4119349\n\nChange-Id: If5924e16a5f596d5d73d9beb66eaf5ac9a6f0e50\n"
    },
    {
      "commit": "c21359d332ea2ac5258f86e1cf46db9e0faf3e4b",
      "tree": "a04ba9e24b5c05daf369eef0adcc5929195246d2",
      "parents": [
        "d2251deb8f0ecf974bc88901ba469be66402ccd5",
        "eabc1ebd1b4a08b74ba51108c2b900b448cb802f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 16 15:53:03 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 16 15:53:03 2011 -0700"
      },
      "message": "resolved conflicts for merge of 1cbf8493 to master\n\nChange-Id: Ifea2ba8b02ecf291fbd1612973647a95a70511c4\n"
    },
    {
      "commit": "8031ec79eb657a0ae84325410578ea87f50eeb54",
      "tree": "9dfaf157d4a8ecef0a9f31f84c50734fa235a1a1",
      "parents": [
        "ae03031ab6af9505335e888b709ee661fe04ed83"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 16 14:09:50 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 16 14:11:32 2011 -0700"
      },
      "message": "Add the default camera id to mCameraIds for emulator and those devices without media_profiles.xml configuration file.\n\nbug - 4109530\n\nChange-Id: Ib83be7a7f767a4b20ac338734ada1581e7a4c5bf\n"
    },
    {
      "commit": "8635b7b095fbf7ffc63d3ce791891a9116ace1f6",
      "tree": "6c9bbe1d0cec53f0c83099f1028302a178928cb9",
      "parents": [
        "1b99cc90afffbda6013ebbb45d64f17b1d90b9f5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 14 17:01:38 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 14 18:48:19 2011 -0700"
      },
      "message": "Add memory leak tracking/debugging code to drm server\n\nbug - 4099038\n\nChange-Id: I6c048eaf3d7f34bc144b8daaa5fdef1ed474af66\n"
    },
    {
      "commit": "2aac40fe9d42a15dab0af6a0efea7a2468cd9e4f",
      "tree": "7b31d55d7d9bcc242959c87e0692c09d6f12fa70",
      "parents": [
        "1156dc913a5ba7b2bc86489468d4914430f03d14",
        "bd75c0d65c003ae18baebab7357c1d621096282b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 09 11:00:22 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 09 11:00:22 2011 -0800"
      },
      "message": "am 2dc78477: am cc34967f: Merge \"Fix issue 3439872: video chat and bluetooth SCO\" into honeycomb-mr1\n\n* commit \u00272dc78477364bd4accb9a603baaafca9a5523dcec\u0027:\n  Fix issue 3439872: video chat and bluetooth SCO\n"
    },
    {
      "commit": "1703cdfee717b1b312bf8979816a9e2f16a82e5d",
      "tree": "eb9d3cfe8ffebe45679de91af6f9ffd676ca5067",
      "parents": [
        "fbb1909036ba7de3d9fb8738daba60b357881153"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 07 14:52:59 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 08 16:33:15 2011 -0800"
      },
      "message": "Fix issue 3439872: video chat and bluetooth SCO\n\nThis change fixes the stability problems experienced when using\na bluetooth headset supporting both A2DP and SCO. Problems occur\nwhen starting the video chat at which time the A2DP output is being\nstopped to start SCO. At that time, active AudioTracks are invalidated\nby AudioFlinger so that a new AudioTrack binder interface can be\nrecreated by the client process on the new mixer thread with correct parameters.\nThe problem was that the process to restore the binder interface was not\nprotected against concurrent requests which caused 2 binder interfaces\nto be created sometimes. This could lead to permanent client deadlock\nif one of the client threads was waiting for a condition of the first\ncreated binder interface while the second one was created (as the AudioFlinger\nwould only signal conditions on the last one created).\nThis concurrent request situation is more likely to happen when a client\nuses the JAVA AudioTrack as the JNI implementation uses simultaneously the\nnative AudioTrack callback and write push mechanisms. By doing so, the code\nthat checks if the binder interface should be restored (in obtainBuffer()) is\nmuch more likely to be called concurrently from two different threads.\n\nThe fix consists in protecting the critical binder interface restore phase\nwith a flag in the AudioTrack control block. The first thread acting upon the binder\ninterface restore request will raise the flag and the second thread will just wait for\na condition to be signaled when the restore process is complete.\n\nAlso protected all accesses to the AudioTrack control block by a mutex to prevent\naccess while the track is being destroyed and restored. If a mutex cannot be held\n(e.g because we call a callback function), acquire a strong reference on the IAudioTrack\nto prevent its destruction while the cblk is being accessed.\n\nModified AudioTrack JNI to use GetByteArrayElements() instead of\nGetPrimitiveArrayCritical() when writing audio buffers. Entering a critical section would\ncause the JNI to abort if a mediaserver crash occurs during a write due to the AudioSystem\ncallback being called during the critical section when media server process restarts.\nAnyway with current JNI implementation, either versions do not copy data most of the times\nand the criticial version does not guaranty no data copy.\n\nThe same modifications have been made to AudioRecord.\n\nChange-Id: Idc5aa711a04c3eee180cdd03f44fe17f3c4dcb52\n"
    },
    {
      "commit": "d3ee677783864d933cd8bc82c14666bd135d43bd",
      "tree": "ad355a79440ad268a84c73d53d7d61dbe089a18c",
      "parents": [
        "6ab1d170a6707e4b92bc1ee353dcd2bf7b897bac"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 07 17:04:26 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 07 17:06:58 2011 -0800"
      },
      "message": "Add the default back-facing camera to the MediaProfile camera vector\nAs a result, missing media_profiles.xml will be still allowed.\n\nChange-Id: Ie6c1bbfdfd4e971f1d5d0e031a913e757f3863a7\n"
    },
    {
      "commit": "32f3cefa373cd55e63deda36ca9d07c7fe22eaaf",
      "tree": "b8ff788f27c04b39b7959783a53e7a138cdff3e6",
      "parents": [
        "3fd91baee812919f53a85c5c05f32606313f8334"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Mar 02 15:34:46 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Mar 02 15:38:32 2011 -0800"
      },
      "message": "Allow optional specification of a PTS timestamp when signalling a discontinuity.\n\nIf present, rendering will be suppressed until reaching the timestamp.\n\nChange-Id: Ic64bdf4225063c5a4d042ea9809960b843a46d19\nrelated-to-bug: 3489454\n"
    },
    {
      "commit": "2a7e0a1eb29306982fd77bdc64d324464a48a2b9",
      "tree": "394731f4a2cfb40c76de91decce1520c0a705dac",
      "parents": [
        "c0bff9b96152179650dc9508799a38e35ef2a321"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Feb 28 21:07:39 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Mar 01 15:58:59 2011 -0800"
      },
      "message": "Get rid of redundant media profiles\n\nbug - 3330679\n\nChange-Id: Idc55aea32746c0c57552c5e15a289681421aa859\n"
    },
    {
      "commit": "e2ce6458659c6e1bad420357b61dc10cd8bbe2ab",
      "tree": "89a59a1cef847dc359dbf013f0c76d94f6363918",
      "parents": [
        "3911a720270fc0326accfa4a3df427a649a45487"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Feb 23 19:01:28 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Feb 28 12:12:20 2011 -0800"
      },
      "message": "Add an OMX IL API for querying buffer usage flags.\n\nThis change defines an OpenMAX IL API for querying from the IL component\nthe gralloc buffer usage flags that should be used to allocate the\nbuffers.  It also adds the Stagefright plumbing for using the new OMX IL\nAPI.\n\nChange-Id: I046b5e7be70ce61e2a921dcdc6e3aa9324d19ea6\nRelated-Bug: 3479027\n"
    },
    {
      "commit": "1173118eace0e9e347cb007f0da817cee87579ed",
      "tree": "d2d23b2120010097d1edda29cd0adffd938105c3",
      "parents": [
        "f7f3e824a8cb2b38355db8e4f99e43b90ee71ce4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 08 17:26:17 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 23 15:02:56 2011 -0800"
      },
      "message": "Bug 3438258 Add SurfaceTexture as MediaPlayer sink\n\nThis change enables the use of a SurfaceTexture in place of a Surface\nas the video sink for an android.media.MediaPlayer. The new API\nMediaPlayer.setTexture is currently hidden.\n\nThis includes:\n - New Java and C++ interfaces\n - C++ plumbing and implementation (JNI, Binder)\n - Stagefright AwesomePlayer and NuPlayer use ANativeWindow\n   (either Surface or SurfaceTextureClient)\n\nChange-Id: I2b568bee143d9eaf3dfc6cc4533c1bebbd5afc51\n"
    },
    {
      "commit": "51b9a8b53eaa1a0188be95d4d6a749424787e0d6",
      "tree": "098b73dc47ef13b88c0598493b1b4bec3ea451aa",
      "parents": [
        "8e0e1979f0f41487b0f18aa5b9c8c52a39ca27f4",
        "7cf180c9bff69e5cc4a2f4e53b432db45ebbebab"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Feb 23 09:58:33 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 23 09:58:33 2011 -0800"
      },
      "message": "Merge \"- Add method in MediaPlayerService to collect and pull   codec usage (duration) for the battery app - Collect MediaPlayer decoding usage data\""
    },
    {
      "commit": "7cf180c9bff69e5cc4a2f4e53b432db45ebbebab",
      "tree": "05d25862b1e1f30ffc31fe2ca2128ff68810df1b",
      "parents": [
        "1de41a66e3e7b548ee44e6654580e5f6f7265b11"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Sat Feb 19 18:37:57 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Feb 22 22:42:05 2011 -0800"
      },
      "message": "- Add method in MediaPlayerService to collect and pull\n  codec usage (duration) for the battery app\n- Collect MediaPlayer decoding usage data\n\nChange-Id: I0ef4e32b6a041ba1fe73c19f9c67185c61d03965\n"
    },
    {
      "commit": "f1d985081cff2a6aa2397c5341da8432db753211",
      "tree": "35be45778b79efba7e591ca58ff58890cc5a3574",
      "parents": [
        "1de41a66e3e7b548ee44e6654580e5f6f7265b11"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 22 12:34:02 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 22 12:34:02 2011 -0800"
      },
      "message": "Check file descriptor before passing it through binder calls\n\nbug - 3476613\n\nChange-Id: I858933fd2fe4c095c0bd58bf50344c47fc104be9\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": "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": "cce3a1107ef5bf9c8c8dbbaf922a2b33f24abfe6",
      "tree": "1e0b03164753ed7a9a5fb5e98a5cd900288a6580",
      "parents": [
        "6dfc223e20e65b9938c2903fe47a51cc9a02a71e",
        "47f44fb9b85ac555e5b84b2f5ca8536a85659c3e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Sat Jan 29 09:32:05 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 09:32:05 2011 -0800"
      },
      "message": "am c929677e: Merge \"Increase the number of useful bits in the spectrum.\" into gingerbread\n\n* commit \u0027c929677e017759047d94599faa1b80ebe278fefb\u0027:\n  Increase the number of useful bits in the spectrum.\n"
    },
    {
      "commit": "209821c7b7ead3ac58743d0a6d21dd05a2e77708",
      "tree": "e9cc0ea746bad9d05425f459ad245f882ceab36c",
      "parents": [
        "b517e006b51c95db9c44bf5f104f562d431ae597"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jan 18 16:44:28 2011 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jan 24 08:47:55 2011 -0800"
      },
      "message": "Increase the number of useful bits in the spectrum.\n\nChange-Id: I3efc2ac8db689285566df35cb6f594aab41141db\n"
    },
    {
      "commit": "b391290130f263441334ee4525a5832f0bea2ef0",
      "tree": "09faabdbb6c75ef535bc134eb6dad53267f66380",
      "parents": [
        "7509d7725207bfc28f7757c18518e21110c0736d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 19 10:34:52 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 19 10:34:52 2011 -0800"
      },
      "message": "Make parameter blocks read/writable even for SET_PARAMETER/SET_CONFIG requests.\n\nRefactor the logic a little.\n\nChange-Id: Idd7a26678d846c96b0b11f096305e7467381bda3\n"
    },
    {
      "commit": "95304d5488ba465f19cc788f1c7394218c2ea2d1",
      "tree": "5f5269238a292e0e747cbfa2a01e6a2fb24615b8",
      "parents": [
        "e49051406baa71cb63d5754d33908ce3df201af1"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Dec 02 17:42:08 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 12 17:12:46 2011 -0800"
      },
      "message": "Squash commits of the following patches, cherry-picked from other branch - do not merge.\n\no Prepare for publishing MediaMetadataRetriever as public API\n  step one:\n  o replaced captureFrame with getFrameAtTime\n  o removed getMode\n\no Replace MediaMetadataRetriever.captureFrame() with MediaMetadataRetriever.getFrameAtTime()\n  as part of the preparation for publishing MediaMetadataRetriever as public Java API\n\no Remove captureFrame from MediaMetadataRetriever.java class\n  It has been replaced by getFrameAtTime() method\n\no Replace extractAlbumArt() with getEmbeddedPicture() in MediaMetadataRetriever.java\n\no Publish MediaMetadataRetriever.java as public API\n  o Removed setMode() methods and related mode constants\n  o Removed some of the unused the metadata keys\n  o Updated the javadoc\n  o part of a multi-project change.\n\nbug - 3309041\n\nChange-Id: I2efb6e8b8d52897186b016cb4efda6862f5584c4\n"
    },
    {
      "commit": "7f7d52ac18dfc3c6d8f6267dad29306613e9bd0e",
      "tree": "5e17f415d44cdba3c8b37a42c487e28e26593a64",
      "parents": [
        "67988a9ba5a081d14dbd8a663516e1d484d829df"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 06 12:20:35 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 12 14:14:11 2011 -0800"
      },
      "message": "Publish MediaMetadataRetriever.java as public API\n\no Removed setMode() methods and related mode constants\no Removed some of the unused the metadata keys\no Updated the javadoc\n\no part of a multi-project change.\n\nbug - 2433195\n\nChange-Id: I5ed167f1fd6a53cb143b7dc385b149431d434438\n"
    },
    {
      "commit": "145e68fc778275963189b02a1adcbe27cce4d769",
      "tree": "91addc4557024a25d8ba64efc79b821be5ca1877",
      "parents": [
        "0ecfbd1cf37dbfb44d19c27351f5769309ac028d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 11 15:05:28 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 11 15:05:28 2011 -0800"
      },
      "message": "Increase cache size and low-watermark threshold, also\n\nMediaPlayer now sends out MEDIA_INFO,MEDIA_INFO_VIDEO_TRACK_LAGGING messages\nto the JAVA client informing it how much (if at all) the video lags behind\naudio (arg2 is the media delay in ms).\n\nChange-Id: I6933f573d8597a35112e4b5ee0fcb826a7f6ddd1\nrelated-to-bug: 3335220\n"
    },
    {
      "commit": "3e9f9f1596d4225ddd9288b4f7b24a15221374dc",
      "tree": "1c88af9da88152b3d499d6a0a92f1a0349bddff9",
      "parents": [
        "5a7f242cfc0bd3b5208c21c27c0f5f348e98a0dc"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Dec 16 12:54:24 2010 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Dec 16 15:35:36 2010 -0800"
      },
      "message": "MediaScanner: Add support for scanning empty directories\n\nCurrently the media scanner does not create database entries for directories\nunless they contain a file that is scanned.\nFixing this so we provide a consistent view of the world to MTP.\n\nChange-Id: Ia776acfeae23192183e7192d63cdc34d830ea889\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "0f01764099d7a65b8921725df3340140f9fc4cd5",
      "tree": "4804d04ee3b4e790731dcb6d90b3433d4945ac29",
      "parents": [
        "e8079d0f6afcb138a0e5882ccbaf93647ea77c5b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 15 19:09:42 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 15 19:09:42 2010 -0800"
      },
      "message": "Fix issue 2712130: Sholes: problem when playing audio while recording over bluetooth SCO.\n\nThe problem is that when an input stream is opened for record over bluetooth SCO, the kernel\nmono audio device should be opened in RW mode to allow further use of this same device by an output stream\nalso routed to bluetooth SCO.\nThis does not happen because of a bug in AudioSystem::isBluetoothScoDevice() that does not return true\nwhen the device is DEVICE_IN_BLUETOOTH_SCO_HEADSET (input device for blurtooth SCO).\n\nChange-Id: Ic78bf324b4a68e65721d763dc7682ce7a8f14f75\n"
    },
    {
      "commit": "14acc736e336cbd6026df781d4f411e908831815",
      "tree": "ed12a1452bb0e9a7bc9d9a3b4deb00458e90c852",
      "parents": [
        "a44153c1a57202fb538659eb50706e60454d6273"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 06 10:36:06 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 06 12:45:50 2010 -0800"
      },
      "message": "API Support for both synchronous and queued commands, optionally associated metadata.\n\nChange-Id: Idb90d64cb638942210c5822b3cba2f05b087d601\n"
    },
    {
      "commit": "16afe2fb439cab6125bb46a07a8078d4ce1c1ea5",
      "tree": "146e5ad9abfa370d35b2a8912a4887356764b1e2",
      "parents": [
        "1cc73922339a110d7ffc47e8842f958492dd85bf"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Dec 02 17:42:08 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Dec 03 15:32:47 2010 -0800"
      },
      "message": "Prepare for publishing MediaMetadataRetriever as public API\n\nstep one:\no replaced captureFrame with getFrameAtTime\no removed getMode\n\nbug - 2433195\n\nChange-Id: I38a8cecef29014692f0b08b8818326e3ebb40a12\n"
    },
    {
      "commit": "c75872920cd2de02d04bdc132ad5cf6d78c0578f",
      "tree": "7a00f9de9aad3f6305a663b94d63960ec7dc6dd0",
      "parents": [
        "7a1e1bdde7a28d9573367d6f95b736fd793ace0c",
        "ecd0a4f0b5bdd51bc35097b402202d6349f016ba"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Nov 30 16:23:40 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 30 16:23:40 2010 -0800"
      },
      "message": "am 4f93f08d: am 683a7ff9: Merge \"Visualizer: Fix the conversion from 8-bit sample to 16-bit sample.\" into gingerbread\n\n* commit \u00274f93f08d8c8b8067ff2176d9ec15c76c0e4cc0c2\u0027:\n  Visualizer: Fix the conversion from 8-bit sample to 16-bit sample.\n"
    },
    {
      "commit": "ecd0a4f0b5bdd51bc35097b402202d6349f016ba",
      "tree": "4db64af200c0be90a7938d47df543e49ac70bb04",
      "parents": [
        "e81e8153c85fa0b0aebae686f6ba51ed2c3a2d11",
        "879e9cb6b4e8b09a5c7d4942ce36125193deadde"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Nov 30 11:45:54 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 30 11:45:54 2010 -0800"
      },
      "message": "am 683a7ff9: Merge \"Visualizer: Fix the conversion from 8-bit sample to 16-bit sample.\" into gingerbread\n\n* commit \u0027683a7ff922409d2aa6c944bc4e08de32029e80e5\u0027:\n  Visualizer: Fix the conversion from 8-bit sample to 16-bit sample.\n"
    },
    {
      "commit": "879e9cb6b4e8b09a5c7d4942ce36125193deadde",
      "tree": "5d62a0440aee987552a01ced8d3ad7d549749c0f",
      "parents": [
        "c2c8868e59bde7f48998e1d89a0d77217bc64767",
        "6b6a736ec71c692c165952fe653a7766075e94bb"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Nov 29 22:56:56 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 29 22:56:56 2010 -0800"
      },
      "message": "Merge \"Visualizer: Fix the conversion from 8-bit sample to 16-bit sample.\" into gingerbread"
    },
    {
      "commit": "e2b1028852120bcfded33b8f06f66b780437fe92",
      "tree": "a524b579935df0a8773e780299e31b590d1bdb44",
      "parents": [
        "31d7235c79667f88002d9ad87207099ed438a197"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 23 11:41:34 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 23 14:46:13 2010 -0800"
      },
      "message": "Support streaming data across binder boundaries.\n\nChange-Id: Ifbac61406dcb81343765f99ccba08bd90f9274cc\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": "a1680bce73ea1b051cc92e0df651a53944b104ee",
      "tree": "1b3b976f6ceb09362f4fb94bd9f7755fa7569d0b",
      "parents": [
        "e1b8cf1cafb75ce1339b67eb1764e224a257c579"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Nov 18 12:23:58 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Nov 18 12:25:52 2010 -0800"
      },
      "message": "Fix an issue wherre error notification will not be sent after mediaplayer reset\n\nbug - 3198642\n\nChange-Id: Ieab13e12af9fdd0ad0873c522885e1350e7cd24c\n"
    },
    {
      "commit": "0a5ca668c6f7d45706e9aec4a1dfec0aacc6d233",
      "tree": "d9a1933cf2af87ad563e9220818c8d752b3a0379",
      "parents": [
        "6f9f029f7fc625bb2a1b448ad30a80a6a6a73b20"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 16 13:05:53 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 16 13:05:53 2010 -0800"
      },
      "message": "Remove all traces of legacy renderer support in stagefright.\n\nChange-Id: I17b8e0dbf53fca37c96830c41131b4bc0c24ca6d\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": "3baff73198ce852fa60080bd32703028298b4d65",
      "tree": "91c41492bf470b1a3facc7da5b3dad6d97ffbd6c",
      "parents": [
        "4974d5eaf838d893c418b85bd47f6f114d9b5aaa",
        "85d9b4225d024bb0d602b48bd6d5219cbebd7b8e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 08 11:50:14 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 08 11:56:08 2010 -0800"
      },
      "message": "resolved conflicts for merge of 31dc911a to gingerbread-plus-aosp\n\nChange-Id: I2f51b2120b3c552566d91a7dc498a5e8b130205f\n"
    },
    {
      "commit": "85d9b4225d024bb0d602b48bd6d5219cbebd7b8e",
      "tree": "4d9ebf6a8b1ecfe51c312d7f2cfa7b2eda6fe5cf",
      "parents": [
        "aca1fe35480ae76dd6bae167ade40adc955e2d0d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 04 11:50:27 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Nov 05 17:03:17 2010 -0700"
      },
      "message": "Support post-decode video rotation.\n\nChange-Id: Ia371316e73a57e44610de86adce3eaa560afbf84\n"
    },
    {
      "commit": "6b6a736ec71c692c165952fe653a7766075e94bb",
      "tree": "2000c38c45f45551faa3a78de14f7f7f387b0f80",
      "parents": [
        "64c3bdea8cba454d4404baded584ea0f0611b3ee"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Nov 01 10:56:45 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Nov 01 10:56:45 2010 +0800"
      },
      "message": "Visualizer: Fix the conversion from 8-bit sample to 16-bit sample.\n\nChange-Id: Ie6d77b0f61a37333e05cdcdb6ef29d6f6c345a9d\n"
    },
    {
      "commit": "05ea6434ed399395e2dbe9f68abb44f04b274cb0",
      "tree": "96fc95609b002fdf18ae1dff241d3c3a549f1673",
      "parents": [
        "c8ca26ed63edcf2731c4773b8ce3141930cc7245"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 29 12:00:20 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 29 13:20:06 2010 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit 0d5694ba2d399dd0869532a4d6256448185a1be0\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:59:23 2010 -0700\n\n    suspend() and resume() methods on VideoView are back but don\u0027t do anything.\n\n    They need to be back because they were public before.\n\n    Change-Id: Iddfd1021ffcf341f26e8d55ba761fd33701e2425\n\ncommit 16192891ed7d349ee97e47d1729d20a2d0d247b8\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:47:05 2010 -0700\n\n    Revert \"New API on VideoView widget to suspend/resume a session. Do not release the MediaPlayer client for video suspending/resuming.\"\n\n    This reverts commit 2e1818a4d16c3309660f27286c77d8d1eee95a25.\n\n    Conflicts:\n\n    \tapi/current.xml\n\n    Change-Id: I68dd1d05871044faf3f832d0838aa40bc7f890e5\n\ncommit 8f934dc1a3ae4e60f0790fcf97671e063fa20fad\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:44:16 2010 -0700\n\n    Revert \"Release mediaplayer if the current state is not suspending. Fix for bug 2480093.\"\n\n    This reverts commit efb882cf75eef39ecaf9f8920ed302a019fa629f.\n\ncommit f2ed03550887986f39d36b5dabcd9e919949c7cf\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:44:08 2010 -0700\n\n    Revert \"Release MediaPlayer if suspend() returns false.\"\n\n    This reverts commit 047212fd4ea360675e94d3ce83c7f5544f65b268.\n\ncommit 441ecce678bd24e9660a72c8627b5bd94433ff8b\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:40:46 2010 -0700\n\n    manually.\n\n    Change-Id: I4fdd43c9f7c8b3eedddb31a196da4984e1c58e87\n\nChange-Id: I60d4b10e7a9e4ed8d9a796f1711618f557eb6e89\n"
    },
    {
      "commit": "e870772a78ffe08b1c14a791e368f1499f1be0f3",
      "tree": "a443d9a157f12b32e524ae2953219d56dd3a770f",
      "parents": [
        "f83dd80384f70da1f6d36d60e831439ff7739ad7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Oct 20 17:38:41 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Oct 21 14:06:17 2010 -0700"
      },
      "message": "OMX extension to support storing meta data in video input buffers during recording\n\nbug - 3042125\n\nChange-Id: I7543809fa4ff61d48da35eec6c2bd5eaa7e8cead\n"
    },
    {
      "commit": "8ac0cb9dc8a46f9b2badabc91cb5f7871e2215a9",
      "tree": "5ba561315eff765e4a434ae56c55c3648defe5ec",
      "parents": [
        "3e00cc070090fa3eab16792da90aa33823cd6db1",
        "06fa2bcce5dd80b406a23f980d8c9fac1524ebfd"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Oct 18 08:33:38 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Oct 18 08:33:38 2010 -0700"
      },
      "message": "Merge fb474872 from gingerbread-plus-aosp\n\nChange-Id: I1bbb845a86a7b7df44ea175df3af22e5f47c44e3\n"
    },
    {
      "commit": "06fa2bcce5dd80b406a23f980d8c9fac1524ebfd",
      "tree": "340fd639cd8c487e65c47e4d44ee66974d8a9b85",
      "parents": [
        "30550ba7a19372daa7424710ca1367bb7299e459",
        "56cfa2376ae87cba730ea7ce4a9e0ca4f0d07627"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 15 18:25:14 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 15 18:25:14 2010 -0700"
      },
      "message": "am b04f356d: Merge \"Include the framework copy of the OpenMAX headers instead of referencing external/opencore.\" into gingerbread\n\nMerge commit \u0027b04f356d86eec74217fca8e3b85d801c4fcaa678\u0027 into gingerbread-plus-aosp\n\n* commit \u0027b04f356d86eec74217fca8e3b85d801c4fcaa678\u0027:\n  Include the framework copy of the OpenMAX headers instead of referencing external/opencore.\n"
    },
    {
      "commit": "56cfa2376ae87cba730ea7ce4a9e0ca4f0d07627",
      "tree": "c5909cd90e35e198a801abf6cff6d924a73b8011",
      "parents": [
        "b10d28f233bb881cc12260c320892e5feb198e9a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 15 13:31:29 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 15 13:31:29 2010 -0700"
      },
      "message": "Include the framework copy of the OpenMAX headers instead of referencing external/opencore.\n\nChange-Id: I762f59acf5e1f770e4d7c2d89af362bfffebefa6\nrelated-to-bug: 3101573\n"
    },
    {
      "commit": "3e8742fa4a5f0f8b185274763f6ec4e6c3a89344",
      "tree": "e7fe850b1e78f29434d2f0226830b3d763ebc5f7",
      "parents": [
        "6fed68ded4ab2c042b7ca14409a24aee916313d5",
        "8cde59da2dd8540466aff5e94e9a6e5f74df1f10"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 15 08:33:23 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 15 08:33:23 2010 -0700"
      },
      "message": "am 27c7fb1a: am 90d59d18: Merge \"Metadata.cpp and Metadata.java had drifted out of sync. This change remedies that.\" into gingerbread\n\nMerge commit \u002727c7fb1a861776b4fdc2632697e4e25eee83617f\u0027\n\n* commit \u002727c7fb1a861776b4fdc2632697e4e25eee83617f\u0027:\n  Metadata.cpp and Metadata.java had drifted out of sync. This change remedies that.\n"
    },
    {
      "commit": "f9f083e2853740c97588f4db82c24645ae5880e4",
      "tree": "5d045dddcf9e85e4826286c28662050b9d4a935d",
      "parents": [
        "d6119356f45c9c57cac812357d969ecc3001087e",
        "e4edd632d48720b44f7878273f46d192d5703150"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 14 23:58:41 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 14 23:58:41 2010 -0700"
      },
      "message": "resolved conflicts for merge of a127c07c to master\n\nChange-Id: Ifdfc6681cba00f36456eaf7a97f34a75b9d0c086\n"
    },
    {
      "commit": "8cde59da2dd8540466aff5e94e9a6e5f74df1f10",
      "tree": "633d6ce67a785ba813c1f9c79917ec6c40e56fee",
      "parents": [
        "0b5181ddfdde400f9cac6db239cf97ced3b67e22",
        "2959a5a5b4d151e14da3abe0289c15693409eb84"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 13 15:50:27 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 13 15:50:27 2010 -0700"
      },
      "message": "am 90d59d18: Merge \"Metadata.cpp and Metadata.java had drifted out of sync. This change remedies that.\" into gingerbread\n\nMerge commit \u002790d59d180bd963f00161e6bfaabfda432960cab6\u0027 into gingerbread-plus-aosp\n\n* commit \u002790d59d180bd963f00161e6bfaabfda432960cab6\u0027:\n  Metadata.cpp and Metadata.java had drifted out of sync. This change remedies that.\n"
    },
    {
      "commit": "2959a5a5b4d151e14da3abe0289c15693409eb84",
      "tree": "bcdb8b57d72e5d1f8ca30cf79aafde419c610cc9",
      "parents": [
        "a82c3c631a9c0bb721e35d03714715ffe3b0b0c3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 13 15:12:08 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 13 15:12:08 2010 -0700"
      },
      "message": "Metadata.cpp and Metadata.java had drifted out of sync. This change remedies that.\n\nChange-Id: I48175666857ab0fb1519777bdb6f7f0b6b5cc599\nrelated-to-bug: 3073955\n"
    },
    {
      "commit": "e4edd632d48720b44f7878273f46d192d5703150",
      "tree": "4dc92f8f6371da457d7c20e59194e73cf66d3659",
      "parents": [
        "43024e1f4953d9b8891b7b72f10e76f11812e772",
        "5cb77e080ced5362b5f047e107327b3cb6ece6c9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 13 09:19:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 13 09:19:28 2010 -0700"
      },
      "message": "am 312644cd: Merge \"Support for writing to MPEG2 transport stream files.\" into gingerbread\n\nMerge commit \u0027312644cdbb39522fe9cac028b15b907ce0e8e0f7\u0027 into gingerbread-plus-aosp\n\n* commit \u0027312644cdbb39522fe9cac028b15b907ce0e8e0f7\u0027:\n  Support for writing to MPEG2 transport stream files.\n"
    },
    {
      "commit": "59b7dc39ea8332d3418a599e51447d7edb612ac4",
      "tree": "30d77dd5cca3f58b3902df86e7df1dab42abc0f2",
      "parents": [
        "2bc940b4f961e588459c83862b2c6bea314a4027"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 12 14:17:45 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 12 16:05:23 2010 -0700"
      },
      "message": "Support for writing to MPEG2 transport stream files.\n\nChange-Id: If3b7a807bc224a4b1cb2236537c3ebdc5aee0d97\n"
    },
    {
      "commit": "2eeadf9ded4b5770a713496e9887d668889987bc",
      "tree": "94815ad41dce013a8d793d9e70d21f330573bd2b",
      "parents": [
        "0714c8262054cb6a532025feb082b21b502a128b",
        "74684081846ee6e68325fa5aba5c45b7447fd368"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Oct 10 16:06:04 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 10 16:06:04 2010 -0700"
      },
      "message": "am 4f21e517: am b37fcbfd: Merge \"Added getter for session Id to AudioSink\" into gingerbread\n\nMerge commit \u00274f21e517d09b9d793d20d64547df330fba705b3c\u0027\n\n* commit \u00274f21e517d09b9d793d20d64547df330fba705b3c\u0027:\n  Added getter for session Id to AudioSink\n"
    },
    {
      "commit": "74684081846ee6e68325fa5aba5c45b7447fd368",
      "tree": "4f2710d354acd31694fd8bbbaa07fade7f254cc6",
      "parents": [
        "4b43c1f169ab29b2d4dd058573668f7f4ffb8ca1",
        "bea16187c176837d35e7294f1f14ac195c5d5cad"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 08 08:30:03 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 08 08:30:03 2010 -0700"
      },
      "message": "am b37fcbfd: Merge \"Added getter for session Id to AudioSink\" into gingerbread\n\nMerge commit \u0027b37fcbfd7f9d65b90b43e0242903030c5a6517b5\u0027 into gingerbread-plus-aosp\n\n* commit \u0027b37fcbfd7f9d65b90b43e0242903030c5a6517b5\u0027:\n  Added getter for session Id to AudioSink\n"
    },
    {
      "commit": "8c563ed9ca8a863a66965330b5d14bb4b4ab59d4",
      "tree": "b2d2e571aa8618456b27e1cb67a717ca80340e3e",
      "parents": [
        "2a4d22d79e927f2245537921e10fc5fda1c47a29"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 07 18:23:03 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 07 18:23:03 2010 -0700"
      },
      "message": "Added getter for session Id to AudioSink\n\nAdded a method to expose the audio session id at AudioSink interface\nso that the AudioPlayer in stagefright can retrieve it.\n\nAlso:\n- Fixed audio effect send level not being initialized in mediaplayer.\n- Fixed compilation error when LOGV is enabled in mediaplayer JNI\n\nChange-Id: I4bb55454fd63d646e0e677692d737c4843fb05fb\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": "b3788b6d0f5a003d3d3e621ad605e2f3f4cb11e8",
      "tree": "9a482922a4ad3cbceb79b2646a505e2f03fe5d7c",
      "parents": [
        "1720ba0dd73f807cd9b6d90ffbfa581e18b6de08",
        "44d9848d6656777a18019223e0d35f2fcc67719a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 30 17:47:07 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 30 17:47:07 2010 -0700"
      },
      "message": "am 220ab887: Merge \"Issue 3032913: improve AudioTrack recovery time\" into gingerbread\n\nMerge commit \u0027220ab8877b234e6807b7f6d9028ba55d23220301\u0027 into gingerbread-plus-aosp\n\n* commit \u0027220ab8877b234e6807b7f6d9028ba55d23220301\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": "c425ffbfdca80c663b16a875228c15a1147a75f4",
      "tree": "98e05d9e0bcf0b7089cf60092dcfb5c7f21e9fa8",
      "parents": [
        "9b4e14edf6c20bcb5830b692121042cccffedfe6",
        "da4b9bdd4682fb3a20964908cb18d02c943b7f35"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 27 08:48:40 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 27 08:48:40 2010 -0700"
      },
      "message": "am 1b37df95: am 9627847d: Merge \"Fix error in AudioEffect command status reporting.\" into gingerbread\n\nMerge commit \u00271b37df95ec9d03aaa5f4055c6cd86db42f9c9727\u0027\n\n* commit \u00271b37df95ec9d03aaa5f4055c6cd86db42f9c9727\u0027:\n  Fix error in AudioEffect command status reporting.\n"
    },
    {
      "commit": "da4b9bdd4682fb3a20964908cb18d02c943b7f35",
      "tree": "4061ce1b067a277da67a141a5d2e9cb98e68041c",
      "parents": [
        "2207a10949a7f3fe7ebf5a52974c45221d8acc46",
        "0fa449cc475580d995e9d56756c3da5507d2b6f6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 27 08:45:07 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 27 08:45:07 2010 -0700"
      },
      "message": "am 9627847d: Merge \"Fix error in AudioEffect command status reporting.\" into gingerbread\n\nMerge commit \u00279627847d588cd969f60dcc79d165209184a90069\u0027 into gingerbread-plus-aosp\n\n* commit \u00279627847d588cd969f60dcc79d165209184a90069\u0027:\n  Fix error in AudioEffect command status reporting.\n"
    },
    {
      "commit": "0fa449cc475580d995e9d56756c3da5507d2b6f6",
      "tree": "1e344eefa5847ad1e8ea3fc508e0d63ba5334c13",
      "parents": [
        "76e2c7be04aeff55f3e6a473ff1cd6d9ec2d620c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 24 11:52:04 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 24 15:24:54 2010 -0700"
      },
      "message": "Fix error in AudioEffect command status reporting.\n\nAudioEffect::command() should not interpret the status\nreturned in pReplyData unless the command is ENABLE or\nDISABLE.\n\nAlso fixed:\n- bug in Visualizer::getWAveForm() status reporting.\n- wrong initialization value for capture buffer in visualizer engine.\n\nChange-Id: I60fb0011f9dba96ee74661dec1e8ef441edcaf35\n"
    },
    {
      "commit": "d44b51d9fcb0b5d891d2abece83a551e71ebb73b",
      "tree": "231b23f58a891c0c1db02e1982d9a21a6e302eda",
      "parents": [
        "979d233237271c2acc0c3902508e208fce16a1c9",
        "6901625dcb847871e23f04b9a282dc5d313a1d57"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Sep 17 23:25:37 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 17 23:25:37 2010 -0700"
      },
      "message": "am 5c9f3579: am f30fae63: Merge \"Add a check to track a problem the monkey script has been triggering.\" into gingerbread\n\nMerge commit \u00275c9f35799422d818f34f814c76c2acd8c939a40c\u0027\n\n* commit \u00275c9f35799422d818f34f814c76c2acd8c939a40c\u0027:\n  Add a check to track a problem the monkey script has been triggering.\n"
    },
    {
      "commit": "6901625dcb847871e23f04b9a282dc5d313a1d57",
      "tree": "f38ba0c376ffef125ceb126c8223b5ba20153986",
      "parents": [
        "ab1b9612fc5ad9d98ff76b3eb18d9f48a295f13e",
        "1c1503cf47c0a37a30e7acac2c5d29140fc61a5f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Sep 17 15:42:21 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 17 15:42:21 2010 -0700"
      },
      "message": "am f30fae63: Merge \"Add a check to track a problem the monkey script has been triggering.\" into gingerbread\n\nMerge commit \u0027f30fae63389a2216faf55636b95a08f35b5c3620\u0027 into gingerbread-plus-aosp\n\n* commit \u0027f30fae63389a2216faf55636b95a08f35b5c3620\u0027:\n  Add a check to track a problem the monkey script has been triggering.\n"
    },
    {
      "commit": "1c1503cf47c0a37a30e7acac2c5d29140fc61a5f",
      "tree": "8ebe9e796b7773e7707155b70a51025e30b109d6",
      "parents": [
        "00998fbb52dfa78ac3a4b3706d64fc612926bfbc"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Sep 17 15:04:01 2010 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Sep 17 15:04:01 2010 -0700"
      },
      "message": "Add a check to track a problem the monkey script has been triggering.\n\nChange-Id: If3896946d993cbab2442e17740f18efd7e753a3b\n"
    },
    {
      "commit": "d5672bc7162fa49abf9bb5844195887e911aa7ce",
      "tree": "ba0f7753e3c77780ed1783c999512d0952384505",
      "parents": [
        "59d9e31c503e5c2f49448362a0d3a8f1150fb6c2"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Thu Sep 16 22:25:23 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 17 13:19:13 2010 -0700"
      },
      "message": "Adding default profiles for specific levels.\n\nThe low and high profiles should each match one of the\nspecific profiles. So we need to add the specific profiles\ncorresponding to the low/high profiles. This makes the\ndefault profile compliant to documentation + cts.\n\nAlso fixed javadoc to account time lapse profiles.\n\nChange-Id: I34e7307d00ce261c69dc10ead2900025c7f6d428\n"
    },
    {
      "commit": "c59ad085c9737e8d56328732be6864de302acae9",
      "tree": "b16037bb38c65f41fa3b9e69d1860ecb68103b97",
      "parents": [
        "5441abc147d97f722d35fe71e7fbf41ce48a4944"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Sep 10 14:47:36 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Sun Sep 12 23:21:44 2010 -0400"
      },
      "message": "Media scanner support for tracking files of arbitrary type.\n\nThe native media scanner no longer filters files based on file extension.\nAudio, video, image and playlist files are handled as before, but non-media\nfiles are now inserted into the \"files\" table, which was originally added\nto support MTP.\n\nChange-Id: I9053218fb6d2671a3bb181405c34442b94678afc\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "9783ed8f85af3d7c72030098acfed7e1d6638349",
      "tree": "71456f82bd54f185c4a5d36febe650dc27878527",
      "parents": [
        "cc24f76ca5e8c987920d819c399c3eca11432f17"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 10 15:45:57 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 10 18:01:46 2010 -0700"
      },
      "message": "Exposing specific profile levels + hasProfile().\n\n- Exposing the specific resolution profile levels\n  QUALITY_{QCIF,CIF,480P,720P,1080P} and the new time lapse profiles\n  QUALITY_TIME_LAPSE_{LOW,HIGH,QCIF,CIF,480P,720P,1080P}\n- Unhiding the hasProfile() function used to test if a given profile exists.\n\nChange-Id: I5d8b9e1ba61718f304235e76d85244e428e68643\n"
    },
    {
      "commit": "1a02fabca518806222212bdc708b36a37a7c3925",
      "tree": "8ea619369c8c1da888189f9cb02c4e47114891ea",
      "parents": [
        "a0d472f114bb6a74005aaf61e91e3569ae061630",
        "8bb5603cc735315c8691dc9b7a81b4ad4d6e253e"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 10 15:04:17 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 10 15:04:17 2010 -0700"
      },
      "message": "Merge \"Adding hasProfile.\""
    },
    {
      "commit": "a0d472f114bb6a74005aaf61e91e3569ae061630",
      "tree": "49bd6d663b2a375dbd8ca2b280af9a5a902717da",
      "parents": [
        "275c732cd79a40617773636086b287901f8d4485",
        "c0a84782589eececdfa7e723e8aa0e572d0d79f5"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 10 14:26:45 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 10 14:26:45 2010 -0700"
      },
      "message": "Merge \"Added specific resolution and time lapse profiles.\""
    },
    {
      "commit": "8bb5603cc735315c8691dc9b7a81b4ad4d6e253e",
      "tree": "e1b026cd15a4bf8cba990adee7c12969a4e55bd6",
      "parents": [
        "c0a84782589eececdfa7e723e8aa0e572d0d79f5"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Thu Sep 09 16:25:08 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 10 14:22:11 2010 -0700"
      },
      "message": "Adding hasProfile.\n\n- Added hasProfile to CamcorderProfile and JNI.\n- Added hasCamcorderProfile to MediaProfiles.\n- using android.hardware.Camera.CAMERA_ID_DEFAULT for default camera\n  in get().\n\nChange-Id: Ib57bb49ae79492d7cbc0ec6c7b6efcbf74f80013\n"
    },
    {
      "commit": "c0a84782589eececdfa7e723e8aa0e572d0d79f5",
      "tree": "e1d1fa10c5696915e536bc603f7071d648f08e42",
      "parents": [
        "155e833a7a5fc3e193691324cf9326da1bc3289a"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Mon Sep 06 15:59:02 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Fri Sep 10 14:22:08 2010 -0700"
      },
      "message": "Added specific resolution and time lapse profiles.\n\n- Added enums QUALITY_{QCIF,480P,720P,1080P}\n  QUALITY_TIME_LAPSE_{LOW,HIGH,QCIF,480P,720P,1080P} in CamcorderProfile\n  and corresponding ones in MediaProfiles.\n- Added functions createDefaultCamcorderTimeLapseLowProfile,\n  createDefaultCamcorderTimeLapseHighProfile to set default values.\n- Moved javadoc for constants to the get() function.\n\nChange-Id: Ib8b3f8d29395dff77a397d1e6b44cfaf8c481d4d\n"
    },
    {
      "commit": "83750eaf5a3f38c243a9e7eb81d4b2421e3a0d88",
      "tree": "3e986eeeff4dd2f5d7cb9ddb3c90a714be495f2e",
      "parents": [
        "9f2d258645826c999a93a4206df157fec2e3b0f2"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 30 16:48:38 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Sep 03 14:32:42 2010 -0700"
      },
      "message": "Add the new Stagefright ANativeWindow OMX codec API.\n\nThis change defines the two OMX_SetParameter calls that enable OMX codecs to\ninteract with ANativeWindows.  It also adds the plumbing to the IOMX, OMX, and\nOMXNodeInstance classes to use these new APIs.\n\nThis is try 2 for this change, after reverting the first one because it broke\nthe build.\n\nChange-Id: I94249b72bdb5d5719360f03d7935fcca4ece5028\n"
    },
    {
      "commit": "9f2d258645826c999a93a4206df157fec2e3b0f2",
      "tree": "02958abbfd19bf49e1235955bd20431cdd3b878e",
      "parents": [
        "9dd4931cca8e4a2fcbcabf4eb7078648e1c029cd"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Sep 01 14:32:35 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Sep 01 14:32:35 2010 -0700"
      },
      "message": "Revert \"Merge \"Add the new Stagefright ANativeWindow OMX codec API.\"\"\n\nThis reverts commit 8a643b411e1802977f742709113ce01b06a18e12, reversing\nchanges made to 73ea9beaf8eb3d0027e78cbc0ac5e626c3f8deb4.\n"
    },
    {
      "commit": "9dd4931cca8e4a2fcbcabf4eb7078648e1c029cd",
      "tree": "df6ceb231b59e5ae6bc522863e0701d6f1b1d8e3",
      "parents": [
        "56f2c6e529bc62d55fc8baa7d1b52326307474d4",
        "559dc605bfe2deb73ad718e0d5c5dc55e27c45df"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Sep 01 14:00:33 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 01 14:00:33 2010 -0700"
      },
      "message": "Merge \"Add the new Stagefright ANativeWindow OMX codec API.\""
    },
    {
      "commit": "559dc605bfe2deb73ad718e0d5c5dc55e27c45df",
      "tree": "c98ca8836231a2cb5332e67f866f38ab9c811f4e",
      "parents": [
        "53bfd693c45278bf71cb5e184ffd3e95d52e04d8"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 30 16:48:38 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Sep 01 13:07:08 2010 -0700"
      },
      "message": "Add the new Stagefright ANativeWindow OMX codec API.\n\nThis change defines the two OMX_SetParameter calls that enable OMX codecs to\ninteract with ANativeWindows.  It also adds the plumbing to the IOMX, OMX, and\nOMXNodeInstance classes to use these new APIs.\n\nChange-Id: Ibfbf893dc3513db0b3d3221bec5708c77287cddc\n"
    },
    {
      "commit": "5d6aca5d86e86af3f8f597be573d4563d69ceb85",
      "tree": "88eb64d7aa763ab24c7eda54b0817740781d4bea",
      "parents": [
        "9c075bca0b75093ca0514a3c8f74d73c8e9e83fd"
      ],
      "author": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Thu Aug 26 17:20:53 2010 -0700"
      },
      "committer": {
        "name": "Nipun Kwatra",
        "email": "nkwatra@google.com",
        "time": "Tue Aug 31 10:38:49 2010 -0700"
      },
      "message": "Added setAuxiliaryOutputFile to MediaRecorder and JNI\n\nadded setAuxiliaryOutputFile to allow setting of an auxiliary output file.\nAlso added the JNI support.\n\nChange-Id: I8c3335192bd6f7fcbfdfc8552cfd0848f2ad2a5d\n"
    },
    {
      "commit": "6865ddb29fc7e7a14104d73c65b71074502bb6c7",
      "tree": "01097ef8ec82e9cc7fb409d33232b0d9bda568e9",
      "parents": [
        "d0e5b406dd0f86b01b3f550fbb894a7492454da2",
        "eebcf36cf2db2563af8ef479e01747321aa959e8"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Aug 31 10:10:20 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 31 10:10:20 2010 -0700"
      },
      "message": "am 1577e629: am 12006013: fixedfft: Only includes cpu-features.h when __arm__ is defined.\n\nMerge commit \u00271577e629866b2700e31c9467478e05ebffcc69a1\u0027\n\n* commit \u00271577e629866b2700e31c9467478e05ebffcc69a1\u0027:\n  fixedfft: Only includes cpu-features.h when __arm__ is defined.\n"
    },
    {
      "commit": "eebcf36cf2db2563af8ef479e01747321aa959e8",
      "tree": "dd2134fbd52e09dfce2874cc59505d97fdac150a",
      "parents": [
        "d81ef83a493a27887b795fdf9ece391155779914",
        "5edae619a6ad7337a3d14b53f7665ff17ec3ee84"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Aug 30 22:06:39 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 30 22:06:39 2010 -0700"
      },
      "message": "am 12006013: fixedfft: Only includes cpu-features.h when __arm__ is defined.\n\nMerge commit \u002712006013cc2cd0a076855ed068f5f782b24631c3\u0027 into gingerbread-plus-aosp\n\n* commit \u002712006013cc2cd0a076855ed068f5f782b24631c3\u0027:\n  fixedfft: Only includes cpu-features.h when __arm__ is defined.\n"
    },
    {
      "commit": "5edae619a6ad7337a3d14b53f7665ff17ec3ee84",
      "tree": "8b798b2d81f41ef82b9c1eb701b0243b48e8e822",
      "parents": [
        "5d5f5dfcc16756fe80a7c46cff0949fce9d54fe9"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Aug 31 12:56:01 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Aug 31 12:56:01 2010 +0800"
      },
      "message": "fixedfft: Only includes cpu-features.h when __arm__ is defined.\n\nChange-Id: Ifb6c03b38eff3c94a507ceb5043fcc48b364c25c\n"
    },
    {
      "commit": "e7c0899a7b7549ea342af67e7ab525f81672cfa5",
      "tree": "cad1c4a45254d4261f17c2ca71faea19b14b4fd9",
      "parents": [
        "17c53d433cd83d6b7d77e80635d6d58e2f6f5b2e",
        "dd8b35d2f7911bb1e12010f143c5b8c1b621f2ed"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 25 10:41:55 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 25 10:41:55 2010 -0700"
      },
      "message": "am 74ede9e4: am 67b50606: Merge \"Fix the simulator build.\" into gingerbread\n\nMerge commit \u002774ede9e4fd3f5ab3c139abd95a22abf9f33c2d64\u0027\n\n* commit \u002774ede9e4fd3f5ab3c139abd95a22abf9f33c2d64\u0027:\n  Fix the simulator build.\n"
    },
    {
      "commit": "dd8b35d2f7911bb1e12010f143c5b8c1b621f2ed",
      "tree": "e77993106962eabf522259f9a23a0a421b1a5118",
      "parents": [
        "b00a1e3f7e415c72b6ff6d2073b5b78c0d39e0ee",
        "625981ec8417528cbea67c86dcbe32a9e79a79be"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 25 10:39:21 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 25 10:39:21 2010 -0700"
      },
      "message": "am 67b50606: Merge \"Fix the simulator build.\" into gingerbread\n\nMerge commit \u002767b506065e9fe3c56e3d1b47eedfa01170d574f9\u0027 into gingerbread-plus-aosp\n\n* commit \u002767b506065e9fe3c56e3d1b47eedfa01170d574f9\u0027:\n  Fix the simulator build.\n"
    },
    {
      "commit": "625981ec8417528cbea67c86dcbe32a9e79a79be",
      "tree": "1e76d0c94d1a34ebdfe57a6c2921b5a42c28481b",
      "parents": [
        "fce49325d807c278229a594c1cc866e21da0e155"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 25 10:00:53 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 25 10:00:53 2010 -0700"
      },
      "message": "Fix the simulator build.\n\nFixes the sim build broken by commit 58d3bd08107f44cba79938dd8430e69c0fda4202.\n\nChange-Id: I5a63623363d558783dc5254fdd322080cc2f3525\n"
    },
    {
      "commit": "ef6c8c0324be75dfac3d6a4025ec3b3a7ca23826",
      "tree": "d4eeed32146739c6ca3e03c723a146e13368d0d5",
      "parents": [
        "515c0a56b6fbcca18a08f0daac7be278dede46d0",
        "7be0434ce8d4139e9ca4b1f374153de0c75ac049"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Aug 24 11:19:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 24 11:19:28 2010 -0700"
      },
      "message": "am a102871c: am b80e610b: Merge \"Visualizer: replace the FFT implementation with a faster one.\" into gingerbread\n\nMerge commit \u0027a102871c7cbb74ebddc53231a871145de61351b0\u0027\n\n* commit \u0027a102871c7cbb74ebddc53231a871145de61351b0\u0027:\n  Visualizer: replace the FFT implementation with a faster one.\n"
    }
  ],
  "next": "4b79168835965cf0fc41ebe2a367e22b4cb20d08"
}
