)]}'
{
  "log": [
    {
      "commit": "00a10e8eb39526df06779e0cdb6e6871752934d7",
      "tree": "0436b46c52a7118707958a170ff601abdadaa998",
      "parents": [
        "ef36d496477d1e2ae99c3cd43eee5cf7e82b0883"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 26 16:45:05 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 26 16:45:05 2012 -0700"
      },
      "message": "Use a status_t return type for GL functors\n\nWebView needs more fine-grained control over the behavior of the\nframework upon execution of the display lists. The new status_t\nallows WebView to requests its functor to be re-executed directly\nwithout causing a redraw of the entire hierarchy.\n\nChange-Id: I97a8141dc5c6eeb6805b6024cc1e76fce07d24cc\n"
    },
    {
      "commit": "ef36d496477d1e2ae99c3cd43eee5cf7e82b0883",
      "tree": "17179b49680f4c242c80ecd1dc9887fcab6ecbdb",
      "parents": [
        "fdac94af1d925a983f63aa50d50f1e1559844928",
        "78b5e82f421bfdf5c1c72bd0ca2fb7f3bc1a45ff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 14:06:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 23 14:06:00 2012 -0700"
      },
      "message": "Merge \"Revert \"Split libmedia into libmedia and libmedia_native\"\""
    },
    {
      "commit": "78b5e82f421bfdf5c1c72bd0ca2fb7f3bc1a45ff",
      "tree": "b3446119a9b6c03dcca98d1d9ee31a83adb8acad",
      "parents": [
        "c524ffda17017d8467a237a1eddfd7e7c03c6617"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 14:05:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 23 14:05:52 2012 -0700"
      },
      "message": "Revert \"Split libmedia into libmedia and libmedia_native\"\n\nThis reverts commit 0a3edd38df0743dcc7091bb7ebf29e7e7dadc7cb"
    },
    {
      "commit": "fdac94af1d925a983f63aa50d50f1e1559844928",
      "tree": "cf8c7bb60b4251b3b1ffb84e29715841bae679a3",
      "parents": [
        "bc8b5faec8a0a9ad7c8d94945e7b000d63f0afe6",
        "d12c68ad699ce0ed822a4d4db86e8e02324c6b03"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 14:05:02 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 23 14:05:02 2012 -0700"
      },
      "message": "Merge \"Revert \"AudioFlinger does not need libmedia any more\"\""
    },
    {
      "commit": "d12c68ad699ce0ed822a4d4db86e8e02324c6b03",
      "tree": "ffe2a3e44b05ad91acff86224ace0a4e8532e670",
      "parents": [
        "4f5da11df06802856bf526f16563df7d5755f653"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 14:04:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 23 14:04:27 2012 -0700"
      },
      "message": "Revert \"AudioFlinger does not need libmedia any more\"\n\nThis reverts commit c920dee060ac69684be33210ee44b99a5fc3e8b2"
    },
    {
      "commit": "bc8b5faec8a0a9ad7c8d94945e7b000d63f0afe6",
      "tree": "9a8c0ef81aa5e2fc2acd3f5718fbe64f8d4f3e67",
      "parents": [
        "529127450abdeddf5d2467c7973e779a6b1376ea"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 23 08:39:04 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 23 08:39:04 2012 -0700"
      },
      "message": "Fix the file mimetype reported by the mpeg4 extractor.\n\nChange-Id: I72474c17757dba5867f55b0e99e76e9e4e32ce7b\nrelated-to-bug: 6217289\n"
    },
    {
      "commit": "529127450abdeddf5d2467c7973e779a6b1376ea",
      "tree": "29cc2e5196553eb5878163342787298351f71a5d",
      "parents": [
        "4f5da11df06802856bf526f16563df7d5755f653",
        "d71fb1be1c25e5eca1dfab97a89e7848ed25e65d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Mar 22 15:47:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 22 15:47:49 2012 -0700"
      },
      "message": "Merge \"Merge remote-tracking branch \u0027goog/ics-aah-exp\u0027 into merge\""
    },
    {
      "commit": "d71fb1be1c25e5eca1dfab97a89e7848ed25e65d",
      "tree": "ffe2a3e44b05ad91acff86224ace0a4e8532e670",
      "parents": [
        "ab55517549170b0def3d7b625324b6a44b60d5ae",
        "f4a9fb6d90c442e648367063d73f2c236342e73f"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Mar 22 15:32:51 2012 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Mar 22 15:32:51 2012 -0700"
      },
      "message": "Merge remote-tracking branch \u0027goog/ics-aah-exp\u0027 into merge\n"
    },
    {
      "commit": "4f5da11df06802856bf526f16563df7d5755f653",
      "tree": "29cc2e5196553eb5878163342787298351f71a5d",
      "parents": [
        "ab55517549170b0def3d7b625324b6a44b60d5ae"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 22 15:21:35 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 22 15:24:22 2012 -0700"
      },
      "message": "AudioFlinger does not need libmedia any more\n\nChange-Id: Ifd2c61882109ec36ca68072a2bf6506e08c8cf34\n"
    },
    {
      "commit": "ab55517549170b0def3d7b625324b6a44b60d5ae",
      "tree": "ffe2a3e44b05ad91acff86224ace0a4e8532e670",
      "parents": [
        "a411f779465504ff3e1a59c8ffa43d18385852b8",
        "afed0e1fa37473a4cd30018577b560acc79d9a3f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Mar 22 14:00:53 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 22 14:00:53 2012 -0700"
      },
      "message": "Merge \"Use NuPlayer for media playback everywhere\""
    },
    {
      "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": "f4a9fb6d90c442e648367063d73f2c236342e73f",
      "tree": "4651d348d3069720a68ee2f46c56f2311bbe1bd0",
      "parents": [
        "29f0c3786f7e4793e9f512fc41864280d7e6fb7e"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Mar 22 11:26:45 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Mar 22 11:30:09 2012 -0700"
      },
      "message": "LibAAH_RTP: Fix an issue which crept in during code review.\n\nFix a mistake which came in as part of a merge conflict resolution\nduring code review of the recent unicast mode refactor of LibAAH_RTP.\nNop packet which were supposed to carry TS transformations for the\npause state accidentally got flagged as Flush operations.  The flush\npacket successfully carried the TS transformation, but also had the\nundesired side effect of constantly flushing the stream.\n\nChange-Id: I4c6aa0043fc274a1d7e880ed1d19cf277f22194b\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "a411f779465504ff3e1a59c8ffa43d18385852b8",
      "tree": "a152f05bd2b5dd70ee5bfaa261fcbdeb5ee6d8ac",
      "parents": [
        "a98478bfbcc0f7fb4b164d3dce40ca96df75667d",
        "291f4d505aff81969e6666049d3cc3446f836af2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 22 11:06:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 22 11:06:49 2012 -0700"
      },
      "message": "Merge \"Remove enforceFrameCount\""
    },
    {
      "commit": "a98478bfbcc0f7fb4b164d3dce40ca96df75667d",
      "tree": "44a6ad7c4a9fb330ebdf560a2d8f446b43278498",
      "parents": [
        "898b11f2aeaaa2bed84d963a3fcfd3b229e00b99"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 13:36:07 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Mar 22 10:06:03 2012 -0700"
      },
      "message": "Support gapless playback for mp3 and m4a\n\nGapless playback for appropriately tagged mp3 and m4a files.\nCurrently this is implemented in OMXCodec, which most players\nuse, but should be easy to support in other players as well by\nusing the SkipCutBuffer utility class.\n\nChange-Id: I748c669adc1cfbe5ee9a7dea2fad945d48882551\n"
    },
    {
      "commit": "898b11f2aeaaa2bed84d963a3fcfd3b229e00b99",
      "tree": "282215a72d7ba3ba6d23d2de7ccb6c6fc07d425d",
      "parents": [
        "2f694b3ef6af235e7ba850d57538eece9f136499",
        "c524ffda17017d8467a237a1eddfd7e7c03c6617"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 22 07:14:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 22 07:14:27 2012 -0700"
      },
      "message": "Merge \"Split libmedia into libmedia and libmedia_native\""
    },
    {
      "commit": "c524ffda17017d8467a237a1eddfd7e7c03c6617",
      "tree": "f474647ebc3c87fe7aee804d558a3cfbd38fcfe3",
      "parents": [
        "ccf89b54f973f11082150d02ed957f7e967fbc8b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 09:08:11 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 15:45:29 2012 -0700"
      },
      "message": "Split libmedia into libmedia and libmedia_native\n\nThis is still in the old location\n\nChange-Id: Ic1be549b5b607cfd519cb4cecc581624510a4ee1\n"
    },
    {
      "commit": "291f4d505aff81969e6666049d3cc3446f836af2",
      "tree": "f2ad96c1acfb08c190148f8f12a7f86825cd7728",
      "parents": [
        "ccf89b54f973f11082150d02ed957f7e967fbc8b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 12:16:56 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 15:41:02 2012 -0700"
      },
      "message": "Remove enforceFrameCount\n\nIt was only used to decide whether to issue a warning.\nThe warning was issued the first time track was created but\nnot at re-creation.  Now it is a verbose message every time,\nnot a warning since it happens all the time with key clicks on A2DP.\n\nChange-Id: I9d39f53c0a7eb84b666e55b1b76ff830cf8f37ba\n"
    },
    {
      "commit": "2f694b3ef6af235e7ba850d57538eece9f136499",
      "tree": "2430918606f606e50b15b83b019480238ab5c762",
      "parents": [
        "4949c36978b844f65abf84027e1cf2dcf82c1184",
        "feba11fd788c99b0b63e0bce724730817688d82f"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 15:12:44 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 15:12:44 2012 -0700"
      },
      "message": "Merge \"Add MetaData::dumpToLog\""
    },
    {
      "commit": "feba11fd788c99b0b63e0bce724730817688d82f",
      "tree": "60cdb535b8e065dca3bac358c300f5e973aa7066",
      "parents": [
        "f6e7ad1543ce19f05600d9414360c74c83e467bb"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 12:27:00 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 15:00:27 2012 -0700"
      },
      "message": "Add MetaData::dumpToLog\n\nUtility method for dumping the content of a MetaData object to the log.\n\nChange-Id: I2d91b991e1d9fed2215e8995a73c2b1854205074\n"
    },
    {
      "commit": "29f0c3786f7e4793e9f512fc41864280d7e6fb7e",
      "tree": "d3e5ae152deffef5f54d48ce70fa65bf1d75aa42",
      "parents": [
        "6373153c49b1ac88169a9c047451617be0b2b138"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Mar 19 16:04:18 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Mar 21 14:01:47 2012 -0700"
      },
      "message": "LibAAH_RTP: Properly handle EOS conditions.\n\nEOS was being treated as a flush operation which was causing problems.\nIn particular, the transmitter was delcaring that playback was\ncomplete early (by the clock lead time of the system, which was 1\nsecond in this case).  Also, the receiver was treating the EOS message\njust like the flush message, immediately destroying the substreams\nassociated with the program without letting them play out first.\n\nChange the transmitter to send the EOS message like it always does,\nbut have it wait until the media time of the last sample has arrived\nbefore reporting playback complete to the app level of things.\n\nOn the receiver side of things, don\u0027t treat the EOS message like the\nflush message.  Instead, have the EOS message simply put the substream\ninto EOS mode, allowing it to signal EOS to its decoder and shut off\nthe isAboutToUnderflow hack.\n\nChange-Id: Ibe3ac01044373f83edb7a5f4b70478bd78c16d11\n"
    },
    {
      "commit": "6373153c49b1ac88169a9c047451617be0b2b138",
      "tree": "d48c3255e69c21c90c1e7d615745ccbf7b96fe4e",
      "parents": [
        "f4d5e646d1618d82d07289fa5440e81e4021615a"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Mar 19 11:20:02 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Mar 21 12:12:31 2012 -0700"
      },
      "message": "LibAAH_RTP: Get rid of PipeEvent\n\nBionic/Android support eventfd, so there is really no reason to have\nPipeEvent around any more.  This change gets rid of it in LibAAH_RTP\nand replaces it with eventfds.\n\nChange-Id: I841fcb71bf5015d521d7517c69f44eac0ea92278\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "f4d5e646d1618d82d07289fa5440e81e4021615a",
      "tree": "695107ca0765939f57658e2bfac0bfcca2c23290",
      "parents": [
        "011a306aa4fa1be539c04a4cb892ed0068de4fe2"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Sun Mar 18 16:35:36 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Mar 21 12:12:28 2012 -0700"
      },
      "message": "LibAAH_RTP: Add unicast mode support to the RXPlayer\n\nAdd support for unicast mode to the AAH RXPlayer.  At the API level,\nthings should be pretty simple.  To use unicast mode, instead of\npassing the multicast address and port in the data source URL, just\npass the unicast address and port of the transmitters command and\ncontrol port.  For example, instead of\n\naahRX://224.128.60.5:8867\n\none might instead pass\n\naahRX://192.168.63.5:55476\n\nChange-Id: I7b40716983d7a91def86dcf40f093dda4255aae3\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "011a306aa4fa1be539c04a4cb892ed0068de4fe2",
      "tree": "aed98515816548ab4e3a96ecf94b49784d48b401",
      "parents": [
        "f4c715600bf16656f7298adbf494ee70eb1806fa"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Sat Mar 17 17:05:50 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Mar 21 12:10:41 2012 -0700"
      },
      "message": "LibAAH_RTP: Fix a stuttering audio bug.\n\nFix a bug discovered while working on adding unicast mode to the TX/RX\nplayers.  Also some general cleanup/consolidation regarding timeout\ncode.\n\nThe bug went like this.  When a TX player had hit EOS, it would send\nan EOS command payload to its receivers.  Later, when application\nlevel code shutdown and cleaned up the player, it would send another.\nIn situations where there is massive packet loss, there is a chance\nthat not only did both of the EOS packets get dropped, but that they\nnever got filled in by the retry algorithm because the receiver gave\nup on the RTP gap due to an aboutToUnderflow situation in at least one\nof its active substreams.\n\nWhen this happens, there are two major problems.  First, all of the\nsubstreams associated with the TX player which has now gone away have\nbecome effectively leaked.  They will only get cleaned up if the\nentire RTP stream (the TX Group) goes away for 10 seconds or more, or\nwhen the RX Player itself is reset by application level code or a\nfatal error.  These substreams are holding decoder and renderer\nresources which are probably in very short supply, which is a Bad\nThing.\n\nSecond, there is now at least one substream in the RX player which is\nnever going to receive another payload (its TX player source is gone),\nbut is still considered to be active by the rx player.  Assuming that\nthis substream\u0027s program was in the play state when the track ended,\nthere is now at least one substream which is always\n\"aboutToUnderflow\".  From here on out, when the retry algorithm is\nattempting to decide whether or not it has the time to attempt to fill\nin a gap in the muxed RTP sequence, it always decides that it does not\nhave the time because of the orphaned substream which is stuck in its\nabout to underflow state.  This effectively means that the retry\nalgorithm is completely shut off until the rx player gets reset\nsomehow (something which does not happen during normal operation).\nSince the environment had to be extremely lossy to trigger this chain\nof events in the first place, and its probably no better now, your\nplayback is just going to be chock full of gaps which produces\nhorrible stuttering in the presentation stage of the system.\n\nTwo new failsafes have been introduced to keep the double EOS drop\nfrom causing this.  First, a timeout has been introduced on the\nsubstream level, in addition to the already existing RTP level\ntimeout.  If a substream fails to receive an activity for 10 seconds\n(same timeout as the master RTP timeout), it will be automatically\nflushed and purged.\n\nSecond, the nature of the master RTP timeout on the transmitter side\nhas been changed.  Instead of just sending an empty NOP command packet\nto indicate that the main RTP stream is still alive, the transmitter\nnow sends a new time of command packet; the Active Program Update\npacket.  This packet contains a list of all the active program ID\nattached to this TX group.  Upon receiving one of these APU packets,\nRX players reset the inactivity timers for all substreams which are\nmembers of the programs listed in the packet, but they also\nimmediately purge any substreams associated with programs not present\nin the APU.\n\nBetween the two of these, no matter how nasty and selective the packet\nsmashing gremlins in your system happen to be, substreams will always\neventually clean up and avoid getting stuck in a perma-stutter\nsituation.\n\nAlso in this CL:\n+ Extract some common utility code into a utils.cpp file so that it\n  can be shared across the library.\n+ Stop using custom timeout logic in the RXPlayer.  Instead, use the\n  common Timeout helper class in utils.cpp.\n\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\nChange-Id: I350869942074f2cae020f719c2911d9092ba8055\n"
    },
    {
      "commit": "f4c715600bf16656f7298adbf494ee70eb1806fa",
      "tree": "71db8d11da1e5d19714dd3fd0a0632a99aca525c",
      "parents": [
        "f209ed70de9325f4b32bce4c15a1948ec35581eb"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Mar 14 18:37:14 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Mar 21 12:02:37 2012 -0700"
      },
      "message": "LibAAH_RTP: Refactor TXGroup code, add unicast mode.\n\nSignificantly refactor the TXGroup code to allow transmit groups to\noperate in a unicast fanout mode in addition to the traditional pure\nmulticast mode.  Important changes include...\n\n+ Each transmit group active in the system now has its own socket to\n  send and receive traffic on.  In the past, this socket was used to\n  listen for retry requests from clients.  Now it is also used to\n  listen for group membership reports (IGMPv3 style) from unicast\n  clients.  Having an individual socket per transmit group allows\n  unicast clients to join the group needing only the IP address and\n  port of the transmitters socket, and not needing any additional\n  \"group id\" to be sent to the client beforehand.\n+ Setup for the transmitter is now slightly different.  As before, to\n  setup for multicast mode, a user can call setRetransmitEndpoint\n  passing an IPv4 multicast address and specific port to transmit to.\n  It used to also be the case that a user could pass a specific\n  unicast address and port to transmit to as well.  This is no longer\n  allowed.  Instead, to operate in unicast mode, a user passes 0.0.0.0\n  (IPADDR_ANY) as the IP address.  In addition, they need to pass\n  either 0 for a port to create a new unicast mode TX group, or they\n  need to pass a specific port to cause the player to attempt to use\n  an existing unicast mode TX group.  The specific port should be the\n  command and control port of the TX group which was bound to when the\n  group was originally created.\n+ A magic invoke was added to allow clients to fetch the command and\n  control port on which a TX Player\u0027s TX Group is listening.\n\nThe API described above is most likely temporary and should eventually\nbe replaced with one where TX groups are formal top level objects with\ntheir own independent interface and life-cycle management.\n\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\nChange-Id: Ib4e9737c10660d36c50f1825c9824fff5390b1c7\n"
    },
    {
      "commit": "4949c36978b844f65abf84027e1cf2dcf82c1184",
      "tree": "4b02e7986837f7ccf07c1e5df733fbd1ad9e541f",
      "parents": [
        "d2d24d8c0d36305bc89ab1626ed58e3aa9af41bb",
        "5d2f8ba30c24ea597d54468cda01c7ec5f6a0e66"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 10:16:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 10:16:55 2012 -0700"
      },
      "message": "Merge \"Parse gapless info from mp4 files\""
    },
    {
      "commit": "f209ed70de9325f4b32bce4c15a1948ec35581eb",
      "tree": "615b718dbd683d8fe67212567337f473d00bd186",
      "parents": [
        "5616e66477953a011429ff71a4fd1ddc4968928f"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Tue Mar 13 14:02:14 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Mar 21 09:52:04 2012 -0700"
      },
      "message": "LibAAH_RTP: Change names to prepare for refactor.\n\nRename AAH_TXSender to AAH_TXGroup in preparation for refactoring to\nsupport unicast retransmission.\n\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\nChange-Id: I3984db27d1c61c6155d5d7cb9c38eead421b9249\n"
    },
    {
      "commit": "5d2f8ba30c24ea597d54468cda01c7ec5f6a0e66",
      "tree": "72b132fe5d63a0bceb5d5499aeed8475864c9e2e",
      "parents": [
        "f6e7ad1543ce19f05600d9414360c74c83e467bb"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 20 10:05:06 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 21 09:50:53 2012 -0700"
      },
      "message": "Parse gapless info from mp4 files\n\nChange-Id: I4c83d4e12e996dc29708268e68a4bb74b368c6f3\n"
    },
    {
      "commit": "d2d24d8c0d36305bc89ab1626ed58e3aa9af41bb",
      "tree": "0da87ace16edf4a3b992ca9a9934d34b73450ebd",
      "parents": [
        "bcd5944578ee3c8803243ed60334f817968fe603",
        "ad9c8528feedd06542c817de3e094534c59ed847"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 21 09:09:04 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 21 09:09:04 2012 -0700"
      },
      "message": "am fcf2f4b1: am 98e1b541: Reconcile with ics-mr1-release\n\n* commit \u0027fcf2f4b17338501d8498a2a16eb832445b293e8f\u0027:\n"
    },
    {
      "commit": "ad9c8528feedd06542c817de3e094534c59ed847",
      "tree": "c33b192e00e226495066be24aa9df36212378d72",
      "parents": [
        "0ff7b8ee7f619f54464d5d3002769c746f6062a9",
        "044773292b82db6575b2234962564b5706aa1cf3"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 21 09:06:34 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 21 09:06:34 2012 -0700"
      },
      "message": "am 98e1b541: Reconcile with ics-mr1-release\n\n* commit \u002798e1b541f271e92b9dc25d54e275c28102746b04\u0027:\n"
    },
    {
      "commit": "044773292b82db6575b2234962564b5706aa1cf3",
      "tree": "8e3233b2ef42a094d31d6eea8befbe8daceef9e5",
      "parents": [
        "0f5591d80245500b98f2d8d7477248a30a7b0473",
        "bd98366df5cac3b7ea5b3cecde5fcb4d2731a145"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 21 09:00:43 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 21 09:00:43 2012 -0700"
      },
      "message": "Reconcile with ics-mr1-release\n\nChange-Id: Id19190393a665dd1b07c073970925758aa383691\n"
    },
    {
      "commit": "bcd5944578ee3c8803243ed60334f817968fe603",
      "tree": "0da87ace16edf4a3b992ca9a9934d34b73450ebd",
      "parents": [
        "c5c49398584f2399af905a931e556ed6e0a29cd4",
        "0ff7b8ee7f619f54464d5d3002769c746f6062a9"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 21 08:29:33 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 21 08:29:33 2012 -0700"
      },
      "message": "am a4a09465: am 35a8f94d: Reconcile with ics-mr1-release\n\n* commit \u0027a4a09465569d0f4cce36f089fa02d5ef9b95db81\u0027:\n  Fix 5960562: Show emergency button on PukUnlock screen\n"
    },
    {
      "commit": "c5c49398584f2399af905a931e556ed6e0a29cd4",
      "tree": "0da87ace16edf4a3b992ca9a9934d34b73450ebd",
      "parents": [
        "ccf89b54f973f11082150d02ed957f7e967fbc8b",
        "f99590187e2e3f1cf6f093063170edec269cac5d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 08:29:18 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 08:29:18 2012 -0700"
      },
      "message": "Merge \"Clean up Track constructor\""
    },
    {
      "commit": "0ff7b8ee7f619f54464d5d3002769c746f6062a9",
      "tree": "c33b192e00e226495066be24aa9df36212378d72",
      "parents": [
        "da394bb36de36c52db24fe6b6250d1c623aa5626",
        "b6bf4cc62db7835fcdaa6243d5bf975a18a4fcd1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 21 08:26:56 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 21 08:26:56 2012 -0700"
      },
      "message": "am 35a8f94d: Reconcile with ics-mr1-release\n\n* commit \u002735a8f94da6a8a3a6757e5663bfcbcd044f72a92a\u0027:\n  Fix 5960562: Show emergency button on PukUnlock screen\n"
    },
    {
      "commit": "b6bf4cc62db7835fcdaa6243d5bf975a18a4fcd1",
      "tree": "c33b192e00e226495066be24aa9df36212378d72",
      "parents": [
        "9d7b4c074205609271f61e1a4741ac0c524a1795",
        "bd98366df5cac3b7ea5b3cecde5fcb4d2731a145"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 21 08:23:03 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 21 08:23:03 2012 -0700"
      },
      "message": "Reconcile with ics-mr1-release\n\nChange-Id: I10d78e60e39606f85cfa6fc7e9a7da14db0eeb0a\n"
    },
    {
      "commit": "ccf89b54f973f11082150d02ed957f7e967fbc8b",
      "tree": "b3446119a9b6c03dcca98d1d9ee31a83adb8acad",
      "parents": [
        "63c1faa8dea7feb90255d31ef2a133d8f2818844",
        "5c94b6c7689a335e26a86e8a0d04b56dc627738e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 08:19:04 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 08:19:04 2012 -0700"
      },
      "message": "Merge \"AudioMixer can be configured for fewer max tracks\""
    },
    {
      "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": "7153494670bdac8b650cb10b8b1838651e0ca418",
      "tree": "94c6c21f7100bdb9aefc82bb0c6d77482742a455",
      "parents": [
        "a26ff6f22f4e86d09514c2819237bd9748455018",
        "ea7939a079b3600cab955760839b021326f8cfc3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 07:22:40 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 07:22:40 2012 -0700"
      },
      "message": "Merge \"Whitespace\""
    },
    {
      "commit": "a26ff6f22f4e86d09514c2819237bd9748455018",
      "tree": "e50bf0801eeb218e579448016aa69c548b1c0187",
      "parents": [
        "903626bd3cf03920f2ca8ce8ce5cca2874d5e02d",
        "a03567676e8766828ff970b87e13bc4c97b23473"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 07:21:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 07:21:21 2012 -0700"
      },
      "message": "Merge \"new doesn\u0027t fail on Android\""
    },
    {
      "commit": "903626bd3cf03920f2ca8ce8ce5cca2874d5e02d",
      "tree": "4e423f1d508eb65b0df732ba6776316c0597e299",
      "parents": [
        "9a5f413a21b320fea0607e653bc75b1a4f0e7a2e",
        "da394bb36de36c52db24fe6b6250d1c623aa5626"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 20 19:35:56 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 20 19:35:56 2012 -0700"
      },
      "message": "am d58b6cd1: am cbc90453: am 14958e21: Merge \"audioflinger: fix issue with camcorder and A2DP\" into ics-mr1\n\n* commit \u0027d58b6cd1e3fdf3deb5147daec556fe424a568732\u0027:\n"
    },
    {
      "commit": "9a5f413a21b320fea0607e653bc75b1a4f0e7a2e",
      "tree": "4e423f1d508eb65b0df732ba6776316c0597e299",
      "parents": [
        "65b5a46b4387e064d1bfb2ae9e8a1aa523b20f41",
        "f607e2e488ad0438bf6d4a4cd841ba1f902206c7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 20 19:35:53 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 20 19:35:53 2012 -0700"
      },
      "message": "am a48285c4: am 165ee4c5: am 14958e21: Merge \"audioflinger: fix issue with camcorder and A2DP\" into ics-mr1\n\n* commit \u0027a48285c4f22ffc43f1771ebd1ff35dcec48db2c7\u0027:\n  audioflinger: fix issue with camcorder and A2DP\n"
    },
    {
      "commit": "65b5a46b4387e064d1bfb2ae9e8a1aa523b20f41",
      "tree": "12746c7982c8db11d3de41edea7d7da9e55e289f",
      "parents": [
        "286df86540d638e30359642068f1022c583e823e",
        "eb47ddf8e410b2848e86e2be5ba442d82aa36362"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 20 19:35:41 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 20 19:35:41 2012 -0700"
      },
      "message": "am 044e7503: am eaa08d35: am 2a0d685e: Merge \"MediaPlayerService: fix AudioSink latency\" into ics-mr1\n\n* commit \u0027044e7503ccdcd81adb69b5218b3b92ede47b005a\u0027:\n"
    },
    {
      "commit": "286df86540d638e30359642068f1022c583e823e",
      "tree": "12746c7982c8db11d3de41edea7d7da9e55e289f",
      "parents": [
        "e9ddbf9466a64e211e518efa2f2058f8bbb4d513",
        "bfc4cdf402546278f0835f94c7990b42a0566bb0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 20 19:24:33 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 20 19:24:33 2012 -0700"
      },
      "message": "resolved conflicts for merge of ec94ecad to master\n\nChange-Id: I13bc9671cc1ef02bede7e83253aa8a005367fa0c\n"
    },
    {
      "commit": "e9ddbf9466a64e211e518efa2f2058f8bbb4d513",
      "tree": "12746c7982c8db11d3de41edea7d7da9e55e289f",
      "parents": [
        "efbdae278103028aa981eebd5e328aa8e3cb54f3",
        "bae00e73c6d1d87cc5fd42b50f95d1d9572162ea"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Mar 20 18:53:29 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 20 18:53:29 2012 -0700"
      },
      "message": "Merge \"Handling end times of subtitles.\""
    },
    {
      "commit": "bae00e73c6d1d87cc5fd42b50f95d1d9572162ea",
      "tree": "23f0936dc8ce1c2167fbba1b9f1c2d9de7044f7e",
      "parents": [
        "1bb8e81b066a2311fd238fc6dae8f026e33ed99e"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Wed Mar 14 08:16:35 2012 +0900"
      },
      "committer": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Wed Mar 21 10:44:04 2012 +0900"
      },
      "message": "Handling end times of subtitles.\n\nChange-Id: Ic19ec8980d0a2bf9f265d375cd56e638a2460af8\n"
    },
    {
      "commit": "efbdae278103028aa981eebd5e328aa8e3cb54f3",
      "tree": "23d8a2963d0eb3aac82513735141ab9a547816cb",
      "parents": [
        "59a142337b023ecdef4e0ec2768cee289af34b39",
        "c7c8375bad086263ca1e14d08e03a69e4a3b1651"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 20 18:20:33 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 20 18:20:33 2012 -0700"
      },
      "message": "am eb99cacc: am b388138f: resolved conflicts for merge of 3fe7ee65 to ics-mr1-plus-aosp\n\n* commit \u0027eb99caccd7165385fc83b0175c6d176c990f179b\u0027:\n"
    },
    {
      "commit": "59a142337b023ecdef4e0ec2768cee289af34b39",
      "tree": "23d8a2963d0eb3aac82513735141ab9a547816cb",
      "parents": [
        "4dceed6d2a13ff88942d01a4e99daab9b3aaca9f",
        "e341547e2931b4aae4681053491ba5ccbab06e6f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 20 18:20:31 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 20 18:20:31 2012 -0700"
      },
      "message": "am 04353390: resolved conflicts for merge of 393dd03e to ics-scoop-plus-aosp\n\n* commit \u002704353390722b9195434cc86af4414004eff058e8\u0027:\n  AudioTrack: relax check on minimum buffer size\n"
    },
    {
      "commit": "5c94b6c7689a335e26a86e8a0d04b56dc627738e",
      "tree": "05dcb7c6007c923a4f3ef04371e62834940a66b0",
      "parents": [
        "6da08fc33642b832d1cde2e46815a5fd67dd0016"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 20 17:01:29 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 20 17:27:10 2012 -0700"
      },
      "message": "AudioMixer can be configured for fewer max tracks\n\nChange-Id: I371b17cef071d083eecf35cd3627a3adff907a33\n"
    },
    {
      "commit": "f99590187e2e3f1cf6f093063170edec269cac5d",
      "tree": "6eebb059b54519d1208ca349e63fc4cf452bc4d5",
      "parents": [
        "6da08fc33642b832d1cde2e46815a5fd67dd0016"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 11:14:37 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 20 17:15:12 2012 -0700"
      },
      "message": "Clean up Track constructor\n\nThe \u0027thread\u0027 parameter can never be NULL.\nUse constructor initialization list when possible.\nMake more members const.\nOnly put the relevant code under \"if (mCblk !\u003d NULL)\".\nAdd comment about track name leak.\n\nChange-Id: Ib963390a69bed1999638cc982a759edd1d5f4712\n"
    },
    {
      "commit": "4dceed6d2a13ff88942d01a4e99daab9b3aaca9f",
      "tree": "23d8a2963d0eb3aac82513735141ab9a547816cb",
      "parents": [
        "f6e7ad1543ce19f05600d9414360c74c83e467bb",
        "2ee367e444e7b62e02bde8a2e47603a9ad342c6e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 20 14:01:39 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 20 14:01:39 2012 -0700"
      },
      "message": "Merge \"Add libmedia_native\""
    },
    {
      "commit": "f6e7ad1543ce19f05600d9414360c74c83e467bb",
      "tree": "dd27bc21d9890b038d0789685aa4c314f39198e9",
      "parents": [
        "6da08fc33642b832d1cde2e46815a5fd67dd0016",
        "092406a2568316bbe5ed1ec6335e6f1d128ebf8e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 20 10:08:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 20 10:08:52 2012 -0700"
      },
      "message": "Merge \"Move COM tag parsing to constructor\""
    },
    {
      "commit": "092406a2568316bbe5ed1ec6335e6f1d128ebf8e",
      "tree": "8d4d9cc825dfec85704d1e8f966662261f9a3031",
      "parents": [
        "b636abde14f2612ea236257846b9ab15d87d4623"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 20 09:48:02 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 20 09:48:02 2012 -0700"
      },
      "message": "Move COM tag parsing to constructor\n\nChange-Id: Icfcf05655ca98ccccad4f94834770c2f4098a764\n"
    },
    {
      "commit": "6da08fc33642b832d1cde2e46815a5fd67dd0016",
      "tree": "71497d4c025e37113e7844566bfb06ece7c0d8fe",
      "parents": [
        "fa6494d086e697543efa3d16440647e14ea09f30",
        "b636abde14f2612ea236257846b9ab15d87d4623"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 20 09:15:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 20 09:15:05 2012 -0700"
      },
      "message": "Merge \"Parse mp3 encoder padding/delay\""
    },
    {
      "commit": "b636abde14f2612ea236257846b9ab15d87d4623",
      "tree": "2aa58e136a7d4cf3f00ebdbcdffc49f0ddef35ca",
      "parents": [
        "9e50385f34676d8fcb3b473ec4c9f5c388a4c887"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Mar 19 13:49:43 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 20 08:46:11 2012 -0700"
      },
      "message": "Parse mp3 encoder padding/delay\n\nGet the mp3 encoder padding and delay from a XING frame or iTunSMPB tag.\n\nChange-Id: Icde598c8857d7e7c187a718f478ee9799d6a1b8a\n"
    },
    {
      "commit": "fa6494d086e697543efa3d16440647e14ea09f30",
      "tree": "39df5e3d5fdff528f8fa8ab364b07dde2b90fc75",
      "parents": [
        "1bb8e81b066a2311fd238fc6dae8f026e33ed99e",
        "8e0792bb55a604ffcd4aa90fdb4419d8b3c6ad24"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Mar 19 19:25:56 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 19 19:25:56 2012 -0700"
      },
      "message": "Merge \"Do not set camera preview display if the surface is null.\""
    },
    {
      "commit": "ea7939a079b3600cab955760839b021326f8cfc3",
      "tree": "570fb56838735a46a28e28a4f083d763f758ea24",
      "parents": [
        "eb76ff27c13386eb5a2dad73b1a8366f80eb0ff7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 12:56:26 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 17:53:33 2012 -0700"
      },
      "message": "Whitespace\n\nFix indentation, and add blank lines in key places for clarity\n\nChange-Id: I57a0a8142394f83203161aa9b8aa9276abf3ed7c\n"
    },
    {
      "commit": "2ee367e444e7b62e02bde8a2e47603a9ad342c6e",
      "tree": "95649f9b430efcb58ffd0dad50ea44f4ab038eb3",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 17:36:25 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 17:36:25 2012 -0700"
      },
      "message": "Add libmedia_native\n\nChange-Id: I3ac357c78fb89f108d15c6e5b9fa317de0e9fb9a\n"
    },
    {
      "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": "a03567676e8766828ff970b87e13bc4c97b23473",
      "tree": "0bb2f382b1ee44d8c38d5dadf0b45d7962889836",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 10:38:51 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 10:50:57 2012 -0700"
      },
      "message": "new doesn\u0027t fail on Android\n\nChange-Id: I5079a3bf31097dd0807b2d806d5f8d3cff2077ab\n"
    },
    {
      "commit": "da394bb36de36c52db24fe6b6250d1c623aa5626",
      "tree": "c33b192e00e226495066be24aa9df36212378d72",
      "parents": [
        "f607e2e488ad0438bf6d4a4cd841ba1f902206c7",
        "0f5591d80245500b98f2d8d7477248a30a7b0473"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 19 08:38:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 19 08:38:45 2012 -0700"
      },
      "message": "am cbc90453: am 14958e21: Merge \"audioflinger: fix issue with camcorder and A2DP\" into ics-mr1\n\n* commit \u0027cbc90453248bd3f9a11fdbc07e544d4a39592934\u0027:\n"
    },
    {
      "commit": "f607e2e488ad0438bf6d4a4cd841ba1f902206c7",
      "tree": "c33b192e00e226495066be24aa9df36212378d72",
      "parents": [
        "eb47ddf8e410b2848e86e2be5ba442d82aa36362",
        "9d7b4c074205609271f61e1a4741ac0c524a1795"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 19 08:37:48 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 19 08:37:48 2012 -0700"
      },
      "message": "am 165ee4c5: am 14958e21: Merge \"audioflinger: fix issue with camcorder and A2DP\" into ics-mr1\n\n* commit \u0027165ee4c53da462b1b6d131e25456dade51c18496\u0027:\n  audioflinger: fix issue with camcorder and A2DP\n"
    },
    {
      "commit": "9d7b4c074205609271f61e1a4741ac0c524a1795",
      "tree": "c33b192e00e226495066be24aa9df36212378d72",
      "parents": [
        "7d372bd9a6dd7c2174519a8c575011109a949ebb",
        "4ade00863737a82bb41f289a6a40893ceefca43e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 19 08:34:56 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 19 08:34:56 2012 -0700"
      },
      "message": "am 14958e21: Merge \"audioflinger: fix issue with camcorder and A2DP\" into ics-mr1\n\n* commit \u002714958e21c12f922d7501d32c3bec05109eb342d5\u0027:\n  audioflinger: fix issue with camcorder and A2DP\n"
    },
    {
      "commit": "0f5591d80245500b98f2d8d7477248a30a7b0473",
      "tree": "8e3233b2ef42a094d31d6eea8befbe8daceef9e5",
      "parents": [
        "2661809ffd8a026c9cebc716c93f96d0a7aaa70e",
        "4ade00863737a82bb41f289a6a40893ceefca43e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 19 08:34:44 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 19 08:34:44 2012 -0700"
      },
      "message": "am 14958e21: Merge \"audioflinger: fix issue with camcorder and A2DP\" into ics-mr1\n\n* commit \u002714958e21c12f922d7501d32c3bec05109eb342d5\u0027:\n  audioflinger: fix issue with camcorder and A2DP\n"
    },
    {
      "commit": "5616e66477953a011429ff71a4fd1ddc4968928f",
      "tree": "656b26f9c50c5d835b00bc6bfbaec37fcb99a0ec",
      "parents": [
        "156a8b1c7a997a614902392d82a3528efbc858c8",
        "4ade00863737a82bb41f289a6a40893ceefca43e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 19 08:34:03 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 19 08:34:03 2012 -0700"
      },
      "message": "am 14958e21: Merge \"audioflinger: fix issue with camcorder and A2DP\" into ics-mr1\n\n* commit \u002714958e21c12f922d7501d32c3bec05109eb342d5\u0027:\n  audioflinger: fix issue with camcorder and A2DP\n"
    },
    {
      "commit": "4ade00863737a82bb41f289a6a40893ceefca43e",
      "tree": "8e3233b2ef42a094d31d6eea8befbe8daceef9e5",
      "parents": [
        "ca0928da9afc905e62e4bdd0e283d223db786978",
        "89d94e79dad032fb18ddc655e6068e4231d3f0aa"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 19 08:32:35 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 19 08:32:35 2012 -0700"
      },
      "message": "Merge \"audioflinger: fix issue with camcorder and A2DP\" into ics-mr1"
    },
    {
      "commit": "1746929ddc7592ab397c402724a61352e45df093",
      "tree": "1911bbd03adeac6bb6e8fa91de3ee1833a40e401",
      "parents": [
        "eb76ff27c13386eb5a2dad73b1a8366f80eb0ff7",
        "ab334fd351ae5a0e18903da123d63e565b536874"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 07:31:58 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 19 07:31:58 2012 -0700"
      },
      "message": "Merge \"audio_channel_in/out_mask_from_count\""
    },
    {
      "commit": "8e0792bb55a604ffcd4aa90fdb4419d8b3c6ad24",
      "tree": "941e6c4f15c24ce375ab3f4a191bbbc2a438c12f",
      "parents": [
        "d64f3a376536a993fe6d81730b8b7b738500435e"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Mar 14 17:25:57 2012 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Mar 19 13:54:15 2012 +0800"
      },
      "message": "Do not set camera preview display if the surface is null.\n\nMediaRecorder.setPreviewDisplay() is not required if applications\nuse MediaRecorder.setCamera(). Besides, this causes a problem when\napps use Camera.setPreviewTexture. Camera service thinks the\nsurface texture from Camera.setPreviewTexture and the surface from\nMediaRecorder.setPreviewDisplay are different.\n\nbug:5988937\n\nChange-Id: Ia345705b6679ef349db6e354feaa3cc0fe8bcd8c\n"
    },
    {
      "commit": "89d94e79dad032fb18ddc655e6068e4231d3f0aa",
      "tree": "efb718faffa2573a33f203cadfa99f180dbf170c",
      "parents": [
        "083644fee99d23491554484301943e6a7daf262b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 20:37:59 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 20:37:59 2012 -0700"
      },
      "message": "audioflinger: fix issue with camcorder and A2DP\n\nSome audio HALs do not support well a device selection of 0 (no device)\nreceived on an input stream.\n\nThis can happen because of a problem in the audioflinger code that handles\nthe forwarding of the output device selection to the record thread for use by\nthe pre processing modules that need it. If the output device is 0 (meaning\nno op, which happens when stopping playback over A2DP) audioflinger could not\ndetect it was an output device selection and would forward it to the input\nstream (see AudioFlinger::setParameters() and RecordThread::checkForNewParameters_l().\n\nIssue 6179641.\n\nChange-Id: Idae534521866538e0d12ba259a2834f402a922e2\n"
    },
    {
      "commit": "bd98366df5cac3b7ea5b3cecde5fcb4d2731a145",
      "tree": "e2a0729f661bba857c42a1996339b18111a8c41b",
      "parents": [
        "ca0928da9afc905e62e4bdd0e283d223db786978",
        "1be92616b4794ad09ae84a8ea5fa703dac035745"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Fri Mar 16 19:32:33 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Fri Mar 16 19:32:33 2012 -0700"
      },
      "message": "merge in ics-mr1-release history after reset to ics-mr1\n"
    },
    {
      "commit": "eb47ddf8e410b2848e86e2be5ba442d82aa36362",
      "tree": "ea63205b10fdcc3ad58434ced3204ae940e6f3f6",
      "parents": [
        "bfc4cdf402546278f0835f94c7990b42a0566bb0",
        "7d372bd9a6dd7c2174519a8c575011109a949ebb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 17:29:43 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 16 17:29:43 2012 -0700"
      },
      "message": "am eaa08d35: am 2a0d685e: Merge \"MediaPlayerService: fix AudioSink latency\" into ics-mr1\n\n* commit \u0027eaa08d35154b0b9d62098c80c75f2deeadf72b9e\u0027:\n"
    },
    {
      "commit": "bfc4cdf402546278f0835f94c7990b42a0566bb0",
      "tree": "ea63205b10fdcc3ad58434ced3204ae940e6f3f6",
      "parents": [
        "c7c8375bad086263ca1e14d08e03a69e4a3b1651",
        "2661809ffd8a026c9cebc716c93f96d0a7aaa70e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 17:27:09 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 16 17:27:09 2012 -0700"
      },
      "message": "am b1853f70: am 2a0d685e: Merge \"MediaPlayerService: fix AudioSink latency\" into ics-mr1\n\n* commit \u0027b1853f706371b5050cd8184f5c33955c2f5ae36a\u0027:\n  MediaPlayerService: fix AudioSink latency\n"
    },
    {
      "commit": "7d372bd9a6dd7c2174519a8c575011109a949ebb",
      "tree": "ea63205b10fdcc3ad58434ced3204ae940e6f3f6",
      "parents": [
        "9c450b31c18d0995ded7aae7552a0db36654c62e",
        "ca0928da9afc905e62e4bdd0e283d223db786978"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 17:26:24 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 16 17:26:24 2012 -0700"
      },
      "message": "am 2a0d685e: Merge \"MediaPlayerService: fix AudioSink latency\" into ics-mr1\n\n* commit \u00272a0d685ed62ff7a5e5a40be0748860c092165984\u0027:\n  MediaPlayerService: fix AudioSink latency\n"
    },
    {
      "commit": "c7c8375bad086263ca1e14d08e03a69e4a3b1651",
      "tree": "8ec033794cd34cfcf513f4bf6b50754c73bf881f",
      "parents": [
        "e341547e2931b4aae4681053491ba5ccbab06e6f",
        "9c450b31c18d0995ded7aae7552a0db36654c62e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 17:26:15 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 16 17:26:15 2012 -0700"
      },
      "message": "am b388138f: resolved conflicts for merge of 3fe7ee65 to ics-mr1-plus-aosp\n\n* commit \u0027b388138ff2986d6883fa9331fa91ae5e18ae81a0\u0027:\n"
    },
    {
      "commit": "e341547e2931b4aae4681053491ba5ccbab06e6f",
      "tree": "8ec033794cd34cfcf513f4bf6b50754c73bf881f",
      "parents": [
        "51011e8de5a37b3912ab0c40e407b60e64a908ee",
        "9a55cd24e8b1175b604ba098e6b3a090591c93a3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 17:22:34 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 17:22:34 2012 -0700"
      },
      "message": "resolved conflicts for merge of 393dd03e to ics-scoop-plus-aosp\n\nChange-Id: Ib6af53957780a09e59d663206b956a39fe883d6a\n"
    },
    {
      "commit": "9c450b31c18d0995ded7aae7552a0db36654c62e",
      "tree": "8ec033794cd34cfcf513f4bf6b50754c73bf881f",
      "parents": [
        "0fce406301b24dafb98dff8f9cab3873e5398728",
        "de61a78a1c7903efac9d26a2de0fd8db14cd7760"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 17:19:25 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 17:19:25 2012 -0700"
      },
      "message": "resolved conflicts for merge of 3fe7ee65 to ics-mr1-plus-aosp\n\nChange-Id: Ia7e1cd869779e9f512e840b768f5b43992c8a122\n"
    },
    {
      "commit": "eb76ff27c13386eb5a2dad73b1a8366f80eb0ff7",
      "tree": "46270768942852d3a2787b08fee4a23b5d0a57bb",
      "parents": [
        "a673ba75ab58aaf380ca2420b1d63d3639cf1960",
        "f5e376fb8f2c30f82b7548241ca6b24f92ff8914"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 16 15:19:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 16 15:19:30 2012 -0700"
      },
      "message": "Merge \"Report an error instead of waiting for EOS indefinitely in sf2.\""
    },
    {
      "commit": "156a8b1c7a997a614902392d82a3528efbc858c8",
      "tree": "6c197768a42fe2aa06bafaf2d3e290400de0f671",
      "parents": [
        "ab8aa6aa0a71884406f9d79bcd0cfdc717995bb3",
        "ca0928da9afc905e62e4bdd0e283d223db786978"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 15:01:44 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 16 15:01:44 2012 -0700"
      },
      "message": "am 2a0d685e: Merge \"MediaPlayerService: fix AudioSink latency\" into ics-mr1\n\n* commit \u00272a0d685ed62ff7a5e5a40be0748860c092165984\u0027:\n  MediaPlayerService: fix AudioSink latency\n"
    },
    {
      "commit": "ab8aa6aa0a71884406f9d79bcd0cfdc717995bb3",
      "tree": "5c9b0b122686814da60168241d960179778233bf",
      "parents": [
        "958d5b6a79b97ac2b151e48371cf2829a1a302b0",
        "de61a78a1c7903efac9d26a2de0fd8db14cd7760"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 15:01:42 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 16 15:01:42 2012 -0700"
      },
      "message": "am 3fe7ee65: Merge \"AudioTrack: relax check on minimum buffer size\" into ics-mr1\n\n* commit \u00273fe7ee651db0aae9485ead227c89db1e24b9e245\u0027:\n  AudioTrack: relax check on minimum buffer size\n"
    },
    {
      "commit": "2661809ffd8a026c9cebc716c93f96d0a7aaa70e",
      "tree": "e2a0729f661bba857c42a1996339b18111a8c41b",
      "parents": [
        "9a55cd24e8b1175b604ba098e6b3a090591c93a3",
        "ca0928da9afc905e62e4bdd0e283d223db786978"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 15:01:03 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 16 15:01:03 2012 -0700"
      },
      "message": "am 2a0d685e: Merge \"MediaPlayerService: fix AudioSink latency\" into ics-mr1\n\n* commit \u00272a0d685ed62ff7a5e5a40be0748860c092165984\u0027:\n  MediaPlayerService: fix AudioSink latency\n"
    },
    {
      "commit": "9a55cd24e8b1175b604ba098e6b3a090591c93a3",
      "tree": "f284ea35888e521853d8c7a04705ab0e11a2b738",
      "parents": [
        "fd588e27e3f95e0d251ff212dda8c1de853bf4f7",
        "de61a78a1c7903efac9d26a2de0fd8db14cd7760"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 15:01:01 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 16 15:01:01 2012 -0700"
      },
      "message": "am 3fe7ee65: Merge \"AudioTrack: relax check on minimum buffer size\" into ics-mr1\n\n* commit \u00273fe7ee651db0aae9485ead227c89db1e24b9e245\u0027:\n  AudioTrack: relax check on minimum buffer size\n"
    },
    {
      "commit": "f5e376fb8f2c30f82b7548241ca6b24f92ff8914",
      "tree": "4f807ca65d21cd7205c0c93b5f31de1e110ae2e0",
      "parents": [
        "49f306f863b14f8bfc3b405ebfd3a2fb2b403c15"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 16 13:19:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 16 13:19:20 2012 -0700"
      },
      "message": "Report an error instead of waiting for EOS indefinitely in sf2.\n\nChange-Id: Id7bcfb90a3b6a61f0df8bd8f39ea4ffa3c433d87\n"
    },
    {
      "commit": "a673ba75ab58aaf380ca2420b1d63d3639cf1960",
      "tree": "dc0c470c796b8bbe54d4cb6e09924d2c844a1936",
      "parents": [
        "6469edeeac6079b118e8f81252116c40574c9841",
        "c5255ac5b1bd313dcb50159566163b24dce7483f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 16 13:15:53 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 16 13:15:53 2012 -0700"
      },
      "message": "Merge \"ACodec is a little more aggressive in its error checking now.\""
    },
    {
      "commit": "ca0928da9afc905e62e4bdd0e283d223db786978",
      "tree": "e2a0729f661bba857c42a1996339b18111a8c41b",
      "parents": [
        "de61a78a1c7903efac9d26a2de0fd8db14cd7760"
      ],
      "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": "Fri Mar 16 12:25:31 2012 -0700"
      },
      "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\nConflicts:\n\n\tmedia/libmediaplayerservice/MediaPlayerService.cpp\n"
    },
    {
      "commit": "de61a78a1c7903efac9d26a2de0fd8db14cd7760",
      "tree": "f284ea35888e521853d8c7a04705ab0e11a2b738",
      "parents": [
        "083644fee99d23491554484301943e6a7daf262b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 05 17:06:40 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 16 12:22:07 2012 -0700"
      },
      "message": "AudioTrack: relax check on minimum buffer size\n\nCurrent AudioTrack implementation enforces that the requested audio\nbuffer size is at least corresponding the audio latency.\nThis requirement is too strong and leads to problems with current\nstagefright and AudioSink implementations when playing over output\nstreams with long latency.\n\nUltimately, the AudioSink design should be changed to specify a minimum\nbuffer size in time or frames units but not in buffer count units.\n\nChange-Id: I8ba603956f92ac49143a8249572665aa548f2f0f\n\nConflicts:\n\n\tmedia/libmedia/AudioTrack.cpp\n"
    },
    {
      "commit": "c5255ac5b1bd313dcb50159566163b24dce7483f",
      "tree": "49f2e815570219a3cf541032dba3e4ac857aca09",
      "parents": [
        "49f306f863b14f8bfc3b405ebfd3a2fb2b403c15"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 16 12:00:18 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 16 12:00:18 2012 -0700"
      },
      "message": "ACodec is a little more aggressive in its error checking now.\n\nUpdate components to do the right thing.\n\nChange-Id: Ibfbad3f53effc16368cca4a0e978d01d54d08a1d\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": "6469edeeac6079b118e8f81252116c40574c9841",
      "tree": "a6882849f43e6853ae821a48999e18d4ff25a7bb",
      "parents": [
        "0893d312070143e45c630d4a212df187b99a0e3e",
        "ded61aa958278147b5a150c189f86d025165f095"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 16 11:38:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 16 11:38:38 2012 -0700"
      },
      "message": "Merge \"Remove obsolete software codec header files and amr encoders.\""
    },
    {
      "commit": "ded61aa958278147b5a150c189f86d025165f095",
      "tree": "c7c1f15595be728b0fc9ad49e0c05b84710ea19a",
      "parents": [
        "49f306f863b14f8bfc3b405ebfd3a2fb2b403c15"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 16 10:53:50 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 16 11:01:11 2012 -0700"
      },
      "message": "Remove obsolete software codec header files and amr encoders.\n\nChange-Id: Ifbdf252ee312c9cb5ab29498f1e06dae8f23faf7\n"
    },
    {
      "commit": "0893d312070143e45c630d4a212df187b99a0e3e",
      "tree": "fc1e280247b293dcb9b748546ff0ce95a01c60f5",
      "parents": [
        "19dd09bcab75e23afa08ded1caece433266d3c23",
        "9e50385f34676d8fcb3b473ec4c9f5c388a4c887"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Mar 16 10:11:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 16 10:11:13 2012 -0700"
      },
      "message": "Merge \"Skip XING/VBRI frame when decoding\""
    },
    {
      "commit": "19dd09bcab75e23afa08ded1caece433266d3c23",
      "tree": "17afbbc91a865e9809f87fa7f067d8079e7db272",
      "parents": [
        "ce40e081de3ecb5aa1c49d98775c99975710aed2",
        "51011e8de5a37b3912ab0c40e407b60e64a908ee"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Mar 16 10:06:49 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 16 10:06:49 2012 -0700"
      },
      "message": "am 97824b70: am aa1bd6de: am d8cc1421: am 42c6d163: Merge \"Add empty libmedia_native in old location\"\n\n* commit \u002797824b706d8865b50faf2f09d0cf969bec0874e3\u0027:\n  Add empty libmedia_native in old location\n"
    },
    {
      "commit": "51011e8de5a37b3912ab0c40e407b60e64a908ee",
      "tree": "f02155b4b4b7496617f64ea266515cebf60f12ab",
      "parents": [
        "26d24395b4a7afbbf8d799295c0d89a42f6d44de",
        "0fce406301b24dafb98dff8f9cab3873e5398728"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Mar 16 10:03:54 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 16 10:03:54 2012 -0700"
      },
      "message": "am aa1bd6de: am d8cc1421: am 42c6d163: Merge \"Add empty libmedia_native in old location\"\n\n* commit \u0027aa1bd6dec676ab81e14ca428427d2b8c627c83fa\u0027:\n  Add empty libmedia_native in old location\n"
    },
    {
      "commit": "0fce406301b24dafb98dff8f9cab3873e5398728",
      "tree": "f02155b4b4b7496617f64ea266515cebf60f12ab",
      "parents": [
        "ec431bbd9c7ab07c61290b12d41d9995794e0f61",
        "f281c227ee4b5732df3af8c7d4f43ab0e65cabfd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Mar 16 10:01:28 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 16 10:01:28 2012 -0700"
      },
      "message": "am d8cc1421: am 42c6d163: Merge \"Add empty libmedia_native in old location\"\n\n* commit \u0027d8cc14211a3d5597d6b5807d6c79a4631e36ba2d\u0027:\n  Add empty libmedia_native in old location\n"
    },
    {
      "commit": "ce40e081de3ecb5aa1c49d98775c99975710aed2",
      "tree": "d7f1998e3d770239450b63b58b0dbf1d6c4db84b",
      "parents": [
        "7c5afe93c9ca2f9f3958663bc3fa9649ec2f5331",
        "cc3190bcd4bd9321a68fb726b055c45b35229ec1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 16 09:57:23 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 16 09:57:23 2012 -0700"
      },
      "message": "Merge \"Remove obsolete OMXComponentBase class\""
    },
    {
      "commit": "cc3190bcd4bd9321a68fb726b055c45b35229ec1",
      "tree": "efebb9e50bbb4e0b61607ad11927afc390c4a8b1",
      "parents": [
        "49f306f863b14f8bfc3b405ebfd3a2fb2b403c15"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 16 08:23:32 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Mar 16 08:46:36 2012 -0700"
      },
      "message": "Remove obsolete OMXComponentBase class\n\nChange-Id: I701ff5a57b0ab49cc772c4f82d03b5005e54ec6f\n"
    },
    {
      "commit": "9e50385f34676d8fcb3b473ec4c9f5c388a4c887",
      "tree": "c8a2f02e79d48b8505b40eb8df6784583af75e09",
      "parents": [
        "5102400104ce1f0a6de7bf913381a91e4f18a22a"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Mar 16 07:56:42 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Mar 16 08:36:30 2012 -0700"
      },
      "message": "Skip XING/VBRI frame when decoding\n\nDon\u0027t send the XING/VBRI frame to the decoder, as it will result in\nextra data being output. Also clean up the XING seeker code a bit.\n\nChange-Id: I714a94180edae9bedc1bc0c96bf382fe6f928ac6\n"
    },
    {
      "commit": "7c5afe93c9ca2f9f3958663bc3fa9649ec2f5331",
      "tree": "9feedb389b7a89aed380d5b603355f7359a07d3d",
      "parents": [
        "49f306f863b14f8bfc3b405ebfd3a2fb2b403c15"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Thu Mar 15 23:04:43 2012 +0900"
      },
      "committer": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Fri Mar 16 16:00:48 2012 +0900"
      },
      "message": "Fix a bug in MediaPlayer\u0027s addExternalSource().\n\nChange-Id: I035cbfb7acccc7ff88d659861ece7d0f61314fda\n"
    },
    {
      "commit": "f281c227ee4b5732df3af8c7d4f43ab0e65cabfd",
      "tree": "9b75029e21bda1650f229bbbf582c68142a0dada",
      "parents": [
        "c98c8831388d206f3883767fda3e9c0e5b2e816b",
        "2ae5a73d4994bd294ee17b8bfb8d722ef9a2564a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Thu Mar 15 22:09:38 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 15 22:09:38 2012 -0700"
      },
      "message": "am 42c6d163: Merge \"Add empty libmedia_native in old location\"\n\n* commit \u002742c6d163aaf5170ac23a4d1e5baadddd0fb71406\u0027:\n  Add empty libmedia_native in old location\n"
    },
    {
      "commit": "49f306f863b14f8bfc3b405ebfd3a2fb2b403c15",
      "tree": "d7c29856e1529b3337e5a2093fa1553c8818a3df",
      "parents": [
        "2f70d9f89a0461cafdbd84a3d8d65062f420d77a",
        "2fd2440d0175ca3e196b01b7541a9e0d4ed9a694"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Mar 15 21:23:24 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 15 21:23:24 2012 -0700"
      },
      "message": "Merge \"Add a new camera open API that allows taking the ownership.\""
    },
    {
      "commit": "2ae5a73d4994bd294ee17b8bfb8d722ef9a2564a",
      "tree": "25d8161f745d381d599e728f11b30d708caae8e6",
      "parents": [
        "dc1696c890698d55aade9dbadf3148c2fac01cd0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Thu Mar 15 12:53:43 2012 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Mar 15 15:32:20 2012 -0700"
      },
      "message": "Add empty libmedia_native in old location\n\nSubmitting this first, in the old location, will allow early testing of\nthe build for all the dependent projects.  Then those projects will not\nneed to be updated atomically when libmedia_native is moved.\n\nChange-Id: I31ab315e53970986d18a4e3b1673e31460f6a3f1\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"
    }
  ],
  "next": "2f70d9f89a0461cafdbd84a3d8d65062f420d77a"
}
