summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/GenericSource.h
diff options
context:
space:
mode:
authorRobert Shih <robertshih@google.com>2014-07-16 15:47:09 -0700
committerLajos Molnar <lajos@google.com>2014-07-31 10:32:23 -0700
commit3423bbdb05f843a64356fa24e8657f03ecbb7d65 (patch)
treeebe2761d0abe5f284d2c743efd2dab996b7be5c4 /media/libmediaplayerservice/nuplayer/GenericSource.h
parent63c0ce7ab7bd99d51414dcb4f765bc6faabf367d (diff)
downloadframeworks_av-3423bbdb05f843a64356fa24e8657f03ecbb7d65.zip
frameworks_av-3423bbdb05f843a64356fa24e8657f03ecbb7d65.tar.gz
frameworks_av-3423bbdb05f843a64356fa24e8657f03ecbb7d65.tar.bz2
GenericSource: support track (de)selection
Bug: 15153976 Change-Id: Idfce856b4ca5fa7853da857757490798bc3ffe1e
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/GenericSource.h')
-rw-r--r--media/libmediaplayerservice/nuplayer/GenericSource.h23
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);
};