)]}'
{
  "log": [
    {
      "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": "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": "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": "5603f749d5903898b5018cf907f194830bf4ff2b",
      "tree": "4f905eb9d9bf8456029d48496d814b376da03835",
      "parents": [
        "0cd1e0bf7a0db4dcc111ee0732cbe2ec6e02b5af",
        "8a08d9d62eeca9b0e8d75daef02706be798a97b5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 22 10:11:04 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 22 10:11:04 2010 -0700"
      },
      "message": "Merge \"Make sure sine: is supported again in stagefright commandline tool.\" 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": "8a08d9d62eeca9b0e8d75daef02706be798a97b5",
      "tree": "3e805fca9d45ffd483f634a8ca908e934530db23",
      "parents": [
        "c7fa90a661dd9f6107af6a1d9e6dcaa1cb9a34e3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 21 09:11:51 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 21 13:53:36 2010 -0700"
      },
      "message": "Make sure sine: is supported again in stagefright commandline tool.\n\nChange-Id: I703f1a8b7556543ef71b141dc8e38d8b82d8c6dc\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": "e6de2667d6bf4bb7b926da6784cc7eb886b93e83",
      "tree": "03603c405c698b33d94bab15b7fc5beb8b0e8796",
      "parents": [
        "d26b133beec4df8608db3958045650e661ae8666",
        "e32283b15bbd60179424bdc740a4e4932da4c61e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 17 18:43:10 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 17 18:43:10 2010 -0700"
      },
      "message": "am 39e876ad: (-s ours) Merge \"When filling the cache, we always time out waiting for a condition that won\\\u0027t occur. We are actually improving the power consumption for streaming applications like Pandora.\" into froyo\n\nMerge commit \u002739e876ad743f203fe005333947c61383772b0d14\u0027 into gingerbread\n\n* commit \u002739e876ad743f203fe005333947c61383772b0d14\u0027:\n  When filling the cache, we always time out waiting for a condition that won\u0027t occur.\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": "e32283b15bbd60179424bdc740a4e4932da4c61e",
      "tree": "18cd65fdcf0c53b3c99c781822dc4a0b941af89b",
      "parents": [
        "17e8ad9c4b8fbdebec4559702b82114fb6543b67",
        "d82ac9c464a83f36e87cc95b26f6030402dda256"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 16 16:10:52 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 16 16:10:52 2010 -0700"
      },
      "message": "Merge \"When filling the cache, we always time out waiting for a condition that won\u0027t occur. We are actually improving the power consumption for streaming applications like Pandora.\" into froyo"
    },
    {
      "commit": "d82ac9c464a83f36e87cc95b26f6030402dda256",
      "tree": "f06c0c939e6ba3add6a8a110c54b9dbe71c95cef",
      "parents": [
        "ddc43521f9e15b15edc6f7dce0965483f6a0f820"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 15 18:14:03 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 16 14:12:53 2010 -0700"
      },
      "message": "When filling the cache, we always time out waiting for a condition that won\u0027t occur.\nWe are actually improving the power consumption for streaming applications like Pandora.\n\nChange-Id: Id32bacbc962e8c69c056599479b308d6a07b7a20\n"
    },
    {
      "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": "0450c5ebb6125a1a58c4588af9ad3611bd65b1d1",
      "tree": "16bad0bbdb4fcd2e1e8fd96ad6e658a18262671b",
      "parents": [
        "a1ad27130107b4377cc94b310a1e6c51d4b17cde",
        "628eff9967c4efd04204656d9756df9e32cf523c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 17:55:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jun 13 17:55:28 2010 -0700"
      },
      "message": "am 46b9ac0a: Native input dispatch rewrite work in progress.\n\nMerge commit \u002746b9ac0ae2162309774a7478cd9d4e578747bfc2\u0027 into gingerbread\n\n* commit \u002746b9ac0ae2162309774a7478cd9d4e578747bfc2\u0027:\n  Native input dispatch rewrite work in progress.\n"
    },
    {
      "commit": "628eff9967c4efd04204656d9756df9e32cf523c",
      "tree": "1b87d7b8c0eb1fac2c535c899f5761e9bf543558",
      "parents": [
        "623a0de03d72c17b4cf0701280c6cb1df365ea6c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 22 18:58:52 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 17:42:16 2010 -0700"
      },
      "message": "Native input dispatch rewrite work in progress.\n\nThe old dispatch mechanism has been left in place and continues to\nbe used by default for now.  To enable native input dispatch,\nedit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy.\n\nIncludes part of the new input event NDK API.  Some details TBD.\n\nTo wire up input dispatch, as the ViewRoot adds a window to the\nwindow session it receives an InputChannel object as an output\nargument.  The InputChannel encapsulates the file descriptors for a\nshared memory region and two pipe end-points.  The ViewRoot then\nprovides the InputChannel to the InputQueue.  Behind the\nscenes, InputQueue simply attaches handlers to the native PollLoop object\nthat underlies the MessageQueue.  This way MessageQueue doesn\u0027t need\nto know anything about input dispatch per-se, it just exposes (in native\ncode) a PollLoop that other components can use to monitor file descriptor\nstate changes.\n\nThere can be zero or more targets for any given input event.  Each\ninput target is specified by its input channel and some parameters\nincluding flags, an X/Y coordinate offset, and the dispatch timeout.\nAn input target can request either synchronous dispatch (for foreground apps)\nor asynchronous dispatch (fire-and-forget for wallpapers and \"outside\"\ntargets).  Currently, finding the appropriate input targets for an event\nrequires a call back into the WindowManagerServer from native code.\nIn the future this will be refactored to avoid most of these callbacks\nexcept as required to handle pending focus transitions.\n\nEnd-to-end event dispatch mostly works!\n\nTo do: event injection, rate limiting, ANRs, testing, optimization, etc.\n\nChange-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25\n"
    },
    {
      "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"
    },
    {
      "commit": "ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4",
      "tree": "9a3115e77421f95a8505067cfa60b5a73518ad68",
      "parents": [
        "0a5baa9b411fe086013d2a5e9126ed63fbad046c"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jun 10 13:32:16 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jun 11 16:47:33 2010 +0800"
      },
      "message": "Change camera interface to support multiple cameras.\n\nChange-Id: Ie88fe706d2278acf762eca87780de349434778a4\n"
    },
    {
      "commit": "0a5baa9b411fe086013d2a5e9126ed63fbad046c",
      "tree": "d2f568256c27d816aa5cac3ef365ebe460536a3a",
      "parents": [
        "28b6844dec4297b16777fd45fd77ff33aa495de2"
      ],
      "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": "28b6844dec4297b16777fd45fd77ff33aa495de2",
      "tree": "2bea0ca886220a4e255c0a32a4bb6f7654b415a2",
      "parents": [
        "baef63d1ac0ec6f489f5e50d2a599ff96c1f44ba",
        "1c70247536457f7b7fa84daa3482bd3d3b44e225"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 15:15:50 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 10 15:15:50 2010 -0700"
      },
      "message": "Merge \"Simplify the code in the stagefright commandline utility.\" into kraken"
    },
    {
      "commit": "baef63d1ac0ec6f489f5e50d2a599ff96c1f44ba",
      "tree": "9aefec4296365d9ac5bdb740adcdf285664d5923",
      "parents": [
        "61ea6c1bc242841663cb6f3601f89fd929882d0b",
        "1370cbe385c4295471910aacbef51a8a65ce533d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 15:15:43 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 10 15:15:43 2010 -0700"
      },
      "message": "Merge \"Switch LiveSource to use the new http data source instead of the old one.\" into kraken"
    },
    {
      "commit": "61ea6c1bc242841663cb6f3601f89fd929882d0b",
      "tree": "8d520cc017cc8f899064db22551147f6aae752be",
      "parents": [
        "80737bac407a36e99267f65fe162b8e282822af4",
        "5994b4798b01f3dd340577c9ea9657f09093a770"
      ],
      "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": "80737bac407a36e99267f65fe162b8e282822af4",
      "tree": "470f173a5d9fc127ed0d48e0aa2461e21f4309dd",
      "parents": [
        "6a350a967766a197c161e69185c48f642cbaa460",
        "d35bd5fb4e09c2cd8608497c279cbb2ef9c3a029"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 12:41:05 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 10 12:41:05 2010 -0700"
      },
      "message": "Merge \"Support \"pausing\" of MediaSources with the effect that they no longer pull on their upstream source until a subsequent read-with-seek.\" into kraken"
    },
    {
      "commit": "6a350a967766a197c161e69185c48f642cbaa460",
      "tree": "8462c78f592f803522e643ec2cdaf7968c699da1",
      "parents": [
        "decc91d5bc6e02acd52ca5bb6f87627285bb97c4",
        "f0821faac01c41cb3eb0ec057443f1507e7afcb5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 12:40:39 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 10 12:40:39 2010 -0700"
      },
      "message": "Merge \"Initial check in of a new http data source implementation.\" into kraken"
    },
    {
      "commit": "1c70247536457f7b7fa84daa3482bd3d3b44e225",
      "tree": "cfdaa243502d4944bc96b5656a74a5531b934925",
      "parents": [
        "98c7c319907f4ed3915461ca62b1027590d351e5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:16:10 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:27:06 2010 -0700"
      },
      "message": "Simplify the code in the stagefright commandline utility.\n\nChange-Id: Ia222b25ef12af34f6434421fd96b67eca800d1ab\n"
    },
    {
      "commit": "1370cbe385c4295471910aacbef51a8a65ce533d",
      "tree": "de1119f23976ae662e9ff4d058d096b601345ad7",
      "parents": [
        "98c7c319907f4ed3915461ca62b1027590d351e5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:13:55 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:26:24 2010 -0700"
      },
      "message": "Switch LiveSource to use the new http data source instead of the old one.\n\nChange-Id: I9623c480628c495dbfbe02bdc6372724a107e2e8\n"
    },
    {
      "commit": "d35bd5fb4e09c2cd8608497c279cbb2ef9c3a029",
      "tree": "202a1dc44facac79bb0175f2dce9ec1381850854",
      "parents": [
        "98c7c319907f4ed3915461ca62b1027590d351e5"
      ],
      "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": "5994b4798b01f3dd340577c9ea9657f09093a770",
      "tree": "1fa0f3bcca95eb3b7dd79c781ccca2fe0630f134",
      "parents": [
        "98c7c319907f4ed3915461ca62b1027590d351e5"
      ],
      "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": "f0821faac01c41cb3eb0ec057443f1507e7afcb5",
      "tree": "7fde6bad91839fcdc9eb5a519bd20a399b4b6df8",
      "parents": [
        "98c7c319907f4ed3915461ca62b1027590d351e5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:08:43 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:22:56 2010 -0700"
      },
      "message": "Initial check in of a new http data source implementation.\n\nChange-Id: I17c358288ffe9ef690d702c58723c766d0a0cf21\n"
    },
    {
      "commit": "decc91d5bc6e02acd52ca5bb6f87627285bb97c4",
      "tree": "ef611d4c87130b8b4dadacbb9034edef78df6afd",
      "parents": [
        "98c7c319907f4ed3915461ca62b1027590d351e5",
        "9d7f58a7da8502a4174a17ac49fcba6efa35a457"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 10 10:14:38 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 10 10:14:38 2010 -0700"
      },
      "message": "Merge \"Remove the lock/unlock workaround from CameraService\" into kraken"
    },
    {
      "commit": "98c7c319907f4ed3915461ca62b1027590d351e5",
      "tree": "405b00c6d671a43674e7f55cd5ed12022ffa4067",
      "parents": [
        "36ef8cf54e2bf2f96b8c7f47cd534c00ccb7b64f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 09:51:27 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 09:52:11 2010 -0700"
      },
      "message": "Apparently the TI video decoder only supports H.264 up to baseline profile/level 3, not level 3.x as previously assumed.\n\nChange-Id: I4a9aa80f392dbef72f81e25c67e5bd0654848b2c\n"
    },
    {
      "commit": "9d7f58a7da8502a4174a17ac49fcba6efa35a457",
      "tree": "ed1ad79bb159ed04f2f88d063dbaf28df3bc3201",
      "parents": [
        "36ef8cf54e2bf2f96b8c7f47cd534c00ccb7b64f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 09 15:57:48 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 09 21:30:43 2010 -0700"
      },
      "message": "Remove the lock/unlock workaround from CameraService\n\nbug - 2677772\n\nChange-Id: I7c996daad8b3bfc89e9fa2d655dc18c9a5c68f2f\n"
    },
    {
      "commit": "36ef8cf54e2bf2f96b8c7f47cd534c00ccb7b64f",
      "tree": "ea437c86609ee36a52c071cd066d029793633639",
      "parents": [
        "ddcc4a66d848deef6fb4689e64e30cd9bd2684fe"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 08 19:54:15 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 08 20:10:02 2010 -0700"
      },
      "message": "allow re-targetting of surfaces\n\nSurfaces can now be parcelized and sent to remote\nprocesses. When a surface crosses a process\nboundary, it looses its connection with the\ncurrent process and gets attached to the new one.\n\nChange-Id: I39c7b055bcd3ea1162ef2718d3d4b866bf7c81c0\n"
    },
    {
      "commit": "ddcc4a66d848deef6fb4689e64e30cd9bd2684fe",
      "tree": "e34375b6ca52818e02b45af527e68e4b42c92be1",
      "parents": [
        "365a963142093a1cd8efdcea76b5f65096a5b115"
      ],
      "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": "365a963142093a1cd8efdcea76b5f65096a5b115",
      "tree": "40c76b80d8b9bf3e4410db69789465dbb71ff015",
      "parents": [
        "cc2fc006594cccbf1a58a2933c1d18cf0f2e021f"
      ],
      "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": "cc2fc006594cccbf1a58a2933c1d18cf0f2e021f",
      "tree": "ed422182be7cf79c946c2566b2e3e1c0f13f92e7",
      "parents": [
        "cf7b9c7aae758ac0b99833915053c63c2ac46e09",
        "d07139e2e817a9b3ae9c87ba4e1e8d65d3e549da"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 08 10:14:26 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 08 10:14:26 2010 -0700"
      },
      "message": "Merge \"Second part of speeding up video recording frame rate\" into kraken"
    },
    {
      "commit": "d07139e2e817a9b3ae9c87ba4e1e8d65d3e549da",
      "tree": "c539b7d9d79fa55387eb62149418cc34f78826f2",
      "parents": [
        "cda17c606b0fe3ccda4dc68a6d43882410ea2462"
      ],
      "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": "cf7b9c7aae758ac0b99833915053c63c2ac46e09",
      "tree": "2480a2da149f7ba8fe651876a6173947ec8c6a16",
      "parents": [
        "e71d10e7ad55ccbcb0756c007caef1c959090384"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 15:19:40 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 15:34:45 2010 -0700"
      },
      "message": "Initial checkin of preliminary rtsp support for stagefright.\n\nChange-Id: I0722aa888098c0c1361c97a4c1b123d910afc207\n"
    },
    {
      "commit": "e71d10e7ad55ccbcb0756c007caef1c959090384",
      "tree": "42991995bb9ec7c3017f4ad59a3fe761d7aaf772",
      "parents": [
        "cda17c606b0fe3ccda4dc68a6d43882410ea2462"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 14:35:29 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 14:35:29 2010 -0700"
      },
      "message": "Initial checkin of preliminary support for \"http live\" streaming in stagefright.\n\nChange-Id: I20399f63d63af86a3ba22641c0e43385a108fb3f\n"
    },
    {
      "commit": "cda17c606b0fe3ccda4dc68a6d43882410ea2462",
      "tree": "0c238863237c3c7e98b497c2e27f09d5080b67e6",
      "parents": [
        "c46e8b9fdce32bafb0b84cdb16affbdd35c2e3ba"
      ],
      "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": "c46e8b9fdce32bafb0b84cdb16affbdd35c2e3ba",
      "tree": "22d8bac8c427e2906c5aa03b212918077d005078",
      "parents": [
        "c00d6f3ffc0eace26954e1863568820bd21794c0",
        "72961230a5890071bcca436eb5630172ce84ec41"
      ],
      "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": "72961230a5890071bcca436eb5630172ce84ec41",
      "tree": "a699be99c292a92bda91f7eca5671a5817488447",
      "parents": [
        "cbbf27f76b4798cbd91feb70d7555dac0cbf85cb"
      ],
      "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": "c00d6f3ffc0eace26954e1863568820bd21794c0",
      "tree": "ec5042915f77bbb3cb374b251fbcc2749ec67076",
      "parents": [
        "cbbf27f76b4798cbd91feb70d7555dac0cbf85cb",
        "653252be963c07c99109d20f942d1f30c52a9360"
      ],
      "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": "cbbf27f76b4798cbd91feb70d7555dac0cbf85cb",
      "tree": "86f01bba0af27f8bfc9a8f28c9ecab3f52f3d022",
      "parents": [
        "a21b4e224e8622c0e3280c33b8ebd24fcc515580"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 01 15:12:58 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 04 18:57:41 2010 -0700"
      },
      "message": "split surface management from surface\u0027s buffers management\n\nChange-Id: If3c5655d1231f8f0c49ba68f972b1b20c93b3f87\n"
    },
    {
      "commit": "a21b4e224e8622c0e3280c33b8ebd24fcc515580",
      "tree": "bce77c1ce11b21c73f78bb8168593c9f2b8d73c9",
      "parents": [
        "dea96b8d54daf9ef76beb7e72e69c9f1c923c1d8",
        "d38bee5858f5387afc28dcb97139b760ac8a1c63"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Jun 04 03:38:25 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 04 03:38:25 2010 -0700"
      },
      "message": "Merge \"Add KEY_SUPPORTED_METERING_MODES and fix some typos.\" into kraken"
    },
    {
      "commit": "d38bee5858f5387afc28dcb97139b760ac8a1c63",
      "tree": "b090f27b94303923007f1cdd4b075be16cbba904",
      "parents": [
        "cd3514492c2d49aeb88eedae40b54dcdd3fcbd9a"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Jun 04 14:18:32 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Jun 04 17:18:17 2010 +0800"
      },
      "message": "Add KEY_SUPPORTED_METERING_MODES and fix some typos.\n\nbug:2737111\nChange-Id: I108ae7057786921bf99385ad66dbc1f02d6a1448\n"
    },
    {
      "commit": "dea96b8d54daf9ef76beb7e72e69c9f1c923c1d8",
      "tree": "6b4ff3bdd28e7a571c60cd90e7af7cbc0d26d0b6",
      "parents": [
        "cd3514492c2d49aeb88eedae40b54dcdd3fcbd9a",
        "be916aa1267e2e6b1c148f51d11bcbbc79cb864c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 04 00:14:46 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 04 00:14:46 2010 -0700"
      },
      "message": "Merge \"Issue 2667801: [Audio Effect Framework] AudioFlinger, AudioMixer AudioTrack modifications.\" into kraken"
    },
    {
      "commit": "cd3514492c2d49aeb88eedae40b54dcdd3fcbd9a",
      "tree": "5dc7c57a5891532307f85a263e39479c9c182ef8",
      "parents": [
        "c1640f49abb1efc31a5fb985cfde73913cebbe8b",
        "2b8aba228e6ebd45fe29714baa477f3ea2320095"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Jun 03 22:32:05 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 03 22:32:05 2010 -0700"
      },
      "message": "Merge \"Add camera metering mode API.\" into kraken"
    },
    {
      "commit": "c1640f49abb1efc31a5fb985cfde73913cebbe8b",
      "tree": "5603733ceb952cfd5cf12123355bcbcf87274e60",
      "parents": [
        "c282e3eee921453fc9188705b4879d6289b71f9c",
        "ebe43b342205674c559edf68dfa2b51bbf71189b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 03 15:31:56 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 03 15:31:56 2010 -0700"
      },
      "message": "am e896d416: am 2e3761ba: Merge \"Changes to the prefetcher to allow for bursts of data to be transferred, hopefully allowing the radio to go to low-power mode while idle.\" into froyo\n\nMerge commit \u0027e896d41699ffe7be932102d7ccc9566f41ddb447\u0027 into kraken\n\n* commit \u0027e896d41699ffe7be932102d7ccc9566f41ddb447\u0027:\n  Changes to the prefetcher to allow for bursts of data to be transferred, hopefully allowing the radio to go to low-power mode while idle.\n"
    },
    {
      "commit": "ebe43b342205674c559edf68dfa2b51bbf71189b",
      "tree": "43939d40777ef29ecfef5ab70e18612c89c103ee",
      "parents": [
        "8fe7fa8f90e52cab210ec1de861f2d8ac9435968",
        "ddc43521f9e15b15edc6f7dce0965483f6a0f820"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 03 15:30:03 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 03 15:30:03 2010 -0700"
      },
      "message": "am 2e3761ba: Merge \"Changes to the prefetcher to allow for bursts of data to be transferred, hopefully allowing the radio to go to low-power mode while idle.\" into froyo\n\nMerge commit \u00272e3761ba43f634e97ac493f4b79e5e53954a1491\u0027 into froyo-plus-aosp\n\n* commit \u00272e3761ba43f634e97ac493f4b79e5e53954a1491\u0027:\n  Changes to the prefetcher to allow for bursts of data to be transferred, hopefully allowing the radio to go to low-power mode while idle.\n"
    },
    {
      "commit": "ddc43521f9e15b15edc6f7dce0965483f6a0f820",
      "tree": "db8df3366a069c35b289f441a0d31ac135aee84f",
      "parents": [
        "139a5d5bd33c9fc7708d0a79f11ee928f7796e6b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 03 14:42:19 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 03 14:43:57 2010 -0700"
      },
      "message": "Changes to the prefetcher to allow for bursts of data to be transferred, hopefully allowing the radio to go to low-power mode while idle.\n\nChange-Id: I03dbdac3cd250340059ea43b341129b30acce4e2\nrelated-to-bug: 2736779\n"
    },
    {
      "commit": "653252be963c07c99109d20f942d1f30c52a9360",
      "tree": "6d5fb73f2aa6a51c60320bfd59b4081b2616dd7e",
      "parents": [
        "c282e3eee921453fc9188705b4879d6289b71f9c"
      ],
      "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": "be916aa1267e2e6b1c148f51d11bcbbc79cb864c",
      "tree": "7e2be6182cde7d023ae9afec28463d69d231d7bc",
      "parents": [
        "c282e3eee921453fc9188705b4879d6289b71f9c"
      ],
      "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": "2b8aba228e6ebd45fe29714baa477f3ea2320095",
      "tree": "526afba8fc95868ce67ff91554a81b1ad8a7d6ae",
      "parents": [
        "ba0fab325cd8379378a2c8ad14dd1c44bf2760f3"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Jun 03 16:34:18 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Jun 03 16:34:18 2010 +0800"
      },
      "message": "Add camera metering mode API.\n\nbug:2737111\nChange-Id: Ie986fee56ebeaaed2d2efb757701dfe3ffdec8d8\n"
    },
    {
      "commit": "c282e3eee921453fc9188705b4879d6289b71f9c",
      "tree": "104a2900e82b373939b771264cbe2932eca07225",
      "parents": [
        "ba0fab325cd8379378a2c8ad14dd1c44bf2760f3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 01 13:38:13 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 01 13:41:16 2010 -0700"
      },
      "message": "A debugging DataSource artifically limiting the available bandwidth.\n\nChange-Id: I4ca75337a52599d211ea066fd94e649748df052d\n"
    },
    {
      "commit": "ba0fab325cd8379378a2c8ad14dd1c44bf2760f3",
      "tree": "71db14ce33c3c0642152d98376feeceb5ad6353d",
      "parents": [
        "aed27b016043c9f2cb33cf851f20698130be110c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 28 14:22:23 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 28 17:19:16 2010 -0700"
      },
      "message": "more clean-up in preparation of bigger changes\n\nthe most important change here is the renaming of\nISurfaceFlingerClient to ISurfaceComposerClient\n\nChange-Id: I94e18b0417f50e06f21377446639c61f65f959b3\n"
    },
    {
      "commit": "aed27b016043c9f2cb33cf851f20698130be110c",
      "tree": "8a28a6b2da1afe0051cefa3d7012a41a155d0eb1",
      "parents": [
        "49dedddca375f0b3a7070f7fae33966c230d4d8e",
        "7278cf32f1aa6a322f6dff1f8b7dacf7b6dddba6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 28 10:53:09 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 28 10:53:09 2010 -0700"
      },
      "message": "Merge \"Avoid copying for input recording frames in CameraSource\" into kraken"
    },
    {
      "commit": "7278cf32f1aa6a322f6dff1f8b7dacf7b6dddba6",
      "tree": "d64ace45412715114585df61c53d2f5ea58d7999",
      "parents": [
        "8a74f1bc3f64943cafdc7c6c7e1900b4a3e9e4b1"
      ],
      "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": "49dedddca375f0b3a7070f7fae33966c230d4d8e",
      "tree": "e3a60efbf1519adcfdf4831b15cd2dd424a3c201",
      "parents": [
        "1b52bd2874aef6c9cbc141f1cff5205830515f7d",
        "0b0279e0d20a8beb69aa2af5f4cb278841710dfb"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri May 28 04:34:13 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 28 04:34:13 2010 -0700"
      },
      "message": "Merge \"Add video frame parameter.\" into kraken"
    },
    {
      "commit": "0b0279e0d20a8beb69aa2af5f4cb278841710dfb",
      "tree": "21b77e3b0348f35a45db76125ac9f112bd74551e",
      "parents": [
        "5b39604a55f1624ced347da7b790c4206d2d999f"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri May 28 17:32:41 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri May 28 17:32:41 2010 +0800"
      },
      "message": "Add video frame parameter.\n\nThe image format of preview frames and video frames may be different.\nWe need another parameter for video frame format.\n\nbug:2720893\nChange-Id: I966a31b0ce8cab25cdde65db65a18c8cbe9c7bd6\n"
    },
    {
      "commit": "1b52bd2874aef6c9cbc141f1cff5205830515f7d",
      "tree": "388828a3e0fe92a6d3652b8ecf86a2f9dddb5928",
      "parents": [
        "8a74f1bc3f64943cafdc7c6c7e1900b4a3e9e4b1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 27 09:59:54 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 27 09:59:54 2010 -0700"
      },
      "message": "Better sniffing of MPEG4 content by checking for a compatible sub-brand.\n\nChange-Id: I076908822ad0e663b9932e61fb33edc12c2e1948\nrelated-to-bug: 2673192\n"
    },
    {
      "commit": "8a74f1bc3f64943cafdc7c6c7e1900b4a3e9e4b1",
      "tree": "d94088e53fdfefb428c4e63b492de730ef73a153",
      "parents": [
        "a7414ea2c7dfea7d2428ce543bd6331d6c56aead",
        "69ec58ee5216ad4eabc7775762c2468c42b632fb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 27 08:57:23 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 27 08:57:23 2010 -0700"
      },
      "message": "Merge \"After failing to create an AudioTrack, only stop the source if we were the ones starting it.\" into kraken"
    },
    {
      "commit": "a7414ea2c7dfea7d2428ce543bd6331d6c56aead",
      "tree": "44a8c0b9202856874f58859242aa3f2bfc74c08b",
      "parents": [
        "5b39604a55f1624ced347da7b790c4206d2d999f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 27 01:57:08 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu May 27 02:01:19 2010 -0700"
      },
      "message": "Remove the logic in CameraSource using CameraParameters class to find out the buffer size.\n\nChange-Id: I76eea76bda49529d08b46241d3dded1a804f891c\n"
    },
    {
      "commit": "5b39604a55f1624ced347da7b790c4206d2d999f",
      "tree": "71bde464029685210f228e6a8e43e9b4f1f71097",
      "parents": [
        "5a4001ddb2536d65d966970fc0579bf6bd11b5a0",
        "cbe48a0678729eb863b259b4744e6ad12faf0475"
      ],
      "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": "cbe48a0678729eb863b259b4744e6ad12faf0475",
      "tree": "d0331f351a139dddc9fe42eacebbb964864132fa",
      "parents": [
        "1cb8fa1e670786bf83ccde7571c5ac1fc087d4f1"
      ],
      "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": "69ec58ee5216ad4eabc7775762c2468c42b632fb",
      "tree": "c82d99c1a200c680f0e39c09a39bfa5949e19c91",
      "parents": [
        "1a9b892400dae0f63b4fd502770154a06e23b01b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 26 13:10:15 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 26 13:10:15 2010 -0700"
      },
      "message": "After failing to create an AudioTrack, only stop the source if we were the ones starting it.\n\nChange-Id: I1820c2634cfeb01af9eaf11b6473c5d7b87d1fa3\nrelated-to-bug: 2716035\n"
    },
    {
      "commit": "5a4001ddb2536d65d966970fc0579bf6bd11b5a0",
      "tree": "99210f9c70c3b695128950533b52d076ee35b017",
      "parents": [
        "1a9b892400dae0f63b4fd502770154a06e23b01b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 26 12:59:06 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 26 12:59:06 2010 -0700"
      },
      "message": "Convert a number of assertions into runtime errors (OggExtractor)\n\nChange-Id: I8fcaec927d7b72e9d61cb7283e54523711980268\n"
    },
    {
      "commit": "1a9b892400dae0f63b4fd502770154a06e23b01b",
      "tree": "7764c3d35f14439898856700e370199354b9f565",
      "parents": [
        "2941c27e381ebda1cecff9fca2a67bba999e46e4",
        "4d1265cd007b9754d0645bc4fb95701140a45648"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 26 11:21:06 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 26 11:21:06 2010 -0700"
      },
      "message": "Merge \"Squashed commit of the following:\" into kraken"
    },
    {
      "commit": "2941c27e381ebda1cecff9fca2a67bba999e46e4",
      "tree": "57eb641552023d29a7cce091a117cf00c3e09cd3",
      "parents": [
        "cfe92f710d17f71b1cef70bd7f6ec5879309b24f",
        "d71a1be83ff31cdb6599c351f9832cefc8d447ba"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 25 23:48:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 25 23:48:30 2010 -0700"
      },
      "message": "Merge \"Fix issue 2667797: [Audio Effect Framework] new base class and binder interfaces for effect control.\" into kraken"
    },
    {
      "commit": "cfe92f710d17f71b1cef70bd7f6ec5879309b24f",
      "tree": "f1fea14a0e5b17383a75e9a6bd018de33cee34e4",
      "parents": [
        "6c3a699ef1c885e39d9b697fae7304455e8d9f83",
        "3f6b0cdd8cd57e2cca56a5dd4cfa726b9185d2e8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 25 17:56:07 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 25 17:56:07 2010 -0700"
      },
      "message": "Merge \"fix [2712278] The preview buffer left some black borders in left and bottom edges\" into kraken"
    },
    {
      "commit": "3f6b0cdd8cd57e2cca56a5dd4cfa726b9185d2e8",
      "tree": "e5d25b48359d27a362e3db605736629f2a4c2e09",
      "parents": [
        "fb6ae6666644c9a37a5d34dd03eb637333cf946b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 25 17:51:34 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 25 17:51:34 2010 -0700"
      },
      "message": "fix [2712278] The preview buffer left some black borders in left and bottom edges\n\nwe were incorrectly flagging push_buffer surfaces as invalid\n\nChange-Id: I4dfd4ffbbe8a71f7e23e835db8d71966416c29bb\n"
    },
    {
      "commit": "6c3a699ef1c885e39d9b697fae7304455e8d9f83",
      "tree": "ea7551365f1d4f80e6bed76baea9546eae75e847",
      "parents": [
        "8b5a7566b0ad7be6b165eae8d6af3a0bbded77e0",
        "5279d1d8c19e5fdbb177805db0da8e8aadac3079"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 25 14:16:18 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 25 14:16:23 2010 -0700"
      },
      "message": "Merge \"Support for thumbnail extraction in the Matroska extractor.\" into kraken"
    },
    {
      "commit": "5279d1d8c19e5fdbb177805db0da8e8aadac3079",
      "tree": "77d3e5f63808c6bf2714a98582af3da55d3f0408",
      "parents": [
        "4595be952e3b1d6776a023e3f447c057797f1505"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 25 13:35:02 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 25 13:41:40 2010 -0700"
      },
      "message": "Support for thumbnail extraction in the Matroska extractor.\n\nChange-Id: I56f13fc4868baffe0bb8c2484d2753c766a73960\nrelated-to-bug: 2483739\n"
    },
    {
      "commit": "8b5a7566b0ad7be6b165eae8d6af3a0bbded77e0",
      "tree": "fd5e242b1e0e38f97c1e9ff080660f3608b0eb24",
      "parents": [
        "4595be952e3b1d6776a023e3f447c057797f1505",
        "17217ab46e12fbdaad9e1d7460c48937f76fa0e2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 25 12:42:53 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 25 12:42:53 2010 -0700"
      },
      "message": "Merge \"Fix the simulator build broken by commit 5fe37c6838de9fbd959ad19ba44aa3d00d1b4e6f\" into kraken"
    }
  ],
  "next": "17217ab46e12fbdaad9e1d7460c48937f76fa0e2"
}
