diff options
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/GenericSource.h')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/GenericSource.h | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.h b/media/libmediaplayerservice/nuplayer/GenericSource.h index 1b68283..5527448 100644 --- a/media/libmediaplayerservice/nuplayer/GenericSource.h +++ b/media/libmediaplayerservice/nuplayer/GenericSource.h @@ -67,7 +67,7 @@ struct NuPlayer::GenericSource : public NuPlayer::Source { virtual size_t getTrackCount() const; virtual sp<AMessage> getTrackInfo(size_t trackIndex) const; virtual ssize_t getSelectedTrack(media_track_type type) const; - virtual status_t selectTrack(size_t trackIndex, bool select); + virtual status_t selectTrack(size_t trackIndex, bool select, int64_t timeUs); virtual status_t seekTo(int64_t seekTimeUs); virtual status_t setBuffers(bool audio, Vector<MediaBuffer *> &buffers); @@ -94,20 +94,24 @@ private: kWhatSeek, kWhatReadBuffer, kWhatStopWidevine, + kWhatStart, + kWhatResume, + kWhatSecureDecodersInstantiated, }; - Vector<sp<MediaSource> > mSources; - struct Track { size_t mIndex; sp<MediaSource> mSource; sp<AnotherPacketSource> mPackets; }; + Vector<sp<MediaSource> > mSources; Track mAudioTrack; int64_t mAudioTimeUs; + int64_t mAudioLastDequeueTimeUs; Track mVideoTrack; int64_t mVideoTimeUs; + int64_t mVideoLastDequeueTimeUs; Track mSubtitleTrack; Track mTimedTextTrack; @@ -116,6 +120,8 @@ private: int64_t mDurationUs; bool mAudioIsVorbis; bool mIsWidevine; + bool mIsSecure; + bool mIsStreaming; bool mUIDValid; uid_t mUID; sp<IMediaHTTPService> mHTTPService; @@ -140,6 +146,8 @@ private: int64_t mBitrate; int32_t mPollBufferingGeneration; uint32_t mPendingReadBufferTypes; + bool mBuffering; + bool mPrepareBuffering; mutable Mutex mReadBufferLock; mutable Mutex mDisconnectLock; @@ -155,6 +163,9 @@ private: status_t prefillCacheIfNecessary(); void notifyPreparedAndCleanup(status_t err); + void onSecureDecodersInstantiated(status_t err); + void finishPrepareAsync(); + status_t startSources(); void onGetFormatMeta(sp<AMessage> msg) const; sp<MetaData> doGetFormatMeta(bool audio) const; @@ -163,7 +174,7 @@ private: ssize_t doGetSelectedTrack(media_track_type type) const; void onSelectTrack(sp<AMessage> msg); - status_t doSelectTrack(size_t trackIndex, bool select); + status_t doSelectTrack(size_t trackIndex, bool select, int64_t timeUs); void onSeek(sp<AMessage> msg); status_t doSeek(int64_t seekTimeUs); @@ -181,6 +192,7 @@ private: sp<ABuffer> mediaBufferToABuffer( MediaBuffer *mbuf, media_track_type trackType, + int64_t seekTimeUs, int64_t *actualTimeUs = NULL); void postReadBuffer(media_track_type trackType); @@ -191,8 +203,13 @@ private: void schedulePollBuffering(); void cancelPollBuffering(); + void restartPollBuffering(); void onPollBuffering(); void notifyBufferingUpdate(int percentage); + void startBufferingIfNecessary(); + void stopBufferingIfNecessary(); + void sendCacheStats(); + void ensureCacheIsFetching(); DISALLOW_EVIL_CONSTRUCTORS(GenericSource); }; |