)]}'
{
  "log": [
    {
      "commit": "9a8ded7348c5b2302dd27b285b395416bc842c49",
      "tree": "6244771b557279b7b8b8b574821b0afd80f252b2",
      "parents": [
        "aa70226152d2084f85a96b52359dbc8476a86a45"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:45:03 2012 -0800"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)\n\nChange-Id: I1de629b4632a4b3187ca1a28d6416daccd35f924\n"
    },
    {
      "commit": "aa70226152d2084f85a96b52359dbc8476a86a45",
      "tree": "d9514686932670c9cd427232b9653b53ea6c5ca7",
      "parents": [
        "53feeb42c721e8fc9285e35e679906a951f3277c"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:59 2012 -0800"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)\n\nChange-Id: I8fbdfa7a7581f481968dbb65aa40f7042936d7cb\n"
    },
    {
      "commit": "53feeb42c721e8fc9285e35e679906a951f3277c",
      "tree": "bb48afd280bf7429d61229bfba2e733aa2805711",
      "parents": [
        "52546c0ef96aa3e7e21482e0f9b6e982557c8da9"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:56 2012 -0800"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)\n\nChange-Id: I26f76452ac49e2890b14d133c065493d8df0fb4a\n"
    },
    {
      "commit": "52546c0ef96aa3e7e21482e0f9b6e982557c8da9",
      "tree": "54c28e0c5bf254aa29169a58baba8c1ff10b468e",
      "parents": [
        "3812256de32e73e38ba16e50ac0451c10223d4eb"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:50 2012 -0800"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)\n\nChange-Id: I44f267700356967dc51e8f85ebf457dc85cfb229\n"
    },
    {
      "commit": "3812256de32e73e38ba16e50ac0451c10223d4eb",
      "tree": "36738b11682c48374dc44c0b7c2a48a04986a019",
      "parents": [
        "b676a05348e4c516fa8b57e33b10548e6142c3f8"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Oct 20 11:56:00 2011 +0100"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:31 2012 -0800"
      },
      "message": "Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF)\n\nChange-Id: I5321ebd12e9c6248a108529e82c4e1af2a4405e3\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": "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": "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": "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": "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": "841fa37451fb74f3d5978a15aab606bbb67e8c39",
      "tree": "3a5aa72aca0d0eeed60d8a17e8c84ffe59ecbeba",
      "parents": [
        "262620399c228b3b201c2c4b39c87508d3047d74",
        "a4af2143ecbd630e946647c1b5f90fda8f61ebb3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Oct 28 09:13:54 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 28 09:13:54 2011 -0700"
      },
      "message": "Merge \"Properly report that we\u0027re no longer playing after receiving event\" into ics-mr1"
    },
    {
      "commit": "262620399c228b3b201c2c4b39c87508d3047d74",
      "tree": "96e7fd612606424311873d34492def7da58bd6d8",
      "parents": [
        "be1480bade58688d201335860247734aec6b11cb",
        "7dae00baa6e8957be15523c46bb948bd1dde64c3"
      ],
      "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": "7dae00baa6e8957be15523c46bb948bd1dde64c3",
      "tree": "195997b2a0541d250d8ad61ae08232046bbd62bd",
      "parents": [
        "1765d6e0c962d2b89897c0278f969084f632d181"
      ],
      "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": "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": "d24bac2f9e83d3dbc0ef9d2aae3b8ad8e4d2b731",
      "tree": "e653b32aa31661e403d313439e1f2d6914cc9fb6",
      "parents": [
        "545d1e935b8ee12255bbd443a89a4b8ec2aeeb35",
        "2e5bcd4a0d1f3078acfd88785aa29923ae03a3bb"
      ],
      "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": "e579e28089c6b86f56d257030b778c5e22b1a5a5",
      "tree": "870e0181874d16cba160ab7ad46202ad7a00292a",
      "parents": [
        "c4ff709bd714286ea4b1eaf8d932c43a02d5430d"
      ],
      "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": "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": "b832a03d563dd000faa44f2577e92237525edc32",
      "tree": "8b8732367ca530715553bd1e215a48161581b8a1",
      "parents": [
        "ec35a1416472865dbebc22b10199ad718ed2cc95"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Oct 05 20:02:05 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Oct 05 20:43:52 2011 -0700"
      },
      "message": "Fix an issue where we should allow negative values but did not\n\nChange-Id: Ia8d718b4e6aec4c17db86e30134132f767fd72c5\nrelated-to-bug: 5419527\n"
    },
    {
      "commit": "dd115cd3b1429a39f1c8e77cbdf03e760ebdb6c3",
      "tree": "ed3e70d787dbc6fd3e9a2ebb59ad7d088251c7fb",
      "parents": [
        "82fd03b854a5e6879dc9eb6d57962414e7082894",
        "eac68baf095aeef54865c28b6888924dc6295cbd"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 27 13:36:22 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 27 13:36:22 2011 -0700"
      },
      "message": "Merge \"Signal an appropriate error even if there are no active streams yet.\""
    },
    {
      "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": "82fd03b854a5e6879dc9eb6d57962414e7082894",
      "tree": "761dbf7ef3ac4853c5b0e3806568376ddf639141",
      "parents": [
        "797ab6072402b12721dc226a9ebde3546e7640e9",
        "9cb839a0fcc98fe4278b39afb8b6d664c04f1673"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 27 10:32:17 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 27 10:32:17 2011 -0700"
      },
      "message": "Merge \"Fix issue 5373048: AudioCache decode errors\""
    },
    {
      "commit": "9cb839a0fcc98fe4278b39afb8b6d664c04f1673",
      "tree": "f5847d0d1994489a829368b12c4998dcf229c926",
      "parents": [
        "ece731de0c0af30917316d55313f25c56f91960d"
      ],
      "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": "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": "d681bbb1767bed09415e050ba78975df214bcd68",
      "tree": "2030c617c61bbf7b6cd8c6bafab601a99b1ac83d",
      "parents": [
        "d942202ee0c92608c648735c3ad0f1bab4312420"
      ],
      "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": "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": "63970b42f101c87db7cfd26d43b0d300260b1582",
      "tree": "5e358f4f34709bc1663723fc094b7d888b7a86d9",
      "parents": [
        "1b5a697dc5435c76447eb5a2de373f5acdda119e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 29 13:01:23 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 29 13:01:23 2011 -0700"
      },
      "message": "Return an error to the client instead of asserting if decoder instantiation fails\n\nafter a surface change.\n\nChange-Id: Ic7758cbeb107032db68a1c3b8e2984710a12dd8b\nrelated-to-bug: 5212725\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": "db29e5238e28d59978755a2ff2e7e0f05393abdf",
      "tree": "bc6a7aa136f0397facbce93eb5204a4e61e3a2eb",
      "parents": [
        "a2e0a4259191fc486e0f563b992e3eadd7f9ae4b"
      ],
      "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": "a23456b306f35b9ecf973bf5818ca39295e9e029",
      "tree": "306cdb8f5f84adc84f2ecf7e5a34c80d988b9818",
      "parents": [
        "ea7c2fea6a031d37270cb5b22b432729626b266d"
      ],
      "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": "3cecf640c4daf2df616b278bd9986018c8182908",
      "tree": "0a9a7306e8a13af5a7149471569ca73827449aee",
      "parents": [
        "77882a8deb5167235ae591e49c9dcff9abb373c1"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 29 16:56:52 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jul 24 10:33:54 2011 -0700"
      },
      "message": "Do not support still image capture mode for timelapse video recording\n\nrelated-to-bug: 4973779\n\nChange-Id: Ica665217ab10247b2242acc4e93d4fe9f83e3f45\n"
    },
    {
      "commit": "b33f3407bab0970a7f9241680723a1140b177c50",
      "tree": "8c49b51867769176b088f5ee2dbecd69c188464f",
      "parents": [
        "fe388eedca9f46ed3fee9579258acecd93e88641"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Jul 01 17:39:39 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Jul 22 14:17:25 2011 -0700"
      },
      "message": "Connect MediaRecorder Native to SurfaceMediaSource\n\nMaking a connection from MediaRecorder Native layer to the\nSurfaceMediaSource for the purpose of encoding GL Frames. This will be\ncalled from the java side inside the Mobile Filter Framework.\n\nThe mediarecorder native layer (client), when set the videosource to\noption VIDEO_SOURCE_FRAMES, asks the StageFrightRecorder on the mediaserver\nside to create a SurfaceMediaSource object and pass it back as a\nsp\u003cISurfaceTexture\u003e object. Using that, the client side will dequeue and\nqueue buffers. Connecting the GL Frames to the obtained\nsp\u003cISurfaceTexture\u003e is not part of this CL.\n\nRelated to bug id: 4529323\n\nChange-Id: I651bec718dd5b935779e7d7a050b841c2d0b0fcd\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": "5e0067b486c3862316aa1f293cf9690c0cf54bda",
      "tree": "104ac8491b40d6e9d8353322792fb83ce76f4c82",
      "parents": [
        "52f556b976a9caceee183d8af2118ddbee02c70a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "message": "Remove the simulator target from all makefiles.\nBug: 5010576\n\nChange-Id: I04d722f258951a3078fe07899f5bbe8aac02a8e8\n"
    },
    {
      "commit": "d552b88515c6ccd18695e5db5e6032a6425d8c63",
      "tree": "93182fdbb87ea2e5787c2831838fc7aaa3e36a54",
      "parents": [
        "9b186a44051d0ef7f4ca67150f204299b15a448e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 07 16:41:25 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 08 10:44:05 2011 -0700"
      },
      "message": "Use advertised h264 encoding parameters by default if the profile is not baseline\n\no Force to use AVC baseline profile for camcorder low quality videos\n\nChange-Id: I3424c57dd0c55fc4991f5767b57695c8f3420ecb\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": "4ca2c7c913f8bd4ada13aca56d36045d42d1e00f",
      "tree": "d65d0cadafa63bd9ab2aa9e8fbb6704b27a13fbc",
      "parents": [
        "c5a57efb706ec79032fc09c43b16d11ed0876604"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jun 01 17:22:24 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Jun 27 15:44:57 2011 +0800"
      },
      "message": "Add framework support for camcorder zoom.\n\nThe purpose of ICameraRecordingProxy and ICameraRecordingProxyListener is to\nallow applications using the camera during recording.\n\nCamera service allows only one client at a time. Since camcorder application\nneeds to own the camera to do things like zoom, the media recorder cannot\naccess the camera directly during recording. So ICameraRecordingProxy is a proxy\nof ICamera, which allows the media recorder to start/stop the recording and\nrelease recording frames. ICameraRecordingProxyListener is an interface that\nallows the recorder to receive video frames during recording.\n\nICameraRecordingProxy\n  startRecording()\n  stopRecording()\n  releaseRecordingFrame()\n\nICameraRecordingProxyListener\n  dataCallbackTimestamp()\n\nThe camcorder app opens the camera and starts the preview. The app passes\nICamera and ICameraRecordingProxy to the media recorder by\nMediaRecorder::setCamera(). The recorder uses ICamera to setup the camera in\nMediaRecorder::start(). After setup, the recorder disconnects from camera\nservice. The recorder calls ICameraRecordingProxy::startRecording() and\npasses a ICameraRecordingProxyListener to the app. The app connects back to\ncamera service and starts the recording. The app owns the camera and can do\nthings like zoom. The media recorder receives the video frames from the\nlistener and releases them by ICameraRecordingProxy::releaseRecordingFrame.\nThe recorder calls ICameraRecordingProxy::stopRecording() to stop the\nrecording.\n\nThe call sequences are as follows:\n1. The app: Camera.unlock().\n2. The app: MediaRecorder.setCamera().\n3. Start recording\n   (1) The app: MediaRecorder.start().\n   (2) The recorder: ICamera.unlock() and ICamera.disconnect().\n   (3) The recorder: ICameraRecordingProxy.startRecording().\n   (4) The app: ICamera.reconnect().\n   (5) The app: ICamera.startRecording().\n4. During recording\n   (1) The recorder: receive frames from ICameraRecordingProxyListener.dataCallbackTimestamp()\n   (2) The recorder: release frames by ICameraRecordingProxy.releaseRecordingFrame().\n5. Stop recording\n   (1) The app: MediaRecorder.stop()\n   (2) The recorder: ICameraRecordingProxy.stopRecording().\n   (3) The app: ICamera.stopRecording().\n\nbug:2644213\n\nChange-Id: I15269397defc25cbbcae16abc071c8349c123122\n"
    },
    {
      "commit": "b8e9897b8ad5d722e424d7a7e256153307ecbd93",
      "tree": "cf6c480cd0fed057623214b3bfd942dd23bc6fdc",
      "parents": [
        "fce442c23e65fa1973947df683eec9a5c36057a5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 14 17:56:13 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 15 07:30:19 2011 -0700"
      },
      "message": "Remove unneeded #include \u003csys/resource.h\u003e\n\nSuggested in code review for previous change.\n\nChange-Id: Ic3225b240367dc6c9bf56fb4498fb8a0f9f806ec\n"
    },
    {
      "commit": "a0b1d4b161599c2bb2a47119e50c51e75bbe980e",
      "tree": "806d5dbe250fbd8069bff8bcafffc730736fef8d",
      "parents": [
        "26adde897188059057b3ffcfde1d60171fc6888c"
      ],
      "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": "0512ab559d4670c2204078470d7ef5d376811c57",
      "tree": "088654e0dd81abeca06fa9a4d8bc70ee43da8c42",
      "parents": [
        "158b194da537c18a6ad1d7ef3cd63c87b2310269"
      ],
      "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": "d217a8c4632b3e3065f8c2a26b9ce4dc4c97171f",
      "tree": "36ea6300b9a3e5412d45ddaa5e5d6a38117c30c0",
      "parents": [
        "013b5a67d6f8e12a1b06e74863daec1bee4d99c1"
      ],
      "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": "013b5a67d6f8e12a1b06e74863daec1bee4d99c1",
      "tree": "cb10033d696d75aa6b609f39c19e8b5640f9c2fc",
      "parents": [
        "8a72c54e74eb365971288a81687e5c2aa47963e7"
      ],
      "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": "0d255b2d9061ba31f13ada3fc0f7e51916407176",
      "tree": "4df26e48710542386bddab7a0d1cbfa5d6835ac0",
      "parents": [
        "65580f9adf6c4d98449ad0716488f9fe3869aa5a"
      ],
      "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": "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": "86b7f47aa7482424cf8fd248f1315311919be3b0",
      "tree": "ddc0e28c8736a20d20bcd87f652cecf4bc18e7b6",
      "parents": [
        "9b1e4f1a18ac2489e24b4272a0a7ccfd0018efcc"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon May 09 16:56:25 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat May 14 07:18:43 2011 -0700"
      },
      "message": "Support platform and camera dependent recording start time offset\n\nrelated-to-bug: 4390777\n\nChange-Id: Icb52973ad4ac716f04fb103ef527915a966d06d5\n"
    },
    {
      "commit": "07b1bb529a1ae76c46a71b01338c166f9490629d",
      "tree": "2fff6133d9aba0bed0375fd1099edcff609c6763",
      "parents": [
        "b5212db69734962f55e1493d3e696794172ced51"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 11 19:09:25 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri May 13 16:29:19 2011 -0700"
      },
      "message": "Support for storing geo information in the recorded mp4/3gpp file.\n\no Geo data (latitude and longitude) is stored in udta box\n\nChange-Id: I76e4aeb741c4b339f3753d3d28190151f3ea4919\nrelated-to-bug: 4260295\n"
    },
    {
      "commit": "64760240f931714858a59c1579f07264d7182ba2",
      "tree": "5fad3bbdc4f7a19cff980b719edb75577c7f9a4b",
      "parents": [
        "b84d042a1216694e1db6b1fc2b053d348cab5593"
      ],
      "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": "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": "760943b5e7a09b602aba04ec451e97662f48b0a4",
      "tree": "d73d7dd74e4063b6d6494fdd9f8f71be3c05d89e",
      "parents": [
        "89dc0dffdcbf0999a854a9b1bbea8f56395cc209"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 21 14:29:38 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed May 04 13:38:31 2011 -0700"
      },
      "message": "Initial check-in for AACWriter\n\nChange-Id: Ia21ca39a404484b2dda25c6101780d2ff11c4623\n\nrelated-to-bug: 4211046\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": "fce7a473248381cc83a01855f92581077d3c9ee2",
      "tree": "e002e1edd8a11f2be56ce9538ab1b13aa289bc9e",
      "parents": [
        "db5cb14318bb24cd6ea14ff7ceea0d5e1f83d903"
      ],
      "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": "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": "b483c4724846c0b8d4e82afcbb7c17f671bae81c",
      "tree": "3323eb5f46357ffff206c880b36fcf30dd984e02",
      "parents": [
        "fa4e195a735ab99e02388ac5c5611e73a76c7c72"
      ],
      "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": "7fb4b427d5fca79c09d69b212ddca41539c215a2",
      "tree": "76e0d913dfdfc18fc07348a003b4dc35c0ffec81",
      "parents": [
        "bd7b7177f88ae6e83bd7bb8bfd9b7018be923931",
        "51c1e0e86a0ad95bf3d890a9a2f51e54b8ef9444"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 04 12:45:23 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 04 12:45:23 2011 -0700"
      },
      "message": "Merge \"This reverts an earlier change 4aeec2da39fce4de9b07b694d59fd308ffb3d491\""
    },
    {
      "commit": "51c1e0e86a0ad95bf3d890a9a2f51e54b8ef9444",
      "tree": "622fba590fbbf4fafcdf3230ee6d25ae4976ca65",
      "parents": [
        "94baecca5e14b083c46615a1bcf18ea6cf7cad46"
      ],
      "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": "bd7b7177f88ae6e83bd7bb8bfd9b7018be923931",
      "tree": "b9a21fec8b27e404eb871682ca7de36c1df2e810",
      "parents": [
        "94baecca5e14b083c46615a1bcf18ea6cf7cad46"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 04 09:12:56 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 04 11:29:35 2011 -0700"
      },
      "message": "Avoid a race condition while signaling audio EOS/seek complete by acquiring the lock.\n\nChange-Id: Idfea452ff661b264e013fe515bcd2a2762bd959c\nrelated-to-bug: 4193552\n"
    },
    {
      "commit": "5f7fcf29a7475a20cf38bf72da67746135d504c3",
      "tree": "f5e03d6a8f7d6b70b91cc95bc2324a1cc6492f10",
      "parents": [
        "f490e1765c44f63bde8e8acd905f36f92a840ddf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "message": "merge libsurfaceflinger_client into libgui\n\nthis is the first step in unifying surfacetexture and surface.\nfor this reason the header files were not moved, as most of them\nwill eventually go away.\n\nNOTE: currently we keep libsurfaceflinger_client.so as an empty\nlibrary to workaround prebuilt binaries wrongly linking against\nit.\n\nChange-Id: I130f0de2428e8579033dc41394d093f4e1431a00\n"
    },
    {
      "commit": "0a73d81f213fb2d6f2fdd59c4dda047bf453bb1c",
      "tree": "eab2ea363949c1b7f356fc4b921e48137d2db775",
      "parents": [
        "7b55c7ce1d8f187430d0b6bda68378f549930289"
      ],
      "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": "0511969950188634f4212fcf63680c43207baedd",
      "tree": "79c5aa1f2d5ccd38c5944bc7a60815025770ccb9",
      "parents": [
        "c8a8472a0205dd698c8d81bf7e09026ca1013d1e",
        "9b7d950f1f3b0c526712b713dbceb0e22762c015"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 21 14:06:33 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 21 14:06:33 2011 -0700"
      },
      "message": "Merge \"Fix issue 3483718: audio streaming and A2DP.\""
    },
    {
      "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": "af8791e112c8072452bd14ef3c43a47511d19542",
      "tree": "dc914f57bfb84ec7a1729581d66c06e0cad89125",
      "parents": [
        "ebd5d2541d4e5351fd1f1a23fc9ef047cfa67575"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 21 10:25:44 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 21 11:13:59 2011 -0700"
      },
      "message": "Support passing headers to MediaMetadataRetriever\u0027s setDataSource API\n\nChange-Id: Ib1a5c08fc5034cac05034db27007a35c9b660b26\nrelated-to-bug: 3506316\n"
    },
    {
      "commit": "c901f74404435cc1cf2717016e2b0092b6dcea24",
      "tree": "c858ff6c3a41df6279cbb30ab4d838d26a1d13b9",
      "parents": [
        "0ab985cf1ec0110022be22ff03aa300bb59b9c96",
        "f432a761e73bef8be43f83377ecea8abef72ce86"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 12:38:58 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 17 12:38:58 2011 -0700"
      },
      "message": "am 782ffe91: am 9c0c5b56: am 2f1f2248: Fix missing AOSP copyright headers for a bunch of media framework files\n\n* commit \u0027782ffe91da665c6b1fb9e297faa6e0dc6035f40c\u0027:\n  Fix missing AOSP copyright headers for a bunch of media framework files\n"
    },
    {
      "commit": "27c174483a8ae9688d5d4897c19074f62c7f1701",
      "tree": "9da8616575a69c53a3a8a9a7da3cfa12390e339e",
      "parents": [
        "8031ec79eb657a0ae84325410578ea87f50eeb54"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 11:02:04 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 11:10:40 2011 -0700"
      },
      "message": "Fix missing AOSP copyright headers for a bunch of media framework files\n\nbug - 4119349\n\nChange-Id: If5924e16a5f596d5d73d9beb66eaf5ac9a6f0e50\n"
    },
    {
      "commit": "8635b7b095fbf7ffc63d3ce791891a9116ace1f6",
      "tree": "6c9bbe1d0cec53f0c83099f1028302a178928cb9",
      "parents": [
        "1b99cc90afffbda6013ebbb45d64f17b1d90b9f5"
      ],
      "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": "4f46fed004b76d462ef859aa94a3c056b0e79b60",
      "tree": "afd68cec4f63a8576a539064a48b80dbe7ff92e4",
      "parents": [
        "9a5f9b7dbe9ecdebfbd9e8f96452c42213b08a31",
        "9ee159b79022b2e1a050acb3890ce948e99e9ccb"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Mar 02 19:51:04 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 02 19:51:04 2011 -0800"
      },
      "message": "Merge \"- To track the usage of all audio output devices - To track the currently used audio device - The devices are separated as speaker and other audio devices - Provide the collected data to battery application through pullBatteryData()\""
    },
    {
      "commit": "9ee159b79022b2e1a050acb3890ce948e99e9ccb",
      "tree": "3f8c908cd6d5a69f1f6c5eb7c4e0a833890107e9",
      "parents": [
        "5f5354e35ab3b2a0cb4cabb6d0aa5a160225ccc8"
      ],
      "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": "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": "72feaa5df1f7b15b18e30592653dc511dc0b8c51",
      "tree": "11ddd737877c1e9f93cf9ad5a7ac9b5403d5f934",
      "parents": [
        "e23da615c0b1721fe7d9d2e06e82e43b9bd89df3",
        "1173118eace0e9e347cb007f0da817cee87579ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 24 12:37:02 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 24 12:37:02 2011 -0800"
      },
      "message": "Merge \"Bug 3438258 Add SurfaceTexture as MediaPlayer sink\""
    },
    {
      "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": "75b0b5473c7b43f8c5972db7e6e8930988ead751",
      "tree": "d4372d334eb5784028647ee37a984e374e8e7c63",
      "parents": [
        "51b9a8b53eaa1a0188be95d4d6a749424787e0d6"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Feb 23 11:47:34 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Feb 23 13:20:21 2011 -0800"
      },
      "message": "To collect the total usage time of encoders in the media recorder\n\nChange-Id: I94c9c94dec6bd714a3ebf96b4465b94f069e55b8\n"
    },
    {
      "commit": "7cf180c9bff69e5cc4a2f4e53b432db45ebbebab",
      "tree": "05d25862b1e1f30ffc31fe2ca2128ff68810df1b",
      "parents": [
        "1de41a66e3e7b548ee44e6654580e5f6f7265b11"
      ],
      "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": "ed8d14f6a934072cd012992c4ef16990a54baa9a",
      "tree": "e38162fe54457b3b943eb7e049dfd122822aa3fe",
      "parents": [
        "d48a6044fddc910f17e67650f280e91e7aaf5e65"
      ],
      "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": "27944ef5cd8d0fb476c8c8958986e827c5f8ab83",
      "tree": "f6cb11a9f15995354301d2b93f1955368be9676e",
      "parents": [
        "eeffad65d2db4879593c1d4806824ef5b4dcb3e1"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 08 15:41:58 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 08 15:41:58 2011 -0800"
      },
      "message": "Should reset errno to 0 before calling strtoll().\n\nbug - 3431238\n\nChange-Id: I855847209d2e022242b8eb62985759922ab94779\n"
    },
    {
      "commit": "7757f5010a771fb8824b6fdf9788f588a1577e3f",
      "tree": "a4ba5608184d5141deae9bed5efd3d2b37d7593c",
      "parents": [
        "2494373e91399a97ad405f4e42dff6543cc296c7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 25 16:31:28 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 26 12:11:22 2011 -0800"
      },
      "message": "Make sure that key frame is generated for timelapse video recording if there are at least two input video frames from camera source.\n\nThis will fix the stop failure issue where we have to wait n * time_interval before a key frame can be received by the file writer, where\n o n is the actual number of buffers advertised by the video encoder\n o time_interval is the interval settings for timelapse video recording\n   specifying the time distance between neighboring input video frames\n\nThe fix includes two parts:\no OMXCodec will not submit all n buffers at one time, but instead submit one input\n  frame at one time if it become available.\n\no Timelapse camera source made available the first two input frames and do not skip\n  them so that the first compressed output frame data can be received regardless\n  the specified time_interval\n\nbug - 3367659\n\nChange-Id: Ia68cc2cb0d71aa7dc54540e9ad82fae911ad530b\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"
    },
    {
      "commit": "b408222bd9479c291874b607acae1425d6154fe7",
      "tree": "3d9ed699c5082bbf6449e623290ca59ce3b7a64d",
      "parents": [
        "adde7faabd165ebf69eaf64f62eb6792032a350a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 20 15:23:04 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 20 15:23:04 2011 -0800"
      },
      "message": "Implement missing pause/resume support for NuPlayer.\n\nChange-Id: Ia3f1ce521dd4b70e134ef03aa7c9db8e8d39a134\nrelated-to-bug: 2368598\n"
    },
    {
      "commit": "7bd460110b27a979384dda351788eac95d8467f5",
      "tree": "cd228aa4d17773047de7bcc1976892bcb979a229",
      "parents": [
        "886c09ee81eb7b8878e487c7f801ea8ddb27c17c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 19 20:42:19 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 20 06:58:16 2011 -0800"
      },
      "message": "Eliminate recording sound by starting the video track before audio track.\n\nDue to the variable delays in the system, the recording sound can still be heard\nif the audio track is started early. This happens even after we suppress a relative\nlong period of initial audio for a recording session. By starting the video track\nbefore the audio track, we effectively play the recording sound earlier.\n\nbug - 3371141\n\nChange-Id: I2cccf77eae953d96827fc080c618b1d962445c26\n"
    },
    {
      "commit": "2b4883641e324c50a2ee24c5bd15170c7d31e57d",
      "tree": "affc60536acc73b632055dbb1a76c55ac6b17557",
      "parents": [
        "de16890e98cdd241398ed155cd47daf061584a77"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 18 21:12:31 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 18 21:33:58 2011 -0800"
      },
      "message": "Use metadata in video buffers for timelapse video recording by default to eliminate memcpy\n\nbug - 3361771\n\nChange-Id: Ib37ffe4be8edc8708baa76b3507b6f11372536d9\n"
    },
    {
      "commit": "31389148f4ab7587e150f4043b7379eaefe2af2b",
      "tree": "28d20f9c37755cbf14af6cc2d20e7a17fc213efc",
      "parents": [
        "bf6489f8b4c03dda70bf7a549702b98da497e348"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 18 14:26:55 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 18 14:28:37 2011 -0800"
      },
      "message": "Fix the sluggish preview during timelapse video recording because software encoder is used.\n\nbug - 3361771\n\nChange-Id: Ic5344e9eabe7f1b82910b65b4260e4ad8dc51c32\n"
    },
    {
      "commit": "42dd1d5f186252a7f09f8fb1a46ea82e3877b2d3",
      "tree": "8169be6605d7f2cd2bc5d3e5a21b1c0ef146e176",
      "parents": [
        "3e9eeb3b411f56d9935f9240056107816da24653"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 12 20:45:16 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 12 20:45:16 2011 -0800"
      },
      "message": "Add audio encoding parameters check\n\nbug - 3345296\n\nChange-Id: If3f33955f5473b0c5ad9c9b85f8b5cb21ddd7e65\n"
    },
    {
      "commit": "7f7d52ac18dfc3c6d8f6267dad29306613e9bd0e",
      "tree": "5e17f415d44cdba3c8b37a42c487e28e26593a64",
      "parents": [
        "67988a9ba5a081d14dbd8a663516e1d484d829df"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 06 12:20:35 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 12 14:14:11 2011 -0800"
      },
      "message": "Publish MediaMetadataRetriever.java as public API\n\no Removed setMode() methods and related mode constants\no Removed some of the unused the metadata keys\no Updated the javadoc\n\no part of a multi-project change.\n\nbug - 2433195\n\nChange-Id: I5ed167f1fd6a53cb143b7dc385b149431d434438\n"
    },
    {
      "commit": "31e2508c75018145a8238925ff1a08cbde4e799a",
      "tree": "072e86ff81cc378452262d8ff899301ae8abf696",
      "parents": [
        "eb0d0c48ebfcee5e8141ae25fe42a9eac6aae230"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 10 10:38:31 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Jan 10 10:38:31 2011 -0800"
      },
      "message": "NuPlayer now properly sends MEDIA_SET_VIDEOSIZE notifications.\n\nChange-Id: I99b4223ad6ecfd8839a3c0e737fef3165565d76d\nrelated-to-bug: 3336496\n"
    }
  ],
  "next": "4b197e1ffe46eb73ebdb80efc984bfde336b8e92"
}
