Squashed commit of the following:

commit eaeaa2672d4e0a82891493b2bde8bdd0c0e79a1b
Author: Andreas Huber <andih@google.com>
Date:   Thu Dec 23 10:26:48 2010 -0800

    Remove lowest bandwidth stream if using the legacy player.

    Change-Id: I2f885e26344996de9152f8fda9fd6bdef89bf953

commit 7d652972615b2750fd8f1c21b9fab0e136df2b82
Author: Andreas Huber <andih@google.com>
Date:   Thu Dec 23 10:14:36 2010 -0800

    Don't clear the packet source's format for legacy discontinuities.

    Change-Id: I9bd5a21b9bd28043ad38bd0658ccc8eda3c1079a

commit 2b18a45aac17cbfe1aa089d0f6510957d438dd64
Author: Andreas Huber <andih@google.com>
Date:   Thu Dec 23 10:13:55 2010 -0800

    Use NuPlayer for HTTP live streaming based on runtime property.

    adb shell setprop media.httplive.enable-nuplayer true

    Change-Id: I22738df3403985dc8e6992b1ab5da5747309f773

commit 50d899fb7b9ea52c3994b0a58e993998d926aeed
Author: Andreas Huber <andih@google.com>
Date:   Wed Dec 22 16:25:22 2010 -0800

    Make ACodec a lot less verbose.

    Change-Id: I94c7e499b61032321ffaf999f5ad2c913cde6a48

commit b19e1740cb4d02990a56844654b5d019987c6405
Author: Andreas Huber <andih@google.com>
Date:   Wed Dec 22 16:22:22 2010 -0800

    Wait until we have fresh codec-specific-data before instantiating the decoders

    after a discontinuity involving a format change.

    Change-Id: I7bcf9b5ae3319f08bf8978a117e8ee5220902e37

commit 06428c006906c9099e430aface3b439ff1d36ecc
Author: Andreas Huber <andih@google.com>
Date:   Wed Dec 22 15:20:38 2010 -0800

    Disable random seeks in the streaming tool for now.

    Change-Id: Ie86fde422dcfc4b2c7a01be51a193fda9c88cd71

commit e19db68f3bea8a61c191f60f6940f30e3a0d5f1b
Author: Andreas Huber <andih@google.com>
Date:   Wed Dec 22 15:20:27 2010 -0800

    Tweak HTTP live parameters.

    Change-Id: If4b71e12485facc523a8a43d8213d0feb190daab

commit 1e9942791538c2256b579d96c6c04264b0d8b087
Author: Andreas Huber <andih@google.com>
Date:   Wed Dec 22 14:48:23 2010 -0800

    Enable http live streaming through NuPlayer for http URLs containing the string m3u8

    Change-Id: I1691fe12ae8f1507fe3673313959cd50bc324624

commit 4c33f96a6e499ee0efe0e70b687094430cb7c1c0
Author: Andreas Huber <andih@google.com>
Date:   Wed Dec 22 14:40:27 2010 -0800

    Support for HTTP live streaming in NuPlayer.

    Change-Id: Iacba1c3ebaeb8d3b972185deaf4cff18c8009c54

commit ddf705ce553708bc5b13d89a878484cf839bd674
Author: Andreas Huber <andih@google.com>
Date:   Wed Dec 22 13:42:47 2010 -0800

    StreamingSource now a subclass of abstract NuPlayer::Source

    Change-Id: Ia6c7c639628910b9d1f37decc55da48b07a70de3

commit 9e04a8406b1882a8e3fdeb7b4d52db5ae70b970a
Author: Andreas Huber <andih@google.com>
Date:   Wed Dec 22 13:33:52 2010 -0800

    Refactor media data sourcing to NuPlayer::Source.

    Change-Id: I1db9fb08c4e527bf7b19c29978cf342c2b0a0bc9

Change-Id: I9610a097481dda58f22142eacda3ac2dba0b63f9
diff --git a/media/libmediaplayerservice/nuplayer/NuPlayer.h b/media/libmediaplayerservice/nuplayer/NuPlayer.h
index d4e7428..172a962 100644
--- a/media/libmediaplayerservice/nuplayer/NuPlayer.h
+++ b/media/libmediaplayerservice/nuplayer/NuPlayer.h
@@ -21,9 +21,6 @@
 #include <media/MediaPlayerInterface.h>
 #include <media/stagefright/foundation/AHandler.h>
 
-#include "ATSParser.h"
-#include "AnotherPacketSource.h"
-
 namespace android {
 
 struct ACodec;
@@ -35,6 +32,10 @@
     void setListener(const wp<MediaPlayerBase> &listener);
 
     void setDataSource(const sp<IStreamSource> &source);
+
+    void setDataSource(
+            const char *url, const KeyedVector<String8, String8> *headers);
+
     void setVideoSurface(const sp<Surface> &surface);
     void setAudioSink(const sp<MediaPlayerBase::AudioSink> &sink);
     void start();
@@ -45,9 +46,12 @@
     virtual void onMessageReceived(const sp<AMessage> &msg);
 
 private:
-    struct Renderer;
     struct Decoder;
+    struct HTTPLiveSource;
     struct NuPlayerStreamListener;
+    struct Renderer;
+    struct Source;
+    struct StreamingSource;
 
     enum {
         kWhatSetDataSource,
@@ -62,11 +66,9 @@
     };
 
     wp<MediaPlayerBase> mListener;
-    sp<IStreamSource> mSource;
+    sp<Source> mSource;
     sp<Surface> mSurface;
     sp<MediaPlayerBase::AudioSink> mAudioSink;
-    sp<NuPlayerStreamListener> mStreamListener;
-    sp<ATSParser> mTSParser;
     sp<Decoder> mVideoDecoder;
     sp<Decoder> mAudioDecoder;
     sp<Renderer> mRenderer;
@@ -75,6 +77,8 @@
     bool mAudioEOS;
     bool mVideoEOS;
 
+    bool mScanSourcesPending;
+
     enum FlushStatus {
         NONE,
         AWAITING_DISCONTINUITY,
@@ -88,19 +92,11 @@
     FlushStatus mFlushingAudio;
     FlushStatus mFlushingVideo;
 
-    status_t instantiateDecoder(
-            bool audio, sp<Decoder> *decoder, bool ignoreCodecSpecificData);
+    status_t instantiateDecoder(bool audio, sp<Decoder> *decoder);
 
     status_t feedDecoderInputData(bool audio, const sp<AMessage> &msg);
     void renderBuffer(bool audio, const sp<AMessage> &msg);
 
-    status_t dequeueNextAccessUnit(
-            ATSParser::SourceType *type, sp<ABuffer> *accessUnit);
-
-    status_t dequeueAccessUnit(
-            ATSParser::SourceType type, sp<ABuffer> *accessUnit);
-
-    void feedMoreTSData();
     void notifyListener(int msg, int ext1, int ext2);
 
     void finishFlushIfPossible();