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_
-