)]}'
{
  "log": [
    {
      "commit": "428975efd7c4f22f430410b32b3026ecd961d1bd",
      "tree": "e651bc92d9687ff2ad1c403689763af8bb9026a5",
      "parents": [
        "45e9efb9f75f85be6b8b03c130bc5c9e1080f7a6"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Sun Feb 12 17:51:21 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Sun Feb 12 17:51:21 2012 -0800"
      },
      "message": "Put a bandaid on a segfault in timed audio track handling.\n\nAdd a bandaid to prevent a segfault which can occur while handling\ntimed audio buffers.  There is a deeper problem which should\neventually be addressed, but for now this fix should prevent any\ncrashing.\n\nThe deeper problem is as follows.\n\nWhen the AudioFlinger mixer gets data to mix from an AudioTrack, it\nends up getting a structure filled out which points into an IMemory\nregion owned by the AudioTrack.  Unfortunately, this structure is not\nholding a refcount on the IMemory which it points into.  If the\nIMemory refcount hits 0 and the chunk of RAM is retuned to the binder\nheap it came from, there can still be a Buffer object being held by\nthe AudioFlinger mixer which points into the region of memory which\nwas retuned to the binfer heap.  If AF reads from this buffer, it\ncould read corrupt data (if the region of memory gets handed back out\nto a writer), or it could segfault (if the heap has been freed and the\npages unmapped).  Similar problems could happen if AF attempts to\nwrite to the buffer, heap corruption in one case, segfaulting in the\nother.\n\nIn the past, this has not been an issue for AF, because tracks\nallocate a single IMemory (which serves as a ring buffer) and the\nIMemory lives for as long as the track lives.  As an artifact of the\nway the code came out, the mixer cannot be holding a Buffer structure\npointing into the IMemory which used to be owned by a track if the\ntrack no longer exists.  Tracks cannot come into or out of existence\nduring a mix operation, which is the only thing which makes this safe.\n\nTimedTracks work differently, however.  Timed tracks each allocate a\nsmall binder heap, and then hand out IMemory instances  broken out of\nthis heap.  The heap lives as long as the track, so the worst which\ncould happen here is that a TimedTrack\u0027s IMemory gets returned to the\nheap while there is still a buffer structure in flight pointing into\nthe memory region, then the region gets handed out again and\noverwritten by new data causing the mixer to mix the wrong audio.  The\ntiming to cause this to happen is very difficult to encounter, and you\nto generate the timing conditions required, you need to be in a pretty\nbad failure state where audio is already breaking up and skipping, so\nits unlikely that anyone would notice (which is why I\u0027m band-aiding\nthe segfault and letting the deeper issue slide for now).\n\nIn general, however, it might be a good idea to revisit this buffering\ndesign.  On principal, if someone is going to hold pointers into a\nrefcounted object, they should be holding a ref on the object at the\nsame time.  Failure to do this will usually lead to a situation where\nthere are corruption or segfault issues, or to a system where the\nrefcounted object\u0027s lifetime must be implicitly managed very carefully\nin ways which are usually non-obvious and are easy to break by new\nengineers on a project.\n\nChange-Id: Ib391075395ed0ef46a03c37aa38a82d09e88abeb\n"
    },
    {
      "commit": "45e9efb9f75f85be6b8b03c130bc5c9e1080f7a6",
      "tree": "4d2670e2b2b35cc3fdc76ae2a59ee0d02a6f4058",
      "parents": [
        "df49efa896688d6cd1e9d1f193d5f5c65b8974f8"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 09 11:28:36 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 09 11:31:06 2012 -0800"
      },
      "message": "Fix a segfault in AudioFlinger.\n\nCheck the string returned by a HAL\u0027s implementation of get_parameters\nfor NULL before attempting to make use of it.  That way, we won\u0027t\nbring down the mediaserver because of a poorly written HAL.\n\nChange-Id: I45f0fd3de003151f98acf32c36c42f58d053f3a0\n"
    },
    {
      "commit": "df49efa896688d6cd1e9d1f193d5f5c65b8974f8",
      "tree": "d15b01eed5ac4fce6a5e023db7b2fb24637e4f27",
      "parents": [
        "7151529aa72f5743947e3f4f4f450e43fc07be9f"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Sun Feb 05 13:36:33 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Feb 06 18:02:33 2012 -0800"
      },
      "message": "Explicitly manage common clock client lifetimes.\n\nChange the CCHelper class to be an instanced instead of a static\npattern.  The CCHelper instances all share an interface to the common\nclock service and register/unregister a callback handler in response\nto there being CCHelper instance in the system or not.  This brings\nusage of the CCHelper into like with the new auto-disable\nfunctionality of the common time service.  For any given process,\nwhenever there are CCHelper instances active, the process will\nmaintain a callback target to the common clock service and will be\nconsidered to be an active client.\n\nAlso change all of the users of the CCHelper interface to manage the\nlifecycle of their new CCHelper instances.\n\nChange-Id: I7c28c5d70d9b07ba7407b4ac706e7e7d7253001b\n"
    },
    {
      "commit": "7151529aa72f5743947e3f4f4f450e43fc07be9f",
      "tree": "cc6e6c3a7dd3014274f3ae8d2f8cfadfd56e0722",
      "parents": [
        "8823b08bea7ae8dcb64c414377e08d5e320c5558"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Jan 18 15:00:33 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Feb 03 17:46:00 2012 -0800"
      },
      "message": "Add native common time config service.\n\nDefine a native service interface for configuring and controlling the\ncommon time service.  Implement the native marshallers and stub the\nimplementation of the new interface.\n\nChange-Id: Ia6a6a20ef3d221e8829c55be1dd5f98ed996c610\n"
    },
    {
      "commit": "8823b08bea7ae8dcb64c414377e08d5e320c5558",
      "tree": "900cc7393d21209d366f5eb9d39538d353470058",
      "parents": [
        "fa5643ffb4f16a68ad355a191383bf2b1a21d468"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Tue Jan 17 17:10:55 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Feb 03 17:45:53 2012 -0800"
      },
      "message": "Add marshallers for the new common clock methods.\n\nAdd marshallers and stub implementations for new methods in the common\nclock interface to support new functionality being added in the\nprocess of integrating the common time service more closely with the\nJava level of Android.\n\nChange-Id: Iac2d3fb405d1b64cea1d8e13f988160afb76a06d\n"
    },
    {
      "commit": "fa5643ffb4f16a68ad355a191383bf2b1a21d468",
      "tree": "61718c95e6c96b2fb5d0fd3f56789f0647d2ede6",
      "parents": [
        "1e41d7016ce710df3b9689f20862a984f5f20f08"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Tue Jan 17 10:24:58 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Feb 03 17:45:30 2012 -0800"
      },
      "message": "Change ICommonClock marshallers to return explicit error codes.\n\nChange the ICommonClock marshallers to return an explicit error with\neach transaction.  This makes it easier to disambiguate between binder\nerrors (dead object due to the service crashing) vs. runtime errors\n(cannot return common time due to lack of sync)\n\nChange-Id: I2182cf0cfb2e11b4669f392554f104ef7c4bca8b\n"
    },
    {
      "commit": "1e41d7016ce710df3b9689f20862a984f5f20f08",
      "tree": "b82144a311794d2a16ab7819917ad7da5805bc7b",
      "parents": [
        "bd0856245d557ab2f09be4f4b514842fba52e3bd"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Tue Jan 17 10:20:12 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Feb 03 17:45:17 2012 -0800"
      },
      "message": "Move the definition of time server state.\n\nMove the State enum up to the ICommonClock interface so it can be\nreturned for status/debugging up to clients.\n\nChange-Id: I81fef5b96ffc69a4f2e9801b3744feea099ccd47\n"
    },
    {
      "commit": "bd0856245d557ab2f09be4f4b514842fba52e3bd",
      "tree": "b1cafe99ac662d5fd78c611484cec0b451839463",
      "parents": [
        "94621e87e0972d87d5cd11197757b8bd56499882"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Tue Jan 17 18:52:32 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Feb 03 17:43:21 2012 -0800"
      },
      "message": "De-AAH-ify the common time service.\n\nBulk name change to remove references to Android@Home from the common time\nservice in preparation for cleanup and up-integration into the master\nbranch.  Basically, aah_timesrv is now common_time.\n\nChange-Id: I3d3db212f96e8ba171aa36b9c58e27e4a336cb0a\n"
    },
    {
      "commit": "94621e87e0972d87d5cd11197757b8bd56499882",
      "tree": "5238ec491e95a083eab5338ae35ba53630bfb6ff",
      "parents": [
        "02421f52dc57db09d50e81e879ae6112ab3b83e6"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Sun Jan 29 18:03:02 2012 -0800"
      },
      "committer": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Sun Jan 29 18:03:02 2012 -0800"
      },
      "message": "Add a way to play file descriptor data sources using the A@H transmitter media player.\n\n* Added a MediaPlayer.setMediaPlayerType API that be called to specify the\n  desired media player implementation before calling setDataSource\n* Implemented setDataSource(fd) in the AAH_TxPlayer\n\nChange-Id: I359075d9c7d6fd699dda14eb85ec50da19307639\n"
    },
    {
      "commit": "02421f52dc57db09d50e81e879ae6112ab3b83e6",
      "tree": "b3b07a55bb7dc70e5802b297e58b024329e23006",
      "parents": [
        "52eccc1b3f033e25b5bac92effa03953bf919ad1",
        "21e4b6ed00e814bffc70895847a4944d7a190020"
      ],
      "author": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Tue Jan 24 13:16:19 2012 -0800"
      },
      "committer": {
        "name": "Jason Simmons",
        "email": "jsimmons@google.com",
        "time": "Tue Jan 24 13:16:19 2012 -0800"
      },
      "message": "resolved conflicts for merge of 7eeaf3f0 to ics-aah\n\nChange-Id: I92b709268e22e3c3e9590c15173ab073b37db726\n"
    },
    {
      "commit": "52eccc1b3f033e25b5bac92effa03953bf919ad1",
      "tree": "2c8839181a434754e4fc7de1c911643754614c59",
      "parents": [
        "b85a11467b3d46cb275fcc0d866619d36cda8662",
        "eaa0b5cc2f7723e9b25298126d0dcb48c56d5dac"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 24 11:51:15 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 24 11:51:15 2012 -0800"
      },
      "message": "am 41773d46: Merge \"DO NOT MERGE Revert \"Revert \"AudioFlinger: mix track only when really ready (2)\"\"\" into ics-mr1\n\n* commit \u002741773d46556aa47d4322ff89fdaf7d1345c2d1f2\u0027:\n  DO NOT MERGE Revert \"Revert \"AudioFlinger: mix track only when really ready (2)\"\"\n"
    },
    {
      "commit": "21e4b6ed00e814bffc70895847a4944d7a190020",
      "tree": "ff39d6e267fb9ebaa473db578ef3525330d8450d",
      "parents": [
        "eaa0b5cc2f7723e9b25298126d0dcb48c56d5dac"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 23 18:56:59 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 23 18:56:59 2012 -0800"
      },
      "message": "AudioFlinger: refine mixer sleep time logic\n\nWhen an AudioTrack is in underrun state, the AudioFlinger mixer will\nsleep for a short period of time to give the app a chance to fill the\nAudioTrack buffer. If the AudioTrack is still not ready during next mixing round,\nthe mixer will proceed with other tracks.\n\nIf an application keeps a steady underrun condition, the AudioFlinger mixer will\nalternate between ready and not ready states. In the longer term this will cause the\naudio HAL to underrun.\nThere is a mechanism to reduce the sleep period if the mixer is not ready several times in a\nrow but this mechanism is defeated by the alternating ready/not ready conditions.\n\nThe fix consists in only increasing sleep time if the mixer is ready for at least two\nconsecutive times.\n\nIssue 5904527.\n\nChange-Id: Id0139bca9be8c4e425ec6d428515c4d8f718e8c9\n"
    },
    {
      "commit": "eaa0b5cc2f7723e9b25298126d0dcb48c56d5dac",
      "tree": "5c73ae7daf8480e7ce2cc862790332401688931b",
      "parents": [
        "7baf7894bc2f1a62440f381eeb50143f210a5d61"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 23 18:35:10 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 23 18:37:07 2012 -0800"
      },
      "message": "DO NOT MERGE Revert \"Revert \"AudioFlinger: mix track only when really ready (2)\"\"\n\nThis reverts commit b918035d34422a2041b6ec8c09c566bb93345b40.\n\nChange-Id: I093bcfa56ad54a080b930208b6b79169d33581fb\n"
    },
    {
      "commit": "b85a11467b3d46cb275fcc0d866619d36cda8662",
      "tree": "6664d5fcb31273378375c3967e81b78b85a6eb29",
      "parents": [
        "60a5dfbfdee07988834f75b618687cfc993948ef",
        "7baf7894bc2f1a62440f381eeb50143f210a5d61"
      ],
      "author": {
        "name": "Justin Ho",
        "email": "justinho@google.com",
        "time": "Mon Jan 23 15:13:50 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 23 15:13:50 2012 -0800"
      },
      "message": "am fee5a860: Merge \"DO NOT MERGE Revert \"AudioFlinger: mix track only when really ready (2)\"\" into ics-mr1\n\n* commit \u0027fee5a860a8355cda071ff23644e943414ba7f65d\u0027:\n  DO NOT MERGE Revert \"AudioFlinger: mix track only when really ready (2)\"\n"
    },
    {
      "commit": "7baf7894bc2f1a62440f381eeb50143f210a5d61",
      "tree": "0ddf435e065f725aebbd1a726eb1087f6e5decfb",
      "parents": [
        "2774144fa8283f1a7b43e17a53c97dec0c366dd3"
      ],
      "author": {
        "name": "Justin Ho",
        "email": "justinho@google.com",
        "time": "Mon Jan 23 14:01:15 2012 -0800"
      },
      "committer": {
        "name": "Justin Ho",
        "email": "justinho@google.com",
        "time": "Mon Jan 23 15:02:41 2012 -0800"
      },
      "message": "DO NOT MERGE Revert \"AudioFlinger: mix track only when really ready (2)\"\n\nThis reverts commit 71c4496a9757438afd30b4404824f296f6158a49.\n\nChange-Id: Iff10c49ea728bb10023ddeb50a3b708db770fff2\n"
    },
    {
      "commit": "60a5dfbfdee07988834f75b618687cfc993948ef",
      "tree": "2c8839181a434754e4fc7de1c911643754614c59",
      "parents": [
        "4a9eb9628be8fdc441179394b7edca9bdce23ed3",
        "2774144fa8283f1a7b43e17a53c97dec0c366dd3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 18 16:14:20 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 16:14:20 2012 -0800"
      },
      "message": "am db2e7163: Merge \"AudioFlinger: mix track only when really ready (2)\" into ics-mr1\n\n* commit \u0027db2e71635968f455ad4f41b2e24fb8b909c24ca0\u0027:\n  AudioFlinger: mix track only when really ready (2)\n"
    },
    {
      "commit": "2774144fa8283f1a7b43e17a53c97dec0c366dd3",
      "tree": "5c73ae7daf8480e7ce2cc862790332401688931b",
      "parents": [
        "86d24aa35adf82512d341d9aaebd62b36b0a0847"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 17 19:20:12 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 18 12:27:38 2012 -0800"
      },
      "message": "AudioFlinger: mix track only when really ready (2)\n\nThis problem due to the way audio buffers are mixed when\nlow power mode is active was addressed by commits 19ddf0eb\nand 8a04fe03 but only partially. As a matter of fact, when more\nthan one audio track is playing, the problem is still present.\nThis is most noticeable when playing music with screen off\nand a notification or navigation instruction is played: in this case,\nthe music or notification is likely to skip.\n\nThe fix consists in declaring the mixer ready if all active tracks\nare ready. Previous behavior was to declare ready if at least one track was\nready. To avoid that one application failing to fill the track buffer blocks other\ntracks indefinitely, this condition is respected only if the mixer was ready\nin the previous round.\n\nIssue 5799167.\n\nChange-Id: Iabd4ca08d3d45f563d9824c8a03c2c68a43ae179\n"
    },
    {
      "commit": "4a9eb9628be8fdc441179394b7edca9bdce23ed3",
      "tree": "6664d5fcb31273378375c3967e81b78b85a6eb29",
      "parents": [
        "3c4551107ba2e11d3e4573113d337e2fc5ff4c0f"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Jan 11 12:23:42 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Jan 12 14:36:16 2012 -0800"
      },
      "message": "Enhance Visualizer behavior in the case of mediaserver death.\n\nBring the Visualizer class into line with the SDK documentation by\nreturning ERROR_DEAD_OBJECT instead of ERROR_INVALID_OPERATION when\nthe Visualizer loses its binder connection to the mediaserver because\nof a mediaserver restart.\n\nAlso add a new callback interface to allow clients to be\nasynchronously notified in the case of server death.  Right now, the\ninterface definition and the registration method are flagged as hidden\npending API council review/approval.\n\nSee http://b/issue?id\u003d5717519 for details.\n\nChange-Id: Id428fb946d6d7676bffd2a597366e8444ebe24f2\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "3c4551107ba2e11d3e4573113d337e2fc5ff4c0f",
      "tree": "2980851c0beb278c7d0e4252494e3835d1b3a714",
      "parents": [
        "7ef85ef8fc2792b019b4c9b9559f652c7ecda029",
        "86d24aa35adf82512d341d9aaebd62b36b0a0847"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 11 11:12:55 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 11 11:12:55 2012 -0800"
      },
      "message": "am c15cf3d2: Merge \"stagefright: limit audio gap for looped playback\" into ics-mr1\n\n* commit \u0027c15cf3d286f3d63d141b73f639a5a61ddb028029\u0027:\n  stagefright: limit audio gap for looped playback\n"
    },
    {
      "commit": "86d24aa35adf82512d341d9aaebd62b36b0a0847",
      "tree": "0ddf435e065f725aebbd1a726eb1087f6e5decfb",
      "parents": [
        "60a78ac9535878984b0777788760b9ee7465c5e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 09 13:47:48 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 09 13:48:25 2012 -0800"
      },
      "message": "stagefright: limit audio gap for looped playback\n\nThe audio gap when looping audio is mostly due to\na delay requested by the audio player when executing\nthe end of stream message. This is to allow the audio\nto be drained out of the pipe before actually stopping the\nAudioTrack.\nThis delay is not needed when looping as the AudioTrack\nis not stopped.\n\nThe fix consists in ignoring the requested delay when the\nlooping flag is set in awesome player.\n\nIssue 5800981.\n\nChange-Id: Ib32d2930c53ecebc21ca8440e6e054c7e20db4a5\n"
    },
    {
      "commit": "7ef85ef8fc2792b019b4c9b9559f652c7ecda029",
      "tree": "25d13136c54881a742befabe4bcfd0aad96dd21b",
      "parents": [
        "fee28f6229866f26c7ef857e7f49f76c1ddd867b"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Jan 09 10:15:50 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Jan 09 12:23:37 2012 -0800"
      },
      "message": "libaah_rtp: address http://b/issue?id\u003d5755419\n\nIntroduce a heartbeat timeout for TX senders.  If none of the TX\nsender\u0027s clients send any packets for this timeout period (10 minutes\nright now), then the sender will stop sending keep-alive heartbeats.\nThis should cause RX clients to release any held media resources,\nincluding any timed audio track.  Releasing timeed audio tracks allows\nthe audio system to go into its idle state, which allows the power amp\nin Tungsten to power all of the way down, saving both heat and power.\n\nChange-Id: Ib7a96d334e1064ddea3f07a6b21e6efedefc549a\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "fee28f6229866f26c7ef857e7f49f76c1ddd867b",
      "tree": "dcac3f4c8419d7f0348e3791f8e38107ef1b34dd",
      "parents": [
        "63e345adfad4b1078835e4c883cb777de2d854ab",
        "60a78ac9535878984b0777788760b9ee7465c5e6"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jan 06 15:49:21 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 06 15:49:21 2012 -0800"
      },
      "message": "am 7944704e: Merge \"Switch camera sounds to always use the system enforced audio stream.\" into ics-mr1\n\n* commit \u00277944704e6c4cc10105838b78d3d8403bf66a066b\u0027:\n  Switch camera sounds to always use the system enforced audio stream.\n"
    },
    {
      "commit": "60a78ac9535878984b0777788760b9ee7465c5e6",
      "tree": "ec9e13131339633dcd8a9785bdf0db7588020d95",
      "parents": [
        "071ccd5a9702500f3f7d62ef881300914926184d"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jan 05 15:34:53 2012 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jan 06 10:24:01 2012 -0800"
      },
      "message": "Switch camera sounds to always use the system enforced audio stream.\n\nInstead of picking between the music stream and the enforced audio\nstream, change the camera service to always play sounds through\nenforced system stream. Also update the currently-hidden CameraSound\nAPI to match.\n\nBug: 5778365\nChange-Id: I3cc64b1d1ff567dbac8020a665d5b19846197ff3\n"
    },
    {
      "commit": "63e345adfad4b1078835e4c883cb777de2d854ab",
      "tree": "9560074d556d6b53b0b85a367db69e2da858df38",
      "parents": [
        "58f5793d7e803c150278300f3435aa05e86bb5a7",
        "071ccd5a9702500f3f7d62ef881300914926184d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 04 13:00:44 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 04 13:00:44 2012 -0800"
      },
      "message": "am fb578b6b: Merge \"audioflinger: fix clicks on 48kHz audio.\" into ics-mr1\n\n* commit \u0027fb578b6b88af51812b71a86ad4dd3a7de56e394b\u0027:\n  audioflinger: fix clicks on 48kHz audio.\n"
    },
    {
      "commit": "071ccd5a9702500f3f7d62ef881300914926184d",
      "tree": "2ffdfd9dbc064aa3d2a9b229f87b679220ef4f79",
      "parents": [
        "69aac3e6cd68e8c305a41b2677123db7662efd4b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 22 16:08:41 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 22 16:08:41 2011 -0800"
      },
      "message": "audioflinger: fix clicks on 48kHz audio.\n\nThe calculation done in prepareTracks_l() for the minimum amount\noff frames needed to mix one output buffer had 2 issues:\n- the additional sample needed for interpolation was not included\n- the fact that the resampler does not acknowledge the frames consumed\nimmediately after each mixing round but only once all frames requested have been used\nwas not taken into account.\nThus the number of frames available in track buffer could be considered sufficient although\nit was not and the resampler would abort producing a short silence perceived as a click.\n\nIssue 5727099.\n\nChange-Id: I7419847a7474c7d9f9170bedd0a636132262142c\n"
    },
    {
      "commit": "58f5793d7e803c150278300f3435aa05e86bb5a7",
      "tree": "a1eceae92d3fcf2bc6273fe8d96c18d7db90f4d9",
      "parents": [
        "910782a65a6fce8446cb52ed635d7d702f5fddc3",
        "69aac3e6cd68e8c305a41b2677123db7662efd4b"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Dec 15 19:25:07 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 15 19:25:07 2011 -0800"
      },
      "message": "am ac279de9: Merge \"SurfaceMediaSource: use the HW_TEXTURE usage bit\" into ics-mr1\n\n* commit \u0027ac279de9d9fcfd59a336298cfdd5b1f4ab6d038f\u0027:\n  SurfaceMediaSource: use the HW_TEXTURE usage bit\n"
    },
    {
      "commit": "69aac3e6cd68e8c305a41b2677123db7662efd4b",
      "tree": "c5f62a947aa04afb4e3f5f8f8ddbb569ff8fa0c0",
      "parents": [
        "785ee06d106cd7958e0c151ebc6b7174d9ba861e"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Dec 15 18:14:05 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Dec 15 18:36:08 2011 -0800"
      },
      "message": "SurfaceMediaSource: use the HW_TEXTURE usage bit\n\nThis change makes SurfaceMediaSource request Gralloc buffers with the\nHW_TEXTURE usage bit rather than the VIDEO_ENCODER bit.  It is a\ntemporary workaround for what is likely a Gralloc bug.\n\nBug: 5771063\nChange-Id: I9cce615e80fc14a1644fae27ba06970c262dd179\n"
    },
    {
      "commit": "910782a65a6fce8446cb52ed635d7d702f5fddc3",
      "tree": "984355998e0370706a699383eb8fce495fdda6e3",
      "parents": [
        "c8e9af4a16dee47bb47f1e3577b48806e3f542af",
        "785ee06d106cd7958e0c151ebc6b7174d9ba861e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Dec 14 13:50:15 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 14 13:50:15 2011 -0800"
      },
      "message": "am d70c64db: Revert the following patches because they may lead to power regression because SHA/MD5 module is stuck 1. Revert \"Fix drm flag setting missed in false drm recognition fix.\"    This reverts commit 9f704f6c46a171357e49c411c83458b9d4565f3b.\n\n* commit \u0027d70c64db9f67dbe8f888de6b1bdcc835226ec526\u0027:\n  Revert the following patches because they may lead to power regression because SHA/MD5 module is stuck 1. Revert \"Fix drm flag setting missed in false drm recognition fix.\"    This reverts commit 9f704f6c46a171357e49c411c83458b9d4565f3b.\n"
    },
    {
      "commit": "785ee06d106cd7958e0c151ebc6b7174d9ba861e",
      "tree": "52cb291bf974f4593277cc1142e514ebadae4b89",
      "parents": [
        "19e9d0fe6dc3ff4fb1807fee2ad058bf3277e883"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Dec 14 10:57:05 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Dec 14 11:01:59 2011 -0800"
      },
      "message": "Revert the following patches because they may lead to power regression because SHA/MD5 module is stuck\n1. Revert \"Fix drm flag setting missed in false drm recognition fix.\"\n   This reverts commit 9f704f6c46a171357e49c411c83458b9d4565f3b.\n\n2. Revert \"Fixed the false drm recognition.\"\n   This reverts commit aadbd80b307c817698ce5110ff8e002804d1b230.\n\n3. Revert \"Fix drm enumeration order, resolves failure to play forward lock ringtones\"\n   This reverts commit a5cbf023e349f2394ba6fc58d73b4375cfec4369.\n\n4. Revert \"Fix ANRs due to Widevine DRM plugin sniff taking too long.\"\n   This reverts commit d0d19db1ca1c289b069db33f4665bcb9386064e9.\n\nAs a result of the reverting, many ANRs from WV sniffing are back.\n\nrelated-to-bug: 5739618\n"
    },
    {
      "commit": "c8e9af4a16dee47bb47f1e3577b48806e3f542af",
      "tree": "35e95ba95a0ead73495b081b5351f8bcc920766e",
      "parents": [
        "c48d98adbedca37b596af9a8b460de7e2eb0a89b",
        "19e9d0fe6dc3ff4fb1807fee2ad058bf3277e883"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 13 12:02:19 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 13 12:02:19 2011 -0800"
      },
      "message": "am 3ab63008: Merge \"DO NOT MERGE: Support for parsing of \"folded\" RTSP header values\" into ics-mr1\n\n* commit \u00273ab630084071eb5dc7f92b4a8a617f8cef10c514\u0027:\n  DO NOT MERGE: Support for parsing of \"folded\" RTSP header values\n"
    },
    {
      "commit": "19e9d0fe6dc3ff4fb1807fee2ad058bf3277e883",
      "tree": "85df096ae36e2226ef9344e1ac419d8ebee8c1b2",
      "parents": [
        "a9d421d3c05b98ee5481428ca3dcb3e3245140ff"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Dec 09 15:09:56 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 13 10:09:48 2011 -0800"
      },
      "message": "DO NOT MERGE: Support for parsing of \"folded\" RTSP header values\n\nand some tweaks to the AMR assembler contributed by Samsung (untested).\n\nChange-Id: I6c3df31fa3a35433bfddfdda82747bb4c6ee86a1\nrelated-to-bug: 5669027\n"
    },
    {
      "commit": "c48d98adbedca37b596af9a8b460de7e2eb0a89b",
      "tree": "a2f06991a9cf70f417ad1cd359496ac78bb81a1f",
      "parents": [
        "bb006eb1ccdf9428d45aa9a2d8df662d53dfe0e2",
        "a9d421d3c05b98ee5481428ca3dcb3e3245140ff"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Dec 12 11:06:32 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 12 11:06:32 2011 -0800"
      },
      "message": "am a5cbf023: Fix drm enumeration order, resolves failure to play forward lock ringtones\n\n* commit \u0027a5cbf023e349f2394ba6fc58d73b4375cfec4369\u0027:\n  Fix drm enumeration order, resolves failure to play forward lock ringtones\n"
    },
    {
      "commit": "a9d421d3c05b98ee5481428ca3dcb3e3245140ff",
      "tree": "9923d2dba8b8bf93adb3e4a54aa8788031f6c75b",
      "parents": [
        "7e976e926dd8085a64a7add97ce09bfeca26e088"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Dec 09 20:04:17 2011 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Dec 09 20:04:17 2011 -0800"
      },
      "message": "Fix drm enumeration order, resolves failure to play forward lock ringtones\n\nChange-Id: I58e8a26849409bc3bf98b066c5e07c2a0c91e0c9\nrelated-to-bug: 5735466\n"
    },
    {
      "commit": "bb006eb1ccdf9428d45aa9a2d8df662d53dfe0e2",
      "tree": "37b6beea16f1500ff706e2b3ac74ff6c550cdcb8",
      "parents": [
        "63aeaee9e1e3318ceed0a0955b46f0f0e35f5f2d",
        "7e976e926dd8085a64a7add97ce09bfeca26e088"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Dec 09 11:13:59 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 09 11:13:59 2011 -0800"
      },
      "message": "am ef664f62: Merge \"Fix drm flag setting missed in false drm recognition fix.\" into ics-mr1\n\n* commit \u0027ef664f62a1525e8f53d0937e889333544ffef3ad\u0027:\n  Fix drm flag setting missed in false drm recognition fix.\n"
    },
    {
      "commit": "7e976e926dd8085a64a7add97ce09bfeca26e088",
      "tree": "dd64d410e936b9d0a31ca606598ae34153faca4d",
      "parents": [
        "d1fa3ca0eee42ffd450d579b357f39163a716ee3"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Dec 09 08:57:23 2011 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Dec 09 09:09:08 2011 -0800"
      },
      "message": "Fix drm flag setting missed in false drm recognition fix.\n\nChange-Id: Ie38668c8a32969ef7c7df4ca3350e2364291953c\nrelated-to-bug: 5732033\n"
    },
    {
      "commit": "63aeaee9e1e3318ceed0a0955b46f0f0e35f5f2d",
      "tree": "4e4c2932d1883f8981be622be1a99d834e12ad9f",
      "parents": [
        "9ee47a064243b3b25ca6aa697975806b178ef466",
        "d1fa3ca0eee42ffd450d579b357f39163a716ee3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Dec 09 00:17:27 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 09 00:17:27 2011 -0800"
      },
      "message": "am aadbd80b: Fixed the false drm recognition.\n\n* commit \u0027aadbd80b307c817698ce5110ff8e002804d1b230\u0027:\n  Fixed the false drm recognition.\n"
    },
    {
      "commit": "d1fa3ca0eee42ffd450d579b357f39163a716ee3",
      "tree": "d8d69ce3df2f878f020f768ef96771561ea00619",
      "parents": [
        "b7b9c7b47a771e550124ae269a7b1be262039b95"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Dec 08 19:31:59 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Dec 08 21:01:31 2011 -0800"
      },
      "message": "Fixed the false drm recognition.\n\nChange-Id: If0198e52ff7bbd7422f219f55a37aae97f7d74f1\n\nrelated-to-bug: 5732033\n"
    },
    {
      "commit": "9ee47a064243b3b25ca6aa697975806b178ef466",
      "tree": "21be5d163ebeda7e1981d54ff767e1029b10eca1",
      "parents": [
        "7c7ee7bfc530307a3695c036a632c199251cbbe2",
        "b7b9c7b47a771e550124ae269a7b1be262039b95"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 08 13:35:23 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 08 13:35:23 2011 -0800"
      },
      "message": "am 68f592a8: Merge \"Don\\\u0027t perform RTSP seeks right away but queue them for 200ms\" into ics-mr1\n\n* commit \u002768f592a8210af27df4339089bbee47fb602cae6a\u0027:\n  Don\u0027t perform RTSP seeks right away but queue them for 200ms\n"
    },
    {
      "commit": "7c7ee7bfc530307a3695c036a632c199251cbbe2",
      "tree": "be2817a259f68c2361b0b2875aaca5f8f004f3a8",
      "parents": [
        "34ae954bc7a45310eaf7accb49bf088f801eda23",
        "1906e5c7492b9cbc88601365536a69e9a490c963"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 08 13:35:16 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 08 13:35:16 2011 -0800"
      },
      "message": "am 0ba9380a: Merge \"Fix Bitreader \"putBits\" implementation, make sure we emulate timestamps\" into ics-mr1\n\n* commit \u00270ba9380a337d5e2eae9fd9e4eb8039403ed3815b\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": "34ae954bc7a45310eaf7accb49bf088f801eda23",
      "tree": "3422eafae0ac86eee39c695958e51bd928838bd7",
      "parents": [
        "bf6baf751f855001e92ea3da020dffb3bb7c1501",
        "894f3ca9a9f94225bb64f36847508a91d0b17a6e"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Dec 08 00:16:15 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 08 00:16:15 2011 -0800"
      },
      "message": "am a693a4b5: Merge \"Fix ANRs due to Widevine DRM plugin sniff taking too long.\" into ics-mr1\n\n* commit \u0027a693a4b5553584a01b8b6b3640dc0393d2d88f28\u0027:\n  Fix ANRs due to Widevine DRM plugin sniff taking too long.\n"
    },
    {
      "commit": "894f3ca9a9f94225bb64f36847508a91d0b17a6e",
      "tree": "488facb65d3b9369ef06ca34c3dabcd3406da238",
      "parents": [
        "2c170cd8e308712674edd2cc7eebea70359d4951",
        "8e49b604c806eabe3eea2bd24813cdfc4b87c64c"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Dec 08 00:13:43 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 08 00:13:43 2011 -0800"
      },
      "message": "Merge \"Fix ANRs due to Widevine DRM plugin sniff taking too long.\" into ics-mr1"
    },
    {
      "commit": "8e49b604c806eabe3eea2bd24813cdfc4b87c64c",
      "tree": "8bf163231b5a4d481b9f17375ab0967727474d11",
      "parents": [
        "4fe1c6c3988f79fd67c14a1f91e4b1df8a7e806f"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Dec 07 20:23:20 2011 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Dec 07 20:23:20 2011 -0800"
      },
      "message": "Fix ANRs due to Widevine DRM plugin sniff taking too long.\n\nAdd a Widevine-specific format sniffer to avoid having to\nrefetch data from the remote server.\n\nChange-Id: I5fdb21fe7a0d6e74f2a6f06e6fbf8070b068ac60\nrelated-to-bug: 5725548\n"
    },
    {
      "commit": "bf6baf751f855001e92ea3da020dffb3bb7c1501",
      "tree": "045f6c734fba3bcab734136055192faaf3d2376f",
      "parents": [
        "78829cbcb747ac2c5946949d9661d249ac5adfed",
        "2c170cd8e308712674edd2cc7eebea70359d4951"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Dec 07 14:07:49 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 07 14:07:49 2011 -0800"
      },
      "message": "am 54a53841: Merge \"Fetch at least 192KB to avoid our mp3 sniffer from blocking on data.\" into ics-mr1\n\n* commit \u002754a53841a9ff48ba4cd004469ae4ff77caed900a\u0027:\n  Fetch at least 192KB to avoid our mp3 sniffer from blocking on data.\n"
    },
    {
      "commit": "2c170cd8e308712674edd2cc7eebea70359d4951",
      "tree": "c0f8622f3613dfbeb0975a0792cb46093e0918b8",
      "parents": [
        "0c4ec128aa324f99f726a314bd97e8a581f22ec5",
        "bab412099ab1bd3e9e942453cbb42c87ea9a59ec"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Dec 07 14:05:41 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 07 14:05:41 2011 -0800"
      },
      "message": "Merge \"Fetch at least 192KB to avoid our mp3 sniffer from blocking on data.\" into ics-mr1"
    },
    {
      "commit": "bab412099ab1bd3e9e942453cbb42c87ea9a59ec",
      "tree": "c0f8622f3613dfbeb0975a0792cb46093e0918b8",
      "parents": [
        "72936144fd16d6d73b7383b634d53909f4887d2b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 07 12:50:47 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 07 12:50:47 2011 -0800"
      },
      "message": "Fetch at least 192KB to avoid our mp3 sniffer from blocking on data.\n\nChange-Id: Icb10c129249bb9b69e91f6633a385840c94efa59\nrelated-to-bug: 5666532\n"
    },
    {
      "commit": "78829cbcb747ac2c5946949d9661d249ac5adfed",
      "tree": "97d9cc853967d554eb3be7b599f0d092175e00e5",
      "parents": [
        "a9676a82efbec4a46db8e5e58f0f701c7f7d6e05",
        "0c4ec128aa324f99f726a314bd97e8a581f22ec5"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 07 11:03:56 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 07 11:03:56 2011 -0800"
      },
      "message": "am 3de8d36b: Reconcile with ics-mr0-release\n\n* commit \u00273de8d36b6fd166cf63ca256c455c0ea26a849668\u0027:\n  DO NOT MERGE: Remove the AVI extractor.\n  Disable wifiwatchdog for now\n"
    },
    {
      "commit": "a9676a82efbec4a46db8e5e58f0f701c7f7d6e05",
      "tree": "97d9cc853967d554eb3be7b599f0d092175e00e5",
      "parents": [
        "fa19c45913900baa6d3ef50fb4d2048684b63906",
        "72936144fd16d6d73b7383b634d53909f4887d2b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 07 11:03:00 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 07 11:03:00 2011 -0800"
      },
      "message": "am 791a3183: Merge \"Merge commit \\\u0027babb7200\\\u0027 into manualmerge\" into ics-mr1\n\n* commit \u0027791a31832ab586f056c2bcab8e0515d4bb1e2f7a\u0027:\n  DO NOT MERGE: Remove the AVI extractor.\n"
    },
    {
      "commit": "fa19c45913900baa6d3ef50fb4d2048684b63906",
      "tree": "97d9cc853967d554eb3be7b599f0d092175e00e5",
      "parents": [
        "b26d97ccbcbf5aa07f4d5ead9c77cdd46d3263e2",
        "e74de52d4e22fc61d41f703672fa8f1215446ab5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Dec 07 11:02:31 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 07 11:02:31 2011 -0800"
      },
      "message": "am 6b8b5a0a: Merge \"DO NOT MERGE - Consider I-Frame at zeroeth position when searching for sync frames\" into ics-mr1\n\n* commit \u00276b8b5a0a4183c0f8d1d5ceacc9e50194589a77d3\u0027:\n  DO NOT MERGE - Consider I-Frame at zeroeth position when searching for sync frames\n"
    },
    {
      "commit": "b26d97ccbcbf5aa07f4d5ead9c77cdd46d3263e2",
      "tree": "38390908e884a6c92b49c1f549c1fc6fb67e2b98",
      "parents": [
        "e5bcf5c6572bb5190ee8394619e936ffb61db14d",
        "f7b5cdd410cb8fdd46bac5b5098e0f01442bba12"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Dec 07 11:02:29 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 07 11:02:29 2011 -0800"
      },
      "message": "am 05d63069: Merge \"DO NOT MERGE: Remove the AVI extractor.\" into ics-mr1\n\n* commit \u002705d630691127c022befd071b2bede87c707112a9\u0027:\n  DO NOT MERGE: Remove the AVI extractor.\n"
    },
    {
      "commit": "0c4ec128aa324f99f726a314bd97e8a581f22ec5",
      "tree": "ebca213f22bc3adee2b0c9efd3fb0aedef86918b",
      "parents": [
        "72936144fd16d6d73b7383b634d53909f4887d2b",
        "01fe81c26d27af4d2e24482dcf2b910d983b0f7c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 07 07:24:54 2011 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 07 07:24:54 2011 -0800"
      },
      "message": "Reconcile with ics-mr0-release\n\nChange-Id: I5341d7d7de8ec8dfa86095e8d8d45a912bb01a47\n"
    },
    {
      "commit": "72936144fd16d6d73b7383b634d53909f4887d2b",
      "tree": "ebca213f22bc3adee2b0c9efd3fb0aedef86918b",
      "parents": [
        "e74de52d4e22fc61d41f703672fa8f1215446ab5",
        "62157c64096fe7065d4f99ad21edda41b208a808"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 06 15:03:10 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 06 15:03:10 2011 -0800"
      },
      "message": "Merge commit \u0027babb7200\u0027 into manualmerge\n"
    },
    {
      "commit": "01fe81c26d27af4d2e24482dcf2b910d983b0f7c",
      "tree": "25e0529e98839abf121158098a13b96a01314bbd",
      "parents": [
        "91e2c7d2988c4947aca8a637f88a2179d905b970"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 06 10:59:48 2011 -0800"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Tue Dec 06 14:23:38 2011 -0800"
      },
      "message": "DO NOT MERGE: Remove the AVI extractor.\n\nChange-Id: Ib9cb4a48bd817da703ef53eb14932616d2973ee0\n"
    },
    {
      "commit": "e5bcf5c6572bb5190ee8394619e936ffb61db14d",
      "tree": "c06cc41a971f03174e6bd7daf80ea0a76987bc28",
      "parents": [
        "a2ad6febe24bb7baf544c7ba100ab76e55547f7c"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Tue Dec 06 14:05:05 2011 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Tue Dec 06 14:19:31 2011 -0800"
      },
      "message": "Tungsten: Improve RX player error handling.\n\nFirst, clear an issue which was causing an assert to fire.  Basically,\nonce a decoder pump had entered the error state and was shutdown, it\nwas not clearing its status, and when a substream attempt to recycle\nthe pump, startup was failing an assert (no thread had been created,\nmeaning that the system was not initialized, yet status indicated an\nerror).  This was a small one-liner in aah_decoder_pump.cpp.\n\nSecond, try to become a little nuanced about how we handle errors in\nthe decoder pump.  A comment in the code pretty much says it all, but\nthe summary is that we don\u0027t want to completely abort playback because\na single chunk of ES failed to decode, but if nothing is decoding and\nwe are making no progress at all, we probably need to put the\nMediaPlayer instance into the fatal Error state and signal the app\nlevel so that further action can be taken (automatic recovery attempts\nfollowed by bug reports and signalling the user if those fail).\n\nThis is to address the fallout of http://b/issue?id\u003d5498460, where\nsomething at the OMX decoder level becomes unhappy about not being\nable to obtain an output buffer which eventually unwinds to this\nassert which results in a dead mediaserver.  After this change, the\nmediaserver will no longer crash, and may even recover (depending on\nwhether or not the OMX unhappiness is transient or not), but the\nprimary issue (unhappy OMX) is probably still around.  It is quite\ndifficult to reproduce, I will probably need to open a different bug\nto track that issue.\n\nChange-Id: I5b65b818378a5ae9c915e91b7db7129f0bda6837\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "e74de52d4e22fc61d41f703672fa8f1215446ab5",
      "tree": "ebca213f22bc3adee2b0c9efd3fb0aedef86918b",
      "parents": [
        "f7b5cdd410cb8fdd46bac5b5098e0f01442bba12",
        "223e70d6bde101349cba04b20ef243730cf84c07"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Dec 06 12:52:52 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 06 12:52:52 2011 -0800"
      },
      "message": "Merge \"DO NOT MERGE - Consider I-Frame at zeroeth position when searching for sync frames\" into ics-mr1"
    },
    {
      "commit": "f7b5cdd410cb8fdd46bac5b5098e0f01442bba12",
      "tree": "93705014698e68b09f4558f9406cd2c6e34a5ef0",
      "parents": [
        "9e603e057d6cc80e6b7e948b9af13b1a7b736008"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 06 10:01:27 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 06 11:24:34 2011 -0800"
      },
      "message": "DO NOT MERGE: Remove the AVI extractor.\n\nChange-Id: Ifce6c0d3d87aad2f5cc7f40ad6304936cbfa795e\n"
    },
    {
      "commit": "62157c64096fe7065d4f99ad21edda41b208a808",
      "tree": "25e0529e98839abf121158098a13b96a01314bbd",
      "parents": [
        "91e2c7d2988c4947aca8a637f88a2179d905b970"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 06 10:59:48 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Dec 06 11:21:02 2011 -0800"
      },
      "message": "DO NOT MERGE: Remove the AVI extractor.\n\nChange-Id: Ib9cb4a48bd817da703ef53eb14932616d2973ee0\n"
    },
    {
      "commit": "a2ad6febe24bb7baf544c7ba100ab76e55547f7c",
      "tree": "022d8e89df376b29d697d38da3539cfc24a23b93",
      "parents": [
        "047b630795d17f847a71298eb8d9008e61afe20c",
        "725dfe996b2b23fe78b4d92718401406c510a32c"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Tue Dec 06 10:04:38 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 06 10:04:38 2011 -0800"
      },
      "message": "Merge \"AudioFlinger: Make StandbyTime configurable.\" into ics-aah"
    },
    {
      "commit": "725dfe996b2b23fe78b4d92718401406c510a32c",
      "tree": "1e113bc11154862196367107d4813486f7b8a40c",
      "parents": [
        "72028075d3d8dc65a8ea28a0364bd1a5b7df5fee"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Dec 05 14:35:26 2011 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Tue Dec 06 10:02:29 2011 -0800"
      },
      "message": "AudioFlinger: Make StandbyTime configurable.\n\nMake the standby time for AudioFlinger configurable using a system\nproperty.  Default AudioFlinger behavior is to go into standby\n(allowing the audio outputs to underflow) after there has been nothing\nto mix and AudioFlinger has just been pumping out silence for the\nconfigured standby time (which defaulted to 3 seconds).\n\nNow, by setting the \"ro.audio.flinger_standbytime_ms\" property in\ntheir platform init.rc, platforms can override this default and\ncontrol the standby time.  If the property is missing or malformed,\nthe old default value of 3 seconds will be used instead.\n\nChange-Id: Ic9fa8b5f5bccee493bc72c65e408d3fd8ddd1059\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "047b630795d17f847a71298eb8d9008e61afe20c",
      "tree": "dc2bd83e9c460d797eb66b98f2332a18e2e4f468",
      "parents": [
        "369c3a57543b6abff69f91a8e5c5c48970dffaf7",
        "9e603e057d6cc80e6b7e948b9af13b1a7b736008"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 05 17:22:46 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 05 17:22:46 2011 -0800"
      },
      "message": "am 7b6aff23: Merge \"audioflinger: fix audio skipping over A2DP\" into ics-mr1\n\n* commit \u00277b6aff23735a9ef8759c5ecb4427784413e9b85b\u0027:\n  audioflinger: fix audio skipping over A2DP\n"
    },
    {
      "commit": "9e603e057d6cc80e6b7e948b9af13b1a7b736008",
      "tree": "7db009c66d5cc856ea1fb042a916a7b395972169",
      "parents": [
        "a0f2bf56e30f580535229fa6a58e7d48b762727c",
        "162b40bbaf3c3a24f61a6636bef6f80a9c0a31dd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 05 17:20:53 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 05 17:20:53 2011 -0800"
      },
      "message": "Merge \"audioflinger: fix audio skipping over A2DP\" into ics-mr1"
    },
    {
      "commit": "223e70d6bde101349cba04b20ef243730cf84c07",
      "tree": "5d8f574d8faaea100cb3937e3cf8e0b0b8f7b427",
      "parents": [
        "a0f2bf56e30f580535229fa6a58e7d48b762727c"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Dec 05 12:41:06 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Dec 05 14:29:18 2011 -0800"
      },
      "message": "DO NOT MERGE - Consider I-Frame at zeroeth position when searching for sync frames\n\nThe current logic does not check the I-frame at zeroeth position and therefore\nfor the files with only 1 I-Frame at zeroeth postion does not play.\n\nOriginally authored by Braganza Sam Robertsh \u003csam.braganza@samsung.com\u003e\n\nDo not merge to master branch since we made some improvement to SampleTable.cpp in the master branch.\n\nChange-Id: I068184dec71986f14a586f769c2af1f52b4bcf94\nrelated-to-bug: 5711942\n"
    },
    {
      "commit": "369c3a57543b6abff69f91a8e5c5c48970dffaf7",
      "tree": "9155a45be80ea5db382c2a0866f63769c5138509",
      "parents": [
        "72028075d3d8dc65a8ea28a0364bd1a5b7df5fee",
        "a0f2bf56e30f580535229fa6a58e7d48b762727c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 05 12:02:53 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 05 12:02:53 2011 -0800"
      },
      "message": "am f2e12498: Merge \"Properly identify how much metadata we need to cache in order to instantiate\" into ics-mr1\n\n* commit \u0027f2e1249846a17c69d728189a8dc67f37261f0a59\u0027:\n  Properly identify how much metadata we need to cache in order to instantiate\n"
    },
    {
      "commit": "a0f2bf56e30f580535229fa6a58e7d48b762727c",
      "tree": "f375e7f5e9f183289bbd5c907f90b89924f11aa8",
      "parents": [
        "fed8bb604c31bf6a60ca84aafed016d21d3e0f90"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 05 11:34:43 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Dec 05 11:34:43 2011 -0800"
      },
      "message": "Properly identify how much metadata we need to cache in order to instantiate\n\nthe extractor without blocking (and therefore be able to abort).\n\nChange-Id: Id2acdde897e02baaeabadae70b7c95b66c9041b3\nrelated-to-bug: 5666532\n"
    },
    {
      "commit": "162b40bbaf3c3a24f61a6636bef6f80a9c0a31dd",
      "tree": "799acc096d19121f9d7ec271bfdcb4f65a118df2",
      "parents": [
        "7cafbb32999049873d4746ba83bd20c88abe6ce6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 05 09:47:19 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 05 10:40:18 2011 -0800"
      },
      "message": "audioflinger: fix audio skipping over A2DP\n\nThe maximum sleep time allowed in the mixer thread when audio tracks\nare enabled but not ready for mixing is derived from the latency\nreported by the output stream.\nThis does not work for A2DP where the latency also reflects encoding, decoding\nand transfer time.\n\nModified activeSleepTimeUs() to take A2DP case into account.\n\nIssue 5682206.\n\nChange-Id: I3784ac01fb6f836b5a6ce6f764fb15347586de35\n"
    },
    {
      "commit": "72028075d3d8dc65a8ea28a0364bd1a5b7df5fee",
      "tree": "ea42bead8ddee2f92ea90d042e49a34064a9bee6",
      "parents": [
        "a33b7d94103696702e40533c6a0b8043e66498af",
        "fed8bb604c31bf6a60ca84aafed016d21d3e0f90"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Dec 02 13:22:28 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 02 13:22:28 2011 -0800"
      },
      "message": "am 1a3ece9f: Merge \"MTP: Add support for restricting PTP to only certain subdirectories of the storage DO NOT MERGE\" into ics-mr1\n\n* commit \u00271a3ece9f871c94eb524543ae618a2a1c88cab2cd\u0027:\n  MTP: Add support for restricting PTP to only certain subdirectories of the storage DO NOT MERGE\n"
    },
    {
      "commit": "a33b7d94103696702e40533c6a0b8043e66498af",
      "tree": "e9cab385cc07545c35632ef327f082b2e904b4ca",
      "parents": [
        "d7217d71683c6643b2608032cf1cd38e10a6b2c7",
        "8af4c7d02fc484ed1bdc082fc2a5383bc50f2180"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Dec 02 13:22:26 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 02 13:22:26 2011 -0800"
      },
      "message": "am 7f87d9cf: Merge \"MTP: Don\\\u0027t attempt to read more than 16K at a time from the MTP driver DO NOT MERGE\" into ics-mr1\n\n* commit \u00277f87d9cf666c38b9f43b7b2d99acbd9c8f91d8d1\u0027:\n  MTP: Don\u0027t attempt to read more than 16K at a time from the MTP driver DO NOT MERGE\n"
    },
    {
      "commit": "fed8bb604c31bf6a60ca84aafed016d21d3e0f90",
      "tree": "b6241932aebde1c0f71c9d52d63bb2ea7ef5adf7",
      "parents": [
        "8af4c7d02fc484ed1bdc082fc2a5383bc50f2180"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Dec 01 16:58:41 2011 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Dec 02 15:12:47 2011 -0500"
      },
      "message": "MTP: Add support for restricting PTP to only certain subdirectories of the storage DO NOT MERGE\n\nBug: 5527220\n\nChange-Id: I81d6de590ea3002118ba46eb4b6d5fe9061c998c\nSigned-off-by: Mike Lockwood \u003clockwood@google.com\u003e\n"
    },
    {
      "commit": "8af4c7d02fc484ed1bdc082fc2a5383bc50f2180",
      "tree": "89d39512087cd15a3fb44a8bb5f28e36303eeb19",
      "parents": [
        "4fe1c6c3988f79fd67c14a1f91e4b1df8a7e806f"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Dec 01 18:36:06 2011 -0500"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Dec 02 15:12:30 2011 -0500"
      },
      "message": "MTP: Don\u0027t attempt to read more than 16K at a time from the MTP driver DO NOT MERGE\n\nThis could happen sometimes if other operations increased the size of the\ndata packet buffer to \u003e 16K\n\nChange-Id: I10f85f0ce32df39f46b0a984361958c0a13f6800\nSigned-off-by: Mike Lockwood \u003clockwood@google.com\u003e\n"
    },
    {
      "commit": "d7217d71683c6643b2608032cf1cd38e10a6b2c7",
      "tree": "997c28a92706caf86bd4c7ba37faf58cae7ac287",
      "parents": [
        "1b493416e52241b71eec6ab875516529da6430d5",
        "4fe1c6c3988f79fd67c14a1f91e4b1df8a7e806f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 01 10:19:52 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 01 10:19:52 2011 -0800"
      },
      "message": "am 2c2ed7be: Merge \"Fixes a typo in AVIExtractor that would advertise the wrong video dimensions\" into ics-mr1\n\n* commit \u00272c2ed7bef931f43dc0701ab723beb0cbed2cb630\u0027:\n  Fixes a typo in AVIExtractor that would advertise the wrong video dimensions\n"
    },
    {
      "commit": "4fe1c6c3988f79fd67c14a1f91e4b1df8a7e806f",
      "tree": "fba9ea601042188ab396e20cb69e98ffe6ff6290",
      "parents": [
        "21befea3720fb847aef5440d507902d8705a671a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 01 10:02:37 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Dec 01 10:02:37 2011 -0800"
      },
      "message": "Fixes a typo in AVIExtractor that would advertise the wrong video dimensions\n\nChange-Id: I587a5ce259b04c973ed2d7614e874cb74c521aab\nrelated-to-bug: 5696324\n"
    },
    {
      "commit": "1b493416e52241b71eec6ab875516529da6430d5",
      "tree": "f015b5f684e4f8aac0de70744c4ef844ad43ed1b",
      "parents": [
        "a2d54aea18b469a186a6f8112c10c963710ab154",
        "21befea3720fb847aef5440d507902d8705a671a"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Nov 29 17:26:59 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 29 17:26:59 2011 -0800"
      },
      "message": "am 6f1dd757: Merge \"SurfaceMediaSource: use the vid enc usage bit\" into ics-mr1\n\n* commit \u00276f1dd757cb158d17c76baeb170f7db2271802ef8\u0027:\n  SurfaceMediaSource: use the vid enc usage bit\n"
    },
    {
      "commit": "21befea3720fb847aef5440d507902d8705a671a",
      "tree": "d0cf40e356b3fdd74a907275b45f41680287eb3f",
      "parents": [
        "7609b2304379fd6d3e5c8d13a34c680441dc48b6",
        "4c57986f963c81fc7c2455deb113c9b32b135468"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Nov 29 17:25:09 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 29 17:25:09 2011 -0800"
      },
      "message": "Merge \"SurfaceMediaSource: use the vid enc usage bit\" into ics-mr1"
    },
    {
      "commit": "a2d54aea18b469a186a6f8112c10c963710ab154",
      "tree": "213f038c97479a941f226f5cb34e19d535697dd7",
      "parents": [
        "d7dbc9e610281bcdd5a1f0292e066aa2dbf749c4",
        "7609b2304379fd6d3e5c8d13a34c680441dc48b6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 14:30:46 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 29 14:30:46 2011 -0800"
      },
      "message": "am 564fee36: Merge \"Make sure we can properly shutdown even if\" into ics-mr1\n\n* commit \u0027564fee36667e2699c59a29102136220dc2f65862\u0027:\n  Make sure we can properly shutdown even if\n"
    },
    {
      "commit": "d7dbc9e610281bcdd5a1f0292e066aa2dbf749c4",
      "tree": "ddfbfbf5682c8b20468f7d1ded274d28c150443c",
      "parents": [
        "4d1ba696c0b308cc5a148e8228b9ef3a9a9e48f4",
        "5274010d068b05333e3e5544d59ca284802b1a8e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 14:30:45 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 29 14:30:45 2011 -0800"
      },
      "message": "am d12dc284: Merge \"If an error occurs that prevents us from reallocating buffers during a format change\" into ics-mr1\n\n* commit \u0027d12dc28460f622ab29e83fa688ad83a8263e9417\u0027:\n  If an error occurs that prevents us from reallocating buffers during a format change\n"
    },
    {
      "commit": "4d1ba696c0b308cc5a148e8228b9ef3a9a9e48f4",
      "tree": "0388cb35e787c6754f1108fe6be81a539d87298c",
      "parents": [
        "65879b6ff9b3e3f254b33b29c91c1f6db5271faa",
        "544ee287d01d98efbe9eeeaeb7016c8dd55e3748"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 14:30:43 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 29 14:30:43 2011 -0800"
      },
      "message": "am 351143fb: Merge \"Updated (internal) API for IStreamSource to signal discontinuities\" into ics-mr1\n\n* commit \u0027351143fb0e2fcfb7dc2ef1045d693c71eb0ea329\u0027:\n  Updated (internal) API for IStreamSource to signal discontinuities\n"
    },
    {
      "commit": "65879b6ff9b3e3f254b33b29c91c1f6db5271faa",
      "tree": "f5e746365339a3b259decb6f3c77c1a03797ecf5",
      "parents": [
        "48679acff8977bf8e378478882f1a32cb77a5a77",
        "6e3d311b6631b12aac2879d1b08c3534aece78b1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 14:30:40 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 29 14:30:40 2011 -0800"
      },
      "message": "am 405a4e34: Merge \"Finer granularity discontinuity support.\" into ics-mr1\n\n* commit \u0027405a4e34032f8a07028138266fe9f79f6753b466\u0027:\n  Finer granularity discontinuity support.\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": "5274010d068b05333e3e5544d59ca284802b1a8e",
      "tree": "a3af410cc5f0990f5caf0bf01fc77702acdfc247",
      "parents": [
        "544ee287d01d98efbe9eeeaeb7016c8dd55e3748",
        "d3d822204249eaca4259bdf46f6f0357b96e8e21"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 29 14:09:03 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 29 14:09:03 2011 -0800"
      },
      "message": "Merge \"If an error occurs that prevents us from reallocating buffers during a format change\" 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": "d3d822204249eaca4259bdf46f6f0357b96e8e21",
      "tree": "f48558114991dfd8e267b6c166367cff7353305b",
      "parents": [
        "7cafbb32999049873d4746ba83bd20c88abe6ce6"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 28 10:54:12 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Nov 28 10:54:12 2011 -0800"
      },
      "message": "If an error occurs that prevents us from reallocating buffers during a format change\n\nwe need to transition to executing state anyway to be able to properly flush/shutdown\nin the future.\n\nChange-Id: Ie48bc09ea31942009ae3a5a45aabc9ffad9fb91f\nrelated-to-bug: 5655016\n"
    },
    {
      "commit": "48679acff8977bf8e378478882f1a32cb77a5a77",
      "tree": "b832b0ac9a2681e1996cb7d5f9aefd29c40dde66",
      "parents": [
        "1a316cee915740189465fda64b2a11cd6403b632",
        "7cafbb32999049873d4746ba83bd20c88abe6ce6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 23 12:32:30 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 23 12:32:30 2011 -0800"
      },
      "message": "am 20398fac: Merge \"audioflinger: reduce sleep time to avoid underrun\" into ics-mr1\n\n* commit \u002720398fac99ff78cb3ec3dd122930e45d409e0524\u0027:\n  audioflinger: reduce sleep time to avoid underrun\n"
    },
    {
      "commit": "7cafbb32999049873d4746ba83bd20c88abe6ce6",
      "tree": "c251630c9b785aa555c7093b2691fe1f75b7a6dc",
      "parents": [
        "e933cb5ae546d023ab756391a135c170874e7901"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 22 18:50:29 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 22 18:50:29 2011 -0800"
      },
      "message": "audioflinger: reduce sleep time to avoid underrun\n\nProgressively reduce the sleep time applied in MixerThread::threadLoop()\nin case of consecutive application underruns to avoid starving the audio HAL.\nAs the default sleep time is longer than the duration of an audio buffer\nwe ended up writing less data than needed by the audio HAL if\nthe condition persisted.\n\nIssue 5553055.\n\nChange-Id: I2b23ee79c032efa945025db228beaecd1e07a2e5\n"
    },
    {
      "commit": "1a316cee915740189465fda64b2a11cd6403b632",
      "tree": "c7cc982a0a0ca792341009a3276fe9a47db1dcd4",
      "parents": [
        "b8813d07df166e26d126184c77e870169d975790",
        "e933cb5ae546d023ab756391a135c170874e7901"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 22 08:41:26 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 22 08:41:26 2011 -0800"
      },
      "message": "am cb6fbc89: Merge \"Report a runtime error instead of asserting on malformed avc configuration data.\" into ics-mr1\n\n* commit \u0027cb6fbc89c25298643ab342b4a228e772b0e56978\u0027:\n  Report a runtime error instead of asserting on malformed avc configuration data.\n"
    },
    {
      "commit": "e933cb5ae546d023ab756391a135c170874e7901",
      "tree": "4a538f125f876469ea59e173b9d3645000c91cd4",
      "parents": [
        "e8e5f86e9e310b065596c8cbbca1543eb833dee1",
        "71b61a960ae30df990976ca5dbe780d85a15b0d1"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 22 08:39:11 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 22 08:39:11 2011 -0800"
      },
      "message": "Merge \"Report a runtime error instead of asserting on malformed avc configuration data.\" into ics-mr1"
    },
    {
      "commit": "b8813d07df166e26d126184c77e870169d975790",
      "tree": "9c6d4ca8203dfffddfdd40d963e4881eb3bfb4b7",
      "parents": [
        "863992ab17511fb2550f0347b59065066dd6f8b5",
        "e8e5f86e9e310b065596c8cbbca1543eb833dee1"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Nov 21 20:30:14 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 21 20:30:14 2011 -0800"
      },
      "message": "am 02740dc4: Merge \"Fix log spamming during time lapse video recording\" into ics-mr1\n\n* commit \u002702740dc49df86fc94c872454aa9db98737d5e8c8\u0027:\n  Fix log spamming during time lapse video recording\n"
    },
    {
      "commit": "4c57986f963c81fc7c2455deb113c9b32b135468",
      "tree": "a7c275b861fd66017002efa82eb25e08e096f652",
      "parents": [
        "6f5cc45c48c02173bfae8d54b54a92c9bae256a1"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Nov 21 16:51:47 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Nov 21 17:48:19 2011 -0800"
      },
      "message": "SurfaceMediaSource: use the vid enc usage bit\n\nThis change makes SurfaceMediaSource add the VIDEO_ENC usage bit when\nallocating its GraphicBuffers rather than the HW_TEXTURE bit.\n\nChange-Id: Ie20e225c894fdbc31cad6bb82b3b64c7e98074eb\n"
    },
    {
      "commit": "e8e5f86e9e310b065596c8cbbca1543eb833dee1",
      "tree": "9093e89f8a7bf9544061fdfbe52383ae314e28b4",
      "parents": [
        "6f5cc45c48c02173bfae8d54b54a92c9bae256a1"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Nov 20 09:45:44 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Nov 21 12:09:51 2011 -0800"
      },
      "message": "Fix log spamming during time lapse video recording\n\nChange-Id: I4fc0809203684ebb02eaf217d7abad00aefc898f\n\nrelated-to-bug: 5626569\n"
    },
    {
      "commit": "863992ab17511fb2550f0347b59065066dd6f8b5",
      "tree": "419f5ded9a1413ccaa49abedd1cb6289a3489480",
      "parents": [
        "6402ec10dfa1687a147c94167dc66051ca27bb87",
        "6f5cc45c48c02173bfae8d54b54a92c9bae256a1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 18 15:10:38 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 18 15:10:38 2011 -0800"
      },
      "message": "am 7ff7821a: am d4b22ab4: status_t !\u003d bool\n\n* commit \u00277ff7821a601a39fffb318e29873957b4a3703c46\u0027:\n  status_t !\u003d bool\n"
    },
    {
      "commit": "6f5cc45c48c02173bfae8d54b54a92c9bae256a1",
      "tree": "8f79a2e61ce7f69d24918e19d7a232ff12b252b3",
      "parents": [
        "6479b955d21707609eae70008cf7956dddf12371",
        "91e2c7d2988c4947aca8a637f88a2179d905b970"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 18 15:07:21 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 18 15:07:21 2011 -0800"
      },
      "message": "am d4b22ab4: status_t !\u003d bool\n\n* commit \u0027d4b22ab4889f9b1885bfc0dc45667c846a171a98\u0027:\n  status_t !\u003d bool\n"
    },
    {
      "commit": "91e2c7d2988c4947aca8a637f88a2179d905b970",
      "tree": "d73196fde1d16c5dbc71ca1f2b064db3883785d7",
      "parents": [
        "fd8f534c7389e8215671a36a02c4666321f8816d"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 18 13:10:56 2011 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 18 14:21:34 2011 -0800"
      },
      "message": "status_t !\u003d bool\n\nb/5567433\n\nChange-Id: I255ab8c3b0b5e0ea6a5cc7c05df757c667f3855e\n"
    },
    {
      "commit": "71b61a960ae30df990976ca5dbe780d85a15b0d1",
      "tree": "b8a9826f9287872f217be9cbb8d48b18ad2b234d",
      "parents": [
        "6479b955d21707609eae70008cf7956dddf12371"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 18 12:22:59 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 18 12:22:59 2011 -0800"
      },
      "message": "Report a runtime error instead of asserting on malformed avc configuration data.\n\nChange-Id: Ibcd9c3fb5b6532eba843ed80ecdcdacaf50d8845\nrelated-to-bug: 5641069\n"
    },
    {
      "commit": "6402ec10dfa1687a147c94167dc66051ca27bb87",
      "tree": "d509db0206209d1161cd394bd2a0af18ba20abc4",
      "parents": [
        "8964aadebe10e872b078f0821389b00cd5ec4e87",
        "6479b955d21707609eae70008cf7956dddf12371"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 17 09:07:48 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 17 09:07:48 2011 -0800"
      },
      "message": "am c1b1709b: Merge \"Make sure not to cancel pending seek/EOS notifications on a cache underrun...\" into ics-mr1\n\n* commit \u0027c1b1709b2faa985fb9c2b273ca2191b5bfba5fdd\u0027:\n  Make sure not to cancel pending seek/EOS notifications on a cache underrun...\n"
    },
    {
      "commit": "6479b955d21707609eae70008cf7956dddf12371",
      "tree": "caa611bce19db70a90586d6caa93bcf4ca6ec6ff",
      "parents": [
        "7b81bc3b06bcf0a6d571d08453751987106df46f",
        "c34233e673c9791e137456d0c427d58db184b690"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 17 09:05:17 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 17 09:05:17 2011 -0800"
      },
      "message": "Merge \"Make sure not to cancel pending seek/EOS notifications on a cache underrun...\" into ics-mr1"
    },
    {
      "commit": "c34233e673c9791e137456d0c427d58db184b690",
      "tree": "caa611bce19db70a90586d6caa93bcf4ca6ec6ff",
      "parents": [
        "9621addc73c029e77fd3d50f38a34f8f264b6e38"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Nov 16 10:46:05 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Nov 16 10:46:05 2011 -0800"
      },
      "message": "Make sure not to cancel pending seek/EOS notifications on a cache underrun...\n\nor they are lost for good.\n\nChange-Id: I2f9f53efb05db4077961137c9dc8c27edac4ec62\nrelated-to-bug: 5544907\n"
    }
  ],
  "next": "8964aadebe10e872b078f0821389b00cd5ec4e87"
}
