NuPlayer2: add srcId for source.
Also add prepareNextDataSource for playlist.
Test: MediaPlayer2 plays
Bug: 63934228
Change-Id: I7386b60019323b36632f3b3275c4513433ee6e2e
diff --git a/media/libmediaplayer2/nuplayer2/NuPlayer2.h b/media/libmediaplayer2/nuplayer2/NuPlayer2.h
index cdb9a4f..bf55b65 100644
--- a/media/libmediaplayer2/nuplayer2/NuPlayer2.h
+++ b/media/libmediaplayer2/nuplayer2/NuPlayer2.h
@@ -32,7 +32,6 @@
struct AudioPlaybackRate;
struct AVSyncSettings;
struct DataSourceDesc;
-class IDataSource;
struct MediaClock;
struct MediaHTTPService;
class MetaData;
@@ -44,6 +43,7 @@
void setDriver(const wp<NuPlayer2Driver> &driver);
void setDataSourceAsync(const sp<DataSourceDesc> &dsd);
+ void prepareNextDataSourceAsync(const sp<DataSourceDesc> &dsd);
status_t getBufferingSettings(BufferingSettings* buffering /* nonnull */);
status_t setBufferingSettings(const BufferingSettings& buffering);
@@ -120,6 +120,7 @@
enum {
kWhatSetDataSource = '=DaS',
kWhatPrepare = 'prep',
+ kWhatPrepareNextDataSource = 'pNDS',
kWhatSetVideoSurface = '=VSu',
kWhatSetAudioSink = '=AuS',
kWhatMoreDataQueued = 'more',
@@ -155,7 +156,11 @@
const sp<MediaClock> mMediaClock;
Mutex mSourceLock; // guard |mSource|.
sp<Source> mSource;
+ int64_t mSrcId;
uint32_t mSourceFlags;
+ sp<Source> mNextSource;
+ int64_t mNextSrcId;
+ uint32_t mNextSourceFlags;
sp<ANativeWindowWrapper> mNativeWindow;
sp<MediaPlayer2Interface::AudioSink> mAudioSink;
sp<DecoderBase> mVideoDecoder;
@@ -248,10 +253,10 @@
DATA_SOURCE_TYPE_GENERIC_URL,
DATA_SOURCE_TYPE_GENERIC_FD,
DATA_SOURCE_TYPE_MEDIA,
- DATA_SOURCE_TYPE_STREAM,
} DATA_SOURCE_TYPE;
std::atomic<DATA_SOURCE_TYPE> mDataSourceType;
+ std::atomic<DATA_SOURCE_TYPE> mNextDataSourceType;
inline const sp<DecoderBase> &getDecoder(bool audio) {
return audio ? mAudioDecoder : mVideoDecoder;
@@ -264,6 +269,10 @@
mFlushComplete[1][1] = false;
}
+ status_t createNuPlayer2Source(const sp<DataSourceDesc> &dsd,
+ sp<Source> *source,
+ DATA_SOURCE_TYPE *dataSourceType);
+
void tryOpenAudioSinkForOffload(
const sp<AMessage> &format, const sp<MetaData> &audioMeta, bool hasVideo);
void closeAudioSink();
@@ -274,8 +283,6 @@
status_t instantiateDecoder(
bool audio, sp<DecoderBase> *decoder, bool checkAudioModeChange = true);
- status_t onInstantiateSecureDecoders();
-
void updateVideoSize(
const sp<AMessage> &inputFormat,
const sp<AMessage> &outputFormat = NULL);