)]}'
{
  "log": [
    {
      "commit": "cfe2ba6b01a258e39f9c215ffc7b750e0b68f708",
      "tree": "c4a213cfc30955cc61a8c9673e032caff41a0947",
      "parents": [
        "98afd841e8f0803a00d1970e4a28ea8999e9c498"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 13 15:04:17 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 13 17:33:29 2011 -0700"
      },
      "message": "Issue 5298399: Lost speech after a crash in gTalk.\n\nFixed problem in AudioTrack::restoreTrack_l() causing a permanent\nfailure if the IAudioTrack interface to AudioFlinger could not be\nrestored at the first attempt.\n\nChange-Id: I039d4fe2dca8d3baf71f1a6c51119f27a67b6611\n"
    },
    {
      "commit": "d681bbb1767bed09415e050ba78975df214bcd68",
      "tree": "2030c617c61bbf7b6cd8c6bafab601a99b1ac83d",
      "parents": [
        "d942202ee0c92608c648735c3ad0f1bab4312420"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Tue Aug 30 14:39:17 2011 +0100"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Fri Sep 02 11:26:59 2011 +0100"
      },
      "message": "Require INTERNET permission for network-based content.\nBug #1870981\n\nChange-Id: Ia3ad166390c4d60cea19c3783895b078a2c4c15f\n"
    },
    {
      "commit": "a8e409f8f9b40737d0b03355894b5e141d0aff6b",
      "tree": "8799a5eecc61038ccf054d905ca3f4492ae18f30",
      "parents": [
        "77d2e08add3ba24fdc527809408028efe3e06b6b"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 30 21:33:10 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Sep 01 13:37:14 2011 +0800"
      },
      "message": "Add video snapshot camera parameter.\n\nThe API is still hidden.\n\nbug:5187868\n\nChange-Id: I59e1b5774ca32be049723d1a0887faa90d8884bb\n"
    },
    {
      "commit": "77d2e08add3ba24fdc527809408028efe3e06b6b",
      "tree": "2d6f5f9ee01d04bce87cea84bf83e22da9d2c759",
      "parents": [
        "aec548b979f3d64712e8aa84cffdc4b7f094a798",
        "ed362eccc7eabc669f9f39169e26662a7215d198"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Wed Aug 31 22:00:35 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 31 22:00:35 2011 -0700"
      },
      "message": "Merge \"Incr. MIN_UNDEQUEUED_BUFFERS in SurfaceMediaSource\""
    },
    {
      "commit": "ed362eccc7eabc669f9f39169e26662a7215d198",
      "tree": "c62947ab463db709bd3dde9c1fd3eb2f42cc13a1",
      "parents": [
        "d2824a9a392e02a09929a34f0a3dad41ac1faacf"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Mon Aug 29 19:53:51 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Wed Aug 31 17:43:24 2011 -0700"
      },
      "message": "Incr. MIN_UNDEQUEUED_BUFFERS in SurfaceMediaSource\n\nThe buffers in SurfaceMediaSource were 4 earlier, whereas\nwe need 5 for one of the devices.\n\nChange-Id: I87bf5e28bbb0f7c9661dc01b040baa903d95d2c2\n"
    },
    {
      "commit": "af6764da53c022768290e735bbcc3088bec333d8",
      "tree": "9b98de8360b386d35e90f14fb256875aac963361",
      "parents": [
        "e31f4f78729f66b3a90f51671ad557b551ed0bea",
        "df4a59c61103e7e0e9332e167a0be67da5d82ff3"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Aug 31 13:41:06 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 31 13:41:06 2011 -0700"
      },
      "message": "Merge \"Fix SurfaceMediaSource timestamp handling.\""
    },
    {
      "commit": "c3d8f74cda26197ec9066374fe31abe9ee77c1b1",
      "tree": "3ae10f50402ac74a72001880131a7a0e40b66905",
      "parents": [
        "b76e90de3c64626fe07a68469d0a59a31c8efb6b",
        "8343f2c317b48f9b9827781b16a5c9fd31743826"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 30 19:24:04 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 30 19:24:04 2011 -0700"
      },
      "message": "Merge \"fix Surface positions are not floats\""
    },
    {
      "commit": "8343f2c317b48f9b9827781b16a5c9fd31743826",
      "tree": "dcc878af2cf5c119c029b6f51b6c68fa431e3b85",
      "parents": [
        "63970b42f101c87db7cfd26d43b0d300260b1582"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 30 18:51:54 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 30 18:51:54 2011 -0700"
      },
      "message": "fix Surface positions are not floats\n\nAdded Surface.setPosition(float, float) which allows to set a surface\u0027s\nposition in float.\n\nBug: 5239859\nChange-Id: I903aef4ad5b5999142202fb8ea30fe216d805711\n"
    },
    {
      "commit": "b76e90de3c64626fe07a68469d0a59a31c8efb6b",
      "tree": "b8ced112fa7e83a34898679552a26744610ce0e1",
      "parents": [
        "1619f3d3428e9d502dc477d31e0681fe1cd12b89",
        "9f6530f53ae9eda43f4e7c1cb30d2379db00aa00"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 30 10:51:54 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 30 10:51:54 2011 -0700"
      },
      "message": "Merge \"226483: A2DP connected, but music out to speaker\""
    },
    {
      "commit": "df4a59c61103e7e0e9332e167a0be67da5d82ff3",
      "tree": "2f87a701a3c76fc553c4383d1c913ba867d0bcfa",
      "parents": [
        "1b5a697dc5435c76447eb5a2de373f5acdda119e"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 29 18:16:03 2011 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 30 10:49:15 2011 -0700"
      },
      "message": "Fix SurfaceMediaSource timestamp handling.\n\nWas not basing timestamps on startTimeUs.\nNow synchronizes properly with audio.\n\nBug: 4510826\nChange-Id: I613db0aa91e51fc75d120e65540e742d8ab2ae43\n"
    },
    {
      "commit": "9f6530f53ae9eda43f4e7c1cb30d2379db00aa00",
      "tree": "663430f29fec8c038ad2770e2640c9480c0e2251",
      "parents": [
        "d2824a9a392e02a09929a34f0a3dad41ac1faacf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 30 10:18:54 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 30 10:19:38 2011 -0700"
      },
      "message": "226483: A2DP connected, but music out to speaker\n\nWhen the A2DP headset is connected, there is a possible\nrace condition when the audio tracks are moved from\nthe mixer thread attached to the speaker output to the thread\nattached to A2DP output.\nAs the request to clear the stream type to output mapping cache in\nthe client process is asynchronous, it is possible that the flag\nindicating to the client audio track to re-create the IAudioTrack\non the new thread is processed before the cache is invalidated.\nIn this case, the track will be attached to the old thread and\nmusic will continue playing over the device speaker instead of being\nredirected to A2DP headset.\n\nChange-Id: Ib2ce1eb5320eaff83287b93779061bf4e7a330df\n"
    },
    {
      "commit": "6004f2dc9af4088e34cc72b1ac3c4a3c5cd4ae14",
      "tree": "a46bbb26c3283307ff30d7715b21b2d22e758693",
      "parents": [
        "f4b25b1dca4f1798c6f3f989be0738258d6504de",
        "790332a3170f967d58cee5d89cc92be8205d9aa3"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Aug 26 20:05:58 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 26 20:05:58 2011 -0700"
      },
      "message": "Merge \"Modify enum value of OMX_COLOR_FormatAndroidOpaque\""
    },
    {
      "commit": "790332a3170f967d58cee5d89cc92be8205d9aa3",
      "tree": "738c602c4d2bb7f3576bd113d6c22913196cfc26",
      "parents": [
        "0b293e76c8fe4e973ccd8a872bc5320ba28d49cc"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Aug 26 19:34:49 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Aug 26 19:38:13 2011 -0700"
      },
      "message": "Modify enum value of OMX_COLOR_FormatAndroidOpaque\n\nThe enum value chosen earlier had a conflict with one of the vendors.\n\nChange-Id: I47832dd1157447f89324d56e8ab146260cd7927c\n"
    },
    {
      "commit": "d2824a9a392e02a09929a34f0a3dad41ac1faacf",
      "tree": "ded4154b1d5b77344a9be3ed6b31433f12d71b06",
      "parents": [
        "0b293e76c8fe4e973ccd8a872bc5320ba28d49cc",
        "5df775d2f509c76e76a46615fca83dba95299f6e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 26 13:47:26 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 26 13:47:26 2011 -0700"
      },
      "message": "Merge \"Support for posting messages and synchronously waiting for a response.\""
    },
    {
      "commit": "cd07594333cbe8b2c86c6609cce01a74d6cc33f8",
      "tree": "70b1b94cb811f564e8fe0c6ec348469adaae5f3c",
      "parents": [
        "539a735a82fefb1944aa6135df73dfe9f541566c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Aug 25 16:47:23 2011 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Aug 25 17:33:49 2011 -0700"
      },
      "message": "Bug 4364249 Play position is 0 after flushing AudioTrack\n\nAudioTrack::stop() is not synchronous, so a stop() followed\n by flush(), which is synchronous, will not always report\n a playhead position of 0 after being called.\nThis CL adds a flag to mark a track as flushed, and report the\n correct playhead position in this state.\nBug 5217011 has been created to address the real issue in the\n future, where flush could be made synchronous, to properly\n address bug 4364249.\n\nChange-Id: Icf989d41a6bcd5985bb87764c287f3edb7e26d12\n"
    },
    {
      "commit": "5df775d2f509c76e76a46615fca83dba95299f6e",
      "tree": "1062b747ad85433dec6dca2093fafb8d2a6d89a7",
      "parents": [
        "24245683b9285b0b53c8900f088cf146000501c4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 25 16:09:06 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 25 16:28:18 2011 -0700"
      },
      "message": "Support for posting messages and synchronously waiting for a response.\n\nChange-Id: Id6c7a08c34fd5cb6c4632f78ece9e7898b29e52c\n"
    },
    {
      "commit": "0c5c7d2b119d2350c186ae9902919bcf28c3e277",
      "tree": "c9d61e6ca1f259cb873289ed92d838b9d335d6b5",
      "parents": [
        "ed422aa0dfab77312d25d52e7f204744ba16dc27"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Aug 18 21:53:02 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Wed Aug 24 13:57:46 2011 -0700"
      },
      "message": "Testing the GL/ CPU encoding w/ Gralloc buffers\n\nThis is the test for Gralloc buffers based encoding.\ncontains a combination of two main changes:\n\n1. GL based encoding tests added to SurfaceMediaSource_test\n\n2. SurfaceMediaSource ::read() colorformat\n\nThe SurfaceMediaSource::getformat() sets it to OMX_COLOR_FormatAndroidOpaque.\nThe omx encoder needs to interpret that colorformat and reads the format\nfrom the Gralloc buffers directly\n\nChange-Id: Iee2fe8901384109a4952e1d6c528c59eb01eb5b1\n"
    },
    {
      "commit": "8f74b712fbf5c24de8bc799b7129dc802747a6f4",
      "tree": "2f668bac8f044d68362ab040a099407b12cb2f73",
      "parents": [
        "67f43688334bcd72ae7c3b5b386c1b6a34711f4f"
      ],
      "author": {
        "name": "Rajneesh Chowdury",
        "email": "rajneeshc@google.com",
        "time": "Fri Aug 12 16:43:37 2011 -0700"
      },
      "committer": {
        "name": "Rajneesh Chowdury",
        "email": "rajneeshc@google.com",
        "time": "Fri Aug 19 14:34:47 2011 -0700"
      },
      "message": "Fix for 4142219 Don\u0027t hard code platform-specific limitations (Jni/ Java)\n\nAlso fixes 5118207 add other video codec support for video editor export.\n\nChange-Id: If72427173bd8ff684af07ba00f4425c1deef29c6\n"
    },
    {
      "commit": "a17b835f5b0bf42f4855fe57aef42799f28f3915",
      "tree": "2a0e275756f173efb4a790d4bfe666d06a6a3569",
      "parents": [
        "ee0846f97cf07f5f18d19161526743330aabb44e",
        "ab3f1388c71aed957f94ddab976faa77ab77e67f"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Aug 17 22:24:53 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 17 22:24:53 2011 -0700"
      },
      "message": "Merge \"Add new camera focus mode FOCUS_MODE_CONTINUOUS_PICTURE.\""
    },
    {
      "commit": "ab3f1388c71aed957f94ddab976faa77ab77e67f",
      "tree": "8187b7aa433b95bfbc53f3d9e209839662bf4889",
      "parents": [
        "a5cc7cce9b8aee73b08f6532710e186c02fdd1c0"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 16 21:14:16 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Aug 18 00:15:40 2011 +0800"
      },
      "message": "Add new camera focus mode FOCUS_MODE_CONTINUOUS_PICTURE.\n\nThe API is still hidden.\n\nbug:5086125\nChange-Id: I69268a95ad6aae249771d3a8dfb423ffe2d87081\n"
    },
    {
      "commit": "c92fd24c10a6bf80b346d7e261325434d9c6964b",
      "tree": "073315512c82b4a50de81e1fdfcb5b35db0ad1a1",
      "parents": [
        "a5cc7cce9b8aee73b08f6532710e186c02fdd1c0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 16 13:48:44 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 16 13:48:44 2011 -0700"
      },
      "message": "Error handling in ACodec and Nuplayer.\n\nCodec errors (and codec not found errors) now trigger a controlled shutdown\nof playback and signal errors to the MediaPlayer client.\n\nChange-Id: I2ee23ff2a1422d05a1a21e50ecb87d7c7ab958cc\n"
    },
    {
      "commit": "db7c079f284f6e91266f6653ae0ec198b1c5006e",
      "tree": "08c3569af421bc760cb7b81f611ee0959c4b7b9d",
      "parents": [
        "8adb83ba4837b3c9de1a4221a5ca4c371a62e38c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 10 10:37:50 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 11 14:33:45 2011 -0700"
      },
      "message": "Audio effects: track CPU and memory use separately\n\nBefore this change, CPU and memory usage for an audio effect were\nregistered and checked against the limit by audio policy manager\nupon effect instantiation. Even if an effect was not enabled\nit would prevent another effect to be created if the CPU load budget\nwas exceeded, which was too restrictive.\n\nThis change adds a method to register/unregister CPU load only when\nan effect is enabled or disabled.\nIt also adds a mechanism to place all effects on the global output mix\nin suspend state (disabled) when an effect is enabled on a specific session.\nThis will allow applications using session effects to have the priority\nover others using global effects.\n\nAlso fixes some issues with suspend/restore mechanism:\n- avoid taking actions when an effect is disconnected and was not enabled.\n- do not remove a session from the suspended sessions list when corresponding\neffect chain is destroyed.\n\nChange-Id: I5225278aba1ae13d0d0997bfe26a0c9fb46b17d3\n"
    },
    {
      "commit": "17741baf43818ca66c2a88db6b6e252d7abfff49",
      "tree": "e169f4f0e98a1bd9056b9e20d1793e90fa76474d",
      "parents": [
        "f12d5faa1986384f2c899b50057142a6a2e40eec"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 10 12:45:24 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 10 12:45:24 2011 -0700"
      },
      "message": "Revert \"Notify the OMX component that it\u0027s going to be used in \"secure\" mode.\"\n\nThis reverts commit 7616178271e95f009452a21ea45e7225997dc27a.\n"
    },
    {
      "commit": "129a94a569c927d4c8906a12f3de74ca0585d3f2",
      "tree": "7fecf03d81e157e82d0d6c0a633df92caeff9d91",
      "parents": [
        "beccb75d0c511950fb59500b05a591942d5c4751",
        "820a509687599edb8ff1a7577de8b9295f416263"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 09 15:23:19 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 09 15:23:19 2011 -0700"
      },
      "message": "Merge changes Ie06e73e5,I7ac6b5b0\n\n* changes:\n  free all buffers when ANativeWindow::disconnect is called\n  return correct value from query after connecting a surface\n"
    },
    {
      "commit": "3a34befc6fb04a4945a849e8bda8b84e4bf973fe",
      "tree": "80dee67385fb78763b2c25f6dce9ed122bfd9aee",
      "parents": [
        "a1f10e8959cd4656aedb2613e855342102e59555"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 02 13:33:41 2011 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 09 10:21:10 2011 -0700"
      },
      "message": "Keep effects sessions active when the caller dies.\n\nDon\u0027t remove effects until the session they are in goes away or all\nAudioEffects have been explicitly released. This allows the control\npanel process to die without stopping the effects.\n\nChange-Id: I4496e5df080230ca1af149dec95c1309ab8ea888\n"
    },
    {
      "commit": "820a509687599edb8ff1a7577de8b9295f416263",
      "tree": "046e39ca32a267f7c958327058db4b3f4308ca16",
      "parents": [
        "a1f10e8959cd4656aedb2613e855342102e59555"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 08 19:14:03 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 08 20:25:44 2011 -0700"
      },
      "message": "return correct value from query after connecting a surface\n\nthe first time a surface was connected, the values returned\nby query NATIVE_WINDOW_DEFAULT_{WIDTH|HEIGHT} and\nNATIVE_WINDOW_TRANSFORM_HINT were wrong until a call\nto queueBuffer was performed.\n\nBug: 5137366, 5121607\nChange-Id: I7ac6b5b0daa876638f6bed7c20f286a6e6d984f6\n"
    },
    {
      "commit": "a1f10e8959cd4656aedb2613e855342102e59555",
      "tree": "287ad01c9d73119bcb5368c3341741384d2a00a9",
      "parents": [
        "c3e6572e0ff535932b1f6ffb7bcf5acd891675fb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 08 15:28:21 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 08 15:28:21 2011 -0700"
      },
      "message": "Notify the OMX component that it\u0027s going to be used in \"secure\" mode.\n\nChange-Id: Id87c4b295eb38f7d24045918e73df298d7b842f9\nrelated-to-bug: 5137212\n"
    },
    {
      "commit": "f89d780df70b7fbb8465bce4913c46cca019721f",
      "tree": "56d00af18e567c8df2ecb9f41d596ad0d80cdf2d",
      "parents": [
        "6801b4dbd00b485ecdcd31b517ed885a8fa21c63"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 04 15:05:17 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 04 15:05:17 2011 -0700"
      },
      "message": "Eliminate superfluous memcpys by wrapping an ABuffer in a MediaBuffer\n\nChange-Id: I1313f117cd7cdfaf7d6ec25413a0b4b8ea495037\nrelated-to-bug: 5122973\n"
    },
    {
      "commit": "79e2ab42c38d1099bcd7c8840caa5a85c9fcb104",
      "tree": "09d1f199f95d265b1536de3b5416b481644b6f03",
      "parents": [
        "57c86189bc07d9ccb0fd044e66df736d0bf19639"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 02 17:49:50 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Aug 04 16:40:28 2011 +0800"
      },
      "message": "Add camera bayer image format.\n\nThe API are hidden.\n\nbug:5086073\n\nChange-Id: Ic9a53e5d5007ad3f12a28406ee25098227f14cbc\n"
    },
    {
      "commit": "57c86189bc07d9ccb0fd044e66df736d0bf19639",
      "tree": "850a15dd5d48eb35aa993ceb27f3551a25622803",
      "parents": [
        "40cdc56efa47580d89a93750cefecb8ccbaf9a72"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sat Jul 30 05:00:37 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 02 15:48:41 2011 +0800"
      },
      "message": "Pass camera frame metadata from camera service to Java.\n\nbug:4460717\nChange-Id: I2fae6e1dfca6b8f3a5ee5716fc7817f5417bf657\n"
    },
    {
      "commit": "40cdc56efa47580d89a93750cefecb8ccbaf9a72",
      "tree": "ffa29768c5a9207340027ca44cbacdc3e3b40750",
      "parents": [
        "2f53a63142801e174e6ebf79cfbcd9055d8c538b"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 02 13:20:36 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Aug 02 14:27:58 2011 +0800"
      },
      "message": "Add camera recording hint parameter.\n\nThe API is still hidden.\n\nbug:4266229\nChange-Id: I5e4c24e9e2808582aecb55ac4f1d5be3ed7e36a2\n"
    },
    {
      "commit": "cd25fed09742235fac10953b9d4b77268c695063",
      "tree": "4495bebf5ca8342877e52b5b7db78a24e47db78e",
      "parents": [
        "7fc25dd82dec8474139315b8e905f103c13406f5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 25 09:26:22 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 27 10:21:09 2011 -0700"
      },
      "message": "Bug 4599730 Get audio channel count on MediaPlayer\n\nRelated changes:\n - Fix bug in get/setParameter* to recycle Parcels when done with them.\n\nChange-Id: Iaff05e91bbd99a14fccb79d816dd873359b6ae65\n"
    },
    {
      "commit": "7fc25dd82dec8474139315b8e905f103c13406f5",
      "tree": "9c03327dbcab2d396e481deca4098924571c6f4c",
      "parents": [
        "288b66b60c9b3af3d84408885d0a4030c45eea9a"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Jul 22 02:37:11 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jul 27 05:25:35 2011 +0800"
      },
      "message": "Add camera face detection API.\n\nAPI are still hidden.\n\nbug:4460717\nChange-Id: I1a515061f141a89bd61c875257712789fb15d2d4\n"
    },
    {
      "commit": "b283ac1ac6758aba907bfe56713d279e8aafd38b",
      "tree": "457d913edc5336c480f46f7484c24536e5a9af4f",
      "parents": [
        "6e6e8a6cc9ab99ab299929fa0246e6ced64f8ce3",
        "a361483bb5dbd3bbf132c5b99b2df7d197c3fc50"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Mon Jul 25 15:00:16 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 25 15:00:16 2011 -0700"
      },
      "message": "Merge \"Adding Metadata mode to SurfaceMediaSource\""
    },
    {
      "commit": "6e6e8a6cc9ab99ab299929fa0246e6ced64f8ce3",
      "tree": "86c78dd408d72d6debb226c614b320ff0a65bf05",
      "parents": [
        "a4635b0cde4a4b7bf0f9aed6aaade60d88eb2fe6",
        "57dae99c9fcd6becd2b5ed0c53f277ba4d7dbcfc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 25 14:43:05 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 25 14:43:05 2011 -0700"
      },
      "message": "Merge \"Added APIs for audio preprocessing\""
    },
    {
      "commit": "57dae99c9fcd6becd2b5ed0c53f277ba4d7dbcfc",
      "tree": "be3ce6819f6a374f914e2c0ec5a837abfe54da5f",
      "parents": [
        "6d240dc8c5e0bc1ba43a2f5e2f4fc3b5f4ae88db"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 24 13:36:09 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 25 14:39:00 2011 -0700"
      },
      "message": "Added APIs for audio preprocessing\n\nAdded APIs to control pre processes applied on captured audio.\nThose APIs are still hidden until reviewed by API council.\n\nThree types of standard pre processes are supported:\n- Automatic Gain Control (AGC) by AutomaticGainControl class\n- Acoustic Echo Cancellation (AEC) by AcousticEchoCanceler class\n- Noise Suppression (NS) by NoiseSuppressor class\n\nA method is added to AudioEffect class to query audio pre processings\napplied by default by the platform on a given AudioRecord session ID.\n\nChange-Id: I0b9fceeb8c704dd06319c3b52b85c96fe871d51d\n"
    },
    {
      "commit": "a4635b0cde4a4b7bf0f9aed6aaade60d88eb2fe6",
      "tree": "582ec67587782f7f996bb9e874bf46e57469ac6b",
      "parents": [
        "6d240dc8c5e0bc1ba43a2f5e2f4fc3b5f4ae88db",
        "3cecf640c4daf2df616b278bd9986018c8182908"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 25 14:21:14 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 25 14:21:14 2011 -0700"
      },
      "message": "Merge \"Do not support still image capture mode for timelapse video recording\""
    },
    {
      "commit": "be1cc822304d3a29c106ad5b6f330aed3e8c5658",
      "tree": "cca08baf5327fd30c0f257738d2871484fa39f87",
      "parents": [
        "726e4527b7a750e688fec4c1e7c5f7b9a33d1623",
        "a57a9a491272aa884494b2ec7854960827a73742"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jul 24 14:40:08 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jul 24 14:40:08 2011 -0700"
      },
      "message": "Merge \"Do not wait forever for output buffers in OMXCodec.cpp and error out in case time out happens\""
    },
    {
      "commit": "726e4527b7a750e688fec4c1e7c5f7b9a33d1623",
      "tree": "06c12073a7c0919361b092d1f9a5537982077d4c",
      "parents": [
        "348a3aca420da133b2283ee12216e8e0f939e88d",
        "d35924d9928f29dcee6f5666b5bbd084640c7b34"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Jul 24 12:59:35 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jul 24 12:59:35 2011 -0700"
      },
      "message": "Merge \"QueryCodecs() signature change\""
    },
    {
      "commit": "3cecf640c4daf2df616b278bd9986018c8182908",
      "tree": "0a9a7306e8a13af5a7149471569ca73827449aee",
      "parents": [
        "77882a8deb5167235ae591e49c9dcff9abb373c1"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 29 16:56:52 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jul 24 10:33:54 2011 -0700"
      },
      "message": "Do not support still image capture mode for timelapse video recording\n\nrelated-to-bug: 4973779\n\nChange-Id: Ica665217ab10247b2242acc4e93d4fe9f83e3f45\n"
    },
    {
      "commit": "a361483bb5dbd3bbf132c5b99b2df7d197c3fc50",
      "tree": "412284fb2abbc8afd9255cd01d218cb63fe60e4c",
      "parents": [
        "b33f3407bab0970a7f9241680723a1140b177c50"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Jul 14 14:37:47 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Jul 22 19:33:55 2011 -0700"
      },
      "message": "Adding Metadata mode to SurfaceMediaSource\n\nSurfaceMediaSource operates in metadata mode only, i.e. just the\nmetadata is stored in videobuffers. SurfaceMediaSource passes the Gralloc\nbuffer handle along with a 4 byte \u0027type\u0027 (indicating that the metadata\nis of type GrallocSource) to the encoder as opposed to the\nGrallocBuffer itself.\n\nRelated to bug id: 4529323\n\nChange-Id: I83aebc0dd10f317658cdf70be5802dfc35a1e72d\n"
    },
    {
      "commit": "77882a8deb5167235ae591e49c9dcff9abb373c1",
      "tree": "92f1198bc7488f47b2160d10e772c3823ed7fb40",
      "parents": [
        "29a142c7237821b6dc7bd1e8b56bb1efdc56767b",
        "b33f3407bab0970a7f9241680723a1140b177c50"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Jul 22 16:42:41 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 22 16:42:41 2011 -0700"
      },
      "message": "Merge \"Connect MediaRecorder Native to SurfaceMediaSource\""
    },
    {
      "commit": "d35924d9928f29dcee6f5666b5bbd084640c7b34",
      "tree": "a9aee28b7cb355ec52034e1212794e896a18767f",
      "parents": [
        "7dff060f29858d6db2464845bb9097ac5960bbe6"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 22 09:52:39 2011 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 22 14:51:51 2011 -0700"
      },
      "message": "QueryCodecs() signature change\n\nRestore QueryCodecs() signature exactly as used by third-party libs.\nAdd an alternative function to select HW only codecs.\n\nChange-Id: Ibb2cb4dd36fc0c6599eb93aa5751c216397e3b6f\n"
    },
    {
      "commit": "29a142c7237821b6dc7bd1e8b56bb1efdc56767b",
      "tree": "93907731b48b396bbacad20b8be96aa67c0f83b8",
      "parents": [
        "85eafc680a0bf5e0253cf611ac525769fc9bef3e"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Jul 19 12:08:33 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jul 22 14:20:41 2011 -0700"
      },
      "message": "SurfaceTexture: add the abandon method.\n\nThis change adds the \u0027abandon\u0027 method to the SurfaceTexture C++ class.\nThis method may be used to put the SurfaceTexture in an abandoned state,\ncausing all ISurfaceTexture methods to fail.\n\nChange-Id: Ibd261f7b73f44e2bec36a8508bf92113cfb7cf95\n"
    },
    {
      "commit": "b33f3407bab0970a7f9241680723a1140b177c50",
      "tree": "8c49b51867769176b088f5ee2dbecd69c188464f",
      "parents": [
        "fe388eedca9f46ed3fee9579258acecd93e88641"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Jul 01 17:39:39 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Jul 22 14:17:25 2011 -0700"
      },
      "message": "Connect MediaRecorder Native to SurfaceMediaSource\n\nMaking a connection from MediaRecorder Native layer to the\nSurfaceMediaSource for the purpose of encoding GL Frames. This will be\ncalled from the java side inside the Mobile Filter Framework.\n\nThe mediarecorder native layer (client), when set the videosource to\noption VIDEO_SOURCE_FRAMES, asks the StageFrightRecorder on the mediaserver\nside to create a SurfaceMediaSource object and pass it back as a\nsp\u003cISurfaceTexture\u003e object. Using that, the client side will dequeue and\nqueue buffers. Connecting the GL Frames to the obtained\nsp\u003cISurfaceTexture\u003e is not part of this CL.\n\nRelated to bug id: 4529323\n\nChange-Id: I651bec718dd5b935779e7d7a050b841c2d0b0fcd\n"
    },
    {
      "commit": "85eafc680a0bf5e0253cf611ac525769fc9bef3e",
      "tree": "c5e69ab10dd15be3b464db81b8f4e9382d8ea8e8",
      "parents": [
        "fe388eedca9f46ed3fee9579258acecd93e88641"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jul 22 14:00:37 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jul 22 14:02:09 2011 -0700"
      },
      "message": "SurfaceMediaSource: remove getAllocator method\n\nThis change removes the getAllocator method from SurfaceMediaSource\nbecause that method is no longer a part of the ISurfaceTexture\ninterface.\n\nChange-Id: I0e2f0bc3bc1c8cd3c1b4b14246f07b9b4e3066c3\n"
    },
    {
      "commit": "fe388eedca9f46ed3fee9579258acecd93e88641",
      "tree": "cf42a7744c9f75c78ab382a210a9217204e3d4d0",
      "parents": [
        "10b7197cf9016093bdff20b6f7768543fd1c5720",
        "1a2fafbaa36390a06cc9a066fcbe147c8c47ea77"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Jul 22 11:49:36 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 22 11:49:36 2011 -0700"
      },
      "message": "Merge \"Renaming SurfaceEncoder to SurfaceMediaSource\""
    },
    {
      "commit": "10b7197cf9016093bdff20b6f7768543fd1c5720",
      "tree": "1e2a7d50f8b2dc8638ab5c5852e0c19d1e20b472",
      "parents": [
        "10681df94d517bb7186fff927f345fa2e01de8e1",
        "3399b7267185646c69b04352211fca4fad9d7547"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Jul 22 11:49:21 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 22 11:49:21 2011 -0700"
      },
      "message": "Merge \"Adding SurfaceEncoder for encoding FilterFrames\""
    },
    {
      "commit": "0683eba6b35c396c21f10e926709f2f8fc05f090",
      "tree": "2cb1f37218e73941c6f7bb575bb972696e362ef4",
      "parents": [
        "59d49c0b3b56b24c5b6d98cdfdcd75c537322f2e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jul 18 13:47:55 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 22 08:17:41 2011 -0700"
      },
      "message": "Retry datasource fetches a few times before giving up (NuCachedSource2).\n\nChange-Id: I147fc18ef55bc89d2e2fee69b7869c45abbfdd6b\nrelated-to-bug: 3405354\n"
    },
    {
      "commit": "1a2fafbaa36390a06cc9a066fcbe147c8c47ea77",
      "tree": "abbaad7cc458df1a1adf0e63d47ce0e9b4de63fa",
      "parents": [
        "3399b7267185646c69b04352211fca4fad9d7547"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Jun 30 15:30:03 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Jul 21 17:12:50 2011 -0700"
      },
      "message": "Renaming SurfaceEncoder to SurfaceMediaSource\n\nRelated to bug id: 4529323\n\nChange-Id: Id820d45a536bd2c65e0a59def564eb5b3ea4a71c\n"
    },
    {
      "commit": "3399b7267185646c69b04352211fca4fad9d7547",
      "tree": "eb0509a8f964517d9d75b6c534bdf84955a61393",
      "parents": [
        "59d49c0b3b56b24c5b6d98cdfdcd75c537322f2e"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Jun 10 18:30:30 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Jul 21 17:12:50 2011 -0700"
      },
      "message": "Adding SurfaceEncoder for encoding FilterFrames\n\nAdding SurfaceEncoder which can be used to encode\ncustom frame data. In a sense, it is reverse\nof what SurfaceTexture does.\n\nSurfaceEncoder takes in frames from a native window and\npasses them to an encoder, thus acting like a MediaSource.\nIt uses GRAlloc buffers underneath for passing data.\nThe client side sets the geometry, format in the beginning,\nwhich cannot be changed while the recording is going on.\n\nCurrently, there is no common pixel format that both\nGRAlloc and HAL understand.\nAlso, the encoder cannot encode using the data from the GRAlloc\nbuffers.\n\nThe SurfaceEncoder_test examines mainly the buffer passage\nsince true encoding cannot be done at this point.\nSimpleDummyRecorder \u0027reads\u0027 the frames in the same thread\nas the start(), whereas DummyRecorder \u0027reads\u0027 in a separate\nthread much like the MPEG4Writer. The test with DummyRecorder\nis much closer to the real encoding implementation.\n\nRelated to bug id: 4529323\n\nChange-Id: I58ec19a150f8fe4d6195196dc44f55002b46c7c8\n"
    },
    {
      "commit": "59d49c0b3b56b24c5b6d98cdfdcd75c537322f2e",
      "tree": "db0e1d5a346345060677f1cb3cf659ed1ae3011a",
      "parents": [
        "a1d92359056176b6f6646efc918e0587e3de2b6f"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Tue Jul 19 17:14:53 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Jul 21 17:12:49 2011 -0700"
      },
      "message": "Adding AndoirdOpaque Colorformat to OMX\n\nAdding an enum to indicate an android opaque OMX\ncolorformat. This will inform the encoder that\nthe actual colorformat will be relayed by the\nFrames read from the GRAlloc Buffers\n\nRelated to bug id: 4529323\n\nChange-Id: Iddc5bd1ce8ca2b2506a57aadf5fc91ff0c7b78ef\n"
    },
    {
      "commit": "a1d92359056176b6f6646efc918e0587e3de2b6f",
      "tree": "cafa074b61ede4038193aa40392257665e64259f",
      "parents": [
        "3a1f8a404b38aaa82d57c77cb83e48665e66e553",
        "cabd5f867ec69c0dfe8333cba46323cb58917402"
      ],
      "author": {
        "name": "Hong Teng",
        "email": "hongteng@google.com",
        "time": "Thu Jul 21 11:13:43 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 21 11:13:43 2011 -0700"
      },
      "message": "Merge \"fix for issue  4142219 Don\u0027t hard code platform-specific limitations-jni/java part\""
    },
    {
      "commit": "3a1f8a404b38aaa82d57c77cb83e48665e66e553",
      "tree": "9e514035df9287a884ea0e8fdb8e1f00d3786052",
      "parents": [
        "0cd7889d37cc60300dceaa975dab041fd35e34fd",
        "7188e55f54a43c55fd6b96454720c447f1dc454e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 20 18:03:47 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 20 18:03:47 2011 -0700"
      },
      "message": "Merge \"Untangle MediaScanner error handling. Bug: 5056917\""
    },
    {
      "commit": "0cd7889d37cc60300dceaa975dab041fd35e34fd",
      "tree": "0ba39dc6cb61ae91775f6f9c8b6bc2bf3561b018",
      "parents": [
        "afa9771b5abe7646077a8353f8bf710506803f7a",
        "7c7f10bd4fda9a084e5e7f0eb3a040dfcbf01745"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 20 17:45:37 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 20 17:45:37 2011 -0700"
      },
      "message": "Merge \"Audio framework: support for audio pre processing\""
    },
    {
      "commit": "7188e55f54a43c55fd6b96454720c447f1dc454e",
      "tree": "ce77a06ad12fc66ce180fdbf882c011393d472d9",
      "parents": [
        "50d42da58a88dcdb082cff079766af71c0871470"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 20 16:38:43 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 20 17:33:13 2011 -0700"
      },
      "message": "Untangle MediaScanner error handling.\nBug: 5056917\n\nChange-Id: I1a7a73579e3ba4e9709459329fc1901a28b0f4b1\n"
    },
    {
      "commit": "cabd5f867ec69c0dfe8333cba46323cb58917402",
      "tree": "d6501c73c3f5eef40c5232b6f2bef7afeadb7dea",
      "parents": [
        "7dff060f29858d6db2464845bb9097ac5960bbe6"
      ],
      "author": {
        "name": "Hong Teng",
        "email": "hongteng@google.com",
        "time": "Wed Jul 06 18:33:09 2011 -0700"
      },
      "committer": {
        "name": "Hong Teng",
        "email": "hongteng@google.com",
        "time": "Wed Jul 20 16:51:39 2011 -0700"
      },
      "message": "fix for issue  4142219\nDon\u0027t hard code platform-specific limitations-jni/java part\n\nChange-Id: Icde261b1caf29a8cf552884c97f3c9d0b41741a3\n"
    },
    {
      "commit": "4a621e6d3438876eb1d9001719c688a2329ee675",
      "tree": "10398f8db30ff9b7debc46edfb713037318669a6",
      "parents": [
        "5f05b87b673093064e64bb5ac532555f881f0ddc",
        "61c7ef5bde2c7ed94a078396aa65da67b47e5402"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jul 18 15:18:43 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 18 15:18:43 2011 -0700"
      },
      "message": "Merge \"MediaPlayer: add ANativeWindow (dis)connect calls\""
    },
    {
      "commit": "db4d3717b4677b3239546a248dc0a7d82db4ba50",
      "tree": "31666bc44c0df4ae95bf212299c571eb3be1ed09",
      "parents": [
        "67a124dcac0578aed94aebf451675a5f4c8a1e4e",
        "df57a0d6d3b0609e69ff79afa63fe44dfa91f6f5"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jul 18 11:07:47 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 18 11:07:47 2011 -0700"
      },
      "message": "Merge \"Add option to query hardware decoders only\""
    },
    {
      "commit": "df57a0d6d3b0609e69ff79afa63fe44dfa91f6f5",
      "tree": "03f9b598a4e9b41242f8a6fed36a2c5a0f994d03",
      "parents": [
        "350d9162155e1f3eab1821f5eeed762faa01f0cc"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Jul 17 16:35:11 2011 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jul 18 10:57:50 2011 -0700"
      },
      "message": "Add option to query hardware decoders only\n\nAdd an option to OMXCodec::QueryCodecs() to filter out\n software codecs.\n\nUpdate stagefright command line tool to list the roles of codecs.\n\nChange-Id: Icddb79118c30fe13cc3aea20f340174cc082c4e0\n"
    },
    {
      "commit": "7c7f10bd4fda9a084e5e7f0eb3a040dfcbf01745",
      "tree": "eb67cd14e679d97a9b866a0410d8e582f4639274",
      "parents": [
        "67a124dcac0578aed94aebf451675a5f4c8a1e4e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 17 21:29:58 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 18 09:42:57 2011 -0700"
      },
      "message": "Audio framework: support for audio pre processing\n\nAudio effect framework is extended to suport effects on\noutput and input audio path.\n\nAudioFlinger: Support for audio effects and effect chains is\nmoved from PlaybackThread class to ThreadBase class so that\nRecordThread can manage effects.\nEffects of type pre processing are allowed on record thread\nonly. When a pre processing is enabled, the effect interface handle is\npassed down to the input stream so that the audio HAL can call the\nprocess function. The record thread loop calls the effect chain process\nfunction that will only manage the effect state and commands and skip the\nprocess function.\n\nAudioRecord: The audio session is allocated before calling getInput() into\naudio policy serice so that the session is known before the input theead is\ncreated and pre processings can be created on the correct session.\n\nAudioPolicyService: default pre processing for a given input source are\nloaded from audio_effects.conf file.\nWhen an input is created, corresponding effects are created and enabled.\n\nChange-Id: Id17119e0979b4dcf189b5c7957fec30dc3478790\n"
    },
    {
      "commit": "a57a9a491272aa884494b2ec7854960827a73742",
      "tree": "f3a37638b79d9083ecd09dce607086155c84cdf8",
      "parents": [
        "4378ace44b9de477608a6c2fbf7134bc0345555f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 15 15:25:36 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 15 15:32:21 2011 -0700"
      },
      "message": "Do not wait forever for output buffers in OMXCodec.cpp and error out in case time out happens\n\no Deal with vendor codec hang bug\n\nChange-Id: Ic8449afd43045f09a9e0bd3d1be9a320e59ccabe\n"
    },
    {
      "commit": "61c7ef5bde2c7ed94a078396aa65da67b47e5402",
      "tree": "7122054e8136934061ff3b27981168f903db4c7f",
      "parents": [
        "9b88b72ee2c3fd01fb46e77b7e6d80f3bd52e958"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jul 13 12:59:34 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jul 14 17:48:33 2011 -0700"
      },
      "message": "MediaPlayer: add ANativeWindow (dis)connect calls\n\nThis change makes MediaPlayer connect to the ANativeWindow to which it\nis going to render video frames and disconnect when it is done.\n\nChange-Id: I88ab5c2fe62493aabdc84a283ff31634f795d415\n"
    },
    {
      "commit": "15825c7b6f6b19092a5949b4e46aea4fa229932c",
      "tree": "d9f7ac9876c2dde68c6cc962109a28d1c24231a6",
      "parents": [
        "2864c9a3a29311beb5ef96d8fc3c7745df2dd2cd",
        "457116d3a01618acf9a875020ca5860551ba03a6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 14 09:59:24 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 14 09:59:24 2011 -0700"
      },
      "message": "Merge \"Support profile and level query for SW video decoders\""
    },
    {
      "commit": "49c8340bd83cc5d64b1fcaed4afbda5fd4d74a3e",
      "tree": "6a24d306f6b16e2e70ebc7318bad26a616983c42",
      "parents": [
        "0ee92ffd74ac8594b68aa3c73b341dc0c6330b3f",
        "dab718bba3945332dc75e268e1e7f0fe2eb91c4a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 14 09:09:07 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 14 09:09:07 2011 -0700"
      },
      "message": "Merge \"Remove legacy http support from stagefright, chromium is the new hotness.\""
    },
    {
      "commit": "81eedd1746be590d5d506dfb9ff23619f9d9898f",
      "tree": "caeac020149ff784bea22015b30232543a35c791",
      "parents": [
        "9d35d0c4a1371d52c4ce4d34575967026d9135af"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jul 13 11:06:57 2011 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jul 13 19:45:44 2011 -0400"
      },
      "message": "Remove some #ifdef HAVE_ANDROID_OS that were needed for the simulator build\n\nChange-Id: I13d9f251f86c05ae5405f37adbf6b8e9660935ba\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "dab718bba3945332dc75e268e1e7f0fe2eb91c4a",
      "tree": "a1c5582fc94961c13093197f5f728ae7194c931e",
      "parents": [
        "42e549e4ab54802d788c43e3a04a85b7a1a95e97"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 13 15:45:01 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 13 15:45:01 2011 -0700"
      },
      "message": "Remove legacy http support from stagefright, chromium is the new hotness.\n\nChange-Id: I6725d42d38b91e6a1cbca43174870f445aeb3d99\n"
    },
    {
      "commit": "42e549e4ab54802d788c43e3a04a85b7a1a95e97",
      "tree": "6bf620f639533f345089df3902a93109028bed4e",
      "parents": [
        "9cded98816c40fd55053b1e38fc7fd8a68da8866"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 13 09:36:11 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 13 09:47:09 2011 -0700"
      },
      "message": "Enable signalling of a stream discontinuity involving a format-change\n\nthrough IStreamListener.\n\nChange-Id: Ic0409cdc4891ad26b61f2f98bdda3c7fb2e2de6a\nrelated-to-bug: 5022434\n"
    },
    {
      "commit": "5a5f9d636ed6c116993c6cad5abdad7a734992e8",
      "tree": "5810d32bd5d743162b37f021571c24cd3124c007",
      "parents": [
        "a5a0cea84cdf116f4de4f812c26be73e70a260e6"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 12 09:28:17 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jul 12 09:35:40 2011 -0700"
      },
      "message": "Make MetadataBufferType.h C-friendly\n\nChange-Id: I4388d8f6cf30f08858aec73aa971647feae4a5e3\n"
    },
    {
      "commit": "3623b481fa2734b95d4553dafabca931e5d0502a",
      "tree": "118a1efa62a0f4235276db5be5f310737ec55bd0",
      "parents": [
        "fcf0efd3919435cb27091a8af6db3de35b6899ba",
        "411ba422e3635d534928ffd81abf54f4f291c739"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 11 12:56:11 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 11 12:56:11 2011 -0700"
      },
      "message": "Merge \"Do not wait for unlaunched threads in stop()\""
    },
    {
      "commit": "411ba422e3635d534928ffd81abf54f4f291c739",
      "tree": "f3dbe434a44ee5c5d810b0ceb59f0382481cf9a7",
      "parents": [
        "9b186a44051d0ef7f4ca67150f204299b15a448e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 08 16:51:16 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 11 12:51:21 2011 -0700"
      },
      "message": "Do not wait for unlaunched threads in stop()\n\nChange-Id: If681749753bb96ee98c1539658cfd919eeb0cb65\n"
    },
    {
      "commit": "457116d3a01618acf9a875020ca5860551ba03a6",
      "tree": "16ea85295b56ef3cc8885c7507841505a9a744e7",
      "parents": [
        "9b186a44051d0ef7f4ca67150f204299b15a448e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 11 12:29:10 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jul 11 12:29:10 2011 -0700"
      },
      "message": "Support profile and level query for SW video decoders\n\nChange-Id: I9c20db128be96cd36cf2083e08e8c21f5e6d1fdf\n"
    },
    {
      "commit": "ae4c1ac6401185539c03ce0819e174fd1b04b136",
      "tree": "ae4becf79ad28f3f47136894468fa090bc893d79",
      "parents": [
        "9b186a44051d0ef7f4ca67150f204299b15a448e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 08 17:59:29 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jul 10 14:19:26 2011 -0700"
      },
      "message": "Release camera if CameraSource::start() has not been called\n\nChange-Id: I2f7e4b8501db3d80b9aa6f99d896d778bec29e8c\n"
    },
    {
      "commit": "6d8b694d999e9be7d5dcc336535832a80fb6f61f",
      "tree": "4fcdbf4a7f7fa24a16d7bf27816922031870102f",
      "parents": [
        "5895e970ae119210773a5184c019178e2516b132"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 24 07:01:31 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 07 15:25:51 2011 -0700"
      },
      "message": "Moved and renamed effect API header files\n\nMoved specific effect header files to\nsystem/media/audio_effects/include/audio_effects\nand renamed to lower case (effect_xxx.h).\n\nChange-Id: Icfc2264bfd013cab0395d7e310ada636b9fe3621\n"
    },
    {
      "commit": "5895e970ae119210773a5184c019178e2516b132",
      "tree": "c5e38d96737f30c0f5bf3a086192a9fe0b92bc5f",
      "parents": [
        "d26edf9435bf5bdb43b5a1f71192bb1477a1cc7f",
        "0d0edfb024f65f7e1097bf1814ae229ce9cb367d"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Jul 06 09:22:05 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 06 09:22:05 2011 -0700"
      },
      "message": "Merge \"- Retrieve is_drm in MediaMetadataRetriever. - Add one more column in MediaStore to indicate whether a   media file is drm-protected. - Remove old DRM code from Ringtone - Use the new DRM code in RingtoneManager\""
    },
    {
      "commit": "0d0edfb024f65f7e1097bf1814ae229ce9cb367d",
      "tree": "b8995cf55d54f9f357b414a4b3285ad2d16285d9",
      "parents": [
        "69c2b29eb72396068b9d116c2a54f283025c7d6b"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Jun 27 11:09:00 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Jul 01 16:52:28 2011 -0700"
      },
      "message": "- Retrieve is_drm in MediaMetadataRetriever.\n- Add one more column in MediaStore to indicate whether a\n  media file is drm-protected.\n- Remove old DRM code from Ringtone\n- Use the new DRM code in RingtoneManager\n\nChange-Id: I1311fd1c04841c2cd47df6c901589966cf55a692\n"
    },
    {
      "commit": "13b263c0fb2f03f12089150c3d05b545c25257ca",
      "tree": "4ed42309ed640d52f1e03b29416df4c53d940278",
      "parents": [
        "ea317826269a1faecc2c61b76e2dab9bb7e70a62",
        "9b80c2bdb205bc143104f54d0743b6eedd67b14e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 01 14:28:10 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 01 14:28:10 2011 -0700"
      },
      "message": "Merge \"Charge network traffic to the uid of the process using the MediaPlayer.\""
    },
    {
      "commit": "3eeab1a71b7e222b60c5413916c2f3c7ec61e37d",
      "tree": "98ebdc83ce88c0cfad215fb0c549dab998cd3822",
      "parents": [
        "577dd43e0a80b4ccc621d52f06fea0761fc7f602",
        "32eea24fe93fd43e8078b1080db17304b27ed95a"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 01 14:03:45 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 01 14:03:45 2011 -0700"
      },
      "message": "Merge \"Add extended metadata buffer support by defining different types of metadata buffers\""
    },
    {
      "commit": "9b80c2bdb205bc143104f54d0743b6eedd67b14e",
      "tree": "7a035b1bbc67096fa775d41544f420a5eb6e0487",
      "parents": [
        "cebcdaef5b559f4db2a9d8b305d9d7da03525b62"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 30 15:47:02 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 01 13:18:43 2011 -0700"
      },
      "message": "Charge network traffic to the uid of the process using the MediaPlayer.\n\nChange-Id: I2bcb54b8232afd3fc7ee16289f37c7a7b3f23067\nrelated-to-bug: 4517282\n"
    },
    {
      "commit": "0bb6b4c5da2451ee0973372b0a3858b15c742689",
      "tree": "968bcc86bf7c08aa943b4eb2286921dac8e7fbe0",
      "parents": [
        "cebcdaef5b559f4db2a9d8b305d9d7da03525b62"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 29 15:53:28 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 01 09:28:51 2011 -0700"
      },
      "message": "Support a \"secure input buffer\" mode for use by Widevine DRM in OMXCodec.\n\nChange-Id: Ie03b285265099dbac9b12f3f41d9ad758d0b50ad\n"
    },
    {
      "commit": "2df788fb0c402938f827bf9c9ce2ca3ab1dcd464",
      "tree": "9d0b50a3de930a214b706ffb5dd524a6dc9d4153",
      "parents": [
        "3e1763ecdf14769a534f75e94a56785f63174b47"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 28 19:09:31 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 29 15:05:41 2011 -0700"
      },
      "message": "SF transactions are now O(1) wrt IPC instead of O(N).\n\nChange-Id: I57669852cbf6aabae244ea86940a08a5a27ffc43\n"
    },
    {
      "commit": "32eea24fe93fd43e8078b1080db17304b27ed95a",
      "tree": "f39ec5198867e6c4e85601c7d58512afd1916505",
      "parents": [
        "0a932b40bdc8c427ff275426ee19960d8648021d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 27 16:30:55 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 28 17:35:02 2011 -0700"
      },
      "message": "Add extended metadata buffer support by defining different types of metadata buffers\n\nChange-Id: I6aa6b5da004c240c9986f6b9036950e234c8bd42\n"
    },
    {
      "commit": "3e1763ecdf14769a534f75e94a56785f63174b47",
      "tree": "f93cb501a1984cd58dc0c2bf96f252595847a7e8",
      "parents": [
        "0a932b40bdc8c427ff275426ee19960d8648021d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 27 15:47:56 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 28 14:44:57 2011 -0700"
      },
      "message": "Support for writing output data to a provided callback function instead of a file\n\nin MPEG2TSWriter\n\nChange-Id: Ie54a5677c7b789a973aa50b7f197c6db238425bc\n"
    },
    {
      "commit": "1065b3f17d3048948e7d522049d1980b90df3dc1",
      "tree": "dbe2c8d5a540ec07e7ef74929808401b71004cd5",
      "parents": [
        "1e06f435434681f8750cc21763868fd025e8480e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 28 10:51:41 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 28 10:51:41 2011 -0700"
      },
      "message": "Multiple changes to ACodec/codec tools:\n\nMake sure sf2 does not coalesce input buffers, generalize ACodec\u0027s codec\ninstantiation based on OMXCodec\u0027s list of eligible component names.\n\nSome changes/additions to the \"sf2\" commandline tool\n\nMake surface options consistent with stagefright tool, i.e. use \u0027-S\u0027 instead of \u0027-s\u0027\nNew option \u0027-R\u0027 renders surface-allocated buffers.\n\nAlso fixes a longstanding bug introduced when generalizing from surfaces to native windows that never used surface-allocated buffers in sf2 even when the option was specified.\n\nChange-Id: I59fd533f0f6ef0337ebe2806ddc81a46878eb3ae\n"
    },
    {
      "commit": "4ca2c7c913f8bd4ada13aca56d36045d42d1e00f",
      "tree": "d65d0cadafa63bd9ab2aa9e8fbb6704b27a13fbc",
      "parents": [
        "c5a57efb706ec79032fc09c43b16d11ed0876604"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jun 01 17:22:24 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Jun 27 15:44:57 2011 +0800"
      },
      "message": "Add framework support for camcorder zoom.\n\nThe purpose of ICameraRecordingProxy and ICameraRecordingProxyListener is to\nallow applications using the camera during recording.\n\nCamera service allows only one client at a time. Since camcorder application\nneeds to own the camera to do things like zoom, the media recorder cannot\naccess the camera directly during recording. So ICameraRecordingProxy is a proxy\nof ICamera, which allows the media recorder to start/stop the recording and\nrelease recording frames. ICameraRecordingProxyListener is an interface that\nallows the recorder to receive video frames during recording.\n\nICameraRecordingProxy\n  startRecording()\n  stopRecording()\n  releaseRecordingFrame()\n\nICameraRecordingProxyListener\n  dataCallbackTimestamp()\n\nThe camcorder app opens the camera and starts the preview. The app passes\nICamera and ICameraRecordingProxy to the media recorder by\nMediaRecorder::setCamera(). The recorder uses ICamera to setup the camera in\nMediaRecorder::start(). After setup, the recorder disconnects from camera\nservice. The recorder calls ICameraRecordingProxy::startRecording() and\npasses a ICameraRecordingProxyListener to the app. The app connects back to\ncamera service and starts the recording. The app owns the camera and can do\nthings like zoom. The media recorder receives the video frames from the\nlistener and releases them by ICameraRecordingProxy::releaseRecordingFrame.\nThe recorder calls ICameraRecordingProxy::stopRecording() to stop the\nrecording.\n\nThe call sequences are as follows:\n1. The app: Camera.unlock().\n2. The app: MediaRecorder.setCamera().\n3. Start recording\n   (1) The app: MediaRecorder.start().\n   (2) The recorder: ICamera.unlock() and ICamera.disconnect().\n   (3) The recorder: ICameraRecordingProxy.startRecording().\n   (4) The app: ICamera.reconnect().\n   (5) The app: ICamera.startRecording().\n4. During recording\n   (1) The recorder: receive frames from ICameraRecordingProxyListener.dataCallbackTimestamp()\n   (2) The recorder: release frames by ICameraRecordingProxy.releaseRecordingFrame().\n5. Stop recording\n   (1) The app: MediaRecorder.stop()\n   (2) The recorder: ICameraRecordingProxy.stopRecording().\n   (3) The app: ICamera.stopRecording().\n\nbug:2644213\n\nChange-Id: I15269397defc25cbbcae16abc071c8349c123122\n"
    },
    {
      "commit": "cb62bc3fe54222cf05824e6f98fefafee552049a",
      "tree": "8d46602d08923ea8b04f2a8e6d23a8cfeafba9b7",
      "parents": [
        "8e51d58fca9b7669f271378f9245e180f4360cbc"
      ],
      "author": {
        "name": "Anu Sundararajan",
        "email": "sanuradha@ti.com",
        "time": "Wed Jun 22 12:24:46 2011 -0500"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Jun 23 18:35:24 2011 -0700"
      },
      "message": "Integrating TI OMAP4 Video Decoder\n\nAdded the video decoder component name to kDecoderInfo.\nSet the quirks for the video decoder.\nAdd a new color format to OMX_IVCommon.h to denote TI OMAP4 NV12 color format.\nAdded a color conversion routine [ from NV12 to RGB ] for thumbnail generation.\n\nChange-Id: I6b23c36441645ef65ec7406ba262d19f89cf64fd\nSigned-off-by: Devaraj Rangasamy \u003cdev@ti.com\u003e\nSigned-off-by: Sreenidhi Koti \u003csreenidhi@ti.com\u003e\nSigned-off-by: Anu Sundararajan \u003csanuradha@ti.com\u003e\n"
    },
    {
      "commit": "8e51d58fca9b7669f271378f9245e180f4360cbc",
      "tree": "22a6d99c3bfb7f41b79aee1e7cffe4c0e76df865",
      "parents": [
        "06371d97f549981cd2d524c8868fde2ef10dc1e9"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Jun 23 10:39:51 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Jun 23 15:28:36 2011 -0700"
      },
      "message": "- Public part of the Metadata API.\n- Modify the media framework test for Metadata.\n\nChange-Id: Ib8fa4991f114e1bb88a17ca662844b9b8e1d0faf\n"
    },
    {
      "commit": "3b573f7bf1c5736d500e39013b8d32478a1429e6",
      "tree": "620cf88dc1ca7ffaca6c66819278d669a2e977bd",
      "parents": [
        "6ef9a104959c1d15232fe3a319e4a270eed3ddb5"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue May 31 16:08:47 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Jun 22 11:32:19 2011 -0700"
      },
      "message": "Timed text display format support:\n1. Extract 3GPP global format descriptions\n2. Extract 3GPP local format descriptions\n3. Define data structure (TimedText) for applications to\nretrieve the format metadata\n\nChange-Id: I6eac2a78df29ee15beee456656331fdd83b24e8e\n"
    },
    {
      "commit": "3f1545d22a71f960c9598a24e7e48ec16dd16267",
      "tree": "82184e372100ca1daa68d6b98e2bc8d9a40214e0",
      "parents": [
        "04cf3b24dcfefb2da0864adde0f51a7f49c351f4",
        "7394a4f358fa9908a9f0a7c954b65c399f4268e6"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Jun 13 19:43:59 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 13 19:43:59 2011 -0700"
      },
      "message": "Merge \"audio: update for audio/audio_policy header names/locations\""
    },
    {
      "commit": "b250340f83edde0f2b3a10b380c519c209fc91e9",
      "tree": "1f1e50ad06680edaa487b1563b5c082b274eecd0",
      "parents": [
        "4b85d1750153085fe5d076b67802dfb1ea2bbb13",
        "965e4239ca1cf6c824c1f8ce23116f9ba8cf6ebd"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 13 18:47:03 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 13 18:47:03 2011 -0700"
      },
      "message": "Merge \"Add B frame support for MPEG4Writer\""
    },
    {
      "commit": "7394a4f358fa9908a9f0a7c954b65c399f4268e6",
      "tree": "76bde6cdaf308c987975d57a5a0d0794613ad65d",
      "parents": [
        "afcedc9e6f17d8213d9bd8f6c36643dcc816d0ef"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Jun 13 18:16:26 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Jun 13 18:16:26 2011 -0700"
      },
      "message": "audio: update for audio/audio_policy header names/locations\n\nChange-Id: I36c49352eee57559403cd1597f56a8485a360289\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "965e4239ca1cf6c824c1f8ce23116f9ba8cf6ebd",
      "tree": "96463de989057f23bb9c9670e434282ba2778185",
      "parents": [
        "afcedc9e6f17d8213d9bd8f6c36643dcc816d0ef"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 07 19:45:54 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Jun 13 17:06:29 2011 -0700"
      },
      "message": "Add B frame support for MPEG4Writer\n\no requires the support of negative ctts duration values (ctts version 1)\n\nChange-Id: Ib14130c9359c3bff3c76f20a7380d468a065dcaf\n"
    },
    {
      "commit": "4b85d1750153085fe5d076b67802dfb1ea2bbb13",
      "tree": "207cba1b821ba6c22bfc11e7ae9096e74608f558",
      "parents": [
        "afcedc9e6f17d8213d9bd8f6c36643dcc816d0ef"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:20:59 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 13 15:51:35 2011 -0700"
      },
      "message": "unify SurfaceTexture and Surface\n\nAdd the concept of synchronous dequeueBuffer in SurfaceTexture\nImplement {Surface|SurfaceTextureClient}::setSwapInterval()\nAdd SurfaceTexture logging\nfix onFrameAvailable\n"
    },
    {
      "commit": "a0b1d4b161599c2bb2a47119e50c51e75bbe980e",
      "tree": "806d5dbe250fbd8069bff8bcafffc730736fef8d",
      "parents": [
        "26adde897188059057b3ffcfde1d60171fc6888c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 07 15:52:25 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 08 16:04:26 2011 -0700"
      },
      "message": "Make dumpsys(media.player) more useful by having AwesomePlayer populate it.\n\nChange-Id: I12ba7d542331a8293d67a0d47378b8be4f777759\n"
    },
    {
      "commit": "6e49bd393f263bd17a65eb5c1a0e649933c78504",
      "tree": "d785db5e5a82727a2403c2763e6aa7d44119209e",
      "parents": [
        "5e7271d6e24efb891e0de141a06228c99866f49f",
        "0c08325b66b74e1353d84662c684e4380bb8292f"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Jun 07 04:05:35 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 07 04:05:35 2011 -0700"
      },
      "message": "Merge \"Improve android.hardware.Camera.Area javadoc.\""
    },
    {
      "commit": "0c08325b66b74e1353d84662c684e4380bb8292f",
      "tree": "ac015cda54191bb8dbf38d06cddff448a2905fbe",
      "parents": [
        "158b194da537c18a6ad1d7ef3cd63c87b2310269"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Jun 07 18:23:14 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Jun 07 19:00:03 2011 +0800"
      },
      "message": "Improve android.hardware.Camera.Area javadoc.\n\nbug:4553469\nChange-Id: Iae88af354fee4925cb7978572c27f6dd5595ca59\n"
    },
    {
      "commit": "5e7271d6e24efb891e0de141a06228c99866f49f",
      "tree": "558d5859f9964e4ee7e9e0d2cc1702b98aad437d",
      "parents": [
        "5ffc7628f0efa122207eec86473c3e23dbd17445"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Jun 06 16:36:05 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Jun 06 18:04:17 2011 -0700"
      },
      "message": "CameraParameters: add PIXEL_FORMAT_RGBA8888\n\nChange-Id: I2780e936f5b4628d506ac4e6947b78ef831fbde8\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "57ca262f8d1c0aabeea294ddb53e4db172fc6bec",
      "tree": "b95d99ce8635f7d8c6c4a2e357e2fd782f36a379",
      "parents": [
        "92a746c3b18d035189f596ce32847bf26247aaca"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 03 12:43:48 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jun 03 12:44:48 2011 -0700"
      },
      "message": "Move OMX_QCOM_COLOR_FormatYVU420SemiPlanar definition to OMX_IVCommon.h\n\nChange-Id: I5cbc7246a63301fa7ff735fa3d6512e940608d2b\n"
    },
    {
      "commit": "92a746c3b18d035189f596ce32847bf26247aaca",
      "tree": "056ed4c354869613bd1f644323b6c90fb65a9ea2",
      "parents": [
        "c6854100cea4fcd0f20cb2ac8235c02d1849b3a1",
        "b33d2ac90cfce0fe6db8c3e979e7ae2bbfc28163"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 02 10:22:50 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 02 10:22:50 2011 -0700"
      },
      "message": "Merge \"Do not call getEstimatedBandwidth if the streaming is not HTTP-based\""
    },
    {
      "commit": "b33d2ac90cfce0fe6db8c3e979e7ae2bbfc28163",
      "tree": "9c0ce3c250ee66779410c79580b37b036486e56d",
      "parents": [
        "d217a8c4632b3e3065f8c2a26b9ce4dc4c97171f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 01 15:27:20 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jun 02 10:13:52 2011 -0700"
      },
      "message": "Do not call getEstimatedBandwidth if the streaming is not HTTP-based\n\nChange-Id: I4ab6c57e5b2b989676b8dfbb98402d10a5752261\n"
    }
  ],
  "next": "c6854100cea4fcd0f20cb2ac8235c02d1849b3a1"
}
