)]}'
{
  "log": [
    {
      "commit": "53334cdb81bab4a4dfd0a41d2ef50709015a36c8",
      "tree": "1dfd6bd330fac24a95168349f8d96af0f058fc7f",
      "parents": [
        "0379118827ef7e81a70e88e5910f5c7536d8b945"
      ],
      "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": "39a0b21c65c3bbadc9a3c6b5346b45fac842d0f7",
      "tree": "10f2028a5443198543244d7e43a355c6b6333d08",
      "parents": [
        "73ccafb5b843cdcf9c8f761fc72a69b4b7942aaf"
      ],
      "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": "2c2ce8e53f5eb94916a5d0f40b2877cc7551870d",
      "tree": "9d44c319e02850d9cd51e9a8c94f043625cb7343",
      "parents": [
        "3238302b1819bb384b79402c0106a2bdfc3f35d0",
        "619346f902241736d933657a4fe10f10c50a1ba8"
      ],
      "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": "3238302b1819bb384b79402c0106a2bdfc3f35d0",
      "tree": "e7df1b81e1117b7083fa6561a052aa6de144d3c6",
      "parents": [
        "d1559d6b2db1d7e1718a15dc43a82450de2934db",
        "97d61f751899d3d68f53fb14d0025766bf1be3f7"
      ],
      "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": "619346f902241736d933657a4fe10f10c50a1ba8",
      "tree": "f80b46008c2d457def70dfab095a18d6eb61fc09",
      "parents": [
        "d1559d6b2db1d7e1718a15dc43a82450de2934db"
      ],
      "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": "97d61f751899d3d68f53fb14d0025766bf1be3f7",
      "tree": "d51681169ac25ab1014a96396f56c5d1ba7d16f9",
      "parents": [
        "ef8f96a717554a85aa63a60f8c61be2afbd12a5c"
      ],
      "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": "b54a91784291bf14b1f486f7d4349774073593c5",
      "tree": "b4d586ddb802ab495b884811c5bf13cdf7ee7639",
      "parents": [
        "ef1c48d6a976f56bf7f7a41a5b2e8725af988362"
      ],
      "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": "e5671bfe51aeaac823cd94f8e04f01e37b4c2cd6",
      "tree": "2226b45691ea1b1e74965a106a07e9f509e35f7f",
      "parents": [
        "613dde4aa651e11dac3db859723cc6faf8fc0a82",
        "36e573bf7db5888f92c52eda26e0771aaa2406e4"
      ],
      "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": "36e573bf7db5888f92c52eda26e0771aaa2406e4",
      "tree": "bb100aa50b9fb34e74898c6b7e41b96cfc57d3e2",
      "parents": [
        "04b243d0f5470cfaf67cce5534f9a9fb2e30855c"
      ],
      "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": "bd240c2737913d6ed1982788699f93bbc52330c0",
      "tree": "8d1a1ddc7dd49b8d6671b7e16da158c330d8997b",
      "parents": [
        "01f7ac64488027492b2909b99d70491e7a391015"
      ],
      "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": "01f7ac64488027492b2909b99d70491e7a391015",
      "tree": "109dc569fe04f88f7ae8525708095cf3f332c37b",
      "parents": [
        "724c52244423feced2677fbd1f905e0b8b0639f2",
        "948235c06ed0d49190b2f49d9299b473c4dd61a9"
      ],
      "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": "08c7473ce9b601e170fd79c530f106bf74277a0f",
      "tree": "927414b38c952d56b90dee681efd48060747add1",
      "parents": [
        "e577e87a2d80890190f14edc4a5caf70d7c566bf"
      ],
      "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": "948235c06ed0d49190b2f49d9299b473c4dd61a9",
      "tree": "90cdddff4282d9bbf2fc7a4b0ce1cafed058daa8",
      "parents": [
        "700a95068e7c774963be318c91df5bf40d765397"
      ],
      "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"
    },
    {
      "commit": "4d61f602bf67fe61256c23f090d6119992ad5160",
      "tree": "18eaea2ed99dea39f19ea3fe9836be3fc4503ba3",
      "parents": [
        "a6ef19a8f462ee1346a6c5ec21d047fdd5162b7e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:17:50 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 15:16:57 2010 -0700"
      },
      "message": "Switch stagefright\u0027s approach to prefetching to the new model. The java MediaPlayer is now notified about rebuffering start/end via info messages.\n\nChange-Id: If8185ba329ce8b6663b1ad39a4efb0ad3be81df2\n"
    },
    {
      "commit": "c81d2c12de7e5c7097f5332f8ece295b9a699e28",
      "tree": "762a1657950caba1cd7bc3b0edf935e09224b19f",
      "parents": [
        "438d0595121a7a2cdf19741e76e3c0e21a5c173d",
        "b206319122c73c487ad2798b8090c9edcd41f4e5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 15:15:29 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 10 15:15:29 2010 -0700"
      },
      "message": "Merge \"Initial check-in of new caching/prefetching data source implementation.\" into kraken"
    },
    {
      "commit": "1f24b30fe4b5d8e4050d30c92cf81cfa599cf991",
      "tree": "036faa2a163e78a7ea8f609e7f41c5f152b9ad75",
      "parents": [
        "66b89a62aa6d5599ad4d11d891b5028587d4c6be"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:12:39 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:24:49 2010 -0700"
      },
      "message": "Support \"pausing\" of MediaSources with the effect that they no longer pull on their upstream source until a subsequent read-with-seek.\n\nChange-Id: Ie4153a10ab36c1135f5fcfb572958129d886bcc3\n"
    },
    {
      "commit": "b206319122c73c487ad2798b8090c9edcd41f4e5",
      "tree": "7e082d2614a22a33512148ec17ef05feef52f582",
      "parents": [
        "66b89a62aa6d5599ad4d11d891b5028587d4c6be"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:09:36 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:23:56 2010 -0700"
      },
      "message": "Initial check-in of new caching/prefetching data source implementation.\n\nChange-Id: I97a6e3f03c69c9b1219f1f06bd109c0102f2c504\n"
    },
    {
      "commit": "1244eab2cea41df1db4eeb930fddbb9e67ff7691",
      "tree": "931554aa3de80d1bbf85113303be1827c5e5bbe8",
      "parents": [
        "dae9fd31907c62712f7a96bb2a8e288b0cca57c2"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 08 11:58:53 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 08 12:30:58 2010 -0700"
      },
      "message": "Remove some hard-coded encoding parameters\n\nChange-Id: I7a8ccd5d57891a6a585c8da2ee53acb094955913\n"
    },
    {
      "commit": "dae9fd31907c62712f7a96bb2a8e288b0cca57c2",
      "tree": "11a43e820abb66a26beace440e94dc7df6f54529",
      "parents": [
        "31b1975890d0159ab5ee060c94084461f8b74bd8"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 04 13:59:27 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 08 11:54:21 2010 -0700"
      },
      "message": "Initial check-in for collecting stats from authoring engine at runtime\n\nChange-Id: I93a9d8bd260efc5e7fc135b726e3f1307c6df794\n"
    },
    {
      "commit": "4f501f0f2b71b69cadbdb96c71e83a06751e7f0e",
      "tree": "6bec0a78ccd9c1f2fbc6b1537324aef8ffc24121",
      "parents": [
        "526f2ff1a5f648a2ae3c872acc085b2a16a6a34c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 07 14:41:41 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 08 10:01:47 2010 -0700"
      },
      "message": "Second part of speeding up video recording frame rate\n\n1. Avoid copying the input recording frames to the encoder via OMX interface\n   for TI video encoder\n   This is a missing change for part one which help reduces the CPU load.\n\n2. Release output buffers as early as possible. This is a little bit helpful, but not critical.\n\nTODO:\nWe should save the underlying pointers allocated by the OMX component before we replace them\nand restore them before we call OMX_FreeBuffer()!\n\nChange-Id: Ib3a88978f4c3b1153808872eaa7ac4c265a811ff\n"
    },
    {
      "commit": "a557b24ac4dd568d86b08753f7c0361d04f80d46",
      "tree": "1f74017b413d818c3473e559451e9c45cd613acb",
      "parents": [
        "455d41002e17de93b1486b2b2a97a71a0d62903b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 13:05:37 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 13:05:37 2010 -0700"
      },
      "message": "Initial checkin of mpeg2 transport stream parser for stagefright.\n\nChange-Id: I328ce77404daf7127933b48c9d58ed504fb8fc6f\n"
    },
    {
      "commit": "455d41002e17de93b1486b2b2a97a71a0d62903b",
      "tree": "ea51f57aa417fd7b5596355897e84a18352fb386",
      "parents": [
        "b7bb3b3df6cb3743ee43b71455d9525762e55b45",
        "7d2f703649e270b635018f8b7219bb0e1d62a2e5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 12:50:05 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 07 12:50:05 2010 -0700"
      },
      "message": "Merge \"Initial checkin of \"foundation\" library for future stagefright development.\" into kraken"
    },
    {
      "commit": "7d2f703649e270b635018f8b7219bb0e1d62a2e5",
      "tree": "83ad53ba7bc4382f82258eebf5061083796dcd2d",
      "parents": [
        "a8ebe8b3f5aea0d3f09a62d6d255f99c1f911f7b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 10:18:57 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 10:22:07 2010 -0700"
      },
      "message": "Initial checkin of \"foundation\" library for future stagefright development.\n\nChange-Id: I11714dcaa647d0437a13e4c5b953b35e712da8f3\n"
    },
    {
      "commit": "7a68d3686aace4781ee6c25d8ab8704bebee34af",
      "tree": "481ffa2e47ec1ca726e7043219e2f0e60039f81f",
      "parents": [
        "a8ebe8b3f5aea0d3f09a62d6d255f99c1f911f7b",
        "c2f328d0d2821e402823d6e17589da2849b67d0d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 07 10:19:58 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 07 10:19:58 2010 -0700"
      },
      "message": "Merge \"Remove hard-coded pixel format for recording frames in CameraSource. Retrieve the pixel format from Camera HAL at runtime.\" into kraken"
    },
    {
      "commit": "c2f328d0d2821e402823d6e17589da2849b67d0d",
      "tree": "8d2297a4948222dcb06974a171323a966c266046",
      "parents": [
        "ca583f0966f891efda4710074c15795d99b9d9ba"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 03 11:48:31 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 03 11:51:39 2010 -0700"
      },
      "message": "Remove hard-coded pixel format for recording frames in CameraSource.\nRetrieve the pixel format from Camera HAL at runtime.\n\nChange-Id: I63f820f54c59c2019dfd195320b9928da3362536\n"
    },
    {
      "commit": "65b65459e6ac59f8a257009df8014467ae0838ee",
      "tree": "5f9ba01afd1e0ffe85f4b700c1a16f9b998c807d",
      "parents": [
        "501b2b400a15a43849ff84c5da4e68d23ed726cf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 01 23:49:17 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 03 03:21:53 2010 -0700"
      },
      "message": "Issue 2667801: [Audio Effect Framework] AudioFlinger, AudioMixer AudioTrack modifications.\n\nFirst drop of audio framework modifications for audio effects support.\n\n- AudioTrack/AudioRecord:\nAdded support for auxiliary effects in AudioTrack\nAdded support for audio sessions\nFixed left right channel inversion in setVolume()\n\n- IAudioFlinger:\nAdded interface methods for effect enumeraiton and instantiation\nAdded support for audio sessions.\n\n- IAudioTrack:\nAdded method to attach auxiliary effect.\n\n- AudioFlinger\nCreated new classes to control effect engines in effect library and manage effect connections to tracks or\noutput mix:\n  EffectModule: wrapper object controlling the effect engine implementation in the effect library. There\n\tis one EffectModule per instance of an effect in a given audio session\n  EffectChain: group of effects associated to one audio session. There is one EffectChain per audio session.\n\tEffectChain for session 0 is for output mix effects, other chains are attached to audio tracks\n\twith same session ID. Each chain contains a variable number of EffectModules\n  EffectHandle: implements the IEffect interface. There is one EffectHandle object for each application\n\tcontrolling (or using) an effect module. THe EffectModule maintians a list of EffectHandles.\n\nAdded support for effect modules and effect chains creation in PlaybackThread.\nmodified mixer thread loop to allow track volume control by effect modules and call effect processing.\n\n-AudioMixer\nEach track now specifies its output buffer used by mixer for accumulation\nModified mixer process functions to process tracks by groups of tracks with same buffer\nModified track process functions to support accumulation to auxiliary channel\n\nChange-Id: I26d5f7c9e070a89bdd383e1a659f8b7ca150379c\n"
    },
    {
      "commit": "dfb1dd6a8c0c0b0ecde302fae266d9a37617dfda",
      "tree": "1a7f03afc9b8d074c1e1f19de52f41a6b86baea4",
      "parents": [
        "c0046aab0c4a5fd3ae091040c739652a0a4c029e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 27 16:05:58 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 28 10:44:20 2010 -0700"
      },
      "message": "Avoid copying for input recording frames in CameraSource\n\nThis is the part one.\n\n- Let CameraSource be a MediaBufferObserver. It releases the recording frame when the ref count of a MediaBuffer containing\n  the recording frame drops to 0.\n\n  This reduces the CPU load from 90+% down to 50-60%.\n\nPart two is related to the avoidance of copying the input video frames to the video encoder.\nHowever, we are not able to use OMX_UseBuffer directly. Still work on the second part.\n\nChange-Id: I906f1d054ae8bdcf82e1617f1fc120152f2eb2eb\n"
    },
    {
      "commit": "1090a29d4e2d81f88f3ab51fbe5cf8d8264148af",
      "tree": "b87e92cf45542d618ca797bb7500ed2244bd13a7",
      "parents": [
        "b8ab347b309c00eaf69e2529bc245ac77bf1808f",
        "aed15e785607b90b4819773650cdb164fa9a7f59"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 26 17:01:16 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 26 17:01:16 2010 -0700"
      },
      "message": "Merge \"Avoid repeatedly allocating and freeing memory in CameraSource\" into kraken"
    },
    {
      "commit": "aed15e785607b90b4819773650cdb164fa9a7f59",
      "tree": "ae5d4a1b36d2dc3298b3b7258ea1c4574f2213e5",
      "parents": [
        "6c537e53cef1b0177a1734e2a5f302d80c0a26f8"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 20 02:44:49 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 26 16:54:18 2010 -0700"
      },
      "message": "Avoid repeatedly allocating and freeing memory in CameraSource\n\nChange-Id: Ia3760820da0559e4e908dedae1f1df05f9a6a242\n"
    },
    {
      "commit": "c0f34386d6ab075aced829996ea357c31abdddac",
      "tree": "6eeb15c1eab9e74704d910c7a1e16d893ef65957",
      "parents": [
        "cf3fa85cdb6881827a379632c905f86fab2edc34"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 21 07:47:50 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 24 23:33:42 2010 -0700"
      },
      "message": "Fix issue 2667797: [Audio Effect Framework] new base class and binder interfaces for effect control.\n\nAdded IEffect and IEffectClient binder interfaces to exchange effect module control\nand status information between application and media server processes.\n\nChange-Id: I10e8e894898e52ed9956a765d0ef7075eb2593af\n"
    },
    {
      "commit": "cf3fa85cdb6881827a379632c905f86fab2edc34",
      "tree": "829a1f6856aea3d12f689f5231289fe517bcf4bb",
      "parents": [
        "d6ddcb7f00a7af95b452233d965b922632f78f21",
        "5fe37c6838de9fbd959ad19ba44aa3d00d1b4e6f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 24 23:23:29 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 24 23:23:29 2010 -0700"
      },
      "message": "Merge \"Fix issue 2667796: [Audio Effect Framework] Effect factory and libraries.\" into kraken"
    },
    {
      "commit": "5fe37c6838de9fbd959ad19ba44aa3d00d1b4e6f",
      "tree": "01048dcbfe66bad87db864c6d14fb17855b9b0ac",
      "parents": [
        "4979601f88154bdeda4cc5277940771ba6597c0f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 21 06:05:13 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 21 07:05:56 2010 -0700"
      },
      "message": "Fix issue 2667796: [Audio Effect Framework] Effect factory and libraries.\n\nFirst effect factory and effect library API implementation.\nAlso added default effect libraries for reverb and equalizer effects.\nThese libraries are for functional test only and are not fine tuned with\nregard to audio quality. They will probably be replaced by other implementations\nbefore the release.\n\nChange-Id: I6868f8612146ae282c64052765c61a52ec789ec8\n"
    },
    {
      "commit": "072f5247ef893e683728263a540bb93daafda376",
      "tree": "d3f993a2bbf68c8fb05c1b8dd27991168dc89f28",
      "parents": [
        "c6a16327328cf04066ce948c3fbad34fdf1fbff4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 20 14:56:53 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 20 14:56:53 2010 -0700"
      },
      "message": "Support for media extraction from .mkv/.mka Matroska files in stagefright.\n\nChange-Id: I4c26579828ad575523ccf58b0b5cb144046c04ca\nrelated-to-bug: 2483739\n"
    },
    {
      "commit": "17299ab50ceb70d904e610e3b2d7fb2361a11e03",
      "tree": "aeaa2df838ca024705b0a1e4c0cb475425ffe117",
      "parents": [
        "4ec730cabb68ee8347c6aa5dc929b09651275aca"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 15:45:22 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 19 07:21:25 2010 -0700"
      },
      "message": "Initial software encoder checkins\n\nChange-Id: I27f387db23594e46384c4eb3a0093ce220bb6b60\n"
    },
    {
      "commit": "eb8f850d0b7e53956e917fd9645f808c1a09bc88",
      "tree": "07b5194b348dcd40b46fbf049066e45320099fdb",
      "parents": [
        "533844d9688f7c9269372f97db17c9bc4d19c04b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 14 03:26:45 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 17 02:23:47 2010 -0700"
      },
      "message": "Fix issue 2553359: Pandora does not work well with Passion deskdock / Cardock.\n\nThe problem is due to a too big difference between the buffer size used at the hardware interface and at the A2DP interface.\nWhen no resampling occurs we don\u0027t notice problems but the timing is very tight. As soon as resampling is activated, the AudioTrack underruns.\nThis is because the AudioTrack buffers are not resized when moving the AudioTrack from hardware to A2DP output.\nThe AudioTrack buffers are calculated based on a hardware output buffer size of 3072 bytes. Which is much less than the A2DP output buffer size (10240).\n\nThe solution consists in creating new tracks with new buffers in AudioFlinger when the A2DP output is opened\ninstead of just transfering active tracks from hardware output mixer thread to the new A2DP output mixer thread.\nTo avoid synchronization issues between mixer threads and client processes, this is done by invalidating tracks\nby setting a flag in their control block and having AudioTrack release the handle on this track (IAudioTrack)\nand create a new IAudioTrack when this flag is detected next time obtainBuffer() or start() is executed.\n\nAudioFlinger modifications:\n- invalidate the tracks when setStreamOutput() is called\n- make sure that notifications of output opening/closing and change of stream type to output mapping are sent synchronously to client process.\nThis is necessary so that AudioSystem has the new stream to output mapping when the AudioTrack detects the invalidate flag in the client process.\nPreviously their were sent when the corresponding thread loop was executed.\n\nAudioTrack modifications:\n- move frame count calculation and verification from set() to createTrack() so that is is updated every time a new IAudioTrack is created.\n- detect track invalidate flag in obtainBuffer() and start() and create a new IAudioTrack.\n\nAudioTrackShared modifications\n- group all flags (out, flowControlFlag, forceReady...) into a single bit filed to save space.\n\nChange-Id: I9ac26b6192230627d35084e1449640caaf7d56ee\n"
    },
    {
      "commit": "68510e60f9671ee08f3cc18bd93400cafb7703bb",
      "tree": "87e2862b5d039f0e6211b891527e50f561b9013f",
      "parents": [
        "9db798d0f07213071a65237e9ece758c9e8c7b99"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 11:48:00 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 11:48:00 2010 -0700"
      },
      "message": "Detect and handle premature termination of a recording session\n\nChange-Id: Ifb83b19f3e68580345b23efed5d5956fb81baeb8\n"
    },
    {
      "commit": "9db798d0f07213071a65237e9ece758c9e8c7b99",
      "tree": "958d31370beae905336906f7171047968dfc7d01",
      "parents": [
        "1824486e044f4f09640fbd7bef74a20e4efb35ae"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 13 11:47:36 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 10:51:12 2010 -0700"
      },
      "message": "Audio/video initial recording time synchronization\n\nChange-Id: Iac58b63d474fe09c1d36ba6ecde91dafbb7fef9a\n"
    },
    {
      "commit": "1824486e044f4f09640fbd7bef74a20e4efb35ae",
      "tree": "88f56b045e6ec380d4353797ab0fa758425fa53f",
      "parents": [
        "21a534d955c8d45c50dafaf05cf2afbb8cf3696c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 11 14:57:02 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 14 10:46:56 2010 -0700"
      },
      "message": "Handle recording file size and/or duration limit\n\nChange-Id: Ib9ed1f3ebd8fef550cc130a7ef11f2905fa9aedc\n"
    },
    {
      "commit": "e292b3bc9c28e47bb8411728ad40efb84d0471e8",
      "tree": "cb51804b07a1e1744a6ecf7a8313f05406303348",
      "parents": [
        "fae47fd008974fb78f38ae4a6d539cd8246d3159"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 13 12:07:32 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 13 12:08:29 2010 -0700"
      },
      "message": "Remove dummy surface in CameraSource\n\nbug - 2680919\n\nChange-Id: Ia0308cf57fd67058b4dd0e042b3ce97f13df475f\n"
    },
    {
      "commit": "11777d6fa27b368eee75c46aeb0da2c609943c9d",
      "tree": "d0295e5bb67c7ed2cdd9204b5a1844d0091f89d6",
      "parents": [
        "b076e6f3e03d146cc7e76e423077a2dfe901c898",
        "b003ad17bffeba7875b9708ffeef2300ef28c916"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 12 07:55:48 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 12 07:55:48 2010 -0700"
      },
      "message": "am b003ad17: am e0dc80f8: Merge \"Support for customizable socket-read timeouts through the HTTP response.\" into froyo\n\nMerge commit \u0027b003ad17bffeba7875b9708ffeef2300ef28c916\u0027 into kraken\n\n* commit \u0027b003ad17bffeba7875b9708ffeef2300ef28c916\u0027:\n  Support for customizable socket-read timeouts through the HTTP response.\n"
    },
    {
      "commit": "e67c1607ccab2702ea745f962b5354be8f45c733",
      "tree": "ff59eaa63cad74113ed83fd2f349cf8e8151be9e",
      "parents": [
        "78624e41da166712aaa5ae47e4d3467337ac810a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 11 11:10:21 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 11 11:10:21 2010 -0700"
      },
      "message": "Support for customizable socket-read timeouts through the HTTP response.\n\nSpecify a response header of \"X-SocketTimeout: 15\" to override the default timeout\nof 5 secs with a timeout of 15 seconds. Specify a negative value to disable the\ntimeout altogether.\n\nChange-Id: I545adf3d8b3f7efe5f8d081a641c6404440a77db\nrelated-to-bug: 2675721\n"
    },
    {
      "commit": "b5e742397d4129e191d65d51da55302b504f3c99",
      "tree": "fbeabeba127c0cbe013b49ddca8c2bbcfd2befa1",
      "parents": [
        "8528fcb1998d8be708a16a854293db95a87732d5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 07 10:26:24 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue May 11 10:36:43 2010 -0700"
      },
      "message": "Output streamable MP4 file during MP4 file recording\n\nWhen the reserved moov box space is not big enough,\nfall back to non-streamable MP4 file.\n\nChange-Id: I93382d037d657a3f3fe2af31e4ea26e1898b4d95\n"
    },
    {
      "commit": "248597ae6493ff68fc52db26b095de620a26924a",
      "tree": "c479e6f6e5b08260328820a64cac761dfded6df8",
      "parents": [
        "4cfc21ecd914ac89a3160e5b19105b768546853f",
        "1707851090e6512a77247b0c260dd673ef687589"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon May 10 09:49:24 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 10 09:49:24 2010 -0700"
      },
      "message": "am 17078510: am d13efb20: Merge \"A new OggExtractor/VorbisDecoder combo to support approximate seeking.\" into froyo\n\nMerge commit \u00271707851090e6512a77247b0c260dd673ef687589\u0027 into kraken\n\n* commit \u00271707851090e6512a77247b0c260dd673ef687589\u0027:\n  A new OggExtractor/VorbisDecoder combo to support approximate seeking.\n"
    },
    {
      "commit": "388379f8b4cabe7bccf280d450a6db2c3149796b",
      "tree": "e874957c4767cce040920f7ed98602b872f7c447",
      "parents": [
        "75370e74629b4938c4472d6001eebf5e305dbc55"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri May 07 10:35:13 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri May 07 12:01:45 2010 -0700"
      },
      "message": "A new OggExtractor/VorbisDecoder combo to support approximate seeking.\n\nChange-Id: Id5d0c1c8b1adc62896bb5ed951f7b5cfda811e95\nrelated-to-bug: 2654400\n"
    },
    {
      "commit": "8a1c0934b0622be6f7c451aa8773567e797ab397",
      "tree": "077ada5f08affa22e3c387dd6cc82d8d054ac869",
      "parents": [
        "799bc84d882e07cb1a3ba4d49c8ed955c583eadc",
        "71bd9fc81e3154b9cad22ca7ff2d9c6ed6fdbe6c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 06 12:43:59 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 06 12:43:59 2010 -0700"
      },
      "message": "am 71bd9fc8: am 100ef9be: Merge \"Disable vorbis seek when streaming from localhost.\" into froyo\n\nMerge commit \u002771bd9fc81e3154b9cad22ca7ff2d9c6ed6fdbe6c\u0027 into kraken\n\n* commit \u002771bd9fc81e3154b9cad22ca7ff2d9c6ed6fdbe6c\u0027:\n  Disable vorbis seek when streaming from localhost.\n"
    },
    {
      "commit": "62f7ffe106a7126ef31b199552c5cfc6599bc3d1",
      "tree": "7bd9fc2fe4a46740aec9862b7ff8f33630e8ab12",
      "parents": [
        "b5fa4dff0c4756ef7868926d4f373645ac0b00a9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 06 10:18:05 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 06 10:31:57 2010 -0700"
      },
      "message": "Disable vorbis seek when streaming from localhost.\n\nChange-Id: Icda523ae1c89e26482f1c1767fe3a8b9222bb30f\nrelated-to-bug: 2654400\n"
    },
    {
      "commit": "3300e9667e3daa374659b4a8b97dd92c4d34e501",
      "tree": "7fb447a7a23b8a992d929a5c30ca3a01cacefe18",
      "parents": [
        "51867f231355b82fd0a8804352403fec102cb0dc"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 21 16:14:15 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 05 11:34:43 2010 -0700"
      },
      "message": "Support audio and video track interleaving in the recorded mp4 file\n\nChange-Id: Ifa27eb23ee265f84fe06773b29b0eb2b0b075b60\n"
    },
    {
      "commit": "ce0bd71735532f53014cc299f684302f357c471a",
      "tree": "740a35865bd0697f3701d28e6d35237875d9a293",
      "parents": [
        "ebad36db56017000ce8b1eb813537d90248e3ad0",
        "8ea45aad100ee25067b2e83703454c71a968ba4f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 14:30:34 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 04 14:30:34 2010 -0700"
      },
      "message": "am 8ea45aad: am e083d0a2: Merge \"Support for Ogg Vorbis decoding in stagefright.\" into froyo\n\nMerge commit \u00278ea45aad100ee25067b2e83703454c71a968ba4f\u0027 into kraken\n\n* commit \u00278ea45aad100ee25067b2e83703454c71a968ba4f\u0027:\n  Support for Ogg Vorbis decoding in stagefright.\n"
    },
    {
      "commit": "eb5eef38198b38d97b573be550657ba64ccba299",
      "tree": "ab37f77be5d5bf436f50789a134e74d6c23fad0e",
      "parents": [
        "3bb5e4d322a6a7cda45e868dbe307c2dc3cf688e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 11:46:42 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 11:58:16 2010 -0700"
      },
      "message": "Support for Ogg Vorbis decoding in stagefright.\n\nSet the magic property media.stagefright.enable-vorbis to true to use the new implementation instead of the standalon vorbis player for file-based playback. HTTP streaming of vorbis content will always go through stagefright.\n\nChange-Id: Ie3843a99fadb22372f89540d0f8d65196e0c2af8\nrelated-to-bug: 2654400\n"
    },
    {
      "commit": "b00e246669a1da84b1dd7e3f014eedc21747562f",
      "tree": "e7c4b1f8785ef9c97f49d24850f4461376e8dc31",
      "parents": [
        "55fb51aa411b574646cc3068ce36e73789b81616"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Apr 26 17:48:26 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 28 11:55:47 2010 -0700"
      },
      "message": "Use timestamp from camera driver for CameraSource\n\nChange-Id: I09ddec69997c43b8f17fdd21304c76cb4c5ab8cf\n"
    },
    {
      "commit": "7853c8988fe30d1a150dcf62887506f36ea75242",
      "tree": "5a8e9d8e028613a0dcbe08647a028a5f4e4a8fa6",
      "parents": [
        "5c7a69c3d6f41f60f4bfc3f7e3123941d382f3a7",
        "248ea4a9f773210a7b7dbd7892e6b865a0f7add3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 12 17:21:33 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 12 17:21:33 2010 -0700"
      },
      "message": "am 248ea4a9: am 5baa5e19: Merge \"Distinguish QCELP audio from mpeg4 audio, ignore QCELP audio tracks since we don\\\u0027t have a decoder for it, ignore potentially malformed metadata for AMR NB and WB tracks.\" into froyo\n\nMerge commit \u0027248ea4a9f773210a7b7dbd7892e6b865a0f7add3\u0027 into kraken\n\n* commit \u0027248ea4a9f773210a7b7dbd7892e6b865a0f7add3\u0027:\n  Distinguish QCELP audio from mpeg4 audio, ignore QCELP audio tracks since we don\u0027t have a decoder for it, ignore potentially malformed metadata for AMR NB and WB tracks.\n"
    },
    {
      "commit": "d0332ad8d212d87fbf909fc780e6378b4d2c20c1",
      "tree": "4c3f46a88f8c749010fdbb40fbfb64e56a103e8c",
      "parents": [
        "6dbf80d086d03d95c5f6331719edd6dd6dac0361"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 12 16:05:57 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 12 16:05:57 2010 -0700"
      },
      "message": "Distinguish QCELP audio from mpeg4 audio, ignore QCELP audio tracks since we don\u0027t have a decoder for it, ignore potentially malformed metadata for AMR NB and WB tracks.\n\nChange-Id: Ic9a9198413431db4ea40bb63b9de91aa8a7183af\nrelated-to-bug: 2587341\n"
    },
    {
      "commit": "e2018ca9ff9234876bb5ba63d2f51b72396c5fca",
      "tree": "368d58b24d856545880ea0281add15ce00b2bce3",
      "parents": [
        "71c27d991ad9f07cc7e28545bf6cd2b133668cd5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 23 14:33:02 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 09 13:49:39 2010 -0700"
      },
      "message": "Remove unnecessary lock from AMRWriter.\n\nChange-Id: Ia02966d936dd8cbb31e92051578a3fa816885710\n"
    },
    {
      "commit": "aba965fdd86dfe4c817f4d272deb24fd1fcc1446",
      "tree": "90fd2e58ae3f6392790a17460b368264083da1b7",
      "parents": [
        "a51250bdc753c02b0cae1dd83750ae6e2c1036c7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 08 09:17:01 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 08 10:09:35 2010 -0700"
      },
      "message": "Refactor connection/redirection code, support redirects on reconnection.\n\nChange-Id: Id2517568000e028b01553c06a4893813a6883168\nrelated-to-bug: 2580785\n"
    },
    {
      "commit": "a51250bdc753c02b0cae1dd83750ae6e2c1036c7",
      "tree": "37766c5d7912f6ad6296ec9ff1f53b363da61f00",
      "parents": [
        "98e26575373461dc16c749d1f756403e46a909d4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 08 07:51:20 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 08 07:51:20 2010 -0700"
      },
      "message": "Increase the size of the pages used in CachingDataSource (total amount of memory used remains the same) to compensate for reduced locality of audio/video data requests. Also fixes a mistaken trailing \"\\r\\n\" in the range header and better error handling on http connection.\n\nChange-Id: Ic9a6ef204362bc9afdc61e081c76bc62e5ef92ad\nrelated-to-bug: 2580785\n"
    },
    {
      "commit": "a4357addf609c4a88867c93db135d531b2c40352",
      "tree": "98c7ac87bf0ce88999a044ffcbfd848690733471",
      "parents": [
        "d9c16c37ea28933973f32cb434f770226266b675"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 02 12:49:54 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 02 12:55:31 2010 -0700"
      },
      "message": "Coalesce multiple encoded AAC frames into a single input buffer on this particular OMX codec to increase throughput significantly.\n\nChange-Id: I90c7db6656a53339c5d454336548c4f00d0d9064\nrelated-to-bug: 2548426\n"
    },
    {
      "commit": "e64d9a236e4704abf53d3b7eea2eb066f23cf402",
      "tree": "b2d8d4d7685d5ffb2532fc79842b90943802edfb",
      "parents": [
        "3fe1708d9d204fa63e8abe6e434378d89e963752"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 31 13:56:29 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Apr 01 00:12:20 2010 -0700"
      },
      "message": "Public API changes for CameraProfile and CamcorderProfile classes\n\n1. CamcorderProfile: “@see” links are broken; Remove m prefix from fields; remove “final”\n2. CamcorderProfile.Quality: use an int rather than an enum\n3. Add API on MediaRecorder to pass in a CamcorderProfile\n4. CameraProfile.getImageEncodingQualityLevels @hide or make it consistent with CamcorderProfile\n5. Remove a convenient method and instead let the (mms) app do that task\n\nbug - 2553862\n\nChange-Id: I759215c7892f772aeddf3651d17038489c6fbc50\n"
    },
    {
      "commit": "878342993276a1a98f35f3ccda24c675ed09b7eb",
      "tree": "43825eb98a236d4891db14a2d592e3839d961f46",
      "parents": [
        "d246ca811575eee9122070648e93b7484f6edd81"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Mar 17 16:38:30 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Mar 17 16:38:30 2010 -0700"
      },
      "message": "While streaming media data, upon a socket-read error, try reconnecting to the server and attempt to re-read for at most 3 times.\n\nChange-Id: I7534905e07a6456d18b26d5d60fa8915f25ae99e\nrelated-to-bug: 2492187\n"
    },
    {
      "commit": "2a09c7e042d6a3ae600b25f606d584368a6e3f3a",
      "tree": "ca27a6e6d07e40655558d3a65044559a579f5bac",
      "parents": [
        "d489240362d24461e22346bc98a49347dfd4311d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 16 11:44:07 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Mar 16 11:44:07 2010 -0700"
      },
      "message": "Properly handle errors during the codec configuration phase, attempt to revert to next available (likely software-) codec if configuration fails.\n\nChange-Id: Id1c699711e30139c9cc29df972254b5ba026e6fb\nrelated-to-bug: 2517098\n"
    },
    {
      "commit": "e3452d3fe1da014a6db9a326df08230e0d5339ec",
      "tree": "1100aa650a815c221bb88c2f75b59d8d4422267d",
      "parents": [
        "34ec95de2f96a5f85d5e4e0f99252b99c0aca14f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 12 15:08:52 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 12 15:08:52 2010 -0800"
      },
      "message": "Fix the media metadata retriever (tests). The native constants must match those published at the java layer.\n\nChange-Id: Ic1efed709e4d93c61913b231a8cd3ef1074f8ca0\n"
    },
    {
      "commit": "edbb4d8f398dfbce7b766d4bd207685dab582847",
      "tree": "97424243885172334a9905a99eb00fce3b90016e",
      "parents": [
        "84eb8d2a7de0a2cec02516b9fb2a61fde536b59c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 12 08:59:22 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 12 09:05:10 2010 -0800"
      },
      "message": "HTTPStream and HTTPDataSource now support cancellation of the connection process, AwesomePlayer takes advantage of this in cases where ::reset() or ::suspend() is called while in the preparation phase to bail out early. Also fixes in issue where the audio codec was not properly stopped if no audio player object ever took ownership.\n\nChange-Id: I6d73defe6d276693853a469db267bb2668d07af5\nrelated-to-bugs: 2475845,2414536\n"
    },
    {
      "commit": "fb1eb6fbc90f130365a978fa883209b25928870a",
      "tree": "bfa92ebc2f055e15371e3582dd7b12678d1d0ab3",
      "parents": [
        "3802141d17631183b6638d8e66630750f75daf38"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Mar 10 16:59:28 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Mar 10 17:12:01 2010 -0800"
      },
      "message": "Reduce buffer sizes related to HTTP media data transfer in order to reduce the probability of a connection timeout/reset due to long periods of time between socket activity.\n\nChange-Id: I799ce1d58d56a31088a89603d8a18d24780f5b57\nrelated-to-bug: 2492187\n"
    },
    {
      "commit": "1ce986767ae5998ece6810c2933d0b274c529744",
      "tree": "6458609eb8489dbe0f656783e4e65bc84290fff2",
      "parents": [
        "f53774bce6f31ac0ae3dd21ab41aa607e548e703"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Mar 10 10:55:35 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Mar 10 10:55:35 2010 -0800"
      },
      "message": "Instead of instantiating StagefrightMetadataRetriever directly, instantiate a MediaMetadataRetriever which will do-the-right-thing(tm) even for .wma/.wmv/.asf files.\n\nChange-Id: Ibda4b5268514934f14a3d49a564902bc670f4384\nrelated-to-bug: 2074137\n"
    },
    {
      "commit": "dc9927d4641066fc966c9c69856167b8410abf90",
      "tree": "da1bb32d3a0276e563aeb5409966e5dbaf0fc6b8",
      "parents": [
        "b3871fad556084932b6d17d07972cd2d8250fb5c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 08 15:46:13 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 08 15:46:13 2010 -0800"
      },
      "message": "The audio track was accidentally not participating in the prefetch since it wasn\u0027t started at the time prepare() was called. Also, properly report the cached duration even near the end when the source has no more data to fetch.\n\nChange-Id: I66a92fec24c9bfb25f1c186f1c877127bae2b4f9\nrelated-to-bug: 2444425\n"
    },
    {
      "commit": "47d0a9264fa5297db6333697ad750e6bc06822aa",
      "tree": "2b688202179ab906b44a413b8b27fd1a0ae9f75a",
      "parents": [
        "04218254ec1129e329cac71479b309cfb8a28d88"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 26 02:47:27 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 02 08:20:13 2010 -0800"
      },
      "message": "Issue 2071329: audio track is shorter than video track for video capture on sholes\n\nAdd API to retrieve number of frames dropped by audio input kernel driver.\n\nSubmitted on behalf of Masaki Sato \u003cmasaki.sato@motorola.com\u003e\n"
    },
    {
      "commit": "b93003649d0d58e6824b54d6e9e1386912c34448",
      "tree": "9a23e503e60dcfa756211dda05461c53109a2d40",
      "parents": [
        "a4b1fe6b2651ab8f77d5a3ce1a607945f6427b02",
        "9b433f0b654d32530b0b48a7a653216ae0bb94d8"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 25 15:11:29 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 25 15:11:29 2010 -0800"
      },
      "message": "Merge \"Image encoding settings java API through xml configuration file\""
    },
    {
      "commit": "9b433f0b654d32530b0b48a7a653216ae0bb94d8",
      "tree": "164555367b9006e2212e0b63f608fc228b711417",
      "parents": [
        "9a56aaf12b462a064e81e02386eca8a1e77fe737"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 23 17:21:44 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 24 18:10:12 2010 -0800"
      },
      "message": "Image encoding settings java API through xml configuration file\n\n- I decided to completely remove jpeg decoding related stuff from this change\n  I think that setting is better off if it is specified by the system properties.\n  We don\u0027t have to include MediaProfiles.h header in skia files\n"
    },
    {
      "commit": "d7d22eba3c1bb7212ccc566fedb16dbee44f51a2",
      "tree": "ddeec07f5ebb6f0f7ab93c498b2836e93029abbb",
      "parents": [
        "80bd6a16379a009fbad697fe1c4ffabe0f2630ff"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 23 13:45:33 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 23 14:06:38 2010 -0800"
      },
      "message": "Propagate errors all the way through the MediaSources and send either MEDIA_PLAYBACK_COMPLETE or MEDIA_ERROR depending on the final reason for running out of buffers to play back.\n\nrelated-to-bug: 2463749\n"
    },
    {
      "commit": "b8de9578dcb672d92b407d7a24c77af13f85c353",
      "tree": "c271c7938f29469eeb4f1e27e444985669488316",
      "parents": [
        "7e31e0c351a3b2bb70ee5507b34f1c72d62b56d7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 22 14:58:45 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 22 14:58:45 2010 -0800"
      },
      "message": "This hardware video decoder lies about its required input buffer sizes allocating 2.7 MB of memory instead of the required 176 KB... Added another quirk.\n\nrelated-to-bug: 2281327\n"
    },
    {
      "commit": "fbb3885024ac9c90f322b6259d7e519c8927e6ff",
      "tree": "47dece4ffda221bd9cf6e13852ac9fb37b78e0f4",
      "parents": [
        "965e37ec88609c36a3c5461ece459a96abb6f7ca"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 12:35:58 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 12:44:10 2010 -0800"
      },
      "message": "New API on java\u0027s MediaPlayer to suspend/resume a session.\n\nrelated-to-bug: 2231576\n"
    },
    {
      "commit": "8b799a323cfc2dfb1c7da18467e21cc4e19504f6",
      "tree": "d16cba446bb9278c51aa1066199fee9861e9071e",
      "parents": [
        "000479f9e325b4e426a67033abd92d47da412725",
        "c5d5ee34d7c1026ca8d5cd8b186e5a73c5230247"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 11 13:43:40 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 11 13:43:40 2010 -0800"
      },
      "message": "Merge \"Add support for \"album artist\" tag.\""
    },
    {
      "commit": "c5d5ee34d7c1026ca8d5cd8b186e5a73c5230247",
      "tree": "f1be351c0dc6609f050f8cd0cdc60bf305ee8d49",
      "parents": [
        "4e208bd8722ad48c342c0128313ef40971234121"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 11 13:31:44 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 11 13:32:04 2010 -0800"
      },
      "message": "Add support for \"album artist\" tag.\n"
    },
    {
      "commit": "000479f9e325b4e426a67033abd92d47da412725",
      "tree": "16b93ea777744aa24ffe7d3a191bb90529ad4ce5",
      "parents": [
        "28a5dc229ed25c771cde25668928edc788073029"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 09 17:46:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 13:16:22 2010 -0800"
      },
      "message": "split libsurfaceflinger_client and libcamera_client out of libui\n"
    },
    {
      "commit": "6ed937ebe99088b5671a645060340a558b02fefb",
      "tree": "12f5b743bfee5433ebdde83ce8fb3c93c205fe49",
      "parents": [
        "5b5f8652dac5416461332c1b23dc3d5ba315b074"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 16:59:18 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 10:20:34 2010 -0800"
      },
      "message": "Implementation of stagefright-enabled MediaPlayerService::decode functionality\n\nrelated-to-bug: 2359268\n"
    },
    {
      "commit": "655306f8a80b3e9fc52daf458ef319a8ed8c564c",
      "tree": "800ca65dd3b7153dccb2cd08f254c44779a97571",
      "parents": [
        "836a1f2cb99600c26a1a928a9e3240b9dec3079b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Feb 08 14:50:19 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Feb 08 14:50:19 2010 -0800"
      },
      "message": "Add support for the TPOS/TPA (disc number) id3 tag.\n"
    },
    {
      "commit": "e7038ace44ed6e6cd27be35b003e6dd0412e936f",
      "tree": "fcd9ac3d90fcb48b165c04c236a90ea9f34ffd43",
      "parents": [
        "5258919fab561508a2154a38b933e975bd2e07cd"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 03 16:50:18 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 04 13:47:36 2010 -0800"
      },
      "message": "Camcorder profile Java API support\n- Use Enum for Quality instead of int\n- Use static values() method from Enum, rather than if-else\n\nbug - 2417312\n"
    },
    {
      "commit": "70d10c0156f5d2d1c639d0ebe62de8ec950d4306",
      "tree": "a30b9816f4aa7185d44cd852e217b2fda2303187",
      "parents": [
        "3c4a1ebc19abba06af565071c243e55ba6eef585"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 03 11:37:29 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 03 13:24:26 2010 -0800"
      },
      "message": "Fix a deadlock caused by the AudioPlayer notifying the observer that the stream had ended at the same time the observer was shutting down the AudioPlayer.\n\nrelated-to-bug: 2414536\n"
    },
    {
      "commit": "b777bf3100ca752d5f2d0533f053dfda397bda84",
      "tree": "10d158a72e04d800767b6339fc5d8a5b9af91a56",
      "parents": [
        "2d65817f17d0bfabac3849892c8a0f959b8dadc1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 02 13:44:09 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 02 13:54:57 2010 -0800"
      },
      "message": "Don\u0027t use a HEAD request to determine redirects, instead do a regular GET (since that\u0027s always supported), also limit the number of redirects to avoid infinite redirects. Finally, properly handle the end of stream.\n\nrelated-to-bug: 2403674\n"
    },
    {
      "commit": "8cc1b2a32c434b237fa95dc9f81261887fdb1cf4",
      "tree": "444636d1da0736a3735357245b095d3d6815fb9a",
      "parents": [
        "8a838531cc6b517887a15c7e0871b248424d7224"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 02 10:38:40 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 02 10:38:40 2010 -0800"
      },
      "message": "Properly advertise the content length of the HTTP stream if available.\n\nrelated-to-bug: 2312941\n"
    },
    {
      "commit": "705300b8429b7ee468e79dd3aa98e904b29f4ceb",
      "tree": "6c41c093cd407bd7f2f7bcb3149c18c5b7d6a4d2",
      "parents": [
        "1b7a47c911d21dbbcfb782380018703534bd8787",
        "c371194e4e0651c328f1870a90bbfd4e217c747b"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Feb 01 22:48:36 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 01 22:48:36 2010 -0800"
      },
      "message": "Merge \"Initial check-in for xml-based encoder capabilities retrieval - Changed the Java API as suggested - Treat /etc/media_profiles.xml as the default xml configurtion file\""
    },
    {
      "commit": "c371194e4e0651c328f1870a90bbfd4e217c747b",
      "tree": "1a5227979a1493f7d33b8647c0caa3a897bcd812",
      "parents": [
        "f5dbf6a62af04af9e88c5552aa7eeffb0a2394a4"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 19 17:45:38 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Feb 01 22:38:37 2010 -0800"
      },
      "message": "Initial check-in for xml-based encoder capabilities retrieval\n- Changed the Java API as suggested\n- Treat /etc/media_profiles.xml as the default xml configurtion file\n"
    },
    {
      "commit": "e331c7b2c4d9449c23e70067edeb0deadb95aa6e",
      "tree": "f85aa0c73879a2086285ee72b03bd8b9cdae5ff8",
      "parents": [
        "3ff37c1d48e2347bb8e20b5b433543064a36f50a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 01 10:51:50 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 01 10:53:20 2010 -0800"
      },
      "message": "The TI MP3 decoder lies about the number of channels it outputs, add a quirk for that.\n"
    },
    {
      "commit": "62eac008504fefd05fa53bc74f7e001bf0a51975",
      "tree": "7cd67184c51c24bc590bab8306ee2ffd4595a26f",
      "parents": [
        "85fb658b4bcca319f022f34a1de78a9463c9df11"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 29 13:24:58 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 29 13:24:58 2010 -0800"
      },
      "message": "Properly forward errors returned by AudioTrack up to the player.\n\nrelated-to-bug: 2300197\n"
    },
    {
      "commit": "433c9acaf7715eec080426af03cf1bf288076fe8",
      "tree": "49b708fb715fc6cbe5befb77e8160a38ff2109f4",
      "parents": [
        "2fd75f35158b8347251d18e8ec48585d6e020777"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 27 16:49:05 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 28 13:04:28 2010 -0800"
      },
      "message": "Support the specification of additional HTTP headers in the creation of a DataSource.\n\nrelated-to-bug: 2393577\n"
    },
    {
      "commit": "256430093679e1d62b54fb0c852126e54d162f6f",
      "tree": "028c49d18e0e77bc69f8967dda61619ee324f7a2",
      "parents": [
        "75d76bcf52587e4bfe00b7377d100510a3489674"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 28 11:19:57 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 28 11:52:43 2010 -0800"
      },
      "message": "API Extension: Support for optionally specifying a map of extra request headers when specifying the uri of media data to be played.\n\nrelated-to-bug: 2393577\n\nOriginal change by Andrei Popescu \u003candreip@google.com\u003e\n"
    },
    {
      "commit": "46ce847a62412b4253efb1430bcb558875bdc275",
      "tree": "24a4d684996183c72ca6f067af631615d0b576a5",
      "parents": [
        "2060b637f793c1ac969aad85ab0b8e27351ab711"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 27 16:02:10 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 27 16:21:41 2010 -0800"
      },
      "message": "Fix http streaming for shoutcast servers that do not support http ranges.\n\nrelated-to-bug: 2295438\n"
    },
    {
      "commit": "0ebff76e95aab7f6827ce1a8c25f1b4ad87a9029",
      "tree": "877df1054ffe46b509da0d7ac1ade93e854e8714",
      "parents": [
        "e6dca5c29b569ec245c665341bd8794abf6a02e9",
        "0986e7907ffc8387b04fb201e285784bcd11b9b7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 27 14:21:20 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 27 14:21:20 2010 -0800"
      },
      "message": "Merge \"Fix issue 2285561: New AudioFlinger and audio driver API needed for A/V sync\""
    },
    {
      "commit": "8258879fe85b8f1e0304f023c2c6465f85bedd26",
      "tree": "5aae4a4c206d05dd4bc571e46a7092c42b09807c",
      "parents": [
        "89e02edf6f92c034942b697be4eccea46930cdfb",
        "b9e63830c69231c53dc23a5e29f5b58a1d9d3668"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 27 09:24:43 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 27 09:24:43 2010 -0800"
      },
      "message": "Merge \"Better support for HTTP streaming media content, fixes to the way HTTPDataSource streams the data, prefetcher implementation.\""
    },
    {
      "commit": "0986e7907ffc8387b04fb201e285784bcd11b9b7",
      "tree": "96733235d1e92e0f329ded11b9b55c0d67a4ca83",
      "parents": [
        "7d3a558b9ebf2256517ec99cd09c066cc7dbc92c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 19 17:37:09 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 26 18:40:39 2010 -0800"
      },
      "message": "Fix issue 2285561: New AudioFlinger and audio driver API needed for A/V sync\n\nAdded getRenderPosition() API to IAudioFlinger to retreive number of audio frames\nwritten by AudioFlinger to audio HAL and by DSP to DAC.\n\nAdded getRenderPosition() API to AudioHardwareInterface to retreive number of audio frames\nwritten by DSP to DAC.\n\nExposed AudioTrack::getPosition() to AudioSink() to make it available to media player.\n\nRemoved excessive log in AudioHardwareGeneric.\n"
    },
    {
      "commit": "b9e63830c69231c53dc23a5e29f5b58a1d9d3668",
      "tree": "af36731b61a292c4ad027159b36d090a6b109fba",
      "parents": [
        "03b58bdf0e97f9e3bd247cb731b69fa87a845eeb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 26 16:20:10 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 26 16:20:10 2010 -0800"
      },
      "message": "Better support for HTTP streaming media content, fixes to the way HTTPDataSource streams the data, prefetcher implementation.\n\nrelated-to-bug: 2295438\n"
    },
    {
      "commit": "996dddff64f90d8469e24107c44bfd618cf0c2dd",
      "tree": "a36bea1e23eef4f6d5af0c6f5ef29dc4a23d22a9",
      "parents": [
        "03b58bdf0e97f9e3bd247cb731b69fa87a845eeb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 25 15:30:31 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 26 09:10:33 2010 -0800"
      },
      "message": "Support for audio recording into AMR NB/WB files as well as audio tracks in MPEG4 files.\n\nrelated-to-bug: 2295449\n"
    },
    {
      "commit": "473bd7767593cdd16669a220cf6f1a7c885e4e85",
      "tree": "d99d8ca9200aa6f2b7bc1e62e559b21cd64869bd",
      "parents": [
        "307da1a46b4c9b711bafe8fbaaa6b98e8868c18e",
        "23f25cda0c73f8eb878844dea32fb0bd419edca2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 25 17:16:05 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 25 17:16:05 2010 -0800"
      },
      "message": "Merge \"Fix issue 2378022: AudioService should direct volume control to STREAM_VOICE_CALL stream when STREAM_VOICE_CALL stream is active.\""
    },
    {
      "commit": "07bf09da4a365282fc35f800b62a83e0fa5533e2",
      "tree": "378e1ba0004146ae514c29c2e0ed60ac1cef6af0",
      "parents": [
        "f1c934f2726a09f11a7126e2a889c97162a2a1e2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 25 14:27:12 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 25 16:17:40 2010 -0800"
      },
      "message": "Initial checkin of AudioSource and AMRWriter, a pair of classes supporting pure-audio recording in stagefright.\n\nrelated-to-bug: 2295449\n"
    },
    {
      "commit": "23f25cda0c73f8eb878844dea32fb0bd419edca2",
      "tree": "c1945d31c382864db8da0b829ccb017d2c31bbd6",
      "parents": [
        "bb04b631b60e0286c02e0fd4dd7ab764a001e0ce"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 25 08:49:09 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 25 14:00:10 2010 -0800"
      },
      "message": "Fix issue 2378022: AudioService should direct volume control to STREAM_VOICE_CALL stream when STREAM_VOICE_CALL stream is active.\n\nModified AudioService.getActiveStreamType() so that STREAM_VOICE_CALL is selected when a track using this stream\ntype is playing.\n\nChanded isMusicActive() for a more generic isStreamActive(stream) method in AudioSystem, IAudioFlinger and AudioFlinger.\n"
    },
    {
      "commit": "52733b83a736b500f72f72733b06258601c966f8",
      "tree": "8fee2dfcbd734b9644e5f12d4e5eb2800c3099e6",
      "parents": [
        "4166ed65e3c59f68f44c8ae1d2d55c8d86da1eb7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 25 10:41:35 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 25 11:24:26 2010 -0800"
      },
      "message": "The qcom OMX video decoders do not allocate output buffer memory at the time OMX_AllocateBuffer is called, wait until we received the first FILL_BUFFER_DONE notification until we rely on the buffer data ptr.\n"
    },
    {
      "commit": "c712b9fe2859435ce142b90ddcb46c5bed33eea8",
      "tree": "945f8e980662cc7bbad93e603d3c038d5d04ede1",
      "parents": [
        "918007b75539f5eabfd173a369c2da628c607ba7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 20 15:05:46 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 20 15:05:46 2010 -0800"
      },
      "message": "Fix no-copy-overhead OMXCodec implementation to actually work.\n"
    },
    {
      "commit": "61fa01d47dc6bab7719f74545ef4264063ab05db",
      "tree": "cc8bb69b054a8a5027ab7b963af95992a349ba89",
      "parents": [
        "243bf50e1e582d280829bc0e16bfb6d43c70c32f",
        "c2c9dd32511b555c637b8cadb8091eaa6088f92b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 20 11:35:02 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 20 11:35:02 2010 -0800"
      },
      "message": "Merge \"Support for \u0027iTunes-style\u0027 metadata in .mp4 and .3gp files.\""
    },
    {
      "commit": "243bf50e1e582d280829bc0e16bfb6d43c70c32f",
      "tree": "0ee121149b0daf1ab7cd5d0b791361e614899be7",
      "parents": [
        "d738a4d3942ebf56a34d37772228014ec5c2fbdd",
        "cef3cd79489fa7897ffbacbc4e435651fb04f10d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 20 10:03:36 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 20 10:03:36 2010 -0800"
      },
      "message": "Merge \"Create base class for audio policy manager.\""
    },
    {
      "commit": "c2c9dd32511b555c637b8cadb8091eaa6088f92b",
      "tree": "1be518c17520e044b07cd3cb20b353f6580de9db",
      "parents": [
        "d738a4d3942ebf56a34d37772228014ec5c2fbdd"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 19 16:43:53 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 20 09:50:32 2010 -0800"
      },
      "message": "Support for \u0027iTunes-style\u0027 metadata in .mp4 and .3gp files.\n\nrelated-to-bug: 2368967\n"
    },
    {
      "commit": "cb6ffa28244e491b2ae8e3b1c68ba7c93a08e560",
      "tree": "7afba0a710069e77ef21f73d93292173e1eeaf8f",
      "parents": [
        "bfa05732a9b791ce49f3db2bb5c9ee30638fd6bb",
        "f1fe064d735698b09e4bc7b3a10e4dc3dba9a1d9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 19 11:43:12 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 19 11:43:12 2010 -0800"
      },
      "message": "Merge \"Avoid unnecessary buffer copying if at all possible, detect if running in the mediaserver process.\""
    }
  ],
  "next": "f1fe064d735698b09e4bc7b3a10e4dc3dba9a1d9"
}
