)]}'
{
  "log": [
    {
      "commit": "c23844c60452a337a87875cd7d9d8ceb638fb36c",
      "tree": "51231cd2b43685aa31e1f46626b4324ed3133c56",
      "parents": [
        "5386b3f91ab15a96d33c5cd1deb74c1493c3b3ac",
        "1b7babd2cce5bb10adac7b061cf7ba065d480edb"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 23 15:42:28 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 23 15:42:28 2010 -0800"
      },
      "message": "Merge \"Use Java API from xml configuration in the test application\""
    },
    {
      "commit": "d7d22eba3c1bb7212ccc566fedb16dbee44f51a2",
      "tree": "ddeec07f5ebb6f0f7ab93c498b2836e93029abbb",
      "parents": [
        "80bd6a16379a009fbad697fe1c4ffabe0f2630ff"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 23 13:45:33 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 23 14:06:38 2010 -0800"
      },
      "message": "Propagate errors all the way through the MediaSources and send either MEDIA_PLAYBACK_COMPLETE or MEDIA_ERROR depending on the final reason for running out of buffers to play back.\n\nrelated-to-bug: 2463749\n"
    },
    {
      "commit": "42ddfc949504347902fc40a363e5d72c51111d7f",
      "tree": "83d1cd6ed587c343d32664b237cddd0869a9add5",
      "parents": [
        "f82c76656b29059e2d28b9ca4bdad11d7cba038b",
        "5ee0bce5e006610a06d6d8f3572098b1ccaded6d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 23 10:30:48 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 23 10:30:48 2010 -0800"
      },
      "message": "Merge \"Return runtime errors instead of asserting in MPEG4 file format validation, also add more validation to ensure presence of codec specific data for avc, aac and mpeg4.\""
    },
    {
      "commit": "5ee0bce5e006610a06d6d8f3572098b1ccaded6d",
      "tree": "a9b9e4dbcd7f94be86f6e3773848f6f9369147e7",
      "parents": [
        "cfe79e9220c996ed9f60fbc00eebb23e7faba2f0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 23 10:12:02 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 23 10:21:39 2010 -0800"
      },
      "message": "Return runtime errors instead of asserting in MPEG4 file format validation, also add more validation to ensure presence of codec specific data for avc, aac and mpeg4.\n\nrelated-to-bug: 2431967\n"
    },
    {
      "commit": "f82c76656b29059e2d28b9ca4bdad11d7cba038b",
      "tree": "57734d0756c6d29ca9c507bbf361990a719ca4f7",
      "parents": [
        "cfe79e9220c996ed9f60fbc00eebb23e7faba2f0",
        "68db99ef761456ffaa0c4b918ce75dfc0892784a"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 23 10:16:57 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 23 10:16:57 2010 -0800"
      },
      "message": "Merge \"Replace system property retrieval calls with DecoderCapabilities Java API calls.\""
    },
    {
      "commit": "d6b6bf93219c8f7b3a780174d03e42174c32f38a",
      "tree": "a74783785f6799cc72f33ba3a78bcf8e123611f0",
      "parents": [
        "fde32903740fd2d12eb5895a5662d56a18f8a00a",
        "078f7f05d53ba8e92f4a72992edab732125af79f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 22 16:34:32 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 22 16:34:32 2010 -0800"
      },
      "message": "Merge \"Properly unload the renderer shared library after the renderer goes away.\""
    },
    {
      "commit": "582ae172a4e9784f377c9935b47160fba1764142",
      "tree": "d2eecdf218e1314594f4bfc890d0ae9074f88b6f",
      "parents": [
        "ab9985ed4c02ef70d4a48bf3bbeedc12d14928f3",
        "196863d27407e23c69debdd061df58ce8fe76c20"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 22 16:08:28 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 22 16:08:28 2010 -0800"
      },
      "message": "Merge \"Fix for the safty check. It checks that nFir21 + jNpoints \u003c\u003d BUF_SIZE,  but when it calls GetByteArrayRegion, it multiplies it by 2 which  defeats the \"// safety first\" check at the beginning.\""
    },
    {
      "commit": "196863d27407e23c69debdd061df58ce8fe76c20",
      "tree": "da98749f52e5ca39bb3ff282ca2df5c660aa0b4f",
      "parents": [
        "bc92766cfd8d91f390799a96d5fb8c4aa4d07448"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 22 15:56:21 2010 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 22 15:59:03 2010 -0800"
      },
      "message": "Fix for the safty check. It checks that nFir21 + jNpoints \u003c\u003d BUF_SIZE,\n but when it calls GetByteArrayRegion, it multiplies it by 2 which\n defeats the \"// safety first\" check at the beginning.\n"
    },
    {
      "commit": "078f7f05d53ba8e92f4a72992edab732125af79f",
      "tree": "d491e31671a1a4feebe83817b0b0901d200ae54d",
      "parents": [
        "ab9985ed4c02ef70d4a48bf3bbeedc12d14928f3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 22 11:24:01 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 22 15:41:07 2010 -0800"
      },
      "message": "Properly unload the renderer shared library after the renderer goes away.\n"
    },
    {
      "commit": "b8de9578dcb672d92b407d7a24c77af13f85c353",
      "tree": "c271c7938f29469eeb4f1e27e444985669488316",
      "parents": [
        "7e31e0c351a3b2bb70ee5507b34f1c72d62b56d7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 22 14:58:45 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 22 14:58:45 2010 -0800"
      },
      "message": "This hardware video decoder lies about its required input buffer sizes allocating 2.7 MB of memory instead of the required 176 KB... Added another quirk.\n\nrelated-to-bug: 2281327\n"
    },
    {
      "commit": "1b7babd2cce5bb10adac7b061cf7ba065d480edb",
      "tree": "5d2b0456f6f91882859fbb3819c0c98d25abb114",
      "parents": [
        "9a56aaf12b462a064e81e02386eca8a1e77fe737"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 16 14:38:23 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Feb 22 11:32:02 2010 -0800"
      },
      "message": "Use Java API from xml configuration in the test application\n"
    },
    {
      "commit": "9a56aaf12b462a064e81e02386eca8a1e77fe737",
      "tree": "c6c7e3a8ac5ff260f9823e2c774ccd721f27b92c",
      "parents": [
        "bcea8124a1d85c610b4bd4e6d360a861d2f61793",
        "8978547f254b6b6ba2e322794aa044803f3edc2a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 11:19:51 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 22 11:19:51 2010 -0800"
      },
      "message": "am 8978547f: am f5fe3949: Fix issue 2459650.\n\nMerge commit \u00278978547f254b6b6ba2e322794aa044803f3edc2a\u0027\n\n* commit \u00278978547f254b6b6ba2e322794aa044803f3edc2a\u0027:\n  Fix issue 2459650.\n"
    },
    {
      "commit": "8978547f254b6b6ba2e322794aa044803f3edc2a",
      "tree": "cabd2f1217040f3ba358eda894a1405f2b0bf71c",
      "parents": [
        "6371a2d31f30b473e91be9cced64a2527c086af1",
        "f5fe3949f5db69b19ce3fac7abce2088106f2e2b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 11:13:08 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 22 11:13:08 2010 -0800"
      },
      "message": "am f5fe3949: Fix issue 2459650.\n\nMerge commit \u0027f5fe3949f5db69b19ce3fac7abce2088106f2e2b\u0027 into eclair-plus-aosp\n\n* commit \u0027f5fe3949f5db69b19ce3fac7abce2088106f2e2b\u0027:\n  Fix issue 2459650.\n"
    },
    {
      "commit": "f5fe3949f5db69b19ce3fac7abce2088106f2e2b",
      "tree": "4a7412c83ba329e9ce081e16b44d861dae6812e8",
      "parents": [
        "ee3bbefd34fd5330ebbc59175a328197ab7526af"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 01:37:19 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 22 01:37:19 2010 -0800"
      },
      "message": "Fix issue 2459650.\n\nThis change fixes a problem where an unwanted tone is generated by audio policy manager when a MT call is answered.\nThis is because of a policy that replaces high visibility system sounds (ringtones, alarms...) by a beep when in call.\nThere is a transitory phase while the call is being answered where the phone state is changed to IN_CALL but the\nringtone is still playing. The audio policy manager then mutes the end of the ringtone and starts playing a beep\nin replacement because the ringtone is categorized as high visibility.\n\nThe fix consists in changing the ringtone stream type from high visibility to low visibility. This is not a problem as\nthe only actual use case where a ringtone would be generated while in call is if another call is received.\nBut in this case, the phone system does not generate a ringtone but a call waiting tone instead.\nIt is therefore not required to handle a ringtone as a high visibiltiy tone that must be somehow signaled to the user\nwhile in call.\n"
    },
    {
      "commit": "b427a7b0e4f335b27484d4b46cfa48c0cc601755",
      "tree": "0c8659b05c431936d1c93dc8d00928c430a9bb72",
      "parents": [
        "08d13c3cbb0b250b84ca861edb462060556aead9",
        "620144029819df06bda2452fa3ec15334f66bd65"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sun Feb 21 23:18:45 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Feb 21 23:18:45 2010 -0800"
      },
      "message": "Merge \"Increase the sleep time to fix testTakePicture.\""
    },
    {
      "commit": "620144029819df06bda2452fa3ec15334f66bd65",
      "tree": "244e8173336887b3c65075c570a962b70ce49fee",
      "parents": [
        "e265532f30ca460dc0900c4cdfc3c7425ae7714b"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Feb 22 15:06:47 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Feb 22 15:08:16 2010 +0800"
      },
      "message": "Increase the sleep time to fix testTakePicture.\n\nOne of the build needs 5 seconds for snapshot in low light. I don\u0027t want to\nincrease the sleep time, but this is what we have now.\n\nbug:2141755\n"
    },
    {
      "commit": "fda25347b8aaa860e0fdbc972c0f4411c85f8fa3",
      "tree": "d66fb8a557087894b6c45209353cea7ef829e663",
      "parents": [
        "59eac4b535adad485bffcfb07ae4b734168fc2e6"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Feb 20 08:07:03 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Feb 20 08:07:03 2010 -0800"
      },
      "message": "sdutils: Get rid of sdutils - use vdc for similar low level functions\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "e49268af9e4639b6472048d03df0f6a72194790f",
      "tree": "d232262e8ccad5cca47ca1e7ddce664433ba32f1",
      "parents": [
        "35abad216da8a49128c3899a206c15d44c471617",
        "7691af90625eaad79de639e61cd2e6b5566f2e0b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 19 16:00:26 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 19 16:00:26 2010 -0800"
      },
      "message": "Merge \"Make sure that the event callback thread is Java capable in the simulator.\""
    },
    {
      "commit": "7691af90625eaad79de639e61cd2e6b5566f2e0b",
      "tree": "809a63bfa44893f23f1d1683e5d4bd868630fcfd",
      "parents": [
        "c34ebce475a6994f1aa59b8c535ff966c8f59431"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 19 15:16:57 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 19 15:47:51 2010 -0800"
      },
      "message": "Make sure that the event callback thread is Java capable in the simulator.\n"
    },
    {
      "commit": "b2d69e3d7742840fe3b2fb86ded8bec510e7a9ca",
      "tree": "2f932be6b5e502bc8aba9623b8c72d9c8feb2b7a",
      "parents": [
        "b52188ee57279181dec7f7f22f2b163f62b1ddad"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 19 09:46:37 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 19 09:55:02 2010 -0800"
      },
      "message": "The MediaScanner is way too obsessed with restricting the files to be scanned.\n\nrelated-to-bug: 2326148\n"
    },
    {
      "commit": "b52188ee57279181dec7f7f22f2b163f62b1ddad",
      "tree": "70212b18a88b3a3d238e0331547fc3d05ba79533",
      "parents": [
        "d064c16469fd3086a17f2d45488b120205e7d857",
        "406a18b5b3d53466a3e03b66413ff3a50243a6a8"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 19 08:02:57 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 19 08:02:57 2010 -0800"
      },
      "message": "Merge \"Implement legacy behaviour for MediaPlayer\u0027s behaviour of starting from the start of the media on a start() call instead of resuming at the current position, if previously reached the end of the stream. Also properly report number of frames played to audio flinger. Finally, delay spawing the queue thread until actually used.\""
    },
    {
      "commit": "406a18b5b3d53466a3e03b66413ff3a50243a6a8",
      "tree": "e9585ff0cf444ac6f4e433992cc4f60bf35f7c1c",
      "parents": [
        "5706329cf42db714582fa698eb9f408350276f16"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 18 16:45:13 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 18 16:45:13 2010 -0800"
      },
      "message": "Implement legacy behaviour for MediaPlayer\u0027s behaviour of starting from the start of the media on a start() call instead of resuming at the current position, if previously reached the end of the stream. Also properly report number of frames played to audio flinger. Finally, delay spawing the queue thread until actually used.\n\nrelated-to-bug: 2453220\n"
    },
    {
      "commit": "397afb54649d30b2710a6620b08c3565500f2ed7",
      "tree": "2d3f9fa526ebc86232a4c4e4b96be7b32b4f1f09",
      "parents": [
        "5706329cf42db714582fa698eb9f408350276f16"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 18 15:55:30 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 18 15:55:30 2010 -0800"
      },
      "message": "Fix a race condition in the prefetcher, the source may be shutdown while we\u0027re reading data from it.\n\nrelated-to-bug: 2453414\n"
    },
    {
      "commit": "a6fe26c58ff6810264222212ab3d641a077733e7",
      "tree": "f81eab5e6f563f18225d2781140518fc5424d3cb",
      "parents": [
        "75bbe2b7c7b404c203d9ec79880ea57e22fc9523",
        "7fe4fe68fad547bab4bbd8133d14aeed427f5b96"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 18 09:36:08 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 18 09:36:08 2010 -0800"
      },
      "message": "Merge \"Range check in MediaScanner::processDirectory\""
    },
    {
      "commit": "7fe4fe68fad547bab4bbd8133d14aeed427f5b96",
      "tree": "57249aa47c9c7cb657069e2b1b4640f76ee49f7b",
      "parents": [
        "c948cc8c8a8a9a751d8252e390e5975d1a763d34"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 18 09:25:49 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 18 09:26:47 2010 -0800"
      },
      "message": "Range check in MediaScanner::processDirectory\n\nMake sure we don\u0027t have an empty string before checking if it\u0027s a\ndirectory since this string is tainted.\n\nChange-Id: I5eb310ced58c3c64a7af2d11b80326efe5adbcab\n"
    },
    {
      "commit": "75bbe2b7c7b404c203d9ec79880ea57e22fc9523",
      "tree": "0412e18b0f7602e84e4155083325db178a2566a2",
      "parents": [
        "6f760ee1c232b39a5593dd0a53f0788c6700ee68",
        "3cbd62c3cebf0c0c62a50ccc736ac4caa3a4bf64"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 18 09:24:42 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 18 09:24:42 2010 -0800"
      },
      "message": "Merge \"Store AudioTrack return value for error condition\""
    },
    {
      "commit": "3cbd62c3cebf0c0c62a50ccc736ac4caa3a4bf64",
      "tree": "4430745fe19690197445170dd372aef6c6145200",
      "parents": [
        "c948cc8c8a8a9a751d8252e390e5975d1a763d34"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 18 09:03:06 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 18 09:03:34 2010 -0800"
      },
      "message": "Store AudioTrack return value for error condition\n\nStore AudioTrack-\u003einitCheck()\u0027s return value so we can return it after\nthe AudioTrack is deleted.\n\nChange-Id: Ie042a7d6a54d7f9afd8a5767cfd167dbeb2e5c04\n"
    },
    {
      "commit": "c0178f10972304027c990a930d6c81060e772abe",
      "tree": "161deec00a7be487c882170abec2ab118c3a5a60",
      "parents": [
        "0a026cff9ef28b973a86e0503f510b6f9935d880"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 17 15:58:57 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 17 16:01:01 2010 -0800"
      },
      "message": "We are cancelling this event during reset, but the event may have already been dispatched at the time, blocking on the mutex. While it\u0027s blocking, reset() cancels the event, we\u0027re then unblocked and bad things(tm) happen.\n\nrelated-to-bug: 2451174\n"
    },
    {
      "commit": "0a026cff9ef28b973a86e0503f510b6f9935d880",
      "tree": "6f7c35ad89db60749de1b82466d10e9379aa988e",
      "parents": [
        "1f13ceb6d241ca9cebebfa6c6b5853291c2c17d6",
        "4727040c5c40e095c28da620d6b31504aa68b694"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 17 15:06:51 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 17 15:06:51 2010 -0800"
      },
      "message": "Merge \"Disable the TI AMR hardware decoder for audio decoding until its issues are resolved.\""
    },
    {
      "commit": "4727040c5c40e095c28da620d6b31504aa68b694",
      "tree": "9191daccb6257f6837eb0113940b124be4b06793",
      "parents": [
        "0f5a434c5467ef300b7bb408d40aa763aecdb19f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 17 15:04:18 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 17 15:04:18 2010 -0800"
      },
      "message": "Disable the TI AMR hardware decoder for audio decoding until its issues are resolved.\n\nrelated-to-bug: 2450938\n"
    },
    {
      "commit": "05513119803845c11d845cbc376759cddcfe13bb",
      "tree": "4bfc421cd457565ccf9c267c09d9d671a591e3a4",
      "parents": [
        "1e84ac51221037b1446baad30e1aae8823e5f5a6"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Feb 17 10:06:41 2010 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Feb 17 13:29:08 2010 -0800"
      },
      "message": "Unhide new SoundPool API\u0027s. Bug 2415373.\n"
    },
    {
      "commit": "af6fdfa4bbeb0700b042694b5832752eec3600eb",
      "tree": "b8b74291582a7046bef826a5c7e4c1946d3d0c13",
      "parents": [
        "aec0937be65d49b280ed6e0c97b24880ddb40543",
        "7bef5a58f1166c0e2509e27ace07c7af7c5d1d20"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Feb 17 09:16:43 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 17 09:16:43 2010 -0800"
      },
      "message": "Merge \"Fix logging in SoundPool.\""
    },
    {
      "commit": "afdf85d435eb37cba307aa259d5064a8e3c662e1",
      "tree": "41cc25b9750be4736128a7789a2932eba9bdc357",
      "parents": [
        "e265532f30ca460dc0900c4cdfc3c7425ae7714b",
        "9ce379aef155e0c21b5d82d8dc713c62792e4f30"
      ],
      "author": {
        "name": "Jaikumar Ganesh",
        "email": "jaikumar@google.com",
        "time": "Wed Feb 17 09:15:50 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 17 09:15:50 2010 -0800"
      },
      "message": "Merge \"Fix issue 2440226: Car dock volume synchronization.\""
    },
    {
      "commit": "7bef5a58f1166c0e2509e27ace07c7af7c5d1d20",
      "tree": "7b2ff223466bcd4257031ede636b880e6e4be058",
      "parents": [
        "e265532f30ca460dc0900c4cdfc3c7425ae7714b"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Feb 17 09:09:24 2010 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Feb 17 09:09:24 2010 -0800"
      },
      "message": "Fix logging in SoundPool.\n"
    },
    {
      "commit": "68db99ef761456ffaa0c4b918ce75dfc0892784a",
      "tree": "e216cd8e59d28288164e1fa8c7ae7fdfbb3fa787",
      "parents": [
        "4a2d3b15ecca1f4db1e2c935ff36d19838eb5622"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 17 00:10:09 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 17 00:11:32 2010 -0800"
      },
      "message": "Replace system property retrieval calls with DecoderCapabilities Java API calls.\n"
    },
    {
      "commit": "675ee6ac3641e75a1496b06bdbc89fb4f5476647",
      "tree": "2d97b554e9c2d8e163ce8e6142397f6b737b9b10",
      "parents": [
        "4b71fc0fa8dee98764b55aefc176599bd982f53e",
        "f992cbb9aae593c7787ac9c5f6b475e7bb0a92c5"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Feb 16 16:41:19 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 16 16:41:19 2010 -0800"
      },
      "message": "Merge \"Add SoundPool API to pause and resume all active streams. Bug 2426531.\""
    },
    {
      "commit": "f992cbb9aae593c7787ac9c5f6b475e7bb0a92c5",
      "tree": "198ccb03a7257622d3f68b6e693c3e140346e0d6",
      "parents": [
        "146c4a53b5e4d09e712147b031a9db9088a1769c"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Feb 09 13:00:09 2010 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Feb 16 16:19:32 2010 -0800"
      },
      "message": "Add SoundPool API to pause and resume all active streams. Bug 2426531.\n"
    },
    {
      "commit": "9f564858235aff2eca67b59c12b20ffb14a33439",
      "tree": "1bf0a7885ebaf9686a67240530e5fa69f6a3f689",
      "parents": [
        "67e8dfb2576e7492d6ff61f3da91d33a48125786",
        "57f790f96d5ed1f1dad8179a110143e9d3df808b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 16 14:41:14 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 16 14:41:14 2010 -0800"
      },
      "message": "Merge \"If we never triggered a range request but know the content length make sure to not read more data than there could be, otherwise we\u0027d block indefinitely if the server doesn\u0027t close the connection.\""
    },
    {
      "commit": "67e8dfb2576e7492d6ff61f3da91d33a48125786",
      "tree": "0b62057c079587563b95ddde037f5eaaa1c5deb5",
      "parents": [
        "9d4b57545300c6de1722094404ae09bf0f6be937",
        "2ae13a9c48c2aa37423bfb272736da207ae588ac"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 16 14:36:45 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 16 14:36:45 2010 -0800"
      },
      "message": "Merge \"Don\u0027t hold the prefetcher mutex while prefetching a single source, the lock protects the list of sources and does not guard access to the individual sources.\""
    },
    {
      "commit": "2ae13a9c48c2aa37423bfb272736da207ae588ac",
      "tree": "13876c088ce375559aaa66d9eff9af69ff0d2398",
      "parents": [
        "241379081e046803b7f4cf4f07091b9de49abf31"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 16 14:24:05 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 16 14:24:05 2010 -0800"
      },
      "message": "Don\u0027t hold the prefetcher mutex while prefetching a single source, the lock protects the list of sources and does not guard access to the individual sources.\n\nrelated-to- bug: 2413024\n"
    },
    {
      "commit": "57f790f96d5ed1f1dad8179a110143e9d3df808b",
      "tree": "ad15e374f3620b1dc941321a4287b79ac31ba2a6",
      "parents": [
        "241379081e046803b7f4cf4f07091b9de49abf31"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 16 14:00:36 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 16 14:00:36 2010 -0800"
      },
      "message": "If we never triggered a range request but know the content length make sure to not read more data than there could be, otherwise we\u0027d block indefinitely if the server doesn\u0027t close the connection.\n\nrelated-to-bug: 2442307\n"
    },
    {
      "commit": "cf06dd0a8a4321ea640e7d1ebe5dffcd69324a04",
      "tree": "0cfd0573e6787a9e1bdc79e09427bc363340e611",
      "parents": [
        "bb50863c07c763ad50f723954cfc4401759e448a",
        "bc8342721d9e32cac624587e8e5c64372ceaff18"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 16 11:48:33 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 16 11:48:33 2010 -0800"
      },
      "message": "Merge \"The AMRSource failed to properly release a media buffer in case of error.\""
    },
    {
      "commit": "62ed7a6d4a20d1efb151315b104805ce445e7346",
      "tree": "d95a300cb413969567c42088e8f17e1f16d8db3f",
      "parents": [
        "8afd7c1c9425c4a5f909e66adb5147907c3f16ae",
        "d32fba411f2710ad66681466674c8243f2ca3454"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 16 10:59:13 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 16 10:59:13 2010 -0800"
      },
      "message": "Merge \"Support decoder queries from media profiles xml configuration file\""
    },
    {
      "commit": "bc8342721d9e32cac624587e8e5c64372ceaff18",
      "tree": "325016f36b00beae5a3640ddff7c58c1ac9ca297",
      "parents": [
        "241379081e046803b7f4cf4f07091b9de49abf31"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 16 10:46:02 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 16 10:46:02 2010 -0800"
      },
      "message": "The AMRSource failed to properly release a media buffer in case of error.\n\nrelated-to-bug: 2441307\n"
    },
    {
      "commit": "9ce379aef155e0c21b5d82d8dc713c62792e4f30",
      "tree": "4b73365410f0e0af6e4683171b6fc84d32157ea9",
      "parents": [
        "103d53645c0b8ef532e8715da6c6cd33ad5f98e2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 16 06:00:26 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 16 06:40:20 2010 -0800"
      },
      "message": "Fix issue 2440226: Car dock volume synchronization.\n\nAudioService now sends intent AudioManager.VOLUME_CHANGED_ACTION  when the volume is changed\non any stream type (previously the intent was sent only for STREAM_BLUETOOTH_SCO stream).\nA new extra for previous volume value is added to the intent.\n"
    },
    {
      "commit": "d32fba411f2710ad66681466674c8243f2ca3454",
      "tree": "ce2d9ec6488b7e409fe94331cca66c429412e8ac",
      "parents": [
        "87c2b15d398fccf4f9d3ab49bc3e0b3e8a99759d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 11 14:32:13 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Feb 12 18:15:45 2010 -0800"
      },
      "message": "Support decoder queries from media profiles xml configuration file\n"
    },
    {
      "commit": "190dd57fb843b1b5019ebdba32e44617c6bbc3d0",
      "tree": "b90a1e3828acfd44b6264d80f63f573986b4cf67",
      "parents": [
        "cf36010357b0e106e600c953437e6375b3e65fcb",
        "8d00b53cc408a7fce541fa076a55c9b7239ce590"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Feb 12 17:04:29 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 12 17:04:29 2010 -0800"
      },
      "message": "Merge \"Replace Tremor with Tremolo (an ARM optimised version of the Tremor library for doing Ogg Vorbis decompression)\""
    },
    {
      "commit": "8d00b53cc408a7fce541fa076a55c9b7239ce590",
      "tree": "f9c1777c3fbbb920e747669d64ab6cd80b9b0ecd",
      "parents": [
        "111c178bc46fa2c61027bc3870a2c8c442936821"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Feb 12 16:28:53 2010 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Feb 12 16:46:40 2010 -0800"
      },
      "message": "Replace Tremor with Tremolo (an ARM optimised version of the Tremor library for doing Ogg Vorbis decompression)\n"
    },
    {
      "commit": "bab28017a56a770a97b2da770deaf6649b30766e",
      "tree": "c885566dec1cb844ef2391d8d39390fffce6c59a",
      "parents": [
        "046ceb572f4f807724247b972e2489eda9122661",
        "7b73cfcc7530114ac81556bb9c58aff4181da92d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 14:52:41 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 12 14:52:41 2010 -0800"
      },
      "message": "Merge \"Preserve a preview frame to be restored after resuming the playback session.\""
    },
    {
      "commit": "7b73cfcc7530114ac81556bb9c58aff4181da92d",
      "tree": "bd4c211d21ede22537534f03dac251112000de8b",
      "parents": [
        "ba7ec917ea91364598de1ba7a29910cec08fd5de"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 14:40:08 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 14:41:51 2010 -0800"
      },
      "message": "Preserve a preview frame to be restored after resuming the playback session.\n\nrelated-to-bug: 2231576\n"
    },
    {
      "commit": "acc63512e90630e79446980c4c2966fd8a701d60",
      "tree": "f5460b86977d7c420d7576db76896c0338a6aaa4",
      "parents": [
        "ba7ec917ea91364598de1ba7a29910cec08fd5de",
        "fbb3885024ac9c90f322b6259d7e519c8927e6ff"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 13:21:22 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 12 13:21:22 2010 -0800"
      },
      "message": "Merge \"New API on java\u0027s MediaPlayer to suspend/resume a session.\""
    },
    {
      "commit": "fbb3885024ac9c90f322b6259d7e519c8927e6ff",
      "tree": "47dece4ffda221bd9cf6e13852ac9fb37b78e0f4",
      "parents": [
        "965e37ec88609c36a3c5461ece459a96abb6f7ca"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 12:35:58 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 12:44:10 2010 -0800"
      },
      "message": "New API on java\u0027s MediaPlayer to suspend/resume a session.\n\nrelated-to-bug: 2231576\n"
    },
    {
      "commit": "ba7ec917ea91364598de1ba7a29910cec08fd5de",
      "tree": "32ad186603b602989b5f67f6a2eb8a7fcb680397",
      "parents": [
        "965e37ec88609c36a3c5461ece459a96abb6f7ca"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 10:42:02 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 12:43:34 2010 -0800"
      },
      "message": "Squashed commit of the following:\n\ncommit 427e927298449826bb5b98327b0c05957aa051e6\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Feb 12 10:39:07 2010 -0800\n\n    Fixing a race condition in AwesomePlayer and support for suspend/resume.\n\ncommit 96201a04b6657b6bd69ec6100f4de66aebcaa0b4\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Feb 12 10:36:15 2010 -0800\n\n    Protect MPEG4Source\u0027s sanity by properly locking.\n\nrelated-to-bug: 2231576\n"
    },
    {
      "commit": "6015a9715421a339c2b7bb63f9166504e3488179",
      "tree": "44343bb407d7df8a9bd83fe3e0c3070a307c4083",
      "parents": [
        "a0659aa36c987e28e29778bd97e75fe52152c60e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 12 07:41:14 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 12 07:41:14 2010 -0800"
      },
      "message": "Fix issue 2418668: AudioManager isWiredHeadsetOn() always returns false for headset without mic.\n"
    },
    {
      "commit": "8b799a323cfc2dfb1c7da18467e21cc4e19504f6",
      "tree": "d16cba446bb9278c51aa1066199fee9861e9071e",
      "parents": [
        "000479f9e325b4e426a67033abd92d47da412725",
        "c5d5ee34d7c1026ca8d5cd8b186e5a73c5230247"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 11 13:43:40 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 11 13:43:40 2010 -0800"
      },
      "message": "Merge \"Add support for \"album artist\" tag.\""
    },
    {
      "commit": "c5d5ee34d7c1026ca8d5cd8b186e5a73c5230247",
      "tree": "f1be351c0dc6609f050f8cd0cdc60bf305ee8d49",
      "parents": [
        "4e208bd8722ad48c342c0128313ef40971234121"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 11 13:31:44 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 11 13:32:04 2010 -0800"
      },
      "message": "Add support for \"album artist\" tag.\n"
    },
    {
      "commit": "000479f9e325b4e426a67033abd92d47da412725",
      "tree": "16b93ea777744aa24ffe7d3a191bb90529ad4ce5",
      "parents": [
        "28a5dc229ed25c771cde25668928edc788073029"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 09 17:46:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 13:16:22 2010 -0800"
      },
      "message": "split libsurfaceflinger_client and libcamera_client out of libui\n"
    },
    {
      "commit": "28a5dc229ed25c771cde25668928edc788073029",
      "tree": "cad3cc0004aa5c409173eba232f5ec8b78440064",
      "parents": [
        "27b28b3f62bd3b54fa13acd5d035940b9be464f3",
        "4ab5a6fe78fafff9b409a6008f3ac51fecc5281d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 11 12:44:03 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 11 12:44:03 2010 -0800"
      },
      "message": "Merge \"Support for rendering through an overlay on the droid even if a software renderer is active.\""
    },
    {
      "commit": "4ab5a6fe78fafff9b409a6008f3ac51fecc5281d",
      "tree": "c70bab9b6fd9c262d55ce57848ff287a00ebc253",
      "parents": [
        "aa82768b8c6b6e81bb048d2d72b6586eb66b5b5d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 11 11:00:26 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 11 11:03:01 2010 -0800"
      },
      "message": "Support for rendering through an overlay on the droid even if a software renderer is active.\n"
    },
    {
      "commit": "49ffc0ff72a29f000b56deb34b0706cbfc5624bf",
      "tree": "552d1620a011a24432be7290ea9c8637afaaa1bb",
      "parents": [
        "0bcc74ccca4a8f01a125dea6265851ceda513921"
      ],
      "author": {
        "name": "Ray Chen",
        "email": "raychen@google.com",
        "time": "Fri Feb 05 11:56:12 2010 +0800"
      },
      "committer": {
        "name": "Ray Chen",
        "email": "raychen@google.com",
        "time": "Thu Feb 11 10:26:34 2010 +0800"
      },
      "message": "Revise ThumbnailUtils API.\n"
    },
    {
      "commit": "aa82768b8c6b6e81bb048d2d72b6586eb66b5b5d",
      "tree": "7ce92cf06d8de0bbf184370ebf21661250a4905d",
      "parents": [
        "a5cbed967d98926a89c8da6ea76635a9c597e579",
        "259b7c1c1bc40a4a47214944b8a0587c36e8c144"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 15:16:09 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 10 15:16:09 2010 -0800"
      },
      "message": "Merge \"Fixing AMR recording code.\""
    },
    {
      "commit": "259b7c1c1bc40a4a47214944b8a0587c36e8c144",
      "tree": "b322e9ac68dc1fa6c704d0146769d599ab863a75",
      "parents": [
        "f67119bce50f7d0fd4d708bd033ec33465239373"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 15:04:31 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 15:04:31 2010 -0800"
      },
      "message": "Fixing AMR recording code.\n"
    },
    {
      "commit": "d2e6af66ce9fdf7bfa72efe18b74260901a944a6",
      "tree": "c59d187ed96275270bfc0f86a16dc33c97981dcc",
      "parents": [
        "e4e82f2782e61658256ecb85066e273c22a37951",
        "b45b0845a6db32848ad08ac1037ef67a68ec2d39"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 10 14:24:44 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 10 14:24:44 2010 -0800"
      },
      "message": "Merge \"Do autodetection even if no locale was specified, and use the detected encoding if it is unambiguous.\""
    },
    {
      "commit": "4c48cb72ffc975c2a94473efb529d559aacaff17",
      "tree": "2aab308ad53879ab9f8b4fc18a29e25c2f3e15ba",
      "parents": [
        "7d574137946ea59a0f01dfda62ab46911d366a52",
        "01830a0814ae2db9141f49720d9e5aa2457854f0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 11:16:14 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 10 11:16:14 2010 -0800"
      },
      "message": "Merge \"Properly detect Adobe\u0027s .f4v file format as an mp4 ISO compliant file.\""
    },
    {
      "commit": "01830a0814ae2db9141f49720d9e5aa2457854f0",
      "tree": "7be43624ef01561a6e22256e648babab67fcd1fc",
      "parents": [
        "6ed937ebe99088b5671a645060340a558b02fefb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 11:08:15 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 11:08:15 2010 -0800"
      },
      "message": "Properly detect Adobe\u0027s .f4v file format as an mp4 ISO compliant file.\n"
    },
    {
      "commit": "7d574137946ea59a0f01dfda62ab46911d366a52",
      "tree": "5ea347ead6d40a016251b41faf57f3ecff379b94",
      "parents": [
        "6ed937ebe99088b5671a645060340a558b02fefb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 10:52:06 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 10:56:07 2010 -0800"
      },
      "message": "TI does not want the hardware H.263 decoder to be enabled.\n"
    },
    {
      "commit": "b45b0845a6db32848ad08ac1037ef67a68ec2d39",
      "tree": "3f75d6ea3cbd61fc759c42b731f56d495ef81dba",
      "parents": [
        "bfcb22a207499c7ecd4aef9bea2ac778d8be8fc8"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 10 09:56:05 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 10 10:36:02 2010 -0800"
      },
      "message": "Do autodetection even if no locale was specified, and use the\ndetected encoding if it is unambiguous.\n"
    },
    {
      "commit": "6ed937ebe99088b5671a645060340a558b02fefb",
      "tree": "12f5b743bfee5433ebdde83ce8fb3c93c205fe49",
      "parents": [
        "5b5f8652dac5416461332c1b23dc3d5ba315b074"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 16:59:18 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 10:20:34 2010 -0800"
      },
      "message": "Implementation of stagefright-enabled MediaPlayerService::decode functionality\n\nrelated-to-bug: 2359268\n"
    },
    {
      "commit": "bfcb22a207499c7ecd4aef9bea2ac778d8be8fc8",
      "tree": "0d915f4104f7adcaebaeb230f4f1857d85f2bff6",
      "parents": [
        "1c00e57ca52fefd0b4ca5085a8586f53fd48277e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 09 15:15:46 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Feb 10 09:31:12 2010 -0800"
      },
      "message": "Don\u0027t create a genre in the database for genre code 255 (unknown)\n"
    },
    {
      "commit": "4eaef139cf72e8f260ec4cf165c42f579cf6127d",
      "tree": "af77cef70e90951ee5889bd014b2875456284f04",
      "parents": [
        "88e2a5d3d3b85915eea9a5eddcbe9414bc2976c5",
        "ffdf4782d43df5fc59808de60c346f1edd695bd9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 14:28:32 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 14:28:32 2010 -0800"
      },
      "message": "Merge \"Defer actual work of setDataSource given a URI to the prepare phase in order to not block the calling thread for any significant amount of time...\""
    },
    {
      "commit": "ffdf4782d43df5fc59808de60c346f1edd695bd9",
      "tree": "6eb9fd13c7b275771d7c9cc7f72b235b8461b0de",
      "parents": [
        "fe3b8e9fe5e68ef307fdac3ad94b15215038dbc3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 14:05:43 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 14:27:33 2010 -0800"
      },
      "message": "Defer actual work of setDataSource given a URI to the prepare phase in order to not block the calling thread for any significant amount of time...\n\nrelated-to-bug: 2431117\n"
    },
    {
      "commit": "0dd4df27adaa8c034195451fd2c372ebcbf4db48",
      "tree": "c0a151e6bf84ad64f26f4e100507d5b89f61ce9c",
      "parents": [
        "632aa76422fcd4d1fca906b13203df62131f40e1",
        "42c444a8b18730614426a3c28193ae5fd59bab80"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 14:23:30 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 14:23:30 2010 -0800"
      },
      "message": "Merge \"If the codec\u0027s input buffer size is too small to accomodate the buffer read from the source, report and error instead of asserting.\""
    },
    {
      "commit": "632aa76422fcd4d1fca906b13203df62131f40e1",
      "tree": "d90493fbfa81060cbf719ede5f9cb1378e74a182",
      "parents": [
        "fe3b8e9fe5e68ef307fdac3ad94b15215038dbc3",
        "e83cefcef07f9ac025642c1ffec76b4c7ab39cf2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 09 14:22:29 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 14:22:29 2010 -0800"
      },
      "message": "Merge \"New external storage APIs.\""
    },
    {
      "commit": "42c444a8b18730614426a3c28193ae5fd59bab80",
      "tree": "1e61f28ffe8b8f9ee418fb643c03d73781c283b9",
      "parents": [
        "fe3b8e9fe5e68ef307fdac3ad94b15215038dbc3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 10:20:00 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 14:21:44 2010 -0800"
      },
      "message": "If the codec\u0027s input buffer size is too small to accomodate the buffer read from the source, report and error instead of asserting.\n"
    },
    {
      "commit": "e83cefcef07f9ac025642c1ffec76b4c7ab39cf2",
      "tree": "130696ee2a90150129c3ee98544c5814528c90f9",
      "parents": [
        "72e5a8820a996c547eacea534b11b6b8f6eca83b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 04 17:38:14 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Feb 09 14:20:55 2010 -0800"
      },
      "message": "New external storage APIs.\n\nThis implements the spec for external storage organization, and\nproperly reflects how the media scanner organizes the files it finds.\n\nAlso includes package manager support for removing app private\nfiles from external storage when the application is uninstalled.\n\nFor the new APIs and paths, the main place to look is Environment\nand Context.\n"
    },
    {
      "commit": "fe3b8e9fe5e68ef307fdac3ad94b15215038dbc3",
      "tree": "5120be10a8942a5cf67bb46614310442e5142244",
      "parents": [
        "df737e442efe0fe3899b1c3c7059fa0c70c4bc92"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 09 14:02:16 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 09 14:15:38 2010 -0800"
      },
      "message": "Support the disc number and custom genre tags for mp4.\n"
    },
    {
      "commit": "e33813dfaba83afa4bbda4ddbc210cf11f332a88",
      "tree": "b09e6f14a90ba7617ff3c6940e0a7d6166f80859",
      "parents": [
        "8e867eb454efadca1f45a48d879ee57c883dbb91",
        "4a9375ef2a06fc36ec308835ef9e7e4eea2ba69f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 12:10:31 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 12:10:31 2010 -0800"
      },
      "message": "Merge \"A little less verbosity in stagefright and special treatment for the error state while shutting down.\""
    },
    {
      "commit": "4a9375ef2a06fc36ec308835ef9e7e4eea2ba69f",
      "tree": "2ca6d266cb3599dbe5af468ce81547e0d9c1b197",
      "parents": [
        "18457fd41e7b39534e54200c1f2392da3140ec9f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 11:54:33 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 11:54:33 2010 -0800"
      },
      "message": "A little less verbosity in stagefright and special treatment for the error state while shutting down.\n"
    },
    {
      "commit": "fdcba38ccf3231fb10ce649e9f985c0b44d39d92",
      "tree": "2e3b36d62fede0cee1e42f8003cae09046b3ff43",
      "parents": [
        "18457fd41e7b39534e54200c1f2392da3140ec9f",
        "9f4557ed0b29c85df1f2219408bad91ae4e29cbb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 10:04:57 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 10:04:57 2010 -0800"
      },
      "message": "Merge \"During shutdown, don\u0027t loop forever on a state transition to OMX_StateInvalid.\""
    },
    {
      "commit": "e56b7e6c3506f1963c75dcf80c9c90f0c8d710ff",
      "tree": "bafa8a59a403aca7b4c145359466dd6b62d880b9",
      "parents": [
        "7040ce78666d3307521c6dc6d55c71ea90534a7e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 09 07:40:10 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 09 07:40:51 2010 -0800"
      },
      "message": "Use bswap_16 instead of swap16, because swap16 is not available in glibc\n"
    },
    {
      "commit": "9be54d400d68c735013bc8069fbcb66c3f98c3ee",
      "tree": "70556ab40222a104f8dd610471c6fe7aa6372703",
      "parents": [
        "ba5306824519ed12c15be28a3e46bd92773266fe"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 08 11:04:56 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 08 16:46:27 2010 -0800"
      },
      "message": "ID3v1 tag\u0027s strings are ISO8859, not UTF-8, so do the proper conversion when extracting metadata.\n\nrelated-to-bug: 2399408\n"
    },
    {
      "commit": "ba5306824519ed12c15be28a3e46bd92773266fe",
      "tree": "c6371da26e0197fc62792aa5dfe9a3b6d582013d",
      "parents": [
        "1655f9a86fad04d3ac9e44c07c3a510dc8c41a9a",
        "6be780ebd4d5733857e539b5dd30b532cd0fad80"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 08 16:39:24 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 08 16:39:24 2010 -0800"
      },
      "message": "Merge \"Properly implement asynchronous preparation of media playback.\""
    },
    {
      "commit": "7499ef3e68e920c07e990deb600ceb6cf9b0c4c2",
      "tree": "40fa738620d787e318668eadb08a91e5082465fb",
      "parents": [
        "ec5df83c5b44ad2f2b28a1a4420c4c4056dd6103",
        "3887ac7eb473b2cb6da37ed360c836adf0a479f3"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Feb 08 16:30:14 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 08 16:30:14 2010 -0800"
      },
      "message": "Merge \"Skip the endianness marker when converting UCS-2 to UTF-8, since it ends up in the UTF-8 string otherwise.\""
    },
    {
      "commit": "6be780ebd4d5733857e539b5dd30b532cd0fad80",
      "tree": "35aad5cd3640ff7cf71b0ca42f8f5a13fd9e6d96",
      "parents": [
        "a22927909f532b98fe87d8d711c71085d15c1ca3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 08 14:40:30 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 08 16:23:47 2010 -0800"
      },
      "message": "Properly implement asynchronous preparation of media playback.\n\nrelated-to-bug: 2413002\n"
    },
    {
      "commit": "3887ac7eb473b2cb6da37ed360c836adf0a479f3",
      "tree": "eafb48418a014c7c3ca5073573b9cccaad90ce90",
      "parents": [
        "655306f8a80b3e9fc52daf458ef319a8ed8c564c"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Feb 08 15:04:23 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Feb 08 16:16:54 2010 -0800"
      },
      "message": "Skip the endianness marker when converting UCS-2 to UTF-8, since it\nends up in the UTF-8 string otherwise.\n"
    },
    {
      "commit": "7723c94d3295de4e9a2b14cbf9f3a9a999f201d2",
      "tree": "8321d0b8dcf122727ac05e44187902e9466b1d07",
      "parents": [
        "67c12cc2aa5afd5922ceeaad91f951b99e2b2083",
        "2c510140507bb19097688a58c3ac7eca3aa638c0"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 08 15:16:07 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 08 15:16:07 2010 -0800"
      },
      "message": "Merge \"Use Tremor for sim-eng, and Tremolo for other targets.\""
    },
    {
      "commit": "655306f8a80b3e9fc52daf458ef319a8ed8c564c",
      "tree": "800ca65dd3b7153dccb2cd08f254c44779a97571",
      "parents": [
        "836a1f2cb99600c26a1a928a9e3240b9dec3079b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Feb 08 14:50:19 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Feb 08 14:50:19 2010 -0800"
      },
      "message": "Add support for the TPOS/TPA (disc number) id3 tag.\n"
    },
    {
      "commit": "2c510140507bb19097688a58c3ac7eca3aa638c0",
      "tree": "64324a939674ab7456bac010b8346119992d9e3e",
      "parents": [
        "870d81d038391d1d3896e7f2fa44801d1667f5bf"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 08 14:37:41 2010 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 08 14:37:41 2010 -0800"
      },
      "message": "Use Tremor for sim-eng, and Tremolo for other targets.\n"
    },
    {
      "commit": "9f4557ed0b29c85df1f2219408bad91ae4e29cbb",
      "tree": "f5d1267589e3b7cb9c5161c15f96ab4272d23aaf",
      "parents": [
        "5d36c46d2d8fb3f1bdc8fd1ff407e14b4433272a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 08 12:54:40 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Feb 08 12:54:40 2010 -0800"
      },
      "message": "During shutdown, don\u0027t loop forever on a state transition to OMX_StateInvalid.\n\nrelated-to-bug: 2420917\n"
    },
    {
      "commit": "5a84386ae3a5935a91c628a3e1084a71aa95850a",
      "tree": "55743ba2eb30ac632382b93fa763d1e06db74aa9",
      "parents": [
        "5d36c46d2d8fb3f1bdc8fd1ff407e14b4433272a",
        "2b7bb21a5c96caf16b8a13691fd7c3971ff3c7bd"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 08 10:46:36 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 08 10:46:36 2010 -0800"
      },
      "message": "Merge \"Fix for 2224736. Sometimes mSeeking is reset without calling setSeekTo first.\""
    },
    {
      "commit": "96827283dfb58dbe39bc241598177ed164e2dc0a",
      "tree": "91a5ffe88326b446f57b7249ddf1406b8654d2f6",
      "parents": [
        "75ed81427dce09fb3091f80585d3615f0efaf815"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Feb 05 18:50:17 2010 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Feb 05 18:50:17 2010 -0800"
      },
      "message": "Revert \"Replace Tremor with Tremolo (an ARM optimised version of the Tremor library for doing Ogg Vorbis decompression)\"\n\nThis reverts commit 2f46c062b05254671aec96a98b431f91ae7b270c.\n"
    },
    {
      "commit": "75ed81427dce09fb3091f80585d3615f0efaf815",
      "tree": "10d5c0642650647486345071779d2533b8d58988",
      "parents": [
        "c5d1c6db61f208b206b260f897bb5bbc64be4d97",
        "2f46c062b05254671aec96a98b431f91ae7b270c"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Feb 05 15:18:37 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 05 15:18:37 2010 -0800"
      },
      "message": "Merge \"Replace Tremor with Tremolo (an ARM optimised version of the Tremor library for doing Ogg Vorbis decompression)\""
    },
    {
      "commit": "9446c5046872e8ae44120d4057ae724875aba1a4",
      "tree": "58a95fe37adc5051fc967af6f2ca7b82f0319842",
      "parents": [
        "7722abe2591026e7db8910afa0431602723fc1e0",
        "e4cfcb82a86e1546474c3fd25101ab561063a1bd"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Feb 05 12:05:42 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 05 12:05:42 2010 -0800"
      },
      "message": "Merge \"When the extractor is not able to be created successfully, don\u0027t crash\""
    },
    {
      "commit": "e4cfcb82a86e1546474c3fd25101ab561063a1bd",
      "tree": "66b79cca30bd18ba9e56648567d35b330e364db7",
      "parents": [
        "09922d855bd008f58214e4c1a905263129a924a3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 04 18:08:06 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 04 18:11:32 2010 -0800"
      },
      "message": "When the extractor is not able to be created successfully, don\u0027t crash\n"
    },
    {
      "commit": "760dcecd9d0aad300c7af1e232156a9ad1399a71",
      "tree": "a9fee46fdce4593b3a70a6be4abf468096f61f2d",
      "parents": [
        "8fca8ab6849d83861b86c6a3af189adf86c51d07",
        "e7038ace44ed6e6cd27be35b003e6dd0412e936f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 04 17:50:05 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 04 17:50:05 2010 -0800"
      },
      "message": "Merge \"Camcorder profile Java API support - Use Enum for Quality instead of int - Use static values() method from Enum, rather than if-else\""
    },
    {
      "commit": "2b7bb21a5c96caf16b8a13691fd7c3971ff3c7bd",
      "tree": "233c9f60f946cd27a3669032a7f069522b244432",
      "parents": [
        "5c1779b8acbf570f66ed401e5a0daad56533305d"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Feb 04 17:43:09 2010 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Feb 04 17:43:09 2010 -0800"
      },
      "message": "Fix for 2224736. Sometimes mSeeking is reset without calling setSeekTo first.\n"
    },
    {
      "commit": "2f46c062b05254671aec96a98b431f91ae7b270c",
      "tree": "f65b0d2640e35d70db304dba3ea9c584c0796a7e",
      "parents": [
        "76bc4a6bb355d402b82bfa146ff29b8b81099076"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Feb 04 11:46:42 2010 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Feb 04 17:32:56 2010 -0800"
      },
      "message": "Replace Tremor with Tremolo (an ARM optimised version of the Tremor library for doing Ogg Vorbis decompression)\n"
    },
    {
      "commit": "e7038ace44ed6e6cd27be35b003e6dd0412e936f",
      "tree": "fcd9ac3d90fcb48b165c04c236a90ea9f34ffd43",
      "parents": [
        "5258919fab561508a2154a38b933e975bd2e07cd"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 03 16:50:18 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 04 13:47:36 2010 -0800"
      },
      "message": "Camcorder profile Java API support\n- Use Enum for Quality instead of int\n- Use static values() method from Enum, rather than if-else\n\nbug - 2417312\n"
    },
    {
      "commit": "acfbc801a8886f8c78997c192838355f4ba2978c",
      "tree": "a6264f428f1491e09c2bdfda3cfb151a6f42fbf7",
      "parents": [
        "3141e0a62abe57e93e5d716895a2a57cc052bb50"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 04 10:48:37 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 04 10:48:37 2010 -0800"
      },
      "message": "Stop using the PV software decoders and use ours (based on PV code) instead even in non-FULL_STAGEFRIGHT builds.\n"
    },
    {
      "commit": "5d9661be8eaa2a4702a4d3c0fa0fd07a8638b503",
      "tree": "98d80c1a3037f0d81cd13d4e04414f1226a4331a",
      "parents": [
        "fcebc0cd2d0913b880a4e0a1c0fdda1a0693df43"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sun Jan 31 17:03:30 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Feb 04 16:11:38 2010 +0800"
      },
      "message": "Add getAttributeDouble() and focal length tag.\n\nbug:2375989\n"
    }
  ],
  "next": "5258919fab561508a2154a38b933e975bd2e07cd"
}
