MPEG2TSExtractor.h revision bff07d0b22a5ee2d9f044f6cb5e4be1532017ab0
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 10namespace android { 11 12struct AMessage; 13struct AnotherPacketSource; 14struct ATSParser; 15struct DataSource; 16struct MPEG2TSSource; 17struct String8; 18struct LiveSource; 19 20struct 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 34private: 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 54bool 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