)]}'
{
  "log": [
    {
      "commit": "fa5f8f5a98d389c7581ac7236a9b5aa60a4f9694",
      "tree": "af0bd42d291b48a64ba5f2603fa20e2e53440fd4",
      "parents": [
        "c604a9297ae6bb68950f21583053211287a4df10",
        "6d000617230e82b9497a88ca0f485e0c16ba4543"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Aug 27 10:18:50 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 27 10:18:50 2012 -0700"
      },
      "message": "am 6d000617: am db7e3856: Merge \"Fixed a potential/rare race condtion in MediaPlayerService::Client::notify() method\" into jb-mr1-dev\n\n* commit \u00276d000617230e82b9497a88ca0f485e0c16ba4543\u0027:\n  Fixed a potential/rare race condtion in MediaPlayerService::Client::notify() method\n"
    },
    {
      "commit": "b8a9825bf0f5c74333b0e4ff5ba7677ac6fd2a25",
      "tree": "4dd56785fc2185f44abff6f257197ca982e4c49b",
      "parents": [
        "96272d57caa39566842795ba1f0605a5a5f72272"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Aug 26 16:13:03 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Aug 26 16:18:11 2012 -0700"
      },
      "message": "Fixed a potential/rare race condtion in MediaPlayerService::Client::notify() method\n\no The mClient could be disconnected before the notify message is sent out. Use\n  a local reference could help resolve this issue.\n\no related-to-bug: 6782035\n\nChange-Id: Ia2047bd7f2666100fed83c6e5417a3bf2e20cd2c\n"
    },
    {
      "commit": "f6520a29781ebf1fa16efc282899fbd0c858a57e",
      "tree": "b20753caf29f6ed4b7cd353b0c32772e2a638bdd",
      "parents": [
        "c0c152f81d9e7374a30f90d7ce576719d318fe98",
        "e171593f9afb2b345257cc8e6599f8da9b3437c3"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Aug 24 09:24:41 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 24 09:24:41 2012 -0700"
      },
      "message": "am e171593f: am 6de95261: Merge \"Add a missing NULL check.\" into jb-mr1-dev\n\n* commit \u0027e171593f9afb2b345257cc8e6599f8da9b3437c3\u0027:\n  Add a missing NULL check.\n"
    },
    {
      "commit": "cb0b755efc2cd24703f400729994900bf2117f66",
      "tree": "21d73848006bb14b4de9fcfe56fa0a1befd09868",
      "parents": [
        "9a150640a28d3fa5507a590125a6c004681bb221"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Aug 23 17:47:31 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Aug 23 17:47:31 2012 -0700"
      },
      "message": "Add a missing NULL check.\n\nDon\u0027t crash if its time to start the next media player in a media\nplayer chain, but the current player\u0027s client has a NULL mAudioOutput,\nas is the case when the low level player implements\nMediaPlayerHWInterface.\n\nChange-Id: If555da3a46960cbee91ff26e5b1fd05e52c8ef28\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": "4fc9d476db8ba59053deac76dce9f403c34a0f2d",
      "tree": "890aa2ee51b6b650d744557ddd92df9722e0cb5f",
      "parents": [
        "518cdbe52b60af91a2bd2d3ce2d29feac884ae02",
        "73247cac58b0c295e02b2350722699689ac45189"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 13 09:56:22 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 09:56:22 2012 -0700"
      },
      "message": "am 73247cac: am d58a68a4: Merge changes Ibe7e6d4b,Icf8904db into jb-mr1-dev\n\n* commit \u002773247cac58b0c295e02b2350722699689ac45189\u0027:\n  Move the AAH RTP code out of framework and into vendor.\n  Add the ability to dynamicaly register MediaPlayer types.\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": "d58a68a4d6915d43d8b9d02ebfe04be62efe2eb1",
      "tree": "b2bae0d6b37fff0a0aff3b3456c2831425d7a0f0",
      "parents": [
        "75767ab7cc1aee315d655538322a8349faa61a64",
        "8ec1f2a4f3c72fe7472f8b8fa227f6b7bbc9279b"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 13 09:52:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 13 09:52:14 2012 -0700"
      },
      "message": "Merge changes Ibe7e6d4b,Icf8904db into jb-mr1-dev\n\n* changes:\n  Move the AAH RTP code out of framework and into vendor.\n  Add the ability to dynamicaly register MediaPlayer types.\n"
    },
    {
      "commit": "8ec1f2a4f3c72fe7472f8b8fa227f6b7bbc9279b",
      "tree": "5a85d007f81c1d09f68f3894f8cbb0a950372250",
      "parents": [
        "44a7e42f0310831e6a846d1b6bb40bf3a399bf6d"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 06 13:50:00 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 13 09:48:56 2012 -0700"
      },
      "message": "Move the AAH RTP code out of framework and into vendor.\n\nRelocate the AAH RTP code from framework/av into\nvendor/google_devices/phantasm.  This change is the deletion, there\nwill be a separate CL which re-introduces on the vendor side of\nthings.\n\nChange-Id: Ibe7e6d4b633a3886b87a615691a2692f2382af6c\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "44a7e42f0310831e6a846d1b6bb40bf3a399bf6d",
      "tree": "aba58d779eb8a1d8fe4616d33b8eb6e1672d6f00",
      "parents": [
        "b3e12a4d15a329821979bf287c49a9630486e23f"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Jun 21 17:29:24 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 13 09:48:56 2012 -0700"
      },
      "message": "Add the ability to dynamicaly register MediaPlayer types.\n\nAdd the ability to dynamically register low level MediaPlayer\nfactories which will be probed at setDataSource time to determine the\nproper MediaPlayerBase to instantiate.\n\nThis change is in preparation for moving libaah_rtp out of\nframeworks/base and into phantasm platform directory.\n\nChange-Id: Icf8904db3ab9e3c85df6e780d5546d9988cb9076\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\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": "bf5bea96f236adb5eef78c2f414ef82b3602a0f7",
      "tree": "ec9dcb7ffdb2de6257fcee026583ffe998fef1d8",
      "parents": [
        "7aa1b72252749c990c9a5efce3d8fe399261b88e"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 18 17:46:06 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 24 16:59:21 2012 -0700"
      },
      "message": "Codecs: Add MetaDataMode support to software video encoders.\n\nThis support is needed to enable efficient video recording with\nemulator and camera HAL 2.\n\n- Update SoftAVCEncoder and SoftMPEG4Encoder to support MetaDataMode\n  extension.\n- Allow CameraSource to handle opaque pixel formats, so that\n  MetaDataMode can be used.\n- Remove hardware codec restriction for MetaDataMode\n\nBug: 6243944\nChange-Id: I970eb3d55542a413b6d75a78f76d3a8583155601\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": "b46ccde3610d3f1713f7ebf0e9ffe943e44b54d2",
      "tree": "0cc18c7a6b51033a0f81e75991d2fa5d746dfb51",
      "parents": [
        "faa5bdd1efff301962537a7b271bd31c78ec13dc"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 17 15:03:25 2012 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 17 15:17:23 2012 -0700"
      },
      "message": "Merge from jb-dev for \"sample video corruption in MediaCodec mode.\" DO NOT MERGE\n\njb-dev commit: fa2b8f243eb048fb2b8e5a14356190f69eb31a36\n\nChange-Id: I4f08b9c8e9682a998db01c509a390e51bae60c2d\nrelated-to-bug: 6732061\n"
    },
    {
      "commit": "fa2b8f243eb048fb2b8e5a14356190f69eb31a36",
      "tree": "d54232d4c61bf767677bcee2373069c4969301c1",
      "parents": [
        "4221e2813f7a307936036e62b6a63bbda23005ee"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 10 20:01:13 2012 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 13:05:56 2012 -0700"
      },
      "message": "Fixed sample video corrupted in MediaCodec mode.\n\nChange-Id: I50c5660072d40f6e297e58fd026ea04c89d6a70a\nrelated-to-bug: 6732061\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": "d791e094da5698c787f8db28ca5d5d490c512cf1",
      "tree": "59cac1f9eff55108cc81adee71c618e3844cb68e",
      "parents": [
        "67295b543c16ed7c77b67f859d598fe7b4571660"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jun 11 17:00:59 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jun 11 17:00:59 2012 -0700"
      },
      "message": "Fix gapless for deep buffers\n\nForward current flags to next output.\nb/6645676\n\nChange-Id: I584f7a67472d99cbd6bc38f3fe84763331d115d1\n"
    },
    {
      "commit": "67295b543c16ed7c77b67f859d598fe7b4571660",
      "tree": "ce4810e22cedaec06f3d7ada9f1b5f5e182df506",
      "parents": [
        "c15d6657a17d7cef91f800f40d11760e2e7340af"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jun 11 14:52:53 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jun 11 15:10:48 2012 -0700"
      },
      "message": "Fix gapless playback\n\nOn some devices the actual framecount per buffer of an AudioTrack\nwill be different than what was requested, which prevented the\ntrack from being reused. Now we create a new AudioTrack with the\nrequested parameters, and then compare it to the track we already\nhave. If they match, we throw away the new track and reuse the\nexisting one.\nb/6644559\n\nChange-Id: Id3e8c4460436f52e59b98ecaeb01c94f02877c1d\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": "a62bde0a391f65a418d77c46e6ba468433d81dba",
      "tree": "0202a386c41144de3a683af8efe38ce043eed16e",
      "parents": [
        "b21d070fbf5379aea1af970cb96cdb9c3665a4c6",
        "73ac1eebff620714c6977f7342ff8dcc4858b3cf"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon May 07 15:54:53 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 07 15:54:53 2012 -0700"
      },
      "message": "Merge \"Use new sd card mount point for dumpsys\" into jb-dev"
    },
    {
      "commit": "73ac1eebff620714c6977f7342ff8dcc4858b3cf",
      "tree": "09a6525bc876346a77f71ea87f1d0fec8ffcc6d4",
      "parents": [
        "ef7f379497199148b5694615e75b3fb2bf666a18"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon May 07 15:36:32 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon May 07 15:36:32 2012 -0700"
      },
      "message": "Use new sd card mount point for dumpsys\n\nb/6455962\n\nChange-Id: I5c9f8c16c50587b25cafab03c48662e63855868e\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": "4c9cd95b27a638701be2ffa1713273ba2f624770",
      "tree": "c7f5f7820aa39c965706b7ea504d9b53f5147688",
      "parents": [
        "0c0abd4ad26971b5fba94734137fe0bb1a590ab6",
        "f60c660f048d5f5e2458cff243c20400d73757a7"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Apr 30 12:45:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 30 12:45:27 2012 -0700"
      },
      "message": "Merge \"Added support for HE-AAC recording\" into jb-dev"
    },
    {
      "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": "f60c660f048d5f5e2458cff243c20400d73757a7",
      "tree": "b2bf22e36da46fd25979df618f8661b4b0510dad",
      "parents": [
        "83faee053cfd4251dbb591b62039f563ffdac399"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Sat Apr 28 21:58:22 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Apr 30 09:18:24 2012 -0700"
      },
      "message": "Added support for HE-AAC recording\n\nFixed bug in decoder related to sample rates / channel counts\nMade decoder follow Fraunhofer pattern\nLog if bitrate not available\nBug: 6275957\n\nChange-Id: I47a8e29358fa4a88ebc73fe02d46a2bfb96c64fe\n"
    },
    {
      "commit": "aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b",
      "tree": "f8b459d895acef1717c96cb7133675dda3e458b7",
      "parents": [
        "e0fa467e1150c65a7b1b1ed904c579b40f97c9df"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 19 00:14:27 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 25 22:02:58 2012 -0700"
      },
      "message": "Add Fraunhofer AAC encoder with AAC-ELD support.\n\nChange-Id: I6cd499d257d72f50a5b508bed97796a591a51506\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": "5b8987e7de9d04b09153f329c680d2316cdb44ec",
      "tree": "2b08e1f8abd0d4b869ce8923b1462530b916a7eb",
      "parents": [
        "fd9e14bc28f377065e43ec6833d754ca151b3941"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:52:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:53:59 2012 -0700"
      },
      "message": "Allow propagation of error information and description from the CryptoPlugin to\n\nthe higher layers.\n\nChange-Id: I9f434ad55cdf575803c208bedf47b607baff2330\nrelated-to-bug: 6365261\n"
    },
    {
      "commit": "0ca3cf94c0dfc173ad7886ae162c4b67067539f6",
      "tree": "bc156e7822e663626b78ec2ad09ef3970fbb48c5",
      "parents": [
        "ee685f6d19a6cc3b0bf02e69eb5dea11a2aeb601"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 18 09:24:29 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 18 15:04:46 2012 -0700"
      },
      "message": "rename audio policy output flags\n\nChange-Id: I27c46bd1d1b2b5f96b87af7d05b951fef18a1312\n"
    },
    {
      "commit": "1608735ef488ecd8c3c012a3b0d4b1d4ef3d93c7",
      "tree": "c77756706095cdb6852e56392e8365bcaa7d9232",
      "parents": [
        "a98db787397633155fd71b06ecaa765a7ad20cf2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 13 14:54:36 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 11:22:11 2012 -0700"
      },
      "message": "Support widevine:// URLs in NuMediaExtractor / java MediaExtractor.\n\nAllow anyone to talk to drm services.\n\nChange-Id: I5c2f3c419d01de30c3d6e2bc85b1fe5c9c37b392\nrelated-to-bug: 6276111\n"
    },
    {
      "commit": "bdddc659a941afdb7f4958f582c6901c07246097",
      "tree": "37423f7b734d26e086328f1f9b337e1499c026b8",
      "parents": [
        "3f502bfc6d04d08369cf147284c5c4c2ac7c9a0e"
      ],
      "author": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Fri Mar 30 16:04:43 2012 -0700"
      },
      "committer": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Mon Apr 09 22:58:28 2012 -0700"
      },
      "message": "Refactored SurfaceMediaSource\n\nSurfaceMediaSource takes advantage of BufferQueue to avoid\nduplicated code.\n\nChange-Id: I5e60b8eca21e6c3cf728d363cd8f3786125182d1\n"
    },
    {
      "commit": "99448608f375a7191c068c3bfd296f204b58a219",
      "tree": "2233a958570ce34e7203560677dcea2fe0e726e3",
      "parents": [
        "f15cb4472aaca54c13f8250e4c7872470c4bed83"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 02 12:16:49 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Apr 04 14:26:45 2012 -0700"
      },
      "message": "Allow AudioTrack to start at nonzero position\n\nWhen creating a new AudioTrack (not inheriting one from a previous play),\nthe AudioSink should take the AudioTrack\u0027s position as the initial starting\npoint for mBytesWritten, since otherwise NuPlayer\u0027s calculations will be off.\nNormally this position will be 0, but if the test code for 32 bit wraparound\nin AudioFlinger.cpp is enabled, it might be (much) larger.\n\nChange-Id: I1e4f906d529861c3dea996de8afc6dbd491589af\n"
    },
    {
      "commit": "1bd139a2a68690e80398b70b27ca59550fea0e65",
      "tree": "e3be78f22aa021c4e372409128775c2093d46dae",
      "parents": [
        "d22da88fd555f1262357c7dcdeface8445e3a012"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 14:19:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 14:19:20 2012 -0700"
      },
      "message": "New Crypto services talking to the new crypto \"HAL\".\n\nChange-Id: I69ed31e7a8b4d69d1209d2d516f94d258f072566\nrelated-to-bug: 6275919\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": "3ee26944b082def647fe5bb2b75116ffb0267059",
      "tree": "61d6c7d15b281eb465f6af35365428e3762f13cf",
      "parents": [
        "ef36d496477d1e2ae99c3cd43eee5cf7e82b0883"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Mar 24 10:48:40 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Mar 24 10:59:14 2012 -0700"
      },
      "message": "Remove JNI in LOCAL_C_INCLUDE from non-JNI related Android.mk files.\n\no related-to-bug: 6214141\n\nChange-Id: Ic88d1732b3e014af47532a0809e01f6086e8464d\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": "63c1faa8dea7feb90255d31ef2a133d8f2818844",
      "tree": "973c66b51e7e85b6ea753b5643f7d99c66d82dde",
      "parents": [
        "7153494670bdac8b650cb10b8b1838651e0ca418",
        "17a736c3e1d062d7fc916329eb32aef8935614af"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 07:24:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 07:24:21 2012 -0700"
      },
      "message": "Merge \"Update comments\""
    },
    {
      "commit": "1bb8e81b066a2311fd238fc6dae8f026e33ed99e",
      "tree": "b532516a844ab20331120a4d6f7777c27c36548c",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093",
        "b12153e36ae5e514d96c77d660b327d1a8f5000f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 16:21:04 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 19 16:21:04 2012 -0700"
      },
      "message": "Merge \"Add libmedia_native\""
    },
    {
      "commit": "17a736c3e1d062d7fc916329eb32aef8935614af",
      "tree": "7fb73e48de8641ce6ad7b65fb4204bc60cd3e5f0",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 14 08:52:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 14:12:01 2012 -0700"
      },
      "message": "Update comments\n\nChange-Id: I327663a020670d0a72ff57bd0b682e2ce0528650\n"
    },
    {
      "commit": "b12153e36ae5e514d96c77d660b327d1a8f5000f",
      "tree": "fbfe8dc937f925b7075786b969522fb9012ae69b",
      "parents": [
        "6469edeeac6079b118e8f81252116c40574c9841"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 16 11:42:24 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 16 11:51:30 2012 -0700"
      },
      "message": "Add libmedia_native\n\nChange-Id: Ib8cff8abd73723b793f08da99ad59549f219e0e7\n"
    },
    {
      "commit": "ab334fd351ae5a0e18903da123d63e565b536874",
      "tree": "9bcc5a6151326d9ca345f9dfac0d9d68d48e73b4",
      "parents": [
        "3c5bbaee376d235404f267fbe1693d1960bfaaef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 12:56:06 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 15 13:15:27 2012 -0700"
      },
      "message": "audio_channel_in/out_mask_from_count\n\nand avoid ambiguous term \"channels\" where it might be confusing\nas to whether it is a channel mask or channel count\n\nChange-Id: I744fa08ccb6001a98c97bd638d2c9d56836c4234\n"
    },
    {
      "commit": "f9d660a5e0196240add5daf0199f128d471e592c",
      "tree": "f67d9d6c7d7e22e8cedefaae1bf0e7a4872deda5",
      "parents": [
        "dfaf549e3e310bc22444f4404b19f4907b24c286"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Thu Feb 16 20:28:27 2012 +0900"
      },
      "committer": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Thu Mar 15 08:36:52 2012 +0900"
      },
      "message": "Defines MediaPlayer APIs to support multiple audio/video/timedtext\ntracks.\n\no Newly introduced APIs are (MediaPlayer):\n  getTrackInfo() / addExternalSource() / enableTrack() / disableTrack().\n\no Timed text tracks are supported only, for now.\n\no TODOs:\n - Define the audio/video behavior for enableTrack and disableTrack.\n - Refactoring AwesomePlayer / TimedTextDriver so that all types of\n   track index can be managed in the correct order and be ready for\n   supporting audio/video tracks.\n   (MediaExtractor and MediaSource for text file might be necessary.)\n\nChange-Id: Idb85e1b3f2ed49a64f377d05472dd6663ce94e07\n"
    },
    {
      "commit": "36a4d2cc7a44eb42d0d9ef5fe50b6747a7a34cab",
      "tree": "eec0f805e2e83ed1d720519748527c03affafc29",
      "parents": [
        "5e7616cc0e5493241211333134555d74aec89982",
        "6b74d671a1321a6ecc4a40b6c87beedfecc1ec44"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 13 13:23:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 13:23:07 2012 -0700"
      },
      "message": "Merge \"Gapless playback, step 1.\""
    },
    {
      "commit": "6b74d671a1321a6ecc4a40b6c87beedfecc1ec44",
      "tree": "44092c52e8439f1991f23601287d424db916c814",
      "parents": [
        "887c5d2ac34d81bde66dadbd7b2ff07501744778"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 28 16:07:44 2012 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 13 13:13:14 2012 -0700"
      },
      "message": "Gapless playback, step 1.\n\nCurrently able to play Ogg Vorbis, PCM WAV and other lossless files seamlessly\nby reusing the initial AudioTrack for subsequent players.\n\nChange-Id: Ie7cf6b9076bdf4f9211574456d192c02c04fecc7\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": "18868c5db2f90309c6d11e5837822135e4a0c0fa",
      "tree": "58c7505f59a1a93ab729fc039aa5cb1eaa49652e",
      "parents": [
        "f2015b625cd6bea86da7401e725332c35b90e7cf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 07 09:15:37 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 15:32:22 2012 -0800"
      },
      "message": "Use audio_policy_output_flags_t consistently\n\nThis affects:\n - IAudioFlinger::openOutput\n - AudioTrack::AudioTrack\n - AudioTrack::set\n - apps that call these\n\nChange-Id: I26fb281bac6cb87593d17697bc9cb37a835af205\n"
    },
    {
      "commit": "6556e5bb99bda64f3ab92e8b540fccdd59e9ed8d",
      "tree": "be047ace7a873144a5927ed52352d3cd57d69bf2",
      "parents": [
        "22f9dd98d9c4c3e0e58586cf6a6008ca6ee946e5",
        "db354e58e65592777aa17caa47933e14838b8b35"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 06 10:53:39 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 10:53:39 2012 -0800"
      },
      "message": "Merge \"MediaPlayerService: fix AudioSink latency\""
    },
    {
      "commit": "db354e58e65592777aa17caa47933e14838b8b35",
      "tree": "4a04ca6b47a4853f9b397a19b3f4dc84675c8fa7",
      "parents": [
        "d8d6185c978c9b27ca69e7791785e0983ed9e8b8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 05 17:27:11 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 05 17:27:11 2012 -0800"
      },
      "message": "MediaPlayerService: fix AudioSink latency\n\nThe AudioSink latency is currently cached when the associated AudioTrack\nis created. However, the AudioTrack latency can change if the AudioTrack is moved\nfrom one output stream to another.\nThe AudioPlayer must also periodically update its view of the latency\nas it is needed to compensate the real audio time used for A/V sync.\n\nThis fixes an A/V sync problem seen when switching A2DP on and off while\nplaying a video.\n\nChange-Id: I28b24049ca114e1af3e24791dcc900f463536ba4\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": "c795b64060c3af9d7961fc1371e4ccfa8ee3e450",
      "tree": "aafa8ecde306b5420e96b7a6e0965d1f1f4c4fa6",
      "parents": [
        "4b77dc28097288cb062fce6bf5de0fb3394877a9"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Feb 22 15:38:35 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Mar 01 14:41:35 2012 -0800"
      },
      "message": "Switch the way we configure for MediaPlayer retransmission.\n\nThis is a cherry-pick of I6ab07d89b2eeb0650e634b8c3b7a0b36aba4e7dd\nwith merge conflicts addressed by hand and additional changes made in\nresponse to code review feedback.\n\nMove in the direction of a more publishable API for configuring a\nmedia player for retransmission.  It used to be that we used a custom\ninvoke and a modified URL (prefixed with aahTX://).  There are many\nissues with this technique and it was never meant to stand the test of\ntime.\n\nThis CL gets rid of all that.  A new (but currently hidden) method was\nintroduced to the java level MediaPlayer API, called\nsetRetransmitTarget(InetSocketAddress), which allows an app writer to\nset the retransmit target.  For now, this method needs to be called\nbefore a call to setDataSource (which is pretty unusual for the\nMediaPlayer API) because this mid level code uses this as a cue to\ninstantiate an aahTX player instead of relying on the data source to\nselect a player.  When retranmit functionality becomes part of the\nexisting android player implemenation, this\nset-retrans-before-set-data-source behavior can go away, along with\nthe aahTX player itself.\n\nChange-Id: I3b46c5227bbf69acb2f3cc4f93cfccad9777be98\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\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": "79af02c6a813b5d31fba3e7b72686a02f0ae7e0f",
      "tree": "662f61b610a5b0ee180d4b7940e1e1860b098eab",
      "parents": [
        "d6fd85a157ce2054b2304e6d171fa87ae09c363d",
        "5778822d86b0337407514b9372562b86edfa91cd"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 22 15:13:44 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 22 15:13:44 2012 -0800"
      },
      "message": "Merge \"Implementation of a java media codec interface and associated tools.\""
    },
    {
      "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": "2e77ad2a9f7afb57b6f9127dd7c229e774baa9c8",
      "tree": "070aac75ae2aab56beef610f91eeecd90f3ce599",
      "parents": [
        "c33305c5dd4cc06e71eb0c66a7150aa6ab647c99"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 21 17:16:25 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 22 10:20:46 2012 -0800"
      },
      "message": "Allow to record time lapse videos without using setProfile()\n\no also added a check on whether capture rate was set before starting time lapse video recording.\n\no related-to-bug: 6045507\n\nChange-Id: I8e1fdc8e8931e2684ab3822dc6260db44658e87d\n"
    },
    {
      "commit": "761defc341c5ce9019a42919c441f035f665ec0d",
      "tree": "23b76ab41456c90e80559ffbb7d8e31a38104dc4",
      "parents": [
        "ef7740be67a4d7b6b033ebed59c3d4a9c74a2c18"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 09 15:09:05 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 16 13:45:12 2012 -0800"
      },
      "message": "Upintegreate AAH TX and RX players from ICS_AAH\n\nUpintegrate the android at home TX and RX players developed in the\nICS_AAH branch.\n\nChange-Id: I8247d3702e30d8b0e215b31a92675d8ab28dccbb\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "7a8b0ed6419e57dd8b41d3806893d63d3df91aab",
      "tree": "da2076d221f7eb3e26db190d51173c04a91e0788",
      "parents": [
        "1f5ce8b0941c9c6baadd40d151634145f6d5a35c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 02 09:06:31 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 13 12:39:54 2012 -0800"
      },
      "message": "Playback rate on MediaPlayer\n\nAdd support for modifying the playback rate of a MediaPlayer\n by altering the sample rate of its AudioTrack.\nThe playback rate is expressed in permille, where 1000 is the\n playback at normal speed.\n\nChange-Id: I981d060ab32f7bae7a767e82c60c88ae635dceed\n"
    },
    {
      "commit": "f1d5aa162c02a16b7195a43a9bcea4d592600ac4",
      "tree": "dc270a6e1a4ee6695e309eeb29c4d9ed7f3a20a2",
      "parents": [
        "43089daaf82bd2b8e5f9a29b80af5abaae4657b3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Feb 06 23:46:37 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Feb 10 11:43:09 2012 -0800"
      },
      "message": "Move away from MediaDebug and use ADebug instead\n\nChange-Id: I963a3b6f79a7292891973cbeeaf3378b38629f08\n"
    },
    {
      "commit": "a3f1fa308728976fc9ca1b4f37d26e633b32b9ac",
      "tree": "613598b5d86ce915b4f505c0d9c19592fa8f7d79",
      "parents": [
        "04eaf3e5f20d7faa956c0d672024ffb5117f4c26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 14:54:46 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 16:06:47 2012 -0800"
      },
      "message": "Fix incorrect includes of AudioTrack.h\n\nRemove unnecessary includes of AudioTrack.h.\nUse forward declaration of class names in preference to #include when possible.\n\nChange-Id: I12982811fa75c2c7695d8bbfa595a7aaec047dc0\n"
    },
    {
      "commit": "fff6d715a8db0daf08a50634f242c40268de3d49",
      "tree": "f5331971b746b2e0d878e1127003a0dab72e5fbb",
      "parents": [
        "09192653e836b21689f004bf8dee375356641181"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 16:38:12 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 10:20:14 2012 -0800"
      },
      "message": "Use audio_stream_type_t consistently\n\nAt native level it was a mixture of audio_stream_type_t, int, uint32_t,\nand uint8_t.  Java is still int.  Also fixed a couple of hard-coded -1\ninstead of AUDIO_STREAM_DEFAULT, and in startToneCommand a hard-coded 0\ninstead of AUDIO_STREAM_VOICE_CALL.\n\nChange-Id: Ia33bfd70edca8c2daec9052984b369cd8eee2a83\n"
    },
    {
      "commit": "4cc55d53d542c4f4ed645738cebb65b9e7eb6c44",
      "tree": "417efab1bc349bfaa4bdf7fccdff0e53fb76e7c0",
      "parents": [
        "d5a8bf0bca459389cdb81fdcc30893516bdce951",
        "e1c3962e268ffc12bfd1bd9ea84da1f135f36960"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 10:30:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 10:30:28 2012 -0800"
      },
      "message": "Merge \"Use audio_format_t consistently\""
    },
    {
      "commit": "c1dc1cb1d1eaf84e88669f1a5f22579a0d9237c2",
      "tree": "a23167188913d4f7ae0673d5efc3a232d245d048",
      "parents": [
        "5f29ca38b71506ad7c7cb9925efbddf588e9655b"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 18:35:44 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 21:36:22 2012 +0000"
      },
      "message": "Rename LOG_ASSERT to ALOG_ASSERT  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157519\n\nBug: 5449033\nChange-Id: I8ceb2dba1b031a0fd68d15d146960d9ced62bbf3\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": "5ff1dd576bb93c45b44088a51544a18fc43ebf58",
      "tree": "c002dcda87f08329197b01395539bd25f10ca737",
      "parents": [
        "8a08dcc0a5de19a904e77d5f31bed3dff9a59890"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 10:07:54 2012 +0000"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157065\n\nBug: 5449033\nChange-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69\n"
    },
    {
      "commit": "e1c3962e268ffc12bfd1bd9ea84da1f135f36960",
      "tree": "d24fac9434dbe5808a6c31a50414da7b5ce47c9a",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 09:36:37 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 13:34:54 2012 -0800"
      },
      "message": "Use audio_format_t consistently\n\nWas int, uint32_t, uint16_t, and uint8_t with 2-bit bitfield.\nAlso replace 0 by AUDIO_FORMAT_DEFAULT and replace 1 by\nAUDIO_FORMAT_PCM_16_BIT.\n\nChange-Id: Ia8804f53f1725669e368857d5bb2044917e17975\n"
    },
    {
      "commit": "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": "b8a805261bf0282e992d3608035e47d05a898710",
      "tree": "7a43908b8e936ac1f30eef0542b40d667c47aa23",
      "parents": [
        "94023fa6744e24f26f0aba1699ec278649bd66df"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Jan 03 22:38:27 2012 +0000"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156016\n\nBug: 5449033\nChange-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298\n"
    },
    {
      "commit": "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": "90100b5573f95e8404c6e2917520e090fe8b49fd",
      "tree": "7d12fdb072b5eee22499efeff79d246eb3657e5f",
      "parents": [
        "5c052218128013d630b4d9a84393ebfbff11f3e8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 23 17:11:35 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 16 15:43:31 2011 -0800"
      },
      "message": "MidiFile uses C++ Thread not createThreadEtc\n\nThis permits leveraging future improvements to Thread.\n\nChange-Id: I323b709e935c47fa3c6041cb8b82fda994e78b56\n"
    }
  ],
  "next": "fa1e6f99cd4f2e23e23dbbb1fd43041fcd32fe9e"
}
