)]}'
{
  "log": [
    {
      "commit": "68ddfc7f245bf31f16c3d65ba754cbb78e37fcbe",
      "tree": "9a14b60005fb9575706c98cb101f24d7f8123a61",
      "parents": [
        "587423f64501606852f05393ce1edfac0c18d545",
        "733b7729ea462fae9c6899456444e28fef1c757c"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 14 14:32:13 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 14 14:32:13 2009 -0800"
      },
      "message": "Merge change I1314e737 into eclair-mr2\n\n* changes:\n  AwesomePlayer now renders either remote (IOMXRenderer) or locally depending on what kind of decoder was instantiated. Split off color conversion code into its own shared library.\n"
    },
    {
      "commit": "733b7729ea462fae9c6899456444e28fef1c757c",
      "tree": "bdae9df47ee74857a0941e17d1cef6b096bab771",
      "parents": [
        "b841f14f8e51f2365945281fbfa54ef6a1b1b5a6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 14 14:18:22 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 14 14:18:22 2009 -0800"
      },
      "message": "AwesomePlayer now renders either remote (IOMXRenderer) or locally depending on what kind of decoder was instantiated. Split off color conversion code into its own shared library.\n"
    },
    {
      "commit": "587423f64501606852f05393ce1edfac0c18d545",
      "tree": "5d940990a8f02c7ff84ddf32041b13aaf1c0a2fe",
      "parents": [
        "b841f14f8e51f2365945281fbfa54ef6a1b1b5a6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 14 10:53:00 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 14 10:54:10 2009 -0800"
      },
      "message": "The software AVCDecoder now properly seeks as requested.\n"
    },
    {
      "commit": "b841f14f8e51f2365945281fbfa54ef6a1b1b5a6",
      "tree": "9c0c648cfe9d900425f7756dd0bf2a9b805771ec",
      "parents": [
        "6b91407a918d755454ed396068ff7f67b7088f34"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 11 15:07:25 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 11 15:09:31 2009 -0800"
      },
      "message": "Initial checkin of software AMR NB encoder based on PV source code.\n"
    },
    {
      "commit": "6b91407a918d755454ed396068ff7f67b7088f34",
      "tree": "ff38d37a9acdcf4a0890501402c835b77538cf8a",
      "parents": [
        "72124cf05cd5b40f2902198aca2797616b813457"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 11 11:27:02 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 11 11:27:02 2009 -0800"
      },
      "message": "Propagate duration from input to output only if available, support multiple full frames of audio per input buffer in AMR/AAC decoders.\n"
    },
    {
      "commit": "72124cf05cd5b40f2902198aca2797616b813457",
      "tree": "afc27f32795be17b1e860f6970a30824613a9dc0",
      "parents": [
        "08411b75d4c30ce26180639f158e2f33d190eee8"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 11 09:45:19 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 11 09:58:36 2009 -0800"
      },
      "message": "Removing an unused header file and a stale forward declaration. Also handling one more nalType as a no-op.\n"
    },
    {
      "commit": "08411b75d4c30ce26180639f158e2f33d190eee8",
      "tree": "36ff8639d52fad7a6efa9a41666542c898381cde",
      "parents": [
        "fd4a8e09a54469bbccea6248f84319a1eb78765e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 10 15:32:12 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 11 09:04:55 2009 -0800"
      },
      "message": "remote destructors are not synchronously executed by the binder...\n"
    },
    {
      "commit": "fd4a8e09a54469bbccea6248f84319a1eb78765e",
      "tree": "fb86252a7d297d77785e166d028bd52be8710d2a",
      "parents": [
        "e8647636abd1294ae929a8f20c0afa5e9b6b268b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 10 15:49:04 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 11 09:01:32 2009 -0800"
      },
      "message": "Fix seek-on-startup behaviour in AwesomePlayer.\n"
    },
    {
      "commit": "e8647636abd1294ae929a8f20c0afa5e9b6b268b",
      "tree": "434623ce0b1523231c7f09a845fe685da4ed7f2d",
      "parents": [
        "3ce139526703a0c070bc3606e0d8a01290baeeb9",
        "4844ac54e8b5997c3b03872dbafe8ebed4787517"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 11 08:48:47 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 11 08:48:47 2009 -0800"
      },
      "message": "Merge change Ia67d5388 into eclair-mr2\n\n* changes:\n  remote destructors are not synchronously executed by the binder...\n"
    },
    {
      "commit": "4844ac54e8b5997c3b03872dbafe8ebed4787517",
      "tree": "4c738546c3730529907760489bc38a2124b1240f",
      "parents": [
        "3869dcbacecc5575cdde7b337a39cbd14c1fd7cb"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 10 15:32:12 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 11 08:39:42 2009 -0800"
      },
      "message": "remote destructors are not synchronously executed by the binder...\n"
    },
    {
      "commit": "3ce139526703a0c070bc3606e0d8a01290baeeb9",
      "tree": "5dc04b37f874d4e92af34fd9b2ed095801c9725f",
      "parents": [
        "0a2b8e6424d1b027fb188ba0bd290fedff34b0f5",
        "609f1a00c96cf5605f4614e7bb6d0487c98969c5"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 11 08:39:00 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 11 08:39:00 2009 -0800"
      },
      "message": "Merge change I595c2d60 into eclair-mr2\n\n* changes:\n  Initial checkin of software AVC video decoder based on PV source code.\n"
    },
    {
      "commit": "0a2b8e6424d1b027fb188ba0bd290fedff34b0f5",
      "tree": "e856fa8b85db6937b54a49b930e079aae9764888",
      "parents": [
        "3869dcbacecc5575cdde7b337a39cbd14c1fd7cb",
        "8eb8011120a68a86199b9960cf1ae91a6ddc7e6d"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu Dec 10 17:57:10 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 10 17:57:10 2009 -0800"
      },
      "message": "am 14f89404: Fix media player decode function. Bug 2317821.\n\nMerge commit \u002714f8940472217e8b0164d8f213679710d623d528\u0027 into eclair-mr2\n\n* commit \u002714f8940472217e8b0164d8f213679710d623d528\u0027:\n  Fix media player decode function. Bug 2317821.\n"
    },
    {
      "commit": "3869dcbacecc5575cdde7b337a39cbd14c1fd7cb",
      "tree": "0850074143342d15d4001c762302a05e4210dcbf",
      "parents": [
        "df08a8102aa0721afec6df5db8f5742f5542473c",
        "48643f38c9e92dd0a3d4a31c293c954f3df4db1b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 10 16:46:13 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 10 16:46:13 2009 -0800"
      },
      "message": "am 86ed86d2: Merge change I0f73439a into eclair\n\nMerge commit \u002786ed86d2260932bdf2217b1d8431ac9e04d47534\u0027 into eclair-mr2\n\n* commit \u002786ed86d2260932bdf2217b1d8431ac9e04d47534\u0027:\n  Partially fix bug 2111240 Detect docking / undocking event by reporting\n"
    },
    {
      "commit": "609f1a00c96cf5605f4614e7bb6d0487c98969c5",
      "tree": "31aa2b3d1787a2f236b733ab27dff8aff04b3197",
      "parents": [
        "df08a8102aa0721afec6df5db8f5742f5542473c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 10 09:44:29 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 10 14:43:44 2009 -0800"
      },
      "message": "Initial checkin of software AVC video decoder based on PV source code.\n"
    },
    {
      "commit": "df08a8102aa0721afec6df5db8f5742f5542473c",
      "tree": "60ef16d36721fae8046aa32df9a9623e77d380cd",
      "parents": [
        "20352a300f84516ef615a023b7134733682b3223",
        "ab0f94d68bcb74547c8191bd4c47a9ad1b7c7c48"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 10 13:11:50 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 10 13:11:50 2009 -0800"
      },
      "message": "Merge change If0d04246 into eclair-mr2\n\n* changes:\n  Don\u0027t count empty buffers when computing the frame rate.\n"
    },
    {
      "commit": "20352a300f84516ef615a023b7134733682b3223",
      "tree": "a58e58cd39789763408fc42e069cabf14a84a28a",
      "parents": [
        "4f1efc098cb5791c3e9f483f2af84aef70d2d0a0",
        "29340b0706b7b65e441c47d6f0c83c344d516435"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 10 12:37:59 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 10 12:37:59 2009 -0800"
      },
      "message": "Merge change I3c01bb62 into eclair-mr2\n\n* changes:\n  Adding copyright headers to recently introduced decoder source files.\n"
    },
    {
      "commit": "29340b0706b7b65e441c47d6f0c83c344d516435",
      "tree": "59ffd0b15b07a421479bd2ed8a712b9482cb4a6d",
      "parents": [
        "c54176addef15699a518b69cd6bbd40ffc95e72e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 10 12:28:22 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 10 12:28:22 2009 -0800"
      },
      "message": "Adding copyright headers to recently introduced decoder source files.\n"
    },
    {
      "commit": "4f1efc098cb5791c3e9f483f2af84aef70d2d0a0",
      "tree": "a2873e84aed3eecb1198f85954e24cddb1bdc380",
      "parents": [
        "c54176addef15699a518b69cd6bbd40ffc95e72e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 08 15:40:06 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 10 12:23:55 2009 -0800"
      },
      "message": "Initial check in of AMR (NB and WB) decoders based on PV source code.\n"
    },
    {
      "commit": "ab0f94d68bcb74547c8191bd4c47a9ad1b7c7c48",
      "tree": "d331b6693c40de12bd7220067da510542a6c35b1",
      "parents": [
        "c54176addef15699a518b69cd6bbd40ffc95e72e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 10 12:21:57 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 10 12:21:57 2009 -0800"
      },
      "message": "Don\u0027t count empty buffers when computing the frame rate.\n"
    },
    {
      "commit": "8eb8011120a68a86199b9960cf1ae91a6ddc7e6d",
      "tree": "3b09d720df002b724e30eec03a4e0caddcea7b10",
      "parents": [
        "48643f38c9e92dd0a3d4a31c293c954f3df4db1b"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Dec 09 20:20:26 2009 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Dec 09 20:36:31 2009 -0800"
      },
      "message": "Fix media player decode function. Bug 2317821.\n\nThere was a recent change to OpenCORE that broke the MediaPlayer::decode()\nfunction for all OpenCORE supported formats (MP3, AAC, and AMR-NB/WB). The\naffect is that SoundPool is unreliable for all of these formats. This patch\nchanges the logic in the AudioCache object that processes messages from the\nmedia player. The old logic was fragile. This change should make it more\nrobust against changes.\n"
    },
    {
      "commit": "c54176addef15699a518b69cd6bbd40ffc95e72e",
      "tree": "1adf2d71394da2327a60029fdd17cd2704794ba0",
      "parents": [
        "35dd25795bb83d41c1022b1aefe890ffc00e9a35"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 08 10:07:22 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 08 10:07:22 2009 -0800"
      },
      "message": "Make sure to use the hand-tweaked-assembly version of the relevant mp3 code if building for ARM.\n"
    },
    {
      "commit": "35dd25795bb83d41c1022b1aefe890ffc00e9a35",
      "tree": "dbb32ea9ed09c0ff2565849feddf8255a0ab65d0",
      "parents": [
        "edf4e6f02b54481ecd74bbdb51e3f5e3db0f53ff",
        "541962997b4076da11546619f082467ffd9bcd1f"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 08 09:16:08 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 08 09:16:08 2009 -0800"
      },
      "message": "Merge change Ib16e5543 into eclair-mr2\n\n* changes:\n  Fix the mp3 audio extractor that would occasionally return an invalid frame directly after a seek.\n"
    },
    {
      "commit": "edf4e6f02b54481ecd74bbdb51e3f5e3db0f53ff",
      "tree": "3659c584cb564460c220555d7227bc44383007cc",
      "parents": [
        "d912f4646ece79832f9d852b39eb6b0d836ccfc4",
        "ebd0d94d2619280f9871ef2d0965d95fb880404c"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 08 09:16:00 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 08 09:16:00 2009 -0800"
      },
      "message": "Merge change I8f658214 into eclair-mr2\n\n* changes:\n  Minor tweaks to the mp3 and aac software decoders, propagate duration to output format.\n"
    },
    {
      "commit": "48643f38c9e92dd0a3d4a31c293c954f3df4db1b",
      "tree": "01afc7b62be9fd10ddc1a21c88bca9a2a5e6079b",
      "parents": [
        "148b266afe2ac92b5616c24e8d5160e6f9242f69"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Dec 07 18:40:56 2009 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Dec 07 20:42:52 2009 -0800"
      },
      "message": "Partially fix bug 2111240 Detect docking / undocking event by reporting\nto the AudioPolicyManager a new forced usage AudioSystem::FOR_DOCK\nwhich can take the FORCE_NONE, FORCE_BT_DOCK or FORCE_WIRED_ACCESSORY\nvalues. This CL is complemented by an update of the APM to take into\naccount the FOR_DOCK usage.\n"
    },
    {
      "commit": "d912f4646ece79832f9d852b39eb6b0d836ccfc4",
      "tree": "3997f451c32651068afbe82a1a6ea06884bf8cf1",
      "parents": [
        "d9618f23226f46c752e56f712bc4b505117d8b4b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 16:37:37 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 16:41:57 2009 -0800"
      },
      "message": "Note to self: Don\u0027t reverse the arguments to fseek(o)...\n"
    },
    {
      "commit": "ebd0d94d2619280f9871ef2d0965d95fb880404c",
      "tree": "8b71343070a2b78cb24de0751c093bbdbbd0392c",
      "parents": [
        "d9618f23226f46c752e56f712bc4b505117d8b4b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 16:32:37 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 16:41:16 2009 -0800"
      },
      "message": "Minor tweaks to the mp3 and aac software decoders, propagate duration to output format.\n"
    },
    {
      "commit": "541962997b4076da11546619f082467ffd9bcd1f",
      "tree": "947bb4e0c7b03a404123ec3ccda00ef67fa540c6",
      "parents": [
        "d9618f23226f46c752e56f712bc4b505117d8b4b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 16:31:31 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 16:40:29 2009 -0800"
      },
      "message": "Fix the mp3 audio extractor that would occasionally return an invalid frame directly after a seek.\n"
    },
    {
      "commit": "d9618f23226f46c752e56f712bc4b505117d8b4b",
      "tree": "6bf48d5023b6b77d2a65d94a827715a89cafdf02",
      "parents": [
        "92616b5655b7aef260480f60f2aabf98e821c8f3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 14:22:35 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 14:22:35 2009 -0800"
      },
      "message": "Initial checkin of stagefright MP3 audio decoder based on PV source code.\n"
    },
    {
      "commit": "92616b5655b7aef260480f60f2aabf98e821c8f3",
      "tree": "659614a0a1836d3e785d28ede92a20968fb8727b",
      "parents": [
        "c4fbba6ab63b6fc1a60f6d91238291a73332091b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 11:23:44 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 11:23:44 2009 -0800"
      },
      "message": "Fixing the build, only instantiate the software aac decoder in full stagefright builds.\n"
    },
    {
      "commit": "c4fbba6ab63b6fc1a60f6d91238291a73332091b",
      "tree": "caa41079b8b42b44fdccd0c7aee9a5e2398e9409",
      "parents": [
        "a410d5a7150d6b14f98197e570c78ea7b6a65091",
        "f44de515d3b6098a0b585865c1a0c7b20d3075a6"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 07 11:03:28 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 07 11:03:28 2009 -0800"
      },
      "message": "Merge change I9c6e1f90 into eclair-mr2\n\n* changes:\n  Initial check in of stagefright software AAC decoder based on PV source code.\n"
    },
    {
      "commit": "a410d5a7150d6b14f98197e570c78ea7b6a65091",
      "tree": "3fcb722bdfba1d0bd214d8dfa831e9f3d71cc6e5",
      "parents": [
        "bf697e37550d9e8376089b0b5e498613bede798c",
        "148b266afe2ac92b5616c24e8d5160e6f9242f69"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 07 11:03:17 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 07 11:03:17 2009 -0800"
      },
      "message": "am 6d42d806: Merge change I9cc489a2 into eclair\n\nMerge commit \u00276d42d80653f2c41f3e72a878a1d9a6f9693b89f7\u0027 into eclair-mr2\n\n* commit \u00276d42d80653f2c41f3e72a878a1d9a6f9693b89f7\u0027:\n  Fix issue 2304669: VoiceIME: starting and canceling voice IME yields persistent \"error 8\" state on future attempts and breaks voice search.\n"
    },
    {
      "commit": "f44de515d3b6098a0b585865c1a0c7b20d3075a6",
      "tree": "028b1d81643bbb332464b42b50a0f79ba5359142",
      "parents": [
        "bf697e37550d9e8376089b0b5e498613bede798c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 09:56:32 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 07 11:02:28 2009 -0800"
      },
      "message": "Initial check in of stagefright software AAC decoder based on PV source code.\n"
    },
    {
      "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": "148b266afe2ac92b5616c24e8d5160e6f9242f69",
      "tree": "6a39d1291d8abe0fe7ca25b0ac6d58f92acf2163",
      "parents": [
        "f311c557729099d002f4aae37c402a8287912369"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Dec 05 05:20:01 2009 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 07 05:37:47 2009 -0800"
      },
      "message": "Fix issue 2304669: VoiceIME: starting and canceling voice IME yields persistent \"error 8\" state on future attempts and breaks voice search.\n\nFixed AudioFlinger::openInput() broken in change ddb78e7753be03937ad57ce7c3c842c52bdad65e\nso that an invalid IO handle (0) is returned in case of failure.\nApplied the same correction to openOutput().\nModified RecordThread start procedure so that a failure occuring during the first read from audio input stream is detected and causes\nthe record start to fail.\nModified RecordThread stop procedure to make sure that audio input stream fd is closed before we exit the stop function.\n\nFixed AudioRecord JAVA and JNI implementation to take status of native AudioRecord::start() into account\nand not change mRecordingState to RECORDSTATE_RECORDING if start fails.\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": "adf7d77752b3dbd47badc8819aa2674860d6ccba",
      "tree": "5430de0a699b0d321fe546edb0ed865244317db7",
      "parents": [
        "15478f3287c62a780d19b9059023331721bd4f4f",
        "981594f5c3697c3330bdbd4bb5a743fb9f01e6ab"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 03 20:03:59 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 03 20:03:59 2009 -0800"
      },
      "message": "Merge change I6c84d731 into eclair-mr2\n\n* changes:\n  Media/ToneGenerator: Change tone format for TONE_CDMA_ANSWER\n"
    },
    {
      "commit": "15478f3287c62a780d19b9059023331721bd4f4f",
      "tree": "a617c79c852b63dba38b2f99200b8270f81d87a3",
      "parents": [
        "0ef47568ed93872feab423330b10a62a432decd5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 03 16:22:52 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 03 16:22:52 2009 -0800"
      },
      "message": "Two more uses of strlcpy that break the sim build. Now fixed.\n"
    },
    {
      "commit": "0ef47568ed93872feab423330b10a62a432decd5",
      "tree": "e8555fcda98a2fd3454c0f271a41d1dbc821971c",
      "parents": [
        "97494da9d418b599fa1b9930487b90c978357634"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 03 16:07:05 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 03 16:07:05 2009 -0800"
      },
      "message": "Apparently strlcpy is not part of a standard linux distribution... Unbreaking the sim build.\n"
    },
    {
      "commit": "97494da9d418b599fa1b9930487b90c978357634",
      "tree": "761c80dc646ec8a3ad2f46ecaf3f51b71203bfff",
      "parents": [
        "572e6a5cea656c1df50f69df9730f2dc351308de"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 03 15:45:53 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 03 15:45:53 2009 -0800"
      },
      "message": "I accidentally broke this code while refactoring MediaScanner. This is the fix.\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": "981594f5c3697c3330bdbd4bb5a743fb9f01e6ab",
      "tree": "50eb7e48850ee83d03fec54169765a0c07f35559",
      "parents": [
        "8908d616cc9d74f9fe2c17f1d8d9335ee28c290d"
      ],
      "author": {
        "name": "Naveen Kalla",
        "email": "nkalla@quicinc.com",
        "time": "Tue Oct 13 15:29:47 2009 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Dec 03 12:17:18 2009 -0800"
      },
      "message": "Media/ToneGenerator: Change tone format for TONE_CDMA_ANSWER\n\nTone format for TONE_CDMA_ANSWER should be 660Hz + 1000Hz, with a 500ms ON\nduration.\n"
    },
    {
      "commit": "8908d616cc9d74f9fe2c17f1d8d9335ee28c290d",
      "tree": "d7fddd5e7e3467626f0eddbbf1fdc0a9f283844f",
      "parents": [
        "c297fccffc4ab1cb3b9f5c6a5b0802be057f3e0f",
        "1d711f67ffb3ea73aca155537e0f21b444251158"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 03 11:25:54 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 03 11:25:54 2009 -0800"
      },
      "message": "Merge change Ib904c2a4 into eclair-mr2\n\n* changes:\n  Remove old hack A/V sync hack that is no longer needed.\n"
    },
    {
      "commit": "1d711f67ffb3ea73aca155537e0f21b444251158",
      "tree": "aee381e7f30e46d562f12a80b0689007e0242991",
      "parents": [
        "a7c816c4bdb72cf4f9fe853a96cd7efdb394006d"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu Dec 03 10:13:32 2009 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu Dec 03 10:13:32 2009 -0800"
      },
      "message": "Remove old hack A/V sync hack that is no longer needed.\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": "a7c816c4bdb72cf4f9fe853a96cd7efdb394006d",
      "tree": "2862a6b0b87a19889e10cddf829e3bd922822583",
      "parents": [
        "827f3004421aacb6bceaf772ac825d4f2d3006e4",
        "f311c557729099d002f4aae37c402a8287912369"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Nov 23 19:58:33 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 23 19:58:33 2009 -0800"
      },
      "message": "am 16cc72bd: Fix simulator build.\n\nMerge commit \u002716cc72bdef471ffeee3f61eba8262783de248b04\u0027 into eclair-mr2\n\n* commit \u002716cc72bdef471ffeee3f61eba8262783de248b04\u0027:\n  Fix simulator build.\n"
    },
    {
      "commit": "827f3004421aacb6bceaf772ac825d4f2d3006e4",
      "tree": "224f040563bccf2ec3a4bba7d1fea81c092608c8",
      "parents": [
        "e5d6df402da9b6c5577470abb81a5e6801bd7752",
        "ec4dde75955f87e5afea3f59ef991130257f3f3a"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Nov 23 19:58:00 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 23 19:58:00 2009 -0800"
      },
      "message": "am 8424ec32: Merge change I0f9a53d4 into eclair\n\nMerge commit \u00278424ec323b2bc38887370c75e2c1fcd84bcdb013\u0027 into eclair-mr2\n\n* commit \u00278424ec323b2bc38887370c75e2c1fcd84bcdb013\u0027:\n  Set metadata retriever thread group to the caller\u0027s group.\n"
    },
    {
      "commit": "f311c557729099d002f4aae37c402a8287912369",
      "tree": "376c75d23be1b4031fef4cbd906b204543ce1e69",
      "parents": [
        "ec4dde75955f87e5afea3f59ef991130257f3f3a"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Nov 23 19:51:33 2009 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Nov 23 19:51:33 2009 -0800"
      },
      "message": "Fix simulator build.\n"
    },
    {
      "commit": "ec4dde75955f87e5afea3f59ef991130257f3f3a",
      "tree": "68bdeed14853f8f8a2678acb2b875487e7af706a",
      "parents": [
        "4ddf30b2b118068d82bb37858186d668eddbbe6d"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Nov 23 16:51:15 2009 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Nov 23 16:51:15 2009 -0800"
      },
      "message": "Set metadata retriever thread group to the caller\u0027s group.\n\nThis patch modifies the native binder interface to the metadata\nretriever to pass the caller\u0027s thread group across the binder\ninterface. On the server side, the thread scheduler group is\nset to the caller\u0027s scheduler group temporarily and restored\nafter the request has completed. This patch also reverts a\nprevious patch where the priority of the thread was forced to\na low priority foreground thread.\n\nThis should give apps more control over the priority of their\nmetadata retrieval, particularly allow background process to\nrun without hogging the CPU.\n"
    },
    {
      "commit": "e5d6df402da9b6c5577470abb81a5e6801bd7752",
      "tree": "6788322bcb337c52ee83c01049594d78658a759b",
      "parents": [
        "f83d9a75c4616b2da4db7b1559e918fbf8709005"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 23 14:39:38 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 23 15:14:44 2009 -0800"
      },
      "message": "Some playable/decodable streams have been found in the wild that violate this assertion, let\u0027s be lenient for now.\n"
    },
    {
      "commit": "f83d9a75c4616b2da4db7b1559e918fbf8709005",
      "tree": "efdb656d0716757d60b2f3f1d1b4b5591ea48a79",
      "parents": [
        "738c4315859395bfeeaae3d4c9d6fb9f414778f1",
        "650773d00356129ffd661cdaef3fb3095c343707"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 23 14:39:03 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 23 14:39:03 2009 -0800"
      },
      "message": "Merge change I24b0a95d into eclair-mr2\n\n* changes:\n  The original delay after which we dropped a frame was too aggressive. 40ms lateness seems more appropriate (about 25fps).\n"
    },
    {
      "commit": "738c4315859395bfeeaae3d4c9d6fb9f414778f1",
      "tree": "914b3e3eb6702df6b62191ca96819f31ee20e1a1",
      "parents": [
        "bfa6b2d7a1be1832ac40ed90aece1834f720b5c6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 23 14:03:32 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 23 14:06:42 2009 -0800"
      },
      "message": "Make sure the decoder\u0027s input buffers are large enough to hold the largest input data. Verify that the setting actually sticks.\n"
    },
    {
      "commit": "650773d00356129ffd661cdaef3fb3095c343707",
      "tree": "d7eaa1dc1cfc6b008bae7ee687c07ea99bf27a56",
      "parents": [
        "bfa6b2d7a1be1832ac40ed90aece1834f720b5c6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 23 14:02:00 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 23 14:04:48 2009 -0800"
      },
      "message": "The original delay after which we dropped a frame was too aggressive. 40ms lateness seems more appropriate (about 25fps).\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": "70453d7e16079720947adabad1e76d5d6b72ea14",
      "tree": "e13d666ee10eea352fd7d3d253e1f4d96984578e",
      "parents": [
        "f78933fdfc5bc71881b3011f921b643d90387664",
        "2f5925e123afdaba79c7ca8ef6647e4b86cd5488"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 19 15:01:14 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 19 15:01:14 2009 -0800"
      },
      "message": "am f854e077: (-s ours) Merge change I8134d6ed into eclair\n\nMerge commit \u0027f854e0770207e93ef9d1bf6d50ed18537a107ca4\u0027 into eclair-mr2\n\n* commit \u0027f854e0770207e93ef9d1bf6d50ed18537a107ca4\u0027:\n  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": "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": "c77a293c4971d9f6c4e3b0c0573fb13276bedf18",
      "tree": "010b291f6045cb4df6ca1f1fc93773087bdd2b66",
      "parents": [
        "03475f5af25e4aa32d46d41dd2ec756853d8dd9d",
        "be11f392a8b8ff1006cf536350cc8a85f8788ff4"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 17 10:36:24 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 17 10:36:24 2009 -0800"
      },
      "message": "Merge change Ib64ea2dd into eclair-mr2\n\n* changes:\n  Improvements to TimedEventQueue.\n"
    },
    {
      "commit": "be11f392a8b8ff1006cf536350cc8a85f8788ff4",
      "tree": "b01deb5339fb3b15db63fa6d021cce441dfe1be1",
      "parents": [
        "057eacf4578ac6b90ee18c524670e01445bf2732"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 17 10:25:01 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 17 10:29:32 2009 -0800"
      },
      "message": "Improvements to TimedEventQueue.\n\nEvents are now cancelled given their \"unique\" event_id instead of the event pointer\nitself (which may be reallocated in place if we\u0027re unlucky). Also the ability to\ncancel multiple events matching a predicate has been added.\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": "057eacf4578ac6b90ee18c524670e01445bf2732",
      "tree": "d334848d94bc7ef9a4adee4b2623227109d3f322",
      "parents": [
        "86b48a89a6cde62fc1db9140593386450bc0a9a1",
        "583892d0185d102f3c9ca69ea48fe38af31ecd31"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 12 23:10:34 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 12 23:10:34 2009 -0800"
      },
      "message": "am fddfb9ae: Merge change Iad79689a into eclair\n\nMerge commit \u0027fddfb9ae03a2730ac5ce27fa4c47b7d3a0285d0f\u0027 into eclair-mr2\n\n* commit \u0027fddfb9ae03a2730ac5ce27fa4c47b7d3a0285d0f\u0027:\n  Improvements for issue 2197683:\tEnglish IME key-press latency is noticeably higher on passion than sholes\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": "583892d0185d102f3c9ca69ea48fe38af31ecd31",
      "tree": "81d50ceb87a4f1f7a1d61bd75480619580c5c5d5",
      "parents": [
        "1aaa563c2cb0df3f414aa0cfc13f9ae7b457dc49",
        "2b584244930c9de0e3bc46898a801e9ccb731900"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 12 22:53:28 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 12 22:53:28 2009 -0800"
      },
      "message": "Merge change Iad79689a into eclair\n\n* changes:\n  Improvements for issue 2197683:\tEnglish IME key-press latency is noticeably higher on passion than sholes\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": "2b584244930c9de0e3bc46898a801e9ccb731900",
      "tree": "cd24f4c3ebc3cd42feb98361123b4291228c8782",
      "parents": [
        "a75e9fb4876139fff4bb836fb0ebd5f80c8b20b3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 09 23:32:22 2009 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 11 12:13:27 2009 -0800"
      },
      "message": "Improvements for issue 2197683:\tEnglish IME key-press latency is noticeably higher on passion than sholes\n\nThis change goes with a kernel driver change that reduces the audio buffer size from 4800 bytes (~27ms) to 3072 bytes (~17ms).\n- The AudioFlinger modifcations in change 0bca68cfff161abbc992fec82dc7c88079dd1a36 have been removed: the short sleep period was counter productive when the AudioTrack is using the call back thread as it causes to many preemptions.\n- AudioFlinger mixer thread now detects long standby exit time and in this case anticipates start by writing 0s as soon as a track is enabled even if not ready for mixing.\n- AudioTrack::start() is modified to start call back thread before starting the IAudioTrack so that thread startup time is masked by IAudioTrack start and mixer thread wakeup time.\n"
    },
    {
      "commit": "ca4bea0965f870c7d1d92357d860f50c6c18d51d",
      "tree": "bb136f251be0a9e1a817e201c5447ca42ebf606d",
      "parents": [
        "7eb443df575d8002d045bec28cdcde23c8137a2c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 10 13:47:45 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 10 13:47:45 2009 -0800"
      },
      "message": "Make MediaPlayerImpl less verbose by default.\n"
    },
    {
      "commit": "7eb443df575d8002d045bec28cdcde23c8137a2c",
      "tree": "ffc2c4411fe7f1ddcba2361d11b2768310d79b44",
      "parents": [
        "732324915492184dc5f773235af7f9146016c360",
        "a75e9fb4876139fff4bb836fb0ebd5f80c8b20b3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 10 12:29:34 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 10 12:29:34 2009 -0800"
      },
      "message": "am cfe45c77: Merge change I96c4d4b3 into eclair\n\nMerge commit \u0027cfe45c775ddb5e48bf556aee7422298260eb4fd8\u0027 into eclair-mr2\n\n* commit \u0027cfe45c775ddb5e48bf556aee7422298260eb4fd8\u0027:\n  Fix for random audio output failures, properly dup() the file descriptor in IMediaPlayer::setDataSource to assume ownership as the caller will otherwise close it.\n"
    },
    {
      "commit": "a75e9fb4876139fff4bb836fb0ebd5f80c8b20b3",
      "tree": "1e55974ca456a316250d4694d8eb2b976aa7a982",
      "parents": [
        "dae04ca7c4b5590786ffc336721ee8714cc79fef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 10 11:51:43 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 10 12:26:26 2009 -0800"
      },
      "message": "Fix for random audio output failures, properly dup() the file descriptor in IMediaPlayer::setDataSource to assume ownership as the caller will otherwise close it.\n"
    },
    {
      "commit": "732324915492184dc5f773235af7f9146016c360",
      "tree": "eae0570055bc777c061191773847a30c382d5687",
      "parents": [
        "5bb42b780a934386f26c1c1f0a8249494ec65f7c",
        "f808c4cf1c3e2c6b18a2e9268bfa3cfc9ca793f8"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 10 11:53:19 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 10 11:53:19 2009 -0800"
      },
      "message": "Merge change I3e1bdd38 into eclair-mr2\n\n* changes:\n  Transcode files again.\n"
    },
    {
      "commit": "5bb42b780a934386f26c1c1f0a8249494ec65f7c",
      "tree": "6f8069290744fb50ea485a80ecda5bf449d15a6d",
      "parents": [
        "84ec55b736ae2278d6abdc1c7a0312de46ef5f3d",
        "fa70cad40b01627ac1c22e04cdd548ece9c2654f"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 06 14:25:26 2009 -0500"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 06 14:25:26 2009 -0500"
      },
      "message": "Merge change I9a50fdf4 into eclair-mr2\n\n* changes:\n  Handle OMX_StateInvalid in emergency shutdown properly (by ignoring it and hoping for the best) instead of asserting.\n"
    },
    {
      "commit": "84ec55b736ae2278d6abdc1c7a0312de46ef5f3d",
      "tree": "fddab69ca6235e219c7ebc7d8380be634a3eb936",
      "parents": [
        "6fceb868bf79feac0498ca5db8694c92ef6b4fa5",
        "dae04ca7c4b5590786ffc336721ee8714cc79fef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 06 10:07:53 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 06 10:07:53 2009 -0800"
      },
      "message": "am fde273ba: Merge change Ic997acac into eclair\n\nMerge commit \u0027fde273baf6592a5fde15ee4dd4d798d90368e440\u0027 into eclair-mr2\n\n* commit \u0027fde273baf6592a5fde15ee4dd4d798d90368e440\u0027:\n  Make AudioPlayer a little less verbose, defer starting audio playback until after the first video frame has been decoded (if there\u0027s video at all).\n"
    },
    {
      "commit": "fa70cad40b01627ac1c22e04cdd548ece9c2654f",
      "tree": "e0fb01133d01e5680b669f26c0eeedddcbe09809",
      "parents": [
        "6fceb868bf79feac0498ca5db8694c92ef6b4fa5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 06 08:40:09 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 06 08:44:26 2009 -0800"
      },
      "message": "Handle OMX_StateInvalid in emergency shutdown properly (by ignoring it and hoping for the best) instead of asserting.\n"
    },
    {
      "commit": "dae04ca7c4b5590786ffc336721ee8714cc79fef",
      "tree": "2e5ef5164464e2feae4c4803f0b5800d06cfd439",
      "parents": [
        "5b65c7043dada0c89d3a941742666ac40ea35746"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 05 16:34:39 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 05 16:34:39 2009 -0800"
      },
      "message": "Make AudioPlayer a little less verbose, defer starting audio playback until after the first video frame has been decoded (if there\u0027s video at all).\n"
    },
    {
      "commit": "6fceb868bf79feac0498ca5db8694c92ef6b4fa5",
      "tree": "2044ceb42fee7a6c299b6c559bed0e48069bcd91",
      "parents": [
        "022ad466c95001eaf043b1f0aff89cde92e3387f",
        "5b65c7043dada0c89d3a941742666ac40ea35746"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 05 13:59:20 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 05 13:59:20 2009 -0800"
      },
      "message": "am 05eca1d4: (-s ours) Merge change Ie80e2381 into eclair\n\nMerge commit \u002705eca1d46a45723a57899dabad698537b7faef82\u0027 into eclair-mr2\n\n* commit \u002705eca1d46a45723a57899dabad698537b7faef82\u0027:\n  DO NOT MERGE: Squashed commit of the following:\n"
    },
    {
      "commit": "022ad466c95001eaf043b1f0aff89cde92e3387f",
      "tree": "2044ceb42fee7a6c299b6c559bed0e48069bcd91",
      "parents": [
        "1c02bfb63ea6e1d1630a09229044d64be200a9ef",
        "d899d73308f987c932a4366977e67a3d8aa8bc8b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 05 13:55:19 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 05 13:55:19 2009 -0800"
      },
      "message": "am 818a9cf8: Merge change Ia4eedace into eclair\n\nMerge commit \u0027818a9cf827f282addbf7c8ee23534e08a3aaa358\u0027 into eclair-mr2\n\n* commit \u0027818a9cf827f282addbf7c8ee23534e08a3aaa358\u0027:\n  Now that UseBuffer on this component is fixed, let\u0027s use it.\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": "d899d73308f987c932a4366977e67a3d8aa8bc8b",
      "tree": "934d5bff7af0343f39eb0858e92ee054bac4685b",
      "parents": [
        "dee7f8349ad8e93c5b16c24bed49fa9192790e0f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 05 09:56:03 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 05 09:56:03 2009 -0800"
      },
      "message": "Now that UseBuffer on this component is fixed, let\u0027s use it.\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": "2c814adaf6340ee3cf2b942f1dff0f2ea6904c81",
      "tree": "7bc09ea2a47006e8938c4561c8324610dc960dab",
      "parents": [
        "01b8bbb3a841729052860d8ca734e0e0e90bb40a",
        "0dba73763a04d39faf999dcc5ef12af3c99535a7"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 04 13:33:27 2009 -0500"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 04 13:33:27 2009 -0500"
      },
      "message": "Merge change I6bce6d87 into eclair-mr2\n\n* changes:\n  Adds a WAVExtractor for 16-bit signed PCM audio wave files.\n"
    },
    {
      "commit": "01b8bbb3a841729052860d8ca734e0e0e90bb40a",
      "tree": "f76cc8592558afc48372c2b38eedf6561a4659dc",
      "parents": [
        "08994dc192d79a5b60b6741db330bd383096be34",
        "1f9ad1d704a17533989a9274c55bd5bb9d3abcc0"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 04 13:33:13 2009 -0500"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 04 13:33:13 2009 -0500"
      },
      "message": "Merge change I313953dc into eclair-mr2\n\n* changes:\n  Support raw audio sources in MediaPlayerImpl.\n"
    },
    {
      "commit": "08994dc192d79a5b60b6741db330bd383096be34",
      "tree": "dfa6f4e385bc59b02dcef9a7619e00041045f202",
      "parents": [
        "af2abc8634dcae706c0fae02b1381fe70e678f35",
        "125ef261deb4efbb50cc41c60902dea48d8d4187"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 04 13:33:02 2009 -0500"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 04 13:33:02 2009 -0500"
      },
      "message": "Merge change I6f6bf3d8 into eclair-mr2\n\n* changes:\n  Support raw audio sources in stagefright commandline tool.\n"
    },
    {
      "commit": "af2abc8634dcae706c0fae02b1381fe70e678f35",
      "tree": "5cd2c4f47f16aa64fcdff68233addf9b71443daf",
      "parents": [
        "202ff50113b293a80c8df60022e2c4ad8a829fbe",
        "c0bbcf32ac6ffa76409232d7156250e1092bfa24"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 04 13:32:46 2009 -0500"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 04 13:32:46 2009 -0500"
      },
      "message": "Merge change I5126e183 into eclair-mr2\n\n* changes:\n  Fix MP3Extractor duration overflows...\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": "1f9ad1d704a17533989a9274c55bd5bb9d3abcc0",
      "tree": "3ea176b69776c84e0c6250bdeeaf33bb9f91a801",
      "parents": [
        "125ef261deb4efbb50cc41c60902dea48d8d4187"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 03 16:00:22 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 03 16:00:22 2009 -0800"
      },
      "message": "Support raw audio sources in MediaPlayerImpl.\n"
    },
    {
      "commit": "125ef261deb4efbb50cc41c60902dea48d8d4187",
      "tree": "0f0fecafc3f4b3c05342983cdd9b80a38fe2ecf8",
      "parents": [
        "c0bbcf32ac6ffa76409232d7156250e1092bfa24"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 03 15:59:13 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 03 15:59:13 2009 -0800"
      },
      "message": "Support raw audio sources in stagefright commandline tool.\n"
    },
    {
      "commit": "c0bbcf32ac6ffa76409232d7156250e1092bfa24",
      "tree": "b5c4f07b87f7a0ac01fe511eb1889d5e3a0c0bac",
      "parents": [
        "672635d84f2d897b5e782448356bba18b5f2dc7c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 03 15:58:35 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 03 15:58:35 2009 -0800"
      },
      "message": "Fix MP3Extractor duration overflows...\n"
    },
    {
      "commit": "202ff50113b293a80c8df60022e2c4ad8a829fbe",
      "tree": "8bb439769e4ccf325b8db9f5d98ead07621fc4ff",
      "parents": [
        "672635d84f2d897b5e782448356bba18b5f2dc7c",
        "c6c6237a67661c7b2d8822b7360cdf01e64d2c7c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 03 11:59:59 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 03 11:59:59 2009 -0800"
      },
      "message": "am 338ccf43: Merge change Id2906ad8 into eclair\n\nMerge commit \u0027338ccf43b6a4468aea6aa7d831be7d6c8d8d134d\u0027 into eclair-mr2\n\n* commit \u0027338ccf43b6a4468aea6aa7d831be7d6c8d8d134d\u0027:\n  Fix video flickering by propagating the NO_CACHING flag from the master to MemoryHeapPMem.\n"
    },
    {
      "commit": "c6c6237a67661c7b2d8822b7360cdf01e64d2c7c",
      "tree": "4ec57b98b97b984ade8d6cc2e859b199d4cf5e2e",
      "parents": [
        "967441ef270cf9dda4c859770764dcb2146f2435"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 03 10:26:34 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 03 10:28:48 2009 -0800"
      },
      "message": "Fix video flickering by propagating the NO_CACHING flag from the master to MemoryHeapPMem.\n"
    }
  ],
  "next": "672635d84f2d897b5e782448356bba18b5f2dc7c"
}
