)]}'
{
  "log": [
    {
      "commit": "812ee4e0e4648e36e94e7c56b4ac87cbce5e148b",
      "tree": "5f3f5d50dfd05ace2b83f5abd73708d8542e30b7",
      "parents": [
        "ac6d49fa95f3d255b9ca611ec139dce3fef9d907",
        "05e73de0664765a144414e73d4fcf4e1caf3c0f3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Sep 04 19:14:57 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 04 19:14:57 2012 -0700"
      },
      "message": "am 05e73de0: am 0d268a3c: Add setVideoScalingMode support to NuPlayer\n\n* commit \u002705e73de0664765a144414e73d4fcf4e1caf3c0f3\u0027:\n  Add setVideoScalingMode support to NuPlayer\n"
    },
    {
      "commit": "0d268a3cae145afb2720c88ae38fb81550be5584",
      "tree": "f9867ade7070263e6a521531d1ff4e6624618966",
      "parents": [
        "fbe9d81ff5fbdc5aecdcdd13e4a5d7f019824f96"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Aug 31 12:18:27 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Sep 04 19:00:50 2012 -0700"
      },
      "message": "Add setVideoScalingMode support to NuPlayer\n\no related-to-bug: 7089195\n\nChange-Id: Ic30d9312673f2d5837c779e023ac64468ecd4951\n"
    },
    {
      "commit": "ac6d49fa95f3d255b9ca611ec139dce3fef9d907",
      "tree": "e226d7d6e9cf38507c7c70f3ac8d1ca2c5ca22ed",
      "parents": [
        "f5540a1218397e9cc5a381217ffbbc52332cf719",
        "eca95af88949ec76533927f39118ac57f4f01911"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 04 11:27:30 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 04 11:27:30 2012 -0700"
      },
      "message": "am eca95af8: am fbe9d81f: Support for acting as a wifi display sink.\n\n* commit \u0027eca95af88949ec76533927f39118ac57f4f01911\u0027:\n  Support for acting as a wifi display sink.\n"
    },
    {
      "commit": "fbe9d81ff5fbdc5aecdcdd13e4a5d7f019824f96",
      "tree": "1c19ca38ef4ec9be83a2be46189a3d6a593a0b81",
      "parents": [
        "7323115c6e55f2da73317d7ff6a69b808d74264e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 14:05:27 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 04 10:41:49 2012 -0700"
      },
      "message": "Support for acting as a wifi display sink.\n\nChange-Id: I0beac87025b93c60164daa865c89f16b72197a47\n"
    },
    {
      "commit": "f5540a1218397e9cc5a381217ffbbc52332cf719",
      "tree": "4de3bb1f05ca9e334e886a102ff2623e71f0ca99",
      "parents": [
        "85c4ee8533bcb172ad1805bf3daa9f9c95c831b3",
        "76fd1ea58835094e84d36f2353d1390c24d14bfc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 04 09:35:52 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 04 09:35:52 2012 -0700"
      },
      "message": "am 76fd1ea5: am 7323115c: Merge \"Improvements to our MPEG2 Transport Stream parser\" into jb-mr1-dev\n\n* commit \u002776fd1ea58835094e84d36f2353d1390c24d14bfc\u0027:\n  Improvements to our MPEG2 Transport Stream parser\n"
    },
    {
      "commit": "7323115c6e55f2da73317d7ff6a69b808d74264e",
      "tree": "fae85c605621adcc8cbac9791365ae13517b8928",
      "parents": [
        "312380331e28b7e5693a4b1646caf2d19aba1b2a",
        "87f2a558dd12043631e12c361abef301bf603140"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 04 09:31:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 09:31:12 2012 -0700"
      },
      "message": "Merge \"Improvements to our MPEG2 Transport Stream parser\" into jb-mr1-dev"
    },
    {
      "commit": "85c4ee8533bcb172ad1805bf3daa9f9c95c831b3",
      "tree": "778a7191b7b646c177ad72d9da209bfadc4a66e1",
      "parents": [
        "efbc8f27cef778c392200dc7e2b5d128e28e91c3",
        "4adf4c6cb90c2bdd2aa46179fd718cbc2f1dd067"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 31 14:46:11 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 31 14:46:11 2012 -0700"
      },
      "message": "am 4adf4c6c: am 31238033: Merge \"Move fragmented mp4 parser to libstagefright\" into jb-mr1-dev\n\n* commit \u00274adf4c6cb90c2bdd2aa46179fd718cbc2f1dd067\u0027:\n  Move fragmented mp4 parser to libstagefright\n"
    },
    {
      "commit": "312380331e28b7e5693a4b1646caf2d19aba1b2a",
      "tree": "6d2d14f97ba1e3fcdf946e749e248d7125344aec",
      "parents": [
        "cd89e8014368af1bbdfa08406d5d2eb0bbbfcca1",
        "cb1f88c684140ce0eb407049a78f889bc7d51be1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 31 14:41:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 14:41:47 2012 -0700"
      },
      "message": "Merge \"Move fragmented mp4 parser to libstagefright\" into jb-mr1-dev"
    },
    {
      "commit": "cb1f88c684140ce0eb407049a78f889bc7d51be1",
      "tree": "8aa79ee909d368f934556c12115a6d03e66ba432",
      "parents": [
        "092fe44abd787fcb4377d90c63f2aa7120a4d267"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 31 11:07:37 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 31 14:14:22 2012 -0700"
      },
      "message": "Move fragmented mp4 parser to libstagefright\n\nand rename it from Parser to FragmentedMP4Parser\nChange-Id: I986f50d0c5c93648aac675d6160e18623b031541\n"
    },
    {
      "commit": "87f2a558dd12043631e12c361abef301bf603140",
      "tree": "f8b3896d77e8ba22b3edbcade5d98d0aaa8cde13",
      "parents": [
        "dc91c885f267005e06f439a3bd592b3d8706bb50"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 13:55:24 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 13:55:24 2012 -0700"
      },
      "message": "Improvements to our MPEG2 Transport Stream parser\n\nVerifies the continuity counter\nParses and associates PCR time with streams\nAllows for a absolute time anchor to be signalled via discontinuity.\n\nChange-Id: I4bc88c78382c9cc6380f28df584cc6c254e0a8f9\n"
    },
    {
      "commit": "9a13e30fc2c2ca2bdcecae6daf5daa0a6b4fec41",
      "tree": "d563ee3082e98eb49ffe89a2d77ddd447020feb6",
      "parents": [
        "f10cf66d258ab88af9cb363077cdd96d59f7ca15",
        "8d0189dc829dc87a74ff91eb0c067dc291ff59c3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 13:12:12 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 31 13:12:12 2012 -0700"
      },
      "message": "am 8d0189dc: am 61356671: Merge \"Add support for mpeg2 transport streams to the RTSP implementation.\" into jb-mr1-dev\n\n* commit \u00278d0189dc829dc87a74ff91eb0c067dc291ff59c3\u0027:\n  Add support for mpeg2 transport streams to the RTSP implementation.\n"
    },
    {
      "commit": "cfaeeec0900014d97e15829e0fa52f865ee4c786",
      "tree": "d97027786e1326f54d3d687b5e724eb5b7c04a3b",
      "parents": [
        "dc91c885f267005e06f439a3bd592b3d8706bb50"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 10:27:46 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 10:27:46 2012 -0700"
      },
      "message": "Add support for mpeg2 transport streams to the RTSP implementation.\n\nChange-Id: I409d7133a53a71e62523b1acc2b03302fcf824a5\n"
    },
    {
      "commit": "bf4c5d9f3bdb6fd3889afdeb0312d54f6f2e8de3",
      "tree": "ae7a4e67c15398130c65e3645b0a66edab819307",
      "parents": [
        "38b8d56d63b38e539daa44292ae3e01633c99fef",
        "1f3d61f99c5cbe65a2cd32985445fc9ffa12adca"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 13 11:17:53 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 11:17:53 2012 -0700"
      },
      "message": "am 1f3d61f9: am bd828233: Use the correct data offset by remembering the offset of the enclosing \\\u0027moof\\\u0027\n\n* commit \u00271f3d61f99c5cbe65a2cd32985445fc9ffa12adca\u0027:\n  Use the correct data offset by remembering the offset of the enclosing \u0027moof\u0027\n"
    },
    {
      "commit": "bd828233d3eda966bf7145108dde74616abd97fb",
      "tree": "942a6d829a42a3b3f3a1ac2286015a94acde5332",
      "parents": [
        "8cf9c1a8640553a146f3a7aad01b393c664a46af"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 13 10:59:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 13 11:13:22 2012 -0700"
      },
      "message": "Use the correct data offset by remembering the offset of the enclosing \u0027moof\u0027\n\ncontainer.\n\nChange-Id: I2f0f92dabe31341a6a91d435943e4a65e34884ba\n"
    },
    {
      "commit": "518cdbe52b60af91a2bd2d3ce2d29feac884ae02",
      "tree": "e99f3e1486755be21f3fa24c8ac210a395b2d58b",
      "parents": [
        "006406f934655b9ea4ceafe4ad672e315e2e8efc",
        "6f1ecc9815b8b02c407254de0fb9dbbb575c6fc1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 13 09:56:21 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 09:56:21 2012 -0700"
      },
      "message": "am 6f1ecc98: am 75767ab7: Merge \"Signal end of stream if no more fragments are going to be available.\" into jb-mr1-dev\n\n* commit \u00276f1ecc9815b8b02c407254de0fb9dbbb575c6fc1\u0027:\n  Signal end of stream if no more fragments are going to be available.\n"
    },
    {
      "commit": "c7708555ea7511aea684e00a55fb5309281540ce",
      "tree": "f3f8387559ca0a200e459b45a058fe5e5d2a7fab",
      "parents": [
        "faa88edb9df91b0e7725b0ee4c4fb5e92262b3d5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 09 16:24:54 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 09 16:35:00 2012 -0700"
      },
      "message": "Signal end of stream if no more fragments are going to be available.\n\nChange-Id: I16696740d3551aa8a5ba904ec757c64b0ecd1307\n"
    },
    {
      "commit": "7a06b60f697ba0729ad3a2230529a7b493b9cfb4",
      "tree": "b584d660f25525a79993513fcd55ec227207ee67",
      "parents": [
        "e9103a17dd0957e3dd21c2b424e03ac79faf4192",
        "8f8bffd61352915af9d7af6d0279ada039a58d7e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 09 13:51:50 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 09 13:51:50 2012 -0700"
      },
      "message": "am 8f8bffd6: am faa88edb: Merge \"Fix static sample table processing, add support for h.263 video.\" into jb-mr1-dev\n\n* commit \u00278f8bffd61352915af9d7af6d0279ada039a58d7e\u0027:\n  Fix static sample table processing, add support for h.263 video.\n"
    },
    {
      "commit": "b9787142c5f5f8f47e7e35409f4f2ef7112ab72e",
      "tree": "3966271224e78b6d8e88da104385a67900890635",
      "parents": [
        "0d27c65ddb5c968baa6db0c26e80f5c451bc52bc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 09 09:15:48 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 09 13:25:48 2012 -0700"
      },
      "message": "Fix static sample table processing, add support for h.263 video.\n\nChange-Id: I5628d3437b5e6f8836d78557fd07ab87e5a914e3\n"
    },
    {
      "commit": "1c84cb0bd8bc404afd35618a1c34200abce6aa8e",
      "tree": "3750e6e3235f6f6218e6780a50a8e46416602c46",
      "parents": [
        "04c0891039fcb581461510c7a608793a035abbfb",
        "ef8532b0ae4a34f02f824ba0c0f3e8d4db2067e1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Aug 08 09:46:19 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 08 09:46:19 2012 -0700"
      },
      "message": "am ef8532b0: am e2229fba: Merge \"Handle empty stsc box\" into jb-mr1-dev\n\n* commit \u0027ef8532b0ae4a34f02f824ba0c0f3e8d4db2067e1\u0027:\n  Handle empty stsc box\n"
    },
    {
      "commit": "b7e75cfd64893dde230dfc1c3b281a00ca1b4470",
      "tree": "1ed2135b58a8762cdefda74197ea688a50b907b5",
      "parents": [
        "28620ee3e9926ef07f0b4cb3e22b156b812e2d7e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Aug 08 09:19:05 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Aug 08 09:19:05 2012 -0700"
      },
      "message": "Handle empty stsc box\n\nChange-Id: I867e2499fac3045075654aaaecf44327753327fd\n"
    },
    {
      "commit": "1ebccf52559ee7249bfe25c1a7c0232f8bc8060f",
      "tree": "1a5eb5db7a9fe3e196bed3cf5a1346ccdfd637d4",
      "parents": [
        "27644634ea54d48863e765d87e24d60153a6e795",
        "c9b125a1be3d1edcb8b7f050334ef3d3a980d3d1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 03 14:20:20 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 03 14:20:20 2012 -0700"
      },
      "message": "am c9b125a1: am a3b71fa5: Merge \"experimental support for fragmented mp4 playback in nuplayer\" into jb-mr1-dev\n\n* commit \u0027c9b125a1be3d1edcb8b7f050334ef3d3a980d3d1\u0027:\n  experimental support for fragmented mp4 playback in nuplayer\n"
    },
    {
      "commit": "840667883fd09d44015716d79bc3ac4d60edc0f0",
      "tree": "cb55492dbe3ca64b2ab9ba2f5a3bb6d0a0bcf650",
      "parents": [
        "9cb20d4a41eb84bfab7f9f0d0829393f378583f4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 16 09:34:26 2011 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 03 13:57:32 2012 -0700"
      },
      "message": "experimental support for fragmented mp4 playback in nuplayer\n\ncherry picked from change 170999\n\nChange-Id: I407775f0290154ad4961134839a15c9f296424c0\n"
    },
    {
      "commit": "27b6d228301ba750dd9b3730d1127e4f0ae2209a",
      "tree": "34a2d66ceb6cbf9f3aea15eb0c936f7f92790169",
      "parents": [
        "b24ed02a90b6050fc1822cfd43d02140fea77b18"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 17:38:48 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jul 31 10:56:06 2012 -0700"
      },
      "message": "Removed a CHECK_EQ that is not needed.\n\n\u0027what\u0027 was just compared against Renderer::kWhatFlushComplete before entering the\nif block.\n\nChange-Id: I72c5c156f814621a24439d89e150c4e0d90edcbb\n"
    },
    {
      "commit": "9fbe94294ce2053d102ff5de89846a0c5015fb58",
      "tree": "7ba08233afeb658bdd59e1e0b12e96638ee796a4",
      "parents": [
        "3beb3ff4af08ea02da87e6548e0544d2ba47daf1",
        "5d246efa220a7c7b22e490576c488b3853c664dd"
      ],
      "author": {
        "name": "Ed Heyl",
        "email": "ed@google.com",
        "time": "Sun Jul 29 16:47:58 2012 -0700"
      },
      "committer": {
        "name": "Ed Heyl",
        "email": "ed@google.com",
        "time": "Sun Jul 29 16:47:58 2012 -0700"
      },
      "message": "Merge remote-tracking branch \u0027goog/jb-dev-mako\u0027 into jb-mr1-dev\n\nConflicts:\n\tservices/audioflinger/AudioFlinger.cpp\n\nChange-Id: If27e4ff35de1e182394cc149e1557a49f0f7c95b\n"
    },
    {
      "commit": "5d246efa220a7c7b22e490576c488b3853c664dd",
      "tree": "8258668e5e235b67d51d8f4554e77f8c2434fe2c",
      "parents": [
        "45dfb6ae94b33eea04d74afa378c1664e884f09a"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Mon Jul 09 10:36:57 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Jul 25 01:28:36 2012 -0700"
      },
      "message": "NuPlayer: Prevents creation of Video Decoder when we use Music Player\n\n- Prevents instantion of Video Decoder when we use applications like\nMusic Player  which do not support Video Playback\n- Adds a check to prevent scanning for sources when it is either an\nAudio only clip or a video only clip or an AV clip played with a\nMusic Player.\n\nChange-Id: I74dd9bc53e54fd4f3682536c987289ac252690b0\nSigned-off-by: Arvind Thatikonda \u003carvindt@codeaurora.org\u003e\n"
    },
    {
      "commit": "f57b4ea3e409537b1d5f9aaea93d356b1cebbc6a",
      "tree": "ca0ff108318bbe53657e62ec27f241750b6a4b55",
      "parents": [
        "33e6e35b03a726e35203e97550f32154c91d5f13"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 13:38:36 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 13:38:36 2012 -0700"
      },
      "message": "Added a callback in nuplayer via informational event to signal the start of video rendering\n\nChange-Id: Id7b9b82d4e5467ad8701bfbad4dcc5070f3703cf\n"
    },
    {
      "commit": "3d51d5cb53cc630709a0ba78d0e60501a675f2d5",
      "tree": "c01dc8011b4e0061343c8b60b0da3508c63ae822",
      "parents": [
        "b4ea1ab821d652cb080910d4081f5f1318597a90"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 12 18:10:35 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 13 15:18:29 2012 -0700"
      },
      "message": "Add NOTICE and MODULE_LICENSE_APACH2 to libs build under /frameworks/av/\n\nChange-Id: I0a3af3e2abdedebd5934f3d941d01c32cfc75e26\nrelated-to-bug: 6647465\n"
    },
    {
      "commit": "c9d1696d214d2175327067ccc1991bcb36976404",
      "tree": "d8dca6340bbe00cd04d6dda4c1917e1affe9a516",
      "parents": [
        "8370c7ad4136ad7e0787d5a91ccfa3d63cfbe5cc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon May 21 11:12:40 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon May 21 11:12:40 2012 -0700"
      },
      "message": "For an RTSP live stream we won\u0027t map rtp time to normal play time,\n\nsince we don\u0027t have the information necessary.\n\nChange-Id: I3119fcc061c4b6756a69c6139ffdf013d806fee1\nrelated-to-bug: 6528548\n"
    },
    {
      "commit": "bfd4d0d9fe0033abf3f55b94f30f6a58846a875e",
      "tree": "9b8a16246cce7e86b6dcc4e5af147d264d4eb4b9",
      "parents": [
        "cd28dc10d49c359566c69d48a29a6f0d3eefa6d9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 17 14:18:50 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 17 14:18:50 2012 -0700"
      },
      "message": "Buffer at least 2 secs worth of data at startup of after a seek before\n\nresuming starting RTSP playback.\n\nChange-Id: I060c6c7fd627ab7ebd5c095ddcfdb4cc0f637aad\nrelated-to-bug: 6364126\n"
    },
    {
      "commit": "9806555d3930be43e11106281dee354820ac1c88",
      "tree": "b5aa448cc0bfede361540f45b97c81ad398a9df4",
      "parents": [
        "6a3969cc3bcbfc84dbcc27aa726eb96bc03a830b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 03 11:33:01 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 03 11:47:08 2012 -0700"
      },
      "message": "Respect channel mask in ACodec and NuPlayer.\n\nRefactor conversion from MetaData into AMessage while we\u0027re at it.\n\nChange-Id: I5479129836ea4316e8de28cf1b472bf19e3ac4ab\nrelated-to-bug: 6439076\n"
    },
    {
      "commit": "0c0abd4ad26971b5fba94734137fe0bb1a590ab6",
      "tree": "c1bc93a1c16884cdaf545074c1766fbb46d1a6f6",
      "parents": [
        "8b71241ce7353731ab75322c46e090ee35014a33",
        "0b7c9a327f5d10b841a3aa2bbe103a2ca6dcac37"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 30 11:44:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 30 11:44:47 2012 -0700"
      },
      "message": "Merge \"Notify the client about an initial size of (0, 0) instead of (320, 240).\" into jb-dev"
    },
    {
      "commit": "0b7c9a327f5d10b841a3aa2bbe103a2ca6dcac37",
      "tree": "b53531cf12c1000598bf15b828fe3f7a3cda4116",
      "parents": [
        "83faee053cfd4251dbb591b62039f563ffdac399"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 30 11:35:34 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 30 11:35:34 2012 -0700"
      },
      "message": "Notify the client about an initial size of (0, 0) instead of (320, 240).\n\nwhich is documented as \"we don\u0027t have that information just yet\".\n\nChange-Id: I158a53af83d526f713cd30372fce28558894b857\nrelated-to-bug: 6293020\n"
    },
    {
      "commit": "8b71241ce7353731ab75322c46e090ee35014a33",
      "tree": "afc21859dae503e57aa5a3cc777512800d1fd64e",
      "parents": [
        "83faee053cfd4251dbb591b62039f563ffdac399"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Apr 27 09:33:24 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 30 09:40:47 2012 -0700"
      },
      "message": "Fix mono gapless playback for decoders that output stereo\n\nThe old AAC decoder always outputs stereo, even for mono source material, so we\nneed to use the number of channels of the output when calculating the number of\nbytes to skip, not the number of channels in the source.\nThis makes OMXCodec skip the right amount of data, and prevents NuPlayer from\nwriting half a frame and then asserting when the AudioSink doesn\u0027t accept it.\nAlso move use of the SkipCutBuffer from NuPlayer to ACodec, so that it also\nworks when using the new Java APIs, and make SkipCutBuffer derive from RefBase.\nb/774846\n\nChange-Id: I34df9fea3e6730617eae559afaa556f4085ef0a0\n"
    },
    {
      "commit": "e370bb62b89d2f2980f519392010ea08a24c558e",
      "tree": "1b6f05a3447497841b259f00f03af2150e165c61",
      "parents": [
        "e4f70a7ea72c2a9fca60e6b64a258604e9333580"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 25 14:24:30 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 25 14:28:29 2012 -0700"
      },
      "message": "Bump up the max number of items in an AMessage, remove overly stringent\n\nCHECK() limiting us to just audio/* or video/* tracks.\n\nrelated-to-bug: 6399405\nChange-Id: I9bdaf7e709665ecc22da8839c8b16c081dbf4535\n"
    },
    {
      "commit": "1948eb3ea6eee336e8cdab9b0c693f93f5f19993",
      "tree": "448eed49a4ba18fb1ab4f2fb1b2c0d5cef6d242f",
      "parents": [
        "21e8c50bd13ebe44f3088e26c9c6df0e163c469c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 13 16:50:19 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 14:17:02 2012 -0700"
      },
      "message": "Add support for deep audio buffers\n\nAllow AudioSink to use deep audio buffering when the\nsource is audio only and its duration is more than\na certain threshold.\nThis helps improve battery life but implies higher\naudio latency.\n\nChange-Id: Ie79915b61c370292f05aabda9779356570e03cbb\n"
    },
    {
      "commit": "4110c101c3d0dd8dbc44c8d2d0edd3e2e7d6652f",
      "tree": "7bb39d31afac7348bb91093cc0e1c2d9aa49cba2",
      "parents": [
        "a1472d9883e35edd280201c8be3191695007dfd4"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Mar 29 09:31:28 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 02 09:19:03 2012 -0700"
      },
      "message": "Add gapless playback support for NuPlayer\n\nThis makes NuPlayer use a SkipCutBuffer when needed, and adds a new\nAudioSink method to retrieve the number of frames written so far, so\nNuPlayerRenderer can calculate how much data it can write without blocking.\nAlso make some more methods const.\n\nChange-Id: Id7d253ad8a7b85e9a84ca2baafbe32817b16c744\n"
    },
    {
      "commit": "559bf2836f5da25b75bfb229fec0d20d540ee426",
      "tree": "d7dd708b17eeca96a3e5d8bcc25a51ff3d1b5d0d",
      "parents": [
        "b0b2b4d890cf3bfb274797a759642b4e733343d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 10:29:14 2012 -0700"
      },
      "committer": {
        "name": "Anatol Pomozov",
        "email": "anatol.pomozov@gmail.com",
        "time": "Wed Mar 28 12:07:41 2012 -0700"
      },
      "message": "AV Android make files changes\n\no plus a few file relocation: ActivityManager.cpp/h, SoundPool.h, etc\no remove some runtime dependencies to libandroid, libandroid_runtime, etc\n\nChange-Id: I047a47c5fb361dd5cf85cd98798c39f629a75d10\n"
    },
    {
      "commit": "ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6",
      "tree": "99d5bb3a2f48f9a3ba3eaaf17e630b589e97bef1",
      "parents": [
        "cc1110dc92e53e9cc0afbb043e6ef8295bd9c5d5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:13:27 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:24:04 2012 -0700"
      },
      "message": "Provisional support for secure decryption of media streams.\n\nChange-Id: Ib3982a9c960bfdb0cb7e1b174440b141b194cfbe\n"
    },
    {
      "commit": "afed0e1fa37473a4cd30018577b560acc79d9a3f",
      "tree": "60e3a06c0cc8266f4ecaa45eb7d08c0c47a8b2dd",
      "parents": [
        "898b11f2aeaaa2bed84d963a3fcfd3b229e00b99"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 20 15:39:58 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Mar 22 13:18:08 2012 -0700"
      },
      "message": "Use NuPlayer for media playback everywhere\n\nif media.stagefright.use-nuplayer is set to true.\n\nChange-Id: Ibb217e7d7d5195b7feeea557554fe78e1585744c\n"
    },
    {
      "commit": "6c6b4d0d2b98a7ceee8b697daaf611f8df3254fb",
      "tree": "307356be51d237ee22f88affdc3376270d571be9",
      "parents": [
        "aa4397f07c43bd83bc3100b749401dc3d15e7622"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 12 14:37:53 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 12 21:28:57 2012 -0700"
      },
      "message": "Switched to use the header files in /frameworks/native\nand deleted the duplicate header files in /frameworks/base\n\no related-to-bug: 6044887\n\nChange-Id: I17e0692d9a9b5c8796ded36677c833ca8ab36795\n"
    },
    {
      "commit": "786618ffe881aceb64d65a6a2e2d76ede6e01ec0",
      "tree": "3e88f6c457f47529026207badf835dfa448ec8b8",
      "parents": [
        "e7c795f3300814aa3f26ceb845f29695383c7edc"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 02 14:54:07 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 02 17:26:49 2012 -0800"
      },
      "message": "Add channel mask in AudioSink\n\nAdd support for specifying a channel mask when opening an AudioSink.\n  This parameter does not replace the channel count parameter in order\n  to not have to duplicate the logic to derive a mask from the\n  channel count everywhere an AudioSink is used without a known mask.\n\nA mask of 0 (CHANNEL_MASK_USE_CHANNEL_ORDER) means a mask will\n  be automatically derived from the number of channels.\n\nUpdate existing AudioSink implementations to use the channel mask,\n  and users of AudioSink to specify the mask if available, and\n  CHANNEL_MASK_USE_CHANNEL_ORDER otherwise.\n\nChange-Id: Ifa9bd259874816dbc25ead2b03ea52e873cff474\n"
    },
    {
      "commit": "df712ea86e6350f7005a02ab0e1c60c28a343ed0",
      "tree": "75401d5ef563d1ae76aaae4965f65bb39f92736c",
      "parents": [
        "d3393c35259588e8ad61a43d1d1aa1568e943307"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Feb 25 18:48:35 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 13:03:08 2012 -0800"
      },
      "message": "fix libgui header location\n\nChange-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe\n"
    },
    {
      "commit": "2d8bedd05437b6fccdbc6bf70f673ffd86744d59",
      "tree": "1a11658a7379249eb4f6bd73b356baa4a661f41e",
      "parents": [
        "79af02c6a813b5d31fba3e7b72686a02f0ae7e0f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 21 14:38:23 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 22 16:20:59 2012 -0800"
      },
      "message": "Add new APIs AMessage::(set|find)Buffer to make it safer to pass\n\nABuffer objects through messages.\n\nChange-Id: I9f8b4e4c4767d0d70a0105e0c0813b754379b49d\n"
    },
    {
      "commit": "5778822d86b0337407514b9372562b86edfa91cd",
      "tree": "b8faf8188dfb8865bd88b4dfc778a7d9ab89bb73",
      "parents": [
        "c33305c5dd4cc06e71eb0c66a7150aa6ab647c99"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 21 11:47:18 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 22 15:06:06 2012 -0800"
      },
      "message": "Implementation of a java media codec interface and associated tools.\n\nChange-Id: I13e54062d4de584355c5d82bb027a68aeaf2923b\n"
    },
    {
      "commit": "29357bc2c0dd7c43ad3bd0c8e3efa4e6fd9bfd47",
      "tree": "3bdafe4b02fe36f6ee29c3170f0b0d2799bebf86",
      "parents": [
        "d709ca9c6a0fa1c8f40cbe624a119398643c5087"
      ],
      "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": "df64d15042bbd5e0e4933ac49bf3c177dd94752c",
      "tree": "ff04eb3e1a1ce8c8d8559b93a438f278d984aa87",
      "parents": [
        "b8a805261bf0282e992d3608035e47d05a898710"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156801\n\nBug: 5449033\nChange-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea\n"
    },
    {
      "commit": "2a8ce907a57f30ffa336a024e09752794d08ec1a",
      "tree": "fce5afddda0f1c0a7d310234494fcf6ae0d3d07e",
      "parents": [
        "42968939dfce0954d6540011199045ec4ed7de80",
        "a9960bcb176c58bd9d5f9062b84437a59fff875e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 10:46:14 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 15 10:46:14 2011 -0800"
      },
      "message": "Merge \"Fix build error when verbose logging is enabled\""
    },
    {
      "commit": "a9960bcb176c58bd9d5f9062b84437a59fff875e",
      "tree": "e6942825c6f708eb0244905038a6e90d73806175",
      "parents": [
        "eebeceec684a36222b4559e3157b0db04c0a67ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 08:27:40 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 08:34:59 2011 -0800"
      },
      "message": "Fix build error when verbose logging is enabled\n\nChange-Id: I30f4e5d35d1b24dce2e6152a13fd0fb61414a3e2\n"
    },
    {
      "commit": "d2927a79dc933a134e022281a4679a65e340dc3a",
      "tree": "df37d4c9284b27328073c30d7543977c8c9bf103",
      "parents": [
        "a3e52a846f1e299c4b205e2da698b184591d618e"
      ],
      "author": {
        "name": "Owen Lin",
        "email": "owenlin@google.com",
        "time": "Mon Dec 12 16:17:34 2011 +0800"
      },
      "committer": {
        "name": "Owen Lin",
        "email": "owenlin@google.com",
        "time": "Mon Dec 12 16:17:34 2011 +0800"
      },
      "message": "Fix the build. (Change LOGV to ALOGV)\n\nChange-Id: I14104540cfbd2bcdd7af1534db20554b88c4c0ce\n"
    },
    {
      "commit": "a3e52a846f1e299c4b205e2da698b184591d618e",
      "tree": "27447717d1d66b4c8fe20391c3805c13885463ee",
      "parents": [
        "aa5ba9a27f4c483ee116b7b296a681f4f8e23e62",
        "3b42170d4ceaef29daf6fef51c06dd3d88d99a67"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 09 18:09:21 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 09 18:09:21 2011 -0800"
      },
      "message": "am ebfce84f: am 68f592a8: Merge \"Don\\\u0027t perform RTSP seeks right away but queue them for 200ms\" into ics-mr1\n\n* commit \u0027ebfce84f7fd3e25fa08c36b155db91df90a59b3d\u0027:\n  Don\u0027t perform RTSP seeks right away but queue them for 200ms\n"
    },
    {
      "commit": "aa5ba9a27f4c483ee116b7b296a681f4f8e23e62",
      "tree": "272b4fa8657fe153eed988e69d5253dd7e0015f7",
      "parents": [
        "e154d13b47d7a2bf5968a7c6070da15814d3c544",
        "62c54ce5b09bab16dfabf18cc1f2dc1d9b35acf8"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 09 18:09:19 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 09 18:09:19 2011 -0800"
      },
      "message": "am aa82c39b: am 0ba9380a: Merge \"Fix Bitreader \"putBits\" implementation, make sure we emulate timestamps\" into ics-mr1\n\n* commit \u0027aa82c39bdb4ad9c1fdcb09f3bea11be5197d3ce6\u0027:\n  Fix Bitreader \"putBits\" implementation, make sure we emulate timestamps\n"
    },
    {
      "commit": "b7b9c7b47a771e550124ae269a7b1be262039b95",
      "tree": "b3a6159135c39e43306d25f3c2dd5689d0841777",
      "parents": [
        "1906e5c7492b9cbc88601365536a69e9a490c963",
        "ee736e9e74c5368db8d63214513c85cb74bb0183"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 08 13:33:16 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 08 13:33:16 2011 -0800"
      },
      "message": "Merge \"Don\u0027t perform RTSP seeks right away but queue them for 200ms\" into ics-mr1"
    },
    {
      "commit": "ee736e9e74c5368db8d63214513c85cb74bb0183",
      "tree": "0429919e29c8bf29d834f99bf39b7a7eccb99c89",
      "parents": [
        "894f3ca9a9f94225bb64f36847508a91d0b17a6e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 08 13:04:50 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 08 13:04:50 2011 -0800"
      },
      "message": "Don\u0027t perform RTSP seeks right away but queue them for 200ms\n\nand only execute the last one.\n\nChange-Id: I9ab342396ec9c9c03624a4b0306d1e180ceca000\nrelated-to-bug: 5732960\n"
    },
    {
      "commit": "1906e5c7492b9cbc88601365536a69e9a490c963",
      "tree": "e6cb486b8987b716312076a28c695c10115fe61a",
      "parents": [
        "894f3ca9a9f94225bb64f36847508a91d0b17a6e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 08 12:27:47 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 08 12:27:47 2011 -0800"
      },
      "message": "Fix Bitreader \"putBits\" implementation, make sure we emulate timestamps\n\nif we don\u0027t receive npt time mapping from the rtsp server (i.e. live stream)\n\nChange-Id: I5147d665bd90c9a303ad6ffdafbf770f930f917c\nrelated-to-bug: 5660357\n"
    },
    {
      "commit": "ea9d51bd710e6739077a3700f27a1c37767a2f6d",
      "tree": "bd2df5e1d9f4f5a95976779aa7f73d7e4989c6c3",
      "parents": [
        "37a153f450cb8550fe64a1bf62366cf5e944d6ab",
        "8a1fac32b307cfa096b343f219d471365b657ad8"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Nov 30 09:53:40 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Nov 30 09:53:40 2011 -0800"
      },
      "message": "resolved conflicts for merge of 3d630e86 to master\n\nChange-Id: I9eb7b7c1668b5f0de85ec8b1e9257cf1ec4d8b9e\n"
    },
    {
      "commit": "c089d02cf2bddf1bba6eaa2b2fcce149dc44633e",
      "tree": "b1370ec48d21e9052eb0b040814f91638ebc3a18",
      "parents": [
        "eca36b5a1759970bc3d0373d72d6fec7c9b7e944",
        "6bf045c85526312b198733ac8113cc213c8d79c9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 16:33:02 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 29 16:33:02 2011 -0800"
      },
      "message": "am 074133b2: am 351143fb: Merge \"Updated (internal) API for IStreamSource to signal discontinuities\" into ics-mr1\n\n* commit \u0027074133b260f8d12e484e93b9aa5a33a4983b7349\u0027:\n  Updated (internal) API for IStreamSource to signal discontinuities\n"
    },
    {
      "commit": "eca36b5a1759970bc3d0373d72d6fec7c9b7e944",
      "tree": "b7926335dcc15adaec73e4cfd4b53068c32a74f5",
      "parents": [
        "404a123bed7f180724ead17f10e037b3eb347701",
        "b19386fe52b727524de59a7673b2f56b2e707d51"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 15:14:44 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 15:14:44 2011 -0800"
      },
      "message": "resolved conflicts for merge of 998a929a to master\n\nChange-Id: Id5cfbcf20e5ec28782cc88075040cf9edebfdfe8\n"
    },
    {
      "commit": "7609b2304379fd6d3e5c8d13a34c680441dc48b6",
      "tree": "8cd10d7ed5228247ee71cdf01dd8619ab1ee4999",
      "parents": [
        "5274010d068b05333e3e5544d59ca284802b1a8e",
        "b58ce9f5e8d0696f9571a94ba5fc05f4500f663f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 14:09:10 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 29 14:09:10 2011 -0800"
      },
      "message": "Merge \"Make sure we can properly shutdown even if\" into ics-mr1"
    },
    {
      "commit": "544ee287d01d98efbe9eeeaeb7016c8dd55e3748",
      "tree": "8a757cc879f9a06bf4b13a94d3831a48787871dd",
      "parents": [
        "6e3d311b6631b12aac2879d1b08c3534aece78b1",
        "bfcc8d8ab7c56bc013bd221a29e1ecf3a6390813"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 14:08:45 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 29 14:08:45 2011 -0800"
      },
      "message": "Merge \"Updated (internal) API for IStreamSource to signal discontinuities\" into ics-mr1"
    },
    {
      "commit": "bfcc8d8ab7c56bc013bd221a29e1ecf3a6390813",
      "tree": "0469bc8cc740ad84a42b502ba57e02b3e520748a",
      "parents": [
        "7cafbb32999049873d4746ba83bd20c88abe6ce6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 11:57:35 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 11:59:10 2011 -0800"
      },
      "message": "Updated (internal) API for IStreamSource to signal discontinuities\n\nChange-Id: Idd4b9d8e7cec16b3e3c91c70e75144d42be30f96\nrelated-to-bug: 5553055\n"
    },
    {
      "commit": "6e3d311b6631b12aac2879d1b08c3534aece78b1",
      "tree": "001b5d677ee599a4d6f8d1ba636fbf4e5f0c6a4e",
      "parents": [
        "7cafbb32999049873d4746ba83bd20c88abe6ce6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 28 12:36:11 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 28 16:45:13 2011 -0800"
      },
      "message": "Finer granularity discontinuity support.\n\nNo clients can signal a format change on either audio or video track (or both)\nand a time discontinuity (timestamps changed) independantly.\n\nChange-Id: I3e6cf4e7c260e85759879d61a9b517f68431c22f\nrelated-to-bug: 5553055\n"
    },
    {
      "commit": "b58ce9f5e8d0696f9571a94ba5fc05f4500f663f",
      "tree": "4c30ef7b134b02bd84cb0d7dc7407c27f5c945a3",
      "parents": [
        "7cafbb32999049873d4746ba83bd20c88abe6ce6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 28 16:27:35 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 28 16:27:35 2011 -0800"
      },
      "message": "Make sure we can properly shutdown even if\n\na) one of the two decoders has a pending discontinuity\nb) the renderer holds on to all output buffers for that decoder\nc) the renderer is paused\n\nif all three conditions are met the decoder won\u0027t ask for more input data\nand therefore never see the discontinuity.\n\nTo avoid this we briefly resume the renderer just before shutting down.\n\nChange-Id: I9e08af2a1eb4298d1cd00497d6aa33f4ad184e9a\nrelated-to-bug: 5655016\n"
    },
    {
      "commit": "fa1e6f99cd4f2e23e23dbbb1fd43041fcd32fe9e",
      "tree": "172888e8812d41d54169efe2dcb5cd90b79adf26",
      "parents": [
        "471af5aaea2d2491a77dba379771f7c96b9ca3c3",
        "32f0a8c022fa733aa721c607df330a5d4a0a1b32"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 09 21:19:00 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 09 21:19:00 2011 +0000"
      },
      "message": "am bb1b7d5c: am 19998120: Merge \"Bug 5478024 drop after decode if can\\\u0027t drop before\" into ics-mr0\n\n* commit \u0027bb1b7d5cb3c5502484269bfd0cdcd0d5a6d6bfad\u0027:\n  Bug 5478024 drop after decode if can\u0027t drop before\n"
    },
    {
      "commit": "b5d340314ac6da461f15fe4d1db996ae28770d67",
      "tree": "cf6832c7d73a0ecf7237880dc2401ce5f4738fc9",
      "parents": [
        "a47b69c6f7c6fe0044ebcb2d0790ce3548de56fd",
        "683525b61bc1b58b4fd9e1b3ef9ed3b0c3bf34ae"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 09 16:41:19 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 09 16:41:19 2011 +0000"
      },
      "message": "am 19998120: Merge \"Bug 5478024 drop after decode if can\\\u0027t drop before\" into ics-mr0\n\n* commit \u002719998120f53caceb620f138c6eea182f1e693660\u0027:\n  Bug 5478024 drop after decode if can\u0027t drop before\n"
    },
    {
      "commit": "32f0a8c022fa733aa721c607df330a5d4a0a1b32",
      "tree": "137390c51b874b2ed79e17963f77e9f296dd8595",
      "parents": [
        "936a981ba15d528a023311aa32f46446813551d9",
        "683525b61bc1b58b4fd9e1b3ef9ed3b0c3bf34ae"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 09 14:35:18 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 09 14:35:18 2011 +0000"
      },
      "message": "am 19998120: Merge \"Bug 5478024 drop after decode if can\\\u0027t drop before\" into ics-mr0\n\n* commit \u002719998120f53caceb620f138c6eea182f1e693660\u0027:\n  Bug 5478024 drop after decode if can\u0027t drop before\n"
    },
    {
      "commit": "471af5aaea2d2491a77dba379771f7c96b9ca3c3",
      "tree": "29609e7feb5c548e28ce94f88b4445c5c373d725",
      "parents": [
        "3b86c964df855a9740c446e984309b719c3ec37c",
        "936a981ba15d528a023311aa32f46446813551d9"
      ],
      "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": "936a981ba15d528a023311aa32f46446813551d9",
      "tree": "324a081cdeffe2566802e2224dfa9b9798182c05",
      "parents": [
        "e1a8a719c7c62fdb337b71f68844ae20042c2b79",
        "3901e5d87573447db33fb9930871a1f5266a9b2c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 08 08:48:31 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 08 08:48:31 2011 -0800"
      },
      "message": "Merge \"Remove surface legacy APIs and code.\" into ics-mr1"
    },
    {
      "commit": "683525b61bc1b58b4fd9e1b3ef9ed3b0c3bf34ae",
      "tree": "495b8c8bd23d3d1114b0538aa92030a7dcf90693",
      "parents": [
        "ee74c46968e632915bdff1af5d59a1b2ca3ac796"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 04 18:05:35 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 04 18:05:35 2011 -0700"
      },
      "message": "Bug 5478024 drop after decode if can\u0027t drop before\n\nChange-Id: Iaa64553be1a710da5d42be4e3a1e1d6dc873e371\n"
    },
    {
      "commit": "ee74c46968e632915bdff1af5d59a1b2ca3ac796",
      "tree": "bf203cb52a3c051c326dc2c9c65c7f367abbcc86",
      "parents": [
        "2cf981a8e3dcc815e422f21ae4f09e17934906e1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 03 11:00:21 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 03 18:15:43 2011 -0700"
      },
      "message": "DO NOT MERGE Poll input data with a small timeout and don\u0027t consume a full core.\n\nChange-Id: I3c288698920fe6ead0df24a52330483609821a41\nrelated-to-bug: 5549263\n"
    },
    {
      "commit": "0bdcaf9c5466cf9c84a8c98e160411ab74f05f4b",
      "tree": "88193780bffad233d9cb7237a83bda250c364c11",
      "parents": [
        "ef7a78943ddbd22170cbf430aa9d2b2d9603d69c",
        "1183a4ab06b9fe01fe39a4b8728bfc71789361fc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 03 18:12:39 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 03 18:12:39 2011 +0000"
      },
      "message": "am e395f645: Poll input data with a small timeout and don\\\u0027t consume a full core.\n\n* commit \u0027e395f645aa4c30a4fad8beb3da6f8fad72338617\u0027:\n  Poll input data with a small timeout and don\u0027t consume a full core.\n"
    },
    {
      "commit": "1183a4ab06b9fe01fe39a4b8728bfc71789361fc",
      "tree": "00ddd671c9cccb82663b0b6928880307f25af975",
      "parents": [
        "254c2211b5088bb7d84d7126306aad7763b58372"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 03 11:00:21 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 03 11:00:21 2011 -0700"
      },
      "message": "Poll input data with a small timeout and don\u0027t consume a full core.\n\nChange-Id: I3c288698920fe6ead0df24a52330483609821a41\nrelated-to-bug: 5549263\n"
    },
    {
      "commit": "3901e5d87573447db33fb9930871a1f5266a9b2c",
      "tree": "2ed377c9705a41c95cbc6ea29d683cd646ff2dc8",
      "parents": [
        "841fa37451fb74f3d5978a15aab606bbb67e8c39"
      ],
      "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": "d7a07f295a291496111b56a4886411c237ba6dc9",
      "tree": "ab70a053878c6b511317e91790cfb0d824b3e641",
      "parents": [
        "4b8bb4ee7d1d64dc1cd5478a3772f97e4a4a00d7",
        "841fa37451fb74f3d5978a15aab606bbb67e8c39"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 28 16:17:54 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 28 16:17:54 2011 +0000"
      },
      "message": "am 27ed1249: Merge \"Properly report that we\\\u0027re no longer playing after receiving event\" into ics-mr1\n\n* commit \u002727ed12492dfbec6ec67b66ff3cf60febce370b01\u0027:\n  Properly report that we\u0027re no longer playing after receiving event\n"
    },
    {
      "commit": "a4af2143ecbd630e946647c1b5f90fda8f61ebb3",
      "tree": "90937772071f770fd7fb21a17a0ddb1f05d4b936",
      "parents": [
        "1d2acaffde56ad79e6e96f228d7857863462397c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 26 15:23:31 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Oct 26 15:23:31 2011 -0700"
      },
      "message": "Properly report that we\u0027re no longer playing after receiving event\n\nMEDIA_PLAYBACK_COMPLETE or MEDIA_ERROR.\n\nChange-Id: I03eeba751d3728adb33d9c66de4c7444a91696f3\n"
    },
    {
      "commit": "3856b090cd04ba5dd4a59a12430ed724d5995909",
      "tree": "a24e4c98fa6049fd8085826be838000f9a67e39b",
      "parents": [
        "1d2acaffde56ad79e6e96f228d7857863462397c"
      ],
      "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": "2bfdd428c56c7524d1a11979f200a1762866032d",
      "tree": "83bb72ba82f689cc704010c06a51a9963479bab4",
      "parents": [
        "f337772630b0a1b48d7828647d1079ebdc22919d"
      ],
      "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": "eac68baf095aeef54865c28b6888924dc6295cbd",
      "tree": "a1ca9c5de638d21e07be1aab9f25d01e118597e7",
      "parents": [
        "797ab6072402b12721dc226a9ebde3546e7640e9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 27 12:12:25 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 27 12:13:37 2011 -0700"
      },
      "message": "Signal an appropriate error even if there are no active streams yet.\n\nChange-Id: I3ac1053ad288558b62ee18056dfd0a9ce0da8f49\nrelated-to-bug: 5372901\n"
    },
    {
      "commit": "dc9bacd838442a524585887e6ea6696836be2eda",
      "tree": "230135b6bc20bff2be5a8292e91c0fac86201039",
      "parents": [
        "ece731de0c0af30917316d55313f25c56f91960d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Sep 26 10:53:29 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Sep 26 10:53:29 2011 -0700"
      },
      "message": "Propagate error signalled by the source all the way to the output EOS notification.\n\nChange-Id: I30e959a6d669f09745c59fbdebee08f869511cf7\nrelated-to-bug: 5372901\n"
    },
    {
      "commit": "dc7747d7da61a72b6d26dacf7569de9455d77474",
      "tree": "45ba6cb15ed555139bf1e7a68901bdb1e69cc421",
      "parents": [
        "ad8e8bfea2da077248a9f217c029e14fefb01096"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 21 10:40:01 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 21 10:40:01 2011 -0700"
      },
      "message": "Bug 5234242 audio continues after discontinuity\n\nReduce to 8 buffers of 10 packets from 16 buffers of 20 packets.\n\nChange-Id: Ifdb5e15535989fbb6e5e1b70d5f9f71dc66a5c83\n"
    },
    {
      "commit": "3fe62150fa3dd6d25cb84aad80bc9e27ddd16c45",
      "tree": "4d969afd449d31381899275bf9b9fa2a87f9a24e",
      "parents": [
        "078cfcf7cce9185ec7559910d08b0bc02bfc88a3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 16 15:09:22 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 16 15:19:59 2011 -0700"
      },
      "message": "In order to recover from video lagging behind audio, drop avc frames\n\nthat are not referenced by other frames before feeding them into the decoder.\n\nChange-Id: I822190af8f8329567bff8da1ea23136d0a765481\n"
    },
    {
      "commit": "078cfcf7cce9185ec7559910d08b0bc02bfc88a3",
      "tree": "d4fb458318a3f0b3982b05e0c79a2cfc447dd732",
      "parents": [
        "5dc2812abddde309234edc786a541d251c4f820a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Sep 15 12:25:04 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 16 10:44:02 2011 -0700"
      },
      "message": "Various improvements to nuplayer playback\n\n- Drastically cut down the number of times we supply the AudioSink with data\nby estimating the time until the sink would run out of data and then scheduling\na refill in advance of that.\n\n- Use a dedicated looper for video decoders since they are currently taking\ntoo long to return from OMX_FillThisBuffer (bug 5325201)\n\n- Revise thread priorities for the OMX dispatcher and software codecs, instead\nof running them at ANDROID_PRIORITY_AUDIO, they now only run at\nANDROID_PRIORITY_FOREGROUND\n\n- Since threads created by pthread_create inherit all of the parent threads\nattributes including thread priority, briefly reset thread priority to\nANDROID_PRIORITY_FOREGROUND before instantiating OMX components and then\nrestore it.\n\nChange-Id: If9332a3a20dad5485333d68c11de0d2d5d3fffc3\n"
    },
    {
      "commit": "714aa7b7c52ce07d5fb44870c0853b4d8e5a758e",
      "tree": "57b8bef529101db2340303e0d6c5a842f2cd9aaf",
      "parents": [
        "9215ea4cd8bc5f9c9770c5c34a009dc7c6068f86"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 13 08:28:38 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 13 09:48:22 2011 -0700"
      },
      "message": "Don\u0027t post position updates too frequently\n\ni.e. don\u0027t hog my message queue.\n\nrelated-to-bug: 5284760\nChange-Id: I8e2d36a11dbee1567b18ed13dc5257a65c6eeda7\n"
    },
    {
      "commit": "06528d7f18ad01377357d337eaa3e875a242bd2d",
      "tree": "c08f45ba206b07b864f7a153f65fc739ae51fe1c",
      "parents": [
        "18ac5407da14dad9731f40ffc9a56bee73830019"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 31 16:29:05 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 31 16:29:05 2011 -0700"
      },
      "message": "I have one HLS stream that switches stream PIDs from one bandwidth to the next\n\nthis change intends to support its very limited case and signals an error in\nall other cases of unexpected PID changes that we cannot recover from.\n\nChange-Id: Icbfdf9fe7461969e2a8781ed416f54d891dd789a\n"
    },
    {
      "commit": "18ac5407da14dad9731f40ffc9a56bee73830019",
      "tree": "f7574b9ebd7cd610f873d064a0dee23a32b16a4b",
      "parents": [
        "935456794a8d572368ebe942d13451f7d71a9f4e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 31 15:04:25 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 31 15:35:49 2011 -0700"
      },
      "message": "Discontinuities are only signalled on streams that have been identified, i.e.\n\nthose that have a queue. This ensures that the player doesn\u0027t observe discontinuities\nthat don\u0027t match up across streams.\n\nAlso, make sure output buffers arriving from the decoder to be rendered are sent\nback to the decoder if we started flushing.\n\nFinally, don\u0027t parse TS packets for streams we don\u0027t support. And don\u0027t allocate\nmemory for them.\n\nChange-Id: I708e0de4cba8110a62e4c8ceb1e5702430d5d2bb\n"
    },
    {
      "commit": "c4c17d47b674b425fb6c399822c0ab3258543c0a",
      "tree": "7e41c2ed3db28d1c61ddd28175b19c2d954f3549",
      "parents": [
        "13e6dfbd77a6e2c2832cbfe6dc66f3db8716538b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 30 16:06:28 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 30 16:06:28 2011 -0700"
      },
      "message": "ATSParser now supports a mode in which PTS is considered to be absolute time\n\ni.e. PTS 0 \u003c\u003d\u003e media time 0\n\nChange-Id: If10a0f98c129b95e8430dc419664b1def92e547e\n"
    },
    {
      "commit": "cb67cd1b51ff9ab221e3124cf7e546515fef3c87",
      "tree": "9bc33d4f184b31279929c4f59544444fe5442984",
      "parents": [
        "8d9d585ce5b1aa284289a27dda048c6317b104e7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 26 16:02:19 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 26 16:02:19 2011 -0700"
      },
      "message": "Signal errors to the client instead of asserting in ACodec.\n\nAlso make sure NuPlayer can properly shutdown in certain edge cases.\n\nChange-Id: Iceb16d600d87ba66c802e60e95bf62f66487a453\n"
    },
    {
      "commit": "c92fd24c10a6bf80b346d7e261325434d9c6964b",
      "tree": "073315512c82b4a50de81e1fdfcb5b35db0ad1a1",
      "parents": [
        "a5cc7cce9b8aee73b08f6532710e186c02fdd1c0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 16 13:48:44 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 16 13:48:44 2011 -0700"
      },
      "message": "Error handling in ACodec and Nuplayer.\n\nCodec errors (and codec not found errors) now trigger a controlled shutdown\nof playback and signal errors to the MediaPlayer client.\n\nChange-Id: I2ee23ff2a1422d05a1a21e50ecb87d7c7ab958cc\n"
    },
    {
      "commit": "2048d0cfccce48be26816dec8711a6691ebff71c",
      "tree": "113376110542a7e55960aaae648bb8a836d4f1c0",
      "parents": [
        "4378ace44b9de477608a6c2fbf7134bc0345555f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 15 16:25:41 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 15 16:26:47 2011 -0700"
      },
      "message": "Fix seek behaviour at startup and teardown of media session that hasn\u0027t been started\n\nNuplayer specific.\n\nChange-Id: I7b0be52c29bdb7032414d63c503d686df7844bf6\n"
    },
    {
      "commit": "42e549e4ab54802d788c43e3a04a85b7a1a95e97",
      "tree": "6bf620f639533f345089df3902a93109028bed4e",
      "parents": [
        "9cded98816c40fd55053b1e38fc7fd8a68da8866"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 13 09:36:11 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jul 13 09:47:09 2011 -0700"
      },
      "message": "Enable signalling of a stream discontinuity involving a format-change\n\nthrough IStreamListener.\n\nChange-Id: Ic0409cdc4891ad26b61f2f98bdda3c7fb2e2de6a\nrelated-to-bug: 5022434\n"
    },
    {
      "commit": "9b80c2bdb205bc143104f54d0743b6eedd67b14e",
      "tree": "7a035b1bbc67096fa775d41544f420a5eb6e0487",
      "parents": [
        "cebcdaef5b559f4db2a9d8b305d9d7da03525b62"
      ],
      "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": "386d609dc513e838c7e7c4c46c604493ccd560be",
      "tree": "d7352f19380578d525ad4a667e51a66ed84e2d58",
      "parents": [
        "ade8c2d682d4f8c9424dece53e39400c237d22bf"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 19 08:37:39 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 25 15:57:07 2011 -0700"
      },
      "message": "Support mpeg1,2 audio and mpeg1,2,4 video content extraction from .ts streams.\n\nChange-Id: I9d2ee63495f161e30daba7c3aab16cb9d8ced6a5\n"
    },
    {
      "commit": "00f4951088805442e86ff9c2a20ddad79fc2410a",
      "tree": "b906d1e8f1fdd326aefe6762b477c383ae9df8d8",
      "parents": [
        "bbba88cb1bdc34705d1477208990a06904c022e7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed May 11 14:15:13 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 12 11:24:13 2011 -0700"
      },
      "message": "The decoder wrapper is no longer needed. Also disable building old-style decoders.\n\nChange-Id: Ie022f1a6dffe619c1b0385aa13f63e097282cfe4\n"
    },
    {
      "commit": "4f9e47f2c03ce36261c4717cd7e131d7940bb068",
      "tree": "5c3fc9eacd2d81b02cb45c050336c28ea924842e",
      "parents": [
        "d0675ede6de2249256d20271a19ccbf9f11745b8"
      ],
      "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": "ad0d9c9c39a24b7fbd94e935a5855c9025341929",
      "tree": "1757b447d0d0ecb2d5d275dbb0506d3140939abc",
      "parents": [
        "7bf8413f91fc072452f315a91618aeef2574d420"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 19 11:50:27 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 20 09:22:06 2011 -0700"
      },
      "message": "Add extra headers specified in the media player\u0027s setDataSource call\n\nto all http requests made by the http live implementation.\n\nChange-Id: I9dd78bb261bc678ea98c82009ca2634b74f3cd58\nrelated-to-bug: 4315346\n"
    },
    {
      "commit": "9b7d950f1f3b0c526712b713dbceb0e22762c015",
      "tree": "087e6194a7eb4c3996860312bd340ca06f080cbb",
      "parents": [
        "ebd5d2541d4e5351fd1f1a23fc9ef047cfa67575"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 21 11:49:00 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 21 11:49:00 2011 -0700"
      },
      "message": "Fix issue 3483718: audio streaming and A2DP.\n\nThe problem is that when switching from A2DP to device speakers or headset,\nThe AudioTrack binder interface to AudioFlinger must be destroyed and restored\nto accomodate new buffer size requirements. Current AudioTrack implementation\ndid not restore properly the PCM buffer write index which caused a mismatch between\nthe written frame count in the mediaplayer renderer and the AudioTrack. The renderer\ncould then believe the AudioTrack buffer was full and stop writing data preventing the\nAudioTrack to reach a bufffer full condition and resume playback.\n\nThe rendered was also modified to refresh the AudioTrack frame count (buffer size)\ninside the write loop in NuPlayer::Renderer::onDrainAudioQueue() as this count can change\nfrom one write to the next.\n\nAlso modified AudioTrack::obtainBuffer() to check for track invalidated status before\nquerying for available space in the buffer. This avoids writing to the old track\u0027s\nbuffer until full before detecting the invalidated condition and create a new track.\n\nChange-Id: I16a857e464e466880847f52f640820aa271539ad\n"
    },
    {
      "commit": "32f3cefa373cd55e63deda36ca9d07c7fe22eaaf",
      "tree": "b8ff788f27c04b39b7959783a53e7a138cdff3e6",
      "parents": [
        "3fd91baee812919f53a85c5c05f32606313f8334"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Mar 02 15:34:46 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Mar 02 15:38:32 2011 -0800"
      },
      "message": "Allow optional specification of a PTS timestamp when signalling a discontinuity.\n\nIf present, rendering will be suppressed until reaching the timestamp.\n\nChange-Id: Ic64bdf4225063c5a4d042ea9809960b843a46d19\nrelated-to-bug: 3489454\n"
    },
    {
      "commit": "827b55c5f3409b68ef57816208220d8804693e44",
      "tree": "65876f2b881d52f6a3fec94564a0baf0d0802627",
      "parents": [
        "72feaa5df1f7b15b18e30592653dc511dc0b8c51",
        "7314fa17093d514199fedcb55ac41136a1b31cb3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 24 14:49:10 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 24 14:49:10 2011 -0800"
      },
      "message": "Merge \"Suppress the logging of URLs when in incognito mode.\""
    },
    {
      "commit": "7314fa17093d514199fedcb55ac41136a1b31cb3",
      "tree": "87378f5d573dd94da744bdecf42f011dad05abea",
      "parents": [
        "9287abf2657bee9464965c37bdaa866d023c9d89"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 24 14:42:48 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Feb 24 14:42:48 2011 -0800"
      },
      "message": "Suppress the logging of URLs when in incognito mode.\n\nChange-Id: Ib951b495eae15669e160ef54686eab0eeb9b366a\nrelated-to-bug: 3336575\n"
    },
    {
      "commit": "1173118eace0e9e347cb007f0da817cee87579ed",
      "tree": "d2d23b2120010097d1edda29cd0adffd938105c3",
      "parents": [
        "f7f3e824a8cb2b38355db8e4f99e43b90ee71ce4"
      ],
      "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": "bc7f5b2e56107cfeaeeab13cf8979379e3c2f139",
      "tree": "dffbfa1a0c661a0bd986d3ef8d80287cb0bcc513",
      "parents": [
        "b408222bd9479c291874b607acae1425d6154fe7"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 10:15:23 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 10:34:40 2011 -0800"
      },
      "message": "Some tweaks to HTTP live / nuplayer behaviour\n\n- play audio-only streams again\n- workaround for malformed streams that switch PIDs across bandwidths\n- attempt to pick a different bandwidth stream if the previously chosen one appears\n  to be malformed/unsupported.\n\nChange-Id: I426d0a40dc725aa242f619d4c9d048b69aca55c9\nrelated-to-bug: 2368598\n"
    }
  ],
  "next": "b408222bd9479c291874b607acae1425d6154fe7"
}
