Switch stagefright's approach to prefetching to the new model. The java MediaPlayer is now notified about rebuffering start/end via info messages.

Change-Id: If8185ba329ce8b6663b1ad39a4efb0ad3be81df2
diff --git a/include/media/mediaplayer.h b/include/media/mediaplayer.h
index 7fad1b7..dc783ce 100644
--- a/include/media/mediaplayer.h
+++ b/include/media/mediaplayer.h
@@ -93,6 +93,11 @@
     // The video is too complex for the decoder: it can't decode frames fast
     // enough. Possibly only the audio plays fine at this stage.
     MEDIA_INFO_VIDEO_TRACK_LAGGING = 700,
+    // MediaPlayer is temporarily pausing playback internally in order to
+    // buffer more data.
+    MEDIA_INFO_BUFFERING_START = 701,
+    // MediaPlayer is resuming playback after filling buffers.
+    MEDIA_INFO_BUFFERING_END = 702,
     // 8xx
     // Bad interleaving means that a media has been improperly interleaved or not
     // interleaved at all, e.g has all the video samples first then all the audio
diff --git a/include/media/stagefright/CachingDataSource.h b/include/media/stagefright/CachingDataSource.h
deleted file mode 100644
index 42d50e5..0000000
--- a/include/media/stagefright/CachingDataSource.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef CACHING_DATASOURCE_H_
-
-#define CACHING_DATASOURCE_H_
-
-#include <media/stagefright/DataSource.h>
-#include <media/stagefright/MediaErrors.h>
-#include <utils/threads.h>
-
-namespace android {
-
-class CachingDataSource : public DataSource {
-public:
-    CachingDataSource(
-            const sp<DataSource> &source, size_t pageSize, int numPages);
-
-    virtual status_t initCheck() const;
-
-    virtual ssize_t readAt(off_t offset, void *data, size_t size);
-
-    virtual status_t getSize(off_t *size);
-
-    virtual uint32_t flags();
-
-protected:
-    virtual ~CachingDataSource();
-
-private:
-    struct Page {
-        Page *mPrev, *mNext;
-        off_t mOffset;
-        size_t mLength;
-        void *mData;
-    };
-
-    sp<DataSource> mSource;
-    void *mData;
-    size_t mPageSize;
-    Page *mFirst, *mLast;
-
-    Page *allocate_page();
-
-    Mutex mLock;
-
-    CachingDataSource(const CachingDataSource &);
-    CachingDataSource &operator=(const CachingDataSource &);
-};
-
-}  // namespace android
-
-#endif  // CACHING_DATASOURCE_H_
diff --git a/include/media/stagefright/HTTPDataSource.h b/include/media/stagefright/HTTPDataSource.h
deleted file mode 100644
index 0400bea..0000000
--- a/include/media/stagefright/HTTPDataSource.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef HTTP_DATASOURCE_H_
-
-#define HTTP_DATASOURCE_H_
-
-#include <media/stagefright/DataSource.h>
-#include <utils/String8.h>
-#include <utils/threads.h>
-
-namespace android {
-
-class HTTPStream;
-
-class HTTPDataSource : public DataSource {
-public:
-    HTTPDataSource(
-            const char *host, int port, const char *path,
-            const KeyedVector<String8, String8> *headers = NULL);
-
-    HTTPDataSource(
-            const char *uri,
-            const KeyedVector<String8, String8> *headers = NULL);
-
-    status_t connect();
-    void disconnect();
-
-    virtual status_t initCheck() const;
-
-    virtual ssize_t readAt(off_t offset, void *data, size_t size);
-
-    virtual status_t getSize(off_t *size);
-
-    virtual uint32_t flags();
-
-protected:
-    virtual ~HTTPDataSource();
-
-private:
-    enum {
-        kBufferSize = 64 * 1024,
-
-        // If we encounter a socket-read error we'll try reconnecting
-        // and restarting the read for at most this many times.
-        kMaxNumRetries = 3,
-    };
-
-    enum State {
-        DISCONNECTED,
-        CONNECTING,
-        CONNECTED
-    };
-
-    State mState;
-    mutable Mutex mStateLock;
-
-    String8 mHeaders;
-
-    String8 mStartingHost;
-    String8 mStartingPath;
-    int mStartingPort;
-
-    HTTPStream *mHttp;
-
-    void *mBuffer;
-    size_t mBufferLength;
-    off_t mBufferOffset;
-
-    bool mContentLengthValid;
-    unsigned long long mContentLength;
-
-    int32_t mNumRetriesLeft;
-
-    void init(const KeyedVector<String8, String8> *headers);
-
-    ssize_t sendRangeRequest(size_t offset);
-    void initHeaders(const KeyedVector<String8, String8> *overrides);
-
-    status_t connectWithRedirectsAndRange(off_t rangeStart);
-    void applyTimeoutResponse();
-
-    HTTPDataSource(const HTTPDataSource &);
-    HTTPDataSource &operator=(const HTTPDataSource &);
-};
-
-}  // namespace android
-
-#endif  // HTTP_DATASOURCE_H_
-