)]}'
{
  "log": [
    {
      "commit": "8de57d8fa346522404c2064a78e8f24a5aa3bf23",
      "tree": "6866182a92a2da4e189df74d2b858431ee9cef64",
      "parents": [
        "bd5219f5c3b3b692f7544ea5164b18a839f20155"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Sep 23 14:37:52 2009 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Sep 25 14:23:56 2009 -0700"
      },
      "message": "Add camera parameter key constants and documentation.\n"
    },
    {
      "commit": "af141d529f76a3e3bccf67de798f13568e37f3cf",
      "tree": "c8a24dad81fa544b9d5c274648514d5bcf57921d",
      "parents": [
        "fdf53a4628f915203752660aa07049aa22c01b5a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 24 07:03:14 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 24 23:49:40 2009 -0700"
      },
      "message": "Fix issue 2142613: ToneGenerator: short tones sometimes don\u0027t play on sholes or over A2DP.\n\nWhen the AudioTrack callback notification size is relatively high (Which is the case on Sholes and over A2DP), it is likely that the end of tone is reached during the first callback. In this case, the AudioTrack is stopped before exiting the callback which causes 2 problems:\n- 1: If the AudioFlinger thread is scheduled before we exit the ToneGenerator callback, the track can be stopped and reset before the data is actually marked as present in the buffer by the AudioTrack callback \u003d\u003e no audio will be processed by AudioFlinger.\n- 2: In this case, the data write index in the AudioTrack buffer is incremented after the track was reset by the AudioFlinger which leaves unplayed data in the buffer. This data will be played the next time the AudioTrack is started if not flushed in between.\n\nThe fix consists in adding an intermediate state to ToneGenerator state machine so that we exit the callback function when the stop condition is reached and stop the AudioTrack the next time we execute the callback.\n"
    },
    {
      "commit": "bc7261130a51dc9f3461d3970eee1b923bcbf193",
      "tree": "8f74c3943a2582418addd8c91e0c1307fe95f733",
      "parents": [
        "de0dfb7b65a02d4dd74c271b558adee0973fc267"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 15:44:05 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 15:49:32 2009 -0700"
      },
      "message": "fix [2132563] stuck in boot animation (framebuffer_device_open: Failed to create flip chain)\n"
    },
    {
      "commit": "b1a1874625a6aca967601fcda53a82d8d712df45",
      "tree": "3cf96bf9cc4bf734da47e58cab3c5421e7698139",
      "parents": [
        "d55de40481c6ec7d8fbd1a38c80a6c66bf462a71"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 16:18:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 16:18:16 2009 -0700"
      },
      "message": "Android side of the fix for [2121211] Sholes has stutter during animations\n\na new method, compostionComplete() is added to the framebuffer hal, it is used by surfaceflinger to signal the driver that the composition is complete, BEFORE it releases its client. This gives a chance to the driver to\n"
    },
    {
      "commit": "bcef9ac35da08b9f7f8a4728af94c23a7a010669",
      "tree": "c13c342c0265bc0b94608695d90e3edb6f54a918",
      "parents": [
        "76f0111845f0886f522cfe1eb5ec1dee34181f7c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 01:35:28 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 01:35:28 2009 -0700"
      },
      "message": "add basic time stats for surfaces lock time\n"
    },
    {
      "commit": "f7c3679f898cdcb208bc1675c79573e1d637083a",
      "tree": "2460b101ffa0d2f76cb147bccdd5525a7348b79d",
      "parents": [
        "2a66eee3ef88bdc7167e5e5d0471c1e8b2e68fc6",
        "4f234579587ce2367153148d39e83244a808e2c8"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 16 13:01:57 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 16 13:01:57 2009 -0400"
      },
      "message": "Merge change 25158 into eclair\n\n* changes:\n  Another software color conversion implementation, this time OMX_QCOM_COLOR_FormatYVU420SemiPlanar \u003d\u003e rgb565.\n"
    },
    {
      "commit": "93e462b79d6896da10e15e74c5aec6beb098dddf",
      "tree": "1f5f178b544a49ba5a80e74269b083775ff97854",
      "parents": [
        "6cf05f1c3d6f4585573c8663a62848a09f6a08ff"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 15 22:50:40 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 15 22:50:40 2009 -0700"
      },
      "message": "Implement issue #1780928: Need support hiding nav keys.\n\nThis implements support for devices whose hardware can hide\ntheir navigation keys.  It works much like the existing keyboardHidden\nconfiguration, and for compatibility uses the same configuration\nchange bit.\n\nAlso add FLAG_TURN_ON_SCREEN for windows, which has the system\ncause the screen to be turned on when the window is displayed.\nGreat fun when used with FLAG_SHOW_WHEN_LOCKED!\n\nChange-Id: I0b867f19af85cfd8786a14cea194b34f7bdd9b7a\n"
    },
    {
      "commit": "e611a6ed33d157b7ae15bdfe4e1873dc20ce7d48",
      "tree": "fc1e8f0b97d6f2c4cb43c52055e5f015ffe8204a",
      "parents": [
        "dd8f6186775f69a8fef6213bcdc23be633d1ab6f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 19:10:47 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 19:21:31 2009 -0700"
      },
      "message": "fix [2122448] android_native_window_t::setUsage() only reallocates the first buffer\n\nTake 2. We needed to check that the usage flags are \"good enough\" as opposed to \"the same\".\n\nThis reverts commit 8f17a762fe9e9f31e4e86cb60ff2bfb6b10fdee6.\n"
    },
    {
      "commit": "8f17a762fe9e9f31e4e86cb60ff2bfb6b10fdee6",
      "tree": "f9500ecdcefae8e859433c2153dcc1b2fe642909",
      "parents": [
        "d6b10fb86229ed0e904138ec4604066ea85059db"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 18:57:06 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 18:57:06 2009 -0700"
      },
      "message": "Revert \"fix [2122448] android_native_window_t::setUsage() only reallocates the first buffer\"\n\nThis reverts commit 486aa963b63e20b7910e1004cebb4f0afabbd80f.\n"
    },
    {
      "commit": "486aa963b63e20b7910e1004cebb4f0afabbd80f",
      "tree": "b615e2ca3a60bf05a1315410df8fb4b7501105ad",
      "parents": [
        "a4fe2aca527ee45ddde6ace2316cad27dd487379"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 17:34:04 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 17:34:04 2009 -0700"
      },
      "message": "fix [2122448] android_native_window_t::setUsage() only reallocates the first buffer\n"
    },
    {
      "commit": "4f234579587ce2367153148d39e83244a808e2c8",
      "tree": "4190754b22e2ab9b846dbdce768ecb17cf19e95c",
      "parents": [
        "a4fe2aca527ee45ddde6ace2316cad27dd487379"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 15 16:19:08 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 15 16:19:08 2009 -0700"
      },
      "message": "Another software color conversion implementation, this time OMX_QCOM_COLOR_FormatYVU420SemiPlanar \u003d\u003e rgb565.\n"
    },
    {
      "commit": "a4fe2aca527ee45ddde6ace2316cad27dd487379",
      "tree": "01b8131fd3b7b955e6cf7e5e4771296a7dc89f08",
      "parents": [
        "0edada085e175e81b6d38a48b5b022917b410a98",
        "c966a3c255652ba30a7b457663c874da24e7fb6e"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 15 17:48:33 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 15 17:48:33 2009 -0400"
      },
      "message": "Merge change 25128 into eclair\n\n* changes:\n  Support CbYCrY -\u003e RGB565 color conversion in IOMXRenderer.\n"
    },
    {
      "commit": "c966a3c255652ba30a7b457663c874da24e7fb6e",
      "tree": "b6f71e2ac202376dc97a131cbdc90780924c1367",
      "parents": [
        "e80534ff59b2e62a0ddf4359147b81f5ba10de86"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 15 14:32:59 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 15 14:32:59 2009 -0700"
      },
      "message": "Support CbYCrY -\u003e RGB565 color conversion in IOMXRenderer.\n"
    },
    {
      "commit": "9f9afef3d5da3be6812192e60797b1c035445c3c",
      "tree": "ef76ce488456bbe610d157b6379cd91b35e82c55",
      "parents": [
        "e80534ff59b2e62a0ddf4359147b81f5ba10de86"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 15 12:49:11 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 15 12:49:11 2009 -0700"
      },
      "message": "Added an API IOMX::createRendererFromJavaSurface.\n\nThis api allows to instantiate a renderer by specifying the hosting java Surface object. This hides the implementation details of (java-)Surface, (native-)Surface and friends.\n"
    },
    {
      "commit": "244f8c26365a303d9dd861bd48a29a4b48578da1",
      "tree": "33c20568a94d606507507ec5cedf2a01eba8de58",
      "parents": [
        "54c06152e0d9c666aec61ae5d9686d7d3327ea34"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Sep 15 14:51:56 2009 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Sep 15 18:29:03 2009 +0800"
      },
      "message": "Fix 2083478: Camera needs an auto-focus cancel API\n\nChange-Id: I13bda991b32aee47e82b5cf9d43b3021c416a9a2\n"
    },
    {
      "commit": "a1212578bfd11bd391c686c82c18b21b4a3a69b4",
      "tree": "5cda57181fe2e319e394476f9d050e2c4841efa4",
      "parents": [
        "0d5581133285cef4d7582b531e0bf09cee86aa90",
        "bd8527110caa5427ade0edd7ce0d00e63f15ccbc"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 14 19:01:40 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 14 19:01:40 2009 -0400"
      },
      "message": "Merge change 24947 into eclair\n\n* changes:\n  make sure to update the tail pointer when undoing a dequeue\n"
    },
    {
      "commit": "bd8527110caa5427ade0edd7ce0d00e63f15ccbc",
      "tree": "b3f278132e4c3e9b78cfdfa48a97bf84f26e5d98",
      "parents": [
        "df5e76f9c635a84efa16c5e2f6cf516b4b8fe300"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 14 15:48:42 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 14 15:48:42 2009 -0700"
      },
      "message": "make sure to update the tail pointer when undoing a dequeue\n"
    },
    {
      "commit": "242d65bf9faf1d2bc3468490e510551140e23462",
      "tree": "1486035602564a0657ecf0d915d4a2d4f15f9cba",
      "parents": [
        "9a0bf14c4f715a8ffa645c77c4c183dcfa3e31c8"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Sep 12 10:10:37 2009 -0700"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Sep 12 10:48:03 2009 -0700"
      },
      "message": "process: Switch to common cutils sched_policy api\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "6026a514248f0c603d0e8c4a3f542abab3fa1509",
      "tree": "8ca481e734537e9bfcdee28c8199100ce71d18dc",
      "parents": [
        "d304ae583d862250a21b5949fc3dbdf3af1febac"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 11 07:47:55 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 11 07:49:50 2009 -0700"
      },
      "message": "Move JPEGSource.{cpp,h} into libstagefright.\n"
    },
    {
      "commit": "f84a21820b39dbfa983352b7d8ac949e560827d3",
      "tree": "6558a96f8843fd9ce7f0f6056adc1db3f44d34fa",
      "parents": [
        "12d2cdcdb0eed759b0e7738cbdefaa726a71930b",
        "248b5bd51e325107f8119b564db6a06ac51c232a"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 10 22:59:12 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 10 22:59:12 2009 -0400"
      },
      "message": "Merge change 24643 into eclair\n\n* changes:\n  fix [2112575] stuck on DequeueCondition for a surface that doesn\u0027t exist anymore\n"
    },
    {
      "commit": "12d2cdcdb0eed759b0e7738cbdefaa726a71930b",
      "tree": "65081cdef04e9829f03a39b35e1a25dd77b10e3f",
      "parents": [
        "8905daa06875a3f052c1eff5b0fbd14ab297cff7",
        "436c627ca4228284caf363f0cb35947e58b841b9"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 10 22:59:02 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 10 22:59:02 2009 -0400"
      },
      "message": "Merge change 24642 into eclair\n\n* changes:\n  make sure conditions will return when the status of a surface is not NO_ERROR\n"
    },
    {
      "commit": "248b5bd51e325107f8119b564db6a06ac51c232a",
      "tree": "9a059822a1817d5ffb68d471f6e83ec20f583a89",
      "parents": [
        "436c627ca4228284caf363f0cb35947e58b841b9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 10 19:41:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 10 19:41:18 2009 -0700"
      },
      "message": "fix [2112575] stuck on DequeueCondition for a surface that doesn\u0027t exist anymore\n\nthis also fixes part of [2111536] Device is soft rebooted after ending the call through voice dialer\n"
    },
    {
      "commit": "436c627ca4228284caf363f0cb35947e58b841b9",
      "tree": "6743fc56b723aef0c09f2d09279581e862472973",
      "parents": [
        "bcbcaa7edd32ba67c6290d79f7e7821c4b5b39ac"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 10 16:55:13 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 10 16:55:13 2009 -0700"
      },
      "message": "make sure conditions will return when the status of a surface is not NO_ERROR\n"
    },
    {
      "commit": "181b31a0d87d525ea64102a965210331e0c6885b",
      "tree": "25fc3710ab2195bb6010fa0b8217e6b14b32ed29",
      "parents": [
        "c06307ccde2cc8e92fcb07d29ef5a69803d0c0b3"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Sep 08 20:28:35 2009 -0700"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Sep 10 15:09:38 2009 -0700"
      },
      "message": "Process: Add support for using scheduler policies instead of cgroups.\nPreference is given to cgroups if available.\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "e6c409632f773e41f33188272a0072be9fcb783f",
      "tree": "228c0d88ce6818974b8bab7062e9fef05f3ba250",
      "parents": [
        "d9ca6a79c6ac9cc8790aabbb42fe2ce579001528"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Sep 10 14:13:30 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Sep 10 14:43:36 2009 -0700"
      },
      "message": "Media MIME types now have corresponding constants in MediaDefs.h, new codec enumeration API.\n"
    },
    {
      "commit": "033e6c3a680cd42fb05738c87a8c514bb7e4963d",
      "tree": "c4e12baef0549285b1570756e9504a794ee9a0ac",
      "parents": [
        "201511cf8a004d386ec9f592041ad3e3d4107184"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 09 16:36:12 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 09 16:36:12 2009 -0700"
      },
      "message": "Minor API change in MPEG4Writer, support for amr output into MPEG4 containers.\n"
    },
    {
      "commit": "5a65a6e22017e51ebcebb0f41510c54f1085f82c",
      "tree": "437e2c5ac1ee1d1ba9867fe8a83a8884ae90ca6e",
      "parents": [
        "4e60d7e60b29c42c6745dd23ff90dced8834fa7c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 08 16:07:15 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 09 11:05:42 2009 -0700"
      },
      "message": "Added a .amr file extractor (for AMR-NB and AMR-WB content).\n"
    },
    {
      "commit": "4e60d7e60b29c42c6745dd23ff90dced8834fa7c",
      "tree": "a95bca3226c5ced8ac9fbfe905b103433922f6a9",
      "parents": [
        "100f08613392c225b8dff3f1e1d586f981884e29",
        "ee606e66b0c1bc3527ecaffbbe95486d2ff5009e"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 09 13:55:48 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 09 13:55:48 2009 -0400"
      },
      "message": "Merge change 24179 into eclair\n\n* changes:\n  Support encoding amr-wb content in stagefright.\n"
    },
    {
      "commit": "11c803ac77b6a9b815180b4649a700361d3b8cfe",
      "tree": "af550a05e37000fc8bec4508251afff33a64570f",
      "parents": [
        "72e2d6da79a2fc3b5346c02ed40b9335c1eb78fa",
        "d42bd87f23974164d2539ea85c7b5e6329faf2c2"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 09 03:29:19 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 09 03:29:19 2009 -0700"
      },
      "message": "Merge change 24335 into eclair\n\n* changes:\n  use broadcast() instead of signal() when signaling the condition-variable Thread::RequestExitAndWait() is waiting for\n"
    },
    {
      "commit": "d42bd87f23974164d2539ea85c7b5e6329faf2c2",
      "tree": "9ab3713baa90ff2f06d9937d86900fbf43825c39",
      "parents": [
        "a280496bd2ce04d6beff4536f2115a9a4d7568e4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 02:38:13 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 02:45:26 2009 -0700"
      },
      "message": "use broadcast() instead of signal() when signaling the condition-variable Thread::RequestExitAndWait() is waiting for\n\nwe could have several thread waiting on the condition and they all need to wake-up.\nalso added a debug \"mTid\" field in the class, which contains the tid of the thread (as opposed to pthread_t), this\nis useful when debugging under gdb for instance.\n"
    },
    {
      "commit": "96c08a69ea0b95d1d8a8edb67f73bd9548e09f16",
      "tree": "b3062ccac2f1bd12f33be481a957cd5b88579e16",
      "parents": [
        "948ef29ebacde30bc2f1283b5e6d86f2413698c4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 07 08:38:38 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 08 22:56:07 2009 -0700"
      },
      "message": "Fix issue 1992233: DTMF tones on Sholes is really long.\n\nAdd a parameter to ToneGenerator.startTone() allowing the caller to specify the tone duration. This is used by the phone application to have a precise control on the DTMF tone duration which was not possible with the use of delayed messaged.\nAlso modified AudioFlinger output threads so that 0s are written to the audio output stream when no more tracks are ready to mix instead of just sleeping. This avoids an issue where the end of a previous DTMF tone could stay in audio hardware buffers and be played just before the beginning of the next DTMF tone.\n"
    },
    {
      "commit": "b80f698362e84b83e1c44c92fb76b0fdf1a5ef6d",
      "tree": "563f8e5af9c8a816c065da56942449cf73fbee4e",
      "parents": [
        "b752098e8d12d6e7925d97458078dbb896ca8a05",
        "dc54f416a43cc1cb68bf9e81003fd200ea2dc648"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 08 14:36:06 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 08 14:36:06 2009 -0700"
      },
      "message": "Merge changes 24119,24120 into eclair\n\n* changes:\n  delete old and unused source files\n  fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly\n"
    },
    {
      "commit": "ee606e66b0c1bc3527ecaffbbe95486d2ff5009e",
      "tree": "a4375d314da752999a37958e18c19cdc31aadd88",
      "parents": [
        "a7d0cf490a81ba2fc75b50fbf53b1fabcf6bb631"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 08 10:19:21 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 08 12:55:50 2009 -0700"
      },
      "message": "Support encoding amr-wb content in stagefright.\n"
    },
    {
      "commit": "392ff3b5296e0cee8d5db386d2ef72e2719890c8",
      "tree": "5d533efc93f3d87e62beb4eea7a5d0eff66dc338",
      "parents": [
        "0b98c944c6bac98d95c93916cde31f841b44d9aa"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Sep 06 14:29:45 2009 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Sep 08 11:04:53 2009 -0700"
      },
      "message": "Add basic metadata retrieval support for midi, ogg, etc.\nBug 2050320\n"
    },
    {
      "commit": "9779b221e999583ff89e0dfc40e56398737adbb3",
      "tree": "76b185d252b95b05e8d74e7a1644b843f8839725",
      "parents": [
        "a4eb91da03bd785bc91bed0d25a9efaa9baba1c1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "message": "fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly\n\nRewrote SurfaceFlinger\u0027s buffer management from the ground-up.\nThe design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice.\n\nThe main new feature is to be able to dequeue all buffers at once (very important when there are only two). \n\nA client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued.\n\nThe current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time.\n\neg. Allowed sequence:   DQ, DQ, LOCK, Q, LOCK, Q\neg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q\n\n"
    },
    {
      "commit": "e1da8be501e953cdf50b0ba2edf8fe68af8cf2b9",
      "tree": "e9e51868a100e469e60bf1f21b354a49b0f8ba64",
      "parents": [
        "b00fc7357f50ba0ebc1a5e48be2a1ee096bf1b67",
        "8b0466170082fdf12f78d7b70358002520e99e9b"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 03 12:27:26 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 03 12:27:26 2009 -0700"
      },
      "message": "Merge change 23835 into eclair\n\n* changes:\n  When encountering a .nomedia file, notify the MediaScannerClient, so that it can erase the data column for entries that are in the folder containing the .nomedia file. This prevents us from deleting (via a delete trigger) files when somebody adds a .nomedia file after the fact.\n"
    },
    {
      "commit": "8b0466170082fdf12f78d7b70358002520e99e9b",
      "tree": "5ff6b49f1d9373e654df1a3a324883a05b6eb8a8",
      "parents": [
        "04e1faf0f030ddb360180289fb798adbb3348dd4"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Sep 03 10:49:55 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Sep 03 11:22:28 2009 -0700"
      },
      "message": "When encountering a .nomedia file, notify the MediaScannerClient,\nso that it can erase the data column for entries that are in the\nfolder containing the .nomedia file. This prevents us from\ndeleting (via a delete trigger) files when somebody adds a\n.nomedia file after the fact.\n"
    },
    {
      "commit": "4c48342572503c7a92e5634ef8db3f1f9e541256",
      "tree": "0dd70aca7878fd9bf07e62031d6b9ff483c0d849",
      "parents": [
        "da050cf206afff082f2a3693a8103a5df67df397"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 02 16:05:36 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 02 16:05:36 2009 -0700"
      },
      "message": "Setting the component role appears to be mandatory now for all mime types.\n\nAlso using CODEC_LOGV instead of vanilla LOGV to include the component name the message related to.\n"
    },
    {
      "commit": "da050cf206afff082f2a3693a8103a5df67df397",
      "tree": "53802200805df58cb5095d0bb3b6b9b79478cb7a",
      "parents": [
        "040571aa2f71031376ff37ffa827d3612eb89340"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 02 14:01:43 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 02 14:01:43 2009 -0700"
      },
      "message": "Some work to make audio encoding work.\n"
    },
    {
      "commit": "43ad6eaf7710e21d4d0df373103c3d99137d4ecc",
      "tree": "cec2cca9b2c6a2eac8f100e127ab9afbdafc0bcf",
      "parents": [
        "b7559e02803266e5fa9f4496174bc343ecd245ab"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 01 16:02:43 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 01 16:02:43 2009 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit c45bfbb97ccd05982008df47181f9c73abaf0497\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Sep 1 15:58:12 2009 -0700\n\n    This quirk should not be enabled by default in order to make the bug reproducible by the vendor.\n\ncommit 21d72e80e795fcae53d9c3bcc8ba6312b081e420\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Sep 1 15:55:45 2009 -0700\n\n    Undoing the hack to temporarily give up the lock to facilitate reading from the buffer source.\n\n    This simply causes too many issues, there need to be independent threads providing input buffers and dequeuing output buffers.\n\ncommit 84d507def8999c146ce124cc8edfe106c9ca70c2\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Sep 1 15:16:23 2009 -0700\n\n    The AAC components appear to output stereo data even if the input data is mono...\n"
    },
    {
      "commit": "329577aa6d422d1dbb33f4771fc5e2949b4ad312",
      "tree": "6240bac8ea8e41ada57f30fe41f4a69f1ad97edc",
      "parents": [
        "e18d4d01152071f3a489a0d3077ad89dfa1f3851"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 27 14:50:58 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 27 14:50:58 2009 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit 3fa5f3ce910f34da0cedb8bcce1bd593db7eb740\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Aug 27 14:48:54 2009 -0700\n\n    Getting rid of more code now obsolete with the departure of OMXDecoder.\n\ncommit e0d923ec0c7bb60bec8eb97739036a4c70c0feef\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Aug 27 14:33:06 2009 -0700\n\n    Remove obsoleted OMXDecoder class. OMXDecoder is dead, long live OMXCodec.\n"
    },
    {
      "commit": "bc86bda499b8600cc3dc900bba0e6421304c26dd",
      "tree": "a5d0169cdfa6441ce1f388578b4c4054788fdf41",
      "parents": [
        "763ea918fc7954eab422dc3baf578a2368737637",
        "327c27be19ad333c4835c84397152a0b2cb33081"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 27 11:37:35 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 27 11:37:35 2009 -0700"
      },
      "message": "Merge change 22897 into eclair\n\n* changes:\n  Fix issue 2045911: Camera Shutter tone does not play correctly while listening to music.\n"
    },
    {
      "commit": "42978e55fe438ecdc1b0bac5bf31c2aadbd9e78d",
      "tree": "32c5794bd120a0367469b27d6387e13522648cde",
      "parents": [
        "650b872c5aa54d94ef7a8e4a89daab11af15d5e0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 27 10:08:39 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 27 10:41:13 2009 -0700"
      },
      "message": "An attempt to fix a deadlock between OMXCodec::start and upstream ::read\n"
    },
    {
      "commit": "327c27be19ad333c4835c84397152a0b2cb33081",
      "tree": "829f4323a59b922a47f6e7a60750be8e2c64a089",
      "parents": [
        "42b1648212d31dbc63518ca8379f145fef1efcb8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 27 00:48:47 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 27 05:58:10 2009 -0700"
      },
      "message": "Fix issue 2045911: Camera Shutter tone does not play correctly while listening to music.\n\nAdd the possibility to delay routing and volume commands in AudioPolicyClientInterface. The delay is not blocking for the caller.\n"
    },
    {
      "commit": "127fcdcd9f76ca717713ae59dc625a706daa6573",
      "tree": "4b1a9bde271f8accf4bd6bf349537baec75a3e67",
      "parents": [
        "2d829928792f99f9cf44ca5d9d1c1eb6cb771c5a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 26 16:27:02 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 26 16:27:02 2009 -0700"
      },
      "message": "Another quirk, some OMX components fail to properly flush before shutdown and we must do it for them...\n"
    },
    {
      "commit": "b5ceb9ee21f37ae0817c16490c1fc148dd3eb5e2",
      "tree": "6e3e5b4b48f7d2644ddb1971cbcdfdb3eba9fad6",
      "parents": [
        "4b8e3fb51155ab6c990803ff7780cd1b8c8f3dcf"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 26 14:48:20 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 26 14:48:20 2009 -0700"
      },
      "message": "assert \u003d\u003e CHECK in stagefright.\n"
    },
    {
      "commit": "446f44f61afd406e19760cd9cc5ad3a10fa11cbf",
      "tree": "2a7bcad3433bf33c02746097af791616f025a35f",
      "parents": [
        "6ee9952bc20be72b9419cb653c9e2e833889a3d3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 25 17:23:44 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 26 09:11:13 2009 -0700"
      },
      "message": "Keep up with latest changes to overlay handling on that unnamable platform.\n"
    },
    {
      "commit": "c0dea964913268bd64009e657635e617f3e0c21c",
      "tree": "379fdde7e66d3b8ab88348e0b7138f1ab6ed5970",
      "parents": [
        "4f31af9346b818c8ef05a63e15e9170a7c6131e4"
      ],
      "author": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Tue Aug 11 18:01:14 2009 +0200"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 25 18:35:54 2009 -0700"
      },
      "message": "Calculate specular lighting correctly\n\nSince the lighting calculations are done in object space, the vector\nfrom the object to the viewer also needs to be transformed to object\nspace.\n"
    },
    {
      "commit": "404cc418be3eeaef93729fab51a0124ed65e1adc",
      "tree": "1b63086bed495522df346c5de0bc5557ec88c0cf",
      "parents": [
        "4804c3e23b0bb8e77b690df177ebd4d6fb949aa8"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 25 14:26:05 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 25 14:26:05 2009 -0700"
      },
      "message": "Make sure not to ask for more buffers when we know that there won\u0027t be any, added a quirk for the aac decoder.\n"
    },
    {
      "commit": "cc4f3424e5b5227d0711ae7d3850a8b903c15a07",
      "tree": "6206eed37830af328aabedc72371691f40ffa915",
      "parents": [
        "e0616ffb741b64e3bc7a1e3ad9def3d50eee53fd",
        "5c0a9133d2e8049f8952a190df91febf6b92064c"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 20 13:58:17 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 20 13:58:17 2009 -0700"
      },
      "message": "Merge change 22092 into eclair\n\n* changes:\n  Dynamically allocate a pair of MemoryHeaps according buffer count/sizes required by the OMX component, respect JPEG compressed size.\n"
    },
    {
      "commit": "5c0a9133d2e8049f8952a190df91febf6b92064c",
      "tree": "8fa8bed2be04e927b7298a2f1535918d5923fe95",
      "parents": [
        "1c1629da30bd1b125c59ab9bbcecff3bb3e74324"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 20 11:16:40 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 20 11:16:40 2009 -0700"
      },
      "message": "Dynamically allocate a pair of MemoryHeaps according buffer count/sizes required by the OMX component, respect JPEG compressed size.\n"
    },
    {
      "commit": "f99c18083e87ccf83430b29b53c7dea52a1675de",
      "tree": "602d616cdcc91d974299fca1e4f40fce00a2fbc4",
      "parents": [
        "41b379da57d3125de038636d72fba95e2255483d"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Mon Aug 17 15:28:30 2009 -0500"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Aug 20 03:55:20 2009 -0700"
      },
      "message": "Add offset handling in MemoryHeapBase class\n"
    },
    {
      "commit": "18b6b49ea5235fb6c0802db9a0cc2c6dd20646cb",
      "tree": "99d8c9f592a961c1af7f583792f4178bce2cc89f",
      "parents": [
        "b2f8450db8dfbc05724624f93d9ec5e65f0b7e54"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:46:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:46:26 2009 -0700"
      },
      "message": "fix a bug that caused the PixelFormat viewed by Surface to be wrong.\n\nwhat happened is that the efective pixel format is calculated by SF but Surface nevew had access to it directly.\nin particular this caused query(FORMAT) to return the requested format instead of the effective format.\n"
    },
    {
      "commit": "4f5e602e1773a2990bb1f34f09875bd5cd057e5a",
      "tree": "24aa72024747f1d7e90729d7fa79ee67fa61d72e",
      "parents": [
        "a659744041d0b74b4243fdd448a5fa302a581278"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 19 09:29:34 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 19 09:37:46 2009 -0700"
      },
      "message": "The PV AVC software decoder expects each fragment of a NAL unit to be handed to the decoder unframed.\n"
    },
    {
      "commit": "09daada236c0b4970db44c807d7c29965666c36b",
      "tree": "1d57b2974f51ec07ffe975a075aebe79cc67f1eb",
      "parents": [
        "d2d6014f715f12f6263f61ba3eeb6f8cba6d0fa6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 18 11:27:32 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 18 11:27:32 2009 -0700"
      },
      "message": "Refactored \"stagefright\" commandline app, split off JPEGSource.\n"
    },
    {
      "commit": "2f10ae08d435b12e1798d93e0b90605717c66081",
      "tree": "30d50a2897e1f0a1835e72c8fa7b057c98ad8c2e",
      "parents": [
        "01f750d6fa03f16ef93802618a6ccf8b353ae8e2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 17 13:33:27 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 17 15:31:25 2009 -0700"
      },
      "message": "Support for marshalling pointers / intptr_t in Parcel.\n\nSome refactoring to eliminate code duplication in Parcel implementation.\n"
    },
    {
      "commit": "2b8954809e7de900e2c159c255d5237ae6f0e6f8",
      "tree": "62d525dd9ed5f77ca22e20a00974caba5edbbffc",
      "parents": [
        "54ba86f0e236a55fb4dc3aabbd81078f586321a5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 17 12:33:20 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 17 12:33:20 2009 -0700"
      },
      "message": "really be more friendly with C\n"
    },
    {
      "commit": "be06d26cdc70070654f1eedcd08c1c68cd587ad6",
      "tree": "04750503f77f26f654ab1a7bc95e8eec23dfeeaf",
      "parents": [
        "86192c614c317b428e10c2dc9052a07304aa6c3f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 14 14:37:10 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 17 10:24:50 2009 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit 5bb012f0065f7ffaaeb4f569d71f0e3a8d6b19c3\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Aug 14 10:40:08 2009 -0700\n\n    An attempt at fixing export using the qcom encoders. More quirks.\n\ncommit 0690e76bfa48118a68287ccf1bbfa82febaa620c\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Aug 14 09:08:28 2009 -0700\n\n    Callbacks are now dispatched from a separate thread in OMX.\n\ncommit c6571a039526df29b6343f9a1971dbc019088c61\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Aug 13 15:42:25 2009 -0700\n\n    Massive API changes throughout stagefright, smart pointers everywhere.\n\ncommit 900612af6a0555664d9ba195112cd859491265f4\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Aug 13 13:33:12 2009 -0700\n\n    OMXCodecs now properly shutdown.\n\ncommit 96732f05e1b0603dcd1b11f16a23512592eeb4f5\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Aug 13 12:04:04 2009 -0700\n\n    More work on JPEG decoding using the hardware OMX component.\n\ncommit 63839a073ac393e3a130434ba467969053b694ad\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Aug 12 13:13:31 2009 -0700\n\n    An attempt to drive the JPEG decoder OMX node.\n\ncommit 3ac2fe5ab2926eda81b2123610b2434c645294ff\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Aug 11 16:38:21 2009 -0700\n\n    Renamed StateMachine to OMXCodec and put it in its proper place.\n\ncommit 247da75a96bf8881956413023dd49a84d5b4f5b2\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Aug 11 16:06:19 2009 -0700\n\n    Statemachine is now a full-fledged MediaSource.\n\ncommit 045244f6771fa0b9b329495c953afda900a84b71\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Aug 7 09:16:54 2009 -0700\n\n    Properly setup the input format when exporting to AMR audio.\n\ncommit 271b984cb32c5cd9e46e3f90ae121f334e4b8da9\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Aug 6 09:59:38 2009 -0700\n\n    Added some code to test audio encoding to the OMX harness.\n\ncommit 79af4748e4af33bd66d3fbac606e332a69741cf4\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Aug 5 14:36:22 2009 -0700\n\n    Merge the old OMXDecoder and the new, shiny, StateMachine code.\n\ncommit 91cf5dd77a8762bc10a0b2ffce35e3bbeb262231\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Aug 4 17:41:43 2009 -0700\n\n    A new harness to test OMX node compliance (and quirks).\n"
    },
    {
      "commit": "7193a58763ff73ba84bf4ac1c8f3f745b0a18836",
      "tree": "04ba4884dc9c4e871f38fd3a9a65d10ff4467394",
      "parents": [
        "82726f045de91b899502a54ca76d234c43a1ba4b",
        "321abdb092bfc925749d528de590680ae8bc3d5c"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 14 20:07:51 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 14 20:07:51 2009 -0700"
      },
      "message": "Merge change 21401 into eclair\n\n* changes:\n  make sure to update a surface\u0027s usage bits when it changes, instead of only the first time.\n"
    },
    {
      "commit": "321abdb092bfc925749d528de590680ae8bc3d5c",
      "tree": "affc2bd081141dca59b9cc053bf47f321ca6497b",
      "parents": [
        "c4915de8bb9454b8f10b0c9b7ac21e2bb7f65202"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 14 18:52:17 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 14 18:52:17 2009 -0700"
      },
      "message": "make sure to update a surface\u0027s usage bits when it changes, instead of only the first time.\n\nalso fixed a few locking issues in Surface and commented how each member is protected.\n"
    },
    {
      "commit": "c9706f0262a2f399f95e0d78ba2b7616e08d0069",
      "tree": "c87ce98db0bbddfb87af8007ac7eb20a32e17f2f",
      "parents": [
        "872242948184d7b6fed8b127d8ba8386487dc826"
      ],
      "author": {
        "name": "Sahil Sachdeva",
        "email": "sahils@google.com",
        "time": "Fri Aug 14 14:52:23 2009 -0700"
      },
      "committer": {
        "name": "Sahil Sachdeva",
        "email": "sahils@google.com",
        "time": "Fri Aug 14 14:52:23 2009 -0700"
      },
      "message": "DO NOT MERGE, ALready merged to master.\n1440173 [NJ-1331] MetaData utility parse the wrong m4a meta data. Changes to Java, application side.\n"
    },
    {
      "commit": "f233915016a9053c23af6e4bceb319e7140f71bc",
      "tree": "c6aba48a6a911089c997f8054128931ca50f58a3",
      "parents": [
        "317a6280cc109e873646e4652be1582d870eedfd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 17:57:53 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 18:27:10 2009 -0700"
      },
      "message": "be more friendly with C\n"
    },
    {
      "commit": "317a6280cc109e873646e4652be1582d870eedfd",
      "tree": "3b6d41d465282970f498e172b81ed0ee83e3183e",
      "parents": [
        "81655243a6a373cfde1e689970eeb62af19622d1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 17:29:02 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Aug 13 18:19:32 2009 -0700"
      },
      "message": "Surface::GPU and Surface::HARDWARE are now deprecated; they will be set automatically if needed.\n\nthis also ripples into the window manager API by making some constant there deprecated as well.\n"
    },
    {
      "commit": "8db93389141fbce1e37f4c22f415fc2cebf19ebf",
      "tree": "4598cf2c25cacbdd308bb6f849fde594dab6599d",
      "parents": [
        "455e3af1f82629d274447cd5d08d3c8dc1c58967"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu Aug 13 16:50:54 2009 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu Aug 13 16:52:24 2009 -0700"
      },
      "message": "ui: make native_window_set_usage be a static inline\n\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "da83f4674a564007baac03db062a289c8158d940",
      "tree": "c1476d13a17ddff1bbd3769d3406ab3d639318d2",
      "parents": [
        "ddb79c9fd53893aa126599330a9289497e5f5c93"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Wed Aug 12 12:01:27 2009 -0500"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Aug 13 10:46:28 2009 -0700"
      },
      "message": "Modified the camera HAL interface to use the same generic callback architecture as camera services\n"
    },
    {
      "commit": "90f77218a24ac66bea52faef79c30d45420ce135",
      "tree": "d2925354575662d31307cb4affd52f5d5c97ee80",
      "parents": [
        "0914e0c1015e0331467d50622c1fe3d2557473bf",
        "b8546001701405a76dad7e6235046e592296fac2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 12 12:36:12 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 12 12:36:12 2009 -0700"
      },
      "message": "am b8546001: Merge change 20878 into donut\n\nMerge commit \u0027b8546001701405a76dad7e6235046e592296fac2\u0027\n\n* commit \u0027b8546001701405a76dad7e6235046e592296fac2\u0027:\n  Fix issue #2048263: More debugging information\n"
    },
    {
      "commit": "5cec4742b3a1d7448bd32ae57cb4cf70b484c64c",
      "tree": "9a3d6adb933fd0947ffc643e3d11f432a4baec4b",
      "parents": [
        "064dbd076d431a7508b864aa0993cd59ef743e4e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 22:34:02 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 23:32:29 2009 -0700"
      },
      "message": "second take, hopefully this time it doesn\u0027t break one of the builds: \"SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\"\n"
    },
    {
      "commit": "64e89a8aff9a45a491f1d7064a655b9021fe644a",
      "tree": "5cad5d20370d2d77335324e55551ce2a2fe8b903",
      "parents": [
        "50cb54ff5cdb233d01e1dd94b355cbfe0a371520"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Aug 11 20:49:35 2009 -0700"
      },
      "committer": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Aug 11 20:49:35 2009 -0700"
      },
      "message": "Revert \"SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\"\n\nThis reverts commit 8b76a0ac6fbf07254629ed1ea86af014d5abe050.\n"
    },
    {
      "commit": "82e1ee93eece8fb0aec6acc3ef4ee7b1c86feec7",
      "tree": "b7b376fc569f6d6fde7c69c8f832f3c52152f408",
      "parents": [
        "b3fa1084ba31698fa5c58150a713d7abbadb1cd2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 11 18:56:41 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 11 18:56:41 2009 -0700"
      },
      "message": "Fix issue #2048263: More debugging information\n\nWe now hopefully do better about generating the anr reports, and include\ninformation about the malloc loaded assets in meminfo.\n"
    },
    {
      "commit": "8b76a0ac6fbf07254629ed1ea86af014d5abe050",
      "tree": "e492e09655269fff3ca14b6a62f9b07f2d484038",
      "parents": [
        "c5ea43920919eeaec4ec0686de9fa3d034d82337"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 10 21:59:56 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 16:12:56 2009 -0700"
      },
      "message": "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\n\nThis change makes SurfaceHolder.setType(GPU) obsolete (it\u0027s now ignored).\nAdded an API to android_native_window_t to allow extending the functionality without ever breaking binary compatibility. This is used to implement the new set_usage() API. This API needs to be called by software renderers because the default is to use usage flags suitable for h/w.\n"
    },
    {
      "commit": "ccf8b94169197875af6c89172015b9644919b064",
      "tree": "8ac3af6d1e44dd5dfd37168dc635e17329c990ae",
      "parents": [
        "07cbacc11705f1f05a1150083aad000c53942dea"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 07 12:01:29 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 10 12:58:05 2009 -0700"
      },
      "message": "Expose a variation of the createRenderer API that works on a plain Surface.\n"
    },
    {
      "commit": "e9ec12c47e83a082063aac467414558fb1aef7fb",
      "tree": "492b2207f1bf3eef14d9f05967611268f541fe3f",
      "parents": [
        "36093d4e5f6a77902fb9498453537ef6ef73e025"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 07 13:45:06 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 10 10:29:40 2009 -0700"
      },
      "message": "Deprecate/remove now unused socketpair ipc communication in favour of exclusive binder use.\n"
    },
    {
      "commit": "db704e28aea24f86c62bb21a26225e9542c66c03",
      "tree": "ae53dbe035cb71fd3cfda394656b9151f137484f",
      "parents": [
        "84780f56f441deb4ff736987986daeaf64db17a4",
        "9ca4dd6011e30cbb3bc40cf0bba7d11362b8bc38"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 07 16:39:34 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 07 16:39:34 2009 -0700"
      },
      "message": "Merge changes 20497,20498,20499\n\n* changes:\n  minor code clean-up\n  added EGLUtils::strerror\n  better error handling\n"
    },
    {
      "commit": "509dae53c54437eebd5291226e76c5456646f560",
      "tree": "a2f5881090c981fcca18b34befd50801323792db",
      "parents": [
        "6693f236544b767f1c22b08a48d70428a3ce4ec9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 16:37:21 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 16:37:21 2009 -0700"
      },
      "message": "added EGLUtils::strerror\n"
    },
    {
      "commit": "ddb78e7753be03937ad57ce7c3c842c52bdad65e",
      "tree": "a1f4d8105448525973897933a3494dd4d439274c",
      "parents": [
        "4c35e2c59afa28f9ed3fab1788570ef933f29b1a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 28 08:44:33 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 00:27:19 2009 -0700"
      },
      "message": "Fix issue 2001214: AudioFlinger and AudioPolicyService interfaces should not use pointers as handles to inputs and outputs.\n\nUse integers instead of void* as input/output handles at IAudioFlinger and IAudioPolicyService interfaces.\nAudioFlinger maintains an always increasing count of opened inputs or outputs as unique ID.\n"
    },
    {
      "commit": "43a6d88e4ee13836d015a114bb0065b679cfa916",
      "tree": "9a18eec2b1eb19ca69306db6c950bd5905c0816e",
      "parents": [
        "8851e163fc5bc17d139bf29cd2ec2f3926d342bc",
        "a1f6eff297a3e4870e22fdae926648bda3466805"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 06 16:27:47 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 06 16:27:47 2009 -0700"
      },
      "message": "Merge changes 20345,20346,20347\n\n* changes:\n  update most gl tests to use EGLUtils\n  added two EGL helpers for selecting a config matching a certain pixelformat or native window type\n  added NATIVE_WINDOW_FORMAT attribute to android_native_window_t\n"
    },
    {
      "commit": "265d9c076a588cf4cd811fbafd999c7ffe36641b",
      "tree": "8e4b8a390de2d36c8bd0e2a92d1907bdcbb99f04",
      "parents": [
        "25ec00fd13a6310d80a726cc9493a4b394056063"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:05:39 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:05:39 2009 -0700"
      },
      "message": "added two EGL helpers for selecting a config matching a certain pixelformat or native window type\n"
    },
    {
      "commit": "25ec00fd13a6310d80a726cc9493a4b394056063",
      "tree": "4ce7da5e64ac5730dea13bcefe07402db4bee0cb",
      "parents": [
        "bb99ffb4db008441e6ac4236d8a48b6e2b0c01d9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:04:29 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:04:29 2009 -0700"
      },
      "message": "added NATIVE_WINDOW_FORMAT attribute to android_native_window_t\n"
    },
    {
      "commit": "fc2ebc473bbca6f9e6e30ea5de979c4852f35319",
      "tree": "94662042bc0364ba1a4b0ef2bd3e5ff94b9c58df",
      "parents": [
        "6867bb1bc904b1a2d945921ac6dd1ed2e99c83f5"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Aug 06 14:50:08 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Aug 06 14:52:13 2009 -0700"
      },
      "message": "EventHub: pass the name of each input device up to Java\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "b1d39aae13869a9dd05efb95c48b8782a54f0871",
      "tree": "b2f48a60f0a3937342806b6e1cdcf782264c730f",
      "parents": [
        "a1bd466d5ca2d776369e0502c08fadc55c313e06",
        "0dd7cb4b4ef86eb7d4e837b1948501da66adeebe"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 05 12:36:11 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 05 12:36:11 2009 -0700"
      },
      "message": "Merge change 9649\n\n* changes:\n  Finish implementation of multiple pointer support for MotionEvent.\n"
    },
    {
      "commit": "ea03f4af10512521ad68f28dae7a2dea131dddbc",
      "tree": "33dfc74124450381192fc37a01933113daf52493",
      "parents": [
        "8d1668da94c1369f6d68e71007c3255336cb6b92"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 03 16:08:08 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 05 09:46:40 2009 -0700"
      },
      "message": "Recording/Export to .mp4/h.263 somewhat works on TI hardware.\n"
    },
    {
      "commit": "0dd7cb4b4ef86eb7d4e837b1948501da66adeebe",
      "tree": "df786b0b8b9b3ca4fda02e4bcb7b44db501a5150",
      "parents": [
        "a2136d6b18a26ff34f2e5cd3f6c9413f0c96a5ba"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 04 05:49:43 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 04 20:53:52 2009 -0700"
      },
      "message": "Finish implementation of multiple pointer support for MotionEvent.\n\nThe major things going on here:\n\n- The MotionEvent API is now extended to included \"pointer ID\" information, for\n  applications to keep track of individual fingers as they move up and down.\n  PointerLocation has been updated to take advantage of this.\n\n- The input system now has logic to generate MotionEvents with the new ID\n  information, synthesizing an identifier as new points are down and trying to\n  keep pointer ids consistent across events by looking at the distance between\n  the last and next set of pointers.\n\n- We now support the new multitouch driver protocol, and will use that instead\n  of the old one if it is available.  We do NOT use any finger id information\n  coming from the driver, but always synthesize pointer ids in user space.\n  (This is simply because we don\u0027t yet have a driver reporting this information\n  from which to base an implementation on.)\n\n- Increase maximum number of fingers to 10.  This code has only been used\n  with a driver that reports up to 2, so no idea how more will actually work.\n\n- Oh and the input system can now detect and report physical DPAD devices.\n"
    },
    {
      "commit": "1de13168a9d9f55464dc98748ea28ef785f1048e",
      "tree": "753f84ecd1e109e4c0c2e2d8285c90b777ed9ef5",
      "parents": [
        "1b0efec3473134fb7de226f3e1fdade5b3529ad9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 31 11:52:50 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 31 12:48:53 2009 -0700"
      },
      "message": "The IOMX interface now instantiates IOMXRenderers to hide the details of hardware accelerated blitting.\n"
    },
    {
      "commit": "1a20bae18ce05a5a141810492549d351a82f6490",
      "tree": "d6ddc041c20f66c4570504f5b96badaafb590e99",
      "parents": [
        "a05f75d61aa4e779f2fdf466267b47e7df213566",
        "5b5c9144872b4e31ba5a041dce585a8ddbbe495d"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 18:46:48 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 18:46:48 2009 -0700"
      },
      "message": "Merge change 9287\n\n* changes:\n  fixed some issues with the software renderer when surfaces are made current.\n"
    },
    {
      "commit": "5b5c9144872b4e31ba5a041dce585a8ddbbe495d",
      "tree": "a87a028c1485452127f0ec9c0e8214d419fe6753",
      "parents": [
        "5e631892fb9ac4da83b70ba129ceb6a3f501bad9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 18:14:56 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 18:14:56 2009 -0700"
      },
      "message": "fixed some issues with the software renderer when surfaces are made current.\n\nthere was several issues:\n- when a surface was made non-current, the last frame wasn\u0027t shown and the buffer could stay locked\n- when a surface was made current the 2nd time, it would not dequeue a new buffer\n\nnow, queue/dequeue are done when the surface is made current.\n\nfor this to work, a new query() hook had to be added on android_native_window_t, it allows to retrieve some attributes of a window (currently only width and height).\n"
    },
    {
      "commit": "afcf686cb070313ae5ce6c54ac381a3a86a60ed2",
      "tree": "4a7c1fa186ad4b1a7d37ea4d97aa0b0411b50d85",
      "parents": [
        "8845ea0592e3bffc726febb66de48646b0398e70",
        "25dff70f153529b87f5ad4a92f4de21e8950b1de"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 16:05:27 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 30 16:05:27 2009 -0700"
      },
      "message": "am 25dff70f: Merge change 9039 into donut\n\nMerge commit \u002725dff70f153529b87f5ad4a92f4de21e8950b1de\u0027\n\n* commit \u002725dff70f153529b87f5ad4a92f4de21e8950b1de\u0027:\n  Fix #2018814: System cannot correctly render assets with \"wrap_content\" attribute in QVGA\n"
    },
    {
      "commit": "e7f03253f915fea0672710899b7a4284bebd5124",
      "tree": "6ec2430c2fad115cc62ec64100f4861cc9a51f33",
      "parents": [
        "b995b21d67cae4580ca0a01d8e5bea03bb1cfa6c",
        "4ccee716f8c3b81deda211e51f6c82493302647f"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 14:37:48 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 14:37:48 2009 -0700"
      },
      "message": "Merge change 9070\n\n* changes:\n  Adding resizeInput and setAttributes for overlay\n"
    },
    {
      "commit": "cbe7c5441c9af004dae93cff09787e21771beda8",
      "tree": "08e6dddf603560e2f723285f2f61fc6e8f28311e",
      "parents": [
        "dcfc5c231867848ba2a010751a9d47a4fa642e43"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 30 11:16:11 2009 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 30 11:16:11 2009 -0700"
      },
      "message": "Remove hardcoded maximum frame rate limit from the framework\nbug 1993400\n"
    },
    {
      "commit": "0d221012ff5fd314711c00ed30e9b807b9c454c1",
      "tree": "328d42900c9765e3bde9ad98a936a9122c679e5e",
      "parents": [
        "c6eb5ac988518f41938c4f021003d6c202d84819"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 29 15:41:19 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 29 19:44:01 2009 -0700"
      },
      "message": "Fix #2018814: System cannot correctly render assets with \"wrap_content\" attribute in QVGA\n\nIt turns out we were not returning the density for anything retrieved from a\nTypedArray...  which basically means any bitmap references from a layout or style...!!!\n\nThis is now fixed.\n\nAlso fiddle with the density compatibility mode to turn on smoothing in certain situations,\nhelping the look of things when they need to scale and we couldn\u0027t do the scaling at\nload time.\n"
    },
    {
      "commit": "4ccee716f8c3b81deda211e51f6c82493302647f",
      "tree": "9ad0bedc766c26d45b891c9867eebe885220b26b",
      "parents": [
        "afa7d85b43c6c2058cbde61ff287ff5776d76d2a"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Fri Jul 24 19:25:30 2009 -0500"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Wed Jul 29 17:53:38 2009 -0700"
      },
      "message": "Adding resizeInput and setAttributes for overlay\n"
    },
    {
      "commit": "970764d14b663324df2a4324a890988a606c14a1",
      "tree": "29443752f4a785e8f4ba4c0a3441146266c612d1",
      "parents": [
        "8a432776d003247c12222d8dd6a30ea4621aa2d0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 28 13:05:27 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 28 13:05:27 2009 -0700"
      },
      "message": "While other OMX nodes appear to now have switched to using microseconds to timestamp buffers, at least the TI AAC and MP3 decoders still use milliseconds.\n"
    },
    {
      "commit": "8a432776d003247c12222d8dd6a30ea4621aa2d0",
      "tree": "8db21aae6c3ab309cd7502c12ecb9c184a457966",
      "parents": [
        "b3c82efb4725e959a50dca3f7ff50d1d99a059b4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 28 10:03:13 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 28 11:28:14 2009 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit 374ea382ee3a9e3ce17e4c6357fc40d02e362810\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jul 28 09:54:13 2009 -0700\n\n    PV\u0027s OMX implementation now uses (spec-compliant) microseconds instead of milliseconds in buffer timestamps.\n\ncommit 8d02f8ab5d7b022ad4ad34db2a9bdeea6ce2acfe\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jul 27 14:24:26 2009 -0700\n\n    Support for using an overlay for video playback on TI hardware.\n\n    Appears to be currently constrained to CbYCrY 16-bit colorspace.\n\ncommit d17f321cb4b15c1fea378f33a7ef5998f23dd0fc\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jul 27 09:45:38 2009 -0700\n\n    Added \u0027--audio-only\u0027 commandline option to stagefright tool.\n\ncommit d8beef6be5c668c46451446d87e622933371cd75\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Jul 24 13:35:00 2009 -0700\n\n    Generalize the various workarounds for OMX nodes with their own unique interpretation of the spec.\n\ncommit c7dfd53eeadf8ed5a39bf2b19b014dcd62f3324d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Jul 23 16:06:36 2009 -0700\n\n    Fixed erroneous TI AAC decoder behaviour wrt shutdown.\n\n    The AAC decoder appears to not return out buffers on an Executing-\u003eIdle transition, implemented a workaround that does a flush on all ports followed by the Executing-\u003eIdle. Oh, and flush with OMX_ALL doesn\u0027t properly work either. Fun.\n\ncommit d6377282e75060881336578f166f9c7feacf3f8f\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Jul 23 14:06:50 2009 -0700\n\n    Apparently the \"channels\" parameter in AudioTrack\u0027s constructor no longer counts channels but is a bitmask of enabled destinations, update the code accordingly.\n\ncommit ff698c79e851a2e57d362e9c3a09828af4048087\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 22 16:54:44 2009 -0700\n\n    Fix MPEG4 decoding using TI\u0027s hardware decoder that I broke earlier...\n\ncommit 2ef78bb87cd856eb7f0b3d7dd68782a8650c12bf\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 22 15:43:18 2009 -0700\n\n    Now that the qcom decoder properly advertises its own custom colorspace, update dependent code to reflect this fact.\n\ncommit bbaec96910727080fd7c8a6907c04facb9f5220f\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 22 14:32:03 2009 -0700\n\n    Finishing up previous, incomplete change.\n\ncommit 76f14a1ae816b6f434771f8d12bdad81196f351e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 22 14:25:17 2009 -0700\n\n    The TI video decoder now properly decoder AVC/H.264 content.\n\ncommit e106130d8c100d5c94603e43864a7a93cca10252\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 22 08:56:04 2009 -0700\n\n    Experimental support for the TI H.264 decoder, various modifications to OMXDecoder, non-functional still.\n\ncommit 241c3062dec3447db1a1ee74558cb4b9098fc404\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jul 21 12:13:09 2009 -0700\n\n    Enable TI hardware OMX decoders (except for AVC/H.264 which still has issues).\n\n    This particular set of OMX nodes does not appear to properly return our buffers when sending the \"disable\" command on a port. Rather it reqires manually flushing that port and _then_ disabling it instead.\n\ncommit 1c34506a46e32ce25f2a86f3b4250dcfc037356a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jul 21 08:51:35 2009 -0700\n\n    Make it simpler to switch between the stagefright player and PVPlayer.\n\ncommit 249c6de05671d403f8dd51f095d49bf190430c9c\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jul 20 14:38:15 2009 -0700\n\n    Prepare to use soon-to-be-available hardware decoders in the OMX decoder.\n"
    },
    {
      "commit": "3026a023b8979b7ddcb3fe97bbc45531c89fda92",
      "tree": "02433741f7668e4255134bb9d5a9fcf1dbace0ae",
      "parents": [
        "2c3fc83ac5b267d6a551deb36b30064a2e617944"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 27 07:12:26 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 27 12:21:29 2009 -0700"
      },
      "message": "Fix issue 2001517: AudioTrack compatibility issue.\n\nModified enum values in AudioFormat.java and AudioSystem.h.\nAdded code for backward compatibility in AudioTrack.java and AudioRecord.java.\n"
    },
    {
      "commit": "a553c25b33c99b345cf1c8688f8df0ed8df14e5a",
      "tree": "025c461b13e66ad0ceac8d0f8d9b13fd88ae168a",
      "parents": [
        "ebd7bc54028949619bbf3fa5ed6c1188f588c230"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 17 12:17:14 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 06:03:39 2009 -0700"
      },
      "message": "Fix issue 1795088       Improve audio routing code\n\nInitial commit for review.\nIntegrated comments after patch set 1 review.\nFixed lockup in AudioFlinger::ThreadBase::exit()\nFixed lockup when playing tone with AudioPlocyService startTone()\n"
    },
    {
      "commit": "bc7269278042e448299c2e80e4dbb16fed05791d",
      "tree": "5270299858b6a69a45c604a28208d128a0dd94d8",
      "parents": [
        "c7bebd15378d98104e6cd32666665fd60eaa8043"
      ],
      "author": {
        "name": "niko",
        "email": "niko@google.com",
        "time": "Mon Jul 20 15:07:26 2009 -0700"
      },
      "committer": {
        "name": "niko",
        "email": "niko@google.com",
        "time": "Wed Jul 22 15:03:22 2009 -0700"
      },
      "message": "Added native metadata support.\n\nMetadata.java:\nFixed typo 8k !\u003d 8092. The comment was correct though.\n\nIn Metadata.h, the new Metadata class is declared in the ns android::media\nto limit the chances of conflict with other packages.\n\nThe MetadataType in MediaPlayerInterface is gone and moved to Metadata as\nan inner typedef.\n\nSimilarly the SortedVector\u003cMetadataType\u003e instance have been replace by a\nnew type Metadata::Filter.\n\nAll the keys declared in the java counterpart are also in Metadata.h.\n\nMetadata.cpp:\nContains the implementation of the native metadata packing.\n\nThere an associated change in the opencore package that should go in\nat the same time as this one.\n"
    },
    {
      "commit": "90443e67a5fe826b9c0a4fce38febeeedac8f498",
      "tree": "3e99e3e5fd3993f5efbcf967a74a464bdc163383",
      "parents": [
        "0f5ad842fb3fbc0df2a4c8028940810782cedacc",
        "262a583f2da846e8c74d82712957bcdcc88d169a"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 22 09:29:00 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 22 09:29:00 2009 -0700"
      },
      "message": "Merge change 7529\n\n* changes:\n  Make MemoryDealer\u0027s destructor protected instead of public.\n"
    },
    {
      "commit": "a8339dfec9d1b2c6d6fd2f8268f8075d184f64c0",
      "tree": "40345158a2aa1084b21de121e5eb8b0d8f8f36a3",
      "parents": [
        "9822d2b27330793ea4ba9c3316ef35f402f35fb4",
        "9fc20b0e381b5fe00b7049ef357c839cd05a33bf"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 21 19:03:53 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 21 19:03:53 2009 -0700"
      },
      "message": "am 9fc20b0e: Merge change 8126 into donut\n\nMerge commit \u00279fc20b0e381b5fe00b7049ef357c839cd05a33bf\u0027\n\n* commit \u00279fc20b0e381b5fe00b7049ef357c839cd05a33bf\u0027:\n  First pass at reworking screen density/size APIs.\n"
    },
    {
      "commit": "c4db95c077f826585d20be2f3db4043c53d30cf5",
      "tree": "9176baa673f97b27150f862485fd492cb3ec7e88",
      "parents": [
        "fe6f45c81463d2d28e11ac6083f2653e1286c5ef"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 21 17:46:02 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 21 18:28:42 2009 -0700"
      },
      "message": "First pass at reworking screen density/size APIs.\n\nThis changes the names of the directories in aapt, to what you see\nin the list of DpiTest resources.  Also adds a new \"long\" configuration\nfor wide screens, which the platform sets appropriate, and introduces\na new kind of resizeability for not large but significantly larger\nthan normal screens which may have compatibility issues.\n"
    },
    {
      "commit": "8ed7d69f65a5c8cb380f0fc4248d286ad17138fd",
      "tree": "0c41be3fd4e3491150c9a231eab768798904bfa7",
      "parents": [
        "569f0b507092ac0b29fee3142805c6fd5b82fdd1",
        "6d2090e2148996f98a5e9bc7e359e41c226f4efb"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 20 10:50:52 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 20 10:50:52 2009 -0700"
      },
      "message": "Merge change 5892\n\n* changes:\n  Hardware overlay support\n"
    },
    {
      "commit": "469b4c67adc77a87eb2c9ed9217edf1778002828",
      "tree": "f6ca01c85c85a27ecd6f54ae1193f30e1cc67501",
      "parents": [
        "b933dc7f47ec9a9609d0775fc469849f066bfcd7",
        "aad0fcc9619eb72c18a6afff48ebc9d4011f0f54"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jul 19 20:28:49 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 19 20:28:49 2009 -0700"
      },
      "message": "am aad0fcc9: Merge change 7783 into donut\n\nMerge commit \u0027aad0fcc9619eb72c18a6afff48ebc9d4011f0f54\u0027\n\n* commit \u0027aad0fcc9619eb72c18a6afff48ebc9d4011f0f54\u0027:\n  Add \"nodpi\" density, and expose a bunch of density-related APIs.\n"
    }
  ],
  "next": "a53b828635fce8b6b2d3e3377d74d72070056623"
}
