move cache prefill to GenericSource's message handler
This allows prepareAsync to be terminated by reset promptly.
It also makes it easier to do buffer update as GenericSource
can access the cache status now.
Bug: 16892748
Bug: 17182378
Change-Id: Ia55c04a810fd805041cb2025f6739afa5120b5ed
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.h b/media/libmediaplayerservice/nuplayer/GenericSource.h
index d3081de..946307c 100644
--- a/media/libmediaplayerservice/nuplayer/GenericSource.h
+++ b/media/libmediaplayerservice/nuplayer/GenericSource.h
@@ -33,6 +33,7 @@
struct IMediaHTTPService;
struct MediaSource;
class MediaBuffer;
+struct NuCachedSource2;
struct NuPlayer::GenericSource : public NuPlayer::Source {
GenericSource(const sp<AMessage> ¬ify, bool uidValid, uid_t uid);
@@ -105,14 +106,21 @@
int64_t mOffset;
int64_t mLength;
- sp<ALooper> mLooper;
+ sp<DataSource> mDataSource;
+ sp<NuCachedSource2> mCachedSource;
+ String8 mContentType;
+ AString mSniffedMIME;
+ off64_t mMetaDataSize;
+ sp<ALooper> mLooper;
void resetDataSource();
- status_t initFromDataSource(
- const sp<DataSource> &dataSource,
- const char *mime);
+ status_t initFromDataSource();
+
+ status_t prefillCacheIfNecessary();
+
+ void notifyPreparedAndCleanup(status_t err);
void onPrepareAsync();