)]}'
{
  "log": [
    {
      "commit": "bf697e37550d9e8376089b0b5e498613bede798c",
      "tree": "b9e89f19038a23f9b4ad0e667b8ac1a37f8738df",
      "parents": [
        "f0fb96c352f30b812a4903a1d783a715e1e817bd"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 09:43:00 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 09:43:00 2009 -0800"
      },
      "message": "Change OMXCodec::Create to return an sp\u003cMediaSource\u003e instead of an sp\u003cOMXCodec\u003e, this is more general and does not sacrifice any functionality as the remaining OMXCodec APIs are not meant to be public anyway.\n"
    },
    {
      "commit": "f0fb96c352f30b812a4903a1d783a715e1e817bd",
      "tree": "bf0573cd7eb7789a512c51f21c854c4e8b7fa017",
      "parents": [
        "adf7d77752b3dbd47badc8819aa2674860d6ccba"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 04 12:52:40 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 04 12:52:40 2009 -0800"
      },
      "message": "Enable proper cleanup of OMX nodes managed through stagefright.\n"
    },
    {
      "commit": "572e6a5cea656c1df50f69df9730f2dc351308de",
      "tree": "be9e13cfa4ca972e341b93551070b2f07118d1c6",
      "parents": [
        "413f523afe96aff02d2b0a7459127b8f67b2b43c",
        "e3ec3cec3a2e27033249ff82964d2cbd441d9873"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 03 13:27:08 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 03 13:27:08 2009 -0800"
      },
      "message": "Merge change I74bf38a0 into eclair-mr2\n\n* changes:\n  Squashed commit of the following:\n"
    },
    {
      "commit": "413f523afe96aff02d2b0a7459127b8f67b2b43c",
      "tree": "395251a728a780bf6d46e4ef4a721e0cf4a77f3a",
      "parents": [
        "8908d616cc9d74f9fe2c17f1d8d9335ee28c290d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 03 11:31:19 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 03 13:21:54 2009 -0800"
      },
      "message": "Refactor MediaScanner. Some steps on the way towards being able to build the tree without OpenCore.\n"
    },
    {
      "commit": "e3ec3cec3a2e27033249ff82964d2cbd441d9873",
      "tree": "46e3b22fc02c1f20b8a8403818395ba4ba51ddb2",
      "parents": [
        "c297fccffc4ab1cb3b9f5c6a5b0802be057f3e0f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 03 11:39:54 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 03 12:49:09 2009 -0800"
      },
      "message": "Squashed commit of the following:\n\ncommit 543e192bf2ae13f573dc4c4e53b239ed4ea00e81\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Dec 3 11:33:57 2009 -0800\n\n    stagefright now acts as the OMX Master, vendors supply their own plugins through libstagefrighthw. In OpenCore-enabled builds we now sit on top of PVMaster...\n\ncommit 3cbfdbd9cecadbb77b63125c62883bf1065884fe\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 2 12:39:07 2009 -0800\n\n    More OMX infrastructure, stagefright is now taking over the OMX Master, multiplexing all contributing OMX implementations under a common interface.\n"
    },
    {
      "commit": "c297fccffc4ab1cb3b9f5c6a5b0802be057f3e0f",
      "tree": "7f7bd7bfa58df757385ab01ffcd3fd7e27351cfb",
      "parents": [
        "a7c816c4bdb72cf4f9fe853a96cd7efdb394006d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 01 15:26:54 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 01 15:26:54 2009 -0800"
      },
      "message": "A small sample tool to encode pcm audio data to amr, decode it again and play it. Some changes to OMXCodec to properly configure the AMR decoder(s).\n"
    },
    {
      "commit": "bfa6b2d7a1be1832ac40ed90aece1834f720b5c6",
      "tree": "5b4948c52fde583d593d088ffc4a7f772c904a86",
      "parents": [
        "bf89c099fc97717e3008a481aeddc76c1ac5e00d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 20 09:32:46 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 23 10:44:30 2009 -0800"
      },
      "message": "Squashed commit of the following:\n\ncommit 1efc38dc3c33fef57b759002db3965ed07a28cb0\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Nov 19 14:36:14 2009 -0800\n\n    Sending the SEEK-COMPLETE notification temporarily broke seeking backwards in time behaviour. This is now fixed.\n\n    Also, get rid of the semi-random delay after posting buffers to surface flinger in favour of delaying the buffer release until the next frame is displayed.\n\ncommit 51973062eb5ee63fd64b845d72bac517cc3369cf\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Nov 18 14:01:43 2009 -0800\n\n    Fix one more unit test, properly send seek-complete notification only after seek actually completed.\n\ncommit cb22250b34b1fcfe1bf459723a761fd003950229\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Nov 18 12:31:36 2009 -0800\n\n    Fix seek-while-paused in AwesomePlayer, revert to using FileSource if MmapSource fails.\n\ncommit 25eb9241138ddf7bb27ce90657116c5f8a94d880\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Nov 18 12:30:40 2009 -0800\n\n    Support seeking and duration in AMRExtractor, assuming all frames are the same size.\n\ncommit 44192f2ebb7ea3bbd3ba5910025692dbc6a08faa\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Nov 18 10:21:44 2009 -0800\n\n    MediaPlayerImpl is dead, long live AwesomePlayer.\n\ncommit c5b52d3c0674f5dc94db506afbce52401cceddac\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Nov 18 09:42:23 2009 -0800\n\n    New implementation of the stagefright mediaplayer.\n"
    },
    {
      "commit": "bf89c099fc97717e3008a481aeddc76c1ac5e00d",
      "tree": "0cdf045cfa9affd3aab1a87fdcf9c4d44f47a7d8",
      "parents": [
        "70453d7e16079720947adabad1e76d5d6b72ea14",
        "4ddf30b2b118068d82bb37858186d668eddbbe6d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 21 00:21:15 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Nov 21 00:21:15 2009 -0800"
      },
      "message": "am e7800946: Merge change I49f02be9 into eclair\n\nMerge commit \u0027e7800946a42c0ebe8e0b3f6eba04a96a9641aaff\u0027 into eclair-mr2\n\n* commit \u0027e7800946a42c0ebe8e0b3f6eba04a96a9641aaff\u0027:\n  Issue 2265163: Audio still reported routed through earpiece on sholes\n"
    },
    {
      "commit": "4ddf30b2b118068d82bb37858186d668eddbbe6d",
      "tree": "e270f842df4d078948ecb80aefb31f7658d866bc",
      "parents": [
        "2f5925e123afdaba79c7ca8ef6647e4b86cd5488",
        "6100d2d60517ff33ed8eb35d0b7ea63cde0831c9"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Nov 21 00:18:24 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Nov 21 00:18:24 2009 -0800"
      },
      "message": "Merge change I49f02be9 into eclair\n\n* changes:\n  Issue 2265163: Audio still reported routed through earpiece on sholes\n"
    },
    {
      "commit": "6100d2d60517ff33ed8eb35d0b7ea63cde0831c9",
      "tree": "9cd057df8eb60ff3e68bb6f9c04f92053dfb443e",
      "parents": [
        "583892d0185d102f3c9ca69ea48fe38af31ecd31"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 19 09:00:56 2009 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 19 23:57:45 2009 -0800"
      },
      "message": "Issue 2265163: Audio still reported routed through earpiece on sholes\n\nThis is a second attempt to fix the audio routed to earpiece syndrom.\nThe root cause identified this time is the crash of an application having an active AudioTrack playing on the VOICE_CALL stream type.\nWhen this happens, the AudioTrack destructor is not called and the audio policy manager is not notified of the track stop.\nResults a situation where the VOICE_CALL stream is considered as always in use by audio policy manager which makes that audio is routed to earpiece.\n\nThe fix consists in moving the track start/stop/close notification to audio policiy manager from AudioTrack to AudioFlinger Track objet.\nThe net result is that in the case of a client application crash, the AudioFlinger TrackHandle object (which implements the remote side of the IAudioTrack binder interface) destructor is called which in turn destroys the Track object and we can notify the audio policy manager of the track stop and removal.\n\nThe same modification is made for AudioRecord although no bug related to record has been reported yet.\nAlso fixed a potential problem if record stop is called while the record thread is exiting.\n"
    },
    {
      "commit": "2f5925e123afdaba79c7ca8ef6647e4b86cd5488",
      "tree": "994ce4cc1ddd2b37ea86944fcb04b2d69ac0d138",
      "parents": [
        "583892d0185d102f3c9ca69ea48fe38af31ecd31"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 19 11:22:36 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 19 11:24:18 2009 -0800"
      },
      "message": "DO NOT MERGE: Instead of inserting semi-random delays after submission to surface flinger, delay releasing buffers to the next display time to avoid flickering.\n"
    },
    {
      "commit": "f78933fdfc5bc71881b3011f921b643d90387664",
      "tree": "e13d666ee10eea352fd7d3d253e1f4d96984578e",
      "parents": [
        "c77a293c4971d9f6c4e3b0c0573fb13276bedf18",
        "30ab66297501757d745b9ae10da61adcd891f497"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 17 10:46:41 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 17 10:46:41 2009 -0800"
      },
      "message": "Merge change Iea6a38c6 into eclair-mr2\n\n* changes:\n  Squashed commit of the following:\n"
    },
    {
      "commit": "03475f5af25e4aa32d46d41dd2ec756853d8dd9d",
      "tree": "aa3a35c429a4307d2383931b3dd2e72fe55277f2",
      "parents": [
        "057eacf4578ac6b90ee18c524670e01445bf2732"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 16 15:34:01 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 17 10:21:03 2009 -0800"
      },
      "message": "Update FileSource to also accept a file descriptor and a range.\n"
    },
    {
      "commit": "30ab66297501757d745b9ae10da61adcd891f497",
      "tree": "e287230832c3cf3437df7ac07c282975e95044e7",
      "parents": [
        "057eacf4578ac6b90ee18c524670e01445bf2732"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 16 15:43:38 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 16 15:43:38 2009 -0800"
      },
      "message": "Squashed commit of the following:\n\ncommit 333057b355f8c260c549553b9a0634755c838b6a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Nov 13 15:35:48 2009 -0800\n\n    Some more tweaks to AVC encoding on sholes.\n\ncommit 9981d0ee52ec5b8b0182aae733d1571e3ebb8390\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Nov 12 16:36:57 2009 -0800\n\n    Support for avc encoding, including sholes specific tweaks to pick the right colorspace for the camera to not require transcoding.\n\ncommit 5ba0ebbbd4efca51f3ae1f60e2ca31e7d2cf136d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Nov 11 09:50:03 2009 -0800\n\n    Enable actual (camera) video-only recording using h.263 or mpeg4 encoding.\n\ncommit 3fd59c3526a37fe7c696f4a978925d1831c09313\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 10 14:57:48 2009 -0800\n\n    Allow switching between the PV recorder implementation and one supported by stagefright.\n\n    This is controlled through the property \"media.stagefright.enable-record\".\n"
    },
    {
      "commit": "86b48a89a6cde62fc1db9140593386450bc0a9a1",
      "tree": "4681fd6a86381aee2dc27b1afea98c78e85bafe7",
      "parents": [
        "53f45f0367d9563278f427db106736dcd1a433d1",
        "1aaa563c2cb0df3f414aa0cfc13f9ae7b457dc49"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 12 23:10:18 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 12 23:10:18 2009 -0800"
      },
      "message": "am 1aa9f3ca: Merge change I923d7d72 into eclair\n\nMerge commit \u00271aa9f3cac31a7c2b50fcb3c9259cead8d638ae54\u0027 into eclair-mr2\n\n* commit \u00271aa9f3cac31a7c2b50fcb3c9259cead8d638ae54\u0027:\n  Fix issue 2242614: Wired headset not recognized: bogus \"state\" in ACTION_HEADSET_PLUG broadcast.\n"
    },
    {
      "commit": "1aaa563c2cb0df3f414aa0cfc13f9ae7b457dc49",
      "tree": "579f2ef0890c1595d9d164b6cdfdda4585dd1de7",
      "parents": [
        "1dfc99f22fb9d8c798065938c24eeb4eb9691747",
        "0f2d1e2dd7601e06fdf834f3f942eeb5c8b33a15"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 12 22:45:50 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 12 22:45:50 2009 -0800"
      },
      "message": "Merge change I923d7d72 into eclair\n\n* changes:\n  Fix issue 2242614: Wired headset not recognized: bogus \"state\" in ACTION_HEADSET_PLUG broadcast.\n"
    },
    {
      "commit": "0f2d1e2dd7601e06fdf834f3f942eeb5c8b33a15",
      "tree": "98f8df31cd3474d19ebcb5fd74c87c53fc887f82",
      "parents": [
        "a75e9fb4876139fff4bb836fb0ebd5f80c8b20b3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 12 12:09:06 2009 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 12 12:09:06 2009 -0800"
      },
      "message": "Fix issue 2242614: Wired headset not recognized: bogus \"state\" in ACTION_HEADSET_PLUG broadcast.\n\nThe headset state indicated by HeadsetObserver in the broadcast intent ACTION_HEADSET_PLUG was not 0 or 1 as specified in the java doc but contained a bit field indicating the type of headset connected.\n\nModified HeadsetObserver to broacast a state conforming to java doc.\nAdded an extra to intent ACTION_HEADSET_PLUG to indicate if headset has a microphone or not.\nRemoved handling of non standard headset indications from HeadsetObserver.\nRemoved platform specific devices from output devices defined in AudioSystem.\nModified AudioService to use new ACTION_HEADSET_PLUG intent extra instead of bitfield in state.\n"
    },
    {
      "commit": "53f45f0367d9563278f427db106736dcd1a433d1",
      "tree": "7e7a696b98534e1699696227a4159b6592f2f937",
      "parents": [
        "ca4bea0965f870c7d1d92357d860f50c6c18d51d",
        "1dfc99f22fb9d8c798065938c24eeb4eb9691747"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 12 10:32:26 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 12 10:32:26 2009 -0800"
      },
      "message": "resolved conflicts for merge of c66d53f9 to eclair-mr2\n"
    },
    {
      "commit": "1dfc99f22fb9d8c798065938c24eeb4eb9691747",
      "tree": "51fa5da2f34649321196925e4a3441158193d7e2",
      "parents": [
        "a75e9fb4876139fff4bb836fb0ebd5f80c8b20b3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Nov 11 16:33:17 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 12 09:36:10 2009 -0800"
      },
      "message": "Delegate the platform dependent hardware renderer implementation to a shared library provided by the vendor.\n"
    },
    {
      "commit": "5b65c7043dada0c89d3a941742666ac40ea35746",
      "tree": "21290d7a1384e815ba02e812599f1e0fe918f619",
      "parents": [
        "d899d73308f987c932a4366977e67a3d8aa8bc8b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 05 12:04:22 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 05 13:06:17 2009 -0800"
      },
      "message": "DO NOT MERGE: Squashed commit of the following:\n\ncommit 08259dd3dc9026887f9bbfedaf45866eb56ea9bc\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Nov 5 12:02:31 2009 -0800\n\n    DO NOT MERGE: Use PV for metadata extraction even if stagefright is used for playback.\n\ncommit 991832fe4dc012e51d3d9ed8d647c7f09991858f\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Nov 5 11:24:11 2009 -0800\n\n    DO NOT MERGE: Do not assert if we encounter OMX_StateInvalid. All bets are off though.\n\ncommit cec45cf302d9218fe79956cbe8a462d7ca3a10bb\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Oct 26 16:11:54 2009 -0700\n\n    DO NOT MERGE: When freeing an OMX node, attempt to transition it from its current state all the way to \"Loaded\" in order to properly free any allocated buffers.\n\ncommit 34a1e885ef9113d68acbc26d36fcc47fdebbed84\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Nov 5 11:10:49 2009 -0800\n\n    DO NOT MERGE: Fix heap corruptin in OMXNodeInstance.\n\ncommit 5a47f7439a1298b330541a7e4e647a8b44487388\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Nov 5 11:08:19 2009 -0800\n\n    DO NOT MERGE: Fix seek-on-initial-read behaviour of OMXCodec.\n\ncommit 45bed64722501b9f411a2940aff5aff4cc4d2e98\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Nov 5 11:02:23 2009 -0800\n\n    DO NOT MERGE: Renaming string.h to stagefright_string.h to avoid conflicts.\n\ncommit 6738e306a50196f31a73d4fc7b7c45faff639903\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Oct 15 13:46:54 2009 -0700\n\n    DO NOT MERGE: Reimplement the OMX backend for stagefright.\n\n    Besides a major cleanup and refactoring, OMX is now a singleton living in the media server, it listens for death notifications of node observers/clients that allocated OMX nodes and performs/attempts cleanup.\n\n    Changed APIs to conform to the rest of the system.\n"
    },
    {
      "commit": "1c02bfb63ea6e1d1630a09229044d64be200a9ef",
      "tree": "20d55a7e13a544f2187a44a2b9364cb75200be22",
      "parents": [
        "308d4aea9ccb62d3d9e3010a73b16435e554d5f2",
        "dee7f8349ad8e93c5b16c24bed49fa9192790e0f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 05 00:01:33 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 05 00:01:33 2009 -0800"
      },
      "message": "am 67b69292: Merge change I93f500a5 into eclair\n\nMerge commit \u002767b692920c18f99b096dce285adc6f7439fa866c\u0027 into eclair-mr2\n\n* commit \u002767b692920c18f99b096dce285adc6f7439fa866c\u0027:\n  Fix issue 2203561: Sholes: audio playing out of earpiece.\n"
    },
    {
      "commit": "dee7f8349ad8e93c5b16c24bed49fa9192790e0f",
      "tree": "42b7543e1686bbce2534c46376079202fe064b10",
      "parents": [
        "d763b9513e520c7f0113077b4a2c62cee16e4266",
        "34f1d8ecd23169a5f299937e3aaf1bd7937578a0"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 05 02:55:26 2009 -0500"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 05 02:55:26 2009 -0500"
      },
      "message": "Merge change I93f500a5 into eclair\n\n* changes:\n  Fix issue 2203561: Sholes: audio playing out of earpiece.\n"
    },
    {
      "commit": "34f1d8ecd23169a5f299937e3aaf1bd7937578a0",
      "tree": "04f5504f74df6dde00b495a95bf30766be12821a",
      "parents": [
        "c6c6237a67661c7b2d8822b7360cdf01e64d2c7c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 04 08:27:26 2009 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 04 23:47:21 2009 -0800"
      },
      "message": "Fix issue 2203561: Sholes: audio playing out of earpiece.\n\nCreate a new IAudioTrack interface to AudioFlinger when start() fails due to a broken pipe error.\nDo the same if start fails due to the same error after time out in obtainBuffer().\nDo not indicate that the AudioTrack is started to AudioPolicyManager if IAudioTrack start fails.\nThis avoids that an AudioTrack keeps a dead IAudioTrack after a media server crash.\n\nSame modifications for AudioRecord.\n\nAdd a flag to ToneGenerator indicating that the callback thread can call Java. Without it, when the media server crashes and restarts, the AudioSystem error callback will crash in JNI if the IAudiotrack is created from AudioTrack callback thread.\n"
    },
    {
      "commit": "308d4aea9ccb62d3d9e3010a73b16435e554d5f2",
      "tree": "32377008aef5762d9bab29e77a6c3b1ea5aa53df",
      "parents": [
        "2c814adaf6340ee3cf2b942f1dff0f2ea6904c81",
        "d763b9513e520c7f0113077b4a2c62cee16e4266"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 04 12:05:34 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 04 12:05:34 2009 -0800"
      },
      "message": "am 7ed0ceeb: Merge change I6869df3a into eclair\n\nMerge commit \u00277ed0ceeba54712f76e9a4f2dd4c9197d76813488\u0027 into eclair-mr2\n\n* commit \u00277ed0ceeba54712f76e9a4f2dd4c9197d76813488\u0027:\n  Add new audio sources to support the A1026 recording configurations.\n"
    },
    {
      "commit": "d763b9513e520c7f0113077b4a2c62cee16e4266",
      "tree": "b58a0e57e5d408ad84e73a5b17ebfc8ae0cd2424",
      "parents": [
        "c6c6237a67661c7b2d8822b7360cdf01e64d2c7c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Nov 03 19:43:21 2009 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Nov 03 19:43:21 2009 -0800"
      },
      "message": "Add new audio sources to support the A1026 recording configurations.\n"
    },
    {
      "commit": "0dba73763a04d39faf999dcc5ef12af3c99535a7",
      "tree": "c1fb2463a412cbdd7cdef1e303728d2ba80860d9",
      "parents": [
        "1f9ad1d704a17533989a9274c55bd5bb9d3abcc0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 03 16:00:58 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 03 16:00:58 2009 -0800"
      },
      "message": "Adds a WAVExtractor for 16-bit signed PCM audio wave files.\n"
    },
    {
      "commit": "672635d84f2d897b5e782448356bba18b5f2dc7c",
      "tree": "5a19592288ae8252e92cdfeac6feda51094795cd",
      "parents": [
        "076667f9624516f9c65d5d4d7571ef5522237229",
        "967441ef270cf9dda4c859770764dcb2146f2435"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 03 09:34:40 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 03 09:34:40 2009 -0800"
      },
      "message": "am 8637759a: Merge change I36d0184e into eclair\n\nMerge commit \u00278637759a1d34a4adda292579d5f8790587659235\u0027 into eclair-mr2\n\n* commit \u00278637759a1d34a4adda292579d5f8790587659235\u0027:\n  fix[2228133] pixelflinger ignores the \"vertical stride\" leading to artifacts when playing back video\n"
    },
    {
      "commit": "967441ef270cf9dda4c859770764dcb2146f2435",
      "tree": "74dd2998925fa7b75f4747dc183326e434e6532c",
      "parents": [
        "7ddc40044ac664245e1535b20426900733163724",
        "9416be414bf104fb07a532a8d6d9f71150eb6595"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 02 21:26:54 2009 -0500"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 02 21:26:54 2009 -0500"
      },
      "message": "Merge change I36d0184e into eclair\n\n* changes:\n  fix[2228133] pixelflinger ignores the \"vertical stride\" leading to artifacts when playing back video\n"
    },
    {
      "commit": "9416be414bf104fb07a532a8d6d9f71150eb6595",
      "tree": "4b7691fed7765e54039b89c9b6c88bbac12d8c77",
      "parents": [
        "dac6a31a33ba53fb93850670cdddd1e6515dadce"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 02 17:48:33 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 02 17:48:33 2009 -0800"
      },
      "message": "fix[2228133] pixelflinger ignores the \"vertical stride\" leading to artifacts when playing back video\n\nwe lost the concept of vertical stride when moving video playback to EGLImage.\nHere we bring it back in a somewhat hacky-way that will work only for the\nsoftgl/mdp backend.\n"
    },
    {
      "commit": "5dce5d8609857f803cb0eec7e2b1b55c158ce525",
      "tree": "0b1122f0539c88b52f115afac5fbb2d0e170b127",
      "parents": [
        "8d8380ccea24aed511f96ecb9282b0d2c3331d10",
        "90b75fbd19571784c8ceee4841a28b8333a8198e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 02 12:40:34 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 02 12:40:34 2009 -0800"
      },
      "message": "am ee98c240: Merge change I73680cd9 into eclair\n\nMerge commit \u0027ee98c24020c1634b02cde6d333968f04a0de941f\u0027 into eclair-mr2\n\n* commit \u0027ee98c24020c1634b02cde6d333968f04a0de941f\u0027:\n  Fix 2194140: [Passion] Support Audience chip.\n"
    },
    {
      "commit": "90b75fbd19571784c8ceee4841a28b8333a8198e",
      "tree": "6c8ee98ca3395873bbc2888050660e823130666c",
      "parents": [
        "dac6a31a33ba53fb93850670cdddd1e6515dadce"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 02 05:31:33 2009 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 02 10:38:22 2009 -0800"
      },
      "message": "Fix 2194140: [Passion] Support Audience chip.\n\nAdded new input device DEVICE_IN_BACK_MIC.\nAdded new audio source AUDIO_SOURCE_CAMCORDER.\n"
    },
    {
      "commit": "888f72a4628eed3c136ff2e346a15d129da0d520",
      "tree": "49d476fe15b42d96bf6befb5ad241964ef0efd66",
      "parents": [
        "4ee1540a3949693693688c2004a56cb42de55160"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 29 12:02:48 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 29 12:02:48 2009 -0700"
      },
      "message": "Revive support for video encoding in OMXCodec.\n"
    },
    {
      "commit": "636df899721d7da23fc792f20df29937e628ab2f",
      "tree": "dac95b12590f7def3e0fb9e0ecaa2feab2c2f8e8",
      "parents": [
        "1eea7f529c1c25901a7749fed4792ed68379d841",
        "be5c74f5da6a93b0d23f96e11848acfcc3b4d1d9"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 28 13:25:09 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 28 13:25:09 2009 -0400"
      },
      "message": "Merge change I155e2ad0 into eclair-mr2\n\n* changes:\n  Re-enable CameraSource.\n"
    },
    {
      "commit": "be5c74f5da6a93b0d23f96e11848acfcc3b4d1d9",
      "tree": "1de11554d9fa859de0ee4df0dc80d94dbd332a22",
      "parents": [
        "34769bc913e9f6bb138e666d94a9d685bf3da217"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 13 17:08:31 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 28 10:15:07 2009 -0700"
      },
      "message": "Re-enable CameraSource.\n"
    },
    {
      "commit": "fe44b7a8b2b8da50a7a78f4b7e034b6d01785e44",
      "tree": "75b34f839652f8a98f241e9dea64139d6cc6b347",
      "parents": [
        "34769bc913e9f6bb138e666d94a9d685bf3da217",
        "88e5ad9f0d9b35d4868347bce47b28b7358b32e4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Oct 24 01:38:58 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Oct 24 01:38:58 2009 -0700"
      },
      "message": "am bf96aaad: Merge change Icf10db28 into eclair\n\nMerge commit \u0027bf96aaadd46fb5b0884070177faa16ec4f22e2ba\u0027 into eclair-mr2\n\n* commit \u0027bf96aaadd46fb5b0884070177faa16ec4f22e2ba\u0027:\n  Fix issue 2192181: AudioFlinger must provide separated methods to set VOICE_CALL stream volume and down link audio volume.\n"
    },
    {
      "commit": "34769bc913e9f6bb138e666d94a9d685bf3da217",
      "tree": "04de6901ea0132276789b671db83c2cccbee68c0",
      "parents": [
        "66326a5ee0869f1ee4d136a477e6effba428b3cb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 23 10:22:30 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 23 10:35:08 2009 -0700"
      },
      "message": "New API to instantiate a MediaExtractor given a URI and optional MIME type.\n\nAlso DataSources now must provide a method initCheck()\nand DataSource::reat_at has been renamed to readAt to conform to\nstandard API naming guidelines.\n"
    },
    {
      "commit": "66326a5ee0869f1ee4d136a477e6effba428b3cb",
      "tree": "43af246f917acf425d889109d3aec8daec34ac75",
      "parents": [
        "47bed1a7755ed58fa5d4c0d35b20468deb83bd60"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 23 09:55:10 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 23 09:55:10 2009 -0700"
      },
      "message": "Moving the individual extractor headers files to the private include directory.\n"
    },
    {
      "commit": "ba229b3faa98b3bb6567cf95040062be2d9c2b3f",
      "tree": "2f13ee20c074336addf9df049da764ecb2eb77df",
      "parents": [
        "7e04dcf8d6784dd56f53aa90bf34431ab4f0710c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 22 10:43:34 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 23 08:39:00 2009 -0700"
      },
      "message": "Prefer software decoders over hardware for thumbnail extraction.\n\nWhile our hardware decoders clearly outperform the software decoders in terms\nof raw throughput, their startup latency makes them less suitable for thumbnail\nextraction.\n"
    },
    {
      "commit": "7e04dcf8d6784dd56f53aa90bf34431ab4f0710c",
      "tree": "62d858199d99be0c19887e2eca64495218067c01",
      "parents": [
        "521bad496a8b80008abe573a6712a8051c9eb322"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 22 13:49:30 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 22 14:22:57 2009 -0700"
      },
      "message": "Extract video thumbnails from the largest sync sample among the first 20.\n\nAlso fixes OMXCodec seek behaviour on the very first call to OMXCodec::read()\n"
    },
    {
      "commit": "c6323f9d72e0f08dd1e813550a56c8d2f0fd76a2",
      "tree": "e655f9a2780ffab04697fb98b3d4d1fbb2477896",
      "parents": [
        "12658b720b176b7d934444256d07ba3c595d9b44"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 21 14:01:30 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 21 14:01:30 2009 -0700"
      },
      "message": "Some cleanup of OMXCodec code, make sure to ignore 0-length output buffers in the metadata retriever.\n"
    },
    {
      "commit": "f0ee6f4055e26fb35d9c526a596668a4dc9da5ba",
      "tree": "9eaa1f520448a3c83ec724cc4d02e9d4838c203f",
      "parents": [
        "66d1e82ce5d5e189442285b6225977137b65c608"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 21 08:14:22 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 21 12:29:37 2009 -0700"
      },
      "message": "Fix issue 2192181: AudioFlinger must provide separated methods to set VOICE_CALL stream volume and down link audio volume.\n\nAdded setVoiceVolume() method to AudioSystem, AudioFlinger, IAudioFlinger, AudioPolicyService.\nRemoved call to AudioHardwareInterface::setVoiceVolume() from AudioFlinger::setStreamVolume().\n"
    },
    {
      "commit": "66d1e82ce5d5e189442285b6225977137b65c608",
      "tree": "95ea71b61f77cef54e37cfaab9ee7329ca9da803",
      "parents": [
        "a3b28504ad5e5d1a6265d385031f2aaba01cec76"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 20 10:43:48 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 20 11:49:01 2009 -0700"
      },
      "message": "do not merge: The qcom video decoders always output yuv data after adjusting dimensions to be a multiple of 16.\n\nAdd a quirk mode to OMXCodec that makes it aware of this fact for proper display. Also integrate back a change from eclair-mr2 that delays releasing an output buffer briefly after posting it to surface flinger, as we don\u0027t know how long it\u0027ll take it to actually display the buffer\u0027s content.\n"
    },
    {
      "commit": "b02ee76cc797db50bff7684c17d826ebbefd423c",
      "tree": "e070e853545dcb3aa2f3cda4f37b490f9e54c424",
      "parents": [
        "318ad9c1d9d6515026dfc2c021359d27decaa7a1",
        "7b9d6a92534fd712c465b5ffcc4e7631f0147c1c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 16 14:33:01 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 16 14:33:01 2009 -0700"
      },
      "message": "am 7bb7e992: Merge change Ia8ac904d into eclair\n\nMerge commit \u00277bb7e99216956d917af1786a3e02a92cac46fc84\u0027 into eclair-mr2\n\n* commit \u00277bb7e99216956d917af1786a3e02a92cac46fc84\u0027:\n  fix [2182249] [MR1] valgrind error in surface flinger\n"
    },
    {
      "commit": "318ad9c1d9d6515026dfc2c021359d27decaa7a1",
      "tree": "28a58c4e3f20528b01c2abd08ba5f62d8755650c",
      "parents": [
        "89e69da4d86348409994c9dafbbb2634ccd7c196"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 15 13:46:54 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 16 11:22:43 2009 -0700"
      },
      "message": "Reimplement the OMX backend for stagefright.\n\nBesides a major cleanup and refactoring, OMX is now a singleton living in the media server, it listens for death notifications of node observers/clients that allocated OMX nodes and performs/attempts cleanup.\n\nChanged APIs to conform to the rest of the system.\n"
    },
    {
      "commit": "7b9d6a92534fd712c465b5ffcc4e7631f0147c1c",
      "tree": "0daccebed646689d485211c9416440ab9847968f",
      "parents": [
        "68174b17d69f482e5b7015452673c813343a1587"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 15 18:08:15 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 15 18:08:15 2009 -0700"
      },
      "message": "fix [2182249] [MR1] valgrind error in surface flinger\n"
    },
    {
      "commit": "89e69da4d86348409994c9dafbbb2634ccd7c196",
      "tree": "6ff666e2d0dde0d1327db900c67ac46c05a4ae06",
      "parents": [
        "549aa3741725ea2fd75c5fb717ff5a9316a5a55d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 13 10:22:55 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 13 10:22:55 2009 -0700"
      },
      "message": "Separated private from public header files.\n"
    },
    {
      "commit": "549aa3741725ea2fd75c5fb717ff5a9316a5a55d",
      "tree": "4e59a21e633217dce4bbaa4abaa7123630f7d082",
      "parents": [
        "7f281f87670c63775ea1ae8b24af31822d5ad416"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 13 10:06:37 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 13 10:06:37 2009 -0700"
      },
      "message": "Fix various compiler warnings accumulated over time.\n"
    },
    {
      "commit": "7f281f87670c63775ea1ae8b24af31822d5ad416",
      "tree": "c04964f9bc176627df0eec3688b00bc17479bc06",
      "parents": [
        "0bf3921522461b1c7d321d0c667c1020ab3110bc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 09 14:11:28 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 13 09:46:46 2009 -0700"
      },
      "message": "OMXCodec now notifies the reader of changes in the output format by returning a special result/error code.\n"
    },
    {
      "commit": "48c948b1137e7bbdb161b51908657ab72ac5e2da",
      "tree": "93382f5cf363010d79ea26d9e44e6470821f1658",
      "parents": [
        "d3eaeefb1bac68bc1fee91b794be2c2c3bea6d94"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 08 10:07:49 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Oct 12 16:00:07 2009 -0700"
      },
      "message": "Change to a int64_t usecs representation for timestamps and duration throughout stagefright.\n"
    },
    {
      "commit": "d3eaeefb1bac68bc1fee91b794be2c2c3bea6d94",
      "tree": "b6b999e380aa7d7def21eb73914f66c897f9282a",
      "parents": [
        "2a4a7d5af053a17586a262a1267ba993e31790f1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 09 09:06:06 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 09 09:06:06 2009 -0700"
      },
      "message": "Fixing the build.\n"
    },
    {
      "commit": "2a4a7d5af053a17586a262a1267ba993e31790f1",
      "tree": "ba10badd8bcd457023752508bb3b16f61dfdfa22",
      "parents": [
        "36efa039efaae4526791336cb688032d22b34bec"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 06 16:20:44 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 08 15:06:09 2009 -0700"
      },
      "message": "Split the ColorConverter off SoftwareRenderer, metadata support in stagefright.\n"
    },
    {
      "commit": "36efa039efaae4526791336cb688032d22b34bec",
      "tree": "8bb2b193530f7c606475e2863be843eb8cce58e6",
      "parents": [
        "479ededc5b55e63ea9b425cbe465c93bb8b8b3dc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 08 11:02:27 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 08 14:21:58 2009 -0700"
      },
      "message": "Some decoders will return an error on OMX_EmptyThisBuffer to indicate that they don\u0027t support the media format, deal with this.\n"
    },
    {
      "commit": "9749025189acc6c737be22007e90ed8bbbcdbc21",
      "tree": "dc77ce5b47554c00ff4c6727487e711225321852",
      "parents": [
        "733c0882e993a5c3124e50345c79a310c817c1c3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 08 09:12:11 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 08 09:12:11 2009 -0700"
      },
      "message": "The vendor is about to check in a fix for this issue, the workaround is no longer needed\n"
    },
    {
      "commit": "733c0882e993a5c3124e50345c79a310c817c1c3",
      "tree": "d73ed702eb258020507ea5576feaf88e67abb182",
      "parents": [
        "ec430b158df17b2c766f7750a96c35d3902f5f49",
        "68174b17d69f482e5b7015452673c813343a1587"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 07 17:33:43 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 07 17:33:43 2009 -0700"
      },
      "message": "am a2de8e31: Merge change Ie05f07df into eclair\n\nMerge commit \u0027a2de8e31c2693d009db1f9386406758874dd1d40\u0027 into eclair-mr2\n\n* commit \u0027a2de8e31c2693d009db1f9386406758874dd1d40\u0027:\n  fix [2170319] gmail bulk operation checkbox latency on passion\n"
    },
    {
      "commit": "68174b17d69f482e5b7015452673c813343a1587",
      "tree": "e753377781dfc9fcfe0609ab4363bd68ac0c5588",
      "parents": [
        "23e1ce72323c87cacd3443b7d0deeda3a82f9dba"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 07 16:44:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 07 16:44:10 2009 -0700"
      },
      "message": "fix [2170319] gmail bulk operation checkbox latency on passion\n\nThis also fixes [2152536] ANR in browser\n\nWhen SF is enqueuing buffers faster than SF dequeues them.\nThe update flag in SF is not counted and under some situations SF will only\ndequeue the first buffer. The state at this point is not technically\ncorrupted, it\u0027s valid, but just delayed by one buffer.\n\nIn the case of the Browser ANR, because the last enqueued buffer was delayed\nthe resizing of the current buffer couldn\u0027t happen.\n\nThe system would always fall back onto its feet if anything -else- in\ntried to draw, because the \"late\" buffer would be picked up then.\n"
    },
    {
      "commit": "ec430b158df17b2c766f7750a96c35d3902f5f49",
      "tree": "6dab1104548754cd6d021d2ce37f0b90a0a58034",
      "parents": [
        "23e1ce72323c87cacd3443b7d0deeda3a82f9dba"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 07 13:36:52 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 07 13:53:24 2009 -0700"
      },
      "message": "Workaround for avc decoder misreporting output buffer size requirements if the content is not a multiple-16 width/height.\n"
    },
    {
      "commit": "23e1ce72323c87cacd3443b7d0deeda3a82f9dba",
      "tree": "af3fdf56529cd7f2571c9e93d5be1cd9cfdee9e9",
      "parents": [
        "e33e00e931d1381d402484aa5cde67e540e3c82c",
        "d46758b6ec99533babbd24f62e381eae0a2a66a6"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 06 22:10:17 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 06 22:10:17 2009 -0400"
      },
      "message": "Merge change I4961c959 into eclair\n\n* changes:\n  fix [2152536] ANR in browser\n"
    },
    {
      "commit": "d46758b6ec99533babbd24f62e381eae0a2a66a6",
      "tree": "f48945f39c8c6883f56389743770091cd0060914",
      "parents": [
        "5bffa09d4483ac31de42077d05d24ba26fab928d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 19:00:57 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 19:00:57 2009 -0700"
      },
      "message": "fix [2152536] ANR in browser\n\nA window is created and the browser is about to render into it the\nvery first time, at that point it does an IPC to SF to request a new\nbuffer. Meanwhile, the window manager removes that window from the\nlist and the shared memory block it uses is marked as invalid.\nHowever, at that point, another window is created and is given the\nsame index (that just go freed), but a different identity and resets\nthe \"invalid\" bit in the shared block. When we go back to the buffer\nallocation code, we\u0027re stuck because the surface we\u0027re allocating for\nis gone and we don\u0027t detect it\u0027s invalid because the invalid bit has\nbeen reset.\n\nIt is not sufficient to check for the invalid bit, I should\nalso check that identities match.\n"
    },
    {
      "commit": "e33e00e931d1381d402484aa5cde67e540e3c82c",
      "tree": "406a97eb4bfe9bfb0d472cd4b7758d4518f8daee",
      "parents": [
        "5bffa09d4483ac31de42077d05d24ba26fab928d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 05 20:29:18 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 06 18:59:35 2009 -0700"
      },
      "message": "Fix issue 2139634: DTMF tones on Sholes popping, hissing (audio latency too high).\n\nThis change is a complement to the main fix in kernel driver for the same issue (partner change #1250).\nIt removes clicks sometimes heard after the end of the tones while audio flinger is sending 0s to the audio output stream.\nThe problem was that the sleep time between two writes was more than the duration of one audio output stream buffer which could cause some underrun.\n\nAlso fixed a recent regression in ToneGenerator that made that the end of previous tone was repeated at the beginning of current one under certain timing circumstances when the maximum tone duration was specified.\n"
    },
    {
      "commit": "5bffa09d4483ac31de42077d05d24ba26fab928d",
      "tree": "a0c4ad305ac1e9ea31ab9b6d9ba47e0f6cf14166",
      "parents": [
        "9d64a06fd89d125f0c8903bd0448b75853b6c0ef"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 05 18:19:57 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:00:25 2009 -0700"
      },
      "message": "fix [2168531] have software-only gralloc buffer side-step the HAL\n"
    },
    {
      "commit": "9d64a06fd89d125f0c8903bd0448b75853b6c0ef",
      "tree": "0de91999dae7003a0f58c6bbb121170fcceca0a0",
      "parents": [
        "10dbb8e97e7a81ca4867663b5517f048820b3094"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 05 17:07:12 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:00:25 2009 -0700"
      },
      "message": "fix [2167050] glTexImage2D code path buggy in SurfaceFlinger\n\nWhen EGLImage extension is not available, SurfaceFlinger will fallback to using\nglTexImage2D and glTexSubImage2D instead, which requires 50% more memory and an\nextra copy. However this code path has never been exercised and had some bugs\nwhich this patch fix.\n\nMainly the scale factor wasn\u0027t computed right when falling back on glDrawElements.\nWe also fallback to this mode of operation if a buffer doesn\u0027t have the adequate\nusage bits for EGLImage usage.\n\nThis changes only code that is currently not executed. Some refactoring was needed to\nkeep the change clean. This doesn\u0027t change anything functionaly.\n"
    },
    {
      "commit": "10dbb8e97e7a81ca4867663b5517f048820b3094",
      "tree": "8a85a3f2c3547afc82a7ab1f92bed562ab980102",
      "parents": [
        "defd1bd08aaf7edc1918108419cf3f9d185c22f9"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Sun Sep 20 10:42:13 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 06 08:51:16 2009 -0700"
      },
      "message": "Music visualizer support hack.\nThis currently assumes 44k stereo (won\u0027t crash on other formats, but won\u0027t give the correct results either), and links statically with libspeex to get FFT data, increasing the size of libmedia by about 45kb.\n"
    },
    {
      "commit": "defd1bd08aaf7edc1918108419cf3f9d185c22f9",
      "tree": "d62951948b4c812e106ae6a0e5e423221bf86197",
      "parents": [
        "fdf23c711d5d6094c95b43cdc9356a25d67f10c8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 02 18:12:30 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 02 18:12:30 2009 -0700"
      },
      "message": "Attempt to fix [2152536] ANR in browser\n\nThe ANR is caused by SurfaceFlinger waiting for buffers of a removed surface to become availlable.\nWhen it is removed from the current list, a Surface is marked as NO_INIT, which causes SF to return\nimmediately in the above case. For some reason, the surface here wasn\u0027t marked as NO_INIT.\n\nThis change makes the code more robust by always (irregadless or errors) setting the NO_INIT status\nin all code paths where a surface is removed from the list.\n\nAdditionaly added more information in the logs, should this happen again.\n"
    },
    {
      "commit": "824b6a4a67166c3937400702944f659bd0d5d386",
      "tree": "6191f9487ca60d2bf8dbaa16dd8889dd0f594376",
      "parents": [
        "cdc9847ba4caa93817a8edf3014919d4480298ad"
      ],
      "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": "9e3ebf8c45ff1872a473c948acb8b7d9e3648f56",
      "tree": "cbfaa63349c73b17466028962c3e7eba7694100a",
      "parents": [
        "56a9496a8f4adf3bf27448e1f41757af513c2a40"
      ],
      "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": "4265a834394bfe14a008a2ac58fbbe388566ad07",
      "tree": "9b67b7b56d75ad4e967e8435ff69e4ee48e05862",
      "parents": [
        "430209e4d4d767e96d1e59a705d1b8b6624cb1e8"
      ],
      "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": "430209e4d4d767e96d1e59a705d1b8b6624cb1e8",
      "tree": "fc25f89f15c14fcb163dce3e6d003847b7942aac",
      "parents": [
        "1b84df1a0823fbcb9cec754311f53eaccfe85ae3",
        "10f75b8c71beb7f327e50bbac8e528af4e40fa24"
      ],
      "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": "10f75b8c71beb7f327e50bbac8e528af4e40fa24",
      "tree": "3a598fc384752eee9c7d3f3ff1f35642b74dd09f",
      "parents": [
        "85cca02ebdc636e9b3ed5894503671fd043bf2a7"
      ],
      "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": "1b84df1a0823fbcb9cec754311f53eaccfe85ae3",
      "tree": "d6f4de4d8cb283ed7dbb0a8b0f5f9c4626a24fc6",
      "parents": [
        "85cca02ebdc636e9b3ed5894503671fd043bf2a7"
      ],
      "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": "5a37cc51551efff88c780088ae8280f87b496472",
      "tree": "0669d146299c77fca34017150df537c1bfc49552",
      "parents": [
        "803d1ab94a74d6205e749909633cec56c742ca44"
      ],
      "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": "777893a928680f09e306b4b9efc1d5cf4479a9da",
      "tree": "0a84c104682b3b4c5c61c45615a595c6d79f8120",
      "parents": [
        "11c043f1f7e2f9c55ad8dec851f7ad3c303d83d1"
      ],
      "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": "11c043f1f7e2f9c55ad8dec851f7ad3c303d83d1",
      "tree": "6a67858eec4987889d3b031f19751ba89dd74229",
      "parents": [
        "997161b0a03e69e7b8d45ac0fc6eb8605797cbd7",
        "4fc61bfdeff922c3bf88aee52a693b52bd98788c"
      ],
      "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": "997161b0a03e69e7b8d45ac0fc6eb8605797cbd7",
      "tree": "7c9dcc6b9c32fa1c0c348d69a4fa9e3e75c15db3",
      "parents": [
        "18291bc20e55e8f3fd5feb786771a8ed32c19c59",
        "3dbf98cec721828df6c533ed5dfba8ceccaa3933"
      ],
      "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": "4fc61bfdeff922c3bf88aee52a693b52bd98788c",
      "tree": "0122f71b55d6ad595df706aaf49020f6ad130e30",
      "parents": [
        "3dbf98cec721828df6c533ed5dfba8ceccaa3933"
      ],
      "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": "3dbf98cec721828df6c533ed5dfba8ceccaa3933",
      "tree": "00ab866377dddb71c821cbc8c1a711eab59f401b",
      "parents": [
        "8cd11d23197209e2c2bdb7980bc17e3f1257a118"
      ],
      "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": "18291bc20e55e8f3fd5feb786771a8ed32c19c59",
      "tree": "5651fb76f7bc732cb4a9ddfff919c73c2f8189c7",
      "parents": [
        "8cd11d23197209e2c2bdb7980bc17e3f1257a118"
      ],
      "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": "25b130939339d57789a86fac837a2a8cedbcb7d8",
      "tree": "2ac26d2178ce9934860886fe5a6c55549914e08b",
      "parents": [
        "195ea1e0d4484f1deb2309e239f6a5cc9a7e5ba7"
      ],
      "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": "f75978f63a25e79c683e96611f95cb5cd49efd3d",
      "tree": "dd74697325270da0b961fb6dadc2ecb2b95be9a4",
      "parents": [
        "03480f8ae9df41902b6523493fe19a2a513b8d98"
      ],
      "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": "03480f8ae9df41902b6523493fe19a2a513b8d98",
      "tree": "f58654967a25e9716f500dcbc7dd3ed82e229e5d",
      "parents": [
        "85fa14d35468acca07ce0085d67b909f673fae07",
        "456db75516efc889e1ee4e5e16021e77c03b0941"
      ],
      "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": "85fa14d35468acca07ce0085d67b909f673fae07",
      "tree": "05de2f3b72a4b488d187c518f2183f0c7986eb1c",
      "parents": [
        "ee7347162e02fb1e44526aa0aae9906485ce3950"
      ],
      "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": "ee7347162e02fb1e44526aa0aae9906485ce3950",
      "tree": "4ac237345d7094a5fcaf31abbd8ad0cf5191a288",
      "parents": [
        "8723e5ab1fbe66df796c4f4e303ce29f6ad26f7f",
        "81e2a52fea13e6e4c9468884bfdd936c3c22e226"
      ],
      "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": "456db75516efc889e1ee4e5e16021e77c03b0941",
      "tree": "b8f60c27fc81543563104a9cc2ed9edd8e7a5883",
      "parents": [
        "b7802d9ee9c9dbb471ae4f010bd67ba1aaa9f264"
      ],
      "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": "148c1a2a96774517407717b61e5bc9cb08be8806",
      "tree": "c6c4a5aff75009eddb3f89dfe7ba5f4ed9f75d40",
      "parents": [
        "e07db23c4935e47ecedfec7537ba95163e5836e5"
      ],
      "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": "81e2a52fea13e6e4c9468884bfdd936c3c22e226",
      "tree": "a762704b01c3b742cb59c6ffd7096fbe874de09d",
      "parents": [
        "e07db23c4935e47ecedfec7537ba95163e5836e5"
      ],
      "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": "365928e6e1bec6637d10652cce65733557c3be29",
      "tree": "d36283c7dd916256c3609e90e0c2148cc3fbd565",
      "parents": [
        "7a6b9e2eca7d20457ace3538c689640e5bfda4f3",
        "f482a41c86cf1c28acdd8e0f127b4a628b36535e"
      ],
      "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": "f482a41c86cf1c28acdd8e0f127b4a628b36535e",
      "tree": "e45938d7ba31b22d552289c7a10e084eb5e62ca5",
      "parents": [
        "bc327427531dddd3de2e55c093641207c013f0dd"
      ],
      "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": "7a6b9e2eca7d20457ace3538c689640e5bfda4f3",
      "tree": "4c41291356bdcf67ae8dad8083f81ac4071cc13f",
      "parents": [
        "e5adbeee3401915ff8e1a983396ce3554436b11c"
      ],
      "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": "e5adbeee3401915ff8e1a983396ce3554436b11c",
      "tree": "b87c6bf50a10502ce2aa5878b9ebb9ffd73edd1f",
      "parents": [
        "bc327427531dddd3de2e55c093641207c013f0dd"
      ],
      "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": "37940eefcba982836b579fe1ffec6cada72b0974",
      "tree": "0465b025e8098bdd221260a74c285338d3bbac2f",
      "parents": [
        "53f2b2ae6417e8a32961e05cf21920c540d8b823"
      ],
      "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": "e0f0b08aa692d15f3bfa19e10abfc84803c099b4",
      "tree": "703584f606b9719817bd5ff42a3979a7576c1551",
      "parents": [
        "152755d265427fb47d836f1022585afab61e0350"
      ],
      "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": "63d88ff95d9c1d5be1850f732c4dd05088abaeee",
      "tree": "17505a5030743085dc5cd5b851c839fafb57aa76",
      "parents": [
        "284f513a4ce2c5aa0e250c07c873731aedb0be26",
        "a9c322e398a1f5fdcace3b8b73967f010b1c31ca"
      ],
      "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": "284f513a4ce2c5aa0e250c07c873731aedb0be26",
      "tree": "2c8266e3a5b88addc5a827258085910fff4d94d1",
      "parents": [
        "8297cedd12f689167d74de5ddacb514e9f6896ea"
      ],
      "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": "a9c322e398a1f5fdcace3b8b73967f010b1c31ca",
      "tree": "1b70ba17a1eb2df81c32928ff9ba31cb3d916597",
      "parents": [
        "0c89199745bc1bf05b997fc7c342017807676b6f"
      ],
      "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": "8297cedd12f689167d74de5ddacb514e9f6896ea",
      "tree": "70339dab2e1c29322726f6eededa0db8217a46a7",
      "parents": [
        "0c89199745bc1bf05b997fc7c342017807676b6f"
      ],
      "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": "0c89199745bc1bf05b997fc7c342017807676b6f",
      "tree": "2f0e1b4ed919909207d70ce9814f5854dba551ea",
      "parents": [
        "355edcea2f15c0f619c1e1d0f4fa433b0d38098f"
      ],
      "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": "ea7d15629752256f6ea1d5c6ea796e59aefd030f",
      "tree": "36eb16f87c8acd48581366e81940e097f9731a38",
      "parents": [
        "4e3d2484c96508d5dea5296f41de4e46612fb7c4"
      ],
      "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": "4e3d2484c96508d5dea5296f41de4e46612fb7c4",
      "tree": "5c50eea4ad21647b7663d33199473794429f493c",
      "parents": [
        "1beb760d920561679862ded945a04e370368c7f7"
      ],
      "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": "1beb760d920561679862ded945a04e370368c7f7",
      "tree": "6081cee6f5d6f596c37683afc64525aaf6739279",
      "parents": [
        "2ea76ead54982376e32ab196093babded80e05e4"
      ],
      "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": "7530e9c708275c273c134c36c68179f511c1940e",
      "tree": "f9b20729ecf6a6f3acdd27ebade2bbae94f50aef",
      "parents": [
        "bde3caae211e215e4bbfef1a267f8d680efa4764"
      ],
      "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": "dbc03445db2bbf83b64f0c0a5dc62e61408864d7",
      "tree": "602897892375bd41177ad810a8147512bdeb9df2",
      "parents": [
        "6d61edc7110775773d966e688731a80221d7666d"
      ],
      "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"
    }
  ],
  "next": "2d7d46fb2d7f5f80afbf060f25ed049079fb0fc9"
}
