)]}'
{
  "log": [
    {
      "commit": "30fd2a331f7b35c14e7cd696216967891cc8ebce",
      "tree": "19eff7317a6601888d6b905fa25cd45c42d1d112",
      "parents": [
        "f71e669f517963661e1d7286ce91e36edf3a7f86"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Thu Feb 21 20:06:04 2013 -0800"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Sun May 26 21:52:22 2013 -0700"
      },
      "message": "libstagefright: Squashed audio fixes from CodeAurora\n\nlibstagefright: Return seek position until seek has been processed\n\nIf it so happens that the client to TunnelPlayer (e.g. AwesomePlayer)\nqueries for the current time before data from the new seek position\nis given to the compressed driver, we need to return the seek position\n\nChange-Id: If709e61f67cc8e81d34c14d19145dc61ecd82c2b\nCRs-Fixed: 454825\n\nlibstagefright: Use 64 bit offsets only when needed.\n\nFor enabling \u003e2GB recording, 64 bit offsets are\nneeded for file writing. So, this feature was turned\non by default. This in turn increased the file size.\nWith this change, by default this feature will be\noff and turned on only when required.\n\n- Use 64 bit offsets for resolutions \u003e\u003d 720p.\n- Limit maximum file size for recording to 4GB.\n- Set max file size only if no value is set from the client.\n- Fix MPEG4Extractor to use 64 bit offsets\n\nCRs-Fixed: 273144, 285785, 288319\n(cherry picked from commit 04476a3fb89dfbb025f7852dd4d62cae72385f1a)\n\nChange-Id: I00af2c7cddbbf86c566fe4bb989fe728ca06dd19\n\nlibstagefright: TunnelPlayer sync fix\n\n- Allow close on the AudioSink to be called from\n  the extractor thread and the application thread.\n- This fixes a race condition where an onPauseTimeout\n  event scheduled from the main thread closes the\n  audio sink while the extractor thread was about\n  to issue write() on audio HAL. (note: on HAL, not audio sink)\n\nChange-Id: I22a5c655dfcb40f3cbda3765dc23ad8e6f99c9bb\nCRs-Fixed: 443205\n\nFrameworks/av: Fix to prevent deadlock in AudioEffects\n\n-Write is blocked waiting for effect chain lock and this causes\ndecoder thread to wait indefintely.\n-Sometimes it is observed that effectschain is locked before\nmLPAEffectChain is initialized and but unlocking is skipped if\nmLPAEffectChain is initialized in between.Due to this LPA\nsilence and framework reboot issues are observed as\napplyEffectsOn() cannot acquire lock to progress further.\n-Use flag to check if all effects have been locked and unlock\naccordingly to prevent the deadlock scenario.\n\n(cherry picked from commit 011db22abf565dfbe7f9d0a5c7af7564587b3b48)\n\nChange-Id: I82cfdab045ecf077f0ba0185fc693fc623fa10db\nCRs-Fixed: 435661, 435664, 435680, 430309\n\naudio: Use tunnel player only for music stream\n\n- Check stream type before creating tunnel player to\n  use tunnel player only for STREAM_MUSIC\n\nChange-Id: I6e4b58524e61441ad2e09499bd9187c6dd56cd3d\n\nframework/av: Fix for audio recording test through CTS\n\n- Issue: Failure in stop is observed with the audio recording test\nthrough CTS.\nTestScenario: When the audio record test is initiated in the CTS\nconsole, the recording session is force closed with a notification\nFile Size limit exceeded. Further, the stop fails with the same\nmessage(notification of the File size exceeded error).\n\n- Cause: The calculation of nTotalBytesEstimate for the recording\nsession exceeds the limit 95 percent of mMaxFileSizeLimitBytes.\nAs a result of size deficit, the recording is stopped at the\nbeginning of the recording session notifying\nMEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED.\n\n- Fix: The factor size used in the calculation of nTotalBytesEstimate\nhas been updated properly for 64bit file offset setting. The\nsetParam64BitFileOffset in StagefrightRecorder::prepare() is executed\nbased on two additional validations so that the factor size is updated\nappropriately.\n\nChange-Id: I4749ce8f9735ccc9e1d9e49718c36470837ab27f\nCRs-Fixed: 396057\n\naudioflinger: apply volume on direct track when track is active\n\nDuring back to back tunnel playback, we encounter a race condition\nwhere setVolume can be called when the track is not updated to\nactive state. Fix to apply the volume on direct track only when the\ntrack is in active state.\n\nChange-Id: I70c289fbf8a9266bae0bd01b04be9f43ad32c70d\nCRs-Fixed: 464148\n\nLPAPlayer: Update condition to ignore seek\n\n- Reject seek if the new seek time is greater than the current\n  position and within an empirical limit (default 60ms).\n- This limit must be measured for each target.\n\nChange-Id: I86b44679fb5fe442bb5adb510c62514f6be3d304\nCRs-Fixed: 453067\n\naudioflinger: for DirectAudioTrak, call startOutput before stream is active\n\nFor LPA and Tunnel playback, when resume is done in paused state, before\nstarting actual playback, volume should be set through AudioPolicy command\nthread.\n\nChange-Id: I7ee1098058c01a35a3e7181d3b291304abf3cac1\nCRs-Fixed: 464348\n"
    },
    {
      "commit": "f71e669f517963661e1d7286ce91e36edf3a7f86",
      "tree": "03ad1567b62e2ccda24dc883cd41a427f6897c29",
      "parents": [
        "cff7870e0c4c8dc23a765d7f5a6eef651f36d622"
      ],
      "author": {
        "name": "Steve Kondik",
        "email": "shade@chemlab.org",
        "time": "Mon Apr 08 02:24:19 2013 -0700"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Sun May 26 21:52:12 2013 -0700"
      },
      "message": "Silence error when DASH player isn\u0027t present\n\nChange-Id: I9e5c22af1a5cf916b0efaec7ca1c5f48f6d0c82a\n"
    },
    {
      "commit": "84f109bca45509828f14867f65faa3e7b9e65e43",
      "tree": "f6272d3a4cf438ec9918cc2cdedde260d1812287",
      "parents": [
        "2430257fb7fe62d01e9c083f122b62b5187759b6"
      ],
      "author": {
        "name": "Mingming Yin",
        "email": "mingming@codeaurora.org",
        "time": "Thu Dec 27 17:43:05 2012 -0800"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Sun Mar 24 23:53:54 2013 -0700"
      },
      "message": "qcom-fm: audio: add support for FM feature\n\nChange-Id: Idd5c7a0364710d54809ef5d4c7b2404b22dc4cf6\n\nConflicts:\n\n\tinclude/media/IAudioFlinger.h\n\tmedia/libmediaplayerservice/StagefrightRecorder.cpp\n\tmedia/libstagefright/Android.mk\n"
    },
    {
      "commit": "200179149e3c5c618e5d3250a8f318014600e564",
      "tree": "b0fc398148b401ddac852bf11904255066c6b029",
      "parents": [
        "932e38d173dcefe09286111e6ca64707d7f8af70"
      ],
      "author": {
        "name": "Ravishankar Sarawadi",
        "email": "crsaraw@codeaurora.org",
        "time": "Wed Feb 27 18:47:54 2013 +0100"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Sun Mar 24 12:34:33 2013 -0700"
      },
      "message": "audio: Subsystem Restart changes\n\n - Handle new ADSP status parameter\n   - media/libmedia: Add new ADSP status audio parameter\n   - framework/av: Add handling of new key-pair value in\n     Audio Flinger\n\n - Handle Tunnel mode SubSys Restart\n   - framework/av: Post SSR event to Audio Flinger\n   - media/libmedia: Post SSR event to AudioTrack\n   - media/libmediaplayerservice: Post SSR event to\n     MediaPlayerService\n   - media/libstagefright: Post SSR event to TunnelPlayer\n\nChange-Id: I8c8385af45be91caf7d7160ab2e0236d6591b159\n"
    },
    {
      "commit": "f32d5707d4971ca7755712ad95a5b6155099560b",
      "tree": "e2b0e8082c7e4d99d11796b3c3ec9a4a44a19ce6",
      "parents": [
        "bca52a9e48563198e8425c0f0a6fd2b2d998c87e"
      ],
      "author": {
        "name": "Dorian Snyder",
        "email": "dastin1015@gmail.com",
        "time": "Fri Mar 01 14:25:46 2013 -0800"
      },
      "committer": {
        "name": "Dorian Snyder",
        "email": "dastin1015@gmail.com",
        "time": "Fri Mar 01 15:19:37 2013 -0800"
      },
      "message": "frameworks/av: squashed CM commits\n\nRevert \"av: unbreak mako build\"\n\nThis reverts commit bca52a9e48563198e8425c0f0a6fd2b2d998c87e.\n\nRevert \"Fix mako build.\"\n\nThis reverts commit 3e8a2aef873001f4e168d738f596899ba8673ab8.\n\nRevert \"stagefright: Fix tunnel mode ifdefs\"\n\nThis reverts commit d9e8f7a8e085b121e0bc6518c3cf3f9a0b3e6f48.\n\nRevert \"Revert \"libstagefright: Convert mono to stereo for LPA clips\"\"\n\nThis reverts commit 93319b90415114286ee96b01a65df35f30b78aa0.\n\nFix the build on non-QCOM\n\nChange-Id: Idb8d5c98fbdc01e6063ad0eb224baba66acc813d\n\naudioflinger: Allow mixed use of JB A2DP HALs and ICS policy\n\nOld policies don\u0027t address the modules by handle and expect them\nall to be scanned for supported devices; new modules stopped\nlisting supported devices. The combination of a new A2DP with\nan old policy left policy unable to find A2DP outputs, so the\nnew HALs couldn\u0027t be used.\n\nSo... if an old policy is in use, searching for an A2DP output,\nand finds a non-primary HAL that doesn\u0027t list any device, assume\nit\u0027s A2DP and use it.\n\nChange-Id: Ie946c065b5c325afd02ba3437077f634e079b386\n\nframeworks/av : Playing AAC and MP3 clips using LPA.\n\n-AAC and MP3 clips are not playing.\n-AAC and MP3 are not using LPA path.\n-Enable LPA decoder path and implement LPAPlayer class.\n\nChange-Id: I76438319fc72c4898fad5910f8de874f89287687\n\nRevert \"libstagefright: Convert mono to stereo for LPA clips\"\n\nChange-Id: Ib6cc3401c889a8ec52dc83e3bea367f94a582a40\n\nFix mako build.\n\nChange-Id: Ic73cb2f4152ac77a83fcda7e89b4a8202df440c6\n\nstagefright: Fix tunnel mode ifdefs\n\n * Was breaking on 8660 due to previous commit.\n\nChange-Id: Ia9f5c45552cc933db336a66b6d1214b65e810488\n\nlibstagefright: Adjustment for TunnelPlayer buffer size\n\n- Make necessary adjustments to align the buffer size\n  for TunnelPlayer to satisfy the following conditions\n- Buffer size is a multiple of LCM(1,2,4,6,8)\n- Buffer size is aligned to 4k.\nCRs-Fixed: 447274, 442365\n\nChange-Id: I1b7f9ac3cf8ff86f972a8b6798bfcff3a4ba7c64\n\naudio: apply volume on DirectOutput streams\n\n- Call stream-\u003eset_volume to apply volume on\n  particular stream of DirectOutputs\n\nChange-Id: I98e3b856ee508d407f893afad66caade5eda3e4a\nCRs-Fixed: 445953\n\nlibmediaplayerservice: Add new player for DASH\n\n- Add new player factory to support dash playback.\n- DASH urls end with .mpd. When media player receives\n  an url with .mpd, it will use new factory to instantiate the player\n  to be used for supporting DASH playback.\n\nChange-Id: I69e5a08fb2baf89d97b1e0711dbe52a8b1c39c29\n\nACodec: Support for dynamic port reconfig\n\n- On port settings changed first flush output port\n- Move ACodec to new state called FlushingOutputState\n- Flush all output buffers, wait till all decoded buffers\n  are rendered\n- Then disable output port, and allocate output buffers\n  with new resolution, and reset native window\n\nChange-Id: Iafa266371ed2a87b909fbcb4eeae6b64208df617\n\nlibstagefright: Add support for frame-by-frame mode\n\n- Set decoder in frame-by-frame mode always, except for interlaced\n  content, for which arbitary mode should be set\n\nChange-Id: I8195a40549898b43a0e03d65663c7148f458c448\n\naudioflinger: Fix to set correct volume in Tunnel playback\n\n- After a pause and resume, tunnel playback volume is always\n  set to maximum irrespective of the volume value before pause.\n- The cause for this is, the stream volume is not used to set\n  the volume in directaudiotrack.\n- Fix is to use the stream volume to set volume during tunnel\n  playback.\n\nChange-Id: I59cda146ed88bd5c4186aeb9ae5d165f4a27493f\nCRs-fixed: 452285\n\nlibstagefright: Check for duration \u003e 0 to avoid DivideByZero crash\n\n- duration \u003d 0 can cause divide by zero and for this clip duration\n  is indiacted as 0.\n- check for duration \u003e 0 rather than duration \u003e\u003d 0\n\nChange-Id: I58ccacbf7ede892dff9626715162ea7b1f2ddbc6\nCRs-Fixed: 451855\n\nlibstagefright: Squashed commit of LPA/tunnel updates from CAF\n\nlibstagefright: Exceptions in using Tunnel mode decode\n\n- Accumulate all known exceptions to a separate function\n\nChange-Id: I61bbc288c9a087559db210e76141b8c57e67fff0\nCRs-Fixed: 432080\n\nlibstagefright : Stability fixes for Tunnel Player (part 2)\n\n- Synchronize b/w reset() and onPauseTimeout\n- Synchronize b/w seekTo() and onPauseTimeout\n\nChange-Id: Ia5cfc6b4dcc326ead440fba35d809d4f3f1b5a81\nCRs-Fixed: 449122\n\nRevert \"Revert \"libstagefright: Convert mono to stereo for LPA clips\"\"\n\nThis reverts commit 0db8a19fb3216a8a83d5d6cbd5f1ccbf997a20d8.\n\nlibstagefright: Port Tunnel mode fixes to LPA\n\n- Miscellaneous fixes for seek, pause/resume, EOS handling\n- Miscellaneous fixes for synchronization between the decoder thread,\n  TimedEventQueue and the player thread.\n- This change is a port of a similar set of changes made for\n  TunnelPlayer\n\nChange-Id: I82c2904f7aedfb9c4f03200419fcba8b038e3d54\n\nlibstagefright: Avoid use of extra bytes to signal seek processed\n\n- A few bytes were reserved in the buffer sent by Tunnel/LPA\n  player to audio HAL to indicate a seek has been processed and\n  there is no need to skip it.\n- We won\u0027t need this method anymore as this can be fixed instead\n  by synchronizing seekTo() and the extractor/decoder threads.\n\nChange-Id: Ic02ae1699bb59e2f6b8d9fb599d0fa43fd3f19e3\n\nlibstagefright: LPAPlayer synchronization fixes\n\n- synchronize b/w seekTo() and onPauseTimeout()\n- synchronize b/w reset() and onPauseTimeout()\n\nChange-Id: I29a4ccf02e28fe7b7c00e35a679ff2b5271ffb6f\n\nlibstagefright: TunnelPlayer performance tweaks\n\nSome tweaks when TunnelPlayer is used for audio/video playback\n\n- Keep the extractor thread at ANDROID_PRIORITY_NORMAL\n- sched_yield() after reading a frame to give the video thread(s)\n  (CallbackDispatcher and/or TimedEventQueue) to be scheduled\n\nChange-Id: If0d86d629fd0e15aff917af8589472578cd28bf4\nCRs-Fixed: 444041\n\nlibstagefright: Fix incorrectness nPortIndex value for QueryCodec\n                The query index is wrong, it will make a death loop in\nmy ME722 when get resource thumbnail for MPEG4 video.\n\nChange-Id: I64532156e762b847a8eae59560fb828549c29519\n\nlibstagefright: Stop the logspam from LPAPlayer\n\nChange-Id: Id6319774806e152333d468b9ff62d148e476555a\n"
    },
    {
      "commit": "b96612ab52d686f90a3c173b24e47cf6ae11f222",
      "tree": "08dd3c184d1cbf4e9d1752b2a08a6f39f9af30ea",
      "parents": [
        "7d4490fbc48fb1989b0b8cbca45f96f031d62c35",
        "f0ff908da019a44115109f1b4d1b6864b35a8a29"
      ],
      "author": {
        "name": "Andrew Sutherland",
        "email": "dr3wsuth3rland@gmail.com",
        "time": "Wed Feb 13 02:04:06 2013 -0600"
      },
      "committer": {
        "name": "Andrew Sutherland",
        "email": "dr3wsuth3rland@gmail.com",
        "time": "Wed Feb 13 02:04:06 2013 -0600"
      },
      "message": "Merge tag \u0027android-4.2.2_r1\u0027 into jb422\n\nAndroid 4.2.2 release 1\n"
    },
    {
      "commit": "bd55ff5923f3263daf71aaa4049c289ef7ee52d0",
      "tree": "562336e592618227da92ea4c0318592416e6e4d1",
      "parents": [
        "fe25748f78eb0043302acb30cf1f473e7af467d2"
      ],
      "author": {
        "name": "vivek mehta",
        "email": "mvivek@codeaurora.org",
        "time": "Tue Dec 18 14:55:24 2012 -0800"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Tue Jan 01 16:15:38 2013 -0700"
      },
      "message": "Squashed commit of updates from CodeAurora\n\nlibstagefright: Add support for VC1 clips\n\n- configure decoder in frame-by-frame or arbitrary mode\n  based on the codec type.\n\nChange-Id: I6404e5b7ee217045e6456f51f914dbd8a651d98a\nCRs-Fixed: 432847\n\nstagefright: Miscellaneous fixes for LPA and Tunnel playback\n\n1. Fix for AV sync issue with Tunnel playback\nAPIs for returning correct timestamps were implemented\n2. Crash while exiting TunnelPlayer\nCheck whether sink is open before flushing or closing it.\nCheck for mIsAudioRouted is good to know if we are closing it\n3. Seekbar freezes after seek and pause\nCheck pause status before writing\n\nChange-Id: Id8ab7b258e9c05b20e121bdf3c4dc30d519f6c15\n\nframeworks/av: Add support for surround sound recording\n\n- Add 5.1 channel as supported input channel\n\nChange-Id: I50fcd87245c5c855ede8f09ea1a7c5be2e684640\n\nstagefright: Add tunnel decode for amr-wb/wb+\n\nWhen tunnel.decode is true, playback of AMR-WB\nand AMR-WB+ uses tunnel decode.\n\nChange-Id: Ic06cb3faaac18f605402c98a27cb4dfa4b7faee2\n\nstagefright: Skip LPA if #channels \u003e 2\n\nSkip LPA for Multi channel playback\n\nChange-Id: I5b97471ef55aea260d1c02db672eb4bd64c3edef\n"
    },
    {
      "commit": "2192bc9d9f43ed639239641c186fdcd554d63113",
      "tree": "bde3a85a9d5aff18a8d38a0c4429fb737816b69d",
      "parents": [
        "c81084cb4c2f0ccf1ff996906595f7668a5decd0"
      ],
      "author": {
        "name": "vivek mehta",
        "email": "mvivek@codeaurora.org",
        "time": "Tue Dec 04 11:46:08 2012 -0800"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Mon Dec 24 21:00:15 2012 -0700"
      },
      "message": "Squashed commit of audio changes from CodeAurora\n\nlibstagefright: Add QC specific media format\n\n- Add QC specific media extensions\n- Add QC specific media definitions\n\nChange-Id: I7dca90be3b977701d9537f5e017117790a030f1f\n\naudio: Compile AudioParameter as shared library\n\n- AudioParameter as shared lib is needed by BT\n  support in WFD source.\n\nChange-Id: I464b428ace0cbb57ce6bf7bf3b57d51a7d56f032\n\nlibstagefright: Send flush on both i/p and o/p ports together\n\n- ANR occurs in music due to race condition in OMX component if\n  flush is issued separately for i/p and o/p ports as DSP only\n  handles simultaneous flush on i/p and o/p ports.\n\nChange-Id: I5b16cd5a9b57c857dc8bed489d2663b8f54769e3\n\nlibstagefright: Enable extended A\\V format\n\n- Add new files to support extended A\\V format\n\nChange-Id: I1e61d78d35b868d55fd8e99f95de8cab9c465db4\n\nlibstagefright: Framework to plug-in propritory parser\n\n- Extend the current framework to plug-in propritory\n  parser\n\nChange-Id: Ia586a3048420ddf1515261f20035589447263b7b\n\naudio: add support for QCOM audio formats\n\n- Add support for EVRC, QCELP, and WMA formats.\n\nChange-Id: Iaf80f982fc8b08617132dbd7d524a1748866745c\n\nframeworks/av: Support Tunnel Playback\n\n- Implement DirectTrack and DirectTrackClient\n- DirectTrack exposes API to client so it can create a direct\n  output.\n- DirectTrackClient allows notifications to be sent to the\n  client from DirectTrack\n- DirectTrack is being used for Tunnel Audio\n\nChange-Id: I2fbb18a781d8e44b8d65da9a357f6e39375f063a\n\nframeworks/av: Support LPA Playback\n\nAdd support to enable Playback in LPA mode\n\nChange-Id: I1b8ac4904f4735017d62f3757ede7bbb56e62fd3\n\naudio: Send correct channel mask in voice call recording.\n\n-Using popCount function to get channel count gives incorrect value on\nvoice call recording.\n-Only STEREO and MONO bits to be considered to count\nchannels on input\n\nChange-Id: I04c2c802422e868bdba0538ff8623dbf9eb659fe\n\nlibstagefright: Thumbnail mode initial commit\n\n- use sync frame decoding mode when kClientNeedsFrameBuffer\n  is set for hardware decoders\n- hardware decoder will only expect I frames, OMXCodec will\n  set EOS on first ETB to stop more frames from being pulled\n- skip EOS check on FTB so that the first frame will be\n  handled\n\nChange-Id: I0e8974e088fdcc468e27764861c128cfe291499f\n\naudio: Add support for QCOM\u0027s VOIP solution\n\nChange-Id: I1150f536fa204b535ca4019fdaa84f33f4695d93\n\naudio: define QCOM audio parameters\n\n- Define QCOM audio paramters for FM, VOIP,\n  fluence, SSR, and A2DP\n\nChange-Id: I29d02e37685846f6d4f00dee02e2726b015eaae7\n\nAdd ifdefs for QCOM enhanced features\n\nChange-Id: Ic8e5fe6ecc058466ced71030883b1af6c2bc055c\n"
    },
    {
      "commit": "5131d127a042ee88f903370be88845dc8c9f8578",
      "tree": "b6c2153d94a2dd57b8dfaaa12742c60c4fec0187",
      "parents": [
        "79c56d3f17d3193a0a86eb3c9bfdea90b89ae3f9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Nov 16 10:38:11 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Nov 29 10:33:51 2012 -0800"
      },
      "message": "[wfd] Support a low(er) power state by triggering PAUSE/RESUME.\n\nChange-Id: Ibe42bfa73816bbfeb7e652d435254d0171b89727\nrelated-to-bug: 7638150\n"
    },
    {
      "commit": "b7c8e91880463ff4981e3e53e98e45d68e2fe374",
      "tree": "3de921dd21aa2f4899487d3c56e4bfd28f4c004f",
      "parents": [
        "41829f30e60cdb7ae8eb1f0266834d245164f70e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 27 15:02:53 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Nov 27 15:50:08 2012 -0800"
      },
      "message": "Add support for HLS playlists of type \u0027event\u0027.\n\nrelated-to-bug: 6870049\n\nSquashed commit of the following:\n\ncommit eee2f3ba6bb7335f4e285632726db85645669929\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 15:02:01 2012 -0800\n\n    Make everything a lot less verbose by default.\n\n    Change-Id: I884d7a7901aa1e7d4ff590f065ca57a79d2af8b3\n\ncommit 6bbdb837ed5bd88008e45efb8faf595e4051ba26\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 14:34:46 2012 -0800\n\n    HLS now properly signals media time changes at discontinuities including\n\n    the start of playback (which may not necessarily be at time 0 if the playlist\n    is of type \u0027event\u0027 and hasn\u0027t completed yet).\n\n    Change-Id: I5ab747d024f9b8d0df72a4e06a12ebb29f62802e\n\ncommit 1555589832b1878a144a976a643e1af4d61f877c\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 14:32:28 2012 -0800\n\n    As part of a time discontinuity, clients of IStreamListener can now\n\n    signal the corresponding media time after the discontinuity, i.e. the first PTS\n    timestamp following the discontinuity will be considered equivalent to the\n    specified media time and media buffers timestamped accordingly.\n\n    Change-Id: Id7db7679b7faa6efd6270620ff52e34e884f3e92\n\ncommit 5c24c605c073a11c426d025b1e7478fc1ad8365a\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 13:00:56 2012 -0800\n\n    NuPlayer sources now expose flags() and can announce\n\n    that duration may change (increase) dynamically, in which case duration\n    will be polled at 1 second intervals and communicated to the upper layers.\n\n    Change-Id: I45102909b7a19eed0dda576747e3814d742a0eea\n\ncommit ecb71de8e281e61971a2cd73e7161a97540bc357\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 12:57:47 2012 -0800\n\n    Stop caching duration in MediaPlayer, duration could increase dynamically.\n\n    Change-Id: I7bb2f16c0abe49debdf45c776d2266aa069d7791\n\ncommit 544aec5823e6d7a3e97e15b6b23546616bcd343e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Tue Nov 27 08:46:28 2012 -0800\n\n    An attempt to add support for \"event\" style HLS playlists.\n\n    Change-Id: I3dfb2e801ecaff8f5d8bdb3a4fca1b18aeeb2c60\n\nChange-Id: I48cf7f65a654d33f2f49ded74f8be22aed9e3b98\n"
    },
    {
      "commit": "b4a55269a5b39c73de2cc1d4013d0631ef18c77d",
      "tree": "e83e04aa7c3d53957be6b8c4e3cdf0ed94f6bf1b",
      "parents": [
        "a14be59340219c47639ec77a352d2af362551a6f"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Oct 11 20:28:50 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Oct 11 20:28:50 2012 -0700"
      },
      "message": "Fix some missing checks against missing codecs\n\no related-to-bug: 6971073\n\nChange-Id: Ia6d926663231f9a9ef31c82c85c70595c4a30ebe\n"
    },
    {
      "commit": "ef7d3793fa9bbfb25253626ede9a020ee9280a17",
      "tree": "294e3f0459595612c4b7ae4865e396147ebb0754",
      "parents": [
        "e399acc9d9f3b7af72106c4209e4bb40de37aa6a"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Sep 27 14:13:05 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Sep 27 14:25:18 2012 -0700"
      },
      "message": "Cleaner Wifi Display shutdown process, avoid crashing HDCP on exit.\n\nChange-Id: Ie54ee3edd672ec629360b4ecc5df2f85ecbaa45f\nrelated-to-bug: 7247584\n"
    },
    {
      "commit": "207e18540fefbaf530a4fdf506d266f34ddec84f",
      "tree": "d8e7d7db4c874aabfe35c5fdd4a5dcf7bf72047d",
      "parents": [
        "086f958a7e539acffb637b42f5a6998184544179"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Sep 20 16:00:17 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Sep 21 09:24:08 2012 -0700"
      },
      "message": "Remove legacy code and APIs in wifi display related code.\n\nChange-Id: Ia010e7a00534f9356b3247369d0ffd65591d91aa\n"
    },
    {
      "commit": "efbb781c15abf8e085f5ab8d39710bd58ea0b6e4",
      "tree": "a2f28698970fc1b62495cee5d617e1037a0a957d",
      "parents": [
        "74e58c55bc5259b957a51f1bb44a5911ad1f8400"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 18 10:36:32 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 19 09:28:08 2012 -0700"
      },
      "message": "HDCP module binderized\n\nChange-Id: I866768b1e3f3b232f1934a35b65f66befc12f3f6\n"
    },
    {
      "commit": "376074ed1c3c368aeb336954a07632cd806288e2",
      "tree": "0e3fed53f5ab460e1a65a18a8826af1deea0267f",
      "parents": [
        "b845c6b0c3066d6791973be830f0953477461a65"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Sep 14 15:34:35 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Sep 14 15:34:35 2012 -0700"
      },
      "message": "Fixed a native crash due to deref of a NULL pointer\n\nWe only checked the mNativeWindow against NULL, but did not check the native window object itself against NULL.\n\no related-to-bug: 7153683\n\nChange-Id: I430d344dc09a2fc337bf51001551627056713773\n"
    },
    {
      "commit": "e1957358f11031a554c57d4fb46988dd6044acc1",
      "tree": "8a8febee16aa13e79e3bcebbb09d2ad68ada05f0",
      "parents": [
        "8a9e791c0642084c1c6e758b7887b274392f5bb0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 12 10:19:54 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 12 10:19:54 2012 -0700"
      },
      "message": "Various improvements to the wifi display implementation.\n\nUsing a MediaPuller now, audio and video on their separate threads.\nNo more flushing the RTP stream on audio tracks, since it wastes too much\nof a full size UDP packet.\n\nChange-Id: I53346b4aea739c3142da13bd179428503a3c98b0\n"
    },
    {
      "commit": "b019250df516e094b0cb648851f9a132b045378a",
      "tree": "dacb7de5f5f683a1c33fed69f6e78b9cb90e5b44",
      "parents": [
        "5e54e0898a0110642df126238227eca150f2654a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 07 17:38:58 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 07 17:39:35 2012 -0700"
      },
      "message": "Add a permission for controlling wifi display.\n\nChange-Id: I321b6c1a0223e0c3d5df04fde7a13ab91c08c7bc\n"
    },
    {
      "commit": "2e5f22e85d177b34e790f832789d03aee438a7db",
      "tree": "1e41eb4b82919725fcab038d5c158189ef9abf63",
      "parents": [
        "c56857b4cd12cd4bc3361e375f5b7554277ce9d7"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Aug 24 14:47:25 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Sep 06 12:33:35 2012 -0700"
      },
      "message": "Add a small hook to support gapless in AAH.\n\nChange-Id: Ie07eca6b45142bdd83412ee0e38d732a4c355630\n"
    },
    {
      "commit": "49c74da132fe42dd4d2066131f8f0e2df301c1dd",
      "tree": "da319566144a2dfcc05d9551e1f889fa97c2f0bb",
      "parents": [
        "e148910dfb3f69cdf1a078066724cb32b18e7b8a",
        "455d02eca342d8159637af317a5d83219d267812"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 06 10:15:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 06 10:15:31 2012 -0700"
      },
      "message": "Merge \"Update remote display API.\" into jb-mr1-dev"
    },
    {
      "commit": "74262b573c3d87c323c41d364af12f206ae46642",
      "tree": "a17344ca14fc66db9755289e8a86827de6e0909c",
      "parents": [
        "9c6cb7a896f41cb8ad2f2ad63f8f6edfbb56ed4f",
        "5c5f8d93667ec36fbcd01ecb113ccae78322c85b"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 05 19:19:23 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 05 19:19:23 2012 -0700"
      },
      "message": "Merge \"To support .mxmf which is specified in Android CDD.\" into jb-mr1-dev"
    },
    {
      "commit": "455d02eca342d8159637af317a5d83219d267812",
      "tree": "2c8a516e25ac9866d681021cd138b582a9f76bba",
      "parents": [
        "0b73d4730202fcad53aefc4314a06e7b95f442f0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 05 17:48:03 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 05 17:48:03 2012 -0700"
      },
      "message": "Update remote display API.\n\nRenamed disconnect() to dispose() to emphasize the fact that\nthis method is intended to clean up the IRemoteDisplay\ncompletely, not just temporarily disconnect the current client\n(which might be useful someday).\n\nOther minor tweaks.\n\nChange-Id: I1209639eb0cd8af09c724206642d7e52aab48257\n"
    },
    {
      "commit": "9c6cb7a896f41cb8ad2f2ad63f8f6edfbb56ed4f",
      "tree": "6c8b0cf1e55f5f778ecfb92b78a7286e82881f02",
      "parents": [
        "0b73d4730202fcad53aefc4314a06e7b95f442f0",
        "56997121c5031598fbbba7b7c53980b7fd529c2d"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 05 16:22:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 05 16:22:17 2012 -0700"
      },
      "message": "Merge \"Fragmented mp4 extractor\" into jb-mr1-dev"
    },
    {
      "commit": "56997121c5031598fbbba7b7c53980b7fd529c2d",
      "tree": "14e4e9aecfe88d071fce9255dc6be21f8b4c4a0c",
      "parents": [
        "6c75ad21705cde0a11f78c755dc70bdec76890e6"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Aug 28 15:09:49 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 05 14:22:07 2012 -0700"
      },
      "message": "Fragmented mp4 extractor\n\nStill experimental. Set property \"media.stagefright.use-fragmp4\" to true to\nenable.\n\nChange-Id: I210b9c5b5164b5c5eefc31309845ee881ac7db8e\n"
    },
    {
      "commit": "0b73d4730202fcad53aefc4314a06e7b95f442f0",
      "tree": "49f1e28def31a204301280175e731cd82aebc203",
      "parents": [
        "e104596061b219e9bce6d4db49a9d15242f8d2e5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 05 10:26:52 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 05 10:26:52 2012 -0700"
      },
      "message": "Expose an IRemoteDisplay to trigger wifi display connections setup and feedback.\n\nChange-Id: I7602cda0e38073c9f0e63fa4de238ca0d4b4ce8e\n"
    },
    {
      "commit": "e104596061b219e9bce6d4db49a9d15242f8d2e5",
      "tree": "d28e83486d2079284c3e04e260fe6a8952d9599f",
      "parents": [
        "6c75ad21705cde0a11f78c755dc70bdec76890e6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 04 21:38:42 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Sep 05 08:47:36 2012 -0700"
      },
      "message": "Implement remote display service stubs.\n\nChange-Id: I582ed000026bba6d116db8304e15a3c52f8a9a01\n"
    },
    {
      "commit": "5c5f8d93667ec36fbcd01ecb113ccae78322c85b",
      "tree": "959f4edded5ec5f86532e6093af7e9ded23c6dfb",
      "parents": [
        "312380331e28b7e5693a4b1646caf2d19aba1b2a"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Wed Sep 05 19:37:13 2012 +0900"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Wed Sep 05 19:37:13 2012 +0900"
      },
      "message": "To support .mxmf which is specified in Android CDD.\n\nBug: 7082658\nChange-Id: I21269d72d1d21627c6adb2e6fbcb078d0eda6020\nTested: checked MediaScanner scans .mxmf and Music app plays .mxmf file.\n"
    },
    {
      "commit": "0d268a3cae145afb2720c88ae38fb81550be5584",
      "tree": "f9867ade7070263e6a521531d1ff4e6624618966",
      "parents": [
        "fbe9d81ff5fbdc5aecdcdd13e4a5d7f019824f96"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Aug 31 12:18:27 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Sep 04 19:00:50 2012 -0700"
      },
      "message": "Add setVideoScalingMode support to NuPlayer\n\no related-to-bug: 7089195\n\nChange-Id: Ic30d9312673f2d5837c779e023ac64468ecd4951\n"
    },
    {
      "commit": "fbe9d81ff5fbdc5aecdcdd13e4a5d7f019824f96",
      "tree": "1c19ca38ef4ec9be83a2be46189a3d6a593a0b81",
      "parents": [
        "7323115c6e55f2da73317d7ff6a69b808d74264e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 14:05:27 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 04 10:41:49 2012 -0700"
      },
      "message": "Support for acting as a wifi display sink.\n\nChange-Id: I0beac87025b93c60164daa865c89f16b72197a47\n"
    },
    {
      "commit": "7323115c6e55f2da73317d7ff6a69b808d74264e",
      "tree": "fae85c605621adcc8cbac9791365ae13517b8928",
      "parents": [
        "312380331e28b7e5693a4b1646caf2d19aba1b2a",
        "87f2a558dd12043631e12c361abef301bf603140"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 04 09:31:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 09:31:12 2012 -0700"
      },
      "message": "Merge \"Improvements to our MPEG2 Transport Stream parser\" into jb-mr1-dev"
    },
    {
      "commit": "312380331e28b7e5693a4b1646caf2d19aba1b2a",
      "tree": "6d2d14f97ba1e3fcdf946e749e248d7125344aec",
      "parents": [
        "cd89e8014368af1bbdfa08406d5d2eb0bbbfcca1",
        "cb1f88c684140ce0eb407049a78f889bc7d51be1"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 31 14:41:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 14:41:47 2012 -0700"
      },
      "message": "Merge \"Move fragmented mp4 parser to libstagefright\" into jb-mr1-dev"
    },
    {
      "commit": "cb1f88c684140ce0eb407049a78f889bc7d51be1",
      "tree": "8aa79ee909d368f934556c12115a6d03e66ba432",
      "parents": [
        "092fe44abd787fcb4377d90c63f2aa7120a4d267"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 31 11:07:37 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 31 14:14:22 2012 -0700"
      },
      "message": "Move fragmented mp4 parser to libstagefright\n\nand rename it from Parser to FragmentedMP4Parser\nChange-Id: I986f50d0c5c93648aac675d6160e18623b031541\n"
    },
    {
      "commit": "87f2a558dd12043631e12c361abef301bf603140",
      "tree": "f8b3896d77e8ba22b3edbcade5d98d0aaa8cde13",
      "parents": [
        "dc91c885f267005e06f439a3bd592b3d8706bb50"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 13:55:24 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 13:55:24 2012 -0700"
      },
      "message": "Improvements to our MPEG2 Transport Stream parser\n\nVerifies the continuity counter\nParses and associates PCR time with streams\nAllows for a absolute time anchor to be signalled via discontinuity.\n\nChange-Id: I4bc88c78382c9cc6380f28df584cc6c254e0a8f9\n"
    },
    {
      "commit": "cfaeeec0900014d97e15829e0fa52f865ee4c786",
      "tree": "d97027786e1326f54d3d687b5e724eb5b7c04a3b",
      "parents": [
        "dc91c885f267005e06f439a3bd592b3d8706bb50"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 10:27:46 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 31 10:27:46 2012 -0700"
      },
      "message": "Add support for mpeg2 transport streams to the RTSP implementation.\n\nChange-Id: I409d7133a53a71e62523b1acc2b03302fcf824a5\n"
    },
    {
      "commit": "bcf09f8c995221e75c7cd328f25c7cc6d2b5f7c9",
      "tree": "12db95dcd0186648022458280b950cf4aa154849",
      "parents": [
        "86b1961a8d61086ef8d5475182f2a3cf4392b42c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 30 14:51:40 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 30 14:51:40 2012 -0700"
      },
      "message": "Only run the wifi display RTSP server on demand, and only on the wifi direct\n\ninterface.\n\nChange-Id: I7d3c44cb79cd40e73499f2d7ccf35c69b628e6d7\n"
    },
    {
      "commit": "d8ee4e56f92eeb44ddc0997efe280b9f28ad814d",
      "tree": "8ae19d56b416a17a218c4c405939acad3fe8cb1e",
      "parents": [
        "f147b722ad2405c7f92ea8691f36b04a82d62bb1",
        "d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 15:29:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 29 15:29:11 2012 -0700"
      },
      "message": "Merge \"Initial checkin of support for acting as a wifi display source\" into jb-mr1-dev"
    },
    {
      "commit": "d7bee3a9d2ad76d073d91f0ee36d5ac5f9df480c",
      "tree": "3c4c7a83313d169b13c79c9660afeb804d27b975",
      "parents": [
        "eb941f9a0c8474324732a99387cc6d8cb4ab01ef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 11:41:50 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 15:06:57 2012 -0700"
      },
      "message": "Initial checkin of support for acting as a wifi display source\n\nChange-Id: I08f17efa0c7d007e17408feb7d4fbef0a19f531a\n"
    },
    {
      "commit": "1b19c9d120869c3182373a9b06a1ed98898df882",
      "tree": "f004f06f4d23698432b71da01873147a8da7c44e",
      "parents": [
        "eb941f9a0c8474324732a99387cc6d8cb4ab01ef"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 11:34:22 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Aug 29 11:34:22 2012 -0700"
      },
      "message": "Preliminary support for HDCP as a binder service for wifi display support.\n\nChange-Id: Ie0de1c086c629a668d1c7863992eef56fb94157c\n"
    },
    {
      "commit": "b8a9825bf0f5c74333b0e4ff5ba7677ac6fd2a25",
      "tree": "4dd56785fc2185f44abff6f257197ca982e4c49b",
      "parents": [
        "96272d57caa39566842795ba1f0605a5a5f72272"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Aug 26 16:13:03 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Aug 26 16:18:11 2012 -0700"
      },
      "message": "Fixed a potential/rare race condtion in MediaPlayerService::Client::notify() method\n\no The mClient could be disconnected before the notify message is sent out. Use\n  a local reference could help resolve this issue.\n\no related-to-bug: 6782035\n\nChange-Id: Ia2047bd7f2666100fed83c6e5417a3bf2e20cd2c\n"
    },
    {
      "commit": "cb0b755efc2cd24703f400729994900bf2117f66",
      "tree": "21d73848006bb14b4de9fcfe56fa0a1befd09868",
      "parents": [
        "9a150640a28d3fa5507a590125a6c004681bb221"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Aug 23 17:47:31 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Aug 23 17:47:31 2012 -0700"
      },
      "message": "Add a missing NULL check.\n\nDon\u0027t crash if its time to start the next media player in a media\nplayer chain, but the current player\u0027s client has a NULL mAudioOutput,\nas is the case when the low level player implements\nMediaPlayerHWInterface.\n\nChange-Id: If555da3a46960cbee91ff26e5b1fd05e52c8ef28\n"
    },
    {
      "commit": "bd828233d3eda966bf7145108dde74616abd97fb",
      "tree": "942a6d829a42a3b3f3a1ac2286015a94acde5332",
      "parents": [
        "8cf9c1a8640553a146f3a7aad01b393c664a46af"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 13 10:59:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 13 11:13:22 2012 -0700"
      },
      "message": "Use the correct data offset by remembering the offset of the enclosing \u0027moof\u0027\n\ncontainer.\n\nChange-Id: I2f0f92dabe31341a6a91d435943e4a65e34884ba\n"
    },
    {
      "commit": "d58a68a4d6915d43d8b9d02ebfe04be62efe2eb1",
      "tree": "b2bae0d6b37fff0a0aff3b3456c2831425d7a0f0",
      "parents": [
        "75767ab7cc1aee315d655538322a8349faa61a64",
        "8ec1f2a4f3c72fe7472f8b8fa227f6b7bbc9279b"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 13 09:52:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 13 09:52:14 2012 -0700"
      },
      "message": "Merge changes Ibe7e6d4b,Icf8904db into jb-mr1-dev\n\n* changes:\n  Move the AAH RTP code out of framework and into vendor.\n  Add the ability to dynamicaly register MediaPlayer types.\n"
    },
    {
      "commit": "8ec1f2a4f3c72fe7472f8b8fa227f6b7bbc9279b",
      "tree": "5a85d007f81c1d09f68f3894f8cbb0a950372250",
      "parents": [
        "44a7e42f0310831e6a846d1b6bb40bf3a399bf6d"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 06 13:50:00 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 13 09:48:56 2012 -0700"
      },
      "message": "Move the AAH RTP code out of framework and into vendor.\n\nRelocate the AAH RTP code from framework/av into\nvendor/google_devices/phantasm.  This change is the deletion, there\nwill be a separate CL which re-introduces on the vendor side of\nthings.\n\nChange-Id: Ibe7e6d4b633a3886b87a615691a2692f2382af6c\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "44a7e42f0310831e6a846d1b6bb40bf3a399bf6d",
      "tree": "aba58d779eb8a1d8fe4616d33b8eb6e1672d6f00",
      "parents": [
        "b3e12a4d15a329821979bf287c49a9630486e23f"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Jun 21 17:29:24 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Aug 13 09:48:56 2012 -0700"
      },
      "message": "Add the ability to dynamicaly register MediaPlayer types.\n\nAdd the ability to dynamically register low level MediaPlayer\nfactories which will be probed at setDataSource time to determine the\nproper MediaPlayerBase to instantiate.\n\nThis change is in preparation for moving libaah_rtp out of\nframeworks/base and into phantasm platform directory.\n\nChange-Id: Icf8904db3ab9e3c85df6e780d5546d9988cb9076\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "c7708555ea7511aea684e00a55fb5309281540ce",
      "tree": "f3f8387559ca0a200e459b45a058fe5e5d2a7fab",
      "parents": [
        "faa88edb9df91b0e7725b0ee4c4fb5e92262b3d5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 09 16:24:54 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 09 16:35:00 2012 -0700"
      },
      "message": "Signal end of stream if no more fragments are going to be available.\n\nChange-Id: I16696740d3551aa8a5ba904ec757c64b0ecd1307\n"
    },
    {
      "commit": "b9787142c5f5f8f47e7e35409f4f2ef7112ab72e",
      "tree": "3966271224e78b6d8e88da104385a67900890635",
      "parents": [
        "0d27c65ddb5c968baa6db0c26e80f5c451bc52bc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 09 09:15:48 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Aug 09 13:25:48 2012 -0700"
      },
      "message": "Fix static sample table processing, add support for h.263 video.\n\nChange-Id: I5628d3437b5e6f8836d78557fd07ab87e5a914e3\n"
    },
    {
      "commit": "b7e75cfd64893dde230dfc1c3b281a00ca1b4470",
      "tree": "1ed2135b58a8762cdefda74197ea688a50b907b5",
      "parents": [
        "28620ee3e9926ef07f0b4cb3e22b156b812e2d7e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Aug 08 09:19:05 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Aug 08 09:19:05 2012 -0700"
      },
      "message": "Handle empty stsc box\n\nChange-Id: I867e2499fac3045075654aaaecf44327753327fd\n"
    },
    {
      "commit": "840667883fd09d44015716d79bc3ac4d60edc0f0",
      "tree": "cb55492dbe3ca64b2ab9ba2f5a3bb6d0a0bcf650",
      "parents": [
        "9cb20d4a41eb84bfab7f9f0d0829393f378583f4"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Aug 16 09:34:26 2011 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Aug 03 13:57:32 2012 -0700"
      },
      "message": "experimental support for fragmented mp4 playback in nuplayer\n\ncherry picked from change 170999\n\nChange-Id: I407775f0290154ad4961134839a15c9f296424c0\n"
    },
    {
      "commit": "9fbe94294ce2053d102ff5de89846a0c5015fb58",
      "tree": "7ba08233afeb658bdd59e1e0b12e96638ee796a4",
      "parents": [
        "3beb3ff4af08ea02da87e6548e0544d2ba47daf1",
        "5d246efa220a7c7b22e490576c488b3853c664dd"
      ],
      "author": {
        "name": "Ed Heyl",
        "email": "ed@google.com",
        "time": "Sun Jul 29 16:47:58 2012 -0700"
      },
      "committer": {
        "name": "Ed Heyl",
        "email": "ed@google.com",
        "time": "Sun Jul 29 16:47:58 2012 -0700"
      },
      "message": "Merge remote-tracking branch \u0027goog/jb-dev-mako\u0027 into jb-mr1-dev\n\nConflicts:\n\tservices/audioflinger/AudioFlinger.cpp\n\nChange-Id: If27e4ff35de1e182394cc149e1557a49f0f7c95b\n"
    },
    {
      "commit": "5d246efa220a7c7b22e490576c488b3853c664dd",
      "tree": "8258668e5e235b67d51d8f4554e77f8c2434fe2c",
      "parents": [
        "45dfb6ae94b33eea04d74afa378c1664e884f09a"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Mon Jul 09 10:36:57 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Jul 25 01:28:36 2012 -0700"
      },
      "message": "NuPlayer: Prevents creation of Video Decoder when we use Music Player\n\n- Prevents instantion of Video Decoder when we use applications like\nMusic Player  which do not support Video Playback\n- Adds a check to prevent scanning for sources when it is either an\nAudio only clip or a video only clip or an AV clip played with a\nMusic Player.\n\nChange-Id: I74dd9bc53e54fd4f3682536c987289ac252690b0\nSigned-off-by: Arvind Thatikonda \u003carvindt@codeaurora.org\u003e\n"
    },
    {
      "commit": "bf5bea96f236adb5eef78c2f414ef82b3602a0f7",
      "tree": "ec9dcb7ffdb2de6257fcee026583ffe998fef1d8",
      "parents": [
        "7aa1b72252749c990c9a5efce3d8fe399261b88e"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jul 18 17:46:06 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jul 24 16:59:21 2012 -0700"
      },
      "message": "Codecs: Add MetaDataMode support to software video encoders.\n\nThis support is needed to enable efficient video recording with\nemulator and camera HAL 2.\n\n- Update SoftAVCEncoder and SoftMPEG4Encoder to support MetaDataMode\n  extension.\n- Allow CameraSource to handle opaque pixel formats, so that\n  MetaDataMode can be used.\n- Remove hardware codec restriction for MetaDataMode\n\nBug: 6243944\nChange-Id: I970eb3d55542a413b6d75a78f76d3a8583155601\n"
    },
    {
      "commit": "f57b4ea3e409537b1d5f9aaea93d356b1cebbc6a",
      "tree": "ca0ff108318bbe53657e62ec27f241750b6a4b55",
      "parents": [
        "33e6e35b03a726e35203e97550f32154c91d5f13"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 13:38:36 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Jul 20 13:38:36 2012 -0700"
      },
      "message": "Added a callback in nuplayer via informational event to signal the start of video rendering\n\nChange-Id: Id7b9b82d4e5467ad8701bfbad4dcc5070f3703cf\n"
    },
    {
      "commit": "b46ccde3610d3f1713f7ebf0e9ffe943e44b54d2",
      "tree": "0cc18c7a6b51033a0f81e75991d2fa5d746dfb51",
      "parents": [
        "faa5bdd1efff301962537a7b271bd31c78ec13dc"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 17 15:03:25 2012 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 17 15:17:23 2012 -0700"
      },
      "message": "Merge from jb-dev for \"sample video corruption in MediaCodec mode.\" DO NOT MERGE\n\njb-dev commit: fa2b8f243eb048fb2b8e5a14356190f69eb31a36\n\nChange-Id: I4f08b9c8e9682a998db01c509a390e51bae60c2d\nrelated-to-bug: 6732061\n"
    },
    {
      "commit": "fa2b8f243eb048fb2b8e5a14356190f69eb31a36",
      "tree": "d54232d4c61bf767677bcee2373069c4969301c1",
      "parents": [
        "4221e2813f7a307936036e62b6a63bbda23005ee"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 10 20:01:13 2012 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 13:05:56 2012 -0700"
      },
      "message": "Fixed sample video corrupted in MediaCodec mode.\n\nChange-Id: I50c5660072d40f6e297e58fd026ea04c89d6a70a\nrelated-to-bug: 6732061\n"
    },
    {
      "commit": "3d51d5cb53cc630709a0ba78d0e60501a675f2d5",
      "tree": "c01dc8011b4e0061343c8b60b0da3508c63ae822",
      "parents": [
        "b4ea1ab821d652cb080910d4081f5f1318597a90"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 12 18:10:35 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 13 15:18:29 2012 -0700"
      },
      "message": "Add NOTICE and MODULE_LICENSE_APACH2 to libs build under /frameworks/av/\n\nChange-Id: I0a3af3e2abdedebd5934f3d941d01c32cfc75e26\nrelated-to-bug: 6647465\n"
    },
    {
      "commit": "d791e094da5698c787f8db28ca5d5d490c512cf1",
      "tree": "59cac1f9eff55108cc81adee71c618e3844cb68e",
      "parents": [
        "67295b543c16ed7c77b67f859d598fe7b4571660"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jun 11 17:00:59 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jun 11 17:00:59 2012 -0700"
      },
      "message": "Fix gapless for deep buffers\n\nForward current flags to next output.\nb/6645676\n\nChange-Id: I584f7a67472d99cbd6bc38f3fe84763331d115d1\n"
    },
    {
      "commit": "67295b543c16ed7c77b67f859d598fe7b4571660",
      "tree": "ce4810e22cedaec06f3d7ada9f1b5f5e182df506",
      "parents": [
        "c15d6657a17d7cef91f800f40d11760e2e7340af"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jun 11 14:52:53 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jun 11 15:10:48 2012 -0700"
      },
      "message": "Fix gapless playback\n\nOn some devices the actual framecount per buffer of an AudioTrack\nwill be different than what was requested, which prevented the\ntrack from being reused. Now we create a new AudioTrack with the\nrequested parameters, and then compare it to the track we already\nhave. If they match, we throw away the new track and reuse the\nexisting one.\nb/6644559\n\nChange-Id: Id3e8c4460436f52e59b98ecaeb01c94f02877c1d\n"
    },
    {
      "commit": "c9d1696d214d2175327067ccc1991bcb36976404",
      "tree": "d8dca6340bbe00cd04d6dda4c1917e1affe9a516",
      "parents": [
        "8370c7ad4136ad7e0787d5a91ccfa3d63cfbe5cc"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon May 21 11:12:40 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon May 21 11:12:40 2012 -0700"
      },
      "message": "For an RTSP live stream we won\u0027t map rtp time to normal play time,\n\nsince we don\u0027t have the information necessary.\n\nChange-Id: I3119fcc061c4b6756a69c6139ffdf013d806fee1\nrelated-to-bug: 6528548\n"
    },
    {
      "commit": "bfd4d0d9fe0033abf3f55b94f30f6a58846a875e",
      "tree": "9b8a16246cce7e86b6dcc4e5af147d264d4eb4b9",
      "parents": [
        "cd28dc10d49c359566c69d48a29a6f0d3eefa6d9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 17 14:18:50 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 17 14:18:50 2012 -0700"
      },
      "message": "Buffer at least 2 secs worth of data at startup of after a seek before\n\nresuming starting RTSP playback.\n\nChange-Id: I060c6c7fd627ab7ebd5c095ddcfdb4cc0f637aad\nrelated-to-bug: 6364126\n"
    },
    {
      "commit": "a62bde0a391f65a418d77c46e6ba468433d81dba",
      "tree": "0202a386c41144de3a683af8efe38ce043eed16e",
      "parents": [
        "b21d070fbf5379aea1af970cb96cdb9c3665a4c6",
        "73ac1eebff620714c6977f7342ff8dcc4858b3cf"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon May 07 15:54:53 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 07 15:54:53 2012 -0700"
      },
      "message": "Merge \"Use new sd card mount point for dumpsys\" into jb-dev"
    },
    {
      "commit": "73ac1eebff620714c6977f7342ff8dcc4858b3cf",
      "tree": "09a6525bc876346a77f71ea87f1d0fec8ffcc6d4",
      "parents": [
        "ef7f379497199148b5694615e75b3fb2bf666a18"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon May 07 15:36:32 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon May 07 15:36:32 2012 -0700"
      },
      "message": "Use new sd card mount point for dumpsys\n\nb/6455962\n\nChange-Id: I5c9f8c16c50587b25cafab03c48662e63855868e\n"
    },
    {
      "commit": "9806555d3930be43e11106281dee354820ac1c88",
      "tree": "b5aa448cc0bfede361540f45b97c81ad398a9df4",
      "parents": [
        "6a3969cc3bcbfc84dbcc27aa726eb96bc03a830b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 03 11:33:01 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu May 03 11:47:08 2012 -0700"
      },
      "message": "Respect channel mask in ACodec and NuPlayer.\n\nRefactor conversion from MetaData into AMessage while we\u0027re at it.\n\nChange-Id: I5479129836ea4316e8de28cf1b472bf19e3ac4ab\nrelated-to-bug: 6439076\n"
    },
    {
      "commit": "4c9cd95b27a638701be2ffa1713273ba2f624770",
      "tree": "c7f5f7820aa39c965706b7ea504d9b53f5147688",
      "parents": [
        "0c0abd4ad26971b5fba94734137fe0bb1a590ab6",
        "f60c660f048d5f5e2458cff243c20400d73757a7"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Apr 30 12:45:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 30 12:45:27 2012 -0700"
      },
      "message": "Merge \"Added support for HE-AAC recording\" into jb-dev"
    },
    {
      "commit": "0c0abd4ad26971b5fba94734137fe0bb1a590ab6",
      "tree": "c1bc93a1c16884cdaf545074c1766fbb46d1a6f6",
      "parents": [
        "8b71241ce7353731ab75322c46e090ee35014a33",
        "0b7c9a327f5d10b841a3aa2bbe103a2ca6dcac37"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 30 11:44:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 30 11:44:47 2012 -0700"
      },
      "message": "Merge \"Notify the client about an initial size of (0, 0) instead of (320, 240).\" into jb-dev"
    },
    {
      "commit": "0b7c9a327f5d10b841a3aa2bbe103a2ca6dcac37",
      "tree": "b53531cf12c1000598bf15b828fe3f7a3cda4116",
      "parents": [
        "83faee053cfd4251dbb591b62039f563ffdac399"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 30 11:35:34 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Apr 30 11:35:34 2012 -0700"
      },
      "message": "Notify the client about an initial size of (0, 0) instead of (320, 240).\n\nwhich is documented as \"we don\u0027t have that information just yet\".\n\nChange-Id: I158a53af83d526f713cd30372fce28558894b857\nrelated-to-bug: 6293020\n"
    },
    {
      "commit": "8b71241ce7353731ab75322c46e090ee35014a33",
      "tree": "afc21859dae503e57aa5a3cc777512800d1fd64e",
      "parents": [
        "83faee053cfd4251dbb591b62039f563ffdac399"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Apr 27 09:33:24 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 30 09:40:47 2012 -0700"
      },
      "message": "Fix mono gapless playback for decoders that output stereo\n\nThe old AAC decoder always outputs stereo, even for mono source material, so we\nneed to use the number of channels of the output when calculating the number of\nbytes to skip, not the number of channels in the source.\nThis makes OMXCodec skip the right amount of data, and prevents NuPlayer from\nwriting half a frame and then asserting when the AudioSink doesn\u0027t accept it.\nAlso move use of the SkipCutBuffer from NuPlayer to ACodec, so that it also\nworks when using the new Java APIs, and make SkipCutBuffer derive from RefBase.\nb/774846\n\nChange-Id: I34df9fea3e6730617eae559afaa556f4085ef0a0\n"
    },
    {
      "commit": "f60c660f048d5f5e2458cff243c20400d73757a7",
      "tree": "b2bf22e36da46fd25979df618f8661b4b0510dad",
      "parents": [
        "83faee053cfd4251dbb591b62039f563ffdac399"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Sat Apr 28 21:58:22 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Apr 30 09:18:24 2012 -0700"
      },
      "message": "Added support for HE-AAC recording\n\nFixed bug in decoder related to sample rates / channel counts\nMade decoder follow Fraunhofer pattern\nLog if bitrate not available\nBug: 6275957\n\nChange-Id: I47a8e29358fa4a88ebc73fe02d46a2bfb96c64fe\n"
    },
    {
      "commit": "aeb8fd460ed87d032b3fb8bb61e21eb542ce0f5b",
      "tree": "f8b459d895acef1717c96cb7133675dda3e458b7",
      "parents": [
        "e0fa467e1150c65a7b1b1ed904c579b40f97c9df"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Thu Apr 19 00:14:27 2012 -0700"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Wed Apr 25 22:02:58 2012 -0700"
      },
      "message": "Add Fraunhofer AAC encoder with AAC-ELD support.\n\nChange-Id: I6cd499d257d72f50a5b508bed97796a591a51506\n"
    },
    {
      "commit": "e370bb62b89d2f2980f519392010ea08a24c558e",
      "tree": "1b6f05a3447497841b259f00f03af2150e165c61",
      "parents": [
        "e4f70a7ea72c2a9fca60e6b64a258604e9333580"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 25 14:24:30 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 25 14:28:29 2012 -0700"
      },
      "message": "Bump up the max number of items in an AMessage, remove overly stringent\n\nCHECK() limiting us to just audio/* or video/* tracks.\n\nrelated-to-bug: 6399405\nChange-Id: I9bdaf7e709665ecc22da8839c8b16c081dbf4535\n"
    },
    {
      "commit": "1948eb3ea6eee336e8cdab9b0c693f93f5f19993",
      "tree": "448eed49a4ba18fb1ab4f2fb1b2c0d5cef6d242f",
      "parents": [
        "21e8c50bd13ebe44f3088e26c9c6df0e163c469c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 13 16:50:19 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 14:17:02 2012 -0700"
      },
      "message": "Add support for deep audio buffers\n\nAllow AudioSink to use deep audio buffering when the\nsource is audio only and its duration is more than\na certain threshold.\nThis helps improve battery life but implies higher\naudio latency.\n\nChange-Id: Ie79915b61c370292f05aabda9779356570e03cbb\n"
    },
    {
      "commit": "5b8987e7de9d04b09153f329c680d2316cdb44ec",
      "tree": "2b08e1f8abd0d4b869ce8923b1462530b916a7eb",
      "parents": [
        "fd9e14bc28f377065e43ec6833d754ca151b3941"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:52:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:53:59 2012 -0700"
      },
      "message": "Allow propagation of error information and description from the CryptoPlugin to\n\nthe higher layers.\n\nChange-Id: I9f434ad55cdf575803c208bedf47b607baff2330\nrelated-to-bug: 6365261\n"
    },
    {
      "commit": "0ca3cf94c0dfc173ad7886ae162c4b67067539f6",
      "tree": "bc156e7822e663626b78ec2ad09ef3970fbb48c5",
      "parents": [
        "ee685f6d19a6cc3b0bf02e69eb5dea11a2aeb601"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 18 09:24:29 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 18 15:04:46 2012 -0700"
      },
      "message": "rename audio policy output flags\n\nChange-Id: I27c46bd1d1b2b5f96b87af7d05b951fef18a1312\n"
    },
    {
      "commit": "1608735ef488ecd8c3c012a3b0d4b1d4ef3d93c7",
      "tree": "c77756706095cdb6852e56392e8365bcaa7d9232",
      "parents": [
        "a98db787397633155fd71b06ecaa765a7ad20cf2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 13 14:54:36 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 17 11:22:11 2012 -0700"
      },
      "message": "Support widevine:// URLs in NuMediaExtractor / java MediaExtractor.\n\nAllow anyone to talk to drm services.\n\nChange-Id: I5c2f3c419d01de30c3d6e2bc85b1fe5c9c37b392\nrelated-to-bug: 6276111\n"
    },
    {
      "commit": "bdddc659a941afdb7f4958f582c6901c07246097",
      "tree": "37423f7b734d26e086328f1f9b337e1499c026b8",
      "parents": [
        "3f502bfc6d04d08369cf147284c5c4c2ac7c9a0e"
      ],
      "author": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Fri Mar 30 16:04:43 2012 -0700"
      },
      "committer": {
        "name": "Daniel Lam",
        "email": "dalam@google.com",
        "time": "Mon Apr 09 22:58:28 2012 -0700"
      },
      "message": "Refactored SurfaceMediaSource\n\nSurfaceMediaSource takes advantage of BufferQueue to avoid\nduplicated code.\n\nChange-Id: I5e60b8eca21e6c3cf728d363cd8f3786125182d1\n"
    },
    {
      "commit": "99448608f375a7191c068c3bfd296f204b58a219",
      "tree": "2233a958570ce34e7203560677dcea2fe0e726e3",
      "parents": [
        "f15cb4472aaca54c13f8250e4c7872470c4bed83"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 02 12:16:49 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Apr 04 14:26:45 2012 -0700"
      },
      "message": "Allow AudioTrack to start at nonzero position\n\nWhen creating a new AudioTrack (not inheriting one from a previous play),\nthe AudioSink should take the AudioTrack\u0027s position as the initial starting\npoint for mBytesWritten, since otherwise NuPlayer\u0027s calculations will be off.\nNormally this position will be 0, but if the test code for 32 bit wraparound\nin AudioFlinger.cpp is enabled, it might be (much) larger.\n\nChange-Id: I1e4f906d529861c3dea996de8afc6dbd491589af\n"
    },
    {
      "commit": "1bd139a2a68690e80398b70b27ca59550fea0e65",
      "tree": "e3be78f22aa021c4e372409128775c2093d46dae",
      "parents": [
        "d22da88fd555f1262357c7dcdeface8445e3a012"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 14:19:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 14:19:20 2012 -0700"
      },
      "message": "New Crypto services talking to the new crypto \"HAL\".\n\nChange-Id: I69ed31e7a8b4d69d1209d2d516f94d258f072566\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "4110c101c3d0dd8dbc44c8d2d0edd3e2e7d6652f",
      "tree": "7bb39d31afac7348bb91093cc0e1c2d9aa49cba2",
      "parents": [
        "a1472d9883e35edd280201c8be3191695007dfd4"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Mar 29 09:31:28 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Apr 02 09:19:03 2012 -0700"
      },
      "message": "Add gapless playback support for NuPlayer\n\nThis makes NuPlayer use a SkipCutBuffer when needed, and adds a new\nAudioSink method to retrieve the number of frames written so far, so\nNuPlayerRenderer can calculate how much data it can write without blocking.\nAlso make some more methods const.\n\nChange-Id: Id7d253ad8a7b85e9a84ca2baafbe32817b16c744\n"
    },
    {
      "commit": "559bf2836f5da25b75bfb229fec0d20d540ee426",
      "tree": "d7dd708b17eeca96a3e5d8bcc25a51ff3d1b5d0d",
      "parents": [
        "b0b2b4d890cf3bfb274797a759642b4e733343d7"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Mar 28 10:29:14 2012 -0700"
      },
      "committer": {
        "name": "Anatol Pomozov",
        "email": "anatol.pomozov@gmail.com",
        "time": "Wed Mar 28 12:07:41 2012 -0700"
      },
      "message": "AV Android make files changes\n\no plus a few file relocation: ActivityManager.cpp/h, SoundPool.h, etc\no remove some runtime dependencies to libandroid, libandroid_runtime, etc\n\nChange-Id: I047a47c5fb361dd5cf85cd98798c39f629a75d10\n"
    },
    {
      "commit": "ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6",
      "tree": "99d5bb3a2f48f9a3ba3eaaf17e630b589e97bef1",
      "parents": [
        "cc1110dc92e53e9cc0afbb043e6ef8295bd9c5d5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:13:27 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:24:04 2012 -0700"
      },
      "message": "Provisional support for secure decryption of media streams.\n\nChange-Id: Ib3982a9c960bfdb0cb7e1b174440b141b194cfbe\n"
    },
    {
      "commit": "3ee26944b082def647fe5bb2b75116ffb0267059",
      "tree": "61d6c7d15b281eb465f6af35365428e3762f13cf",
      "parents": [
        "ef36d496477d1e2ae99c3cd43eee5cf7e82b0883"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Mar 24 10:48:40 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sat Mar 24 10:59:14 2012 -0700"
      },
      "message": "Remove JNI in LOCAL_C_INCLUDE from non-JNI related Android.mk files.\n\no related-to-bug: 6214141\n\nChange-Id: Ic88d1732b3e014af47532a0809e01f6086e8464d\n"
    },
    {
      "commit": "afed0e1fa37473a4cd30018577b560acc79d9a3f",
      "tree": "60e3a06c0cc8266f4ecaa45eb7d08c0c47a8b2dd",
      "parents": [
        "898b11f2aeaaa2bed84d963a3fcfd3b229e00b99"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Sep 20 15:39:58 2011 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Mar 22 13:18:08 2012 -0700"
      },
      "message": "Use NuPlayer for media playback everywhere\n\nif media.stagefright.use-nuplayer is set to true.\n\nChange-Id: Ibb217e7d7d5195b7feeea557554fe78e1585744c\n"
    },
    {
      "commit": "63c1faa8dea7feb90255d31ef2a133d8f2818844",
      "tree": "973c66b51e7e85b6ea753b5643f7d99c66d82dde",
      "parents": [
        "7153494670bdac8b650cb10b8b1838651e0ca418",
        "17a736c3e1d062d7fc916329eb32aef8935614af"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 21 07:24:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 07:24:21 2012 -0700"
      },
      "message": "Merge \"Update comments\""
    },
    {
      "commit": "1bb8e81b066a2311fd238fc6dae8f026e33ed99e",
      "tree": "b532516a844ab20331120a4d6f7777c27c36548c",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093",
        "b12153e36ae5e514d96c77d660b327d1a8f5000f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 16:21:04 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 19 16:21:04 2012 -0700"
      },
      "message": "Merge \"Add libmedia_native\""
    },
    {
      "commit": "17a736c3e1d062d7fc916329eb32aef8935614af",
      "tree": "7fb73e48de8641ce6ad7b65fb4204bc60cd3e5f0",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 14 08:52:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 14:12:01 2012 -0700"
      },
      "message": "Update comments\n\nChange-Id: I327663a020670d0a72ff57bd0b682e2ce0528650\n"
    },
    {
      "commit": "b12153e36ae5e514d96c77d660b327d1a8f5000f",
      "tree": "fbfe8dc937f925b7075786b969522fb9012ae69b",
      "parents": [
        "6469edeeac6079b118e8f81252116c40574c9841"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 16 11:42:24 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 16 11:51:30 2012 -0700"
      },
      "message": "Add libmedia_native\n\nChange-Id: Ib8cff8abd73723b793f08da99ad59549f219e0e7\n"
    },
    {
      "commit": "ab334fd351ae5a0e18903da123d63e565b536874",
      "tree": "9bcc5a6151326d9ca345f9dfac0d9d68d48e73b4",
      "parents": [
        "3c5bbaee376d235404f267fbe1693d1960bfaaef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 12:56:06 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 15 13:15:27 2012 -0700"
      },
      "message": "audio_channel_in/out_mask_from_count\n\nand avoid ambiguous term \"channels\" where it might be confusing\nas to whether it is a channel mask or channel count\n\nChange-Id: I744fa08ccb6001a98c97bd638d2c9d56836c4234\n"
    },
    {
      "commit": "f9d660a5e0196240add5daf0199f128d471e592c",
      "tree": "f67d9d6c7d7e22e8cedefaae1bf0e7a4872deda5",
      "parents": [
        "dfaf549e3e310bc22444f4404b19f4907b24c286"
      ],
      "author": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Thu Feb 16 20:28:27 2012 +0900"
      },
      "committer": {
        "name": "Insun Kang",
        "email": "insun@google.com",
        "time": "Thu Mar 15 08:36:52 2012 +0900"
      },
      "message": "Defines MediaPlayer APIs to support multiple audio/video/timedtext\ntracks.\n\no Newly introduced APIs are (MediaPlayer):\n  getTrackInfo() / addExternalSource() / enableTrack() / disableTrack().\n\no Timed text tracks are supported only, for now.\n\no TODOs:\n - Define the audio/video behavior for enableTrack and disableTrack.\n - Refactoring AwesomePlayer / TimedTextDriver so that all types of\n   track index can be managed in the correct order and be ready for\n   supporting audio/video tracks.\n   (MediaExtractor and MediaSource for text file might be necessary.)\n\nChange-Id: Idb85e1b3f2ed49a64f377d05472dd6663ce94e07\n"
    },
    {
      "commit": "36a4d2cc7a44eb42d0d9ef5fe50b6747a7a34cab",
      "tree": "eec0f805e2e83ed1d720519748527c03affafc29",
      "parents": [
        "5e7616cc0e5493241211333134555d74aec89982",
        "6b74d671a1321a6ecc4a40b6c87beedfecc1ec44"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 13 13:23:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 13:23:07 2012 -0700"
      },
      "message": "Merge \"Gapless playback, step 1.\""
    },
    {
      "commit": "6b74d671a1321a6ecc4a40b6c87beedfecc1ec44",
      "tree": "44092c52e8439f1991f23601287d424db916c814",
      "parents": [
        "887c5d2ac34d81bde66dadbd7b2ff07501744778"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Feb 28 16:07:44 2012 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 13 13:13:14 2012 -0700"
      },
      "message": "Gapless playback, step 1.\n\nCurrently able to play Ogg Vorbis, PCM WAV and other lossless files seamlessly\nby reusing the initial AudioTrack for subsequent players.\n\nChange-Id: Ie7cf6b9076bdf4f9211574456d192c02c04fecc7\n"
    },
    {
      "commit": "6c6b4d0d2b98a7ceee8b697daaf611f8df3254fb",
      "tree": "307356be51d237ee22f88affdc3376270d571be9",
      "parents": [
        "aa4397f07c43bd83bc3100b749401dc3d15e7622"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 12 14:37:53 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Mar 12 21:28:57 2012 -0700"
      },
      "message": "Switched to use the header files in /frameworks/native\nand deleted the duplicate header files in /frameworks/base\n\no related-to-bug: 6044887\n\nChange-Id: I17e0692d9a9b5c8796ded36677c833ca8ab36795\n"
    },
    {
      "commit": "18868c5db2f90309c6d11e5837822135e4a0c0fa",
      "tree": "58c7505f59a1a93ab729fc039aa5cb1eaa49652e",
      "parents": [
        "f2015b625cd6bea86da7401e725332c35b90e7cf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 07 09:15:37 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 15:32:22 2012 -0800"
      },
      "message": "Use audio_policy_output_flags_t consistently\n\nThis affects:\n - IAudioFlinger::openOutput\n - AudioTrack::AudioTrack\n - AudioTrack::set\n - apps that call these\n\nChange-Id: I26fb281bac6cb87593d17697bc9cb37a835af205\n"
    },
    {
      "commit": "6556e5bb99bda64f3ab92e8b540fccdd59e9ed8d",
      "tree": "be047ace7a873144a5927ed52352d3cd57d69bf2",
      "parents": [
        "22f9dd98d9c4c3e0e58586cf6a6008ca6ee946e5",
        "db354e58e65592777aa17caa47933e14838b8b35"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 06 10:53:39 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 10:53:39 2012 -0800"
      },
      "message": "Merge \"MediaPlayerService: fix AudioSink latency\""
    },
    {
      "commit": "db354e58e65592777aa17caa47933e14838b8b35",
      "tree": "4a04ca6b47a4853f9b397a19b3f4dc84675c8fa7",
      "parents": [
        "d8d6185c978c9b27ca69e7791785e0983ed9e8b8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 05 17:27:11 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 05 17:27:11 2012 -0800"
      },
      "message": "MediaPlayerService: fix AudioSink latency\n\nThe AudioSink latency is currently cached when the associated AudioTrack\nis created. However, the AudioTrack latency can change if the AudioTrack is moved\nfrom one output stream to another.\nThe AudioPlayer must also periodically update its view of the latency\nas it is needed to compensate the real audio time used for A/V sync.\n\nThis fixes an A/V sync problem seen when switching A2DP on and off while\nplaying a video.\n\nChange-Id: I28b24049ca114e1af3e24791dcc900f463536ba4\n"
    },
    {
      "commit": "786618ffe881aceb64d65a6a2e2d76ede6e01ec0",
      "tree": "3e88f6c457f47529026207badf835dfa448ec8b8",
      "parents": [
        "e7c795f3300814aa3f26ceb845f29695383c7edc"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 02 14:54:07 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 02 17:26:49 2012 -0800"
      },
      "message": "Add channel mask in AudioSink\n\nAdd support for specifying a channel mask when opening an AudioSink.\n  This parameter does not replace the channel count parameter in order\n  to not have to duplicate the logic to derive a mask from the\n  channel count everywhere an AudioSink is used without a known mask.\n\nA mask of 0 (CHANNEL_MASK_USE_CHANNEL_ORDER) means a mask will\n  be automatically derived from the number of channels.\n\nUpdate existing AudioSink implementations to use the channel mask,\n  and users of AudioSink to specify the mask if available, and\n  CHANNEL_MASK_USE_CHANNEL_ORDER otherwise.\n\nChange-Id: Ifa9bd259874816dbc25ead2b03ea52e873cff474\n"
    },
    {
      "commit": "c795b64060c3af9d7961fc1371e4ccfa8ee3e450",
      "tree": "aafa8ecde306b5420e96b7a6e0965d1f1f4c4fa6",
      "parents": [
        "4b77dc28097288cb062fce6bf5de0fb3394877a9"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Feb 22 15:38:35 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Mar 01 14:41:35 2012 -0800"
      },
      "message": "Switch the way we configure for MediaPlayer retransmission.\n\nThis is a cherry-pick of I6ab07d89b2eeb0650e634b8c3b7a0b36aba4e7dd\nwith merge conflicts addressed by hand and additional changes made in\nresponse to code review feedback.\n\nMove in the direction of a more publishable API for configuring a\nmedia player for retransmission.  It used to be that we used a custom\ninvoke and a modified URL (prefixed with aahTX://).  There are many\nissues with this technique and it was never meant to stand the test of\ntime.\n\nThis CL gets rid of all that.  A new (but currently hidden) method was\nintroduced to the java level MediaPlayer API, called\nsetRetransmitTarget(InetSocketAddress), which allows an app writer to\nset the retransmit target.  For now, this method needs to be called\nbefore a call to setDataSource (which is pretty unusual for the\nMediaPlayer API) because this mid level code uses this as a cue to\ninstantiate an aahTX player instead of relying on the data source to\nselect a player.  When retranmit functionality becomes part of the\nexisting android player implemenation, this\nset-retrans-before-set-data-source behavior can go away, along with\nthe aahTX player itself.\n\nChange-Id: I3b46c5227bbf69acb2f3cc4f93cfccad9777be98\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "df712ea86e6350f7005a02ab0e1c60c28a343ed0",
      "tree": "75401d5ef563d1ae76aaae4965f65bb39f92736c",
      "parents": [
        "d3393c35259588e8ad61a43d1d1aa1568e943307"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Feb 25 18:48:35 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 13:03:08 2012 -0800"
      },
      "message": "fix libgui header location\n\nChange-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe\n"
    },
    {
      "commit": "2d8bedd05437b6fccdbc6bf70f673ffd86744d59",
      "tree": "1a11658a7379249eb4f6bd73b356baa4a661f41e",
      "parents": [
        "79af02c6a813b5d31fba3e7b72686a02f0ae7e0f"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 21 14:38:23 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 22 16:20:59 2012 -0800"
      },
      "message": "Add new APIs AMessage::(set|find)Buffer to make it safer to pass\n\nABuffer objects through messages.\n\nChange-Id: I9f8b4e4c4767d0d70a0105e0c0813b754379b49d\n"
    },
    {
      "commit": "79af02c6a813b5d31fba3e7b72686a02f0ae7e0f",
      "tree": "662f61b610a5b0ee180d4b7940e1e1860b098eab",
      "parents": [
        "d6fd85a157ce2054b2304e6d171fa87ae09c363d",
        "5778822d86b0337407514b9372562b86edfa91cd"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 22 15:13:44 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 22 15:13:44 2012 -0800"
      },
      "message": "Merge \"Implementation of a java media codec interface and associated tools.\""
    },
    {
      "commit": "5778822d86b0337407514b9372562b86edfa91cd",
      "tree": "b8faf8188dfb8865bd88b4dfc778a7d9ab89bb73",
      "parents": [
        "c33305c5dd4cc06e71eb0c66a7150aa6ab647c99"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 21 11:47:18 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Feb 22 15:06:06 2012 -0800"
      },
      "message": "Implementation of a java media codec interface and associated tools.\n\nChange-Id: I13e54062d4de584355c5d82bb027a68aeaf2923b\n"
    },
    {
      "commit": "2e77ad2a9f7afb57b6f9127dd7c229e774baa9c8",
      "tree": "070aac75ae2aab56beef610f91eeecd90f3ce599",
      "parents": [
        "c33305c5dd4cc06e71eb0c66a7150aa6ab647c99"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 21 17:16:25 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 22 10:20:46 2012 -0800"
      },
      "message": "Allow to record time lapse videos without using setProfile()\n\no also added a check on whether capture rate was set before starting time lapse video recording.\n\no related-to-bug: 6045507\n\nChange-Id: I8e1fdc8e8931e2684ab3822dc6260db44658e87d\n"
    },
    {
      "commit": "761defc341c5ce9019a42919c441f035f665ec0d",
      "tree": "23b76ab41456c90e80559ffbb7d8e31a38104dc4",
      "parents": [
        "ef7740be67a4d7b6b033ebed59c3d4a9c74a2c18"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 09 15:09:05 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 16 13:45:12 2012 -0800"
      },
      "message": "Upintegreate AAH TX and RX players from ICS_AAH\n\nUpintegrate the android at home TX and RX players developed in the\nICS_AAH branch.\n\nChange-Id: I8247d3702e30d8b0e215b31a92675d8ab28dccbb\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    }
  ],
  "next": "7a8b0ed6419e57dd8b41d3806893d63d3df91aab"
}
