diff options
author | Robert Shih <robertshih@google.com> | 2014-07-16 15:47:09 -0700 |
---|---|---|
committer | Robert Shih <robertshih@google.com> | 2014-07-22 18:38:20 -0700 |
commit | 05312bc7478feec11d9ae88e951c0857a7a3f28d (patch) | |
tree | 5e019a1b0764e483a613c49cc0998da0c50f2089 /media/libmediaplayerservice/nuplayer/GenericSource.h | |
parent | 225d5b20409fd400bfa4ed5e9bc1d5babb498471 (diff) | |
download | frameworks_av-05312bc7478feec11d9ae88e951c0857a7a3f28d.zip frameworks_av-05312bc7478feec11d9ae88e951c0857a7a3f28d.tar.gz frameworks_av-05312bc7478feec11d9ae88e951c0857a7a3f28d.tar.bz2 |
GenericSource: support track (de)selection
Bug: 15153976
Change-Id: I522b1f9f0ffedf4edbea03a6654a6dbc0262860a
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/GenericSource.h')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/GenericSource.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.h b/media/libmediaplayerservice/nuplayer/GenericSource.h index 8e0209d..4e25d55 100644 --- a/media/libmediaplayerservice/nuplayer/GenericSource.h +++ b/media/libmediaplayerservice/nuplayer/GenericSource.h @@ -23,12 +23,15 @@ #include "ATSParser.h" +#include <media/mediaplayer.h> + namespace android { struct AnotherPacketSource; struct ARTSPController; struct DataSource; struct MediaSource; +class MediaBuffer; struct NuPlayer::GenericSource : public NuPlayer::Source { GenericSource( @@ -55,6 +58,7 @@ struct NuPlayer::GenericSource : public NuPlayer::Source { virtual status_t getDuration(int64_t *durationUs); virtual size_t getTrackCount() const; virtual sp<AMessage> getTrackInfo(size_t trackIndex) const; + virtual status_t selectTrack(size_t trackIndex, bool select); virtual status_t seekTo(int64_t seekTimeUs); virtual status_t setBuffers(bool audio, Vector<MediaBuffer *> &buffers); @@ -62,9 +66,17 @@ struct NuPlayer::GenericSource : public NuPlayer::Source { protected: virtual ~GenericSource(); + virtual void onMessageReceived(const sp<AMessage> &msg); + virtual sp<MetaData> getFormatMeta(bool audio); private: + enum { + kWhatFetchSubtitleData, + kWhatSendSubtitleData, + kWhatChangeAVSource, + }; + Vector<sp<MediaSource> > mSources; struct Track { @@ -75,7 +87,9 @@ private: Track mAudioTrack; Track mVideoTrack; + Track mSubtitleTrack; + int32_t mFetchSubtitleDataGeneration; int64_t mDurationUs; bool mAudioIsVorbis; bool mIsWidevine; @@ -84,9 +98,14 @@ private: void initFromDataSource(const sp<DataSource> &dataSource); + sp<ABuffer> mediaBufferToABuffer( + MediaBuffer *mbuf, + media_track_type trackType, + int64_t *actualTimeUs = NULL); + void readBuffer( - bool audio, - int64_t seekTimeUs = -1ll, int64_t *actualTimeUs = NULL); + media_track_type trackType, + int64_t seekTimeUs = -1ll, int64_t *actualTimeUs = NULL, bool formatChange = false); DISALLOW_EVIL_CONSTRUCTORS(GenericSource); }; |