1 #ifndef MPEG2_TS_EXTRACTOR_H_ 2 3 #define MPEG2_TS_EXTRACTOR_H_ 4 5 #include <media/stagefright/foundation/ABase.h> 6 #include <media/stagefright/MediaExtractor.h> 7 #include <utils/threads.h> 8 #include <utils/Vector.h> 9 10 namespace android { 11 12 struct AMessage; 13 struct AnotherPacketSource; 14 struct ATSParser; 15 struct DataSource; 16 struct MPEG2TSSource; 17 struct String8; 18 struct LiveSource; 19 20 struct MPEG2TSExtractor : public MediaExtractor { 21 MPEG2TSExtractor(const sp<DataSource> &source); 22 23 virtual size_t countTracks(); 24 virtual sp<MediaSource> getTrack(size_t index); 25 virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags); 26 27 virtual sp<MetaData> getMetaData(); 28 29 virtual uint32_t flags() const; 30 31 void setLiveSource(const sp<LiveSource> &liveSource); 32 void seekTo(int64_t seekTimeUs); 33 34 private: 35 friend struct MPEG2TSSource; 36 37 mutable Mutex mLock; 38 39 sp<DataSource> mDataSource; 40 sp<LiveSource> mLiveSource; 41 42 sp<ATSParser> mParser; 43 44 Vector<sp<AnotherPacketSource> > mSourceImpls; 45 46 off_t mOffset; 47 48 void init(); 49 status_t feedMore(); 50 51 DISALLOW_EVIL_CONSTRUCTORS(MPEG2TSExtractor); 52 }; 53 54 bool SniffMPEG2TS( 55 const sp<DataSource> &source, String8 *mimeType, float *confidence, 56 sp<AMessage> *); 57 58 } // namespace android 59 60 #endif // MPEG2_TS_EXTRACTOR_H_ 61