)]}'
{
  "log": [
    {
      "commit": "f01528f435e6b1f02d118fcd8305a148c27a89f1",
      "tree": "82d72c57f4f99358d361242029396ef133bd2062",
      "parents": [
        "542db5d438988360d491a5add1040a2df9aa90c9"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 28 10:08:03 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 28 10:08:03 2010 -0700"
      },
      "message": "Interleave the audio and video by default\n- default interleave duration is set to 1 second\n\nThis can dramatically reduce the memory usage\nby the MP4 file writer.\n\nChange-Id: Ia3ff202cabfcd2d3f183065d31e4596617c2dded\n"
    },
    {
      "commit": "542db5d438988360d491a5add1040a2df9aa90c9",
      "tree": "2780e2456a9b540e245fa3e3c8e62d60c284b8dc",
      "parents": [
        "348a8eab84f4bba76c04ca83b2f5418467aa1a48"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 21 14:51:35 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 22 14:51:53 2010 -0700"
      },
      "message": "Allows the authoring engine to skip frame.\n\nThis is 1st part of the work to allow audio and video resync if\nwe found out that audio and video are out of sync during authoring\n\n- also fixed a problem in AACEncoder::read() where the buffer acquired\n  from the buffer group does not release when error out at\n  reading from source.\n\nChange-Id: I8a2740097fcfdf85e6178869afeb9f3687a99118\n"
    },
    {
      "commit": "348a8eab84f4bba76c04ca83b2f5418467aa1a48",
      "tree": "b75461fcab7782b8029426e9976b8d805a3b1fd3",
      "parents": [
        "66d6f1fcd9cb80a603b833e93779eb0dfb5e67ee"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 22 09:20:13 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 22 09:21:05 2010 -0700"
      },
      "message": "Various changes to improve rtsp networking, reduce packet loss and adapt to ALooper API changes.\n\nChange-Id: I110e19d5ce33e597add3ffbd3e3ff3815862396d\n"
    },
    {
      "commit": "ef3f986ebeee48af0e8cbfa651260974bbd1ed4d",
      "tree": "fd724e069bae865cd2f21eb877772f71586084f3",
      "parents": [
        "2beeb50b1bba9e92f6cacfeca37fe9fa9d36ead1",
        "abd1f4f870925d6776dbe4b930b759a1ab6595ca"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 21 10:36:08 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 21 10:36:08 2010 -0700"
      },
      "message": "Merge \"Support finer seek control on MediaSources.\" into gingerbread"
    },
    {
      "commit": "abd1f4f870925d6776dbe4b930b759a1ab6595ca",
      "tree": "1b86ec19a16a2a340afecfd6207b1fd8236228b9",
      "parents": [
        "3108231d90e8aa324923fd8864ca2477948c5d25"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 20 15:04:28 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 21 08:51:29 2010 -0700"
      },
      "message": "Support finer seek control on MediaSources.\n\nrelated-to-bug: 2858448\n\nChange-Id: Ifb4b13b990fd5889113e47e2c62249ac43391fa1\n"
    },
    {
      "commit": "2beeb50b1bba9e92f6cacfeca37fe9fa9d36ead1",
      "tree": "ce966d62f6fbb94178763ec53760f6961ffffd58",
      "parents": [
        "3108231d90e8aa324923fd8864ca2477948c5d25"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 16 07:43:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 21 06:28:01 2010 -0700"
      },
      "message": "Added support for auxiliary audio effects to AudioTrack and MediaPlayer.\n\nAdded methods to AudioTrack and MediaPlayer java classes to enable use of\nauxiliary audio effects. The effect can be attached and detached by specifying its\nID and the send level controlled.\n\nChange-Id: Ie74ff54a453096a742688476f612ce355543b6f3\n"
    },
    {
      "commit": "3108231d90e8aa324923fd8864ca2477948c5d25",
      "tree": "30ceda3e1126c4d57284fd1f866d78935ebade6f",
      "parents": [
        "24ecd378305a3bf6fde74c8773bca09d0fd06c58",
        "faed5cd124a54b8db3429f4c26b3220bbec4c8bb"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 20 14:29:39 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 20 14:29:39 2010 -0700"
      },
      "message": "Merge \"Progress status notification\" into gingerbread"
    },
    {
      "commit": "24ecd378305a3bf6fde74c8773bca09d0fd06c58",
      "tree": "33785e7ef2a38a0c6b1818b717c03f932aaeadf3",
      "parents": [
        "3c3ddfa39635a2d39f4ee7c966fb9403fe1ec9d8",
        "de070137f11d346fba77605bd76a44c040a618fc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 11:25:35 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 20 11:25:35 2010 -0700"
      },
      "message": "Merge \"Audio policy manager changes for audio effects\" into gingerbread"
    },
    {
      "commit": "de070137f11d346fba77605bd76a44c040a618fc",
      "tree": "ba741240b391a66899514061ccda38254e539013",
      "parents": [
        "f997cabca292d70d078ae828e21c28e6df62995f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 04:45:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 10:31:57 2010 -0700"
      },
      "message": "Audio policy manager changes for audio effects\n\nAdded methods for audio effects management by audio policy manager.\n- control of total CPU load and memory used by effect engines\n- selection of output stream for global effects\n- added audio session id in parameter list for startOutput() and stopOutput().\nthis is not used in default audio policy manager implementation.\n\nModifications of audio effect framework in AudioFlinger to allow moving and reconfiguring\neffect engines from one output mixer thread to another when audio tracks in the same session\nare moved or when requested by audio policy manager.\nAlso fixed mutex deadlock problem with effect chains locks.\n\nChange-Id: Ida43484b06e9b890d6b9e53c13958d042720ebdb\n"
    },
    {
      "commit": "3c3ddfa39635a2d39f4ee7c966fb9403fe1ec9d8",
      "tree": "6003c16314885bf515785ba2648334434bff2762",
      "parents": [
        "95c2580db188dee19cab05d29351c7ca5973cf3b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 20 09:21:17 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 20 09:25:38 2010 -0700"
      },
      "message": "Support a single format change at the beginning of audio playback. This way the AAC+ decoder may change its output format from what is originally encoded in the audio stream and we\u0027ll still play it back correctly.\n\nChange-Id: Icc790122744745e9a88099788d4818ca1e265a82\nrelated-to-bug: 2826841\n"
    },
    {
      "commit": "95c2580db188dee19cab05d29351c7ca5973cf3b",
      "tree": "d3913035bce013b328aed936e777eb70ab47d954",
      "parents": [
        "f997cabca292d70d078ae828e21c28e6df62995f",
        "6cad99fefc7275f30886962e4193a336a2144b7b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 20 09:18:58 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 20 09:18:58 2010 -0700"
      },
      "message": "Merge \"Fix MPEG4Extractor to extract sampling frequency correctly when SBR is enabled.\" into gingerbread"
    },
    {
      "commit": "faed5cd124a54b8db3429f4c26b3220bbec4c8bb",
      "tree": "f0d4576711cdcc0af89e9f509d5a94eae995bdeb",
      "parents": [
        "59f566c4ec3dfc097ad8163523e522280b27e5c3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 15 19:08:20 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 20 08:39:57 2010 -0700"
      },
      "message": "Progress status notification\n\n- Keep track of per-track progress\n\nChange-Id: Ibd36f0e8c78581928c8aa2f5e23c5e7e0615c2cc\n"
    },
    {
      "commit": "6cad99fefc7275f30886962e4193a336a2144b7b",
      "tree": "61fd8673992b3cc9ed4543af8c7d3a56944a902e",
      "parents": [
        "46bf665ea3687f06069ebd1a0acd01ed7b5ac9cb"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jul 18 17:57:01 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 19 12:41:35 2010 -0700"
      },
      "message": "Fix MPEG4Extractor to extract sampling frequency correctly when SBR is enabled.\n\nChange-Id: I883c81dad3ea465e71cb5590e89d763671a90ff8\n"
    },
    {
      "commit": "f997cabca292d70d078ae828e21c28e6df62995f",
      "tree": "8e82ee801d8465366f659028f7105ee3ca38d4cc",
      "parents": [
        "46bf665ea3687f06069ebd1a0acd01ed7b5ac9cb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 19 06:24:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 19 06:31:30 2010 -0700"
      },
      "message": "Fixed problems in audio effect volume control.\n\nFixed the following problems in audio effect volume control in AudioFlinger:\n- Make sure that the volumes returned by EffectChain::setVolume_l() are correct even is\nno change is detected since last call\n- Do not use isEnabled() to validate volume control but mState \u003e\u003d ACTIVE instead as the volume control\nmust be also active in STOPPING and STOPPED states.\n\nChange-Id: Id62da3164fad500ee8a5efd6cd78c77e8fdcb541\n"
    },
    {
      "commit": "46bf665ea3687f06069ebd1a0acd01ed7b5ac9cb",
      "tree": "6d78e36d5aad10414ef9b42aa3a95fa30048e05a",
      "parents": [
        "2c8e5cab3faa6d360e222b7a6c40a80083d021ac"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jul 18 14:46:11 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jul 18 14:47:27 2010 -0700"
      },
      "message": "Fix simulator build (1st attempt)\n\nChange-Id: I65a824c17929170b7b2bc75a13e756e92d8fe50a\n"
    },
    {
      "commit": "2c8e5cab3faa6d360e222b7a6c40a80083d021ac",
      "tree": "fd19b8baa829edb78116b089d1122ea4ef0921e1",
      "parents": [
        "ada2ac8e09b6d3f2b3c3155a852ba0fffae1b592"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 09 12:28:50 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 17 06:33:00 2010 -0700"
      },
      "message": "First submission of audio effect library from NXP software.\n\nThis CL contains the first open sourceable version of the audio effect library from NXP software.\nThe effects implemented are:\n- Bass boost\n- Virtualizer (stereo widening)\n- Equalizer\n- Spectrum analyzer\n\nSource file for the effect engines are located under libeffects/lvm/lib\nThe wrapper implementing the interface with the audio effect framework in under libeffects/lvm/wrapper\n\nThe code of other effect libraries has also been reorganized fo clarity:\n- the effect factory is now under libeffects/factory\n- the test equalizer and reverb effects are under libeffect/testlibs\n- the visualizer is under libeffects/virtualizer\n\nChange-Id: I8d91e2181f81b89f8fc0c1e1e6bf552c5809b2eb\n"
    },
    {
      "commit": "59f566c4ec3dfc097ad8163523e522280b27e5c3",
      "tree": "6afe2f257d631e487a959e21015152d1d156cb5b",
      "parents": [
        "e957045dcfdc7e08a5d76463b125d2a9e92bc0e8"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 12 21:46:25 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 15 13:28:21 2010 -0700"
      },
      "message": "Initial check-in for software m4v_h263 encoder\n\nChange-Id: I4b49fa5c3a5e6e21cfd2419441d98dd784046367\n"
    },
    {
      "commit": "e957045dcfdc7e08a5d76463b125d2a9e92bc0e8",
      "tree": "e931f06d00f8a0cca34062866f95ab089910e67e",
      "parents": [
        "5462fc9a38fa8c9dff434cd53fa5fb1782ae3042",
        "8f5f2fcee5c12d08df71d17017410c50951fc2e3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 15 11:16:08 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 15 11:16:08 2010 -0700"
      },
      "message": "Merge \"Support user-supplied timescales for authoring\" into gingerbread"
    },
    {
      "commit": "65ab47156e1c7dfcd8cc4266253a5ff30219e7f0",
      "tree": "da088916c7cadadcddf47467f20cc8b0b6ff7f41",
      "parents": [
        "98fe12aba55e8b8bb14b23c4c3cdba9a99a9753c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "message": "move native services under services/\n\nmoved surfaceflinger, audioflinger, cameraservice\n\nall native services should now reside in this location.\n\nChange-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8\n"
    },
    {
      "commit": "8f5f2fcee5c12d08df71d17017410c50951fc2e3",
      "tree": "4cfeb1085495bacbc93775b43e0022fed69ca993",
      "parents": [
        "98fe12aba55e8b8bb14b23c4c3cdba9a99a9753c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 02 11:39:06 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 14 17:29:17 2010 -0700"
      },
      "message": "Support user-supplied timescales for authoring\n\n- also, change all the real time unit to microseconds in MPEG4Writer\n\nChange-Id: I260f512f2eb670ade7b8858a56335a5d639de756\n"
    },
    {
      "commit": "98fe12aba55e8b8bb14b23c4c3cdba9a99a9753c",
      "tree": "bbf2323ac43fa63695957708fc065b0658a515c0",
      "parents": [
        "d54329e48d2ee6bc6b24d148770eec562e10e739"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 09 10:44:29 2010 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jul 14 10:09:31 2010 -0700"
      },
      "message": "Use the OpenSL ES definition of SL_IID_EQUALIZER for the EQ\neffect UUID instead of defining it locally.\n\nChange-Id: Id6018fef20d286899cf7503fec3521dcd56db7e0\n"
    },
    {
      "commit": "d54329e48d2ee6bc6b24d148770eec562e10e739",
      "tree": "c7cb30e70c745bc2952fbafe2ccc5efae216fb43",
      "parents": [
        "4d6ab0ccb63a4a283a2207358564bb6549c3ddb7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 13 13:28:08 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 13 13:29:33 2010 -0700"
      },
      "message": "Fix simulator build\n- missing header file \u003cstring.h\u003e\n- need to define -D__arm__\n\nChange-Id: I18d2f1908684150784cf728234b5aedbc02447d1\n"
    },
    {
      "commit": "4d6ab0ccb63a4a283a2207358564bb6549c3ddb7",
      "tree": "09a7bd2fab4a88842ad296c43d2b534ad2a1c0af",
      "parents": [
        "29a84457aed4c45bc900998b5e11c03023264208",
        "e44b1efb293f878d4af8e824a6b3d070167bf2d6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 12:29:17 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 13 12:29:17 2010 -0700"
      },
      "message": "Merge \"Modifications in audio effect engine state management.\" into gingerbread"
    },
    {
      "commit": "e44b1efb293f878d4af8e824a6b3d070167bf2d6",
      "tree": "7418a2e26b5a3d6beb61ac5dcff499327ef09ecc",
      "parents": [
        "a480a6f7f204fa1712e1484a6ba9e6c8772fa110"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 09 13:34:17 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 12:27:18 2010 -0700"
      },
      "message": "Modifications in audio effect engine state management.\n\n- Separate the updating of effect engine state from the process call in EffectModule so that the state\nof all effects in the same effect chain is updated simultaneusly before all process functions are called.\n- Added a mechanism for the effect engine to continue being called for processing after receiving the disable\ncommands untils it considers that the framework can stop calling the process function without causing\na glitch or loosing some effect tail.\n- Updated test reverb and equalizer to support this new feature\n\nChange-Id: Icb56ae2c84c076d4dbad6cf733b1a62f823febe7\n"
    },
    {
      "commit": "29a84457aed4c45bc900998b5e11c03023264208",
      "tree": "de114a11a9ec702c45a4a1683fa8c0024f49df8d",
      "parents": [
        "a480a6f7f204fa1712e1484a6ba9e6c8772fa110"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 02 17:44:44 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 13 10:58:20 2010 -0700"
      },
      "message": "Initial checkin for software AVC encoder\n\n- Since the software encoder assumes the input is YUV420 planar,\n  color conversion needs to be added when the input color format\n  does not meet the requirement. With this patch, I only added\n  a single color conversion from YUV420 semi planar to YUV420\n  planar. We can add more as we go.\n\nChange-Id: If8640c9e5a4f73d385ae9bb2022e57f7f62b91b9\n"
    },
    {
      "commit": "a480a6f7f204fa1712e1484a6ba9e6c8772fa110",
      "tree": "c6827543787e5f293827bfd8b1ded21ce8756057",
      "parents": [
        "fe02beaa83dab8d9bbf6aa0f2aefa530d4228824",
        "42a050ff9636b79e4b91297cc41028ffd62240d5"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 09 12:30:28 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 09 12:30:28 2010 -0700"
      },
      "message": "Merge \"Fix swap of sessionId and output in audio effect API.\" into gingerbread"
    },
    {
      "commit": "42a050ff9636b79e4b91297cc41028ffd62240d5",
      "tree": "b21b32fc96b50f197579ee43ec8bee95d1c0bcf4",
      "parents": [
        "6c5c25fae5aa68a52c6fa75649dd559a9ca98932"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 09 12:11:49 2010 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 09 12:11:49 2010 -0700"
      },
      "message": "Fix swap of sessionId and output in audio effect API.\n\nChange-Id: Idc93415efef92087507401e50cfb235a6f1f7ed7\n"
    },
    {
      "commit": "fe02beaa83dab8d9bbf6aa0f2aefa530d4228824",
      "tree": "2d80ee0dc6b287f9ea3e70b2bdae2b9836fe1f6c",
      "parents": [
        "b914122eb9cb54bbeae4ec03bfebb194aecdccbd"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 08 20:56:13 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 08 21:37:46 2010 -0700"
      },
      "message": "Enable the support for decoding audio with AAC+ and eAAC+ features\n\nbug - 282684\n\nChange-Id: I73c8377af3cc4edd3ee7cea86dc3b1c369fbd78b\n"
    },
    {
      "commit": "b914122eb9cb54bbeae4ec03bfebb194aecdccbd",
      "tree": "92968131eb8b5cd486338c484f743d67d48ba2c5",
      "parents": [
        "cb28102ad3976339ec445afbcb4130f2991b38d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 08 11:16:11 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 08 21:25:55 2010 -0700"
      },
      "message": "Add runtime dumpsys support for media recorder client\n\nChange-Id: I4c8a81720f3be2db54678a7e84fe12849255046b\n"
    },
    {
      "commit": "cb28102ad3976339ec445afbcb4130f2991b38d7",
      "tree": "61f43d35dbf97dfc8020229e3fc9f7850ed1edcb",
      "parents": [
        "6c5c25fae5aa68a52c6fa75649dd559a9ca98932"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 08 15:32:51 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 08 15:32:51 2010 -0700"
      },
      "message": "Added JAVA classes to control bass boost, equalizer, reverberation and virtualizer Effects.\n\nDefined the following JAVA classes on top of AudioEffect class to facilitate control\noff built-in audio effects with APIs aligned with interfaces defined in OpenSL ES\nspecification:\n- BastBoot.java\n- Equalizer.java\n- PresetReverb.java\n- EnvironmentalReverb.java\n- Virtualizer.java\n\nSplit reverb API header file in two, one for preset reverb and one for environmental reverb.\nSome changes in test reverb to support preset reverb.\n\nChange-Id: Ie0a5ba06002e63dfd6da22cace5568c1e0b76ea1\n"
    },
    {
      "commit": "6c5c25fae5aa68a52c6fa75649dd559a9ca98932",
      "tree": "825ab3a8deb612c3eb8daae783670d1273c64521",
      "parents": [
        "8cafde196d36ab207f35fed89b9c1b9d468abb58",
        "da7581b7b61b84f15e8d671c86fd117c322b009e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 16:23:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 16:23:30 2010 -0700"
      },
      "message": "Merge \"Added Visualizer effect.\" into gingerbread"
    },
    {
      "commit": "8cafde196d36ab207f35fed89b9c1b9d468abb58",
      "tree": "420836666412151172afcc941ff158bf13415f89",
      "parents": [
        "5d2de4da54504836e4b772b3010ac28c19f667f0",
        "145bfe5eb3e08c9689c28f6bf3287a979438b04b"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 07 14:56:33 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 14:56:33 2010 -0700"
      },
      "message": "Merge \"Allow application to set two more encoding paramters: video profile and level\" into gingerbread"
    },
    {
      "commit": "5d2de4da54504836e4b772b3010ac28c19f667f0",
      "tree": "d0b5024ea62969e5b1490f820bfc2faadd9c08ae",
      "parents": [
        "91952e5221d2151e10738d7228575c4afe444f5e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 07 13:35:27 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 07 13:36:29 2010 -0700"
      },
      "message": "Only send the playback complete notification if a) an error occurred on any track or b) all tracks have finished playing. The previous behaviour was to send the notification as soon as the first track finished playing.\n\nChange-Id: Icac8104d14f18b719aa0b8f1ab3215f24003b152\n"
    },
    {
      "commit": "145bfe5eb3e08c9689c28f6bf3287a979438b04b",
      "tree": "ba140d50bbed7d0f8cb76fb3bd7920ecc5c4a6ce",
      "parents": [
        "91952e5221d2151e10738d7228575c4afe444f5e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 01 15:02:14 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jul 07 12:11:53 2010 -0700"
      },
      "message": "Allow application to set two more encoding paramters: video profile and level\n\nChange-Id: I673e681cefe184d5c556c612c54600a24a2143e5\n"
    },
    {
      "commit": "da7581b7b61b84f15e8d671c86fd117c322b009e",
      "tree": "61fb39ca1eaa0a5b8a71d70683f32d238a8e74e7",
      "parents": [
        "215381ea729086b8359b7f59bdc2bd7cf55a0c45"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 02 08:12:41 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 11:00:28 2010 -0700"
      },
      "message": "Added Visualizer effect.\n\nThe visualizer enables application to retrieve part of the currently playing audio for visualization purpose.\nIt is not an audio recording interface and only returns partial and low quality audio content as a waveform or\na frequency representation (FFT).\n\nRemoved temporary hack made in MediaPlayer for animated wall papers based on audio visualization (snoop() method.\n\nThis commit also includes a change in AudioEffect class:\n - the enable()/disable() methods have been replaced bya more standard setEnabled() method.\n - some fixes in javadoc\n\nChange-Id: Id092a1340e9e38dae68646ade7be054e3a36980e\n"
    },
    {
      "commit": "91952e5221d2151e10738d7228575c4afe444f5e",
      "tree": "f1dabba9991df903bd34c4b631bce3ec0977592e",
      "parents": [
        "f0128187491b4d65b9c2620d46f5af807f63d728",
        "11cc270ac5fd522c9e6491a7933516a96da4f62e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 07 09:41:05 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 09:41:05 2010 -0700"
      },
      "message": "Merge \"ALooperRoster no longer holds strong references to handlers and loopers.\" into gingerbread"
    },
    {
      "commit": "11cc270ac5fd522c9e6491a7933516a96da4f62e",
      "tree": "3c914ff40df97e4a64a1635ca2965bd2e0abd4f6",
      "parents": [
        "3ecb233c9c121af3e68ece11705043b1dbef505b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 07 09:17:41 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 07 09:27:31 2010 -0700"
      },
      "message": "ALooperRoster no longer holds strong references to handlers and loopers.\n\nChange-Id: I038d69b0a34eda1bfc5216d92c837a5ddf4fb802\n"
    },
    {
      "commit": "f0128187491b4d65b9c2620d46f5af807f63d728",
      "tree": "6c34c71ba435985300f40e59eccb30980db1fcfd",
      "parents": [
        "3ecb233c9c121af3e68ece11705043b1dbef505b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 07 08:20:49 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 07 08:20:49 2010 -0700"
      },
      "message": "Make sure the OMX callback thread is properly shutdown after the node goes away.\n\nChange-Id: Ib0b25855b0dfc191e5529193b4cb519f644a8412\n"
    },
    {
      "commit": "3ecb233c9c121af3e68ece11705043b1dbef505b",
      "tree": "f55fad6a47e06cf2ac37d89eb463f3613e102138",
      "parents": [
        "34bbea84b8374f5d0ebe72b0be4418ace984fac0",
        "e2b20987c2652a984d10520ef3542d50d91119c5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 07 06:57:27 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 06:57:27 2010 -0700"
      },
      "message": "Merge \"An AHandler can now find its associated ALooper.\" into gingerbread"
    },
    {
      "commit": "e2b20987c2652a984d10520ef3542d50d91119c5",
      "tree": "bb37d8c872710f99d2e358bf4a683f81fb6a2e0e",
      "parents": [
        "cbb56d14dad2785baf7a723b43aa6f1da32dc51f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 02 15:15:44 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 02 15:16:13 2010 -0700"
      },
      "message": "An AHandler can now find its associated ALooper.\n\nChange-Id: Ic7087b8dcbc0d9abda272df0cb01b04b006f82ad\n"
    },
    {
      "commit": "34bbea84b8374f5d0ebe72b0be4418ace984fac0",
      "tree": "3e933eb60e037a7c91e007eea606b1d9ae9b868f",
      "parents": [
        "cbb56d14dad2785baf7a723b43aa6f1da32dc51f",
        "42d7f83904b8a91ce33e87a44de109572679ac1f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 02 10:02:17 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 02 10:02:17 2010 -0700"
      },
      "message": "Merge \"Add an option to ALooper::start that allows it to call back into java or not.\" into gingerbread"
    },
    {
      "commit": "42d7f83904b8a91ce33e87a44de109572679ac1f",
      "tree": "e21c52008ad600d445d0345321a7f32ce87524da",
      "parents": [
        "3eaa4e92dbebb5b27cb89f329f31fac6fb6fe1f0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 02 08:00:52 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 02 08:00:52 2010 -0700"
      },
      "message": "Add an option to ALooper::start that allows it to call back into java or not.\n\nChange-Id: Iec172901a04a575d8d350bd162565f04677c3f26\n"
    },
    {
      "commit": "cbb56d14dad2785baf7a723b43aa6f1da32dc51f",
      "tree": "d31bf86d83e176dde457f01156a85de8fa146ab6",
      "parents": [
        "65e7dee628b79e205460a933f3b87ea6cda09002",
        "bbc2b8289458cfde931b133bad0c9d1026674ee7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 02 08:00:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 02 08:00:30 2010 -0700"
      },
      "message": "Merge \"Added AMessage::debugString() for debugging purposes.\" into gingerbread"
    },
    {
      "commit": "bbc2b8289458cfde931b133bad0c9d1026674ee7",
      "tree": "f5132d9e83837fcf2b4214f2335d0d6be1b31b15",
      "parents": [
        "3eaa4e92dbebb5b27cb89f329f31fac6fb6fe1f0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 01 14:11:31 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 01 16:36:55 2010 -0700"
      },
      "message": "Added AMessage::debugString() for debugging purposes.\n\nChange-Id: Id43ffd2c56d659dc29f37e277f8c7b38f11c1591\n"
    },
    {
      "commit": "65e7dee628b79e205460a933f3b87ea6cda09002",
      "tree": "87edad007178e3b1a3216c52369eecb11d032b0b",
      "parents": [
        "19c9a1e2bb6ead5e1e895aea8be573fe0f8cc7bb",
        "934da11c4cc598d3dd3b53726c362bcdcc0fd37f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 01 14:11:01 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 01 14:11:01 2010 -0700"
      },
      "message": "Merge \"Refactor Stagefright::StartMPEG4Recording()\" into gingerbread"
    },
    {
      "commit": "934da11c4cc598d3dd3b53726c362bcdcc0fd37f",
      "tree": "058428c8625d36f6cacb9259091819c785758d8d",
      "parents": [
        "1c8ed2e906576fd8d7fa03f577bdec518cbe13d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 30 12:41:16 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 01 10:28:38 2010 -0700"
      },
      "message": "Refactor Stagefright::StartMPEG4Recording()\n\n- Also, better error handling\n\nChange-Id: Ic18d08dc6489adf92c6a588efa4baca66429b175\n"
    },
    {
      "commit": "19c9a1e2bb6ead5e1e895aea8be573fe0f8cc7bb",
      "tree": "ae116a41e703a6e2536ecedfdd2f74196e597cf5",
      "parents": [
        "3eaa4e92dbebb5b27cb89f329f31fac6fb6fe1f0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 01 08:19:52 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 01 09:08:38 2010 -0700"
      },
      "message": "Support for writing the extracted data to an .mp4 file in the stagefright commandline tool.\n\nChange-Id: I972324a8fc9757e6e8116b0270ec0882106f8733\n"
    },
    {
      "commit": "3eaa4e92dbebb5b27cb89f329f31fac6fb6fe1f0",
      "tree": "add045741d098b9832bda550cfd9474a758b3db5",
      "parents": [
        "1c8ed2e906576fd8d7fa03f577bdec518cbe13d7"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Jun 22 20:50:55 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jul 01 10:57:15 2010 +0800"
      },
      "message": "Add multiple camera support for in MediaProfiles.\n\nChange-Id: Ie89568a0f5f5fd08ede77e33f9a559215d6bed9a\n"
    },
    {
      "commit": "1c8ed2e906576fd8d7fa03f577bdec518cbe13d7",
      "tree": "ee70e9d3c97ec661f3882cc3394c5377dfa96eaa",
      "parents": [
        "d329e21495eda9dbc531fdd0c26c77f1593ac3f4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 30 10:32:20 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 30 10:32:39 2010 -0700"
      },
      "message": "Support for vanilla YUV420sp \u003d\u003e RGB565 color conversion.\n\nChange-Id: I22e5b554909e169eaf153d1f25b636f6f04a1871\n"
    },
    {
      "commit": "d329e21495eda9dbc531fdd0c26c77f1593ac3f4",
      "tree": "eea2f662a7089684c57020dd5f8313c978172470",
      "parents": [
        "e1e7b764b78f29b93bfe6123483e82381e4ed65d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 29 16:29:19 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 29 16:44:19 2010 -0700"
      },
      "message": "Added encoding parameters set up for H263 video encoder\n\nAlso:\n- Allowed start() call when encoder already starts and stop() call when encoder has not started yet\n- Handled default value for audio/video sources/encoders and file output format\n\nChange-Id: I03b2f7d3cf570baa0fd011a8c0ad200f2f2a5da1\n"
    },
    {
      "commit": "ae1f0036bd9cc52353fb3a8ad4556792e1e8047a",
      "tree": "dcacad7f969a5eb41b4db74721d3c2c4700f38ca",
      "parents": [
        "215381ea729086b8359b7f59bdc2bd7cf55a0c45"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 29 09:14:00 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 29 11:38:41 2010 -0700"
      },
      "message": "Add qcom\u0027s new OMX components to the list.\n\nChange-Id: Ic8d261aaa5b15c1be7e6d57aee6be51cecb10bb1\n"
    },
    {
      "commit": "215381ea729086b8359b7f59bdc2bd7cf55a0c45",
      "tree": "0446bc1bc302128ef829c4fb019ff33552650319",
      "parents": [
        "37047fceba836f341d0108beed0991b0f8dfc543"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Jun 26 08:24:47 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 28 17:09:51 2010 -0700"
      },
      "message": "Collect statistical data from authoring engine (second part)\n\n- added sample duration to the statistcal log messages.\n- fixed the bug on miscalcuting the average frame rate.\n\n- also fixed an issue where both frame and time progress status notifications\n  are sent out even though only one of them is explicitly requsted.\n\nChange-Id: Ib86f15a85fad3dbeabde120c3c782b79c16da46c\n"
    },
    {
      "commit": "37047fceba836f341d0108beed0991b0f8dfc543",
      "tree": "6b60725c1d6af1ca91a46961bbecff9b996d07c2",
      "parents": [
        "93d6b102a13afa23bfa80d74c399d93d542e6ad6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 25 17:06:47 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 28 15:32:26 2010 -0700"
      },
      "message": "Separate MediaRecorderClient with MediaPlayerClient\n\n- An alternative would be to define a common base class that\n  both MediaRecorderClient and MediaPlayerClient can derive.\n  But since the common code, onTransact() and notify() uses\n  some Binder code, having a common base class may not gain\n  us too much in terms of code reuse.\n\nChange-Id: Ibc06720278ad173fceacff3d267b7060856c6316\n"
    },
    {
      "commit": "93d6b102a13afa23bfa80d74c399d93d542e6ad6",
      "tree": "a91ad03d514d09014e3b771a91d76e85564bf1e5",
      "parents": [
        "658bd258af206ebc662301979482ba4bfd88481a"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 24 19:04:27 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 25 16:20:42 2010 -0700"
      },
      "message": "Provide progress status report during authoring\n\n- Track either the number of A/V frames authored, or the time elapsed\n- Track the completion of the authoring\n- Add multiple camera support for authoring by accepting a camera id parameter\n- Set file type based on the OUTPUT_FORMAT requested\n\nChange-Id: I0f9d31b3b7a8fa43eb53f572410fb0ebd4fa0bb7\n"
    },
    {
      "commit": "658bd258af206ebc662301979482ba4bfd88481a",
      "tree": "901c00b5d6d8b28b2c40fcb550f185f720abdc12",
      "parents": [
        "1f80fe4a1fb18dbf797720b5c3b4c1b437406faf",
        "ffe9c25ce85e1af55d58ec025adc6367d70db7e8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 25 12:35:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 25 12:35:30 2010 -0700"
      },
      "message": "Merge \"Various fixes and improvements in audio effects implementation\" into gingerbread"
    },
    {
      "commit": "ffe9c25ce85e1af55d58ec025adc6367d70db7e8",
      "tree": "664f0a33a690b4d020417a9ecc81b32f696d0f0e",
      "parents": [
        "2439a8d6d99864ba0c2d94f428e6c9ee258cdd45"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 23 17:38:20 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 25 11:59:35 2010 -0700"
      },
      "message": "Various fixes and improvements in audio effects implementation\n\nEffect API:\n- Use different definitions for audio device, channels, formats... in AudioSystem and EffectApi:\n  Removed media/AudioCommon.h file created for initial version of EffectApi\n- Indicate audio session and output ID to effect library when calling EffectCreate(). Session ID can be useful to optimize\nthe implementation of effect chains in the same audio session. Output ID can be used for effects implemented in audio hardware.\n- Renamed EffectQueryNext() function to EffectQueryEffect() and changed operating mode:\n  now an index is passed for the queried effect instead of implicitly querying the next one.\n- Added CPU load and memory usage indication in effects descriptor\n- Added flags and commands to indicate changes in audio mode (ring tone, in call...) to effect engine\n- Added flag to indicate hardware accelerated effect implementation.\n- Renamed EffectFactoryApi.h to EffectsFactoryApi.h for consistency with EffectsFactory.c/h\n\nEffect libraries:\n- Reflected changes in Effect API\n- Several fixes in reverb implementation\n- Added build option TEST_EFFECT_LIBRARIES in makefile to prepare integration of actual effect library.\n- Replaced pointer by integer identifier for library handle returned by effects factory\n\nAudio effect framework:\n- Added support for audio session -1 in preparation of output stage effects configuration.\n- Reflected changes in Effect API\n- Removed volume ramp up/down when effect is inserted/removed: this has to be taken care of by effect engines.\n- Added some overflow verification on indexes used for deferred parameter updates via shared memory\n- Added hardcoded CPU and memory limit check when creating a new effect instance\n\nChange-Id: I43fee5182ee201384ea3479af6d0acb95092901d\n"
    },
    {
      "commit": "1f80fe4a1fb18dbf797720b5c3b4c1b437406faf",
      "tree": "b60a75274a62b8a6ebe41cd5c6f19d1c477a7082",
      "parents": [
        "2dec2b5be2056c6d9428897dc672185872d30d17",
        "9235bc896538e906e162aa5f9e11f8af04c29664"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 25 11:03:42 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 25 11:03:42 2010 -0700"
      },
      "message": "Merge \"Finetune some of the prefetcher parameters to a) buffer as much as froyo did b) ensure that keepalives actually trigger a network read instead of just draining internal buffers\" into gingerbread"
    },
    {
      "commit": "9235bc896538e906e162aa5f9e11f8af04c29664",
      "tree": "4594550d3d65752af1c650054c735c8ecfdbda70",
      "parents": [
        "a5522c94a437d9449fba9d8167409f5e357075b6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 25 10:44:24 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 25 10:44:24 2010 -0700"
      },
      "message": "Finetune some of the prefetcher parameters to a) buffer as much as froyo did b) ensure that keepalives actually trigger a network read instead of just draining internal buffers\n\nChange-Id: Iaedfb5645e3052a63789244c90900573f8449bac\n"
    },
    {
      "commit": "2dec2b5be2056c6d9428897dc672185872d30d17",
      "tree": "8ec375d6e5ec4c10c90552d0f6e02462cb598b64",
      "parents": [
        "d4b91aac78e565a135f8ef1bfda7e6317debaf35"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jun 20 08:20:54 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 25 10:24:35 2010 -0700"
      },
      "message": "Enable passing parameters to the MediaWriter at runtime (at start() call).\n\n- estimate the moov box size for mp4 file writer based on the file\n  size/duration limit and target bit rate.\n- can switch to use 64 bit file offset at runtime\n\nrebased\n\nChange-Id: Ibbe1f57e91ab2605820d5d96e8048d11e5559c53\n"
    },
    {
      "commit": "d4b91aac78e565a135f8ef1bfda7e6317debaf35",
      "tree": "1e5d982ee1114143fb8aa240e189ee8df48d6c7e",
      "parents": [
        "a5522c94a437d9449fba9d8167409f5e357075b6",
        "d3d4e5069e1af0437c4f5a7b4ba344bda5b937af"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 25 09:43:14 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 25 09:43:14 2010 -0700"
      },
      "message": "Merge \"Track maximum amplitude and fix getMaxAmplitude()\" into gingerbread"
    },
    {
      "commit": "d3d4e5069e1af0437c4f5a7b4ba344bda5b937af",
      "tree": "596bf02fa9495c743c1069ecb99b5f134afac850",
      "parents": [
        "47c778f4a5fa639b2082fcc74080d33ac847b232"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 24 19:55:31 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 24 21:59:25 2010 -0700"
      },
      "message": "Track maximum amplitude and fix getMaxAmplitude()\n\n- only start to track the max amplitude after the first call to getMaxAmplitude()\n\nChange-Id: I64d3d9ca0542202a8535a211425e8bccceca50fc\n"
    },
    {
      "commit": "a5522c94a437d9449fba9d8167409f5e357075b6",
      "tree": "85db6407328f61c51e404ef92c5f03b4274eb94e",
      "parents": [
        "47c778f4a5fa639b2082fcc74080d33ac847b232",
        "71b1a4e975dfb65660a0119b9d6bf6db77eca09e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 24 13:14:37 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 24 13:14:38 2010 -0700"
      },
      "message": "Merge \"Properly identify malformed (too short) chunks in mpeg4 files.\" into gingerbread"
    },
    {
      "commit": "71b1a4e975dfb65660a0119b9d6bf6db77eca09e",
      "tree": "acf6471ccd55b33d4ee1625503cf296e80b8db4b",
      "parents": [
        "7bf4fab9e5590d345b93b559f35b2fb0f6b17ca8"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 24 12:16:25 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 24 12:16:25 2010 -0700"
      },
      "message": "Properly identify malformed (too short) chunks in mpeg4 files.\n\nChange-Id: Id2efb1bba195c4ad6f132cd706cc813135ead8a4\n"
    },
    {
      "commit": "47c778f4a5fa639b2082fcc74080d33ac847b232",
      "tree": "72a2ee92c220db7c0d3b52dbf4ce990c68debd63",
      "parents": [
        "7bf4fab9e5590d345b93b559f35b2fb0f6b17ca8",
        "065d1aff96818df54456053f1574aec8a234d0de"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 24 09:46:48 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 24 09:46:48 2010 -0700"
      },
      "message": "Merge \"Fixed the software AAC encoder\" into gingerbread"
    },
    {
      "commit": "7bf4fab9e5590d345b93b559f35b2fb0f6b17ca8",
      "tree": "85f02ad188f4de9109bf461c03c071f44853d35d",
      "parents": [
        "2439a8d6d99864ba0c2d94f428e6c9ee258cdd45",
        "608d77b1cf4fb9f63dc861e4e1fa3e80a732f626"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 24 09:05:08 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 24 09:05:08 2010 -0700"
      },
      "message": "Merge \"Remove most stagefright property overrides, remove VorbisPlayer and VorbisMetadataRetriever as this functionality is now provided by stagefright.\" into gingerbread"
    },
    {
      "commit": "065d1aff96818df54456053f1574aec8a234d0de",
      "tree": "25a56b897088dc0d984eddc5ecbd9df9a385f2be",
      "parents": [
        "2439a8d6d99864ba0c2d94f428e6c9ee258cdd45"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 23 16:51:39 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 23 17:12:11 2010 -0700"
      },
      "message": "Fixed the software AAC encoder\n\nMake sure that each input frame contains at least 1024 samples, as\nrequired by the AAC encoder, and fix the incorrect timestamp.\n\nChange-Id: I344cafe8c89be51d6e64552fab70539990ff6049\n"
    },
    {
      "commit": "608d77b1cf4fb9f63dc861e4e1fa3e80a732f626",
      "tree": "924276911b6c7b1cc35951709030559111aabe2c",
      "parents": [
        "d255a4e04d06796441ae234e8f3a8277578b3446"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 16:40:57 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 16:40:57 2010 -0700"
      },
      "message": "Remove most stagefright property overrides, remove VorbisPlayer and VorbisMetadataRetriever as this functionality is now provided by stagefright.\n\nChange-Id: Ieafe75a4550c273ad59b4518d7cd4c0fce0f7cce\nrelated-to-bug: 2370115\n"
    },
    {
      "commit": "2439a8d6d99864ba0c2d94f428e6c9ee258cdd45",
      "tree": "21a620b5f942e5162ad0624ec0c155b2b71c3f2f",
      "parents": [
        "d255a4e04d06796441ae234e8f3a8277578b3446",
        "1acfe8649f8169caf2ff098c2dc2de880d9a3760"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 23 15:13:55 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 23 15:13:55 2010 -0700"
      },
      "message": "Merge \"Fixed some meta data issues in the recorded mp4 file\" into gingerbread"
    },
    {
      "commit": "1acfe8649f8169caf2ff098c2dc2de880d9a3760",
      "tree": "bed86c364188e3cedfb45228c13605784b4f934f",
      "parents": [
        "dadd0d1e7d5fbb88fd3420438c590a0bb4c18af5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 23 00:18:40 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 23 14:09:18 2010 -0700"
      },
      "message": "Fixed some meta data issues in the recorded mp4 file\n\n- Mainly correcting the location of stbl box which should be a child of minf box.\n  This resolved the issue where the mis-muxed encoded file could not be played by QT/VLC.\n\n- Enabled the the recorded tracks by setting the flags to 0x07 by default\n\n- Allows for encoding either 32-bit or 64-bit offsets. By default encoding\n  32-bit offsets to reduce the metadata overhead\n\n- Fixed a edts box issue where an empty elst box was used at the end\n\nChange-Id: I570621a26714a81dc9400271aa5d3a07b483172f\n"
    },
    {
      "commit": "d255a4e04d06796441ae234e8f3a8277578b3446",
      "tree": "b27a6c6d1bce50b727ec63602765f8bc7c7b3266",
      "parents": [
        "3e0339f9ec42c2c31deb632254e9cc8a06d3db91",
        "1629399bb578fc176613ccaf134d1be6e3047638"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 13:14:16 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 23 13:14:16 2010 -0700"
      },
      "message": "Merge \"Properly assign LOG_TAGs in OMXMaster.cpp and MediaScanner.cpp\" into gingerbread"
    },
    {
      "commit": "1629399bb578fc176613ccaf134d1be6e3047638",
      "tree": "7542a324f41776cc25f3d9e166ddb73dbb340b37",
      "parents": [
        "dadd0d1e7d5fbb88fd3420438c590a0bb4c18af5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 11:31:17 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 11:33:43 2010 -0700"
      },
      "message": "Properly assign LOG_TAGs in OMXMaster.cpp and MediaScanner.cpp\n\nChange-Id: I863651619f84b2b66e9a926ce1fef8ce6a53a42d\nrelated-to-bug: 2639116\n"
    },
    {
      "commit": "3e0339f9ec42c2c31deb632254e9cc8a06d3db91",
      "tree": "d85036dff22fd4a5a87e1592e405b65dda3b4e9a",
      "parents": [
        "dadd0d1e7d5fbb88fd3420438c590a0bb4c18af5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 11:11:58 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 11:11:58 2010 -0700"
      },
      "message": "Fix a number of timestamp mismatches in the mp3 extractor and decoder that would lead to invalid reporting of the current playback time for mono and/or non-44100 kHz mp3s.\n\nChange-Id: I11abc05b62a958ffbc99ca997cd184a2f2199352\nrelated-to-bug: 2667479\n"
    },
    {
      "commit": "dadd0d1e7d5fbb88fd3420438c590a0bb4c18af5",
      "tree": "44ad049a0b4cc00150f502e296dfb82d257f6913",
      "parents": [
        "41b2d090b23889c56bf0a889a8c9c2fb934015e8",
        "a514bdb58b5de4986679f72b7204b4764f7a2778"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 22 18:29:57 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 22 18:29:57 2010 -0700"
      },
      "message": "Merge \"Added support for audio sessions in MediaPlayer and AudioTrack.\" into gingerbread"
    },
    {
      "commit": "41b2d090b23889c56bf0a889a8c9c2fb934015e8",
      "tree": "43fab4c19b15672a3234801c5c708694ccad0cbf",
      "parents": [
        "58ae9c530247668f8af36e30d228c716c226b3d4",
        "15304d601cbf83be6519ca53e1a26b97d50d0192"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Jun 22 17:20:44 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 22 17:20:44 2010 -0700"
      },
      "message": "Merge \"media: add AudioRecord::getMinFrameCount().\" into gingerbread"
    },
    {
      "commit": "a514bdb58b5de4986679f72b7204b4764f7a2778",
      "tree": "84b1ebf0c2b500bfb4995e373f8fee5b63b6c9fd",
      "parents": [
        "58ae9c530247668f8af36e30d228c716c226b3d4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 21 09:27:30 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 22 17:14:04 2010 -0700"
      },
      "message": "Added support for audio sessions in MediaPlayer and AudioTrack.\n\nAudio sessions are used to associate audio effects to particular instances (or groups) of MediaPlayers or AudioTracks.\n\nChange-Id: Ib94eec43241cfcb416590f435ddce7ab39a07640\n"
    },
    {
      "commit": "15304d601cbf83be6519ca53e1a26b97d50d0192",
      "tree": "41885f15dd2e97b841b10e094e8de84ac190c754",
      "parents": [
        "c7fa90a661dd9f6107af6a1d9e6dcaa1cb9a34e3"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Jun 22 08:01:13 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Jun 23 08:01:04 2010 +0800"
      },
      "message": "media: add AudioRecord::getMinFrameCount().\n\nChange-Id: I952071ab10aa49aa96b727d157b68470d69fff3d\n"
    },
    {
      "commit": "58ae9c530247668f8af36e30d228c716c226b3d4",
      "tree": "797e765affac5a32c0a4a431d22afdfcd194eba1",
      "parents": [
        "40f388ef8bad7a9ab16db8f90904656cd39c793d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 22 11:27:37 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 22 11:27:37 2010 -0700"
      },
      "message": "Single track optimization\n\nWe don\u0027t need to do interleave when the total number of tracks to be recorded is one.\nMetadata-wise, we only need to have one chunk in chunk offset table, and a\nsingle entry in the stsc table.\n\nChange-Id: I46f0e4b3860620311e7a91b68a9067acaa137bb2\n"
    },
    {
      "commit": "40f388ef8bad7a9ab16db8f90904656cd39c793d",
      "tree": "62cdb417938f60d151bf48339e8108a54894aaf0",
      "parents": [
        "5603f749d5903898b5018cf907f194830bf4ff2b",
        "a5273ebd1746368662a597643d6701a5046d5c7b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 22 10:11:15 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 22 10:11:15 2010 -0700"
      },
      "message": "Merge \"Make the prefetcher read packets from the network after a keep-alive timeout expires regardless of whether its currently actively fetching data or not.\" into gingerbread"
    },
    {
      "commit": "0cd1e0bf7a0db4dcc111ee0732cbe2ec6e02b5af",
      "tree": "36f231c03fdb43166d4f5f013b9e68d5253dcb9e",
      "parents": [
        "c7fa90a661dd9f6107af6a1d9e6dcaa1cb9a34e3",
        "f60cafe0e6aad8f9ce54660fa88b651ae4e749e6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 22 10:05:02 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 22 10:05:02 2010 -0700"
      },
      "message": "Merge \"Audio/video sync during recording (second part)\" into gingerbread"
    },
    {
      "commit": "a5273ebd1746368662a597643d6701a5046d5c7b",
      "tree": "02a0ae5c66fd970081552a4f91511344d51d4a60",
      "parents": [
        "c7fa90a661dd9f6107af6a1d9e6dcaa1cb9a34e3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 22 08:57:34 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 22 09:54:58 2010 -0700"
      },
      "message": "Make the prefetcher read packets from the network after a keep-alive timeout expires regardless of whether its currently actively fetching data or not.\n\nChange-Id: I7d022ac494e1cecdd7f656806b7ed45979c02840\n"
    },
    {
      "commit": "f60cafe0e6aad8f9ce54660fa88b651ae4e749e6",
      "tree": "eabfca8c6c979a1000f49efca5c33ab9039245ba",
      "parents": [
        "e6de2667d6bf4bb7b926da6784cc7eb886b93e83"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Jun 19 09:04:18 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 21 17:34:01 2010 -0700"
      },
      "message": "Audio/video sync during recording (second part)\n\nChange-Id: Iba0b35f57fdeac7ee1da16899406bf4b957a2c8c\n"
    },
    {
      "commit": "c7fa90a661dd9f6107af6a1d9e6dcaa1cb9a34e3",
      "tree": "0359dad8d45e584b4b1b505c060bfebdbe10de40",
      "parents": [
        "e6de2667d6bf4bb7b926da6784cc7eb886b93e83",
        "33005a932c60a0780fe9b7307d5988df3d9f6c26"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 21 08:54:19 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 21 08:54:19 2010 -0700"
      },
      "message": "am bd240c27: media: add AudioTrack::getMinFrameCount().\n\nMerge commit \u0027bd240c2737913d6ed1982788699f93bbc52330c0\u0027 into gingerbread\n\n* commit \u0027bd240c2737913d6ed1982788699f93bbc52330c0\u0027:\n  media: add AudioTrack::getMinFrameCount().\n"
    },
    {
      "commit": "33005a932c60a0780fe9b7307d5988df3d9f6c26",
      "tree": "2519156995c4fabaae1dfdaa091e70b973a41547",
      "parents": [
        "1616fa4a567bae928dfd28ebf1ec45cd701f27f1"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Jun 16 06:33:13 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jun 21 09:51:18 2010 +0800"
      },
      "message": "media: add AudioTrack::getMinFrameCount().\n\nChange-Id: If15162583d1d16d89f59be0793106afe77417f35\n"
    },
    {
      "commit": "d26b133beec4df8608db3958045650e661ae8666",
      "tree": "03603c405c698b33d94bab15b7fc5beb8b0e8796",
      "parents": [
        "99c2a076b4a46762a22bbb4dfbd51d107e0532d9",
        "17e8ad9c4b8fbdebec4559702b82114fb6543b67"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu Jun 17 12:37:15 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 17 12:37:15 2010 -0700"
      },
      "message": "am 3242cc27: Merge \"TimedEventQueue is apparently important for glitch-free media playback, and so having it inherit its priority from the thread that created it is a bad idea. Instead, set the priority explicitly, and bump it to slightly higher than normal.\" into fro\n\nMerge commit \u00273242cc2719a4aeb64ac5ed273cf222d8d326d44b\u0027 into gingerbread\n\n* commit \u00273242cc2719a4aeb64ac5ed273cf222d8d326d44b\u0027:\n  TimedEventQueue is apparently important for glitch-free media playback, and so\n"
    },
    {
      "commit": "99c2a076b4a46762a22bbb4dfbd51d107e0532d9",
      "tree": "0d44a7f577f44a060498a060d64402dd9312e48a",
      "parents": [
        "8fb4e091bc62b15bec2c05adcb50429bb76f1b28"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 16 17:27:46 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 17 11:34:10 2010 -0700"
      },
      "message": "Check and clip some video encoding parameters against media profiles before passing them to video encoder\n\nChange-Id: I69e0e7411806a4ece6c0bf0e02c74eaaf48a17ac\n"
    },
    {
      "commit": "8fb4e091bc62b15bec2c05adcb50429bb76f1b28",
      "tree": "921cc62608fa8f494489e8acfef44e769408991d",
      "parents": [
        "78d26445a7dfe8f49d7005185f28b01cffe80adf",
        "be6ec71af2d12e2a55f2f0b1b77d3fa5d593a1c7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 17 11:25:19 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 17 11:25:19 2010 -0700"
      },
      "message": "Merge \"Remove hard-coded number of audio channels in AudioSource\" into gingerbread"
    },
    {
      "commit": "17e8ad9c4b8fbdebec4559702b82114fb6543b67",
      "tree": "51337195126044d8571a3d3b181a0e0a9d96a26c",
      "parents": [
        "ddc43521f9e15b15edc6f7dce0965483f6a0f820"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jun 15 12:34:50 2010 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jun 16 11:09:01 2010 -0700"
      },
      "message": "TimedEventQueue is apparently important for glitch-free media playback, and so\nhaving it inherit its priority from the thread that created it is a bad idea.\nInstead, set the priority explicitly, and bump it to slightly higher than normal.\n\nChange-Id: I01843f24905790ce2e2cde5d11a99346cfbf968d\n"
    },
    {
      "commit": "be6ec71af2d12e2a55f2f0b1b77d3fa5d593a1c7",
      "tree": "f5d5c615025aa44ac5bb825fd4388c446366fc53",
      "parents": [
        "8aa8fe5ea704b05d8f0ab3d7bf18de18151f1b50"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 14 17:45:35 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 14 17:45:35 2010 -0700"
      },
      "message": "Remove hard-coded number of audio channels in AudioSource\n\nChange-Id: I5f362252c25e2251bbfa9818b711ee23b4975248\n"
    },
    {
      "commit": "78d26445a7dfe8f49d7005185f28b01cffe80adf",
      "tree": "58ce3489a9162ef429d42fd553db9676b7b4f68b",
      "parents": [
        "8aa8fe5ea704b05d8f0ab3d7bf18de18151f1b50"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 14 17:28:05 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 14 17:28:05 2010 -0700"
      },
      "message": "This patch enables each omx instance to have a separate message dispatcher, and\nthus eliminates the sharing of the message dispatches between omx instances.\n\nIf the omx audio and video encoders share the same dispatcher, when the audio read\nblocks in the AudioSource, the message dispatcher thread gets blocked. As a result,\nthe message for the omx video encoder can not be dispatched, hence gets blocked too.\nIf the blocking time is long enough, the video frame rate decreases significantly.\nThis is the case when we read 2048 bytes by default each time. Reading smaller blocks\nof audio data helps mitigate the above-mentioned problem, but it is not an ideal\nsolution for two reasons: a) it is not efficient, and thus can cause a lot of overhead\npassing buffers between the frame work and the omx encoders; b) also, the audio record\nthread can overflow as a result, which lead to the loss of recorded audio frames.\n\nThis patch affects both authoring engine and the playback engine.\n\nChange-Id: I26dfde7ac46c8752cf1793ce1bfcc7be7724580e\n"
    },
    {
      "commit": "8aa8fe5ea704b05d8f0ab3d7bf18de18151f1b50",
      "tree": "9fdffeb2469926b81be2ae8a7c5c32ee6bdf3070",
      "parents": [
        "582c2c3ddabbb3950d19c7ba1124c69856f7eac3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 14 11:14:38 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 14 11:14:38 2010 -0700"
      },
      "message": "Fixed a typo - maybe we should do comparison ignoring the case?\n\nChange-Id: I498f8242e6ba3e3e8b8c7b714ed49bff51a3010b\n"
    },
    {
      "commit": "582c2c3ddabbb3950d19c7ba1124c69856f7eac3",
      "tree": "a77c602d3fcde96c506852b625424dd7be6282bd",
      "parents": [
        "0450c5ebb6125a1a58c4588af9ad3611bd65b1d1",
        "1616fa4a567bae928dfd28ebf1ec45cd701f27f1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 14 09:04:33 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 14 09:04:33 2010 -0700"
      },
      "message": "am 01f7ac64: Merge \"Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.\" into kraken\n\nMerge commit \u002701f7ac64488027492b2909b99d70491e7a391015\u0027 into gingerbread\n\n* commit \u002701f7ac64488027492b2909b99d70491e7a391015\u0027:\n  Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.\n"
    },
    {
      "commit": "1616fa4a567bae928dfd28ebf1ec45cd701f27f1",
      "tree": "282b72dc29d1d944f0691aae47e39abfc179c579",
      "parents": [
        "628eff9967c4efd04204656d9756df9e32cf523c",
        "801a1186eb1d2ce195b15222701865932e08f3dc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 14 09:02:13 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 14 09:02:13 2010 -0700"
      },
      "message": "Merge \"Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.\" into kraken"
    },
    {
      "commit": "a1ad27130107b4377cc94b310a1e6c51d4b17cde",
      "tree": "9d69419eb1df53b9aca2ab5f021045c48fad6b0d",
      "parents": [
        "623a0de03d72c17b4cf0701280c6cb1df365ea6c",
        "d17875a226491e3de60fa32d764a4cc92de7f949"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 11 15:58:19 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 11 15:58:19 2010 -0700"
      },
      "message": "Merge \"Must hold lock here...\" into gingerbread"
    },
    {
      "commit": "623a0de03d72c17b4cf0701280c6cb1df365ea6c",
      "tree": "c05372325dfb2085a6ec4d400c22a7fc335f07e7",
      "parents": [
        "b55cf746536962d262c3b627e32a37464927b67b",
        "a7d1a2dd776bf356c228785a94ba8e0ff6a2ec7f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 11 14:28:55 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 11 14:28:55 2010 -0700"
      },
      "message": "Merge \"Initial checkin for pause and resume control\" into kraken"
    },
    {
      "commit": "d17875a226491e3de60fa32d764a4cc92de7f949",
      "tree": "7f736ca99f509a532a9978e8a12a667c6ac5b70a",
      "parents": [
        "b55cf746536962d262c3b627e32a37464927b67b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 11 14:14:52 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 11 14:16:12 2010 -0700"
      },
      "message": "Must hold lock here...\n\nChange-Id: I179a5582c9246f78c988f85e2f969f32d547ac89\n"
    },
    {
      "commit": "a7d1a2dd776bf356c228785a94ba8e0ff6a2ec7f",
      "tree": "5c1bfd25a405fcf485512ffb3ced827b3d2ab630",
      "parents": [
        "6f5aae1bcba130d5b8092a19fca3627aa565df56"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 10 12:28:15 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 11 13:48:48 2010 -0700"
      },
      "message": "Initial checkin for pause and resume control\n\nChange-Id: Ibdcf7bea5fb66baa81878704ba4091dfcfe382ee\n"
    },
    {
      "commit": "b55cf746536962d262c3b627e32a37464927b67b",
      "tree": "111b0b5147ecf828950b315af8629f25a90283be",
      "parents": [
        "6f5aae1bcba130d5b8092a19fca3627aa565df56",
        "79f77ef3b0a37660ba8c5bcb2dfbfda3860f2135"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 11 10:52:00 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 11 10:52:00 2010 -0700"
      },
      "message": "Merge \"Restore feature parity with the old HTTPDataSource as far as support for extra headers (cookies?) and socket-timeout are concerned.\" into kraken"
    },
    {
      "commit": "79f77ef3b0a37660ba8c5bcb2dfbfda3860f2135",
      "tree": "e2d17fb7436eb7d35aed556296f3647e66fae3f4",
      "parents": [
        "ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 11 09:57:46 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 11 09:57:46 2010 -0700"
      },
      "message": "Restore feature parity with the old HTTPDataSource as far as support for extra headers (cookies?) and socket-timeout are concerned.\n\nChange-Id: I506dc501faec60e974bf4968d8ba661df7a49aa8\n"
    },
    {
      "commit": "6f5aae1bcba130d5b8092a19fca3627aa565df56",
      "tree": "9c374a2bfe07516f509271a33e5efb9269547f8d",
      "parents": [
        "ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 11 09:22:48 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 11 09:22:48 2010 -0700"
      },
      "message": "Fix a typo in NuCachedSource2 that would trigger an assert near the end of a stream.\n\nChange-Id: I963ad7074b830d553b67c8925efd5369d0b7a5b9\n"
    },
    {
      "commit": "801a1186eb1d2ce195b15222701865932e08f3dc",
      "tree": "1a08ae38cebaddbe6992807f124e6d44c47aeea2",
      "parents": [
        "e71d10e7ad55ccbcb0756c007caef1c959090384"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 09 00:17:29 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 11 06:26:31 2010 -0700"
      },
      "message": "Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.\n\nAdded AudioEffect C++ class. AudioEffect is the base class for effect specific implementations,\nOpenSL ES effect interfaces and audio effect JNI.\n\nAdded the AudioEffect JNI and AudioEffect JAVA class. AudioEffect is the base class\nto implement more specific JAVA classes to control audio effects from JAVA applications.\n\nChange-Id: If300a1b708f2e6605891261e67bfb4f8330a4624\n"
    }
  ],
  "next": "0a5baa9b411fe086013d2a5e9126ed63fbad046c"
}
