)]}'
{
  "log": [
    {
      "commit": "bc1d77b6cbce23fbe25f7231651037ae195bc90e",
      "tree": "6936dbe05b0edbefe69c5c3452ba64ea72a2575a",
      "parents": [
        "6a78cd85867c5f22e4e82259b81fab46088331ad"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 16:38:12 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 10:20:14 2012 -0800"
      },
      "message": "Use audio_stream_type_t consistently\n\nAt native level it was a mixture of audio_stream_type_t, int, uint32_t,\nand uint8_t.  Java is still int.  Also fixed a couple of hard-coded -1\ninstead of AUDIO_STREAM_DEFAULT, and in startToneCommand a hard-coded 0\ninstead of AUDIO_STREAM_VOICE_CALL.\n\nChange-Id: Ia33bfd70edca8c2daec9052984b369cd8eee2a83\n"
    },
    {
      "commit": "1c66547ba25be6a1893df0ae26857f649474843a",
      "tree": "56b751b312560ea89f4d48ed49b5bd192ae1841d",
      "parents": [
        "cc9858049ddea5a28cbd1d6ee59dd814e21ef512",
        "1c5a89d4af193e3ce9be9992ffee0ab0a4d8da5a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 10:30:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 10:30:28 2012 -0800"
      },
      "message": "Merge \"Use audio_format_t consistently\""
    },
    {
      "commit": "3762c311729fe9f3af085c14c5c1fb471d994c03",
      "tree": "7d4caccad80ac7327c7bff96dafc857d5f4631ad",
      "parents": [
        "7a939077bd14521c7d351af98df7ed75a8ec9c15"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Sun Jan 08 13:19:13 2012 +0000"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/157220\n\nBug: 5449033\nChange-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c\n"
    },
    {
      "commit": "8564c8da817a845353d213acd8636b76f567b234",
      "tree": "71acbd8ace822c769aef917629bf5a079f63274d",
      "parents": [
        "c42e6a0bed2c88fd03466c5104d62d7f98e68768"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 10:07:54 2012 +0000"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157065\n\nBug: 5449033\nChange-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69\n"
    },
    {
      "commit": "1c5a89d4af193e3ce9be9992ffee0ab0a4d8da5a",
      "tree": "37cbdadbb8acf18fb022b3729c37c370ccbe853f",
      "parents": [
        "a8719ad9d53d3fe51e8031b2471e9558b8ef727f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 09:36:37 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 13:34:54 2012 -0800"
      },
      "message": "Use audio_format_t consistently\n\nWas int, uint32_t, uint16_t, and uint8_t with 2-bit bitfield.\nAlso replace 0 by AUDIO_FORMAT_DEFAULT and replace 1 by\nAUDIO_FORMAT_PCM_16_BIT.\n\nChange-Id: Ia8804f53f1725669e368857d5bb2044917e17975\n"
    },
    {
      "commit": "5baa3a62a97544669fba6d65a11c07f252e654dd",
      "tree": "109755e1595b438873d34b981e31f84ea64bd2a5",
      "parents": [
        "173ab4d61077c49f115b82eff34f97fda5a7273a"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Jan 03 22:38:27 2012 +0000"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156016\n\nBug: 5449033\nChange-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298\n"
    },
    {
      "commit": "ea427b0c87a52d5e770f50856401a81ff2658cc4",
      "tree": "9f4e0ec427bd0b9ca6c8a3575bd784fc78c9968a",
      "parents": [
        "e43a7c18ecf3de8df774362a9bc3e97d8469ac00",
        "26f70db99f483be36caa7a4c84fec5de50bec034"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 08 10:40:20 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 08 10:40:20 2011 -0800"
      },
      "message": "resolved conflicts for merge of 26f70db9 to master\n\nChange-Id: Ib1536b1a4c9eeff80e0726b3e61cee12057cd120\n"
    },
    {
      "commit": "95be24585f46229f551c529104b5e92fa4316b38",
      "tree": "657706c23c41575c0a6bb092d2b7f42d3e67ea3b",
      "parents": [
        "27ed12492dfbec6ec67b66ff3cf60febce370b01"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 25 13:45:00 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 28 09:39:23 2011 -0700"
      },
      "message": "Remove surface legacy APIs and code.\n\nAll surfaces are now supported through surface textures.\n\nChange-Id: I95dd823e7099c0c32a48a1121624149dcc29d9c6\n"
    },
    {
      "commit": "e396e993a55b93d2d69c78b21a5d4ce0b8c37805",
      "tree": "856976054085a060732b9fa243df3156429cf03f",
      "parents": [
        "258f52fed38849d9150ff8ec6b5972f716a07939",
        "fc9592f8a5f2f75207e5e532655ac294eb2b334b"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Oct 28 02:53:20 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 28 02:53:20 2011 +0000"
      },
      "message": "am fc9592f8: am 08479cee: Merge \"Stagefright: ANW::connect in MediaPlayerService\" into ics-mr0\n\n* commit \u0027fc9592f8a5f2f75207e5e532655ac294eb2b334b\u0027:\n  Stagefright: ANW::connect in MediaPlayerService\n"
    },
    {
      "commit": "fc9592f8a5f2f75207e5e532655ac294eb2b334b",
      "tree": "b9067a99e0d90eff2f54c9d2cc2150c0036c734b",
      "parents": [
        "859bf0f2efb7b5518055893c17aa3a6437023633",
        "08479ceeba56c460fb52f60a24df27776f1936c3"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Oct 28 02:14:01 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 28 02:14:01 2011 +0000"
      },
      "message": "am 08479cee: Merge \"Stagefright: ANW::connect in MediaPlayerService\" into ics-mr0\n\n* commit \u002708479ceeba56c460fb52f60a24df27776f1936c3\u0027:\n  Stagefright: ANW::connect in MediaPlayerService\n"
    },
    {
      "commit": "2fa0ac2e44f553e29b0d83a5dd87f7dda5422811",
      "tree": "557bc34832113716b320acc208ecdd584d83b793",
      "parents": [
        "ed12460301cf0e04ac61993aaf1142f75f504814"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Oct 26 18:36:31 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Oct 26 18:40:00 2011 -0700"
      },
      "message": "Stagefright: ANW::connect in MediaPlayerService\n\nThis change moves the ANativeWindow connect and disconnect logic from\nMediaPlayer to MediaPlayerService::Client.\n\nBug: 5502654\nChange-Id: Ifc43b98b01ad8f35d62d7ece43110724ec7fda3d\n"
    },
    {
      "commit": "71f2cf116aab893e224056c38ab146bd1538dd3e",
      "tree": "75a9162a0ea00830184b12a9ca51d3a1a040a5bb",
      "parents": [
        "1da79501066a74b630c8aa138db0f86ab6c690bb"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Oct 20 11:56:00 2011 +0100"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Oct 26 09:57:54 2011 +0100"
      },
      "message": "Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/143865\n\nBug: 5449033\nChange-Id: I0122812ed6ff6f5b59fe4a43ab8bff0577adde0a\n"
    },
    {
      "commit": "c7d927466e6314315743e5c98730b3a79c52e892",
      "tree": "824fe07e2080554871922b512eb103460f5cdc19",
      "parents": [
        "bf83971ba883e30e778558cf4df1e034233214c9",
        "b3cdadb639027f62c7c1637ca962a70d2d1f3b4d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Oct 19 17:57:58 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 19 17:57:58 2011 -0700"
      },
      "message": "am b3cdadb6: Merge \"Check whether media recorder client exists before dumping.\" into ics-mr0\n\n* commit \u0027b3cdadb639027f62c7c1637ca962a70d2d1f3b4d\u0027:\n  Check whether media recorder client exists before dumping.\n"
    },
    {
      "commit": "dc8bbe79b83c7f4a4cc7e557639079385097cc00",
      "tree": "3b45371ba1e005ffb092a4f88bfa7a9aab81fbbf",
      "parents": [
        "5264f6003bbcb8ca70df034379154914260cc322"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Oct 18 22:29:20 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Oct 18 22:29:20 2011 -0700"
      },
      "message": "Check whether media recorder client exists before dumping.\n\nChange-Id: I1f3a644a958975e4cf6c02099c53e30cc4d2fd82\nrelated-to-bug: 5477177\n"
    },
    {
      "commit": "a6be6dcd03fbcce8999d495abdd2ae209a06b4c9",
      "tree": "a63ecc992ef877b7851cae6420f2f95100e11002",
      "parents": [
        "a77a299ad37336c759d361fc3fb1d5f20e4c159f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 11 15:24:07 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Oct 13 11:31:06 2011 -0700"
      },
      "message": "NuPlayer is now taking on the task of streaming over RTSP.\n\nChange-Id: Ie204db8810807f1e7981959e34dc0149e5d9563a\n"
    },
    {
      "commit": "9968a36f297e299578b4f4726832ac8323a08c6f",
      "tree": "e01dcf76a5c10b21f48c30fb279173cc037c8a21",
      "parents": [
        "2cdbe2f1cf0157bf49913c46cc806169e0f9ecc6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 27 09:48:56 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 27 10:23:38 2011 -0700"
      },
      "message": "Fix issue 5373048: AudioCache decode errors\n\nWhen decoding a file for the SoundPool, do not\nreject the entire file in case of error but\nreturn what was decoded so far instead.\n\nChange-Id: Iff199a1b6a4c8e064e42a0dfe0704e0ae36a27fd\n"
    },
    {
      "commit": "fc301b0bb5c635c6bb51b48c504a8db5f9010e5c",
      "tree": "463dec648e238d2e6821a86d121f2a3f8048b3ff",
      "parents": [
        "117999d1f44ec3423369385495ae207898b7b73e"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Tue Aug 30 14:39:17 2011 +0100"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Fri Sep 02 11:26:59 2011 +0100"
      },
      "message": "Require INTERNET permission for network-based content.\nBug #1870981\n\nChange-Id: Ia3ad166390c4d60cea19c3783895b078a2c4c15f\n"
    },
    {
      "commit": "d9792ac752f10a865efe2742b600b4448a821dca",
      "tree": "2ff83038165418746141143402e4b0ef56c8463e",
      "parents": [
        "e1fec2408b41cdbc39003398c38537ef95af94ab"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Fri Aug 12 13:46:55 2011 -0700"
      },
      "committer": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Fri Aug 12 13:46:55 2011 -0700"
      },
      "message": "Add a null check to handle failure of android::createPlayer\n\nChange-Id: Id56bd0c16104e46d8dc71f13d8a44aefe251fad4\n"
    },
    {
      "commit": "d5a20d8d75718fda8a9435d7113f3d6bb8f79a33",
      "tree": "005913f36448a959ad45cd5590f6d9fd6d839505",
      "parents": [
        "c803422bed63f24e987294dae974d81342fb5189"
      ],
      "author": {
        "name": "Ashish Sharma",
        "email": "ashishsharma@google.com",
        "time": "Thu Jul 07 17:57:05 2011 -0700"
      },
      "committer": {
        "name": "Ashish Sharma",
        "email": "ashishsharma@google.com",
        "time": "Fri Aug 05 12:58:14 2011 -0700"
      },
      "message": "Network traffic accounting for chromium stack support in mediaserver.\n\n        - Atribute network activity to uid calling the mediaplayer\n        - Enables logging of chromium network stack in logcat\n\nChange-Id: I2d28c8392248a056b3cee305dd4d4475ebba4337\n"
    },
    {
      "commit": "603d739b5a444c52b63f1ec7cd2098034151ad25",
      "tree": "16f400b743b887a612f124aec561c4cf3e92a781",
      "parents": [
        "5faaadffbfb272f6a5f686834dadaf5408cf0ed2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 30 15:47:02 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 01 13:18:43 2011 -0700"
      },
      "message": "Charge network traffic to the uid of the process using the MediaPlayer.\n\nChange-Id: I2bcb54b8232afd3fc7ee16289f37c7a7b3f23067\nrelated-to-bug: 4517282\n"
    },
    {
      "commit": "fddf5d9f48d0864a30fcc2706616f6aa6cb06c61",
      "tree": "4cf6b1091a3914612f9e3532d185624c62800464",
      "parents": [
        "b19fcf3e9c6b9c8c2885b9ac7f7f836a0e2d6d22"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jun 07 15:52:25 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 08 16:04:26 2011 -0700"
      },
      "message": "Make dumpsys(media.player) more useful by having AwesomePlayer populate it.\n\nChange-Id: I12ba7d542331a8293d67a0d47378b8be4f777759\n"
    },
    {
      "commit": "6af763bec7c3f4d50fee8dd0046409bb8a7fe8f6",
      "tree": "aad20d1f3e7ee495b531dde5ae78626e0911790d",
      "parents": [
        "ed1a9022a19a9003931ce47ff7a0a0b5564255a5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 04 17:58:57 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 03 16:12:37 2011 -0700"
      },
      "message": "Remove dead code related to gettid\n\nThe gettid system call is always available now.\n\nChange-Id: Ib78b41781eda182dc8605daf456bbea7ff7c2dc0\n"
    },
    {
      "commit": "e46a86fcb6a0849fc05c4cade6cb94aad0325295",
      "tree": "6e56bb08bc09a3e73d1b7e6b0cab5d7d226d6463",
      "parents": [
        "2225e4b7049fa3fb9d39a068b8268b63c952d7c1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 01 15:20:35 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 01 15:20:35 2011 -0700"
      },
      "message": "Revert \"Use AudioTrack::event_type not int in callback\"\n\nThis reverts commit 2225e4b7049fa3fb9d39a068b8268b63c952d7c1"
    },
    {
      "commit": "2225e4b7049fa3fb9d39a068b8268b63c952d7c1",
      "tree": "e4acaa9a05334d2e930677a5f5adf8314d1706c9",
      "parents": [
        "2978cef0a77550ea3a364ffbf42fc43f2029070e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 04 17:18:16 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 01 13:50:23 2011 -0700"
      },
      "message": "Use AudioTrack::event_type not int in callback\n\nChange-Id: Ifefc708d46874e04fd0d01cb6e2d43b987ee796c\n"
    },
    {
      "commit": "5439223b5633679edcc255651e7062046004d75d",
      "tree": "683090bec6f1a9a0fe95609fe5becf54aa3b1f8a",
      "parents": [
        "3a4b8bb6756120cfdef2faa7c1966963ef011faf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue May 24 15:53:33 2011 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jun 01 10:55:29 2011 -0700"
      },
      "message": "Use channel mask instead of channel count for track creation\n\nRecord and playback objects (resp AudioRecord and AudioTrack)\nare created using a channel mask, but this information is lost\nin the mixer because only the channel count is known to\nAudioFlinger. A channel count can always be derived from a\nchannel mask.\n\nThe change consists in:\n- disambiguiting variable names for channel masks and counts\n- passing the mask information from the client to AudioFlinger\n and the mixer.\n- when using the DIRECT ouput, only verifying the format of\n the track is compatible with the output\u0027s for PCM.\n\nChange-Id: I50d87bfb7d7afcabdf5f12d4ab75ef3a54132c0e\n"
    },
    {
      "commit": "34bb419e5946ab28112e9e27a4d1b3928d31e0e2",
      "tree": "3186b2ce206a101b19285660af602ec66bdbc831",
      "parents": [
        "b856f43ea7a3a5261a93e432e5ea80005e972530"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed May 11 14:15:23 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu May 12 14:09:57 2011 -0700"
      },
      "message": "update for new audio.h header location\n\nChange-Id: Ic4c62c4037800802427eb7d3c7f5eb8b25d18876\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "d01ec6eab019e46398975202e9e4a198a603ad99",
      "tree": "0669d2f0f8a546de5ebaf135bec67086648f51fc",
      "parents": [
        "71a0dab1ca962c2827be0221a7fbcc065dc3cbb8"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Apr 25 17:28:22 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Fri Apr 29 10:24:03 2011 -0700"
      },
      "message": "Add setParameter/getParameter to MediaPlayer API.\nfor bug 1982947\n\nChange-Id: If3f40e4f18cbba155af29944af38bdc627f8cd53\n"
    },
    {
      "commit": "24fc2fb1c541e954b83fd31ea9f786a5e9b45501",
      "tree": "e85b3ff86b73d56e16ab640919d251c046371c65",
      "parents": [
        "4dc22e77cfd2a1c3671e5646ee87c5e4c15596a0"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Apr 19 22:30:36 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 13:10:10 2011 -0700"
      },
      "message": "audio/media: convert to using the audio HAL and new audio defs\n\nChange-Id: Ibc637918637329e4f2b62f4ac7781102fbc269f5\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "162ee49e1ce8800de80697fdd0e0e42ad7e9374e",
      "tree": "fb729edc49c75aa905daa34211810bd92c959f8c",
      "parents": [
        "a58ee55f490953247882298d56003cbf94285344"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Apr 11 17:23:27 2011 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Apr 13 11:11:34 2011 -0700"
      },
      "message": "- Add another parameter in notify() to be able to send timed text sample\nthrough listener during video playback.\n- Add OnTimedTextListener in the MediaPlayer\nFor feature request 800939.\n\nChange-Id: I65072c27acb4c0037109a72be38c73e9f667420f\n"
    },
    {
      "commit": "c6e3b27fa1c2bf9863dcf017019c976ec98bce42",
      "tree": "90b09856114fb700f13b4644fc8f58e0166d6cd5",
      "parents": [
        "7f5a026d255fdcbd600a01b4abbd87eb0b528e37"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 04 11:43:40 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 04 11:43:40 2011 -0700"
      },
      "message": "This reverts an earlier change 4aeec2da39fce4de9b07b694d59fd308ffb3d491\n\nInstead of returning 0-filled buffers after EOS from AudioTrack we do this\nwork in AudioOutput instead. That way the EOS signal (0 frames returned)\nis preserved in AudioCache which otherwise would lead to a heap size overflow\nfilling everything with zeroes.\n\nChange-Id: I7e07429ba887957a4340dd4b21eef4bba76248cd\nrelated-to-bug: 3514073\n"
    },
    {
      "commit": "554d0ea10f8ae13a2d71289ff1f4d8adf6a9e6dd",
      "tree": "25a05dd1963efbfb3ea942d3954c5192fb9d0f8e",
      "parents": [
        "36a58a544089e7d1abd83548c57f539db93f3688"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 21 16:28:04 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 21 16:34:02 2011 -0700"
      },
      "message": "Enable http-live support for https:// urls, fix a parsing issue.\n\nChange-Id: I2284e1d62babde7f739fba6a3cb4e2619f0e62f9\nrelated-to-bug: 4148291\n"
    },
    {
      "commit": "ed73246b32a725d00b0b7d7e171e5817d9f27a80",
      "tree": "fbece72e18da95325bc6022714633f242474724b",
      "parents": [
        "75a1ef8d14de25850a171ee80fc7f9a5b70611b5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 14 17:01:38 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 14 18:48:19 2011 -0700"
      },
      "message": "Add memory leak tracking/debugging code to drm server\n\nbug - 4099038\n\nChange-Id: I6c048eaf3d7f34bc144b8daaa5fdef1ed474af66\n"
    },
    {
      "commit": "9b3f1521b521fd7248632fed71a81423e479a523",
      "tree": "0d441152de3df130c3334494289badb20b65d857",
      "parents": [
        "0528bc77948e49bd75cfd4082fb8fef3a7238626"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Feb 24 14:51:45 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Mar 02 16:53:24 2011 -0800"
      },
      "message": "- To track the usage of all audio output devices\n- To track the currently used audio device\n- The devices are separated as speaker and other audio devices\n- Provide the collected data to battery application through pullBatteryData()\n\nChange-Id: I374c755266b5ac6b1c6c630400f4daf901ea8acc\n"
    },
    {
      "commit": "cc562a3576a6a8096626387472e05e8bee03352a",
      "tree": "86b53d7654e5e4a57d623dd616df57aa05801616",
      "parents": [
        "1beb48055208bca57c6bf9d26676f86386e3a5dc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 08 17:26:17 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 23 15:02:56 2011 -0800"
      },
      "message": "Bug 3438258 Add SurfaceTexture as MediaPlayer sink\n\nThis change enables the use of a SurfaceTexture in place of a Surface\nas the video sink for an android.media.MediaPlayer. The new API\nMediaPlayer.setTexture is currently hidden.\n\nThis includes:\n - New Java and C++ interfaces\n - C++ plumbing and implementation (JNI, Binder)\n - Stagefright AwesomePlayer and NuPlayer use ANativeWindow\n   (either Surface or SurfaceTextureClient)\n\nChange-Id: I2b568bee143d9eaf3dfc6cc4533c1bebbd5afc51\n"
    },
    {
      "commit": "d211f41f764fe81fe00b10a99b4b44cb84479cbe",
      "tree": "462cf2a7da5216c45c5f105dac33ef607f893972",
      "parents": [
        "25474a2230152700e5f7eb7e1495be40c6bd26a8"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Sat Feb 19 18:37:57 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Feb 22 22:42:05 2011 -0800"
      },
      "message": "- Add method in MediaPlayerService to collect and pull\n  codec usage (duration) for the battery app\n- Collect MediaPlayer decoding usage data\n\nChange-Id: I0ef4e32b6a041ba1fe73c19f9c67185c61d03965\n"
    },
    {
      "commit": "d6c421f1a0ae556d315159dff8a76e4a0e62e700",
      "tree": "81bd10042741ec51a47a46ea35e70e10250a68d3",
      "parents": [
        "b4242275095da96fe37176c13ee44ac3dd83dc3e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 16 09:05:38 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 16 09:19:40 2011 -0800"
      },
      "message": "Remove legacy, AwesomePlayer-based http live implementation.\n\nChange-Id: I455d0faa5612dcd4d2bb6f2b3c7b64a1caaabf69\n"
    },
    {
      "commit": "d7069ca0bc62a21321eef5e30f152ff6ba646e04",
      "tree": "91f6160b6ed676c4533ef3d0c66bfdeda8f5377e",
      "parents": [
        "1932fef94a14d0a1b86213864a2bcc690e0faa5e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 06 14:14:56 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 06 14:14:56 2011 -0800"
      },
      "message": "Use NuPlayer for HTTP live streaming playback by default.\n\nReversed the property logic, set media.httplive.disable-nuplayer to true to revert\n\nChange-Id: I1057940667aaab56bb75c9ea15c2cdcab736f3c6\n"
    },
    {
      "commit": "54e6649e4cac3475593f3acb7894837fa1dc61eb",
      "tree": "c8160f64420a90b870954b7dcc7aec8d3844bb66",
      "parents": [
        "d486375c148b54be209468d83311b981ef3258cc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 23 10:27:40 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 23 10:27:40 2010 -0800"
      },
      "message": "Squashed commit of the following:\n\ncommit eaeaa2672d4e0a82891493b2bde8bdd0c0e79a1b\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Dec 23 10:26:48 2010 -0800\n\n    Remove lowest bandwidth stream if using the legacy player.\n\n    Change-Id: I2f885e26344996de9152f8fda9fd6bdef89bf953\n\ncommit 7d652972615b2750fd8f1c21b9fab0e136df2b82\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Dec 23 10:14:36 2010 -0800\n\n    Don\u0027t clear the packet source\u0027s format for legacy discontinuities.\n\n    Change-Id: I9bd5a21b9bd28043ad38bd0658ccc8eda3c1079a\n\ncommit 2b18a45aac17cbfe1aa089d0f6510957d438dd64\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Dec 23 10:13:55 2010 -0800\n\n    Use NuPlayer for HTTP live streaming based on runtime property.\n\n    adb shell setprop media.httplive.enable-nuplayer true\n\n    Change-Id: I22738df3403985dc8e6992b1ab5da5747309f773\n\ncommit 50d899fb7b9ea52c3994b0a58e993998d926aeed\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 16:25:22 2010 -0800\n\n    Make ACodec a lot less verbose.\n\n    Change-Id: I94c7e499b61032321ffaf999f5ad2c913cde6a48\n\ncommit b19e1740cb4d02990a56844654b5d019987c6405\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 16:22:22 2010 -0800\n\n    Wait until we have fresh codec-specific-data before instantiating the decoders\n\n    after a discontinuity involving a format change.\n\n    Change-Id: I7bcf9b5ae3319f08bf8978a117e8ee5220902e37\n\ncommit 06428c006906c9099e430aface3b439ff1d36ecc\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 15:20:38 2010 -0800\n\n    Disable random seeks in the streaming tool for now.\n\n    Change-Id: Ie86fde422dcfc4b2c7a01be51a193fda9c88cd71\n\ncommit e19db68f3bea8a61c191f60f6940f30e3a0d5f1b\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 15:20:27 2010 -0800\n\n    Tweak HTTP live parameters.\n\n    Change-Id: If4b71e12485facc523a8a43d8213d0feb190daab\n\ncommit 1e9942791538c2256b579d96c6c04264b0d8b087\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 14:48:23 2010 -0800\n\n    Enable http live streaming through NuPlayer for http URLs containing the string m3u8\n\n    Change-Id: I1691fe12ae8f1507fe3673313959cd50bc324624\n\ncommit 4c33f96a6e499ee0efe0e70b687094430cb7c1c0\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 14:40:27 2010 -0800\n\n    Support for HTTP live streaming in NuPlayer.\n\n    Change-Id: Iacba1c3ebaeb8d3b972185deaf4cff18c8009c54\n\ncommit ddf705ce553708bc5b13d89a878484cf839bd674\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 13:42:47 2010 -0800\n\n    StreamingSource now a subclass of abstract NuPlayer::Source\n\n    Change-Id: Ia6c7c639628910b9d1f37decc55da48b07a70de3\n\ncommit 9e04a8406b1882a8e3fdeb7b4d52db5ae70b970a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Dec 22 13:33:52 2010 -0800\n\n    Refactor media data sourcing to NuPlayer::Source.\n\n    Change-Id: I1db9fb08c4e527bf7b19c29978cf342c2b0a0bc9\n\nChange-Id: I9610a097481dda58f22142eacda3ac2dba0b63f9\n"
    },
    {
      "commit": "a15874665fa785c82afa9f2e8cb3512470c297cb",
      "tree": "0a2d5bc416eb12e5d4c4c21dfb4e7111389b7a8c",
      "parents": [
        "ebf90ac7a82c9a0fa5c02702ccba36bc5082240f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 15 15:17:42 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 15 15:18:26 2010 -0800"
      },
      "message": "Initial support for a true streaming player for mpeg2 transport streams.\n\nChange-Id: I153eec439d260a5524b21270e16d36940ec3161a\n"
    },
    {
      "commit": "52b52cdfb7502d5a0fd7bba21d1daa3e36a54e42",
      "tree": "040a33d75806c53592501343999f16c4c3cf114c",
      "parents": [
        "57914381a80c9f19cf5227b4af9e822fa0c74ea9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 23 11:41:34 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 23 14:46:13 2010 -0800"
      },
      "message": "Support streaming data across binder boundaries.\n\nChange-Id: Ifbac61406dcb81343765f99ccba08bd90f9274cc\n"
    },
    {
      "commit": "c23dabfb20f1059f42b1fb80956ccc77c72e39e0",
      "tree": "f9903f4aa09e2ffb2e9723f39c6872bc76284afe",
      "parents": [
        "af376a5427424a560a0d1a5924c527715762672a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 16 13:05:53 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 16 13:05:53 2010 -0800"
      },
      "message": "Remove all traces of legacy renderer support in stagefright.\n\nChange-Id: I17b8e0dbf53fca37c96830c41131b4bc0c24ca6d\n"
    },
    {
      "commit": "8ec2d9add9f25198b9ea7023c7c772ae17f72ea4",
      "tree": "43a85c40ed38a3806ac4f7890dc9069134fa2a44",
      "parents": [
        "98d50a0be8a61fa1d093136b57bc5712be795c2b"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Nov 10 18:42:40 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Nov 15 08:36:42 2010 -0800"
      },
      "message": "Remove legacy PV stuff\n\nChange-Id: I60ffea7c65592df4b3a80c590c863f1f79b371fd\n"
    },
    {
      "commit": "69b8d69aadbf0e795f1a1e1adc82c78cf0b9959f",
      "tree": "6b48f22c3e0bd47427e97b13502e5f8cadcb0b90",
      "parents": [
        "7b9652b66b76b90fd95952c42a4f82965ed80d72"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 29 12:00:20 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 29 13:20:06 2010 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit 0d5694ba2d399dd0869532a4d6256448185a1be0\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:59:23 2010 -0700\n\n    suspend() and resume() methods on VideoView are back but don\u0027t do anything.\n\n    They need to be back because they were public before.\n\n    Change-Id: Iddfd1021ffcf341f26e8d55ba761fd33701e2425\n\ncommit 16192891ed7d349ee97e47d1729d20a2d0d247b8\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:47:05 2010 -0700\n\n    Revert \"New API on VideoView widget to suspend/resume a session. Do not release the MediaPlayer client for video suspending/resuming.\"\n\n    This reverts commit 2e1818a4d16c3309660f27286c77d8d1eee95a25.\n\n    Conflicts:\n\n    \tapi/current.xml\n\n    Change-Id: I68dd1d05871044faf3f832d0838aa40bc7f890e5\n\ncommit 8f934dc1a3ae4e60f0790fcf97671e063fa20fad\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:44:16 2010 -0700\n\n    Revert \"Release mediaplayer if the current state is not suspending. Fix for bug 2480093.\"\n\n    This reverts commit efb882cf75eef39ecaf9f8920ed302a019fa629f.\n\ncommit f2ed03550887986f39d36b5dabcd9e919949c7cf\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:44:08 2010 -0700\n\n    Revert \"Release MediaPlayer if suspend() returns false.\"\n\n    This reverts commit 047212fd4ea360675e94d3ce83c7f5544f65b268.\n\ncommit 441ecce678bd24e9660a72c8627b5bd94433ff8b\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Oct 29 11:40:46 2010 -0700\n\n    manually.\n\n    Change-Id: I4fdd43c9f7c8b3eedddb31a196da4984e1c58e87\n\nChange-Id: I60d4b10e7a9e4ed8d9a796f1711618f557eb6e89\n"
    },
    {
      "commit": "329430a54e152ad1f5e0003194728988661788bb",
      "tree": "0a77d3d71fc858ae611319eefd27a08e7c9ed2c3",
      "parents": [
        "438a17292a3edf779eb7aef5966c8c9e034235a8",
        "4f21e517d09b9d793d20d64547df330fba705b3c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Oct 10 16:06:04 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 10 16:06:04 2010 -0700"
      },
      "message": "am 4f21e517: am b37fcbfd: Merge \"Added getter for session Id to AudioSink\" into gingerbread\n\nMerge commit \u00274f21e517d09b9d793d20d64547df330fba705b3c\u0027\n\n* commit \u00274f21e517d09b9d793d20d64547df330fba705b3c\u0027:\n  Added getter for session Id to AudioSink\n"
    },
    {
      "commit": "b3bdf3f0086f1d921720f6dc92cabc7b6f2ab63e",
      "tree": "21f02868e4a39ef36117dc7e0724e0ad5adf1247",
      "parents": [
        "36a182870527f1d71f482e9a280bc818a4609cb6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 07 18:23:03 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 07 18:23:03 2010 -0700"
      },
      "message": "Added getter for session Id to AudioSink\n\nAdded a method to expose the audio session id at AudioSink interface\nso that the AudioPlayer in stagefright can retrieve it.\n\nAlso:\n- Fixed audio effect send level not being initialized in mediaplayer.\n- Fixed compilation error when LOGV is enabled in mediaplayer JNI\n\nChange-Id: I4bb55454fd63d646e0e677692d737c4843fb05fb\n"
    },
    {
      "commit": "762665094fafc3bbae3ef4ecaa531611e058b30f",
      "tree": "365932876c79ff4ca03864a697451fb74170e2a4",
      "parents": [
        "5936c072b66739a6ca0beebc70e8426f6e7b149b",
        "7dff9dfd6176fad1318a27f16318561453a429f0"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Sep 28 13:19:55 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 28 13:19:55 2010 -0700"
      },
      "message": "am 7dff9dfd: am 269dea1c: Merge \"Fix media.player dumpsys to output open/mapped files correctly. Bug 2866669. The dump function whitelists several directories as filters to the output. The mount point changed for SD card in Froyo, and we started filtering files that w\n\nMerge commit \u00277dff9dfd6176fad1318a27f16318561453a429f0\u0027\n\n* commit \u00277dff9dfd6176fad1318a27f16318561453a429f0\u0027:\n  Fix media.player dumpsys to output open/mapped files correctly. Bug 2866669.\n"
    },
    {
      "commit": "124a346c7ae24a42048ab1a42f001832f9de9574",
      "tree": "43c1df490e434ca710c06c0dd2aa5468967b8f96",
      "parents": [
        "68ef7f3c3a8deb0e14b0b6325876b23cecc191b3"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Sep 27 16:55:18 2010 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Sep 27 17:04:05 2010 -0700"
      },
      "message": "Fix media.player dumpsys to output open/mapped files correctly. Bug 2866669.\nThe dump function whitelists several directories as filters to the output.\nThe mount point changed for SD card in Froyo, and we started filtering files\nthat were open on the SD card. This fix changes the filter for the SD card,\nand adds the directory for data files as well.\n\nChange-Id: I61b67c3d11d93dbd530e8b3566000e79bc037137\n"
    },
    {
      "commit": "2527da00e2dc0f6f52e85abc6b4a09611a8ec16d",
      "tree": "8df2afb627ddf7a224fe83db15e087c28284b1a4",
      "parents": [
        "9d01dcbdf2d747cf7d434c12954b672245e3a986",
        "9aa05ec2cd6bc592074c7bd08d22db46649c7f12"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 30 13:30:35 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 30 13:30:35 2010 -0700"
      },
      "message": "am 9aa05ec2: am 681c5ff2: Merge \"Reverse the default setting of media.stagefright.enable-{rtsp,record} in preparation for building without opencore.\" into gingerbread\n\nMerge commit \u00279aa05ec2cd6bc592074c7bd08d22db46649c7f12\u0027\n\n* commit \u00279aa05ec2cd6bc592074c7bd08d22db46649c7f12\u0027:\n  Reverse the default setting of media.stagefright.enable-{rtsp,record} in preparation for building without opencore.\n"
    },
    {
      "commit": "30cfa20dfc67583411db58674d3d97bc42fa7951",
      "tree": "45c48a66a2624d085fa8bfd1a421ce771e4da55e",
      "parents": [
        "f6639c46e83a1ccab7b293192c208091d17c61be"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 30 12:46:12 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 30 12:46:12 2010 -0700"
      },
      "message": "Reverse the default setting of media.stagefright.enable-{rtsp,record} in preparation for building without opencore.\n\nChange-Id: I1ca6bd8faba0185f9694f9dc04d2b3e6a7ab5ac3\nrelated-to-bug: 2370115\n"
    },
    {
      "commit": "e3c01832fc741e9908f047d86cd40db1ea5d78c8",
      "tree": "6765bad7dbcf95dc5ca28ba5b2de5f7a70047712",
      "parents": [
        "ed23e3b87906d367304dbf5bd49ed17448d5d684"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 16 08:49:37 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 23 12:30:24 2010 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit 35cc68814a9537c31fde146e171e7b0bbdfe211e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Aug 16 08:48:42 2010 -0700\n\n    Only enable support for yuv to yuv conversion on passion, where it\u0027s available, use the slower yuv-\u003ergb565 path everywhere else.\n\ncommit d8ac5a8814103e60d11d2acf61997fc31a1dc58d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Aug 13 13:56:44 2010 -0700\n\n    The software renderer takes over all rendering, converting from yuv to yuv if possible and rgb565 otherwise.\n\ncommit 684972074b74318bdcb826ed9b5b0864d2d2e273\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Aug 13 09:34:35 2010 -0700\n\n    A first shot at supporting the new rendering APIs.\n\nChange-Id: Iea9b32856da46950501f1a700f616b5feac710fd\n"
    },
    {
      "commit": "7070b36549d511d6627538c73dfbab23fbae5b43",
      "tree": "4a489b863b322e28f7047d7873b17a77056f3b41",
      "parents": [
        "d7514ec6eb17d262d6f9605a2c2f245b7ad7c0b9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 16 07:43:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 21 06:28:01 2010 -0700"
      },
      "message": "Added support for auxiliary audio effects to AudioTrack and MediaPlayer.\n\nAdded methods to AudioTrack and MediaPlayer java classes to enable use of\nauxiliary audio effects. The effect can be attached and detached by specifying its\nID and the send level controlled.\n\nChange-Id: Ie74ff54a453096a742688476f612ce355543b6f3\n"
    },
    {
      "commit": "929642ee003895b6e4e85ad7e43c7c6f01b29020",
      "tree": "94498d866ffcb165ae3778ab0e5ae193257f71e4",
      "parents": [
        "fd84f97af4b44d54bba53bb85b31a6dbce07f6e2"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 08 11:16:11 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 08 21:25:55 2010 -0700"
      },
      "message": "Add runtime dumpsys support for media recorder client\n\nChange-Id: I4c8a81720f3be2db54678a7e84fe12849255046b\n"
    },
    {
      "commit": "df9b81ced437b11f8a3fcf4ba3ea6af703d121e2",
      "tree": "c80b989df744ea74f62c800a8848813174792cc2",
      "parents": [
        "31e0ffe8444b70500cac319da084c4c45e62aca2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 02 08:12:41 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 11:00:28 2010 -0700"
      },
      "message": "Added Visualizer effect.\n\nThe visualizer enables application to retrieve part of the currently playing audio for visualization purpose.\nIt is not an audio recording interface and only returns partial and low quality audio content as a waveform or\na frequency representation (FFT).\n\nRemoved temporary hack made in MediaPlayer for animated wall papers based on audio visualization (snoop() method.\n\nThis commit also includes a change in AudioEffect class:\n - the enable()/disable() methods have been replaced bya more standard setEnabled() method.\n - some fixes in javadoc\n\nChange-Id: Id092a1340e9e38dae68646ade7be054e3a36980e\n"
    },
    {
      "commit": "8d65dd26530c7559082bd738cf930e2806158ab2",
      "tree": "5913164705ac85e30dc983867bc7d4ae31418525",
      "parents": [
        "1e4b9f3936d6f357e89360293e05a0e16d5fa440"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 16:40:57 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jun 23 16:40:57 2010 -0700"
      },
      "message": "Remove most stagefright property overrides, remove VorbisPlayer and VorbisMetadataRetriever as this functionality is now provided by stagefright.\n\nChange-Id: Ieafe75a4550c273ad59b4518d7cd4c0fce0f7cce\nrelated-to-bug: 2370115\n"
    },
    {
      "commit": "619346f902241736d933657a4fe10f10c50a1ba8",
      "tree": "f80b46008c2d457def70dfab095a18d6eb61fc09",
      "parents": [
        "d1559d6b2db1d7e1718a15dc43a82450de2934db"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 21 09:27:30 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 22 17:14:04 2010 -0700"
      },
      "message": "Added support for audio sessions in MediaPlayer and AudioTrack.\n\nAudio sessions are used to associate audio effects to particular instances (or groups) of MediaPlayers or AudioTracks.\n\nChange-Id: Ib94eec43241cfcb416590f435ddce7ab39a07640\n"
    },
    {
      "commit": "7a747b8e0dadf909ea4ac0b67fd88fc14b4eb3f8",
      "tree": "fc5d4df0f1e22027e927fe3c0a609ab46c97ba6e",
      "parents": [
        "2cbff0edb67e47fb75f4142dce7ba104c6336fc7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 15:19:40 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jun 07 15:34:45 2010 -0700"
      },
      "message": "Initial checkin of preliminary rtsp support for stagefright.\n\nChange-Id: I0722aa888098c0c1361c97a4c1b123d910afc207\n"
    },
    {
      "commit": "21a534d955c8d45c50dafaf05cf2afbb8cf3696c",
      "tree": "98cc6ff98a60eef761cb64e9acc157e8fb2ee204",
      "parents": [
        "9f0810e8c72cf3c694a5f1cf608b26ed490d9bd6",
        "1d628c5d3dd7998b29c339292a2dc391015d0782"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 14 09:46:11 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 14 09:46:11 2010 -0700"
      },
      "message": "am 1d628c5d: merge from open-source master\n\nMerge commit \u00271d628c5d3dd7998b29c339292a2dc391015d0782\u0027 into kraken\n\n* commit \u00271d628c5d3dd7998b29c339292a2dc391015d0782\u0027:\n  Accept media files by file extension in case insensitive manner.\n"
    },
    {
      "commit": "1d628c5d3dd7998b29c339292a2dc391015d0782",
      "tree": "e520df875144c2c0c824d4d5a858a2acc31df566",
      "parents": [
        "9167ba50e4d7e08e02119d9c4a0f0392296cc3f1",
        "75e181b633ec94dde4a5a62d28040289ad645e74"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 14 09:44:36 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 14 09:44:36 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: I934cf85c4673f9ca3a9549c2074907ad572310f4\n"
    },
    {
      "commit": "ce0bd71735532f53014cc299f684302f357c471a",
      "tree": "740a35865bd0697f3701d28e6d35237875d9a293",
      "parents": [
        "ebad36db56017000ce8b1eb813537d90248e3ad0",
        "8ea45aad100ee25067b2e83703454c71a968ba4f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 14:30:34 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 04 14:30:34 2010 -0700"
      },
      "message": "am 8ea45aad: am e083d0a2: Merge \"Support for Ogg Vorbis decoding in stagefright.\" into froyo\n\nMerge commit \u00278ea45aad100ee25067b2e83703454c71a968ba4f\u0027 into kraken\n\n* commit \u00278ea45aad100ee25067b2e83703454c71a968ba4f\u0027:\n  Support for Ogg Vorbis decoding in stagefright.\n"
    },
    {
      "commit": "eb5eef38198b38d97b573be550657ba64ccba299",
      "tree": "ab37f77be5d5bf436f50789a134e74d6c23fad0e",
      "parents": [
        "3bb5e4d322a6a7cda45e868dbe307c2dc3cf688e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 11:46:42 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue May 04 11:58:16 2010 -0700"
      },
      "message": "Support for Ogg Vorbis decoding in stagefright.\n\nSet the magic property media.stagefright.enable-vorbis to true to use the new implementation instead of the standalon vorbis player for file-based playback. HTTP streaming of vorbis content will always go through stagefright.\n\nChange-Id: Ie3843a99fadb22372f89540d0f8d65196e0c2af8\nrelated-to-bug: 2654400\n"
    },
    {
      "commit": "fff02afa01afafa6edeb0cc547a8e5e19f04cd98",
      "tree": "78c4c582f34759225ce2cecb41a42461f1dc763b",
      "parents": [
        "eaa8b1a7dade2b0f57ec200b0e22b6f0ddf7b860",
        "6852b198fbedd9378ed79ca6528a4d6f33b0b677"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 14 12:11:12 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 14 12:11:12 2010 -0700"
      },
      "message": "am 6852b198: am d3d445b1: Merge \"Use PV_PLAYER to handle RTSP streaming\" into froyo\n\nMerge commit \u00276852b198fbedd9378ed79ca6528a4d6f33b0b677\u0027 into kraken\n\n* commit \u00276852b198fbedd9378ed79ca6528a4d6f33b0b677\u0027:\n  Use PV_PLAYER to handle RTSP streaming\n"
    },
    {
      "commit": "42d66573ffd9338ba5a5664ac14f2aa1bf15bff4",
      "tree": "a6d7a6e9415fc76be070eb1d49a12e098d80e028",
      "parents": [
        "b2212464a3bc4103a9e5e88602d1097c835d7949"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Apr 13 21:33:26 2010 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Apr 14 08:57:14 2010 -0700"
      },
      "message": "Use PV_PLAYER to handle RTSP streaming\n\nbug - 2594865\n\nChange-Id: Ice5b89b1d53bbc4da033892fe545bdf51ac7267f\n"
    },
    {
      "commit": "ab88ea9503e0d84d739e6f232ebe740a5b8959a8",
      "tree": "245f98f12189985ad07cec589ee8c7fee9420256",
      "parents": [
        "b39c3aa75311d2a3ea0e8b00900e476261d1d7f7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 05 13:25:12 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 09 13:44:28 2010 -0700"
      },
      "message": "Remove legacy NO_OPENCORE code bypass from MediaPlayerService.\n\nChange-Id: I72db73c91673e0d7f1090e3b033ae915337dc16e\n"
    },
    {
      "commit": "ebcc51d39c340f6fdafa828bb0fe715ffaa8658d",
      "tree": "b7dbf0fff30be95c14d8978f5a979ec8270b22a6",
      "parents": [
        "239750ff8ee5424d792cb21a99311d95589cc8e1"
      ],
      "author": {
        "name": "Atsushi Eno",
        "email": "atsushieno+android@gmail.com",
        "time": "Fri Mar 19 23:18:02 2010 +0900"
      },
      "committer": {
        "name": "Atsushi Eno",
        "email": "atsushieno+android@gmail.com",
        "time": "Fri Mar 19 23:18:02 2010 +0900"
      },
      "message": "Accept media files by file extension in case insensitive manner.\n\nChange-Id: I8e246010c96802ae87960797607fc8f8f2ab6031\n"
    },
    {
      "commit": "6c26fe4e8e224c4360a4291742cd4f7f12f69e82",
      "tree": "4e1af1326fa6d525959a66053ca241b2cea9864a",
      "parents": [
        "16433e2fe309f759fec3266db56232f55114beb2"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Mar 02 12:56:37 2010 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Mar 02 12:56:37 2010 -0800"
      },
      "message": "Fix build. I screwed up a merge.\n"
    },
    {
      "commit": "16433e2fe309f759fec3266db56232f55114beb2",
      "tree": "2ad865677ad3d7d3efd0c4d67b6e206172a7bf45",
      "parents": [
        "14b60e747cdf16b79bb755b42dd766348c4f1880"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon Mar 01 19:29:58 2010 -0800"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Mar 02 12:35:20 2010 -0800"
      },
      "message": "Add locking to signal in AudioCache::notify(). Bug 2317844.\n"
    },
    {
      "commit": "3d23a61588e0aefc80cda44ed323ea205f24ebbf",
      "tree": "b5be000a7507a3039f67659574898b4e67905723",
      "parents": [
        "c8f22299b19ace4026427e5bf6bd85089e86b198"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 25 10:06:32 2010 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 25 10:06:32 2010 -0800"
      },
      "message": "Add some space and total memory amount to the memory dump from the media server process.\n"
    },
    {
      "commit": "406a18b5b3d53466a3e03b66413ff3a50243a6a8",
      "tree": "e9585ff0cf444ac6f4e433992cc4f60bf35f7c1c",
      "parents": [
        "5706329cf42db714582fa698eb9f408350276f16"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 18 16:45:13 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 18 16:45:13 2010 -0800"
      },
      "message": "Implement legacy behaviour for MediaPlayer\u0027s behaviour of starting from the start of the media on a start() call instead of resuming at the current position, if previously reached the end of the stream. Also properly report number of frames played to audio flinger. Finally, delay spawing the queue thread until actually used.\n\nrelated-to-bug: 2453220\n"
    },
    {
      "commit": "fbb3885024ac9c90f322b6259d7e519c8927e6ff",
      "tree": "47dece4ffda221bd9cf6e13852ac9fb37b78e0f4",
      "parents": [
        "965e37ec88609c36a3c5461ece459a96abb6f7ca"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 12:35:58 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 12 12:44:10 2010 -0800"
      },
      "message": "New API on java\u0027s MediaPlayer to suspend/resume a session.\n\nrelated-to-bug: 2231576\n"
    },
    {
      "commit": "6ed937ebe99088b5671a645060340a558b02fefb",
      "tree": "12f5b743bfee5433ebdde83ce8fb3c93c205fe49",
      "parents": [
        "5b5f8652dac5416461332c1b23dc3d5ba315b074"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 09 16:59:18 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 10 10:20:34 2010 -0800"
      },
      "message": "Implementation of stagefright-enabled MediaPlayerService::decode functionality\n\nrelated-to-bug: 2359268\n"
    },
    {
      "commit": "256430093679e1d62b54fb0c852126e54d162f6f",
      "tree": "028c49d18e0e77bc69f8967dda61619ee324f7a2",
      "parents": [
        "75d76bcf52587e4bfe00b7377d100510a3489674"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 28 11:19:57 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 28 11:52:43 2010 -0800"
      },
      "message": "API Extension: Support for optionally specifying a map of extra request headers when specifying the uri of media data to be played.\n\nrelated-to-bug: 2393577\n\nOriginal change by Andrei Popescu \u003candreip@google.com\u003e\n"
    },
    {
      "commit": "0986e7907ffc8387b04fb201e285784bcd11b9b7",
      "tree": "96733235d1e92e0f329ded11b9b55c0d67a4ca83",
      "parents": [
        "7d3a558b9ebf2256517ec99cd09c066cc7dbc92c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 19 17:37:09 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 26 18:40:39 2010 -0800"
      },
      "message": "Fix issue 2285561: New AudioFlinger and audio driver API needed for A/V sync\n\nAdded getRenderPosition() API to IAudioFlinger to retreive number of audio frames\nwritten by AudioFlinger to audio HAL and by DSP to DAC.\n\nAdded getRenderPosition() API to AudioHardwareInterface to retreive number of audio frames\nwritten by DSP to DAC.\n\nExposed AudioTrack::getPosition() to AudioSink() to make it available to media player.\n\nRemoved excessive log in AudioHardwareGeneric.\n"
    },
    {
      "commit": "2cb5c9c633c7f8ffea10360fc029bc3e88172ca1",
      "tree": "470d9201906176377eb55f88821b5e900dc9fc05",
      "parents": [
        "703f0614f3111957c0bda4e3595c10c413255894"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 20 16:11:15 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 21 10:31:05 2010 -0800"
      },
      "message": "Special-case .wmv and .wma metadata retrieval and playback to use PV if available.\n\nrelated-to-bug: 2381874\n"
    },
    {
      "commit": "e274db1efd73ec8444fa70b64a226d2efa71af87",
      "tree": "9a7e61105361f837d9bbfcc564b68090e97439c6",
      "parents": [
        "aee3c6394a367abf283936cb8b8bd85ed028c050"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jan 12 09:23:54 2010 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Jan 12 10:27:04 2010 -0800"
      },
      "message": "b/2353646\nFix music visualizations to also work with audiotrack callbacks, which\nstagefright uses. This slightly changes the way the data is stored,\nsince before we were relying on the buffers being written always\nbeing at least 4K, whereas the callbacks are generally for smaller\namounts of data. Now we append all the data to a big circular buffer,\nthen return chunks of that buffer for visualization. When there are\nmultiple things playing at the same time, this will give the wrong\nresult, but (1) that was the case before as well, and (2) will be\nfixed once we start visualizing the mixer output instead of the\nmixer inputs.\n"
    },
    {
      "commit": "67aee053ba449522e65346a5095a571edcf676ea",
      "tree": "03129374e463e1aa89ae9ae5bafaaaf048a5b7e7",
      "parents": [
        "57d2c3ad1929f0eff7e0abc47c28c09f32ac5494"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 04 17:27:37 2010 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jan 05 09:27:02 2010 -0800"
      },
      "message": "Use stagefright for http streaming if the right property is set.\n"
    },
    {
      "commit": "6a3a018f91c51b5cc223d1d081144354362f87b5",
      "tree": "39ba692cbfc96f46d66abc30179b35b552c5bbb8",
      "parents": [
        "3ea664640d0dd08cf89fd38f7aa00756651f4830"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 17 13:31:13 2009 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 17 13:51:37 2009 -0800"
      },
      "message": "Disable HTTP playback and metadata support in stagefright, use PV instead.\n"
    },
    {
      "commit": "9472b35ba190b24f811ff7b025a93b2023dbd58d",
      "tree": "c978906283fd3e1a31970643debcaad98d395cfa",
      "parents": [
        "221fa910301606f8374d97e538af11c3416a76a2",
        "14f8940472217e8b0164d8f213679710d623d528"
      ],
      "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": "14f8940472217e8b0164d8f213679710d623d528",
      "tree": "64434e0d6949d3545490e90f0fb37bb0165971a3",
      "parents": [
        "d3cfb1bd84affbf740256f5e9804c93ef7722b37"
      ],
      "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": "b904c2a452c43c0de591159f159d3b0e521e466e",
      "tree": "ff28ae7ee331ab4215a0d169503e33acf5f51042",
      "parents": [
        "b70da2bbc594b093472d5333386d79f677fd9e01"
      ],
      "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": "dcaa220ff5f360a29ac8be0eb12a8238ecaa080f",
      "tree": "8af64f607838fa0af5c45057b518c76b552cb0a4",
      "parents": [
        "818a9cf827f282addbf7c8ee23534e08a3aaa358"
      ],
      "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": "1166ff76eb3dbb5304dc40b3056e48c2c9dc7577",
      "tree": "ad80efa5208bb478a79eef4e20a9bdc3f56dba90",
      "parents": [
        "d31b0e44af38594691440ba1ab5150b1a8f8480b",
        "1d9246e8bb8de624e14c55dce57e93da18cfd7a8"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 02 14:41:28 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 02 14:41:28 2009 -0800"
      },
      "message": "am 1d9246e8: Merge change Id095e180 into eclair\n\nMerge commit \u00271d9246e8bb8de624e14c55dce57e93da18cfd7a8\u0027 into eclair-mr2\n\n* commit \u00271d9246e8bb8de624e14c55dce57e93da18cfd7a8\u0027:\n  Make sure the visualization stops immediately when sound stops, instead of continuing for a fraction of a second.\n"
    },
    {
      "commit": "758613de2829f92122d3b684733a5fe815e488c1",
      "tree": "05e0e3e1ffdf2145d97eb8c7a0dcf2f2bb03ff48",
      "parents": [
        "9efd523c4611c0cf10e712453a699c083a01064c"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 02 13:52:11 2009 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 02 13:55:04 2009 -0800"
      },
      "message": "Make sure the visualization stops immediately when sound stops, instead of continuing for a fraction of a second.\n"
    },
    {
      "commit": "9cf962809dc5d26d91fd7e9bbfeb7266867216d1",
      "tree": "55d3ff40f83cb7dd872583cd9326a085ef8f7065",
      "parents": [
        "af7d2dda809be2ce43b4b892509648857f09f5e3",
        "3a8141416a0b1d517d4729eba4bcf914c468e20b"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Oct 29 19:35:16 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 29 19:35:16 2009 -0700"
      },
      "message": "am 3a814141: Merge change Iee0486e2 into eclair\n\nMerge commit \u00273a8141416a0b1d517d4729eba4bcf914c468e20b\u0027 into eclair-mr2\n\n* commit \u00273a8141416a0b1d517d4729eba4bcf914c468e20b\u0027:\n  Dump media recorder PID in dumpsys media.player, and fix minor bugs.\n"
    },
    {
      "commit": "608a2630bb1eec63431cf065a76962e138aa1dc2",
      "tree": "33a262ec8a5dff421de759f8aadf6c8be28a46e5",
      "parents": [
        "fae288c7987f96df05e91ed154e934de267098be"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Oct 29 15:46:37 2009 -0700"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Thu Oct 29 15:46:37 2009 -0700"
      },
      "message": "Dump media recorder PID in dumpsys media.player, and fix minor bugs.\n"
    },
    {
      "commit": "27123468b33cb61a1600079d583302b1b078b2ee",
      "tree": "ab96854195412950e0ae709247369f05b9fdd226",
      "parents": [
        "bb107bd6f7981cd2b2e31a0afc6f6bf2a6d5118f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 27 15:50:04 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Oct 27 15:50:04 2009 -0700"
      },
      "message": "Use a simple replacement for String8 that allocates its storage beforehand to avoid reentering the heap while we\u0027re examining it (leak checker).\n"
    },
    {
      "commit": "784202ea115603004b067aacf6a57bf5d2a7d53b",
      "tree": "0e32ad4b315f936a80ac1af63ae2e919e6ffe090",
      "parents": [
        "d21b725627e68b8ffcae38729196e8c1bd5d0d15"
      ],
      "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": "c39d2e3c012fb96999991e30659a474f9f30f789",
      "tree": "f3312cf6fee6b373f0e6486de4013e986eba552d",
      "parents": [
        "52cde7279bad58285704498eea57bdaf9e595b49"
      ],
      "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": "999f1aebf780d0efd55554ac0198b1c6182bb9c0",
      "tree": "82a1732452c375388526c9a879e4b3c35b379d77",
      "parents": [
        "b1b289a01d20a3a2e08775d31994f0abca996a63"
      ],
      "author": {
        "name": "Jianhong Jiang",
        "email": "jianhong@google.com",
        "time": "Tue Sep 29 23:12:39 2009 -0700"
      },
      "committer": {
        "name": "Jianhong Jiang",
        "email": "jianhong@google.com",
        "time": "Tue Sep 29 23:12:39 2009 -0700"
      },
      "message": "Remove audio latency fudge factor 96 msec.\n"
    },
    {
      "commit": "2aa39c45072537739873ae6d0d79264fc5fb7349",
      "tree": "2a88f100e7dee5787d4b76dee9589d539e143829",
      "parents": [
        "6026a514248f0c603d0e8c4a3f542abab3fa1509"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 11 09:54:52 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 11 09:54:52 2009 -0700"
      },
      "message": "Only build the \"full\" stagefright (including MediaExtractors and MediaPlayer) if BUILD_WITH_FULL_STAGEFRIGHT define is set (to true).\n"
    },
    {
      "commit": "392ff3b5296e0cee8d5db386d2ef72e2719890c8",
      "tree": "5d533efc93f3d87e62beb4eea7a5d0eff66dc338",
      "parents": [
        "0b98c944c6bac98d95c93916cde31f841b44d9aa"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Sep 06 14:29:45 2009 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Sep 08 11:04:53 2009 -0700"
      },
      "message": "Add basic metadata retrieval support for midi, ogg, etc.\nBug 2050320\n"
    },
    {
      "commit": "0d596d4724c7da0719b0621648216f0906e774dd",
      "tree": "0901bcef626ab13e797f82c09004d36166276c42",
      "parents": [
        "5d1e4c4db0e445835e89cf223cebb9fe09304012"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 07 09:30:32 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 07 10:40:34 2009 -0700"
      },
      "message": "Build the stagefright library by default.\n"
    },
    {
      "commit": "8a432776d003247c12222d8dd6a30ea4621aa2d0",
      "tree": "8db21aae6c3ab309cd7502c12ecb9c184a457966",
      "parents": [
        "b3c82efb4725e959a50dca3f7ff50d1d99a059b4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 28 10:03:13 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 28 11:28:14 2009 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit 374ea382ee3a9e3ce17e4c6357fc40d02e362810\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jul 28 09:54:13 2009 -0700\n\n    PV\u0027s OMX implementation now uses (spec-compliant) microseconds instead of milliseconds in buffer timestamps.\n\ncommit 8d02f8ab5d7b022ad4ad34db2a9bdeea6ce2acfe\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jul 27 14:24:26 2009 -0700\n\n    Support for using an overlay for video playback on TI hardware.\n\n    Appears to be currently constrained to CbYCrY 16-bit colorspace.\n\ncommit d17f321cb4b15c1fea378f33a7ef5998f23dd0fc\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jul 27 09:45:38 2009 -0700\n\n    Added \u0027--audio-only\u0027 commandline option to stagefright tool.\n\ncommit d8beef6be5c668c46451446d87e622933371cd75\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Jul 24 13:35:00 2009 -0700\n\n    Generalize the various workarounds for OMX nodes with their own unique interpretation of the spec.\n\ncommit c7dfd53eeadf8ed5a39bf2b19b014dcd62f3324d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Jul 23 16:06:36 2009 -0700\n\n    Fixed erroneous TI AAC decoder behaviour wrt shutdown.\n\n    The AAC decoder appears to not return out buffers on an Executing-\u003eIdle transition, implemented a workaround that does a flush on all ports followed by the Executing-\u003eIdle. Oh, and flush with OMX_ALL doesn\u0027t properly work either. Fun.\n\ncommit d6377282e75060881336578f166f9c7feacf3f8f\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Jul 23 14:06:50 2009 -0700\n\n    Apparently the \"channels\" parameter in AudioTrack\u0027s constructor no longer counts channels but is a bitmask of enabled destinations, update the code accordingly.\n\ncommit ff698c79e851a2e57d362e9c3a09828af4048087\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 22 16:54:44 2009 -0700\n\n    Fix MPEG4 decoding using TI\u0027s hardware decoder that I broke earlier...\n\ncommit 2ef78bb87cd856eb7f0b3d7dd68782a8650c12bf\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 22 15:43:18 2009 -0700\n\n    Now that the qcom decoder properly advertises its own custom colorspace, update dependent code to reflect this fact.\n\ncommit bbaec96910727080fd7c8a6907c04facb9f5220f\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 22 14:32:03 2009 -0700\n\n    Finishing up previous, incomplete change.\n\ncommit 76f14a1ae816b6f434771f8d12bdad81196f351e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 22 14:25:17 2009 -0700\n\n    The TI video decoder now properly decoder AVC/H.264 content.\n\ncommit e106130d8c100d5c94603e43864a7a93cca10252\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 22 08:56:04 2009 -0700\n\n    Experimental support for the TI H.264 decoder, various modifications to OMXDecoder, non-functional still.\n\ncommit 241c3062dec3447db1a1ee74558cb4b9098fc404\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jul 21 12:13:09 2009 -0700\n\n    Enable TI hardware OMX decoders (except for AVC/H.264 which still has issues).\n\n    This particular set of OMX nodes does not appear to properly return our buffers when sending the \"disable\" command on a port. Rather it reqires manually flushing that port and _then_ disabling it instead.\n\ncommit 1c34506a46e32ce25f2a86f3b4250dcfc037356a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jul 21 08:51:35 2009 -0700\n\n    Make it simpler to switch between the stagefright player and PVPlayer.\n\ncommit 249c6de05671d403f8dd51f095d49bf190430c9c\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jul 20 14:38:15 2009 -0700\n\n    Prepare to use soon-to-be-available hardware decoders in the OMX decoder.\n"
    },
    {
      "commit": "a553c25b33c99b345cf1c8688f8df0ed8df14e5a",
      "tree": "025c461b13e66ad0ceac8d0f8d9b13fd88ae168a",
      "parents": [
        "ebd7bc54028949619bbf3fa5ed6c1188f588c230"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 17 12:17:14 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 06:03:39 2009 -0700"
      },
      "message": "Fix issue 1795088       Improve audio routing code\n\nInitial commit for review.\nIntegrated comments after patch set 1 review.\nFixed lockup in AudioFlinger::ThreadBase::exit()\nFixed lockup when playing tone with AudioPlocyService startTone()\n"
    },
    {
      "commit": "bc7269278042e448299c2e80e4dbb16fed05791d",
      "tree": "5270299858b6a69a45c604a28208d128a0dd94d8",
      "parents": [
        "c7bebd15378d98104e6cd32666665fd60eaa8043"
      ],
      "author": {
        "name": "niko",
        "email": "niko@google.com",
        "time": "Mon Jul 20 15:07:26 2009 -0700"
      },
      "committer": {
        "name": "niko",
        "email": "niko@google.com",
        "time": "Wed Jul 22 15:03:22 2009 -0700"
      },
      "message": "Added native metadata support.\n\nMetadata.java:\nFixed typo 8k !\u003d 8092. The comment was correct though.\n\nIn Metadata.h, the new Metadata class is declared in the ns android::media\nto limit the chances of conflict with other packages.\n\nThe MetadataType in MediaPlayerInterface is gone and moved to Metadata as\nan inner typedef.\n\nSimilarly the SortedVector\u003cMetadataType\u003e instance have been replace by a\nnew type Metadata::Filter.\n\nAll the keys declared in the java counterpart are also in Metadata.h.\n\nMetadata.cpp:\nContains the implementation of the native metadata packing.\n\nThere an associated change in the opencore package that should go in\nat the same time as this one.\n"
    },
    {
      "commit": "8994837f27e783a10f5cc038a7ae7595aabffdb6",
      "tree": "eb1a0cbb9e4d3c99f65a093574522e0016595046",
      "parents": [
        "3720cf2de9a86b4fb5583f190b183498f0ad3fc0"
      ],
      "author": {
        "name": "niko",
        "email": "niko@google.com",
        "time": "Thu Jul 16 16:39:53 2009 -0700"
      },
      "committer": {
        "name": "niko",
        "email": "niko@google.com",
        "time": "Fri Jul 17 11:31:11 2009 -0700"
      },
      "message": "Added method to get metadata out of the player.\n\nThe method passes a list of metadata ids to be retrieved and\na parcel where the metadata records should be appended.\n\nIf the list of ids is empty, all the metadata should be returned.\n"
    },
    {
      "commit": "8f5fcab05f1d6f644a9c30f012b8ff302f24a118",
      "tree": "55cd20372765a9f652b41eda82cef1f24063bbfb",
      "parents": [
        "358efe418eae266734a16e9ae8f26043e9c64f05"
      ],
      "author": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Mon Jul 13 14:37:49 2009 -0700"
      },
      "committer": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Thu Jul 16 11:22:31 2009 -0700"
      },
      "message": "New test player stub to load mock native players.\n\nAdded a new class TestPlayerStub that takes a magic url in the setDataSource call.\nBased on the value of the url, the stub is going to load a DL and create the concrete\nplayer used during the test.\nAfter these initialization steps TestPlayerStub is just a wrapper.\n\nAdded a new functional test MediaPlayerInvokeTest to demonstrate how a new\nmock player to test the invoke method can be loaded.\n\nAdded a new mock player for the invoke test: invoke_mock_media_player.cpp.\n"
    },
    {
      "commit": "e46b7be812d68e49710b34048662cbf18e2a6550",
      "tree": "d52e3913cc0b8fb9220d1f9f1f7fe1e910733764",
      "parents": [
        "d0c0e46a4408b22599bc588ea423d9102bcee6bf"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 14 16:56:47 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jul 16 09:49:14 2009 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit 8d179995654c19d9094e51989dc84ed0deba6e04\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jul 14 16:30:40 2009 -0700\n\n    Protect stagefright code with BUILD_WITH_STAGEFRIGHT build-define.\n\ncommit 99b41acb58c34e8f024c30c833a09fd7b31c4e1f\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jul 14 14:06:00 2009 -0700\n\n    OMX::list_nodes API, stagefright --list now lists all available OMX components.\n\ncommit 94a74c5b24aae6d7e446fff83d62ae3a57dc351b\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jul 13 16:04:29 2009 -0700\n\n    Reenabled \"record\" commandline application to test encoding, support for h263 codec specific data when writing to .mp4.\n\ncommit d363dd74f611577567c66d25900d6264c306468c\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jul 13 10:59:58 2009 -0700\n\n    Make non-socket communication in IOMX the default.\n\ncommit e89fc82c4fd138c88339887baf72f1d0e67f8660\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jul 13 10:32:33 2009 -0700\n\n    The OMX interface now optionally supports communication through the binder only (no sockets involved)\n\ncommit 28611de11223fba65299787cdd33f7fdbd6a60a3\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Jul 10 15:09:13 2009 -0700\n\n    Split off the logic to render to a Surface (not ISurface!) into SurfaceRender.{cpp,h}\n\ncommit c0cfa885faaeb17d3fc5436f6447b61708bd6fe1\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Jul 10 12:21:46 2009 -0700\n\n    Fix display dimensions vs. decoded dimensions display issues, unfortunately breaks software rendering a bit...\n\ncommit ae209a2b5d09caed5dd383c910f238926aaa8fc6\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Jul 10 09:33:29 2009 -0700\n\n    Simple video decoder performance test in \"stagefright\" commandline tool.\n\ncommit 59fe7840111d6f46dd3c48f4950146aed962dbd2\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Jul 9 16:05:12 2009 -0700\n\n    StagefrightPlayer: Properly publish video dimensions by notifying the listener.\n\ncommit 51b6598f0e47be5e12d77f1d14e111e71c593638\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Jul 9 11:38:15 2009 -0700\n\n    MediaPlayerInterface::AudioSink now supports the specification of a callback for pull-based audio.\n\ncommit 31ce53375d748da3e7d30e993ce89dae97fd65ea\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 8 17:23:37 2009 -0700\n\n    Proper support for pushing audio to a specified AudioSink interface. Still not bulletproof: video falls behind frequently.\n\ncommit a23e312b10631a5d47f5c9831205beac6b84ab36\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 8 15:10:13 2009 -0700\n\n    IGenesisPlayer and friends are no more, java interface now uses local playback instead\n    of playing inside the media server process.\n\ncommit 42ee5c06ab5ba1c16f50472b0b26a0526635c73c\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 8 13:17:03 2009 -0700\n\n    MP3 extractor now supports seeking (only fixed bitrate files currently supported)\n\ncommit 96a790405763bfa738d1c6845c99a9fdf579b66f\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jul 7 10:53:54 2009 -0700\n\n    Keeping up-to-date with new master-gl changes, removing CameraSource for now, removing unnecessary commandline utilities from the build.\n\ncommit 6c9dcb7c628c0347154dd7f37913a3a5f04deb99\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jul 6 16:40:02 2009 -0700\n\n    Finally take advantage of the fact that the Qcom OMX decoders already place the output buffers into memory accessible by the hardware yuv converter and avoid extra allocations and memcpys in that case. Split of the render logic into subclasses of VideoRenderer.\n\ncommit e8d46e81cffc15ffb0bdf03f511e4a4497ca7621\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jul 6 12:18:29 2009 -0700\n\n    Added a few more cases of valid MPEG4 files to the sniffer, fixed end of stream notifications in MPEG4 files.\n\ncommit 88bffc5ed4033a607080f8777a1c0ec9e3e079de\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Jul 2 12:25:03 2009 -0700\n\n    MediaPlayerImpl now properly pauses/resumes instead of tearing down the decoder chains and starting back up from the beginning.\n\ncommit 732aa0a87c7e8d8a10776b275712649954962414\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 1 14:58:56 2009 -0700\n\n    Remove pthread_mutex_* and pthread_cond_* in favour of Mutex and Condition.\n\ncommit 669e5944b2fe0542a3b8dba0c441a94503e99fb0\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jul 1 14:43:02 2009 -0700\n\n    Proper support for end-of-stream signalling of MediaSources.\n\ncommit afb038f2dc594c742e554b2d42b86ffc7434e3fc\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jun 30 16:48:03 2009 -0700\n\n    Support for the \"sniffing\" of datasources to determine their probable mime type (along with confidence). Slightly refactored the MP3Extractor to share common code with the sniffer.\n\ncommit ed3644b8bd56807e1db4b32433a93a2467f1f3c5\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Jun 26 13:27:52 2009 -0700\n\n    I don\u0027t think prepare should automatically start the player.\n\ncommit 11eb9b49dc4a0819d366682817cba68613f4fe12\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Jun 26 11:09:22 2009 -0700\n\n    Somewhat better timing information implemented in the MP3Extractor.\n\ncommit cab023a1751735c0ed26c8493498a91d8644c6c9\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Jun 25 15:41:56 2009 -0700\n\n    Initial checkin for support of mp3 content, extraction and playback. Media extractors now abstracted in MediaExtractor baseclass.\n\ncommit 40f4146bb3c647e56690dd9b0fa3ffdea60030dc\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jun 24 10:41:12 2009 -0700\n\n    Make sure we only allocate surface buffers if there is video to be played.\n\ncommit 7f85e7d92fe81740e102e09905b19354f4ac178e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jun 24 10:19:32 2009 -0700\n\n    Clean up a failed merge and implement stub for new API in MediaPlayerBase.\n\ncommit f0e9d494a4c03402ea7b54891848ca5a50c421b2\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Jun 12 15:38:03 2009 -0700\n\n    Support yuv420-\u003ergb565 conversion if hardware color conversion is unavailable.\n\ncommit 87223248b3099cd5261b94169f84cfd1eba56a8f\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Jun 12 09:35:56 2009 -0700\n\n    Remove unimplemented and currently unnecessary blocking option from MediaSource::ReadOptions.\n\ncommit e07e651f0325892b797f3eb64dbeca0f317afdfd\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jun 10 16:26:42 2009 -0700\n\n    Enable assertions in HTTPDataSource.\n\ncommit 0dc97adebea1721156880f4b3d5c70f8d50c53b2\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jun 10 12:34:39 2009 -0700\n\n    delete foo.\n\ncommit 7f05845dda496e7defee284d32509d127e785784\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jun 10 12:34:08 2009 -0700\n\n    added foo.\n\ncommit e432970c51eeec4e5d549bdb3e2d3e48ffb4f0e7\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jun 10 11:44:31 2009 -0700\n\n    Make sure to initialize all fields in _all_ constructors... Use a Mutex instead of the raw pthread_mutex_t.\n\ncommit d6286a6bbca639952491448fa3e609b775a8a814\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jun 9 17:11:49 2009 -0700\n\n    send_command is now implemented twice... ugly hack to get both shutdown working correctly and startup as well... playback now \"works\" on the emulator, too.\n\ncommit 8d657e004677a7c5dae4479e8519bcaa94c18aad\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jun 9 11:58:55 2009 -0700\n\n    Instead of erasing codec specific data once it\u0027s been output to the omx node, retain the data and just rewind after a stop.\n\ncommit 279fede6ba35cbc37c35616c53406bf2c9720202\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jun 9 10:58:11 2009 -0700\n\n    Various fixes related to play/pause. Decoder now properly frees OMXMediaBuffers, made MemoryDealer destructor protected instead of public to prevent accidental stack-allocation of MemoryDealer objects.\n\ncommit 0f717f15a6328efd3f34082929cd8ad2351095a9\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jun 9 08:44:12 2009 -0700\n\n    Make sure to rewind codec specific data on OMXDecoder::stop and reset AudioPlayer\u0027s notion of time mapping.\n\ncommit 0cfb63e33270daf9b215214608ab383f93a31823\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jun 8 14:25:48 2009 -0700\n\n    Massive rename.\n\ncommit 30ed8f476c4431a5275538958b3e281bd17d5eab\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jun 8 13:52:41 2009 -0700\n\n    send_command and fill/empty buffer commands must be executed in sequence, send_command is now dispatched over the socket instead of through the binder interface to ensure this.\n\ncommit b832d04011b2dd8a9632eb7e575bfe1addd1270d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jun 8 10:21:17 2009 -0700\n\n    MediaBuffers can now be \"clone()\", they sit on top of the same data but have their own range and metadata. Once a clone\u0027s refcount drops to 0 it decrements the refcount on the original buffer.\n\ncommit 4e944672808bdf1ed40a69f3f602f93ebf7b4049\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jun 8 10:01:01 2009 -0700\n\n    Split MediaBuffer.h into MediaBufferGroup.h and MediaBuffer.h, same with their respective source files.\n\ncommit ddb7529b4de4828db51432bd405fddd76cfa3b6a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Jun 5 16:30:25 2009 -0700\n\n    More fudging with A/V sync...\n\ncommit 1e5a4d8df08237b58c06c6527a33152ae931addf\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Jun 5 11:54:20 2009 -0700\n\n    API cleanup of MediaSource. Got rid of MediaRing as it really doesn\u0027t serve a purpose if OMX decoders are used.\n\ncommit 0953c65232aa9753d17d2e25c5f5526eb810cf13\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Jun 4 16:59:19 2009 -0700\n\n    Experimental TimedEventQueue and an attempt at a cleaner player implementation using it, OMXDecoder is now a little less verbose.\n\ncommit 2085b8ea9484a21fa11f94194a27405d413aeecc\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Jun 4 10:17:01 2009 -0700\n\n    Properly bail out of the AV sync loop if the MediaPlayerImpl is stopped.\n\ncommit 471f143458a8a0d93cb1bf9568c63c3967279dc6\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jun 3 17:32:27 2009 -0700\n\n    Now this is much better AV sync, defer seeking the audio source until we know where the video source synced to.\n\ncommit 4010d371dbe62ce4971e13437776cba32cb0bb3d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jun 3 16:01:07 2009 -0700\n\n    Tweaked some of the heuristics in AV sync, OMXDecoder is now a little less verbose, seek to a sync sample at or _after_ the requested position.\n\ncommit f3d4af1d5a4ac31fa02271b000f6c7ec593f0da9\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jun 3 15:33:58 2009 -0700\n\n    Change the TimeSource interface\u0027s APIs, prefer microseconds over milliseconds now, changed the way MediaPlayerImpl does AV sync.\n\ncommit 08bb46fa61d12e852a424698ddb0c90700328f6e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Jun 3 11:57:24 2009 -0700\n\n    Using framework\u0027s Mutex and Condition classes instead of pthread functions, much saner locking in OMXDecoder.\n\ncommit 4d77b4e09e59bbf8c1af009ae7dc62b10af52fd6\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jun 2 17:12:03 2009 -0700\n\n    MediaSources now publish their format.\n\ncommit 7e429a26c57bf936e1a08035d2d11839f9f00310\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Jun 2 16:38:29 2009 -0700\n\n    MetaData is now implemented in terms of KeyedVector, MetaData is now reference counted.\n\ncommit 0fa957aa5c9bcb6ec122ed7b5b97430039be6797\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jun 1 14:39:55 2009 -0700\n\n    Sync sample seek support.\n\ncommit 78a5f090d02e7e6e1a146b29bdb7771eecaa2f86\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jun 1 13:51:11 2009 -0700\n\n    Distinguish shutdown from port-flush since one requires buffers to be freed and the other one doesn\u0027t. Fixes a problem with seek.\n\ncommit e57781d3b2c985a74cd8b60e7c8f2d576459d038\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Jun 1 10:52:20 2009 -0700\n\n    First shot at support for seeking a MediaSource. Sync frames are not properly handled yet.\n\ncommit 0551cd78fda78bf66877fb26c5a55e5ae23d8367\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 28 16:23:38 2009 -0700\n\n    Preliminary support for camera input.\n\ncommit f8ebafa65d10d5a06944de6b2e2992a33121b857\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 28 12:13:47 2009 -0700\n\n    Allow NativeMediaPlayer access to Surface\u0027s getISurface() method.\n\ncommit b1a9fb36eeccd9f49d28c1c64b31fccbd6506eeb\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 28 11:38:25 2009 -0700\n\n    Header files are now in their own genesis2 hierarchy below frameworks/base/include.\n\ncommit f49b8b234b8f6ce83148787eef540dd920f04aa6\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 28 11:22:03 2009 -0700\n\n    moved MPEG4Writer into libgenesis2.\n\ncommit 5224254919dac4728677335ea60429fa16f518b4\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 28 11:13:38 2009 -0700\n\n    Everything now lives in the android namespace, integrated errors with android errors, renamed MediaPlayer to MediaPlayerImpl.\n\ncommit f9a9d84f7e0465ef5d1938a068655ba39527cf99\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 27 16:43:11 2009 -0700\n\n    Support for getPosition() and getDuration().\n\ncommit 3206cc5140bcbc88be039f8d94b954af63e69752\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 27 15:37:45 2009 -0700\n\n    Support for {MediaPlayer, GenesisPlayer, Genesis2Player}::isPlaying()\n\ncommit 9f41b248e0dfce71bbc50f883750cec52ebfd1fe\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 27 13:49:50 2009 -0700\n\n    Proper disconnection from the OMX service.\n\ncommit cdcf47a2c31599109ee42277c7fa14af3c600091\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 26 17:27:06 2009 -0700\n\n    New player type for the genesis player in libmediaplayerservice. Playing video through an ISurface now.\n\ncommit 0586af20ac9ae0403dd190bafd290b0f90549723\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 22 15:53:19 2009 -0700\n\n    Fix a buffer overflow error by adding padding in case we need to de-frame AVC data.\n\ncommit eac62fff6ad2ffb7b75c0d4a1b9620d33e93fb9b\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 22 13:35:30 2009 -0700\n\n    Support for http URIs in MediaPlayer, compensate for AudioTrack latency.\n\ncommit a7db456e3173d94d6b5e457547e2a6a5f7a8e1cc\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 22 11:33:25 2009 -0700\n\n    Support for URIs in MediaPlayer class, support for shoutcast streams in MediaPlayer, force shutdown of OMX nodes if they don\u0027t shutdown cleanly within a second.\n\ncommit 1f0268f4f14ad5215668f34e06a420850174d665\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 22 08:33:16 2009 -0700\n\n    and foo.txt is gone again.\n\ncommit 0feca4e0919f345704d78ec78894bac5027bd5ed\nAuthor: Andreas Huber \u003candih@dhcp-172-19-27-148.mtv.corp.google.com\u003e\nDate:   Fri May 22 08:28:49 2009 -0700\n\n    added foo.txt\n\ncommit 9c7d04b35cdc895a2de3602dc46522f608bd205f\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 22 08:28:04 2009 -0700\n\n    delete foo again\n\ncommit fec3ca1720992cce51b9a92b86b945da88a6b16c\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 22 08:27:45 2009 -0700\n\n    weird\n\ncommit 30a6571302333146e537e537a3a8986245cca87c\nAuthor: Andreas Huber \u003candih@dhcp-172-19-27-148.mtv.corp.google.com\u003e\nDate:   Fri May 22 08:18:55 2009 -0700\n\n    reverse test\n\ncommit dea3d99dd0fe9386e8a3c51954d9d0fe2be09d38\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 22 08:18:22 2009 -0700\n\n    test\n\ncommit a9eeafec6e46072cac41e54ebdbd153cb7ae7518\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 21 16:37:50 2009 -0700\n\n    Use the video ring again for now.\n\ncommit e05ff3d3c1c4f89ef499a2b172138a775fd694e3\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 21 15:42:19 2009 -0700\n\n    Export to .mp4 now works for MPEG4 video content. Fixed a bug in the sample table wrt co64 chunks.\n\ncommit 5c44c540374a4e50c4e8aaab2b7a34aed6e1391e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 21 09:56:11 2009 -0700\n\n    Fix the build, all binder-related headers have moved and there\u0027s a new library libbinde\n    r to link against now.\n\ncommit 23e0a24404d16c898c2c6b3c7495ad303844bc71\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 21 08:42:04 2009 -0700\n\n    Initial checkin of MPEG4Writer, a class to export media sources into an mpeg4 file. MPEG4/AVC metadata (efss \u0026 friends) not currently working.\n\ncommit 9cd77adb1ac194197364ffad00a0d7215f458e1a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 20 12:31:45 2009 -0700\n\n    New shell command to test recording/encoding. Various changes to OMXDecoder to support encoding properly. Now each OMXDecoder needs a dedicated thread on the client side since onEvent responses could block which would cause deadlocks if a node depends on the output of another node for example.\n\ncommit 5c510fb55ffed7ec25305999ed9b6c1eec48d503\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 18 15:40:06 2009 -0700\n\n    Make media decoding the default in the genesis2 commandline app instead of shoutcast playback.\n\ncommit f6c7a2040b8eb43326621f12c3a936e09b3a70e3\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 18 11:03:04 2009 -0700\n\n    The king is dead, long live the kind... Replaced old OMX binder interface with new OMX binder interface/socket hybrid.\n\ncommit 0d4955eb5df9bfafb576d22f2ed572644d6d69ac\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 14 12:39:34 2009 -0700\n\n    dynamic negotiation of NAL framing with the MPEG4Source, removed stale code from genesis2 commandline tool. Enable support form PV H264 software decoder.\n\ncommit 380369f54a8027cbc9349305184d6bf527a24efe\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 13 17:32:00 2009 -0700\n\n    Explore the option of running everything inside the mediaserver process by encapsulating the player in an IGenesisPlayer binder interface.\n\ncommit b5cada56b9089a23e0c461352a97dc71e08b424d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 13 12:11:06 2009 -0700\n\n    Introduction of TimeSource class, clean shutdown of OMX Nodes.\n\ncommit 89f6e582e605dcb2149eb67f73fe9345d4b9be2e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 12 17:11:56 2009 -0700\n\n    Helper classes MediaRing and MediaPlayer.\n\ncommit 9aaed8739b4bb941473da367fb88f63224d2f1b7\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 12 14:19:18 2009 -0700\n\n    Using mmap to map a file instead of going through FILE* improves performance, who knew?\n\ncommit ad097a78bbd002c59193ffdc39b64935928426c7\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 11 16:42:42 2009 -0700\n\n    Added a performance test, refactored AudioDecoder a little.\n\ncommit bdd1b80ab3f3ba43e04f1f996e7fa84ed2e2728a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 8 16:19:29 2009 -0700\n\n    No more copying the output buffers coming out of the decoder, NAL separation also done in the extractor to avoid copying the data.\n\ncommit 858955b42c29b8033841a8caaa56c2a449810ef3\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 8 14:02:38 2009 -0700\n\n    Change from a model in which the caller specifies the destination buffer to one where the MediaSource returns a buffer.\n\ncommit 95098b6d4f8bdc37dfb6a109ca58db4d9e414e2d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 8 13:21:45 2009 -0700\n\n    Changes to support multiple pieces of codec specific data to the decoder, de-frame nal units from the h.264 stream and insert start codes\n\ncommit 3941fcf87a48dda81683df727dfb1381f62d9184\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 7 16:37:45 2009 -0700\n\n    some refactoring. Most streams play now.\n\ncommit d3152862840d4dd39068e5197bec8674f3d55dd5\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 7 15:37:32 2009 -0700\n\n    Misc. changes to support H264 decoding using the qcom hardware decoder\n\ncommit d4ecdfe7af36e7468270d1c2cbbdc540efe0351e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu May 7 09:28:18 2009 -0700\n\n    Timestamps are now stored as a fraction, i.e. units and scale, also, PV appears to violate OMX specs by assuming timestamps are in milliseconds instead of microseconds.\n\ncommit fe6a50943f885e065d4061aa727a54417e9f36db\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 6 14:18:27 2009 -0700\n\n    Refactored commandline app instantiation of the decoder.\n\ncommit da1ff2724d0e78e8b360d9a2c34c55dd0e2c0492\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 6 10:41:14 2009 -0700\n\n    Proper audio/video synchronization.\n\ncommit 569ee3a23f600f4b6b87c6178c0223b06e97f201\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed May 6 09:17:20 2009 -0700\n\n    Preliminary support for timestamps.\n\ncommit e4e302a89207550d8a7170d8c0afbd9c15047c84\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 5 15:13:12 2009 -0700\n\n    Another quick hack job to make CachingDataSource thread-safe as well.\n\ncommit dfb376a58bd7c09aa04e89558186fcfe13fe696c\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue May 5 15:08:14 2009 -0700\n\n    Quick rushjob to make FileSource and SampleTable thread safe.\n\ncommit 02b29e7ebdab1f8b959b6c177ceb3b89d998f375\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 4 17:22:04 2009 -0700\n\n    Made video decoding work for mpeg4/h263 and mostly(?) with AVC content.\n\ncommit 3a57b8ff15e48f5a0af03bf0a99c32e240dbb7ef\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon May 4 09:26:42 2009 -0700\n\n    Getting rid of old sample code to drive the OMXNode binder interface.\n\ncommit 5b046aed0cf524a57ea711bc1e43ea80e57b2cb3\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 1 16:21:11 2009 -0700\n\n    Moved files from the commandline utility into the framework, renamed MP3Decoder to AudioDecoder\n\ncommit 7f3fbba21512a078b732cc52c7bd5ba5acb9a317\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 1 15:56:19 2009 -0700\n\n    Fixed buffer ordering and an off-by-1 error in the SampleTable code. Plays all AACs now :)\n\ncommit 024d06baab8f2c540dde16f7e7a4b6dd57f638c7\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri May 1 11:52:48 2009 -0700\n\n    Some AAC content in .3gp or .mp4 files plays correctly now, other does not. Implemented ESFS parser.\n\ncommit 1470427866b0d3e0ce6848b4edc01c13a09be289\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Thu Apr 30 15:19:31 2009 -0700\n\n    Another checkpoint, amr decoding now functional.\n\ncommit e612d044439f56331b6a2bc4a88622e04d4d42e7\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Apr 29 12:11:29 2009 -0700\n\n    string wrapper around String8, various fixes, shoutcast now works again.\n\ncommit 2ea52dfb1a39bf3a223ffc87855e54919e2daff7\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Apr 29 11:08:18 2009 -0700\n\n    Initial check-in of OMXNode binder interface.\n\ncommit 7880d2957f74c0d7fba7679431ff5adb3780543b\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Wed Apr 29 10:05:01 2009 -0700\n\n    Initial check-in of both libgenesis2 and the genesis2 commandline tool.\n"
    },
    {
      "commit": "4df8b2c760665d16a4f3438245247fe410815bc6",
      "tree": "93ff3227970db7e225361a526dda8a01ca1696d5",
      "parents": [
        "3cebad052aa8d150e3152b970521cbd7d53373e9"
      ],
      "author": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Fri Jul 10 13:53:06 2009 -0700"
      },
      "committer": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Fri Jul 10 14:15:49 2009 -0700"
      },
      "message": "Implemented the tracking of the metadata updates.\n\nSwitched from Vector to SortedVector. Removed dead sorting code.\nAdded a type to represent MetadataType.\n\nMinor fixes missed in the previous CL.\n"
    },
    {
      "commit": "5d55c7119820ee9bb06fc072e416fe98ba77cd28",
      "tree": "4f461a51f26fc221f4e9c7c660c6b6680ff072d7",
      "parents": [
        "2eedb2515b733aaba0a92944def8156ef379e0da"
      ],
      "author": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Thu Jul 09 09:21:33 2009 -0700"
      },
      "committer": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Fri Jul 10 11:00:42 2009 -0700"
      },
      "message": "Basic plumbing to retrieve metadata from the native player.\n\nIMediaPlayer.h\nAdded a getMetadata method that mirrors the on in MediaPlayer.java.\n\nMediaPlayer.java\nAdded a native method to get the metadata from the native player.\nParse the parcel into a Metadata object.\n\nMetadata.java\nAdded a stub to parse the Parcel returned by the native player into\na set of metadata.\n\nandroid_media_MediaPlayer.cpp\nJNI call to forward the getMetadata call.\n\nMediaPlayerService.cpp\nMediaPlayerService::Client implements the new getMetadata method added in IMediaPlayer.h\n"
    },
    {
      "commit": "b2c693919be966f179080a9ec70a7a82dbf57627",
      "tree": "bc67f2a85c74a41a2151950b6393e6a291aeaa5c",
      "parents": [
        "3ff23c46978adfb691507baa3d2bf04b3f5ca001"
      ],
      "author": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Wed Jul 08 08:57:42 2009 -0700"
      },
      "committer": {
        "name": "Nicolas Catania",
        "email": "niko@google.com",
        "time": "Thu Jul 09 11:46:02 2009 -0700"
      },
      "message": "Implemented the metadata changed notification filters.\n\nIMediaPlayer:\nnew setMetadataFilter method so set a filter (2 lists of allowed and blocked metadata type)\nserialized in a Parcel.\n\nMediaPlayer.java/android_media_MediaPlayer.cpp/mediaplayer.cpp\nnew setMetadataFilter that passes the filter down to the MediaPlayerService\u0027s binder interface.\n\nMediaPlayerService.cpp\nThe Client inner class holds the allowed and blocked metadata types.\nThese are in 2 vectors that get populated in the setMetadataFilter.\n\nA new shourldDropMetadata method returns true if a type of metadata should be dropped according\nto the filters.\n\nThe notify method in run the metadata update notifications thru the filter and possibly drop them.\n"
    }
  ],
  "next": "f31868e59fbf59a8d479587c80b648fb37a166fc"
}
